From 52555e4f34ec23e77a3ee5b6cf722f1f55d85a70 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 28 Mar 2022 15:31:33 +0200 Subject: [PATCH 01/50] Rename default keys and add public key pem file --- ...a-p256-encrypt-key.pem => ecdsa-p256-encrypt-priv-key.pem} | 0 libraries/MCUboot/default_keys/ecdsa-p256-encrypt-pub-key.pem | 4 ++++ ...a-p256-signing-key.pem => ecdsa-p256-signing-priv-key.pem} | 0 libraries/MCUboot/default_keys/ecdsa-p256-signing-pub-key.pem | 4 ++++ 4 files changed, 8 insertions(+) rename libraries/MCUboot/default_keys/{ecdsa-p256-encrypt-key.pem => ecdsa-p256-encrypt-priv-key.pem} (100%) create mode 100644 libraries/MCUboot/default_keys/ecdsa-p256-encrypt-pub-key.pem rename libraries/MCUboot/default_keys/{ecdsa-p256-signing-key.pem => ecdsa-p256-signing-priv-key.pem} (100%) create mode 100644 libraries/MCUboot/default_keys/ecdsa-p256-signing-pub-key.pem diff --git a/libraries/MCUboot/default_keys/ecdsa-p256-encrypt-key.pem b/libraries/MCUboot/default_keys/ecdsa-p256-encrypt-priv-key.pem similarity index 100% rename from libraries/MCUboot/default_keys/ecdsa-p256-encrypt-key.pem rename to libraries/MCUboot/default_keys/ecdsa-p256-encrypt-priv-key.pem diff --git a/libraries/MCUboot/default_keys/ecdsa-p256-encrypt-pub-key.pem b/libraries/MCUboot/default_keys/ecdsa-p256-encrypt-pub-key.pem new file mode 100644 index 000000000..b23dadbcc --- /dev/null +++ b/libraries/MCUboot/default_keys/ecdsa-p256-encrypt-pub-key.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaskgTJbWiejRblEEAobolQsixMmV +Bk/1G/bQ44PZ0YFmbvIHOwPb5NHefENwjaKJ6xv6vgJeXKAS3CMxweA3sA== +-----END PUBLIC KEY----- diff --git a/libraries/MCUboot/default_keys/ecdsa-p256-signing-key.pem b/libraries/MCUboot/default_keys/ecdsa-p256-signing-priv-key.pem similarity index 100% rename from libraries/MCUboot/default_keys/ecdsa-p256-signing-key.pem rename to libraries/MCUboot/default_keys/ecdsa-p256-signing-priv-key.pem diff --git a/libraries/MCUboot/default_keys/ecdsa-p256-signing-pub-key.pem b/libraries/MCUboot/default_keys/ecdsa-p256-signing-pub-key.pem new file mode 100644 index 000000000..4337f3bb5 --- /dev/null +++ b/libraries/MCUboot/default_keys/ecdsa-p256-signing-pub-key.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1RY1JsM7rU1njkMkxJjpay6+DaPx +9JeAezEyB9mVpxdXaUN76ciq0AoMhgvjf5mIUcT5Ipi+Xqr9kDyidBhJBQ== +-----END PUBLIC KEY----- From 8940680c65e2b4cd2e943e332d07753caf9f7209 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 28 Mar 2022 15:32:51 +0200 Subject: [PATCH 02/50] Make more clear that we are using private key for signing and public key for encryption --- boards.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boards.txt b/boards.txt index 4ec896b00..c7d3eb3d5 100644 --- a/boards.txt +++ b/boards.txt @@ -82,8 +82,8 @@ envie_m7.build.alignment=32 envie_m7.build.version=1.2.3+4 envie_m7.menu.security.sien.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" {tools.imgtool.flags} envie_m7.menu.security.sien.build.keys.keychain={runtime.platform.path}/libraries/MCUboot/default_keys -envie_m7.menu.security.sien.build.keys.sign_key=ecdsa-p256-signing-key.pem -envie_m7.menu.security.sien.build.keys.encrypt_key=ecdsa-p256-encrypt-key.pem +envie_m7.menu.security.sien.build.keys.sign_key=ecdsa-p256-signing-priv-key.pem +envie_m7.menu.security.sien.build.keys.encrypt_key=ecdsa-p256-encrypt-pub-key.pem envie_m7.menu.security.none.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit envie_m7.compiler.mbed.arch.define= envie_m7.compiler.mbed.defines={build.variant.path}/defines.txt From 750e51d38fc442f9930e7dc19aabcf7f9a40fbbe Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 18 Jan 2022 16:56:00 +0100 Subject: [PATCH 03/50] Add Portenta X8 --- boards.txt | 51 + patches/0100-Add-Portenta-X8-target.patch | 1046 +++++++++++++++++++++ platform.txt | 10 + portenta.variables | 4 +- variants/PORTENTA_X8/conf/.mbedignore | 1 + variants/PORTENTA_X8/conf/mbed_app.json | 23 + variants/PORTENTA_X8/pinmode_arduino.h | 74 ++ variants/PORTENTA_X8/pins_arduino.h | 139 +++ variants/PORTENTA_X8/variant.cpp | 70 ++ 9 files changed, 1416 insertions(+), 2 deletions(-) create mode 100644 patches/0100-Add-Portenta-X8-target.patch create mode 100644 variants/PORTENTA_X8/conf/.mbedignore create mode 100644 variants/PORTENTA_X8/conf/mbed_app.json create mode 100644 variants/PORTENTA_X8/pinmode_arduino.h create mode 100644 variants/PORTENTA_X8/pins_arduino.h create mode 100644 variants/PORTENTA_X8/variant.cpp diff --git a/boards.txt b/boards.txt index 4ec896b00..df83452aa 100644 --- a/boards.txt +++ b/boards.txt @@ -209,6 +209,57 @@ envie_m4.bootloader.file=PORTENTA_H7/portentah7_bootloader_mbed_hs_v2.elf ############################################################## +portenta_x8.name=Arduino Portenta X8 +portenta_x8.build.core=arduino +portenta_x8.build.crossprefix=arm-none-eabi- +portenta_x8.build.compiler_path={runtime.tools.arm-none-eabi-gcc-7-2017q4.path}/bin/ + +portenta_x8.build.variant=PORTENTA_X8 +portenta_x8.build.mcu=cortex-m4 +portenta_x8.build.fpu=-mfpu=fpv4-sp-d16 +portenta_x8.build.float-abi=-mfloat-abi=softfp +portenta_x8.build.extra_flags= +portenta_x8.build.extra_ldflags=-DCM4_BINARY_START=0x08100000 -DCM4_BINARY_END=0x08200000 +portenta_x8.build.architecture=cortex-m4 +portenta_x8.build.board=PORTENTA_X8 +portenta_x8.build.ldscript=linker_script.ld +portenta_x8.compiler.mbed.arch.define= +portenta_x8.compiler.mbed.defines={build.variant.path}/defines.txt +portenta_x8.compiler.mbed.ldflags={build.variant.path}/ldflags.txt +portenta_x8.compiler.mbed.cflags={build.variant.path}/cflags.txt +portenta_x8.compiler.mbed.cxxflags={build.variant.path}/cxxflags.txt +portenta_x8.compiler.mbed.includes={build.variant.path}/includes.txt +portenta_x8.compiler.mbed.extra_ldflags=-lstdc++ -lsupc++ -lm -lc -lgcc -lnosys +portenta_x8.compiler.mbed="{build.variant.path}/libs/libmbed.a" +portenta_x8.vid.0=0x2341 +portenta_x8.pid.0=0x0061 +portenta_x8.build.vid=0x2341 +portenta_x8.build.pid=0x0061 +portenta_x8.upload_port.0.vid=0x2341 +portenta_x8.upload_port.0.pid=0x0061 + +portenta_x8.upload.tool=adb +portenta_x8.upload.tool.default=adb +portenta_x8.upload.vid=0x2341 +portenta_x8.upload.pid=0x0061 +portenta_x8.upload.protocol= +portenta_x8.upload.transport= +portenta_x8.upload.interface=0 +portenta_x8.upload.use_1200bps_touch=false +portenta_x8.upload.wait_for_upload_port=false +portenta_x8.upload.native_usb=true +portenta_x8.upload.maximum_data_size=294248 + +portenta_x8.debug.tool=gdb +portenta_x8.bootloader.tool=openocd +portenta_x8.bootloader.tool.default=openocd +portenta_x8.bootloader.config=-f target/stm32h7x_dual_bank.cfg +portenta_x8.bootloader.programmer=-f interface/stlink.cfg +portenta_x8.bootloader.extra_action.preflash=stm32h7x option_write 0 0x01c 0xb86aaf0 +portenta_x8.bootloader.file=PORTENTA_X7/STM32H747AII6_CM7.elf + +############################################################## + nano33ble.name=Arduino Nano 33 BLE nano33ble.build.core=arduino nano33ble.build.crossprefix=arm-none-eabi- diff --git a/patches/0100-Add-Portenta-X8-target.patch b/patches/0100-Add-Portenta-X8-target.patch new file mode 100644 index 000000000..3fb62f2fe --- /dev/null +++ b/patches/0100-Add-Portenta-X8-target.patch @@ -0,0 +1,1046 @@ +From 415969b9ecbccd11833284032b939978394bc6b5 Mon Sep 17 00:00:00 2001 +From: Martino Facchin +Date: Tue, 18 Jan 2022 16:53:27 +0100 +Subject: [PATCH] Add Portenta X8 target + +--- + .../TARGET_PORTENTA_X8/CMakeLists.txt | 16 + + .../TARGET_PORTENTA_X8/PeripheralPins.c | 570 ++++++++++++++++++ + .../TARGET_PORTENTA_X8/PinNames.h | 381 ++++++++++++ + targets/targets.json | 32 + + 4 files changed, 999 insertions(+) + create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/CMakeLists.txt + create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PeripheralPins.c + create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PinNames.h + +diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/CMakeLists.txt b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/CMakeLists.txt +new file mode 100644 +index 0000000000..d5015acdf4 +--- /dev/null ++++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/CMakeLists.txt +@@ -0,0 +1,16 @@ ++# Copyright (c) 2020 ARM Limited. All rights reserved. ++# SPDX-License-Identifier: Apache-2.0 ++ ++add_library(mbed-portenta-x8 INTERFACE) ++ ++target_sources(mbed-portenta-x8 ++ INTERFACE ++ PeripheralPins.c ++) ++ ++target_include_directories(mbed-portenta-x8 ++ INTERFACE ++ . ++) ++ ++target_link_libraries(mbed-portenta-x8 INTERFACE mbed-stm32h747xi-cm4) +diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PeripheralPins.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PeripheralPins.c +new file mode 100644 +index 0000000000..3b1cf1075b +--- /dev/null ++++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PeripheralPins.c +@@ -0,0 +1,570 @@ ++/* mbed Microcontroller Library ++ * SPDX-License-Identifier: BSD-3-Clause ++ ****************************************************************************** ++ * ++ * Copyright (c) 2016-2020 STMicroelectronics. ++ * All rights reserved. ++ * ++ * This software component is licensed by ST under BSD 3-Clause license, ++ * the "License"; You may not use this file except in compliance with the ++ * License. You may obtain a copy of the License at: ++ * opensource.org/licenses/BSD-3-Clause ++ * ++ ****************************************************************************** ++ * ++ * Automatically generated from STM32CubeMX/db/mcu/STM32H747XIHx.xml ++ */ ++ ++#include "PeripheralPins.h" ++#include "mbed_toolchain.h" ++ ++//============================================================================== ++// Notes ++// ++// - The pins mentioned Px_y_ALTz are alternative possibilities which use other ++// HW peripheral instances. You can use them the same way as any other "normal" ++// pin (i.e. PwmOut pwm(PA_7_ALT0);). These pins are not displayed on the board ++// pinout image on mbed.org. ++// ++// - The pins which are connected to other components present on the board have ++// the comment "Connected to xxx". The pin function may not work properly in this ++// case. These pins may not be displayed on the board pinout image on mbed.org. ++// Please read the board reference manual and schematic for more information. ++// ++// - Warning: pins connected to the default STDIO_UART_TX and STDIO_UART_RX pins are commented ++// See https://os.mbed.com/teams/ST/wiki/STDIO for more information. ++// ++//============================================================================== ++ ++ ++//*** ADC *** ++ ++MBED_WEAK const PinMap PinMap_ADC[] = { ++ {PA_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_INP16 ++ {PA_0C, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC1_INP0 ++ {PA_0C_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC2_INP0 ++ {PA_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_INP17 ++ {PA_1C, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC1_INP1 ++ {PA_1C_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC2_INP1 ++ {PA_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_INP14 ++ {PA_2_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC2_INP14 ++ {PA_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_INP15 ++ {PA_3_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC2_INP15 ++ {PA_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_INP18 ++ {PA_4_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC2_INP18 ++ {PA_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC1_INP19 ++ {PA_5_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC2_INP19 ++ {PA_6, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC1_INP3 ++ {PA_6_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC2_INP3 ++ {PA_7, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC1_INP7 ++ {PA_7_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC2_INP7 ++ {PB_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC1_INP9 ++ {PB_0_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC2_INP9 ++ {PB_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC1_INP5 ++ {PB_1_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC2_INP5 ++ {PC_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC1_INP10 ++ {PC_0_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC2_INP10 ++ {PC_0_ALT1, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC3_INP10 ++ {PC_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC1_INP11 ++ {PC_1_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC2_INP11 ++ {PC_1_ALT1, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC3_INP11 ++ {PC_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC1_INP12 ++ {PC_2_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC2_INP12 ++ {PC_2_ALT1, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC3_INP12 ++ {PC_2C, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC3_INP0 ++ {PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_INP13 ++ {PC_3_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC2_INP13 ++ {PC_3C, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC3_INP1 ++ {PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC1_INP4 ++ {PC_4_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC2_INP4 ++ {PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC1_INP8 ++ {PC_5_ALT0, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC2_INP8 ++ {PF_3, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC3_INP5 ++ {PF_4, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC3_INP9 ++ {PF_5, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC3_INP4 ++ {PF_6, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_INP8 ++ {PF_7, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC3_INP3 ++ {PF_8, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_INP7 ++ {PF_9, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC3_INP2 ++ {PF_10, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC3_INP6 ++ {PF_11, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC1_INP2 ++ {PF_12, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC1_INP6 ++ {PF_13, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC2_INP2 ++ {PF_14, ADC_2, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC2_INP6 ++ {PH_2, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC3_INP13 ++ {PH_3, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC3_INP14 ++ {PH_4, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC3_INP15 ++ {PH_5, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC3_INP16 ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_ADC_Internal[] = { ++ {ADC_TEMP, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC3_INP18 ++ {ADC_VREF, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 19, 0)}, // ADC3_INP19 ++ {ADC_VBAT, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC3_INP17 ++ {NC, NC, 0} ++}; ++ ++//*** DAC *** ++ ++MBED_WEAK const PinMap PinMap_DAC[] = { ++ {PA_4, DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1 ++ {PA_5, DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2 ++ {NC, NC, 0} ++}; ++ ++//*** I2C *** ++ ++MBED_WEAK const PinMap PinMap_I2C_SDA[] = { ++ {PB_7, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, ++ {PB_7_ALT0, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, ++ {PB_9, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, ++ {PB_9_ALT0, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, ++ {PB_11, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, ++ {PC_9, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, ++ {PD_13, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, ++ {PF_0, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, ++ {PF_15, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, ++ {PH_5, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, ++ {PH_8, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, ++ {PH_12, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_I2C_SCL[] = { ++ {PA_8, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, ++ {PB_6, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, ++ {PB_6_ALT0, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, ++ {PB_8, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)}, ++ {PB_8_ALT0, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C4)}, ++ {PB_10, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, ++ {PD_12, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, ++ {PF_1, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, ++ {PF_14, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, ++ {PH_4, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C2)}, ++ {PH_7, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C3)}, ++ {PH_11, I2C_4, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C4)}, ++ {NC, NC, 0} ++}; ++ ++//*** PWM *** ++ ++// TIM5 cannot be used because already used by the us_ticker ++// TIM2 cannot be used because already used by the us_ticker (DUAL_CORE) ++MBED_WEAK const PinMap PinMap_PWM[] = { ++// {PA_0, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 ++// {PA_0, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 ++// {PA_1, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 ++// {PA_1, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 ++ {PA_1, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N ++// {PA_2, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 ++// {PA_2, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 ++ {PA_2, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 ++// {PA_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 ++// {PA_3, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 ++ {PA_3, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 ++// {PA_5, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 ++ {PA_5, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N ++ {PA_6, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 ++ {PA_6_ALT0, PWM_13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 ++ {PA_7, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N ++ {PA_7_ALT0, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 ++ {PA_7_ALT1, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N ++ {PA_7_ALT2, PWM_14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 ++// {PA_8, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 ++// {PA_9, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 ++// {PA_10, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 ++ {PA_11, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 ++// {PA_15, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM2, 1, 0)}, // TIM2_CH1 ++ {PB_0, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N ++ {PB_0_ALT0, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 ++ {PB_0_ALT1, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N ++ {PB_1, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N ++ {PB_1_ALT0, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 ++ {PB_1_ALT1, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N ++// {PB_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM2, 2, 0)}, // TIM2_CH2 ++ {PB_4, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 ++ {PB_5, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 ++ {PB_6, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 ++ {PB_6_ALT0, PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM16, 1, 1)}, // TIM16_CH1N ++ {PB_7, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 ++ {PB_7_ALT0, PWM_17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM17, 1, 1)}, // TIM17_CH1N ++ {PB_8, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 ++ {PB_8_ALT0, PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM16, 1, 0)}, // TIM16_CH1 ++ {PB_9, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 ++ {PB_9_ALT0, PWM_17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM17, 1, 0)}, // TIM17_CH1 ++// {PB_10, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM2, 3, 0)}, // TIM2_CH3 ++// {PB_11, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM2, 4, 0)}, // TIM2_CH4 ++ {PB_13, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N ++ {PB_14, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N ++ {PB_14_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N ++ {PB_14_ALT1, PWM_12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM12, 1, 0)}, // TIM12_CH1 ++ {PB_15, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N ++ {PB_15_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N ++ {PB_15_ALT1, PWM_12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM12, 2, 0)}, // TIM12_CH2 ++ {PC_6, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1 ++ {PC_6_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 ++ {PC_7, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2 ++ {PC_7_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 ++ {PC_8, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3 ++ {PC_8_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 ++ {PC_9, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4 ++ {PC_9_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4 ++ {PD_12, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM4, 1, 0)}, // TIM4_CH1 ++ {PD_13, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM4, 2, 0)}, // TIM4_CH2 ++ {PD_14, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM4, 3, 0)}, // TIM4_CH3 ++ {PD_15, PWM_4, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM4, 4, 0)}, // TIM4_CH4 ++ {PE_4, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_TIM15, 1, 1)}, // TIM15_CH1N ++ {PE_5, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_TIM15, 1, 0)}, // TIM15_CH1 ++ {PE_6, PWM_15, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF4_TIM15, 2, 0)}, // TIM15_CH2 ++ {PE_8, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N ++ {PE_9, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 ++ {PE_10, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N ++ {PE_11, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 ++ {PE_12, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N ++ {PE_13, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 ++ {PE_14, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 ++ {PF_6, PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM16, 1, 0)}, // TIM16_CH1 ++ {PF_7, PWM_17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM17, 1, 0)}, // TIM17_CH1 ++ {PF_8, PWM_13, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_TIM13, 1, 0)}, // TIM13_CH1 ++ {PF_8_ALT0, PWM_16, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM16, 1, 1)}, // TIM16_CH1N ++ {PF_9, PWM_14, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_TIM14, 1, 0)}, // TIM14_CH1 ++ {PF_9_ALT0, PWM_17, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM17, 1, 1)}, // TIM17_CH1N ++ {PH_6, PWM_12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM12, 1, 0)}, // TIM12_CH1 ++ {PH_9, PWM_12, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM12, 2, 0)}, // TIM12_CH2 ++// {PH_10, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM5, 1, 0)}, // TIM5_CH1 ++// {PH_11, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM5, 2, 0)}, // TIM5_CH2 ++// {PH_12, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM5, 3, 0)}, // TIM5_CH3 ++ {PH_13, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N ++ {PH_14, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N ++ {PH_15, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N ++// {PI_0, PWM_5, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_TIM5, 4, 0)}, // TIM5_CH4 ++ {PI_2, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 4, 0)}, // TIM8_CH4 ++ {PI_5, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 ++ {PI_6, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 ++ {PI_7, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 ++ {PJ_6, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 ++ {PJ_7, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N ++ {PJ_8, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 3, 1)}, // TIM1_CH3N ++ {PJ_8_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 1, 0)}, // TIM8_CH1 ++ {PJ_9, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 ++ {PJ_9_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 1, 1)}, // TIM8_CH1N ++ {PJ_10, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 2, 1)}, // TIM1_CH2N ++ {PJ_10_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 2, 0)}, // TIM8_CH2 ++ {PJ_11, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 2, 0)}, // TIM1_CH2 ++ {PJ_11_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 2, 1)}, // TIM8_CH2N ++ {PK_0, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 1, 1)}, // TIM1_CH1N ++ {PK_0_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 3, 0)}, // TIM8_CH3 ++ {PK_1, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 1, 0)}, // TIM1_CH1 ++ {PK_1_ALT0, PWM_8, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF3_TIM8, 3, 1)}, // TIM8_CH3N ++ {NC, NC, 0} ++}; ++//*** PWM_HRTIM *** ++ ++MBED_WEAK const PinMap PinMap_PWM_HRTIM[] = { ++ {PA_8, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_HRTIM1, CHB, 1)}, // HRTIM_CHB2 ++ {PA_9, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_HRTIM1, CHC, 0)}, // HRTIM_CHC1 ++ {PA_10, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_HRTIM1, CHC, 1)}, // HRTIM_CHC2 ++ {PA_11, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_HRTIM1, CHD, 0)}, // HRTIM_CHD1 ++ {PA_12, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_HRTIM1, CHD, 1)}, // HRTIM_CHD2 ++ {PC_6, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_HRTIM1, CHA, 0)}, // HRTIM_CHA1 ++ {PC_7, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_HRTIM1, CHA, 1)}, // HRTIM_CHA2 ++ {PC_8, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF1_HRTIM1, CHB, 0)}, // HRTIM_CHB1 ++ {PG_6, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_HRTIM1, CHE, 0)}, // HRTIM_CHE1 ++ {PG_7, PWM_I, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_HRTIM1, CHE, 1)}, // HRTIM_CHE2 ++ {NC, NC, 0} ++}; ++ ++ ++//*** SERIAL *** ++ ++MBED_WEAK const PinMap PinMap_UART_TX[] = { ++ {PA_0, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PA_2, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, ++ {PA_9, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, ++ {PA_9_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, ++ {PA_12, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, ++ {PA_15, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, ++ {PB_4, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, ++ {PB_6, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, ++ {PB_6_ALT0, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, ++ {PB_6_ALT1, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, ++ {PB_9, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PB_10, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PB_13, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, ++ {PB_14, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, ++ {PC_6, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, ++ {PC_10, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PC_10_ALT0, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PC_12, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, ++ {PD_1, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PD_5, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, ++ {PD_8, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PE_1, UART_8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, ++ {PE_8, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, ++ {PF_7, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, ++ {PG_14, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, ++ {PH_13, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PJ_8, UART_8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_UART_RX[] = { ++ {PA_1, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PA_3, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, ++ {PA_8, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, ++ {PA_10, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, ++ {PA_10_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, ++ {PA_11, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_UART4)}, ++ {PB_3, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF11_UART7)}, ++ {PB_5, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, ++ {PB_7, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, ++ {PB_7_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_LPUART)}, ++ {PB_8, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PB_11, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PB_12, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF14_UART5)}, ++ {PB_15, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)}, ++ {PC_7, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, ++ {PC_11, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PC_11_ALT0, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PD_0, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PD_2, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, ++ {PD_6, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, ++ {PD_9, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PE_0, UART_8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, ++ {PE_7, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, ++ {PF_6, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, ++ {PG_9, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, ++ {PH_14, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PI_9, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PJ_9, UART_8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_UART_RTS[] = { ++ {PA_1, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, ++ {PA_12, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, ++ {PA_12_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, ++ {PA_15, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PB_14, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PB_14_ALT0, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PC_8, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, ++ {PD_4, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, ++ {PD_12, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PD_15, UART_8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, ++ {PE_9, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, ++ {PF_8, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, ++ {PG_8, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, ++ {PG_12, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_UART_CTS[] = { ++ {PA_0, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, ++ {PA_11, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)}, ++ {PA_11_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF3_LPUART)}, ++ {PB_0, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PB_13, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PB_15, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART4)}, ++ {PC_9, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART5)}, ++ {PD_3, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)}, ++ {PD_11, UART_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART3)}, ++ {PD_14, UART_8, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_UART8)}, ++ {PE_10, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, ++ {PF_9, UART_7, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_UART7)}, ++ {PG_13, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, ++ {PG_15, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART6)}, ++ {NC, NC, 0} ++}; ++ ++//*** SPI *** ++ ++MBED_WEAK const PinMap PinMap_SPI_MOSI[] = { ++ {PA_7, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PA_7_ALT0, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SPI6)}, ++ {PB_2, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SPI3)}, ++ {PB_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PB_5_ALT0, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SPI3)}, ++ {PB_5_ALT1, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SPI6)}, ++ {PB_15, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PC_1, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PC_3, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PC_12, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF6_SPI3)}, ++ {PD_6, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI3)}, ++ {PD_7, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PE_6, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI4)}, ++ {PE_14, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI4)}, ++ {PF_9, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {PF_11, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {PG_14, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI6)}, ++ {PI_3, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PJ_10, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_SPI_MISO[] = { ++ {PA_6, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PA_6_ALT0, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SPI6)}, ++ {PB_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PB_4_ALT0, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF6_SPI3)}, ++ {PB_4_ALT1, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SPI6)}, ++ {PB_14, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PC_2, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PC_11, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF6_SPI3)}, ++ {PE_5, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI4)}, ++ {PE_13, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI4)}, ++ {PF_8, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {PG_9, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PG_12, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI6)}, ++ {PH_7, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {PI_2, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PJ_11, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_SPI_SCLK[] = { ++ {PA_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PA_5_ALT0, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SPI6)}, ++// {PA_9, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PA_12, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PB_3, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PB_3_ALT0, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF6_SPI3)}, ++ {PB_3_ALT1, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SPI6)}, ++ {PB_10, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PB_13, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PC_10, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF6_SPI3)}, ++ {PD_3, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PE_2, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI4)}, ++ {PE_12, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI4)}, ++ {PF_7, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {PG_11, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PG_13, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI6)}, ++ {PH_6, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {PI_1, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PK_0, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_SPI_SSEL[] = { ++ {PA_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PA_4_ALT0, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF6_SPI3)}, ++ {PA_4_ALT1, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF8_SPI6)}, ++ {PA_11, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PA_15, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PA_15_ALT0, SPI_3, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF6_SPI3)}, ++ {PA_15_ALT1, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SPI6)}, ++ {PB_4, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF7_SPI2)}, ++ {PB_9, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PB_12, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PE_4, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI4)}, ++ {PE_11, SPI_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI4)}, ++ {PF_6, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {PG_8, SPI_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI6)}, ++ {PG_10, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI1)}, ++ {PH_5, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {PI_0, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)}, ++ {PK_1, SPI_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI5)}, ++ {NC, NC, 0} ++}; ++ ++//*** CAN *** ++ ++MBED_WEAK const PinMap PinMap_CAN_RD[] = { ++ {PA_11, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, ++ {PB_5, CAN_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, ++ {PB_8, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, ++ {PB_12, CAN_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, ++ {PD_0, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, ++ {PH_14, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, ++ {PI_9, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_CAN_TD[] = { ++ {PA_12, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, ++ {PB_6, CAN_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, ++ {PB_9, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, ++ {PB_13, CAN_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN2)}, ++ {PD_1, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, ++ {PH_13, CAN_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF9_FDCAN1)}, ++ {NC, NC, 0} ++}; ++ ++//*** QUADSPI *** ++ ++MBED_WEAK const PinMap PinMap_QSPI_DATA0[] = { ++ {PC_9, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_IO0 ++ {PD_11, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_IO0 ++ {PF_8, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO0 ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_QSPI_DATA1[] = { ++ {PC_10, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_IO1 ++ {PD_12, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_IO1 ++ {PF_9, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_IO1 ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_QSPI_DATA2[] = { ++ {PE_2, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_IO2 ++ {PF_7, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_IO2 ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_QSPI_DATA3[] = { ++ {PA_1, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_IO3 ++ {PD_13, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_IO3 ++ {PF_6, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_IO3 ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_QSPI_SCLK[] = { ++ {PB_2, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_CLK ++ {PF_10, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_CLK ++ {NC, NC, 0} ++}; ++ ++MBED_WEAK const PinMap PinMap_QSPI_SSEL[] = { ++ {PB_6, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_NCS ++ {PB_10, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF9_QUADSPI)}, // QUADSPI_BK1_NCS ++ {PG_6, QSPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_QUADSPI)}, // QUADSPI_BK1_NCS ++ {NC, NC, 0} ++}; ++ ++//*** USBDEVICE *** ++ ++MBED_WEAK const PinMap PinMap_USB_FS[] = { ++// {PA_8, USB_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_FS)}, // USB_OTG_FS_SOF ++// {PA_9, USB_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_FS_VBUS ++// {PA_10, USB_FS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF10_OTG1_FS)}, // USB_OTG_FS_ID ++ {PA_11, USB_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_FS)}, // USB_OTG_FS_DM ++ {PA_12, USB_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG1_FS)}, // USB_OTG_FS_DP ++ {NC, NC, 0} ++}; ++ ++//*** USBDEVICE *** ++ ++MBED_WEAK const PinMap PinMap_USB_HS[] = { ++#if (MBED_CONF_TARGET_USB_SPEED == USE_USB_HS_IN_FS) ++// {PA_4, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG2_FS)}, // USB_OTG_HS_SOF ++ {PB_12, USB_HS, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_PULLUP, GPIO_AF12_OTG2_FS)}, // USB_OTG_HS_ID ++ {PB_13, USB_HS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_OTG_HS_VBUS ++ {PB_14, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG2_FS)}, // USB_OTG_HS_DM ++ {PB_15, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF12_OTG2_FS)}, // USB_OTG_HS_DP ++#else /* MBED_CONF_TARGET_USB_SPEED */ ++ {PA_3, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_D0 ++ {PA_5, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_CK ++ {PB_0, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_D1 ++ {PB_1, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_D2 ++ {PB_5, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_D7 ++ {PB_10, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_D3 ++ {PB_11, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_D4 ++ {PB_12, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_D5 ++ {PB_13, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_D6 ++ {PC_0, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_STP ++ {PH_4, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_NXT ++ {PI_11, USB_HS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF10_OTG2_HS)}, // USB_OTG_HS_ULPI_DIR ++#endif /* MBED_CONF_TARGET_USB_SPEED */ ++ {NC, NC, 0} ++}; +diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PinNames.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PinNames.h +new file mode 100644 +index 0000000000..1cce05b2e2 +--- /dev/null ++++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PinNames.h +@@ -0,0 +1,381 @@ ++/* mbed Microcontroller Library ++ ******************************************************************************* ++ * Copyright (c) 2018, STMicroelectronics ++ * Copyright (c) 2020, Arduino SA ++ * ++ * SPDX-License-Identifier: BSD-3-Clause ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are met: ++ * ++ * 1. Redistributions of source code must retain the above copyright notice, ++ * this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright notice, ++ * this list of conditions and the following disclaimer in the documentation ++ * and/or other materials provided with the distribution. ++ * 3. Neither the name of STMicroelectronics nor the names of its contributors ++ * may be used to endorse or promote products derived from this software ++ * without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE ++ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER ++ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ******************************************************************************* ++ */ ++ ++/* MBED TARGET LIST: PORTENTA_H7_M4, PORTENTA_H7_M7 */ ++ ++#ifndef MBED_PINNAMES_H ++#define MBED_PINNAMES_H ++ ++#include "cmsis.h" ++#include "PinNamesTypes.h" ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#define DUAL_PAD 0xF00 ++ ++typedef enum { ++ ALT0 = 0x100, ++ ALT1 = 0x200, ++ ALT2 = 0x300, ++ ALT3 = 0x400, ++ ALT4 = 0x500, ++} ALTx; ++ ++typedef enum { ++ PA_0 = 0x00, ++ PA_0C = PA_0 | DUAL_PAD, // dual pad ++ PA_0C_ALT0 = PA_0C | ALT0, // same pin used for alternate HW ++ PA_0C_ALT1 = PA_0C | ALT1, // same pin used for alternate HW ++ PA_0C_ALT2 = PA_0C | ALT2, // same pin used for alternate HW ++ PA_1 = 0x01, ++ PA_1C = PA_1 | DUAL_PAD, // dual pad ++ PA_1C_ALT0 = PA_1C | ALT0, // same pin used for alternate HW ++ PA_1_ALT0 = PA_1 | ALT0, // same pin used for alternate HW ++ PA_2 = 0x02, ++ PA_2_ALT0 = PA_2 | ALT0, // same pin used for alternate HW ++ PA_3 = 0x03, ++ PA_3_ALT0 = PA_3 | ALT0, // same pin used for alternate HW ++ PA_4 = 0x04, ++ PA_4_ALT0 = PA_4 | ALT0, // same pin used for alternate HW ++ PA_4_ALT1 = PA_4 | ALT1, // same pin used for alternate HW ++ PA_5 = 0x05, ++ PA_5_ALT0 = PA_5 | ALT0, // same pin used for alternate HW ++ PA_5_ALT1 = PA_5 | ALT1, // same pin used for alternate HW ++ PA_5_ALT2 = PA_5 | ALT2, // same pin used for alternate HW ++ PA_6 = 0x06, ++ PA_6_ALT0 = PA_6 | ALT0, // same pin used for alternate HW ++ PA_7 = 0x07, ++ PA_7_ALT0 = PA_7 | ALT0, // same pin used for alternate HW ++ PA_7_ALT1 = PA_7 | ALT1, // same pin used for alternate HW ++ PA_7_ALT2 = PA_7 | ALT2, // same pin used for alternate HW ++ PA_8 = 0x08, ++ PA_9 = 0x09, ++ PA_9_ALT0 = PA_9 | ALT0, // same pin used for alternate HW ++ PA_10 = 0x0A, ++ PA_10_ALT0 = PA_10 | ALT0, // same pin used for alternate HW ++ PA_11 = 0x0B, ++ PA_11_ALT0 = PA_11 | ALT0, // same pin used for alternate HW ++ PA_12 = 0x0C, ++ PA_12_ALT0 = PA_12 | ALT0, // same pin used for alternate HW ++ PA_13 = 0x0D, ++ PA_14 = 0x0E, ++ PA_15 = 0x0F, ++ PA_15_ALT0 = PA_15 | ALT0, // same pin used for alternate HW ++ PA_15_ALT1 = PA_15 | ALT1, // same pin used for alternate HW ++ PB_0 = 0x10, ++ PB_0_ALT0 = PB_0 | ALT0, // same pin used for alternate HW ++ PB_0_ALT1 = PB_0 | ALT1, // same pin used for alternate HW ++ PB_0_ALT2 = PB_0 | ALT2, // same pin used for alternate HW ++ PB_1 = 0x11, ++ PB_1_ALT0 = PB_1 | ALT0, // same pin used for alternate HW ++ PB_1_ALT1 = PB_1 | ALT1, // same pin used for alternate HW ++ PB_2 = 0x12, ++ PB_3 = 0x13, ++ PB_3_ALT0 = PB_3 | ALT0, // same pin used for alternate HW ++ PB_3_ALT1 = PB_3 | ALT1, // same pin used for alternate HW ++ PB_4 = 0x14, ++ PB_4_ALT0 = PB_4 | ALT0, // same pin used for alternate HW ++ PB_4_ALT1 = PB_4 | ALT1, // same pin used for alternate HW ++ PB_5 = 0x15, ++ PB_5_ALT0 = PB_5 | ALT0, // same pin used for alternate HW ++ PB_5_ALT1 = PB_5 | ALT1, // same pin used for alternate HW ++ PB_6 = 0x16, ++ PB_6_ALT0 = PB_6 | ALT0, // same pin used for alternate HW ++ PB_6_ALT1 = PB_6 | ALT1, // same pin used for alternate HW ++ PB_7 = 0x17, ++ PB_7_ALT0 = PB_7 | ALT0, // same pin used for alternate HW ++ PB_8 = 0x18, ++ PB_8_ALT0 = PB_8 | ALT0, // same pin used for alternate HW ++ PB_9 = 0x19, ++ PB_9_ALT0 = PB_9 | ALT0, // same pin used for alternate HW ++ PB_10 = 0x1A, ++ PB_11 = 0x1B, ++ PB_12 = 0x1C, ++ PB_13 = 0x1D, ++ PB_14 = 0x1E, ++ PB_14_ALT0 = PB_14 | ALT0, // same pin used for alternate HW ++ PB_14_ALT1 = PB_14 | ALT1, // same pin used for alternate HW ++ PB_15 = 0x1F, ++ PB_15_ALT0 = PB_15 | ALT0, // same pin used for alternate HW ++ PB_15_ALT1 = PB_15 | ALT1, // same pin used for alternate HW ++ PC_0 = 0x20, ++ PC_0_ALT0 = PC_0 | ALT0, // same pin used for alternate HW ++ PC_0_ALT1 = PC_0 | ALT1, // same pin used for alternate HW ++ PC_1 = 0x21, ++ PC_1_ALT0 = PC_1 | ALT0, // same pin used for alternate HW ++ PC_1_ALT1 = PC_1 | ALT1, // same pin used for alternate HW ++ PC_1_ALT2 = PC_1 | ALT2, // same pin used for alternate HW ++ PC_1_ALT3 = PC_1 | ALT3, // same pin used for alternate HW ++ PC_1_ALT4 = PC_1 | ALT4, // same pin used for alternate HW ++ PC_2 = 0x22, ++ PC_2C = PC_2 | DUAL_PAD, // dual pad ++ PC_2C_ALT0 = PC_2C | ALT0, // same pin used for alternate HW ++ PC_2_ALT0 = PC_2 | ALT0, // same pin used for alternate HW ++ PC_2_ALT1 = PC_2 | ALT1, // same pin used for alternate HW ++ PC_2_ALT2 = PC_2 | ALT2, // same pin used for alternate HW ++ PC_2_ALT3 = PC_2 | ALT3, // same pin used for alternate HW ++ PC_2_ALT4 = PC_2 | ALT4, // same pin used for alternate HW ++ PC_3 = 0x23, ++ PC_3C = PC_3 | DUAL_PAD, // dual pad ++ PC_3_ALT0 = PC_3 | ALT0, // same pin used for alternate HW ++ PC_3_ALT1 = PC_3 | ALT1, // same pin used for alternate HW ++ PC_3_ALT2 = PC_3 | ALT2, // same pin used for alternate HW ++ PC_4 = 0x24, ++ PC_4_ALT0 = PC_4 | ALT0, // same pin used for alternate HW ++ PC_5 = 0x25, ++ PC_5_ALT0 = PC_5 | ALT0, // same pin used for alternate HW ++ PC_5_ALT1 = PC_5 | ALT1, // same pin used for alternate HW ++ PC_5_ALT2 = PC_5 | ALT2, // same pin used for alternate HW ++ PC_6 = 0x26, ++ PC_6_ALT0 = PC_6 | ALT0, // same pin used for alternate HW ++ PC_7 = 0x27, ++ PC_7_ALT0 = PC_7 | ALT0, // same pin used for alternate HW ++ PC_8 = 0x28, ++ PC_8_ALT0 = PC_8 | ALT0, // same pin used for alternate HW ++ PC_9 = 0x29, ++ PC_9_ALT0 = PC_9 | ALT0, // same pin used for alternate HW ++ PC_10 = 0x2A, ++ PC_10_ALT0 = PC_10 | ALT0, // same pin used for alternate HW ++ PC_11 = 0x2B, ++ PC_11_ALT0 = PC_11 | ALT0, // same pin used for alternate HW ++ PC_12 = 0x2C, ++ PC_13 = 0x2D, ++ PC_14 = 0x2E, ++ PC_15 = 0x2F, ++ PD_0 = 0x30, ++ PD_1 = 0x31, ++ PD_2 = 0x32, ++ PD_3 = 0x33, ++ PD_4 = 0x34, ++ PD_5 = 0x35, ++ PD_6 = 0x36, ++ PD_7 = 0x37, ++ PD_8 = 0x38, ++ PD_9 = 0x39, ++ PD_10 = 0x3A, ++ PD_11 = 0x3B, ++ PD_12 = 0x3C, ++ PD_13 = 0x3D, ++ PD_14 = 0x3E, ++ PD_15 = 0x3F, ++ PE_0 = 0x40, ++ PE_1 = 0x41, ++ PE_2 = 0x42, ++ PE_3 = 0x43, ++ PE_4 = 0x44, ++ PE_5 = 0x45, ++ PE_6 = 0x46, ++ PE_7 = 0x47, ++ PE_8 = 0x48, ++ PE_9 = 0x49, ++ PE_10 = 0x4A, ++ PE_11 = 0x4B, ++ PE_12 = 0x4C, ++ PE_13 = 0x4D, ++ PE_14 = 0x4E, ++ PE_15 = 0x4F, ++ PF_0 = 0x50, ++ PF_1 = 0x51, ++ PF_2 = 0x52, ++ PF_3 = 0x53, ++ PF_4 = 0x54, ++ PF_4_ALT0 = PF_4 | ALT0, // same pin used for alternate HW ++ PF_5 = 0x55, ++ PF_6 = 0x56, ++ PF_6_ALT0 = PF_6 | ALT0, // same pin used for alternate HW ++ PF_7 = 0x57, ++ PF_8 = 0x58, ++ PF_8_ALT0 = PF_8 | ALT0, // same pin used for alternate HW ++ PF_9 = 0x59, ++ PF_9_ALT0 = PF_9 | ALT0, // same pin used for alternate HW ++ PF_10 = 0x5A, ++ PF_10_ALT0 = PF_10 | ALT0, // same pin used for alternate HW ++ PF_11 = 0x5B, ++ PF_12 = 0x5C, ++ PF_12_ALT0 = PF_12 | ALT0, // same pin used for alternate HW ++ PF_13 = 0x5D, ++ PF_14 = 0x5E, ++ PF_14_ALT0 = PF_14 | ALT0, // same pin used for alternate HW ++ PF_15 = 0x5F, ++ PG_0 = 0x60, ++ PG_1 = 0x61, ++ PG_2 = 0x62, ++ PG_3 = 0x63, ++ PG_4 = 0x64, ++ PG_5 = 0x65, ++ PG_6 = 0x66, ++ PG_7 = 0x67, ++ PG_8 = 0x68, ++ PG_9 = 0x69, ++ PG_10 = 0x6A, ++ PG_11 = 0x6B, ++ PG_12 = 0x6C, ++ PG_13 = 0x6D, ++ PG_14 = 0x6E, ++ PG_15 = 0x6F, ++ PH_0 = 0x70, ++ PH_1 = 0x71, ++ PH_2 = 0x72, ++ PH_3 = 0x73, ++ PH_3_ALT0 = PH_3 | ALT0, // same pin used for alternate HW ++ PH_4 = 0x74, ++ PH_4_ALT0 = PH_4 | ALT0, // same pin used for alternate HW ++ PH_5 = 0x75, ++ PH_5_ALT0 = PH_5 | ALT0, // same pin used for alternate HW ++ PH_6 = 0x76, ++ PH_7 = 0x77, ++ PH_8 = 0x78, ++ PH_9 = 0x79, ++ PH_10 = 0x7A, ++ PH_11 = 0x7B, ++ PH_12 = 0x7C, ++ PH_13 = 0x7D, ++ PH_14 = 0x7E, ++ PH_15 = 0x7F, ++ PI_0 = 0x80, ++ PI_1 = 0x81, ++ PI_2 = 0x82, ++ PI_3 = 0x83, ++ PI_4 = 0x84, ++ PI_5 = 0x85, ++ PI_6 = 0x86, ++ PI_7 = 0x87, ++ PI_8 = 0x88, ++ PI_9 = 0x89, ++ PI_10 = 0x8A, ++ PI_11 = 0x8B, ++ PI_12 = 0x8C, ++ PI_13 = 0x8D, ++ PI_14 = 0x8E, ++ PI_15 = 0x8F, ++ PJ_0 = 0x90, ++ PJ_1 = 0x91, ++ PJ_2 = 0x92, ++ PJ_3 = 0x93, ++ PJ_4 = 0x94, ++ PJ_5 = 0x95, ++ PJ_6 = 0x96, ++ PJ_7 = 0x97, ++ PJ_8 = 0x98, ++ PJ_8_ALT0 = PJ_8 | ALT0, // same pin used for alternate HW ++ PJ_9 = 0x99, ++ PJ_9_ALT0 = PJ_9 | ALT0, // same pin used for alternate HW ++ PJ_10 = 0x9A, ++ PJ_10_ALT0 = PJ_10 | ALT0, // same pin used for alternate HW ++ PJ_11 = 0x9B, ++ PJ_11_ALT0 = PJ_11 | ALT0, // same pin used for alternate HW ++ PJ_12 = 0x9C, ++ PJ_13 = 0x9D, ++ PJ_14 = 0x9E, ++ PJ_15 = 0x9F, ++ PK_0 = 0xA0, ++ PK_0_ALT0 = PK_0 | ALT0, // same pin used for alternate HW ++ PK_1 = 0xA1, ++ PK_1_ALT0 = PK_1 | ALT0, // same pin used for alternate HW ++ PK_2 = 0xA2, ++ PK_3 = 0xA3, ++ PK_4 = 0xA4, ++ PK_5 = 0xA5, ++ PK_6 = 0xA6, ++ PK_7 = 0xA7, ++ ++ /**** ADC internal channels ****/ ++ ++ ADC_TEMP = 0xF0, // Internal pin virtual value ++ ADC_VREF = 0xF1, // Internal pin virtual value ++ ADC_VBAT = 0xF2, // Internal pin virtual value ++ ++ // STDIO for console print ++#ifdef MBED_CONF_TARGET_STDIO_UART_TX ++ CONSOLE_TX = MBED_CONF_TARGET_STDIO_UART_TX, ++#else ++ CONSOLE_TX = PD_5, ++#endif ++#ifdef MBED_CONF_TARGET_STDIO_UART_RX ++ CONSOLE_RX = MBED_CONF_TARGET_STDIO_UART_RX, ++#else ++ CONSOLE_RX = PD_6, ++#endif ++ ++ //Led mappings ++ LED_RED = PA_0, //Red ++ LED_GREEN = PA_0, //Green ++ LED_BLUE = PA_0, //Blue ++ ++ /**** OSCILLATOR pins ****/ ++ RCC_OSC32_IN = PC_14, ++ RCC_OSC32_OUT = PC_15, ++ RCC_OSC_IN = PH_0, ++ RCC_OSC_OUT = PH_1, ++ ++ /**** DEBUG pins ****/ ++ SYS_JTCK_SWCLK = PA_14, ++ SYS_JTDI = PA_15, ++ SYS_JTDO_SWO = PB_3, ++ SYS_JTMS_SWDIO = PA_13, ++ SYS_JTRST = PB_4, ++ SYS_PVD_IN = PB_7, ++ SYS_TRACECLK = PE_2, ++ SYS_TRACED0 = PE_3, ++ SYS_TRACED0_ALT0 = PC_1, ++ SYS_TRACED0_ALT1 = PG_13, ++ SYS_TRACED1 = PE_4, ++ SYS_TRACED1_ALT0 = PC_8, ++ SYS_TRACED1_ALT1 = PG_14, ++ SYS_TRACED2 = PE_5, ++ SYS_TRACED2_ALT0 = PD_2, ++ SYS_TRACED3 = PE_6, ++ SYS_TRACED3_ALT0 = PC_12, ++ SYS_TRGIO = PC_7, ++ SYS_WKUP0 = PA_0, ++ SYS_WKUP1 = PA_2, ++ SYS_WKUP2 = PC_13, ++ SYS_WKUP5 = PC_1, ++ ++ // Not connected ++ NC = (int)0xFFFFFFFF ++} PinName; ++ ++// Standardized LED and button names ++#define LED1 LED_RED ++#define LED2 LED_GREEN ++#define LED3 LED_BLUE ++#define BUTTON1 PE_5 ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff --git a/targets/targets.json b/targets/targets.json +index b28205d060..c64a6491ab 100644 +--- a/targets/targets.json ++++ b/targets/targets.json +@@ -3252,6 +3252,38 @@ + "MPU" + ] + }, ++ "PORTENTA_X8": { ++ "inherits": ["MCU_STM32H747xI_CM4"], ++ "config": { ++ "hse_value": { ++ "help": "HSE default value is 25MHz in HAL", ++ "value": "25000000", ++ "macro_name": "HSE_VALUE" ++ }, ++ "lse_bypass": { ++ "help": "1 to use an oscillator (not a crystal) on 32k LSE", ++ "value": "1" ++ }, ++ "usb_speed": { ++ "help": "USE_USB_OTG_FS or USE_USB_OTG_HS or USE_USB_HS_IN_FS", ++ "value": "USE_USB_OTG_HS" ++ } ++ }, ++ "macros_add": [ ++ "MBEDTLS_FS_IO", ++ "MBEDTLS_SHA1_C", ++ "CM4_BOOT_BY_APPLICATION" ++ ], ++ "detect_code": ["0813"], ++ "overrides": { ++ "system_power_supply": "PWR_LDO_SUPPLY", ++ "clock_source": "USE_PLL_HSI", ++ "lse_available": 1, ++ "lpticker_delay_ticks": 0, ++ "i2c_timing_value_algo": true ++ }, ++ "device_name": "STM32H747XIHx" ++ }, + "MCU_STM32H7A3xIQ": { + "inherits": [ + "MCU_STM32H7" +-- +2.34.1 + diff --git a/platform.txt b/platform.txt index 823814a0f..13a7bf0d2 100644 --- a/platform.txt +++ b/platform.txt @@ -195,6 +195,16 @@ tools.imgtool.path={runtime.tools.imgtool.path} tools.imgtool.cmd=imgtool tools.imgtool.flags=sign --key "{build.keys.keychain}/{build.keys.sign_key}" --encrypt "{build.keys.keychain}/{build.keys.encrypt_key}" "{build.path}/{build.project_name}.bin" "{build.path}/{build.project_name}.bin" --align {build.alignment} --max-align {build.alignment} --version {build.version} --header-size {build.header_size} --pad-header --slot-size {build.slot_size} +# +# ADB WRAPPER +# + +tools.adb.path={runtime.tools.adb.path} +tools.adb.cmd=adb-wrapper +tools.adb.upload.params.verbose=-v +tools.adb.upload.params.quiet= +tools.adb.upload.pattern="{path}/{cmd}" flash "{build.path}/{build.project_name}.bin" + # # GDB (Debugger) # diff --git a/portenta.variables b/portenta.variables index ded76b43e..cd4ffa7b3 100644 --- a/portenta.variables +++ b/portenta.variables @@ -1,5 +1,5 @@ export FLAVOUR="portenta" -export VARIANTS=("PORTENTA_H7_M7 PORTENTA_H7_M4") -export FQBNS=("envie_m7 envie_m4") +export VARIANTS=("PORTENTA_H7_M7 PORTENTA_H7_M4 PORTENTA_X8") +export FQBNS=("envie_m7 envie_m4 portenta_x8") export LIBRARIES=("doom Ethernet MRI Portenta_SDRAM SPI WiFi ea_malloc openamp_arduino STM32H747_System ThreadDebug Himax_HM01B0 PDM Portenta_Video USBAudio KernelDebug Portenta_Audio RPC USBHID Wire Portenta_lvgl Camera rpclib USBHOST mbed-memory-status Portenta_SDCARD Scheduler USBMSD SocketWrapper GSM GPS MCUboot") export BOOTLOADERS=("PORTENTA_H7") diff --git a/variants/PORTENTA_X8/conf/.mbedignore b/variants/PORTENTA_X8/conf/.mbedignore new file mode 100644 index 000000000..d10167ba6 --- /dev/null +++ b/variants/PORTENTA_X8/conf/.mbedignore @@ -0,0 +1 @@ +mbed-os/connectivity/nanostack/* \ No newline at end of file diff --git a/variants/PORTENTA_X8/conf/mbed_app.json b/variants/PORTENTA_X8/conf/mbed_app.json new file mode 100644 index 000000000..8031bed69 --- /dev/null +++ b/variants/PORTENTA_X8/conf/mbed_app.json @@ -0,0 +1,23 @@ +{ + "target_overrides": { + "*": { + "target.printf_lib": "std", + "platform.stdio-buffered-serial": false, + "platform.stdio-baud-rate": 115200, + "platform.default-serial-baud-rate": 115200, + "platform.callback-nontrivial": true, + "platform.all-stats-enabled": true, + "platform.memory-tracing-enabled": true, + "rtos.main-thread-stack-size": 32768, + "target.mbed_app_start": "0x8100000", + "target.macros_add": [ + "NO_VTOR_RELOCATE", + "METAL_INTERNAL", + "VIRTIO_SLAVE_ONLY", + "NO_ATOMIC_64_SUPPORT", + "METAL_MAX_DEVICE_REGIONS=2", + "RPMSG_BUFFER_SIZE=2048" + ] + } + } +} diff --git a/variants/PORTENTA_X8/pinmode_arduino.h b/variants/PORTENTA_X8/pinmode_arduino.h new file mode 100644 index 000000000..9b3cb2c43 --- /dev/null +++ b/variants/PORTENTA_X8/pinmode_arduino.h @@ -0,0 +1,74 @@ + +/* Define mock symbols to nullify PinMode definitions */ +#define PullNone TempPullNone +#define PullUp TempPullUp +#define PullDown TempPullDown +#define OpenDrainPullUp TempOpenDrainPullUp +#define OpenDrainNoPull TempOpenDrainNoPull +#define OpenDrainPullDown TempOpenDrainPullDown +#define PushPullNoPull TempPushPullNoPull +#define PushPullPullUp TempPushPullPullUp +#define PushPullPullDown TempPushPullPullDown +#define OpenDrain TempOpenDrain +#define PullDefault TempPullDefault + +#define INPUT TempINPUT +#define OUTPUT TempOUTPUT +#define INPUT_PULLUP TempINPUT_PULLUP +#define INPUT_PULLDOWN TempINPUT_PULLDOWN + +/* Rename symbol PinMode into MbedPinMode for all the file PinNamesTypes.h + * Functions using PinMode should be redeclared with the correct PinMode symbol */ +#define PinMode MbedPinMode +#include "mbed_config.h" +#include "PinNamesTypes.h" +#undef PinMode + +/* Rename symbol PinMode into ArduinoPinMode for all the file Common.h + * Functions using PinMode should be redeclared with the correct PinMode symbol */ +#define PinMode ArduinoPinMode +#include "api/Common.h" +#undef PinMode + +#undef PullNone +#undef PullUp +#undef PullDown +#undef OpenDrainPullUp +#undef OpenDrainNoPull +#undef OpenDrainPullDown +#undef PushPullNoPull +#undef PushPullPullUp +#undef PushPullPullDown +#undef OpenDrain +#undef PullDefault + +#undef INPUT +#undef OUTPUT +#undef INPUT_PULLUP +#undef INPUT_PULLDOWN + +/* Define the PinName symbol to be used in all the contexts */ +typedef enum { + PullNone = TempPullNone, + PullUp = TempPullUp, + PullDown = TempPullDown, + OpenDrainPullUp = TempOpenDrainPullUp, + OpenDrainNoPull = TempOpenDrainNoPull, + OpenDrainPullDown = TempOpenDrainPullDown, + PushPullNoPull = TempPushPullNoPull, + PushPullPullUp = TempPushPullPullUp, + PushPullPullDown = TempPushPullPullDown, + OpenDrain = TempOpenDrain, + PullDefault = TempPullDefault, + INPUT = TempINPUT, + OUTPUT = TempOUTPUT, + INPUT_PULLUP = TempINPUT_PULLUP, + INPUT_PULLDOWN = TempINPUT_PULLDOWN +} PinMode; + +#if defined(__cplusplus) + +/* Redeclare Common.h functions with the updated PinMode */ +void pinMode(pin_size_t pinNumber, PinMode pinMode); + +#endif \ No newline at end of file diff --git a/variants/PORTENTA_X8/pins_arduino.h b/variants/PORTENTA_X8/pins_arduino.h new file mode 100644 index 000000000..eeab12fb9 --- /dev/null +++ b/variants/PORTENTA_X8/pins_arduino.h @@ -0,0 +1,139 @@ +#pragma once +#include +#include "PeripheralPins.h" + +#ifndef __PINS_ARDUINO__ +#define __PINS_ARDUINO__ + +#ifdef __cplusplus +extern "C" unsigned int PINCOUNT_fn(); +extern "C" bool isBetaBoard(); +#endif + +// Booting +// ---- +void bootM4(); + +extern PinName digitalPinToPinName(pin_size_t P); + +// Pin count +// ---- +#define PINS_COUNT (PINCOUNT_fn()) +#define NUM_DIGITAL_PINS (36u) +#define NUM_ANALOG_INPUTS (8u) +#define NUM_ANALOG_OUTPUTS (1u) + +// LEDs +// ---- +#define PIN_LED (33u) +#define LED_BUILTIN PIN_LED + +// Analog pins +// ----------- +#define PIN_A0 (7u) +#define PIN_A1 (8u) +#define PIN_A2 (9u) +#define PIN_A3 (10u) +#define PIN_A4 (11u) +#define PIN_A5 (12u) +#define PIN_A6 (13u) +#define PIN_A7 (14u) + +static const uint8_t A0 = PIN_A0; +static const uint8_t A1 = PIN_A1; +static const uint8_t A2 = PIN_A2; +static const uint8_t A3 = PIN_A3; +static const uint8_t A4 = PIN_A4; +static const uint8_t A5 = PIN_A5; +static const uint8_t A6 = PIN_A6; +static const uint8_t A7 = PIN_A7; +#define ADC_RESOLUTION 12 + +// Digital pins +// ----------- +#define D0 (0u) +#define D1 (1u) +#define D2 (2u) +#define D3 (3u) +#define D4 (4u) +#define D5 (5u) +#define D6 (6u) +#define D7 (7u) +#define D8 (8u) +#define D9 (9u) +#define D10 (10u) +#define D11 (11u) +#define D12 (12u) +#define D13 (13u) +#define D14 (14u) +#define D15 (15u) +#define D16 (16u) +#define D17 (17u) +#define D18 (18u) +#define D19 (19u) +#define D20 (20u) +#define D21 (21u) + +//DACs +#define DAC (A6) + +// Serial +#define PIN_SERIAL_RX (22ul) +#define PIN_SERIAL_TX (21ul) + +#define SERIAL_HOWMANY 1 +#define SERIAL1_TX (digitalPinToPinName(PIN_SERIAL_TX)) +#define SERIAL1_RX (digitalPinToPinName(PIN_SERIAL_RX)) + +// SPI +#define PIN_SPI_MISO (10u) +#define PIN_SPI_MOSI (8u) +#define PIN_SPI_SCK (9u) +#define PIN_SPI_SS (7u) + +static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. +static const uint8_t MOSI = PIN_SPI_MOSI; +static const uint8_t MISO = PIN_SPI_MISO; +static const uint8_t SCK = PIN_SPI_SCK; + +// Wire +#define PIN_WIRE_SDA (11u) +#define PIN_WIRE_SCL (12u) + +//#define SERIAL_CDC 0 +#define HAS_UNIQUE_ISERIAL_DESCRIPTOR +#define BOARD_VENDORID 0x2341 +#define BOARD_PRODUCTID 0x0061 +#define BOARD_NAME "Portenta X8" + +#define DFU_MAGIC_SERIAL_ONLY_RESET 0xb0 + +uint8_t getUniqueSerialNumber(uint8_t* name); +void _ontouch1200bps_(); + +#define WIRE_HOWMANY 0 + +#define I2C_SDA (digitalPinToPinName(PIN_WIRE_SDA)) +#define I2C_SCL (digitalPinToPinName(PIN_WIRE_SCL)) + +#define I2C_SDA_INTERNAL (PB_7) +#define I2C_SCL_INTERNAL (PB_6) +#define I2C_SDA1 I2C_SDA_INTERNAL +#define I2C_SCL1 I2C_SCL_INTERNAL + +#define SPI_HOWMANY 0 + +#define SPI_MISO (digitalPinToPinName(PIN_SPI_MISO)) +#define SPI_MOSI (digitalPinToPinName(PIN_SPI_MOSI)) +#define SPI_SCK (digitalPinToPinName(PIN_SPI_SCK)) + +#define digitalPinToPort(P) (digitalPinToPinName(P)/32) + +#define SERIAL_PORT_USBVIRTUAL Serial +#define SERIAL_PORT_MONITOR Serial +#define SERIAL_PORT_HARDWARE Serial1 +#define SERIAL_PORT_HARDWARE_OPEN Serial2 + +#define USB_MAX_POWER (500) + +#endif //__PINS_ARDUINO__ diff --git a/variants/PORTENTA_X8/variant.cpp b/variants/PORTENTA_X8/variant.cpp new file mode 100644 index 000000000..612ff81f1 --- /dev/null +++ b/variants/PORTENTA_X8/variant.cpp @@ -0,0 +1,70 @@ +#include "Arduino.h" +#include "pinDefinitions.h" + +AnalogPinDescription g_AAnalogPinDescription[] = { + { PF_11, NULL }, // A0 ADC1_INP2 + { PA_6, NULL }, // A1 ADC12_INP3 + { PF_13, NULL }, // A2 ADC2_INP2 + { PB_1, NULL }, // A3 ADC12_INP5 + { PC_4, NULL }, // A4 ADC12_INP4 + { PF_7, NULL }, // A5 ADC3_INP3 + { PF_9, NULL }, // A6 ADC3_INP2 + { PF_5, NULL } // A7 ADC3_INP4 +}; + +PinDescription g_APinDescription[] = { + // D0 - D6 + { PF_8, NULL, NULL, NULL }, // D0 + { PF_6, NULL, NULL, NULL }, // D1 + { PF_3, NULL, NULL, NULL }, // D2 + { PF_4, NULL, NULL, NULL }, // D3 + { PF_12, NULL, NULL, NULL }, // D4 + { PE_10, NULL, NULL, NULL }, // D5 + { PE_11, NULL, NULL, NULL }, // D6 + + // D7 - D14 + { PF_11, NULL }, // D7 A0 + { PA_6, NULL }, // D8 A1 + { PF_13, NULL }, // D9 A2 + { PB_1, NULL }, // D10 A3 + { PC_4, NULL }, // D11 A4 + { PF_7, NULL }, // D12 A5 + { PF_9, NULL }, // D13 A6 + { PF_5, NULL }, // D14 A7 + + // CAN + { PD_1, NULL, NULL, NULL }, // D15 + { PD_0, NULL, NULL, NULL }, // D16 + { PB_6, NULL, NULL, NULL }, // D17 + { PB_5, NULL, NULL, NULL }, // D18 + + // USART2 + { PD_3, NULL, NULL, NULL }, // D19 + { PD_4, NULL, NULL, NULL }, // D20 + { PD_5, NULL, NULL, NULL }, // D21 + { PD_6, NULL, NULL, NULL }, // D22 + + // PWM + { PC_7, NULL, NULL, NULL }, // D23 + { PA_9, NULL, NULL, NULL }, // D24 + { PA_10, NULL, NULL, NULL }, // D25 + { PB_10, NULL, NULL, NULL }, // D26 + { PA_11, NULL, NULL, NULL }, // D27 + { PD_15, NULL, NULL, NULL }, // D28 + { PA_15, NULL, NULL, NULL }, // D29 + { PC_6, NULL, NULL, NULL }, // D30 + { PA_12, NULL, NULL, NULL }, // D31 + { PC_8, NULL, NULL, NULL }, // D32 + + // INTERNAL + { PA_0, NULL, NULL, NULL }, // D33 + { PC_1, NULL, NULL, NULL }, // D34 + { PE_5, NULL, NULL, NULL }, // D35 + +}; + +extern "C" { + unsigned int PINCOUNT_fn() { + return (sizeof(g_APinDescription) / sizeof(g_APinDescription[0])); + } +} \ No newline at end of file From 9323402fc5d0c62614bdcd5313cc6824dc4333a0 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 18 Jan 2022 16:56:36 +0100 Subject: [PATCH 04/50] TEMP: REMOVEME: add adb wrapper in core --- extras/adb-wrapper | 5 +++++ platform.txt | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100755 extras/adb-wrapper diff --git a/extras/adb-wrapper b/extras/adb-wrapper new file mode 100755 index 000000000..6f55337ab --- /dev/null +++ b/extras/adb-wrapper @@ -0,0 +1,5 @@ +#!/bin/bash + +adb push $2 /tmp +FILENAME=`basename $2` +adb shell openocd -f /home/fio/extra/openocd_script.cfg -c "\"init; halt; flash write_image /tmp/$FILENAME 0x8100000; reset; shutdown\"" diff --git a/platform.txt b/platform.txt index 13a7bf0d2..d369fab95 100644 --- a/platform.txt +++ b/platform.txt @@ -199,7 +199,9 @@ tools.imgtool.flags=sign --key "{build.keys.keychain}/{build.keys.sign_key}" --e # ADB WRAPPER # -tools.adb.path={runtime.tools.adb.path} +#tools.adb.path={runtime.tools.adb.path} +# temp +tools.adb.path={runtime.platform.path}/extras/ tools.adb.cmd=adb-wrapper tools.adb.upload.params.verbose=-v tools.adb.upload.params.quiet= From 92119bc542856900a466d73f66ec776c3c38ef63 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 18 Jan 2022 16:57:10 +0100 Subject: [PATCH 05/50] TEMP: REMOVEME: compile libmbed for Portenta X8 --- .../TARGET_PORTENTA_X8/PinNames.h | 381 ++++++++++++++++++ variants/PORTENTA_X8/cflags.txt | 27 ++ variants/PORTENTA_X8/cxxflags.txt | 29 ++ variants/PORTENTA_X8/defines.txt | 73 ++++ variants/PORTENTA_X8/includes.txt | 242 +++++++++++ variants/PORTENTA_X8/ldflags.txt | 24 ++ variants/PORTENTA_X8/libs/libmbed.a | Bin 0 -> 4708024 bytes variants/PORTENTA_X8/linker_script.ld | 113 ++++++ variants/PORTENTA_X8/mbed_config.h | 371 +++++++++++++++++ 9 files changed, 1260 insertions(+) create mode 100644 cores/arduino/mbed/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PinNames.h create mode 100644 variants/PORTENTA_X8/cflags.txt create mode 100644 variants/PORTENTA_X8/cxxflags.txt create mode 100644 variants/PORTENTA_X8/defines.txt create mode 100644 variants/PORTENTA_X8/includes.txt create mode 100644 variants/PORTENTA_X8/ldflags.txt create mode 100644 variants/PORTENTA_X8/libs/libmbed.a create mode 100644 variants/PORTENTA_X8/linker_script.ld create mode 100644 variants/PORTENTA_X8/mbed_config.h diff --git a/cores/arduino/mbed/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PinNames.h b/cores/arduino/mbed/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PinNames.h new file mode 100644 index 000000000..1cce05b2e --- /dev/null +++ b/cores/arduino/mbed/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PinNames.h @@ -0,0 +1,381 @@ +/* mbed Microcontroller Library + ******************************************************************************* + * Copyright (c) 2018, STMicroelectronics + * Copyright (c) 2020, Arduino SA + * + * SPDX-License-Identifier: BSD-3-Clause + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ******************************************************************************* + */ + +/* MBED TARGET LIST: PORTENTA_H7_M4, PORTENTA_H7_M7 */ + +#ifndef MBED_PINNAMES_H +#define MBED_PINNAMES_H + +#include "cmsis.h" +#include "PinNamesTypes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define DUAL_PAD 0xF00 + +typedef enum { + ALT0 = 0x100, + ALT1 = 0x200, + ALT2 = 0x300, + ALT3 = 0x400, + ALT4 = 0x500, +} ALTx; + +typedef enum { + PA_0 = 0x00, + PA_0C = PA_0 | DUAL_PAD, // dual pad + PA_0C_ALT0 = PA_0C | ALT0, // same pin used for alternate HW + PA_0C_ALT1 = PA_0C | ALT1, // same pin used for alternate HW + PA_0C_ALT2 = PA_0C | ALT2, // same pin used for alternate HW + PA_1 = 0x01, + PA_1C = PA_1 | DUAL_PAD, // dual pad + PA_1C_ALT0 = PA_1C | ALT0, // same pin used for alternate HW + PA_1_ALT0 = PA_1 | ALT0, // same pin used for alternate HW + PA_2 = 0x02, + PA_2_ALT0 = PA_2 | ALT0, // same pin used for alternate HW + PA_3 = 0x03, + PA_3_ALT0 = PA_3 | ALT0, // same pin used for alternate HW + PA_4 = 0x04, + PA_4_ALT0 = PA_4 | ALT0, // same pin used for alternate HW + PA_4_ALT1 = PA_4 | ALT1, // same pin used for alternate HW + PA_5 = 0x05, + PA_5_ALT0 = PA_5 | ALT0, // same pin used for alternate HW + PA_5_ALT1 = PA_5 | ALT1, // same pin used for alternate HW + PA_5_ALT2 = PA_5 | ALT2, // same pin used for alternate HW + PA_6 = 0x06, + PA_6_ALT0 = PA_6 | ALT0, // same pin used for alternate HW + PA_7 = 0x07, + PA_7_ALT0 = PA_7 | ALT0, // same pin used for alternate HW + PA_7_ALT1 = PA_7 | ALT1, // same pin used for alternate HW + PA_7_ALT2 = PA_7 | ALT2, // same pin used for alternate HW + PA_8 = 0x08, + PA_9 = 0x09, + PA_9_ALT0 = PA_9 | ALT0, // same pin used for alternate HW + PA_10 = 0x0A, + PA_10_ALT0 = PA_10 | ALT0, // same pin used for alternate HW + PA_11 = 0x0B, + PA_11_ALT0 = PA_11 | ALT0, // same pin used for alternate HW + PA_12 = 0x0C, + PA_12_ALT0 = PA_12 | ALT0, // same pin used for alternate HW + PA_13 = 0x0D, + PA_14 = 0x0E, + PA_15 = 0x0F, + PA_15_ALT0 = PA_15 | ALT0, // same pin used for alternate HW + PA_15_ALT1 = PA_15 | ALT1, // same pin used for alternate HW + PB_0 = 0x10, + PB_0_ALT0 = PB_0 | ALT0, // same pin used for alternate HW + PB_0_ALT1 = PB_0 | ALT1, // same pin used for alternate HW + PB_0_ALT2 = PB_0 | ALT2, // same pin used for alternate HW + PB_1 = 0x11, + PB_1_ALT0 = PB_1 | ALT0, // same pin used for alternate HW + PB_1_ALT1 = PB_1 | ALT1, // same pin used for alternate HW + PB_2 = 0x12, + PB_3 = 0x13, + PB_3_ALT0 = PB_3 | ALT0, // same pin used for alternate HW + PB_3_ALT1 = PB_3 | ALT1, // same pin used for alternate HW + PB_4 = 0x14, + PB_4_ALT0 = PB_4 | ALT0, // same pin used for alternate HW + PB_4_ALT1 = PB_4 | ALT1, // same pin used for alternate HW + PB_5 = 0x15, + PB_5_ALT0 = PB_5 | ALT0, // same pin used for alternate HW + PB_5_ALT1 = PB_5 | ALT1, // same pin used for alternate HW + PB_6 = 0x16, + PB_6_ALT0 = PB_6 | ALT0, // same pin used for alternate HW + PB_6_ALT1 = PB_6 | ALT1, // same pin used for alternate HW + PB_7 = 0x17, + PB_7_ALT0 = PB_7 | ALT0, // same pin used for alternate HW + PB_8 = 0x18, + PB_8_ALT0 = PB_8 | ALT0, // same pin used for alternate HW + PB_9 = 0x19, + PB_9_ALT0 = PB_9 | ALT0, // same pin used for alternate HW + PB_10 = 0x1A, + PB_11 = 0x1B, + PB_12 = 0x1C, + PB_13 = 0x1D, + PB_14 = 0x1E, + PB_14_ALT0 = PB_14 | ALT0, // same pin used for alternate HW + PB_14_ALT1 = PB_14 | ALT1, // same pin used for alternate HW + PB_15 = 0x1F, + PB_15_ALT0 = PB_15 | ALT0, // same pin used for alternate HW + PB_15_ALT1 = PB_15 | ALT1, // same pin used for alternate HW + PC_0 = 0x20, + PC_0_ALT0 = PC_0 | ALT0, // same pin used for alternate HW + PC_0_ALT1 = PC_0 | ALT1, // same pin used for alternate HW + PC_1 = 0x21, + PC_1_ALT0 = PC_1 | ALT0, // same pin used for alternate HW + PC_1_ALT1 = PC_1 | ALT1, // same pin used for alternate HW + PC_1_ALT2 = PC_1 | ALT2, // same pin used for alternate HW + PC_1_ALT3 = PC_1 | ALT3, // same pin used for alternate HW + PC_1_ALT4 = PC_1 | ALT4, // same pin used for alternate HW + PC_2 = 0x22, + PC_2C = PC_2 | DUAL_PAD, // dual pad + PC_2C_ALT0 = PC_2C | ALT0, // same pin used for alternate HW + PC_2_ALT0 = PC_2 | ALT0, // same pin used for alternate HW + PC_2_ALT1 = PC_2 | ALT1, // same pin used for alternate HW + PC_2_ALT2 = PC_2 | ALT2, // same pin used for alternate HW + PC_2_ALT3 = PC_2 | ALT3, // same pin used for alternate HW + PC_2_ALT4 = PC_2 | ALT4, // same pin used for alternate HW + PC_3 = 0x23, + PC_3C = PC_3 | DUAL_PAD, // dual pad + PC_3_ALT0 = PC_3 | ALT0, // same pin used for alternate HW + PC_3_ALT1 = PC_3 | ALT1, // same pin used for alternate HW + PC_3_ALT2 = PC_3 | ALT2, // same pin used for alternate HW + PC_4 = 0x24, + PC_4_ALT0 = PC_4 | ALT0, // same pin used for alternate HW + PC_5 = 0x25, + PC_5_ALT0 = PC_5 | ALT0, // same pin used for alternate HW + PC_5_ALT1 = PC_5 | ALT1, // same pin used for alternate HW + PC_5_ALT2 = PC_5 | ALT2, // same pin used for alternate HW + PC_6 = 0x26, + PC_6_ALT0 = PC_6 | ALT0, // same pin used for alternate HW + PC_7 = 0x27, + PC_7_ALT0 = PC_7 | ALT0, // same pin used for alternate HW + PC_8 = 0x28, + PC_8_ALT0 = PC_8 | ALT0, // same pin used for alternate HW + PC_9 = 0x29, + PC_9_ALT0 = PC_9 | ALT0, // same pin used for alternate HW + PC_10 = 0x2A, + PC_10_ALT0 = PC_10 | ALT0, // same pin used for alternate HW + PC_11 = 0x2B, + PC_11_ALT0 = PC_11 | ALT0, // same pin used for alternate HW + PC_12 = 0x2C, + PC_13 = 0x2D, + PC_14 = 0x2E, + PC_15 = 0x2F, + PD_0 = 0x30, + PD_1 = 0x31, + PD_2 = 0x32, + PD_3 = 0x33, + PD_4 = 0x34, + PD_5 = 0x35, + PD_6 = 0x36, + PD_7 = 0x37, + PD_8 = 0x38, + PD_9 = 0x39, + PD_10 = 0x3A, + PD_11 = 0x3B, + PD_12 = 0x3C, + PD_13 = 0x3D, + PD_14 = 0x3E, + PD_15 = 0x3F, + PE_0 = 0x40, + PE_1 = 0x41, + PE_2 = 0x42, + PE_3 = 0x43, + PE_4 = 0x44, + PE_5 = 0x45, + PE_6 = 0x46, + PE_7 = 0x47, + PE_8 = 0x48, + PE_9 = 0x49, + PE_10 = 0x4A, + PE_11 = 0x4B, + PE_12 = 0x4C, + PE_13 = 0x4D, + PE_14 = 0x4E, + PE_15 = 0x4F, + PF_0 = 0x50, + PF_1 = 0x51, + PF_2 = 0x52, + PF_3 = 0x53, + PF_4 = 0x54, + PF_4_ALT0 = PF_4 | ALT0, // same pin used for alternate HW + PF_5 = 0x55, + PF_6 = 0x56, + PF_6_ALT0 = PF_6 | ALT0, // same pin used for alternate HW + PF_7 = 0x57, + PF_8 = 0x58, + PF_8_ALT0 = PF_8 | ALT0, // same pin used for alternate HW + PF_9 = 0x59, + PF_9_ALT0 = PF_9 | ALT0, // same pin used for alternate HW + PF_10 = 0x5A, + PF_10_ALT0 = PF_10 | ALT0, // same pin used for alternate HW + PF_11 = 0x5B, + PF_12 = 0x5C, + PF_12_ALT0 = PF_12 | ALT0, // same pin used for alternate HW + PF_13 = 0x5D, + PF_14 = 0x5E, + PF_14_ALT0 = PF_14 | ALT0, // same pin used for alternate HW + PF_15 = 0x5F, + PG_0 = 0x60, + PG_1 = 0x61, + PG_2 = 0x62, + PG_3 = 0x63, + PG_4 = 0x64, + PG_5 = 0x65, + PG_6 = 0x66, + PG_7 = 0x67, + PG_8 = 0x68, + PG_9 = 0x69, + PG_10 = 0x6A, + PG_11 = 0x6B, + PG_12 = 0x6C, + PG_13 = 0x6D, + PG_14 = 0x6E, + PG_15 = 0x6F, + PH_0 = 0x70, + PH_1 = 0x71, + PH_2 = 0x72, + PH_3 = 0x73, + PH_3_ALT0 = PH_3 | ALT0, // same pin used for alternate HW + PH_4 = 0x74, + PH_4_ALT0 = PH_4 | ALT0, // same pin used for alternate HW + PH_5 = 0x75, + PH_5_ALT0 = PH_5 | ALT0, // same pin used for alternate HW + PH_6 = 0x76, + PH_7 = 0x77, + PH_8 = 0x78, + PH_9 = 0x79, + PH_10 = 0x7A, + PH_11 = 0x7B, + PH_12 = 0x7C, + PH_13 = 0x7D, + PH_14 = 0x7E, + PH_15 = 0x7F, + PI_0 = 0x80, + PI_1 = 0x81, + PI_2 = 0x82, + PI_3 = 0x83, + PI_4 = 0x84, + PI_5 = 0x85, + PI_6 = 0x86, + PI_7 = 0x87, + PI_8 = 0x88, + PI_9 = 0x89, + PI_10 = 0x8A, + PI_11 = 0x8B, + PI_12 = 0x8C, + PI_13 = 0x8D, + PI_14 = 0x8E, + PI_15 = 0x8F, + PJ_0 = 0x90, + PJ_1 = 0x91, + PJ_2 = 0x92, + PJ_3 = 0x93, + PJ_4 = 0x94, + PJ_5 = 0x95, + PJ_6 = 0x96, + PJ_7 = 0x97, + PJ_8 = 0x98, + PJ_8_ALT0 = PJ_8 | ALT0, // same pin used for alternate HW + PJ_9 = 0x99, + PJ_9_ALT0 = PJ_9 | ALT0, // same pin used for alternate HW + PJ_10 = 0x9A, + PJ_10_ALT0 = PJ_10 | ALT0, // same pin used for alternate HW + PJ_11 = 0x9B, + PJ_11_ALT0 = PJ_11 | ALT0, // same pin used for alternate HW + PJ_12 = 0x9C, + PJ_13 = 0x9D, + PJ_14 = 0x9E, + PJ_15 = 0x9F, + PK_0 = 0xA0, + PK_0_ALT0 = PK_0 | ALT0, // same pin used for alternate HW + PK_1 = 0xA1, + PK_1_ALT0 = PK_1 | ALT0, // same pin used for alternate HW + PK_2 = 0xA2, + PK_3 = 0xA3, + PK_4 = 0xA4, + PK_5 = 0xA5, + PK_6 = 0xA6, + PK_7 = 0xA7, + + /**** ADC internal channels ****/ + + ADC_TEMP = 0xF0, // Internal pin virtual value + ADC_VREF = 0xF1, // Internal pin virtual value + ADC_VBAT = 0xF2, // Internal pin virtual value + + // STDIO for console print +#ifdef MBED_CONF_TARGET_STDIO_UART_TX + CONSOLE_TX = MBED_CONF_TARGET_STDIO_UART_TX, +#else + CONSOLE_TX = PD_5, +#endif +#ifdef MBED_CONF_TARGET_STDIO_UART_RX + CONSOLE_RX = MBED_CONF_TARGET_STDIO_UART_RX, +#else + CONSOLE_RX = PD_6, +#endif + + //Led mappings + LED_RED = PA_0, //Red + LED_GREEN = PA_0, //Green + LED_BLUE = PA_0, //Blue + + /**** OSCILLATOR pins ****/ + RCC_OSC32_IN = PC_14, + RCC_OSC32_OUT = PC_15, + RCC_OSC_IN = PH_0, + RCC_OSC_OUT = PH_1, + + /**** DEBUG pins ****/ + SYS_JTCK_SWCLK = PA_14, + SYS_JTDI = PA_15, + SYS_JTDO_SWO = PB_3, + SYS_JTMS_SWDIO = PA_13, + SYS_JTRST = PB_4, + SYS_PVD_IN = PB_7, + SYS_TRACECLK = PE_2, + SYS_TRACED0 = PE_3, + SYS_TRACED0_ALT0 = PC_1, + SYS_TRACED0_ALT1 = PG_13, + SYS_TRACED1 = PE_4, + SYS_TRACED1_ALT0 = PC_8, + SYS_TRACED1_ALT1 = PG_14, + SYS_TRACED2 = PE_5, + SYS_TRACED2_ALT0 = PD_2, + SYS_TRACED3 = PE_6, + SYS_TRACED3_ALT0 = PC_12, + SYS_TRGIO = PC_7, + SYS_WKUP0 = PA_0, + SYS_WKUP1 = PA_2, + SYS_WKUP2 = PC_13, + SYS_WKUP5 = PC_1, + + // Not connected + NC = (int)0xFFFFFFFF +} PinName; + +// Standardized LED and button names +#define LED1 LED_RED +#define LED2 LED_GREEN +#define LED3 LED_BLUE +#define BUTTON1 PE_5 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/variants/PORTENTA_X8/cflags.txt b/variants/PORTENTA_X8/cflags.txt new file mode 100644 index 000000000..5ea7d6111 --- /dev/null +++ b/variants/PORTENTA_X8/cflags.txt @@ -0,0 +1,27 @@ +-c +-std=gnu11 +-DAPPLICATION_ADDR=0x8100000 +-DAPPLICATION_RAM_ADDR=0x10000000 +-DAPPLICATION_RAM_SIZE=0x48000 +-DAPPLICATION_SIZE=0x100000 +-DMBED_RAM1_SIZE=0x80000 +-DMBED_RAM1_START=0x24000000 +-DMBED_RAM_SIZE=0x48000 +-DMBED_RAM_START=0x10000000 +-DMBED_ROM_SIZE=0x100000 +-DMBED_ROM_START=0x8100000 +-DMBED_TRAP_ERRORS_ENABLED=1 +-Os +-Wall +-Wextra +-Wno-missing-field-initializers +-Wno-unused-parameter +-fdata-sections +-ffunction-sections +-fmessage-length=0 +-fomit-frame-pointer +-funsigned-char +-mcpu=cortex-m4 +-mfloat-abi=softfp +-mfpu=fpv4-sp-d16 +-mthumb diff --git a/variants/PORTENTA_X8/cxxflags.txt b/variants/PORTENTA_X8/cxxflags.txt new file mode 100644 index 000000000..0787fe177 --- /dev/null +++ b/variants/PORTENTA_X8/cxxflags.txt @@ -0,0 +1,29 @@ +-Wvla +-c +-fno-rtti +-std=gnu++14 +-DAPPLICATION_ADDR=0x8100000 +-DAPPLICATION_RAM_ADDR=0x10000000 +-DAPPLICATION_RAM_SIZE=0x48000 +-DAPPLICATION_SIZE=0x100000 +-DMBED_RAM1_SIZE=0x80000 +-DMBED_RAM1_START=0x24000000 +-DMBED_RAM_SIZE=0x48000 +-DMBED_RAM_START=0x10000000 +-DMBED_ROM_SIZE=0x100000 +-DMBED_ROM_START=0x8100000 +-DMBED_TRAP_ERRORS_ENABLED=1 +-Os +-Wall +-Wextra +-Wno-missing-field-initializers +-Wno-unused-parameter +-fdata-sections +-ffunction-sections +-fmessage-length=0 +-fomit-frame-pointer +-funsigned-char +-mcpu=cortex-m4 +-mfloat-abi=softfp +-mfpu=fpv4-sp-d16 +-mthumb diff --git a/variants/PORTENTA_X8/defines.txt b/variants/PORTENTA_X8/defines.txt new file mode 100644 index 000000000..48b4df719 --- /dev/null +++ b/variants/PORTENTA_X8/defines.txt @@ -0,0 +1,73 @@ + +-DARM_MATH_CM4 +-DCM4_BOOT_BY_APPLICATION +-D__CMSIS_RTOS +-DCOMPONENT_FLASHIAP=1 +-DCORE_CM4 +-D__CORTEX_M4 +-DDEVICE_ANALOGIN=1 +-DDEVICE_ANALOGOUT=1 +-DDEVICE_CAN=1 +-DDEVICE_CRC=1 +-DDEVICE_FLASH=1 +-DDEVICE_I2C=1 +-DDEVICE_I2C_ASYNCH=1 +-DDEVICE_I2CSLAVE=1 +-DDEVICE_INTERRUPTIN=1 +-DDEVICE_LPTICKER=1 +-DDEVICE_MPU=1 +-DDEVICE_PORTIN=1 +-DDEVICE_PORTINOUT=1 +-DDEVICE_PORTOUT=1 +-DDEVICE_PWMOUT=1 +-DDEVICE_RESET_REASON=1 +-DDEVICE_RTC=1 +-DDEVICE_SERIAL=1 +-DDEVICE_SERIAL_FC=1 +-DDEVICE_SLEEP=1 +-DDEVICE_SPI=1 +-DDEVICE_SPI_ASYNCH=1 +-DDEVICE_SPISLAVE=1 +-DDEVICE_STDIO_MESSAGES=1 +-DDEVICE_TRNG=1 +-DDEVICE_USTICKER=1 +-DDEVICE_WATCHDOG=1 +-DEXTRA_IDLE_STACK_REQUIRED +-D__FPU_PRESENT=1 +-D__MBED__=1 +-DMBED_BUILD_TIMESTAMP=1642514424.654633 +-D__MBED_CMSIS_RTOS_CM +-DMBED_TICKLESS +-DMBEDTLS_FS_IO +-DMBEDTLS_SHA1_C +-DMETAL_INTERNAL +-DMETAL_MAX_DEVICE_REGIONS=2 +-DNO_ATOMIC_64_SUPPORT +-DNO_VTOR_RELOCATE +-DRPMSG_BUFFER_SIZE=2048 +-DSTM32H747xx +-DTARGET_CORTEX +-DTARGET_CORTEX_M +-DTARGET_LIKE_CORTEX_M4 +-DTARGET_LIKE_MBED +-DTARGET_M4 +-DTARGET_MCU_STM32 +-DTARGET_MCU_STM32H7 +-DTARGET_MCU_STM32H747xI +-DTARGET_MCU_STM32H747xI_CM4 +-DTARGET_NAME=PORTENTA_X8 +-DTARGET_PORTENTA_X8 +-DTARGET_RELEASE +-DTARGET_RTOS_M4_M7 +-DTARGET_STM +-DTARGET_STM32H7 +-DTARGET_STM32H747xI +-DTARGET_STM32H747xI_CM4 +-DTOOLCHAIN_GCC +-DTOOLCHAIN_GCC_ARM +-DTRANSACTION_QUEUE_SIZE_SPI=2 +-DUSE_FULL_LL_DRIVER +-DUSE_HAL_DRIVER +-DVIRTIO_SLAVE_ONLY +-DMBED_NO_GLOBAL_USING_DIRECTIVE=1 +-DUSE_ARDUINO_PINOUT diff --git a/variants/PORTENTA_X8/includes.txt b/variants/PORTENTA_X8/includes.txt new file mode 100644 index 000000000..2d996d085 --- /dev/null +++ b/variants/PORTENTA_X8/includes.txt @@ -0,0 +1,242 @@ +-iwithprefixbefore/mbed +-iwithprefixbefore/mbed/cmsis +-iwithprefixbefore/mbed/cmsis/CMSIS_5 +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2 +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/Include +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Config +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Include +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Include1 +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/RTOS2/RTX/Source +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M +-iwithprefixbefore/mbed/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M/Include +-iwithprefixbefore/mbed/cmsis/device +-iwithprefixbefore/mbed/cmsis/device/RTE +-iwithprefixbefore/mbed/cmsis/device/RTE/include +-iwithprefixbefore/mbed/cmsis/device/rtos +-iwithprefixbefore/mbed/cmsis/device/rtos/include +-iwithprefixbefore/mbed/connectivity +-iwithprefixbefore/mbed/connectivity/cellular +-iwithprefixbefore/mbed/connectivity/cellular/include +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/API +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/AT +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/common +-iwithprefixbefore/mbed/connectivity/cellular/include/cellular/framework/device +-iwithprefixbefore/mbed/connectivity/drivers +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/atmel-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/atmel-rf-driver/atmel-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/atmel-rf-driver/source +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/mcr20a-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/mcr20a-rf-driver/mcr20a-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/mcr20a-rf-driver/source +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/stm-s2lp-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/stm-s2lp-rf-driver/source +-iwithprefixbefore/mbed/connectivity/drivers/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver +-iwithprefixbefore/mbed/connectivity/drivers/cellular +-iwithprefixbefore/mbed/connectivity/drivers/cellular/Altair +-iwithprefixbefore/mbed/connectivity/drivers/cellular/Altair/ALT1250 +-iwithprefixbefore/mbed/connectivity/drivers/cellular/Altair/ALT1250/PPP +-iwithprefixbefore/mbed/connectivity/drivers/cellular/GEMALTO +-iwithprefixbefore/mbed/connectivity/drivers/cellular/GEMALTO/CINTERION +-iwithprefixbefore/mbed/connectivity/drivers/cellular/GENERIC +-iwithprefixbefore/mbed/connectivity/drivers/cellular/GENERIC/GENERIC_AT3GPP +-iwithprefixbefore/mbed/connectivity/drivers/cellular/MultiTech +-iwithprefixbefore/mbed/connectivity/drivers/cellular/MultiTech/DragonflyNano +-iwithprefixbefore/mbed/connectivity/drivers/cellular/MultiTech/DragonflyNano/PPP +-iwithprefixbefore/mbed/connectivity/drivers/cellular/QUECTEL +-iwithprefixbefore/mbed/connectivity/drivers/cellular/QUECTEL/BC95 +-iwithprefixbefore/mbed/connectivity/drivers/cellular/QUECTEL/BG96 +-iwithprefixbefore/mbed/connectivity/drivers/cellular/QUECTEL/EC2X +-iwithprefixbefore/mbed/connectivity/drivers/cellular/QUECTEL/M26 +-iwithprefixbefore/mbed/connectivity/drivers/cellular/QUECTEL/UG96 +-iwithprefixbefore/mbed/connectivity/drivers/cellular/RiotMicro +-iwithprefixbefore/mbed/connectivity/drivers/cellular/RiotMicro/AT +-iwithprefixbefore/mbed/connectivity/drivers/cellular/TELIT +-iwithprefixbefore/mbed/connectivity/drivers/cellular/TELIT/HE910 +-iwithprefixbefore/mbed/connectivity/drivers/cellular/TELIT/ME310 +-iwithprefixbefore/mbed/connectivity/drivers/cellular/TELIT/ME910 +-iwithprefixbefore/mbed/connectivity/drivers/cellular/UBLOX +-iwithprefixbefore/mbed/connectivity/drivers/cellular/UBLOX/AT +-iwithprefixbefore/mbed/connectivity/drivers/cellular/UBLOX/N2XX +-iwithprefixbefore/mbed/connectivity/drivers/cellular/UBLOX/PPP +-iwithprefixbefore/mbed/connectivity/drivers/emac/TARGET_STM +-iwithprefixbefore/mbed/connectivity/drivers/emac/TARGET_STM/TARGET_STM32H7 +-iwithprefixbefore/mbed/connectivity/drivers/emac/TARGET_STM/TARGET_STM32H7/lan8742 +-iwithprefixbefore/mbed/connectivity/drivers/mbedtls/TARGET_STM +-iwithprefixbefore/mbed/connectivity/drivers/nfc +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512 +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/include +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/include/nfc +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/include/nfc/controllers +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/source +-iwithprefixbefore/mbed/connectivity/drivers/nfc/PN512/source/transceiver +-iwithprefixbefore/mbed/connectivity/drivers/wifi +-iwithprefixbefore/mbed/connectivity/drivers/wifi/esp8266-driver +-iwithprefixbefore/mbed/connectivity/drivers/wifi/esp8266-driver/ESP8266 +-iwithprefixbefore/mbed/connectivity/libraries +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap/mbed-coap +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap/source +-iwithprefixbefore/mbed/connectivity/libraries/mbed-coap/source/include +-iwithprefixbefore/mbed/connectivity/libraries/nanostack-libservice +-iwithprefixbefore/mbed/connectivity/libraries/nanostack-libservice/mbed-client-libservice +-iwithprefixbefore/mbed/connectivity/libraries/nanostack-libservice/mbed-client-libservice/platform +-iwithprefixbefore/mbed/connectivity/libraries/ppp +-iwithprefixbefore/mbed/connectivity/libraries/ppp/include +-iwithprefixbefore/mbed/connectivity/libraries/ppp/include/polarssl +-iwithprefixbefore/mbed/connectivity/libraries/ppp/include/ppp +-iwithprefixbefore/mbed/connectivity/lorawan +-iwithprefixbefore/mbed/connectivity/lorawan/include +-iwithprefixbefore/mbed/connectivity/lorawan/include/lorawan +-iwithprefixbefore/mbed/connectivity/lorawan/lorastack +-iwithprefixbefore/mbed/connectivity/lorawan/lorastack/mac +-iwithprefixbefore/mbed/connectivity/lorawan/lorastack/phy +-iwithprefixbefore/mbed/connectivity/lorawan/system +-iwithprefixbefore/mbed/connectivity/lwipstack +-iwithprefixbefore/mbed/connectivity/lwipstack/include +-iwithprefixbefore/mbed/connectivity/lwipstack/include/lwipstack +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip-sys +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip-sys/arch +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat/posix +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat/posix/arpa +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat/posix/net +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/compat/posix/sys +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/lwip +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/lwip/priv +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/lwip/prot +-iwithprefixbefore/mbed/connectivity/lwipstack/lwip/src/include/netif +-iwithprefixbefore/mbed/connectivity/mbedtls +-iwithprefixbefore/mbed/connectivity/mbedtls/include +-iwithprefixbefore/mbed/connectivity/mbedtls/include/mbedtls +-iwithprefixbefore/mbed/connectivity/mbedtls/platform +-iwithprefixbefore/mbed/connectivity/mbedtls/platform/inc +-iwithprefixbefore/mbed/connectivity/mbedtls/source +-iwithprefixbefore/mbed/connectivity/netsocket +-iwithprefixbefore/mbed/connectivity/netsocket/include +-iwithprefixbefore/mbed/connectivity/netsocket/include/netsocket +-iwithprefixbefore/mbed/connectivity/nfc +-iwithprefixbefore/mbed/connectivity/nfc/include +-iwithprefixbefore/mbed/connectivity/nfc/include/nfc +-iwithprefixbefore/mbed/connectivity/nfc/include/nfc/ndef +-iwithprefixbefore/mbed/connectivity/nfc/include/nfc/ndef/common +-iwithprefixbefore/mbed/connectivity/nfc/libraries +-iwithprefixbefore/mbed/connectivity/nfc/libraries/acore +-iwithprefixbefore/mbed/connectivity/nfc/libraries/acore/acore +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/ndef +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/platform +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech/iso7816 +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech/isodep +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/tech/type4 +-iwithprefixbefore/mbed/connectivity/nfc/libraries/stack/transceiver +-iwithprefixbefore/mbed/drivers +-iwithprefixbefore/mbed/drivers/device_key +-iwithprefixbefore/mbed/drivers/device_key/include +-iwithprefixbefore/mbed/drivers/device_key/include/device_key +-iwithprefixbefore/mbed/drivers/include +-iwithprefixbefore/mbed/drivers/include/drivers +-iwithprefixbefore/mbed/drivers/include/drivers/interfaces +-iwithprefixbefore/mbed/drivers/usb +-iwithprefixbefore/mbed/drivers/usb/include +-iwithprefixbefore/mbed/drivers/usb/include/usb +-iwithprefixbefore/mbed/drivers/usb/include/usb/internal +-iwithprefixbefore/mbed/events +-iwithprefixbefore/mbed/events/include +-iwithprefixbefore/mbed/events/include/events +-iwithprefixbefore/mbed/events/include/events/internal +-iwithprefixbefore/mbed/features +-iwithprefixbefore/mbed/features/frameworks +-iwithprefixbefore/mbed/features/frameworks/greentea-client +-iwithprefixbefore/mbed/features/frameworks/greentea-client/greentea-client +-iwithprefixbefore/mbed/features/frameworks/mbed-client-cli +-iwithprefixbefore/mbed/features/frameworks/mbed-client-cli/mbed-client-cli +-iwithprefixbefore/mbed/features/frameworks/unity +-iwithprefixbefore/mbed/features/frameworks/unity/unity +-iwithprefixbefore/mbed/features/frameworks/utest +-iwithprefixbefore/mbed/features/frameworks/utest/utest +-iwithprefixbefore/mbed/hal +-iwithprefixbefore/mbed/hal/include +-iwithprefixbefore/mbed/hal/include/hal +-iwithprefixbefore/mbed/hal/usb +-iwithprefixbefore/mbed/hal/usb/include +-iwithprefixbefore/mbed/hal/usb/include/usb +-iwithprefixbefore/mbed/platform +-iwithprefixbefore/mbed/platform/cxxsupport +-iwithprefixbefore/mbed/platform/include +-iwithprefixbefore/mbed/platform/include/platform +-iwithprefixbefore/mbed/platform/include/platform/internal +-iwithprefixbefore/mbed/platform/mbed-trace +-iwithprefixbefore/mbed/platform/mbed-trace/include +-iwithprefixbefore/mbed/platform/mbed-trace/include/mbed-trace +-iwithprefixbefore/mbed/platform/randlib +-iwithprefixbefore/mbed/platform/randlib/include +-iwithprefixbefore/mbed/platform/randlib/include/mbed-client-randlib +-iwithprefixbefore/mbed/platform/randlib/include/mbed-client-randlib/platform +-iwithprefixbefore/mbed/platform/source +-iwithprefixbefore/mbed/platform/source/minimal-printf +-iwithprefixbefore/mbed/rtos +-iwithprefixbefore/mbed/rtos/include +-iwithprefixbefore/mbed/rtos/include/rtos +-iwithprefixbefore/mbed/rtos/include/rtos/internal +-iwithprefixbefore/mbed/rtos/source +-iwithprefixbefore/mbed/storage +-iwithprefixbefore/mbed/storage/blockdevice +-iwithprefixbefore/mbed/storage/blockdevice/COMPONENT_FLASHIAP +-iwithprefixbefore/mbed/storage/blockdevice/COMPONENT_FLASHIAP/include +-iwithprefixbefore/mbed/storage/blockdevice/COMPONENT_FLASHIAP/include/FlashIAP +-iwithprefixbefore/mbed/storage/blockdevice/include +-iwithprefixbefore/mbed/storage/blockdevice/include/blockdevice +-iwithprefixbefore/mbed/storage/blockdevice/include/blockdevice/internal +-iwithprefixbefore/mbed/storage/filesystem +-iwithprefixbefore/mbed/storage/filesystem/fat +-iwithprefixbefore/mbed/storage/filesystem/fat/ChaN +-iwithprefixbefore/mbed/storage/filesystem/fat/include +-iwithprefixbefore/mbed/storage/filesystem/fat/include/fat +-iwithprefixbefore/mbed/storage/filesystem/include +-iwithprefixbefore/mbed/storage/filesystem/include/filesystem +-iwithprefixbefore/mbed/storage/filesystem/littlefs +-iwithprefixbefore/mbed/storage/filesystem/littlefs/include +-iwithprefixbefore/mbed/storage/filesystem/littlefs/include/littlefs +-iwithprefixbefore/mbed/storage/filesystem/littlefs/littlefs +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2 +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2/include +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2/include/littlefsv2 +-iwithprefixbefore/mbed/storage/filesystem/littlefsv2/littlefs +-iwithprefixbefore/mbed/storage/kvstore +-iwithprefixbefore/mbed/storage/kvstore/direct_access_devicekey +-iwithprefixbefore/mbed/storage/kvstore/direct_access_devicekey/include +-iwithprefixbefore/mbed/storage/kvstore/direct_access_devicekey/include/direct_access_devicekey +-iwithprefixbefore/mbed/storage/kvstore/filesystemstore +-iwithprefixbefore/mbed/storage/kvstore/filesystemstore/include +-iwithprefixbefore/mbed/storage/kvstore/filesystemstore/include/filesystemstore +-iwithprefixbefore/mbed/storage/kvstore/include +-iwithprefixbefore/mbed/storage/kvstore/include/kvstore +-iwithprefixbefore/mbed/storage/kvstore/kv_config +-iwithprefixbefore/mbed/storage/kvstore/kv_config/include +-iwithprefixbefore/mbed/storage/kvstore/kv_config/include/kv_config +-iwithprefixbefore/mbed/storage/kvstore/kvstore_global_api +-iwithprefixbefore/mbed/storage/kvstore/kvstore_global_api/include +-iwithprefixbefore/mbed/storage/kvstore/kvstore_global_api/include/kvstore_global_api +-iwithprefixbefore/mbed/storage/kvstore/securestore +-iwithprefixbefore/mbed/storage/kvstore/securestore/include +-iwithprefixbefore/mbed/storage/kvstore/securestore/include/securestore +-iwithprefixbefore/mbed/storage/kvstore/tdbstore +-iwithprefixbefore/mbed/storage/kvstore/tdbstore/include +-iwithprefixbefore/mbed/storage/kvstore/tdbstore/include/tdbstore +-iwithprefixbefore/mbed/targets/TARGET_STM +-iwithprefixbefore/mbed/targets/TARGET_STM/TARGET_STM32H7 +-iwithprefixbefore/mbed/targets/TARGET_STM/TARGET_STM32H7/STM32Cube_FW +-iwithprefixbefore/mbed/targets/TARGET_STM/TARGET_STM32H7/STM32Cube_FW/CMSIS +-iwithprefixbefore/mbed/targets/TARGET_STM/TARGET_STM32H7/STM32Cube_FW/STM32H7xx_HAL_Driver +-iwithprefixbefore/mbed/targets/TARGET_STM/TARGET_STM32H7/STM32Cube_FW/STM32H7xx_HAL_Driver/Legacy +-iwithprefixbefore/mbed/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8 +-iwithprefixbefore/mbed/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_STM32H747xI_CM4 diff --git a/variants/PORTENTA_X8/ldflags.txt b/variants/PORTENTA_X8/ldflags.txt new file mode 100644 index 000000000..e3666931b --- /dev/null +++ b/variants/PORTENTA_X8/ldflags.txt @@ -0,0 +1,24 @@ +-DMBED_APP_SIZE=0x100000 +-DMBED_APP_START=0x8100000 +-DMBED_BOOT_STACK_SIZE=1024 +-DMBED_RAM1_SIZE=0x80000 +-DMBED_RAM1_START=0x24000000 +-DMBED_RAM_SIZE=0x48000 +-DMBED_RAM_START=0x10000000 +-DMBED_ROM_SIZE=0x100000 +-DMBED_ROM_START=0x8100000 +-DXIP_ENABLE=0 +-Wl,--gc-sections +-Wl,--wrap,_calloc_r +-Wl,--wrap,_free_r +-Wl,--wrap,_malloc_r +-Wl,--wrap,_memalign_r +-Wl,--wrap,_realloc_r +-Wl,--wrap,atexit +-Wl,--wrap,exit +-Wl,--wrap,main +-Wl,-n +-mcpu=cortex-m4 +-mfloat-abi=softfp +-mfpu=fpv4-sp-d16 +-mthumb diff --git a/variants/PORTENTA_X8/libs/libmbed.a b/variants/PORTENTA_X8/libs/libmbed.a new file mode 100644 index 0000000000000000000000000000000000000000..181049ed00314541df71e0d8eda556f34110f821 GIT binary patch literal 4708024 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 z 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

y4l(Q&_ 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%0DY-67Uk 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

}dWfs47;7rp1R6yL~_Z0ZCACcc&{4~EF#ZTwE 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

KBp?n zIB9p{+l`NY`D^8CC@ivGl_2HW%NOrloGY22N-QgxfZS15Vyy4I@6-9wiKp7!s!W?>67fAx45rp>)Y1y6aODy=?D!J@dIiOV?#Tx zrtXS5z5m%dU~1)pB;0zQSK$oY)3RtXX46i%+Z@-T z0@vnwHI1rocw^DZJFcmjtcJQ(e7g}b8}5Pot<%=Jo45Nt;qg_;Lbj{Zt?=D!)mOCg zgGl;jPsN83O+RE=!0F-&d#N0HRtJyxI;T%FFmLX!rMz1Y^O$m z1E^ZCHmQ9GWgj-#DRMUtRU|#W;-zxAICe^c8jiYPEZ1Iwr%9+y@Z@2 zyjBvSl777nZ?xgxv*EjeQ{HFzxYzM96Mt3U9_1+$=lFqhjBQXQh}eiVZgOpYnRvcc zEWG1-x-|;#3&vMjyL^#Yj*ks+t|u99&E9DAi^zkwS&cP&A%i2T>iU{MWw3t5s@j@W zO3Yw2*7D;@RKSUMs zSW-N&EXIjLf&5M5LdK*>&-hFyjYR4t8i_PWG&1*PBpRCOB9_RFoMfz)L#jwuSQkiOJwjj-u|rmdj}S;U>aa}c$-~c$uN&|Bqk{g-)Kf|SR8uT|a=$SZ>x<DJouzM?rXKmn~#nxict(8UcgQGwaU91@>qXSUMfB*kM$${ z3o!z2fkyg?22#HhdOIJ}Qi9}r3SNh7b+w_GG2>tBXfx<&sD04{+velOw!DJadG zfRsoCDtQQ0WgHO?fiDCDF2CgBqyHFBj60BGup61=H!&>i_+a-yzbe<}ZdGbYQN_oR(gUtpJqD^1ufiKPj~MS`4E;+OJwpcS!XSKM$HjzIOW1l+Fq^FRVFU48%Cym%g9vGuh zb8eqFk$!F;IgyUej0L!VHjy3=8QHjhHj!>FESoa8pEi-s9$FkUtl}rqjmkxGXc$o> z(&H&b9u0f;6Y1!LSwKTBNu)E^#6iPsc_N*&c5%?KgENti&YcA`y!e?&?`NUXfBkKA zt{B8YL+g@ge}I^8Cx;WCn$Y@Cp4Z0jjh!bk_`S3m0}ZWAqWoNO-iizcKU<+VXc&?p z1vKenh@`nWecuA$PrWDxt3>` zq#5!HsEvV!5l5o`3zbhzs=?0@NgOmhx|Yaar1WCt2r&4I48;7^(9=!iAFAXf@Utfz z2Td7f;~y3$LZ>O0+31(q=p$@&wlHzfl#w?2$T$%?4ZC;}{X5!5A8VsqNBFcq&PE?+ zvp>N`pJ1b3ZlhmrqhDd8v*#ZN4J)LH{+|>lLZ@Lwkw`DM(I?yJlWp`VHu@ABeVUCv z%|@SL!)GcZ&HO+D+u8~n{x863#FE50lEo&@nvri9vjriYJtm%a2%2=(+&s^4i-~&$ z-d(xF#F_JW`s03D29)CKrA$+Hn>fc2y)c9Gq=~dJZJiyCm zUwLJmAyEXe$~m)V&x|w7ojhsYyoyQlC&i8CeRE#r{Asf$&%SDY+;D#RoN03^XU&^Z zIcd(cu8gN$IcG*9f90HVe*z~BDrZicH-EClhY(yjZ}OBl<5d-Ngw5DYoOK>f%+m4iylZ@fs-^b)5?X_4Yh{kc(huX;`DQ( z&}6fiTcp`j)?|(wTX^H?V2N~CO*}~?=f*S zpMs8wEw*=#D^2`|CjNC3f5^n=n|PCn|BH$L$ix>w2<7ZH&3|B;?=tFl$4(<&96QYT z`@R{k_Zer+9QPXWbf~8i_~e=NLfOX)YJ_@YI^dr8DA^pC1(cXa-E(i_XnvM@@{r| zlCe`rO;2178?fav*eEI8|BW=`W|mr(+1;n-vF;;I&%(__YN}eT<+L)@Ib}a3=7ce~ ztR!o{Qhwh`Q(fCdy3xCKg3-ZUrJ8+gCt14LPD<%%JJHtJ-%K|9y9)-n_d2bo%xj@` zZ(Y)5$J-IVvG2L%t^0pY*3U z^-Yb!3)%SU5x2gPBOcvs{P?D}6hFF|mU6MxNR)dk!q#$e+qAst$9))aIz9_o@q)l( zz1a??t9Ib_n}UbibV4QqLCHrSx8)Q(-BLe1)+X>CL)cos?TCBvQ%==y8xpMbTV}!Q z37V?kiwIls+7KUspK_}Ib|b-xw+488erJ1oJ0gKw(*(Z9Xvz6znvkU({*O$=AR+om^0+N;tcupGvr%+hI|j5Az#ZG^8M)y`Hq2) zV-c4{y07q;@3E9qQg7dn|aPEqEn1JnuK)jkV#mS@7^koT%S-ZFrQm?y9}hYY)ox&GG!u_a=a*9vB zvX^RghE~P5$q#*}cR5N!fXmvoK7Og+6-#rb4TtT$_JF=1 zlJ9ZucMPC3(MHgk(%t)Mxh_k}_GIm*t-LHPq-W}z1GJf!)8-1g9(O(9SkD}eO|Hl3 z7wMs(V~}AR@5ub_5wEss60PagOu8SKIkCLn4(eXC@&~&#yZjONRL2uySVn7KDZlR8 z{{6W7OV+wHk~VdPZcw`G8v=Q)D}zc7iL{qeXfG#dpYO_@CWhs<_R>aaVt8)rIokP} zD9URcpcU(GZAXjaiP5qohwozjXZl*;J{laZzbixU1$~lk)Zeu|wp;i*O}YE{F3(TV z11&<@1Qw%CwTU5njyb-!=a}bvuLkd49gbf*^X|%5D<{rLe|Tc$xzo;_@lJfzo=Fww zFAK*@Ycd}3REVOC))4BH(ORjoT@|t(UTym%QMk7~clv03BdiU64X#!3Qh~6yyH?lo z_u-B<$C$m%MK!!CgMv-zV}rYKW!T#-(G9@<39Jk|#vqUPKcfBg54zA3ICs|{jyZe~ zAhCS~D)CkNc#9c6l1#O)V@)Ce-P z7TC(o=}xnSj2*_fG}_yJYQFwxz}*ThAZY*O=vxEscAuUTbZ*buor9}-{cllDHNW#N1A{#}&z&gx-lb zD)Cp$jHIK_iXylQUdNa>n^y!rhaN`FB$p<&E(B!lV6&Me%mUVB{_ZvFVM%go&6fTP z2D+t=hL<`TQl>AX1^O_%oqlp>PIY} z9!V;lUt*GudLyay9@2IS-v=1ZdIx6xdfE7U+4xh@s27r&l4axP9WLpp=aI^vE&1_j z#dO&!AbrZPrSj)W{wEV$xrq=1lvzvVx67>M+30x^kN1DWC3}W(%Alp<`am0fpjocrxrEn7_sa701eZ4vVt_JVsr4(c(S0_$&qg0&qYtsshuY}Y zH+wAqJRAKyS>I%<&$HnTv+)nJ(Ti;KB8hiNf~zPIVt_JEsqNqJCVwKtfD5zunv@jlPLK3r8=X&ZN#}yr!gXep>xTpJRJ^fCW`rm+HOEZhn&3b@ zmESHyb)hZ)cT#LNbDZ93;b45dE&hZp{tDtOn|oKv0R72~b7p2^y*UhDIpTe!BJdeM zi68TG3{WqM_V1J*myLhpP5KKmo+~aV(R9SS+N5*lW@G+W znQ^Xc*?9ALs~P7?k&XGRWR`}@cz?m?5d4?#QnN8Xf60jHi2s5~uR%Clc*W~BI_=vr ziPtw9^YJfc+%Mxk@wJVg@A;U-l_MK6l9X9W<{v6b&A3<6&l6Xfan8JK$Ry4~TshY7 zW|Llua5iKL@37GuOuBLXMv8wi<0B-$Uu?7SKWWDKe9{Nw|JNyTjBm>Wh7<}iOn59= zx@ggCSmmf$3cIg0W0hf#y1J!RuozoYU0Yvgrs4B5G|RvQ6Q{MK=GWC$jPg^8$i%5w zT&03AvQ<^DSJc)30rp|*Op71}+-zwnwoY0LF|CN;$QD4t(pJTic~x@+4T^M4F;lGu zNKkJUR#gicG`AQz7!Q+?|a)p4OkRTWE?n*Ct%7=~R{`PJ5} zs80RTI;jI#SpluVWWyKDU$T(J%+YZs4w7%Ju3ebuX&alYfGv&cYZgdajjg;5-8%=0 zkOr#^&#teYy@W$Rjxu=|fU;(cQv7IXTvE5r51dBf>G? zWBttx8uqiCcnPtcbZq-}(w{7(3^Q?MIkSy-6Hb6}uG1&}KvYWBf3A_932@ej^&Uze z8-}s;tDp}DpZONi2maYiUkD8Pz~MU0^mN9TnCUgfyP3>dQ{NMGE(4i2oB5ZTGAdI{ z8I=Ht|BNh(JX6ECI`)MlDMexqi zu2|x7A+pACH~UX3<6@fi!%yuO5R~(rzH;X6TIwj0PrXXydSG>=(Q${Kf#0|Balc?M zmurS{s@yA(VCB0Q@iB@CzT(4@lJXwQ310z^Ya;RZRITvVA#BBa0&#_bU?RK)VJqL0h;t96oXYbM60GIs;v>6i2bR}F zxz8eO#oL28*IwmVKe}f8tayVhcs)Q?>{s>+?=cGRF9=)l z;)r*JcMR#)`dwndW4jfe8(>yEeqWmfx^k+$WU}Iw11}FutRMSZ;o0qDFG9W-6qw1! zXkQ!NjllCGop`zUDZJ6(!+&|-gD3alELS;oeMj2xerRbg@1+Xw3L9Q20C>HWQ|+B> z!`o=VWBCe?-+VGwOUX2A$wYS-Zw-b2k`g$#Rd``pvME@0Hf$M6$ zQqOCOHVS;iQ%?2EF@b0(aWq{Dtx=URhYkT_xOs#7pEqIhiVg1I)+TdCMkM{%RNaODh zwsHr9&pMu2Kf2d#Ggb}H#XzjkZG$nV=7P66+$=F?1-7li7)b7zg z1*hTsyS79kpN7ZxdGlbz)tGat;gcUWH^K5&w*%|H=rL1_^c)K4-^~}tvz+$_(%y7< zyLE`+U$!wV&^RHOTVCGaY7kz03Eh>h_3-vEPaG|c2;ZJ#;=-~zhtJ(m-jG)JazhPx zT>jnh+?no&y!f=-EAQz*&jap=yF5>m++&?S@;e$PG&m){z}cdr0Ig_s$iG>;*2uc{ zdhn z{=Y>XMNY(ect4Mdq7QMpDO2B%rfDBUn?HT=E}n9bjx!AIZuYl%4iv;nU5=umZT#8_ zTXy#}f9ky}-tM~KjsCQ2F(l?n8&LjKbK3DN@o*sA+_`sU;Fz>h=hj5w2W{!)!k2TQ zD>yXfN7$sB1h~_q<{!d3cWsP3`G`Fs)Ij#KpK-%$~w8GYL8tb?xF2WO0 zdRfDsc#rj$M1B_+;*0zrHRCnn`7gEKA9ZV=N5hF3DZ~ndOLn<1Ufo*%gFUt1<%b%7 z70BCLaC^3=NBge=nQfuln>?O<6?(UR!^*u{qqN_FZ>f4!!;l7Pz2j@)^94(GcjiCb z>}$*^_caXG--^a}_0-TaL+_5<5g}s6f%EjC!N24iZFs8r676_&m}bOy;;l;)1?!s~ zV_YpYlltjjMET{kRJMQX?T+HDb=L2`BGRoTYj>8`z0uw1)P3bm%@|w5KWldcKS4hB zA-OYnwOfIsUmXcFx*D7EeGS6r3OXB%QbmMUI%_vA6w<~>-i|&yoQ>TZHwOmp6+^dc zp~mXQ3SHNK*_q*K>i0;Xu=QMRba`p{#c~vd8ZRsVX<%VvVe4T1x$;6>-AxlS+DGa` zTDC>1W4&QbFV?`*Iz~h)8-2iZ;H&Y}mIaMPGF+thYY`*PL*VlRyW@FTJ&&h5 znO7A4t!;Na-LExX*Z01F^KiM|zdRZpj*|mPeJt>9+dJxH5Y#gl^?WW8!K$<&aQ0rd zGq**~nuaAfW#kv=tD%~wGs7`P=HAwCq`n;%1=%kjM`y&o_8*IWzKbY*HC2APb|Av? z9gX>Y?+=`Hcw%Fz{+IkG1HW&5s(FYu948^?m9r+5{T^t(GUC^7>+9N%o{^FwM5N?I z7QTU(>^e)!)P^;Z7qSyL(~%*5^De=N%FyubzGVnbLoC@{pv^exy_wWB%;1ye>^dIx z>{4}_ENc|N6>}d9=xsL|->zBO7g6K;xA&ut8h-oE*_E4Ui65hlE!iAc)f&+ET}?>= zUfo`rqj8h=N#28jG%fwmjL*KVKc{1){z?8%o6m|YY}^ruAG{XkB(_Y%Y0HB%JAT%; zvDrAY@tnA0ykqRjz_#WX>d4VRw6w(xD*cfkJ&n~purd#T~M<^F?9E(ew$CFTc1uzKift>TlVi)2^3>?wB@pe8q}Jd1bWi#S8{PVJL;5HieUz?2?aPO0`Dve_*>wwf##8kYd^VMF zsli=cT~~E;@;fm;-%A?4ZP8TioT}Q{^B31FO4_CU2i7on+(!~qe$TH6)z7~LYT}{F zIumyhY}P^wU~W}y)sm2D&cZa5VH8Y;syVYmOY7>Z7uzdikI$Z4T?-VM(>&(XsI`%F zdf1wQbu|nvsE}dSHCYc*)#18m9lEa`7C90hyUbz}c6JRjyfRhxgSB{kzh9#2IoAk; zD$EN3IfwZsaZZ&b5~{AbO_-;Zp(Y{3BskL($7{(He)__dt)D+{Y4uXGt9iK%{`!iA zW*;#$J5lVS>Lq4+sJdcNRh{ZdHj;>n(Hf>$h)QRj7Mo=tEI-)E>fm@={O1Y9iB=~E z#_Sr{Nyd4=9KRgKnKR9A)L3LWf1Fns@9UiSmhVM;AYM9gN5yaAxHWiBxBZ#HElP>!q*^2vJC znf!?J&YW3qw&xa8HsLm-yn$5Q{ikIGjPa3NiIN|9CB-sK64T817A?v4WyzLX&P2=V zV$GSluGljsmOINAeS3+6+ znmtjiZ?<&HN@t^(Yo0CDT>WgR<~n$Ks!fDJ_O-b-N`V5IU>WjiW&BTz7ySQ8w%}|m z6UuRYq0{igl9~99hb1)e{Q^O`52GKz&-!iXxjx1kT84D1Y(W*`R=hh9=h~;7Dt8qU ztbDH^K3FlqSA1cFt>t#0T;5AqE`7J@KLX#1_aWk3dzDjoyOCh!>yHT6T;&vB3lgm5 zerPGTJ7}uhKO=0#EBFSyy*51RnyGg18A;)NV#6y0-Uy^Ar|Or5bZfbk+09Z+@D(4Q z8?5b!qg?W_|LCi7huZM?4ZJHnw$F-}fg72^<2_B`1#Ecrh|d9CIaR;QYQx9Qo+3M4GjJCBWme0`WNh6&~#}FuS_;@1sIjBd(mP-#i=MdP{rr zz^w3A*zihRsq;wT{lJE|#e&DZiNfPIe*90=k2>sKU5}@1eEjB39OYEGd~UP$%XUk- zd~2i1RkGQtUmgG+pZ%0mcz?2$yZsyL$LBw5xqB?-dI74+ecy(+2Y3alQ246c4jWz@ z@YFmazrv#qDgGz=?>*qH?gH;~8{Pp6-e3z}Z&bjFr=uWj*Ah@Z-9r@RUrws^2W&ab7B?>c{78YyV{ckMoRp+{-JxHMaU~2VPg> zew7W+3p}-6`7L-4+wgt|Joc}0AWQe44bN}E8v_nizg;%G6Tsv3S5DzYYmmxqqT<5$8dyfY=;xM<3J=?X6uxC>Z;d6R;*&BVwH3FX>A8XzUUZ?? zaNmB02JKS7C3N7sv1h;K%NfVAc^(>41diH-~XbI<6Z>cxwzmf)dk!j;oTRn+55qe`4% zRcFQjw($SyXAd>zxsG);<}X0Hb+fs%g~i)X>y`q*vsEHjrp%Y?}49k z3eP^~GeDTAnBXfudFd#tUw3A9AO3sH^LnZ=Z*<)M?ot2WV?K3XpvJO&%xC_?F@Kvm z;?WJGUm~7|GP*0|9SnD|0mXYd{sKrz0K$gzB9%c{olT~ zdCPctli1rV5c5TBSD!0BCxRt;9W? z)=JVl{OG>4SL zjPDve4YG;D@>+XB@~foHb*CsQX`isXPs}ZPw9bgRd(DWsdW~se2~KThOLfd4vODso zUn5&`bBm++rxWAtMY=2E3+7CHZ$-ZTUa)_V+`=2*{in4*3G`^sip*GkmnUOiJI-W& z0kVAE+s@Z#L|&NaX?tCNTS~$mlahZ&@z*1cB-+k;_Kn;R>nV=WuQxktY4fFK7bLt; z(`mA%)7#6I-{5iWFM=HyQRHuTvQ1KkZE~A$zN^AfaAfVvE1XL!?+h%hTpp+u1EdKP>3-tQ~*=>jQm!hU?7a8I1vR_0`^pzwmH+IgtE+wG8(SalxAoK2Rbphup-{dk`g3cyexhJ) zv+%vvnxh5ohMk+;lnd>MxbE#+-q;-ZG`%|Kz&f1EJmX|~#h|;5c5MGN{jTnNIUbxC z50r^B>`9U5<0x$brBBV;)n9i*hBUOUU&8Ls`;@$HW%XFbGW)fu!UFLNNMtqu6b05!gT!r)Q0{E?ieIQ-tkmn;u9Iy0eeghv>pVWA7%w^g>|2GFRpdcPFCyXk#+Ztixd{EZY>p|&j%bBzh6YVubVpYRC}iG zgJrJI+NbEn@K3bkil>e17!6)A>|#^edejtemGHfCtlJnz$&pH2gU~STm1Ad%;GAvo zpub=MQlxyd!xvn=Ek4=*N_-P+5-Ym!M+m>*O4I~ z1V?GTJGd^yEoGdDIv=$!w;JAYa+gNuo!lgZ-CfvrRLKvPsoO| z1>+%8-NR9;jWg?%H%Zp*o|Ge%jq5}kSFIVl42f3c5*eoCuV^XR4QX-xRg6`KyrUFq zCm}CPIrVVFrPoEeW8|{5%&A_@2n~r8={Y!AvY+lkZe#s(w+@G`ufrBS4Hn!3d3#Lt z?-YXv=mpxKmfDE_g)Cmn*6w$%#J#Tjg3kP{fx)f)A)WlX{@1Ag1!F8RZyaMn-kH9J z6nx=@?GvW^VTtR8_R^^nruEa$*B$87+3iMuDZaetyUF!N#SgS(q{KJ1c+;otyD>6I z8>5fX9T&acEWBd4)}9kFPHk8D{5!T4h(Si$jFYP?x5Vdo2Txg1`E|idwdn<0U<>S} zdj?H$h6YXW$Rwm z&-J)rlP$wlwvs(ssQoyazu?#TYtaLFS|9DO{x8wH21TOR-ua_|d#|VctOZN^-3|Hn ztOXZo{`?&6P5m+3J%e-c>#uQ|)7y*LWq79b^D$Y(2RlS5Ti$B?^>Zb@^X~0p*adCw zA_sO5quU>?&TlEWw;6YfqBh?;=Y}I|9UFWDDi;h|EH-#C)>uPh-udM^la;tLj+A3| z1g`(qzyLXBgqOAjIm-WP8RZ{B($gMMHjXoSvxM`l}H&0Bm@5)x&C}+$r+2D zbGh(-H}3Oh>(^sv;Vz0pVjC!>+ z%u|0U`{4BXz&@gzEZ3ZYt!20`X5p$h$l}kBTpZ~m<>rmLQd_6EMcw(x z`B^jzGlrve*^brKZShqzZ@pdkR?d4n;?TxuV*X>3(zK42=hOS__uacMzACr_J>I|7 zQS7^0gU*q6em>;Uw@>Qnci>LZBdri4#i11;ry=Lw5$$=wiMC(NtB$$TVpup$I5TvT(3J_FhYJy5Us%A#eD-nBU}xNYmLp>+qL6J%ZULhGot6IvNs zmygwuBawRnUg@pX`=A+vE2OQ4t_)L(mx-b`+po~}MoBr9SpV5?C6Mf=Zirm5+ZrRP z{|X`w*djDep$%8ll3t12kv=)^i>Mg>ImVv*0CbTKRL3#}bP9@2wTnT8&^uy39+T~g z&1iqFZm>7!UZ64l_D6ou;V3@bydkg(IgY(4h77theONc_u@9%G?;ocZ zENIFvELzn{?W?)V&yHoJpVQ_Z=4|r}D~|1b=z7H$G>-qbR4Y_c}$x}7XFVn{~ ze;GS*f1vclQ(@+E3=LI>A_WV^=}q}NzbN%OI|I%goq^uYy+&<(ce=1^c_OUJavorN zoERU--SKJv2SO{%r9xM(&b`ubPNe&m37IipHO;c*b|9vnaQ1=NFfN_cDLU z<*v^6T)0-=9>WV;dlam_aYN~(&%OrcW7y+vgEh{b@yP;L$6s+D_Cr}KvA=U^lf?}g z;pUYAj0R^3;sw|%P4RDw>t3VOQBlW`5z&qDt={x6oy9x8jD7N8AmgAx^R^%zV`>%t zilKpMH`H#{Ge*zGioP3t1ATB))OT0qT}O3Z_00j_t>Zu2_w>H_5B)=KMUTzw2i+d_ z%Y#!TxU%e;axw9$t0x3NoeU=J^69g$opAZpvqvX`V}wMI=`wiv^hx5130GY`dqUY% z!BgT4lGx*Ly4-2$9>ZCiCBv@t9(n%YG8y*ZFTY`(gP#{aJ}UG5Zvek(_(2TNIB)e^ zz6Fd1pZP7|JOtCeGjZg!fATW`?vF|LU-2El`reseW$^h$mN64P^=SITpPVRC-kK9J zp4*(7KV7~*XC3(s%9;48ZDgTdOe%kd#LrD2Cbs1=g?cin{1BM5ING>OrT36{8xuUK zRNA;qO|gENBC-*{D~ONlpIMq>eZz3^9yy-QLiSIZv8UN^7`B8$&!ddy_(egl+Z{z z>eZyutzTD|-)p0LlbI3XImoH`2ifQaHhO`L?z7Q-Hu_*2eXxx_#6}-tqn~G^b6O`I z^>$M0Uns8^?S&YwPz9tDI4o%zu%Meo;a$kR#J+)6#Ll z!fqfW82y<@x+W1~z$LD=(XX}9XW8hpZ1n4FbO`=ioC{hA@_HuH zu1|y*aETkFJ_5rW0}jMf`EMX8;ardmQ};@P|3(}CjR{@`T;lsS`uA=0n{4!(#G@t$ zFNq^@D!q~D!iitMGU+`feYP1>^q>tdXrot(e>GFMM{}fT*|EMMTmF!E!{i?!`SA_R z;#{K25@Y_kQjbn0W+8A?Mc^}j96veV;8RcU6ny1K=l4s}xrS3uFNYD+k*;i8Z9$ke zb1C1d9O>V&#mf+9689gps7*Oi#@l4Px2R>rbj(jVP9{N&2>gA-kIgvuG1=IUD7nml zjOU8yOuARb&lWG4agHPE=~13iIpQBQ=?v4xZq$q$<@Fbzm~r+u_4KePB^>i8y*Y#b zT+s(~7Gd<4SLCO}2MJ$Fyda@R$8{ka)|f6d>D(!1LsENuN_>c*EiL6(zOsqLol!O{ z;w?4#gQx`c{2FZh8*TBQ+Tz>I{6>9-i&xAz@7&qAU%zd}AwVCS8+a20<#|~@BVHybx2qiUZ?wf9HTjM4GD$pX#utG%8~2M>&3IVGr-^nm&XqJ9 z>;He4ah}1IjrIN`_{y=ouWj+OERQ6lkFdo9wm5Aau|0$F%f|g+mPuz?AFSUsW}H}k zL{RVyBRYD0u>P%0iC-f&r^K%lPo%_WiI$W&)@v!O!;iR9&5|0BOR8?gvAD1W3{^_T zp^s8mHM>qUkQ4(n3d>Ce?cuQ3m zxH74J{^F|IWN3B>I(W<}tHS{8_EyiGYa~|H*1>{qN}5DR8Ai4`=;l|%Mk%waYHQ7du?_tvX6=GkLN2YDgPxjQ8@dHqfn`>swkmWBDj;jLY)SR4 zGE`SJ&!YJ$TR{dS*BR+XtRBXQs}mWd(vwu+fi|m5t*D(ReU@ReL6VMnS#kOmAzpMD ztf@|1_+_wDT~}xHs9s&Ya5h=z*BRraYAzIac_9|p)mgd-%AQNALdu#nuS3EJGp$|M z;&K_oq-qHaZo_o<+(i}h3>({Xsw$VxGX_%PQnN&Y$V$Sx_53Asjg}^rlZ;x2DreU$ zt(|9JV{}5 z+}mo5;vkziZyxoNY2%wS#h7XmA(19yatg{2w3kCw=tx|$rFGCU#u%xPgt--U_4SL* zac|C5NvK;?eQSbHvuHj{bT7g6fHmDJ<7zLjs;$OQMawboYpW}b%GFjaTMXV>7`Co~ zne&R;(~>D^iFw4XSy%;*MNpKMF;$vHcRFF8o7`+EN4;@1>rpDTtL2rmXj?OG&W!}U zvU({7QX*PEKeVvUcpt4aQS5Uz8TuEQ4;u30jN?`&GMfzj81i!|9Qd%Q z(~1on*Zj;!a1Vj++#&?BNW6#W-ywt-e&$xgc0wi+YZ(XsE2RHGh}YvRF66tKfvAtHAN>C0TLujHnU5QKHmnc#8kvt7_c)d}nDM8K_`qF;t<22ljQ4%i zmA#Vm7Ng#oI}KZ;na>(~u*_czae{Qz^Y8RgE}!>VF6D=LhWjk~sP~QZmmB3fH<8%30Rl~10`A~%9UuF6a(SK3MJvsYx58|wk z>`ySi#yILJ`xEtI`2)cx`xVS?#4}$q>j$6r$V_xbzUf~ApZQDa1FxJut`qCc^b-1E zv)}h5`@0b7#N{4@{ZGEkS;jj=#wVL`?ui($p%4CB%(!gdt3vz-<4}5&&%P*+I&*BF zmwp)iMgMN#)Bg>A;2(&_D_{2Sivrd}fP?|AE%ISAnM6+IWT0%{$~Ed9H+SMUZ&$gh<)_m#5vFCpv=7(U-b7uj-Nho_}uLbgO5J?`2hX zee_QpKFiH^!AE(Bip)P4?RKs(^k@eD35jsdL&mss9yaI6L8HI$<;bApg$Ku_6Mly2 z_b`2qPp0RZexB*~H+`?^4>tWm)BmS*)Omim)Qjf&nb^uDHG7%d#f~nOL2i&zljNo% zHK~$Yqhw)>nm71VzAkn+iQUk*a#{-LVn>vk-P{|cCf3VcQfgXazjRu%xnD}Q3b%B* zYdVb+<|<&$BFV_jQ!*yEP{}B7xE3n6Q%Rz^sY)iutyOA)ORCIGR+6iWja6zMwZ%$J zweOyifE*g9?V(aLTXs{a1m4q)ebwpd%9?-5&{TV^RQ3wF+p?v}J*TmqN~LtUBjfgf zBhI2$Z%hSj&bj^KNeGGUNGhJ?0VS1Sw^m@zt<#D~?(b6br%pIqHe+*_njyJ?Oik}{ z`haB1w%Qz~GIIl`PA0&!)aX&8jS~mhY|Eyu%fw{YR@T*xVh+ouP1+1# znssBBNHn%{mM9+vQ={^UFqvd-9Y=8&EX$G)imK|eaPxstHn6rj$(Y!KTDfa%kCgUY z$;Zq8w1ESx?fvk>Els53N5}iB)$u+=HwZuS;r1k*osTrS^YG(6=iB)F;IWrG6KTrv z{zb?8b~pS=@uRzD-DuDMwnsTas*wUx)Z3G{-Q3ofv~k5b5M{Piy+B;5PkNS74LoEseb7Ln!@`#!dAQmz`GD>${{M3B@kMC^R4&_w2EjB*t&vwQ4nvIX|e7oZN zcNsdBB~1W5ZK_&C3nQ+%gvct8FIzR$pC9am$0$?G-*psN3R0vN1`YqbS< z)^$ylJIcoQ9QcCFXgcE24F{jK+)Gey5b3;bh4`s*%WZghX{r69@JelX4*`$;OuXS1 zJoSx2jk&?VBV9SbNXKs#*7i;ZAD=OmQ+#*Y%H3uucO;lqJ2uD>r8&1kN7@WLrlxR@(`_zW_8-R6npE+*BE4Sc%$AZ_}mD=8Y z!0T$A><&I_{jRX!U1Y%^ z@N$PFukQp4-cN0Kzy1ci%{ILL7Q8YG9@iaf{q_Kl@3NFr?cHg^8w|V}FtNQ8@l);H zZ^Ju)LDAKC;Ws$zc-d&F-y{p(F&o}VWEus!au~+aePF|T2zcuHUJedbKL-NV_7>o# zu*k%qr||xV4R5EVep4-YgKc>0ffpu_=~ynE7XfQ~UjUvT>FmF0_>qs}`CyNf6M?Sh~HoUKZw*~2}-*@p-c=K#{tFX8X z23GivW?FRK8`=-P<`pj!Dk%@J24Ktpm1CT@gpDWf0GT*4?GXjl~d*Z zz{XbsKI?v0mAl+l?mm<|3t%iagr6#Rqlw44NH+&~=Nduzm*w*JF!<1SHHx$nd}_=x zP1TRS>N}=C2fj9RAjkA3{8%pgiG8B31%hG?HsLR;$|J7u`0Qon8*!cxPoXZ#DL(ay zA0HZ}s^-kmj*Zpc5}+;(G9FHO}qzUyT@P21GiLuvuMJINC zGS;b=lx=D_PdE53(Zu=f?H`)@1o2(@QwOf`XmcZdrwLzCxMC}+bri&9Jps=a89qj*Q)vqPl2<(VcpBjqFEYHGfIAauX(Dx{Wh-R-Ln^BfZ(ynC={ zjdNUHd13fXi~d5^uAWo-Ez5z9lv~SgE2GBCK4?Aq`$fcjXf``GO-eWQuZ$Wype2>Z zlQB$3eWiEebHeA$z?nK@S{>eLOYRZ$-vzHa? zznYO9%jykH@z_1#?a=ReC;sFEZO6{)v8B`1>))V*elRY)Jq~Yz*3grk81IGYhc`~l zX@6w0(DyX13G_Pn(Bz%*$}nTl%@yaK3jh6;V`q(tO)P2M7Oxb+MLD>>;*(JgLv%3L(Z^MZFI~zr`E6 zF9)agK+E;!&CuTN4!xJjesiRBoN5a#EZ*_xLew_vN{lP-pm zALU<}p9Q-CFSOp!@AW+D)I8Uk(Y&>DtE>O16(?Nf**GKX$UW4up*D^1J$g?lbm^L6 zy>bC{i2k&Kx=iB48!OuL9mB-&YZ_iY?hvK@vdXbl{bWYN_oo%%1e?a@8}f^Aa@7s_ zsAWv_2sEw@?1^0@$Mi>fXhCuCsvr>`%ooG{AD=24shwyO}WLd_pnln~^&|;iuHtepqD%MSgM&F>A+flJ{XM9Q)b)m!{ zXgpMPDf{l1J^jqH5}Inp+MG9Il9Pyf1s)Ptb-Nn`kWNi75C+$=bhd@ zUy9?6%?}1Pw$99J%Ug+S;5bN4YmUBd9Xo;D9i#HWz7?7cgE-VyO(dn-_W|gX?K14)2H8T(OaN{cv6Hy zD}Q{Hr8MOe(HQwJLeuby@XO}f@K`5$pm6->E1&*Artj5Hn7U}U9c|2aHEfAz?rCfm z`twJ5E&i=l**4gH)TM{!ahwFJMPa=CVvO>f@=&GkUYvDhT0>Z<=Qrj@Zkv(=UGarM zb^Tw3cJ5N>SCz%QuAG{ip@;YyPpj%Sx8sF)4>|H)^z_4sG_K|f&sqDpVq<)+XK9`K z)U!`9KWXh@n~^yO(XcWFlT6i;@n(5v%FIeR&GkrNb%jv zIWn`nU!wl=_3k+Pszfi{!Thhr-Ro7Y_INV)Z^BB-Hmrf~qs@?359|dLp;rujva0GK zkz<&rQ}qpjUqdtgpeG%=pbi%`MO_^i1^+!-hFEANbSm$us-D;~TI$^fajli+J9;Gp zbL=wcsO{mr*bq3Y{k+LVjZT~j)p?M05{1z=&L2f0UeI>dm{8L+S-bYc)wyewbr#l@EG3>m<4d593Rv*dXffo2~&PM-e{dyfU(w|e# zd#mT|M%-Hu#NFaC%u<$(5^ILxjHg!;_a8NvhUt&N!pZaP95Fw6TV2(cJooP#Da$Af zio$hmojOY>!l`YdCD4Fo1YKl?k&^N z2LDB}2iVH~<=Z+l+>ggIN*|8)IPO5pu9@=C#GLS}2PbP%%XkJ*S~ubj#xb1U=HC1O ztO3x9&-#hqYu_2q3+Jy{KXE2PXNRvxXli?xj6VswD`A}(WsYqObzPqP22xqyeDR~!_^3XtGsKK zndkNO^k=jgDHk_DBOiMZ5xbxvbZ?HSojPLbGF=SrALNzFk`_1a2pZbbUhRFoD(YT7 zHj-?^#=wp3`D?bv^Y(0qCTKz{%&a-s!430%=W%`^Vf+n(t&b**Q> znhW=z1-m0<3-;z;xX*DfXUmwkV6Wnetf`*M#fEOWyLh-fpDy?<_ct{^tv;VE?CuRu zpmihdPE?AK<4<1r4E4^PrZt68(LJya@#FS;r@V=4?bcS|q_;rJ)z2HNbpW*QVn-m)X^>^L#8TRTuX(jK`Lwu!h) zbhqXLF$*>r_C*<@^`i8)_w?V#dw6f=)ePqbXP}IapMEX9_x{CG^49cO<6IA2b?*&p z92+vr7ffAX_J~(o8g2C4_359V4&KQT>Cq;)Y@JW7=s!N~&|n#8jCcN~NxwZ>H-EV9 z3Kq{V3(|5?&ax|)m3`#&xmLP-uBE_*?s8e>%auf6?71q(xZA6I^Gm9h&52iytN3bO zX!(pOu2>J(?X|w;<7#vCFN5a<$vp)Y5=u<#FhzRF^23e4#E$is@k%*wFCO4+$>hOHt(Iz5=WuyU?ApnR<3N1wx!?H+7r)h1(l*;Tl`UI zf&bx{do=4`aHsR)w-NRX|F;A0e3%{UFMcZ09Niq1jx@*Zjwbc!DTiBE<4%o3S1j9^ zJ^cIa4^HW$S1xjlSsS>voxNW<=eqvG^@_@OD;?wBYz$SoeRx*z;`zYqUG7^dYhdfw zpzPNPC;I0E#OAA&mbf@hpZ`3$k4`Eb;w`{unL#c8CgSHTv- z(deP{yFR@HGhzN|V|4D+P-2X-6vKAH_|Jws!`#MBZ(#Ir`ZfEngI$-@kj1_cPa>mp*91n2xupTIEH0`p2Jq?y0|-d${M&YdI0eINmQR?qfep zvGhYj?-?I8h@J;m%3dg5wh489?`gHe<8J1V*}lI?7QDa?#W2z8_lF%&x|yQS;(un}Kn4 zqHm1U>9S_cu)FdCtg37b>}bn@RW5_Z)*VKki=WmK<&HJW^_%^2nauwH@;@Z=Z?NTm z8~O8}zEJi|@v{5Tqd8B%w?quT>tyezX-TEHCi5t+uy=T5Up(w@Y7stOXQO;tN7(t~ zAy5xRLhJZWp`HGl=g%7i_Ftn--=56D>IY!SH#F8 zZOA1pusnu&^H%%3_fu`fIOWqo7M=#o_dov^+9<$lJBxG6Z<<{2O7NqNg7e@PCO9lF z?vO?s1*!Sd<+oGjUxpuT6fl21euhg|0qN6bL2CXCF##0jXC5c$%%A*jk%3s!(S|{4 z{!IDJlle>WbArzNY>VOW(Zb?r;~+JE4=Lx({5AMFL1%tFk;nQ4p6%~t%il}N$uR%N zXsQ!*=HHokQEKofb!rWIMxt8`I_y8ptC)>l5T>* z%avz;G0u_akkZDC8O|ln5`Qq;#y)o-PW+@hD;Y$HHXc&xXN!kS4%XZurTvpxT(C-# z%72bc=k}Z=GeWcpk;(ehuM2I#hQtADr96p)Yt&Ws0n&cl~;~yX(x-Om3K1$dmoeQUiq~Z@05IL95z#o`o zMu;{oQu)sn$4m|b|6Cit*T(M^pPC#7zSqV-$i_cNxY+S<2LB)|E zUR!*NE&hZp{-Q0u*A{=r7XO~dmd<6p?6bAI%p z6t49HSwan#lJHXMzPhHq@-`?V4mPwdao#9Cq}5f`N)0-B)&K>Kp&?gS1y-rYW@zut zsajNV8&3kI0P^GCK_6iH~|&BtOjZ@f6g)n^*K@*5FQgp^BhYfmC-Slut}jOJ3_BVjnqk>Nj+86 zBSo3i)Hs!GhcLB8jZ&(LFx@IEo`7Ct9sz0=i;PmykYekqP%31ahquZ`8G_+Nl!~O# z&#k`=;0qd*DwJqXm(uryrLrjUCX_L)I*k^+<78(h)H#?tMYGt@Y4}I_uwCoZo~|aV zG%Q$zRogz!=rMIZ;miE+DfdNPNtq8m z_s32Muhh^-J%*D0eWN}+SC#u;CxpM4&pF%FF$@afMV#ep^ecowk}RM5T_=R&BECDi%_jZd z%s8JPh;t*#8(3w?sqx&|asix$rY1w zK|2EW*KIY*c>0=&xdA*UJ&s!YF zlr5sp<`wj>HpUJ6;cCXw{#o?VUS2on?I?$S8Dw|pqkTGk^v|R4SsyvRP@m@*M}1=S zF&^c3L4Pmcc(?=Cnf{$Z$Z>)#Lw~FxydIP(&HRB7rSy?L+4OIre;2M3ee?sL2U))k z`l$E&^il5*>7!mB(?`8wq+iziBz;`3Q}BtKm0{qGppW=WGrq`-KS@6a^Nl{nOE2s- z8PBJW>ok~t*m&+_Iaebt`-?vMhkN9K$k#(4j&bq-UFY<)eN(D#Sr^-2N<73s#BzVfhiNH++7 zG28@}3hC^8q|u#+ABOX{^7+BTJl1k~|5gr5iF70I7sFkY${5y)fmmM<9*iG(_+xo9 z@U!A!TF7^E@T60CSQb<8mI06D5|4FJc-&)H@!m%qOG3gaJeFgv-*yWg>!tASLD-5n z3z1T!DW~vOBEgFHp{2citEccDN7#zD2@%#=IfeIgBv|n>&NcRJgOSd4L*e}yVJlt+ zEj`Q0=zb4BwjE46y9GDw&I;cXYg5CIfZu&30Ay}LB{=xcv<)e)IYPA ztL7L%Rru;I_*9+9r^2Bw_>h!vDop(|d$|gO%qmP#V+`|!sA~3Oz=K9Lq5L$!G9^^&-!q@VCW|tY5Z|7h&3`X74HJym;{%> z!zg*J?b``HKPo%~>DZdd>%sBEv8>iy1jYOLLfmXgAP!w0{4B{L?!(@}Qh?%1yf(oj zE(MGI-lQ|a#$R>jS;?4^5`*L0<%(zZl~qZ|6_11@H)T*gn#=oe+`FZhwqAQs%9zaf zXl+^=Z27yj!WO?wky2IngyWf8iW?zUm3c$IJ;%f^Tn)K{40^ieHP1h}TKg~>(&KCQ z#@$;WaUf;Ko`_==Uk3~QX3QxjYf&jv^OQ5~(=8L11t&sI(nx`I_=ca>|403+(cICf z-Gs*GbnP6iz&qolw|0}POPUssl|cX zy0>TTMlH&EYIkp6ubqqYM!Y-3@+>LQhBogQ-Y9-jrlsS2fc=n$Vcy5%Sz>48$ntH= zoj*=5_`@*~n4n#3o|Az7G<%chKEzfUG75*HU;949=>jhI-=ZjM#>l@o*R9)rzvjL_ zeS>k@&ovF(A^8xv?}m&Guqn?IEHdynZG*dsk~EVVTz7hkTy4&A&LVMQQbP-*K6P2$ncjC5Db?fNYL*=8sN#eOR#i$v@<;q<2I6CZ1xt{wJl*Pd-2 zw4c{$v^G<=lhRru_DR_NV5uH3Th2amHMt2K$tdBau)C=&*d9&W{CHv1R(if7$!{$THnHHDp|40i^xL zHT*U%wh!%CsU3@6t6i|$2i?T{ets|U&-XwGlA zsO9>`K>76z;~F8Q_DN6IA*qXc60q4zN_iy7#|!R zz1j{zvh=Y?dJ|+?+@AKk8;$d7km@gl27vH-I^NKB;Jh%={YGuMJSU_3_T3*l*I|tR zh^J_Lj&c3@j8~SVYdy8x7LLTbJ9vUcLwG0ToYqcUesE(vbNh^s)_I*DZd}o zU5!8Q%uGA?)ZJg?oVxqd$D5hg*Z5%h5q%q^XiKz*r9|KnoxNenUC!K;`6R!@EBEP4 zdkyjduR#6_W~(}Q+LTM43}Q$)R!8f0z4%FKx*L7P)<=ZVdWTj5sbtROketiT?KQiP zEEYc=Zl0DQ3jfx2WXX<}j=4{G@>-89F4ZZ$f267t(rC=*MLyPp(mHvNcb+SR_pNBY z)(ppE?$M;+6u-P*_<3-zYk9Yuq9lHWXWd{KI_ zKDDJ7(xn#!DG&5@QC7R~21D`Phs{ztb&qCfbCl$Z!efUn)IW$)w;|yF2;(&k=em^a zasm0vNZGm@JpK2vr(SD;mP8hG9{k?b4`SWztA+0SzS!0IUC8}ZIE%{Hv<}yD(36w> zp>;UZ!&`>+F|@LT_lpUux4X3gT86eeKGwfGUJ_2*aJJUt5u)Y}(oST!Ab*(S)Wo2) zCX7GxzJ)6s8K?1jrgJ<@U|-8n15X|ki70`Hm93CTTp73rHS5v#>XPm8$<#CnPHZV#_n@bEA7$S-wuE=oyW+Sz zQ!KBMcR5Nli&%MsI&ZF1-#&4cUf8-_u4hG!m5ZA4^U6yn_JjO>&|fw&v)xx+hI31P z<}YfQaWY)HExyIO3TN4b)@}Cue!tfupK7eSe~b>TrhdWC{6izf+J(9p^=11&-WR%G z)lmdVGRo==#0WOd1nM-e=kUf($kQsVoV3kq+}vO8>g*!9Am%J}XC4bP zR1|z2r>lIhgc6>WhiMSJp#8rd7;KfCrBU-gbi<+|)xdGGA@BTI@Ref67L`Zk8{ zdoYmsCbbU6MK~96=RS}f+k$(=W%9h4ZjkKGI!#`Gp$;kb^&IneoveQ*D0eBZ$1_Cm zUZ!(oaL4j^yce{Mj#U0?`C(7b{a0!iVFgLAQ5>Z)M-4e&kLL z^|L9@ps&|Yh+YsJ88z;f6ERy|;_c{qIm@}ig&D$3;T&NtypZivCtn$7_KC%g5>is; zPQ;ikij(&wxzn5QD(+HZ^VD$BG-Fa%&$vNGw*H^_H z4&(me(SkeL;_mQUkv`t%zUaZ#^6SAT@3`7q_89J z^$>i@c3B-|xl;Ml<##03sZ#P=UV0!-*{xLm45>d&{-KhePnk(aS*=w5Oo3O{vOauQ zL|HAXqij|xKi|qE9c8al>3qwQbd-%srKiRyo0OV@2ThBkEK({x*Ft6c&$iLew$bx! z^gJ6q-$us+ti@3_C$;?k7AnghXrm7l>%p-x@oa0*AF{-)050LR<@Z|2z%Q`T3vBek zHu_*2eW;DjQIT{!zs2fY*p_avB(Uv|*y4}d;w`rLZ*1{)Tl_6sJZg)dvcHkv94`TYRD|ew8hLBjQXNfj>Nd;AR_rr7gZ5aV9OpkE8ifGhQy^ z+2R>99+dH1@f$OKy^NnN+RZq>L-YKBcg^^fGM+Dvnel*(_ZMH8aeimZ#`yEVSC0KN z&=%+SKIKSP=Lc}6Wecx7F948I>Mk4O?FR5Oj!#RV4;J&y_%<2G_(^$5lMrqR)mG8C zxG97pKkFNE3bUn*f+>6fxrxP#tCyT6qS6KHH}OEarM|WrX5S5Q7Yflx`|67gSqLeq zA>}J%2(}rmav#WKm@iKVk0>MK5K%GZNDQ1Vr6z2$9F+PnYd(LjlmST^8Nao5KFy8m zOBYv;nT-mDVA|7=B2i*0N%5Cd=@Pp|ZG#Happ*!zpI>2C6a6iXg!7}$>7p7^tVJ2t z|A&^h<)yNU%t#pw(^h#G(lJJZWv(vlg{FRDVk{|YW2uJ4(swddVx}7YKHZWy#w6Yy z;(IGsy38@=_w!=Yb}&BtR5JYn<0U73d}KnDHx2 zU-IL&DE$({E>-45ro6_*X1S=xjpQFE#P8?>pX*#EzI(n$|1x7eVR{ggi+(MA(3jB% zowoOwPFrX6pQR66t{3$8(H{?7`lUkrl|H`Z=3#y^&hPkaFM=}vP4ol!-b^3q570+H zJW3z=o~Dm-|46?~hz|PT``AqXyXpT=_TB|BtK!TXKkp?M!o?6kBOt!Hh~XmU21KPc zrPcS5}Nkp`C8!xqhZi|8z!R=CYyIO6R7o|0=6sl}jt=%Toe)ZOt zYTF35TTrY~`>o&aH@Vn_#?V}V@5zc6?#SmV@KexHB`bUOS!p=aVkS*6 zfV9$34$GDMT{MyJ&no^UnurHGF`6R&@RUy;<|<`As@(Z~i1xowJSV=>Q26}DM0=iz zMzfA4%KdtpD0e>NgG;cRnC3-lJq6^rc9HU2ACZPcZ9!C~ERx@!rr-l#nDL9s??Y4Y zVK9|Eog)8`&MCA<{6+r3zDDt@l)Na716Ccu( zuRBjDZFcN_A=#h$?K;e^((ml=75#2b|LC`NJ0nL&K_UU;%v*2oX^0OvHQ4A;{o<-` z^;>%4q`J+)+>L0tU8�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%0AZLh6m@}(!_0Xp{LH~Cv0AkxlA`DjL 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%0DSneqrjsim@}!eX%`L@fGSYsoLqJ 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 M0QEGf>dTDzmwD+C$NebUd~#B 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⪻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
  • IaJn0ePsnEFcdPpAE>vy?s}r5`U!l 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 z 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

    Prx(1Ix%@j?XQS<9%EQ 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

    J>@g^c3cjOd-8Mnd9ApM|@KcuMqY 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

    5Vcl(LJG{}FV>M6_^teuxvLgNH_ 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
    K!@ws4dHssWgrMTU5b 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 r`6E#&RSvn+20h-CWxPQkSTM>2#F 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%0D|Is<2Kh!^neDY=# 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

    J@-%wn$`rltc<6=CK#w02^ye+m=wTSM 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 M2pF%4;MLCm1$;xaf&c&j literal 0 HcmV?d00001 diff --git a/variants/PORTENTA_X8/linker_script.ld b/variants/PORTENTA_X8/linker_script.ld new file mode 100644 index 000000000..33fc73c17 --- /dev/null +++ b/variants/PORTENTA_X8/linker_script.ld @@ -0,0 +1,113 @@ +MEMORY +{ + FLASH (rx) : ORIGIN = CM4_BINARY_START, LENGTH = CM4_BINARY_END - CM4_BINARY_START + RAM (rwx) : ORIGIN = 0x10000000 + (((166 * 4) + 7) & 0xFFFFFFF8), LENGTH = 0x48000 - (((166 * 4) + 7) & 0xFFFFFFF8) + RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K +} +__OPENAMP_region_start__ = 0x38000400; +__OPENAMP_region_end__ = 0x38000400 + LENGTH(RAM_D3) - 1K; +ENTRY(Reset_Handler) +SECTIONS +{ + .text : + { + KEEP(*(.isr_vector)) + *(.text*) + KEEP(*(.init)) + KEEP(*(.fini)) + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + *(.rodata*) + KEEP(*(.eh_frame*)) + } > FLASH + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + __etext = .; + _sidata = .; + .data : AT (__etext) + { + __data_start__ = .; + _sdata = .; + *(vtable) + *(.data*) + . = ALIGN(8); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(8); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(8); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + KEEP(*(.jcr*)) + . = ALIGN(8); + __data_end__ = .; + _edata = .; + } > RAM + .uninitialized (NOLOAD): + { + . = ALIGN(32); + __uninitialized_start = .; + *(.uninitialized) + KEEP(*(.keep.uninitialized)) + . = ALIGN(32); + __uninitialized_end = .; + } > RAM + .bss : + { + . = ALIGN(8); + __bss_start__ = .; + _sbss = .; + *(.bss*) + *(COMMON) + . = ALIGN(8); + __bss_end__ = .; + _ebss = .; + } > RAM + .openamp_section (NOLOAD) : { + . = ABSOLUTE(0x38000000); + *(.resource_table) + } >RAM_D3 AT > FLASH + .pdm_section (NOLOAD) : { + . = ABSOLUTE(0x3800FC00); + *(.pdm_buffer) + } > RAM_D3 + .heap (COPY): + { + __end__ = .; + PROVIDE(end = .); + *(.heap*) + . = ORIGIN(RAM) + LENGTH(RAM) - 0x400; + __HeapLimit = .; + } > RAM + .stack_dummy (COPY): + { + *(.stack*) + } > RAM + __StackTop = ORIGIN(RAM) + LENGTH(RAM); + _estack = __StackTop; + __StackLimit = __StackTop - 0x400; + PROVIDE(__stack = __StackTop); + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack") +} diff --git a/variants/PORTENTA_X8/mbed_config.h b/variants/PORTENTA_X8/mbed_config.h new file mode 100644 index 000000000..1839607fb --- /dev/null +++ b/variants/PORTENTA_X8/mbed_config.h @@ -0,0 +1,371 @@ +/* + * mbed SDK + * Copyright (c) 2017 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Automatically generated configuration file. +// DO NOT EDIT, content will be overwritten. + +#ifndef __MBED_CONFIG_DATA__ +#define __MBED_CONFIG_DATA__ + +// Configuration parameters +#define CLOCK_SOURCE USE_PLL_HSI // set by target:PORTENTA_X8 +#define HSE_VALUE 25000000 // set by target:PORTENTA_X8 +#define LPTICKER_DELAY_TICKS 0 // set by target:PORTENTA_X8 +#define MBED_ALL_STATS_ENABLED 1 // set by application[*] +#define MBED_CONF_ALT1250_PPP_BAUDRATE 115200 // set by library:ALT1250_PPP +#define MBED_CONF_ALT1250_PPP_PROVIDE_DEFAULT 0 // set by library:ALT1250_PPP +#define MBED_CONF_ATMEL_RF_ASSUME_SPACED_SPI 1 // set by library:atmel-rf[STM] +#define MBED_CONF_ATMEL_RF_FULL_SPI_SPEED 7500000 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_FULL_SPI_SPEED_BYTE_SPACING 250 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_IRQ_THREAD_STACK_SIZE 1024 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_LOW_SPI_SPEED 3750000 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_PROVIDE_DEFAULT 0 // set by library:atmel-rf +#define MBED_CONF_ATMEL_RF_USE_SPI_SPACING_API 0 // set by library:atmel-rf +#define MBED_CONF_CELLULAR_AT_HANDLER_BUFFER_SIZE 32 // set by library:cellular +#define MBED_CONF_CELLULAR_CONTROL_PLANE_OPT 0 // set by library:cellular +#define MBED_CONF_CELLULAR_DEBUG_AT 0 // set by library:cellular +#define MBED_CONF_CELLULAR_MAX_CP_DATA_RECV_LEN 1358 // set by library:cellular +#define MBED_CONF_CELLULAR_PRESENT 1 // set by library:cellular +#define MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY 0 // set by library:cellular +#define MBED_CONF_CELLULAR_USE_APN_LOOKUP 0 // set by library:cellular +#define MBED_CONF_CELLULAR_USE_SMS 0 // set by library:cellular +#define MBED_CONF_DRIVERS_OSPI_CSN OSPI_FLASH1_CSN // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_DQS OSPI_FLASH1_DQS // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO0 OSPI_FLASH1_IO0 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO1 OSPI_FLASH1_IO1 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO2 OSPI_FLASH1_IO2 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO3 OSPI_FLASH1_IO3 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO4 OSPI_FLASH1_IO4 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO5 OSPI_FLASH1_IO5 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO6 OSPI_FLASH1_IO6 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_IO7 OSPI_FLASH1_IO7 // set by library:drivers +#define MBED_CONF_DRIVERS_OSPI_SCK OSPI_FLASH1_SCK // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_CSN QSPI_FLASH1_CSN // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO0 QSPI_FLASH1_IO0 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO1 QSPI_FLASH1_IO1 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO2 QSPI_FLASH1_IO2 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO3 QSPI_FLASH1_IO3 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_SCK QSPI_FLASH1_SCK // set by library:drivers +#define MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE 256 // set by library:drivers +#define MBED_CONF_DRIVERS_UART_SERIAL_TXBUF_SIZE 256 // set by library:drivers +#define MBED_CONF_ESP8266_BUILT_IN_DNS 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_DEBUG 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_POWER_OFF_TIME_MS 3 // set by library:esp8266 +#define MBED_CONF_ESP8266_POWER_ON_POLARITY 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_POWER_ON_TIME_MS 3 // set by library:esp8266 +#define MBED_CONF_ESP8266_PROVIDE_DEFAULT 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_SERIAL_BAUDRATE 115200 // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_ENABLE 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_SERVER0 "" // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_SERVER1 "" // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_SERVER2 "" // set by library:esp8266 +#define MBED_CONF_ESP8266_SNTP_TIMEZONE 0 // set by library:esp8266 +#define MBED_CONF_ESP8266_SOCKET_BUFSIZE 8192 // set by library:esp8266 +#define MBED_CONF_EVENTS_PRESENT 1 // set by library:events +#define MBED_CONF_EVENTS_SHARED_DISPATCH_FROM_APPLICATION 0 // set by library:events +#define MBED_CONF_EVENTS_SHARED_EVENTSIZE 768 // set by library:events +#define MBED_CONF_EVENTS_SHARED_HIGHPRIO_EVENTSIZE 256 // set by library:events +#define MBED_CONF_EVENTS_SHARED_HIGHPRIO_STACKSIZE 1024 // set by library:events +#define MBED_CONF_EVENTS_SHARED_STACKSIZE 2048 // set by library:events +#define MBED_CONF_EVENTS_USE_LOWPOWER_TIMER_TICKER 0 // set by library:events +#define MBED_CONF_FAT_CHAN_FFS_DBG 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_CODE_PAGE 437 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_EXFAT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_HEAPBUF 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_LOCK 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_MINIMIZE 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_NOFSINFO 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_NORTC 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_READONLY 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_REENTRANT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_RPATH 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_TIMEOUT 1000 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_TINY 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_LFN_BUF 255 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_LFN_UNICODE 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MAX_LFN 255 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MAX_SS 4096 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MIN_SS 512 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MULTI_PARTITION 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_MDAY 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_MON 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_YEAR 2017 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_PRINT_FLOAT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_PRINT_LLI 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_SFN_BUF 12 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_STRF_ENCODE 3 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_STR_VOLUME_ID 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_SYNC_T HANDLE // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_CHMOD 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_EXPAND 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FASTSEEK 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FIND 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FORWARD 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_LABEL 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_LFN 3 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_MKFS 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_STRFUNC 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_TRIM 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_VOLUMES 4 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_VOLUME_STRS "RAM","NAND","CF","SD","SD2","USB","USB2","USB3" // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_CLUSTER 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_SECTOR 1 // set by library:fat_chan +#define MBED_CONF_FILESYSTEM_PRESENT 1 // set by library:filesystem +#define MBED_CONF_FLASHIAP_BLOCK_DEVICE_BASE_ADDRESS 0xFFFFFFFF // set by library:flashiap-block-device +#define MBED_CONF_FLASHIAP_BLOCK_DEVICE_SIZE 0 // set by library:flashiap-block-device +#define MBED_CONF_GEMALTO_CINTERION_BAUDRATE 115200 // set by library:GEMALTO_CINTERION +#define MBED_CONF_GEMALTO_CINTERION_PROVIDE_DEFAULT 0 // set by library:GEMALTO_CINTERION +#define MBED_CONF_GENERIC_AT3GPP_BAUDRATE 115200 // set by library:GENERIC_AT3GPP +#define MBED_CONF_GENERIC_AT3GPP_PROVIDE_DEFAULT 0 // set by library:GENERIC_AT3GPP +#define MBED_CONF_LORA_ADR_ON 1 // set by library:lora +#define MBED_CONF_LORA_APPLICATION_EUI {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_APPLICATION_KEY {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_APPSKEY {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_APP_PORT 15 // set by library:lora +#define MBED_CONF_LORA_AUTOMATIC_UPLINK_MESSAGE 1 // set by library:lora +#define MBED_CONF_LORA_DEVICE_ADDRESS 0x00000000 // set by library:lora +#define MBED_CONF_LORA_DEVICE_EUI {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_DOWNLINK_PREAMBLE_LENGTH 5 // set by library:lora +#define MBED_CONF_LORA_DUTY_CYCLE_ON 1 // set by library:lora +#define MBED_CONF_LORA_DUTY_CYCLE_ON_JOIN 1 // set by library:lora +#define MBED_CONF_LORA_FSB_MASK {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x00FF} // set by library:lora +#define MBED_CONF_LORA_FSB_MASK_CHINA {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF} // set by library:lora +#define MBED_CONF_LORA_LBT_ON 0 // set by library:lora +#define MBED_CONF_LORA_MAX_SYS_RX_ERROR 5 // set by library:lora +#define MBED_CONF_LORA_NB_TRIALS 12 // set by library:lora +#define MBED_CONF_LORA_NWKSKEY {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // set by library:lora +#define MBED_CONF_LORA_OVER_THE_AIR_ACTIVATION 1 // set by library:lora +#define MBED_CONF_LORA_PHY EU868 // set by library:lora +#define MBED_CONF_LORA_PUBLIC_NETWORK 1 // set by library:lora +#define MBED_CONF_LORA_TX_MAX_SIZE 64 // set by library:lora +#define MBED_CONF_LORA_UPLINK_PREAMBLE_LENGTH 8 // set by library:lora +#define MBED_CONF_LORA_WAKEUP_TIME 5 // set by library:lora +#define MBED_CONF_LWIP_ADDR_TIMEOUT 5 // set by library:lwip +#define MBED_CONF_LWIP_ADDR_TIMEOUT_MODE 1 // set by library:lwip +#define MBED_CONF_LWIP_DEBUG_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_DEFAULT_THREAD_STACKSIZE 512 // set by library:lwip +#define MBED_CONF_LWIP_DHCP_TIMEOUT 60 // set by library:lwip +#define MBED_CONF_LWIP_ENABLE_PPP_TRACE 0 // set by library:lwip +#define MBED_CONF_LWIP_ETHERNET_ENABLED 1 // set by library:lwip +#define MBED_CONF_LWIP_IPV4_ENABLED 1 // set by library:lwip +#define MBED_CONF_LWIP_IPV6_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_IP_VER_PREF 4 // set by library:lwip +#define MBED_CONF_LWIP_L3IP_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_MBOX_SIZE 8 // set by library:lwip +#define MBED_CONF_LWIP_MEMP_NUM_TCPIP_MSG_INPKT 8 // set by library:lwip +#define MBED_CONF_LWIP_MEMP_NUM_TCP_SEG 16 // set by library:lwip +#define MBED_CONF_LWIP_MEM_SIZE 2310 // set by library:lwip[STM] +#define MBED_CONF_LWIP_ND6_QUEUEING 0 // set by library:lwip +#define MBED_CONF_LWIP_ND6_RDNSS_MAX_DNS_SERVERS 0 // set by library:lwip +#define MBED_CONF_LWIP_NUM_NETBUF 8 // set by library:lwip +#define MBED_CONF_LWIP_NUM_PBUF 8 // set by library:lwip +#define MBED_CONF_LWIP_PBUF_POOL_SIZE 5 // set by library:lwip +#define MBED_CONF_LWIP_PPP_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_PPP_IPV4_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_PPP_IPV6_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_PPP_THREAD_STACKSIZE 768 // set by library:lwip +#define MBED_CONF_LWIP_PRESENT 1 // set by library:lwip +#define MBED_CONF_LWIP_RAW_SOCKET_ENABLED 0 // set by library:lwip +#define MBED_CONF_LWIP_SOCKET_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_TCPIP_THREAD_PRIORITY osPriorityNormal // set by library:lwip +#define MBED_CONF_LWIP_TCPIP_THREAD_STACKSIZE 1200 // set by library:lwip +#define MBED_CONF_LWIP_TCP_CLOSE_TIMEOUT 1000 // set by library:lwip +#define MBED_CONF_LWIP_TCP_ENABLED 1 // set by library:lwip +#define MBED_CONF_LWIP_TCP_MAXRTX 6 // set by library:lwip +#define MBED_CONF_LWIP_TCP_MSS 536 // set by library:lwip +#define MBED_CONF_LWIP_TCP_SERVER_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_TCP_SND_BUF (2 * TCP_MSS) // set by library:lwip +#define MBED_CONF_LWIP_TCP_SOCKET_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_TCP_SYNMAXRTX 6 // set by library:lwip +#define MBED_CONF_LWIP_TCP_WND (4 * TCP_MSS) // set by library:lwip +#define MBED_CONF_LWIP_UDP_SOCKET_MAX 4 // set by library:lwip +#define MBED_CONF_LWIP_USE_MBED_TRACE 0 // set by library:lwip +#define MBED_CONF_MCR20A_PROVIDE_DEFAULT 0 // set by library:mcr20a +#define MBED_CONF_NANOSTACK_LIBSERVICE_NSDYNMEM_TRACKER_ENABLED 0 // set by library:nanostack-libservice +#define MBED_CONF_NANOSTACK_LIBSERVICE_PRESENT 1 // set by library:nanostack-libservice +#define MBED_CONF_NSAPI_ADD_EVENT_LISTENER_RETURN_CHANGE 0 // set by library:nsapi +#define MBED_CONF_NSAPI_DEFAULT_MESH_TYPE THREAD // set by library:nsapi +#define MBED_CONF_NSAPI_DEFAULT_STACK LWIP // set by library:nsapi +#define MBED_CONF_NSAPI_DEFAULT_WIFI_SECURITY NONE // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_ADDRESSES_LIMIT 10 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_CACHE_SIZE 3 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_RESPONSE_WAIT_TIME 10000 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_RETRIES 1 // set by library:nsapi +#define MBED_CONF_NSAPI_DNS_TOTAL_ATTEMPTS 10 // set by library:nsapi +#define MBED_CONF_NSAPI_PRESENT 1 // set by library:nsapi +#define MBED_CONF_NSAPI_SOCKET_STATS_ENABLED 0 // set by library:nsapi +#define MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT 10 // set by library:nsapi +#define MBED_CONF_PLATFORM_CALLBACK_COMPARABLE 1 // set by library:platform +#define MBED_CONF_PLATFORM_CALLBACK_NONTRIVIAL 1 // set by application[*] +#define MBED_CONF_PLATFORM_CRASH_CAPTURE_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_CTHUNK_COUNT_MAX 8 // set by library:platform +#define MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE 115200 // set by application[*] +#define MBED_CONF_PLATFORM_ERROR_ALL_THREADS_INFO 0 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_FILENAME_CAPTURE_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_HIST_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_HIST_SIZE 4 // set by library:platform +#define MBED_CONF_PLATFORM_ERROR_REBOOT_MAX 1 // set by library:platform +#define MBED_CONF_PLATFORM_FATAL_ERROR_AUTO_REBOOT_ENABLED 0 // set by library:platform +#define MBED_CONF_PLATFORM_MAX_ERROR_FILENAME_LEN 16 // set by library:platform +#define MBED_CONF_PLATFORM_MINIMAL_PRINTF_ENABLE_64_BIT 1 // set by library:platform +#define MBED_CONF_PLATFORM_MINIMAL_PRINTF_ENABLE_FLOATING_POINT 0 // set by library:platform +#define MBED_CONF_PLATFORM_MINIMAL_PRINTF_SET_FLOATING_POINT_MAX_DECIMALS 6 // set by library:platform +#define MBED_CONF_PLATFORM_POLL_USE_LOWPOWER_TIMER 0 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_BAUD_RATE 115200 // set by application[*] +#define MBED_CONF_PLATFORM_STDIO_BUFFERED_SERIAL 0 // set by application[*] +#define MBED_CONF_PLATFORM_STDIO_CONVERT_NEWLINES 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_CONVERT_TTY_NEWLINES 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_FLUSH_AT_EXIT 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY 0 // set by library:platform +#define MBED_CONF_PLATFORM_USE_MPU 1 // set by library:platform +#define MBED_CONF_PPP_ENABLED 0 // set by library:ppp +#define MBED_CONF_PPP_ENABLE_TRACE 0 // set by library:ppp +#define MBED_CONF_PPP_IPV4_ENABLED 1 // set by library:ppp +#define MBED_CONF_PPP_IPV6_ENABLED 0 // set by library:ppp +#define MBED_CONF_PPP_MBED_EVENT_QUEUE 0 // set by library:ppp +#define MBED_CONF_PPP_THREAD_STACKSIZE 816 // set by library:ppp +#define MBED_CONF_QUECTEL_BC95_BAUDRATE 9600 // set by library:QUECTEL_BC95 +#define MBED_CONF_QUECTEL_BC95_PROVIDE_DEFAULT 0 // set by library:QUECTEL_BC95 +#define MBED_CONF_QUECTEL_BG96_BAUDRATE 115200 // set by library:QUECTEL_BG96 +#define MBED_CONF_QUECTEL_BG96_PROVIDE_DEFAULT 0 // set by library:QUECTEL_BG96 +#define MBED_CONF_QUECTEL_EC2X_BAUDRATE 115200 // set by library:QUECTEL_EC2X +#define MBED_CONF_QUECTEL_EC2X_PROVIDE_DEFAULT 0 // set by library:QUECTEL_EC2X +#define MBED_CONF_QUECTEL_EC2X_START_TIMEOUT 15000 // set by library:QUECTEL_EC2X +#define MBED_CONF_QUECTEL_M26_BAUDRATE 115200 // set by library:QUECTEL_M26 +#define MBED_CONF_QUECTEL_M26_PROVIDE_DEFAULT 0 // set by library:QUECTEL_M26 +#define MBED_CONF_QUECTEL_UG96_BAUDRATE 115200 // set by library:QUECTEL_UG96 +#define MBED_CONF_QUECTEL_UG96_PROVIDE_DEFAULT 0 // set by library:QUECTEL_UG96 +#define MBED_CONF_RM1000_AT_BAUDRATE 230400 // set by library:RM1000_AT +#define MBED_CONF_RM1000_AT_PROVIDE_DEFAULT 0 // set by library:RM1000_AT +#define MBED_CONF_RTOS_API_PRESENT 1 // set by library:rtos-api +#define MBED_CONF_RTOS_ENABLE_ALL_RTX_EVENTS 0 // set by library:rtos +#define MBED_CONF_RTOS_EVFLAGS_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_IDLE_THREAD_STACK_SIZE 512 // set by library:rtos +#define MBED_CONF_RTOS_IDLE_THREAD_STACK_SIZE_DEBUG_EXTRA 128 // set by library:rtos[STM] +#define MBED_CONF_RTOS_IDLE_THREAD_STACK_SIZE_TICKLESS_EXTRA 256 // set by library:rtos +#define MBED_CONF_RTOS_MAIN_THREAD_STACK_SIZE 32768 // set by application[*] +#define MBED_CONF_RTOS_MSGQUEUE_DATA_SIZE 0 // set by library:rtos +#define MBED_CONF_RTOS_MSGQUEUE_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_MUTEX_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_PRESENT 1 // set by library:rtos +#define MBED_CONF_RTOS_SEMAPHORE_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_THREAD_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_THREAD_STACK_SIZE 4096 // set by library:rtos +#define MBED_CONF_RTOS_THREAD_USER_STACK_SIZE 0 // set by library:rtos +#define MBED_CONF_RTOS_TIMER_NUM 0 // set by library:rtos +#define MBED_CONF_RTOS_TIMER_THREAD_STACK_SIZE 768 // set by library:rtos +#define MBED_CONF_S2LP_PROVIDE_DEFAULT 0 // set by library:s2lp +#define MBED_CONF_SARA4_PPP_BAUDRATE 115200 // set by library:SARA4_PPP +#define MBED_CONF_SARA4_PPP_PROVIDE_DEFAULT 0 // set by library:SARA4_PPP +#define MBED_CONF_STM32_EMAC_ETH_PHY_ADDRESS 0 // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_PHY_AUTONEGOTIATION ETH_AUTONEGOTIATION_ENABLE // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_PHY_DUPLEXMODE ETH_MODE_FULLDUPLEX // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_PHY_DUPLEX_STATUS 0x0010 // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_PHY_MEDIA_INTERFACE ETH_MEDIA_INTERFACE_RMII // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_PHY_RESET_DELAY 500 // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_PHY_SPEED ETH_SPEED_100M // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_PHY_SPEED_STATUS 0x0004 // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_PHY_STATUS_REGISTER 31 // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_RXBUFNB 4 // set by library:stm32-emac +#define MBED_CONF_STM32_EMAC_ETH_TXBUFNB 10 // set by library:stm32-emac[STM32H7] +#define MBED_CONF_STM32_EMAC_THREAD_STACKSIZE 1024 // set by library:stm32-emac +#define MBED_CONF_STORAGE_DEFAULT_KV kv // set by library:storage +#define MBED_CONF_STORAGE_FILESYSTEM_BLOCKDEVICE default // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_EXTERNAL_SIZE 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_FILESYSTEM default // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_FOLDER_PATH kvstore // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_INTERNAL_BASE_ADDRESS 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_MOUNT_POINT kv // set by library:storage_filesystem +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_BLOCKDEVICE default // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_EXTERNAL_SIZE 0 // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FILESYSTEM default // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_FOLDER_PATH kvstore // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_NO_RBP_MOUNT_POINT kv // set by library:storage_filesystem_no_rbp +#define MBED_CONF_STORAGE_FILESYSTEM_RBP_INTERNAL_SIZE 0 // set by library:storage_filesystem +#define MBED_CONF_STORAGE_STORAGE_TYPE default // set by library:storage +#define MBED_CONF_STORAGE_TDB_EXTERNAL_BLOCKDEVICE default // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_EXTERNAL_SIZE 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_INTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_BLOCKDEVICE default // set by library:storage_tdb_external_no_rbp +#define MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_EXTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_external_no_rbp +#define MBED_CONF_STORAGE_TDB_EXTERNAL_NO_RBP_EXTERNAL_SIZE 0 // set by library:storage_tdb_external_no_rbp +#define MBED_CONF_STORAGE_TDB_EXTERNAL_RBP_INTERNAL_SIZE 0 // set by library:storage_tdb_external +#define MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_BASE_ADDRESS 0 // set by library:storage_tdb_internal +#define MBED_CONF_STORAGE_TDB_INTERNAL_INTERNAL_SIZE 0 // set by library:storage_tdb_internal +#define MBED_CONF_TARGET_BOOT_STACK_SIZE 0x400 // set by library:rtos[*] +#define MBED_CONF_TARGET_CONSOLE_UART 1 // set by target:Target +#define MBED_CONF_TARGET_CUSTOM_TICKERS 1 // set by target:Target +#define MBED_CONF_TARGET_DEEP_SLEEP_LATENCY 4 // set by target:MCU_STM32 +#define MBED_CONF_TARGET_DEFAULT_ADC_VREF NAN // set by target:Target +#define MBED_CONF_TARGET_GPIO_RESET_AT_INIT 0 // set by target:MCU_STM32 +#define MBED_CONF_TARGET_I2C_TIMING_VALUE_ALGO 1 // set by target:PORTENTA_X8 +#define MBED_CONF_TARGET_INIT_US_TICKER_AT_BOOT 1 // set by target:MCU_STM32 +#define MBED_CONF_TARGET_INTERNAL_FLASH_UNIFORM_SECTORS 1 // set by target:Target +#define MBED_CONF_TARGET_LPTICKER_LPTIM 1 // set by target:MCU_STM32H7 +#define MBED_CONF_TARGET_LPTICKER_LPTIM_CLOCK 1 // set by target:MCU_STM32 +#define MBED_CONF_TARGET_LPUART_CLOCK_SOURCE USE_LPUART_CLK_LSE|USE_LPUART_CLK_PCLK1|USE_LPUART_CLK_PCLK3 // set by target:MCU_STM32 +#define MBED_CONF_TARGET_LSE_AVAILABLE 1 // set by target:PORTENTA_X8 +#define MBED_CONF_TARGET_LSE_BYPASS 1 // set by target:PORTENTA_X8 +#define MBED_CONF_TARGET_LSE_DRIVE_LOAD_LEVEL RCC_LSEDRIVE_LOW // set by target:MCU_STM32H7 +#define MBED_CONF_TARGET_MPU_ROM_END 0x0fffffff // set by target:Target +#define MBED_CONF_TARGET_RTC_CLOCK_SOURCE USE_RTC_CLK_LSE_OR_LSI // set by target:MCU_STM32 +#define MBED_CONF_TARGET_SYSTEM_POWER_SUPPLY PWR_LDO_SUPPLY // set by target:PORTENTA_X8 +#define MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER 0 // set by target:Target +#define MBED_CONF_TARGET_USB_SPEED USE_USB_OTG_HS // set by target:PORTENTA_X8 +#define MBED_CONF_TARGET_XIP_ENABLE 0 // set by target:Target +#define MBED_CONF_TELIT_HE910_BAUDRATE 115200 // set by library:TELIT_HE910 +#define MBED_CONF_TELIT_HE910_PROVIDE_DEFAULT 0 // set by library:TELIT_HE910 +#define MBED_CONF_TELIT_ME310_BAUDRATE 115200 // set by library:TELIT_ME310 +#define MBED_CONF_TELIT_ME310_PROVIDE_DEFAULT 0 // set by library:TELIT_ME310 +#define MBED_CONF_TELIT_ME910_BAUDRATE 115200 // set by library:TELIT_ME910 +#define MBED_CONF_TELIT_ME910_PROVIDE_DEFAULT 0 // set by library:TELIT_ME910 +#define MBED_CONF_UBLOX_AT_BAUDRATE 115200 // set by library:UBLOX_AT +#define MBED_CONF_UBLOX_AT_PROVIDE_DEFAULT 0 // set by library:UBLOX_AT +#define MBED_CONF_UBLOX_N2XX_BAUDRATE 9600 // set by library:UBLOX_N2XX +#define MBED_CONF_UBLOX_N2XX_PROVIDE_DEFAULT 0 // set by library:UBLOX_N2XX +#define MBED_CONF_UBLOX_PPP_BAUDRATE 115200 // set by library:UBLOX_PPP +#define MBED_CONF_UBLOX_PPP_PROVIDE_DEFAULT 0 // set by library:UBLOX_PPP +#define MBED_CRC_TABLE_SIZE 16 // set by library:drivers +#define MBED_LFS2_BLOCK_CYCLES 1024 // set by library:littlefs2 +#define MBED_LFS2_BLOCK_SIZE 512 // set by library:littlefs2 +#define MBED_LFS2_CACHE_SIZE 64 // set by library:littlefs2 +#define MBED_LFS2_ENABLE_INFO 0 // set by library:littlefs2 +#define MBED_LFS2_INTRINSICS 1 // set by library:littlefs2 +#define MBED_LFS2_LOOKAHEAD_SIZE 64 // set by library:littlefs2 +#define MBED_LFS_BLOCK_SIZE 512 // set by library:littlefs +#define MBED_LFS_ENABLE_INFO 0 // set by library:littlefs +#define MBED_LFS_INTRINSICS 1 // set by library:littlefs +#define MBED_LFS_LOOKAHEAD 512 // set by library:littlefs +#define MBED_LFS_PROG_SIZE 64 // set by library:littlefs +#define MBED_LFS_READ_SIZE 64 // set by library:littlefs +#define MBED_MEM_TRACING_ENABLED 1 // set by application[*] +#define MBED_STACK_DUMP_ENABLED 0 // set by library:platform +#define MBED_TRACE_COLOR_THEME 0 // set by library:mbed-trace +#define MEM_ALLOC malloc // set by library:mbed-trace +#define MEM_FREE free // set by library:mbed-trace +#define PPP_DEBUG 0 // set by library:ppp +// Macros +#define MBEDTLS_CIPHER_MODE_CTR // defined by library:SecureStore +#define NSAPI_PPP_AVAILABLE (MBED_CONF_PPP_ENABLED || MBED_CONF_LWIP_PPP_ENABLED) // defined by library:ppp +#define NSDYNMEM_TRACKER_ENABLED MBED_CONF_NANOSTACK_LIBSERVICE_NSDYNMEM_TRACKER_ENABLED // defined by library:nanostack-libservice +#define UNITY_INCLUDE_CONFIG_H // defined by library:utest +#define _RTE_ // defined by library:rtos + +#endif From 82a30d42db63f12a373a16f5ee76271ce1777ca9 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 25 Jan 2022 16:01:15 +0100 Subject: [PATCH 06/50] PortentaX8: allow using RPC as fake Serial --- cores/arduino/Arduino.h | 10 ++++++++++ libraries/RPC/src/RPC.cpp | 4 ++-- libraries/RPC/src/RPC.h | 2 +- variants/PORTENTA_X8/pins_arduino.h | 29 ++++++++++++++++++++++++++++- 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h index d6774dda0..ebcb80d98 100644 --- a/cores/arduino/Arduino.h +++ b/cores/arduino/Arduino.h @@ -112,6 +112,16 @@ extern analogin_config_t adcCurrentConfig; #define Serial3 _UART3_ #define Serial4 _UART4_ +#if defined(RPC_SERIAL) +#undef Serial +#if __has_include("RPC.h") +#define Serial RPC +#else +extern ErrorSerialClass ErrorSerial; +#define Serial ErrorSerial +#endif +#endif + #include "overloads.h" #endif diff --git a/libraries/RPC/src/RPC.cpp b/libraries/RPC/src/RPC.cpp index 8da7b923c..8eefeb6b3 100644 --- a/libraries/RPC/src/RPC.cpp +++ b/libraries/RPC/src/RPC.cpp @@ -139,7 +139,7 @@ static void disableCM4Autoboot() { } } -int RPCClass::begin() { +int RPCClass::begin(long unsigned int np, uint16_t nd) { OpenAMP_MPU_Config(); @@ -194,7 +194,7 @@ int RPCClass::begin() { #ifdef CORE_CM4 -int RPCClass::begin() { +int RPCClass::begin(long unsigned int np, uint16_t nd) { eventThread = new rtos::Thread(osPriorityHigh); eventThread->start(&eventHandler); diff --git a/libraries/RPC/src/RPC.h b/libraries/RPC/src/RPC.h index e21c09f86..08bbbaa47 100644 --- a/libraries/RPC/src/RPC.h +++ b/libraries/RPC/src/RPC.h @@ -44,7 +44,7 @@ namespace arduino { class RPCClass : public Stream, public rpc::detail::dispatcher { public: RPCClass() {}; - int begin(); + int begin(long unsigned int = 0, uint16_t = 0); void end() {}; int available(void) { return rx_buffer.available(); diff --git a/variants/PORTENTA_X8/pins_arduino.h b/variants/PORTENTA_X8/pins_arduino.h index eeab12fb9..de46f744f 100644 --- a/variants/PORTENTA_X8/pins_arduino.h +++ b/variants/PORTENTA_X8/pins_arduino.h @@ -100,7 +100,7 @@ static const uint8_t SCK = PIN_SPI_SCK; #define PIN_WIRE_SDA (11u) #define PIN_WIRE_SCL (12u) -//#define SERIAL_CDC 0 +#define RPC_SERIAL 1 #define HAS_UNIQUE_ISERIAL_DESCRIPTOR #define BOARD_VENDORID 0x2341 #define BOARD_PRODUCTID 0x0061 @@ -136,4 +136,31 @@ void _ontouch1200bps_(); #define USB_MAX_POWER (500) +#ifdef __cplusplus + +#include "api/HardwareSerial.h" + +#define MACRO_ERROR_SERIAL_STR "\n\n****\nPlease include RPC library to use Serial\n****\n\n" +#define MACRO_ERROR_SERIAL __attribute__ ((error(MACRO_ERROR_SERIAL_STR))) + +class ErrorSerialClass : public arduino::HardwareSerial { +public: + ErrorSerialClass() {}; + ~ErrorSerialClass() {}; + void MACRO_ERROR_SERIAL begin(long unsigned int); + void MACRO_ERROR_SERIAL begin(long unsigned int, uint16_t); + size_t MACRO_ERROR_SERIAL write(uint8_t); + MACRO_ERROR_SERIAL operator bool(); + void MACRO_ERROR_SERIAL end(); + int MACRO_ERROR_SERIAL peek(); + int MACRO_ERROR_SERIAL read(); + int MACRO_ERROR_SERIAL available(); + void MACRO_ERROR_SERIAL flush(); +}; + +extern ErrorSerialClass ErrorSerial; + +#endif + + #endif //__PINS_ARDUINO__ From dc15122fe8de69075341d67ca388277268c58e59 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 25 Jan 2022 17:25:59 +0100 Subject: [PATCH 07/50] x8: fix RPC not starting --- variants/PORTENTA_X8/hsem.c | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 variants/PORTENTA_X8/hsem.c diff --git a/variants/PORTENTA_X8/hsem.c b/variants/PORTENTA_X8/hsem.c new file mode 100644 index 000000000..1d72ef624 --- /dev/null +++ b/variants/PORTENTA_X8/hsem.c @@ -0,0 +1,6 @@ +#include "stm32h7xx_hal.h" + +void HSEM2_IRQHandler(void) +{ + HAL_HSEM_IRQHandler(); +} \ No newline at end of file From 6a8ee0f8cf333fec19d64ef4c08fd1c46f8a4e08 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 25 Jan 2022 17:26:40 +0100 Subject: [PATCH 08/50] Use SerialRPC for Serial obj --- cores/arduino/Arduino.h | 2 +- libraries/RPC/src/RPC.h | 9 +++++++++ libraries/RPC/src/SerialRPC.h | 4 ++-- variants/PORTENTA_X8/pins_arduino.h | 2 +- variants/PORTENTA_X8/variant.cpp | 7 ++++++- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h index ebcb80d98..f0bc087b4 100644 --- a/cores/arduino/Arduino.h +++ b/cores/arduino/Arduino.h @@ -115,7 +115,7 @@ extern analogin_config_t adcCurrentConfig; #if defined(RPC_SERIAL) #undef Serial #if __has_include("RPC.h") -#define Serial RPC +#define Serial SerialRPC #else extern ErrorSerialClass ErrorSerial; #define Serial ErrorSerial diff --git a/libraries/RPC/src/RPC.h b/libraries/RPC/src/RPC.h index 08bbbaa47..d8ca973ea 100644 --- a/libraries/RPC/src/RPC.h +++ b/libraries/RPC/src/RPC.h @@ -72,6 +72,15 @@ class RPCClass : public Stream, public rpc::detail::dispatcher { } } + template + void send(std::string const &func_name, + Args... args) { + + auto client = new rpc::client(); + client->call(func_name, args...); + delete client; + } + template RPCLIB_MSGPACK::object_handle call(std::string const &func_name, Args... args) { diff --git a/libraries/RPC/src/SerialRPC.h b/libraries/RPC/src/SerialRPC.h index 20bdcc45f..e2aea001b 100644 --- a/libraries/RPC/src/SerialRPC.h +++ b/libraries/RPC/src/SerialRPC.h @@ -45,13 +45,13 @@ class SerialRPCClass : public Stream { for (size_t i=0; i < len; i++) { tx_buffer.push_back(buf[i]); } - RPC.call("on_write", tx_buffer); + RPC.send("on_write", tx_buffer); return len; } using Print::write; - int begin() { + int begin(long unsigned int = 0, uint16_t = 0) { if (RPC.begin() == 0) { return 0; } diff --git a/variants/PORTENTA_X8/pins_arduino.h b/variants/PORTENTA_X8/pins_arduino.h index de46f744f..56f85c022 100644 --- a/variants/PORTENTA_X8/pins_arduino.h +++ b/variants/PORTENTA_X8/pins_arduino.h @@ -140,7 +140,7 @@ void _ontouch1200bps_(); #include "api/HardwareSerial.h" -#define MACRO_ERROR_SERIAL_STR "\n\n****\nPlease include RPC library to use Serial\n****\n\n" +#define MACRO_ERROR_SERIAL_STR "\n\n****\nPlease include SerialRPC library to use Serial\n****\n\n" #define MACRO_ERROR_SERIAL __attribute__ ((error(MACRO_ERROR_SERIAL_STR))) class ErrorSerialClass : public arduino::HardwareSerial { diff --git a/variants/PORTENTA_X8/variant.cpp b/variants/PORTENTA_X8/variant.cpp index 612ff81f1..75997906e 100644 --- a/variants/PORTENTA_X8/variant.cpp +++ b/variants/PORTENTA_X8/variant.cpp @@ -67,4 +67,9 @@ extern "C" { unsigned int PINCOUNT_fn() { return (sizeof(g_APinDescription) / sizeof(g_APinDescription[0])); } -} \ No newline at end of file +} + + +void initVariant() { + +} From d66b4127f57f38c4d8f86f4ae79b667d7398022a Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 25 Jan 2022 17:26:56 +0100 Subject: [PATCH 09/50] PortentaX8: recompile variant --- variants/PORTENTA_X8/conf/mbed_app.json | 2 +- variants/PORTENTA_X8/defines.txt | 4 ++-- variants/PORTENTA_X8/libs/libmbed.a | Bin 4708024 -> 4703666 bytes 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/variants/PORTENTA_X8/conf/mbed_app.json b/variants/PORTENTA_X8/conf/mbed_app.json index 8031bed69..08b653062 100644 --- a/variants/PORTENTA_X8/conf/mbed_app.json +++ b/variants/PORTENTA_X8/conf/mbed_app.json @@ -20,4 +20,4 @@ ] } } -} +} \ No newline at end of file diff --git a/variants/PORTENTA_X8/defines.txt b/variants/PORTENTA_X8/defines.txt index 48b4df719..37744313d 100644 --- a/variants/PORTENTA_X8/defines.txt +++ b/variants/PORTENTA_X8/defines.txt @@ -15,7 +15,6 @@ -DDEVICE_I2CSLAVE=1 -DDEVICE_INTERRUPTIN=1 -DDEVICE_LPTICKER=1 --DDEVICE_MPU=1 -DDEVICE_PORTIN=1 -DDEVICE_PORTINOUT=1 -DDEVICE_PORTOUT=1 @@ -35,8 +34,9 @@ -DEXTRA_IDLE_STACK_REQUIRED -D__FPU_PRESENT=1 -D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1642514424.654633 +-DMBED_BUILD_TIMESTAMP=1643127518.8108099 -D__MBED_CMSIS_RTOS_CM +-DMBED_MPU_CUSTOM -DMBED_TICKLESS -DMBEDTLS_FS_IO -DMBEDTLS_SHA1_C diff --git a/variants/PORTENTA_X8/libs/libmbed.a b/variants/PORTENTA_X8/libs/libmbed.a index 181049ed00314541df71e0d8eda556f34110f821..9196321301676df29427d458989f040bab17bbed 100644 GIT binary patch delta 41127 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 at76rxhDmel*d*p)^~~9p^gzRNxBfpWGJ^;J delta 44367 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 Date: Thu, 3 Feb 2022 10:05:37 +0100 Subject: [PATCH 10/50] RPC: x8: fix some strange incoherence --- libraries/RPC/src/RPC.h | 2 +- libraries/RPC/src/RPC_client.h | 8 +++++--- libraries/RPC/src/SerialRPC.h | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/libraries/RPC/src/RPC.h b/libraries/RPC/src/RPC.h index d8ca973ea..e45bcbf79 100644 --- a/libraries/RPC/src/RPC.h +++ b/libraries/RPC/src/RPC.h @@ -77,7 +77,7 @@ class RPCClass : public Stream, public rpc::detail::dispatcher { Args... args) { auto client = new rpc::client(); - client->call(func_name, args...); + client->send(func_name, args...); delete client; } diff --git a/libraries/RPC/src/RPC_client.h b/libraries/RPC/src/RPC_client.h index d59d73306..f5ea81f6b 100644 --- a/libraries/RPC/src/RPC_client.h +++ b/libraries/RPC/src/RPC_client.h @@ -20,7 +20,7 @@ class client { auto args_obj = std::make_tuple(args...); auto call_obj = std::make_tuple( - static_cast(client::request_type::request), (const int)callThreadId, func_name, + static_cast(client::request_type::call), (int32_t)callThreadId, func_name, args_obj); auto buffer = new RPCLIB_MSGPACK::sbuffer; @@ -48,9 +48,11 @@ class client { void send(std::string const &func_name, Args... args) { LOG_DEBUG("Call function {} and forget", func_name); + callThreadId = osThreadGetId(); + auto args_obj = std::make_tuple(args...); auto call_obj = std::make_tuple( - static_cast(client::request_type::request_no_answer), func_name, + static_cast(client::request_type::notification), (const int)callThreadId, func_name, args_obj); auto buffer = new RPCLIB_MSGPACK::sbuffer; @@ -66,7 +68,7 @@ class client { RPCLIB_MSGPACK::object_handle result; private: - enum class request_type { raw = 1, request = 2, request_no_answer = 3, response = 4 }; + enum class request_type { call = 0, notification = 2 };; void send_msgpack(RPCLIB_MSGPACK::sbuffer *buffer); void getResult(RPCLIB_MSGPACK::object_handle& res); diff --git a/libraries/RPC/src/SerialRPC.h b/libraries/RPC/src/SerialRPC.h index e2aea001b..08f6e4878 100644 --- a/libraries/RPC/src/SerialRPC.h +++ b/libraries/RPC/src/SerialRPC.h @@ -45,7 +45,7 @@ class SerialRPCClass : public Stream { for (size_t i=0; i < len; i++) { tx_buffer.push_back(buf[i]); } - RPC.send("on_write", tx_buffer); + RPC.send("tty", tx_buffer); return len; } @@ -55,7 +55,7 @@ class SerialRPCClass : public Stream { if (RPC.begin() == 0) { return 0; } - RPC.bind("on_write", mbed::callback(this, &SerialRPCClass::onWrite)); + RPC.bind("tty", mbed::callback(this, &SerialRPCClass::onWrite)); return 1; } From 31f15aaedfb6df0b3ef2d4a964d141ee3857eff0 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 3 Feb 2022 18:02:52 +0100 Subject: [PATCH 11/50] RPC: fix SerialRPC print() --- libraries/RPC/src/SerialRPC.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/RPC/src/SerialRPC.h b/libraries/RPC/src/SerialRPC.h index 08f6e4878..3473cc264 100644 --- a/libraries/RPC/src/SerialRPC.h +++ b/libraries/RPC/src/SerialRPC.h @@ -33,6 +33,9 @@ class SerialRPCClass : public Stream { return write(&c, 1); } + size_t write(const uint8_t* buf, size_t len) override { + return write((uint8_t*)buf, len); + } size_t write(const char* buf, size_t len) { return write((uint8_t*)buf, len); } @@ -73,7 +76,7 @@ class SerialRPCClass : public Stream { private: mbed::Callback _rx; RingBufferN<1024> rx_buffer; - std::vector tx_buffer; + std::vector tx_buffer; }; } From b75f239eb388bc9c7025ac202d0497516d4f6c57 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 4 Feb 2022 16:29:18 +0100 Subject: [PATCH 12/50] x8: add echo server example --- .../PortentaX8_EchoServer.ino | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 libraries/RPC/examples/PortentaX8_EchoServer/PortentaX8_EchoServer.ino diff --git a/libraries/RPC/examples/PortentaX8_EchoServer/PortentaX8_EchoServer.ino b/libraries/RPC/examples/PortentaX8_EchoServer/PortentaX8_EchoServer.ino new file mode 100644 index 000000000..531761cce --- /dev/null +++ b/libraries/RPC/examples/PortentaX8_EchoServer/PortentaX8_EchoServer.ino @@ -0,0 +1,41 @@ +#include "SerialRPC.h" + +/* + * This sketch demonstrates how to interact with the Portenta X8 Serial port (over USB) + * On the board, launch both 'proxy' and 'example' binaries (from https://github.com/bcmi-labs/portentax8-m4-proxy) + * The M4 provides the 'subtract' API (which will be invoked by 'example' + * It also provides a full duplex Serial-like interface that is proxies through the serial monitor + * Last but not leas, when you write 'echo' the corresponding function in 'example' will be triggered + */ + +int subtract(int a, int b) { + return a-b; +} + +void setup() { + // put your setup code here, to run once: + Serial.begin(115200); + RPC.bind("subtract", subtract); + delay(1000); +} + +int i = 0; +void loop() { + + //RPC.print("hello"); + //RPC.send("echo", "test"); + //auto res = RPC.call("add", 5, 8).as(); + //RPC.send("echo", String(res).c_str()); + + String str = ""; + while (Serial.available()) { + str += (char)Serial.read(); + } + if (str != "") { + Serial.print(str); + } + if (str.startsWith("echo")) { + delay(100); + RPC.send("echo", "test"); + } +} From 4b8f6caab7af4b8a3162fadd51646af225450c26 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 15 Feb 2022 17:47:04 +0100 Subject: [PATCH 13/50] Use packaged adb --- extras/adb-wrapper | 5 ----- platform.txt | 8 +++----- 2 files changed, 3 insertions(+), 10 deletions(-) delete mode 100755 extras/adb-wrapper diff --git a/extras/adb-wrapper b/extras/adb-wrapper deleted file mode 100755 index 6f55337ab..000000000 --- a/extras/adb-wrapper +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -adb push $2 /tmp -FILENAME=`basename $2` -adb shell openocd -f /home/fio/extra/openocd_script.cfg -c "\"init; halt; flash write_image /tmp/$FILENAME 0x8100000; reset; shutdown\"" diff --git a/platform.txt b/platform.txt index d369fab95..4b23ef92b 100644 --- a/platform.txt +++ b/platform.txt @@ -199,13 +199,11 @@ tools.imgtool.flags=sign --key "{build.keys.keychain}/{build.keys.sign_key}" --e # ADB WRAPPER # -#tools.adb.path={runtime.tools.adb.path} -# temp -tools.adb.path={runtime.platform.path}/extras/ -tools.adb.cmd=adb-wrapper +tools.adb.path={runtime.tools.adb.path} +tools.adb.cmd=adb tools.adb.upload.params.verbose=-v tools.adb.upload.params.quiet= -tools.adb.upload.pattern="{path}/{cmd}" flash "{build.path}/{build.project_name}.bin" +tools.adb.upload.pattern="{path}/{cmd}" push "{build.path}/{build.project_name}.elf" "/tmp/arduino/m4-user-sketch.elf" # # GDB (Debugger) From 0beec5cc4337579ca0607c644f84a9d904080365 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 15 Feb 2022 17:58:21 +0100 Subject: [PATCH 14/50] package_json: add portenta x8 and adb --- extras/package_index.json.NewTag.template | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/extras/package_index.json.NewTag.template b/extras/package_index.json.NewTag.template index ed27dc74b..24590ca72 100644 --- a/extras/package_index.json.NewTag.template +++ b/extras/package_index.json.NewTag.template @@ -202,6 +202,9 @@ "boards": [ { "name": "Arduino Portenta H7" + }, + { + "name": "Arduino Portenta X8" } ], "toolsDependencies": [ @@ -224,6 +227,11 @@ "packager": "arduino", "version": "1.8.0-arduino", "name": "imgtool" + }, + { + "packager": "arduino", + "version": "1.5.1", + "name": "adb" } ] }, @@ -334,4 +342,4 @@ "tools": [] } ] -} \ No newline at end of file +} From 646c1ab9bd900ee1756642c3cfaf40fe7330e4c8 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 15 Feb 2022 18:07:33 +0100 Subject: [PATCH 15/50] Allign patches with extrapatches-6.15.1 --- patches/0100-Add-Portenta-X8-target.patch | 25 +++++++++++----- .../0101-PortentaX8-remove-MPU-support.patch | 30 +++++++++++++++++++ 2 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 patches/0101-PortentaX8-remove-MPU-support.patch diff --git a/patches/0100-Add-Portenta-X8-target.patch b/patches/0100-Add-Portenta-X8-target.patch index 3fb62f2fe..ceb327d86 100644 --- a/patches/0100-Add-Portenta-X8-target.patch +++ b/patches/0100-Add-Portenta-X8-target.patch @@ -1,14 +1,14 @@ -From 415969b9ecbccd11833284032b939978394bc6b5 Mon Sep 17 00:00:00 2001 +From 7ec48c32338a6aba090a90aafc45602d8c02e050 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 18 Jan 2022 16:53:27 +0100 -Subject: [PATCH] Add Portenta X8 target +Subject: [PATCH 100/101] Add Portenta X8 target --- .../TARGET_PORTENTA_X8/CMakeLists.txt | 16 + .../TARGET_PORTENTA_X8/PeripheralPins.c | 570 ++++++++++++++++++ .../TARGET_PORTENTA_X8/PinNames.h | 381 ++++++++++++ - targets/targets.json | 32 + - 4 files changed, 999 insertions(+) + targets/targets.json | 34 +- + 4 files changed, 1000 insertions(+), 1 deletion(-) create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/CMakeLists.txt create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PeripheralPins.c create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_X8/PinNames.h @@ -999,10 +999,10 @@ index 0000000000..1cce05b2e2 + +#endif diff --git a/targets/targets.json b/targets/targets.json -index b28205d060..c64a6491ab 100644 +index ffd3eb1efd..3dc63e01a9 100644 --- a/targets/targets.json +++ b/targets/targets.json -@@ -3252,6 +3252,38 @@ +@@ -3509,6 +3509,37 @@ "MPU" ] }, @@ -1035,12 +1035,21 @@ index b28205d060..c64a6491ab 100644 + "lse_available": 1, + "lpticker_delay_ticks": 0, + "i2c_timing_value_algo": true ++ } ++ }, + "MCU_STM32H750xB": { + "inherits": [ + "MCU_STM32H7" +@@ -3527,7 +3558,8 @@ + ], + "overrides": { + "system_power_supply": "PWR_LDO_SUPPLY" +- } + }, + "device_name": "STM32H747XIHx" -+ }, + }, "MCU_STM32H7A3xIQ": { "inherits": [ - "MCU_STM32H7" -- 2.34.1 diff --git a/patches/0101-PortentaX8-remove-MPU-support.patch b/patches/0101-PortentaX8-remove-MPU-support.patch new file mode 100644 index 000000000..f3f6bd51a --- /dev/null +++ b/patches/0101-PortentaX8-remove-MPU-support.patch @@ -0,0 +1,30 @@ +From 90b7c9bc390ea5caeda97d0443d8a488233db1b3 Mon Sep 17 00:00:00 2001 +From: Martino Facchin +Date: Tue, 25 Jan 2022 17:17:58 +0100 +Subject: [PATCH 101/101] PortentaX8: remove MPU support + +--- + targets/targets.json | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/targets/targets.json b/targets/targets.json +index 3dc63e01a9..0c4657d626 100644 +--- a/targets/targets.json ++++ b/targets/targets.json +@@ -3529,7 +3529,12 @@ + "macros_add": [ + "MBEDTLS_FS_IO", + "MBEDTLS_SHA1_C", +- "CM4_BOOT_BY_APPLICATION" ++ "CM4_BOOT_BY_APPLICATION", ++ "CORE_CM4", ++ "MBED_MPU_CUSTOM" ++ ], ++ "device_has_remove": [ ++ "MPU" + ], + "detect_code": ["0813"], + "overrides": { +-- +2.34.1 + From aa154fca086bfd07876487a664383458ebd6822b Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 15 Feb 2022 18:28:01 +0100 Subject: [PATCH 16/50] Update adb version to 32.0.0 --- extras/package_index.json.NewTag.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/package_index.json.NewTag.template b/extras/package_index.json.NewTag.template index 24590ca72..27e2c0da0 100644 --- a/extras/package_index.json.NewTag.template +++ b/extras/package_index.json.NewTag.template @@ -230,7 +230,7 @@ }, { "packager": "arduino", - "version": "1.5.1", + "version": "32.0.0", "name": "adb" } ] From 2b98fa3f727f3ae9e9858bc26c48ed7c99dfdf92 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 23 Mar 2022 17:12:53 +0100 Subject: [PATCH 17/50] RPC: gracefully handle timeouts --- libraries/RPC/src/RPC.cpp | 12 ++++++------ libraries/RPC/src/RPC.h | 18 ++++++++++++++++++ libraries/RPC/src/RPC_client.h | 20 ++++++++++++++++---- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/libraries/RPC/src/RPC.cpp b/libraries/RPC/src/RPC.cpp index 8eefeb6b3..239ecb749 100644 --- a/libraries/RPC/src/RPC.cpp +++ b/libraries/RPC/src/RPC.cpp @@ -149,13 +149,13 @@ int RPCClass::begin(long unsigned int np, uint16_t nd) { // Ideally this should execute only once disableCM4Autoboot(); - eventThread = new rtos::Thread(osPriorityHigh); + eventThread = new rtos::Thread(osPriorityHigh, 4096); eventThread->start(&eventHandler); - dispatcherThread = new rtos::Thread(osPriorityNormal); + dispatcherThread = new rtos::Thread(osPriorityNormal, 4096); dispatcherThread->start(mbed::callback(this, &RPCClass::dispatch)); - responseThread = new rtos::Thread(osPriorityNormal); + responseThread = new rtos::Thread(osPriorityNormal, 4096); responseThread->start(mbed::callback(this, &RPCClass::response)); /* Initialize OpenAmp and libmetal libraries */ @@ -196,13 +196,13 @@ int RPCClass::begin(long unsigned int np, uint16_t nd) { int RPCClass::begin(long unsigned int np, uint16_t nd) { - eventThread = new rtos::Thread(osPriorityHigh); + eventThread = new rtos::Thread(osPriorityHigh, 4096); eventThread->start(&eventHandler); - dispatcherThread = new rtos::Thread(osPriorityNormal); + dispatcherThread = new rtos::Thread(osPriorityNormal, 4096); dispatcherThread->start(mbed::callback(this, &RPCClass::dispatch)); - responseThread = new rtos::Thread(osPriorityNormal); + responseThread = new rtos::Thread(osPriorityNormal, 4096); responseThread->start(mbed::callback(this, &RPCClass::response)); /* Initialize OpenAmp and libmetal libraries */ diff --git a/libraries/RPC/src/RPC.h b/libraries/RPC/src/RPC.h index e45bcbf79..8aa8fa7e7 100644 --- a/libraries/RPC/src/RPC.h +++ b/libraries/RPC/src/RPC.h @@ -81,6 +81,10 @@ class RPCClass : public Stream, public rpc::detail::dispatcher { delete client; } + void setTimeout(uint32_t milliseconds) { + _timeout = milliseconds; + } + template RPCLIB_MSGPACK::object_handle call(std::string const &func_name, Args... args) { @@ -98,8 +102,15 @@ class RPCClass : public Stream, public rpc::detail::dispatcher { } mtx.unlock(); + clients[i]->setTimeout(_timeout); + has_timed_out = false; + // thread start and client .call clients[i]->call(func_name, args...); + + if (clients[i]->timedOut()) { + has_timed_out = true; + } RPCLIB_MSGPACK::object_handle ret = std::move(clients[i]->result); mtx.lock(); @@ -111,6 +122,10 @@ class RPCClass : public Stream, public rpc::detail::dispatcher { rpc::client* clients[10]; + bool timedOut() { + return has_timed_out; + } + private: RingBufferN<256> rx_buffer; bool initialized = false; @@ -133,6 +148,9 @@ class RPCClass : public Stream, public rpc::detail::dispatcher { mbed::Callback _rx; + uint32_t _timeout = osWaitForever; + bool has_timed_out = false; + //rpc::detail::response response; RPCLIB_MSGPACK::object_handle call_result; diff --git a/libraries/RPC/src/RPC_client.h b/libraries/RPC/src/RPC_client.h index f5ea81f6b..55c4a1df6 100644 --- a/libraries/RPC/src/RPC_client.h +++ b/libraries/RPC/src/RPC_client.h @@ -28,12 +28,13 @@ class client { send_msgpack(buffer); - osSignalWait(0, osWaitForever); - - //getResult(result); - + auto e = osSignalWait(0, timeout); delete buffer; + if (e.status != osEventSignal) { + has_timed_out = true; + } + RPCLIB_MSGPACK::object_handle q = std::move(result); return q; } @@ -62,11 +63,22 @@ class client { delete buffer; } + void setTimeout(uint32_t milliseconds) { + timeout = milliseconds; + } + + bool timedOut() { + return has_timed_out; + } + protected: osThreadId callThreadId; friend class arduino::RPCClass; RPCLIB_MSGPACK::object_handle result; + uint32_t timeout = osWaitForever; + bool has_timed_out = false; + private: enum class request_type { call = 0, notification = 2 };; From 0684fb5f1571112cfa46c7a5a3bdcd0d0d5d25ff Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 24 Mar 2022 10:29:01 +0100 Subject: [PATCH 18/50] x8: expose hidden i2c and spi ports --- variants/PORTENTA_X8/pins_arduino.h | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/variants/PORTENTA_X8/pins_arduino.h b/variants/PORTENTA_X8/pins_arduino.h index 56f85c022..a7a2ffe4d 100644 --- a/variants/PORTENTA_X8/pins_arduino.h +++ b/variants/PORTENTA_X8/pins_arduino.h @@ -74,9 +74,6 @@ static const uint8_t A7 = PIN_A7; #define D20 (20u) #define D21 (21u) -//DACs -#define DAC (A6) - // Serial #define PIN_SERIAL_RX (22ul) #define PIN_SERIAL_TX (21ul) @@ -86,10 +83,10 @@ static const uint8_t A7 = PIN_A7; #define SERIAL1_RX (digitalPinToPinName(PIN_SERIAL_RX)) // SPI -#define PIN_SPI_MISO (10u) -#define PIN_SPI_MOSI (8u) -#define PIN_SPI_SCK (9u) -#define PIN_SPI_SS (7u) +#define PIN_SPI_MISO (0u) +#define PIN_SPI_MOSI (A6) +#define PIN_SPI_SCK (A5) +#define PIN_SPI_SS (1u) static const uint8_t SS = PIN_SPI_SS; // SPI Slave SS not used. Set here only for reference. static const uint8_t MOSI = PIN_SPI_MOSI; @@ -97,8 +94,8 @@ static const uint8_t MISO = PIN_SPI_MISO; static const uint8_t SCK = PIN_SPI_SCK; // Wire -#define PIN_WIRE_SDA (11u) -#define PIN_WIRE_SCL (12u) +#define PIN_WIRE_SDA (38u) +#define PIN_WIRE_SCL (29u) #define RPC_SERIAL 1 #define HAS_UNIQUE_ISERIAL_DESCRIPTOR @@ -111,17 +108,12 @@ static const uint8_t SCK = PIN_SPI_SCK; uint8_t getUniqueSerialNumber(uint8_t* name); void _ontouch1200bps_(); -#define WIRE_HOWMANY 0 - -#define I2C_SDA (digitalPinToPinName(PIN_WIRE_SDA)) -#define I2C_SCL (digitalPinToPinName(PIN_WIRE_SCL)) +#define WIRE_HOWMANY 1 -#define I2C_SDA_INTERNAL (PB_7) -#define I2C_SCL_INTERNAL (PB_6) -#define I2C_SDA1 I2C_SDA_INTERNAL -#define I2C_SCL1 I2C_SCL_INTERNAL +#define I2C_SDA (PC_9) // marked as PWM8 +#define I2C_SCL (PA_8) // marked as PWM6 -#define SPI_HOWMANY 0 +#define SPI_HOWMANY 1 #define SPI_MISO (digitalPinToPinName(PIN_SPI_MISO)) #define SPI_MOSI (digitalPinToPinName(PIN_SPI_MOSI)) From 7754232a5726d43266b2378960273b0710d4b084 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 24 Mar 2022 16:16:22 +0100 Subject: [PATCH 19/50] x8: complete previous commit --- variants/PORTENTA_X8/pins_arduino.h | 6 +++--- variants/PORTENTA_X8/variant.cpp | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/variants/PORTENTA_X8/pins_arduino.h b/variants/PORTENTA_X8/pins_arduino.h index a7a2ffe4d..864aaa4ab 100644 --- a/variants/PORTENTA_X8/pins_arduino.h +++ b/variants/PORTENTA_X8/pins_arduino.h @@ -115,9 +115,9 @@ void _ontouch1200bps_(); #define SPI_HOWMANY 1 -#define SPI_MISO (digitalPinToPinName(PIN_SPI_MISO)) -#define SPI_MOSI (digitalPinToPinName(PIN_SPI_MOSI)) -#define SPI_SCK (digitalPinToPinName(PIN_SPI_SCK)) +#define SPI_MISO (digitalPinToPinName(PIN_SPI_MISO)) // marked as 0 +#define SPI_MOSI (digitalPinToPinName(PIN_SPI_MOSI)) // marked as A6 +#define SPI_SCK (digitalPinToPinName(PIN_SPI_SCK)) // marked as A5 #define digitalPinToPort(P) (digitalPinToPinName(P)/32) diff --git a/variants/PORTENTA_X8/variant.cpp b/variants/PORTENTA_X8/variant.cpp index 75997906e..fd0e972ba 100644 --- a/variants/PORTENTA_X8/variant.cpp +++ b/variants/PORTENTA_X8/variant.cpp @@ -51,7 +51,7 @@ PinDescription g_APinDescription[] = { { PB_10, NULL, NULL, NULL }, // D26 { PA_11, NULL, NULL, NULL }, // D27 { PD_15, NULL, NULL, NULL }, // D28 - { PA_15, NULL, NULL, NULL }, // D29 + { PA_8, NULL, NULL, NULL }, // D29 { PC_6, NULL, NULL, NULL }, // D30 { PA_12, NULL, NULL, NULL }, // D31 { PC_8, NULL, NULL, NULL }, // D32 @@ -61,6 +61,10 @@ PinDescription g_APinDescription[] = { { PC_1, NULL, NULL, NULL }, // D34 { PE_5, NULL, NULL, NULL }, // D35 + // DUAL CONNECTION + { PG_6, NULL, NULL, NULL }, // D36 + { PG_7, NULL, NULL, NULL }, // D37 + { PC_9, NULL, NULL, NULL }, // D38 }; extern "C" { From 2d40560702ed316ae51ee3a82ef0376627f32473 Mon Sep 17 00:00:00 2001 From: Giampaolo Mancini Date: Fri, 25 Mar 2022 16:57:16 +0100 Subject: [PATCH 20/50] Fix MsgPackRPC Notify (::send) implementation --- libraries/RPC/src/RPC_client.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/RPC/src/RPC_client.h b/libraries/RPC/src/RPC_client.h index 55c4a1df6..b1e0ed34c 100644 --- a/libraries/RPC/src/RPC_client.h +++ b/libraries/RPC/src/RPC_client.h @@ -53,8 +53,7 @@ class client { auto args_obj = std::make_tuple(args...); auto call_obj = std::make_tuple( - static_cast(client::request_type::notification), (const int)callThreadId, func_name, - args_obj); + static_cast(client::request_type::notification), func_name, args_obj); auto buffer = new RPCLIB_MSGPACK::sbuffer; RPCLIB_MSGPACK::pack(*buffer, call_obj); From da69e33bcb9c783c69eda7654468013aa9cd15cd Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 28 Mar 2022 15:46:19 +0200 Subject: [PATCH 21/50] Potenta: increase RPC message buffer size --- libraries/RPC/src/RPC.cpp | 4 ++-- variants/PORTENTA_H7_M4/conf/mbed_app.json | 2 +- variants/PORTENTA_H7_M4/defines.txt | 2 +- variants/PORTENTA_H7_M7/conf/mbed_app.json | 2 +- variants/PORTENTA_H7_M7/defines.txt | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/RPC/src/RPC.cpp b/libraries/RPC/src/RPC.cpp index 239ecb749..4dfd5998a 100644 --- a/libraries/RPC/src/RPC.cpp +++ b/libraries/RPC/src/RPC.cpp @@ -11,8 +11,8 @@ void rpc::client::send_msgpack(RPCLIB_MSGPACK::sbuffer *buffer) { OPENAMP_send(&rp_endpoints[ENDPOINT_RAW], (const uint8_t*)buffer->data(), buffer->size()); } -static RingBufferN<256> intermediate_buffer; -static RingBufferN<256> intermediate_buffer_resp; +static RingBufferN intermediate_buffer; +static RingBufferN intermediate_buffer_resp; //static uint8_t intermediate_buffer_resp[256]; static rtos::Mutex rx_mtx; diff --git a/variants/PORTENTA_H7_M4/conf/mbed_app.json b/variants/PORTENTA_H7_M4/conf/mbed_app.json index 2cc031954..6379e53f9 100644 --- a/variants/PORTENTA_H7_M4/conf/mbed_app.json +++ b/variants/PORTENTA_H7_M4/conf/mbed_app.json @@ -17,7 +17,7 @@ "VIRTIO_SLAVE_ONLY", "NO_ATOMIC_64_SUPPORT", "METAL_MAX_DEVICE_REGIONS=2", - "RPMSG_BUFFER_SIZE=100" + "RPMSG_BUFFER_SIZE=2048" ] } } diff --git a/variants/PORTENTA_H7_M4/defines.txt b/variants/PORTENTA_H7_M4/defines.txt index f19f5f07a..acd137851 100644 --- a/variants/PORTENTA_H7_M4/defines.txt +++ b/variants/PORTENTA_H7_M4/defines.txt @@ -55,7 +55,7 @@ -DNO_ATOMIC_64_SUPPORT -DNO_VTOR_RELOCATE -DQSPI_NO_SAMPLE_SHIFT --DRPMSG_BUFFER_SIZE=100 +-DRPMSG_BUFFER_SIZE=2048 -DSTM32H747xx -DTARGET_CORDIO -DTARGET_CORTEX diff --git a/variants/PORTENTA_H7_M7/conf/mbed_app.json b/variants/PORTENTA_H7_M7/conf/mbed_app.json index cffc96ec4..6cc069773 100644 --- a/variants/PORTENTA_H7_M7/conf/mbed_app.json +++ b/variants/PORTENTA_H7_M7/conf/mbed_app.json @@ -22,7 +22,7 @@ "VIRTIO_MASTER_ONLY", "NO_ATOMIC_64_SUPPORT", "METAL_MAX_DEVICE_REGIONS=2", - "RPMSG_BUFFER_SIZE=100" + "RPMSG_BUFFER_SIZE=2048" ] } } diff --git a/variants/PORTENTA_H7_M7/defines.txt b/variants/PORTENTA_H7_M7/defines.txt index 281a6ef41..48cd65b85 100644 --- a/variants/PORTENTA_H7_M7/defines.txt +++ b/variants/PORTENTA_H7_M7/defines.txt @@ -54,7 +54,7 @@ -DMETAL_MAX_DEVICE_REGIONS=2 -DNO_ATOMIC_64_SUPPORT -DQSPI_NO_SAMPLE_SHIFT --DRPMSG_BUFFER_SIZE=100 +-DRPMSG_BUFFER_SIZE=2048 -DSTM32H747xx -DTARGET_CORDIO -DTARGET_CORTEX From 09f7813b864b8a7b82721f1813f1734e7f1c358e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 28 Mar 2022 15:56:07 +0200 Subject: [PATCH 22/50] x8: add compulsory postbuild.cmd --- boards.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/boards.txt b/boards.txt index df83452aa..4df410f97 100644 --- a/boards.txt +++ b/boards.txt @@ -258,6 +258,8 @@ portenta_x8.bootloader.programmer=-f interface/stlink.cfg portenta_x8.bootloader.extra_action.preflash=stm32h7x option_write 0 0x01c 0xb86aaf0 portenta_x8.bootloader.file=PORTENTA_X7/STM32H747AII6_CM7.elf +portenta_x8.build.postbuild.cmd="{tools.imgtool.path}/{tools.imgtool.cmd}" exit + ############################################################## nano33ble.name=Arduino Nano 33 BLE From c3f702b131aeff93b4e03943e8210abf0d0a55c5 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 31 Mar 2022 17:32:12 +0200 Subject: [PATCH 23/50] x8: rpc: allow using Serial in libraries --- cores/arduino/Arduino.h | 1 + libraries/RPC/src/SerialRPC.cpp | 22 ++++++++++++++++++++++ libraries/RPC/src/SerialRPC.h | 33 +++++++++++---------------------- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h index f0bc087b4..c06201cfe 100644 --- a/cores/arduino/Arduino.h +++ b/cores/arduino/Arduino.h @@ -115,6 +115,7 @@ extern analogin_config_t adcCurrentConfig; #if defined(RPC_SERIAL) #undef Serial #if __has_include("RPC.h") +#include "SerialRPC.h" #define Serial SerialRPC #else extern ErrorSerialClass ErrorSerial; diff --git a/libraries/RPC/src/SerialRPC.cpp b/libraries/RPC/src/SerialRPC.cpp index d43b1b16d..1965e0cba 100644 --- a/libraries/RPC/src/SerialRPC.cpp +++ b/libraries/RPC/src/SerialRPC.cpp @@ -1,3 +1,25 @@ #include "SerialRPC.h" +#include "RPC.h" + +size_t arduino::SerialRPCClass::write(uint8_t* buf, size_t len) { + tx_buffer.clear(); + for (size_t i=0; i < len; i++) { + tx_buffer.push_back(buf[i]); + } + RPC.send("tty", tx_buffer); + return len; +} + +int arduino::SerialRPCClass::begin(long unsigned int, uint16_t) { + if (RPC.begin() == 0) { + return 0; + } + RPC.bind("tty", mbed::callback(this, &SerialRPCClass::onWrite)); + return 1; +} + +arduino::SerialRPCClass::operator bool() { + return RPC; +} arduino::SerialRPCClass SerialRPC; \ No newline at end of file diff --git a/libraries/RPC/src/SerialRPC.h b/libraries/RPC/src/SerialRPC.h index 3473cc264..e732f19db 100644 --- a/libraries/RPC/src/SerialRPC.h +++ b/libraries/RPC/src/SerialRPC.h @@ -1,5 +1,8 @@ -#include "RPC.h" +#ifndef __SERIAL_RPC__ +#define __SERIAL_RPC__ + #include "Arduino.h" +#include namespace arduino { @@ -29,6 +32,9 @@ class SerialRPCClass : public Stream { } } + int begin(long unsigned int = 0, uint16_t = 0); + size_t write(uint8_t* buf, size_t len); + size_t write(uint8_t c) { return write(&c, 1); } @@ -43,28 +49,9 @@ class SerialRPCClass : public Stream { return write((uint8_t*)buf, len); } - size_t write(uint8_t* buf, size_t len) { - tx_buffer.clear(); - for (size_t i=0; i < len; i++) { - tx_buffer.push_back(buf[i]); - } - RPC.send("tty", tx_buffer); - return len; - } - using Print::write; - int begin(long unsigned int = 0, uint16_t = 0) { - if (RPC.begin() == 0) { - return 0; - } - RPC.bind("tty", mbed::callback(this, &SerialRPCClass::onWrite)); - return 1; - } - - operator bool() { - return RPC; - } + operator bool(); void attach(void (*fptr)(void)) { @@ -80,4 +67,6 @@ class SerialRPCClass : public Stream { }; } -extern arduino::SerialRPCClass SerialRPC; \ No newline at end of file +extern arduino::SerialRPCClass SerialRPC; + +#endif \ No newline at end of file From 31bde97a9aa1f1aae04e048f63431234cc4579d3 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 31 Mar 2022 17:36:28 +0200 Subject: [PATCH 24/50] x8: rpc: fix various warnings --- libraries/RPC/src/RPC.cpp | 8 ++++---- libraries/openamp_arduino/src/openamp.c | 8 +++++--- libraries/openamp_arduino/src/openamp.h | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/libraries/RPC/src/RPC.cpp b/libraries/RPC/src/RPC.cpp index 4dfd5998a..68b23dd84 100644 --- a/libraries/RPC/src/RPC.cpp +++ b/libraries/RPC/src/RPC.cpp @@ -178,8 +178,8 @@ int RPCClass::begin(long unsigned int np, uint16_t nd) { * The rpmsg service is initiate by the remote processor, on H7 new_service_cb * callback is received on service creation. Wait for the callback */ - OPENAMP_Wait_EndPointready(&rp_endpoints[ENDPOINT_RAW], HAL_GetTick() + 500); - OPENAMP_Wait_EndPointready(&rp_endpoints[ENDPOINT_RESPONSE], HAL_GetTick() + 500); + OPENAMP_Wait_EndPointready(&rp_endpoints[ENDPOINT_RAW], millis() + 500); + OPENAMP_Wait_EndPointready(&rp_endpoints[ENDPOINT_RESPONSE], millis() + 500); // Send first dummy message to enable the channel uint8_t message = 0x00; @@ -241,7 +241,7 @@ void RPCClass::response() { } while (true) { - osEvent v = osSignalWait(0, osWaitForever); + osSignalWait(0, osWaitForever); { RPCLIB_MSGPACK::unpacker pac; @@ -286,7 +286,7 @@ void RPCClass::dispatch() { dispatcherThreadId = osThreadGetId(); while (true) { - osEvent v = osSignalWait(0, osWaitForever); + osSignalWait(0, osWaitForever); { RPCLIB_MSGPACK::unpacker pac; diff --git a/libraries/openamp_arduino/src/openamp.c b/libraries/openamp_arduino/src/openamp.c index af466faa1..43180dadd 100644 --- a/libraries/openamp_arduino/src/openamp.c +++ b/libraries/openamp_arduino/src/openamp.c @@ -167,12 +167,14 @@ int OPENAMP_check_for_message(void) return MAILBOX_Poll(rvdev.vdev); } -void OPENAMP_Wait_EndPointready(struct rpmsg_endpoint *rp_ept, size_t timeout) +unsigned long millis(); + +void OPENAMP_Wait_EndPointready(struct rpmsg_endpoint *rp_ept, size_t deadline) { - while(!is_rpmsg_ept_ready(rp_ept) && (HAL_GetTick() < timeout)) { + while(!is_rpmsg_ept_ready(rp_ept) && (millis() < deadline)) { MAILBOX_Poll(rvdev.vdev); } - if (HAL_GetTick() >= timeout) { + if (millis() >= deadline) { printf("OPENAMP_Wait_EndPointready %X timed out\n\r", (unsigned int)rp_ept); } } diff --git a/libraries/openamp_arduino/src/openamp.h b/libraries/openamp_arduino/src/openamp.h index c6f87b456..44ada3b33 100644 --- a/libraries/openamp_arduino/src/openamp.h +++ b/libraries/openamp_arduino/src/openamp.h @@ -49,7 +49,7 @@ int OPENAMP_create_endpoint(struct rpmsg_endpoint *ept, const char *name, int OPENAMP_check_for_message(void); /* Wait loop on endpoint ready ( message dest address is know)*/ -void OPENAMP_Wait_EndPointready(struct rpmsg_endpoint *rp_ept, size_t timeout); +void OPENAMP_Wait_EndPointready(struct rpmsg_endpoint *rp_ept, size_t deadline); #ifdef __cplusplus } From 9619ec8745cb89f84dd6582d653a7940ef5f838e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 1 Apr 2022 09:46:39 +0200 Subject: [PATCH 25/50] Drastically speedup client.read() operation Since the data being consumed by the reader thread is going to be read somewhere via read() APIs (that are known to be fair and call yield()), we can avoid the delay() when the buffer needs to be flushed by setting the reader thread priority to something lower than the main thread. To be tested on some real world applications (by now, tested with Ethernet/WiFi Client/Server "basic" examples) --- libraries/SocketWrapper/src/MbedClient.cpp | 4 +--- libraries/SocketWrapper/src/MbedClient.h | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/libraries/SocketWrapper/src/MbedClient.cpp b/libraries/SocketWrapper/src/MbedClient.cpp index ad1a14cbc..2c82da918 100644 --- a/libraries/SocketWrapper/src/MbedClient.cpp +++ b/libraries/SocketWrapper/src/MbedClient.cpp @@ -21,7 +21,6 @@ void arduino::MbedClient::readSocket() { do { if (rxBuffer.availableForStore() == 0) { yield(); - delay(100); continue; } mutex->lock(); @@ -34,7 +33,6 @@ void arduino::MbedClient::readSocket() { } if (ret == NSAPI_ERROR_WOULD_BLOCK || ret == 0) { yield(); - delay(100); mutex->unlock(); continue; } @@ -71,7 +69,7 @@ void arduino::MbedClient::configureSocket(Socket *_s) { } mutex->lock(); if (reader_th == nullptr) { - reader_th = new rtos::Thread; + reader_th = new rtos::Thread(osPriorityNormal - 2); reader_th->start(mbed::callback(this, &MbedClient::readSocket)); } mutex->unlock(); diff --git a/libraries/SocketWrapper/src/MbedClient.h b/libraries/SocketWrapper/src/MbedClient.h index 07e615cae..a2132ebf3 100644 --- a/libraries/SocketWrapper/src/MbedClient.h +++ b/libraries/SocketWrapper/src/MbedClient.h @@ -73,7 +73,7 @@ class MbedClient : public arduino::Client { int connectSSL(IPAddress ip, uint16_t port); int connectSSL(const char* host, uint16_t port, bool disableSNI = false); size_t write(uint8_t); - size_t write(const uint8_t* buf, size_t size); + size_t write(const uint8_t* buf, size_t size) override; int available(); int read(); int read(uint8_t* buf, size_t size); From 5b83ec27de05f9220dac587ac382bc35aedbbf8a Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 1 Apr 2022 10:02:47 +0200 Subject: [PATCH 26/50] rpc: explicitely include RPC.h to use RPC object --- .../RPC/examples/PortentaX8_EchoServer/PortentaX8_EchoServer.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/RPC/examples/PortentaX8_EchoServer/PortentaX8_EchoServer.ino b/libraries/RPC/examples/PortentaX8_EchoServer/PortentaX8_EchoServer.ino index 531761cce..25f8c2ee3 100644 --- a/libraries/RPC/examples/PortentaX8_EchoServer/PortentaX8_EchoServer.ino +++ b/libraries/RPC/examples/PortentaX8_EchoServer/PortentaX8_EchoServer.ino @@ -1,3 +1,4 @@ +#include "RPC.h" #include "SerialRPC.h" /* From 7a11cf03f766143232da3fc867d395030a3865c7 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 5 Apr 2022 11:06:53 +0200 Subject: [PATCH 27/50] SocketWrapper: call close() before mis-reusing connection Some libraries don't call close() and expect the device will do it on its own when the server closes the connection. To fix this, the best thing to do would be either to use connectionKeepAlive() or to simply close() the client before conneting again. For backwards compatibility, let's start from scratch every time connect() is colled twice. --- libraries/SocketWrapper/src/MbedClient.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libraries/SocketWrapper/src/MbedClient.cpp b/libraries/SocketWrapper/src/MbedClient.cpp index 2c82da918..679889aa4 100644 --- a/libraries/SocketWrapper/src/MbedClient.cpp +++ b/libraries/SocketWrapper/src/MbedClient.cpp @@ -78,6 +78,15 @@ void arduino::MbedClient::configureSocket(Socket *_s) { } int arduino::MbedClient::connect(SocketAddress socketAddress) { + + if (sock && reader_th) { + // trying to reuse a connection, let's call stop() to cleanup the state + char c; + if (sock->recv(&c, 1) < 0) { + stop(); + } + } + if (sock == nullptr) { sock = new TCPSocket(); _own_socket = true; From d30df6d83c54ceee025c808ebedca11a9c17e3c3 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 5 Apr 2022 11:10:02 +0200 Subject: [PATCH 28/50] SocketWrapper: only retry write() if the error is NSAPI_ERROR_WOULD_BLOCK --- libraries/SocketWrapper/src/MbedClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SocketWrapper/src/MbedClient.cpp b/libraries/SocketWrapper/src/MbedClient.cpp index 679889aa4..538005799 100644 --- a/libraries/SocketWrapper/src/MbedClient.cpp +++ b/libraries/SocketWrapper/src/MbedClient.cpp @@ -213,7 +213,7 @@ size_t arduino::MbedClient::write(const uint8_t *buf, size_t size) { int ret = NSAPI_ERROR_WOULD_BLOCK; do { ret = sock->send(buf, size); - } while (ret != size && connected()); + } while ((ret != size && ret == NSAPI_ERROR_WOULD_BLOCK) && connected()); configureSocket(sock); return size; } From 61db7c926c6ba97c992736b0b2b8449294e69fa3 Mon Sep 17 00:00:00 2001 From: Carlo PARATA Date: Fri, 8 Apr 2022 14:06:08 +0200 Subject: [PATCH 29/50] Add MLC examples for LSM6DSOX on Nano RP2040 --- .../RP2040_DataLogger_FIFO.ino | 260 ++++++++++++++++++ .../RP2040_MLC_Motion_Intensity.ino | 137 +++++++++ .../lsm6dsox_motion_intensity.h | 128 +++++++++ .../NanoRP2040Connect_MLC/library.properties | 10 + .../src/NanoRP2040Connect_MLC.h | 1 + 5 files changed, 536 insertions(+) create mode 100644 libraries/NanoRP2040Connect_MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino create mode 100644 libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino create mode 100644 libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h create mode 100644 libraries/NanoRP2040Connect_MLC/library.properties create mode 100644 libraries/NanoRP2040Connect_MLC/src/NanoRP2040Connect_MLC.h diff --git a/libraries/NanoRP2040Connect_MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino b/libraries/NanoRP2040Connect_MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino new file mode 100644 index 000000000..6ade8f2e6 --- /dev/null +++ b/libraries/NanoRP2040Connect_MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino @@ -0,0 +1,260 @@ +/* + This example exposes the first MB of Rp2040 flash as a USB disk. + The user can interact with this disk as a bidirectional communication with the board + For example, the board could save data in a file to be retrieved later with a drag and drop. + If the user does a double tap, the firmware goes to datalogger mode (green led on). + Now the user can do another double tap to start a recording of the IMU data + (green led blinking). With another double tap the recording will be stopped (green led on). + Now the user can start/stop other recordings of the IMU data using again the double tap. + The log files are saved in flash with an increasing number suffix data_0.txt, data_1.txt, etc. + If you want to transfer the log files to the PC, you can reset the board and + wait for 10 seconds (blue led blinking). + You can find the video tutorial on LSM6DSOX MLC at: https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-imu-advanced +*/ + +#include "PluggableUSBMSD.h" +#include "FlashIAPBlockDevice.h" +#include "WiFiNINA.h" +#include "LSM6DSOXSensor.h" + +#define INT_1 INT_IMU +#define SENSOR_ODR 104.0f // In Hertz +#define ACC_FS 2 // In g +#define GYR_FS 2000 // In dps +#define MEASUREMENT_TIME_INTERVAL (1000.0f/SENSOR_ODR) // In ms +#define FIFO_SAMPLE_THRESHOLD 199 +#define FLASH_BUFF_LEN 8192 + +typedef enum { + DATA_STORAGE_STATE, + DATA_LOGGER_IDLE_STATE, + DATA_LOGGER_RUNNING_STATE +} demo_state_e; + +volatile demo_state_e demo_state = DATA_STORAGE_STATE; +volatile int mems_event = 0; +uint32_t file_count = 0; +unsigned long timestamp_count = 0; +bool acc_available = false; +bool gyr_available = false; +int32_t acc_value[3]; +int32_t gyr_value[3]; +char buff[FLASH_BUFF_LEN]; +uint32_t pos = 0; + +static FlashIAPBlockDevice bd(XIP_BASE + 0x100000, 0x100000); + +LSM6DSOXSensor AccGyr(&Wire, LSM6DSOX_I2C_ADD_L); + +USBMSD MassStorage(&bd); + +rtos::Thread acquisition_th; + +FILE *f = nullptr; + +void INT1Event_cb() +{ + mems_event = 1; +} + +void USBMSD::begin() +{ + int err = getFileSystem().mount(&bd); + if (err) { + err = getFileSystem().reformat(&bd); + } +} + +mbed::FATFileSystem &USBMSD::getFileSystem() +{ + static mbed::FATFileSystem fs("fs"); + return fs; +} + +void led_green_thd() +{ + while (1) { + if (demo_state == DATA_LOGGER_RUNNING_STATE) { + digitalWrite(LEDG, HIGH); + delay(100); + digitalWrite(LEDG, LOW); + delay(100); + } + } +} + +void Read_FIFO_Data(uint16_t samples_to_read) +{ + uint16_t i; + + for (i = 0; i < samples_to_read; i++) { + uint8_t tag; + // Check the FIFO tag + AccGyr.Get_FIFO_Tag(&tag); + switch (tag) { + // If we have a gyro tag, read the gyro data + case LSM6DSOX_GYRO_NC_TAG: { + AccGyr.Get_FIFO_G_Axes(gyr_value); + gyr_available = true; + break; + } + // If we have an acc tag, read the acc data + case LSM6DSOX_XL_NC_TAG: { + AccGyr.Get_FIFO_X_Axes(acc_value); + acc_available = true; + break; + } + // We can discard other tags + default: { + break; + } + } + // If we have the measurements of both acc and gyro, we can store them with timestamp + if (acc_available && gyr_available) { + int num_bytes; + num_bytes = snprintf(&buff[pos], (FLASH_BUFF_LEN - pos), "%lu %d %d %d %d %d %d\n", (unsigned long)((float)timestamp_count * MEASUREMENT_TIME_INTERVAL), (int)acc_value[0], (int)acc_value[1], (int)acc_value[2], (int)gyr_value[0], (int)gyr_value[1], (int)gyr_value[2]); + pos += num_bytes; + timestamp_count++; + acc_available = false; + gyr_available = false; + } + } + // We can add the termination character to the string, so we are ready to save it in flash + buff[pos] = '\0'; + pos = 0; +} + +void setup() +{ + Serial.begin(115200); + MassStorage.begin(); + pinMode(LEDB, OUTPUT); + pinMode(LEDG, OUTPUT); + digitalWrite(LEDB, LOW); + digitalWrite(LEDG, LOW); + + // Initialize I2C bus. + Wire.begin(); + Wire.setClock(400000); + + //Interrupts. + attachInterrupt(INT_1, INT1Event_cb, RISING); + + // Initialize IMU. + AccGyr.begin(); + AccGyr.Enable_X(); + AccGyr.Enable_G(); + // Configure ODR and FS of the acc and gyro + AccGyr.Set_X_ODR(SENSOR_ODR); + AccGyr.Set_X_FS(ACC_FS); + AccGyr.Set_G_ODR(SENSOR_ODR); + AccGyr.Set_G_FS(GYR_FS); + // Enable the Double Tap event + AccGyr.Enable_Double_Tap_Detection(LSM6DSOX_INT1_PIN); + // Configure FIFO BDR for acc and gyro + AccGyr.Set_FIFO_X_BDR(SENSOR_ODR); + AccGyr.Set_FIFO_G_BDR(SENSOR_ODR); + // Start Led blinking thread + acquisition_th.start(led_green_thd); +} + +void loop() +{ + + if (mems_event) { + mems_event = 0; + LSM6DSOX_Event_Status_t status; + AccGyr.Get_X_Event_Status(&status); + if (status.DoubleTapStatus) { + switch (demo_state) { + case DATA_STORAGE_STATE: { + // Go to DATA_LOGGER_IDLE_STATE state + demo_state = DATA_LOGGER_IDLE_STATE; + digitalWrite(LEDG, HIGH); + Serial.println("From DATA_STORAGE_STATE To DATA_LOGGER_IDLE_STATE"); + break; + } + case DATA_LOGGER_IDLE_STATE: { + char filename[32]; + // Go to DATA_LOGGER_RUNNING_STATE state + snprintf(filename, 32, "/fs/data_%lu.txt", file_count); + Serial.print("Start writing file "); + Serial.println(filename); + // open a file to write some data + // w+ means overwrite, so every time the board is rebooted the file will be overwritten + f = fopen(filename, "w+"); + if (f != nullptr) { + // write header + fprintf(f, "Timestamp[ms] A_X [mg] A_Y [mg] A_Z [mg] G_X [mdps] G_Y [mdps] G_Z [mdps]\n"); + fflush(f); + Serial.println("From DATA_LOGGER_IDLE_STATE To DATA_LOGGER_RUNNING_STATE"); + demo_state = DATA_LOGGER_RUNNING_STATE; + digitalWrite(LEDG, LOW); + timestamp_count = 0; + pos = 0; + acc_available = false; + gyr_available = false; + // Set FIFO in Continuous mode + AccGyr.Set_FIFO_Mode(LSM6DSOX_STREAM_MODE); + } + break; + } + case DATA_LOGGER_RUNNING_STATE: { + // Empty the FIFO + uint16_t fifo_samples; + AccGyr.Get_FIFO_Num_Samples(&fifo_samples); + Read_FIFO_Data(fifo_samples); + // Store the string in flash + fprintf(f, "%s", buff); + fflush(f); + + // Close the log file and increase the counter + fclose(f); + file_count++; + // Set FIFO in Bypass mode + AccGyr.Set_FIFO_Mode(LSM6DSOX_BYPASS_MODE); + // Go to DATA_LOGGER_IDLE_STATE state + demo_state = DATA_LOGGER_IDLE_STATE; + // Wait for the led thread ends the blinking + delay(250); + digitalWrite(LEDG, HIGH); + Serial.println("From DATA_LOGGER_RUNNING_STATE To DATA_LOGGER_IDLE_STATE"); + break; + } + default: + Serial.println("Error! Invalid state"); + } + } + } + + if (demo_state == DATA_LOGGER_RUNNING_STATE) { + uint16_t fifo_samples; + + // Check the number of samples inside FIFO + AccGyr.Get_FIFO_Num_Samples(&fifo_samples); + + // Serial.println(fifo_samples); + + // If we reach the threshold we can empty the FIFO + if (fifo_samples > FIFO_SAMPLE_THRESHOLD) { + // Empty the FIFO + Read_FIFO_Data(fifo_samples); + // Store the string in flash + fprintf(f, "%s", buff); + fflush(f); + } + } + + if (demo_state == DATA_STORAGE_STATE && millis() > 10000) { + // Disable the sensor and go to Mass Storage mode + AccGyr.Disable_Double_Tap_Detection(); + AccGyr.Disable_X(); + AccGyr.Disable_G(); + while (1) { + digitalWrite(LEDB, HIGH); + delay(100); + digitalWrite(LEDB, LOW); + delay(100); + } + } +} diff --git a/libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino b/libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino new file mode 100644 index 000000000..cc0e7ac2d --- /dev/null +++ b/libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino @@ -0,0 +1,137 @@ +/* + This example shows how to load the MLC bytecode for Motion Intensity on LSM6DSOX + of the Arduino Nano RP2040 Connect. + You can find the video tutorial on LSM6DSOX MLC at: https://docs.arduino.cc/tutorials/nano-rp2040-connect/rp2040-imu-advanced +*/ + +// Includes +#include "WiFiNINA.h" +#include "LSM6DSOXSensor.h" +#include "lsm6dsox_motion_intensity.h" + +#define INT_1 INT_IMU + +//Interrupts. +volatile int mems_event = 0; + +// Components +LSM6DSOXSensor AccGyr(&Wire, LSM6DSOX_I2C_ADD_L); + +// MLC +ucf_line_t *ProgramPointer; +int32_t LineCounter; +int32_t TotalNumberOfLine; + +void INT1Event_cb(); +void printMLCStatus(uint8_t status); + +void setup() +{ + uint8_t mlc_out[8]; + // Led. + pinMode(LEDB, OUTPUT); + pinMode(LEDG, OUTPUT); + pinMode(LEDR, OUTPUT); + digitalWrite(LEDB, LOW); + digitalWrite(LEDG, LOW); + digitalWrite(LEDR, LOW); + + // Initialize serial for output. + Serial.begin(115200); + + // Initialize I2C bus. + Wire.begin(); + + AccGyr.begin(); + + /* Feed the program to Machine Learning Core */ + /* Motion Intensity Default program */ + ProgramPointer = (ucf_line_t *)lsm6dsox_motion_intensity; + TotalNumberOfLine = sizeof(lsm6dsox_motion_intensity) / sizeof(ucf_line_t); + Serial.println("Motion Intensity for LSM6DSOX MLC"); + Serial.print("UCF Number Line="); + Serial.println(TotalNumberOfLine); + + for (LineCounter = 0; LineCounter < TotalNumberOfLine; LineCounter++) { + if (AccGyr.Write_Reg(ProgramPointer[LineCounter].address, ProgramPointer[LineCounter].data)) { + Serial.print("Error loading the Program to LSM6DSOX at line: "); + Serial.println(LineCounter); + while (1) { + // Led blinking. + digitalWrite(LED_BUILTIN, HIGH); + delay(250); + digitalWrite(LED_BUILTIN, LOW); + delay(250); + } + } + } + + Serial.println("Program loaded inside the LSM6DSOX MLC"); + + AccGyr.Enable_X(); + AccGyr.Set_X_ODR(104.0f); + AccGyr.Set_X_FS(2); + + //Interrupts. + pinMode(INT_1, INPUT); + attachInterrupt(INT_1, INT1Event_cb, RISING); +} + +void loop() +{ + if (mems_event) { + mems_event = 0; + LSM6DSOX_MLC_Status_t status; + AccGyr.Get_MLC_Status(&status); + if (status.is_mlc1) { + uint8_t mlc_out[8]; + AccGyr.Get_MLC_Output(mlc_out); + printMLCStatus(mlc_out[0]); + } + } +} + +void INT1Event_cb() +{ + mems_event = 1; +} + +void printMLCStatus(uint8_t status) +{ + switch (status) { + case 1: + // Reset leds status + digitalWrite(LEDB, LOW); + digitalWrite(LEDG, LOW); + digitalWrite(LEDR, LOW); + // LEDB On + digitalWrite(LEDB, HIGH); + Serial.println("Stationary"); + break; + case 4: + // Reset leds status + digitalWrite(LEDB, LOW); + digitalWrite(LEDG, LOW); + digitalWrite(LEDR, LOW); + // LEDG On + digitalWrite(LEDG, HIGH); + Serial.println("Medium Intensity"); + break; + case 8: + // Reset leds status + digitalWrite(LEDB, LOW); + digitalWrite(LEDG, LOW); + digitalWrite(LEDR, LOW); + // LEDR On + digitalWrite(LEDR, HIGH); + Serial.println("High Intensity"); + break; + default: + // Reset leds status + digitalWrite(LEDB, LOW); + digitalWrite(LEDG, LOW); + digitalWrite(LEDR, LOW); + Serial.println("Unknown"); + break; + } +} diff --git a/libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h b/libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h new file mode 100644 index 000000000..989639411 --- /dev/null +++ b/libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h @@ -0,0 +1,128 @@ +/* + ****************************************************************************** + * @file lsm6dsox_motion_intensity.h + * @author Sensors Software Solution Team + * @brief This file contains the configuration for lsm6dsox_motion_intensity. + * + ****************************************************************************** + * @attention + * + *

    © Copyright (c) 2021 STMicroelectronics. + * All rights reserved.

    + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef LSM6DSOX_MOTION_INTENSITY_H +#define LSM6DSOX_MOTION_INTENSITY_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include +#ifndef MEMS_UCF_SHARED_TYPES +#define MEMS_UCF_SHARED_TYPES + +/** Common data block definition **/ +typedef struct { + uint8_t address; + uint8_t data; +} ucf_line_t; + +#endif /* MEMS_UCF_SHARED_TYPES */ + +/** Configuration array generated from Unico Tool **/ +const ucf_line_t lsm6dsox_motion_intensity[] = { + {.address = 0x10, .data = 0x00,}, + {.address = 0x11, .data = 0x00,}, + {.address = 0x01, .data = 0x80,}, + {.address = 0x04, .data = 0x00,}, + {.address = 0x05, .data = 0x00,}, + {.address = 0x17, .data = 0x40,}, + {.address = 0x02, .data = 0x11,}, + {.address = 0x08, .data = 0xEA,}, + {.address = 0x09, .data = 0x46,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x09, .data = 0x50,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x0A,}, + {.address = 0x02, .data = 0x11,}, + {.address = 0x08, .data = 0xF2,}, + {.address = 0x09, .data = 0x34,}, + {.address = 0x02, .data = 0x11,}, + {.address = 0x08, .data = 0xFA,}, + {.address = 0x09, .data = 0x3C,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x09, .data = 0x52,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x09, .data = 0x5E,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x02, .data = 0x31,}, + {.address = 0x08, .data = 0x3C,}, + {.address = 0x09, .data = 0x3F,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x01,}, + {.address = 0x09, .data = 0x10,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x1F,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x02, .data = 0x31,}, + {.address = 0x08, .data = 0x52,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x01, .data = 0x00,}, + {.address = 0x01, .data = 0x80,}, + {.address = 0x17, .data = 0x40,}, + {.address = 0x02, .data = 0x31,}, + {.address = 0x08, .data = 0x5E,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x18,}, + {.address = 0x09, .data = 0x11,}, + {.address = 0x09, .data = 0xC0,}, + {.address = 0x09, .data = 0xC8,}, + {.address = 0x09, .data = 0x32,}, + {.address = 0x09, .data = 0x84,}, + {.address = 0x09, .data = 0xE0,}, + {.address = 0x01, .data = 0x80,}, + {.address = 0x17, .data = 0x00,}, + {.address = 0x04, .data = 0x00,}, + {.address = 0x05, .data = 0x10,}, + {.address = 0x02, .data = 0x01,}, + {.address = 0x01, .data = 0x00,}, + {.address = 0x01, .data = 0x80,}, + {.address = 0x60, .data = 0x35,}, + {.address = 0x01, .data = 0x00,}, + {.address = 0x10, .data = 0x40,}, + {.address = 0x11, .data = 0x00,}, + {.address = 0x5E, .data = 0x02,}, + {.address = 0x01, .data = 0x80,}, + {.address = 0x0D, .data = 0x01,}, + {.address = 0x01, .data = 0x00,} +}; + +#ifdef __cplusplus +} +#endif + +#endif /* LSM6DSOX_MOTION_INTENSITY_H */ diff --git a/libraries/NanoRP2040Connect_MLC/library.properties b/libraries/NanoRP2040Connect_MLC/library.properties new file mode 100644 index 000000000..6de95d8ed --- /dev/null +++ b/libraries/NanoRP2040Connect_MLC/library.properties @@ -0,0 +1,10 @@ +name=NanoRP2040Connect_MLC +version=1.0 +author=Arduino +maintainer=Arduino +sentence=MLC library for LSM6DSOX on Nano RP2040 Connect +paragraph= +category=Other +url=https://github.com/arduino/ArduinoCore-mbed/tree/master/libraries/NanoRP2040Connect_MLC +architectures=mbed,mbed_nano +depends=STM32duino LSM6DSOX, WiFiNINA diff --git a/libraries/NanoRP2040Connect_MLC/src/NanoRP2040Connect_MLC.h b/libraries/NanoRP2040Connect_MLC/src/NanoRP2040Connect_MLC.h new file mode 100644 index 000000000..bd36232ac --- /dev/null +++ b/libraries/NanoRP2040Connect_MLC/src/NanoRP2040Connect_MLC.h @@ -0,0 +1 @@ +// Placeholder header to allow showing the example in menu \ No newline at end of file From 64f74c778e458f5ba323d7c8adc0e388145c1dae Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 13 Apr 2022 17:02:37 +0200 Subject: [PATCH 30/50] QSPIFormat.ino: Fix partition scheme and partition 3 resizing --- .../examples/QSPIFormat/QSPIFormat.ino | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino b/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino index 76a329206..48d7018b9 100644 --- a/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino +++ b/libraries/STM32H747_System/examples/QSPIFormat/QSPIFormat.ino @@ -47,11 +47,11 @@ void setup() { Serial.println("Available partition schemes:"); Serial.println("\nPartition scheme 1"); Serial.println("Partition 1: WiFi firmware and certificates 1MB"); - Serial.println("Partition 2: OTA and user data 14MB"); + Serial.println("Partition 2: OTA and user data 13MB"); Serial.println("\nPartition scheme 2"); Serial.println("Partition 1: WiFi firmware and certificates 1MB"); Serial.println("Partition 2: OTA 5MB"); - Serial.println("Partition 3: User data 9MB"), + Serial.println("Partition 3: User data 8MB"), Serial.println("\nDo you want to use partition scheme 1? Y/[n]"); Serial.println("If No, partition scheme 2 will be used."); bool default_scheme = waitResponse(); @@ -62,12 +62,12 @@ void setup() { if (true == waitResponse()) { mbed::MBRBlockDevice::partition(&root, 1, 0x0B, 0, 1024 * 1024); if(default_scheme) { - mbed::MBRBlockDevice::partition(&root, 3, 0x0B, 6 * 1024 * 1024, 0); + mbed::MBRBlockDevice::partition(&root, 3, 0x0B, 14 * 1024 * 1024, 14 * 1024 * 1024); mbed::MBRBlockDevice::partition(&root, 2, 0x0B, 1024 * 1024, 14 * 1024 * 1024); // use space from 15.5MB to 16 MB for another fw, memory mapped } else { - mbed::MBRBlockDevice::partition(&root, 2, 0x0B, 1024 * 1024, 5 * 1024 * 1024); - mbed::MBRBlockDevice::partition(&root, 3, 0x0B, 6 * 1024 * 1024, 9 * 1024 * 1024); + mbed::MBRBlockDevice::partition(&root, 2, 0x0B, 1024 * 1024, 6 * 1024 * 1024); + mbed::MBRBlockDevice::partition(&root, 3, 0x0B, 6 * 1024 * 1024, 14 * 1024 * 1024); // use space from 15.5MB to 16 MB for another fw, memory mapped } From f2372fd85ef3e1f98291065a27172c78d97b83dc Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Thu, 14 Apr 2022 10:21:20 +0200 Subject: [PATCH 31/50] Update BL sketches to return N/A if external RAM is missing --- .../STM32H747_getBootloaderInfo.ino | 9 ++++++++- .../STM32H747_updateBootloader.ino | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/libraries/STM32H747_System/examples/STM32H747_getBootloaderInfo/STM32H747_getBootloaderInfo.ino b/libraries/STM32H747_System/examples/STM32H747_getBootloaderInfo/STM32H747_getBootloaderInfo.ino index 6fca30832..d77203ab0 100644 --- a/libraries/STM32H747_System/examples/STM32H747_getBootloaderInfo/STM32H747_getBootloaderInfo.ino +++ b/libraries/STM32H747_System/examples/STM32H747_getBootloaderInfo/STM32H747_getBootloaderInfo.ino @@ -19,7 +19,7 @@ void setup() { Serial.println("USB Speed: " + getUSBSpeed(bootloader_data[3])); Serial.println("Has Ethernet: " + String(bootloader_data[4] == 1 ? "Yes" : "No")); Serial.println("Has WiFi module: " + String(bootloader_data[5] == 1 ? "Yes" : "No")); - Serial.println("RAM size: " + String(bootloader_data[6]) + " MB"); + Serial.println("RAM size: " + getRAMSize(bootloader_data[6])); Serial.println("QSPI size: " + String(bootloader_data[7]) + " MB"); Serial.println("Has Video output: " + String(bootloader_data[8] == 1 ? "Yes" : "No")); Serial.println("Has Crypto chip: " + String(bootloader_data[9] == 1 ? "Yes" : "No")); @@ -49,6 +49,13 @@ String getClockSource(uint8_t flag) { } } +String getRAMSize(uint8_t flag) { + if (flag == 0) { + return "N/A"; + } + return (String(flag) + "MB"); +} + void loop() { delay(1000); } diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/STM32H747_updateBootloader.ino b/libraries/STM32H747_System/examples/STM32H747_updateBootloader/STM32H747_updateBootloader.ino index b5dbe9671..efe9fa179 100644 --- a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/STM32H747_updateBootloader.ino +++ b/libraries/STM32H747_System/examples/STM32H747_updateBootloader/STM32H747_updateBootloader.ino @@ -60,7 +60,7 @@ void setup() { Serial.println("USB Speed: " + getUSBSpeed(bootloader_data[3])); Serial.println("Has Ethernet: " + String(bootloader_data[4] == 1 ? "Yes" : "No")); Serial.println("Has WiFi module: " + String(bootloader_data[5] == 1 ? "Yes" : "No")); - Serial.println("RAM size: " + String(bootloader_data[6]) + " MB"); + Serial.println("RAM size: " + getRAMSize(bootloader_data[6])); Serial.println("QSPI size: " + String(bootloader_data[7]) + " MB"); Serial.println("Has Video output: " + String(bootloader_data[8] == 1 ? "Yes" : "No")); Serial.println("Has Crypto chip: " + String(bootloader_data[9] == 1 ? "Yes" : "No")); @@ -172,6 +172,13 @@ String getClockSource(uint8_t flag) { } } +String getRAMSize(uint8_t flag) { + if (flag == 0) { + return "N/A"; + } + return (String(flag) + "MB"); +} + void printProgress(uint32_t offset, uint32_t size, uint32_t threshold, bool reset) { static int percent_done = 0; if (reset == true) { From 43fce2dbd3772f9096df8844bb885105ecdfd4b7 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Thu, 14 Apr 2022 10:40:17 +0200 Subject: [PATCH 32/50] Update Nicla Vision BL binaries with fixed RAM byte descriptor --- bootloaders/NICLA_VISION/bootloader.bin | Bin 128044 -> 128044 bytes bootloaders/NICLA_VISION/bootloader.elf | Bin 4259240 -> 4259240 bytes .../nicla_vision_bootloader.h | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bootloaders/NICLA_VISION/bootloader.bin b/bootloaders/NICLA_VISION/bootloader.bin index 2eeb6505c7d4df7e9e7147716645e48fd1a3eb16..0db1c77c0dd17e8f86b290dde13eac21221243cd 100755 GIT binary patch delta 19 bcmZ4Uf_=>k_J%EtY#$gIwzGd=RAm7GR)q&U delta 19 bcmZ4Uf_=>k_J%EtY#$gowzGd=RAm7GR=o#9 diff --git a/bootloaders/NICLA_VISION/bootloader.elf b/bootloaders/NICLA_VISION/bootloader.elf index 579cdda71af3e4cf3fc7e686153ece44673ca6ad..b6fe6b289b6c424ee97f89387a23d4428c8dbbb9 100755 GIT binary patch delta 273 zcmWN=M@|9(002N1kwrwRQ~{-^Sg2wFL42Bt2j9Vs2axctJ$qp$nce?yeCN+TNJc^I zFN^}?o|y2|q@gL#OnYv|3$y0TTd-)!OUqWQTC;A$E1R}#d+m)KyY}pR>z(%weDKjH hpB*}K?8K=vU!42uo9}+OaOtNj*M7MX?_+)|*(9ru(dQ{jOsHR?2Yq{$O4+H`oP jOOHMSUKlcB%!F5_%y?tYf+Z`~yz{{)Uq4~AIb{9-e?xCW diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/nicla_vision_bootloader.h b/libraries/STM32H747_System/examples/STM32H747_updateBootloader/nicla_vision_bootloader.h index 6fff31c93..73a237659 100644 --- a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/nicla_vision_bootloader.h +++ b/libraries/STM32H747_System/examples/STM32H747_updateBootloader/nicla_vision_bootloader.h @@ -10582,7 +10582,7 @@ const unsigned char bootloader_mbed_bin[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x17, 0x08, 0x01, 0x00, 0x01, 0x08, 0x10, + 0x00, 0x00, 0x00, 0x00, 0xa0, 0x17, 0x08, 0x01, 0x00, 0x01, 0x00, 0x10, 0x00, 0x01, 0x19, 0x00, 0xcc, 0x12, 0xfe, 0x7f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x08, 0xd5, 0x09, 0x00, 0x08, 0xb5, 0x0b, 0x00, 0x08, 0x89, 0x0a, 0x00, 0x08, 0xa1, 0x09, 0x00, 0x08, From 2f6d599608be3632157848fec8a7609bba67e120 Mon Sep 17 00:00:00 2001 From: Carlo PARATA Date: Thu, 14 Apr 2022 13:26:51 +0200 Subject: [PATCH 33/50] Add MLC examples for LSM6DSOX on Nicla Vision --- .../NiclaVision_DataLogger_FIFO.ino | 265 ++++++++++++++++++ .../NiclaVision_MLC_Motion_Intensity.ino | 134 +++++++++ .../lsm6dsox_motion_intensity.h | 127 +++++++++ .../RP2040_DataLogger_FIFO.ino | 2 - .../RP2040_MLC_Motion_Intensity.ino | 1 - .../lsm6dsox_motion_intensity.h | 0 .../library.properties | 8 +- .../NanoRP2040Connect_MLC.h => MLC/src/MLC.h} | 0 8 files changed, 530 insertions(+), 7 deletions(-) create mode 100644 libraries/MLC/examples/NiclaVision_DataLogger_FIFO/NiclaVision_DataLogger_FIFO.ino create mode 100644 libraries/MLC/examples/NiclaVision_MLC_Motion_Intensity/NiclaVision_MLC_Motion_Intensity.ino create mode 100644 libraries/MLC/examples/NiclaVision_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h rename libraries/{NanoRP2040Connect_MLC => MLC}/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino (99%) rename libraries/{NanoRP2040Connect_MLC => MLC}/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino (99%) rename libraries/{NanoRP2040Connect_MLC => MLC}/examples/RP2040_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h (100%) rename libraries/{NanoRP2040Connect_MLC => MLC}/library.properties (57%) rename libraries/{NanoRP2040Connect_MLC/src/NanoRP2040Connect_MLC.h => MLC/src/MLC.h} (100%) diff --git a/libraries/MLC/examples/NiclaVision_DataLogger_FIFO/NiclaVision_DataLogger_FIFO.ino b/libraries/MLC/examples/NiclaVision_DataLogger_FIFO/NiclaVision_DataLogger_FIFO.ino new file mode 100644 index 000000000..1bd9c917b --- /dev/null +++ b/libraries/MLC/examples/NiclaVision_DataLogger_FIFO/NiclaVision_DataLogger_FIFO.ino @@ -0,0 +1,265 @@ +/* + This example exposes the second MB of Nicla Vision flash as a USB disk. + The user can interact with this disk as a bidirectional communication with the board + For example, the board could save data in a file to be retrieved later with a drag and drop. + If the user does a double tap, the firmware goes to datalogger mode (green led on). + Now the user can do another double tap to start a recording of the IMU data + (green led blinking). With another double tap the recording will be stopped (green led on). + Now the user can start/stop other recordings of the IMU data using again the double tap. + The log files are saved in flash with an increasing number suffix data_0.txt, data_1.txt, etc. + If you want to transfer the log files to the PC, you can reset the board and + wait for 10 seconds (blue led blinking). +*/ + +#include "PluggableUSBMSD.h" +#include "QSPIFBlockDevice.h" +#include "MBRBlockDevice.h" +#include "FATFileSystem.h" +#include "LSM6DSOXSensor.h" + +#define INT_1 LSM6DS_INT +#define SENSOR_ODR 104.0f // In Hertz +#define ACC_FS 2 // In g +#define GYR_FS 2000 // In dps +#define MEASUREMENT_TIME_INTERVAL (1000.0f/SENSOR_ODR) // In ms +#define FIFO_SAMPLE_THRESHOLD 199 +#define FLASH_BUFF_LEN 8192 + +typedef enum { + DATA_STORAGE_STATE, + DATA_LOGGER_IDLE_STATE, + DATA_LOGGER_RUNNING_STATE +} demo_state_e; + +volatile demo_state_e demo_state = DATA_STORAGE_STATE; +volatile int mems_event = 0; +uint32_t file_count = 0; +unsigned long timestamp_count = 0; +bool acc_available = false; +bool gyr_available = false; +int32_t acc_value[3]; +int32_t gyr_value[3]; +char buff[FLASH_BUFF_LEN]; +uint32_t pos = 0; + +QSPIFBlockDevice root(QSPI_SO0, QSPI_SO1, QSPI_SO2, QSPI_SO3, QSPI_SCK, QSPI_CS, QSPIF_POLARITY_MODE_1, 40000000); +// Partition 1 is allocated to WiFi +mbed::MBRBlockDevice lsm_data(&root, 2); +static mbed::FATFileSystem lsm_fs("lsm"); + +LSM6DSOXSensor AccGyr(&SPI1, PIN_SPI_SS1); + +USBMSD MassStorage(&root); + +rtos::Thread acquisition_th; + +FILE *f = nullptr; + +void INT1Event_cb() +{ + mems_event = 1; +} + +void USBMSD::begin() +{ + int err = lsm_fs.mount(&lsm_data); + if (err) { + Serial.println("mount failed"); + err = lsm_fs.reformat(&lsm_data); + if (err) { + Serial.println("Reformat failed"); + return; + } + } +} + +mbed::FATFileSystem &USBMSD::getFileSystem() +{ + static mbed::FATFileSystem fs("lsm"); + return fs; +} + +void led_green_thd() +{ + while (1) { + if (demo_state == DATA_LOGGER_RUNNING_STATE) { + digitalWrite(LEDG, LOW); + delay(100); + digitalWrite(LEDG, HIGH); + delay(100); + } + } +} + +void Read_FIFO_Data(uint16_t samples_to_read) +{ + uint16_t i; + + for (i = 0; i < samples_to_read; i++) { + uint8_t tag; + // Check the FIFO tag + AccGyr.Get_FIFO_Tag(&tag); + switch (tag) { + // If we have a gyro tag, read the gyro data + case LSM6DSOX_GYRO_NC_TAG: { + AccGyr.Get_FIFO_G_Axes(gyr_value); + gyr_available = true; + break; + } + // If we have an acc tag, read the acc data + case LSM6DSOX_XL_NC_TAG: { + AccGyr.Get_FIFO_X_Axes(acc_value); + acc_available = true; + break; + } + // We can discard other tags + default: { + break; + } + } + // If we have the measurements of both acc and gyro, we can store them with timestamp + if (acc_available && gyr_available) { + int num_bytes; + num_bytes = snprintf(&buff[pos], (FLASH_BUFF_LEN - pos), "%lu %d %d %d %d %d %d\n", (unsigned long)((float)timestamp_count * MEASUREMENT_TIME_INTERVAL), (int)acc_value[0], (int)acc_value[1], (int)acc_value[2], (int)gyr_value[0], (int)gyr_value[1], (int)gyr_value[2]); + pos += num_bytes; + timestamp_count++; + acc_available = false; + gyr_available = false; + } + } + // We can add the termination character to the string, so we are ready to save it in flash + buff[pos] = '\0'; + pos = 0; +} + +void setup() +{ + Serial.begin(115200); + MassStorage.begin(); + pinMode(LEDB, OUTPUT); + pinMode(LEDG, OUTPUT); + digitalWrite(LEDB, HIGH); + digitalWrite(LEDG, HIGH); + + // Initialize SPI1 bus. + SPI1.begin(); + + //Interrupts. + attachInterrupt(INT_1, INT1Event_cb, RISING); + + // Initialize IMU. + AccGyr.begin(); + AccGyr.Enable_X(); + AccGyr.Enable_G(); + // Configure ODR and FS of the acc and gyro + AccGyr.Set_X_ODR(SENSOR_ODR); + AccGyr.Set_X_FS(ACC_FS); + AccGyr.Set_G_ODR(SENSOR_ODR); + AccGyr.Set_G_FS(GYR_FS); + // Enable the Double Tap event + AccGyr.Enable_Double_Tap_Detection(LSM6DSOX_INT1_PIN); + // Configure FIFO BDR for acc and gyro + AccGyr.Set_FIFO_X_BDR(SENSOR_ODR); + AccGyr.Set_FIFO_G_BDR(SENSOR_ODR); + // Start Led blinking thread + acquisition_th.start(led_green_thd); +} + +void loop() +{ + + if (mems_event) { + mems_event = 0; + LSM6DSOX_Event_Status_t status; + AccGyr.Get_X_Event_Status(&status); + if (status.DoubleTapStatus) { + switch (demo_state) { + case DATA_STORAGE_STATE: { + // Go to DATA_LOGGER_IDLE_STATE state + demo_state = DATA_LOGGER_IDLE_STATE; + digitalWrite(LEDG, LOW); + Serial.println("From DATA_STORAGE_STATE To DATA_LOGGER_IDLE_STATE"); + break; + } + case DATA_LOGGER_IDLE_STATE: { + char filename[32]; + // Go to DATA_LOGGER_RUNNING_STATE state + snprintf(filename, 32, "/lsm/data_%lu.txt", file_count); + Serial.print("Start writing file "); + Serial.println(filename); + // open a file to write some data + // w+ means overwrite, so every time the board is rebooted the file will be overwritten + f = fopen(filename, "w+"); + if (f != nullptr) { + // write header + fprintf(f, "Timestamp[ms] A_X [mg] A_Y [mg] A_Z [mg] G_X [mdps] G_Y [mdps] G_Z [mdps]\n"); + fflush(f); + Serial.println("From DATA_LOGGER_IDLE_STATE To DATA_LOGGER_RUNNING_STATE"); + demo_state = DATA_LOGGER_RUNNING_STATE; + digitalWrite(LEDG, HIGH); + timestamp_count = 0; + pos = 0; + acc_available = false; + gyr_available = false; + // Set FIFO in Continuous mode + AccGyr.Set_FIFO_Mode(LSM6DSOX_STREAM_MODE); + } + break; + } + case DATA_LOGGER_RUNNING_STATE: { + // Empty the FIFO + uint16_t fifo_samples; + AccGyr.Get_FIFO_Num_Samples(&fifo_samples); + Read_FIFO_Data(fifo_samples); + // Store the string in flash + fprintf(f, "%s", buff); + fflush(f); + + // Close the log file and increase the counter + fclose(f); + file_count++; + // Set FIFO in Bypass mode + AccGyr.Set_FIFO_Mode(LSM6DSOX_BYPASS_MODE); + // Go to DATA_LOGGER_IDLE_STATE state + demo_state = DATA_LOGGER_IDLE_STATE; + // Wait for the led thread ends the blinking + delay(250); + digitalWrite(LEDG, LOW); + Serial.println("From DATA_LOGGER_RUNNING_STATE To DATA_LOGGER_IDLE_STATE"); + break; + } + default: + Serial.println("Error! Invalid state"); + } + } + } + + if (demo_state == DATA_LOGGER_RUNNING_STATE) { + uint16_t fifo_samples; + + // Check the number of samples inside FIFO + AccGyr.Get_FIFO_Num_Samples(&fifo_samples); + + // If we reach the threshold we can empty the FIFO + if (fifo_samples > FIFO_SAMPLE_THRESHOLD) { + // Empty the FIFO + Read_FIFO_Data(fifo_samples); + // Store the string in flash + fprintf(f, "%s", buff); + fflush(f); + } + } + + if (demo_state == DATA_STORAGE_STATE && millis() > 10000) { + // Disable the sensor and go to Mass Storage mode + AccGyr.Disable_Double_Tap_Detection(); + AccGyr.Disable_X(); + AccGyr.Disable_G(); + while (1) { + digitalWrite(LEDB, LOW); + delay(100); + digitalWrite(LEDB, HIGH); + delay(100); + } + } +} diff --git a/libraries/MLC/examples/NiclaVision_MLC_Motion_Intensity/NiclaVision_MLC_Motion_Intensity.ino b/libraries/MLC/examples/NiclaVision_MLC_Motion_Intensity/NiclaVision_MLC_Motion_Intensity.ino new file mode 100644 index 000000000..b865d0068 --- /dev/null +++ b/libraries/MLC/examples/NiclaVision_MLC_Motion_Intensity/NiclaVision_MLC_Motion_Intensity.ino @@ -0,0 +1,134 @@ +/* + This example shows how to load the MLC bytecode for Motion Intensity on LSM6DSOX + of the Arduino Nicla Vision. +*/ + +// Includes +#include "LSM6DSOXSensor.h" +#include "lsm6dsox_motion_intensity.h" + +#define INT_1 LSM6DS_INT + +//Interrupts. +volatile int mems_event = 0; + +// Components +LSM6DSOXSensor AccGyr(&SPI1, PIN_SPI_SS1); + +// MLC +ucf_line_t *ProgramPointer; +int32_t LineCounter; +int32_t TotalNumberOfLine; + +void INT1Event_cb(); +void printMLCStatus(uint8_t status); + +void setup() +{ + // Led. + pinMode(LEDB, OUTPUT); + pinMode(LEDG, OUTPUT); + pinMode(LEDR, OUTPUT); + digitalWrite(LEDB, HIGH); + digitalWrite(LEDG, HIGH); + digitalWrite(LEDR, HIGH); + + // Initialize serial for output. + Serial.begin(115200); + + // Initialize I2C bus. + SPI1.begin(); + + AccGyr.begin(); + + /* Feed the program to Machine Learning Core */ + /* Motion Intensity Default program */ + ProgramPointer = (ucf_line_t *)lsm6dsox_motion_intensity; + TotalNumberOfLine = sizeof(lsm6dsox_motion_intensity) / sizeof(ucf_line_t); + Serial.println("Motion Intensity for LSM6DSOX MLC"); + Serial.print("UCF Number Line="); + Serial.println(TotalNumberOfLine); + + for (LineCounter = 0; LineCounter < TotalNumberOfLine; LineCounter++) { + if (AccGyr.Write_Reg(ProgramPointer[LineCounter].address, ProgramPointer[LineCounter].data)) { + Serial.print("Error loading the Program to LSM6DSOX at line: "); + Serial.println(LineCounter); + while (1) { + // Led blinking. + digitalWrite(LED_BUILTIN, LOW); + delay(250); + digitalWrite(LED_BUILTIN, HIGH); + delay(250); + } + } + } + + Serial.println("Program loaded inside the LSM6DSOX MLC"); + + AccGyr.Enable_X(); + AccGyr.Set_X_ODR(104.0f); + AccGyr.Set_X_FS(2); + + //Interrupts. + pinMode(INT_1, INPUT); + attachInterrupt(INT_1, INT1Event_cb, RISING); +} + +void loop() +{ + if (mems_event) { + mems_event = 0; + LSM6DSOX_MLC_Status_t status; + AccGyr.Get_MLC_Status(&status); + if (status.is_mlc1) { + uint8_t mlc_out[8]; + AccGyr.Get_MLC_Output(mlc_out); + printMLCStatus(mlc_out[0]); + } + } +} + +void INT1Event_cb() +{ + mems_event = 1; +} + +void printMLCStatus(uint8_t status) +{ + switch (status) { + case 1: + // Reset leds status + digitalWrite(LEDB, HIGH); + digitalWrite(LEDG, HIGH); + digitalWrite(LEDR, HIGH); + // LEDB On + digitalWrite(LEDB, LOW); + Serial.println("Stationary"); + break; + case 4: + // Reset leds status + digitalWrite(LEDB, HIGH); + digitalWrite(LEDG, HIGH); + digitalWrite(LEDR, HIGH); + // LEDG On + digitalWrite(LEDG, LOW); + Serial.println("Medium Intensity"); + break; + case 8: + // Reset leds status + digitalWrite(LEDB, HIGH); + digitalWrite(LEDG, HIGH); + digitalWrite(LEDR, HIGH); + // LEDR On + digitalWrite(LEDR, LOW); + Serial.println("High Intensity"); + break; + default: + // Reset leds status + digitalWrite(LEDB, HIGH); + digitalWrite(LEDG, HIGH); + digitalWrite(LEDR, HIGH); + Serial.println("Unknown"); + break; + } +} diff --git a/libraries/MLC/examples/NiclaVision_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h b/libraries/MLC/examples/NiclaVision_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h new file mode 100644 index 000000000..cd669df13 --- /dev/null +++ b/libraries/MLC/examples/NiclaVision_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h @@ -0,0 +1,127 @@ +/* + ****************************************************************************** + * @file lsm6dsox_motion_intensity.h + * @author Sensors Software Solution Team + * @brief This file contains the configuration for lsm6dsox_motion_intensity. + * + ****************************************************************************** + * @attention + * + *

    © Copyright (c) 2021 STMicroelectronics. + * All rights reserved.

    + * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef LSM6DSOX_MOTION_INTENSITY_H +#define LSM6DSOX_MOTION_INTENSITY_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include +#ifndef MEMS_UCF_SHARED_TYPES +#define MEMS_UCF_SHARED_TYPES + +/** Common data block definition **/ +typedef struct { + uint8_t address; + uint8_t data; +} ucf_line_t; + +#endif /* MEMS_UCF_SHARED_TYPES */ + +/** Configuration array generated from Unico Tool **/ +const ucf_line_t lsm6dsox_motion_intensity[] = { + {.address = 0x10, .data = 0x00,}, + {.address = 0x11, .data = 0x00,}, + {.address = 0x01, .data = 0x80,}, + {.address = 0x04, .data = 0x00,}, + {.address = 0x05, .data = 0x00,}, + {.address = 0x17, .data = 0x40,}, + {.address = 0x02, .data = 0x11,}, + {.address = 0x08, .data = 0xEA,}, + {.address = 0x09, .data = 0x46,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x09, .data = 0x50,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x0A,}, + {.address = 0x02, .data = 0x11,}, + {.address = 0x08, .data = 0xF2,}, + {.address = 0x09, .data = 0x34,}, + {.address = 0x02, .data = 0x11,}, + {.address = 0x08, .data = 0xFA,}, + {.address = 0x09, .data = 0x3C,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x09, .data = 0x52,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x09, .data = 0x5E,}, + {.address = 0x09, .data = 0x03,}, + {.address = 0x02, .data = 0x31,}, + {.address = 0x08, .data = 0x3C,}, + {.address = 0x09, .data = 0x3F,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x01,}, + {.address = 0x09, .data = 0x10,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x1F,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x02, .data = 0x31,}, + {.address = 0x08, .data = 0x52,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x01, .data = 0x00,}, + {.address = 0x01, .data = 0x80,}, + {.address = 0x17, .data = 0x40,}, + {.address = 0x02, .data = 0x31,}, + {.address = 0x08, .data = 0x5E,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x2C,}, + {.address = 0x09, .data = 0x80,}, + {.address = 0x09, .data = 0xA0,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x00,}, + {.address = 0x09, .data = 0x41,}, + {.address = 0x09, .data = 0xE0,}, + {.address = 0x01, .data = 0x80,}, + {.address = 0x17, .data = 0x00,}, + {.address = 0x04, .data = 0x00,}, + {.address = 0x05, .data = 0x10,}, + {.address = 0x02, .data = 0x01,}, + {.address = 0x01, .data = 0x00,}, + {.address = 0x5E, .data = 0x02,}, + {.address = 0x01, .data = 0x80,}, + {.address = 0x0D, .data = 0x01,}, + {.address = 0x60, .data = 0x35,}, + {.address = 0x01, .data = 0x00,}, + {.address = 0x10, .data = 0x40,}, + {.address = 0x11, .data = 0x00,} +}; + +#ifdef __cplusplus +} +#endif + +#endif /* LSM6DSOX_MOTION_INTENSITY_H */ + diff --git a/libraries/NanoRP2040Connect_MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino b/libraries/MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino similarity index 99% rename from libraries/NanoRP2040Connect_MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino rename to libraries/MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino index 6ade8f2e6..ce39211bd 100644 --- a/libraries/NanoRP2040Connect_MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino +++ b/libraries/MLC/examples/RP2040_DataLogger_FIFO/RP2040_DataLogger_FIFO.ino @@ -233,8 +233,6 @@ void loop() // Check the number of samples inside FIFO AccGyr.Get_FIFO_Num_Samples(&fifo_samples); - // Serial.println(fifo_samples); - // If we reach the threshold we can empty the FIFO if (fifo_samples > FIFO_SAMPLE_THRESHOLD) { // Empty the FIFO diff --git a/libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino b/libraries/MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino similarity index 99% rename from libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino rename to libraries/MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino index cc0e7ac2d..6b4f300fa 100644 --- a/libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino +++ b/libraries/MLC/examples/RP2040_MLC_Motion_Intensity/RP2040_MLC_Motion_Intensity.ino @@ -27,7 +27,6 @@ void printMLCStatus(uint8_t status); void setup() { - uint8_t mlc_out[8]; // Led. pinMode(LEDB, OUTPUT); pinMode(LEDG, OUTPUT); diff --git a/libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h b/libraries/MLC/examples/RP2040_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h similarity index 100% rename from libraries/NanoRP2040Connect_MLC/examples/RP2040_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h rename to libraries/MLC/examples/RP2040_MLC_Motion_Intensity/lsm6dsox_motion_intensity.h diff --git a/libraries/NanoRP2040Connect_MLC/library.properties b/libraries/MLC/library.properties similarity index 57% rename from libraries/NanoRP2040Connect_MLC/library.properties rename to libraries/MLC/library.properties index 6de95d8ed..020c1bba6 100644 --- a/libraries/NanoRP2040Connect_MLC/library.properties +++ b/libraries/MLC/library.properties @@ -1,10 +1,10 @@ -name=NanoRP2040Connect_MLC +name=MLC version=1.0 author=Arduino maintainer=Arduino -sentence=MLC library for LSM6DSOX on Nano RP2040 Connect +sentence=MLC library for LSM6DSOX on Arduino boards paragraph= category=Other -url=https://github.com/arduino/ArduinoCore-mbed/tree/master/libraries/NanoRP2040Connect_MLC -architectures=mbed,mbed_nano +url=https://github.com/arduino/ArduinoCore-mbed/tree/master/libraries/MLC +architectures=mbed,mbed_nano,mbed_nicla depends=STM32duino LSM6DSOX, WiFiNINA diff --git a/libraries/NanoRP2040Connect_MLC/src/NanoRP2040Connect_MLC.h b/libraries/MLC/src/MLC.h similarity index 100% rename from libraries/NanoRP2040Connect_MLC/src/NanoRP2040Connect_MLC.h rename to libraries/MLC/src/MLC.h From 0c042075196b67d5ef2f20d824e3a49800fe9b10 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 26 Apr 2022 10:27:38 +0200 Subject: [PATCH 34/50] boards.txt: add missing USB PIDs --- boards.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/boards.txt b/boards.txt index 4ec896b00..e21ce5e85 100644 --- a/boards.txt +++ b/boards.txt @@ -99,12 +99,16 @@ envie_m7.vid.1=0x2341 envie_m7.pid.1=0x035b envie_m7.vid.2=0x2341 envie_m7.pid.2=0x045b +envie_m7.vid.3=0x2341 +envie_m7.pid.3=0x055b envie_m7.upload_port.0.vid=0x2341 envie_m7.upload_port.0.pid=0x025b envie_m7.upload_port.1.vid=0x2341 envie_m7.upload_port.1.pid=0x035b envie_m7.upload_port.2.vid=0x2341 envie_m7.upload_port.2.pid=0x045b +envie_m7.upload_port.3.vid=0x2341 +envie_m7.upload_port.3.pid=0x055b envie_m7.upload.tool=dfu-util envie_m7.upload.tool.default=dfu-util @@ -237,12 +241,16 @@ nano33ble.vid.1=0x2341 nano33ble.pid.1=0x805a nano33ble.vid.2=0x2341 nano33ble.pid.2=0x015a +nano33ble.vid.3=0x2341 +nano33ble.pid.3=0x025a nano33ble.upload_port.0.vid=0x2341 nano33ble.upload_port.0.pid=0x005a nano33ble.upload_port.1.vid=0x2341 nano33ble.upload_port.1.pid=0x805a nano33ble.upload_port.2.vid=0x2341 nano33ble.upload_port.2.pid=0x015a +nano33ble.upload_port.3.vid=0x2341 +nano33ble.upload_port.3.pid=0x025a nano33ble.upload.tool=bossac nano33ble.upload.tool.default=bossac @@ -291,12 +299,16 @@ nanorp2040connect.vid.1=0x2341 nanorp2040connect.pid.1=0x805e nanorp2040connect.vid.2=0x2341 nanorp2040connect.pid.2=0x015e +nanorp2040connect.vid.3=0x2341 +nanorp2040connect.pid.3=0x025e nanorp2040connect.upload_port.0.vid=0x2341 nanorp2040connect.upload_port.0.pid=0x005e nanorp2040connect.upload_port.1.vid=0x2341 nanorp2040connect.upload_port.1.pid=0x805e nanorp2040connect.upload_port.2.vid=0x2341 nanorp2040connect.upload_port.2.pid=0x015e +nanorp2040connect.upload_port.3.vid=0x2341 +nanorp2040connect.upload_port.3.pid=0x025e nanorp2040connect.upload.tool=picotool nanorp2040connect.upload.tool.default=picotool @@ -435,12 +447,16 @@ nicla_vision.vid.1=0x2341 nicla_vision.pid.1=0x035f nicla_vision.vid.2=0x2341 nicla_vision.pid.2=0x045f +nicla_vision.vid.3=0x2341 +nicla_vision.pid.3=0x055f nicla_vision.upload_port.0.vid=0x2341 nicla_vision.upload_port.0.pid=0x025f nicla_vision.upload_port.1.vid=0x2341 nicla_vision.upload_port.1.pid=0x035f nicla_vision.upload_port.2.vid=0x2341 nicla_vision.upload_port.2.pid=0x045f +nicla_vision.upload_port.3.vid=0x2341 +nicla_vision.upload_port.3.pid=0x055f nicla_vision.upload.tool=dfu-util nicla_vision.upload.tool.default=dfu-util From 3955f72fb6369e34911f345f7a55d4088b1b3eb5 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Thu, 28 Apr 2022 09:56:49 +0200 Subject: [PATCH 35/50] Nicla Vision: make PDM frequency actually configurable --- libraries/PDM/src/nicla_vision/audio.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/PDM/src/nicla_vision/audio.c b/libraries/PDM/src/nicla_vision/audio.c index 3279c778f..0e8afcc2e 100644 --- a/libraries/PDM/src/nicla_vision/audio.c +++ b/libraries/PDM/src/nicla_vision/audio.c @@ -279,7 +279,7 @@ void dfsdm_init() HAL_GPIO_Init(AUDIO_DFSDM1_D1_PORT, &GPIO_InitStruct); } -static int DFSDM_Init(void) +static int DFSDM_Init(uint32_t frequency) { __HAL_DFSDM_CHANNEL_RESET_HANDLE_STATE(&hdfsdm1_channel2); hdfsdm1_channel2.Instance = DFSDM1_Channel2; @@ -292,7 +292,7 @@ static int DFSDM_Init(void) hdfsdm1_channel2.Init.SerialInterface.Type = DFSDM_CHANNEL_SPI_RISING; hdfsdm1_channel2.Init.SerialInterface.SpiClock = DFSDM_CHANNEL_SPI_CLOCK_INTERNAL; hdfsdm1_channel2.Init.Awd.FilterOrder = DFSDM_CHANNEL_FASTSINC_ORDER; - hdfsdm1_channel2.Init.Awd.Oversampling = 125; /* 2MHz/125 = 16kHz */ + hdfsdm1_channel2.Init.Awd.Oversampling = 2000000/frequency; /* 2MHz/125 = 16kHz */ hdfsdm1_channel2.Init.Offset = 0; hdfsdm1_channel2.Init.RightBitShift = 0; if(HAL_OK != HAL_DFSDM_ChannelInit(&hdfsdm1_channel2)) @@ -311,7 +311,7 @@ static int DFSDM_Init(void) hdfsdm1_filter0.Init.InjectedParam.ExtTrigger = DFSDM_FILTER_EXT_TRIG_TIM1_TRGO; hdfsdm1_filter0.Init.InjectedParam.ExtTriggerEdge = DFSDM_FILTER_EXT_TRIG_RISING_EDGE; hdfsdm1_filter0.Init.FilterParam.SincOrder = DFSDM_FILTER_FASTSINC_ORDER; - hdfsdm1_filter0.Init.FilterParam.Oversampling = 125; /* 2MHz/125 = 16kHz */ + hdfsdm1_filter0.Init.FilterParam.Oversampling = 2000000/frequency; /* 2MHz/125 = 16kHz */ hdfsdm1_filter0.Init.FilterParam.IntOversampling = 1; if(HAL_OK != HAL_DFSDM_FilterInit(&hdfsdm1_filter0)) { @@ -363,7 +363,7 @@ int py_audio_init(size_t channels, uint32_t frequency) dfsdm_init(); - if (!DFSDM_Init()) { + if (!DFSDM_Init(frequency)) { return 0; } From 25da6c489b1133a6ff303765ff81dc6545c1fdc5 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 4 Apr 2022 16:33:51 +0200 Subject: [PATCH 36/50] RP2040: enable entropy source Fixes https://github.com/arduino/ArduinoCore-mbed/issues/437 --- cores/arduino/random_seed.cpp | 17 +++++++++++++++++ variants/NANO_RP2040_CONNECT/conf/mbed_app.json | 1 + variants/RASPBERRY_PI_PICO/conf/mbed_app.json | 1 + 3 files changed, 19 insertions(+) create mode 100644 cores/arduino/random_seed.cpp diff --git a/cores/arduino/random_seed.cpp b/cores/arduino/random_seed.cpp new file mode 100644 index 000000000..32ee18750 --- /dev/null +++ b/cores/arduino/random_seed.cpp @@ -0,0 +1,17 @@ +#if defined(MBEDTLS_ENTROPY_NV_SEED) + +#include "mbed.h" + +// Provide stubs for mbedtls entropy source +// The functions may be implemented using a crypto chip like ECCx08 +extern "C" { + WEAK int mbedtls_platform_std_nv_seed_read( unsigned char *buf, size_t buf_len ) { + return -1; + } + + WEAK int mbedtls_platform_std_nv_seed_write( unsigned char *buf, size_t buf_len ) { + return -1; + } +} + +#endif \ No newline at end of file diff --git a/variants/NANO_RP2040_CONNECT/conf/mbed_app.json b/variants/NANO_RP2040_CONNECT/conf/mbed_app.json index e35e61ff6..839285b81 100644 --- a/variants/NANO_RP2040_CONNECT/conf/mbed_app.json +++ b/variants/NANO_RP2040_CONNECT/conf/mbed_app.json @@ -2,6 +2,7 @@ "target_overrides": { "*": { "target.printf_lib": "std", + "target.macros_add": [ "MBEDTLS_ENTROPY_NV_SEED" ], "platform.stdio-buffered-serial": false, "platform.stdio-baud-rate": 115200, "platform.default-serial-baud-rate": 115200, diff --git a/variants/RASPBERRY_PI_PICO/conf/mbed_app.json b/variants/RASPBERRY_PI_PICO/conf/mbed_app.json index e35e61ff6..839285b81 100644 --- a/variants/RASPBERRY_PI_PICO/conf/mbed_app.json +++ b/variants/RASPBERRY_PI_PICO/conf/mbed_app.json @@ -2,6 +2,7 @@ "target_overrides": { "*": { "target.printf_lib": "std", + "target.macros_add": [ "MBEDTLS_ENTROPY_NV_SEED" ], "platform.stdio-buffered-serial": false, "platform.stdio-baud-rate": 115200, "platform.default-serial-baud-rate": 115200, From 95ceb2d27672ff9a8339398d66282b509588e2c8 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 6 May 2022 16:38:14 +0200 Subject: [PATCH 37/50] Rename STM32H747_updateBootloader.ino -> STM32H747_manageBootloader.ino --- .../STM32H747_manageBootloader.ino} | 0 .../ecdsa-p256-encrypt-key.h | 0 .../ecdsa-p256-signing-key.h | 0 .../mcuboot_bootloader.h | 0 .../nicla_vision_bootloader.h | 0 .../portenta_bootloader.h | 0 .../portenta_lite_bootloader.h | 0 .../portenta_lite_connected_bootloader.h | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename libraries/STM32H747_System/examples/{STM32H747_updateBootloader/STM32H747_updateBootloader.ino => STM32H747_manageBootloader/STM32H747_manageBootloader.ino} (100%) rename libraries/STM32H747_System/examples/{STM32H747_updateBootloader => STM32H747_manageBootloader}/ecdsa-p256-encrypt-key.h (100%) rename libraries/STM32H747_System/examples/{STM32H747_updateBootloader => STM32H747_manageBootloader}/ecdsa-p256-signing-key.h (100%) rename libraries/STM32H747_System/examples/{STM32H747_updateBootloader => STM32H747_manageBootloader}/mcuboot_bootloader.h (100%) rename libraries/STM32H747_System/examples/{STM32H747_updateBootloader => STM32H747_manageBootloader}/nicla_vision_bootloader.h (100%) rename libraries/STM32H747_System/examples/{STM32H747_updateBootloader => STM32H747_manageBootloader}/portenta_bootloader.h (100%) rename libraries/STM32H747_System/examples/{STM32H747_updateBootloader => STM32H747_manageBootloader}/portenta_lite_bootloader.h (100%) rename libraries/STM32H747_System/examples/{STM32H747_updateBootloader => STM32H747_manageBootloader}/portenta_lite_connected_bootloader.h (100%) diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/STM32H747_updateBootloader.ino b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/STM32H747_manageBootloader.ino similarity index 100% rename from libraries/STM32H747_System/examples/STM32H747_updateBootloader/STM32H747_updateBootloader.ino rename to libraries/STM32H747_System/examples/STM32H747_manageBootloader/STM32H747_manageBootloader.ino diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/ecdsa-p256-encrypt-key.h b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/ecdsa-p256-encrypt-key.h similarity index 100% rename from libraries/STM32H747_System/examples/STM32H747_updateBootloader/ecdsa-p256-encrypt-key.h rename to libraries/STM32H747_System/examples/STM32H747_manageBootloader/ecdsa-p256-encrypt-key.h diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/ecdsa-p256-signing-key.h b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/ecdsa-p256-signing-key.h similarity index 100% rename from libraries/STM32H747_System/examples/STM32H747_updateBootloader/ecdsa-p256-signing-key.h rename to libraries/STM32H747_System/examples/STM32H747_manageBootloader/ecdsa-p256-signing-key.h diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/mcuboot_bootloader.h b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/mcuboot_bootloader.h similarity index 100% rename from libraries/STM32H747_System/examples/STM32H747_updateBootloader/mcuboot_bootloader.h rename to libraries/STM32H747_System/examples/STM32H747_manageBootloader/mcuboot_bootloader.h diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/nicla_vision_bootloader.h b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/nicla_vision_bootloader.h similarity index 100% rename from libraries/STM32H747_System/examples/STM32H747_updateBootloader/nicla_vision_bootloader.h rename to libraries/STM32H747_System/examples/STM32H747_manageBootloader/nicla_vision_bootloader.h diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/portenta_bootloader.h b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/portenta_bootloader.h similarity index 100% rename from libraries/STM32H747_System/examples/STM32H747_updateBootloader/portenta_bootloader.h rename to libraries/STM32H747_System/examples/STM32H747_manageBootloader/portenta_bootloader.h diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/portenta_lite_bootloader.h b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/portenta_lite_bootloader.h similarity index 100% rename from libraries/STM32H747_System/examples/STM32H747_updateBootloader/portenta_lite_bootloader.h rename to libraries/STM32H747_System/examples/STM32H747_manageBootloader/portenta_lite_bootloader.h diff --git a/libraries/STM32H747_System/examples/STM32H747_updateBootloader/portenta_lite_connected_bootloader.h b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/portenta_lite_connected_bootloader.h similarity index 100% rename from libraries/STM32H747_System/examples/STM32H747_updateBootloader/portenta_lite_connected_bootloader.h rename to libraries/STM32H747_System/examples/STM32H747_manageBootloader/portenta_lite_connected_bootloader.h From 0e1b75d9782d6538376e9adcd1019345c5f6a7ac Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 6 May 2022 16:49:08 +0200 Subject: [PATCH 38/50] STM32H7474_manageBootloader.ino: rephrased bootloader selection question. --- .../STM32H747_manageBootloader/STM32H747_manageBootloader.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/STM32H747_System/examples/STM32H747_manageBootloader/STM32H747_manageBootloader.ino b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/STM32H747_manageBootloader.ino index efe9fa179..c1a83617c 100644 --- a/libraries/STM32H747_System/examples/STM32H747_manageBootloader/STM32H747_manageBootloader.ino +++ b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/STM32H747_manageBootloader.ino @@ -69,8 +69,8 @@ void setup() { wifi_available = bootloader_data[5]; #if defined(ARDUINO_PORTENTA_H7_M7) - Serial.println("\nDo you want to update the default Arduino bootloader? Y/[n]"); - Serial.println("If No, MCUboot bootloader will be updated."); + Serial.println("\nDo you want to install/update the default Arduino bootloader? Y/[n]"); + Serial.println("Choosing \"No\", will install/update the MCUboot bootloader."); if(!waitResponse()) { Serial.println("\nMCUboot has been selected. Do you want to proceed? Y/[n]"); if (waitResponse()) { From f222072843d8b4a1bcaa34b52d2c225e6dddd210 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Fri, 6 May 2022 17:50:05 +0200 Subject: [PATCH 39/50] Nicla_System: add enterShipMode() --- libraries/Nicla_System/src/Nicla_System.cpp | 11 +++++++++++ libraries/Nicla_System/src/Nicla_System.h | 1 + 2 files changed, 12 insertions(+) diff --git a/libraries/Nicla_System/src/Nicla_System.cpp b/libraries/Nicla_System/src/Nicla_System.cpp index a738b0c98..0b16919ed 100644 --- a/libraries/Nicla_System/src/Nicla_System.cpp +++ b/libraries/Nicla_System/src/Nicla_System.cpp @@ -85,6 +85,17 @@ bool nicla::disableLDO() return true; } +bool nicla::enterShipMode() +{ + // STATUS reg: + // | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | + // | RO | RO | EN_SHIPMODE | RO | RO | RO | RO | RO | + + uint8_t status_reg = _pmic.getStatus(); + status_reg |= 0x20; + _pmic.writeByte(BQ25120A_ADDRESS, BQ25120A_STATUS, status_reg); +} + uint8_t nicla::readLDOreg() { uint8_t ldo_reg = _pmic.readByte(BQ25120A_ADDRESS, BQ25120A_LDO_CTRL); diff --git a/libraries/Nicla_System/src/Nicla_System.h b/libraries/Nicla_System/src/Nicla_System.h index 8b7e52d33..dd73828e1 100644 --- a/libraries/Nicla_System/src/Nicla_System.h +++ b/libraries/Nicla_System/src/Nicla_System.h @@ -15,6 +15,7 @@ class nicla { static bool enable3V3LDO(); static bool enable1V8LDO(); static bool disableLDO(); + static bool enterShipMode(); static RGBled leds; static BQ25120A _pmic; From 4481a2a3d1f22ef851d606f2d0312299bfd85183 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 10 May 2022 10:40:48 +0200 Subject: [PATCH 40/50] Update to Portenta H7 MCUboot bootloader version 6 --- .../mcuboot_bootloader.h | 18038 ++++++++-------- 1 file changed, 9042 insertions(+), 8996 deletions(-) diff --git a/libraries/STM32H747_System/examples/STM32H747_manageBootloader/mcuboot_bootloader.h b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/mcuboot_bootloader.h index a5d5b831a..27d317e57 100644 --- a/libraries/STM32H747_System/examples/STM32H747_manageBootloader/mcuboot_bootloader.h +++ b/libraries/STM32H747_System/examples/STM32H747_manageBootloader/mcuboot_bootloader.h @@ -45,8 +45,8 @@ const unsigned char mcuboot_bin[] = { 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, - 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xe9, 0x82, 0x01, 0x08, - 0x79, 0x56, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, + 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, + 0xfd, 0x4e, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, 0xc9, 0x06, 0x00, 0x08, @@ -108,19 +108,19 @@ const unsigned char mcuboot_bin[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x10, 0xb5, 0x05, 0x4c, 0x23, 0x78, 0x33, 0xb9, 0x04, 0x4b, 0x13, 0xb1, 0x04, 0x48, 0xaf, 0xf3, 0x00, 0x80, 0x01, 0x23, 0x23, 0x70, 0x10, 0xbd, 0x00, 0x04, 0x00, 0x24, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0xf0, 0x01, 0x08, 0x08, 0xb5, 0x03, 0x4b, + 0x00, 0x00, 0x00, 0x00, 0x38, 0xf2, 0x01, 0x08, 0x08, 0xb5, 0x03, 0x4b, 0x1b, 0xb1, 0x03, 0x49, 0x03, 0x48, 0xaf, 0xf3, 0x00, 0x80, 0x08, 0xbd, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x24, 0x0c, 0xf0, 0x01, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x24, 0x38, 0xf2, 0x01, 0x08, 0x15, 0x4b, 0x00, 0x2b, 0x08, 0xbf, 0x13, 0x4b, 0x9d, 0x46, 0xa3, 0xf5, 0x80, 0x3a, 0x00, 0x21, 0x8b, 0x46, 0x0f, 0x46, 0x13, 0x48, 0x14, 0x4a, - 0x12, 0x1a, 0x1a, 0xf0, 0x47, 0xff, 0x0f, 0x4b, 0x00, 0x2b, 0x00, 0xd0, + 0x12, 0x1a, 0x1a, 0xf0, 0x97, 0xff, 0x0f, 0x4b, 0x00, 0x2b, 0x00, 0xd0, 0x98, 0x47, 0x0e, 0x4b, 0x00, 0x2b, 0x00, 0xd0, 0x98, 0x47, 0x00, 0x20, 0x00, 0x21, 0x04, 0x00, 0x0d, 0x00, 0x0d, 0x48, 0x00, 0x28, 0x02, 0xd0, - 0x0c, 0x48, 0x0e, 0xf0, 0xa9, 0xfe, 0x1a, 0xf0, 0x2d, 0xfd, 0x20, 0x00, - 0x29, 0x00, 0x17, 0xf0, 0x93, 0xf9, 0x0f, 0xf0, 0x43, 0xfb, 0x00, 0xbf, + 0x0c, 0x48, 0x0d, 0xf0, 0xf9, 0xff, 0x1a, 0xf0, 0x7f, 0xfd, 0x20, 0x00, + 0x29, 0x00, 0x16, 0xf0, 0x2d, 0xfc, 0x0e, 0xf0, 0x9d, 0xfc, 0x00, 0xbf, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x24, 0x00, 0x00, 0x00, 0x00, - 0x39, 0x7a, 0x01, 0x08, 0x00, 0x04, 0x00, 0x24, 0x80, 0xa8, 0x00, 0x24, - 0xd5, 0xf2, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xf0, 0x04, 0x0f, + 0x6d, 0x6f, 0x01, 0x08, 0x00, 0x04, 0x00, 0x24, 0xe0, 0xa5, 0x02, 0x24, + 0x75, 0xe5, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xf0, 0x04, 0x0f, 0x0c, 0xbf, 0xef, 0xf3, 0x08, 0x80, 0xef, 0xf3, 0x09, 0x80, 0x81, 0x69, 0x11, 0xf8, 0x02, 0x1c, 0x00, 0x29, 0x32, 0xd1, 0x01, 0xb5, 0x90, 0xe8, 0x0f, 0x10, 0xe0, 0x47, 0xbd, 0xe8, 0x00, 0x50, 0x8c, 0xe8, 0x03, 0x00, @@ -133,17 +133,17 @@ const unsigned char mcuboot_bin[] = { 0xb0, 0xec, 0x10, 0x8a, 0xb0, 0xe8, 0xf0, 0x0f, 0x80, 0xf3, 0x09, 0x88, 0x70, 0x47, 0x11, 0x4a, 0x13, 0x68, 0x99, 0x42, 0xfa, 0xd8, 0x01, 0xb5, 0x52, 0xf8, 0x21, 0xc0, 0x0f, 0xc8, 0xe0, 0x47, 0xbd, 0xe8, 0x00, 0x50, - 0xcc, 0xf8, 0x00, 0x00, 0x70, 0x47, 0x01, 0xb5, 0x17, 0xf0, 0x14, 0xfc, + 0xcc, 0xf8, 0x00, 0x00, 0x70, 0x47, 0x01, 0xb5, 0x16, 0xf0, 0xbc, 0xfe, 0xbd, 0xe8, 0x01, 0x40, 0xef, 0xf3, 0x09, 0x8c, 0xbe, 0xe7, 0x01, 0xb5, - 0x17, 0xf0, 0x4e, 0xfc, 0xbd, 0xe8, 0x01, 0x40, 0xef, 0xf3, 0x09, 0x8c, + 0x16, 0xf0, 0xf6, 0xfe, 0xbd, 0xe8, 0x01, 0x40, 0xef, 0xf3, 0x09, 0x8c, 0xb6, 0xe7, 0x00, 0x00, 0x30, 0x01, 0x00, 0x24, 0x34, 0xef, 0x00, 0xe0, - 0xb4, 0xed, 0x01, 0x08, 0xdf, 0xf8, 0x30, 0xd0, 0x05, 0xf0, 0x9e, 0xf8, + 0xa8, 0xec, 0x01, 0x08, 0xdf, 0xf8, 0x30, 0xd0, 0x04, 0xf0, 0xe0, 0xfc, 0x00, 0x21, 0x03, 0xe0, 0x0a, 0x4b, 0x5b, 0x58, 0x43, 0x50, 0x04, 0x31, 0x09, 0x48, 0x0a, 0x4b, 0x42, 0x18, 0x9a, 0x42, 0xf6, 0xd3, 0x09, 0x4a, 0x02, 0xe0, 0x00, 0x23, 0x42, 0xf8, 0x04, 0x3b, 0x07, 0x4b, 0x9a, 0x42, 0xf9, 0xd3, 0xff, 0xf7, 0x49, 0xff, 0x70, 0x47, 0x00, 0x00, 0x08, 0x24, - 0x18, 0xf0, 0x01, 0x08, 0x00, 0x00, 0x00, 0x24, 0xf0, 0x03, 0x00, 0x24, - 0x00, 0x04, 0x00, 0x24, 0x80, 0xa8, 0x00, 0x24, 0xfe, 0xe7, 0x00, 0x00, + 0x44, 0xf2, 0x01, 0x08, 0x00, 0x00, 0x00, 0x24, 0xf0, 0x03, 0x00, 0x24, + 0x00, 0x04, 0x00, 0x24, 0xe0, 0xa5, 0x02, 0x24, 0xfe, 0xe7, 0x00, 0x00, 0x26, 0x4b, 0x02, 0x22, 0x83, 0xf8, 0x3e, 0x20, 0x1b, 0x68, 0x1a, 0x6a, 0x22, 0xf0, 0x01, 0x02, 0x1a, 0x62, 0x1a, 0x6a, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x62, 0x21, 0x4a, 0x93, 0x42, 0x19, 0xd0, 0x02, 0xf5, 0x80, 0x62, @@ -158,172 +158,410 @@ const unsigned char mcuboot_bin[] = { 0x6c, 0x42, 0x93, 0x42, 0xdd, 0xd0, 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, 0xdd, 0xe7, 0xb2, 0xf5, 0x80, 0x3f, 0xf7, 0xd1, 0xd9, 0xe7, 0x68, 0x05, 0x00, 0x24, 0x00, 0x00, 0x01, 0x40, 0x07, 0x00, 0x01, 0x00, - 0x00, 0x04, 0x00, 0x40, 0x18, 0x4b, 0x2d, 0xe9, 0xf7, 0x43, 0x53, 0xf8, - 0x20, 0x60, 0x00, 0x23, 0x0c, 0x46, 0x17, 0x46, 0x1d, 0x46, 0x98, 0x46, - 0x0b, 0x60, 0x33, 0x68, 0x30, 0x46, 0xd3, 0xf8, 0x3c, 0x90, 0x5b, 0x6a, - 0x98, 0x47, 0x2a, 0x46, 0x43, 0x46, 0xcd, 0xe9, 0x00, 0x01, 0x30, 0x46, - 0xc8, 0x47, 0xa8, 0xb1, 0x23, 0x68, 0x2a, 0x46, 0x30, 0x46, 0x47, 0xf8, - 0x33, 0x50, 0x33, 0x68, 0x19, 0x6b, 0x43, 0x46, 0x88, 0x47, 0x23, 0x68, - 0x2d, 0x18, 0x07, 0xeb, 0xc3, 0x03, 0x48, 0xeb, 0x01, 0x08, 0x58, 0x60, - 0x21, 0x68, 0x01, 0x31, 0xb1, 0xf5, 0x70, 0x7f, 0x21, 0x60, 0xdc, 0xd3, - 0x00, 0x20, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x04, 0x00, 0x00, 0x24, - 0x08, 0xb5, 0x04, 0x4b, 0x02, 0x78, 0x53, 0xf8, 0x22, 0x00, 0x03, 0x68, - 0x5b, 0x6b, 0x98, 0x47, 0xc0, 0xb2, 0x08, 0xbd, 0x04, 0x00, 0x00, 0x24, - 0x08, 0xb5, 0x04, 0x4b, 0x02, 0x78, 0x53, 0xf8, 0x22, 0x00, 0x03, 0x68, - 0x9b, 0x6a, 0x98, 0x47, 0xc0, 0xb2, 0x08, 0xbd, 0x04, 0x00, 0x00, 0x24, - 0x73, 0xb5, 0x0e, 0x46, 0x00, 0x78, 0x11, 0x46, 0x06, 0x4a, 0x00, 0x24, - 0x52, 0xf8, 0x20, 0x00, 0x02, 0x68, 0xcd, 0xe9, 0x00, 0x34, 0x23, 0x46, - 0x95, 0x69, 0x32, 0x46, 0xa8, 0x47, 0x02, 0xb0, 0x70, 0xbd, 0x00, 0xbf, - 0x04, 0x00, 0x00, 0x24, 0x38, 0xb5, 0x0c, 0x46, 0x15, 0x46, 0xff, 0xf7, - 0xcf, 0xff, 0x25, 0x44, 0x21, 0x46, 0x11, 0xf8, 0x01, 0x3b, 0x98, 0x42, - 0x03, 0xd1, 0xa9, 0x42, 0xf9, 0xd1, 0x01, 0x20, 0x38, 0xbd, 0x00, 0x20, - 0xfc, 0xe7, 0x04, 0x28, 0x09, 0xd0, 0x05, 0x28, 0x03, 0xd1, 0x48, 0x1e, - 0x18, 0xbf, 0x01, 0x20, 0x70, 0x47, 0x43, 0x1a, 0x58, 0x42, 0x58, 0x41, - 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x10, 0xb5, 0x84, 0x68, 0x02, 0xeb, - 0x01, 0x12, 0x01, 0x31, 0x20, 0x23, 0xa0, 0x3c, 0x0c, 0x32, 0xa4, 0xeb, - 0x41, 0x11, 0xff, 0xf7, 0xc1, 0xff, 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, - 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xad, 0xff, 0x4f, 0xf4, - 0x34, 0x62, 0xa3, 0x68, 0xe0, 0x3b, 0x02, 0xfb, 0x10, 0x30, 0x10, 0xbd, - 0x02, 0x4b, 0x6f, 0xf0, 0x02, 0x02, 0x1b, 0x68, 0x1a, 0x61, 0x70, 0x47, - 0x68, 0x05, 0x00, 0x24, 0x03, 0x4b, 0x1a, 0x68, 0xd3, 0x68, 0x23, 0xf0, - 0x02, 0x03, 0xd3, 0x60, 0x70, 0x47, 0x00, 0xbf, 0x68, 0x05, 0x00, 0x24, - 0x06, 0x4b, 0x6f, 0xf0, 0x02, 0x02, 0x1b, 0x68, 0x1a, 0x61, 0x5a, 0x69, - 0x42, 0xf0, 0x02, 0x02, 0x5a, 0x61, 0xda, 0x68, 0x42, 0xf0, 0x02, 0x02, - 0xda, 0x60, 0x70, 0x47, 0x68, 0x05, 0x00, 0x24, 0x05, 0x4b, 0x6f, 0xf0, - 0x02, 0x02, 0x1b, 0x68, 0x58, 0x63, 0x1a, 0x61, 0xda, 0x68, 0x42, 0xf0, - 0x02, 0x02, 0xda, 0x60, 0x70, 0x47, 0x00, 0xbf, 0x68, 0x05, 0x00, 0x24, - 0x01, 0x4b, 0x58, 0x6a, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x0c, 0x00, 0x40, - 0x06, 0x4a, 0x11, 0x68, 0xcb, 0x68, 0x23, 0xf0, 0x02, 0x03, 0xcb, 0x60, - 0x92, 0xf8, 0x3e, 0x30, 0x01, 0x2b, 0x01, 0xd1, 0xff, 0xf7, 0xce, 0xbe, - 0x70, 0x47, 0x00, 0xbf, 0x68, 0x05, 0x00, 0x24, 0x07, 0x4b, 0x08, 0x4a, - 0x13, 0x60, 0x1a, 0x69, 0x91, 0x07, 0x08, 0xd5, 0xda, 0x68, 0x92, 0x07, - 0x05, 0xd5, 0x6f, 0xf0, 0x02, 0x02, 0x04, 0x48, 0x1a, 0x61, 0x0e, 0xf0, - 0x7b, 0xbd, 0x70, 0x47, 0x00, 0x0c, 0x00, 0x40, 0x68, 0x05, 0x00, 0x24, - 0x18, 0xdf, 0x01, 0x08, 0x00, 0x48, 0x70, 0x47, 0xc8, 0xde, 0x01, 0x08, - 0x6a, 0xb1, 0x01, 0xf0, 0x03, 0x01, 0x07, 0x4b, 0x03, 0x29, 0x59, 0x68, - 0x08, 0xd0, 0x00, 0xf4, 0x70, 0x60, 0xb0, 0xf5, 0x70, 0x6f, 0x03, 0xd1, - 0x21, 0xea, 0x02, 0x02, 0x5a, 0x60, 0x70, 0x47, 0x0a, 0x43, 0xfb, 0xe7, - 0x00, 0x04, 0x00, 0x58, 0x30, 0xb5, 0x11, 0x4b, 0x11, 0x4d, 0xd5, 0xf8, - 0x94, 0x40, 0x9c, 0x42, 0xfb, 0xd1, 0x49, 0x43, 0x01, 0x2a, 0x01, 0xeb, - 0x41, 0x03, 0x4f, 0xea, 0x41, 0x04, 0x6f, 0xea, 0x03, 0x03, 0x04, 0xd0, - 0x02, 0x2a, 0x0b, 0xd0, 0xc2, 0x68, 0x13, 0x40, 0x0b, 0xe0, 0xc2, 0x68, - 0x13, 0x40, 0x19, 0x43, 0xc1, 0x60, 0x06, 0x4b, 0x4f, 0xf4, 0x40, 0x72, - 0x5a, 0x61, 0x30, 0xbd, 0xc2, 0x68, 0x13, 0x40, 0x23, 0x43, 0xc3, 0x60, - 0xf5, 0xe7, 0x00, 0xbf, 0x00, 0x03, 0x00, 0x80, 0x00, 0x64, 0x02, 0x58, - 0x2d, 0xe9, 0xf0, 0x41, 0x91, 0xf8, 0x00, 0xe0, 0x4b, 0x78, 0x74, 0x46, - 0x4e, 0x69, 0x01, 0x2b, 0x35, 0x4f, 0x4f, 0xea, 0x44, 0x14, 0xdf, 0xf8, - 0xd4, 0xc0, 0x44, 0xd1, 0x00, 0xf5, 0x10, 0x65, 0x2b, 0x19, 0xb6, 0xb9, - 0x1e, 0x69, 0x37, 0x40, 0x1f, 0x61, 0x1e, 0x69, 0x46, 0xf4, 0x00, 0x26, - 0x1e, 0x61, 0x1e, 0x69, 0x06, 0xea, 0x0c, 0x06, 0x01, 0x2a, 0x1e, 0x61, - 0x22, 0xd1, 0x0a, 0x69, 0x02, 0xb1, 0x5a, 0x61, 0x2b, 0x59, 0x43, 0xf0, - 0x04, 0x43, 0x2b, 0x51, 0x00, 0x20, 0xbd, 0xe8, 0xf0, 0x81, 0xd3, 0xf8, - 0x10, 0x80, 0x08, 0xea, 0x0c, 0x0c, 0xc3, 0xf8, 0x10, 0xc0, 0xd3, 0xf8, - 0x10, 0xc0, 0x0c, 0xea, 0x07, 0x07, 0x1f, 0x61, 0x8f, 0x68, 0xbe, 0x42, - 0x1e, 0x69, 0x46, 0xf4, 0x00, 0x26, 0x88, 0xbf, 0x4f, 0x61, 0x1e, 0x61, - 0x4e, 0x69, 0x1f, 0x69, 0xc6, 0xf3, 0x12, 0x06, 0x3e, 0x43, 0xd9, 0xe7, - 0x2b, 0x59, 0x43, 0xf0, 0x04, 0x43, 0x2b, 0x51, 0x4b, 0x69, 0x00, 0x2b, - 0xdc, 0xd0, 0x0e, 0xf0, 0x0f, 0x02, 0x01, 0x23, 0xd0, 0xf8, 0x34, 0x18, - 0x93, 0x40, 0x0b, 0x43, 0xc0, 0xf8, 0x34, 0x38, 0xd2, 0xe7, 0x00, 0xf5, - 0x30, 0x60, 0x03, 0x19, 0x1d, 0x69, 0x05, 0xea, 0x0c, 0x05, 0x1d, 0x61, - 0x1d, 0x69, 0x3d, 0x40, 0x1d, 0x61, 0x8d, 0x68, 0x06, 0xb1, 0x4d, 0x61, - 0x1e, 0x69, 0xc5, 0xf3, 0x12, 0x05, 0x01, 0x2a, 0x46, 0xf4, 0x00, 0x26, - 0x1e, 0x61, 0x1e, 0x69, 0x45, 0xea, 0x06, 0x05, 0x1d, 0x61, 0x02, 0xd1, - 0xca, 0x68, 0x02, 0xb1, 0x5a, 0x61, 0x03, 0x59, 0x43, 0xf0, 0x04, 0x43, - 0x03, 0x51, 0xb1, 0xe7, 0xff, 0xff, 0x07, 0xe0, 0x00, 0x00, 0xf8, 0xff, - 0x4e, 0x4a, 0x70, 0xb5, 0x94, 0x6a, 0x96, 0x6a, 0xd3, 0x6a, 0x16, 0xf0, - 0x7c, 0x7f, 0xc6, 0xf3, 0x05, 0x51, 0x55, 0x6c, 0x00, 0xf0, 0x8d, 0x80, - 0x07, 0xee, 0x90, 0x1a, 0xc3, 0xf3, 0x00, 0x23, 0xc5, 0xf3, 0xcc, 0x01, - 0x04, 0xf0, 0x03, 0x04, 0xf8, 0xee, 0xe7, 0x6a, 0x4b, 0x43, 0x01, 0x2c, - 0xb7, 0xee, 0x00, 0x6a, 0x07, 0xee, 0x90, 0x3a, 0xfa, 0xee, 0xe9, 0x7a, - 0x6b, 0xd0, 0x02, 0x2c, 0x5b, 0xd0, 0x00, 0x2c, 0x67, 0xd1, 0x13, 0x68, - 0x9b, 0x06, 0x46, 0xd5, 0x11, 0x68, 0x13, 0x6c, 0xc1, 0xf3, 0xc1, 0x01, - 0x3a, 0x4a, 0xc3, 0xf3, 0x08, 0x03, 0xca, 0x40, 0x07, 0xee, 0x10, 0x2a, - 0xf8, 0xee, 0xc7, 0x5a, 0x85, 0xee, 0xa6, 0x7a, 0x06, 0xee, 0x90, 0x3a, - 0xf8, 0xee, 0xe6, 0x6a, 0x76, 0xee, 0xa7, 0x7a, 0x77, 0xee, 0x86, 0x7a, - 0x30, 0x4a, 0x67, 0xee, 0x87, 0x7a, 0x13, 0x6c, 0xc3, 0xf3, 0x46, 0x23, - 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x37, 0xee, 0x06, 0x7a, - 0xc7, 0xee, 0x87, 0x6a, 0xfc, 0xee, 0xe6, 0x6a, 0xc0, 0xed, 0x00, 0x6a, - 0x13, 0x6c, 0xc3, 0xf3, 0x06, 0x43, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, - 0xc7, 0x7a, 0x37, 0xee, 0x06, 0x7a, 0xc7, 0xee, 0x87, 0x6a, 0xfc, 0xee, - 0xe6, 0x6a, 0xc0, 0xed, 0x01, 0x6a, 0x13, 0x6c, 0xc3, 0xf3, 0x06, 0x63, - 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x37, 0xee, 0x06, 0x6a, - 0x87, 0xee, 0x86, 0x7a, 0xbc, 0xee, 0xc7, 0x7a, 0x80, 0xed, 0x02, 0x7a, - 0x70, 0xbd, 0x13, 0x6c, 0xdf, 0xed, 0x19, 0x5a, 0xc3, 0xf3, 0x08, 0x03, - 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, - 0x77, 0xee, 0x86, 0x7a, 0x85, 0xee, 0xa6, 0x7a, 0xbe, 0xe7, 0x13, 0x6c, - 0xdf, 0xed, 0x12, 0x5a, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, - 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, - 0xee, 0xe7, 0x13, 0x6c, 0xdf, 0xed, 0x0c, 0x5a, 0xc3, 0xf3, 0x08, 0x03, - 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, - 0x77, 0xee, 0x86, 0x7a, 0xe0, 0xe7, 0xc0, 0xe9, 0x00, 0x11, 0x81, 0x60, - 0xce, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, 0x00, 0x90, 0xd0, 0x03, - 0x00, 0x24, 0x74, 0x4c, 0x20, 0xbc, 0xbe, 0x4b, 0x00, 0x24, 0x74, 0x4a, - 0x4e, 0x4a, 0x70, 0xb5, 0x94, 0x6a, 0x96, 0x6a, 0xd3, 0x6a, 0x16, 0xf4, - 0x7c, 0x3f, 0xc6, 0xf3, 0x05, 0x31, 0xd5, 0x6b, 0x00, 0xf0, 0x8d, 0x80, - 0x07, 0xee, 0x90, 0x1a, 0xc3, 0xf3, 0x00, 0x13, 0xc5, 0xf3, 0xcc, 0x01, - 0x04, 0xf0, 0x03, 0x04, 0xf8, 0xee, 0xe7, 0x6a, 0x4b, 0x43, 0x01, 0x2c, - 0xb7, 0xee, 0x00, 0x6a, 0x07, 0xee, 0x90, 0x3a, 0xfa, 0xee, 0xe9, 0x7a, - 0x6b, 0xd0, 0x02, 0x2c, 0x5b, 0xd0, 0x00, 0x2c, 0x67, 0xd1, 0x13, 0x68, - 0x9b, 0x06, 0x46, 0xd5, 0x11, 0x68, 0x93, 0x6b, 0xc1, 0xf3, 0xc1, 0x01, - 0x3a, 0x4a, 0xc3, 0xf3, 0x08, 0x03, 0xca, 0x40, 0x07, 0xee, 0x10, 0x2a, - 0xf8, 0xee, 0xc7, 0x5a, 0x85, 0xee, 0xa6, 0x7a, 0x06, 0xee, 0x90, 0x3a, - 0xf8, 0xee, 0xe6, 0x6a, 0x76, 0xee, 0xa7, 0x7a, 0x77, 0xee, 0x86, 0x7a, - 0x30, 0x4a, 0x67, 0xee, 0x87, 0x7a, 0x93, 0x6b, 0xc3, 0xf3, 0x46, 0x23, - 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x37, 0xee, 0x06, 0x7a, - 0xc7, 0xee, 0x87, 0x6a, 0xfc, 0xee, 0xe6, 0x6a, 0xc0, 0xed, 0x00, 0x6a, - 0x93, 0x6b, 0xc3, 0xf3, 0x06, 0x43, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, - 0xc7, 0x7a, 0x37, 0xee, 0x06, 0x7a, 0xc7, 0xee, 0x87, 0x6a, 0xfc, 0xee, - 0xe6, 0x6a, 0xc0, 0xed, 0x01, 0x6a, 0x93, 0x6b, 0xc3, 0xf3, 0x06, 0x63, - 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x37, 0xee, 0x06, 0x6a, - 0x87, 0xee, 0x86, 0x7a, 0xbc, 0xee, 0xc7, 0x7a, 0x80, 0xed, 0x02, 0x7a, - 0x70, 0xbd, 0x93, 0x6b, 0xdf, 0xed, 0x19, 0x5a, 0xc3, 0xf3, 0x08, 0x03, + 0x00, 0x04, 0x00, 0x40, 0x08, 0xb5, 0x04, 0x4b, 0x02, 0x78, 0x53, 0xf8, + 0x22, 0x00, 0x03, 0x68, 0x5b, 0x6b, 0x98, 0x47, 0xc0, 0xb2, 0x08, 0xbd, + 0x04, 0x00, 0x00, 0x24, 0x73, 0xb5, 0x0e, 0x46, 0x00, 0x78, 0x11, 0x46, + 0x06, 0x4a, 0x00, 0x24, 0x52, 0xf8, 0x20, 0x00, 0x02, 0x68, 0xcd, 0xe9, + 0x00, 0x34, 0x23, 0x46, 0x95, 0x69, 0x32, 0x46, 0xa8, 0x47, 0x02, 0xb0, + 0x70, 0xbd, 0x00, 0xbf, 0x04, 0x00, 0x00, 0x24, 0x10, 0xb5, 0x84, 0x68, + 0x02, 0xeb, 0x01, 0x12, 0x01, 0x31, 0x20, 0x23, 0xa0, 0x3c, 0x0c, 0x32, + 0xa4, 0xeb, 0x41, 0x11, 0xff, 0xf7, 0xe0, 0xff, 0x00, 0x38, 0x18, 0xbf, + 0x01, 0x20, 0x10, 0xbd, 0x02, 0x4b, 0x6f, 0xf0, 0x02, 0x02, 0x1b, 0x68, + 0x1a, 0x61, 0x70, 0x47, 0x68, 0x05, 0x00, 0x24, 0x03, 0x4b, 0x1a, 0x68, + 0xd3, 0x68, 0x23, 0xf0, 0x02, 0x03, 0xd3, 0x60, 0x70, 0x47, 0x00, 0xbf, + 0x68, 0x05, 0x00, 0x24, 0x06, 0x4b, 0x6f, 0xf0, 0x02, 0x02, 0x1b, 0x68, + 0x1a, 0x61, 0x5a, 0x69, 0x42, 0xf0, 0x02, 0x02, 0x5a, 0x61, 0xda, 0x68, + 0x42, 0xf0, 0x02, 0x02, 0xda, 0x60, 0x70, 0x47, 0x68, 0x05, 0x00, 0x24, + 0x05, 0x4b, 0x6f, 0xf0, 0x02, 0x02, 0x1b, 0x68, 0x58, 0x63, 0x1a, 0x61, + 0xda, 0x68, 0x42, 0xf0, 0x02, 0x02, 0xda, 0x60, 0x70, 0x47, 0x00, 0xbf, + 0x68, 0x05, 0x00, 0x24, 0x01, 0x4b, 0x58, 0x6a, 0x70, 0x47, 0x00, 0xbf, + 0x00, 0x0c, 0x00, 0x40, 0x06, 0x4a, 0x11, 0x68, 0xcb, 0x68, 0x23, 0xf0, + 0x02, 0x03, 0xcb, 0x60, 0x92, 0xf8, 0x3e, 0x30, 0x01, 0x2b, 0x01, 0xd1, + 0xff, 0xf7, 0x38, 0xbf, 0x70, 0x47, 0x00, 0xbf, 0x68, 0x05, 0x00, 0x24, + 0x07, 0x4b, 0x08, 0x4a, 0x13, 0x60, 0x1a, 0x69, 0x91, 0x07, 0x08, 0xd5, + 0xda, 0x68, 0x92, 0x07, 0x05, 0xd5, 0x6f, 0xf0, 0x02, 0x02, 0x04, 0x48, + 0x1a, 0x61, 0x0d, 0xf0, 0x35, 0xbf, 0x70, 0x47, 0x00, 0x0c, 0x00, 0x40, + 0x68, 0x05, 0x00, 0x24, 0x58, 0xd9, 0x01, 0x08, 0x00, 0x48, 0x70, 0x47, + 0x08, 0xd9, 0x01, 0x08, 0x6a, 0xb1, 0x01, 0xf0, 0x03, 0x01, 0x07, 0x4b, + 0x03, 0x29, 0x59, 0x68, 0x08, 0xd0, 0x00, 0xf4, 0x70, 0x60, 0xb0, 0xf5, + 0x70, 0x6f, 0x03, 0xd1, 0x21, 0xea, 0x02, 0x02, 0x5a, 0x60, 0x70, 0x47, + 0x0a, 0x43, 0xfb, 0xe7, 0x00, 0x04, 0x00, 0x58, 0x30, 0xb5, 0x11, 0x4b, + 0x11, 0x4d, 0xd5, 0xf8, 0x94, 0x40, 0x9c, 0x42, 0xfb, 0xd1, 0x49, 0x43, + 0x01, 0x2a, 0x01, 0xeb, 0x41, 0x03, 0x4f, 0xea, 0x41, 0x04, 0x6f, 0xea, + 0x03, 0x03, 0x04, 0xd0, 0x02, 0x2a, 0x0b, 0xd0, 0xc2, 0x68, 0x13, 0x40, + 0x0b, 0xe0, 0xc2, 0x68, 0x13, 0x40, 0x19, 0x43, 0xc1, 0x60, 0x06, 0x4b, + 0x4f, 0xf4, 0x40, 0x72, 0x5a, 0x61, 0x30, 0xbd, 0xc2, 0x68, 0x13, 0x40, + 0x23, 0x43, 0xc3, 0x60, 0xf5, 0xe7, 0x00, 0xbf, 0x00, 0x03, 0x00, 0x80, + 0x00, 0x64, 0x02, 0x58, 0x2d, 0xe9, 0xf0, 0x41, 0x91, 0xf8, 0x00, 0xe0, + 0x4b, 0x78, 0x74, 0x46, 0x4e, 0x69, 0x01, 0x2b, 0x35, 0x4f, 0x4f, 0xea, + 0x44, 0x14, 0xdf, 0xf8, 0xd4, 0xc0, 0x44, 0xd1, 0x00, 0xf5, 0x10, 0x65, + 0x2b, 0x19, 0xb6, 0xb9, 0x1e, 0x69, 0x37, 0x40, 0x1f, 0x61, 0x1e, 0x69, + 0x46, 0xf4, 0x00, 0x26, 0x1e, 0x61, 0x1e, 0x69, 0x06, 0xea, 0x0c, 0x06, + 0x01, 0x2a, 0x1e, 0x61, 0x22, 0xd1, 0x0a, 0x69, 0x02, 0xb1, 0x5a, 0x61, + 0x2b, 0x59, 0x43, 0xf0, 0x04, 0x43, 0x2b, 0x51, 0x00, 0x20, 0xbd, 0xe8, + 0xf0, 0x81, 0xd3, 0xf8, 0x10, 0x80, 0x08, 0xea, 0x0c, 0x0c, 0xc3, 0xf8, + 0x10, 0xc0, 0xd3, 0xf8, 0x10, 0xc0, 0x0c, 0xea, 0x07, 0x07, 0x1f, 0x61, + 0x8f, 0x68, 0xbe, 0x42, 0x1e, 0x69, 0x46, 0xf4, 0x00, 0x26, 0x88, 0xbf, + 0x4f, 0x61, 0x1e, 0x61, 0x4e, 0x69, 0x1f, 0x69, 0xc6, 0xf3, 0x12, 0x06, + 0x3e, 0x43, 0xd9, 0xe7, 0x2b, 0x59, 0x43, 0xf0, 0x04, 0x43, 0x2b, 0x51, + 0x4b, 0x69, 0x00, 0x2b, 0xdc, 0xd0, 0x0e, 0xf0, 0x0f, 0x02, 0x01, 0x23, + 0xd0, 0xf8, 0x34, 0x18, 0x93, 0x40, 0x0b, 0x43, 0xc0, 0xf8, 0x34, 0x38, + 0xd2, 0xe7, 0x00, 0xf5, 0x30, 0x60, 0x03, 0x19, 0x1d, 0x69, 0x05, 0xea, + 0x0c, 0x05, 0x1d, 0x61, 0x1d, 0x69, 0x3d, 0x40, 0x1d, 0x61, 0x8d, 0x68, + 0x06, 0xb1, 0x4d, 0x61, 0x1e, 0x69, 0xc5, 0xf3, 0x12, 0x05, 0x01, 0x2a, + 0x46, 0xf4, 0x00, 0x26, 0x1e, 0x61, 0x1e, 0x69, 0x45, 0xea, 0x06, 0x05, + 0x1d, 0x61, 0x02, 0xd1, 0xca, 0x68, 0x02, 0xb1, 0x5a, 0x61, 0x03, 0x59, + 0x43, 0xf0, 0x04, 0x43, 0x03, 0x51, 0xb1, 0xe7, 0xff, 0xff, 0x07, 0xe0, + 0x00, 0x00, 0xf8, 0xff, 0x4e, 0x4a, 0x70, 0xb5, 0x94, 0x6a, 0x96, 0x6a, + 0xd3, 0x6a, 0x16, 0xf0, 0x7c, 0x7f, 0xc6, 0xf3, 0x05, 0x51, 0x55, 0x6c, + 0x00, 0xf0, 0x8d, 0x80, 0x07, 0xee, 0x90, 0x1a, 0xc3, 0xf3, 0x00, 0x23, + 0xc5, 0xf3, 0xcc, 0x01, 0x04, 0xf0, 0x03, 0x04, 0xf8, 0xee, 0xe7, 0x6a, + 0x4b, 0x43, 0x01, 0x2c, 0xb7, 0xee, 0x00, 0x6a, 0x07, 0xee, 0x90, 0x3a, + 0xfa, 0xee, 0xe9, 0x7a, 0x6b, 0xd0, 0x02, 0x2c, 0x5b, 0xd0, 0x00, 0x2c, + 0x67, 0xd1, 0x13, 0x68, 0x9b, 0x06, 0x46, 0xd5, 0x11, 0x68, 0x13, 0x6c, + 0xc1, 0xf3, 0xc1, 0x01, 0x3a, 0x4a, 0xc3, 0xf3, 0x08, 0x03, 0xca, 0x40, + 0x07, 0xee, 0x10, 0x2a, 0xf8, 0xee, 0xc7, 0x5a, 0x85, 0xee, 0xa6, 0x7a, + 0x06, 0xee, 0x90, 0x3a, 0xf8, 0xee, 0xe6, 0x6a, 0x76, 0xee, 0xa7, 0x7a, + 0x77, 0xee, 0x86, 0x7a, 0x30, 0x4a, 0x67, 0xee, 0x87, 0x7a, 0x13, 0x6c, + 0xc3, 0xf3, 0x46, 0x23, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, + 0x37, 0xee, 0x06, 0x7a, 0xc7, 0xee, 0x87, 0x6a, 0xfc, 0xee, 0xe6, 0x6a, + 0xc0, 0xed, 0x00, 0x6a, 0x13, 0x6c, 0xc3, 0xf3, 0x06, 0x43, 0x07, 0xee, + 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x37, 0xee, 0x06, 0x7a, 0xc7, 0xee, + 0x87, 0x6a, 0xfc, 0xee, 0xe6, 0x6a, 0xc0, 0xed, 0x01, 0x6a, 0x13, 0x6c, + 0xc3, 0xf3, 0x06, 0x63, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, + 0x37, 0xee, 0x06, 0x6a, 0x87, 0xee, 0x86, 0x7a, 0xbc, 0xee, 0xc7, 0x7a, + 0x80, 0xed, 0x02, 0x7a, 0x70, 0xbd, 0x13, 0x6c, 0xdf, 0xed, 0x19, 0x5a, + 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, + 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0x85, 0xee, 0xa6, 0x7a, + 0xbe, 0xe7, 0x13, 0x6c, 0xdf, 0xed, 0x12, 0x5a, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, - 0x77, 0xee, 0x86, 0x7a, 0x85, 0xee, 0xa6, 0x7a, 0xbe, 0xe7, 0x93, 0x6b, - 0xdf, 0xed, 0x12, 0x5a, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, - 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, - 0xee, 0xe7, 0x93, 0x6b, 0xdf, 0xed, 0x0c, 0x5a, 0xc3, 0xf3, 0x08, 0x03, + 0x77, 0xee, 0x86, 0x7a, 0xee, 0xe7, 0x13, 0x6c, 0xdf, 0xed, 0x0c, 0x5a, + 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, + 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0xe0, 0xe7, 0xc0, 0xe9, + 0x00, 0x11, 0x81, 0x60, 0xce, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, + 0x00, 0x90, 0xd0, 0x03, 0x00, 0x24, 0x74, 0x4c, 0x20, 0xbc, 0xbe, 0x4b, + 0x00, 0x24, 0x74, 0x4a, 0x4e, 0x4a, 0x70, 0xb5, 0x94, 0x6a, 0x96, 0x6a, + 0xd3, 0x6a, 0x16, 0xf4, 0x7c, 0x3f, 0xc6, 0xf3, 0x05, 0x31, 0xd5, 0x6b, + 0x00, 0xf0, 0x8d, 0x80, 0x07, 0xee, 0x90, 0x1a, 0xc3, 0xf3, 0x00, 0x13, + 0xc5, 0xf3, 0xcc, 0x01, 0x04, 0xf0, 0x03, 0x04, 0xf8, 0xee, 0xe7, 0x6a, + 0x4b, 0x43, 0x01, 0x2c, 0xb7, 0xee, 0x00, 0x6a, 0x07, 0xee, 0x90, 0x3a, + 0xfa, 0xee, 0xe9, 0x7a, 0x6b, 0xd0, 0x02, 0x2c, 0x5b, 0xd0, 0x00, 0x2c, + 0x67, 0xd1, 0x13, 0x68, 0x9b, 0x06, 0x46, 0xd5, 0x11, 0x68, 0x93, 0x6b, + 0xc1, 0xf3, 0xc1, 0x01, 0x3a, 0x4a, 0xc3, 0xf3, 0x08, 0x03, 0xca, 0x40, + 0x07, 0xee, 0x10, 0x2a, 0xf8, 0xee, 0xc7, 0x5a, 0x85, 0xee, 0xa6, 0x7a, + 0x06, 0xee, 0x90, 0x3a, 0xf8, 0xee, 0xe6, 0x6a, 0x76, 0xee, 0xa7, 0x7a, + 0x77, 0xee, 0x86, 0x7a, 0x30, 0x4a, 0x67, 0xee, 0x87, 0x7a, 0x93, 0x6b, + 0xc3, 0xf3, 0x46, 0x23, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, + 0x37, 0xee, 0x06, 0x7a, 0xc7, 0xee, 0x87, 0x6a, 0xfc, 0xee, 0xe6, 0x6a, + 0xc0, 0xed, 0x00, 0x6a, 0x93, 0x6b, 0xc3, 0xf3, 0x06, 0x43, 0x07, 0xee, + 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x37, 0xee, 0x06, 0x7a, 0xc7, 0xee, + 0x87, 0x6a, 0xfc, 0xee, 0xe6, 0x6a, 0xc0, 0xed, 0x01, 0x6a, 0x93, 0x6b, + 0xc3, 0xf3, 0x06, 0x63, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, + 0x37, 0xee, 0x06, 0x6a, 0x87, 0xee, 0x86, 0x7a, 0xbc, 0xee, 0xc7, 0x7a, + 0x80, 0xed, 0x02, 0x7a, 0x70, 0xbd, 0x93, 0x6b, 0xdf, 0xed, 0x19, 0x5a, + 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, + 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0x85, 0xee, 0xa6, 0x7a, + 0xbe, 0xe7, 0x93, 0x6b, 0xdf, 0xed, 0x12, 0x5a, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, - 0x77, 0xee, 0x86, 0x7a, 0xe0, 0xe7, 0xc0, 0xe9, 0x00, 0x11, 0x81, 0x60, - 0xce, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, 0x00, 0x90, 0xd0, 0x03, - 0x00, 0x24, 0x74, 0x4c, 0x20, 0xbc, 0xbe, 0x4b, 0x00, 0x24, 0x74, 0x4a, - 0x09, 0x4a, 0x82, 0xb0, 0xd2, 0xf8, 0xf4, 0x10, 0x41, 0xf0, 0x02, 0x01, - 0xc2, 0xf8, 0xf4, 0x10, 0xd2, 0xf8, 0xf4, 0x20, 0x02, 0xf0, 0x02, 0x02, - 0x01, 0x92, 0x04, 0x4a, 0x01, 0x9b, 0x53, 0x68, 0x18, 0x43, 0x50, 0x60, - 0x02, 0xb0, 0x70, 0x47, 0x00, 0x44, 0x02, 0x58, 0x00, 0x04, 0x00, 0x58, - 0x11, 0xf0, 0x01, 0x03, 0x07, 0xd0, 0x90, 0xf8, 0x41, 0x30, 0x03, 0xf0, - 0x28, 0x03, 0x28, 0x2b, 0x0c, 0xbf, 0x42, 0x23, 0xf2, 0x23, 0x8a, 0x07, - 0x09, 0xd5, 0x90, 0xf8, 0x41, 0x20, 0x02, 0xf0, 0x28, 0x02, 0x28, 0x2a, - 0x0c, 0xbf, 0x43, 0xf0, 0x44, 0x03, 0x43, 0xf0, 0xf4, 0x03, 0x0a, 0x04, - 0x01, 0x68, 0x48, 0xbf, 0x43, 0xf0, 0xb8, 0x03, 0x0a, 0x68, 0x22, 0xea, - 0x03, 0x03, 0x0b, 0x60, 0x70, 0x47, 0x90, 0xf8, 0x41, 0x30, 0x02, 0x68, - 0x03, 0xf0, 0x28, 0x03, 0x28, 0x2b, 0x10, 0xb5, 0x1f, 0xd1, 0x93, 0x69, - 0x91, 0x69, 0x93, 0x68, 0xd4, 0x68, 0xc4, 0x68, 0x02, 0x2c, 0x12, 0xd1, - 0xc3, 0xf3, 0xc2, 0x13, 0x83, 0xea, 0x11, 0x43, 0x13, 0xf0, 0x06, 0x03, - 0x0b, 0xd1, 0x81, 0x6c, 0x01, 0x31, 0x81, 0x64, 0x81, 0x6c, 0x02, 0x29, - 0x04, 0xd1, 0x08, 0x21, 0x83, 0x64, 0xd1, 0x61, 0x80, 0xf8, 0x40, 0x30, - 0x10, 0xbd, 0x4f, 0xf4, 0x00, 0x41, 0xff, 0xf7, 0xb9, 0xff, 0x00, 0x23, - 0xf6, 0xe7, 0x08, 0x23, 0xd3, 0x61, 0xfa, 0xe7, 0x08, 0xb5, 0x15, 0x4b, - 0x20, 0x22, 0xc3, 0x62, 0x00, 0x23, 0x03, 0x63, 0x43, 0x63, 0x80, 0xf8, - 0x41, 0x20, 0x80, 0xf8, 0x42, 0x30, 0x4b, 0x07, 0x12, 0xd5, 0x03, 0x68, - 0x5a, 0x6a, 0x43, 0x6a, 0x1a, 0x70, 0x43, 0x6a, 0x01, 0x33, 0x43, 0x62, - 0x03, 0x8d, 0x4b, 0xb1, 0x01, 0x3b, 0x03, 0x85, 0x43, 0x8d, 0x01, 0x3b, - 0x9b, 0xb2, 0x43, 0x85, 0x43, 0x6c, 0x43, 0xf0, 0x04, 0x03, 0x43, 0x64, - 0x48, 0xf2, 0x03, 0x01, 0xff, 0xf7, 0x90, 0xff, 0x10, 0x22, 0x03, 0x68, - 0xda, 0x61, 0x00, 0x23, 0x80, 0xf8, 0x40, 0x30, 0x08, 0xbd, 0x00, 0xbf, - 0x00, 0x00, 0xff, 0xff, 0x08, 0xb5, 0x03, 0x68, 0x00, 0x21, 0x1a, 0x68, - 0x80, 0xf8, 0x42, 0x10, 0x51, 0x04, 0x13, 0xd5, 0x1a, 0x68, 0x22, 0xf4, - 0x80, 0x42, 0x1a, 0x60, 0x90, 0xf8, 0x41, 0x30, 0x29, 0x2b, 0x11, 0xd1, - 0x28, 0x23, 0x01, 0x21, 0x80, 0xf8, 0x41, 0x30, 0x21, 0x23, 0x03, 0x63, - 0xff, 0xf7, 0x6e, 0xff, 0x00, 0x23, 0x80, 0xf8, 0x40, 0x30, 0x08, 0xbd, - 0x12, 0x04, 0xed, 0xd5, 0x1a, 0x68, 0x22, 0xf4, 0x00, 0x42, 0xe8, 0xe7, - 0x90, 0xf8, 0x41, 0x30, 0x2a, 0x2b, 0xf4, 0xd1, 0x28, 0x23, 0x02, 0x21, - 0x80, 0xf8, 0x41, 0x30, 0x22, 0x23, 0x03, 0x63, 0xe8, 0xe7, 0x00, 0x00, - 0x38, 0xb5, 0x0c, 0x4b, 0x04, 0x46, 0x0c, 0x4d, 0x03, 0x60, 0x00, 0x23, - 0xc0, 0xe9, 0x01, 0x31, 0x01, 0x23, 0x03, 0x73, 0x28, 0x46, 0x0f, 0xf0, - 0x31, 0xfa, 0x0a, 0xf0, 0x91, 0xfd, 0x07, 0x4b, 0x28, 0x46, 0x1a, 0x68, - 0x1c, 0x60, 0x62, 0x60, 0x0f, 0xf0, 0x28, 0xfa, 0x0a, 0xf0, 0x68, 0xfd, - 0x20, 0x46, 0x38, 0xbd, 0x5c, 0xde, 0x01, 0x08, 0xcc, 0x06, 0x00, 0x24, - 0xc8, 0x06, 0x00, 0x24, 0xf8, 0xb5, 0x03, 0x78, 0x90, 0xf8, 0x01, 0xc0, + 0x77, 0xee, 0x86, 0x7a, 0xee, 0xe7, 0x93, 0x6b, 0xdf, 0xed, 0x0c, 0x5a, + 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, + 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0xe0, 0xe7, 0xc0, 0xe9, + 0x00, 0x11, 0x81, 0x60, 0xce, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, + 0x00, 0x90, 0xd0, 0x03, 0x00, 0x24, 0x74, 0x4c, 0x20, 0xbc, 0xbe, 0x4b, + 0x00, 0x24, 0x74, 0x4a, 0x09, 0x4a, 0x82, 0xb0, 0xd2, 0xf8, 0xf4, 0x10, + 0x41, 0xf0, 0x02, 0x01, 0xc2, 0xf8, 0xf4, 0x10, 0xd2, 0xf8, 0xf4, 0x20, + 0x02, 0xf0, 0x02, 0x02, 0x01, 0x92, 0x04, 0x4a, 0x01, 0x9b, 0x53, 0x68, + 0x18, 0x43, 0x50, 0x60, 0x02, 0xb0, 0x70, 0x47, 0x00, 0x44, 0x02, 0x58, + 0x00, 0x04, 0x00, 0x58, 0x11, 0xf0, 0x01, 0x03, 0x07, 0xd0, 0x90, 0xf8, + 0x41, 0x30, 0x03, 0xf0, 0x28, 0x03, 0x28, 0x2b, 0x0c, 0xbf, 0x42, 0x23, + 0xf2, 0x23, 0x8a, 0x07, 0x09, 0xd5, 0x90, 0xf8, 0x41, 0x20, 0x02, 0xf0, + 0x28, 0x02, 0x28, 0x2a, 0x0c, 0xbf, 0x43, 0xf0, 0x44, 0x03, 0x43, 0xf0, + 0xf4, 0x03, 0x0a, 0x04, 0x01, 0x68, 0x48, 0xbf, 0x43, 0xf0, 0xb8, 0x03, + 0x0a, 0x68, 0x22, 0xea, 0x03, 0x03, 0x0b, 0x60, 0x70, 0x47, 0x90, 0xf8, + 0x41, 0x30, 0x02, 0x68, 0x03, 0xf0, 0x28, 0x03, 0x28, 0x2b, 0x10, 0xb5, + 0x1f, 0xd1, 0x93, 0x69, 0x91, 0x69, 0x93, 0x68, 0xd4, 0x68, 0xc4, 0x68, + 0x02, 0x2c, 0x12, 0xd1, 0xc3, 0xf3, 0xc2, 0x13, 0x83, 0xea, 0x11, 0x43, + 0x13, 0xf0, 0x06, 0x03, 0x0b, 0xd1, 0x81, 0x6c, 0x01, 0x31, 0x81, 0x64, + 0x81, 0x6c, 0x02, 0x29, 0x04, 0xd1, 0x08, 0x21, 0x83, 0x64, 0xd1, 0x61, + 0x80, 0xf8, 0x40, 0x30, 0x10, 0xbd, 0x4f, 0xf4, 0x00, 0x41, 0xff, 0xf7, + 0xb9, 0xff, 0x00, 0x23, 0xf6, 0xe7, 0x08, 0x23, 0xd3, 0x61, 0xfa, 0xe7, + 0x30, 0xb5, 0x03, 0x9d, 0xc1, 0xf3, 0x09, 0x01, 0x04, 0x68, 0x45, 0xea, + 0x02, 0x42, 0x60, 0x68, 0x1a, 0x43, 0x04, 0x4b, 0x43, 0xea, 0x55, 0x53, + 0x0a, 0x43, 0x20, 0xea, 0x03, 0x00, 0x02, 0x43, 0x62, 0x60, 0x30, 0xbd, + 0xff, 0x63, 0xff, 0x03, 0x83, 0x6f, 0x37, 0xb5, 0x04, 0x46, 0x00, 0x2b, + 0x62, 0xd0, 0xd0, 0xf8, 0x88, 0x30, 0x00, 0x2b, 0x5e, 0xd0, 0x90, 0xf8, + 0x70, 0x20, 0x90, 0xf8, 0x41, 0x10, 0x00, 0x2a, 0x14, 0xbf, 0x4f, 0xf0, + 0x00, 0x72, 0x00, 0x22, 0x20, 0x29, 0xc2, 0x65, 0x45, 0xd1, 0x90, 0xf8, + 0x40, 0x10, 0x01, 0x29, 0x41, 0xd0, 0x01, 0x25, 0xc1, 0x6e, 0xd0, 0xf8, + 0x84, 0x00, 0x9b, 0xb2, 0x84, 0xf8, 0x40, 0x50, 0x22, 0x25, 0x60, 0x62, + 0x84, 0xf8, 0x41, 0x50, 0x10, 0x25, 0x84, 0xf8, 0x42, 0x50, 0x00, 0x25, + 0x65, 0x64, 0x63, 0x85, 0x20, 0x4b, 0xe2, 0x62, 0x63, 0x63, 0x63, 0x8d, + 0x9b, 0xb2, 0xff, 0x2b, 0x2b, 0xd9, 0xff, 0x23, 0x23, 0x85, 0x4f, 0xf0, + 0x80, 0x73, 0x22, 0x6b, 0x12, 0x2a, 0x4f, 0xf0, 0x00, 0x02, 0x09, 0xd0, + 0xe0, 0x6a, 0xaa, 0x28, 0x23, 0xd1, 0xe2, 0x62, 0x62, 0x8d, 0x92, 0xb2, + 0xff, 0x2a, 0x00, 0xd8, 0xe3, 0x6a, 0x15, 0x4a, 0x89, 0xb2, 0x00, 0x92, + 0x20, 0x46, 0x94, 0xf8, 0x28, 0x20, 0xff, 0xf7, 0xa1, 0xff, 0x62, 0x6b, + 0x11, 0x49, 0x00, 0x23, 0x8a, 0x42, 0x84, 0xf8, 0x40, 0x30, 0x04, 0xd0, + 0x0f, 0x4b, 0x9a, 0x42, 0x14, 0xbf, 0xf4, 0x23, 0x00, 0x23, 0x21, 0x68, + 0x0a, 0x68, 0x13, 0x43, 0x0b, 0x60, 0x03, 0xb0, 0x30, 0xbd, 0x63, 0x8d, + 0x23, 0x85, 0xe3, 0x6a, 0xd3, 0xe7, 0xe2, 0x6a, 0xb2, 0xf5, 0x2a, 0x4f, + 0xd8, 0xd1, 0x4f, 0xf0, 0x00, 0x72, 0xd4, 0xe7, 0x08, 0x23, 0x84, 0xf8, + 0x60, 0x30, 0xee, 0xe7, 0x2b, 0x70, 0x00, 0x08, 0x00, 0x24, 0x00, 0x80, + 0x4d, 0x71, 0x00, 0x08, 0xa1, 0x6c, 0x00, 0x08, 0x03, 0x68, 0x9a, 0x69, + 0x91, 0x07, 0x01, 0xd5, 0x00, 0x22, 0x9a, 0x62, 0x9a, 0x69, 0xd2, 0x07, + 0x03, 0xd4, 0x9a, 0x69, 0x42, 0xf0, 0x01, 0x02, 0x9a, 0x61, 0x70, 0x47, + 0x08, 0xb5, 0x15, 0x4b, 0x20, 0x22, 0xc3, 0x62, 0x00, 0x23, 0x03, 0x63, + 0x43, 0x63, 0x80, 0xf8, 0x41, 0x20, 0x80, 0xf8, 0x42, 0x30, 0x4b, 0x07, + 0x12, 0xd5, 0x03, 0x68, 0x5a, 0x6a, 0x43, 0x6a, 0x1a, 0x70, 0x43, 0x6a, + 0x01, 0x33, 0x43, 0x62, 0x03, 0x8d, 0x4b, 0xb1, 0x01, 0x3b, 0x03, 0x85, + 0x43, 0x8d, 0x01, 0x3b, 0x9b, 0xb2, 0x43, 0x85, 0x43, 0x6c, 0x43, 0xf0, + 0x04, 0x03, 0x43, 0x64, 0x48, 0xf2, 0x03, 0x01, 0xff, 0xf7, 0xfa, 0xfe, + 0x10, 0x22, 0x03, 0x68, 0xda, 0x61, 0x00, 0x23, 0x80, 0xf8, 0x40, 0x30, + 0x08, 0xbd, 0x00, 0xbf, 0x00, 0x00, 0xff, 0xff, 0x08, 0xb5, 0x03, 0x68, + 0x00, 0x21, 0x1a, 0x68, 0x80, 0xf8, 0x42, 0x10, 0x51, 0x04, 0x13, 0xd5, + 0x1a, 0x68, 0x22, 0xf4, 0x80, 0x42, 0x1a, 0x60, 0x90, 0xf8, 0x41, 0x30, + 0x29, 0x2b, 0x11, 0xd1, 0x28, 0x23, 0x01, 0x21, 0x80, 0xf8, 0x41, 0x30, + 0x21, 0x23, 0x03, 0x63, 0xff, 0xf7, 0xd8, 0xfe, 0x00, 0x23, 0x80, 0xf8, + 0x40, 0x30, 0x08, 0xbd, 0x12, 0x04, 0xed, 0xd5, 0x1a, 0x68, 0x22, 0xf4, + 0x00, 0x42, 0xe8, 0xe7, 0x90, 0xf8, 0x41, 0x30, 0x2a, 0x2b, 0xf4, 0xd1, + 0x28, 0x23, 0x02, 0x21, 0x80, 0xf8, 0x41, 0x30, 0x22, 0x23, 0x03, 0x63, + 0xe8, 0xe7, 0x38, 0xb5, 0x00, 0x25, 0x80, 0xf8, 0x42, 0x50, 0x90, 0xf8, + 0x41, 0x30, 0x21, 0x2b, 0x4f, 0xf0, 0x20, 0x03, 0x80, 0xf8, 0x41, 0x30, + 0x0b, 0xd1, 0x11, 0x23, 0x45, 0x63, 0x01, 0x21, 0x03, 0x63, 0xff, 0xf7, + 0xb1, 0xfe, 0x80, 0xf8, 0x40, 0x50, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, + 0x0b, 0xbf, 0x12, 0x23, 0x02, 0x21, 0x45, 0x63, 0x03, 0x63, 0xff, 0xf7, + 0xa5, 0xfe, 0x08, 0x23, 0x80, 0xf8, 0x40, 0x50, 0x80, 0xf8, 0x60, 0x30, + 0x38, 0xbd, 0x02, 0x68, 0x43, 0x6b, 0x91, 0x69, 0x12, 0x68, 0x03, 0xb1, + 0x18, 0x47, 0x70, 0x47, 0x38, 0xb5, 0x0c, 0x4b, 0x04, 0x46, 0x0c, 0x4d, + 0x03, 0x60, 0x00, 0x23, 0xc0, 0xe9, 0x01, 0x31, 0x01, 0x23, 0x03, 0x73, + 0x28, 0x46, 0x0e, 0xf0, 0x61, 0xfb, 0x0a, 0xf0, 0x0f, 0xfa, 0x07, 0x4b, + 0x28, 0x46, 0x1a, 0x68, 0x1c, 0x60, 0x62, 0x60, 0x0e, 0xf0, 0x58, 0xfb, + 0x0a, 0xf0, 0xe6, 0xf9, 0x20, 0x46, 0x38, 0xbd, 0xbc, 0xd8, 0x01, 0x08, + 0xe0, 0x06, 0x00, 0x24, 0xdc, 0x06, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x4f, + 0xe9, 0xb0, 0x05, 0x46, 0x93, 0x46, 0x0f, 0x46, 0x44, 0x22, 0x00, 0x21, + 0x15, 0xa8, 0x98, 0x46, 0x1a, 0xf0, 0x4a, 0xfa, 0xea, 0x6d, 0x42, 0xf2, + 0x10, 0x73, 0x59, 0x46, 0x07, 0x32, 0x15, 0xa8, 0x23, 0x93, 0xd2, 0x08, + 0x0f, 0xf0, 0x28, 0xff, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xd1, 0x81, + 0x05, 0xf1, 0x34, 0x01, 0x08, 0xf1, 0x0c, 0x00, 0x0f, 0xf0, 0x8e, 0xfe, + 0x00, 0x28, 0x40, 0xf0, 0xa3, 0x80, 0x05, 0xf1, 0x28, 0x01, 0x40, 0x46, + 0x0f, 0xf0, 0x86, 0xfe, 0xb0, 0xfa, 0x80, 0xf3, 0x5b, 0x09, 0x05, 0x93, + 0xeb, 0x6d, 0xb3, 0xf5, 0xc0, 0x7f, 0x2c, 0xbf, 0x05, 0x22, 0x04, 0x22, + 0x03, 0x92, 0x05, 0x9a, 0x12, 0xb1, 0x03, 0x9a, 0x01, 0x32, 0x03, 0x92, + 0x03, 0x9a, 0x93, 0x42, 0x98, 0xbf, 0x02, 0x22, 0x01, 0x3b, 0x02, 0xf1, + 0xff, 0x39, 0x03, 0x92, 0x01, 0x22, 0x02, 0xfa, 0x09, 0xf2, 0x06, 0x92, + 0x9d, 0xf8, 0x18, 0x20, 0x04, 0x92, 0x03, 0x9a, 0x13, 0x44, 0xb3, 0xfb, + 0xf2, 0xf3, 0x02, 0x93, 0x05, 0x9b, 0x13, 0xb1, 0x6e, 0x6f, 0x00, 0x2e, + 0x5e, 0xd1, 0x24, 0x21, 0x06, 0x98, 0x1b, 0xf0, 0xa5, 0xfc, 0x06, 0x46, + 0x00, 0x28, 0x00, 0xf0, 0x95, 0x81, 0x00, 0x24, 0x4f, 0xf0, 0x24, 0x0a, + 0x0a, 0xfb, 0x04, 0x60, 0x01, 0x34, 0x0f, 0xf0, 0x19, 0xfe, 0x04, 0x9a, + 0xe3, 0xb2, 0x9a, 0x42, 0xf6, 0xd8, 0x41, 0x46, 0x30, 0x46, 0x10, 0xf0, + 0x69, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x6e, 0xd1, 0x02, 0x9b, 0x80, 0x46, + 0x03, 0xfb, 0x09, 0xfa, 0x4f, 0xf0, 0x01, 0x09, 0xd0, 0x45, 0x53, 0xd1, + 0x0d, 0xf1, 0x98, 0x09, 0x00, 0x22, 0x01, 0x23, 0x48, 0x46, 0x03, 0xeb, + 0xc3, 0x01, 0x01, 0x32, 0x5b, 0x00, 0x06, 0xeb, 0x81, 0x01, 0xdb, 0xb2, + 0x40, 0xf8, 0x04, 0x1b, 0x04, 0x99, 0x99, 0x42, 0xf3, 0xd8, 0x26, 0xa9, + 0x28, 0x46, 0x11, 0xf0, 0x93, 0xff, 0x04, 0x46, 0x00, 0x28, 0x4e, 0xd1, + 0x4f, 0xf0, 0x01, 0x08, 0x08, 0xeb, 0xc8, 0x03, 0xc2, 0x46, 0x06, 0xeb, + 0x83, 0x03, 0x52, 0x46, 0x0a, 0xf1, 0xff, 0x3a, 0x00, 0x2a, 0x6b, 0xd1, + 0x4f, 0xea, 0x48, 0x08, 0x04, 0x9b, 0x5f, 0xfa, 0x88, 0xf8, 0x43, 0x45, + 0xee, 0xd8, 0x24, 0x23, 0x01, 0x32, 0x06, 0x99, 0x91, 0x42, 0x6d, 0xd1, + 0x4a, 0x1e, 0x28, 0x46, 0x26, 0xa9, 0x11, 0xf0, 0x73, 0xff, 0x04, 0x46, + 0x78, 0xbb, 0x05, 0x9b, 0x13, 0xb1, 0x06, 0x9b, 0x6e, 0x67, 0xab, 0x67, + 0x00, 0x24, 0x05, 0xf1, 0x4c, 0x08, 0x01, 0x23, 0x0d, 0xf1, 0x24, 0x09, + 0x21, 0x46, 0x40, 0x46, 0x0e, 0x94, 0xc9, 0xf8, 0x08, 0x40, 0xc9, 0xe9, + 0x00, 0x34, 0xcd, 0xe9, 0x0c, 0x34, 0x0f, 0xf0, 0x56, 0xff, 0x01, 0x28, + 0x53, 0xd0, 0xa4, 0xf5, 0x9f, 0x44, 0x14, 0xe0, 0x05, 0x94, 0x63, 0xe7, + 0x02, 0x9b, 0xb8, 0xfb, 0xf3, 0xf0, 0x09, 0xfa, 0x00, 0xf1, 0x24, 0x23, + 0xc9, 0xb2, 0x03, 0xfb, 0x01, 0x62, 0x02, 0x9b, 0x03, 0xfb, 0x10, 0x80, + 0xe8, 0xb1, 0x11, 0x46, 0x28, 0x46, 0x11, 0xf0, 0xaf, 0xfa, 0x04, 0x46, + 0x28, 0xb3, 0x15, 0xa8, 0x0f, 0xf0, 0xca, 0xfc, 0x44, 0x21, 0x15, 0xa8, + 0x0e, 0xf0, 0x4c, 0xff, 0x42, 0xf2, 0x10, 0x73, 0x23, 0x93, 0x6b, 0x6f, + 0xb3, 0x42, 0x02, 0xd0, 0x00, 0x2e, 0x40, 0xf0, 0x12, 0x81, 0x14, 0xb1, + 0x38, 0x46, 0x10, 0xf0, 0x70, 0xf8, 0x20, 0x46, 0x69, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0x49, 0x08, 0x10, 0x46, 0x07, 0x92, 0x01, 0xeb, 0xc1, 0x01, + 0x06, 0xeb, 0x81, 0x01, 0x10, 0xf0, 0xd6, 0xf9, 0x07, 0x9a, 0x04, 0x46, + 0x00, 0x28, 0xd4, 0xd0, 0xd9, 0xe7, 0x08, 0xf1, 0x01, 0x08, 0x6d, 0xe7, + 0x24, 0x22, 0x28, 0x46, 0x07, 0x93, 0x02, 0xfb, 0x0a, 0xf1, 0x72, 0x18, + 0x19, 0x44, 0x11, 0xf0, 0xc1, 0xfb, 0x07, 0x9b, 0x04, 0x46, 0x00, 0x28, + 0x81, 0xd0, 0xc8, 0xe7, 0x03, 0xfb, 0x02, 0x61, 0x49, 0xf8, 0x04, 0x1b, + 0x88, 0xe7, 0x21, 0x46, 0x58, 0x46, 0x0f, 0xf0, 0xfc, 0xfe, 0xb0, 0xfa, + 0x80, 0xfa, 0x59, 0x46, 0x48, 0x46, 0x10, 0xf0, 0x85, 0xf9, 0x04, 0x46, + 0x4f, 0xea, 0x5a, 0x1a, 0x00, 0xbb, 0x5a, 0x46, 0x41, 0x46, 0x0c, 0xa8, + 0x10, 0xf0, 0x39, 0xfe, 0x04, 0x46, 0xc8, 0xb9, 0x52, 0x46, 0x0c, 0xa9, + 0x48, 0x46, 0x0f, 0xf0, 0xd7, 0xff, 0x04, 0x46, 0x90, 0xb9, 0x02, 0x9b, + 0x0d, 0xf1, 0x98, 0x08, 0x01, 0x46, 0x26, 0xa8, 0x5a, 0x1c, 0xa3, 0x46, + 0x1a, 0xf0, 0x1a, 0xf9, 0x43, 0x46, 0x02, 0x9a, 0x5a, 0x45, 0x4f, 0xd1, + 0x4f, 0xf0, 0x00, 0x0e, 0x4f, 0xf0, 0x01, 0x0c, 0xe3, 0x45, 0x65, 0xd2, + 0x0c, 0xa8, 0x0f, 0xf0, 0xf5, 0xff, 0x09, 0xa8, 0x0f, 0xf0, 0xf2, 0xff, + 0x00, 0x2c, 0x8c, 0xd1, 0x0c, 0xa8, 0x0d, 0xf1, 0x98, 0x08, 0x0f, 0xf0, + 0x27, 0xfd, 0x02, 0x9b, 0x32, 0x46, 0x39, 0x46, 0x18, 0xf8, 0x03, 0x30, + 0x28, 0x46, 0x00, 0x93, 0x04, 0x9b, 0x10, 0xf0, 0x4d, 0xfe, 0x04, 0x46, + 0x88, 0xb9, 0x01, 0x21, 0x07, 0xf1, 0x18, 0x00, 0x0f, 0xf0, 0x04, 0xff, + 0x04, 0x46, 0x50, 0xb9, 0x15, 0xab, 0x4d, 0x4a, 0x39, 0x46, 0x28, 0x46, + 0x11, 0xf0, 0xb2, 0xf9, 0x04, 0x46, 0x10, 0xb9, 0x02, 0x9b, 0x00, 0x2b, + 0x5b, 0xd1, 0x0c, 0xa8, 0x0f, 0xf0, 0xdd, 0xff, 0x00, 0x2c, 0x7f, 0xf4, + 0x64, 0xaf, 0x52, 0x46, 0x39, 0x46, 0x28, 0x46, 0x10, 0xf0, 0x0a, 0xfe, + 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x5b, 0xaf, 0x15, 0xab, 0x40, 0x4a, + 0x39, 0x46, 0x28, 0x46, 0x11, 0xf0, 0x98, 0xf9, 0x04, 0x46, 0x00, 0x28, + 0x7f, 0xf4, 0x51, 0xaf, 0x39, 0x46, 0x28, 0x46, 0x11, 0xf0, 0x40, 0xfe, + 0x04, 0x46, 0x4a, 0xe7, 0x59, 0x46, 0x00, 0x22, 0x48, 0x46, 0x05, 0x91, + 0xcd, 0xe9, 0x06, 0x32, 0x0f, 0xf0, 0x7f, 0xfe, 0x07, 0x9a, 0x06, 0x9b, + 0x90, 0x40, 0x02, 0x99, 0x93, 0xf8, 0x00, 0xc0, 0x01, 0x32, 0x4c, 0xea, + 0x00, 0x00, 0x18, 0x70, 0x08, 0x46, 0x05, 0x99, 0x01, 0x44, 0x03, 0x98, + 0x90, 0x42, 0xe9, 0xd8, 0x0b, 0xf1, 0x01, 0x0b, 0x01, 0x33, 0x90, 0xe7, + 0x98, 0xf8, 0x01, 0x00, 0x0c, 0xf1, 0x01, 0x0c, 0x98, 0xf8, 0x00, 0x20, + 0x80, 0xea, 0x0e, 0x03, 0x00, 0xea, 0x0e, 0x00, 0xd9, 0x43, 0x5b, 0xb2, + 0x01, 0xf0, 0x01, 0x01, 0x12, 0xfb, 0x01, 0xf2, 0x52, 0xb2, 0x03, 0xea, + 0x02, 0x09, 0x53, 0x40, 0x08, 0xf8, 0x01, 0x3f, 0x49, 0xea, 0x00, 0x0e, + 0x18, 0xf8, 0x01, 0x3c, 0x5f, 0xfa, 0x8e, 0xfe, 0x43, 0xea, 0xc1, 0x11, + 0x08, 0xf8, 0x01, 0x1c, 0x76, 0xe7, 0x02, 0x9b, 0x3a, 0x46, 0x39, 0x46, + 0x28, 0x46, 0x01, 0x3b, 0x02, 0x93, 0x11, 0xf0, 0xb3, 0xf9, 0x90, 0xb9, + 0x02, 0x9b, 0x32, 0x46, 0x0c, 0xa9, 0x28, 0x46, 0x13, 0xf8, 0x08, 0x30, + 0x00, 0x93, 0x04, 0x9b, 0x10, 0xf0, 0xca, 0xfd, 0x38, 0xb9, 0x0c, 0xab, + 0x3a, 0x46, 0x39, 0x46, 0x28, 0x46, 0x11, 0xf0, 0xe7, 0xfa, 0x00, 0x28, + 0x84, 0xd0, 0x04, 0x46, 0x85, 0xe7, 0x00, 0x26, 0x04, 0x96, 0xec, 0xe6, + 0x0a, 0x4c, 0xea, 0xe6, 0x08, 0xfb, 0x05, 0x60, 0x01, 0x35, 0x0f, 0xf0, + 0x6a, 0xff, 0xeb, 0xb2, 0x04, 0x9a, 0x9a, 0x42, 0xf6, 0xd8, 0x30, 0x46, + 0x19, 0xf0, 0xf4, 0xff, 0xed, 0xe6, 0x00, 0x25, 0x4f, 0xf0, 0x24, 0x08, + 0xf3, 0xe7, 0x00, 0xbf, 0x41, 0x0c, 0x01, 0x08, 0x80, 0xb2, 0xff, 0xff, + 0x2d, 0xe9, 0xf0, 0x4f, 0x2d, 0xed, 0x02, 0x8b, 0xbb, 0xb0, 0x04, 0x46, + 0x0e, 0x46, 0x91, 0x46, 0x08, 0xee, 0x10, 0x3a, 0x0f, 0xf0, 0x92, 0xfc, + 0x02, 0x28, 0x40, 0xf0, 0x9d, 0x81, 0x44, 0x22, 0x00, 0x21, 0x29, 0xa8, + 0x20, 0xad, 0x1a, 0xf0, 0x3b, 0xf8, 0x42, 0xf2, 0x10, 0x73, 0x28, 0x46, + 0x01, 0x27, 0x37, 0x93, 0x0f, 0xf0, 0x58, 0xfc, 0xe2, 0x6d, 0x00, 0x23, + 0x49, 0x46, 0x29, 0xa8, 0x07, 0x32, 0x04, 0x93, 0xd2, 0x08, 0xcd, 0xe9, + 0x02, 0x73, 0x0f, 0xf0, 0x11, 0xfd, 0x03, 0x46, 0x00, 0x28, 0x62, 0xd1, + 0x18, 0xee, 0x10, 0x1a, 0x02, 0xa8, 0x10, 0xf0, 0x71, 0xf8, 0x03, 0x46, + 0x00, 0x28, 0x5a, 0xd1, 0x18, 0xee, 0x10, 0x1a, 0x28, 0x46, 0x10, 0xf0, + 0x95, 0xf8, 0x03, 0x46, 0x00, 0x28, 0x52, 0xd1, 0x39, 0x46, 0x30, 0x46, + 0x0f, 0xf0, 0x24, 0xfe, 0x03, 0x46, 0x00, 0x28, 0x4b, 0xd1, 0x06, 0xf1, + 0x18, 0x07, 0x01, 0x46, 0x38, 0x46, 0x0f, 0xf0, 0x1b, 0xfe, 0x03, 0x46, + 0x00, 0x28, 0x42, 0xd1, 0x04, 0xf1, 0x04, 0x0b, 0x06, 0xf1, 0x0c, 0x00, + 0x0f, 0xf0, 0xe8, 0xfe, 0x59, 0x46, 0x28, 0x46, 0x0f, 0xf0, 0x54, 0xfc, + 0x00, 0x28, 0x2e, 0xda, 0x29, 0xab, 0xb3, 0x4a, 0x29, 0x46, 0x20, 0x46, + 0x11, 0xf0, 0x72, 0xf8, 0x03, 0x46, 0x70, 0xbb, 0x48, 0x46, 0x4f, 0xf0, + 0x01, 0x08, 0x0f, 0xf0, 0x09, 0xfd, 0x43, 0x1e, 0x00, 0x93, 0x00, 0x9b, + 0x01, 0x33, 0x3f, 0xd1, 0x29, 0xab, 0xaa, 0x4a, 0x31, 0x46, 0x20, 0x46, + 0x11, 0xf0, 0x60, 0xf8, 0x03, 0x46, 0xe0, 0xb9, 0x5a, 0x46, 0x39, 0x46, + 0x38, 0x46, 0x11, 0xf0, 0x7f, 0xfb, 0x03, 0x46, 0xa8, 0xb9, 0x3b, 0x46, + 0x32, 0x46, 0x31, 0x46, 0x20, 0x46, 0x10, 0xf0, 0x55, 0xff, 0x03, 0x46, + 0x68, 0xb9, 0x01, 0x21, 0x38, 0x46, 0x0f, 0xf0, 0xdf, 0xfd, 0x03, 0x46, + 0x07, 0xe0, 0x5a, 0x46, 0x29, 0x46, 0x28, 0x46, 0x10, 0xf0, 0x9f, 0xf9, + 0x03, 0x46, 0x00, 0x28, 0xc2, 0xd0, 0x29, 0xa8, 0x00, 0x93, 0x0f, 0xf0, + 0x11, 0xfb, 0x44, 0x21, 0x29, 0xa8, 0x0e, 0xf0, 0x93, 0xfd, 0x42, 0xf2, + 0x10, 0x72, 0x20, 0xa8, 0x37, 0x92, 0x0f, 0xf0, 0xb0, 0xfe, 0x02, 0xa8, + 0x0f, 0xf0, 0x9a, 0xfe, 0x00, 0x9b, 0x00, 0x2b, 0x00, 0xf0, 0x0b, 0x81, + 0x18, 0x46, 0x3b, 0xb0, 0xbd, 0xec, 0x02, 0x8b, 0xbd, 0xe8, 0xf0, 0x8f, + 0x00, 0x99, 0x48, 0x46, 0x0f, 0xf0, 0x65, 0xfd, 0x29, 0x46, 0x5f, 0xfa, + 0x80, 0xfa, 0x30, 0x46, 0x52, 0x46, 0x0f, 0xf0, 0x11, 0xfe, 0x03, 0x46, + 0x00, 0x28, 0xd6, 0xd1, 0x52, 0x46, 0x26, 0xa9, 0x38, 0x46, 0x0f, 0xf0, + 0x09, 0xfe, 0x03, 0x46, 0x00, 0x28, 0xce, 0xd1, 0x3b, 0x46, 0x1f, 0x90, + 0x32, 0x46, 0x05, 0xa9, 0xcd, 0xe9, 0x05, 0x80, 0xcd, 0xe9, 0x07, 0x08, + 0xcd, 0xe9, 0x09, 0x00, 0xcd, 0xe9, 0x0b, 0x80, 0xcd, 0xe9, 0x0d, 0x08, + 0xcd, 0xe9, 0x0f, 0x00, 0xcd, 0xe9, 0x11, 0x80, 0xcd, 0xe9, 0x13, 0x08, + 0xcd, 0xe9, 0x15, 0x00, 0xcd, 0xe9, 0x17, 0x80, 0xcd, 0xe9, 0x19, 0x08, + 0xcd, 0xe9, 0x1b, 0x00, 0xcd, 0xe9, 0x1d, 0x80, 0x20, 0x46, 0x10, 0xf0, + 0x1b, 0xfd, 0x03, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x93, 0x80, 0x05, 0xab, + 0x08, 0xa9, 0x20, 0x46, 0x1a, 0x46, 0x10, 0xf0, 0xe9, 0xfe, 0x03, 0x46, + 0x00, 0x28, 0x40, 0xf0, 0x89, 0x80, 0x3b, 0x46, 0x32, 0x46, 0x0b, 0xa9, + 0x20, 0x46, 0x10, 0xf0, 0x17, 0xfd, 0x03, 0x46, 0x00, 0x28, 0x7f, 0xd1, + 0x0b, 0xab, 0x0e, 0xa9, 0x20, 0x46, 0x1a, 0x46, 0x10, 0xf0, 0xd6, 0xfe, + 0x03, 0x46, 0x00, 0x28, 0x76, 0xd1, 0x0e, 0xab, 0x08, 0xaa, 0x11, 0xa9, + 0x20, 0x46, 0x10, 0xf0, 0x05, 0xfd, 0x03, 0x46, 0x00, 0x28, 0x6d, 0xd1, + 0x26, 0xab, 0x2a, 0x46, 0x14, 0xa9, 0x20, 0x46, 0x10, 0xf0, 0xec, 0xfc, + 0x03, 0x46, 0x00, 0x28, 0x64, 0xd1, 0x26, 0xab, 0x2a, 0x46, 0x17, 0xa9, + 0x20, 0x46, 0x10, 0xf0, 0xf3, 0xfc, 0x03, 0x46, 0x00, 0x28, 0x5b, 0xd1, + 0x05, 0xab, 0x17, 0xaa, 0x1a, 0xa9, 0x20, 0x46, 0x10, 0xf0, 0xb2, 0xfe, + 0x03, 0x46, 0x00, 0x28, 0x52, 0xd1, 0x0b, 0xab, 0x14, 0xaa, 0x1d, 0xa9, + 0x20, 0x46, 0x10, 0xf0, 0xa9, 0xfe, 0x03, 0x46, 0x00, 0x28, 0x49, 0xd1, + 0x1d, 0xab, 0x1a, 0xaa, 0x29, 0x46, 0x20, 0x46, 0x10, 0xf0, 0xc8, 0xfc, + 0x03, 0x46, 0x00, 0x28, 0x40, 0xd1, 0x2b, 0x46, 0x2a, 0x46, 0x29, 0x46, + 0x20, 0x46, 0x10, 0xf0, 0x97, 0xfe, 0x03, 0x46, 0x00, 0x28, 0x37, 0xd1, + 0x1d, 0xab, 0x1a, 0xaa, 0x26, 0xa9, 0x20, 0x46, 0x10, 0xf0, 0xc6, 0xfc, + 0x03, 0x46, 0x78, 0xbb, 0x26, 0xab, 0x20, 0x46, 0x1a, 0x46, 0x19, 0x46, + 0x10, 0xf0, 0x86, 0xfe, 0x03, 0x46, 0x38, 0xbb, 0x26, 0xab, 0x02, 0xaa, + 0x20, 0x46, 0x19, 0x46, 0x10, 0xf0, 0x7e, 0xfe, 0x03, 0x46, 0xf8, 0xb9, + 0x0e, 0xab, 0x08, 0xaa, 0x31, 0x46, 0x20, 0x46, 0x10, 0xf0, 0x76, 0xfe, + 0x03, 0x46, 0xb8, 0xb9, 0x11, 0xab, 0x04, 0xf1, 0x10, 0x02, 0x39, 0x46, + 0x20, 0x46, 0x10, 0xf0, 0x6d, 0xfe, 0x03, 0x46, 0x70, 0xb9, 0x3b, 0x46, + 0x0e, 0xaa, 0x39, 0x46, 0x20, 0x46, 0x10, 0xf0, 0x8d, 0xfc, 0x03, 0x46, + 0x30, 0xb9, 0x3b, 0x46, 0x11, 0xaa, 0x39, 0x46, 0x20, 0x46, 0x10, 0xf0, + 0x5d, 0xfe, 0x03, 0x46, 0x05, 0xa8, 0x01, 0x93, 0x0f, 0xf0, 0xbe, 0xfd, + 0x08, 0xa8, 0x0f, 0xf0, 0xbb, 0xfd, 0x0b, 0xa8, 0x0f, 0xf0, 0xb8, 0xfd, + 0x0e, 0xa8, 0x0f, 0xf0, 0xb5, 0xfd, 0x11, 0xa8, 0x0f, 0xf0, 0xb2, 0xfd, + 0x14, 0xa8, 0x0f, 0xf0, 0xaf, 0xfd, 0x17, 0xa8, 0x0f, 0xf0, 0xac, 0xfd, + 0x1a, 0xa8, 0x0f, 0xf0, 0xa9, 0xfd, 0x1d, 0xa8, 0x0f, 0xf0, 0xa6, 0xfd, + 0x01, 0x9b, 0x00, 0x2b, 0x7f, 0xf4, 0xf7, 0xae, 0x52, 0x46, 0x29, 0x46, + 0x30, 0x46, 0x0f, 0xf0, 0x29, 0xfd, 0x03, 0x46, 0x00, 0x28, 0x7f, 0xf4, + 0xee, 0xae, 0x52, 0x46, 0x26, 0xa9, 0x38, 0x46, 0x0f, 0xf0, 0x20, 0xfd, + 0x00, 0x9b, 0x01, 0x3b, 0x00, 0x93, 0x03, 0x46, 0x00, 0x28, 0x3f, 0xf4, + 0xba, 0xae, 0xe0, 0xe6, 0x09, 0x4b, 0x20, 0x46, 0x00, 0x93, 0x0f, 0xf0, + 0xed, 0xfa, 0x01, 0x28, 0x00, 0x9b, 0x7f, 0xf4, 0xed, 0xae, 0x18, 0xee, + 0x10, 0x3a, 0x4a, 0x46, 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x3e, 0xfc, + 0x03, 0x46, 0xe3, 0xe6, 0x41, 0x0c, 0x01, 0x08, 0x80, 0xb0, 0xff, 0xff, + 0xf7, 0xb5, 0x05, 0x46, 0x0c, 0x46, 0x10, 0x46, 0x01, 0x21, 0x16, 0x46, + 0x1f, 0x46, 0x0f, 0xf0, 0x20, 0xfb, 0x30, 0xb9, 0x39, 0x46, 0x20, 0x46, + 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0x0f, 0xf0, 0xf9, 0xbe, 0x4f, 0xf0, + 0xff, 0x31, 0x30, 0x46, 0x0f, 0xf0, 0x13, 0xfb, 0xa0, 0xb9, 0x39, 0x46, + 0x20, 0x46, 0x0f, 0xf0, 0xef, 0xfe, 0x10, 0xbb, 0x04, 0xf1, 0x0c, 0x02, + 0x01, 0x46, 0x10, 0x46, 0x01, 0x92, 0x0f, 0xf0, 0x06, 0xfb, 0x01, 0x9a, + 0xc8, 0xb1, 0x29, 0x1d, 0x10, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, + 0x10, 0xf0, 0x6f, 0xbb, 0x31, 0x46, 0x28, 0x46, 0x0f, 0xf0, 0x30, 0xfc, + 0x68, 0xb9, 0x39, 0x46, 0x28, 0x46, 0x10, 0xf0, 0x27, 0xfe, 0x40, 0xb9, + 0x3b, 0x46, 0x32, 0x46, 0x21, 0x46, 0x28, 0x46, 0x03, 0xb0, 0xbd, 0xe8, + 0xf0, 0x40, 0xff, 0xf7, 0xff, 0xbd, 0x03, 0xb0, 0xf0, 0xbd, 0x30, 0xb5, + 0x8f, 0xb0, 0x0c, 0x46, 0x19, 0x46, 0x13, 0x9d, 0xfb, 0xb1, 0x00, 0x23, + 0xcd, 0xe9, 0x06, 0x33, 0x08, 0x93, 0x13, 0x0f, 0x8d, 0xf8, 0x24, 0x30, + 0x13, 0x0d, 0x8d, 0xf8, 0x25, 0x30, 0x13, 0x0b, 0x12, 0x09, 0x8d, 0xf8, + 0x26, 0x30, 0x8d, 0xf8, 0x27, 0x20, 0x4f, 0xf4, 0x8e, 0x72, 0x23, 0x78, + 0x02, 0xfb, 0x03, 0x00, 0x12, 0x9b, 0x05, 0xaa, 0x05, 0x93, 0x0a, 0xab, + 0x04, 0x30, 0x00, 0x93, 0x06, 0xab, 0xcd, 0xe9, 0x01, 0x55, 0x11, 0xf0, + 0x33, 0xfd, 0x0f, 0xb0, 0x30, 0xbd, 0x37, 0xb5, 0x02, 0x23, 0x15, 0x46, + 0x01, 0xaa, 0x04, 0x46, 0x11, 0xf0, 0xb8, 0xfc, 0x18, 0xb9, 0x01, 0x9b, + 0x1b, 0xb9, 0x6f, 0xf0, 0x63, 0x00, 0x03, 0xb0, 0x30, 0xbd, 0x23, 0x68, + 0x93, 0xf9, 0x00, 0x30, 0x00, 0x2b, 0xf6, 0xdb, 0x01, 0x9b, 0x3b, 0xb1, + 0x22, 0x68, 0x11, 0x78, 0xa1, 0xb1, 0x04, 0x2b, 0xef, 0xd8, 0x01, 0xd1, + 0x0b, 0x06, 0xec, 0xd4, 0x00, 0x23, 0x2b, 0x60, 0x01, 0x9b, 0x5a, 0x1e, + 0x01, 0x92, 0x00, 0x2b, 0xe7, 0xd0, 0x23, 0x68, 0x29, 0x68, 0x13, 0xf8, + 0x01, 0x2b, 0x42, 0xea, 0x01, 0x22, 0x2a, 0x60, 0x23, 0x60, 0xf1, 0xe7, + 0x01, 0x32, 0x01, 0x3b, 0x22, 0x60, 0x01, 0x93, 0xe0, 0xe7, 0x00, 0x00, + 0xf8, 0xb5, 0x0a, 0x23, 0x68, 0x4e, 0x05, 0x46, 0x0c, 0x46, 0x03, 0x60, + 0x33, 0x68, 0x1b, 0xb9, 0x11, 0xf0, 0xf4, 0xfe, 0x01, 0x23, 0x33, 0x60, + 0x05, 0xf1, 0x08, 0x03, 0x2a, 0x46, 0x21, 0x46, 0x04, 0xf1, 0x10, 0x00, + 0x42, 0xf8, 0x04, 0x3f, 0x8b, 0x78, 0x04, 0x31, 0x11, 0xf8, 0x03, 0x4c, + 0x1b, 0x04, 0x43, 0xea, 0x04, 0x23, 0x11, 0xf8, 0x04, 0x4c, 0x23, 0x43, + 0x11, 0xf8, 0x01, 0x4c, 0x88, 0x42, 0x43, 0xea, 0x04, 0x63, 0x42, 0xf8, + 0x04, 0x3f, 0xed, 0xd1, 0x2b, 0x68, 0x0c, 0x2b, 0x2e, 0xd0, 0x0e, 0x2b, + 0x5d, 0xd0, 0x0a, 0x2b, 0x28, 0xd1, 0x28, 0x46, 0x53, 0x49, 0x54, 0x4d, + 0x00, 0xf1, 0xa0, 0x06, 0x42, 0x69, 0x10, 0x30, 0x55, 0xf8, 0x04, 0x4b, + 0x50, 0xf8, 0x08, 0x7c, 0xc2, 0xf3, 0x07, 0x23, 0x7c, 0x40, 0xcb, 0x5c, + 0x63, 0x40, 0x14, 0x0e, 0x0c, 0x5d, 0x83, 0xea, 0x04, 0x43, 0xd4, 0xb2, + 0x0c, 0x5d, 0x83, 0xea, 0x04, 0x63, 0xc2, 0xf3, 0x07, 0x44, 0x0c, 0x5d, + 0x83, 0xea, 0x04, 0x23, 0x50, 0xf8, 0x04, 0x4c, 0x83, 0x60, 0x63, 0x40, + 0x04, 0x68, 0xc3, 0x60, 0x63, 0x40, 0x03, 0x61, 0x53, 0x40, 0x43, 0x61, + 0x86, 0x42, 0xdb, 0xd1, 0x00, 0x20, 0xf8, 0xbd, 0x28, 0x46, 0x3f, 0x4c, + 0xc0, 0x35, 0x3d, 0x49, 0xc2, 0x69, 0x18, 0x30, 0x54, 0xf8, 0x04, 0x6b, + 0x50, 0xf8, 0x10, 0x7c, 0xc2, 0xf3, 0x07, 0x23, 0x7e, 0x40, 0xcb, 0x5c, + 0x73, 0x40, 0x16, 0x0e, 0x8e, 0x5d, 0x83, 0xea, 0x06, 0x43, 0xd6, 0xb2, + 0x8e, 0x5d, 0x83, 0xea, 0x06, 0x63, 0xc2, 0xf3, 0x07, 0x46, 0x8e, 0x5d, + 0x83, 0xea, 0x06, 0x23, 0x50, 0xf8, 0x0c, 0x6c, 0x83, 0x60, 0x73, 0x40, + 0x50, 0xf8, 0x08, 0x6c, 0xc3, 0x60, 0x73, 0x40, 0x50, 0xf8, 0x04, 0x6c, + 0x03, 0x61, 0x73, 0x40, 0x06, 0x68, 0x43, 0x61, 0x73, 0x40, 0x83, 0x61, + 0x53, 0x40, 0xc3, 0x61, 0x85, 0x42, 0xd3, 0xd1, 0xcc, 0xe7, 0x28, 0x46, + 0x25, 0x49, 0x26, 0x4d, 0x00, 0xf1, 0xe0, 0x06, 0x44, 0x6a, 0x20, 0x30, + 0x55, 0xf8, 0x04, 0x2b, 0x50, 0xf8, 0x18, 0x7c, 0xc4, 0xf3, 0x07, 0x23, + 0x7a, 0x40, 0xcb, 0x5c, 0x50, 0xf8, 0x08, 0x7c, 0x53, 0x40, 0x22, 0x0e, + 0x8a, 0x5c, 0x83, 0xea, 0x02, 0x43, 0xe2, 0xb2, 0x8a, 0x5c, 0x83, 0xea, + 0x02, 0x63, 0xc4, 0xf3, 0x07, 0x42, 0x8a, 0x5c, 0x83, 0xea, 0x02, 0x23, + 0x50, 0xf8, 0x14, 0x2c, 0x83, 0x60, 0x53, 0x40, 0x50, 0xf8, 0x10, 0x2c, + 0xc3, 0x60, 0x53, 0x40, 0x50, 0xf8, 0x0c, 0x2c, 0x03, 0x61, 0x53, 0x40, + 0xda, 0xb2, 0x43, 0x61, 0x8a, 0x5c, 0x7a, 0x40, 0x1f, 0x0e, 0xcf, 0x5d, + 0x82, 0xea, 0x07, 0x62, 0xc3, 0xf3, 0x07, 0x27, 0xc3, 0xf3, 0x07, 0x43, + 0xcf, 0x5d, 0xcb, 0x5c, 0x82, 0xea, 0x07, 0x22, 0x82, 0xea, 0x03, 0x43, + 0x50, 0xf8, 0x04, 0x2c, 0x83, 0x61, 0x53, 0x40, 0x02, 0x68, 0xc3, 0x61, + 0x53, 0x40, 0x03, 0x62, 0x63, 0x40, 0x43, 0x62, 0x86, 0x42, 0xbb, 0xd1, + 0x82, 0xe7, 0x00, 0xbf, 0x08, 0x07, 0x00, 0x24, 0x1c, 0x04, 0x00, 0x24, + 0x1c, 0x05, 0x00, 0x24, 0xf8, 0xb5, 0x03, 0x78, 0x90, 0xf8, 0x01, 0xc0, 0x01, 0x2b, 0x05, 0x7f, 0x02, 0x79, 0x07, 0x7b, 0x86, 0x68, 0x44, 0x79, 0x2e, 0xd0, 0x02, 0x2b, 0x2f, 0xd0, 0x00, 0x2b, 0x30, 0xd1, 0x4f, 0xf4, 0x80, 0x73, 0x8b, 0x61, 0x00, 0x23, 0xc1, 0xf8, 0x00, 0xc0, 0x4d, 0x61, @@ -338,7 +576,7 @@ const unsigned char mcuboot_bin[] = { 0x0c, 0xd0, 0x72, 0xb9, 0x4f, 0xf4, 0x80, 0x63, 0xcb, 0x61, 0x03, 0x2c, 0x09, 0xd8, 0xdf, 0xe8, 0x04, 0xf0, 0x0b, 0x0d, 0x10, 0x13, 0x4f, 0xf4, 0x00, 0x63, 0xf5, 0xe7, 0x4f, 0xf4, 0x40, 0x63, 0xf2, 0xe7, 0x27, 0x48, - 0x0e, 0xf0, 0x3e, 0xfe, 0x00, 0x23, 0xbe, 0xe7, 0x4f, 0xf4, 0x80, 0x53, + 0x0d, 0xf0, 0x04, 0xfa, 0x00, 0x23, 0xbe, 0xe7, 0x4f, 0xf4, 0x80, 0x53, 0xbb, 0xe7, 0x4f, 0xf4, 0x00, 0x53, 0xb8, 0xe7, 0x4f, 0xf4, 0x40, 0x53, 0xb5, 0xe7, 0x4f, 0xf4, 0x00, 0x43, 0x0b, 0x62, 0x02, 0x23, 0xbc, 0xe7, 0x4f, 0xf4, 0x40, 0x43, 0x0b, 0x62, 0x04, 0x23, 0xb7, 0xe7, 0x00, 0x23, @@ -351,7 +589,7 @@ const unsigned char mcuboot_bin[] = { 0x0c, 0x61, 0x96, 0xe7, 0x43, 0x69, 0x8b, 0x60, 0xf5, 0xe7, 0x07, 0x48, 0xbc, 0xe7, 0x4f, 0xf0, 0x00, 0x73, 0x97, 0xe7, 0x4f, 0xf0, 0x40, 0x73, 0x94, 0xe7, 0x00, 0x23, 0x92, 0xe7, 0x4f, 0xf0, 0xff, 0x30, 0x92, 0xe7, - 0x40, 0xd4, 0x01, 0x08, 0x69, 0xd4, 0x01, 0x08, 0x00, 0xb5, 0x56, 0x4b, + 0xb4, 0xd2, 0x01, 0x08, 0xdd, 0xd2, 0x01, 0x08, 0x00, 0xb5, 0x56, 0x4b, 0x8d, 0xb0, 0x0a, 0x28, 0x00, 0xf2, 0xa4, 0x80, 0xdf, 0xe8, 0x00, 0xf0, 0x06, 0x16, 0x24, 0x32, 0x40, 0x4e, 0x5c, 0x6a, 0x78, 0x86, 0x94, 0x00, 0xd3, 0xf8, 0xe0, 0x20, 0x4f, 0x48, 0x42, 0xf0, 0x01, 0x02, 0xc3, 0xf8, @@ -380,579 +618,125 @@ const unsigned char mcuboot_bin[] = { 0x00, 0x73, 0x0a, 0x93, 0x0a, 0x9b, 0x7e, 0xe7, 0xd3, 0xf8, 0xe0, 0x20, 0x12, 0x48, 0x42, 0xf4, 0x80, 0x62, 0xc3, 0xf8, 0xe0, 0x20, 0xd3, 0xf8, 0xe0, 0x30, 0x03, 0xf4, 0x80, 0x63, 0x0b, 0x93, 0x0b, 0x9b, 0x70, 0xe7, - 0x0d, 0x48, 0x0e, 0xf0, 0x41, 0xfd, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, + 0x0d, 0x48, 0x0d, 0xf0, 0x07, 0xf9, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, 0x00, 0x00, 0x02, 0x58, 0x00, 0x04, 0x02, 0x58, 0x00, 0x08, 0x02, 0x58, 0x00, 0x0c, 0x02, 0x58, 0x00, 0x10, 0x02, 0x58, 0x00, 0x14, 0x02, 0x58, 0x00, 0x18, 0x02, 0x58, 0x00, 0x1c, 0x02, 0x58, 0x00, 0x20, 0x02, 0x58, - 0x00, 0x24, 0x02, 0x58, 0x00, 0x28, 0x02, 0x58, 0x80, 0xd4, 0x01, 0x08, - 0x05, 0x4b, 0x07, 0xb5, 0x18, 0x68, 0x01, 0x90, 0x07, 0xf0, 0x99, 0xff, - 0x01, 0x98, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xeb, 0x07, 0xf0, 0x63, 0xbf, - 0x34, 0x0e, 0x00, 0x24, 0x05, 0x4b, 0x07, 0xb5, 0x58, 0x68, 0x01, 0x90, - 0x07, 0xf0, 0x8b, 0xff, 0x01, 0x98, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xeb, - 0x07, 0xf0, 0x55, 0xbf, 0x34, 0x0e, 0x00, 0x24, 0x05, 0x4b, 0x07, 0xb5, - 0x98, 0x68, 0x01, 0x90, 0x07, 0xf0, 0x7d, 0xff, 0x01, 0x98, 0x03, 0xb0, - 0x5d, 0xf8, 0x04, 0xeb, 0x07, 0xf0, 0x47, 0xbf, 0x34, 0x0e, 0x00, 0x24, - 0x05, 0x4b, 0x07, 0xb5, 0xd8, 0x68, 0x01, 0x90, 0x07, 0xf0, 0x6f, 0xff, - 0x01, 0x98, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xeb, 0x07, 0xf0, 0x39, 0xbf, - 0x34, 0x0e, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x4f, 0xe9, 0xb0, 0x05, 0x46, - 0x93, 0x46, 0x0f, 0x46, 0x44, 0x22, 0x00, 0x21, 0x15, 0xa8, 0x98, 0x46, - 0x1a, 0xf0, 0xa6, 0xf8, 0xea, 0x6d, 0x42, 0xf2, 0x10, 0x73, 0x59, 0x46, - 0x07, 0x32, 0x15, 0xa8, 0x23, 0x93, 0xd2, 0x08, 0x10, 0xf0, 0x3e, 0xfc, - 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xd1, 0x81, 0x05, 0xf1, 0x34, 0x01, - 0x08, 0xf1, 0x0c, 0x00, 0x10, 0xf0, 0xa4, 0xfb, 0x00, 0x28, 0x40, 0xf0, - 0xa3, 0x80, 0x05, 0xf1, 0x28, 0x01, 0x40, 0x46, 0x10, 0xf0, 0x9c, 0xfb, - 0xb0, 0xfa, 0x80, 0xf3, 0x5b, 0x09, 0x05, 0x93, 0xeb, 0x6d, 0xb3, 0xf5, - 0xc0, 0x7f, 0x2c, 0xbf, 0x05, 0x22, 0x04, 0x22, 0x03, 0x92, 0x05, 0x9a, - 0x12, 0xb1, 0x03, 0x9a, 0x01, 0x32, 0x03, 0x92, 0x03, 0x9a, 0x93, 0x42, - 0x98, 0xbf, 0x02, 0x22, 0x01, 0x3b, 0x02, 0xf1, 0xff, 0x39, 0x03, 0x92, - 0x01, 0x22, 0x02, 0xfa, 0x09, 0xf2, 0x06, 0x92, 0x9d, 0xf8, 0x18, 0x20, - 0x04, 0x92, 0x03, 0x9a, 0x13, 0x44, 0xb3, 0xfb, 0xf2, 0xf3, 0x02, 0x93, - 0x05, 0x9b, 0x13, 0xb1, 0x6e, 0x6f, 0x00, 0x2e, 0x5e, 0xd1, 0x24, 0x21, - 0x06, 0x98, 0x1b, 0xf0, 0x01, 0xfb, 0x06, 0x46, 0x00, 0x28, 0x00, 0xf0, - 0x95, 0x81, 0x00, 0x24, 0x4f, 0xf0, 0x24, 0x0a, 0x0a, 0xfb, 0x04, 0x60, - 0x01, 0x34, 0x10, 0xf0, 0x2f, 0xfb, 0x04, 0x9a, 0xe3, 0xb2, 0x9a, 0x42, - 0xf6, 0xd8, 0x41, 0x46, 0x30, 0x46, 0x10, 0xf0, 0x7f, 0xff, 0x04, 0x46, - 0x00, 0x28, 0x6e, 0xd1, 0x02, 0x9b, 0x80, 0x46, 0x03, 0xfb, 0x09, 0xfa, - 0x4f, 0xf0, 0x01, 0x09, 0xd0, 0x45, 0x53, 0xd1, 0x0d, 0xf1, 0x98, 0x09, - 0x00, 0x22, 0x01, 0x23, 0x48, 0x46, 0x03, 0xeb, 0xc3, 0x01, 0x01, 0x32, - 0x5b, 0x00, 0x06, 0xeb, 0x81, 0x01, 0xdb, 0xb2, 0x40, 0xf8, 0x04, 0x1b, - 0x04, 0x99, 0x99, 0x42, 0xf3, 0xd8, 0x26, 0xa9, 0x28, 0x46, 0x12, 0xf0, - 0xa9, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x4e, 0xd1, 0x4f, 0xf0, 0x01, 0x08, - 0x08, 0xeb, 0xc8, 0x03, 0xc2, 0x46, 0x06, 0xeb, 0x83, 0x03, 0x52, 0x46, - 0x0a, 0xf1, 0xff, 0x3a, 0x00, 0x2a, 0x6b, 0xd1, 0x4f, 0xea, 0x48, 0x08, - 0x04, 0x9b, 0x5f, 0xfa, 0x88, 0xf8, 0x43, 0x45, 0xee, 0xd8, 0x24, 0x23, - 0x01, 0x32, 0x06, 0x99, 0x91, 0x42, 0x6d, 0xd1, 0x4a, 0x1e, 0x28, 0x46, - 0x26, 0xa9, 0x12, 0xf0, 0x89, 0xfc, 0x04, 0x46, 0x78, 0xbb, 0x05, 0x9b, - 0x13, 0xb1, 0x06, 0x9b, 0x6e, 0x67, 0xab, 0x67, 0x00, 0x24, 0x05, 0xf1, - 0x4c, 0x08, 0x01, 0x23, 0x0d, 0xf1, 0x24, 0x09, 0x21, 0x46, 0x40, 0x46, - 0x0e, 0x94, 0xc9, 0xf8, 0x08, 0x40, 0xc9, 0xe9, 0x00, 0x34, 0xcd, 0xe9, - 0x0c, 0x34, 0x10, 0xf0, 0x6c, 0xfc, 0x01, 0x28, 0x53, 0xd0, 0xa4, 0xf5, - 0x9f, 0x44, 0x14, 0xe0, 0x05, 0x94, 0x63, 0xe7, 0x02, 0x9b, 0xb8, 0xfb, - 0xf3, 0xf0, 0x09, 0xfa, 0x00, 0xf1, 0x24, 0x23, 0xc9, 0xb2, 0x03, 0xfb, - 0x01, 0x62, 0x02, 0x9b, 0x03, 0xfb, 0x10, 0x80, 0xe8, 0xb1, 0x11, 0x46, - 0x28, 0x46, 0x11, 0xf0, 0xc5, 0xff, 0x04, 0x46, 0x28, 0xb3, 0x15, 0xa8, - 0x10, 0xf0, 0xe0, 0xf9, 0x44, 0x21, 0x15, 0xa8, 0x0f, 0xf0, 0x62, 0xfc, - 0x42, 0xf2, 0x10, 0x73, 0x23, 0x93, 0x6b, 0x6f, 0xb3, 0x42, 0x02, 0xd0, - 0x00, 0x2e, 0x40, 0xf0, 0x12, 0x81, 0x14, 0xb1, 0x38, 0x46, 0x10, 0xf0, - 0x86, 0xfd, 0x20, 0x46, 0x69, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x49, 0x08, - 0x10, 0x46, 0x07, 0x92, 0x01, 0xeb, 0xc1, 0x01, 0x06, 0xeb, 0x81, 0x01, - 0x10, 0xf0, 0xec, 0xfe, 0x07, 0x9a, 0x04, 0x46, 0x00, 0x28, 0xd4, 0xd0, - 0xd9, 0xe7, 0x08, 0xf1, 0x01, 0x08, 0x6d, 0xe7, 0x24, 0x22, 0x28, 0x46, - 0x07, 0x93, 0x02, 0xfb, 0x0a, 0xf1, 0x72, 0x18, 0x19, 0x44, 0x12, 0xf0, - 0xd7, 0xf8, 0x07, 0x9b, 0x04, 0x46, 0x00, 0x28, 0x81, 0xd0, 0xc8, 0xe7, - 0x03, 0xfb, 0x02, 0x61, 0x49, 0xf8, 0x04, 0x1b, 0x88, 0xe7, 0x21, 0x46, - 0x58, 0x46, 0x10, 0xf0, 0x12, 0xfc, 0xb0, 0xfa, 0x80, 0xfa, 0x59, 0x46, - 0x48, 0x46, 0x10, 0xf0, 0x9b, 0xfe, 0x04, 0x46, 0x4f, 0xea, 0x5a, 0x1a, - 0x00, 0xbb, 0x5a, 0x46, 0x41, 0x46, 0x0c, 0xa8, 0x11, 0xf0, 0x4f, 0xfb, - 0x04, 0x46, 0xc8, 0xb9, 0x52, 0x46, 0x0c, 0xa9, 0x48, 0x46, 0x10, 0xf0, - 0xed, 0xfc, 0x04, 0x46, 0x90, 0xb9, 0x02, 0x9b, 0x0d, 0xf1, 0x98, 0x08, - 0x01, 0x46, 0x26, 0xa8, 0x5a, 0x1c, 0xa3, 0x46, 0x19, 0xf0, 0x76, 0xff, - 0x43, 0x46, 0x02, 0x9a, 0x5a, 0x45, 0x4f, 0xd1, 0x4f, 0xf0, 0x00, 0x0e, - 0x4f, 0xf0, 0x01, 0x0c, 0xe3, 0x45, 0x65, 0xd2, 0x0c, 0xa8, 0x10, 0xf0, - 0x0b, 0xfd, 0x09, 0xa8, 0x10, 0xf0, 0x08, 0xfd, 0x00, 0x2c, 0x8c, 0xd1, - 0x0c, 0xa8, 0x0d, 0xf1, 0x98, 0x08, 0x10, 0xf0, 0x3d, 0xfa, 0x02, 0x9b, - 0x32, 0x46, 0x39, 0x46, 0x18, 0xf8, 0x03, 0x30, 0x28, 0x46, 0x00, 0x93, - 0x04, 0x9b, 0x11, 0xf0, 0x63, 0xfb, 0x04, 0x46, 0x88, 0xb9, 0x01, 0x21, - 0x07, 0xf1, 0x18, 0x00, 0x10, 0xf0, 0x1a, 0xfc, 0x04, 0x46, 0x50, 0xb9, - 0x15, 0xab, 0x4d, 0x4a, 0x39, 0x46, 0x28, 0x46, 0x11, 0xf0, 0xc8, 0xfe, - 0x04, 0x46, 0x10, 0xb9, 0x02, 0x9b, 0x00, 0x2b, 0x5b, 0xd1, 0x0c, 0xa8, - 0x10, 0xf0, 0xf3, 0xfc, 0x00, 0x2c, 0x7f, 0xf4, 0x64, 0xaf, 0x52, 0x46, - 0x39, 0x46, 0x28, 0x46, 0x11, 0xf0, 0x20, 0xfb, 0x04, 0x46, 0x00, 0x28, - 0x7f, 0xf4, 0x5b, 0xaf, 0x15, 0xab, 0x40, 0x4a, 0x39, 0x46, 0x28, 0x46, - 0x11, 0xf0, 0xae, 0xfe, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x51, 0xaf, - 0x39, 0x46, 0x28, 0x46, 0x12, 0xf0, 0x56, 0xfb, 0x04, 0x46, 0x4a, 0xe7, - 0x59, 0x46, 0x00, 0x22, 0x48, 0x46, 0x05, 0x91, 0xcd, 0xe9, 0x06, 0x32, - 0x10, 0xf0, 0x95, 0xfb, 0x07, 0x9a, 0x06, 0x9b, 0x90, 0x40, 0x02, 0x99, - 0x93, 0xf8, 0x00, 0xc0, 0x01, 0x32, 0x4c, 0xea, 0x00, 0x00, 0x18, 0x70, - 0x08, 0x46, 0x05, 0x99, 0x01, 0x44, 0x03, 0x98, 0x90, 0x42, 0xe9, 0xd8, - 0x0b, 0xf1, 0x01, 0x0b, 0x01, 0x33, 0x90, 0xe7, 0x98, 0xf8, 0x01, 0x00, - 0x0c, 0xf1, 0x01, 0x0c, 0x98, 0xf8, 0x00, 0x20, 0x80, 0xea, 0x0e, 0x03, - 0x00, 0xea, 0x0e, 0x00, 0xd9, 0x43, 0x5b, 0xb2, 0x01, 0xf0, 0x01, 0x01, - 0x12, 0xfb, 0x01, 0xf2, 0x52, 0xb2, 0x03, 0xea, 0x02, 0x09, 0x53, 0x40, - 0x08, 0xf8, 0x01, 0x3f, 0x49, 0xea, 0x00, 0x0e, 0x18, 0xf8, 0x01, 0x3c, - 0x5f, 0xfa, 0x8e, 0xfe, 0x43, 0xea, 0xc1, 0x11, 0x08, 0xf8, 0x01, 0x1c, - 0x76, 0xe7, 0x02, 0x9b, 0x3a, 0x46, 0x39, 0x46, 0x28, 0x46, 0x01, 0x3b, - 0x02, 0x93, 0x11, 0xf0, 0xc9, 0xfe, 0x90, 0xb9, 0x02, 0x9b, 0x32, 0x46, - 0x0c, 0xa9, 0x28, 0x46, 0x13, 0xf8, 0x08, 0x30, 0x00, 0x93, 0x04, 0x9b, - 0x11, 0xf0, 0xe0, 0xfa, 0x38, 0xb9, 0x0c, 0xab, 0x3a, 0x46, 0x39, 0x46, - 0x28, 0x46, 0x11, 0xf0, 0xfd, 0xff, 0x00, 0x28, 0x84, 0xd0, 0x04, 0x46, - 0x85, 0xe7, 0x00, 0x26, 0x04, 0x96, 0xec, 0xe6, 0x0a, 0x4c, 0xea, 0xe6, - 0x08, 0xfb, 0x05, 0x60, 0x01, 0x35, 0x10, 0xf0, 0x80, 0xfc, 0xeb, 0xb2, - 0x04, 0x9a, 0x9a, 0x42, 0xf6, 0xd8, 0x30, 0x46, 0x19, 0xf0, 0x4e, 0xfe, - 0xed, 0xe6, 0x00, 0x25, 0x4f, 0xf0, 0x24, 0x08, 0xf3, 0xe7, 0x00, 0xbf, - 0x15, 0x19, 0x01, 0x08, 0x80, 0xb2, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x4f, - 0x2d, 0xed, 0x02, 0x8b, 0xbb, 0xb0, 0x04, 0x46, 0x0e, 0x46, 0x91, 0x46, - 0x08, 0xee, 0x10, 0x3a, 0x10, 0xf0, 0xa8, 0xf9, 0x02, 0x28, 0x40, 0xf0, - 0x9d, 0x81, 0x44, 0x22, 0x00, 0x21, 0x29, 0xa8, 0x20, 0xad, 0x19, 0xf0, - 0x97, 0xfe, 0x42, 0xf2, 0x10, 0x73, 0x28, 0x46, 0x01, 0x27, 0x37, 0x93, - 0x10, 0xf0, 0x6e, 0xf9, 0xe2, 0x6d, 0x00, 0x23, 0x49, 0x46, 0x29, 0xa8, - 0x07, 0x32, 0x04, 0x93, 0xd2, 0x08, 0xcd, 0xe9, 0x02, 0x73, 0x10, 0xf0, - 0x27, 0xfa, 0x03, 0x46, 0x00, 0x28, 0x62, 0xd1, 0x18, 0xee, 0x10, 0x1a, - 0x02, 0xa8, 0x10, 0xf0, 0x87, 0xfd, 0x03, 0x46, 0x00, 0x28, 0x5a, 0xd1, - 0x18, 0xee, 0x10, 0x1a, 0x28, 0x46, 0x10, 0xf0, 0xab, 0xfd, 0x03, 0x46, - 0x00, 0x28, 0x52, 0xd1, 0x39, 0x46, 0x30, 0x46, 0x10, 0xf0, 0x3a, 0xfb, - 0x03, 0x46, 0x00, 0x28, 0x4b, 0xd1, 0x06, 0xf1, 0x18, 0x07, 0x01, 0x46, - 0x38, 0x46, 0x10, 0xf0, 0x31, 0xfb, 0x03, 0x46, 0x00, 0x28, 0x42, 0xd1, - 0x04, 0xf1, 0x04, 0x0b, 0x06, 0xf1, 0x0c, 0x00, 0x10, 0xf0, 0xfe, 0xfb, - 0x59, 0x46, 0x28, 0x46, 0x10, 0xf0, 0x6a, 0xf9, 0x00, 0x28, 0x2e, 0xda, - 0x29, 0xab, 0xb3, 0x4a, 0x29, 0x46, 0x20, 0x46, 0x11, 0xf0, 0x88, 0xfd, - 0x03, 0x46, 0x70, 0xbb, 0x48, 0x46, 0x4f, 0xf0, 0x01, 0x08, 0x10, 0xf0, - 0x1f, 0xfa, 0x43, 0x1e, 0x00, 0x93, 0x00, 0x9b, 0x01, 0x33, 0x3f, 0xd1, - 0x29, 0xab, 0xaa, 0x4a, 0x31, 0x46, 0x20, 0x46, 0x11, 0xf0, 0x76, 0xfd, - 0x03, 0x46, 0xe0, 0xb9, 0x5a, 0x46, 0x39, 0x46, 0x38, 0x46, 0x12, 0xf0, - 0x95, 0xf8, 0x03, 0x46, 0xa8, 0xb9, 0x3b, 0x46, 0x32, 0x46, 0x31, 0x46, - 0x20, 0x46, 0x11, 0xf0, 0x6b, 0xfc, 0x03, 0x46, 0x68, 0xb9, 0x01, 0x21, - 0x38, 0x46, 0x10, 0xf0, 0xf5, 0xfa, 0x03, 0x46, 0x07, 0xe0, 0x5a, 0x46, - 0x29, 0x46, 0x28, 0x46, 0x10, 0xf0, 0xb5, 0xfe, 0x03, 0x46, 0x00, 0x28, - 0xc2, 0xd0, 0x29, 0xa8, 0x00, 0x93, 0x10, 0xf0, 0x27, 0xf8, 0x44, 0x21, - 0x29, 0xa8, 0x0f, 0xf0, 0xa9, 0xfa, 0x42, 0xf2, 0x10, 0x72, 0x20, 0xa8, - 0x37, 0x92, 0x10, 0xf0, 0xc6, 0xfb, 0x02, 0xa8, 0x10, 0xf0, 0xb0, 0xfb, - 0x00, 0x9b, 0x00, 0x2b, 0x00, 0xf0, 0x0b, 0x81, 0x18, 0x46, 0x3b, 0xb0, - 0xbd, 0xec, 0x02, 0x8b, 0xbd, 0xe8, 0xf0, 0x8f, 0x00, 0x99, 0x48, 0x46, - 0x10, 0xf0, 0x7b, 0xfa, 0x29, 0x46, 0x5f, 0xfa, 0x80, 0xfa, 0x30, 0x46, - 0x52, 0x46, 0x10, 0xf0, 0x27, 0xfb, 0x03, 0x46, 0x00, 0x28, 0xd6, 0xd1, - 0x52, 0x46, 0x26, 0xa9, 0x38, 0x46, 0x10, 0xf0, 0x1f, 0xfb, 0x03, 0x46, - 0x00, 0x28, 0xce, 0xd1, 0x3b, 0x46, 0x1f, 0x90, 0x32, 0x46, 0x05, 0xa9, - 0xcd, 0xe9, 0x05, 0x80, 0xcd, 0xe9, 0x07, 0x08, 0xcd, 0xe9, 0x09, 0x00, - 0xcd, 0xe9, 0x0b, 0x80, 0xcd, 0xe9, 0x0d, 0x08, 0xcd, 0xe9, 0x0f, 0x00, - 0xcd, 0xe9, 0x11, 0x80, 0xcd, 0xe9, 0x13, 0x08, 0xcd, 0xe9, 0x15, 0x00, - 0xcd, 0xe9, 0x17, 0x80, 0xcd, 0xe9, 0x19, 0x08, 0xcd, 0xe9, 0x1b, 0x00, - 0xcd, 0xe9, 0x1d, 0x80, 0x20, 0x46, 0x11, 0xf0, 0x31, 0xfa, 0x03, 0x46, - 0x00, 0x28, 0x40, 0xf0, 0x93, 0x80, 0x05, 0xab, 0x08, 0xa9, 0x20, 0x46, - 0x1a, 0x46, 0x11, 0xf0, 0xff, 0xfb, 0x03, 0x46, 0x00, 0x28, 0x40, 0xf0, - 0x89, 0x80, 0x3b, 0x46, 0x32, 0x46, 0x0b, 0xa9, 0x20, 0x46, 0x11, 0xf0, - 0x2d, 0xfa, 0x03, 0x46, 0x00, 0x28, 0x7f, 0xd1, 0x0b, 0xab, 0x0e, 0xa9, - 0x20, 0x46, 0x1a, 0x46, 0x11, 0xf0, 0xec, 0xfb, 0x03, 0x46, 0x00, 0x28, - 0x76, 0xd1, 0x0e, 0xab, 0x08, 0xaa, 0x11, 0xa9, 0x20, 0x46, 0x11, 0xf0, - 0x1b, 0xfa, 0x03, 0x46, 0x00, 0x28, 0x6d, 0xd1, 0x26, 0xab, 0x2a, 0x46, - 0x14, 0xa9, 0x20, 0x46, 0x11, 0xf0, 0x02, 0xfa, 0x03, 0x46, 0x00, 0x28, - 0x64, 0xd1, 0x26, 0xab, 0x2a, 0x46, 0x17, 0xa9, 0x20, 0x46, 0x11, 0xf0, - 0x09, 0xfa, 0x03, 0x46, 0x00, 0x28, 0x5b, 0xd1, 0x05, 0xab, 0x17, 0xaa, - 0x1a, 0xa9, 0x20, 0x46, 0x11, 0xf0, 0xc8, 0xfb, 0x03, 0x46, 0x00, 0x28, - 0x52, 0xd1, 0x0b, 0xab, 0x14, 0xaa, 0x1d, 0xa9, 0x20, 0x46, 0x11, 0xf0, - 0xbf, 0xfb, 0x03, 0x46, 0x00, 0x28, 0x49, 0xd1, 0x1d, 0xab, 0x1a, 0xaa, - 0x29, 0x46, 0x20, 0x46, 0x11, 0xf0, 0xde, 0xf9, 0x03, 0x46, 0x00, 0x28, - 0x40, 0xd1, 0x2b, 0x46, 0x2a, 0x46, 0x29, 0x46, 0x20, 0x46, 0x11, 0xf0, - 0xad, 0xfb, 0x03, 0x46, 0x00, 0x28, 0x37, 0xd1, 0x1d, 0xab, 0x1a, 0xaa, - 0x26, 0xa9, 0x20, 0x46, 0x11, 0xf0, 0xdc, 0xf9, 0x03, 0x46, 0x78, 0xbb, - 0x26, 0xab, 0x20, 0x46, 0x1a, 0x46, 0x19, 0x46, 0x11, 0xf0, 0x9c, 0xfb, - 0x03, 0x46, 0x38, 0xbb, 0x26, 0xab, 0x02, 0xaa, 0x20, 0x46, 0x19, 0x46, - 0x11, 0xf0, 0x94, 0xfb, 0x03, 0x46, 0xf8, 0xb9, 0x0e, 0xab, 0x08, 0xaa, - 0x31, 0x46, 0x20, 0x46, 0x11, 0xf0, 0x8c, 0xfb, 0x03, 0x46, 0xb8, 0xb9, - 0x11, 0xab, 0x04, 0xf1, 0x10, 0x02, 0x39, 0x46, 0x20, 0x46, 0x11, 0xf0, - 0x83, 0xfb, 0x03, 0x46, 0x70, 0xb9, 0x3b, 0x46, 0x0e, 0xaa, 0x39, 0x46, - 0x20, 0x46, 0x11, 0xf0, 0xa3, 0xf9, 0x03, 0x46, 0x30, 0xb9, 0x3b, 0x46, - 0x11, 0xaa, 0x39, 0x46, 0x20, 0x46, 0x11, 0xf0, 0x73, 0xfb, 0x03, 0x46, - 0x05, 0xa8, 0x01, 0x93, 0x10, 0xf0, 0xd4, 0xfa, 0x08, 0xa8, 0x10, 0xf0, - 0xd1, 0xfa, 0x0b, 0xa8, 0x10, 0xf0, 0xce, 0xfa, 0x0e, 0xa8, 0x10, 0xf0, - 0xcb, 0xfa, 0x11, 0xa8, 0x10, 0xf0, 0xc8, 0xfa, 0x14, 0xa8, 0x10, 0xf0, - 0xc5, 0xfa, 0x17, 0xa8, 0x10, 0xf0, 0xc2, 0xfa, 0x1a, 0xa8, 0x10, 0xf0, - 0xbf, 0xfa, 0x1d, 0xa8, 0x10, 0xf0, 0xbc, 0xfa, 0x01, 0x9b, 0x00, 0x2b, - 0x7f, 0xf4, 0xf7, 0xae, 0x52, 0x46, 0x29, 0x46, 0x30, 0x46, 0x10, 0xf0, - 0x3f, 0xfa, 0x03, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0xee, 0xae, 0x52, 0x46, - 0x26, 0xa9, 0x38, 0x46, 0x10, 0xf0, 0x36, 0xfa, 0x00, 0x9b, 0x01, 0x3b, - 0x00, 0x93, 0x03, 0x46, 0x00, 0x28, 0x3f, 0xf4, 0xba, 0xae, 0xe0, 0xe6, - 0x09, 0x4b, 0x20, 0x46, 0x00, 0x93, 0x10, 0xf0, 0x03, 0xf8, 0x01, 0x28, - 0x00, 0x9b, 0x7f, 0xf4, 0xed, 0xae, 0x18, 0xee, 0x10, 0x3a, 0x4a, 0x46, - 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x3e, 0xfc, 0x03, 0x46, 0xe3, 0xe6, - 0x15, 0x19, 0x01, 0x08, 0x80, 0xb0, 0xff, 0xff, 0xf7, 0xb5, 0x05, 0x46, - 0x0c, 0x46, 0x10, 0x46, 0x01, 0x21, 0x16, 0x46, 0x1f, 0x46, 0x10, 0xf0, - 0x36, 0xf8, 0x30, 0xb9, 0x39, 0x46, 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, - 0xf0, 0x40, 0x10, 0xf0, 0x0f, 0xbc, 0x4f, 0xf0, 0xff, 0x31, 0x30, 0x46, - 0x10, 0xf0, 0x29, 0xf8, 0xa0, 0xb9, 0x39, 0x46, 0x20, 0x46, 0x10, 0xf0, - 0x05, 0xfc, 0x10, 0xbb, 0x04, 0xf1, 0x0c, 0x02, 0x01, 0x46, 0x10, 0x46, - 0x01, 0x92, 0x10, 0xf0, 0x1c, 0xf8, 0x01, 0x9a, 0xc8, 0xb1, 0x29, 0x1d, - 0x10, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0x11, 0xf0, 0x85, 0xb8, - 0x31, 0x46, 0x28, 0x46, 0x10, 0xf0, 0x46, 0xf9, 0x68, 0xb9, 0x39, 0x46, - 0x28, 0x46, 0x11, 0xf0, 0x3d, 0xfb, 0x40, 0xb9, 0x3b, 0x46, 0x32, 0x46, - 0x21, 0x46, 0x28, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0xff, 0xf7, - 0xff, 0xbd, 0x03, 0xb0, 0xf0, 0xbd, 0x30, 0xb5, 0x8f, 0xb0, 0x0c, 0x46, - 0x19, 0x46, 0x13, 0x9d, 0xfb, 0xb1, 0x00, 0x23, 0xcd, 0xe9, 0x06, 0x33, - 0x08, 0x93, 0x13, 0x0f, 0x8d, 0xf8, 0x24, 0x30, 0x13, 0x0d, 0x8d, 0xf8, - 0x25, 0x30, 0x13, 0x0b, 0x12, 0x09, 0x8d, 0xf8, 0x26, 0x30, 0x8d, 0xf8, - 0x27, 0x20, 0x4f, 0xf4, 0x8e, 0x72, 0x23, 0x78, 0x02, 0xfb, 0x03, 0x00, - 0x12, 0x9b, 0x05, 0xaa, 0x05, 0x93, 0x0a, 0xab, 0x04, 0x30, 0x00, 0x93, - 0x06, 0xab, 0xcd, 0xe9, 0x01, 0x55, 0x12, 0xf0, 0x49, 0xfa, 0x0f, 0xb0, - 0x30, 0xbd, 0x37, 0xb5, 0x02, 0x23, 0x15, 0x46, 0x01, 0xaa, 0x04, 0x46, - 0x12, 0xf0, 0xce, 0xf9, 0x18, 0xb9, 0x01, 0x9b, 0x1b, 0xb9, 0x6f, 0xf0, - 0x63, 0x00, 0x03, 0xb0, 0x30, 0xbd, 0x23, 0x68, 0x93, 0xf9, 0x00, 0x30, - 0x00, 0x2b, 0xf6, 0xdb, 0x01, 0x9b, 0x3b, 0xb1, 0x22, 0x68, 0x11, 0x78, - 0xa1, 0xb1, 0x04, 0x2b, 0xef, 0xd8, 0x01, 0xd1, 0x0b, 0x06, 0xec, 0xd4, - 0x00, 0x23, 0x2b, 0x60, 0x01, 0x9b, 0x5a, 0x1e, 0x01, 0x92, 0x00, 0x2b, - 0xe7, 0xd0, 0x23, 0x68, 0x29, 0x68, 0x13, 0xf8, 0x01, 0x2b, 0x42, 0xea, - 0x01, 0x22, 0x2a, 0x60, 0x23, 0x60, 0xf1, 0xe7, 0x01, 0x32, 0x01, 0x3b, - 0x22, 0x60, 0x01, 0x93, 0xe0, 0xe7, 0x00, 0x00, 0xf8, 0xb5, 0x0a, 0x23, - 0x68, 0x4e, 0x05, 0x46, 0x0c, 0x46, 0x03, 0x60, 0x33, 0x68, 0x1b, 0xb9, - 0x12, 0xf0, 0x0a, 0xfc, 0x01, 0x23, 0x33, 0x60, 0x05, 0xf1, 0x08, 0x03, - 0x2a, 0x46, 0x21, 0x46, 0x04, 0xf1, 0x10, 0x00, 0x42, 0xf8, 0x04, 0x3f, - 0x8b, 0x78, 0x04, 0x31, 0x11, 0xf8, 0x03, 0x4c, 0x1b, 0x04, 0x43, 0xea, - 0x04, 0x23, 0x11, 0xf8, 0x04, 0x4c, 0x23, 0x43, 0x11, 0xf8, 0x01, 0x4c, - 0x88, 0x42, 0x43, 0xea, 0x04, 0x63, 0x42, 0xf8, 0x04, 0x3f, 0xed, 0xd1, - 0x2b, 0x68, 0x0c, 0x2b, 0x2e, 0xd0, 0x0e, 0x2b, 0x5d, 0xd0, 0x0a, 0x2b, - 0x28, 0xd1, 0x28, 0x46, 0x53, 0x49, 0x54, 0x4d, 0x00, 0xf1, 0xa0, 0x06, - 0x42, 0x69, 0x10, 0x30, 0x55, 0xf8, 0x04, 0x4b, 0x50, 0xf8, 0x08, 0x7c, - 0xc2, 0xf3, 0x07, 0x23, 0x7c, 0x40, 0xcb, 0x5c, 0x63, 0x40, 0x14, 0x0e, - 0x0c, 0x5d, 0x83, 0xea, 0x04, 0x43, 0xd4, 0xb2, 0x0c, 0x5d, 0x83, 0xea, - 0x04, 0x63, 0xc2, 0xf3, 0x07, 0x44, 0x0c, 0x5d, 0x83, 0xea, 0x04, 0x23, - 0x50, 0xf8, 0x04, 0x4c, 0x83, 0x60, 0x63, 0x40, 0x04, 0x68, 0xc3, 0x60, - 0x63, 0x40, 0x03, 0x61, 0x53, 0x40, 0x43, 0x61, 0x86, 0x42, 0xdb, 0xd1, - 0x00, 0x20, 0xf8, 0xbd, 0x28, 0x46, 0x3f, 0x4c, 0xc0, 0x35, 0x3d, 0x49, - 0xc2, 0x69, 0x18, 0x30, 0x54, 0xf8, 0x04, 0x6b, 0x50, 0xf8, 0x10, 0x7c, - 0xc2, 0xf3, 0x07, 0x23, 0x7e, 0x40, 0xcb, 0x5c, 0x73, 0x40, 0x16, 0x0e, - 0x8e, 0x5d, 0x83, 0xea, 0x06, 0x43, 0xd6, 0xb2, 0x8e, 0x5d, 0x83, 0xea, - 0x06, 0x63, 0xc2, 0xf3, 0x07, 0x46, 0x8e, 0x5d, 0x83, 0xea, 0x06, 0x23, - 0x50, 0xf8, 0x0c, 0x6c, 0x83, 0x60, 0x73, 0x40, 0x50, 0xf8, 0x08, 0x6c, - 0xc3, 0x60, 0x73, 0x40, 0x50, 0xf8, 0x04, 0x6c, 0x03, 0x61, 0x73, 0x40, - 0x06, 0x68, 0x43, 0x61, 0x73, 0x40, 0x83, 0x61, 0x53, 0x40, 0xc3, 0x61, - 0x85, 0x42, 0xd3, 0xd1, 0xcc, 0xe7, 0x28, 0x46, 0x25, 0x49, 0x26, 0x4d, - 0x00, 0xf1, 0xe0, 0x06, 0x44, 0x6a, 0x20, 0x30, 0x55, 0xf8, 0x04, 0x2b, - 0x50, 0xf8, 0x18, 0x7c, 0xc4, 0xf3, 0x07, 0x23, 0x7a, 0x40, 0xcb, 0x5c, - 0x50, 0xf8, 0x08, 0x7c, 0x53, 0x40, 0x22, 0x0e, 0x8a, 0x5c, 0x83, 0xea, - 0x02, 0x43, 0xe2, 0xb2, 0x8a, 0x5c, 0x83, 0xea, 0x02, 0x63, 0xc4, 0xf3, - 0x07, 0x42, 0x8a, 0x5c, 0x83, 0xea, 0x02, 0x23, 0x50, 0xf8, 0x14, 0x2c, - 0x83, 0x60, 0x53, 0x40, 0x50, 0xf8, 0x10, 0x2c, 0xc3, 0x60, 0x53, 0x40, - 0x50, 0xf8, 0x0c, 0x2c, 0x03, 0x61, 0x53, 0x40, 0xda, 0xb2, 0x43, 0x61, - 0x8a, 0x5c, 0x7a, 0x40, 0x1f, 0x0e, 0xcf, 0x5d, 0x82, 0xea, 0x07, 0x62, - 0xc3, 0xf3, 0x07, 0x27, 0xc3, 0xf3, 0x07, 0x43, 0xcf, 0x5d, 0xcb, 0x5c, - 0x82, 0xea, 0x07, 0x22, 0x82, 0xea, 0x03, 0x43, 0x50, 0xf8, 0x04, 0x2c, - 0x83, 0x61, 0x53, 0x40, 0x02, 0x68, 0xc3, 0x61, 0x53, 0x40, 0x03, 0x62, - 0x63, 0x40, 0x43, 0x62, 0x86, 0x42, 0xbb, 0xd1, 0x82, 0xe7, 0x00, 0xbf, - 0xf4, 0x06, 0x00, 0x24, 0x1c, 0x04, 0x00, 0x24, 0x1c, 0x05, 0x00, 0x24, - 0x38, 0xb5, 0x4f, 0xf4, 0x8e, 0x74, 0x05, 0x46, 0x4c, 0x43, 0x02, 0xeb, - 0x01, 0x11, 0x20, 0x44, 0x0c, 0x31, 0x04, 0x30, 0xff, 0xf7, 0x1a, 0xff, - 0x00, 0x28, 0x03, 0x46, 0x13, 0xbf, 0x00, 0x22, 0x01, 0x22, 0x03, 0x46, - 0x4f, 0xf0, 0xff, 0x33, 0x2a, 0x55, 0x18, 0x46, 0x38, 0xbd, 0x2d, 0xe9, - 0xf0, 0x43, 0x1d, 0x46, 0x89, 0xb0, 0x06, 0x46, 0x0f, 0x46, 0x6c, 0x1e, - 0x90, 0x46, 0xfe, 0xf7, 0x59, 0xfd, 0x04, 0x44, 0x40, 0x42, 0x04, 0x40, - 0xe4, 0xb2, 0x20, 0x2c, 0x1a, 0xd8, 0x30, 0x46, 0xfe, 0xf7, 0x44, 0xfd, - 0x81, 0x46, 0x2a, 0x46, 0x41, 0x46, 0x68, 0x46, 0x19, 0xf0, 0x36, 0xfb, - 0x62, 0x1b, 0x49, 0x46, 0x0d, 0xeb, 0x05, 0x00, 0x19, 0xf0, 0x3e, 0xfb, - 0x23, 0x46, 0x6a, 0x46, 0x39, 0x46, 0x30, 0x46, 0xfe, 0xf7, 0x4a, 0xfd, - 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, - 0x4f, 0xf0, 0xff, 0x30, 0xf9, 0xe7, 0x07, 0xb5, 0x81, 0x68, 0x01, 0x23, - 0x01, 0xaa, 0x40, 0x39, 0x8d, 0xf8, 0x04, 0x30, 0xff, 0xf7, 0xc9, 0xff, - 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x43, - 0x85, 0xb0, 0x1e, 0x46, 0x1b, 0x4b, 0x4f, 0xf0, 0x00, 0x08, 0x03, 0x92, - 0x07, 0x46, 0x02, 0x78, 0x0d, 0x46, 0x53, 0xf8, 0x22, 0x40, 0x0a, 0x46, - 0x23, 0x68, 0x20, 0x46, 0xcd, 0xe9, 0x00, 0x68, 0xd3, 0xf8, 0x3c, 0x90, - 0x43, 0x46, 0xc8, 0x47, 0x03, 0x99, 0x58, 0xb9, 0x12, 0x4b, 0x1b, 0x78, - 0x2b, 0xb1, 0x33, 0x46, 0x2a, 0x46, 0x39, 0x78, 0x10, 0x48, 0x0d, 0xf0, - 0x0f, 0xfa, 0x4f, 0xf0, 0xff, 0x34, 0x13, 0xe0, 0x23, 0x68, 0x20, 0x46, - 0x2a, 0x46, 0xcd, 0xe9, 0x00, 0x68, 0xd3, 0xf8, 0x14, 0x90, 0x43, 0x46, - 0xc8, 0x47, 0x04, 0x46, 0x40, 0xb1, 0x07, 0x4b, 0x1b, 0x78, 0x2b, 0xb1, - 0x33, 0x46, 0x2a, 0x46, 0x39, 0x78, 0x06, 0x48, 0x0d, 0xf0, 0xf8, 0xf9, - 0x20, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x04, 0x00, 0x00, 0x24, - 0xd8, 0x0d, 0x00, 0x24, 0xa1, 0xd4, 0x01, 0x08, 0xd0, 0xd4, 0x01, 0x08, - 0x2d, 0xe9, 0xf7, 0x43, 0x04, 0x46, 0x17, 0x46, 0x99, 0x46, 0x0e, 0x46, - 0x29, 0xb9, 0x4f, 0xf0, 0xff, 0x38, 0x40, 0x46, 0x03, 0xb0, 0xbd, 0xe8, - 0xf0, 0x83, 0x00, 0x2a, 0xf7, 0xd0, 0x0b, 0x69, 0x38, 0x46, 0x8d, 0x68, - 0x1d, 0x44, 0x04, 0x23, 0x29, 0x46, 0x0d, 0xeb, 0x03, 0x02, 0xff, 0xf7, - 0xa3, 0xff, 0x80, 0x46, 0x00, 0x28, 0xea, 0xd1, 0xbd, 0xf8, 0x04, 0x10, - 0x46, 0xf6, 0x08, 0x12, 0xf3, 0x68, 0x91, 0x42, 0x22, 0xd1, 0xbd, 0xf8, - 0x06, 0x10, 0x99, 0x42, 0xdf, 0xd1, 0x04, 0x23, 0x29, 0x44, 0x38, 0x46, - 0x0d, 0xeb, 0x03, 0x02, 0xff, 0xf7, 0x8e, 0xff, 0x00, 0x28, 0xd6, 0xd1, - 0xbd, 0xf8, 0x04, 0x20, 0x46, 0xf6, 0x07, 0x13, 0x9a, 0x42, 0xd0, 0xd1, - 0x00, 0x23, 0xbd, 0xf8, 0x06, 0x20, 0xa4, 0xf8, 0x08, 0x90, 0xa3, 0x72, - 0xf3, 0x68, 0x2b, 0x44, 0x04, 0x35, 0xe3, 0x60, 0x13, 0x44, 0x25, 0x61, - 0x63, 0x61, 0xc4, 0xe9, 0x00, 0x67, 0xc2, 0xe7, 0x00, 0x2b, 0xe7, 0xd0, - 0xbd, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4f, 0x07, 0x46, 0x85, 0xb0, - 0x88, 0x46, 0x99, 0x46, 0x00, 0x26, 0xdf, 0xf8, 0xcc, 0xa0, 0xdf, 0xf8, - 0xcc, 0xb0, 0x03, 0x92, 0x0e, 0x9b, 0xb3, 0x42, 0x01, 0xd8, 0x00, 0x20, - 0x0f, 0xe0, 0x0e, 0x9b, 0x52, 0x46, 0x03, 0x99, 0x38, 0x46, 0x9c, 0x1b, - 0x71, 0x18, 0xb4, 0xf5, 0x80, 0x6f, 0x28, 0xbf, 0x4f, 0xf4, 0x80, 0x64, - 0x23, 0x46, 0xff, 0xf7, 0x53, 0xff, 0x18, 0xb1, 0x01, 0x20, 0x05, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x3a, 0x78, 0x98, 0xf8, 0x00, 0x30, 0x01, 0x2a, - 0x05, 0xd0, 0x01, 0x2b, 0x2e, 0xd1, 0x4d, 0x46, 0xdf, 0xf8, 0x88, 0xe0, - 0x04, 0xe0, 0x01, 0x2b, 0x28, 0xd0, 0x03, 0x9d, 0xdf, 0xf8, 0x80, 0xe0, - 0xde, 0xf8, 0x14, 0x30, 0x13, 0xf0, 0x0c, 0x0f, 0x20, 0xd0, 0x35, 0x44, - 0xde, 0xf8, 0x08, 0x10, 0x8d, 0x42, 0xa5, 0xeb, 0x01, 0x00, 0x24, 0xd2, - 0x8c, 0x42, 0x27, 0xd9, 0x63, 0x1a, 0x0a, 0x46, 0x4f, 0xf0, 0x00, 0x0c, - 0xde, 0xf8, 0x10, 0xe0, 0x71, 0x44, 0x04, 0xeb, 0x05, 0x0e, 0x71, 0x45, - 0x03, 0xd2, 0x8d, 0x42, 0x34, 0xbf, 0x4b, 0x1b, 0x00, 0x23, 0x0a, 0xeb, - 0x02, 0x01, 0x02, 0x44, 0x58, 0x46, 0xcd, 0xe9, 0x00, 0xc1, 0x39, 0x46, - 0xff, 0xf7, 0x91, 0xfd, 0x23, 0x46, 0x52, 0x46, 0x06, 0xeb, 0x09, 0x01, - 0x40, 0x46, 0xfe, 0xf7, 0x45, 0xfc, 0x00, 0x28, 0xbc, 0xd1, 0x26, 0x44, - 0xa6, 0xe7, 0x00, 0xf0, 0x0f, 0x0c, 0x23, 0x46, 0x00, 0x22, 0xdb, 0xe7, - 0x00, 0x23, 0x0a, 0x46, 0x9c, 0x46, 0xd7, 0xe7, 0xd8, 0x09, 0x00, 0x24, - 0x80, 0x07, 0x00, 0x24, 0x14, 0x07, 0x00, 0x24, 0x40, 0x07, 0x00, 0x24, - 0x2d, 0xe9, 0xf7, 0x43, 0x04, 0x46, 0x0f, 0x46, 0x90, 0x46, 0x1e, 0x46, - 0x4f, 0xf6, 0xff, 0x79, 0xd4, 0xe9, 0x04, 0x23, 0x9a, 0x42, 0x15, 0xd2, - 0x23, 0x68, 0xdb, 0x68, 0x23, 0xb1, 0xe3, 0x68, 0x93, 0x42, 0x04, 0xbf, - 0x04, 0x33, 0x23, 0x61, 0x04, 0x23, 0x21, 0x69, 0x60, 0x68, 0x0d, 0xeb, - 0x03, 0x02, 0xff, 0xf7, 0xe1, 0xfe, 0x18, 0xbb, 0xa3, 0x7a, 0x25, 0x69, - 0x33, 0xb1, 0xe3, 0x68, 0xab, 0x42, 0x03, 0xd8, 0x01, 0x20, 0x03, 0xb0, - 0xbd, 0xe8, 0xf0, 0x83, 0x21, 0x89, 0xbd, 0xf8, 0x06, 0x30, 0x49, 0x45, - 0x03, 0xf1, 0x04, 0x02, 0x03, 0xd0, 0xbd, 0xf8, 0x04, 0xc0, 0x8c, 0x45, - 0x0b, 0xd1, 0x16, 0xb1, 0xbd, 0xf8, 0x04, 0x10, 0x31, 0x80, 0x04, 0x35, - 0x3d, 0x60, 0xa8, 0xf8, 0x00, 0x30, 0x23, 0x69, 0x13, 0x44, 0x23, 0x61, - 0xe5, 0xe7, 0x15, 0x44, 0x25, 0x61, 0xc7, 0xe7, 0x4f, 0xf0, 0xff, 0x30, - 0xdf, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4f, 0x13, 0x78, 0xad, 0xf5, - 0x0f, 0x7d, 0x82, 0x46, 0x0d, 0x46, 0x01, 0x2b, 0x93, 0x46, 0x0d, 0xd1, - 0x4b, 0x69, 0x13, 0xf0, 0x0c, 0x0f, 0x09, 0xd0, 0x90, 0xf8, 0x1c, 0x31, - 0x33, 0xb9, 0x4f, 0xf0, 0xff, 0x31, 0x08, 0x46, 0x0d, 0xf5, 0x0f, 0x7d, - 0xbd, 0xe8, 0xf0, 0x8f, 0x40, 0x22, 0x00, 0x21, 0x6d, 0xa8, 0xdf, 0xf8, - 0xa8, 0x82, 0x19, 0xf0, 0xbb, 0xf9, 0xa1, 0x4a, 0xa1, 0x4b, 0x00, 0x24, - 0xaf, 0x68, 0x2e, 0x69, 0xdf, 0xf8, 0x98, 0x92, 0x3e, 0x44, 0xdf, 0xf8, - 0x98, 0xe2, 0xdf, 0xf8, 0x98, 0xc2, 0x9d, 0x48, 0x9d, 0x49, 0x7d, 0x94, - 0xcd, 0xe9, 0x6b, 0x23, 0xeb, 0x68, 0xf3, 0x18, 0xcd, 0xe9, 0x65, 0x98, - 0xcd, 0xe9, 0x02, 0x39, 0xcd, 0xe9, 0x04, 0x8e, 0x95, 0x4b, 0xdf, 0xf8, - 0x64, 0x82, 0x0a, 0x93, 0xcd, 0xe9, 0x63, 0x44, 0xcd, 0xe9, 0x67, 0xec, - 0xcd, 0xe9, 0x69, 0x01, 0xcd, 0xe9, 0x06, 0xc0, 0xcd, 0xe9, 0x08, 0x12, - 0x02, 0x9b, 0xa3, 0x42, 0x42, 0xd8, 0x29, 0xa9, 0x63, 0xa8, 0x0f, 0xf0, - 0x05, 0xfa, 0x29, 0x46, 0x4f, 0xf6, 0xff, 0x73, 0x5a, 0x46, 0x23, 0xa8, - 0xff, 0xf7, 0xa8, 0xfe, 0x01, 0x46, 0x00, 0x28, 0xbb, 0xd1, 0x4f, 0xf0, - 0xff, 0x35, 0x88, 0x4e, 0x07, 0x46, 0xdf, 0xf8, 0x38, 0x92, 0x2c, 0x46, - 0x06, 0xf1, 0x5b, 0x08, 0x23, 0x9b, 0x00, 0x2b, 0xad, 0xd0, 0x24, 0x9b, - 0x00, 0x2b, 0xaa, 0xd0, 0x0d, 0xa9, 0x0d, 0xf1, 0x32, 0x03, 0x0c, 0xaa, - 0x23, 0xa8, 0xff, 0xf7, 0x4f, 0xff, 0x01, 0x1e, 0xa3, 0xdb, 0x40, 0xf0, - 0x53, 0x82, 0xbd, 0xf8, 0x32, 0x30, 0x10, 0x2b, 0x59, 0xd1, 0xbd, 0xf8, - 0x30, 0x70, 0x20, 0x2f, 0x97, 0xd1, 0x0d, 0x99, 0x3b, 0x46, 0x43, 0xaa, - 0x58, 0x46, 0xff, 0xf7, 0x39, 0xfe, 0x01, 0x46, 0x00, 0x28, 0x90, 0xd1, - 0x43, 0xa9, 0x3a, 0x46, 0x29, 0xa8, 0x1a, 0xf0, 0xad, 0xfc, 0x01, 0x46, - 0x00, 0x28, 0x88, 0xd1, 0x01, 0x27, 0xd3, 0xe7, 0x02, 0x9b, 0xa3, 0xeb, - 0x04, 0x09, 0xb9, 0xf5, 0x80, 0x7f, 0x28, 0xbf, 0x4f, 0xf4, 0x80, 0x79, - 0xa7, 0x42, 0x05, 0xd9, 0x04, 0xeb, 0x09, 0x03, 0x9f, 0x42, 0x38, 0xbf, - 0xa7, 0xeb, 0x04, 0x09, 0xa6, 0x42, 0x05, 0xd9, 0x04, 0xeb, 0x09, 0x03, - 0x9e, 0x42, 0x38, 0xbf, 0xa6, 0xeb, 0x04, 0x09, 0x21, 0x46, 0x4b, 0x46, - 0x62, 0x4a, 0x58, 0x46, 0xff, 0xf7, 0x0e, 0xfe, 0x01, 0x46, 0x00, 0x28, - 0x7f, 0xf4, 0x65, 0xaf, 0x9b, 0xf8, 0x00, 0x30, 0x01, 0x2b, 0x12, 0xd1, - 0x6b, 0x69, 0x13, 0xf0, 0x0c, 0x0f, 0x0e, 0xd0, 0xa7, 0x42, 0x0c, 0xd8, - 0xa6, 0x42, 0x0a, 0xd9, 0xe2, 0x1b, 0x59, 0x46, 0x50, 0x46, 0xcd, 0xf8, - 0x04, 0x80, 0x02, 0xf0, 0x0f, 0x03, 0x00, 0x93, 0x4b, 0x46, 0xff, 0xf7, - 0x6c, 0xfc, 0xb9, 0xf1, 0x00, 0x0f, 0x04, 0xd0, 0x4a, 0x46, 0x41, 0x46, - 0x63, 0xa8, 0x0f, 0xf0, 0x1f, 0xf9, 0x4c, 0x44, 0x76, 0xe7, 0x01, 0x2b, - 0x3d, 0xd1, 0xbd, 0xf8, 0x30, 0x30, 0x20, 0x2b, 0x3f, 0xf6, 0x3b, 0xaf, - 0x0d, 0x99, 0x43, 0xaa, 0x58, 0x46, 0xff, 0xf7, 0xdd, 0xfd, 0x01, 0x46, - 0x00, 0x28, 0x7f, 0xf4, 0x34, 0xaf, 0x9d, 0xf8, 0x30, 0x50, 0x20, 0x2d, - 0x7b, 0xd8, 0x40, 0x22, 0x02, 0x90, 0x6d, 0xa8, 0x19, 0xf0, 0xf2, 0xf8, - 0x03, 0x9b, 0x02, 0x99, 0x5b, 0x22, 0x65, 0x93, 0x63, 0xa8, 0x04, 0x9b, - 0x7d, 0x91, 0x66, 0x93, 0x05, 0x9b, 0x67, 0x93, 0x06, 0x9b, 0x68, 0x93, - 0x07, 0x9b, 0x69, 0x93, 0x08, 0x9b, 0x6a, 0x93, 0x09, 0x9b, 0x6b, 0x93, - 0x0a, 0x9b, 0xcd, 0xe9, 0x63, 0x11, 0x31, 0x46, 0x6c, 0x93, 0x0f, 0xf0, - 0xeb, 0xf8, 0x3a, 0xa9, 0x63, 0xa8, 0x0f, 0xf0, 0x4d, 0xf9, 0x2a, 0x46, - 0x43, 0xa9, 0x3a, 0xa8, 0x1a, 0xf0, 0x2a, 0xfc, 0x00, 0x38, 0x18, 0xbf, - 0x01, 0x20, 0x45, 0x42, 0x50, 0xe7, 0x22, 0x2b, 0x7f, 0xf4, 0x4e, 0xaf, - 0x00, 0x2d, 0x7f, 0xf4, 0x4b, 0xaf, 0xbd, 0xf8, 0x30, 0x30, 0x80, 0x2b, - 0x3f, 0xf6, 0xf7, 0xae, 0x43, 0xac, 0x0d, 0x99, 0x58, 0x46, 0x22, 0x46, - 0xff, 0xf7, 0x98, 0xfd, 0x01, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0xef, 0xae, - 0x30, 0x23, 0x31, 0xaa, 0x41, 0x46, 0x0e, 0xa8, 0xbd, 0xf8, 0x30, 0xa0, - 0x0e, 0x96, 0x11, 0xf0, 0x01, 0xfe, 0x70, 0xbb, 0x31, 0x9b, 0x3a, 0xaa, - 0x0e, 0x9d, 0x0e, 0xa8, 0x1d, 0x44, 0x63, 0xab, 0x29, 0x46, 0x11, 0xf0, - 0x0b, 0xfe, 0x20, 0xbb, 0x3b, 0x9a, 0x07, 0x2a, 0x21, 0xd1, 0x49, 0x46, - 0x3c, 0x98, 0x1a, 0xf0, 0xf5, 0xfb, 0xe0, 0xb9, 0x64, 0x9a, 0x08, 0x2a, - 0x19, 0xd1, 0x15, 0x49, 0x65, 0x98, 0x1a, 0xf0, 0xed, 0xfb, 0xa0, 0xb9, - 0x03, 0x23, 0x31, 0xaa, 0x29, 0x46, 0x0e, 0xa8, 0x11, 0xf0, 0xe0, 0xfd, - 0x68, 0xb9, 0x31, 0x9a, 0x5a, 0xb1, 0x51, 0x1e, 0x0e, 0x9b, 0x31, 0x91, - 0x18, 0x78, 0x30, 0xb9, 0x58, 0x1c, 0x13, 0x44, 0x9d, 0x42, 0x0e, 0x90, - 0x01, 0xd1, 0x41, 0x29, 0x1c, 0xd0, 0x4f, 0xf0, 0xff, 0x34, 0x4f, 0xf0, - 0xff, 0x35, 0xfd, 0xe6, 0xab, 0xd9, 0x83, 0x1f, 0x19, 0xcd, 0xe0, 0x5b, - 0x7f, 0x52, 0x0e, 0x51, 0x8c, 0x68, 0x05, 0x9b, 0x00, 0x03, 0x00, 0x08, - 0x00, 0x6b, 0x00, 0x24, 0xbf, 0xde, 0x01, 0x08, 0x85, 0xae, 0x67, 0xbb, - 0x67, 0xe6, 0x09, 0x6a, 0x72, 0xf3, 0x6e, 0x3c, 0x3a, 0xf5, 0x4f, 0xa5, - 0xae, 0xde, 0x01, 0x08, 0x63, 0xa8, 0x01, 0x25, 0x0f, 0xf0, 0x46, 0xfb, - 0x00, 0x23, 0x85, 0xa8, 0x84, 0x93, 0xcd, 0xe9, 0x82, 0x53, 0x0f, 0xf0, - 0x33, 0xfb, 0x0e, 0x99, 0xa1, 0x4b, 0x63, 0xa8, 0x0b, 0x91, 0x5b, 0x1a, - 0x02, 0x93, 0x0f, 0xf0, 0x14, 0xfe, 0x03, 0x22, 0x63, 0xa8, 0x8d, 0xf8, - 0x8c, 0x21, 0x0f, 0xf0, 0x39, 0xfc, 0x02, 0x9b, 0x0b, 0x99, 0x58, 0xb1, - 0x4f, 0xf0, 0xff, 0x34, 0x63, 0xa8, 0x0f, 0xf0, 0x06, 0xfe, 0x82, 0xa8, - 0x0f, 0xf0, 0xde, 0xfd, 0x85, 0xa8, 0x0f, 0xf0, 0xee, 0xfd, 0xbc, 0xe7, - 0x0a, 0x46, 0x63, 0xa8, 0x85, 0xa9, 0x0f, 0xf0, 0x97, 0xfe, 0x00, 0x28, - 0xec, 0xd1, 0x85, 0xa9, 0x63, 0xa8, 0x10, 0xf0, 0xb5, 0xfe, 0x00, 0x28, - 0xe6, 0xd1, 0xa2, 0x44, 0x30, 0x23, 0x10, 0xaa, 0x0f, 0x94, 0x51, 0x46, - 0xcd, 0xe9, 0x11, 0x50, 0xcd, 0xe9, 0x13, 0x05, 0xcd, 0xe9, 0x15, 0x00, - 0x0f, 0xa8, 0x11, 0xf0, 0x71, 0xfd, 0x60, 0xb1, 0xa0, 0xf5, 0x9f, 0x44, - 0x11, 0xa8, 0x0f, 0xf0, 0xb9, 0xfd, 0x14, 0xa8, 0x0f, 0xf0, 0xb6, 0xfd, - 0x20, 0x1e, 0x18, 0xbf, 0x01, 0x20, 0x44, 0x42, 0xcc, 0xe7, 0xdd, 0xe9, - 0x0f, 0x32, 0x13, 0x44, 0x9a, 0x45, 0x40, 0xf0, 0xf1, 0x80, 0x11, 0xaa, - 0x51, 0x46, 0x0f, 0xa8, 0x11, 0xf0, 0xb7, 0xfd, 0x04, 0x46, 0x30, 0xb9, - 0x14, 0xaa, 0x51, 0x46, 0x0f, 0xa8, 0x11, 0xf0, 0xb0, 0xfd, 0x04, 0x46, - 0x10, 0xb1, 0xa4, 0xf5, 0x9f, 0x44, 0xdd, 0xe7, 0x31, 0xa8, 0x0f, 0xf0, - 0xd3, 0xfa, 0x9d, 0xf8, 0x8c, 0x31, 0x09, 0x2b, 0xcd, 0xe9, 0x17, 0x54, - 0xcd, 0xe9, 0x19, 0x45, 0xcd, 0xe9, 0x1b, 0x44, 0xcd, 0xe9, 0x1d, 0x54, - 0xcd, 0xe9, 0x1f, 0x45, 0xcd, 0xe9, 0x21, 0x44, 0x01, 0xd1, 0x6b, 0x4c, - 0xc8, 0xe7, 0x78, 0x9b, 0x00, 0x2b, 0xfa, 0xd0, 0x01, 0x21, 0x11, 0xa8, - 0x0f, 0xf0, 0x31, 0xfb, 0x00, 0x28, 0x17, 0xda, 0x66, 0x4c, 0x31, 0xa8, - 0x0f, 0xf0, 0x8b, 0xfd, 0x17, 0xa8, 0x0f, 0xf0, 0x75, 0xfd, 0x1a, 0xa8, - 0x0f, 0xf0, 0x72, 0xfd, 0x1d, 0xa8, 0x0f, 0xf0, 0x6f, 0xfd, 0x20, 0xa8, - 0x0f, 0xf0, 0x6c, 0xfd, 0x00, 0x2c, 0xad, 0xd1, 0x0f, 0x9a, 0x5e, 0x4b, - 0x92, 0x45, 0x18, 0xbf, 0x1c, 0x46, 0xa7, 0xe7, 0x76, 0xa9, 0x11, 0xa8, - 0x0f, 0xf0, 0xd0, 0xfa, 0x00, 0x28, 0xe1, 0xda, 0x01, 0x21, 0x14, 0xa8, - 0x0f, 0xf0, 0x0d, 0xfb, 0x00, 0x28, 0xdb, 0xdb, 0x76, 0xa9, 0x14, 0xa8, - 0x0f, 0xf0, 0xc4, 0xfa, 0x00, 0x28, 0xd5, 0xda, 0x7a, 0x9d, 0x29, 0xa9, - 0x17, 0xa8, 0x07, 0x35, 0xed, 0x08, 0x20, 0x2d, 0x28, 0xbf, 0x20, 0x25, - 0x2a, 0x46, 0x0f, 0xf0, 0xd3, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xc8, 0xd1, - 0x7a, 0x9b, 0xe9, 0x00, 0xb3, 0xeb, 0xc5, 0x0f, 0x3d, 0xd3, 0x76, 0xa9, - 0x17, 0xa8, 0x0f, 0xf0, 0xab, 0xfa, 0x00, 0x28, 0x07, 0xdb, 0x17, 0xa9, - 0x76, 0xaa, 0x08, 0x46, 0x10, 0xf0, 0x59, 0xfb, 0x04, 0x46, 0x00, 0x28, - 0xb5, 0xd1, 0x76, 0xaa, 0x14, 0xa9, 0x1a, 0xa8, 0x11, 0xf0, 0xe8, 0xf9, - 0x04, 0x46, 0x00, 0x28, 0xad, 0xd1, 0x1a, 0xaa, 0x17, 0xa9, 0x1d, 0xa8, - 0x0f, 0xf0, 0xce, 0xfe, 0x04, 0x46, 0x00, 0x28, 0xa5, 0xd1, 0x1d, 0xa9, - 0x76, 0xaa, 0x08, 0x46, 0x10, 0xf0, 0x0b, 0xfc, 0x04, 0x46, 0x00, 0x28, - 0x9d, 0xd1, 0x1a, 0xaa, 0x11, 0xa9, 0x20, 0xa8, 0x0f, 0xf0, 0xbe, 0xfe, - 0x04, 0x46, 0x00, 0x28, 0x95, 0xd1, 0x20, 0xa9, 0x76, 0xaa, 0x08, 0x46, - 0x10, 0xf0, 0xfb, 0xfb, 0x04, 0x46, 0x00, 0x28, 0x8d, 0xd1, 0x63, 0xa8, - 0x0f, 0xf0, 0x6c, 0xfa, 0x01, 0x28, 0x0a, 0xd0, 0xa4, 0xf5, 0x9d, 0x44, - 0x85, 0xe7, 0xc9, 0x1a, 0x17, 0xa8, 0x0f, 0xf0, 0x4f, 0xfc, 0x04, 0x46, - 0x00, 0x28, 0xba, 0xd0, 0x7d, 0xe7, 0x3a, 0xa8, 0x0f, 0xf0, 0x32, 0xfa, - 0x6d, 0xab, 0x1d, 0xaa, 0x3a, 0xa9, 0x63, 0xa8, 0xff, 0xf7, 0x64, 0xfa, - 0x04, 0x46, 0xa0, 0xb9, 0x85, 0xab, 0x20, 0xaa, 0x31, 0xa9, 0x63, 0xa8, - 0xff, 0xf7, 0x5c, 0xfa, 0x04, 0x46, 0x60, 0xb9, 0x31, 0xab, 0x3a, 0xaa, - 0x63, 0xa8, 0x19, 0x46, 0x11, 0xf0, 0x70, 0xf8, 0x04, 0x46, 0x20, 0xb9, - 0x31, 0xa9, 0x63, 0xa8, 0x11, 0xf0, 0x6a, 0xfb, 0x04, 0x46, 0x3a, 0xa8, - 0x0f, 0xf0, 0xe9, 0xfc, 0x00, 0x2c, 0x7f, 0xf4, 0x58, 0xaf, 0x21, 0x46, - 0x37, 0xa8, 0x0f, 0xf0, 0x82, 0xfa, 0x00, 0x28, 0x3f, 0xf4, 0x50, 0xaf, - 0x31, 0xa9, 0x76, 0xaa, 0x08, 0x46, 0x10, 0xf0, 0xb6, 0xfb, 0x04, 0x46, - 0x00, 0x28, 0x7f, 0xf4, 0x48, 0xaf, 0x11, 0xa9, 0x31, 0xa8, 0x0f, 0xf0, - 0x2f, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, 0x40, 0xaf, 0x3d, 0xe7, - 0x07, 0x4c, 0xfb, 0xe6, 0x00, 0x2f, 0x14, 0xbf, 0x21, 0x46, 0x01, 0x21, - 0x49, 0xe5, 0x00, 0xbf, 0x5b, 0x03, 0x00, 0x08, 0x80, 0xb0, 0xff, 0xff, - 0x00, 0xb2, 0xff, 0xff, 0x00, 0xb4, 0xff, 0xff, 0x1a, 0xb0, 0xff, 0xff, - 0x38, 0xb5, 0x0c, 0x46, 0x01, 0x23, 0x11, 0x46, 0x05, 0x46, 0x22, 0x46, - 0xff, 0xf7, 0xdc, 0xfb, 0x00, 0x28, 0x10, 0xdb, 0x4c, 0xb1, 0x01, 0x22, - 0x21, 0x46, 0x28, 0x46, 0xfe, 0xf7, 0x1c, 0xf9, 0x18, 0xb1, 0x03, 0x23, - 0x00, 0x20, 0x23, 0x70, 0x38, 0xbd, 0x23, 0x78, 0x01, 0x2b, 0x0c, 0xbf, - 0x01, 0x23, 0x02, 0x23, 0xf6, 0xe7, 0x01, 0x20, 0xf6, 0xe7, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x85, 0xb0, 0x91, 0x4c, 0x18, 0xf0, 0x4c, 0xf8, - 0x00, 0x25, 0x90, 0x4b, 0x90, 0x49, 0x91, 0x4a, 0x19, 0x60, 0x00, 0x21, - 0x10, 0x60, 0x83, 0xf8, 0x20, 0x10, 0x59, 0x62, 0xc3, 0xe9, 0x04, 0x45, - 0x4f, 0xf4, 0xf0, 0x14, 0x00, 0x25, 0xc3, 0xe9, 0x06, 0x45, 0x8b, 0x4d, - 0x14, 0x46, 0xc3, 0xe9, 0x01, 0x11, 0x2b, 0x78, 0x1b, 0xb9, 0x17, 0xf0, - 0x29, 0xfd, 0x01, 0x23, 0x2b, 0x70, 0x87, 0x4a, 0x14, 0x20, 0xd2, 0xe9, - 0x0d, 0x31, 0x92, 0xf8, 0x25, 0x20, 0x00, 0x2a, 0x08, 0xbf, 0x0b, 0x46, - 0x83, 0x4a, 0x21, 0x68, 0xc2, 0xe9, 0x01, 0x13, 0x0c, 0xf0, 0xe6, 0xfd, + 0x00, 0x24, 0x02, 0x58, 0x00, 0x28, 0x02, 0x58, 0xf4, 0xd2, 0x01, 0x08, + 0xf0, 0xb5, 0x82, 0x4d, 0x85, 0xb0, 0x17, 0xf0, 0xa9, 0xfb, 0x81, 0x4b, + 0x00, 0x21, 0x28, 0x60, 0x80, 0x48, 0x00, 0x24, 0x80, 0x4a, 0x83, 0xf8, + 0x20, 0x40, 0x1a, 0x60, 0x5c, 0x62, 0xc3, 0xe9, 0x04, 0x01, 0x4f, 0xf4, + 0xf0, 0x10, 0x00, 0x21, 0xc3, 0xe9, 0x01, 0x44, 0xc3, 0xe9, 0x06, 0x01, + 0x17, 0xf0, 0x7c, 0xf8, 0x68, 0xb9, 0x79, 0x4c, 0x23, 0x78, 0x1b, 0xb9, + 0x17, 0xf0, 0x90, 0xf8, 0x01, 0x23, 0x23, 0x70, 0x76, 0x4b, 0x93, 0xf8, + 0x25, 0x20, 0x00, 0x2a, 0x00, 0xf0, 0xc3, 0x80, 0x5c, 0x6b, 0x74, 0x4b, + 0x14, 0x20, 0x2a, 0x68, 0xc3, 0xe9, 0x01, 0x24, 0x0c, 0xf0, 0xa4, 0xfb, 0x4f, 0xf6, 0xff, 0x71, 0x83, 0x1e, 0x00, 0xf1, 0x12, 0x02, 0x23, 0xf8, - 0x02, 0x1f, 0x93, 0x42, 0xfb, 0xd1, 0x7d, 0x4b, 0x01, 0x22, 0xa5, 0x21, - 0x7c, 0x4c, 0x18, 0x60, 0x00, 0x25, 0x7c, 0x48, 0x4f, 0xf0, 0x00, 0x0a, - 0x15, 0xf0, 0x12, 0xfe, 0x01, 0x22, 0xa6, 0x21, 0x79, 0x48, 0x15, 0xf0, - 0x0d, 0xfe, 0x01, 0x22, 0xa7, 0x21, 0x78, 0x48, 0x15, 0xf0, 0x08, 0xfe, - 0x1c, 0x22, 0x00, 0x21, 0x20, 0x46, 0x18, 0xf0, 0x95, 0xfe, 0x88, 0x21, - 0x20, 0x46, 0x4f, 0xf0, 0x00, 0x0b, 0x21, 0x82, 0x02, 0xf0, 0x92, 0xff, - 0x20, 0x46, 0x00, 0x21, 0x70, 0x4e, 0x02, 0xf0, 0xb1, 0xff, 0xdf, 0xf8, - 0x00, 0x92, 0xb4, 0xf9, 0x10, 0x00, 0x02, 0x21, 0x6d, 0x4c, 0x02, 0xf0, - 0x91, 0xf8, 0x6d, 0x4f, 0x30, 0x46, 0xdf, 0xf8, 0xf0, 0x81, 0xc4, 0xf8, - 0x00, 0x90, 0xa6, 0x61, 0xc4, 0xe9, 0x02, 0xab, 0xc4, 0xe9, 0x04, 0x55, - 0x0c, 0xf0, 0xc6, 0xff, 0x0c, 0xf0, 0x12, 0xfe, 0xc7, 0xf8, 0x00, 0x80, - 0x0c, 0xf0, 0xfa, 0xfd, 0x01, 0x23, 0x65, 0x63, 0x84, 0xf8, 0x38, 0x30, - 0x62, 0x4b, 0x63, 0x48, 0x23, 0x60, 0xc4, 0xe9, 0x08, 0xab, 0x00, 0xf0, - 0xed, 0xf9, 0x61, 0x4c, 0x17, 0xf0, 0xca, 0xff, 0x60, 0x4b, 0x25, 0x61, - 0x18, 0x60, 0x60, 0x4b, 0x23, 0x60, 0x04, 0xf1, 0x44, 0x03, 0x02, 0x93, - 0x10, 0x23, 0xcd, 0xe9, 0x00, 0x55, 0x03, 0x93, 0xef, 0xf3, 0x05, 0x83, - 0x00, 0x2b, 0x73, 0xd0, 0x00, 0x20, 0x20, 0x64, 0x00, 0x25, 0x59, 0x48, - 0x00, 0xf0, 0x44, 0xf9, 0x44, 0x22, 0x00, 0x21, 0x57, 0x48, 0x18, 0xf0, - 0x45, 0xfe, 0x01, 0x23, 0x20, 0x22, 0x29, 0x46, 0xa3, 0x87, 0x65, 0x61, - 0x54, 0x48, 0x18, 0xf0, 0x3d, 0xfe, 0x4f, 0xf4, 0x80, 0x53, 0x28, 0x22, - 0x4f, 0xf4, 0xd0, 0x60, 0xc4, 0xe9, 0x0b, 0x32, 0x50, 0x4b, 0xa3, 0x61, - 0x50, 0x4c, 0xa5, 0x65, 0x18, 0xf0, 0xc0, 0xfd, 0x82, 0x46, 0x80, 0xb3, - 0xc2, 0x1c, 0x22, 0xf0, 0x03, 0x02, 0x13, 0x1a, 0x28, 0x46, 0xe2, 0x60, - 0xc3, 0xf5, 0xd0, 0x63, 0x23, 0xf0, 0x03, 0x03, 0x19, 0x46, 0xc4, 0xe9, - 0x04, 0x55, 0x05, 0xf1, 0x01, 0x0c, 0x00, 0x29, 0x4c, 0xd1, 0x00, 0xb1, - 0x25, 0x61, 0x00, 0x25, 0x22, 0x62, 0xc4, 0xe9, 0x06, 0x53, 0x25, 0x60, - 0x0d, 0xf0, 0x3a, 0xf8, 0x11, 0xf0, 0x86, 0xfe, 0x40, 0x4b, 0x60, 0x60, - 0x00, 0x93, 0x40, 0x4b, 0x25, 0x81, 0x02, 0x93, 0x10, 0x23, 0xa5, 0x72, - 0x84, 0xf8, 0x24, 0x50, 0x01, 0x95, 0x03, 0x93, 0xc4, 0xe9, 0x0a, 0x55, - 0xef, 0xf3, 0x05, 0x83, 0xa3, 0xb3, 0x00, 0x20, 0x20, 0x63, 0xc4, 0xf8, - 0x14, 0xa0, 0x38, 0x4c, 0x4f, 0xf0, 0x00, 0x0a, 0x4f, 0xf0, 0x00, 0x0b, - 0x00, 0x25, 0x26, 0x48, 0xc4, 0xf8, 0x00, 0x90, 0xa6, 0x61, 0xc4, 0xe9, - 0x02, 0xab, 0xc4, 0xe9, 0x04, 0x55, 0x0c, 0xf0, 0x3f, 0xff, 0x0c, 0xf0, - 0x8b, 0xfd, 0xc7, 0xf8, 0x00, 0x80, 0x0c, 0xf0, 0x73, 0xfd, 0x01, 0x23, - 0x65, 0x63, 0x84, 0xf8, 0x38, 0x30, 0x2c, 0x4b, 0xc4, 0xe9, 0x08, 0xab, - 0x23, 0x60, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x15, 0xf0, 0x40, 0xf8, - 0x01, 0x46, 0x00, 0x28, 0x86, 0xd1, 0x4f, 0xf6, 0xff, 0x70, 0x6a, 0x46, - 0xdf, 0xf8, 0x9c, 0xc0, 0x00, 0xdf, 0x80, 0xe7, 0x49, 0x08, 0x65, 0x46, - 0x01, 0x20, 0xaa, 0xe7, 0x15, 0xf0, 0x30, 0xf8, 0x00, 0x28, 0xc6, 0xd1, - 0x68, 0x46, 0xdf, 0xf8, 0x88, 0xc0, 0x00, 0xdf, 0xc2, 0xe7, 0x00, 0xbf, - 0x00, 0x00, 0x02, 0x08, 0x70, 0x06, 0x00, 0x24, 0x38, 0xdc, 0x01, 0x08, - 0x4c, 0x0e, 0x00, 0x24, 0x68, 0x06, 0x00, 0x24, 0xb4, 0x05, 0x00, 0x24, - 0x04, 0x00, 0x00, 0x24, 0xc0, 0x06, 0x00, 0x24, 0xb8, 0x09, 0x00, 0x24, - 0x80, 0x2e, 0x00, 0x24, 0x18, 0x0e, 0x00, 0x24, 0xf8, 0x06, 0x00, 0x24, - 0x18, 0xdf, 0x01, 0x08, 0xc0, 0x6a, 0x00, 0x24, 0xe0, 0x0d, 0x00, 0x24, - 0x44, 0xde, 0x01, 0x08, 0x78, 0x2c, 0x00, 0x24, 0x0c, 0x73, 0x00, 0x24, - 0xdc, 0x0d, 0x00, 0x24, 0x6c, 0xde, 0x01, 0x08, 0x60, 0x73, 0x00, 0x24, - 0x84, 0x73, 0x00, 0x24, 0x28, 0x73, 0x00, 0x24, 0xfe, 0xd4, 0x01, 0x08, - 0xb0, 0x72, 0x00, 0x24, 0x19, 0xd5, 0x01, 0x08, 0xe4, 0x72, 0x00, 0x24, - 0x28, 0x06, 0x00, 0x24, 0x50, 0xde, 0x01, 0x08, 0x8c, 0xdc, 0x01, 0x08, - 0xcd, 0xe7, 0x00, 0x08, 0x91, 0x53, 0x01, 0x08, 0x51, 0x55, 0x01, 0x08, - 0x10, 0xb5, 0x04, 0x46, 0x80, 0x21, 0x16, 0xf0, 0x22, 0xf9, 0x00, 0x21, - 0x20, 0x46, 0xbd, 0xe8, 0x10, 0x40, 0x16, 0xf0, 0x1c, 0xb9, 0x08, 0xb5, - 0x02, 0x65, 0x00, 0x22, 0x0b, 0x46, 0x00, 0xf1, 0x3c, 0x01, 0x42, 0x65, - 0x4f, 0xf4, 0x80, 0x72, 0x83, 0x64, 0x82, 0x87, 0x02, 0x69, 0x01, 0x2a, - 0xd2, 0xb2, 0x08, 0xbf, 0xc3, 0x64, 0x00, 0x68, 0xfe, 0xf7, 0x5e, 0xf8, - 0x00, 0x20, 0x08, 0xbd, 0x08, 0xb5, 0xc0, 0xf8, 0x10, 0x22, 0x00, 0x22, - 0x0b, 0x46, 0x00, 0xf5, 0xfe, 0x71, 0xc0, 0xf8, 0x14, 0x22, 0xa0, 0xf8, - 0xfc, 0x21, 0x02, 0x69, 0xc0, 0xf8, 0x08, 0x32, 0x01, 0x2a, 0xd2, 0xb2, - 0x08, 0xbf, 0xc0, 0xf8, 0x0c, 0x32, 0x00, 0x68, 0xfe, 0xf7, 0x46, 0xf8, - 0x00, 0x20, 0x08, 0xbd, 0x0f, 0x4b, 0x00, 0xf1, 0x60, 0x40, 0xdb, 0x68, - 0x00, 0xf5, 0x61, 0x40, 0xc3, 0xf3, 0x02, 0x23, 0x10, 0xb5, 0xc3, 0xf1, - 0x07, 0x04, 0x1a, 0x1d, 0x04, 0x2c, 0x28, 0xbf, 0x04, 0x24, 0x06, 0x2a, - 0x4f, 0xf0, 0xff, 0x32, 0x8c, 0xbf, 0x03, 0x3b, 0x00, 0x23, 0xa2, 0x40, - 0x21, 0xea, 0x02, 0x01, 0x01, 0xfa, 0x03, 0xf3, 0x1b, 0x01, 0xdb, 0xb2, - 0x80, 0xf8, 0x00, 0x33, 0x10, 0xbd, 0x00, 0xbf, 0x00, 0xed, 0x00, 0xe0, - 0x07, 0xb5, 0x8d, 0xf8, 0x07, 0x10, 0x01, 0x23, 0x81, 0x68, 0x0d, 0xf1, - 0x07, 0x02, 0x80, 0x39, 0xff, 0xf7, 0xbf, 0xf9, 0x03, 0xb0, 0x5d, 0xf8, - 0x04, 0xfb, 0x00, 0x00, 0x08, 0xb5, 0x72, 0x46, 0x06, 0x4b, 0x01, 0x25, - 0xd3, 0xe8, 0x4f, 0x4f, 0xc3, 0xe8, 0x46, 0x5f, 0xe4, 0xb2, 0x00, 0x2e, - 0xf8, 0xd1, 0x0c, 0xb9, 0x0c, 0xf0, 0x08, 0xfd, 0x0d, 0xf0, 0x24, 0xf9, - 0x48, 0x0e, 0x00, 0x24, 0x1f, 0xb5, 0x00, 0x23, 0x04, 0x46, 0x03, 0x62, - 0x06, 0x4b, 0x00, 0x93, 0x03, 0x1d, 0x68, 0x46, 0x02, 0x93, 0x1c, 0x23, - 0x03, 0x93, 0x0b, 0x23, 0x01, 0x93, 0x15, 0xf0, 0x9f, 0xfb, 0x20, 0x60, - 0x04, 0xb0, 0x10, 0xbd, 0x20, 0xd5, 0x01, 0x08, 0x0d, 0x4b, 0x19, 0x88, - 0x4f, 0xf6, 0xfd, 0x73, 0x4a, 0x1e, 0x92, 0xb2, 0x9a, 0x42, 0x97, 0xbf, - 0x0a, 0x4b, 0x4f, 0xf0, 0x02, 0x63, 0x03, 0xea, 0x81, 0x23, 0x03, 0xf1, - 0x00, 0x63, 0x83, 0x42, 0x07, 0xd9, 0xb0, 0xf1, 0x00, 0x6f, 0x34, 0xbf, - 0x4f, 0xf0, 0xff, 0x30, 0x4f, 0xf4, 0x00, 0x30, 0x70, 0x47, 0x4f, 0xf0, - 0xff, 0x30, 0x70, 0x47, 0x80, 0xe8, 0xf1, 0x1f, 0x00, 0xfc, 0x3f, 0x00, - 0x06, 0x4b, 0x4f, 0xf6, 0xfd, 0x71, 0x1a, 0x88, 0x53, 0x1e, 0x9b, 0xb2, - 0x8b, 0x42, 0x9a, 0xbf, 0x03, 0x48, 0x00, 0xea, 0x82, 0x20, 0x4f, 0xf4, - 0x00, 0x10, 0x70, 0x47, 0x80, 0xe8, 0xf1, 0x1f, 0x00, 0xfc, 0x3f, 0x00, + 0x02, 0x1f, 0x9a, 0x42, 0xfb, 0xd1, 0x6d, 0x4b, 0x00, 0x25, 0x6d, 0x4c, + 0x00, 0x26, 0x18, 0x60, 0x00, 0x27, 0x6c, 0x48, 0x0d, 0xf0, 0xb2, 0xfb, + 0x01, 0x22, 0xa5, 0x21, 0x6a, 0x48, 0x15, 0xf0, 0x1e, 0xfd, 0x01, 0x22, + 0xa6, 0x21, 0x69, 0x48, 0x15, 0xf0, 0x19, 0xfd, 0x01, 0x22, 0xa7, 0x21, + 0x67, 0x48, 0x15, 0xf0, 0x14, 0xfd, 0x1c, 0x22, 0x00, 0x21, 0x20, 0x46, + 0x19, 0xf0, 0x50, 0xfb, 0x88, 0x21, 0x20, 0x46, 0x21, 0x82, 0x03, 0xf0, + 0x41, 0xf8, 0x20, 0x46, 0x00, 0x21, 0x03, 0xf0, 0x61, 0xf8, 0x02, 0x21, + 0xb4, 0xf9, 0x10, 0x00, 0x02, 0xf0, 0x44, 0xf9, 0x5d, 0x4c, 0x5e, 0x48, + 0x5e, 0x4b, 0xa0, 0x61, 0x23, 0x60, 0xc4, 0xe9, 0x02, 0x67, 0xc4, 0xe9, + 0x04, 0x55, 0x0c, 0xf0, 0x93, 0xfd, 0x0c, 0xf0, 0xd5, 0xfb, 0x5a, 0x4a, + 0x5a, 0x4b, 0x1a, 0x60, 0x0c, 0xf0, 0xbc, 0xfb, 0x01, 0x23, 0x65, 0x63, + 0x84, 0xf8, 0x38, 0x30, 0x57, 0x4b, 0xc4, 0xe9, 0x08, 0x67, 0x23, 0x60, + 0x16, 0xf0, 0x58, 0xff, 0x55, 0x4b, 0x56, 0x4c, 0x18, 0x60, 0x17, 0xf0, + 0x29, 0xfb, 0x55, 0x4b, 0x25, 0x61, 0x18, 0x60, 0x54, 0x4b, 0x23, 0x60, + 0x04, 0xf1, 0x44, 0x03, 0x02, 0x93, 0x10, 0x23, 0xcd, 0xe9, 0x00, 0x55, + 0x03, 0x93, 0xef, 0xf3, 0x05, 0x83, 0x00, 0x2b, 0x57, 0xd0, 0x00, 0x20, + 0x20, 0x64, 0x00, 0x25, 0x4d, 0x48, 0x00, 0xf0, 0xbf, 0xf8, 0x44, 0x22, + 0x00, 0x21, 0x4c, 0x48, 0x19, 0xf0, 0x06, 0xfb, 0x01, 0x23, 0x20, 0x22, + 0x29, 0x46, 0xa3, 0x87, 0x65, 0x61, 0x49, 0x48, 0x19, 0xf0, 0xfe, 0xfa, + 0x4f, 0xf4, 0x80, 0x53, 0x28, 0x22, 0x4f, 0xf4, 0xd0, 0x60, 0xc4, 0xe9, + 0x0b, 0x32, 0x45, 0x4b, 0xa3, 0x61, 0x45, 0x4c, 0xa5, 0x65, 0x19, 0xf0, + 0x83, 0xfa, 0x06, 0x46, 0x70, 0xb3, 0xc2, 0x1c, 0x22, 0xf0, 0x03, 0x02, + 0x13, 0x1a, 0x28, 0x46, 0xe2, 0x60, 0xc3, 0xf5, 0xd0, 0x63, 0x23, 0xf0, + 0x03, 0x03, 0x19, 0x46, 0xc4, 0xe9, 0x04, 0x55, 0x6f, 0x1c, 0x00, 0x29, + 0x31, 0xd1, 0x00, 0xb1, 0x25, 0x61, 0x00, 0x25, 0x22, 0x62, 0xc4, 0xe9, + 0x06, 0x53, 0x25, 0x60, 0x0c, 0xf0, 0x06, 0xfe, 0x11, 0xf0, 0x8e, 0xfc, + 0x35, 0x4b, 0x60, 0x60, 0x00, 0x93, 0x35, 0x4b, 0x25, 0x81, 0x02, 0x93, + 0x10, 0x23, 0xa5, 0x72, 0x84, 0xf8, 0x24, 0x50, 0x01, 0x95, 0x03, 0x93, + 0xc4, 0xe9, 0x0a, 0x55, 0xef, 0xf3, 0x05, 0x83, 0xcb, 0xb1, 0x00, 0x20, + 0x20, 0x63, 0x66, 0x61, 0x2d, 0x48, 0x0d, 0xf0, 0x0b, 0xfb, 0x05, 0xb0, + 0xf0, 0xbd, 0x9c, 0x6b, 0x3b, 0xe7, 0x14, 0xf0, 0x67, 0xff, 0x01, 0x46, + 0x00, 0x28, 0xa2, 0xd1, 0x4f, 0xf6, 0xff, 0x70, 0x6a, 0x46, 0xdf, 0xf8, + 0x9c, 0xc0, 0x00, 0xdf, 0x9c, 0xe7, 0x49, 0x08, 0x3d, 0x46, 0x01, 0x20, + 0xc6, 0xe7, 0x14, 0xf0, 0x57, 0xff, 0x00, 0x28, 0xe1, 0xd1, 0x68, 0x46, + 0xdf, 0xf8, 0x84, 0xc0, 0x00, 0xdf, 0xdd, 0xe7, 0x7c, 0x0b, 0x02, 0x24, + 0xb0, 0x06, 0x00, 0x24, 0x00, 0x00, 0x02, 0x08, 0xbc, 0xd6, 0x01, 0x08, + 0xa8, 0x06, 0x00, 0x24, 0xb4, 0x05, 0x00, 0x24, 0x04, 0x00, 0x00, 0x24, + 0xd8, 0x06, 0x00, 0x24, 0xe8, 0x0a, 0x00, 0x24, 0x68, 0x06, 0x00, 0x24, + 0xa8, 0x0b, 0x02, 0x24, 0x48, 0x0b, 0x02, 0x24, 0x0c, 0x07, 0x00, 0x24, + 0xe8, 0x0b, 0x02, 0x24, 0x58, 0xd9, 0x01, 0x08, 0x10, 0xd7, 0x01, 0x08, + 0x21, 0xdf, 0x00, 0x08, 0x10, 0x0b, 0x02, 0x24, 0xb0, 0xd8, 0x01, 0x08, + 0xa4, 0x0b, 0x02, 0x24, 0x34, 0x14, 0x02, 0x24, 0x0c, 0x0b, 0x02, 0x24, + 0xcc, 0xd8, 0x01, 0x08, 0x88, 0x14, 0x02, 0x24, 0xac, 0x14, 0x02, 0x24, + 0x50, 0x14, 0x02, 0x24, 0x15, 0xd3, 0x01, 0x08, 0xd8, 0x13, 0x02, 0x24, + 0x30, 0xd3, 0x01, 0x08, 0x0c, 0x14, 0x02, 0x24, 0x28, 0x06, 0x00, 0x24, + 0xbd, 0x46, 0x01, 0x08, 0x7d, 0x48, 0x01, 0x08, 0x08, 0xb5, 0x72, 0x46, + 0x06, 0x4b, 0x01, 0x25, 0xd3, 0xe8, 0x4f, 0x4f, 0xc3, 0xe8, 0x46, 0x5f, + 0xe4, 0xb2, 0x00, 0x2e, 0xf8, 0xd1, 0x0c, 0xb9, 0x0c, 0xf0, 0x4e, 0xfb, + 0x0c, 0xf0, 0x74, 0xff, 0x78, 0x0b, 0x02, 0x24, 0x1f, 0xb5, 0x00, 0x23, + 0x04, 0x46, 0x03, 0x62, 0x06, 0x4b, 0x00, 0x93, 0x03, 0x1d, 0x68, 0x46, + 0x02, 0x93, 0x1c, 0x23, 0x03, 0x93, 0x0b, 0x23, 0x01, 0x93, 0x15, 0xf0, + 0x59, 0xfb, 0x20, 0x60, 0x04, 0xb0, 0x10, 0xbd, 0x37, 0xd3, 0x01, 0x08, 0x0b, 0x4b, 0x10, 0xb5, 0x04, 0x46, 0x40, 0xf8, 0x04, 0x3b, 0xfe, 0xf7, - 0x3d, 0xfa, 0x09, 0x4b, 0x00, 0x21, 0x04, 0xf1, 0x14, 0x00, 0x03, 0xf1, - 0x08, 0x02, 0x94, 0x33, 0x22, 0x60, 0x38, 0x22, 0x63, 0x60, 0x18, 0xf0, - 0xad, 0xfc, 0x4f, 0xf0, 0xff, 0x33, 0x20, 0x46, 0x23, 0x65, 0x10, 0xbd, - 0x70, 0xdd, 0x01, 0x08, 0x90, 0xdc, 0x01, 0x08, 0x14, 0x4b, 0x10, 0xb5, - 0x04, 0x46, 0x40, 0xf8, 0x04, 0x3b, 0xfe, 0xf7, 0x21, 0xfa, 0x12, 0x4b, + 0xbb, 0xff, 0x09, 0x4b, 0x00, 0x21, 0x04, 0xf1, 0x14, 0x00, 0x03, 0xf1, + 0x08, 0x02, 0x94, 0x33, 0x22, 0x60, 0x38, 0x22, 0x63, 0x60, 0x19, 0xf0, + 0x25, 0xfa, 0x4f, 0xf0, 0xff, 0x33, 0x20, 0x46, 0x23, 0x65, 0x10, 0xbd, + 0xf4, 0xd7, 0x01, 0x08, 0x14, 0xd7, 0x01, 0x08, 0x14, 0x4b, 0x10, 0xb5, + 0x04, 0x46, 0x40, 0xf8, 0x04, 0x3b, 0xfe, 0xf7, 0x9f, 0xff, 0x12, 0x4b, 0x00, 0x21, 0x04, 0xf1, 0x14, 0x00, 0x03, 0xf1, 0x08, 0x02, 0x88, 0x33, - 0x22, 0x60, 0x44, 0x22, 0x63, 0x60, 0x18, 0xf0, 0x91, 0xfc, 0x00, 0x21, - 0x38, 0x22, 0x04, 0xf1, 0x58, 0x00, 0x18, 0xf0, 0x8b, 0xfc, 0x00, 0x22, + 0x22, 0x60, 0x44, 0x22, 0x63, 0x60, 0x19, 0xf0, 0x09, 0xfa, 0x00, 0x21, + 0x38, 0x22, 0x04, 0xf1, 0x58, 0x00, 0x19, 0xf0, 0x03, 0xfa, 0x00, 0x22, 0x40, 0x23, 0x04, 0xf1, 0xa4, 0x00, 0xc4, 0xe9, 0x24, 0x23, 0xc4, 0xf8, 0x98, 0x30, 0x4f, 0xf4, 0x00, 0x73, 0xc4, 0xe9, 0x27, 0x33, 0xff, 0xf7, - 0x77, 0xff, 0x20, 0x46, 0x10, 0xbd, 0x00, 0xbf, 0x70, 0xdd, 0x01, 0x08, - 0x94, 0xdd, 0x01, 0x08, 0xf8, 0xb5, 0x4b, 0x4b, 0x04, 0x46, 0x5c, 0x22, - 0x00, 0x21, 0x03, 0x60, 0x08, 0x30, 0x49, 0x4b, 0x01, 0x27, 0x49, 0x4e, - 0x00, 0x25, 0x40, 0xf8, 0x04, 0x3c, 0x18, 0xf0, 0x67, 0xfc, 0x3b, 0x23, - 0x20, 0x1d, 0xc4, 0xf8, 0xa8, 0x50, 0xa4, 0xf8, 0x9a, 0x30, 0x44, 0x4b, - 0xa4, 0xf8, 0x68, 0x50, 0xc4, 0xf8, 0x8c, 0x50, 0x84, 0xf8, 0x98, 0x50, - 0xc4, 0xe9, 0x27, 0x63, 0x4f, 0xf4, 0x00, 0x33, 0x66, 0x26, 0x63, 0x66, - 0x3e, 0x4b, 0xa4, 0xf8, 0xa4, 0x60, 0xc4, 0xe9, 0x24, 0x37, 0x3d, 0x4b, - 0xc4, 0xe9, 0x2b, 0x35, 0x0c, 0xf0, 0xde, 0xfe, 0x04, 0xf1, 0xbc, 0x00, - 0xa4, 0xf8, 0xb8, 0x60, 0xff, 0xf7, 0x3e, 0xff, 0x38, 0x4b, 0x39, 0x48, - 0xc4, 0xf8, 0xf4, 0x31, 0xc4, 0xf8, 0x00, 0x52, 0x84, 0xf8, 0x04, 0x52, - 0x0d, 0xf0, 0xfc, 0xfb, 0x08, 0xf0, 0x5c, 0xff, 0x34, 0x4a, 0x11, 0x68, - 0x09, 0x29, 0x4e, 0xdc, 0x33, 0x4b, 0x1b, 0x68, 0x9d, 0x1e, 0x18, 0x46, - 0x03, 0xf1, 0x12, 0x06, 0x35, 0xf9, 0x02, 0x7f, 0x66, 0x2f, 0x47, 0xd0, - 0xb5, 0x42, 0xf9, 0xd1, 0x14, 0x33, 0x05, 0x46, 0x02, 0x30, 0xb5, 0xf9, - 0x00, 0x60, 0x01, 0x36, 0x38, 0xd1, 0x66, 0x23, 0x2b, 0x80, 0x01, 0x31, - 0x00, 0x25, 0x11, 0x60, 0x25, 0x48, 0x0d, 0xf0, 0xdb, 0xfb, 0x08, 0xf0, - 0x1b, 0xff, 0x00, 0x20, 0x00, 0x21, 0xc4, 0xf8, 0xb4, 0x50, 0x03, 0x25, - 0x00, 0x23, 0x4f, 0xf0, 0xff, 0x32, 0xc4, 0xf8, 0x60, 0x31, 0xc4, 0xf8, - 0x18, 0x21, 0x84, 0xf8, 0x54, 0x31, 0x84, 0xf8, 0xfd, 0x31, 0x84, 0xf8, - 0xfe, 0x31, 0xc4, 0xf8, 0xe8, 0x20, 0xc4, 0xf8, 0xfc, 0x20, 0xa4, 0xf8, - 0x00, 0x31, 0xc4, 0xe9, 0x44, 0x01, 0x4f, 0xf4, 0x00, 0x30, 0x01, 0x21, - 0xc4, 0xf8, 0xf8, 0x01, 0x02, 0x20, 0xc4, 0xf8, 0x28, 0x11, 0x84, 0xf8, - 0xf0, 0x10, 0x84, 0xf8, 0x02, 0x11, 0xc4, 0xe9, 0x38, 0x50, 0x35, 0x20, - 0xc4, 0xe9, 0x3d, 0x22, 0xc4, 0xf8, 0xec, 0x00, 0x20, 0x46, 0xf8, 0xbd, - 0x98, 0x42, 0xbe, 0xd1, 0xc5, 0xe7, 0x6f, 0xf0, 0x01, 0x05, 0xc5, 0xe7, - 0x4f, 0xf0, 0xff, 0x35, 0xc2, 0xe7, 0x00, 0xbf, 0xe4, 0xdb, 0x01, 0x08, - 0x2c, 0xde, 0x01, 0x08, 0x3c, 0x00, 0x57, 0x00, 0x3d, 0x00, 0x5a, 0x00, - 0x40, 0x42, 0x0f, 0x00, 0x15, 0xf9, 0x00, 0x08, 0x00, 0x5a, 0x62, 0x02, - 0x98, 0x06, 0x00, 0x24, 0xc4, 0x06, 0x00, 0x24, 0xc0, 0x06, 0x00, 0x24, - 0x10, 0xb5, 0x86, 0xb0, 0x04, 0x46, 0x68, 0x46, 0x03, 0x91, 0x80, 0xe8, - 0x0c, 0x00, 0x06, 0xa8, 0x00, 0xe9, 0x0c, 0x00, 0x10, 0xe9, 0x07, 0x00, - 0x03, 0x4b, 0x84, 0xe8, 0x07, 0x00, 0x20, 0x46, 0xe3, 0x60, 0x06, 0xb0, - 0x10, 0xbd, 0x00, 0xbf, 0x73, 0x88, 0x00, 0x08, 0x08, 0xb5, 0x08, 0x4b, + 0xa9, 0xff, 0x20, 0x46, 0x10, 0xbd, 0x00, 0xbf, 0xf4, 0xd7, 0x01, 0x08, + 0x18, 0xd8, 0x01, 0x08, 0x10, 0xb5, 0x04, 0x46, 0x80, 0x21, 0x15, 0xf0, + 0xbb, 0xfb, 0x00, 0x21, 0x20, 0x46, 0xbd, 0xe8, 0x10, 0x40, 0x15, 0xf0, + 0xb5, 0xbb, 0x08, 0xb5, 0x02, 0x65, 0x00, 0x22, 0x0b, 0x46, 0x00, 0xf1, + 0x3c, 0x01, 0x42, 0x65, 0x4f, 0xf4, 0x80, 0x72, 0x83, 0x64, 0x82, 0x87, + 0x02, 0x69, 0x01, 0x2a, 0xd2, 0xb2, 0x08, 0xbf, 0xc3, 0x64, 0x00, 0x68, + 0xfe, 0xf7, 0x12, 0xfc, 0x00, 0x20, 0x08, 0xbd, 0x08, 0xb5, 0xc0, 0xf8, + 0x10, 0x22, 0x00, 0x22, 0x0b, 0x46, 0x00, 0xf5, 0xfe, 0x71, 0xc0, 0xf8, + 0x14, 0x22, 0xa0, 0xf8, 0xfc, 0x21, 0x02, 0x69, 0xc0, 0xf8, 0x08, 0x32, + 0x01, 0x2a, 0xd2, 0xb2, 0x08, 0xbf, 0xc0, 0xf8, 0x0c, 0x32, 0x00, 0x68, + 0xfe, 0xf7, 0xfa, 0xfb, 0x00, 0x20, 0x08, 0xbd, 0x0f, 0x4b, 0x00, 0xf1, + 0x60, 0x40, 0xdb, 0x68, 0x00, 0xf5, 0x61, 0x40, 0xc3, 0xf3, 0x02, 0x23, + 0x10, 0xb5, 0xc3, 0xf1, 0x07, 0x04, 0x1a, 0x1d, 0x04, 0x2c, 0x28, 0xbf, + 0x04, 0x24, 0x06, 0x2a, 0x4f, 0xf0, 0xff, 0x32, 0x8c, 0xbf, 0x03, 0x3b, + 0x00, 0x23, 0xa2, 0x40, 0x21, 0xea, 0x02, 0x01, 0x01, 0xfa, 0x03, 0xf3, + 0x1b, 0x01, 0xdb, 0xb2, 0x80, 0xf8, 0x00, 0x33, 0x10, 0xbd, 0x00, 0xbf, + 0x00, 0xed, 0x00, 0xe0, 0x0d, 0x4b, 0x19, 0x88, 0x4f, 0xf6, 0xfd, 0x73, + 0x4a, 0x1e, 0x92, 0xb2, 0x9a, 0x42, 0x97, 0xbf, 0x0a, 0x4b, 0x4f, 0xf0, + 0x02, 0x63, 0x03, 0xea, 0x81, 0x23, 0x03, 0xf1, 0x00, 0x63, 0x83, 0x42, + 0x07, 0xd9, 0xb0, 0xf1, 0x00, 0x6f, 0x34, 0xbf, 0x4f, 0xf0, 0xff, 0x30, + 0x4f, 0xf4, 0x00, 0x30, 0x70, 0x47, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0x47, + 0x80, 0xe8, 0xf1, 0x1f, 0x00, 0xfc, 0x3f, 0x00, 0x06, 0x4b, 0x4f, 0xf6, + 0xfd, 0x71, 0x1a, 0x88, 0x53, 0x1e, 0x9b, 0xb2, 0x8b, 0x42, 0x9a, 0xbf, + 0x03, 0x48, 0x00, 0xea, 0x82, 0x20, 0x4f, 0xf4, 0x00, 0x10, 0x70, 0x47, + 0x80, 0xe8, 0xf1, 0x1f, 0x00, 0xfc, 0x3f, 0x00, 0x08, 0xb5, 0x08, 0x4b, 0x1b, 0x68, 0x23, 0xb1, 0x07, 0x4b, 0x1b, 0x68, 0x18, 0x65, 0x00, 0x20, - 0x08, 0xbd, 0x06, 0x4b, 0x1b, 0x78, 0x13, 0xb1, 0x05, 0x48, 0x19, 0xf0, - 0xc3, 0xff, 0x4f, 0xf0, 0xff, 0x30, 0xf5, 0xe7, 0x9c, 0x2e, 0x00, 0x24, - 0x44, 0x05, 0x00, 0x24, 0xd8, 0x0d, 0x00, 0x24, 0x3a, 0xd5, 0x01, 0x08, + 0x08, 0xbd, 0x06, 0x4b, 0x1b, 0x78, 0x13, 0xb1, 0x05, 0x48, 0x1a, 0xf0, + 0x71, 0xfd, 0x4f, 0xf0, 0xff, 0x30, 0xf5, 0xe7, 0xc4, 0x0b, 0x02, 0x24, + 0x44, 0x05, 0x00, 0x24, 0x08, 0x0b, 0x02, 0x24, 0x51, 0xd3, 0x01, 0x08, + 0x38, 0xb5, 0x0c, 0x46, 0x05, 0x46, 0x01, 0x21, 0x20, 0x46, 0x0e, 0xf0, + 0xb1, 0xfe, 0x28, 0xb9, 0x21, 0x46, 0x28, 0x46, 0xbd, 0xe8, 0x38, 0x40, + 0x0f, 0xf0, 0xdb, 0xbd, 0x38, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x05, 0x46, + 0x0e, 0x46, 0x09, 0xb9, 0x11, 0x48, 0x70, 0xbd, 0x00, 0x28, 0xfb, 0xd0, + 0x00, 0x24, 0x01, 0x60, 0xc0, 0xe9, 0x01, 0x44, 0x0b, 0x79, 0x05, 0x3b, + 0x01, 0x2b, 0xf3, 0xd8, 0x6c, 0x21, 0x01, 0x20, 0x1a, 0xf0, 0xc8, 0xfb, + 0x68, 0x60, 0x60, 0xb1, 0x6c, 0x22, 0x21, 0x46, 0x19, 0xf0, 0x1e, 0xf9, + 0xb1, 0x79, 0x02, 0x20, 0x1a, 0xf0, 0xbe, 0xfb, 0xa8, 0x60, 0x20, 0xb9, + 0x28, 0x46, 0x0e, 0xf0, 0x67, 0xfc, 0x03, 0x48, 0xdf, 0xe7, 0x20, 0x46, + 0xdd, 0xe7, 0x00, 0xbf, 0x00, 0xaf, 0xff, 0xff, 0x80, 0xae, 0xff, 0xff, + 0x38, 0xb5, 0x0d, 0x46, 0x06, 0x49, 0x04, 0x46, 0xff, 0xf7, 0xce, 0xff, + 0x30, 0xb9, 0x29, 0x46, 0x20, 0x46, 0x20, 0x22, 0xbd, 0xe8, 0x38, 0x40, + 0x0e, 0xf0, 0xf0, 0xbb, 0x38, 0xbd, 0x00, 0xbf, 0x50, 0xd9, 0x01, 0x08, 0x0b, 0x68, 0x83, 0x60, 0x05, 0x4b, 0xc2, 0x68, 0x13, 0x40, 0x4a, 0x68, 0x13, 0x43, 0x8a, 0x68, 0x13, 0x43, 0x43, 0xf4, 0x80, 0x53, 0xc3, 0x60, 0x00, 0x20, 0x70, 0x47, 0xc0, 0xe0, 0xfe, 0xff, 0x46, 0x4b, 0xda, 0x6c, @@ -978,1500 +762,1458 @@ const unsigned char mcuboot_bin[] = { 0x77, 0xee, 0x86, 0x7a, 0xee, 0xe7, 0x1b, 0x6b, 0xdf, 0xed, 0x0e, 0x5a, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0xe0, 0xe7, 0x10, 0xf0, - 0x00, 0x60, 0xce, 0xd0, 0x01, 0xa8, 0xfd, 0xf7, 0x1b, 0xff, 0x03, 0x98, + 0x00, 0x60, 0xce, 0xd0, 0x01, 0xa8, 0xfe, 0xf7, 0xc1, 0xfb, 0x03, 0x98, 0xc9, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, 0x00, 0x90, 0xd0, 0x03, 0x00, 0x24, 0x74, 0x4a, 0x20, 0xbc, 0xbe, 0x4b, 0x00, 0x24, 0x74, 0x4c, 0x03, 0x46, 0x53, 0xe8, 0x00, 0x0f, 0x01, 0x38, 0x43, 0xe8, 0x00, 0x02, - 0x00, 0x2a, 0xf8, 0xd1, 0x70, 0x47, 0x38, 0xb5, 0x0c, 0x46, 0x05, 0x46, - 0x01, 0x21, 0x20, 0x46, 0x0e, 0xf0, 0x0c, 0xff, 0x28, 0xb9, 0x21, 0x46, - 0x28, 0x46, 0xbd, 0xe8, 0x38, 0x40, 0x0f, 0xf0, 0x36, 0xbe, 0x38, 0xbd, - 0x70, 0xb5, 0x05, 0x46, 0x0e, 0x46, 0x09, 0xb9, 0x11, 0x48, 0x70, 0xbd, - 0x00, 0x28, 0xfb, 0xd0, 0x00, 0x24, 0x01, 0x60, 0xc0, 0xe9, 0x01, 0x44, - 0x0b, 0x79, 0x05, 0x3b, 0x01, 0x2b, 0xf3, 0xd8, 0x6c, 0x21, 0x01, 0x20, - 0x19, 0xf0, 0x6a, 0xfd, 0x68, 0x60, 0x60, 0xb1, 0x6c, 0x22, 0x21, 0x46, - 0x18, 0xf0, 0xc0, 0xfa, 0xb1, 0x79, 0x02, 0x20, 0x19, 0xf0, 0x60, 0xfd, - 0xa8, 0x60, 0x20, 0xb9, 0x28, 0x46, 0x0e, 0xf0, 0xc3, 0xfc, 0x03, 0x48, - 0xdf, 0xe7, 0x20, 0x46, 0xdd, 0xe7, 0x00, 0xbf, 0x00, 0xaf, 0xff, 0xff, - 0x80, 0xae, 0xff, 0xff, 0x38, 0xb5, 0x0d, 0x46, 0x06, 0x49, 0x04, 0x46, - 0xff, 0xf7, 0xce, 0xff, 0x30, 0xb9, 0x29, 0x46, 0x20, 0x46, 0x20, 0x22, - 0xbd, 0xe8, 0x38, 0x40, 0x0e, 0xf0, 0x4c, 0xbc, 0x38, 0xbd, 0x00, 0xbf, - 0x10, 0xdf, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf5, 0x55, 0x7d, - 0x17, 0x78, 0x0d, 0x46, 0x14, 0x46, 0x04, 0x93, 0x4f, 0xf4, 0x8e, 0x73, - 0x7b, 0x43, 0xc6, 0x5c, 0x00, 0xeb, 0x03, 0x0c, 0x00, 0x2e, 0x40, 0xf0, - 0x0d, 0x82, 0x4f, 0xf4, 0x8c, 0x72, 0x31, 0x46, 0x0c, 0xf1, 0x04, 0x00, - 0x18, 0xf0, 0x84, 0xfa, 0x32, 0x23, 0x22, 0x46, 0x29, 0x46, 0x11, 0xa8, - 0xfe, 0xf7, 0xa0, 0xff, 0x10, 0xb1, 0x4f, 0xf0, 0xff, 0x30, 0x06, 0xe1, - 0x11, 0x9b, 0x00, 0x2b, 0xf9, 0xd0, 0x12, 0x9b, 0x00, 0x2b, 0xf6, 0xd0, - 0x33, 0x46, 0x0d, 0xf1, 0x1a, 0x02, 0x07, 0xa9, 0x11, 0xa8, 0xff, 0xf7, - 0x4f, 0xf8, 0x00, 0x28, 0x40, 0xf0, 0xf7, 0x80, 0xbd, 0xf8, 0x1a, 0x30, - 0x71, 0x2b, 0xe8, 0xd1, 0x43, 0xaa, 0x07, 0x99, 0x20, 0x46, 0xfe, 0xf7, - 0x3f, 0xff, 0x00, 0x28, 0xe1, 0xd1, 0xa5, 0x4c, 0x30, 0x23, 0x2f, 0xaa, - 0x08, 0xa8, 0x08, 0x94, 0x8a, 0x34, 0x21, 0x46, 0x10, 0xf0, 0xaa, 0xff, - 0x00, 0x28, 0xd6, 0xd1, 0x08, 0x99, 0x2f, 0x9b, 0x19, 0x44, 0xa1, 0x42, - 0x40, 0xf0, 0xf7, 0x80, 0x37, 0xaa, 0x08, 0xa8, 0x37, 0x96, 0xfe, 0xf7, - 0xc8, 0xfd, 0x37, 0x9b, 0x03, 0x43, 0x40, 0xf0, 0xeb, 0x80, 0x8e, 0xab, - 0x60, 0xaa, 0x21, 0x46, 0x08, 0xa8, 0x10, 0xf0, 0xa7, 0xff, 0x00, 0x28, - 0x40, 0xf0, 0xdf, 0x80, 0x61, 0x9a, 0x07, 0x2a, 0x40, 0xf0, 0xd8, 0x80, - 0x92, 0x49, 0x62, 0x98, 0x19, 0xf0, 0x8e, 0xfd, 0x00, 0x28, 0x40, 0xf0, - 0xd1, 0x80, 0x8f, 0x9a, 0x08, 0x2a, 0x40, 0xf0, 0xca, 0x80, 0x8e, 0x49, - 0x90, 0x98, 0x19, 0xf0, 0x83, 0xfd, 0x00, 0x28, 0x40, 0xf0, 0xc3, 0x80, - 0x04, 0x23, 0x2f, 0xaa, 0x21, 0x46, 0x08, 0xa8, 0x10, 0xf0, 0x74, 0xff, - 0x00, 0x28, 0x40, 0xf0, 0xb7, 0x80, 0x30, 0x23, 0x2f, 0xaa, 0x21, 0x46, - 0x08, 0xa8, 0x10, 0xf0, 0x6b, 0xff, 0x00, 0x28, 0x40, 0xf0, 0xab, 0x80, - 0x37, 0x90, 0x37, 0xaa, 0x21, 0x46, 0x08, 0xa8, 0xfe, 0xf7, 0x8d, 0xfd, - 0x00, 0x28, 0x40, 0xf0, 0x9f, 0x80, 0x37, 0x9b, 0x01, 0x2b, 0x40, 0xf0, - 0x9b, 0x80, 0x04, 0x23, 0x2f, 0xaa, 0x21, 0x46, 0x08, 0xa8, 0x10, 0xf0, - 0x55, 0xff, 0x00, 0x28, 0x40, 0xf0, 0x8f, 0x80, 0xdd, 0xf8, 0xbc, 0x80, - 0xb8, 0xf1, 0x20, 0x0f, 0x40, 0xf0, 0x83, 0x80, 0x08, 0x9b, 0x1f, 0xac, - 0x03, 0xf1, 0x20, 0x05, 0x18, 0x68, 0x08, 0x33, 0x53, 0xf8, 0x04, 0x1c, - 0x22, 0x46, 0xab, 0x42, 0x03, 0xc2, 0x14, 0x46, 0xf6, 0xd1, 0x00, 0x23, - 0x01, 0x22, 0x60, 0xa8, 0xcd, 0xe9, 0x88, 0x23, 0xcd, 0xe9, 0x8a, 0x32, - 0xcd, 0xe9, 0x8c, 0x33, 0x0e, 0xf0, 0xca, 0xfc, 0x7f, 0xa8, 0x0e, 0xf0, - 0xbb, 0xfc, 0x60, 0xa8, 0x0e, 0xf0, 0xa1, 0xff, 0x03, 0x23, 0x60, 0xa8, - 0x8d, 0xf8, 0x80, 0x31, 0x0e, 0xf0, 0xc6, 0xfd, 0x28, 0xb1, 0x60, 0xa8, - 0x0e, 0xf0, 0x97, 0xff, 0x7f, 0xa8, 0x0e, 0xf0, 0x82, 0xff, 0x41, 0x23, - 0x43, 0xaa, 0x7f, 0xa9, 0x60, 0xa8, 0x0f, 0xf0, 0x2b, 0xf8, 0x00, 0x28, - 0x70, 0xd0, 0x60, 0xa8, 0x4f, 0xf0, 0xff, 0x34, 0x0e, 0xf0, 0x87, 0xff, - 0x7f, 0xa8, 0x0e, 0xf0, 0x72, 0xff, 0x8b, 0xa8, 0x0e, 0xf0, 0x5c, 0xff, - 0x88, 0xa8, 0x0e, 0xf0, 0x59, 0xff, 0x60, 0xa8, 0x0e, 0xf0, 0x7b, 0xff, - 0x7f, 0xa8, 0x0e, 0xf0, 0x66, 0xff, 0x00, 0x2c, 0x7f, 0xf4, 0x31, 0xaf, - 0x0d, 0xf1, 0x9c, 0x09, 0x21, 0x46, 0x20, 0x22, 0x0f, 0x94, 0x48, 0x46, - 0xcd, 0xe9, 0x0d, 0x44, 0x18, 0xf0, 0xa4, 0xf9, 0x49, 0x46, 0x0d, 0xa8, - 0xff, 0xf7, 0xf2, 0xfe, 0x28, 0xbb, 0x20, 0x22, 0x17, 0xa9, 0x0d, 0xa8, - 0x0e, 0xf0, 0x36, 0xfb, 0xf8, 0xb9, 0x2f, 0xa9, 0x0d, 0xa8, 0x0e, 0xf0, - 0x07, 0xfb, 0xd0, 0xb9, 0x01, 0x23, 0x30, 0x25, 0xa2, 0x46, 0xdf, 0xf8, - 0x08, 0xb1, 0x8d, 0xf8, 0x28, 0x30, 0x2f, 0xa9, 0x0d, 0xa8, 0x05, 0x93, - 0xcd, 0xf8, 0x3c, 0xa0, 0xcd, 0xe9, 0x0d, 0xaa, 0xff, 0xf7, 0xd6, 0xfe, - 0x48, 0xb9, 0x05, 0x9b, 0x00, 0x2b, 0x62, 0xd0, 0x10, 0x22, 0x59, 0x46, - 0x0d, 0xa8, 0x0e, 0xf0, 0x17, 0xfb, 0x00, 0x28, 0x6e, 0xd0, 0x0d, 0xa8, - 0x0e, 0xf0, 0x82, 0xfb, 0xf7, 0xe6, 0x6f, 0xf0, 0x0b, 0x00, 0x0d, 0xf5, - 0x55, 0x7d, 0xbd, 0xe8, 0xf0, 0x8f, 0x6f, 0xf0, 0x0a, 0x00, 0xf8, 0xe7, - 0x6f, 0xf0, 0x09, 0x00, 0xf5, 0xe7, 0x6f, 0xf0, 0x08, 0x00, 0xf2, 0xe7, - 0x6f, 0xf0, 0x07, 0x00, 0xef, 0xe7, 0x6f, 0xf0, 0x06, 0x00, 0xec, 0xe7, - 0x6f, 0xf0, 0x05, 0x00, 0xe9, 0xe7, 0x6f, 0xf0, 0x04, 0x00, 0xe6, 0xe7, - 0x6f, 0xf0, 0x02, 0x00, 0xe3, 0xe7, 0x6f, 0xf0, 0x01, 0x00, 0xe0, 0xe7, - 0x7f, 0xa9, 0x60, 0xa8, 0x0f, 0xf0, 0xd8, 0xff, 0x00, 0x28, 0x88, 0xd1, - 0x20, 0x22, 0x1f, 0xa9, 0x8b, 0xa8, 0x0e, 0xf0, 0x77, 0xff, 0x8e, 0xa8, - 0x0e, 0xf0, 0x24, 0xfc, 0x8b, 0xa9, 0x60, 0xa8, 0x0e, 0xf0, 0xce, 0xfd, - 0x04, 0x46, 0xb8, 0xb9, 0x7f, 0xa9, 0x60, 0xa8, 0x0f, 0xf0, 0xc4, 0xff, - 0x04, 0x46, 0x88, 0xb9, 0x7f, 0xab, 0x8b, 0xaa, 0x8e, 0xa9, 0x60, 0xa8, - 0xfe, 0xf7, 0x88, 0xfa, 0x04, 0x46, 0x48, 0xb9, 0x01, 0x46, 0x94, 0xa8, - 0x0e, 0xf0, 0x83, 0xfc, 0x68, 0xb1, 0x8e, 0xa9, 0x88, 0xa8, 0x0f, 0xf0, - 0x33, 0xf8, 0x04, 0x46, 0x8e, 0xa8, 0x0e, 0xf0, 0xda, 0xfe, 0x20, 0x22, - 0x17, 0xa9, 0x88, 0xa8, 0x0e, 0xf0, 0x8a, 0xfc, 0x61, 0xe7, 0x08, 0x4c, - 0xf4, 0xe7, 0x20, 0x22, 0x8e, 0xa9, 0x0d, 0xa8, 0x0e, 0xf0, 0xb4, 0xfa, - 0x00, 0x28, 0x95, 0xd0, 0x9b, 0xe7, 0x00, 0xbf, 0x00, 0x04, 0x00, 0x08, - 0xa6, 0xde, 0x01, 0x08, 0xb6, 0xde, 0x01, 0x08, 0x80, 0xb0, 0xff, 0xff, - 0x4e, 0xd5, 0x01, 0x08, 0x01, 0x22, 0x0a, 0xa9, 0x0d, 0xa8, 0x0e, 0xf0, - 0xa1, 0xfa, 0x00, 0x28, 0x89, 0xd1, 0x8e, 0xa9, 0x0d, 0xa8, 0x0e, 0xf0, - 0x71, 0xfa, 0x03, 0x46, 0x00, 0x28, 0x82, 0xd1, 0x37, 0xaa, 0x20, 0x2d, - 0x02, 0xeb, 0x04, 0x00, 0x28, 0xd9, 0x0d, 0xf5, 0x0e, 0x7c, 0x03, 0x46, - 0x0d, 0xf5, 0x16, 0x7e, 0x62, 0x46, 0x08, 0x33, 0x03, 0xca, 0x72, 0x45, - 0x43, 0xf8, 0x08, 0x0c, 0x43, 0xf8, 0x04, 0x1c, 0x94, 0x46, 0xf5, 0xd1, - 0x20, 0x3d, 0xad, 0xb2, 0x9d, 0xf8, 0x28, 0x30, 0x20, 0x34, 0x01, 0x33, - 0xa4, 0xb2, 0x8d, 0xf8, 0x28, 0x30, 0x00, 0x23, 0x00, 0x2d, 0x7f, 0xf4, - 0x4e, 0xaf, 0x0d, 0xa8, 0x0e, 0xf0, 0xe4, 0xfa, 0x3b, 0xa9, 0x0a, 0xa8, - 0x0c, 0x95, 0xcd, 0xe9, 0x0a, 0x55, 0xff, 0xf7, 0x23, 0xfe, 0x48, 0xb1, - 0x0a, 0xa8, 0x55, 0xe7, 0x2a, 0x46, 0x8e, 0xa9, 0x05, 0x93, 0x18, 0xf0, - 0xbb, 0xf8, 0x05, 0x9b, 0x1d, 0x46, 0xdf, 0xe7, 0x0d, 0xf2, 0x6d, 0x14, - 0x10, 0x22, 0x0a, 0xa8, 0x21, 0x46, 0x0e, 0xf0, 0x5b, 0xfa, 0x00, 0x28, - 0xec, 0xd1, 0x2f, 0xa9, 0x0a, 0xa8, 0x0e, 0xf0, 0x2b, 0xfa, 0x00, 0x28, - 0xe6, 0xd1, 0x2f, 0xab, 0x53, 0xa9, 0x13, 0xf8, 0x01, 0x2b, 0xb8, 0xf1, - 0x01, 0x08, 0x11, 0xf8, 0x01, 0x0f, 0x82, 0xea, 0x00, 0x02, 0x46, 0xea, - 0x02, 0x06, 0xf4, 0xd1, 0x00, 0x2e, 0xd7, 0xd1, 0x0a, 0xa8, 0x0e, 0xf0, - 0xb1, 0xfa, 0x31, 0x46, 0x4f, 0xf4, 0x8c, 0x72, 0x8e, 0xa8, 0x18, 0xf0, - 0x9f, 0xf8, 0x37, 0xa9, 0x8e, 0xa8, 0xfe, 0xf7, 0x4d, 0xfc, 0x00, 0x28, - 0x7f, 0xf4, 0x1b, 0xae, 0x10, 0x25, 0x31, 0x46, 0x0d, 0xa8, 0x2a, 0x46, - 0x18, 0xf0, 0x92, 0xf8, 0x04, 0x9b, 0x09, 0xaa, 0x29, 0x46, 0x05, 0xfb, - 0x07, 0x37, 0x8e, 0xa8, 0x0d, 0xab, 0xcd, 0xf8, 0x00, 0x90, 0x0c, 0x37, - 0x09, 0x96, 0xcd, 0xe9, 0x01, 0x47, 0x10, 0xf0, 0x49, 0xfe, 0x00, 0x38, - 0x18, 0xbf, 0x01, 0x20, 0x40, 0x42, 0x0a, 0xe7, 0x01, 0x20, 0x08, 0xe7, - 0x70, 0xb5, 0x05, 0x6b, 0xe0, 0xb0, 0x04, 0x46, 0xb5, 0xf5, 0xc0, 0x7f, - 0x1d, 0xd8, 0x4f, 0xf4, 0xc0, 0x72, 0x00, 0x21, 0x68, 0x46, 0x18, 0xf0, - 0x6f, 0xf8, 0xe3, 0x6b, 0x2a, 0x46, 0x69, 0x46, 0x20, 0x6c, 0x98, 0x47, - 0xa0, 0xb9, 0x26, 0x6b, 0x69, 0x46, 0x20, 0x46, 0x32, 0x46, 0x0e, 0xf0, - 0x92, 0xfa, 0x05, 0x46, 0x08, 0xb9, 0x01, 0x23, 0xe3, 0x62, 0x1e, 0xb1, - 0x31, 0x46, 0x68, 0x46, 0x0d, 0xf0, 0xec, 0xfc, 0x28, 0x46, 0x60, 0xb0, - 0x70, 0xbd, 0x6f, 0xf0, 0x04, 0x05, 0xf9, 0xe7, 0x6f, 0xf0, 0x08, 0x05, - 0xf6, 0xe7, 0x00, 0x00, 0x07, 0x4b, 0x5a, 0x68, 0x90, 0x23, 0x53, 0x43, - 0x06, 0x4a, 0xd3, 0x58, 0xda, 0x69, 0x12, 0x07, 0x01, 0xd5, 0x08, 0x22, - 0x1a, 0x62, 0xd8, 0x69, 0xc0, 0xf3, 0x40, 0x10, 0x70, 0x47, 0x00, 0xbf, - 0xa0, 0x6a, 0x00, 0x24, 0x80, 0x6c, 0x00, 0x24, 0x70, 0xb5, 0x00, 0x23, + 0x00, 0x2a, 0xf8, 0xd1, 0x70, 0x47, 0x70, 0xb5, 0x05, 0x6b, 0xe0, 0xb0, + 0x04, 0x46, 0xb5, 0xf5, 0xc0, 0x7f, 0x1d, 0xd8, 0x4f, 0xf4, 0xc0, 0x72, + 0x00, 0x21, 0x68, 0x46, 0x19, 0xf0, 0x3c, 0xf8, 0xe3, 0x6b, 0x2a, 0x46, + 0x69, 0x46, 0x20, 0x6c, 0x98, 0x47, 0xa0, 0xb9, 0x26, 0x6b, 0x69, 0x46, + 0x20, 0x46, 0x32, 0x46, 0x0e, 0xf0, 0xa5, 0xfb, 0x05, 0x46, 0x08, 0xb9, + 0x01, 0x23, 0xe3, 0x62, 0x1e, 0xb1, 0x31, 0x46, 0x68, 0x46, 0x0d, 0xf0, + 0xff, 0xfd, 0x28, 0x46, 0x60, 0xb0, 0x70, 0xbd, 0x6f, 0xf0, 0x04, 0x05, + 0xf9, 0xe7, 0x6f, 0xf0, 0x08, 0x05, 0xf6, 0xe7, 0x07, 0x4b, 0x5a, 0x68, + 0x90, 0x23, 0x53, 0x43, 0x06, 0x4a, 0xd3, 0x58, 0xda, 0x69, 0x12, 0x07, + 0x01, 0xd5, 0x08, 0x22, 0x1a, 0x62, 0xd8, 0x69, 0xc0, 0xf3, 0x40, 0x10, + 0x70, 0x47, 0x00, 0xbf, 0xc8, 0x0b, 0x02, 0x24, 0xa8, 0x0d, 0x02, 0x24, + 0x10, 0xb5, 0x86, 0xb0, 0x04, 0x46, 0x68, 0x46, 0x03, 0x91, 0x80, 0xe8, + 0x0c, 0x00, 0x06, 0xa8, 0x00, 0xe9, 0x0c, 0x00, 0x10, 0xe9, 0x07, 0x00, + 0x03, 0x4b, 0x84, 0xe8, 0x07, 0x00, 0x20, 0x46, 0xe3, 0x60, 0x06, 0xb0, + 0x10, 0xbd, 0x00, 0xbf, 0x2f, 0x83, 0x00, 0x08, 0x70, 0xb5, 0x00, 0x23, 0x85, 0x68, 0x04, 0x46, 0x06, 0x68, 0x03, 0x61, 0x9d, 0xb9, 0x33, 0x78, 0x02, 0x2b, 0x01, 0xd9, 0xb3, 0x6a, 0x6b, 0xb9, 0x33, 0x89, 0x0b, 0xb9, 0x02, 0x20, 0x70, 0xbd, 0xb3, 0x6a, 0xa3, 0x61, 0xa3, 0x69, 0x65, 0x61, 0x00, 0x2b, 0xf7, 0xd0, 0x73, 0x6b, 0x00, 0x20, 0xe3, 0x61, 0xf4, 0xe7, 0x1d, 0x46, 0x73, 0x89, 0xb2, 0x89, 0x5a, 0x43, 0x0c, 0xd1, 0x29, 0x46, - 0x20, 0x68, 0x07, 0xf0, 0x4b, 0xfa, 0x43, 0x1c, 0x05, 0x46, 0x0b, 0xd0, + 0x20, 0x68, 0x07, 0xf0, 0x88, 0xfe, 0x43, 0x1c, 0x05, 0x46, 0x0b, 0xd0, 0x01, 0x28, 0xe5, 0xd9, 0xb3, 0x69, 0x98, 0x42, 0xf3, 0xd3, 0xe1, 0xe7, - 0x29, 0x46, 0x30, 0x46, 0x07, 0xf0, 0x1b, 0xfa, 0xa0, 0x61, 0xdf, 0xe7, + 0x29, 0x46, 0x30, 0x46, 0x07, 0xf0, 0x58, 0xfe, 0xa0, 0x61, 0xdf, 0xe7, 0x01, 0x20, 0xda, 0xe7, 0x38, 0xb5, 0x04, 0x46, 0x05, 0x68, 0x04, 0x20, - 0xa1, 0x69, 0xf9, 0xb1, 0x28, 0x46, 0x07, 0xf0, 0x19, 0xfa, 0xc0, 0xb9, + 0xa1, 0x69, 0xf9, 0xb1, 0x28, 0x46, 0x07, 0xf0, 0x56, 0xfe, 0xc0, 0xb9, 0xe3, 0x69, 0x1a, 0x78, 0xda, 0xb1, 0xdb, 0x7a, 0xe5, 0x2a, 0x03, 0xf0, 0x3f, 0x03, 0xa3, 0x71, 0x09, 0xd0, 0x2e, 0x2a, 0x07, 0xd0, 0x0f, 0x2b, 0x05, 0xd0, 0x23, 0xf0, 0x20, 0x03, 0x08, 0x2b, 0x01, 0xd0, 0x00, 0x20, - 0x38, 0xbd, 0x00, 0x21, 0x20, 0x46, 0x08, 0xf0, 0x2b, 0xf8, 0x00, 0x28, + 0x38, 0xbd, 0x00, 0x21, 0x20, 0x46, 0x08, 0xf0, 0x67, 0xfc, 0x00, 0x28, 0xe0, 0xd0, 0x00, 0x23, 0xa3, 0x61, 0xf5, 0xe7, 0x00, 0x28, 0xf2, 0xd0, 0xf9, 0xe7, 0x04, 0x20, 0xf7, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, 0x87, 0xb0, 0x06, 0x46, 0x8b, 0x46, 0x17, 0x46, 0x4f, 0xf0, 0x01, 0x09, 0x0d, 0xf1, 0x17, 0x0a, 0xdd, 0xe9, 0x10, 0x45, 0x25, 0x44, 0xa3, 0xeb, 0x04, 0x08, 0xac, 0x42, 0x01, 0xd1, 0x01, 0x20, 0x11, 0xe0, 0x08, 0xeb, 0x04, 0x03, 0x00, 0x22, 0x59, 0x46, 0x30, 0x46, 0x00, 0x93, 0x3b, 0x46, 0xcd, 0xe9, - 0x01, 0xa9, 0x06, 0xf0, 0x86, 0xf8, 0x28, 0xb9, 0x14, 0xf8, 0x01, 0x3b, + 0x01, 0xa9, 0x06, 0xf0, 0x46, 0xfd, 0x28, 0xb9, 0x14, 0xf8, 0x01, 0x3b, 0x9d, 0xf8, 0x17, 0x20, 0x9a, 0x42, 0xe9, 0xd0, 0x07, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x2d, 0xe9, 0xf0, 0x4f, 0x89, 0xb0, 0x06, 0x46, 0x88, 0x46, 0xdd, 0xf8, 0x4c, 0x90, 0x05, 0x92, 0x4b, 0xb9, 0x4f, 0xf0, 0xff, 0x32, 0xc9, 0xf8, 0x00, 0x20, 0x14, 0x9a, 0x00, 0x20, 0x13, 0x60, 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x3b, 0x07, 0xa9, 0x00, 0x68, 0x4f, 0xf0, - 0x04, 0x0a, 0x07, 0x93, 0x06, 0xf0, 0x44, 0xf8, 0x12, 0xa9, 0x05, 0x46, - 0x30, 0x68, 0x0d, 0xf1, 0x14, 0x0b, 0x06, 0xf0, 0x3d, 0xf8, 0x07, 0x46, + 0x04, 0x0a, 0x07, 0x93, 0x06, 0xf0, 0x04, 0xfd, 0x12, 0xa9, 0x05, 0x46, + 0x30, 0x68, 0x0d, 0xf1, 0x14, 0x0b, 0x06, 0xf0, 0xfd, 0xfc, 0x07, 0x46, 0xaf, 0x42, 0x05, 0x9b, 0x03, 0xd3, 0xc9, 0xf8, 0x00, 0x30, 0x12, 0x9b, 0xe2, 0xe7, 0xec, 0x1b, 0x95, 0xfa, 0xa5, 0xf2, 0x41, 0x46, 0x30, 0x46, 0xb4, 0xfa, 0x84, 0xf4, 0xb2, 0xfa, 0x82, 0xf2, 0xc4, 0xf1, 0x1f, 0x04, 0x94, 0x42, 0x28, 0xbf, 0x14, 0x46, 0xa2, 0x00, 0xcd, 0xe9, 0x01, 0xba, - 0x00, 0x92, 0x00, 0x22, 0x06, 0xf0, 0x3d, 0xf8, 0x00, 0x28, 0xce, 0xd1, - 0x01, 0x23, 0x03, 0xfa, 0x04, 0xf4, 0x2d, 0x1b, 0xdc, 0xe7, 0x00, 0x00, - 0x13, 0xb5, 0x06, 0x4b, 0x00, 0x78, 0x53, 0xf8, 0x20, 0x00, 0x00, 0x23, - 0x04, 0x68, 0xcd, 0xe9, 0x00, 0x23, 0x0a, 0x46, 0xe4, 0x69, 0xa0, 0x47, - 0x02, 0xb0, 0x10, 0xbd, 0x04, 0x00, 0x00, 0x24, 0x2d, 0xe9, 0xf8, 0x43, - 0x03, 0x78, 0x07, 0x46, 0x0b, 0xb1, 0x01, 0x2b, 0x20, 0xd1, 0x11, 0x4a, - 0x2c, 0x21, 0x4f, 0xf4, 0x34, 0x66, 0x4f, 0xf0, 0x00, 0x08, 0x01, 0xfb, - 0x03, 0x23, 0x92, 0x6e, 0x9d, 0x6a, 0x56, 0x43, 0x1c, 0x46, 0x01, 0x3d, - 0xe0, 0x36, 0x63, 0x6a, 0x38, 0x46, 0x03, 0xeb, 0xc5, 0x02, 0x53, 0xf8, - 0x35, 0x10, 0x1b, 0x68, 0x01, 0x3d, 0xd2, 0xf8, 0x04, 0x90, 0xc9, 0x1a, - 0xc8, 0x44, 0x4a, 0x46, 0xff, 0xf7, 0xcc, 0xff, 0xb0, 0x45, 0xee, 0xd3, - 0xbd, 0xe8, 0xf8, 0x83, 0x01, 0x20, 0xfb, 0xe7, 0x14, 0x07, 0x00, 0x24, - 0x02, 0x78, 0x07, 0x49, 0x51, 0xf8, 0x22, 0x30, 0x4b, 0xb1, 0x01, 0x3b, - 0x41, 0xf8, 0x22, 0x30, 0x2b, 0xb9, 0x04, 0x4b, 0x53, 0xf8, 0x22, 0x00, - 0x03, 0x68, 0xdb, 0x68, 0x18, 0x47, 0x70, 0x47, 0xf4, 0x05, 0x00, 0x24, - 0x04, 0x00, 0x00, 0x24, 0x22, 0x4b, 0x00, 0xeb, 0x40, 0x02, 0x01, 0x28, - 0x03, 0xeb, 0x82, 0x02, 0x2d, 0xe9, 0xf0, 0x41, 0x04, 0x46, 0x0a, 0x60, - 0x25, 0xd0, 0x02, 0x28, 0x26, 0xd0, 0x48, 0xbb, 0x1c, 0x4a, 0x5a, 0x60, - 0x1c, 0x4f, 0x00, 0x25, 0x57, 0xf8, 0x24, 0x20, 0x01, 0x32, 0x47, 0xf8, - 0x24, 0x20, 0x0c, 0x22, 0x62, 0x43, 0x03, 0xeb, 0x02, 0x08, 0x9c, 0x54, - 0x17, 0x4b, 0x88, 0xf8, 0x01, 0x50, 0x53, 0xf8, 0x24, 0x60, 0x33, 0x68, - 0x30, 0x46, 0x9b, 0x6b, 0x98, 0x47, 0x57, 0xf8, 0x24, 0x30, 0xc8, 0xf8, - 0x08, 0x00, 0x01, 0x2b, 0x17, 0xd1, 0x33, 0x68, 0x30, 0x46, 0x9b, 0x68, - 0xbd, 0xe8, 0xf0, 0x41, 0x18, 0x47, 0x00, 0x22, 0x1a, 0x61, 0xdb, 0xe7, - 0x4f, 0xf0, 0x10, 0x62, 0xda, 0x61, 0xd7, 0xe7, 0x0a, 0x4b, 0x1b, 0x78, - 0x1b, 0xb1, 0x01, 0x46, 0x09, 0x48, 0x0b, 0xf0, 0xed, 0xfd, 0x4f, 0xf0, - 0xff, 0x30, 0xbd, 0xe8, 0xf0, 0x81, 0x28, 0x46, 0xfb, 0xe7, 0x00, 0xbf, - 0x00, 0x06, 0x00, 0x24, 0x00, 0x00, 0x02, 0x08, 0xf4, 0x05, 0x00, 0x24, - 0x04, 0x00, 0x00, 0x24, 0xd8, 0x0d, 0x00, 0x24, 0x5f, 0xd5, 0x01, 0x08, - 0x73, 0xb5, 0x04, 0x46, 0x01, 0xa9, 0xc0, 0xb2, 0xff, 0xf7, 0xa8, 0xff, - 0x05, 0x46, 0x20, 0xb1, 0x4f, 0xf0, 0xff, 0x35, 0x28, 0x46, 0x02, 0xb0, - 0x70, 0xbd, 0x01, 0x98, 0xfd, 0xf7, 0xb6, 0xf8, 0x06, 0x46, 0x01, 0x98, - 0xff, 0xf7, 0x86, 0xff, 0x2c, 0x23, 0x06, 0x48, 0x03, 0xfb, 0x04, 0x04, - 0x63, 0x1e, 0x03, 0x34, 0xa3, 0x42, 0xed, 0xd0, 0x13, 0xf8, 0x01, 0x2f, - 0xb2, 0x42, 0xf9, 0xd0, 0xe6, 0xe7, 0x00, 0xbf, 0x14, 0x07, 0x00, 0x24, - 0x2d, 0xe9, 0xf7, 0x43, 0x04, 0x46, 0x0f, 0x46, 0xc0, 0xb2, 0x01, 0xa9, - 0xff, 0xf7, 0x82, 0xff, 0x00, 0x28, 0x63, 0xd1, 0x20, 0x46, 0xff, 0xf7, - 0xcf, 0xff, 0x30, 0xb1, 0x31, 0x4e, 0x2c, 0x25, 0x05, 0xfb, 0x04, 0x65, - 0x6b, 0x69, 0xda, 0x06, 0x0d, 0xd5, 0x0c, 0xb9, 0x01, 0x25, 0x03, 0xe0, - 0x25, 0x46, 0x01, 0x98, 0xff, 0xf7, 0x2e, 0xff, 0x01, 0x98, 0xff, 0xf7, - 0x57, 0xff, 0x28, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0xdd, 0xf8, - 0x04, 0x80, 0x98, 0xf8, 0x00, 0x90, 0xb9, 0xf1, 0x01, 0x0f, 0x2a, 0xd0, - 0x24, 0x48, 0x29, 0x46, 0x42, 0x46, 0xfe, 0xf7, 0x9f, 0xfc, 0x05, 0x46, - 0x2c, 0x23, 0x01, 0x98, 0x63, 0x43, 0xf1, 0x58, 0xf2, 0x18, 0x20, 0x4b, - 0x99, 0x42, 0x0a, 0xd1, 0x13, 0x69, 0x92, 0x68, 0xd1, 0x43, 0x8b, 0x42, - 0x05, 0xd8, 0x13, 0x44, 0x82, 0x68, 0x93, 0x42, 0x01, 0xd2, 0x00, 0x2d, - 0xd8, 0xd0, 0x1c, 0xb1, 0x82, 0x68, 0x00, 0x21, 0xff, 0xf7, 0xf2, 0xfe, - 0x17, 0x4b, 0x1b, 0x78, 0x00, 0x2b, 0xc9, 0xd0, 0x16, 0x4b, 0x17, 0x49, - 0x17, 0x48, 0x00, 0x2c, 0x18, 0xbf, 0x19, 0x46, 0x0b, 0xf0, 0x62, 0xfd, - 0xc0, 0xe7, 0x13, 0xf0, 0x0c, 0x0f, 0xd1, 0xd0, 0x3b, 0x46, 0x42, 0x46, - 0x29, 0x46, 0x06, 0xf1, 0x6c, 0x00, 0xff, 0xf7, 0xad, 0xfb, 0x00, 0x28, - 0x02, 0xda, 0x4f, 0xf0, 0xff, 0x35, 0xcb, 0xe7, 0xc4, 0xd1, 0x3a, 0x46, - 0x49, 0x46, 0x06, 0xf1, 0x6c, 0x00, 0xfe, 0xf7, 0xc9, 0xfa, 0x00, 0x28, - 0xbc, 0xd0, 0xf2, 0xe7, 0x4f, 0xf0, 0xff, 0x35, 0xad, 0xe7, 0x00, 0xbf, - 0x14, 0x07, 0x00, 0x24, 0x80, 0x07, 0x00, 0x24, 0x3d, 0xb8, 0xf3, 0x96, - 0xd8, 0x0d, 0x00, 0x24, 0x89, 0xd5, 0x01, 0x08, 0x81, 0xd5, 0x01, 0x08, - 0x93, 0xd5, 0x01, 0x08, 0x13, 0xb5, 0x00, 0x20, 0x01, 0xa9, 0xff, 0xf7, - 0x05, 0xff, 0x01, 0x46, 0x10, 0xbb, 0x20, 0x23, 0x13, 0x4a, 0x01, 0x98, - 0xfe, 0xf7, 0xfa, 0xfa, 0x04, 0x1e, 0x18, 0xbf, 0x01, 0x24, 0x01, 0x98, - 0xff, 0xf7, 0xe4, 0xfe, 0xd4, 0xb9, 0x01, 0xa9, 0x01, 0x20, 0xff, 0xf7, - 0xf3, 0xfe, 0x98, 0xb9, 0x21, 0x46, 0x20, 0x23, 0x0b, 0x4a, 0x01, 0x98, - 0xfe, 0xf7, 0xe8, 0xfa, 0x04, 0x1e, 0x18, 0xbf, 0x01, 0x24, 0x01, 0x98, - 0xff, 0xf7, 0xd2, 0xfe, 0x0c, 0xb1, 0x84, 0xf0, 0x01, 0x04, 0x20, 0x46, + 0x00, 0x92, 0x00, 0x22, 0x06, 0xf0, 0xfd, 0xfc, 0x00, 0x28, 0xce, 0xd1, + 0x01, 0x23, 0x03, 0xfa, 0x04, 0xf4, 0x2d, 0x1b, 0xdc, 0xe7, 0x30, 0xb5, + 0x14, 0x46, 0x89, 0xb0, 0x0c, 0x25, 0x54, 0xf8, 0x04, 0x3b, 0x03, 0x95, + 0x00, 0x93, 0x2b, 0x44, 0x04, 0x93, 0xd3, 0x79, 0x00, 0x22, 0x05, 0x93, + 0xcd, 0xe9, 0x06, 0x23, 0x01, 0x23, 0x6a, 0x46, 0xcd, 0xe9, 0x01, 0x54, + 0x07, 0xf0, 0x5b, 0xfc, 0x09, 0xb0, 0x30, 0xbd, 0x2d, 0xe9, 0xf0, 0x43, + 0x07, 0x46, 0x95, 0xb0, 0x0e, 0x46, 0x90, 0x46, 0x99, 0x46, 0x01, 0xf1, + 0x24, 0x05, 0x40, 0x46, 0x34, 0x6a, 0x06, 0xf0, 0x42, 0xfe, 0x3b, 0x68, + 0x20, 0x44, 0xdb, 0x69, 0x98, 0x42, 0x18, 0xd8, 0x04, 0x3c, 0x43, 0x46, + 0x00, 0x22, 0x31, 0x46, 0x43, 0xf8, 0x04, 0x4b, 0x09, 0x94, 0xcd, 0xe9, + 0x0a, 0x23, 0x0c, 0x23, 0xcd, 0xe9, 0x0c, 0x34, 0x98, 0xf8, 0x07, 0x30, + 0xcd, 0xe9, 0x0e, 0x29, 0x10, 0x93, 0x09, 0xaa, 0x02, 0x23, 0x38, 0x46, + 0x07, 0xf0, 0x31, 0xfc, 0x15, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x00, 0x2c, + 0x37, 0xdb, 0x35, 0x46, 0x09, 0xac, 0x0f, 0xcd, 0x0f, 0xc4, 0x0f, 0xcd, + 0x0f, 0xc4, 0x95, 0xe8, 0x07, 0x00, 0x84, 0xe8, 0x07, 0x00, 0x31, 0x46, + 0x38, 0x46, 0x07, 0xf0, 0x97, 0xf9, 0x00, 0x28, 0xea, 0xd1, 0x12, 0x9b, + 0x42, 0x46, 0x31, 0x46, 0x73, 0x62, 0x13, 0x9b, 0xb3, 0x62, 0x33, 0x6a, + 0x04, 0x3b, 0x42, 0xf8, 0x04, 0x3b, 0x03, 0x92, 0x0c, 0x22, 0xcd, 0xe9, + 0x01, 0x30, 0xcd, 0xe9, 0x04, 0x23, 0x98, 0xf8, 0x07, 0x30, 0x01, 0xaa, + 0xcd, 0xe9, 0x06, 0x09, 0x08, 0x93, 0x38, 0x46, 0x02, 0x23, 0x07, 0xf0, + 0x02, 0xfc, 0x00, 0x28, 0xce, 0xd1, 0x11, 0x9b, 0x02, 0x46, 0x09, 0xa9, + 0x43, 0xf0, 0x00, 0x43, 0x11, 0x93, 0x73, 0x68, 0x12, 0x93, 0xb3, 0x68, + 0x13, 0x93, 0x03, 0x46, 0xbf, 0xe7, 0x2a, 0x46, 0x31, 0x46, 0x38, 0x46, + 0x06, 0xf0, 0x54, 0xfd, 0x00, 0x28, 0x9c, 0xd0, 0xba, 0xe7, 0x00, 0x00, + 0x18, 0x4b, 0x2d, 0xe9, 0xf7, 0x43, 0x53, 0xf8, 0x20, 0x60, 0x00, 0x23, + 0x0c, 0x46, 0x17, 0x46, 0x1d, 0x46, 0x98, 0x46, 0x0b, 0x60, 0x33, 0x68, + 0x30, 0x46, 0xd3, 0xf8, 0x3c, 0x90, 0x5b, 0x6a, 0x98, 0x47, 0x2a, 0x46, + 0x43, 0x46, 0xcd, 0xe9, 0x00, 0x01, 0x30, 0x46, 0xc8, 0x47, 0xa8, 0xb1, + 0x23, 0x68, 0x2a, 0x46, 0x30, 0x46, 0x47, 0xf8, 0x33, 0x50, 0x33, 0x68, + 0x19, 0x6b, 0x43, 0x46, 0x88, 0x47, 0x23, 0x68, 0x2d, 0x18, 0x07, 0xeb, + 0xc3, 0x03, 0x48, 0xeb, 0x01, 0x08, 0x58, 0x60, 0x21, 0x68, 0x01, 0x31, + 0xb1, 0xf5, 0x70, 0x7f, 0x21, 0x60, 0xdc, 0xd3, 0x00, 0x20, 0x03, 0xb0, + 0xbd, 0xe8, 0xf0, 0x83, 0x04, 0x00, 0x00, 0x24, 0x08, 0xb5, 0x04, 0x4b, + 0x02, 0x78, 0x53, 0xf8, 0x22, 0x00, 0x03, 0x68, 0x9b, 0x6a, 0x98, 0x47, + 0xc0, 0xb2, 0x08, 0xbd, 0x04, 0x00, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x43, + 0x1d, 0x46, 0x89, 0xb0, 0x06, 0x46, 0x0f, 0x46, 0x6c, 0x1e, 0x90, 0x46, + 0xff, 0xf7, 0xea, 0xff, 0x04, 0x44, 0x40, 0x42, 0x04, 0x40, 0xe4, 0xb2, + 0x20, 0x2c, 0x1a, 0xd8, 0x30, 0x46, 0xfd, 0xf7, 0xc5, 0xff, 0x81, 0x46, + 0x2a, 0x46, 0x41, 0x46, 0x68, 0x46, 0x18, 0xf0, 0x3b, 0xfe, 0x62, 0x1b, + 0x49, 0x46, 0x0d, 0xeb, 0x05, 0x00, 0x18, 0xf0, 0x43, 0xfe, 0x23, 0x46, + 0x6a, 0x46, 0x39, 0x46, 0x30, 0x46, 0xfd, 0xf7, 0xbf, 0xff, 0x00, 0x38, + 0x18, 0xbf, 0x01, 0x20, 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x4f, 0xf0, + 0xff, 0x30, 0xf9, 0xe7, 0x07, 0xb5, 0x8d, 0xf8, 0x07, 0x10, 0x01, 0x23, + 0x81, 0x68, 0x0d, 0xf1, 0x07, 0x02, 0x80, 0x39, 0xff, 0xf7, 0xc8, 0xff, + 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x07, 0xb5, 0x81, 0x68, 0x01, 0x23, + 0x01, 0xaa, 0x40, 0x39, 0x8d, 0xf8, 0x04, 0x30, 0xff, 0xf7, 0xbc, 0xff, + 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x00, 0x00, 0x13, 0xb5, 0x06, 0x4b, + 0x00, 0x78, 0x53, 0xf8, 0x20, 0x00, 0x00, 0x23, 0x04, 0x68, 0xcd, 0xe9, + 0x00, 0x23, 0x0a, 0x46, 0xe4, 0x69, 0xa0, 0x47, 0x02, 0xb0, 0x10, 0xbd, + 0x04, 0x00, 0x00, 0x24, 0x2d, 0xe9, 0xf8, 0x43, 0x03, 0x78, 0x07, 0x46, + 0x0b, 0xb1, 0x01, 0x2b, 0x20, 0xd1, 0x11, 0x4a, 0x2c, 0x21, 0x4f, 0xf4, + 0x34, 0x66, 0x4f, 0xf0, 0x00, 0x08, 0x01, 0xfb, 0x03, 0x23, 0x92, 0x6e, + 0x9d, 0x6a, 0x56, 0x43, 0x1c, 0x46, 0x01, 0x3d, 0xe0, 0x36, 0x63, 0x6a, + 0x38, 0x46, 0x03, 0xeb, 0xc5, 0x02, 0x53, 0xf8, 0x35, 0x10, 0x1b, 0x68, + 0x01, 0x3d, 0xd2, 0xf8, 0x04, 0x90, 0xc9, 0x1a, 0xc8, 0x44, 0x4a, 0x46, + 0xff, 0xf7, 0xcc, 0xff, 0xb0, 0x45, 0xee, 0xd3, 0xbd, 0xe8, 0xf8, 0x83, + 0x01, 0x20, 0xfb, 0xe7, 0x28, 0x07, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x43, + 0x85, 0xb0, 0x1e, 0x46, 0x1b, 0x4b, 0x4f, 0xf0, 0x00, 0x08, 0x03, 0x92, + 0x07, 0x46, 0x02, 0x78, 0x0d, 0x46, 0x53, 0xf8, 0x22, 0x40, 0x0a, 0x46, + 0x23, 0x68, 0x20, 0x46, 0xcd, 0xe9, 0x00, 0x68, 0xd3, 0xf8, 0x3c, 0x90, + 0x43, 0x46, 0xc8, 0x47, 0x03, 0x99, 0x58, 0xb9, 0x12, 0x4b, 0x1b, 0x78, + 0x2b, 0xb1, 0x33, 0x46, 0x2a, 0x46, 0x39, 0x78, 0x10, 0x48, 0x09, 0xf0, + 0x8f, 0xfc, 0x4f, 0xf0, 0xff, 0x34, 0x13, 0xe0, 0x23, 0x68, 0x20, 0x46, + 0x2a, 0x46, 0xcd, 0xe9, 0x00, 0x68, 0xd3, 0xf8, 0x14, 0x90, 0x43, 0x46, + 0xc8, 0x47, 0x04, 0x46, 0x40, 0xb1, 0x07, 0x4b, 0x1b, 0x78, 0x2b, 0xb1, + 0x33, 0x46, 0x2a, 0x46, 0x39, 0x78, 0x06, 0x48, 0x09, 0xf0, 0x78, 0xfc, + 0x20, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x04, 0x00, 0x00, 0x24, + 0x08, 0x0b, 0x02, 0x24, 0x65, 0xd3, 0x01, 0x08, 0x94, 0xd3, 0x01, 0x08, + 0x2d, 0xe9, 0xf7, 0x43, 0x04, 0x46, 0x17, 0x46, 0x99, 0x46, 0x0e, 0x46, + 0x29, 0xb9, 0x4f, 0xf0, 0xff, 0x38, 0x40, 0x46, 0x03, 0xb0, 0xbd, 0xe8, + 0xf0, 0x83, 0x00, 0x2a, 0xf7, 0xd0, 0x0b, 0x69, 0x38, 0x46, 0x8d, 0x68, + 0x1d, 0x44, 0x04, 0x23, 0x29, 0x46, 0x0d, 0xeb, 0x03, 0x02, 0xff, 0xf7, + 0xa3, 0xff, 0x80, 0x46, 0x00, 0x28, 0xea, 0xd1, 0xbd, 0xf8, 0x04, 0x10, + 0x46, 0xf6, 0x08, 0x12, 0xf3, 0x68, 0x91, 0x42, 0x22, 0xd1, 0xbd, 0xf8, + 0x06, 0x10, 0x99, 0x42, 0xdf, 0xd1, 0x04, 0x23, 0x29, 0x44, 0x38, 0x46, + 0x0d, 0xeb, 0x03, 0x02, 0xff, 0xf7, 0x8e, 0xff, 0x00, 0x28, 0xd6, 0xd1, + 0xbd, 0xf8, 0x04, 0x20, 0x46, 0xf6, 0x07, 0x13, 0x9a, 0x42, 0xd0, 0xd1, + 0x00, 0x23, 0xbd, 0xf8, 0x06, 0x20, 0xa4, 0xf8, 0x08, 0x90, 0xa3, 0x72, + 0xf3, 0x68, 0x2b, 0x44, 0x04, 0x35, 0xe3, 0x60, 0x13, 0x44, 0x25, 0x61, + 0x63, 0x61, 0xc4, 0xe9, 0x00, 0x67, 0xc2, 0xe7, 0x00, 0x2b, 0xe7, 0xd0, + 0xbd, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4f, 0xdf, 0xf8, 0x30, 0xb1, + 0x07, 0x46, 0x88, 0x46, 0x00, 0x26, 0xdf, 0xf8, 0x20, 0x91, 0x0b, 0xf1, + 0x6c, 0x0a, 0x2d, 0xed, 0x02, 0x8b, 0x85, 0xb0, 0xcd, 0xe9, 0x02, 0x23, + 0x10, 0x9b, 0xb3, 0x42, 0x01, 0xd8, 0x00, 0x20, 0x11, 0xe0, 0x10, 0x9b, + 0x38, 0x46, 0x40, 0x4a, 0x9d, 0x1b, 0x02, 0x9b, 0xb5, 0xf5, 0x00, 0x3f, + 0x06, 0xeb, 0x03, 0x04, 0x28, 0xbf, 0x4f, 0xf4, 0x00, 0x35, 0x21, 0x46, + 0x2b, 0x46, 0xff, 0xf7, 0x4d, 0xff, 0x28, 0xb1, 0x01, 0x20, 0x05, 0xb0, + 0xbd, 0xec, 0x02, 0x8b, 0xbd, 0xe8, 0xf0, 0x8f, 0x3b, 0x78, 0x02, 0x2b, + 0x03, 0x9b, 0x33, 0x44, 0x08, 0xee, 0x10, 0x3a, 0x48, 0xd1, 0x9b, 0xf8, + 0xa4, 0x32, 0x00, 0x2b, 0x3c, 0xd1, 0x98, 0xf8, 0x00, 0x30, 0x01, 0x2b, + 0x25, 0xd1, 0x03, 0x9c, 0x58, 0x46, 0x43, 0x69, 0x13, 0xf0, 0x0c, 0x0f, + 0x1f, 0xd0, 0x34, 0x44, 0x81, 0x68, 0x8c, 0x42, 0x05, 0xeb, 0x04, 0x0e, + 0x49, 0xd2, 0x8e, 0x45, 0x17, 0xd9, 0xae, 0xeb, 0x01, 0x03, 0xa1, 0xeb, + 0x04, 0x0c, 0x00, 0x22, 0x00, 0x69, 0x08, 0x44, 0x86, 0x45, 0x03, 0xd9, + 0x84, 0x42, 0x34, 0xbf, 0x03, 0x1b, 0x00, 0x23, 0x64, 0x1a, 0x09, 0xeb, + 0x0c, 0x01, 0x50, 0x46, 0xcd, 0xe9, 0x00, 0x21, 0x04, 0xeb, 0x0c, 0x02, + 0x39, 0x46, 0xfe, 0xf7, 0xa2, 0xfe, 0x98, 0xf8, 0x00, 0x30, 0x02, 0x2b, + 0x1d, 0xd1, 0x9b, 0xf8, 0xa4, 0x32, 0xd3, 0xb1, 0x00, 0x23, 0x18, 0xee, + 0x10, 0x2a, 0x41, 0x46, 0x50, 0x46, 0x00, 0x93, 0x2b, 0x46, 0xcd, 0xf8, + 0x04, 0x90, 0xfe, 0xf7, 0x90, 0xfe, 0x0e, 0xe0, 0xcd, 0xe9, 0x00, 0x09, + 0x2b, 0x46, 0x22, 0x46, 0x39, 0x46, 0x50, 0x46, 0xfe, 0xf7, 0x87, 0xfe, + 0x3b, 0x78, 0x01, 0x2b, 0xb7, 0xd1, 0x98, 0xf8, 0x00, 0x30, 0x01, 0x2b, + 0x0a, 0xd1, 0x2b, 0x46, 0x4a, 0x46, 0x18, 0xee, 0x10, 0x1a, 0x40, 0x46, + 0xfd, 0xf7, 0x48, 0xfe, 0x00, 0x28, 0x99, 0xd1, 0x2e, 0x44, 0x81, 0xe7, + 0x02, 0x9c, 0x05, 0x48, 0xab, 0xe7, 0x62, 0x1a, 0x2b, 0x46, 0x4f, 0xf0, + 0x00, 0x0c, 0x02, 0xf0, 0x0f, 0x02, 0xb5, 0xe7, 0x08, 0x0b, 0x00, 0x24, + 0x54, 0x07, 0x00, 0x24, 0x28, 0x07, 0x00, 0x24, 0x2d, 0xe9, 0xf7, 0x43, + 0x04, 0x46, 0x0f, 0x46, 0x90, 0x46, 0x1e, 0x46, 0x4f, 0xf6, 0xff, 0x79, + 0xd4, 0xe9, 0x04, 0x23, 0x9a, 0x42, 0x15, 0xd2, 0x23, 0x68, 0xdb, 0x68, + 0x23, 0xb1, 0xe3, 0x68, 0x93, 0x42, 0x04, 0xbf, 0x04, 0x33, 0x23, 0x61, + 0x04, 0x23, 0x21, 0x69, 0x60, 0x68, 0x0d, 0xeb, 0x03, 0x02, 0xff, 0xf7, + 0xb9, 0xfe, 0x18, 0xbb, 0xa3, 0x7a, 0x25, 0x69, 0x33, 0xb1, 0xe3, 0x68, + 0xab, 0x42, 0x03, 0xd8, 0x01, 0x20, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, + 0x21, 0x89, 0xbd, 0xf8, 0x06, 0x30, 0x49, 0x45, 0x03, 0xf1, 0x04, 0x02, + 0x03, 0xd0, 0xbd, 0xf8, 0x04, 0xc0, 0x8c, 0x45, 0x0b, 0xd1, 0x16, 0xb1, + 0xbd, 0xf8, 0x04, 0x10, 0x31, 0x80, 0x04, 0x35, 0x3d, 0x60, 0xa8, 0xf8, + 0x00, 0x30, 0x23, 0x69, 0x13, 0x44, 0x23, 0x61, 0xe5, 0xe7, 0x15, 0x44, + 0x25, 0x61, 0xc7, 0xe7, 0x4f, 0xf0, 0xff, 0x30, 0xdf, 0xe7, 0x00, 0x00, + 0x2d, 0xe9, 0xf0, 0x4f, 0xad, 0xf5, 0x55, 0x7d, 0x17, 0x78, 0x0d, 0x46, + 0x14, 0x46, 0x04, 0x93, 0x4f, 0xf4, 0x8e, 0x73, 0x7b, 0x43, 0xc6, 0x5c, + 0x00, 0xeb, 0x03, 0x0c, 0x00, 0x2e, 0x40, 0xf0, 0x0d, 0x82, 0x4f, 0xf4, + 0x8c, 0x72, 0x31, 0x46, 0x0c, 0xf1, 0x04, 0x00, 0x18, 0xf0, 0x56, 0xfc, + 0x32, 0x23, 0x22, 0x46, 0x29, 0x46, 0x11, 0xa8, 0xff, 0xf7, 0xb6, 0xfe, + 0x10, 0xb1, 0x4f, 0xf0, 0xff, 0x30, 0x06, 0xe1, 0x11, 0x9b, 0x00, 0x2b, + 0xf9, 0xd0, 0x12, 0x9b, 0x00, 0x2b, 0xf6, 0xd0, 0x33, 0x46, 0x0d, 0xf1, + 0x1a, 0x02, 0x07, 0xa9, 0x11, 0xa8, 0xff, 0xf7, 0x8d, 0xff, 0x00, 0x28, + 0x40, 0xf0, 0xf7, 0x80, 0xbd, 0xf8, 0x1a, 0x30, 0x71, 0x2b, 0xe8, 0xd1, + 0x43, 0xaa, 0x07, 0x99, 0x20, 0x46, 0xff, 0xf7, 0x55, 0xfe, 0x00, 0x28, + 0xe1, 0xd1, 0xa5, 0x4c, 0x30, 0x23, 0x2f, 0xaa, 0x08, 0xa8, 0x08, 0x94, + 0x8a, 0x34, 0x21, 0x46, 0x10, 0xf0, 0xc2, 0xfa, 0x00, 0x28, 0xd6, 0xd1, + 0x08, 0x99, 0x2f, 0x9b, 0x19, 0x44, 0xa1, 0x42, 0x40, 0xf0, 0xf7, 0x80, + 0x37, 0xaa, 0x08, 0xa8, 0x37, 0x96, 0xfe, 0xf7, 0xf6, 0xfd, 0x37, 0x9b, + 0x03, 0x43, 0x40, 0xf0, 0xeb, 0x80, 0x8e, 0xab, 0x60, 0xaa, 0x21, 0x46, + 0x08, 0xa8, 0x10, 0xf0, 0xbf, 0xfa, 0x00, 0x28, 0x40, 0xf0, 0xdf, 0x80, + 0x61, 0x9a, 0x07, 0x2a, 0x40, 0xf0, 0xd8, 0x80, 0x92, 0x49, 0x62, 0x98, + 0x19, 0xf0, 0x60, 0xff, 0x00, 0x28, 0x40, 0xf0, 0xd1, 0x80, 0x8f, 0x9a, + 0x08, 0x2a, 0x40, 0xf0, 0xca, 0x80, 0x8e, 0x49, 0x90, 0x98, 0x19, 0xf0, + 0x55, 0xff, 0x00, 0x28, 0x40, 0xf0, 0xc3, 0x80, 0x04, 0x23, 0x2f, 0xaa, + 0x21, 0x46, 0x08, 0xa8, 0x10, 0xf0, 0x8c, 0xfa, 0x00, 0x28, 0x40, 0xf0, + 0xb7, 0x80, 0x30, 0x23, 0x2f, 0xaa, 0x21, 0x46, 0x08, 0xa8, 0x10, 0xf0, + 0x83, 0xfa, 0x00, 0x28, 0x40, 0xf0, 0xab, 0x80, 0x37, 0x90, 0x37, 0xaa, + 0x21, 0x46, 0x08, 0xa8, 0xfe, 0xf7, 0xbb, 0xfd, 0x00, 0x28, 0x40, 0xf0, + 0x9f, 0x80, 0x37, 0x9b, 0x01, 0x2b, 0x40, 0xf0, 0x9b, 0x80, 0x04, 0x23, + 0x2f, 0xaa, 0x21, 0x46, 0x08, 0xa8, 0x10, 0xf0, 0x6d, 0xfa, 0x00, 0x28, + 0x40, 0xf0, 0x8f, 0x80, 0xdd, 0xf8, 0xbc, 0x80, 0xb8, 0xf1, 0x20, 0x0f, + 0x40, 0xf0, 0x83, 0x80, 0x08, 0x9b, 0x1f, 0xac, 0x03, 0xf1, 0x20, 0x05, + 0x18, 0x68, 0x08, 0x33, 0x53, 0xf8, 0x04, 0x1c, 0x22, 0x46, 0xab, 0x42, + 0x03, 0xc2, 0x14, 0x46, 0xf6, 0xd1, 0x00, 0x23, 0x01, 0x22, 0x60, 0xa8, + 0xcd, 0xe9, 0x88, 0x23, 0xcd, 0xe9, 0x8a, 0x32, 0xcd, 0xe9, 0x8c, 0x33, + 0x0d, 0xf0, 0xe2, 0xff, 0x7f, 0xa8, 0x0d, 0xf0, 0xd3, 0xff, 0x60, 0xa8, + 0x0e, 0xf0, 0xb9, 0xfa, 0x03, 0x23, 0x60, 0xa8, 0x8d, 0xf8, 0x80, 0x31, + 0x0e, 0xf0, 0xde, 0xf8, 0x28, 0xb1, 0x60, 0xa8, 0x0e, 0xf0, 0xaf, 0xfa, + 0x7f, 0xa8, 0x0e, 0xf0, 0x9a, 0xfa, 0x41, 0x23, 0x43, 0xaa, 0x7f, 0xa9, + 0x60, 0xa8, 0x0e, 0xf0, 0x43, 0xfb, 0x00, 0x28, 0x70, 0xd0, 0x60, 0xa8, + 0x4f, 0xf0, 0xff, 0x34, 0x0e, 0xf0, 0x9f, 0xfa, 0x7f, 0xa8, 0x0e, 0xf0, + 0x8a, 0xfa, 0x8b, 0xa8, 0x0e, 0xf0, 0x74, 0xfa, 0x88, 0xa8, 0x0e, 0xf0, + 0x71, 0xfa, 0x60, 0xa8, 0x0e, 0xf0, 0x93, 0xfa, 0x7f, 0xa8, 0x0e, 0xf0, + 0x7e, 0xfa, 0x00, 0x2c, 0x7f, 0xf4, 0x31, 0xaf, 0x0d, 0xf1, 0x9c, 0x09, + 0x21, 0x46, 0x20, 0x22, 0x0f, 0x94, 0x48, 0x46, 0xcd, 0xe9, 0x0d, 0x44, + 0x18, 0xf0, 0x76, 0xfb, 0x49, 0x46, 0x0d, 0xa8, 0xff, 0xf7, 0x66, 0xfa, + 0x28, 0xbb, 0x20, 0x22, 0x17, 0xa9, 0x0d, 0xa8, 0x0d, 0xf0, 0x4e, 0xfe, + 0xf8, 0xb9, 0x2f, 0xa9, 0x0d, 0xa8, 0x0d, 0xf0, 0x1f, 0xfe, 0xd0, 0xb9, + 0x01, 0x23, 0x30, 0x25, 0xa2, 0x46, 0xdf, 0xf8, 0x08, 0xb1, 0x8d, 0xf8, + 0x28, 0x30, 0x2f, 0xa9, 0x0d, 0xa8, 0x05, 0x93, 0xcd, 0xf8, 0x3c, 0xa0, + 0xcd, 0xe9, 0x0d, 0xaa, 0xff, 0xf7, 0x4a, 0xfa, 0x48, 0xb9, 0x05, 0x9b, + 0x00, 0x2b, 0x62, 0xd0, 0x10, 0x22, 0x59, 0x46, 0x0d, 0xa8, 0x0d, 0xf0, + 0x2f, 0xfe, 0x00, 0x28, 0x6e, 0xd0, 0x0d, 0xa8, 0x0d, 0xf0, 0x9a, 0xfe, + 0xf7, 0xe6, 0x6f, 0xf0, 0x0b, 0x00, 0x0d, 0xf5, 0x55, 0x7d, 0xbd, 0xe8, + 0xf0, 0x8f, 0x6f, 0xf0, 0x0a, 0x00, 0xf8, 0xe7, 0x6f, 0xf0, 0x09, 0x00, + 0xf5, 0xe7, 0x6f, 0xf0, 0x08, 0x00, 0xf2, 0xe7, 0x6f, 0xf0, 0x07, 0x00, + 0xef, 0xe7, 0x6f, 0xf0, 0x06, 0x00, 0xec, 0xe7, 0x6f, 0xf0, 0x05, 0x00, + 0xe9, 0xe7, 0x6f, 0xf0, 0x04, 0x00, 0xe6, 0xe7, 0x6f, 0xf0, 0x02, 0x00, + 0xe3, 0xe7, 0x6f, 0xf0, 0x01, 0x00, 0xe0, 0xe7, 0x7f, 0xa9, 0x60, 0xa8, + 0x0f, 0xf0, 0xf0, 0xfa, 0x00, 0x28, 0x88, 0xd1, 0x20, 0x22, 0x1f, 0xa9, + 0x8b, 0xa8, 0x0e, 0xf0, 0x8f, 0xfa, 0x8e, 0xa8, 0x0d, 0xf0, 0x3c, 0xff, + 0x8b, 0xa9, 0x60, 0xa8, 0x0e, 0xf0, 0xe6, 0xf8, 0x04, 0x46, 0xb8, 0xb9, + 0x7f, 0xa9, 0x60, 0xa8, 0x0f, 0xf0, 0xdc, 0xfa, 0x04, 0x46, 0x88, 0xb9, + 0x7f, 0xab, 0x8b, 0xaa, 0x8e, 0xa9, 0x60, 0xa8, 0xfe, 0xf7, 0xb6, 0xfa, + 0x04, 0x46, 0x48, 0xb9, 0x01, 0x46, 0x94, 0xa8, 0x0d, 0xf0, 0x9b, 0xff, + 0x68, 0xb1, 0x8e, 0xa9, 0x88, 0xa8, 0x0e, 0xf0, 0x4b, 0xfb, 0x04, 0x46, + 0x8e, 0xa8, 0x0e, 0xf0, 0xf2, 0xf9, 0x20, 0x22, 0x17, 0xa9, 0x88, 0xa8, + 0x0d, 0xf0, 0xa2, 0xff, 0x61, 0xe7, 0x08, 0x4c, 0xf4, 0xe7, 0x20, 0x22, + 0x8e, 0xa9, 0x0d, 0xa8, 0x0d, 0xf0, 0xcc, 0xfd, 0x00, 0x28, 0x95, 0xd0, + 0x9b, 0xe7, 0x00, 0xbf, 0x00, 0x04, 0x00, 0x08, 0xe4, 0xd8, 0x01, 0x08, + 0xf4, 0xd8, 0x01, 0x08, 0x80, 0xb0, 0xff, 0xff, 0xc2, 0xd3, 0x01, 0x08, + 0x01, 0x22, 0x0a, 0xa9, 0x0d, 0xa8, 0x0d, 0xf0, 0xb9, 0xfd, 0x00, 0x28, + 0x89, 0xd1, 0x8e, 0xa9, 0x0d, 0xa8, 0x0d, 0xf0, 0x89, 0xfd, 0x03, 0x46, + 0x00, 0x28, 0x82, 0xd1, 0x37, 0xaa, 0x20, 0x2d, 0x02, 0xeb, 0x04, 0x00, + 0x28, 0xd9, 0x0d, 0xf5, 0x0e, 0x7c, 0x03, 0x46, 0x0d, 0xf5, 0x16, 0x7e, + 0x62, 0x46, 0x08, 0x33, 0x03, 0xca, 0x72, 0x45, 0x43, 0xf8, 0x08, 0x0c, + 0x43, 0xf8, 0x04, 0x1c, 0x94, 0x46, 0xf5, 0xd1, 0x20, 0x3d, 0xad, 0xb2, + 0x9d, 0xf8, 0x28, 0x30, 0x20, 0x34, 0x01, 0x33, 0xa4, 0xb2, 0x8d, 0xf8, + 0x28, 0x30, 0x00, 0x23, 0x00, 0x2d, 0x7f, 0xf4, 0x4e, 0xaf, 0x0d, 0xa8, + 0x0d, 0xf0, 0xfc, 0xfd, 0x3b, 0xa9, 0x0a, 0xa8, 0x0c, 0x95, 0xcd, 0xe9, + 0x0a, 0x55, 0xff, 0xf7, 0x97, 0xf9, 0x48, 0xb1, 0x0a, 0xa8, 0x55, 0xe7, + 0x2a, 0x46, 0x8e, 0xa9, 0x05, 0x93, 0x18, 0xf0, 0x8d, 0xfa, 0x05, 0x9b, + 0x1d, 0x46, 0xdf, 0xe7, 0x0d, 0xf2, 0x6d, 0x14, 0x10, 0x22, 0x0a, 0xa8, + 0x21, 0x46, 0x0d, 0xf0, 0x73, 0xfd, 0x00, 0x28, 0xec, 0xd1, 0x2f, 0xa9, + 0x0a, 0xa8, 0x0d, 0xf0, 0x43, 0xfd, 0x00, 0x28, 0xe6, 0xd1, 0x2f, 0xab, + 0x53, 0xa9, 0x13, 0xf8, 0x01, 0x2b, 0xb8, 0xf1, 0x01, 0x08, 0x11, 0xf8, + 0x01, 0x0f, 0x82, 0xea, 0x00, 0x02, 0x46, 0xea, 0x02, 0x06, 0xf4, 0xd1, + 0x00, 0x2e, 0xd7, 0xd1, 0x0a, 0xa8, 0x0d, 0xf0, 0xc9, 0xfd, 0x31, 0x46, + 0x4f, 0xf4, 0x8c, 0x72, 0x8e, 0xa8, 0x18, 0xf0, 0x71, 0xfa, 0x37, 0xa9, + 0x8e, 0xa8, 0xfe, 0xf7, 0x7b, 0xfc, 0x00, 0x28, 0x7f, 0xf4, 0x1b, 0xae, + 0x10, 0x25, 0x31, 0x46, 0x0d, 0xa8, 0x2a, 0x46, 0x18, 0xf0, 0x64, 0xfa, + 0x04, 0x9b, 0x09, 0xaa, 0x29, 0x46, 0x05, 0xfb, 0x07, 0x37, 0x8e, 0xa8, + 0x0d, 0xab, 0xcd, 0xf8, 0x00, 0x90, 0x0c, 0x37, 0x09, 0x96, 0xcd, 0xe9, + 0x01, 0x47, 0x10, 0xf0, 0x61, 0xf9, 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, + 0x40, 0x42, 0x0a, 0xe7, 0x01, 0x20, 0x08, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, + 0x13, 0x78, 0xad, 0xf5, 0x0f, 0x7d, 0x82, 0x46, 0x0d, 0x46, 0x01, 0x2b, + 0x93, 0x46, 0x0d, 0xd1, 0x4b, 0x69, 0x13, 0xf0, 0x0c, 0x0f, 0x09, 0xd0, + 0x90, 0xf8, 0x1c, 0x31, 0x33, 0xb9, 0x4f, 0xf0, 0xff, 0x31, 0x08, 0x46, + 0x0d, 0xf5, 0x0f, 0x7d, 0xbd, 0xe8, 0xf0, 0x8f, 0x40, 0x22, 0x00, 0x21, + 0x6d, 0xa8, 0xdf, 0xf8, 0xa8, 0x82, 0x18, 0xf0, 0x2f, 0xfa, 0xa1, 0x4a, + 0xa1, 0x4b, 0x00, 0x24, 0xaf, 0x68, 0x2e, 0x69, 0xdf, 0xf8, 0x98, 0x92, + 0x3e, 0x44, 0xdf, 0xf8, 0x98, 0xe2, 0xdf, 0xf8, 0x98, 0xc2, 0x9d, 0x48, + 0x9d, 0x49, 0x7d, 0x94, 0xcd, 0xe9, 0x6b, 0x23, 0xeb, 0x68, 0xf3, 0x18, + 0xcd, 0xe9, 0x65, 0x98, 0xcd, 0xe9, 0x02, 0x39, 0xcd, 0xe9, 0x04, 0x8e, + 0x95, 0x4b, 0xdf, 0xf8, 0x64, 0x82, 0x0a, 0x93, 0xcd, 0xe9, 0x63, 0x44, + 0xcd, 0xe9, 0x67, 0xec, 0xcd, 0xe9, 0x69, 0x01, 0xcd, 0xe9, 0x06, 0xc0, + 0xcd, 0xe9, 0x08, 0x12, 0x02, 0x9b, 0xa3, 0x42, 0x42, 0xd8, 0x29, 0xa9, + 0x63, 0xa8, 0x0d, 0xf0, 0xbf, 0xfb, 0x29, 0x46, 0x4f, 0xf6, 0xff, 0x73, + 0x5a, 0x46, 0x23, 0xa8, 0xff, 0xf7, 0x60, 0xfc, 0x01, 0x46, 0x00, 0x28, + 0xbb, 0xd1, 0x4f, 0xf0, 0xff, 0x35, 0x88, 0x4e, 0x07, 0x46, 0xdf, 0xf8, + 0x38, 0x92, 0x2c, 0x46, 0x06, 0xf1, 0x5b, 0x08, 0x23, 0x9b, 0x00, 0x2b, + 0xad, 0xd0, 0x24, 0x9b, 0x00, 0x2b, 0xaa, 0xd0, 0x0d, 0xa9, 0x0d, 0xf1, + 0x32, 0x03, 0x0c, 0xaa, 0x23, 0xa8, 0xff, 0xf7, 0x2f, 0xfd, 0x01, 0x1e, + 0xa3, 0xdb, 0x40, 0xf0, 0x53, 0x82, 0xbd, 0xf8, 0x32, 0x30, 0x10, 0x2b, + 0x59, 0xd1, 0xbd, 0xf8, 0x30, 0x70, 0x20, 0x2f, 0x97, 0xd1, 0x0d, 0x99, + 0x3b, 0x46, 0x43, 0xaa, 0x58, 0x46, 0xff, 0xf7, 0xf1, 0xfb, 0x01, 0x46, + 0x00, 0x28, 0x90, 0xd1, 0x43, 0xa9, 0x3a, 0x46, 0x29, 0xa8, 0x19, 0xf0, + 0x21, 0xfd, 0x01, 0x46, 0x00, 0x28, 0x88, 0xd1, 0x01, 0x27, 0xd3, 0xe7, + 0x02, 0x9b, 0xa3, 0xeb, 0x04, 0x09, 0xb9, 0xf5, 0x80, 0x7f, 0x28, 0xbf, + 0x4f, 0xf4, 0x80, 0x79, 0xa7, 0x42, 0x05, 0xd9, 0x04, 0xeb, 0x09, 0x03, + 0x9f, 0x42, 0x38, 0xbf, 0xa7, 0xeb, 0x04, 0x09, 0xa6, 0x42, 0x05, 0xd9, + 0x04, 0xeb, 0x09, 0x03, 0x9e, 0x42, 0x38, 0xbf, 0xa6, 0xeb, 0x04, 0x09, + 0x21, 0x46, 0x4b, 0x46, 0x62, 0x4a, 0x58, 0x46, 0xff, 0xf7, 0xc6, 0xfb, + 0x01, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x65, 0xaf, 0x9b, 0xf8, 0x00, 0x30, + 0x01, 0x2b, 0x12, 0xd1, 0x6b, 0x69, 0x13, 0xf0, 0x0c, 0x0f, 0x0e, 0xd0, + 0xa7, 0x42, 0x0c, 0xd8, 0xa6, 0x42, 0x0a, 0xd9, 0xe2, 0x1b, 0x59, 0x46, + 0x50, 0x46, 0xcd, 0xf8, 0x04, 0x80, 0x02, 0xf0, 0x0f, 0x03, 0x00, 0x93, + 0x4b, 0x46, 0xfe, 0xf7, 0x3c, 0xfb, 0xb9, 0xf1, 0x00, 0x0f, 0x04, 0xd0, + 0x4a, 0x46, 0x41, 0x46, 0x63, 0xa8, 0x0d, 0xf0, 0xd9, 0xfa, 0x4c, 0x44, + 0x76, 0xe7, 0x01, 0x2b, 0x3d, 0xd1, 0xbd, 0xf8, 0x30, 0x30, 0x20, 0x2b, + 0x3f, 0xf6, 0x3b, 0xaf, 0x0d, 0x99, 0x43, 0xaa, 0x58, 0x46, 0xff, 0xf7, + 0x95, 0xfb, 0x01, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x34, 0xaf, 0x9d, 0xf8, + 0x30, 0x50, 0x20, 0x2d, 0x7b, 0xd8, 0x40, 0x22, 0x02, 0x90, 0x6d, 0xa8, + 0x18, 0xf0, 0x66, 0xf9, 0x03, 0x9b, 0x02, 0x99, 0x5b, 0x22, 0x65, 0x93, + 0x63, 0xa8, 0x04, 0x9b, 0x7d, 0x91, 0x66, 0x93, 0x05, 0x9b, 0x67, 0x93, + 0x06, 0x9b, 0x68, 0x93, 0x07, 0x9b, 0x69, 0x93, 0x08, 0x9b, 0x6a, 0x93, + 0x09, 0x9b, 0x6b, 0x93, 0x0a, 0x9b, 0xcd, 0xe9, 0x63, 0x11, 0x31, 0x46, + 0x6c, 0x93, 0x0d, 0xf0, 0xa5, 0xfa, 0x3a, 0xa9, 0x63, 0xa8, 0x0d, 0xf0, + 0x07, 0xfb, 0x2a, 0x46, 0x43, 0xa9, 0x3a, 0xa8, 0x19, 0xf0, 0x9e, 0xfc, + 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, 0x45, 0x42, 0x50, 0xe7, 0x22, 0x2b, + 0x7f, 0xf4, 0x4e, 0xaf, 0x00, 0x2d, 0x7f, 0xf4, 0x4b, 0xaf, 0xbd, 0xf8, + 0x30, 0x30, 0x80, 0x2b, 0x3f, 0xf6, 0xf7, 0xae, 0x43, 0xac, 0x0d, 0x99, + 0x58, 0x46, 0x22, 0x46, 0xff, 0xf7, 0x50, 0xfb, 0x01, 0x46, 0x00, 0x28, + 0x7f, 0xf4, 0xef, 0xae, 0x30, 0x23, 0x31, 0xaa, 0x41, 0x46, 0x0e, 0xa8, + 0xbd, 0xf8, 0x30, 0xa0, 0x0e, 0x96, 0x0f, 0xf0, 0xbb, 0xff, 0x70, 0xbb, + 0x31, 0x9b, 0x3a, 0xaa, 0x0e, 0x9d, 0x0e, 0xa8, 0x1d, 0x44, 0x63, 0xab, + 0x29, 0x46, 0x0f, 0xf0, 0xc5, 0xff, 0x20, 0xbb, 0x3b, 0x9a, 0x07, 0x2a, + 0x21, 0xd1, 0x49, 0x46, 0x3c, 0x98, 0x19, 0xf0, 0x69, 0xfc, 0xe0, 0xb9, + 0x64, 0x9a, 0x08, 0x2a, 0x19, 0xd1, 0x15, 0x49, 0x65, 0x98, 0x19, 0xf0, + 0x61, 0xfc, 0xa0, 0xb9, 0x03, 0x23, 0x31, 0xaa, 0x29, 0x46, 0x0e, 0xa8, + 0x0f, 0xf0, 0x9a, 0xff, 0x68, 0xb9, 0x31, 0x9a, 0x5a, 0xb1, 0x51, 0x1e, + 0x0e, 0x9b, 0x31, 0x91, 0x18, 0x78, 0x30, 0xb9, 0x58, 0x1c, 0x13, 0x44, + 0x9d, 0x42, 0x0e, 0x90, 0x01, 0xd1, 0x41, 0x29, 0x1c, 0xd0, 0x4f, 0xf0, + 0xff, 0x34, 0x4f, 0xf0, 0xff, 0x35, 0xfd, 0xe6, 0xab, 0xd9, 0x83, 0x1f, + 0x19, 0xcd, 0xe0, 0x5b, 0x7f, 0x52, 0x0e, 0x51, 0x8c, 0x68, 0x05, 0x9b, + 0x00, 0x03, 0x00, 0x08, 0x28, 0x0c, 0x02, 0x24, 0xfd, 0xd8, 0x01, 0x08, + 0x85, 0xae, 0x67, 0xbb, 0x67, 0xe6, 0x09, 0x6a, 0x72, 0xf3, 0x6e, 0x3c, + 0x3a, 0xf5, 0x4f, 0xa5, 0xec, 0xd8, 0x01, 0x08, 0x63, 0xa8, 0x01, 0x25, + 0x0d, 0xf0, 0x00, 0xfd, 0x00, 0x23, 0x85, 0xa8, 0x84, 0x93, 0xcd, 0xe9, + 0x82, 0x53, 0x0d, 0xf0, 0xed, 0xfc, 0x0e, 0x99, 0xa1, 0x4b, 0x63, 0xa8, + 0x0b, 0x91, 0x5b, 0x1a, 0x02, 0x93, 0x0d, 0xf0, 0xce, 0xff, 0x03, 0x22, + 0x63, 0xa8, 0x8d, 0xf8, 0x8c, 0x21, 0x0d, 0xf0, 0xf3, 0xfd, 0x02, 0x9b, + 0x0b, 0x99, 0x58, 0xb1, 0x4f, 0xf0, 0xff, 0x34, 0x63, 0xa8, 0x0d, 0xf0, + 0xc0, 0xff, 0x82, 0xa8, 0x0d, 0xf0, 0x98, 0xff, 0x85, 0xa8, 0x0d, 0xf0, + 0xa8, 0xff, 0xbc, 0xe7, 0x0a, 0x46, 0x63, 0xa8, 0x85, 0xa9, 0x0e, 0xf0, + 0x51, 0xf8, 0x00, 0x28, 0xec, 0xd1, 0x85, 0xa9, 0x63, 0xa8, 0x0f, 0xf0, + 0x6f, 0xf8, 0x00, 0x28, 0xe6, 0xd1, 0xa2, 0x44, 0x30, 0x23, 0x10, 0xaa, + 0x0f, 0x94, 0x51, 0x46, 0xcd, 0xe9, 0x11, 0x50, 0xcd, 0xe9, 0x13, 0x05, + 0xcd, 0xe9, 0x15, 0x00, 0x0f, 0xa8, 0x0f, 0xf0, 0x2b, 0xff, 0x60, 0xb1, + 0xa0, 0xf5, 0x9f, 0x44, 0x11, 0xa8, 0x0d, 0xf0, 0x73, 0xff, 0x14, 0xa8, + 0x0d, 0xf0, 0x70, 0xff, 0x20, 0x1e, 0x18, 0xbf, 0x01, 0x20, 0x44, 0x42, + 0xcc, 0xe7, 0xdd, 0xe9, 0x0f, 0x32, 0x13, 0x44, 0x9a, 0x45, 0x40, 0xf0, + 0xf1, 0x80, 0x11, 0xaa, 0x51, 0x46, 0x0f, 0xa8, 0x0f, 0xf0, 0x71, 0xff, + 0x04, 0x46, 0x30, 0xb9, 0x14, 0xaa, 0x51, 0x46, 0x0f, 0xa8, 0x0f, 0xf0, + 0x6a, 0xff, 0x04, 0x46, 0x10, 0xb1, 0xa4, 0xf5, 0x9f, 0x44, 0xdd, 0xe7, + 0x31, 0xa8, 0x0d, 0xf0, 0x8d, 0xfc, 0x9d, 0xf8, 0x8c, 0x31, 0x09, 0x2b, + 0xcd, 0xe9, 0x17, 0x54, 0xcd, 0xe9, 0x19, 0x45, 0xcd, 0xe9, 0x1b, 0x44, + 0xcd, 0xe9, 0x1d, 0x54, 0xcd, 0xe9, 0x1f, 0x45, 0xcd, 0xe9, 0x21, 0x44, + 0x01, 0xd1, 0x6b, 0x4c, 0xc8, 0xe7, 0x78, 0x9b, 0x00, 0x2b, 0xfa, 0xd0, + 0x01, 0x21, 0x11, 0xa8, 0x0d, 0xf0, 0xeb, 0xfc, 0x00, 0x28, 0x17, 0xda, + 0x66, 0x4c, 0x31, 0xa8, 0x0d, 0xf0, 0x45, 0xff, 0x17, 0xa8, 0x0d, 0xf0, + 0x2f, 0xff, 0x1a, 0xa8, 0x0d, 0xf0, 0x2c, 0xff, 0x1d, 0xa8, 0x0d, 0xf0, + 0x29, 0xff, 0x20, 0xa8, 0x0d, 0xf0, 0x26, 0xff, 0x00, 0x2c, 0xad, 0xd1, + 0x0f, 0x9a, 0x5e, 0x4b, 0x92, 0x45, 0x18, 0xbf, 0x1c, 0x46, 0xa7, 0xe7, + 0x76, 0xa9, 0x11, 0xa8, 0x0d, 0xf0, 0x8a, 0xfc, 0x00, 0x28, 0xe1, 0xda, + 0x01, 0x21, 0x14, 0xa8, 0x0d, 0xf0, 0xc7, 0xfc, 0x00, 0x28, 0xdb, 0xdb, + 0x76, 0xa9, 0x14, 0xa8, 0x0d, 0xf0, 0x7e, 0xfc, 0x00, 0x28, 0xd5, 0xda, + 0x7a, 0x9d, 0x29, 0xa9, 0x17, 0xa8, 0x07, 0x35, 0xed, 0x08, 0x20, 0x2d, + 0x28, 0xbf, 0x20, 0x25, 0x2a, 0x46, 0x0d, 0xf0, 0x8d, 0xff, 0x04, 0x46, + 0x00, 0x28, 0xc8, 0xd1, 0x7a, 0x9b, 0xe9, 0x00, 0xb3, 0xeb, 0xc5, 0x0f, + 0x3d, 0xd3, 0x76, 0xa9, 0x17, 0xa8, 0x0d, 0xf0, 0x65, 0xfc, 0x00, 0x28, + 0x07, 0xdb, 0x17, 0xa9, 0x76, 0xaa, 0x08, 0x46, 0x0e, 0xf0, 0x13, 0xfd, + 0x04, 0x46, 0x00, 0x28, 0xb5, 0xd1, 0x76, 0xaa, 0x14, 0xa9, 0x1a, 0xa8, + 0x0f, 0xf0, 0xa2, 0xfb, 0x04, 0x46, 0x00, 0x28, 0xad, 0xd1, 0x1a, 0xaa, + 0x17, 0xa9, 0x1d, 0xa8, 0x0e, 0xf0, 0x88, 0xf8, 0x04, 0x46, 0x00, 0x28, + 0xa5, 0xd1, 0x1d, 0xa9, 0x76, 0xaa, 0x08, 0x46, 0x0e, 0xf0, 0xc5, 0xfd, + 0x04, 0x46, 0x00, 0x28, 0x9d, 0xd1, 0x1a, 0xaa, 0x11, 0xa9, 0x20, 0xa8, + 0x0e, 0xf0, 0x78, 0xf8, 0x04, 0x46, 0x00, 0x28, 0x95, 0xd1, 0x20, 0xa9, + 0x76, 0xaa, 0x08, 0x46, 0x0e, 0xf0, 0xb5, 0xfd, 0x04, 0x46, 0x00, 0x28, + 0x8d, 0xd1, 0x63, 0xa8, 0x0d, 0xf0, 0x26, 0xfc, 0x01, 0x28, 0x0a, 0xd0, + 0xa4, 0xf5, 0x9d, 0x44, 0x85, 0xe7, 0xc9, 0x1a, 0x17, 0xa8, 0x0d, 0xf0, + 0x09, 0xfe, 0x04, 0x46, 0x00, 0x28, 0xba, 0xd0, 0x7d, 0xe7, 0x3a, 0xa8, + 0x0d, 0xf0, 0xec, 0xfb, 0x6d, 0xab, 0x1d, 0xaa, 0x3a, 0xa9, 0x63, 0xa8, + 0xfe, 0xf7, 0x34, 0xf9, 0x04, 0x46, 0xa0, 0xb9, 0x85, 0xab, 0x20, 0xaa, + 0x31, 0xa9, 0x63, 0xa8, 0xfe, 0xf7, 0x2c, 0xf9, 0x04, 0x46, 0x60, 0xb9, + 0x31, 0xab, 0x3a, 0xaa, 0x63, 0xa8, 0x19, 0x46, 0x0f, 0xf0, 0x2a, 0xfa, + 0x04, 0x46, 0x20, 0xb9, 0x31, 0xa9, 0x63, 0xa8, 0x0f, 0xf0, 0x24, 0xfd, + 0x04, 0x46, 0x3a, 0xa8, 0x0d, 0xf0, 0xa3, 0xfe, 0x00, 0x2c, 0x7f, 0xf4, + 0x58, 0xaf, 0x21, 0x46, 0x37, 0xa8, 0x0d, 0xf0, 0x3c, 0xfc, 0x00, 0x28, + 0x3f, 0xf4, 0x50, 0xaf, 0x31, 0xa9, 0x76, 0xaa, 0x08, 0x46, 0x0e, 0xf0, + 0x70, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x48, 0xaf, 0x11, 0xa9, + 0x31, 0xa8, 0x0d, 0xf0, 0xe9, 0xfb, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, + 0x40, 0xaf, 0x3d, 0xe7, 0x07, 0x4c, 0xfb, 0xe6, 0x00, 0x2f, 0x14, 0xbf, + 0x21, 0x46, 0x01, 0x21, 0x49, 0xe5, 0x00, 0xbf, 0x5b, 0x03, 0x00, 0x08, + 0x80, 0xb0, 0xff, 0xff, 0x00, 0xb2, 0xff, 0xff, 0x00, 0xb4, 0xff, 0xff, + 0x1a, 0xb0, 0xff, 0xff, 0x02, 0x78, 0x07, 0x49, 0x51, 0xf8, 0x22, 0x30, + 0x4b, 0xb1, 0x01, 0x3b, 0x41, 0xf8, 0x22, 0x30, 0x2b, 0xb9, 0x04, 0x4b, + 0x53, 0xf8, 0x22, 0x00, 0x03, 0x68, 0xdb, 0x68, 0x18, 0x47, 0x70, 0x47, + 0xf4, 0x05, 0x00, 0x24, 0x04, 0x00, 0x00, 0x24, 0x22, 0x4b, 0x00, 0xeb, + 0x40, 0x02, 0x01, 0x28, 0x03, 0xeb, 0x82, 0x02, 0x2d, 0xe9, 0xf0, 0x41, + 0x04, 0x46, 0x0a, 0x60, 0x25, 0xd0, 0x02, 0x28, 0x26, 0xd0, 0x48, 0xbb, + 0x1c, 0x4a, 0x5a, 0x60, 0x1c, 0x4f, 0x00, 0x25, 0x57, 0xf8, 0x24, 0x20, + 0x01, 0x32, 0x47, 0xf8, 0x24, 0x20, 0x0c, 0x22, 0x62, 0x43, 0x03, 0xeb, + 0x02, 0x08, 0x9c, 0x54, 0x17, 0x4b, 0x88, 0xf8, 0x01, 0x50, 0x53, 0xf8, + 0x24, 0x60, 0x33, 0x68, 0x30, 0x46, 0x9b, 0x6b, 0x98, 0x47, 0x57, 0xf8, + 0x24, 0x30, 0xc8, 0xf8, 0x08, 0x00, 0x01, 0x2b, 0x17, 0xd1, 0x33, 0x68, + 0x30, 0x46, 0x9b, 0x68, 0xbd, 0xe8, 0xf0, 0x41, 0x18, 0x47, 0x00, 0x22, + 0x1a, 0x61, 0xdb, 0xe7, 0x4f, 0xf0, 0x10, 0x62, 0xda, 0x61, 0xd7, 0xe7, + 0x0a, 0x4b, 0x1b, 0x78, 0x1b, 0xb1, 0x01, 0x46, 0x09, 0x48, 0x08, 0xf0, + 0xf9, 0xfd, 0x4f, 0xf0, 0xff, 0x30, 0xbd, 0xe8, 0xf0, 0x81, 0x28, 0x46, + 0xfb, 0xe7, 0x00, 0xbf, 0x00, 0x06, 0x00, 0x24, 0x00, 0x00, 0x02, 0x08, + 0xf4, 0x05, 0x00, 0x24, 0x04, 0x00, 0x00, 0x24, 0x08, 0x0b, 0x02, 0x24, + 0xd3, 0xd3, 0x01, 0x08, 0x73, 0xb5, 0x04, 0x46, 0x01, 0xa9, 0xc0, 0xb2, + 0xff, 0xf7, 0xa8, 0xff, 0x05, 0x46, 0x20, 0xb1, 0x4f, 0xf0, 0xff, 0x35, + 0x28, 0x46, 0x02, 0xb0, 0x70, 0xbd, 0x01, 0x98, 0xfd, 0xf7, 0x7a, 0xf8, + 0x06, 0x46, 0x01, 0x98, 0xff, 0xf7, 0x86, 0xff, 0x2c, 0x23, 0x06, 0x48, + 0x03, 0xfb, 0x04, 0x04, 0x63, 0x1e, 0x03, 0x34, 0xa3, 0x42, 0xed, 0xd0, + 0x13, 0xf8, 0x01, 0x2f, 0xb2, 0x42, 0xf9, 0xd0, 0xe6, 0xe7, 0x00, 0xbf, + 0x28, 0x07, 0x00, 0x24, 0x13, 0xb5, 0x00, 0x20, 0x01, 0xa9, 0xff, 0xf7, + 0x85, 0xff, 0x01, 0x46, 0x10, 0xbb, 0x20, 0x23, 0x13, 0x4a, 0x01, 0x98, + 0xff, 0xf7, 0x06, 0xf9, 0x04, 0x1e, 0x18, 0xbf, 0x01, 0x24, 0x01, 0x98, + 0xff, 0xf7, 0x64, 0xff, 0xd4, 0xb9, 0x01, 0xa9, 0x01, 0x20, 0xff, 0xf7, + 0x73, 0xff, 0x98, 0xb9, 0x21, 0x46, 0x20, 0x23, 0x0b, 0x4a, 0x01, 0x98, + 0xff, 0xf7, 0xf4, 0xf8, 0x04, 0x1e, 0x18, 0xbf, 0x01, 0x24, 0x01, 0x98, + 0xff, 0xf7, 0x52, 0xff, 0x0c, 0xb1, 0x84, 0xf0, 0x01, 0x04, 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, 0x01, 0x24, 0xe2, 0xe7, 0x01, 0x24, 0xf2, 0xe7, - 0x00, 0x24, 0xf4, 0xe7, 0x14, 0x07, 0x00, 0x24, 0x40, 0x07, 0x00, 0x24, - 0x13, 0xb5, 0x00, 0x20, 0x01, 0xa9, 0xff, 0xf7, 0xd1, 0xfe, 0x90, 0xb9, + 0x00, 0x24, 0xf4, 0xe7, 0x28, 0x07, 0x00, 0x24, 0x54, 0x07, 0x00, 0x24, + 0x13, 0xb5, 0x00, 0x20, 0x01, 0xa9, 0xff, 0xf7, 0x51, 0xff, 0x90, 0xb9, 0x01, 0x98, 0x01, 0x23, 0x6a, 0x46, 0x81, 0x68, 0x8d, 0xf8, 0x00, 0x30, - 0x40, 0x39, 0x21, 0xf0, 0x1f, 0x01, 0x20, 0x39, 0xfe, 0xf7, 0x85, 0xfa, - 0x04, 0x46, 0x01, 0x98, 0xff, 0xf7, 0xac, 0xfe, 0x20, 0x46, 0x02, 0xb0, - 0x10, 0xbd, 0x01, 0x24, 0xfa, 0xe7, 0x00, 0x00, 0x30, 0xb5, 0x83, 0x79, - 0x8d, 0xb0, 0x05, 0x46, 0x00, 0x2b, 0x03, 0xa9, 0x14, 0xbf, 0x02, 0x20, - 0x00, 0x20, 0xff, 0xf7, 0xaf, 0xfe, 0x60, 0xbb, 0x03, 0x98, 0xfd, 0xf7, - 0x1e, 0xf8, 0x16, 0x4b, 0x29, 0x79, 0x9a, 0x6e, 0x01, 0x39, 0x2b, 0x68, - 0x02, 0xeb, 0x42, 0x04, 0x01, 0x3b, 0x4a, 0x43, 0x04, 0xfb, 0x03, 0x23, - 0x1c, 0x18, 0x03, 0x98, 0xfc, 0xf7, 0xc0, 0xff, 0x01, 0x90, 0x03, 0x98, - 0xfc, 0xf7, 0xb0, 0xff, 0x20, 0x22, 0x01, 0x46, 0x04, 0xa8, 0x17, 0xf0, - 0xb1, 0xfd, 0x2a, 0x79, 0x21, 0x46, 0x01, 0x9b, 0x8d, 0xf8, 0x10, 0x20, - 0x04, 0xaa, 0x03, 0x98, 0xfc, 0xf7, 0xba, 0xff, 0x04, 0x1e, 0x18, 0xbf, - 0x01, 0x24, 0x03, 0x98, 0xff, 0xf7, 0x70, 0xfe, 0x20, 0x46, 0x0d, 0xb0, - 0x30, 0xbd, 0x01, 0x24, 0xf7, 0xe7, 0x00, 0xbf, 0x14, 0x07, 0x00, 0x24, - 0xf7, 0xb5, 0x04, 0x46, 0x0f, 0x46, 0xc0, 0xb2, 0x69, 0x46, 0xff, 0xf7, - 0x75, 0xfe, 0x30, 0xb1, 0x01, 0x25, 0x00, 0x98, 0xff, 0xf7, 0x5c, 0xfe, - 0x28, 0x46, 0x03, 0xb0, 0xf0, 0xbd, 0x1b, 0x48, 0x2c, 0x23, 0x03, 0xfb, - 0x04, 0x04, 0x00, 0x98, 0x23, 0x69, 0xa6, 0x68, 0x1e, 0x44, 0x04, 0x23, - 0x31, 0x46, 0x0d, 0xeb, 0x03, 0x02, 0xfe, 0xf7, 0x5b, 0xfa, 0x05, 0x46, - 0x00, 0x28, 0xe7, 0xd1, 0xbd, 0xf8, 0x04, 0x20, 0x46, 0xf6, 0x08, 0x13, - 0xe4, 0x68, 0x9a, 0x42, 0x1a, 0xd1, 0xbd, 0xf8, 0x06, 0x30, 0x9c, 0x42, - 0x01, 0xd0, 0x03, 0x25, 0xdb, 0xe7, 0x04, 0x23, 0x31, 0x19, 0x00, 0x98, - 0x0d, 0xeb, 0x03, 0x02, 0xfe, 0xf7, 0x44, 0xfa, 0x00, 0x28, 0xd1, 0xd1, - 0xbd, 0xf8, 0x04, 0x20, 0x46, 0xf6, 0x07, 0x13, 0x9a, 0x42, 0xee, 0xd1, - 0xbd, 0xf8, 0x06, 0x30, 0x23, 0x44, 0x33, 0x44, 0x3b, 0x60, 0xc6, 0xe7, - 0x00, 0x2c, 0xf1, 0xd0, 0xe5, 0xe7, 0x00, 0xbf, 0x14, 0x07, 0x00, 0x24, - 0x2d, 0xe9, 0xf0, 0x41, 0x86, 0xb0, 0x02, 0x23, 0x05, 0x46, 0x00, 0x26, - 0x01, 0xaf, 0xdf, 0xf8, 0x58, 0x80, 0xad, 0xf8, 0x04, 0x30, 0x29, 0x46, - 0x17, 0xf8, 0x01, 0x0b, 0xff, 0xf7, 0x24, 0xfe, 0x04, 0x46, 0x58, 0xb9, - 0x28, 0x68, 0x10, 0x23, 0x02, 0xaa, 0x81, 0x68, 0x20, 0x39, 0xfe, 0xf7, - 0x17, 0xfa, 0x04, 0x46, 0x40, 0xb1, 0x28, 0x68, 0xff, 0xf7, 0x02, 0xfe, - 0x20, 0x46, 0x06, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x01, 0x26, 0xe6, 0xe7, - 0x10, 0x22, 0x41, 0x46, 0x02, 0xa8, 0x19, 0xf0, 0x83, 0xf8, 0x04, 0x46, - 0x00, 0x28, 0xf1, 0xd0, 0x28, 0x68, 0xff, 0xf7, 0xf1, 0xfd, 0x00, 0x2e, - 0xf0, 0xd0, 0x4f, 0xf0, 0xff, 0x34, 0xe9, 0xe7, 0x74, 0xde, 0x01, 0x08, - 0x81, 0x68, 0xf0, 0xb5, 0x89, 0xb0, 0xa1, 0xf1, 0x20, 0x06, 0x05, 0x46, - 0xfc, 0xf7, 0x0e, 0xff, 0x0b, 0x4b, 0x07, 0x46, 0x6c, 0x46, 0x0f, 0xcb, - 0x84, 0xe8, 0x0f, 0x00, 0x10, 0x22, 0x39, 0x46, 0x0d, 0xeb, 0x02, 0x00, - 0x17, 0xf0, 0x08, 0xfd, 0x20, 0x23, 0x22, 0x46, 0x31, 0x46, 0x28, 0x46, - 0xfc, 0xf7, 0x14, 0xff, 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, 0x09, 0xb0, - 0xf0, 0xbd, 0x00, 0xbf, 0x74, 0xde, 0x01, 0x08, 0x30, 0xb5, 0x00, 0x23, - 0x87, 0xb0, 0x0d, 0x46, 0x81, 0x68, 0x05, 0x93, 0x02, 0xaa, 0x20, 0x39, - 0x04, 0x46, 0xcd, 0xe9, 0x03, 0x33, 0xff, 0x23, 0x02, 0x93, 0x10, 0x23, - 0xfe, 0xf7, 0xc8, 0xf9, 0x00, 0x28, 0x11, 0xdb, 0x10, 0x22, 0x02, 0xa9, - 0x20, 0x46, 0xfc, 0xf7, 0x09, 0xff, 0x68, 0xb1, 0x03, 0x23, 0x2b, 0x70, - 0x0d, 0xf1, 0x07, 0x02, 0xa1, 0x68, 0x01, 0x23, 0x20, 0x46, 0x80, 0x39, - 0xfe, 0xf7, 0xb6, 0xf9, 0x00, 0x28, 0x0b, 0xda, 0x01, 0x20, 0x2c, 0xe0, - 0x10, 0x22, 0x17, 0x49, 0x02, 0xa8, 0x19, 0xf0, 0x29, 0xf8, 0x00, 0x28, - 0x14, 0xbf, 0x02, 0x23, 0x01, 0x23, 0xe8, 0xe7, 0x9d, 0xf8, 0x07, 0x30, - 0x0d, 0xf1, 0x07, 0x01, 0x20, 0x46, 0x03, 0xf0, 0x0f, 0x02, 0x1b, 0x09, - 0x6a, 0x70, 0x01, 0x22, 0x2b, 0x71, 0xfc, 0xf7, 0xe3, 0xfe, 0x10, 0xb9, - 0x6b, 0x78, 0x04, 0x2b, 0x03, 0xd9, 0x01, 0x23, 0x6b, 0x70, 0x00, 0x23, - 0x2b, 0x71, 0xa2, 0x68, 0xa9, 0x1c, 0x20, 0x46, 0x60, 0x3a, 0xfe, 0xf7, - 0xa9, 0xfd, 0x00, 0x28, 0xd6, 0xd1, 0xa2, 0x68, 0xe9, 0x1c, 0x20, 0x46, - 0x40, 0x3a, 0xfe, 0xf7, 0xa1, 0xfd, 0x07, 0xb0, 0x30, 0xbd, 0x00, 0xbf, - 0x74, 0xde, 0x01, 0x08, 0x1f, 0xb5, 0x00, 0x20, 0x01, 0xa9, 0xff, 0xf7, - 0x7f, 0xfd, 0xa8, 0xb9, 0x02, 0xa9, 0x01, 0x98, 0xff, 0xf7, 0x9e, 0xff, - 0x04, 0x46, 0x68, 0xb9, 0x9d, 0xf8, 0x0b, 0x30, 0x03, 0x2b, 0x03, 0xd1, - 0x01, 0x98, 0xfe, 0xf7, 0x60, 0xf9, 0x04, 0x46, 0x01, 0x98, 0xff, 0xf7, - 0x59, 0xfd, 0x20, 0x46, 0x04, 0xb0, 0x10, 0xbd, 0x01, 0x24, 0xf7, 0xe7, - 0x01, 0x24, 0xf8, 0xe7, 0x13, 0xb5, 0x0c, 0x46, 0xc0, 0xb2, 0x01, 0xa9, - 0xff, 0xf7, 0x60, 0xfd, 0x50, 0xb9, 0x21, 0x46, 0x01, 0x98, 0xff, 0xf7, - 0x7f, 0xff, 0x04, 0x46, 0x01, 0x98, 0xff, 0xf7, 0x43, 0xfd, 0x20, 0x46, - 0x02, 0xb0, 0x10, 0xbd, 0x01, 0x24, 0xfa, 0xe7, 0x30, 0xb5, 0x85, 0xb0, - 0x0d, 0x46, 0x04, 0x46, 0x01, 0x20, 0x02, 0xa9, 0xff, 0xf7, 0xe4, 0xff, - 0xe9, 0x79, 0x01, 0x29, 0x02, 0xd0, 0x20, 0x46, 0xfe, 0xf7, 0x3c, 0xff, - 0x9d, 0xf8, 0x0b, 0x30, 0x01, 0x2b, 0x02, 0xd1, 0x20, 0x46, 0xfe, 0xf7, - 0x2c, 0xf9, 0xab, 0x68, 0x20, 0x46, 0xa1, 0x68, 0x01, 0x93, 0x04, 0x23, - 0xa0, 0x39, 0x0d, 0xeb, 0x03, 0x02, 0xfe, 0xf7, 0xf4, 0xf8, 0x2a, 0x46, - 0x00, 0x21, 0x20, 0x46, 0xfc, 0xf7, 0x91, 0xfe, 0x2a, 0x46, 0x01, 0x21, - 0x20, 0x46, 0xfc, 0xf7, 0x8c, 0xfe, 0x20, 0x46, 0xff, 0xf7, 0x28, 0xff, - 0x00, 0x20, 0x05, 0xb0, 0x30, 0xbd, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4f, + 0x40, 0x39, 0x21, 0xf0, 0x1f, 0x01, 0x20, 0x39, 0xff, 0xf7, 0x48, 0xf8, + 0x04, 0x46, 0x01, 0x98, 0xff, 0xf7, 0x2c, 0xff, 0x20, 0x46, 0x02, 0xb0, + 0x10, 0xbd, 0x01, 0x24, 0xfa, 0xe7, 0x00, 0x00, 0xf7, 0xb5, 0x04, 0x46, + 0x0f, 0x46, 0xc0, 0xb2, 0x69, 0x46, 0xff, 0xf7, 0x33, 0xff, 0x30, 0xb1, + 0x01, 0x25, 0x00, 0x98, 0xff, 0xf7, 0x1a, 0xff, 0x28, 0x46, 0x03, 0xb0, + 0xf0, 0xbd, 0x1b, 0x48, 0x2c, 0x23, 0x03, 0xfb, 0x04, 0x04, 0x00, 0x98, + 0x23, 0x69, 0xa6, 0x68, 0x1e, 0x44, 0x04, 0x23, 0x31, 0x46, 0x0d, 0xeb, + 0x03, 0x02, 0xff, 0xf7, 0xa5, 0xf8, 0x05, 0x46, 0x00, 0x28, 0xe7, 0xd1, + 0xbd, 0xf8, 0x04, 0x20, 0x46, 0xf6, 0x08, 0x13, 0xe4, 0x68, 0x9a, 0x42, + 0x1a, 0xd1, 0xbd, 0xf8, 0x06, 0x30, 0x9c, 0x42, 0x01, 0xd0, 0x03, 0x25, + 0xdb, 0xe7, 0x04, 0x23, 0x31, 0x19, 0x00, 0x98, 0x0d, 0xeb, 0x03, 0x02, + 0xff, 0xf7, 0x8e, 0xf8, 0x00, 0x28, 0xd1, 0xd1, 0xbd, 0xf8, 0x04, 0x20, + 0x46, 0xf6, 0x07, 0x13, 0x9a, 0x42, 0xee, 0xd1, 0xbd, 0xf8, 0x06, 0x30, + 0x23, 0x44, 0x33, 0x44, 0x3b, 0x60, 0xc6, 0xe7, 0x00, 0x2c, 0xf1, 0xd0, + 0xe5, 0xe7, 0x00, 0xbf, 0x28, 0x07, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x41, + 0x86, 0xb0, 0x02, 0x23, 0x05, 0x46, 0x00, 0x26, 0x01, 0xaf, 0xdf, 0xf8, + 0x58, 0x80, 0xad, 0xf8, 0x04, 0x30, 0x29, 0x46, 0x17, 0xf8, 0x01, 0x0b, + 0xff, 0xf7, 0xe2, 0xfe, 0x04, 0x46, 0x58, 0xb9, 0x28, 0x68, 0x10, 0x23, + 0x02, 0xaa, 0x81, 0x68, 0x20, 0x39, 0xff, 0xf7, 0x61, 0xf8, 0x04, 0x46, + 0x40, 0xb1, 0x28, 0x68, 0xff, 0xf7, 0xc0, 0xfe, 0x20, 0x46, 0x06, 0xb0, + 0xbd, 0xe8, 0xf0, 0x81, 0x01, 0x26, 0xe6, 0xe7, 0x10, 0x22, 0x41, 0x46, + 0x02, 0xa8, 0x19, 0xf0, 0x89, 0xf9, 0x04, 0x46, 0x00, 0x28, 0xf1, 0xd0, + 0x28, 0x68, 0xff, 0xf7, 0xaf, 0xfe, 0x00, 0x2e, 0xf0, 0xd0, 0x4f, 0xf0, + 0xff, 0x34, 0xe9, 0xe7, 0xd4, 0xd8, 0x01, 0x08, 0x38, 0xb5, 0x4f, 0xf4, + 0x8e, 0x74, 0x05, 0x46, 0x4c, 0x43, 0x02, 0xeb, 0x01, 0x11, 0x20, 0x44, + 0x0c, 0x31, 0x04, 0x30, 0xfe, 0xf7, 0x24, 0xf8, 0x00, 0x28, 0x03, 0x46, + 0x13, 0xbf, 0x00, 0x22, 0x01, 0x22, 0x03, 0x46, 0x4f, 0xf0, 0xff, 0x33, + 0x2a, 0x55, 0x18, 0x46, 0x38, 0xbd, 0x00, 0x00, 0x2d, 0xe9, 0xf7, 0x43, + 0x04, 0x46, 0x0f, 0x46, 0xc0, 0xb2, 0x01, 0xa9, 0xff, 0xf7, 0x9c, 0xfe, + 0x00, 0x28, 0x63, 0xd1, 0x20, 0x46, 0xff, 0xf7, 0xe9, 0xfe, 0x30, 0xb1, + 0x31, 0x4e, 0x2c, 0x25, 0x05, 0xfb, 0x04, 0x65, 0x6b, 0x69, 0xda, 0x06, + 0x0d, 0xd5, 0x0c, 0xb9, 0x01, 0x25, 0x03, 0xe0, 0x25, 0x46, 0x01, 0x98, + 0xfe, 0xf7, 0xe4, 0xff, 0x01, 0x98, 0xff, 0xf7, 0x71, 0xfe, 0x28, 0x46, + 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0xdd, 0xf8, 0x04, 0x80, 0x98, 0xf8, + 0x00, 0x90, 0xb9, 0xf1, 0x01, 0x0f, 0x2a, 0xd0, 0x24, 0x48, 0x29, 0x46, + 0x42, 0x46, 0xff, 0xf7, 0x8d, 0xfb, 0x05, 0x46, 0x2c, 0x23, 0x01, 0x98, + 0x63, 0x43, 0xf1, 0x58, 0xf2, 0x18, 0x20, 0x4b, 0x99, 0x42, 0x0a, 0xd1, + 0x13, 0x69, 0x92, 0x68, 0xd1, 0x43, 0x8b, 0x42, 0x05, 0xd8, 0x13, 0x44, + 0x82, 0x68, 0x93, 0x42, 0x01, 0xd2, 0x00, 0x2d, 0xd8, 0xd0, 0x1c, 0xb1, + 0x82, 0x68, 0x00, 0x21, 0xfe, 0xf7, 0xa8, 0xff, 0x17, 0x4b, 0x1b, 0x78, + 0x00, 0x2b, 0xc9, 0xd0, 0x16, 0x4b, 0x17, 0x49, 0x17, 0x48, 0x00, 0x2c, + 0x18, 0xbf, 0x19, 0x46, 0x08, 0xf0, 0x88, 0xfc, 0xc0, 0xe7, 0x13, 0xf0, + 0x0c, 0x0f, 0xd1, 0xd0, 0x3b, 0x46, 0x42, 0x46, 0x29, 0x46, 0x06, 0xf1, + 0x6c, 0x00, 0xff, 0xf7, 0x3d, 0xf9, 0x00, 0x28, 0x02, 0xda, 0x4f, 0xf0, + 0xff, 0x35, 0xcb, 0xe7, 0xc4, 0xd1, 0x3a, 0x46, 0x49, 0x46, 0x06, 0xf1, + 0x6c, 0x00, 0xff, 0xf7, 0x7d, 0xff, 0x00, 0x28, 0xbc, 0xd0, 0xf2, 0xe7, + 0x4f, 0xf0, 0xff, 0x35, 0xad, 0xe7, 0x00, 0xbf, 0x28, 0x07, 0x00, 0x24, + 0x94, 0x07, 0x00, 0x24, 0x3d, 0xb8, 0xf3, 0x96, 0x08, 0x0b, 0x02, 0x24, + 0xfd, 0xd3, 0x01, 0x08, 0xf5, 0xd3, 0x01, 0x08, 0x07, 0xd4, 0x01, 0x08, + 0x38, 0xb5, 0x0c, 0x46, 0x15, 0x46, 0xfc, 0xf7, 0xfb, 0xfe, 0x25, 0x44, + 0x21, 0x46, 0x11, 0xf8, 0x01, 0x3b, 0x98, 0x42, 0x03, 0xd1, 0xa9, 0x42, + 0xf9, 0xd1, 0x01, 0x20, 0x38, 0xbd, 0x00, 0x20, 0xfc, 0xe7, 0x38, 0xb5, + 0x0c, 0x46, 0x01, 0x23, 0x11, 0x46, 0x05, 0x46, 0x22, 0x46, 0xfe, 0xf7, + 0x93, 0xff, 0x00, 0x28, 0x10, 0xdb, 0x4c, 0xb1, 0x01, 0x22, 0x21, 0x46, + 0x28, 0x46, 0xff, 0xf7, 0xdf, 0xff, 0x18, 0xb1, 0x03, 0x23, 0x00, 0x20, + 0x23, 0x70, 0x38, 0xbd, 0x23, 0x78, 0x01, 0x2b, 0x0c, 0xbf, 0x01, 0x23, + 0x02, 0x23, 0xf6, 0xe7, 0x01, 0x20, 0xf6, 0xe7, 0x81, 0x68, 0xf0, 0xb5, + 0x89, 0xb0, 0xa1, 0xf1, 0x20, 0x06, 0x05, 0x46, 0xfc, 0xf7, 0xca, 0xfe, + 0x0b, 0x4b, 0x07, 0x46, 0x6c, 0x46, 0x0f, 0xcb, 0x84, 0xe8, 0x0f, 0x00, + 0x10, 0x22, 0x39, 0x46, 0x0d, 0xeb, 0x02, 0x00, 0x17, 0xf0, 0x48, 0xfd, + 0x20, 0x23, 0x22, 0x46, 0x31, 0x46, 0x28, 0x46, 0xfc, 0xf7, 0xc4, 0xfe, + 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0xbf, + 0xd4, 0xd8, 0x01, 0x08, 0x30, 0xb5, 0x00, 0x23, 0x87, 0xb0, 0x0d, 0x46, + 0x81, 0x68, 0x05, 0x93, 0x02, 0xaa, 0x20, 0x39, 0x04, 0x46, 0xcd, 0xe9, + 0x03, 0x33, 0xff, 0x23, 0x02, 0x93, 0x10, 0x23, 0xfe, 0xf7, 0x4c, 0xff, + 0x00, 0x28, 0x11, 0xdb, 0x10, 0x22, 0x02, 0xa9, 0x20, 0x46, 0xff, 0xf7, + 0x99, 0xff, 0x68, 0xb1, 0x03, 0x23, 0x2b, 0x70, 0x0d, 0xf1, 0x07, 0x02, + 0xa1, 0x68, 0x01, 0x23, 0x20, 0x46, 0x80, 0x39, 0xfe, 0xf7, 0x3a, 0xff, + 0x00, 0x28, 0x0b, 0xda, 0x01, 0x20, 0x2c, 0xe0, 0x10, 0x22, 0x17, 0x49, + 0x02, 0xa8, 0x19, 0xf0, 0x69, 0xf8, 0x00, 0x28, 0x14, 0xbf, 0x02, 0x23, + 0x01, 0x23, 0xe8, 0xe7, 0x9d, 0xf8, 0x07, 0x30, 0x0d, 0xf1, 0x07, 0x01, + 0x20, 0x46, 0x03, 0xf0, 0x0f, 0x02, 0x1b, 0x09, 0x6a, 0x70, 0x01, 0x22, + 0x2b, 0x71, 0xff, 0xf7, 0x73, 0xff, 0x10, 0xb9, 0x6b, 0x78, 0x04, 0x2b, + 0x03, 0xd9, 0x01, 0x23, 0x6b, 0x70, 0x00, 0x23, 0x2b, 0x71, 0xa2, 0x68, + 0xa9, 0x1c, 0x20, 0x46, 0x60, 0x3a, 0xff, 0xf7, 0x76, 0xff, 0x00, 0x28, + 0xd6, 0xd1, 0xa2, 0x68, 0xe9, 0x1c, 0x20, 0x46, 0x40, 0x3a, 0xff, 0xf7, + 0x6e, 0xff, 0x07, 0xb0, 0x30, 0xbd, 0x00, 0xbf, 0xd4, 0xd8, 0x01, 0x08, + 0x1f, 0xb5, 0x00, 0x20, 0x01, 0xa9, 0xff, 0xf7, 0x77, 0xfd, 0xa8, 0xb9, + 0x02, 0xa9, 0x01, 0x98, 0xff, 0xf7, 0x9e, 0xff, 0x04, 0x46, 0x68, 0xb9, + 0x9d, 0xf8, 0x0b, 0x30, 0x03, 0x2b, 0x03, 0xd1, 0x01, 0x98, 0xfe, 0xf7, + 0xa8, 0xfe, 0x04, 0x46, 0x01, 0x98, 0xff, 0xf7, 0x51, 0xfd, 0x20, 0x46, + 0x04, 0xb0, 0x10, 0xbd, 0x01, 0x24, 0xf7, 0xe7, 0x01, 0x24, 0xf8, 0xe7, + 0x13, 0xb5, 0x0c, 0x46, 0xc0, 0xb2, 0x01, 0xa9, 0xff, 0xf7, 0x58, 0xfd, + 0x50, 0xb9, 0x21, 0x46, 0x01, 0x98, 0xff, 0xf7, 0x7f, 0xff, 0x04, 0x46, + 0x01, 0x98, 0xff, 0xf7, 0x3b, 0xfd, 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, + 0x01, 0x24, 0xfa, 0xe7, 0x30, 0xb5, 0x85, 0xb0, 0x0d, 0x46, 0x04, 0x46, + 0x01, 0x20, 0x02, 0xa9, 0xff, 0xf7, 0xe4, 0xff, 0xe9, 0x79, 0x01, 0x29, + 0x02, 0xd0, 0x20, 0x46, 0xfe, 0xf7, 0x6e, 0xfe, 0x9d, 0xf8, 0x0b, 0x30, + 0x01, 0x2b, 0x02, 0xd1, 0x20, 0x46, 0xfe, 0xf7, 0x74, 0xfe, 0xab, 0x68, + 0x20, 0x46, 0xa1, 0x68, 0x01, 0x93, 0x04, 0x23, 0xa0, 0x39, 0x0d, 0xeb, + 0x03, 0x02, 0xfe, 0xf7, 0x2f, 0xfe, 0x2a, 0x46, 0x00, 0x21, 0x20, 0x46, + 0xfc, 0xf7, 0x22, 0xfe, 0x2a, 0x46, 0x01, 0x21, 0x20, 0x46, 0xfc, 0xf7, + 0x1d, 0xfe, 0x20, 0x46, 0xff, 0xf7, 0x28, 0xff, 0x00, 0x20, 0x05, 0xb0, + 0x30, 0xbd, 0x04, 0x28, 0x09, 0xd0, 0x05, 0x28, 0x03, 0xd1, 0x48, 0x1e, + 0x18, 0xbf, 0x01, 0x20, 0x70, 0x47, 0x43, 0x1a, 0x58, 0x42, 0x58, 0x41, + 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x46, 0xfe, 0xf7, + 0x01, 0xfe, 0x4f, 0xf4, 0x34, 0x62, 0xa3, 0x68, 0xe0, 0x3b, 0x02, 0xfb, + 0x10, 0x30, 0x10, 0xbd, 0x30, 0xb5, 0x83, 0x79, 0x8d, 0xb0, 0x05, 0x46, + 0x00, 0x2b, 0x03, 0xa9, 0x14, 0xbf, 0x02, 0x20, 0x00, 0x20, 0xff, 0xf7, + 0xf7, 0xfc, 0x60, 0xbb, 0x03, 0x98, 0xff, 0xf7, 0xe6, 0xff, 0x16, 0x4b, + 0x29, 0x79, 0x9a, 0x6e, 0x01, 0x39, 0x2b, 0x68, 0x02, 0xeb, 0x42, 0x04, + 0x01, 0x3b, 0x4a, 0x43, 0x04, 0xfb, 0x03, 0x23, 0x1c, 0x18, 0x03, 0x98, + 0xfe, 0xf7, 0xdc, 0xfd, 0x01, 0x90, 0x03, 0x98, 0xfc, 0xf7, 0xbc, 0xfd, + 0x20, 0x22, 0x01, 0x46, 0x04, 0xa8, 0x17, 0xf0, 0x41, 0xfc, 0x2a, 0x79, + 0x21, 0x46, 0x01, 0x9b, 0x8d, 0xf8, 0x10, 0x20, 0x04, 0xaa, 0x03, 0x98, + 0xfc, 0xf7, 0xba, 0xfd, 0x04, 0x1e, 0x18, 0xbf, 0x01, 0x24, 0x03, 0x98, + 0xff, 0xf7, 0xb8, 0xfc, 0x20, 0x46, 0x0d, 0xb0, 0x30, 0xbd, 0x01, 0x24, + 0xf7, 0xe7, 0x00, 0xbf, 0x28, 0x07, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x4f, 0x04, 0x46, 0x8d, 0xb0, 0x00, 0x20, 0x63, 0x79, 0x01, 0x2b, 0xcd, 0xe9, - 0x04, 0x00, 0x40, 0xf0, 0x77, 0x81, 0x23, 0x68, 0x01, 0x2b, 0x40, 0xf0, - 0x73, 0x81, 0x23, 0x79, 0x01, 0x2b, 0x40, 0xf0, 0x6f, 0x81, 0xb0, 0x4d, - 0xb0, 0x4e, 0x2a, 0x68, 0xb2, 0x42, 0x02, 0xd1, 0x05, 0xa9, 0xff, 0xf7, - 0x8b, 0xfe, 0x6b, 0x69, 0x13, 0xf0, 0x0c, 0x0f, 0x00, 0xf0, 0x9b, 0x81, - 0xa9, 0x49, 0x23, 0x46, 0x2a, 0x6a, 0x01, 0xf1, 0x6c, 0x00, 0xff, 0xf7, - 0x7d, 0xf9, 0x01, 0x46, 0x18, 0xb9, 0x22, 0x46, 0xa6, 0x48, 0xfe, 0xf7, - 0x9f, 0xf8, 0xeb, 0x6a, 0xb3, 0x42, 0x03, 0xd1, 0x04, 0xa9, 0x01, 0x20, - 0xff, 0xf7, 0x72, 0xfe, 0x2b, 0x6c, 0x13, 0xf0, 0x0c, 0x0f, 0x00, 0xf0, - 0x89, 0x81, 0xa0, 0x49, 0x23, 0x46, 0xea, 0x6c, 0x01, 0xf1, 0x40, 0x00, - 0xff, 0xf7, 0x64, 0xf9, 0x20, 0xb9, 0x22, 0x46, 0x01, 0x21, 0x9a, 0x48, - 0xfe, 0xf7, 0x86, 0xf8, 0xdd, 0xe9, 0x04, 0x32, 0x93, 0x42, 0x88, 0xbf, - 0x05, 0x93, 0x05, 0x9b, 0xa3, 0x60, 0x93, 0x4d, 0x00, 0x23, 0x05, 0x99, - 0x6e, 0x6a, 0x1a, 0x46, 0x2f, 0x6d, 0x18, 0x46, 0x9a, 0x46, 0xa8, 0x46, - 0x91, 0x42, 0x01, 0xd8, 0x9a, 0x42, 0x05, 0xd2, 0x06, 0xeb, 0xca, 0x05, - 0x0a, 0xf1, 0x01, 0x0a, 0x6d, 0x68, 0x2a, 0x44, 0x99, 0x42, 0x02, 0xd8, - 0x93, 0x42, 0x80, 0xf0, 0x88, 0x81, 0x07, 0xeb, 0xc0, 0x05, 0x91, 0x42, - 0x00, 0xf1, 0x01, 0x00, 0x6d, 0x68, 0x2b, 0x44, 0xec, 0xd8, 0x99, 0x42, - 0xe6, 0xd8, 0x9a, 0x42, 0xe4, 0xd1, 0xd1, 0x46, 0x4f, 0xf0, 0x00, 0x0b, - 0x83, 0x4b, 0x5d, 0x46, 0x0b, 0xf1, 0x01, 0x0b, 0x1b, 0x78, 0x2b, 0xb1, - 0x0a, 0xf1, 0x01, 0x02, 0x59, 0x46, 0x80, 0x48, 0x0b, 0xf0, 0xce, 0xfa, - 0xd8, 0xf8, 0x58, 0x30, 0xd8, 0xf8, 0x24, 0x20, 0x99, 0x68, 0x00, 0x23, - 0x10, 0x1d, 0x1f, 0x46, 0x50, 0xf8, 0x39, 0x30, 0x3b, 0x44, 0x99, 0x42, - 0x03, 0xd3, 0xb9, 0xf1, 0x01, 0x09, 0xf6, 0xd2, 0x1f, 0x46, 0x21, 0x68, - 0x4b, 0x1e, 0xab, 0x42, 0x00, 0xf2, 0x45, 0x81, 0x09, 0xf1, 0x01, 0x00, - 0x13, 0x68, 0xd8, 0xf8, 0x68, 0x50, 0x52, 0xf8, 0x30, 0x60, 0xd8, 0xf8, - 0x28, 0x00, 0xf6, 0x1a, 0x01, 0x38, 0x06, 0xeb, 0x07, 0x0c, 0x52, 0xf8, - 0x30, 0x20, 0xd3, 0x1a, 0x9c, 0x45, 0x40, 0xf2, 0x20, 0x81, 0x4f, 0xf4, - 0x34, 0x63, 0x6f, 0xf0, 0xdf, 0x02, 0x01, 0x29, 0x03, 0xfb, 0x15, 0x25, - 0x3d, 0x44, 0x40, 0xf0, 0x17, 0x81, 0xeb, 0x1b, 0x18, 0xbf, 0x01, 0x23, - 0xa3, 0x71, 0x06, 0xa9, 0x00, 0x20, 0xff, 0xf7, 0x67, 0xfc, 0x07, 0xa9, - 0x01, 0x20, 0xff, 0xf7, 0x63, 0xfc, 0x08, 0xa9, 0x02, 0x20, 0xff, 0xf7, - 0x5f, 0xfc, 0x23, 0x79, 0x01, 0x2b, 0x40, 0xf0, 0x05, 0x81, 0x08, 0x98, - 0x00, 0x21, 0x82, 0x68, 0xff, 0xf7, 0x06, 0xfc, 0x23, 0x68, 0x01, 0x2b, - 0x13, 0xd1, 0x21, 0x46, 0x08, 0x98, 0xff, 0xf7, 0xfd, 0xfe, 0xa3, 0x79, - 0x6b, 0xb9, 0x06, 0x98, 0x03, 0x93, 0xff, 0xf7, 0x09, 0xfc, 0x21, 0x46, - 0x06, 0x98, 0xff, 0xf7, 0xf3, 0xfe, 0x08, 0x98, 0x03, 0x9b, 0x82, 0x68, - 0x19, 0x46, 0xff, 0xf7, 0xef, 0xfb, 0x00, 0x23, 0x32, 0x46, 0x00, 0x95, - 0xdd, 0xe9, 0x07, 0x01, 0xfe, 0xf7, 0xc2, 0xf8, 0x20, 0x46, 0xff, 0xf7, - 0x7b, 0xfd, 0x02, 0x23, 0x23, 0x71, 0x18, 0xb1, 0x47, 0x4a, 0x13, 0x68, - 0x01, 0x33, 0x13, 0x60, 0x3a, 0x46, 0x31, 0x46, 0x07, 0x98, 0xff, 0xf7, - 0xd9, 0xfb, 0x33, 0x46, 0x32, 0x46, 0x00, 0x95, 0xdd, 0xe9, 0x06, 0x01, - 0xfe, 0xf7, 0xac, 0xf8, 0x23, 0x68, 0x01, 0x2b, 0x04, 0xd1, 0xa3, 0x79, - 0x13, 0xb9, 0x07, 0x98, 0xff, 0xf7, 0xda, 0xfb, 0x20, 0x46, 0xff, 0xf7, - 0x5d, 0xfd, 0x03, 0x23, 0x23, 0x71, 0x18, 0xb1, 0x38, 0x4a, 0x13, 0x68, - 0x01, 0x33, 0x13, 0x60, 0x3a, 0x46, 0x31, 0x46, 0x06, 0x98, 0xff, 0xf7, - 0xbb, 0xfb, 0x33, 0x46, 0x00, 0x22, 0x06, 0x99, 0x08, 0x98, 0x00, 0x95, - 0xfe, 0xf7, 0x8e, 0xf8, 0xa3, 0x79, 0x00, 0x2b, 0x39, 0xd0, 0x08, 0x98, - 0xfc, 0xf7, 0x71, 0xfd, 0xd8, 0xf8, 0x68, 0x30, 0x02, 0x46, 0x06, 0x99, - 0x5b, 0x00, 0x08, 0x98, 0x00, 0x93, 0x73, 0x19, 0xfe, 0xf7, 0x7e, 0xf8, - 0x18, 0xb1, 0x28, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x0a, 0xa9, - 0x08, 0x98, 0xff, 0xf7, 0x0f, 0xfe, 0x9d, 0xf8, 0x2b, 0x30, 0x01, 0x2b, - 0x02, 0xd1, 0x06, 0x98, 0xfd, 0xf7, 0xd3, 0xff, 0x9d, 0xf8, 0x29, 0x10, - 0x01, 0x29, 0x02, 0xd0, 0x06, 0x98, 0xfe, 0xf7, 0xd5, 0xfd, 0x06, 0x98, - 0x09, 0xaa, 0xa3, 0x68, 0x81, 0x68, 0x09, 0x93, 0x04, 0x23, 0xa0, 0x39, - 0xfd, 0xf7, 0x95, 0xff, 0x22, 0x46, 0x00, 0x21, 0x06, 0x98, 0xfc, 0xf7, - 0x32, 0xfd, 0x22, 0x46, 0x01, 0x21, 0x06, 0x98, 0xfc, 0xf7, 0x2d, 0xfd, - 0x06, 0x98, 0xff, 0xf7, 0xc9, 0xfd, 0x00, 0x23, 0xa5, 0x79, 0x20, 0x46, - 0xa3, 0x71, 0xff, 0xf7, 0x07, 0xfd, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, - 0x01, 0x23, 0x23, 0x71, 0x18, 0xb1, 0x0c, 0x4a, 0x13, 0x68, 0x01, 0x33, - 0x13, 0x60, 0x00, 0x2d, 0x64, 0xd0, 0x3a, 0x46, 0x00, 0x21, 0x08, 0x98, - 0xff, 0xf7, 0x60, 0xfb, 0x5e, 0xe0, 0x00, 0xbf, 0x14, 0x07, 0x00, 0x24, - 0x3d, 0xb8, 0xf3, 0x96, 0x80, 0x07, 0x00, 0x24, 0x40, 0x07, 0x00, 0x24, - 0xd8, 0x0d, 0x00, 0x24, 0xb9, 0xd5, 0x01, 0x08, 0xd4, 0x09, 0x00, 0x24, - 0x0a, 0xa8, 0xff, 0xf7, 0x69, 0xfd, 0x50, 0xb9, 0x0a, 0x98, 0x04, 0x23, - 0x04, 0xf1, 0x08, 0x02, 0x81, 0x68, 0xa0, 0x39, 0xfd, 0xf7, 0x90, 0xff, - 0x0a, 0x98, 0xff, 0xf7, 0x7d, 0xfb, 0xa3, 0x68, 0x04, 0xf1, 0x1c, 0x06, - 0x00, 0x27, 0xdf, 0xf8, 0xd0, 0x80, 0x05, 0x93, 0x0a, 0xa8, 0x5f, 0xfa, - 0x87, 0xf9, 0xa6, 0xf1, 0x10, 0x05, 0xff, 0xf7, 0x4f, 0xfd, 0x68, 0xb9, - 0x0a, 0x98, 0x10, 0x23, 0x2a, 0x46, 0x81, 0x68, 0xa1, 0xf1, 0xa0, 0x0c, - 0x79, 0x1c, 0xac, 0xeb, 0x41, 0x11, 0xfd, 0xf7, 0x73, 0xff, 0x0a, 0x98, - 0xff, 0xf7, 0x60, 0xfb, 0x2a, 0x46, 0x12, 0xf8, 0x01, 0x3b, 0xff, 0x2b, - 0x3d, 0xd1, 0x96, 0x42, 0xf9, 0xd1, 0x10, 0x36, 0x00, 0x2f, 0x7f, 0xf4, - 0x94, 0xae, 0x01, 0x27, 0xdc, 0xe7, 0x10, 0x22, 0xff, 0x21, 0x04, 0xf1, - 0x0c, 0x00, 0x17, 0xf0, 0x7f, 0xfa, 0x6a, 0xe6, 0x10, 0x22, 0xff, 0x21, - 0x04, 0xf1, 0x1c, 0x00, 0x17, 0xf0, 0x78, 0xfa, 0x7c, 0xe6, 0x3d, 0x46, - 0x00, 0x23, 0xe9, 0xe6, 0x02, 0x2b, 0x3f, 0xf4, 0x25, 0xaf, 0x03, 0x2b, - 0x3f, 0xf4, 0x40, 0xaf, 0x06, 0x98, 0xff, 0xf7, 0x39, 0xfb, 0x07, 0x98, - 0xff, 0xf7, 0x36, 0xfb, 0x08, 0x98, 0xff, 0xf7, 0x33, 0xfb, 0xb9, 0xf1, - 0xff, 0x3f, 0x7f, 0xf4, 0x95, 0xae, 0x0c, 0x4b, 0x19, 0x68, 0x00, 0x29, - 0x05, 0xdd, 0x0b, 0x4b, 0x1b, 0x78, 0x13, 0xb1, 0x0a, 0x48, 0x0b, 0xf0, - 0x65, 0xf9, 0x00, 0x20, 0x0d, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x91, 0x42, - 0x7f, 0xf6, 0x7f, 0xae, 0x68, 0xe6, 0x22, 0x46, 0x49, 0x46, 0x40, 0x46, - 0xfd, 0xf7, 0xd6, 0xfe, 0xbd, 0xe7, 0x00, 0xbf, 0xd4, 0x09, 0x00, 0x24, - 0xd8, 0x0d, 0x00, 0x24, 0xd1, 0xd5, 0x01, 0x08, 0x80, 0x07, 0x00, 0x24, - 0x2d, 0xe9, 0xf0, 0x4f, 0x97, 0xb0, 0x82, 0x4d, 0x14, 0xf0, 0x22, 0xfd, - 0x07, 0x20, 0x14, 0xf0, 0x89, 0xfa, 0x10, 0xf0, 0x01, 0x0f, 0x10, 0xd0, - 0x01, 0x23, 0x7e, 0x48, 0x2b, 0x70, 0x18, 0xf0, 0x4d, 0xfe, 0x14, 0xf0, - 0x9b, 0xfa, 0x06, 0x46, 0x70, 0xb1, 0x2b, 0x78, 0x1b, 0xb1, 0x7a, 0x49, - 0x7a, 0x48, 0x0b, 0xf0, 0x33, 0xf9, 0x14, 0xf0, 0x53, 0xfe, 0x79, 0x48, - 0x0c, 0xf0, 0xc2, 0xf9, 0x00, 0x28, 0xe9, 0xd1, 0x28, 0x70, 0xec, 0xe7, - 0x76, 0x4c, 0x4f, 0xf4, 0x29, 0x72, 0x01, 0x46, 0x4f, 0xf4, 0x70, 0x77, - 0x20, 0x46, 0x17, 0xf0, 0x13, 0xfa, 0x73, 0x4b, 0x04, 0xf1, 0x20, 0x01, - 0x30, 0x46, 0x63, 0x62, 0x71, 0x4b, 0x23, 0x65, 0x71, 0x4b, 0xe3, 0x65, - 0xff, 0xf7, 0xea, 0xfa, 0x04, 0xf1, 0x4c, 0x01, 0x01, 0x20, 0xff, 0xf7, - 0xe5, 0xfa, 0x04, 0xf1, 0x58, 0x01, 0x02, 0x20, 0xff, 0xf7, 0xe0, 0xfa, - 0x62, 0x6a, 0x81, 0x46, 0x0a, 0xa9, 0x30, 0x46, 0x0a, 0x97, 0xfc, 0xf7, - 0xbd, 0xfb, 0x80, 0xbb, 0x0a, 0x9b, 0x0a, 0xa9, 0x22, 0x6d, 0x01, 0x20, - 0xa3, 0x62, 0x0a, 0x97, 0xfc, 0xf7, 0xb4, 0xfb, 0xf0, 0xb1, 0x09, 0x26, - 0x2b, 0x78, 0x23, 0xb1, 0x4f, 0xf4, 0x70, 0x71, 0x60, 0x48, 0x0b, 0xf0, - 0xf3, 0xf8, 0x01, 0x23, 0x9e, 0x42, 0x84, 0xf8, 0x64, 0x30, 0x29, 0xd1, - 0x58, 0x4d, 0x53, 0x4f, 0x95, 0xf8, 0x64, 0x30, 0x04, 0x2b, 0x8d, 0xf8, - 0x2f, 0x30, 0x00, 0xf2, 0xee, 0x82, 0x01, 0x2b, 0x00, 0xf2, 0xf1, 0x82, - 0x00, 0xf0, 0x78, 0x83, 0xff, 0x23, 0x85, 0xf8, 0x64, 0x30, 0x73, 0xe3, - 0x0a, 0x9b, 0x0a, 0xa9, 0xe2, 0x6d, 0x02, 0x20, 0x63, 0x65, 0x0a, 0x97, - 0xfc, 0xf7, 0x8c, 0xfb, 0x08, 0xb1, 0x01, 0x26, 0xd6, 0xe7, 0x0a, 0x9b, - 0x20, 0x6a, 0x23, 0x66, 0xfc, 0xf7, 0xc4, 0xfb, 0x06, 0x46, 0xa0, 0x6d, - 0xfc, 0xf7, 0xc0, 0xfb, 0xb0, 0x42, 0x2c, 0xbf, 0xa0, 0x66, 0xa6, 0x66, - 0x00, 0x20, 0xff, 0xf7, 0x8b, 0xfb, 0x06, 0x46, 0x50, 0xb1, 0x2b, 0x78, - 0x1b, 0xb1, 0x00, 0x21, 0x44, 0x48, 0x0b, 0xf0, 0xb9, 0xf8, 0x3e, 0x4b, - 0x01, 0x22, 0x83, 0xf8, 0x64, 0x20, 0xc5, 0xe7, 0xd4, 0xf8, 0x28, 0x80, - 0xb8, 0xf5, 0x70, 0x7f, 0x04, 0xd8, 0xd4, 0xf8, 0x54, 0xe0, 0xbe, 0xf5, - 0x70, 0x7f, 0x06, 0xd9, 0x2b, 0x78, 0x00, 0x2b, 0xed, 0xd0, 0x3b, 0x48, - 0x18, 0xf0, 0xb4, 0xfd, 0xe9, 0xe7, 0xa3, 0x6d, 0x05, 0x46, 0xd4, 0xf8, - 0x24, 0xb0, 0x02, 0x46, 0x9b, 0x68, 0x01, 0x46, 0x84, 0x46, 0x02, 0x90, - 0x05, 0x93, 0x23, 0x6d, 0x03, 0x93, 0x03, 0x46, 0x88, 0x45, 0x0e, 0xd8, - 0x96, 0x45, 0x0c, 0xd8, 0x88, 0x45, 0x25, 0x4d, 0x04, 0xd1, 0x96, 0x45, - 0x02, 0xd1, 0x02, 0x9b, 0x9c, 0x45, 0x61, 0xd0, 0x2b, 0x78, 0x00, 0x2b, - 0xcd, 0xd0, 0x2c, 0x48, 0xde, 0xe7, 0x83, 0x42, 0x1b, 0xd1, 0x0b, 0xeb, - 0xc1, 0x0a, 0x03, 0x9f, 0x01, 0x31, 0xda, 0xf8, 0x04, 0xa0, 0x53, 0x44, - 0x07, 0xeb, 0xc2, 0x0a, 0x01, 0x32, 0xda, 0xf8, 0x04, 0xa0, 0x50, 0x44, - 0x83, 0x42, 0xdd, 0xd1, 0x02, 0x98, 0x9c, 0x44, 0x18, 0x44, 0x02, 0x90, - 0x05, 0x98, 0x98, 0x42, 0x21, 0xd2, 0x13, 0x4b, 0x1b, 0x78, 0x00, 0x2b, - 0xaf, 0xd0, 0x1e, 0x48, 0xc0, 0xe7, 0x0f, 0xd2, 0x0b, 0xeb, 0xc1, 0x0a, - 0x02, 0x2d, 0xda, 0xf8, 0x04, 0xa0, 0x53, 0x44, 0x05, 0xd1, 0x0c, 0x4b, - 0x1b, 0x78, 0x00, 0x2b, 0xa1, 0xd0, 0x18, 0x48, 0xb2, 0xe7, 0x01, 0x31, - 0x01, 0x25, 0xdf, 0xe7, 0x03, 0x9f, 0x01, 0x2d, 0x07, 0xeb, 0xc2, 0x0a, - 0xda, 0xf8, 0x04, 0xa0, 0x50, 0x44, 0xee, 0xd0, 0x01, 0x32, 0x02, 0x25, - 0xd4, 0xe7, 0x00, 0x25, 0x28, 0x46, 0x2b, 0x46, 0xb0, 0xe7, 0x00, 0xbf, - 0xd8, 0x0d, 0x00, 0x24, 0x30, 0xd6, 0x01, 0x08, 0x43, 0xd6, 0x01, 0x08, - 0x59, 0xd6, 0x01, 0x08, 0xb8, 0x09, 0x00, 0x24, 0x14, 0x07, 0x00, 0x24, - 0x74, 0x0e, 0x00, 0x24, 0xa0, 0x4c, 0x00, 0x24, 0xa0, 0x2e, 0x00, 0x24, - 0x5f, 0xd6, 0x01, 0x08, 0x9f, 0xd6, 0x01, 0x08, 0xc9, 0xd6, 0x01, 0x08, - 0x5e, 0xd7, 0x01, 0x08, 0x29, 0xd7, 0x01, 0x08, 0xf5, 0xd6, 0x01, 0x08, - 0x20, 0x22, 0xff, 0x21, 0x0d, 0xa8, 0x17, 0xf0, 0x15, 0xf9, 0x01, 0x23, - 0x00, 0x20, 0x08, 0xa9, 0x0a, 0x93, 0x03, 0xf1, 0x01, 0x23, 0x15, 0x90, - 0xcd, 0xe9, 0x0b, 0x30, 0xff, 0xf7, 0x86, 0xfc, 0x06, 0xa9, 0x02, 0x20, - 0xff, 0xf7, 0x82, 0xfc, 0x2b, 0x78, 0x6b, 0xb3, 0x9d, 0xf8, 0x20, 0x30, - 0x01, 0x2b, 0x00, 0xf0, 0xed, 0x80, 0xa5, 0x4a, 0xa5, 0x49, 0x03, 0x2b, - 0x18, 0xbf, 0x0a, 0x46, 0x9d, 0xf8, 0x23, 0x30, 0xa3, 0x49, 0x01, 0x93, - 0x9d, 0xf8, 0x22, 0x30, 0xa2, 0x48, 0x00, 0x93, 0x9d, 0xf8, 0x21, 0x30, - 0x0a, 0xf0, 0xfc, 0xff, 0x2b, 0x78, 0xab, 0xb1, 0x9d, 0xf8, 0x18, 0x30, - 0x01, 0x2b, 0x00, 0xf0, 0xd7, 0x80, 0x99, 0x4a, 0x99, 0x49, 0x03, 0x2b, - 0x18, 0xbf, 0x0a, 0x46, 0x9d, 0xf8, 0x1b, 0x30, 0x99, 0x49, 0x01, 0x93, - 0x9d, 0xf8, 0x1a, 0x30, 0x96, 0x48, 0x00, 0x93, 0x9d, 0xf8, 0x19, 0x30, - 0x0a, 0xf0, 0xe4, 0xff, 0xdf, 0xf8, 0x88, 0xb2, 0x00, 0x22, 0x9d, 0xf8, - 0x22, 0x30, 0x9d, 0xf8, 0x20, 0x70, 0xda, 0x46, 0x9d, 0xf8, 0x18, 0x80, - 0x02, 0x93, 0x39, 0x46, 0x9b, 0xf8, 0x00, 0x00, 0xfc, 0xf7, 0xfd, 0xfa, - 0x00, 0x28, 0x00, 0xf0, 0xb9, 0x80, 0x41, 0x46, 0x9b, 0xf8, 0x01, 0x00, - 0xfc, 0xf7, 0xf5, 0xfa, 0x00, 0x28, 0x00, 0xf0, 0xb1, 0x80, 0x9b, 0xf8, - 0x02, 0x30, 0x04, 0x2b, 0x03, 0xd0, 0x02, 0x99, 0x8b, 0x42, 0x40, 0xf0, - 0xa9, 0x80, 0x0a, 0xeb, 0x82, 0x02, 0x2b, 0x78, 0xd7, 0x78, 0x6b, 0xb1, - 0x00, 0x2f, 0x00, 0xf0, 0x9d, 0x80, 0x01, 0x2f, 0x00, 0xf0, 0x9c, 0x80, - 0x7e, 0x49, 0x7f, 0x4b, 0x02, 0x2f, 0x18, 0xbf, 0x19, 0x46, 0x7e, 0x48, - 0x0a, 0xf0, 0xae, 0xff, 0x01, 0x2f, 0x15, 0x97, 0x00, 0xf0, 0xa0, 0x80, - 0x02, 0x2f, 0x00, 0xf0, 0x9e, 0x80, 0x00, 0x2f, 0x40, 0xf0, 0xb4, 0x80, - 0x9d, 0xf8, 0x2d, 0x30, 0x01, 0x2b, 0x40, 0xf0, 0x34, 0x81, 0x0a, 0x9b, - 0x01, 0x2b, 0x40, 0xf0, 0x30, 0x81, 0x9d, 0xf8, 0x2c, 0x00, 0x01, 0x28, - 0x40, 0xf0, 0x2b, 0x81, 0x9d, 0xf8, 0x2f, 0x70, 0x01, 0x2f, 0x40, 0xf0, - 0x8e, 0x81, 0x06, 0xa9, 0x00, 0x20, 0xff, 0xf7, 0xfb, 0xfb, 0x06, 0x46, - 0x00, 0x28, 0x40, 0xf0, 0x4e, 0x81, 0x08, 0xa9, 0x38, 0x46, 0xff, 0xf7, - 0xf3, 0xfb, 0x01, 0x28, 0x40, 0xf0, 0x44, 0x81, 0x2b, 0x78, 0x1b, 0xb1, - 0x31, 0x46, 0x66, 0x48, 0x0a, 0xf0, 0x7c, 0xff, 0x65, 0x4b, 0x08, 0x93, - 0x00, 0x23, 0x8d, 0xf8, 0x24, 0x30, 0x9d, 0xf8, 0x23, 0x30, 0x4f, 0xf0, - 0x00, 0x0b, 0x9d, 0xf8, 0x18, 0x20, 0x9d, 0xf8, 0x20, 0x70, 0x9d, 0xf8, - 0x1b, 0x80, 0x9d, 0xf8, 0x1a, 0xa0, 0x5e, 0x4e, 0x02, 0x93, 0x11, 0x46, - 0x30, 0x78, 0xfc, 0xf7, 0x8e, 0xfa, 0x00, 0x28, 0x00, 0xf0, 0x2d, 0x81, - 0x39, 0x46, 0x70, 0x78, 0xfc, 0xf7, 0x87, 0xfa, 0x00, 0x28, 0x00, 0xf0, - 0x26, 0x81, 0xb3, 0x78, 0x04, 0x2b, 0x02, 0xd0, 0x43, 0x45, 0x40, 0xf0, - 0x20, 0x81, 0xf3, 0x78, 0x04, 0x2b, 0x03, 0xd0, 0x02, 0x99, 0x8b, 0x42, - 0x40, 0xf0, 0x19, 0x81, 0x33, 0x79, 0x04, 0x2b, 0x02, 0xd0, 0x53, 0x45, - 0x40, 0xf0, 0x13, 0x81, 0x2b, 0x78, 0x73, 0xb1, 0x73, 0x79, 0x02, 0x2b, - 0x00, 0xf0, 0x09, 0x81, 0x03, 0x2b, 0x00, 0xf0, 0x08, 0x81, 0x49, 0x49, - 0x43, 0x4a, 0x04, 0x2b, 0x18, 0xbf, 0x11, 0x46, 0x47, 0x48, 0x0a, 0xf0, - 0x37, 0xff, 0x75, 0x79, 0xab, 0x1e, 0x02, 0x2b, 0x00, 0xf2, 0xf7, 0x80, - 0x02, 0x2d, 0x03, 0xd0, 0x04, 0x2d, 0x0c, 0xbf, 0x04, 0x25, 0x03, 0x25, - 0x01, 0x20, 0x0a, 0xa9, 0xff, 0xf7, 0x72, 0xf9, 0x00, 0x28, 0x00, 0xf0, - 0xfd, 0x80, 0x01, 0x28, 0x0c, 0xbf, 0x01, 0x25, 0x05, 0x25, 0xf7, 0xe0, - 0x3b, 0x4a, 0x15, 0xe7, 0x3a, 0x4a, 0x2b, 0xe7, 0x3a, 0x49, 0x68, 0xe7, - 0x3a, 0x49, 0x66, 0xe7, 0x01, 0x32, 0x0b, 0xf1, 0x04, 0x0b, 0x04, 0x2a, - 0x7f, 0xf4, 0x39, 0xaf, 0x2b, 0x78, 0x1b, 0xb1, 0x36, 0x48, 0x18, 0xf0, - 0x1d, 0xfc, 0x00, 0x23, 0x15, 0x93, 0x65, 0xe7, 0x02, 0x26, 0x08, 0xa9, - 0xf0, 0xb2, 0xff, 0xf7, 0xd9, 0xf8, 0x07, 0x46, 0x90, 0xb9, 0xdd, 0xf8, - 0x20, 0xa0, 0x50, 0x46, 0xfc, 0xf7, 0x45, 0xfa, 0x9a, 0xf8, 0x00, 0x30, - 0x02, 0x90, 0x02, 0x2b, 0x0f, 0xd0, 0x01, 0x2b, 0x31, 0xd9, 0x07, 0x26, - 0x08, 0x98, 0xff, 0xf7, 0xb3, 0xf8, 0x00, 0x2e, 0x3f, 0xf4, 0x4c, 0xaf, - 0x2b, 0x78, 0x00, 0x2b, 0x3f, 0xf4, 0x33, 0xae, 0x00, 0x21, 0x25, 0x48, - 0x2d, 0xe6, 0x4f, 0xf0, 0x03, 0x0b, 0x00, 0x26, 0xb0, 0x46, 0x02, 0x98, - 0x01, 0x23, 0xa1, 0x6e, 0x06, 0xaa, 0x01, 0xfb, 0x08, 0x01, 0x50, 0x46, - 0xfd, 0xf7, 0xac, 0xfc, 0x00, 0x28, 0x6c, 0xdb, 0x01, 0x22, 0x06, 0xa9, - 0x50, 0x46, 0xfc, 0xf7, 0xed, 0xf9, 0x00, 0x28, 0x36, 0xd0, 0x17, 0xb1, - 0x00, 0x2e, 0x08, 0xbf, 0x46, 0x46, 0x08, 0xf1, 0x01, 0x08, 0xd8, 0x45, - 0xe5, 0xd1, 0x00, 0x2f, 0x3f, 0xd0, 0x00, 0x2e, 0x08, 0xbf, 0x46, 0x46, - 0x30, 0xe0, 0x4f, 0xf4, 0x34, 0x6b, 0xda, 0xe7, 0x03, 0xd6, 0x01, 0x08, - 0x09, 0xd6, 0x01, 0x08, 0x89, 0xd7, 0x01, 0x08, 0x97, 0xd7, 0x01, 0x08, - 0xd6, 0xd7, 0x01, 0x08, 0xe4, 0xd8, 0x01, 0x08, 0x0d, 0xd6, 0x01, 0x08, - 0xde, 0xd7, 0x01, 0x08, 0x56, 0xd8, 0x01, 0x08, 0x03, 0x01, 0x03, 0x03, - 0x94, 0xde, 0x01, 0x08, 0x1f, 0xd6, 0x01, 0x08, 0x9f, 0xd8, 0x01, 0x08, - 0xfe, 0xd5, 0x01, 0x08, 0x00, 0xd8, 0x01, 0x08, 0x56, 0xd7, 0x01, 0x08, - 0xf1, 0xd7, 0x01, 0x08, 0x25, 0xd8, 0x01, 0x08, 0x84, 0xde, 0x01, 0x08, - 0x5f, 0xb3, 0x00, 0x2e, 0xc9, 0xd0, 0x2b, 0x78, 0x13, 0xb1, 0x9e, 0x48, - 0x18, 0xf0, 0xa4, 0xfb, 0x03, 0x23, 0xb6, 0xfb, 0xf3, 0xf3, 0x5a, 0x1c, - 0x03, 0xeb, 0x43, 0x03, 0xf6, 0x1a, 0x0a, 0x92, 0x01, 0x36, 0x8d, 0xf8, - 0x2c, 0x60, 0x08, 0x98, 0x01, 0x23, 0x06, 0xaa, 0x81, 0x68, 0x80, 0x39, - 0xfd, 0xf7, 0x52, 0xfc, 0x06, 0x46, 0x00, 0x28, 0x8e, 0xd1, 0x01, 0x22, - 0x06, 0xa9, 0x08, 0x98, 0xfc, 0xf7, 0x92, 0xf9, 0x10, 0xb1, 0x01, 0x23, - 0x8d, 0xf8, 0x18, 0x30, 0x9d, 0xf8, 0x18, 0x30, 0x03, 0xf0, 0x0f, 0x03, - 0x8d, 0xf8, 0x2f, 0x30, 0x78, 0xe7, 0x01, 0x27, 0x9d, 0xe7, 0x01, 0x26, - 0x74, 0xe7, 0x0a, 0xa8, 0x88, 0x4e, 0xff, 0xf7, 0x19, 0xfb, 0x9d, 0xf8, - 0x2f, 0x30, 0x86, 0xf8, 0x64, 0x30, 0x03, 0x3b, 0x01, 0x2b, 0x05, 0xd8, - 0xff, 0xf7, 0xae, 0xfa, 0x10, 0xb1, 0xff, 0x23, 0x86, 0xf8, 0x64, 0x30, - 0x9d, 0xf8, 0x2f, 0x30, 0x02, 0x3b, 0x02, 0x2b, 0x0b, 0xd8, 0xff, 0xf7, - 0x51, 0xf9, 0x40, 0xb1, 0xff, 0x23, 0x86, 0xf8, 0x64, 0x30, 0x2b, 0x78, - 0x3b, 0xb1, 0x7b, 0x48, 0x18, 0xf0, 0x5a, 0xfb, 0x03, 0xe0, 0x96, 0xf8, - 0x64, 0x30, 0xff, 0x2b, 0xf5, 0xd0, 0x0a, 0xa8, 0xff, 0xf7, 0x0c, 0xf9, - 0x01, 0x23, 0x86, 0xf8, 0x64, 0x30, 0x4f, 0xe5, 0x00, 0x28, 0x3f, 0xf4, - 0xc4, 0xae, 0xff, 0x25, 0x10, 0xe0, 0x72, 0x49, 0xfc, 0xe6, 0x72, 0x49, - 0xfa, 0xe6, 0x0b, 0xf1, 0x01, 0x0b, 0x06, 0x36, 0xbb, 0xf1, 0x03, 0x0f, - 0x7f, 0xf4, 0xc5, 0xae, 0x2b, 0x78, 0x13, 0xb1, 0x6d, 0x48, 0x18, 0xf0, - 0x39, 0xfb, 0x01, 0x25, 0x67, 0x4b, 0x83, 0xf8, 0x64, 0x50, 0x66, 0x4b, - 0x93, 0xf8, 0x64, 0x30, 0x01, 0x2b, 0x7f, 0xf4, 0x31, 0xad, 0x00, 0x20, - 0xff, 0xf7, 0x42, 0xf8, 0x05, 0x46, 0x00, 0x20, 0x0a, 0xa9, 0xff, 0xf7, - 0x61, 0xf8, 0x15, 0xb1, 0x00, 0x28, 0x3f, 0xf4, 0x25, 0xad, 0xe5, 0x6a, - 0x01, 0x20, 0x0a, 0xa9, 0xff, 0xf7, 0x58, 0xf8, 0x5f, 0x4b, 0x9d, 0x42, - 0x7f, 0xf4, 0x1c, 0xad, 0x00, 0x28, 0x7f, 0xf4, 0x19, 0xad, 0x04, 0x23, - 0x84, 0xf8, 0x64, 0x30, 0x14, 0xe5, 0x0a, 0xa9, 0xff, 0xf7, 0x4a, 0xf8, - 0x53, 0x4b, 0x08, 0xb1, 0x05, 0x22, 0x44, 0xe5, 0x9d, 0xf8, 0x2f, 0x20, - 0x83, 0xf8, 0x64, 0x20, 0xd1, 0xe7, 0x05, 0x2b, 0x7f, 0xf4, 0x14, 0xad, - 0xff, 0xf7, 0x42, 0xfa, 0x75, 0xe0, 0x00, 0x20, 0xff, 0xf7, 0x14, 0xf8, - 0x06, 0x46, 0x00, 0x20, 0x0a, 0xa9, 0xff, 0xf7, 0x33, 0xf8, 0x0e, 0xb1, - 0x00, 0x28, 0x76, 0xd0, 0x3b, 0x78, 0x3b, 0xb1, 0x4b, 0x48, 0x18, 0xf0, - 0xf1, 0xfa, 0x3b, 0x78, 0x13, 0xb1, 0x4a, 0x48, 0x18, 0xf0, 0xec, 0xfa, - 0x06, 0xa9, 0x00, 0x20, 0x00, 0x26, 0xfe, 0xf7, 0xab, 0xff, 0x08, 0xa9, - 0x01, 0x20, 0xfe, 0xf7, 0xa7, 0xff, 0xb0, 0x46, 0xd5, 0xf8, 0x28, 0x90, - 0xc1, 0x45, 0x2c, 0xd1, 0x2b, 0x6c, 0x13, 0xf0, 0x0c, 0x0f, 0x36, 0xd1, - 0x3b, 0x78, 0x1b, 0xb1, 0x31, 0x46, 0x3f, 0x48, 0x0a, 0xf0, 0xc4, 0xfd, - 0x00, 0x23, 0x06, 0x99, 0x08, 0x98, 0x1a, 0x46, 0x00, 0x96, 0xfd, 0xf7, - 0x1b, 0xfc, 0x81, 0x46, 0x90, 0xbb, 0x23, 0x6d, 0x01, 0x46, 0x08, 0x98, - 0x5a, 0x68, 0xfe, 0xf7, 0x39, 0xff, 0xd4, 0xe9, 0x14, 0x23, 0x01, 0x3b, - 0x52, 0xf8, 0x33, 0x10, 0x02, 0xeb, 0xc3, 0x00, 0x13, 0x68, 0x42, 0x68, - 0xc9, 0x1a, 0x08, 0x98, 0xfe, 0xf7, 0x2c, 0xff, 0x06, 0x98, 0xfe, 0xf7, - 0x65, 0xff, 0x08, 0x98, 0xfe, 0xf7, 0x62, 0xff, 0x18, 0xe0, 0x63, 0x6a, - 0x31, 0x46, 0x06, 0x98, 0x03, 0xeb, 0xc8, 0x03, 0x08, 0xf1, 0x01, 0x08, - 0xd3, 0xf8, 0x04, 0xa0, 0x52, 0x46, 0x56, 0x44, 0xfe, 0xf7, 0x18, 0xff, - 0xc2, 0xe7, 0x26, 0x49, 0x0a, 0xab, 0x08, 0x9a, 0x01, 0xf1, 0x40, 0x00, - 0xfe, 0xf7, 0xe2, 0xfb, 0x00, 0x28, 0x11, 0xda, 0x4f, 0xf0, 0x03, 0x09, - 0x95, 0xf8, 0x64, 0x30, 0xda, 0x1e, 0x01, 0x2a, 0x18, 0xd8, 0xff, 0xf7, - 0xd1, 0xf9, 0x81, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x9d, 0xac, 0xff, 0xf7, - 0x79, 0xf8, 0x81, 0x46, 0x80, 0xb1, 0x97, 0xe4, 0xac, 0xd1, 0x0a, 0xaa, - 0x01, 0x21, 0x18, 0x48, 0xfd, 0xf7, 0xf0, 0xfa, 0x00, 0x28, 0xa5, 0xd0, - 0xe4, 0xe7, 0x0a, 0xa8, 0xff, 0xf7, 0x1e, 0xfa, 0x81, 0x46, 0xe1, 0xe7, - 0x02, 0x2b, 0xea, 0xd0, 0x95, 0xf8, 0x64, 0x30, 0xff, 0x2b, 0x24, 0xd1, - 0x3b, 0x78, 0xfb, 0xb9, 0x0a, 0xa8, 0xff, 0xf7, 0x29, 0xf8, 0x81, 0x46, - 0x08, 0xb3, 0x4f, 0xf0, 0xff, 0x34, 0x2d, 0xe0, 0x05, 0xd8, 0x01, 0x08, - 0x14, 0x07, 0x00, 0x24, 0x4d, 0xd8, 0x01, 0x08, 0x26, 0xd6, 0x01, 0x08, - 0x2b, 0xd6, 0x01, 0x08, 0xb0, 0xd8, 0x01, 0x08, 0x3d, 0xb8, 0xf3, 0x96, - 0xc2, 0xd8, 0x01, 0x08, 0xf1, 0xd8, 0x01, 0x08, 0x0c, 0xd9, 0x01, 0x08, - 0x40, 0x07, 0x00, 0x24, 0x80, 0x07, 0x00, 0x24, 0x1e, 0x48, 0x18, 0xf0, - 0x4f, 0xfa, 0x95, 0xf8, 0x64, 0x30, 0x01, 0x2b, 0xd8, 0xd1, 0x00, 0x21, - 0x08, 0x46, 0xfe, 0xf7, 0x81, 0xff, 0x04, 0x46, 0x40, 0xb9, 0x01, 0x46, - 0x30, 0x22, 0x0a, 0xa8, 0xa1, 0x46, 0x16, 0xf0, 0x21, 0xfe, 0x2b, 0x6a, - 0x5b, 0x68, 0x04, 0x93, 0xa8, 0x6d, 0xb9, 0xf1, 0x00, 0x0f, 0x18, 0xbf, - 0x4c, 0x46, 0xfe, 0xf7, 0xe5, 0xfe, 0xe8, 0x6c, 0xfe, 0xf7, 0xe2, 0xfe, - 0x28, 0x6a, 0xfe, 0xf7, 0xdf, 0xfe, 0x3b, 0x78, 0x34, 0xb1, 0x00, 0x2b, - 0x3f, 0xf4, 0xe7, 0xab, 0x21, 0x46, 0x0b, 0x48, 0xff, 0xf7, 0xe1, 0xbb, - 0xac, 0x68, 0x04, 0x9a, 0x22, 0x44, 0x14, 0x46, 0x1b, 0xb1, 0x11, 0x46, - 0x07, 0x48, 0x0a, 0xf0, 0x0d, 0xfd, 0x13, 0xf0, 0x49, 0xfd, 0x20, 0x46, - 0x0a, 0xf0, 0xea, 0xfe, 0x00, 0x20, 0x17, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, - 0x4d, 0xd8, 0x01, 0x08, 0x4b, 0xd9, 0x01, 0x08, 0x7a, 0xd9, 0x01, 0x08, - 0x38, 0xb5, 0x43, 0x1c, 0x0c, 0x46, 0x29, 0xd0, 0x00, 0xf0, 0x0f, 0x02, - 0x1d, 0x4b, 0xc0, 0xf3, 0x03, 0x10, 0x53, 0xf8, 0x22, 0x50, 0xfc, 0xf7, - 0x31, 0xfc, 0x1b, 0x49, 0x1b, 0x4b, 0xd1, 0xf8, 0x94, 0x20, 0x9a, 0x42, - 0xfb, 0xd1, 0x05, 0xfb, 0x05, 0xf2, 0x01, 0x68, 0x02, 0xeb, 0x42, 0x03, - 0x0b, 0x40, 0xb3, 0xfb, 0xf2, 0xf3, 0x01, 0x3b, 0x01, 0x2b, 0x19, 0xd8, - 0xe3, 0x1e, 0x02, 0x2b, 0x43, 0x68, 0x0c, 0xd8, 0x2b, 0x43, 0x03, 0x2c, - 0x43, 0x60, 0x19, 0xd1, 0x01, 0x22, 0x29, 0x46, 0xfc, 0xf7, 0x9a, 0xf8, - 0x0c, 0x4b, 0x4f, 0xf4, 0x40, 0x72, 0x5a, 0x61, 0x38, 0xbd, 0x23, 0xea, - 0x05, 0x03, 0x01, 0x2c, 0x43, 0x60, 0xf1, 0xd0, 0x02, 0x2c, 0x07, 0xd0, - 0x00, 0x22, 0xee, 0xe7, 0x04, 0xf0, 0xfd, 0x03, 0x01, 0x2b, 0xe9, 0xd0, - 0x05, 0x2c, 0xf5, 0xd1, 0x02, 0x22, 0xe6, 0xe7, 0x05, 0x2c, 0xf2, 0xe7, - 0xd0, 0xde, 0x01, 0x08, 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, - 0x2d, 0xe9, 0xf8, 0x43, 0x46, 0x1c, 0x05, 0x46, 0x0c, 0x46, 0x00, 0xf0, - 0x9c, 0x80, 0x1f, 0xfa, 0x80, 0xf9, 0x55, 0x4a, 0x40, 0xf4, 0x70, 0x61, - 0xb2, 0xf9, 0x00, 0x30, 0x58, 0x1c, 0x4b, 0xd1, 0x00, 0x26, 0x52, 0x4b, - 0x09, 0xf0, 0x0f, 0x02, 0xc5, 0xf3, 0x03, 0x10, 0x53, 0xf8, 0x22, 0x70, - 0xfc, 0xf7, 0xdc, 0xfb, 0x4e, 0x49, 0x4f, 0x4b, 0xd1, 0xf8, 0x94, 0x20, - 0x9a, 0x42, 0xfb, 0xd1, 0x07, 0xfb, 0x07, 0xfc, 0xc4, 0xf3, 0x83, 0x12, - 0x83, 0x68, 0x0c, 0xeb, 0x4c, 0x0e, 0x0f, 0x2a, 0x6f, 0xea, 0x0e, 0x01, - 0x14, 0xbf, 0x02, 0xfb, 0x0c, 0xf2, 0x43, 0xea, 0x0e, 0x03, 0x4f, 0xf4, - 0x40, 0x7e, 0x1c, 0xbf, 0x0b, 0x40, 0x13, 0x43, 0x04, 0xf0, 0x07, 0x02, - 0x83, 0x60, 0x02, 0x2a, 0x3f, 0x4b, 0xc3, 0xf8, 0x14, 0xe0, 0x36, 0xd1, - 0x0e, 0xf1, 0x00, 0x4e, 0xd3, 0xf8, 0x94, 0x80, 0xf0, 0x45, 0xfb, 0xd1, - 0x19, 0xf0, 0x08, 0x0f, 0xc4, 0xf3, 0x83, 0x28, 0x5d, 0xd0, 0x3b, 0x0a, - 0xd0, 0xf8, 0x24, 0xe0, 0x5b, 0x43, 0x5b, 0x43, 0xc3, 0xeb, 0x03, 0x19, - 0x03, 0xfb, 0x08, 0xf3, 0x2e, 0xea, 0x09, 0x0e, 0x4e, 0xea, 0x03, 0x03, - 0x43, 0x62, 0x31, 0x4b, 0x4f, 0xf4, 0x40, 0x7e, 0xc3, 0xf8, 0x14, 0xe0, - 0x02, 0x23, 0x1e, 0xe0, 0x43, 0xf4, 0x70, 0x63, 0x8b, 0x42, 0x10, 0xd1, - 0x04, 0xf0, 0x03, 0x03, 0x56, 0x68, 0x03, 0x2b, 0xab, 0xd1, 0x09, 0xf4, - 0x70, 0x63, 0xb3, 0xf5, 0x70, 0x6f, 0xa6, 0xd1, 0x32, 0x46, 0x21, 0x46, - 0x28, 0x46, 0xbd, 0xe8, 0xf8, 0x43, 0xfb, 0xf7, 0xf7, 0xbf, 0x08, 0x32, - 0x98, 0xe7, 0x03, 0x2a, 0x3c, 0xd0, 0x02, 0xf1, 0xff, 0x3e, 0xde, 0xf1, - 0x00, 0x03, 0x43, 0xeb, 0x0e, 0x03, 0xdf, 0xf8, 0x78, 0x90, 0xdf, 0xf8, - 0x78, 0xe0, 0xd9, 0xf8, 0x94, 0x80, 0xf0, 0x45, 0xfb, 0xd1, 0xd0, 0xf8, - 0x00, 0xe0, 0x03, 0xfb, 0x0c, 0xfc, 0x01, 0x3a, 0x01, 0xea, 0x0e, 0x01, - 0x01, 0x2a, 0x41, 0xea, 0x0c, 0x01, 0x01, 0x60, 0x05, 0xd8, 0x43, 0x68, - 0x22, 0x07, 0x4c, 0xbf, 0x3b, 0x43, 0xbb, 0x43, 0x43, 0x60, 0xc4, 0xf3, - 0x01, 0x12, 0x39, 0x46, 0xfb, 0xf7, 0xe2, 0xff, 0x32, 0x46, 0x21, 0x46, - 0x28, 0x46, 0xfb, 0xf7, 0xc9, 0xff, 0x0c, 0x4b, 0x4f, 0xf4, 0x40, 0x72, - 0x5a, 0x61, 0xbd, 0xe8, 0xf8, 0x83, 0x0c, 0xfb, 0x0c, 0xf9, 0x03, 0x6a, - 0xc9, 0xeb, 0x09, 0x1e, 0x23, 0xea, 0x0e, 0x0e, 0x09, 0xfb, 0x08, 0xf3, - 0x4e, 0xea, 0x03, 0x03, 0x03, 0x62, 0xa2, 0xe7, 0x13, 0x46, 0xc6, 0xe7, - 0x64, 0xda, 0x01, 0x08, 0xd0, 0xde, 0x01, 0x08, 0x00, 0x64, 0x02, 0x58, - 0x00, 0x03, 0x00, 0x80, 0x10, 0xb5, 0x0a, 0xf0, 0x89, 0xfc, 0x13, 0x4b, - 0x13, 0x48, 0x14, 0x4a, 0x59, 0x6a, 0x14, 0x68, 0x03, 0x88, 0x11, 0x60, - 0x1b, 0x1b, 0x0b, 0x44, 0x01, 0x46, 0xb3, 0xf5, 0x80, 0x3f, 0x16, 0xd3, - 0x4f, 0xf4, 0x7a, 0x71, 0xb3, 0xfb, 0xf1, 0xf2, 0x01, 0xfb, 0x12, 0x33, - 0x03, 0x80, 0x06, 0xe0, 0x01, 0x32, 0xa3, 0xf5, 0x7a, 0x73, 0xb3, 0xf5, - 0x7a, 0x7f, 0xf9, 0xd2, 0x0b, 0x80, 0x08, 0x4c, 0x23, 0x68, 0x1a, 0x44, - 0x22, 0x60, 0x0a, 0xf0, 0x53, 0xfc, 0x20, 0x68, 0x10, 0xbd, 0x00, 0x22, - 0xf1, 0xe7, 0x00, 0xbf, 0x00, 0x0c, 0x00, 0x40, 0x6c, 0x0e, 0x00, 0x24, - 0x70, 0x0e, 0x00, 0x24, 0x00, 0x6c, 0x00, 0x24, 0x2d, 0xe9, 0xf8, 0x43, - 0x05, 0x46, 0x29, 0x4f, 0x3c, 0x69, 0xff, 0xf7, 0xc7, 0xff, 0x02, 0x2d, - 0x06, 0x46, 0x27, 0x4b, 0x26, 0xd1, 0xd7, 0xf8, 0x10, 0x41, 0x26, 0x4f, - 0x1c, 0x40, 0x44, 0xf0, 0x00, 0x44, 0xdf, 0xf8, 0x88, 0x80, 0x4c, 0xf2, - 0x50, 0x39, 0x04, 0x2f, 0x1d, 0xd1, 0xd8, 0xf8, 0x10, 0x00, 0xc0, 0xf3, - 0x80, 0x00, 0x70, 0xb9, 0x34, 0xf0, 0x00, 0x41, 0x22, 0xd0, 0x1e, 0x4a, - 0x00, 0x2c, 0x93, 0x69, 0x43, 0xea, 0x04, 0x03, 0x93, 0x61, 0x18, 0x4b, - 0x17, 0xdb, 0x5c, 0x61, 0x01, 0x20, 0xbd, 0xe8, 0xf8, 0x83, 0xff, 0xf7, - 0xa1, 0xff, 0x80, 0x1b, 0x48, 0x45, 0xe4, 0xd9, 0x03, 0x20, 0xf6, 0xe7, - 0x1c, 0x40, 0x04, 0x27, 0xdb, 0xe7, 0xd8, 0xf8, 0x10, 0x31, 0x27, 0xea, - 0x03, 0x03, 0x13, 0xf0, 0x04, 0x0f, 0x0c, 0xbf, 0x01, 0x20, 0x00, 0x20, - 0xdb, 0xe7, 0xc3, 0xf8, 0x14, 0x11, 0xe5, 0xe7, 0x01, 0x2d, 0x09, 0x4b, - 0x06, 0xd1, 0x1a, 0x69, 0xd1, 0x03, 0xe0, 0xd5, 0x4f, 0xf4, 0x80, 0x32, - 0x5a, 0x61, 0xdc, 0xe7, 0xd3, 0xf8, 0x10, 0x21, 0xd2, 0x03, 0xd8, 0xd5, - 0x4f, 0xf4, 0x80, 0x32, 0xc3, 0xf8, 0x14, 0x21, 0xd3, 0xe7, 0x00, 0xbf, - 0x00, 0x20, 0x00, 0x52, 0x00, 0x00, 0xee, 0x17, 0x04, 0x00, 0x00, 0x80, - 0x50, 0x0e, 0x00, 0x24, 0x38, 0xb5, 0x0b, 0x4c, 0x22, 0x68, 0xd3, 0x68, - 0x23, 0xf0, 0xa0, 0x03, 0xd3, 0x60, 0xff, 0xf7, 0x67, 0xff, 0x05, 0x46, - 0x23, 0x68, 0xdb, 0x68, 0x9b, 0x06, 0x01, 0xd5, 0x00, 0x20, 0x38, 0xbd, - 0xff, 0xf7, 0x5e, 0xff, 0x40, 0x1b, 0xb0, 0xf5, 0x7a, 0x7f, 0xf3, 0xd9, - 0x03, 0x20, 0xf6, 0xe7, 0x44, 0x05, 0x00, 0x24, 0x38, 0xb5, 0x11, 0x4c, - 0xe3, 0x68, 0x03, 0xf0, 0x07, 0x03, 0x06, 0x2b, 0x06, 0xd0, 0xe0, 0x68, - 0x00, 0xf0, 0x3f, 0x00, 0x16, 0x38, 0x18, 0xbf, 0x01, 0x20, 0x38, 0xbd, - 0xe3, 0x68, 0x23, 0xf0, 0x3f, 0x03, 0x43, 0xf0, 0x16, 0x03, 0xe3, 0x60, - 0xff, 0xf7, 0x40, 0xff, 0x05, 0x46, 0x63, 0x68, 0x9b, 0x04, 0x01, 0xd5, - 0x00, 0x20, 0xf0, 0xe7, 0xff, 0xf7, 0x38, 0xff, 0x40, 0x1b, 0xb0, 0xf5, - 0x7a, 0x7f, 0xf4, 0xd9, 0x01, 0x20, 0xe8, 0xe7, 0x00, 0x48, 0x02, 0x58, - 0x70, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x23, 0x68, 0xdb, 0x69, - 0x35, 0xea, 0x03, 0x03, 0x01, 0xd1, 0x00, 0x20, 0x17, 0xe0, 0xff, 0xf7, - 0x23, 0xff, 0x80, 0x1b, 0x23, 0x68, 0xb0, 0xf1, 0x00, 0x7f, 0x1a, 0x68, - 0x10, 0xd3, 0x22, 0xf4, 0xd0, 0x72, 0x1a, 0x60, 0x9a, 0x68, 0x22, 0xf0, - 0x01, 0x02, 0x9a, 0x60, 0x20, 0x23, 0xc4, 0xf8, 0x84, 0x30, 0xc4, 0xf8, - 0x88, 0x30, 0x00, 0x23, 0x03, 0x20, 0x84, 0xf8, 0x80, 0x30, 0x70, 0xbd, - 0x51, 0x07, 0xdd, 0xd5, 0xda, 0x69, 0x12, 0x05, 0xda, 0xd5, 0x4f, 0xf4, - 0x00, 0x62, 0x1a, 0x62, 0x1a, 0x68, 0x22, 0xf4, 0xd0, 0x72, 0x1a, 0x60, + 0x04, 0x00, 0x40, 0xf0, 0x93, 0x81, 0x23, 0x68, 0x01, 0x2b, 0x40, 0xf0, + 0x8f, 0x81, 0x23, 0x79, 0x01, 0x2b, 0x40, 0xf0, 0x8b, 0x81, 0xb9, 0x4d, + 0xb9, 0x4e, 0x2a, 0x68, 0xb2, 0x42, 0x02, 0xd1, 0x05, 0xa9, 0xff, 0xf7, + 0x6f, 0xfd, 0x6b, 0x69, 0x13, 0xf0, 0x0c, 0x0f, 0x00, 0xf0, 0xb9, 0x81, + 0xb2, 0x49, 0x23, 0x46, 0x2a, 0x6a, 0x01, 0xf1, 0x6c, 0x00, 0xfe, 0xf7, + 0x95, 0xff, 0x01, 0x46, 0x18, 0xb9, 0x22, 0x46, 0xaf, 0x48, 0xff, 0xf7, + 0xdb, 0xfd, 0xeb, 0x6a, 0xb3, 0x42, 0x03, 0xd1, 0x04, 0xa9, 0x01, 0x20, + 0xff, 0xf7, 0x56, 0xfd, 0x2b, 0x6c, 0x13, 0xf0, 0x0c, 0x0f, 0x00, 0xf0, + 0xa7, 0x81, 0xa9, 0x49, 0x23, 0x46, 0xea, 0x6c, 0x01, 0xf1, 0x40, 0x00, + 0xfe, 0xf7, 0x7c, 0xff, 0x20, 0xb9, 0x22, 0x46, 0x01, 0x21, 0xa3, 0x48, + 0xff, 0xf7, 0xc2, 0xfd, 0x95, 0xf8, 0x88, 0x31, 0xab, 0xb1, 0x04, 0xf1, + 0x2c, 0x02, 0x04, 0xf1, 0x1c, 0x03, 0x11, 0x46, 0x53, 0xf8, 0x04, 0x0b, + 0x93, 0x42, 0x41, 0xf8, 0x04, 0x0b, 0xf9, 0xd1, 0x4f, 0xf4, 0x8c, 0x72, + 0x00, 0x21, 0x9b, 0x48, 0x17, 0xf0, 0xd0, 0xfb, 0x22, 0x46, 0x02, 0x21, + 0x96, 0x48, 0xff, 0xf7, 0xa9, 0xfd, 0xdd, 0xe9, 0x04, 0x32, 0x93, 0x42, + 0x88, 0xbf, 0x05, 0x93, 0x05, 0x9b, 0xa3, 0x60, 0x8f, 0x4d, 0x00, 0x23, + 0x05, 0x99, 0x6e, 0x6a, 0x1a, 0x46, 0x2f, 0x6d, 0x18, 0x46, 0x9a, 0x46, + 0xa8, 0x46, 0x91, 0x42, 0x01, 0xd8, 0x9a, 0x42, 0x05, 0xd2, 0x06, 0xeb, + 0xca, 0x05, 0x0a, 0xf1, 0x01, 0x0a, 0x6d, 0x68, 0x2a, 0x44, 0x99, 0x42, + 0x02, 0xd8, 0x93, 0x42, 0x80, 0xf0, 0x8d, 0x81, 0x07, 0xeb, 0xc0, 0x05, + 0x91, 0x42, 0x00, 0xf1, 0x01, 0x00, 0x6d, 0x68, 0x2b, 0x44, 0xec, 0xd8, + 0x99, 0x42, 0xe6, 0xd8, 0x9a, 0x42, 0xe4, 0xd1, 0xd1, 0x46, 0x4f, 0xf0, + 0x00, 0x0b, 0x81, 0x4b, 0x5d, 0x46, 0x0b, 0xf1, 0x01, 0x0b, 0x1b, 0x78, + 0x2b, 0xb1, 0x0a, 0xf1, 0x01, 0x02, 0x59, 0x46, 0x7d, 0x48, 0x08, 0xf0, + 0x63, 0xfa, 0xd8, 0xf8, 0x58, 0x30, 0xd8, 0xf8, 0x24, 0x20, 0x99, 0x68, + 0x00, 0x23, 0x10, 0x1d, 0x1f, 0x46, 0x50, 0xf8, 0x39, 0x30, 0x3b, 0x44, + 0x99, 0x42, 0x03, 0xd3, 0xb9, 0xf1, 0x01, 0x09, 0xf6, 0xd2, 0x1f, 0x46, + 0x21, 0x68, 0x4b, 0x1e, 0xab, 0x42, 0x00, 0xf2, 0x4a, 0x81, 0x09, 0xf1, + 0x01, 0x00, 0x13, 0x68, 0xd8, 0xf8, 0x68, 0x50, 0x52, 0xf8, 0x30, 0x60, + 0xd8, 0xf8, 0x28, 0x00, 0xf6, 0x1a, 0x01, 0x38, 0x07, 0xeb, 0x06, 0x0c, + 0x52, 0xf8, 0x30, 0x20, 0xd3, 0x1a, 0x9c, 0x45, 0x40, 0xf2, 0x25, 0x81, + 0x4f, 0xf4, 0x34, 0x63, 0x6f, 0xf0, 0xdf, 0x02, 0x01, 0x29, 0x03, 0xfb, + 0x15, 0x25, 0x3d, 0x44, 0x40, 0xf0, 0x1c, 0x81, 0x7b, 0x1b, 0x18, 0xbf, + 0x01, 0x23, 0xa3, 0x71, 0x06, 0xa9, 0x00, 0x20, 0xff, 0xf7, 0xf0, 0xfb, + 0x07, 0xa9, 0x01, 0x20, 0xff, 0xf7, 0xec, 0xfb, 0x08, 0xa9, 0x02, 0x20, + 0xff, 0xf7, 0xe8, 0xfb, 0x23, 0x79, 0x01, 0x2b, 0x40, 0xf0, 0x0a, 0x81, + 0x08, 0x98, 0x00, 0x21, 0x82, 0x68, 0xfe, 0xf7, 0x2b, 0xfd, 0x23, 0x68, + 0x01, 0x2b, 0x13, 0xd1, 0x21, 0x46, 0x08, 0x98, 0xff, 0xf7, 0x8e, 0xfe, + 0xa3, 0x79, 0x6b, 0xb9, 0x06, 0x98, 0x03, 0x93, 0xfe, 0xf7, 0x2e, 0xfd, + 0x21, 0x46, 0x06, 0x98, 0xff, 0xf7, 0x84, 0xfe, 0x08, 0x98, 0x03, 0x9b, + 0x82, 0x68, 0x19, 0x46, 0xfe, 0xf7, 0x14, 0xfd, 0x00, 0x23, 0x32, 0x46, + 0x00, 0x95, 0xdd, 0xe9, 0x07, 0x01, 0xfe, 0xf7, 0xd7, 0xfd, 0x20, 0x46, + 0xff, 0xf7, 0xbc, 0xfe, 0x02, 0x23, 0x23, 0x71, 0x18, 0xb1, 0x45, 0x4a, + 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x3a, 0x46, 0x31, 0x46, 0x07, 0x98, + 0xfe, 0xf7, 0xfe, 0xfc, 0x33, 0x46, 0x32, 0x46, 0x00, 0x95, 0xdd, 0xe9, + 0x06, 0x01, 0xfe, 0xf7, 0xc1, 0xfd, 0x23, 0x68, 0x01, 0x2b, 0x04, 0xd1, + 0xa3, 0x79, 0x13, 0xb9, 0x07, 0x98, 0xfe, 0xf7, 0xff, 0xfc, 0x20, 0x46, + 0xff, 0xf7, 0x9e, 0xfe, 0x03, 0x23, 0x23, 0x71, 0x18, 0xb1, 0x36, 0x4a, + 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x3a, 0x46, 0x31, 0x46, 0x06, 0x98, + 0xfe, 0xf7, 0xe0, 0xfc, 0x33, 0x46, 0x00, 0x22, 0x06, 0x99, 0x08, 0x98, + 0x00, 0x95, 0xfe, 0xf7, 0xa3, 0xfd, 0xa3, 0x79, 0x00, 0x2b, 0x39, 0xd0, + 0x08, 0x98, 0xff, 0xf7, 0x7a, 0xfe, 0xd8, 0xf8, 0x68, 0x30, 0x02, 0x46, + 0x06, 0x99, 0x5b, 0x00, 0x08, 0x98, 0x00, 0x93, 0x73, 0x19, 0xfe, 0xf7, + 0x93, 0xfd, 0x18, 0xb1, 0x25, 0x4a, 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, + 0x0a, 0xa9, 0x08, 0x98, 0xff, 0xf7, 0xa0, 0xfd, 0x9d, 0xf8, 0x2b, 0x30, + 0x01, 0x2b, 0x02, 0xd1, 0x06, 0x98, 0xfe, 0xf7, 0xac, 0xfc, 0x9d, 0xf8, + 0x29, 0x10, 0x01, 0x29, 0x02, 0xd0, 0x06, 0x98, 0xfe, 0xf7, 0x98, 0xfc, + 0x06, 0x98, 0x09, 0xaa, 0xa3, 0x68, 0x81, 0x68, 0x09, 0x93, 0x04, 0x23, + 0xa0, 0x39, 0xfe, 0xf7, 0x61, 0xfc, 0x22, 0x46, 0x00, 0x21, 0x06, 0x98, + 0xfc, 0xf7, 0x54, 0xfc, 0x22, 0x46, 0x01, 0x21, 0x06, 0x98, 0xfc, 0xf7, + 0x4f, 0xfc, 0x06, 0x98, 0xff, 0xf7, 0x5a, 0xfd, 0x00, 0x23, 0xa5, 0x79, + 0x20, 0x46, 0xa3, 0x71, 0xff, 0xf7, 0x48, 0xfe, 0x23, 0x68, 0x01, 0x33, + 0x23, 0x60, 0x01, 0x23, 0x23, 0x71, 0xa8, 0xb1, 0x09, 0x4a, 0x13, 0x68, + 0x01, 0x33, 0x13, 0x60, 0x10, 0xe0, 0x00, 0xbf, 0x28, 0x07, 0x00, 0x24, + 0x3d, 0xb8, 0xf3, 0x96, 0x94, 0x07, 0x00, 0x24, 0x54, 0x07, 0x00, 0x24, + 0xd0, 0x09, 0x00, 0x24, 0x08, 0x0b, 0x02, 0x24, 0x2d, 0xd4, 0x01, 0x08, + 0x04, 0x0b, 0x00, 0x24, 0x00, 0x2d, 0x57, 0xd0, 0x3a, 0x46, 0x00, 0x21, + 0x08, 0x98, 0xfe, 0xf7, 0x73, 0xfc, 0x51, 0xe0, 0x0a, 0xa8, 0xff, 0xf7, + 0x31, 0xfc, 0x50, 0xb9, 0x0a, 0x98, 0x04, 0x23, 0x04, 0xf1, 0x08, 0x02, + 0x81, 0x68, 0xa0, 0x39, 0xfe, 0xf7, 0xa2, 0xfc, 0x0a, 0x98, 0xff, 0xf7, + 0x03, 0xfb, 0x04, 0xf1, 0x1c, 0x05, 0xa3, 0x68, 0x00, 0x26, 0x39, 0x4f, + 0xa9, 0x46, 0x04, 0xf1, 0x2c, 0x08, 0x05, 0x93, 0x0a, 0xa8, 0x5f, 0xfa, + 0x86, 0xfa, 0xa5, 0xf1, 0x10, 0x0b, 0xff, 0xf7, 0x15, 0xfc, 0x68, 0xb9, + 0x0a, 0x98, 0x10, 0x23, 0x5a, 0x46, 0x81, 0x68, 0xa1, 0xf1, 0xa0, 0x0c, + 0x71, 0x1c, 0xac, 0xeb, 0x41, 0x11, 0xfe, 0xf7, 0x83, 0xfc, 0x0a, 0x98, + 0xff, 0xf7, 0xe4, 0xfa, 0x5a, 0x46, 0x12, 0xf8, 0x01, 0x3b, 0xff, 0x2b, + 0x3d, 0xd1, 0x95, 0x42, 0xf9, 0xd1, 0x10, 0x35, 0x00, 0x2e, 0x7f, 0xf4, + 0x8f, 0xae, 0x01, 0x26, 0xdc, 0xe7, 0x10, 0x22, 0xff, 0x21, 0x04, 0xf1, + 0x0c, 0x00, 0x17, 0xf0, 0x4b, 0xfa, 0x4c, 0xe6, 0x10, 0x22, 0xff, 0x21, + 0x04, 0xf1, 0x1c, 0x00, 0x17, 0xf0, 0x44, 0xfa, 0x77, 0xe6, 0x3d, 0x46, + 0x00, 0x23, 0xe4, 0xe6, 0x02, 0x2b, 0x3f, 0xf4, 0x20, 0xaf, 0x03, 0x2b, + 0x3f, 0xf4, 0x3b, 0xaf, 0x06, 0x98, 0xff, 0xf7, 0xbd, 0xfa, 0x07, 0x98, + 0xff, 0xf7, 0xba, 0xfa, 0x08, 0x98, 0xff, 0xf7, 0xb7, 0xfa, 0xb9, 0xf1, + 0xff, 0x3f, 0x7f, 0xf4, 0x90, 0xae, 0x14, 0x4b, 0x19, 0x68, 0x00, 0x29, + 0x05, 0xdd, 0x13, 0x4b, 0x1b, 0x78, 0x13, 0xb1, 0x12, 0x48, 0x08, 0xf0, + 0xf5, 0xf8, 0x00, 0x20, 0x0d, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x91, 0x42, + 0x7f, 0xf6, 0x7a, 0xae, 0x63, 0xe6, 0x22, 0x46, 0x51, 0x46, 0x38, 0x46, + 0xff, 0xf7, 0xf4, 0xfb, 0x00, 0x2e, 0xbc, 0xd0, 0x4b, 0x46, 0x42, 0x46, + 0x53, 0xf8, 0x04, 0x1b, 0x43, 0x45, 0x42, 0xf8, 0x04, 0x1b, 0xf9, 0xd1, + 0x22, 0x46, 0x02, 0x21, 0x38, 0x46, 0xff, 0xf7, 0xe5, 0xfb, 0xae, 0xe7, + 0x94, 0x07, 0x00, 0x24, 0x04, 0x0b, 0x00, 0x24, 0x08, 0x0b, 0x02, 0x24, + 0x45, 0xd4, 0x01, 0x08, 0x38, 0xb5, 0x43, 0x1c, 0x0c, 0x46, 0x29, 0xd0, + 0x00, 0xf0, 0x0f, 0x02, 0x1d, 0x4b, 0xc0, 0xf3, 0x03, 0x10, 0x53, 0xf8, + 0x22, 0x50, 0xfd, 0xf7, 0x83, 0xfd, 0x1b, 0x49, 0x1b, 0x4b, 0xd1, 0xf8, + 0x94, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0x05, 0xfb, 0x05, 0xf2, 0x01, 0x68, + 0x02, 0xeb, 0x42, 0x03, 0x0b, 0x40, 0xb3, 0xfb, 0xf2, 0xf3, 0x01, 0x3b, + 0x01, 0x2b, 0x19, 0xd8, 0xe3, 0x1e, 0x02, 0x2b, 0x43, 0x68, 0x0c, 0xd8, + 0x2b, 0x43, 0x03, 0x2c, 0x43, 0x60, 0x19, 0xd1, 0x01, 0x22, 0x29, 0x46, + 0xfc, 0xf7, 0xee, 0xfb, 0x0c, 0x4b, 0x4f, 0xf4, 0x40, 0x72, 0x5a, 0x61, + 0x38, 0xbd, 0x23, 0xea, 0x05, 0x03, 0x01, 0x2c, 0x43, 0x60, 0xf1, 0xd0, + 0x02, 0x2c, 0x07, 0xd0, 0x00, 0x22, 0xee, 0xe7, 0x04, 0xf0, 0xfd, 0x03, + 0x01, 0x2b, 0xe9, 0xd0, 0x05, 0x2c, 0xf5, 0xd1, 0x02, 0x22, 0xe6, 0xe7, + 0x05, 0x2c, 0xf2, 0xe7, 0x10, 0xd9, 0x01, 0x08, 0x00, 0x64, 0x02, 0x58, + 0x00, 0x03, 0x00, 0x80, 0x2d, 0xe9, 0xf8, 0x43, 0x46, 0x1c, 0x05, 0x46, + 0x0c, 0x46, 0x00, 0xf0, 0x9c, 0x80, 0x1f, 0xfa, 0x80, 0xf9, 0x55, 0x4a, + 0x40, 0xf4, 0x70, 0x61, 0xb2, 0xf9, 0x00, 0x30, 0x58, 0x1c, 0x4b, 0xd1, + 0x00, 0x26, 0x52, 0x4b, 0x09, 0xf0, 0x0f, 0x02, 0xc5, 0xf3, 0x03, 0x10, + 0x53, 0xf8, 0x22, 0x70, 0xfd, 0xf7, 0x2e, 0xfd, 0x4e, 0x49, 0x4f, 0x4b, + 0xd1, 0xf8, 0x94, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0x07, 0xfb, 0x07, 0xfc, + 0xc4, 0xf3, 0x83, 0x12, 0x83, 0x68, 0x0c, 0xeb, 0x4c, 0x0e, 0x0f, 0x2a, + 0x6f, 0xea, 0x0e, 0x01, 0x14, 0xbf, 0x02, 0xfb, 0x0c, 0xf2, 0x43, 0xea, + 0x0e, 0x03, 0x4f, 0xf4, 0x40, 0x7e, 0x1c, 0xbf, 0x0b, 0x40, 0x13, 0x43, + 0x04, 0xf0, 0x07, 0x02, 0x83, 0x60, 0x02, 0x2a, 0x3f, 0x4b, 0xc3, 0xf8, + 0x14, 0xe0, 0x36, 0xd1, 0x0e, 0xf1, 0x00, 0x4e, 0xd3, 0xf8, 0x94, 0x80, + 0xf0, 0x45, 0xfb, 0xd1, 0x19, 0xf0, 0x08, 0x0f, 0xc4, 0xf3, 0x83, 0x28, + 0x5d, 0xd0, 0x3b, 0x0a, 0xd0, 0xf8, 0x24, 0xe0, 0x5b, 0x43, 0x5b, 0x43, + 0xc3, 0xeb, 0x03, 0x19, 0x03, 0xfb, 0x08, 0xf3, 0x2e, 0xea, 0x09, 0x0e, + 0x4e, 0xea, 0x03, 0x03, 0x43, 0x62, 0x31, 0x4b, 0x4f, 0xf4, 0x40, 0x7e, + 0xc3, 0xf8, 0x14, 0xe0, 0x02, 0x23, 0x1e, 0xe0, 0x43, 0xf4, 0x70, 0x63, + 0x8b, 0x42, 0x10, 0xd1, 0x04, 0xf0, 0x03, 0x03, 0x56, 0x68, 0x03, 0x2b, + 0xab, 0xd1, 0x09, 0xf4, 0x70, 0x63, 0xb3, 0xf5, 0x70, 0x6f, 0xa6, 0xd1, + 0x32, 0x46, 0x21, 0x46, 0x28, 0x46, 0xbd, 0xe8, 0xf8, 0x43, 0xfc, 0xf7, + 0x4b, 0xbb, 0x08, 0x32, 0x98, 0xe7, 0x03, 0x2a, 0x3c, 0xd0, 0x02, 0xf1, + 0xff, 0x3e, 0xde, 0xf1, 0x00, 0x03, 0x43, 0xeb, 0x0e, 0x03, 0xdf, 0xf8, + 0x78, 0x90, 0xdf, 0xf8, 0x78, 0xe0, 0xd9, 0xf8, 0x94, 0x80, 0xf0, 0x45, + 0xfb, 0xd1, 0xd0, 0xf8, 0x00, 0xe0, 0x03, 0xfb, 0x0c, 0xfc, 0x01, 0x3a, + 0x01, 0xea, 0x0e, 0x01, 0x01, 0x2a, 0x41, 0xea, 0x0c, 0x01, 0x01, 0x60, + 0x05, 0xd8, 0x43, 0x68, 0x22, 0x07, 0x4c, 0xbf, 0x3b, 0x43, 0xbb, 0x43, + 0x43, 0x60, 0xc4, 0xf3, 0x01, 0x12, 0x39, 0x46, 0xfc, 0xf7, 0x36, 0xfb, + 0x32, 0x46, 0x21, 0x46, 0x28, 0x46, 0xfc, 0xf7, 0x1d, 0xfb, 0x0c, 0x4b, + 0x4f, 0xf4, 0x40, 0x72, 0x5a, 0x61, 0xbd, 0xe8, 0xf8, 0x83, 0x0c, 0xfb, + 0x0c, 0xf9, 0x03, 0x6a, 0xc9, 0xeb, 0x09, 0x1e, 0x23, 0xea, 0x0e, 0x0e, + 0x09, 0xfb, 0x08, 0xf3, 0x4e, 0xea, 0x03, 0x03, 0x03, 0x62, 0xa2, 0xe7, + 0x13, 0x46, 0xc6, 0xe7, 0x3c, 0xd5, 0x01, 0x08, 0x10, 0xd9, 0x01, 0x08, + 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, 0x10, 0xb5, 0x0a, 0xf0, + 0x97, 0xf9, 0x13, 0x4b, 0x13, 0x48, 0x14, 0x4a, 0x59, 0x6a, 0x14, 0x68, + 0x03, 0x88, 0x11, 0x60, 0x1b, 0x1b, 0x0b, 0x44, 0x01, 0x46, 0xb3, 0xf5, + 0x80, 0x3f, 0x16, 0xd3, 0x4f, 0xf4, 0x7a, 0x71, 0xb3, 0xfb, 0xf1, 0xf2, + 0x01, 0xfb, 0x12, 0x33, 0x03, 0x80, 0x06, 0xe0, 0x01, 0x32, 0xa3, 0xf5, + 0x7a, 0x73, 0xb3, 0xf5, 0x7a, 0x7f, 0xf9, 0xd2, 0x0b, 0x80, 0x08, 0x4c, + 0x23, 0x68, 0x1a, 0x44, 0x22, 0x60, 0x0a, 0xf0, 0x61, 0xf9, 0x20, 0x68, + 0x10, 0xbd, 0x00, 0x22, 0xf1, 0xe7, 0x00, 0xbf, 0x00, 0x0c, 0x00, 0x40, + 0x9c, 0x0b, 0x02, 0x24, 0xa0, 0x0b, 0x02, 0x24, 0x28, 0x0d, 0x02, 0x24, + 0x38, 0xb5, 0x0b, 0x4c, 0x22, 0x68, 0xd3, 0x68, 0x23, 0xf0, 0xa0, 0x03, + 0xd3, 0x60, 0xff, 0xf7, 0xc5, 0xff, 0x05, 0x46, 0x23, 0x68, 0xdb, 0x68, + 0x9b, 0x06, 0x01, 0xd5, 0x00, 0x20, 0x38, 0xbd, 0xff, 0xf7, 0xbc, 0xff, + 0x40, 0x1b, 0xb0, 0xf5, 0x7a, 0x7f, 0xf3, 0xd9, 0x03, 0x20, 0xf6, 0xe7, + 0x44, 0x05, 0x00, 0x24, 0x2d, 0xe9, 0xf8, 0x43, 0x05, 0x46, 0x29, 0x4f, + 0x3c, 0x69, 0xff, 0xf7, 0xad, 0xff, 0x02, 0x2d, 0x06, 0x46, 0x27, 0x4b, + 0x26, 0xd1, 0xd7, 0xf8, 0x10, 0x41, 0x26, 0x4f, 0x1c, 0x40, 0x44, 0xf0, + 0x00, 0x44, 0xdf, 0xf8, 0x88, 0x80, 0x4c, 0xf2, 0x50, 0x39, 0x04, 0x2f, + 0x1d, 0xd1, 0xd8, 0xf8, 0x10, 0x00, 0xc0, 0xf3, 0x80, 0x00, 0x70, 0xb9, + 0x34, 0xf0, 0x00, 0x41, 0x22, 0xd0, 0x1e, 0x4a, 0x00, 0x2c, 0x93, 0x69, + 0x43, 0xea, 0x04, 0x03, 0x93, 0x61, 0x18, 0x4b, 0x17, 0xdb, 0x5c, 0x61, + 0x01, 0x20, 0xbd, 0xe8, 0xf8, 0x83, 0xff, 0xf7, 0x87, 0xff, 0x80, 0x1b, + 0x48, 0x45, 0xe4, 0xd9, 0x03, 0x20, 0xf6, 0xe7, 0x1c, 0x40, 0x04, 0x27, + 0xdb, 0xe7, 0xd8, 0xf8, 0x10, 0x31, 0x27, 0xea, 0x03, 0x03, 0x13, 0xf0, + 0x04, 0x0f, 0x0c, 0xbf, 0x01, 0x20, 0x00, 0x20, 0xdb, 0xe7, 0xc3, 0xf8, + 0x14, 0x11, 0xe5, 0xe7, 0x01, 0x2d, 0x09, 0x4b, 0x06, 0xd1, 0x1a, 0x69, + 0xd1, 0x03, 0xe0, 0xd5, 0x4f, 0xf4, 0x80, 0x32, 0x5a, 0x61, 0xdc, 0xe7, + 0xd3, 0xf8, 0x10, 0x21, 0xd2, 0x03, 0xd8, 0xd5, 0x4f, 0xf4, 0x80, 0x32, + 0xc3, 0xf8, 0x14, 0x21, 0xd3, 0xe7, 0x00, 0xbf, 0x00, 0x20, 0x00, 0x52, + 0x00, 0x00, 0xee, 0x17, 0x04, 0x00, 0x00, 0x80, 0x80, 0x0b, 0x02, 0x24, + 0x38, 0xb5, 0x11, 0x4c, 0xe3, 0x68, 0x03, 0xf0, 0x07, 0x03, 0x06, 0x2b, + 0x06, 0xd0, 0xe0, 0x68, 0x00, 0xf0, 0x3f, 0x00, 0x16, 0x38, 0x18, 0xbf, + 0x01, 0x20, 0x38, 0xbd, 0xe3, 0x68, 0x23, 0xf0, 0x3f, 0x03, 0x43, 0xf0, + 0x16, 0x03, 0xe3, 0x60, 0xff, 0xf7, 0x40, 0xff, 0x05, 0x46, 0x63, 0x68, + 0x9b, 0x04, 0x01, 0xd5, 0x00, 0x20, 0xf0, 0xe7, 0xff, 0xf7, 0x38, 0xff, + 0x40, 0x1b, 0xb0, 0xf5, 0x7a, 0x7f, 0xf4, 0xd9, 0x01, 0x20, 0xe8, 0xe7, + 0x00, 0x48, 0x02, 0x58, 0x70, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, + 0x23, 0x68, 0xdb, 0x69, 0x35, 0xea, 0x03, 0x03, 0x01, 0xd1, 0x00, 0x20, + 0x17, 0xe0, 0xff, 0xf7, 0x23, 0xff, 0x80, 0x1b, 0x23, 0x68, 0xb0, 0xf1, + 0x00, 0x7f, 0x1a, 0x68, 0x10, 0xd3, 0x22, 0xf4, 0xd0, 0x72, 0x1a, 0x60, 0x9a, 0x68, 0x22, 0xf0, 0x01, 0x02, 0x9a, 0x60, 0x20, 0x23, 0xc4, 0xf8, - 0x84, 0x30, 0xc4, 0xf8, 0x88, 0x30, 0xc4, 0xf8, 0x8c, 0x30, 0xe2, 0xe7, - 0xf8, 0xb5, 0x3e, 0x4c, 0x06, 0x46, 0x0d, 0x46, 0xa3, 0x6a, 0x03, 0xf0, - 0x03, 0x03, 0x03, 0x2b, 0x71, 0xd0, 0x23, 0x68, 0x23, 0xf0, 0x80, 0x53, - 0x23, 0x60, 0xff, 0xf7, 0xe5, 0xfe, 0x07, 0x46, 0x23, 0x68, 0x9a, 0x00, - 0x5a, 0xd4, 0xa3, 0x6a, 0x01, 0x2d, 0x32, 0x68, 0x23, 0xf0, 0x7c, 0x73, - 0x43, 0xea, 0x02, 0x53, 0xa3, 0x62, 0xb3, 0x68, 0xf2, 0x68, 0x03, 0xf1, - 0xff, 0x33, 0x02, 0xf1, 0xff, 0x32, 0x4f, 0xea, 0x43, 0x23, 0x4f, 0xea, - 0x02, 0x42, 0x9b, 0xb2, 0x02, 0xf4, 0xfe, 0x02, 0x43, 0xea, 0x02, 0x03, - 0x72, 0x68, 0x02, 0xf1, 0xff, 0x32, 0xc2, 0xf3, 0x08, 0x02, 0x43, 0xea, - 0x02, 0x03, 0x32, 0x69, 0x02, 0xf1, 0xff, 0x32, 0x4f, 0xea, 0x02, 0x62, - 0x02, 0xf0, 0xfe, 0x42, 0x43, 0xea, 0x02, 0x03, 0x23, 0x64, 0xe3, 0x6a, - 0x72, 0x69, 0x23, 0xf4, 0x40, 0x63, 0x43, 0xea, 0x02, 0x03, 0xe3, 0x62, - 0xe3, 0x6a, 0xb2, 0x69, 0x23, 0xf4, 0x00, 0x73, 0x43, 0xea, 0x02, 0x03, - 0xe3, 0x62, 0xe3, 0x6a, 0x23, 0xf4, 0x80, 0x73, 0xe3, 0x62, 0x63, 0x6c, - 0xf2, 0x69, 0x23, 0xf4, 0x7f, 0x43, 0x23, 0xf0, 0xf8, 0x03, 0x43, 0xea, - 0xc2, 0x03, 0x63, 0x64, 0xe3, 0x6a, 0x43, 0xf4, 0x80, 0x73, 0xe3, 0x62, - 0xe3, 0x6a, 0x0c, 0xbf, 0x43, 0xf4, 0x00, 0x03, 0x43, 0xf0, 0x80, 0x73, - 0xe3, 0x62, 0x0e, 0x4c, 0x23, 0x68, 0x43, 0xf0, 0x80, 0x53, 0x23, 0x60, - 0xff, 0xf7, 0x8c, 0xfe, 0x05, 0x46, 0x23, 0x68, 0x9b, 0x00, 0x08, 0xd5, - 0x00, 0x20, 0x05, 0xe0, 0xff, 0xf7, 0x84, 0xfe, 0xc0, 0x1b, 0x02, 0x28, - 0x9c, 0xd9, 0x03, 0x20, 0xf8, 0xbd, 0xff, 0xf7, 0x7d, 0xfe, 0x40, 0x1b, - 0x02, 0x28, 0xee, 0xd9, 0xf7, 0xe7, 0x01, 0x20, 0xf6, 0xe7, 0x00, 0xbf, - 0x00, 0x44, 0x02, 0x58, 0xf8, 0xb5, 0x3e, 0x4c, 0x06, 0x46, 0x0d, 0x46, + 0x84, 0x30, 0xc4, 0xf8, 0x88, 0x30, 0x00, 0x23, 0x03, 0x20, 0x84, 0xf8, + 0x80, 0x30, 0x70, 0xbd, 0x51, 0x07, 0xdd, 0xd5, 0xda, 0x69, 0x12, 0x05, + 0xda, 0xd5, 0x4f, 0xf4, 0x00, 0x62, 0x1a, 0x62, 0x1a, 0x68, 0x22, 0xf4, + 0xd0, 0x72, 0x1a, 0x60, 0x9a, 0x68, 0x22, 0xf0, 0x01, 0x02, 0x9a, 0x60, + 0x20, 0x23, 0xc4, 0xf8, 0x84, 0x30, 0xc4, 0xf8, 0x88, 0x30, 0xc4, 0xf8, + 0x8c, 0x30, 0xe2, 0xe7, 0xf8, 0xb5, 0x3e, 0x4c, 0x06, 0x46, 0x0d, 0x46, 0xa3, 0x6a, 0x03, 0xf0, 0x03, 0x03, 0x03, 0x2b, 0x71, 0xd0, 0x23, 0x68, - 0x23, 0xf0, 0x80, 0x63, 0x23, 0x60, 0xff, 0xf7, 0x65, 0xfe, 0x07, 0x46, - 0x23, 0x68, 0x1a, 0x01, 0x5a, 0xd4, 0xa3, 0x6a, 0x01, 0x2d, 0x32, 0x68, - 0x23, 0xf4, 0x7c, 0x33, 0x43, 0xea, 0x02, 0x33, 0xa3, 0x62, 0xb3, 0x68, + 0x23, 0xf0, 0x80, 0x53, 0x23, 0x60, 0xff, 0xf7, 0xe5, 0xfe, 0x07, 0x46, + 0x23, 0x68, 0x9a, 0x00, 0x5a, 0xd4, 0xa3, 0x6a, 0x01, 0x2d, 0x32, 0x68, + 0x23, 0xf0, 0x7c, 0x73, 0x43, 0xea, 0x02, 0x53, 0xa3, 0x62, 0xb3, 0x68, 0xf2, 0x68, 0x03, 0xf1, 0xff, 0x33, 0x02, 0xf1, 0xff, 0x32, 0x4f, 0xea, 0x43, 0x23, 0x4f, 0xea, 0x02, 0x42, 0x9b, 0xb2, 0x02, 0xf4, 0xfe, 0x02, 0x43, 0xea, 0x02, 0x03, 0x72, 0x68, 0x02, 0xf1, 0xff, 0x32, 0xc2, 0xf3, 0x08, 0x02, 0x43, 0xea, 0x02, 0x03, 0x32, 0x69, 0x02, 0xf1, 0xff, 0x32, 0x4f, 0xea, 0x02, 0x62, 0x02, 0xf0, 0xfe, 0x42, 0x43, 0xea, 0x02, 0x03, - 0xa3, 0x63, 0xe3, 0x6a, 0x72, 0x69, 0x23, 0xf0, 0xc0, 0x03, 0x43, 0xea, - 0x02, 0x03, 0xe3, 0x62, 0xe3, 0x6a, 0xb2, 0x69, 0x23, 0xf0, 0x20, 0x03, - 0x43, 0xea, 0x02, 0x03, 0xe3, 0x62, 0xe3, 0x6a, 0x23, 0xf0, 0x10, 0x03, - 0xe3, 0x62, 0xe3, 0x6b, 0xf2, 0x69, 0x23, 0xf4, 0x7f, 0x43, 0x23, 0xf0, - 0xf8, 0x03, 0x43, 0xea, 0xc2, 0x03, 0xe3, 0x63, 0xe3, 0x6a, 0x43, 0xf0, - 0x10, 0x03, 0xe3, 0x62, 0xe3, 0x6a, 0x0c, 0xbf, 0x43, 0xf4, 0x80, 0x13, - 0x43, 0xf4, 0x00, 0x13, 0xe3, 0x62, 0x0e, 0x4c, 0x23, 0x68, 0x43, 0xf0, - 0x80, 0x63, 0x23, 0x60, 0xff, 0xf7, 0x0c, 0xfe, 0x05, 0x46, 0x23, 0x68, - 0x1b, 0x01, 0x08, 0xd5, 0x00, 0x20, 0x05, 0xe0, 0xff, 0xf7, 0x04, 0xfe, + 0x23, 0x64, 0xe3, 0x6a, 0x72, 0x69, 0x23, 0xf4, 0x40, 0x63, 0x43, 0xea, + 0x02, 0x03, 0xe3, 0x62, 0xe3, 0x6a, 0xb2, 0x69, 0x23, 0xf4, 0x00, 0x73, + 0x43, 0xea, 0x02, 0x03, 0xe3, 0x62, 0xe3, 0x6a, 0x23, 0xf4, 0x80, 0x73, + 0xe3, 0x62, 0x63, 0x6c, 0xf2, 0x69, 0x23, 0xf4, 0x7f, 0x43, 0x23, 0xf0, + 0xf8, 0x03, 0x43, 0xea, 0xc2, 0x03, 0x63, 0x64, 0xe3, 0x6a, 0x43, 0xf4, + 0x80, 0x73, 0xe3, 0x62, 0xe3, 0x6a, 0x0c, 0xbf, 0x43, 0xf4, 0x00, 0x03, + 0x43, 0xf0, 0x80, 0x73, 0xe3, 0x62, 0x0e, 0x4c, 0x23, 0x68, 0x43, 0xf0, + 0x80, 0x53, 0x23, 0x60, 0xff, 0xf7, 0x8c, 0xfe, 0x05, 0x46, 0x23, 0x68, + 0x9b, 0x00, 0x08, 0xd5, 0x00, 0x20, 0x05, 0xe0, 0xff, 0xf7, 0x84, 0xfe, 0xc0, 0x1b, 0x02, 0x28, 0x9c, 0xd9, 0x03, 0x20, 0xf8, 0xbd, 0xff, 0xf7, - 0xfd, 0xfd, 0x40, 0x1b, 0x02, 0x28, 0xee, 0xd9, 0xf7, 0xe7, 0x01, 0x20, - 0xf6, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, 0xf8, 0xb5, 0x03, 0x68, - 0x05, 0x46, 0xdf, 0x07, 0x25, 0xd4, 0x2b, 0x68, 0x5e, 0x07, 0x1c, 0xd5, - 0xab, 0x4c, 0x23, 0x68, 0x43, 0xf4, 0x80, 0x73, 0x23, 0x60, 0xff, 0xf7, - 0xe5, 0xfd, 0x06, 0x46, 0x23, 0x68, 0xda, 0x05, 0x6a, 0xd5, 0xab, 0x68, - 0xa6, 0x4c, 0x01, 0x2b, 0x6c, 0xd1, 0x23, 0x6f, 0x43, 0xf0, 0x01, 0x03, - 0x23, 0x67, 0x41, 0xf2, 0x88, 0x37, 0xff, 0xf7, 0xd5, 0xfd, 0xa1, 0x4e, - 0x04, 0x46, 0x33, 0x6f, 0x9b, 0x07, 0x40, 0xf1, 0x84, 0x80, 0x69, 0x6a, - 0x00, 0x29, 0x40, 0xf0, 0x87, 0x80, 0x00, 0x20, 0x29, 0xe0, 0x9b, 0x4b, - 0x1a, 0x69, 0x99, 0x6a, 0x02, 0xf0, 0x38, 0x02, 0x10, 0x2a, 0x05, 0xd0, - 0x18, 0x2a, 0x0b, 0xd1, 0x01, 0xf0, 0x03, 0x02, 0x02, 0x2a, 0x07, 0xd1, - 0x1b, 0x68, 0x9c, 0x03, 0xc9, 0xd5, 0x6b, 0x68, 0x00, 0x2b, 0xc6, 0xd1, - 0x01, 0x20, 0x14, 0xe0, 0x6a, 0x68, 0xb2, 0xf5, 0x80, 0x3f, 0x11, 0xd1, - 0x1a, 0x68, 0x42, 0xf4, 0x80, 0x32, 0x1a, 0x60, 0xff, 0xf7, 0xaa, 0xfd, - 0x8b, 0x4e, 0x04, 0x46, 0x33, 0x68, 0x98, 0x03, 0xb5, 0xd4, 0xff, 0xf7, - 0xa3, 0xfd, 0x00, 0x1b, 0x64, 0x28, 0xf7, 0xd9, 0x03, 0x20, 0xf8, 0xbd, - 0x85, 0x4c, 0x23, 0x68, 0x92, 0xb9, 0x23, 0xf4, 0x80, 0x33, 0x23, 0x60, - 0x23, 0x68, 0x23, 0xf4, 0x80, 0x23, 0x23, 0x60, 0xff, 0xf7, 0x92, 0xfd, - 0x06, 0x46, 0x23, 0x68, 0x99, 0x03, 0x9e, 0xd5, 0xff, 0xf7, 0x8c, 0xfd, - 0x80, 0x1b, 0x64, 0x28, 0xf7, 0xd9, 0xe7, 0xe7, 0xb2, 0xf5, 0xa0, 0x2f, - 0x07, 0xd1, 0x43, 0xf4, 0x80, 0x23, 0x23, 0x60, 0x23, 0x68, 0x43, 0xf4, - 0x80, 0x33, 0x23, 0x60, 0xd0, 0xe7, 0x23, 0xf4, 0x80, 0x33, 0x23, 0x60, - 0x23, 0x68, 0x23, 0xf4, 0x80, 0x23, 0xf6, 0xe7, 0xff, 0xf7, 0x74, 0xfd, - 0x80, 0x1b, 0x64, 0x28, 0x8c, 0xd9, 0xcf, 0xe7, 0xab, 0xb9, 0x23, 0x6f, - 0x41, 0xf2, 0x88, 0x37, 0x23, 0xf0, 0x01, 0x03, 0x23, 0x67, 0x23, 0x6f, - 0x23, 0xf0, 0x04, 0x03, 0x23, 0x67, 0xff, 0xf7, 0x63, 0xfd, 0x06, 0x46, - 0x23, 0x6f, 0x98, 0x07, 0x8f, 0xd5, 0xff, 0xf7, 0x5d, 0xfd, 0x80, 0x1b, - 0xb8, 0x42, 0xf7, 0xd9, 0xb8, 0xe7, 0x05, 0x2b, 0x23, 0x6f, 0x03, 0xd1, - 0x43, 0xf0, 0x04, 0x03, 0x23, 0x67, 0x74, 0xe7, 0x23, 0xf0, 0x01, 0x03, - 0x23, 0x67, 0x23, 0x6f, 0x23, 0xf0, 0x04, 0x03, 0x70, 0xe7, 0xff, 0xf7, - 0x49, 0xfd, 0x00, 0x1b, 0xb8, 0x42, 0x7f, 0xf6, 0x72, 0xaf, 0xa3, 0xe7, - 0x58, 0x4c, 0x23, 0x69, 0x03, 0xf0, 0x38, 0x03, 0x18, 0x2b, 0x7a, 0xd0, - 0x23, 0x68, 0x02, 0x29, 0x23, 0xf0, 0x80, 0x73, 0x23, 0x60, 0x67, 0xd1, - 0xff, 0xf7, 0x36, 0xfd, 0x06, 0x46, 0x23, 0x68, 0x99, 0x01, 0x5b, 0xd4, - 0xa3, 0x6a, 0xaa, 0x6a, 0x23, 0xf4, 0x7c, 0x73, 0x23, 0xf0, 0x03, 0x03, - 0x13, 0x43, 0xea, 0x6a, 0x43, 0xea, 0x02, 0x13, 0xa3, 0x62, 0x6b, 0x6b, - 0xaa, 0x6b, 0x01, 0x3b, 0x01, 0x3a, 0x5b, 0x02, 0x12, 0x04, 0x9b, 0xb2, - 0x02, 0xf4, 0xfe, 0x02, 0x13, 0x43, 0x2a, 0x6b, 0x01, 0x3a, 0xc2, 0xf3, - 0x08, 0x02, 0x13, 0x43, 0xea, 0x6b, 0x01, 0x3a, 0x12, 0x06, 0x02, 0xf0, - 0xfe, 0x42, 0x13, 0x43, 0x23, 0x63, 0xe3, 0x6a, 0x23, 0xf0, 0x01, 0x03, - 0xe3, 0x62, 0x63, 0x6b, 0xaa, 0x6c, 0x23, 0xf4, 0x7f, 0x43, 0x23, 0xf0, - 0xf8, 0x03, 0x43, 0xea, 0xc2, 0x03, 0x63, 0x63, 0xe3, 0x6a, 0x2a, 0x6c, - 0x23, 0xf0, 0x0c, 0x03, 0x13, 0x43, 0xe3, 0x62, 0xe3, 0x6a, 0x6a, 0x6c, - 0x23, 0xf0, 0x02, 0x03, 0x33, 0x4d, 0x13, 0x43, 0xe3, 0x62, 0xe3, 0x6a, - 0x43, 0xf4, 0x80, 0x33, 0xe3, 0x62, 0xe3, 0x6a, 0x43, 0xf4, 0x00, 0x33, - 0xe3, 0x62, 0xe3, 0x6a, 0x43, 0xf4, 0x80, 0x23, 0xe3, 0x62, 0xe3, 0x6a, - 0x43, 0xf0, 0x01, 0x03, 0xe3, 0x62, 0x23, 0x68, 0x43, 0xf0, 0x80, 0x73, - 0x23, 0x60, 0xff, 0xf7, 0xe1, 0xfc, 0x04, 0x46, 0x2b, 0x68, 0x9a, 0x01, - 0x3f, 0xf5, 0x11, 0xaf, 0xff, 0xf7, 0xda, 0xfc, 0x00, 0x1b, 0x02, 0x28, - 0xf6, 0xd9, 0x35, 0xe7, 0xff, 0xf7, 0xd4, 0xfc, 0x80, 0x1b, 0x02, 0x28, - 0x9b, 0xd9, 0x2f, 0xe7, 0xff, 0xf7, 0xce, 0xfc, 0x05, 0x46, 0x23, 0x68, - 0x9b, 0x01, 0x7f, 0xf5, 0xfe, 0xae, 0xff, 0xf7, 0xc7, 0xfc, 0x40, 0x1b, - 0x02, 0x28, 0xf6, 0xd9, 0x22, 0xe7, 0x01, 0x29, 0xa2, 0x6a, 0x23, 0x6b, - 0x3f, 0xf4, 0x08, 0xaf, 0x02, 0xf0, 0x03, 0x01, 0xa8, 0x6a, 0x81, 0x42, - 0x7f, 0xf4, 0x02, 0xaf, 0xc2, 0xf3, 0x05, 0x12, 0xe9, 0x6a, 0x8a, 0x42, - 0x7f, 0xf4, 0xfc, 0xae, 0x2a, 0x6b, 0xc3, 0xf3, 0x08, 0x01, 0x01, 0x3a, - 0x91, 0x42, 0x7f, 0xf4, 0xf5, 0xae, 0x6a, 0x6b, 0xc3, 0xf3, 0x46, 0x21, - 0x01, 0x3a, 0x91, 0x42, 0x7f, 0xf4, 0xee, 0xae, 0xaa, 0x6b, 0xc3, 0xf3, - 0x06, 0x41, 0x01, 0x3a, 0x91, 0x42, 0x7f, 0xf4, 0xe7, 0xae, 0xea, 0x6b, - 0xc3, 0xf3, 0x06, 0x63, 0x01, 0x3a, 0x93, 0x42, 0x3f, 0xf4, 0xcb, 0xae, - 0xde, 0xe6, 0x00, 0xbf, 0x00, 0x48, 0x02, 0x58, 0x00, 0x44, 0x02, 0x58, - 0x2d, 0xe9, 0xf0, 0x41, 0xdd, 0xf8, 0x18, 0x80, 0x04, 0x46, 0x0e, 0x46, - 0x15, 0x46, 0x1f, 0x46, 0x22, 0x68, 0x93, 0x68, 0x33, 0x42, 0x14, 0xbf, - 0x01, 0x23, 0x00, 0x23, 0xab, 0x42, 0x01, 0xd1, 0x00, 0x20, 0x12, 0xe0, - 0xb8, 0xf1, 0xff, 0x3f, 0xf3, 0xd0, 0xff, 0xf7, 0x79, 0xfc, 0xc0, 0x1b, - 0x40, 0x45, 0x02, 0xd8, 0xb8, 0xf1, 0x00, 0x0f, 0xea, 0xd1, 0x04, 0x23, - 0x01, 0x20, 0x84, 0xf8, 0x41, 0x30, 0x63, 0x6c, 0x43, 0xf0, 0x01, 0x03, - 0x63, 0x64, 0xbd, 0xe8, 0xf0, 0x81, 0x2d, 0xe9, 0xf0, 0x4f, 0x05, 0x46, - 0x85, 0xb0, 0x0c, 0x46, 0xff, 0xf7, 0x62, 0xfc, 0x95, 0xf8, 0x40, 0x20, - 0x07, 0xee, 0x90, 0x0a, 0x01, 0x2a, 0x00, 0xf0, 0xe1, 0x80, 0x01, 0x22, - 0x02, 0x20, 0x85, 0xf8, 0x40, 0x20, 0x95, 0xf8, 0x41, 0x20, 0x01, 0x2a, - 0x40, 0xf0, 0xbe, 0x80, 0x00, 0x22, 0x41, 0xf2, 0x88, 0x31, 0x17, 0xee, - 0x90, 0x3a, 0xcd, 0xed, 0x03, 0x7a, 0x6a, 0x64, 0x00, 0x91, 0x20, 0x21, - 0x85, 0xf8, 0x41, 0x00, 0x28, 0x46, 0xff, 0xf7, 0xb3, 0xff, 0xdd, 0xed, - 0x03, 0x7a, 0x00, 0x28, 0x40, 0xf0, 0xaa, 0x80, 0xd4, 0xf8, 0x24, 0xc0, - 0xbc, 0xf1, 0x00, 0x0f, 0x03, 0xd0, 0xa2, 0x6a, 0x29, 0x68, 0x01, 0x3a, - 0x0a, 0x61, 0xd4, 0xf8, 0x18, 0xa0, 0xd4, 0xe9, 0x07, 0x27, 0xba, 0xf1, - 0x00, 0x0f, 0x50, 0xd0, 0x63, 0x69, 0x4c, 0xea, 0x0a, 0x0a, 0xd5, 0xf8, - 0x00, 0xe0, 0x26, 0x68, 0x4f, 0xea, 0x83, 0x4b, 0xd4, 0xf8, 0x34, 0x80, - 0xd4, 0xe9, 0x0b, 0x19, 0x67, 0xb3, 0xa3, 0x68, 0x47, 0xea, 0x0a, 0x0a, - 0x27, 0x69, 0xce, 0xf8, 0x1c, 0x30, 0xba, 0xb1, 0x32, 0x43, 0x11, 0x43, - 0xe2, 0x68, 0x41, 0xea, 0x09, 0x09, 0x49, 0xea, 0x08, 0x08, 0x48, 0xea, - 0x07, 0x07, 0x17, 0x43, 0x47, 0xea, 0x0b, 0x07, 0x47, 0xea, 0x0a, 0x07, - 0xce, 0xf8, 0x14, 0x70, 0x62, 0x68, 0xce, 0xf8, 0x18, 0x20, 0xbc, 0xf1, - 0x00, 0x0f, 0x40, 0xf0, 0x81, 0x80, 0x62, 0xe0, 0x31, 0x43, 0x41, 0xea, - 0x09, 0x09, 0x49, 0xea, 0x08, 0x08, 0x48, 0xea, 0x07, 0x07, 0x47, 0xea, - 0x0b, 0x07, 0x47, 0xea, 0x0a, 0x07, 0xce, 0xf8, 0x14, 0x70, 0xec, 0xe7, - 0x52, 0xb1, 0x42, 0xea, 0x06, 0x07, 0x0f, 0x43, 0x47, 0xea, 0x09, 0x07, - 0x47, 0xea, 0x08, 0x08, 0xe7, 0x68, 0x48, 0xea, 0x07, 0x07, 0xd7, 0xe7, - 0x46, 0xea, 0x01, 0x07, 0x47, 0xea, 0x09, 0x07, 0x47, 0xea, 0x08, 0x07, - 0x47, 0xea, 0x0b, 0x0b, 0x4b, 0xea, 0x0a, 0x07, 0xe5, 0xe7, 0x37, 0xb3, - 0xa1, 0x68, 0x4c, 0xea, 0x07, 0x07, 0xd5, 0xf8, 0x00, 0xe0, 0x26, 0x69, - 0xce, 0xf8, 0x1c, 0x10, 0x61, 0x69, 0xd4, 0xf8, 0x34, 0x80, 0x89, 0x04, - 0xd4, 0xe9, 0x0b, 0xa9, 0x6a, 0xb1, 0x32, 0x43, 0xe3, 0x68, 0x42, 0xea, - 0x0a, 0x0a, 0x4a, 0xea, 0x09, 0x09, 0x49, 0xea, 0x08, 0x08, 0x48, 0xea, - 0x03, 0x08, 0x48, 0xea, 0x01, 0x01, 0x0f, 0x43, 0xb2, 0xe7, 0x46, 0xea, - 0x0a, 0x06, 0x46, 0xea, 0x09, 0x09, 0x49, 0xea, 0x08, 0x08, 0x48, 0xea, - 0x01, 0x01, 0x0f, 0x43, 0xbd, 0xe7, 0x8a, 0xb1, 0xe1, 0x6a, 0x4c, 0xea, - 0x02, 0x02, 0x0a, 0x43, 0x21, 0x6b, 0x0a, 0x43, 0x61, 0x6b, 0x0a, 0x43, - 0xe1, 0x68, 0x0a, 0x43, 0x61, 0x69, 0x42, 0xea, 0x81, 0x42, 0x29, 0x68, - 0x4a, 0x61, 0x62, 0x68, 0x8a, 0x61, 0x9a, 0xe7, 0xbc, 0xf1, 0x00, 0x0f, - 0x10, 0xd1, 0x41, 0xf2, 0x88, 0x32, 0x17, 0xee, 0x90, 0x3a, 0x02, 0x21, - 0x28, 0x46, 0x00, 0x92, 0x01, 0x22, 0xff, 0xf7, 0x05, 0xff, 0xa8, 0xb1, - 0x00, 0x23, 0x85, 0xf8, 0x40, 0x30, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, - 0xe3, 0x6a, 0x22, 0x6b, 0x4c, 0xea, 0x03, 0x03, 0x13, 0x43, 0x62, 0x6b, - 0x13, 0x43, 0x62, 0x69, 0x43, 0xea, 0x82, 0x43, 0x2a, 0x68, 0x53, 0x61, - 0x01, 0x23, 0x85, 0xf8, 0x41, 0x30, 0xe9, 0xe7, 0x2b, 0x68, 0x02, 0x22, - 0xda, 0x60, 0xf7, 0xe7, 0x02, 0x20, 0xe6, 0xe7, 0xf0, 0xb5, 0x93, 0xb0, - 0x04, 0x46, 0x08, 0x46, 0x16, 0x46, 0x04, 0xa9, 0x1d, 0x46, 0xfb, 0xf7, - 0xff, 0xfd, 0x48, 0xb9, 0x2b, 0x68, 0x04, 0xa9, 0x20, 0x46, 0x0e, 0x93, - 0xff, 0xf7, 0xff, 0xfe, 0x07, 0x46, 0x18, 0xb1, 0x4f, 0xf0, 0xff, 0x30, - 0x13, 0xb0, 0xf0, 0xbd, 0xff, 0xf7, 0x60, 0xfb, 0x25, 0x68, 0x03, 0x46, - 0xa9, 0x69, 0x94, 0xf8, 0x40, 0x20, 0x01, 0x2a, 0xf2, 0xd0, 0x01, 0x22, - 0x84, 0xf8, 0x40, 0x20, 0x94, 0xf8, 0x41, 0x20, 0x01, 0x2a, 0xd0, 0xb2, - 0x46, 0xd1, 0x67, 0x64, 0x00, 0x2e, 0x3e, 0xd0, 0x22, 0x22, 0x84, 0xf8, - 0x41, 0x20, 0x2a, 0x69, 0x01, 0x32, 0xa2, 0x63, 0x2a, 0x69, 0x26, 0x63, - 0x41, 0xf2, 0x88, 0x36, 0x01, 0x32, 0x62, 0x63, 0x6a, 0x69, 0x22, 0xf0, - 0x40, 0x62, 0x42, 0xf0, 0x80, 0x62, 0x6a, 0x61, 0xa9, 0x61, 0xa2, 0x6b, - 0xa2, 0xb9, 0x01, 0x22, 0x02, 0x21, 0x20, 0x46, 0x00, 0x96, 0xff, 0xf7, - 0xa3, 0xfe, 0x10, 0xb9, 0x23, 0x68, 0x02, 0x22, 0xda, 0x60, 0x01, 0x23, - 0x84, 0xf8, 0x41, 0x30, 0x00, 0x23, 0xc0, 0x1a, 0x84, 0xf8, 0x40, 0x30, - 0x18, 0xbf, 0x01, 0x20, 0x40, 0x42, 0xbf, 0xe7, 0x01, 0x22, 0x06, 0x21, - 0x20, 0x46, 0x00, 0x96, 0x03, 0x93, 0xff, 0xf7, 0x8d, 0xfe, 0x00, 0x28, - 0xeb, 0xd1, 0x95, 0xf8, 0x20, 0x10, 0x22, 0x6b, 0x03, 0x9b, 0x11, 0x70, - 0x22, 0x6b, 0x01, 0x32, 0x22, 0x63, 0xa2, 0x6b, 0x01, 0x3a, 0xa2, 0x63, - 0xd3, 0xe7, 0x63, 0x6c, 0x43, 0xf0, 0x08, 0x03, 0x63, 0x64, 0xdd, 0xe7, - 0x02, 0x20, 0xdb, 0xe7, 0xf7, 0xb5, 0x00, 0x93, 0x05, 0x46, 0x90, 0xf8, - 0x94, 0x30, 0x14, 0x46, 0x01, 0x91, 0xdd, 0xe9, 0x08, 0x67, 0xf3, 0xb1, - 0xd6, 0xb1, 0x3b, 0x68, 0xdb, 0xb1, 0x0b, 0xf0, 0xeb, 0xf8, 0x23, 0x46, - 0x28, 0x46, 0xdd, 0xe9, 0x00, 0x21, 0x0a, 0xf0, 0x44, 0xff, 0x3b, 0x46, - 0x32, 0x46, 0x05, 0xf1, 0x68, 0x01, 0x28, 0x1d, 0xff, 0xf7, 0x74, 0xff, - 0x04, 0x1e, 0x28, 0x46, 0x18, 0xbf, 0x01, 0x24, 0x64, 0x42, 0x0b, 0xf0, - 0xcd, 0xf8, 0x20, 0x46, 0x03, 0xb0, 0xf0, 0xbd, 0x6f, 0xf0, 0x01, 0x04, - 0xf9, 0xe7, 0x4f, 0xf0, 0xff, 0x34, 0xf6, 0xe7, 0xf0, 0xb5, 0x93, 0xb0, - 0x04, 0x46, 0x08, 0x46, 0x16, 0x46, 0x04, 0xa9, 0x1d, 0x46, 0xfb, 0xf7, - 0x63, 0xfd, 0x48, 0xb9, 0x2b, 0x68, 0x04, 0xa9, 0x20, 0x46, 0x0e, 0x93, - 0xff, 0xf7, 0x63, 0xfe, 0x07, 0x46, 0x18, 0xb1, 0x4f, 0xf0, 0xff, 0x30, - 0x13, 0xb0, 0xf0, 0xbd, 0xff, 0xf7, 0xc4, 0xfa, 0x94, 0xf8, 0x40, 0x20, - 0x03, 0x46, 0x25, 0x68, 0x01, 0x2a, 0xf3, 0xd0, 0x01, 0x22, 0x84, 0xf8, - 0x40, 0x20, 0x94, 0xf8, 0x41, 0x20, 0x01, 0x2a, 0xd0, 0xb2, 0x43, 0xd1, - 0x67, 0x64, 0x00, 0x2e, 0x3b, 0xd0, 0x12, 0x22, 0x84, 0xf8, 0x41, 0x20, - 0x2a, 0x69, 0x01, 0x32, 0xe2, 0x62, 0x2a, 0x69, 0x66, 0x62, 0x41, 0xf2, - 0x88, 0x36, 0x01, 0x32, 0xa2, 0x62, 0x6a, 0x69, 0x22, 0xf0, 0x40, 0x62, - 0x6a, 0x61, 0xe2, 0x6a, 0xa2, 0xb9, 0x01, 0x22, 0x02, 0x21, 0x20, 0x46, - 0x00, 0x96, 0xff, 0xf7, 0x0b, 0xfe, 0x10, 0xb9, 0x23, 0x68, 0x02, 0x22, + 0x7d, 0xfe, 0x40, 0x1b, 0x02, 0x28, 0xee, 0xd9, 0xf7, 0xe7, 0x01, 0x20, + 0xf6, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, 0xf8, 0xb5, 0x3e, 0x4c, + 0x06, 0x46, 0x0d, 0x46, 0xa3, 0x6a, 0x03, 0xf0, 0x03, 0x03, 0x03, 0x2b, + 0x71, 0xd0, 0x23, 0x68, 0x23, 0xf0, 0x80, 0x63, 0x23, 0x60, 0xff, 0xf7, + 0x65, 0xfe, 0x07, 0x46, 0x23, 0x68, 0x1a, 0x01, 0x5a, 0xd4, 0xa3, 0x6a, + 0x01, 0x2d, 0x32, 0x68, 0x23, 0xf4, 0x7c, 0x33, 0x43, 0xea, 0x02, 0x33, + 0xa3, 0x62, 0xb3, 0x68, 0xf2, 0x68, 0x03, 0xf1, 0xff, 0x33, 0x02, 0xf1, + 0xff, 0x32, 0x4f, 0xea, 0x43, 0x23, 0x4f, 0xea, 0x02, 0x42, 0x9b, 0xb2, + 0x02, 0xf4, 0xfe, 0x02, 0x43, 0xea, 0x02, 0x03, 0x72, 0x68, 0x02, 0xf1, + 0xff, 0x32, 0xc2, 0xf3, 0x08, 0x02, 0x43, 0xea, 0x02, 0x03, 0x32, 0x69, + 0x02, 0xf1, 0xff, 0x32, 0x4f, 0xea, 0x02, 0x62, 0x02, 0xf0, 0xfe, 0x42, + 0x43, 0xea, 0x02, 0x03, 0xa3, 0x63, 0xe3, 0x6a, 0x72, 0x69, 0x23, 0xf0, + 0xc0, 0x03, 0x43, 0xea, 0x02, 0x03, 0xe3, 0x62, 0xe3, 0x6a, 0xb2, 0x69, + 0x23, 0xf0, 0x20, 0x03, 0x43, 0xea, 0x02, 0x03, 0xe3, 0x62, 0xe3, 0x6a, + 0x23, 0xf0, 0x10, 0x03, 0xe3, 0x62, 0xe3, 0x6b, 0xf2, 0x69, 0x23, 0xf4, + 0x7f, 0x43, 0x23, 0xf0, 0xf8, 0x03, 0x43, 0xea, 0xc2, 0x03, 0xe3, 0x63, + 0xe3, 0x6a, 0x43, 0xf0, 0x10, 0x03, 0xe3, 0x62, 0xe3, 0x6a, 0x0c, 0xbf, + 0x43, 0xf4, 0x80, 0x13, 0x43, 0xf4, 0x00, 0x13, 0xe3, 0x62, 0x0e, 0x4c, + 0x23, 0x68, 0x43, 0xf0, 0x80, 0x63, 0x23, 0x60, 0xff, 0xf7, 0x0c, 0xfe, + 0x05, 0x46, 0x23, 0x68, 0x1b, 0x01, 0x08, 0xd5, 0x00, 0x20, 0x05, 0xe0, + 0xff, 0xf7, 0x04, 0xfe, 0xc0, 0x1b, 0x02, 0x28, 0x9c, 0xd9, 0x03, 0x20, + 0xf8, 0xbd, 0xff, 0xf7, 0xfd, 0xfd, 0x40, 0x1b, 0x02, 0x28, 0xee, 0xd9, + 0xf7, 0xe7, 0x01, 0x20, 0xf6, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, + 0xf8, 0xb5, 0x03, 0x68, 0x05, 0x46, 0xdf, 0x07, 0x25, 0xd4, 0x2b, 0x68, + 0x5e, 0x07, 0x1c, 0xd5, 0xab, 0x4c, 0x23, 0x68, 0x43, 0xf4, 0x80, 0x73, + 0x23, 0x60, 0xff, 0xf7, 0xe5, 0xfd, 0x06, 0x46, 0x23, 0x68, 0xda, 0x05, + 0x6a, 0xd5, 0xab, 0x68, 0xa6, 0x4c, 0x01, 0x2b, 0x6c, 0xd1, 0x23, 0x6f, + 0x43, 0xf0, 0x01, 0x03, 0x23, 0x67, 0x41, 0xf2, 0x88, 0x37, 0xff, 0xf7, + 0xd5, 0xfd, 0xa1, 0x4e, 0x04, 0x46, 0x33, 0x6f, 0x9b, 0x07, 0x40, 0xf1, + 0x84, 0x80, 0x69, 0x6a, 0x00, 0x29, 0x40, 0xf0, 0x87, 0x80, 0x00, 0x20, + 0x29, 0xe0, 0x9b, 0x4b, 0x1a, 0x69, 0x99, 0x6a, 0x02, 0xf0, 0x38, 0x02, + 0x10, 0x2a, 0x05, 0xd0, 0x18, 0x2a, 0x0b, 0xd1, 0x01, 0xf0, 0x03, 0x02, + 0x02, 0x2a, 0x07, 0xd1, 0x1b, 0x68, 0x9c, 0x03, 0xc9, 0xd5, 0x6b, 0x68, + 0x00, 0x2b, 0xc6, 0xd1, 0x01, 0x20, 0x14, 0xe0, 0x6a, 0x68, 0xb2, 0xf5, + 0x80, 0x3f, 0x11, 0xd1, 0x1a, 0x68, 0x42, 0xf4, 0x80, 0x32, 0x1a, 0x60, + 0xff, 0xf7, 0xaa, 0xfd, 0x8b, 0x4e, 0x04, 0x46, 0x33, 0x68, 0x98, 0x03, + 0xb5, 0xd4, 0xff, 0xf7, 0xa3, 0xfd, 0x00, 0x1b, 0x64, 0x28, 0xf7, 0xd9, + 0x03, 0x20, 0xf8, 0xbd, 0x85, 0x4c, 0x23, 0x68, 0x92, 0xb9, 0x23, 0xf4, + 0x80, 0x33, 0x23, 0x60, 0x23, 0x68, 0x23, 0xf4, 0x80, 0x23, 0x23, 0x60, + 0xff, 0xf7, 0x92, 0xfd, 0x06, 0x46, 0x23, 0x68, 0x99, 0x03, 0x9e, 0xd5, + 0xff, 0xf7, 0x8c, 0xfd, 0x80, 0x1b, 0x64, 0x28, 0xf7, 0xd9, 0xe7, 0xe7, + 0xb2, 0xf5, 0xa0, 0x2f, 0x07, 0xd1, 0x43, 0xf4, 0x80, 0x23, 0x23, 0x60, + 0x23, 0x68, 0x43, 0xf4, 0x80, 0x33, 0x23, 0x60, 0xd0, 0xe7, 0x23, 0xf4, + 0x80, 0x33, 0x23, 0x60, 0x23, 0x68, 0x23, 0xf4, 0x80, 0x23, 0xf6, 0xe7, + 0xff, 0xf7, 0x74, 0xfd, 0x80, 0x1b, 0x64, 0x28, 0x8c, 0xd9, 0xcf, 0xe7, + 0xab, 0xb9, 0x23, 0x6f, 0x41, 0xf2, 0x88, 0x37, 0x23, 0xf0, 0x01, 0x03, + 0x23, 0x67, 0x23, 0x6f, 0x23, 0xf0, 0x04, 0x03, 0x23, 0x67, 0xff, 0xf7, + 0x63, 0xfd, 0x06, 0x46, 0x23, 0x6f, 0x98, 0x07, 0x8f, 0xd5, 0xff, 0xf7, + 0x5d, 0xfd, 0x80, 0x1b, 0xb8, 0x42, 0xf7, 0xd9, 0xb8, 0xe7, 0x05, 0x2b, + 0x23, 0x6f, 0x03, 0xd1, 0x43, 0xf0, 0x04, 0x03, 0x23, 0x67, 0x74, 0xe7, + 0x23, 0xf0, 0x01, 0x03, 0x23, 0x67, 0x23, 0x6f, 0x23, 0xf0, 0x04, 0x03, + 0x70, 0xe7, 0xff, 0xf7, 0x49, 0xfd, 0x00, 0x1b, 0xb8, 0x42, 0x7f, 0xf6, + 0x72, 0xaf, 0xa3, 0xe7, 0x58, 0x4c, 0x23, 0x69, 0x03, 0xf0, 0x38, 0x03, + 0x18, 0x2b, 0x7a, 0xd0, 0x23, 0x68, 0x02, 0x29, 0x23, 0xf0, 0x80, 0x73, + 0x23, 0x60, 0x67, 0xd1, 0xff, 0xf7, 0x36, 0xfd, 0x06, 0x46, 0x23, 0x68, + 0x99, 0x01, 0x5b, 0xd4, 0xa3, 0x6a, 0xaa, 0x6a, 0x23, 0xf4, 0x7c, 0x73, + 0x23, 0xf0, 0x03, 0x03, 0x13, 0x43, 0xea, 0x6a, 0x43, 0xea, 0x02, 0x13, + 0xa3, 0x62, 0x6b, 0x6b, 0xaa, 0x6b, 0x01, 0x3b, 0x01, 0x3a, 0x5b, 0x02, + 0x12, 0x04, 0x9b, 0xb2, 0x02, 0xf4, 0xfe, 0x02, 0x13, 0x43, 0x2a, 0x6b, + 0x01, 0x3a, 0xc2, 0xf3, 0x08, 0x02, 0x13, 0x43, 0xea, 0x6b, 0x01, 0x3a, + 0x12, 0x06, 0x02, 0xf0, 0xfe, 0x42, 0x13, 0x43, 0x23, 0x63, 0xe3, 0x6a, + 0x23, 0xf0, 0x01, 0x03, 0xe3, 0x62, 0x63, 0x6b, 0xaa, 0x6c, 0x23, 0xf4, + 0x7f, 0x43, 0x23, 0xf0, 0xf8, 0x03, 0x43, 0xea, 0xc2, 0x03, 0x63, 0x63, + 0xe3, 0x6a, 0x2a, 0x6c, 0x23, 0xf0, 0x0c, 0x03, 0x13, 0x43, 0xe3, 0x62, + 0xe3, 0x6a, 0x6a, 0x6c, 0x23, 0xf0, 0x02, 0x03, 0x33, 0x4d, 0x13, 0x43, + 0xe3, 0x62, 0xe3, 0x6a, 0x43, 0xf4, 0x80, 0x33, 0xe3, 0x62, 0xe3, 0x6a, + 0x43, 0xf4, 0x00, 0x33, 0xe3, 0x62, 0xe3, 0x6a, 0x43, 0xf4, 0x80, 0x23, + 0xe3, 0x62, 0xe3, 0x6a, 0x43, 0xf0, 0x01, 0x03, 0xe3, 0x62, 0x23, 0x68, + 0x43, 0xf0, 0x80, 0x73, 0x23, 0x60, 0xff, 0xf7, 0xe1, 0xfc, 0x04, 0x46, + 0x2b, 0x68, 0x9a, 0x01, 0x3f, 0xf5, 0x11, 0xaf, 0xff, 0xf7, 0xda, 0xfc, + 0x00, 0x1b, 0x02, 0x28, 0xf6, 0xd9, 0x35, 0xe7, 0xff, 0xf7, 0xd4, 0xfc, + 0x80, 0x1b, 0x02, 0x28, 0x9b, 0xd9, 0x2f, 0xe7, 0xff, 0xf7, 0xce, 0xfc, + 0x05, 0x46, 0x23, 0x68, 0x9b, 0x01, 0x7f, 0xf5, 0xfe, 0xae, 0xff, 0xf7, + 0xc7, 0xfc, 0x40, 0x1b, 0x02, 0x28, 0xf6, 0xd9, 0x22, 0xe7, 0x01, 0x29, + 0xa2, 0x6a, 0x23, 0x6b, 0x3f, 0xf4, 0x08, 0xaf, 0x02, 0xf0, 0x03, 0x01, + 0xa8, 0x6a, 0x81, 0x42, 0x7f, 0xf4, 0x02, 0xaf, 0xc2, 0xf3, 0x05, 0x12, + 0xe9, 0x6a, 0x8a, 0x42, 0x7f, 0xf4, 0xfc, 0xae, 0x2a, 0x6b, 0xc3, 0xf3, + 0x08, 0x01, 0x01, 0x3a, 0x91, 0x42, 0x7f, 0xf4, 0xf5, 0xae, 0x6a, 0x6b, + 0xc3, 0xf3, 0x46, 0x21, 0x01, 0x3a, 0x91, 0x42, 0x7f, 0xf4, 0xee, 0xae, + 0xaa, 0x6b, 0xc3, 0xf3, 0x06, 0x41, 0x01, 0x3a, 0x91, 0x42, 0x7f, 0xf4, + 0xe7, 0xae, 0xea, 0x6b, 0xc3, 0xf3, 0x06, 0x63, 0x01, 0x3a, 0x93, 0x42, + 0x3f, 0xf4, 0xcb, 0xae, 0xde, 0xe6, 0x00, 0xbf, 0x00, 0x48, 0x02, 0x58, + 0x00, 0x44, 0x02, 0x58, 0x2d, 0xe9, 0xf0, 0x41, 0xdd, 0xf8, 0x18, 0x80, + 0x04, 0x46, 0x0e, 0x46, 0x15, 0x46, 0x1f, 0x46, 0x22, 0x68, 0x93, 0x68, + 0x33, 0x42, 0x14, 0xbf, 0x01, 0x23, 0x00, 0x23, 0xab, 0x42, 0x01, 0xd1, + 0x00, 0x20, 0x12, 0xe0, 0xb8, 0xf1, 0xff, 0x3f, 0xf3, 0xd0, 0xff, 0xf7, + 0x79, 0xfc, 0xc0, 0x1b, 0x40, 0x45, 0x02, 0xd8, 0xb8, 0xf1, 0x00, 0x0f, + 0xea, 0xd1, 0x04, 0x23, 0x01, 0x20, 0x84, 0xf8, 0x41, 0x30, 0x63, 0x6c, + 0x43, 0xf0, 0x01, 0x03, 0x63, 0x64, 0xbd, 0xe8, 0xf0, 0x81, 0x2d, 0xe9, + 0xf0, 0x4f, 0x05, 0x46, 0x85, 0xb0, 0x0c, 0x46, 0xff, 0xf7, 0x62, 0xfc, + 0x95, 0xf8, 0x40, 0x20, 0x07, 0xee, 0x90, 0x0a, 0x01, 0x2a, 0x00, 0xf0, + 0xe1, 0x80, 0x01, 0x22, 0x02, 0x20, 0x85, 0xf8, 0x40, 0x20, 0x95, 0xf8, + 0x41, 0x20, 0x01, 0x2a, 0x40, 0xf0, 0xbe, 0x80, 0x00, 0x22, 0x41, 0xf2, + 0x88, 0x31, 0x17, 0xee, 0x90, 0x3a, 0xcd, 0xed, 0x03, 0x7a, 0x6a, 0x64, + 0x00, 0x91, 0x20, 0x21, 0x85, 0xf8, 0x41, 0x00, 0x28, 0x46, 0xff, 0xf7, + 0xb3, 0xff, 0xdd, 0xed, 0x03, 0x7a, 0x00, 0x28, 0x40, 0xf0, 0xaa, 0x80, + 0xd4, 0xf8, 0x24, 0xc0, 0xbc, 0xf1, 0x00, 0x0f, 0x03, 0xd0, 0xa2, 0x6a, + 0x29, 0x68, 0x01, 0x3a, 0x0a, 0x61, 0xd4, 0xf8, 0x18, 0xa0, 0xd4, 0xe9, + 0x07, 0x27, 0xba, 0xf1, 0x00, 0x0f, 0x50, 0xd0, 0x63, 0x69, 0x4c, 0xea, + 0x0a, 0x0a, 0xd5, 0xf8, 0x00, 0xe0, 0x26, 0x68, 0x4f, 0xea, 0x83, 0x4b, + 0xd4, 0xf8, 0x34, 0x80, 0xd4, 0xe9, 0x0b, 0x19, 0x67, 0xb3, 0xa3, 0x68, + 0x47, 0xea, 0x0a, 0x0a, 0x27, 0x69, 0xce, 0xf8, 0x1c, 0x30, 0xba, 0xb1, + 0x32, 0x43, 0x11, 0x43, 0xe2, 0x68, 0x41, 0xea, 0x09, 0x09, 0x49, 0xea, + 0x08, 0x08, 0x48, 0xea, 0x07, 0x07, 0x17, 0x43, 0x47, 0xea, 0x0b, 0x07, + 0x47, 0xea, 0x0a, 0x07, 0xce, 0xf8, 0x14, 0x70, 0x62, 0x68, 0xce, 0xf8, + 0x18, 0x20, 0xbc, 0xf1, 0x00, 0x0f, 0x40, 0xf0, 0x81, 0x80, 0x62, 0xe0, + 0x31, 0x43, 0x41, 0xea, 0x09, 0x09, 0x49, 0xea, 0x08, 0x08, 0x48, 0xea, + 0x07, 0x07, 0x47, 0xea, 0x0b, 0x07, 0x47, 0xea, 0x0a, 0x07, 0xce, 0xf8, + 0x14, 0x70, 0xec, 0xe7, 0x52, 0xb1, 0x42, 0xea, 0x06, 0x07, 0x0f, 0x43, + 0x47, 0xea, 0x09, 0x07, 0x47, 0xea, 0x08, 0x08, 0xe7, 0x68, 0x48, 0xea, + 0x07, 0x07, 0xd7, 0xe7, 0x46, 0xea, 0x01, 0x07, 0x47, 0xea, 0x09, 0x07, + 0x47, 0xea, 0x08, 0x07, 0x47, 0xea, 0x0b, 0x0b, 0x4b, 0xea, 0x0a, 0x07, + 0xe5, 0xe7, 0x37, 0xb3, 0xa1, 0x68, 0x4c, 0xea, 0x07, 0x07, 0xd5, 0xf8, + 0x00, 0xe0, 0x26, 0x69, 0xce, 0xf8, 0x1c, 0x10, 0x61, 0x69, 0xd4, 0xf8, + 0x34, 0x80, 0x89, 0x04, 0xd4, 0xe9, 0x0b, 0xa9, 0x6a, 0xb1, 0x32, 0x43, + 0xe3, 0x68, 0x42, 0xea, 0x0a, 0x0a, 0x4a, 0xea, 0x09, 0x09, 0x49, 0xea, + 0x08, 0x08, 0x48, 0xea, 0x03, 0x08, 0x48, 0xea, 0x01, 0x01, 0x0f, 0x43, + 0xb2, 0xe7, 0x46, 0xea, 0x0a, 0x06, 0x46, 0xea, 0x09, 0x09, 0x49, 0xea, + 0x08, 0x08, 0x48, 0xea, 0x01, 0x01, 0x0f, 0x43, 0xbd, 0xe7, 0x8a, 0xb1, + 0xe1, 0x6a, 0x4c, 0xea, 0x02, 0x02, 0x0a, 0x43, 0x21, 0x6b, 0x0a, 0x43, + 0x61, 0x6b, 0x0a, 0x43, 0xe1, 0x68, 0x0a, 0x43, 0x61, 0x69, 0x42, 0xea, + 0x81, 0x42, 0x29, 0x68, 0x4a, 0x61, 0x62, 0x68, 0x8a, 0x61, 0x9a, 0xe7, + 0xbc, 0xf1, 0x00, 0x0f, 0x10, 0xd1, 0x41, 0xf2, 0x88, 0x32, 0x17, 0xee, + 0x90, 0x3a, 0x02, 0x21, 0x28, 0x46, 0x00, 0x92, 0x01, 0x22, 0xff, 0xf7, + 0x05, 0xff, 0xa8, 0xb1, 0x00, 0x23, 0x85, 0xf8, 0x40, 0x30, 0x05, 0xb0, + 0xbd, 0xe8, 0xf0, 0x8f, 0xe3, 0x6a, 0x22, 0x6b, 0x4c, 0xea, 0x03, 0x03, + 0x13, 0x43, 0x62, 0x6b, 0x13, 0x43, 0x62, 0x69, 0x43, 0xea, 0x82, 0x43, + 0x2a, 0x68, 0x53, 0x61, 0x01, 0x23, 0x85, 0xf8, 0x41, 0x30, 0xe9, 0xe7, + 0x2b, 0x68, 0x02, 0x22, 0xda, 0x60, 0xf7, 0xe7, 0x02, 0x20, 0xe6, 0xe7, + 0xf0, 0xb5, 0x93, 0xb0, 0x04, 0x46, 0x08, 0x46, 0x16, 0x46, 0x04, 0xa9, + 0x1d, 0x46, 0xfc, 0xf7, 0x51, 0xff, 0x48, 0xb9, 0x2b, 0x68, 0x04, 0xa9, + 0x20, 0x46, 0x0e, 0x93, 0xff, 0xf7, 0xff, 0xfe, 0x07, 0x46, 0x18, 0xb1, + 0x4f, 0xf0, 0xff, 0x30, 0x13, 0xb0, 0xf0, 0xbd, 0xff, 0xf7, 0x60, 0xfb, + 0x25, 0x68, 0x03, 0x46, 0xa9, 0x69, 0x94, 0xf8, 0x40, 0x20, 0x01, 0x2a, + 0xf2, 0xd0, 0x01, 0x22, 0x84, 0xf8, 0x40, 0x20, 0x94, 0xf8, 0x41, 0x20, + 0x01, 0x2a, 0xd0, 0xb2, 0x46, 0xd1, 0x67, 0x64, 0x00, 0x2e, 0x3e, 0xd0, + 0x22, 0x22, 0x84, 0xf8, 0x41, 0x20, 0x2a, 0x69, 0x01, 0x32, 0xa2, 0x63, + 0x2a, 0x69, 0x26, 0x63, 0x41, 0xf2, 0x88, 0x36, 0x01, 0x32, 0x62, 0x63, + 0x6a, 0x69, 0x22, 0xf0, 0x40, 0x62, 0x42, 0xf0, 0x80, 0x62, 0x6a, 0x61, + 0xa9, 0x61, 0xa2, 0x6b, 0xa2, 0xb9, 0x01, 0x22, 0x02, 0x21, 0x20, 0x46, + 0x00, 0x96, 0xff, 0xf7, 0xa3, 0xfe, 0x10, 0xb9, 0x23, 0x68, 0x02, 0x22, 0xda, 0x60, 0x01, 0x23, 0x84, 0xf8, 0x41, 0x30, 0x00, 0x23, 0xc0, 0x1a, - 0x84, 0xf8, 0x40, 0x30, 0x18, 0xbf, 0x01, 0x20, 0x40, 0x42, 0xc3, 0xe7, - 0x01, 0x22, 0x04, 0x21, 0x20, 0x46, 0x00, 0x96, 0x03, 0x93, 0xff, 0xf7, - 0xf5, 0xfd, 0x00, 0x28, 0xeb, 0xd1, 0x62, 0x6a, 0x03, 0x9b, 0x12, 0x78, - 0x85, 0xf8, 0x20, 0x20, 0x62, 0x6a, 0x01, 0x32, 0x62, 0x62, 0xe2, 0x6a, - 0x01, 0x3a, 0xe2, 0x62, 0xd3, 0xe7, 0x63, 0x6c, 0x43, 0xf0, 0x08, 0x03, - 0x63, 0x64, 0xdd, 0xe7, 0x02, 0x20, 0xdb, 0xe7, 0x2d, 0xe9, 0xf0, 0x47, - 0x1c, 0x46, 0x90, 0xb0, 0x90, 0xf8, 0x94, 0x30, 0x05, 0x46, 0xdd, 0xf8, - 0x68, 0x90, 0xdd, 0xe9, 0x18, 0xa8, 0xcd, 0xe9, 0x00, 0x21, 0x63, 0xb3, - 0x0b, 0xf0, 0x52, 0xf8, 0x4f, 0xf0, 0xff, 0x33, 0x28, 0x46, 0x2e, 0x1d, - 0x05, 0xf1, 0x68, 0x07, 0xdd, 0xe9, 0x00, 0x21, 0x0a, 0xf0, 0xa7, 0xfe, - 0x14, 0xb1, 0xba, 0xf1, 0x00, 0x0f, 0x23, 0xd1, 0xb8, 0xf1, 0x00, 0x0f, - 0x02, 0xd0, 0xb9, 0xf1, 0x00, 0x0f, 0x19, 0xd1, 0x02, 0xa9, 0x38, 0x46, - 0xfb, 0xf7, 0xd8, 0xfc, 0x04, 0x46, 0x38, 0xb9, 0x01, 0x23, 0x02, 0xa9, - 0xcd, 0xe9, 0x0b, 0x03, 0x30, 0x46, 0xff, 0xf7, 0xd6, 0xfd, 0x08, 0xb1, - 0x4f, 0xf0, 0xff, 0x34, 0x28, 0x46, 0x0b, 0xf0, 0x21, 0xf8, 0x20, 0x46, - 0x10, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x4f, 0xf0, 0xff, 0x34, 0xf8, 0xe7, - 0x9c, 0xb1, 0xba, 0xf1, 0x00, 0x0f, 0x10, 0xd0, 0x22, 0x46, 0x02, 0xab, - 0x39, 0x46, 0x30, 0x46, 0xcd, 0xf8, 0x08, 0xa0, 0xff, 0xf7, 0x4a, 0xff, - 0x04, 0x46, 0x00, 0x28, 0xe4, 0xd1, 0xb8, 0xf1, 0x00, 0x0f, 0xe3, 0xd0, - 0xb9, 0xf1, 0x00, 0x0f, 0xe0, 0xd0, 0x02, 0xab, 0x42, 0x46, 0x39, 0x46, - 0x30, 0x46, 0xcd, 0xf8, 0x08, 0x90, 0xff, 0xf7, 0x9d, 0xfe, 0x04, 0x1e, - 0x18, 0xbf, 0x01, 0x24, 0x64, 0x42, 0xd3, 0xe7, 0x70, 0xb5, 0x0e, 0x46, - 0x04, 0x46, 0x08, 0x09, 0xfb, 0xf7, 0x44, 0xfd, 0x4f, 0xf4, 0x70, 0x71, - 0x05, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x48, 0xf9, 0x23, 0x8a, 0x0a, 0x4a, - 0x06, 0xf0, 0x0f, 0x06, 0x03, 0xf0, 0x0f, 0x03, 0x01, 0x21, 0x65, 0x61, - 0x52, 0xf8, 0x23, 0x30, 0x01, 0xfa, 0x06, 0xf6, 0xa3, 0x61, 0x05, 0xf1, - 0x10, 0x03, 0x18, 0x35, 0x26, 0x60, 0x63, 0x60, 0xc4, 0xe9, 0x02, 0x55, - 0x70, 0xbd, 0x00, 0xbf, 0xd0, 0xde, 0x01, 0x08, 0x10, 0xb5, 0x0c, 0x4b, - 0x0c, 0x4c, 0xd4, 0xf8, 0x94, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0xd0, 0xe9, - 0x05, 0x42, 0x52, 0x43, 0x02, 0xeb, 0x42, 0x03, 0xdb, 0x43, 0x39, 0xb9, - 0x22, 0x68, 0x13, 0x40, 0x23, 0x60, 0x4f, 0xf4, 0x40, 0x72, 0x04, 0x4b, - 0x5a, 0x61, 0x10, 0xbd, 0x21, 0x68, 0x0b, 0x40, 0x13, 0x43, 0xf5, 0xe7, - 0x00, 0x03, 0x00, 0x80, 0x00, 0x64, 0x02, 0x58, 0x03, 0x4b, 0xd9, 0x68, - 0x1a, 0x68, 0x22, 0xea, 0x01, 0x02, 0x1a, 0x60, 0x59, 0x60, 0x70, 0x47, - 0x00, 0x65, 0x02, 0x58, 0x44, 0x4a, 0x13, 0x69, 0x11, 0x46, 0x03, 0xf0, - 0x38, 0x03, 0x10, 0x2b, 0x30, 0xb5, 0x7c, 0xd0, 0x05, 0xd8, 0x00, 0x2b, - 0x55, 0xd0, 0x08, 0x2b, 0x79, 0xd0, 0x0a, 0x68, 0x52, 0xe0, 0x18, 0x2b, - 0xfb, 0xd1, 0x90, 0x6a, 0x95, 0x6a, 0xd1, 0x6a, 0x15, 0xf4, 0x7c, 0x7f, - 0xc5, 0xf3, 0x05, 0x13, 0x54, 0x6b, 0x3b, 0xd0, 0x07, 0xee, 0x90, 0x3a, - 0xc4, 0xf3, 0xcc, 0x04, 0x01, 0xf0, 0x01, 0x03, 0x00, 0xf0, 0x03, 0x00, - 0xf8, 0xee, 0xe7, 0x6a, 0x63, 0x43, 0x01, 0x28, 0xf7, 0xee, 0x00, 0x5a, - 0x07, 0xee, 0x90, 0x3a, 0xfa, 0xee, 0xe9, 0x7a, 0x39, 0xd0, 0x02, 0x28, - 0x47, 0xd0, 0x11, 0x68, 0x2d, 0x4b, 0xc1, 0xf3, 0xc1, 0x01, 0x12, 0x6b, - 0xcb, 0x40, 0xc2, 0xf3, 0x08, 0x02, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, - 0xc7, 0x6a, 0x86, 0xee, 0x26, 0x7a, 0x06, 0xee, 0x90, 0x2a, 0xf8, 0xee, - 0xe6, 0x6a, 0x76, 0xee, 0xa7, 0x7a, 0x77, 0xee, 0xa5, 0x7a, 0x22, 0x4b, - 0x67, 0xee, 0x87, 0x7a, 0x1b, 0x6b, 0xc3, 0xf3, 0x46, 0x23, 0x01, 0x33, - 0x07, 0xee, 0x10, 0x3a, 0xf8, 0xee, 0xc7, 0x6a, 0x87, 0xee, 0xa6, 0x7a, - 0xfc, 0xee, 0xc7, 0x7a, 0x17, 0xee, 0x90, 0x3a, 0x19, 0x49, 0x8a, 0x69, - 0x89, 0x69, 0xc2, 0xf3, 0x03, 0x22, 0x19, 0x49, 0x8a, 0x5c, 0xd3, 0x40, - 0x18, 0x4a, 0x13, 0x60, 0x30, 0xbd, 0x12, 0x68, 0xc2, 0xf3, 0xc1, 0x02, - 0x13, 0x4b, 0xd3, 0x40, 0xee, 0xe7, 0x13, 0x6b, 0x9f, 0xed, 0x14, 0x6a, + 0x84, 0xf8, 0x40, 0x30, 0x18, 0xbf, 0x01, 0x20, 0x40, 0x42, 0xbf, 0xe7, + 0x01, 0x22, 0x06, 0x21, 0x20, 0x46, 0x00, 0x96, 0x03, 0x93, 0xff, 0xf7, + 0x8d, 0xfe, 0x00, 0x28, 0xeb, 0xd1, 0x95, 0xf8, 0x20, 0x10, 0x22, 0x6b, + 0x03, 0x9b, 0x11, 0x70, 0x22, 0x6b, 0x01, 0x32, 0x22, 0x63, 0xa2, 0x6b, + 0x01, 0x3a, 0xa2, 0x63, 0xd3, 0xe7, 0x63, 0x6c, 0x43, 0xf0, 0x08, 0x03, + 0x63, 0x64, 0xdd, 0xe7, 0x02, 0x20, 0xdb, 0xe7, 0xf7, 0xb5, 0x00, 0x93, + 0x05, 0x46, 0x90, 0xf8, 0x94, 0x30, 0x14, 0x46, 0x01, 0x91, 0xdd, 0xe9, + 0x08, 0x67, 0xf3, 0xb1, 0xd6, 0xb1, 0x3b, 0x68, 0xdb, 0xb1, 0x0a, 0xf0, + 0x3f, 0xfe, 0x23, 0x46, 0x28, 0x46, 0xdd, 0xe9, 0x00, 0x21, 0x0a, 0xf0, + 0x87, 0xfc, 0x3b, 0x46, 0x32, 0x46, 0x05, 0xf1, 0x68, 0x01, 0x28, 0x1d, + 0xff, 0xf7, 0x74, 0xff, 0x04, 0x1e, 0x28, 0x46, 0x18, 0xbf, 0x01, 0x24, + 0x64, 0x42, 0x0a, 0xf0, 0x21, 0xfe, 0x20, 0x46, 0x03, 0xb0, 0xf0, 0xbd, + 0x6f, 0xf0, 0x01, 0x04, 0xf9, 0xe7, 0x4f, 0xf0, 0xff, 0x34, 0xf6, 0xe7, + 0xf0, 0xb5, 0x93, 0xb0, 0x04, 0x46, 0x08, 0x46, 0x16, 0x46, 0x04, 0xa9, + 0x1d, 0x46, 0xfc, 0xf7, 0xb5, 0xfe, 0x48, 0xb9, 0x2b, 0x68, 0x04, 0xa9, + 0x20, 0x46, 0x0e, 0x93, 0xff, 0xf7, 0x63, 0xfe, 0x07, 0x46, 0x18, 0xb1, + 0x4f, 0xf0, 0xff, 0x30, 0x13, 0xb0, 0xf0, 0xbd, 0xff, 0xf7, 0xc4, 0xfa, + 0x94, 0xf8, 0x40, 0x20, 0x03, 0x46, 0x25, 0x68, 0x01, 0x2a, 0xf3, 0xd0, + 0x01, 0x22, 0x84, 0xf8, 0x40, 0x20, 0x94, 0xf8, 0x41, 0x20, 0x01, 0x2a, + 0xd0, 0xb2, 0x43, 0xd1, 0x67, 0x64, 0x00, 0x2e, 0x3b, 0xd0, 0x12, 0x22, + 0x84, 0xf8, 0x41, 0x20, 0x2a, 0x69, 0x01, 0x32, 0xe2, 0x62, 0x2a, 0x69, + 0x66, 0x62, 0x41, 0xf2, 0x88, 0x36, 0x01, 0x32, 0xa2, 0x62, 0x6a, 0x69, + 0x22, 0xf0, 0x40, 0x62, 0x6a, 0x61, 0xe2, 0x6a, 0xa2, 0xb9, 0x01, 0x22, + 0x02, 0x21, 0x20, 0x46, 0x00, 0x96, 0xff, 0xf7, 0x0b, 0xfe, 0x10, 0xb9, + 0x23, 0x68, 0x02, 0x22, 0xda, 0x60, 0x01, 0x23, 0x84, 0xf8, 0x41, 0x30, + 0x00, 0x23, 0xc0, 0x1a, 0x84, 0xf8, 0x40, 0x30, 0x18, 0xbf, 0x01, 0x20, + 0x40, 0x42, 0xc3, 0xe7, 0x01, 0x22, 0x04, 0x21, 0x20, 0x46, 0x00, 0x96, + 0x03, 0x93, 0xff, 0xf7, 0xf5, 0xfd, 0x00, 0x28, 0xeb, 0xd1, 0x62, 0x6a, + 0x03, 0x9b, 0x12, 0x78, 0x85, 0xf8, 0x20, 0x20, 0x62, 0x6a, 0x01, 0x32, + 0x62, 0x62, 0xe2, 0x6a, 0x01, 0x3a, 0xe2, 0x62, 0xd3, 0xe7, 0x63, 0x6c, + 0x43, 0xf0, 0x08, 0x03, 0x63, 0x64, 0xdd, 0xe7, 0x02, 0x20, 0xdb, 0xe7, + 0x2d, 0xe9, 0xf0, 0x47, 0x1c, 0x46, 0x90, 0xb0, 0x90, 0xf8, 0x94, 0x30, + 0x05, 0x46, 0xdd, 0xf8, 0x68, 0x90, 0xdd, 0xe9, 0x18, 0xa8, 0xcd, 0xe9, + 0x00, 0x21, 0x63, 0xb3, 0x0a, 0xf0, 0xa6, 0xfd, 0x4f, 0xf0, 0xff, 0x33, + 0x28, 0x46, 0x2e, 0x1d, 0x05, 0xf1, 0x68, 0x07, 0xdd, 0xe9, 0x00, 0x21, + 0x0a, 0xf0, 0xea, 0xfb, 0x14, 0xb1, 0xba, 0xf1, 0x00, 0x0f, 0x23, 0xd1, + 0xb8, 0xf1, 0x00, 0x0f, 0x02, 0xd0, 0xb9, 0xf1, 0x00, 0x0f, 0x19, 0xd1, + 0x02, 0xa9, 0x38, 0x46, 0xfc, 0xf7, 0x2a, 0xfe, 0x04, 0x46, 0x38, 0xb9, + 0x01, 0x23, 0x02, 0xa9, 0xcd, 0xe9, 0x0b, 0x03, 0x30, 0x46, 0xff, 0xf7, + 0xd6, 0xfd, 0x08, 0xb1, 0x4f, 0xf0, 0xff, 0x34, 0x28, 0x46, 0x0a, 0xf0, + 0x75, 0xfd, 0x20, 0x46, 0x10, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x4f, 0xf0, + 0xff, 0x34, 0xf8, 0xe7, 0x9c, 0xb1, 0xba, 0xf1, 0x00, 0x0f, 0x10, 0xd0, + 0x22, 0x46, 0x02, 0xab, 0x39, 0x46, 0x30, 0x46, 0xcd, 0xf8, 0x08, 0xa0, + 0xff, 0xf7, 0x4a, 0xff, 0x04, 0x46, 0x00, 0x28, 0xe4, 0xd1, 0xb8, 0xf1, + 0x00, 0x0f, 0xe3, 0xd0, 0xb9, 0xf1, 0x00, 0x0f, 0xe0, 0xd0, 0x02, 0xab, + 0x42, 0x46, 0x39, 0x46, 0x30, 0x46, 0xcd, 0xf8, 0x08, 0x90, 0xff, 0xf7, + 0x9d, 0xfe, 0x04, 0x1e, 0x18, 0xbf, 0x01, 0x24, 0x64, 0x42, 0xd3, 0xe7, + 0x70, 0xb5, 0x0e, 0x46, 0x04, 0x46, 0x08, 0x09, 0xfc, 0xf7, 0x96, 0xfe, + 0x4f, 0xf4, 0x70, 0x71, 0x05, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x48, 0xf9, + 0x23, 0x8a, 0x0a, 0x4a, 0x06, 0xf0, 0x0f, 0x06, 0x03, 0xf0, 0x0f, 0x03, + 0x01, 0x21, 0x65, 0x61, 0x52, 0xf8, 0x23, 0x30, 0x01, 0xfa, 0x06, 0xf6, + 0xa3, 0x61, 0x05, 0xf1, 0x10, 0x03, 0x18, 0x35, 0x26, 0x60, 0x63, 0x60, + 0xc4, 0xe9, 0x02, 0x55, 0x70, 0xbd, 0x00, 0xbf, 0x10, 0xd9, 0x01, 0x08, + 0x10, 0xb5, 0x0c, 0x4b, 0x0c, 0x4c, 0xd4, 0xf8, 0x94, 0x20, 0x9a, 0x42, + 0xfb, 0xd1, 0xd0, 0xe9, 0x05, 0x42, 0x52, 0x43, 0x02, 0xeb, 0x42, 0x03, + 0xdb, 0x43, 0x39, 0xb9, 0x22, 0x68, 0x13, 0x40, 0x23, 0x60, 0x4f, 0xf4, + 0x40, 0x72, 0x04, 0x4b, 0x5a, 0x61, 0x10, 0xbd, 0x21, 0x68, 0x0b, 0x40, + 0x13, 0x43, 0xf5, 0xe7, 0x00, 0x03, 0x00, 0x80, 0x00, 0x64, 0x02, 0x58, + 0x03, 0x4b, 0xd9, 0x68, 0x1a, 0x68, 0x22, 0xea, 0x01, 0x02, 0x1a, 0x60, + 0x59, 0x60, 0x70, 0x47, 0x00, 0x65, 0x02, 0x58, 0x44, 0x4a, 0x13, 0x69, + 0x11, 0x46, 0x03, 0xf0, 0x38, 0x03, 0x10, 0x2b, 0x30, 0xb5, 0x7c, 0xd0, + 0x05, 0xd8, 0x00, 0x2b, 0x55, 0xd0, 0x08, 0x2b, 0x79, 0xd0, 0x0a, 0x68, + 0x52, 0xe0, 0x18, 0x2b, 0xfb, 0xd1, 0x90, 0x6a, 0x95, 0x6a, 0xd1, 0x6a, + 0x15, 0xf4, 0x7c, 0x7f, 0xc5, 0xf3, 0x05, 0x13, 0x54, 0x6b, 0x3b, 0xd0, + 0x07, 0xee, 0x90, 0x3a, 0xc4, 0xf3, 0xcc, 0x04, 0x01, 0xf0, 0x01, 0x03, + 0x00, 0xf0, 0x03, 0x00, 0xf8, 0xee, 0xe7, 0x6a, 0x63, 0x43, 0x01, 0x28, + 0xf7, 0xee, 0x00, 0x5a, 0x07, 0xee, 0x90, 0x3a, 0xfa, 0xee, 0xe9, 0x7a, + 0x39, 0xd0, 0x02, 0x28, 0x47, 0xd0, 0x11, 0x68, 0x2d, 0x4b, 0xc1, 0xf3, + 0xc1, 0x01, 0x12, 0x6b, 0xcb, 0x40, 0xc2, 0xf3, 0x08, 0x02, 0x07, 0xee, + 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x6a, 0x86, 0xee, 0x26, 0x7a, 0x06, 0xee, + 0x90, 0x2a, 0xf8, 0xee, 0xe6, 0x6a, 0x76, 0xee, 0xa7, 0x7a, 0x77, 0xee, + 0xa5, 0x7a, 0x22, 0x4b, 0x67, 0xee, 0x87, 0x7a, 0x1b, 0x6b, 0xc3, 0xf3, + 0x46, 0x23, 0x01, 0x33, 0x07, 0xee, 0x10, 0x3a, 0xf8, 0xee, 0xc7, 0x6a, + 0x87, 0xee, 0xa6, 0x7a, 0xfc, 0xee, 0xc7, 0x7a, 0x17, 0xee, 0x90, 0x3a, + 0x19, 0x49, 0x8a, 0x69, 0x89, 0x69, 0xc2, 0xf3, 0x03, 0x22, 0x19, 0x49, + 0x8a, 0x5c, 0xd3, 0x40, 0x18, 0x4a, 0x13, 0x60, 0x30, 0xbd, 0x12, 0x68, + 0xc2, 0xf3, 0xc1, 0x02, 0x13, 0x4b, 0xd3, 0x40, 0xee, 0xe7, 0x13, 0x6b, + 0x9f, 0xed, 0x14, 0x6a, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, + 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0xa5, 0x7a, + 0x86, 0xee, 0x26, 0x7a, 0xcd, 0xe7, 0x13, 0x6b, 0x9f, 0xed, 0x0d, 0x6a, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, - 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0xa5, 0x7a, 0x86, 0xee, 0x26, 0x7a, - 0xcd, 0xe7, 0x13, 0x6b, 0x9f, 0xed, 0x0d, 0x6a, 0xc3, 0xf3, 0x08, 0x03, - 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, - 0x77, 0xee, 0xa5, 0x7a, 0xee, 0xe7, 0x08, 0x4b, 0xce, 0xe7, 0x08, 0x4b, - 0xcc, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, 0x00, 0x90, 0xd0, 0x03, - 0x54, 0xda, 0x01, 0x08, 0x00, 0x00, 0x00, 0x24, 0x00, 0x24, 0x74, 0x4a, - 0x20, 0xbc, 0xbe, 0x4b, 0x40, 0x78, 0x7d, 0x01, 0x00, 0x09, 0x3d, 0x00, - 0x2b, 0x4b, 0xd3, 0xf8, 0x88, 0x20, 0x42, 0xf4, 0x70, 0x02, 0xc3, 0xf8, - 0x88, 0x20, 0x1a, 0x69, 0x42, 0xf0, 0x10, 0x02, 0x1a, 0x61, 0x27, 0x4a, - 0x13, 0x68, 0x03, 0xf0, 0x0f, 0x03, 0x06, 0x2b, 0x05, 0xd8, 0x13, 0x68, - 0x23, 0xf0, 0x0f, 0x03, 0x43, 0xf0, 0x07, 0x03, 0x13, 0x60, 0x22, 0x4b, - 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, 0x00, 0x22, 0x1a, 0x61, - 0x1f, 0x4a, 0x19, 0x68, 0x0a, 0x40, 0x1c, 0x49, 0x1a, 0x60, 0x0a, 0x68, - 0x12, 0x07, 0x05, 0xd5, 0x0a, 0x68, 0x22, 0xf0, 0x0f, 0x02, 0x42, 0xf0, - 0x07, 0x02, 0x0a, 0x60, 0x00, 0x22, 0x19, 0x49, 0x9a, 0x61, 0xda, 0x61, - 0x1a, 0x62, 0x99, 0x62, 0x17, 0x49, 0xd9, 0x62, 0x17, 0x49, 0x19, 0x63, - 0x5a, 0x63, 0x99, 0x63, 0xda, 0x63, 0x19, 0x64, 0x5a, 0x64, 0x19, 0x68, - 0x21, 0xf4, 0x80, 0x21, 0x19, 0x60, 0x1a, 0x66, 0x12, 0x4a, 0x53, 0x6a, - 0x43, 0xf4, 0x80, 0x43, 0x53, 0x62, 0x11, 0x4b, 0x1b, 0x68, 0x1b, 0x0c, - 0x1b, 0x04, 0xb3, 0xf1, 0x00, 0x5f, 0x02, 0xd2, 0x0e, 0x4b, 0x01, 0x22, - 0x1a, 0x60, 0x0e, 0x4b, 0x43, 0xf2, 0xd2, 0x02, 0x1a, 0x60, 0x0d, 0x4a, - 0x01, 0x4b, 0x9a, 0x60, 0x70, 0x47, 0x00, 0xbf, 0x00, 0xed, 0x00, 0xe0, - 0x00, 0x20, 0x00, 0x52, 0x00, 0x44, 0x02, 0x58, 0x7f, 0xed, 0xf6, 0xea, - 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0x01, 0x80, 0x02, 0x01, 0x01, - 0xc0, 0x00, 0x00, 0x58, 0x00, 0x10, 0x00, 0x5c, 0x08, 0x81, 0x00, 0x51, - 0x00, 0x40, 0x00, 0x52, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x4b, 0x01, 0x3b, - 0x0f, 0xd0, 0x02, 0x69, 0x00, 0x2a, 0xfa, 0xda, 0x03, 0x69, 0x07, 0x4a, - 0x43, 0xf0, 0x01, 0x03, 0x03, 0x61, 0x01, 0x3a, 0x05, 0xd0, 0x03, 0x69, - 0x13, 0xf0, 0x01, 0x03, 0xf9, 0xd1, 0x18, 0x46, 0x70, 0x47, 0x03, 0x20, - 0x70, 0x47, 0x00, 0xbf, 0x41, 0x0d, 0x03, 0x00, 0x30, 0xb5, 0x05, 0x6c, - 0x00, 0xf5, 0x30, 0x63, 0x0f, 0x4c, 0xa5, 0x42, 0x03, 0xd9, 0xd0, 0xf8, - 0x00, 0x4b, 0x00, 0x2c, 0x16, 0xdb, 0x00, 0x24, 0x01, 0x29, 0x1c, 0x61, - 0x1c, 0x69, 0x44, 0xf4, 0x00, 0x24, 0x1c, 0x61, 0x1c, 0x69, 0x44, 0xf0, - 0x18, 0x04, 0x1c, 0x61, 0x1c, 0x69, 0x44, 0xf0, 0xc0, 0x44, 0x1c, 0x61, - 0x06, 0xd1, 0x5a, 0x61, 0xd0, 0xf8, 0x00, 0x3b, 0x43, 0xf0, 0x80, 0x23, - 0xc0, 0xf8, 0x00, 0x3b, 0x00, 0x20, 0x30, 0xbd, 0x0a, 0x30, 0x54, 0x4f, - 0xd0, 0xf8, 0x00, 0x3e, 0x23, 0xf0, 0x03, 0x03, 0xc0, 0xf8, 0x00, 0x3e, - 0xd0, 0xf8, 0x04, 0x38, 0x43, 0xf0, 0x02, 0x03, 0xc0, 0xf8, 0x04, 0x38, - 0x00, 0x20, 0x70, 0x47, 0x70, 0xb5, 0x00, 0x23, 0x94, 0x08, 0x00, 0xf5, - 0x80, 0x55, 0x02, 0xf0, 0x03, 0x02, 0xa3, 0x42, 0x14, 0xd3, 0x01, 0xeb, - 0x84, 0x01, 0x7a, 0xb1, 0x00, 0xf5, 0x80, 0x50, 0x00, 0x23, 0x04, 0x68, - 0xd8, 0x00, 0x24, 0xfa, 0x00, 0xf0, 0xc8, 0x54, 0x01, 0x33, 0x98, 0xb2, - 0x82, 0x42, 0xf7, 0xd1, 0x01, 0x3a, 0x92, 0xb2, 0x01, 0x32, 0x11, 0x44, - 0x08, 0x46, 0x70, 0xbd, 0x2e, 0x68, 0x41, 0xf8, 0x23, 0x60, 0x01, 0x33, - 0xe3, 0xe7, 0x70, 0xb5, 0x0e, 0x78, 0x01, 0x25, 0x00, 0xf5, 0x00, 0x62, - 0x06, 0xf0, 0x0f, 0x03, 0x74, 0x01, 0x9d, 0x40, 0x4b, 0x78, 0x01, 0x2b, - 0xd3, 0x69, 0x17, 0xd1, 0x1d, 0x43, 0x00, 0xf5, 0x10, 0x60, 0xd5, 0x61, - 0x03, 0x59, 0x1a, 0x04, 0x0e, 0xd4, 0x8a, 0x68, 0x05, 0x59, 0xc2, 0xf3, - 0x0a, 0x03, 0xca, 0x78, 0x2b, 0x43, 0x43, 0xea, 0x82, 0x43, 0x43, 0xea, - 0x86, 0x53, 0x43, 0xf0, 0x80, 0x53, 0x43, 0xf4, 0x00, 0x43, 0x03, 0x51, - 0x00, 0x20, 0x70, 0xbd, 0x43, 0xea, 0x05, 0x45, 0x00, 0xf5, 0x30, 0x60, - 0xd5, 0x61, 0x03, 0x59, 0x1b, 0x04, 0xf5, 0xd4, 0x8b, 0x68, 0x02, 0x59, - 0xc3, 0xf3, 0x0a, 0x03, 0x13, 0x43, 0xca, 0x78, 0x43, 0xea, 0x82, 0x43, - 0xe7, 0xe7, 0x00, 0x00, 0x11, 0x4b, 0x4f, 0xf4, 0xfa, 0x51, 0x02, 0x46, - 0x1b, 0x68, 0xb3, 0xfb, 0xf1, 0xf1, 0x41, 0xf2, 0x88, 0x33, 0x4b, 0x43, - 0x01, 0x3b, 0x13, 0xd3, 0x51, 0x6b, 0x11, 0xf0, 0x45, 0x0f, 0xf9, 0xd0, - 0x89, 0x04, 0xf7, 0xd4, 0x53, 0x6b, 0x5b, 0x07, 0x02, 0xd5, 0x04, 0x20, - 0x90, 0x63, 0x70, 0x47, 0x50, 0x6b, 0x10, 0xf0, 0x01, 0x00, 0x14, 0xbf, - 0x01, 0x23, 0x04, 0x4b, 0x93, 0x63, 0x70, 0x47, 0x4f, 0xf0, 0x00, 0x40, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x24, 0xc5, 0x00, 0x20, 0x00, - 0x45, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x46, 0x4f, 0xf4, 0xfa, 0x50, - 0xb3, 0xfb, 0xf0, 0xf3, 0x42, 0x48, 0x5a, 0x43, 0x00, 0x2a, 0x48, 0xd0, - 0x63, 0x6b, 0x03, 0x42, 0x07, 0xd0, 0x9b, 0x04, 0x05, 0xd4, 0x63, 0x6b, - 0x58, 0x07, 0x04, 0xd5, 0x04, 0x20, 0xa0, 0x63, 0x10, 0xbd, 0x01, 0x3a, - 0xf0, 0xe7, 0x60, 0x6b, 0x10, 0xf0, 0x01, 0x00, 0x02, 0xd0, 0x01, 0x23, - 0xa3, 0x63, 0xf5, 0xe7, 0x37, 0x4b, 0xa3, 0x63, 0x23, 0x69, 0xdb, 0xb2, - 0x99, 0x42, 0x31, 0xd1, 0x63, 0x69, 0x35, 0x48, 0x18, 0x40, 0x00, 0x28, - 0xea, 0xd0, 0x00, 0x2b, 0x2c, 0xdb, 0x5a, 0x00, 0x2d, 0xd4, 0x9c, 0x00, - 0x2d, 0xd4, 0xd9, 0x00, 0x2d, 0xd4, 0x1a, 0x01, 0x2e, 0xd4, 0x5c, 0x01, - 0x2f, 0xd4, 0xd9, 0x01, 0x30, 0xd4, 0x1a, 0x02, 0x31, 0xd4, 0x5c, 0x02, - 0x32, 0xd4, 0x99, 0x02, 0x33, 0xd4, 0xda, 0x02, 0x34, 0xd4, 0x5c, 0x03, - 0x35, 0xd4, 0x99, 0x03, 0x36, 0xd4, 0xda, 0x03, 0x37, 0xd4, 0x1c, 0x04, - 0x38, 0xd4, 0x59, 0x04, 0x39, 0xd4, 0x9a, 0x04, 0x3a, 0xd4, 0x13, 0xf0, - 0x08, 0x0f, 0x14, 0xbf, 0x4f, 0xf4, 0x00, 0x00, 0x4f, 0xf4, 0x80, 0x30, - 0xc0, 0xe7, 0x4f, 0xf0, 0x00, 0x40, 0xbd, 0xe7, 0x01, 0x20, 0xbb, 0xe7, - 0x4f, 0xf0, 0x00, 0x70, 0xb8, 0xe7, 0x40, 0x20, 0xb6, 0xe7, 0x80, 0x20, - 0xb4, 0xe7, 0x4f, 0xf4, 0x80, 0x70, 0xb1, 0xe7, 0x4f, 0xf4, 0x00, 0x70, - 0xae, 0xe7, 0x4f, 0xf4, 0x80, 0x60, 0xab, 0xe7, 0x4f, 0xf4, 0x00, 0x60, - 0xa8, 0xe7, 0x4f, 0xf4, 0x80, 0x50, 0xa5, 0xe7, 0x4f, 0xf4, 0x00, 0x50, - 0xa2, 0xe7, 0x4f, 0xf4, 0x80, 0x40, 0x9f, 0xe7, 0x4f, 0xf4, 0x00, 0x40, - 0x9c, 0xe7, 0x4f, 0xf4, 0x00, 0x30, 0x99, 0xe7, 0x4f, 0xf4, 0x80, 0x20, - 0x96, 0xe7, 0x4f, 0xf4, 0x00, 0x20, 0x93, 0xe7, 0x4f, 0xf4, 0x80, 0x10, - 0x90, 0xe7, 0x4f, 0xf4, 0x00, 0x10, 0x8d, 0xe7, 0x4f, 0xf4, 0x80, 0x00, - 0x8a, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x24, 0x45, 0x00, 0x20, 0x00, - 0xc5, 0x00, 0x20, 0x00, 0x08, 0xe0, 0xff, 0xfd, 0xf0, 0xb5, 0x12, 0x4d, - 0x87, 0xb0, 0x0d, 0x27, 0x00, 0x24, 0x6b, 0x6c, 0x01, 0xa9, 0x2e, 0x68, - 0x1b, 0x04, 0x30, 0x46, 0x01, 0x93, 0x4f, 0xf4, 0x80, 0x73, 0xcd, 0xe9, - 0x02, 0x73, 0x4f, 0xf4, 0x80, 0x53, 0xcd, 0xe9, 0x04, 0x43, 0xfd, 0xf7, - 0x95, 0xf8, 0x41, 0xf2, 0x88, 0x32, 0x39, 0x46, 0x30, 0x46, 0xff, 0xf7, - 0x51, 0xff, 0x28, 0xb9, 0x2b, 0x68, 0x5c, 0x69, 0xc4, 0xf3, 0x43, 0x20, - 0x07, 0xb0, 0xf0, 0xbd, 0x6b, 0x6b, 0x18, 0x43, 0x68, 0x63, 0xf7, 0xe7, - 0x04, 0x6c, 0x00, 0x24, 0x30, 0xb5, 0x4f, 0xf4, 0x80, 0x73, 0x87, 0xb0, - 0x06, 0x25, 0x00, 0x22, 0x04, 0x46, 0x01, 0x91, 0x01, 0xa9, 0xcd, 0xe9, - 0x02, 0x53, 0x4f, 0xf4, 0x80, 0x53, 0xcd, 0xe9, 0x04, 0x23, 0xfd, 0xf7, - 0x71, 0xf8, 0x41, 0xf2, 0x88, 0x32, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, - 0x2d, 0xff, 0x07, 0xb0, 0x30, 0xbd, 0x30, 0xb5, 0x4f, 0xf4, 0x80, 0x73, - 0x87, 0xb0, 0x37, 0x25, 0x00, 0x22, 0x04, 0x46, 0x01, 0x91, 0x01, 0xa9, - 0xcd, 0xe9, 0x02, 0x53, 0x4f, 0xf4, 0x80, 0x53, 0xcd, 0xe9, 0x04, 0x23, - 0xfd, 0xf7, 0x58, 0xf8, 0x41, 0xf2, 0x88, 0x32, 0x29, 0x46, 0x20, 0x46, - 0xff, 0xf7, 0x14, 0xff, 0x07, 0xb0, 0x30, 0xbd, 0x10, 0xb5, 0x00, 0x23, - 0x86, 0xb0, 0x04, 0x46, 0x01, 0xa9, 0xcd, 0xe9, 0x01, 0x33, 0xcd, 0xe9, - 0x03, 0x33, 0x4f, 0xf4, 0x80, 0x53, 0x05, 0x93, 0xfd, 0xf7, 0x42, 0xf8, - 0x0a, 0x4b, 0x4f, 0xf4, 0xfa, 0x52, 0x1b, 0x68, 0xb3, 0xfb, 0xf2, 0xf2, - 0x41, 0xf2, 0x88, 0x33, 0x53, 0x43, 0x01, 0x3b, 0x07, 0xd3, 0x62, 0x6b, - 0x12, 0x06, 0xfa, 0xd5, 0x04, 0x4b, 0x00, 0x20, 0xa3, 0x63, 0x06, 0xb0, - 0x10, 0xbd, 0x4f, 0xf0, 0x00, 0x40, 0xfa, 0xe7, 0x00, 0x00, 0x00, 0x24, - 0xc5, 0x00, 0x20, 0x00, 0x30, 0xb5, 0x00, 0x23, 0x87, 0xb0, 0x0c, 0x25, - 0x4f, 0xf4, 0x80, 0x72, 0x04, 0x46, 0x01, 0xa9, 0xcd, 0xe9, 0x03, 0x23, - 0xcd, 0xe9, 0x01, 0x35, 0x4f, 0xf4, 0x80, 0x53, 0x05, 0x93, 0xc3, 0x68, - 0x43, 0xf0, 0x80, 0x03, 0xc3, 0x60, 0xc3, 0x68, 0x23, 0xf0, 0x40, 0x03, - 0xc3, 0x60, 0xfd, 0xf7, 0x0f, 0xf8, 0x07, 0x4a, 0x29, 0x46, 0x20, 0x46, - 0xff, 0xf7, 0xcc, 0xfe, 0xe3, 0x68, 0xb0, 0xf1, 0x00, 0x7f, 0x08, 0xbf, - 0x00, 0x20, 0x23, 0xf0, 0x80, 0x03, 0xe3, 0x60, 0x07, 0xb0, 0x30, 0xbd, - 0x00, 0xe1, 0xf5, 0x05, 0x30, 0xb5, 0x4f, 0xf4, 0x80, 0x73, 0x87, 0xb0, - 0x10, 0x25, 0x00, 0x22, 0x04, 0x46, 0x01, 0x91, 0x01, 0xa9, 0xcd, 0xe9, - 0x02, 0x53, 0x4f, 0xf4, 0x80, 0x53, 0xcd, 0xe9, 0x04, 0x23, 0xfc, 0xf7, - 0xed, 0xff, 0x41, 0xf2, 0x88, 0x32, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, - 0xa9, 0xfe, 0x07, 0xb0, 0x30, 0xbd, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x47, - 0x36, 0x4d, 0x86, 0xb0, 0x07, 0x46, 0xfe, 0xf7, 0x8b, 0xfe, 0x08, 0x21, - 0x80, 0x46, 0x28, 0x68, 0xff, 0xf7, 0xda, 0xff, 0x04, 0x46, 0x00, 0x28, - 0x37, 0xd1, 0x69, 0x6c, 0x28, 0x68, 0x09, 0x04, 0xff, 0xf7, 0x67, 0xff, - 0x04, 0x46, 0x80, 0xbb, 0x2e, 0x68, 0x4f, 0xf0, 0xff, 0x33, 0x4f, 0xf0, - 0x33, 0x09, 0x01, 0xa9, 0x73, 0x62, 0x08, 0x23, 0x01, 0x90, 0xb3, 0x62, - 0xf3, 0x6a, 0x04, 0x90, 0x30, 0x46, 0x23, 0xf0, 0xff, 0x03, 0x43, 0xf0, - 0x33, 0x03, 0xf3, 0x62, 0x4f, 0xf4, 0x80, 0x73, 0xcd, 0xe9, 0x02, 0x93, - 0x4f, 0xf4, 0x80, 0x53, 0x05, 0x93, 0xfc, 0xf7, 0xb3, 0xff, 0x41, 0xf2, - 0x88, 0x32, 0x49, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x6f, 0xfe, 0x04, 0x46, - 0x68, 0xb9, 0x81, 0x46, 0x06, 0x46, 0x40, 0xf2, 0x2a, 0x5a, 0x2b, 0x68, - 0x5a, 0x6b, 0x12, 0xea, 0x0a, 0x0f, 0x5a, 0x6b, 0x07, 0xd0, 0x11, 0x07, - 0x16, 0xd5, 0x08, 0x24, 0x9c, 0x63, 0x20, 0x46, 0x06, 0xb0, 0xbd, 0xe8, - 0xf0, 0x87, 0x10, 0x03, 0x05, 0xd4, 0x24, 0xb9, 0xd3, 0xf8, 0x80, 0x60, - 0x01, 0x24, 0xd3, 0xf8, 0x80, 0x90, 0xfe, 0xf7, 0x3d, 0xfe, 0xa0, 0xeb, - 0x08, 0x00, 0x01, 0x30, 0xe3, 0xd1, 0x4f, 0xf0, 0x00, 0x44, 0xea, 0xe7, - 0x5a, 0x6b, 0x92, 0x07, 0x01, 0xd5, 0x02, 0x24, 0xe4, 0xe7, 0x5c, 0x6b, - 0x14, 0xf0, 0x20, 0x04, 0x01, 0xd0, 0x20, 0x24, 0xde, 0xe7, 0x05, 0x4a, - 0x36, 0xba, 0x9a, 0x63, 0x99, 0xfa, 0x89, 0xf3, 0x7e, 0x60, 0x3b, 0x60, - 0xd7, 0xe7, 0x00, 0xbf, 0x04, 0x6c, 0x00, 0x24, 0x3a, 0x0f, 0x00, 0x18, - 0x2d, 0xe9, 0xf8, 0x43, 0x06, 0x68, 0x05, 0x46, 0x16, 0xf0, 0x00, 0x76, - 0x07, 0xd0, 0x83, 0x6c, 0x20, 0x2b, 0x1f, 0xd0, 0x0d, 0xd8, 0x73, 0xb1, - 0x10, 0x2b, 0x15, 0xd0, 0x01, 0x26, 0x2b, 0x68, 0xd9, 0x01, 0x73, 0xd5, - 0x6b, 0x6c, 0x03, 0x2b, 0x6f, 0xd8, 0xdf, 0xe8, 0x03, 0xf0, 0x20, 0x1b, - 0x22, 0x20, 0x30, 0x2b, 0xf2, 0xd1, 0x73, 0x4a, 0x00, 0x26, 0xa9, 0x6c, - 0xd3, 0x6c, 0x23, 0xf0, 0x30, 0x03, 0x0b, 0x43, 0xd3, 0x64, 0xea, 0xe7, - 0x6e, 0x4a, 0xd3, 0x6a, 0x43, 0xf4, 0x00, 0x33, 0xd3, 0x62, 0xf0, 0xe7, - 0x02, 0x21, 0x04, 0x30, 0xfe, 0xf7, 0x7c, 0xff, 0x06, 0x46, 0x00, 0x28, - 0xdd, 0xd1, 0xe8, 0xe7, 0x67, 0x4a, 0xd3, 0x6a, 0x43, 0xf4, 0x00, 0x33, - 0xd3, 0x62, 0x34, 0x46, 0x04, 0xe0, 0x02, 0x21, 0x28, 0x1d, 0xfe, 0xf7, - 0x6d, 0xff, 0x04, 0x46, 0x00, 0x2c, 0x47, 0xd1, 0x60, 0x4a, 0x69, 0x6c, - 0xd3, 0x6c, 0x23, 0xf0, 0x03, 0x03, 0x0b, 0x43, 0xd3, 0x64, 0x2b, 0x68, - 0x5a, 0x02, 0x47, 0xd5, 0x5c, 0x4f, 0x3b, 0x68, 0x43, 0xf4, 0x80, 0x73, - 0x3b, 0x60, 0xfe, 0xf7, 0xcd, 0xfd, 0x80, 0x46, 0x3b, 0x68, 0xdb, 0x05, - 0x34, 0xd5, 0x00, 0x2c, 0x66, 0xd1, 0x55, 0x4b, 0xd5, 0xf8, 0xb4, 0x00, - 0x1a, 0x6f, 0x42, 0x40, 0x12, 0xf4, 0x40, 0x7f, 0x0b, 0xd0, 0x1a, 0x6f, - 0x19, 0x6f, 0x22, 0xf4, 0x40, 0x72, 0x41, 0xf4, 0x80, 0x31, 0x19, 0x67, - 0x19, 0x6f, 0x21, 0xf4, 0x80, 0x31, 0x19, 0x67, 0x1a, 0x67, 0xb0, 0xf5, - 0x80, 0x7f, 0x3a, 0xd0, 0xd5, 0xf8, 0xb4, 0x30, 0x48, 0x49, 0x03, 0xf4, - 0x40, 0x72, 0xb2, 0xf5, 0x40, 0x7f, 0x43, 0xd1, 0x08, 0x69, 0x47, 0x4a, - 0x20, 0xf4, 0x7c, 0x50, 0x02, 0xea, 0x13, 0x12, 0x02, 0x43, 0x0a, 0x61, - 0xc3, 0xf3, 0x0b, 0x03, 0x40, 0x4a, 0x11, 0x6f, 0x0b, 0x43, 0x13, 0x67, - 0x0c, 0xe0, 0x01, 0x26, 0x34, 0x46, 0xbe, 0xe7, 0x26, 0x46, 0xbc, 0xe7, - 0xfe, 0xf7, 0x92, 0xfd, 0xa0, 0xeb, 0x08, 0x00, 0x64, 0x28, 0xc1, 0xd9, - 0x03, 0x26, 0x34, 0x46, 0x2b, 0x68, 0xd9, 0x07, 0x08, 0xd5, 0xeb, 0x6f, - 0x10, 0x2b, 0x3c, 0xd0, 0x26, 0xd8, 0x5b, 0xb3, 0x08, 0x2b, 0x32, 0xd0, - 0x01, 0x26, 0x34, 0x46, 0x2b, 0x68, 0x9a, 0x07, 0x48, 0xd5, 0xab, 0x6f, - 0x05, 0x2b, 0x58, 0xd8, 0xdf, 0xe8, 0x03, 0xf0, 0x3c, 0x37, 0x51, 0x3c, - 0x3c, 0x3c, 0xfe, 0xf7, 0x73, 0xfd, 0xdf, 0xf8, 0xac, 0x80, 0x07, 0x46, - 0x41, 0xf2, 0x88, 0x39, 0xd8, 0xf8, 0x70, 0x30, 0x98, 0x07, 0xb9, 0xd4, - 0xfe, 0xf7, 0x68, 0xfd, 0xc0, 0x1b, 0x48, 0x45, 0xf6, 0xd9, 0xd5, 0xe7, - 0x0a, 0x69, 0x22, 0xf4, 0x7c, 0x52, 0xbe, 0xe7, 0x26, 0x46, 0xd1, 0xe7, - 0x23, 0xf0, 0x08, 0x02, 0x20, 0x2a, 0x01, 0xd0, 0x18, 0x2b, 0xd5, 0xd1, - 0x9c, 0xb9, 0x1d, 0x4a, 0xe9, 0x6f, 0x53, 0x6d, 0x23, 0xf0, 0x38, 0x03, - 0x0b, 0x43, 0x53, 0x65, 0xce, 0xe7, 0x01, 0x21, 0x28, 0x1d, 0xfe, 0xf7, - 0xd7, 0xfe, 0x04, 0x46, 0xf0, 0xe7, 0x01, 0x21, 0x05, 0xf1, 0x24, 0x00, - 0xfe, 0xf7, 0x50, 0xfe, 0xf7, 0xe7, 0x26, 0x46, 0xc0, 0xe7, 0x01, 0x21, - 0x28, 0x1d, 0xfe, 0xf7, 0xc9, 0xfe, 0x04, 0x46, 0xe4, 0xb9, 0x0f, 0x4a, - 0xa9, 0x6f, 0x53, 0x6d, 0x23, 0xf0, 0x07, 0x03, 0x0b, 0x43, 0x53, 0x65, - 0x2b, 0x68, 0x5b, 0x07, 0x2a, 0xd5, 0xd5, 0xf8, 0x94, 0x30, 0x05, 0x2b, - 0x00, 0xf2, 0x9e, 0x80, 0xdf, 0xe8, 0x03, 0xf0, 0x19, 0x14, 0x96, 0x19, - 0x19, 0x19, 0x01, 0x21, 0x05, 0xf1, 0x24, 0x00, 0xfe, 0xf7, 0x2e, 0xfe, - 0xe3, 0xe7, 0x01, 0x26, 0x34, 0x46, 0xe9, 0xe7, 0x26, 0x46, 0xe7, 0xe7, - 0x00, 0x44, 0x02, 0x58, 0x00, 0x48, 0x02, 0x58, 0xcf, 0xff, 0xff, 0x00, - 0x01, 0x21, 0x28, 0x1d, 0xfe, 0xf7, 0x9e, 0xfe, 0x04, 0x46, 0x00, 0x2c, - 0x40, 0xf0, 0x83, 0x80, 0x53, 0x4a, 0xd5, 0xf8, 0x94, 0x10, 0x93, 0x6d, - 0x23, 0xf0, 0x07, 0x03, 0x0b, 0x43, 0x93, 0x65, 0x2b, 0x68, 0x1f, 0x07, - 0x14, 0xd5, 0xd5, 0xf8, 0x84, 0x30, 0xb3, 0xf5, 0x80, 0x5f, 0x07, 0xd1, - 0x02, 0x21, 0x05, 0xf1, 0x24, 0x00, 0xfe, 0xf7, 0x05, 0xfe, 0x00, 0x28, - 0x18, 0xbf, 0x01, 0x26, 0x47, 0x4a, 0xd5, 0xf8, 0x84, 0x10, 0x53, 0x6d, - 0x23, 0xf4, 0x40, 0x53, 0x0b, 0x43, 0x53, 0x65, 0x2b, 0x68, 0xd8, 0x06, - 0x14, 0xd5, 0xd5, 0xf8, 0x98, 0x30, 0xb3, 0xf5, 0x80, 0x7f, 0x07, 0xd1, - 0x02, 0x21, 0x05, 0xf1, 0x24, 0x00, 0xfe, 0xf7, 0xed, 0xfd, 0x00, 0x28, - 0x18, 0xbf, 0x01, 0x26, 0x3b, 0x4a, 0xd5, 0xf8, 0x98, 0x10, 0x93, 0x6d, - 0x23, 0xf4, 0x40, 0x73, 0x0b, 0x43, 0x93, 0x65, 0x2b, 0x68, 0x59, 0x03, - 0x19, 0xd5, 0xd5, 0xf8, 0x88, 0x30, 0xb3, 0xf5, 0x00, 0x1f, 0x44, 0xd0, - 0xb3, 0xf5, 0x40, 0x1f, 0x07, 0xd0, 0xb3, 0xf5, 0x80, 0x1f, 0x45, 0xd1, - 0x30, 0x4a, 0xd3, 0x6a, 0x43, 0xf4, 0x00, 0x33, 0xd3, 0x62, 0x00, 0x2c, - 0x41, 0xd1, 0x2d, 0x4a, 0xd5, 0xf8, 0x88, 0x10, 0x53, 0x6d, 0x23, 0xf4, - 0x40, 0x13, 0x0b, 0x43, 0x53, 0x65, 0x2b, 0x68, 0xda, 0x03, 0x06, 0xd5, - 0x2b, 0x6d, 0x00, 0x2b, 0x35, 0xd0, 0xb3, 0xf5, 0x80, 0x3f, 0x40, 0xd0, - 0x01, 0x26, 0x29, 0x68, 0x4b, 0x00, 0x09, 0xd5, 0x22, 0x4b, 0x1a, 0x69, - 0x22, 0xf4, 0x00, 0x42, 0x1a, 0x61, 0x1a, 0x69, 0xd5, 0xf8, 0xbc, 0x00, - 0x02, 0x43, 0x1a, 0x61, 0x00, 0x29, 0x06, 0xda, 0x1c, 0x4a, 0x69, 0x6d, - 0xd3, 0x6c, 0x23, 0xf0, 0x40, 0x53, 0x0b, 0x43, 0xd3, 0x64, 0x30, 0x1e, - 0x18, 0xbf, 0x01, 0x20, 0xbd, 0xe8, 0xf8, 0x83, 0x01, 0x21, 0x05, 0xf1, - 0x24, 0x00, 0xfe, 0xf7, 0x9b, 0xfd, 0x7b, 0xe7, 0x01, 0x26, 0x34, 0x46, - 0x84, 0xe7, 0x26, 0x46, 0x82, 0xe7, 0x01, 0x21, 0x05, 0xf1, 0x24, 0x00, - 0xfe, 0xf7, 0x90, 0xfd, 0x04, 0x46, 0xbe, 0xe7, 0x01, 0x26, 0x34, 0x46, - 0xc5, 0xe7, 0x26, 0x46, 0xc3, 0xe7, 0x0b, 0x4a, 0xd3, 0x6a, 0x43, 0xf4, - 0x00, 0x33, 0xd3, 0x62, 0x6c, 0xb9, 0x08, 0x4a, 0x29, 0x6d, 0xd3, 0x6c, - 0x23, 0xf4, 0x80, 0x33, 0x0b, 0x43, 0xd3, 0x64, 0xbf, 0xe7, 0x02, 0x21, - 0x28, 0x1d, 0xfe, 0xf7, 0xf7, 0xfd, 0x04, 0x46, 0xf0, 0xe7, 0x26, 0x46, - 0xb7, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, 0x00, 0xb5, 0x0c, 0x23, - 0xc5, 0xb0, 0x01, 0x93, 0x00, 0x23, 0x01, 0xa8, 0x0a, 0x93, 0x03, 0x93, - 0x01, 0x23, 0x06, 0x93, 0xfe, 0xf7, 0x64, 0xfe, 0x70, 0xb9, 0x4f, 0xf4, - 0x80, 0x03, 0x14, 0xa8, 0x14, 0x93, 0x4f, 0xf4, 0x00, 0x73, 0x41, 0x93, - 0xff, 0xf7, 0x30, 0xfe, 0x20, 0xb9, 0x04, 0x4a, 0x13, 0x6f, 0x43, 0xf4, - 0x00, 0x43, 0x13, 0x67, 0x45, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x00, 0xbf, - 0x00, 0x44, 0x02, 0x58, 0x48, 0x4b, 0x1a, 0x69, 0x02, 0xf0, 0x38, 0x02, - 0x10, 0x2a, 0x30, 0xb5, 0x00, 0xf0, 0x86, 0x80, 0x18, 0x2a, 0x0c, 0xd0, - 0x00, 0x2a, 0x40, 0xf0, 0x83, 0x80, 0x1a, 0x68, 0x42, 0x48, 0x12, 0xf0, - 0x20, 0x0f, 0x03, 0xd0, 0x1b, 0x68, 0xc3, 0xf3, 0xc1, 0x03, 0xd8, 0x40, - 0x30, 0xbd, 0x99, 0x6a, 0x9d, 0x6a, 0xda, 0x6a, 0x15, 0xf4, 0x7c, 0x7f, - 0xc5, 0xf3, 0x05, 0x10, 0x5c, 0x6b, 0xf5, 0xd0, 0xc4, 0xf3, 0xcc, 0x04, - 0x02, 0xf0, 0x01, 0x02, 0x07, 0xee, 0x90, 0x0a, 0x01, 0xf0, 0x03, 0x01, - 0x62, 0x43, 0xb7, 0xee, 0x00, 0x6a, 0xf8, 0xee, 0xe7, 0x6a, 0x01, 0x29, - 0x07, 0xee, 0x90, 0x2a, 0xfa, 0xee, 0xe9, 0x7a, 0x4c, 0xd0, 0x02, 0x29, - 0x3c, 0xd0, 0x00, 0x29, 0x48, 0xd1, 0x1a, 0x68, 0x92, 0x06, 0x27, 0xd5, - 0x19, 0x68, 0x2c, 0x4a, 0xc1, 0xf3, 0xc1, 0x01, 0x1b, 0x6b, 0xca, 0x40, - 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x2a, 0xf8, 0xee, 0xc7, 0x5a, - 0x85, 0xee, 0xa6, 0x7a, 0x06, 0xee, 0x90, 0x3a, 0xf8, 0xee, 0xe6, 0x6a, - 0x76, 0xee, 0xa7, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0x20, 0x4b, 0x67, 0xee, - 0x87, 0x7a, 0x1b, 0x6b, 0xc3, 0xf3, 0x46, 0x23, 0x01, 0x33, 0x07, 0xee, - 0x10, 0x3a, 0xf8, 0xee, 0xc7, 0x6a, 0x87, 0xee, 0xa6, 0x7a, 0xfc, 0xee, - 0xc7, 0x7a, 0x17, 0xee, 0x90, 0x0a, 0xb3, 0xe7, 0x1b, 0x6b, 0xc3, 0xf3, - 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, - 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0x9f, 0xed, 0x14, 0x6a, 0x86, 0xee, - 0x26, 0x7a, 0xdd, 0xe7, 0x1b, 0x6b, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, - 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, - 0x86, 0x7a, 0x9f, 0xed, 0x0d, 0x6a, 0xee, 0xe7, 0x1b, 0x6b, 0xc3, 0xf3, + 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0xa5, 0x7a, 0xee, 0xe7, 0x08, 0x4b, + 0xce, 0xe7, 0x08, 0x4b, 0xcc, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, + 0x00, 0x90, 0xd0, 0x03, 0x29, 0xd5, 0x01, 0x08, 0x00, 0x00, 0x00, 0x24, + 0x00, 0x24, 0x74, 0x4a, 0x20, 0xbc, 0xbe, 0x4b, 0x40, 0x78, 0x7d, 0x01, + 0x00, 0x09, 0x3d, 0x00, 0x2b, 0x4b, 0xd3, 0xf8, 0x88, 0x20, 0x42, 0xf4, + 0x70, 0x02, 0xc3, 0xf8, 0x88, 0x20, 0x1a, 0x69, 0x42, 0xf0, 0x10, 0x02, + 0x1a, 0x61, 0x27, 0x4a, 0x13, 0x68, 0x03, 0xf0, 0x0f, 0x03, 0x06, 0x2b, + 0x05, 0xd8, 0x13, 0x68, 0x23, 0xf0, 0x0f, 0x03, 0x43, 0xf0, 0x07, 0x03, + 0x13, 0x60, 0x22, 0x4b, 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, + 0x00, 0x22, 0x1a, 0x61, 0x1f, 0x4a, 0x19, 0x68, 0x0a, 0x40, 0x1c, 0x49, + 0x1a, 0x60, 0x0a, 0x68, 0x12, 0x07, 0x05, 0xd5, 0x0a, 0x68, 0x22, 0xf0, + 0x0f, 0x02, 0x42, 0xf0, 0x07, 0x02, 0x0a, 0x60, 0x00, 0x22, 0x19, 0x49, + 0x9a, 0x61, 0xda, 0x61, 0x1a, 0x62, 0x99, 0x62, 0x17, 0x49, 0xd9, 0x62, + 0x17, 0x49, 0x19, 0x63, 0x5a, 0x63, 0x99, 0x63, 0xda, 0x63, 0x19, 0x64, + 0x5a, 0x64, 0x19, 0x68, 0x21, 0xf4, 0x80, 0x21, 0x19, 0x60, 0x1a, 0x66, + 0x12, 0x4a, 0x53, 0x6a, 0x43, 0xf4, 0x80, 0x43, 0x53, 0x62, 0x11, 0x4b, + 0x1b, 0x68, 0x1b, 0x0c, 0x1b, 0x04, 0xb3, 0xf1, 0x00, 0x5f, 0x02, 0xd2, + 0x0e, 0x4b, 0x01, 0x22, 0x1a, 0x60, 0x0e, 0x4b, 0x43, 0xf2, 0xd2, 0x02, + 0x1a, 0x60, 0x0d, 0x4a, 0x01, 0x4b, 0x9a, 0x60, 0x70, 0x47, 0x00, 0xbf, + 0x00, 0xed, 0x00, 0xe0, 0x00, 0x20, 0x00, 0x52, 0x00, 0x44, 0x02, 0x58, + 0x7f, 0xed, 0xf6, 0xea, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0xff, 0x01, + 0x80, 0x02, 0x01, 0x01, 0xc0, 0x00, 0x00, 0x58, 0x00, 0x10, 0x00, 0x5c, + 0x08, 0x81, 0x00, 0x51, 0x00, 0x40, 0x00, 0x52, 0x00, 0x00, 0x00, 0x08, + 0x0a, 0x4b, 0x01, 0x3b, 0x0f, 0xd0, 0x02, 0x69, 0x00, 0x2a, 0xfa, 0xda, + 0x03, 0x69, 0x07, 0x4a, 0x43, 0xf0, 0x01, 0x03, 0x03, 0x61, 0x01, 0x3a, + 0x05, 0xd0, 0x03, 0x69, 0x13, 0xf0, 0x01, 0x03, 0xf9, 0xd1, 0x18, 0x46, + 0x70, 0x47, 0x03, 0x20, 0x70, 0x47, 0x00, 0xbf, 0x41, 0x0d, 0x03, 0x00, + 0x30, 0xb5, 0x05, 0x6c, 0x00, 0xf5, 0x30, 0x63, 0x0f, 0x4c, 0xa5, 0x42, + 0x03, 0xd9, 0xd0, 0xf8, 0x00, 0x4b, 0x00, 0x2c, 0x16, 0xdb, 0x00, 0x24, + 0x01, 0x29, 0x1c, 0x61, 0x1c, 0x69, 0x44, 0xf4, 0x00, 0x24, 0x1c, 0x61, + 0x1c, 0x69, 0x44, 0xf0, 0x18, 0x04, 0x1c, 0x61, 0x1c, 0x69, 0x44, 0xf0, + 0xc0, 0x44, 0x1c, 0x61, 0x06, 0xd1, 0x5a, 0x61, 0xd0, 0xf8, 0x00, 0x3b, + 0x43, 0xf0, 0x80, 0x23, 0xc0, 0xf8, 0x00, 0x3b, 0x00, 0x20, 0x30, 0xbd, + 0x0a, 0x30, 0x54, 0x4f, 0xd0, 0xf8, 0x00, 0x3e, 0x23, 0xf0, 0x03, 0x03, + 0xc0, 0xf8, 0x00, 0x3e, 0xd0, 0xf8, 0x04, 0x38, 0x43, 0xf0, 0x02, 0x03, + 0xc0, 0xf8, 0x04, 0x38, 0x00, 0x20, 0x70, 0x47, 0x70, 0xb5, 0x00, 0x23, + 0x94, 0x08, 0x00, 0xf5, 0x80, 0x55, 0x02, 0xf0, 0x03, 0x02, 0xa3, 0x42, + 0x14, 0xd3, 0x01, 0xeb, 0x84, 0x01, 0x7a, 0xb1, 0x00, 0xf5, 0x80, 0x50, + 0x00, 0x23, 0x04, 0x68, 0xd8, 0x00, 0x24, 0xfa, 0x00, 0xf0, 0xc8, 0x54, + 0x01, 0x33, 0x98, 0xb2, 0x82, 0x42, 0xf7, 0xd1, 0x01, 0x3a, 0x92, 0xb2, + 0x01, 0x32, 0x11, 0x44, 0x08, 0x46, 0x70, 0xbd, 0x2e, 0x68, 0x41, 0xf8, + 0x23, 0x60, 0x01, 0x33, 0xe3, 0xe7, 0x70, 0xb5, 0x0e, 0x78, 0x01, 0x25, + 0x00, 0xf5, 0x00, 0x62, 0x06, 0xf0, 0x0f, 0x03, 0x74, 0x01, 0x9d, 0x40, + 0x4b, 0x78, 0x01, 0x2b, 0xd3, 0x69, 0x17, 0xd1, 0x1d, 0x43, 0x00, 0xf5, + 0x10, 0x60, 0xd5, 0x61, 0x03, 0x59, 0x1a, 0x04, 0x0e, 0xd4, 0x8a, 0x68, + 0x05, 0x59, 0xc2, 0xf3, 0x0a, 0x03, 0xca, 0x78, 0x2b, 0x43, 0x43, 0xea, + 0x82, 0x43, 0x43, 0xea, 0x86, 0x53, 0x43, 0xf0, 0x80, 0x53, 0x43, 0xf4, + 0x00, 0x43, 0x03, 0x51, 0x00, 0x20, 0x70, 0xbd, 0x43, 0xea, 0x05, 0x45, + 0x00, 0xf5, 0x30, 0x60, 0xd5, 0x61, 0x03, 0x59, 0x1b, 0x04, 0xf5, 0xd4, + 0x8b, 0x68, 0x02, 0x59, 0xc3, 0xf3, 0x0a, 0x03, 0x13, 0x43, 0xca, 0x78, + 0x43, 0xea, 0x82, 0x43, 0xe7, 0xe7, 0x00, 0x00, 0x11, 0x4b, 0x4f, 0xf4, + 0xfa, 0x51, 0x02, 0x46, 0x1b, 0x68, 0xb3, 0xfb, 0xf1, 0xf1, 0x41, 0xf2, + 0x88, 0x33, 0x4b, 0x43, 0x01, 0x3b, 0x13, 0xd3, 0x51, 0x6b, 0x11, 0xf0, + 0x45, 0x0f, 0xf9, 0xd0, 0x89, 0x04, 0xf7, 0xd4, 0x53, 0x6b, 0x5b, 0x07, + 0x02, 0xd5, 0x04, 0x20, 0x90, 0x63, 0x70, 0x47, 0x50, 0x6b, 0x10, 0xf0, + 0x01, 0x00, 0x14, 0xbf, 0x01, 0x23, 0x04, 0x4b, 0x93, 0x63, 0x70, 0x47, + 0x4f, 0xf0, 0x00, 0x40, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x24, + 0xc5, 0x00, 0x20, 0x00, 0x45, 0x4b, 0x10, 0xb5, 0x1b, 0x68, 0x04, 0x46, + 0x4f, 0xf4, 0xfa, 0x50, 0xb3, 0xfb, 0xf0, 0xf3, 0x42, 0x48, 0x5a, 0x43, + 0x00, 0x2a, 0x48, 0xd0, 0x63, 0x6b, 0x03, 0x42, 0x07, 0xd0, 0x9b, 0x04, + 0x05, 0xd4, 0x63, 0x6b, 0x58, 0x07, 0x04, 0xd5, 0x04, 0x20, 0xa0, 0x63, + 0x10, 0xbd, 0x01, 0x3a, 0xf0, 0xe7, 0x60, 0x6b, 0x10, 0xf0, 0x01, 0x00, + 0x02, 0xd0, 0x01, 0x23, 0xa3, 0x63, 0xf5, 0xe7, 0x37, 0x4b, 0xa3, 0x63, + 0x23, 0x69, 0xdb, 0xb2, 0x99, 0x42, 0x31, 0xd1, 0x63, 0x69, 0x35, 0x48, + 0x18, 0x40, 0x00, 0x28, 0xea, 0xd0, 0x00, 0x2b, 0x2c, 0xdb, 0x5a, 0x00, + 0x2d, 0xd4, 0x9c, 0x00, 0x2d, 0xd4, 0xd9, 0x00, 0x2d, 0xd4, 0x1a, 0x01, + 0x2e, 0xd4, 0x5c, 0x01, 0x2f, 0xd4, 0xd9, 0x01, 0x30, 0xd4, 0x1a, 0x02, + 0x31, 0xd4, 0x5c, 0x02, 0x32, 0xd4, 0x99, 0x02, 0x33, 0xd4, 0xda, 0x02, + 0x34, 0xd4, 0x5c, 0x03, 0x35, 0xd4, 0x99, 0x03, 0x36, 0xd4, 0xda, 0x03, + 0x37, 0xd4, 0x1c, 0x04, 0x38, 0xd4, 0x59, 0x04, 0x39, 0xd4, 0x9a, 0x04, + 0x3a, 0xd4, 0x13, 0xf0, 0x08, 0x0f, 0x14, 0xbf, 0x4f, 0xf4, 0x00, 0x00, + 0x4f, 0xf4, 0x80, 0x30, 0xc0, 0xe7, 0x4f, 0xf0, 0x00, 0x40, 0xbd, 0xe7, + 0x01, 0x20, 0xbb, 0xe7, 0x4f, 0xf0, 0x00, 0x70, 0xb8, 0xe7, 0x40, 0x20, + 0xb6, 0xe7, 0x80, 0x20, 0xb4, 0xe7, 0x4f, 0xf4, 0x80, 0x70, 0xb1, 0xe7, + 0x4f, 0xf4, 0x00, 0x70, 0xae, 0xe7, 0x4f, 0xf4, 0x80, 0x60, 0xab, 0xe7, + 0x4f, 0xf4, 0x00, 0x60, 0xa8, 0xe7, 0x4f, 0xf4, 0x80, 0x50, 0xa5, 0xe7, + 0x4f, 0xf4, 0x00, 0x50, 0xa2, 0xe7, 0x4f, 0xf4, 0x80, 0x40, 0x9f, 0xe7, + 0x4f, 0xf4, 0x00, 0x40, 0x9c, 0xe7, 0x4f, 0xf4, 0x00, 0x30, 0x99, 0xe7, + 0x4f, 0xf4, 0x80, 0x20, 0x96, 0xe7, 0x4f, 0xf4, 0x00, 0x20, 0x93, 0xe7, + 0x4f, 0xf4, 0x80, 0x10, 0x90, 0xe7, 0x4f, 0xf4, 0x00, 0x10, 0x8d, 0xe7, + 0x4f, 0xf4, 0x80, 0x00, 0x8a, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x24, + 0x45, 0x00, 0x20, 0x00, 0xc5, 0x00, 0x20, 0x00, 0x08, 0xe0, 0xff, 0xfd, + 0xf0, 0xb5, 0x12, 0x4d, 0x87, 0xb0, 0x0d, 0x27, 0x00, 0x24, 0x6b, 0x6c, + 0x01, 0xa9, 0x2e, 0x68, 0x1b, 0x04, 0x30, 0x46, 0x01, 0x93, 0x4f, 0xf4, + 0x80, 0x73, 0xcd, 0xe9, 0x02, 0x73, 0x4f, 0xf4, 0x80, 0x53, 0xcd, 0xe9, + 0x04, 0x43, 0xfc, 0xf7, 0x43, 0xff, 0x41, 0xf2, 0x88, 0x32, 0x39, 0x46, + 0x30, 0x46, 0xff, 0xf7, 0x51, 0xff, 0x28, 0xb9, 0x2b, 0x68, 0x5c, 0x69, + 0xc4, 0xf3, 0x43, 0x20, 0x07, 0xb0, 0xf0, 0xbd, 0x6b, 0x6b, 0x18, 0x43, + 0x68, 0x63, 0xf7, 0xe7, 0x2c, 0x0d, 0x02, 0x24, 0x30, 0xb5, 0x4f, 0xf4, + 0x80, 0x73, 0x87, 0xb0, 0x06, 0x25, 0x00, 0x22, 0x04, 0x46, 0x01, 0x91, + 0x01, 0xa9, 0xcd, 0xe9, 0x02, 0x53, 0x4f, 0xf4, 0x80, 0x53, 0xcd, 0xe9, + 0x04, 0x23, 0xfc, 0xf7, 0x1f, 0xff, 0x41, 0xf2, 0x88, 0x32, 0x29, 0x46, + 0x20, 0x46, 0xff, 0xf7, 0x2d, 0xff, 0x07, 0xb0, 0x30, 0xbd, 0x30, 0xb5, + 0x4f, 0xf4, 0x80, 0x73, 0x87, 0xb0, 0x37, 0x25, 0x00, 0x22, 0x04, 0x46, + 0x01, 0x91, 0x01, 0xa9, 0xcd, 0xe9, 0x02, 0x53, 0x4f, 0xf4, 0x80, 0x53, + 0xcd, 0xe9, 0x04, 0x23, 0xfc, 0xf7, 0x06, 0xff, 0x41, 0xf2, 0x88, 0x32, + 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x14, 0xff, 0x07, 0xb0, 0x30, 0xbd, + 0x10, 0xb5, 0x00, 0x23, 0x86, 0xb0, 0x04, 0x46, 0x01, 0xa9, 0xcd, 0xe9, + 0x01, 0x33, 0xcd, 0xe9, 0x03, 0x33, 0x4f, 0xf4, 0x80, 0x53, 0x05, 0x93, + 0xfc, 0xf7, 0xf0, 0xfe, 0x0a, 0x4b, 0x4f, 0xf4, 0xfa, 0x52, 0x1b, 0x68, + 0xb3, 0xfb, 0xf2, 0xf2, 0x41, 0xf2, 0x88, 0x33, 0x53, 0x43, 0x01, 0x3b, + 0x07, 0xd3, 0x62, 0x6b, 0x12, 0x06, 0xfa, 0xd5, 0x04, 0x4b, 0x00, 0x20, + 0xa3, 0x63, 0x06, 0xb0, 0x10, 0xbd, 0x4f, 0xf0, 0x00, 0x40, 0xfa, 0xe7, + 0x00, 0x00, 0x00, 0x24, 0xc5, 0x00, 0x20, 0x00, 0x30, 0xb5, 0x00, 0x23, + 0x87, 0xb0, 0x0c, 0x25, 0x4f, 0xf4, 0x80, 0x72, 0x04, 0x46, 0x01, 0xa9, + 0xcd, 0xe9, 0x03, 0x23, 0xcd, 0xe9, 0x01, 0x35, 0x4f, 0xf4, 0x80, 0x53, + 0x05, 0x93, 0xc3, 0x68, 0x43, 0xf0, 0x80, 0x03, 0xc3, 0x60, 0xc3, 0x68, + 0x23, 0xf0, 0x40, 0x03, 0xc3, 0x60, 0xfc, 0xf7, 0xbd, 0xfe, 0x07, 0x4a, + 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xcc, 0xfe, 0xe3, 0x68, 0xb0, 0xf1, + 0x00, 0x7f, 0x08, 0xbf, 0x00, 0x20, 0x23, 0xf0, 0x80, 0x03, 0xe3, 0x60, + 0x07, 0xb0, 0x30, 0xbd, 0x00, 0xe1, 0xf5, 0x05, 0x30, 0xb5, 0x4f, 0xf4, + 0x80, 0x73, 0x87, 0xb0, 0x10, 0x25, 0x00, 0x22, 0x04, 0x46, 0x01, 0x91, + 0x01, 0xa9, 0xcd, 0xe9, 0x02, 0x53, 0x4f, 0xf4, 0x80, 0x53, 0xcd, 0xe9, + 0x04, 0x23, 0xfc, 0xf7, 0x9b, 0xfe, 0x41, 0xf2, 0x88, 0x32, 0x29, 0x46, + 0x20, 0x46, 0xff, 0xf7, 0xa9, 0xfe, 0x07, 0xb0, 0x30, 0xbd, 0x00, 0x00, + 0x2d, 0xe9, 0xf0, 0x47, 0x36, 0x4d, 0x86, 0xb0, 0x07, 0x46, 0xfe, 0xf7, + 0x8b, 0xfe, 0x08, 0x21, 0x80, 0x46, 0x28, 0x68, 0xff, 0xf7, 0xda, 0xff, + 0x04, 0x46, 0x00, 0x28, 0x37, 0xd1, 0x69, 0x6c, 0x28, 0x68, 0x09, 0x04, + 0xff, 0xf7, 0x67, 0xff, 0x04, 0x46, 0x80, 0xbb, 0x2e, 0x68, 0x4f, 0xf0, + 0xff, 0x33, 0x4f, 0xf0, 0x33, 0x09, 0x01, 0xa9, 0x73, 0x62, 0x08, 0x23, + 0x01, 0x90, 0xb3, 0x62, 0xf3, 0x6a, 0x04, 0x90, 0x30, 0x46, 0x23, 0xf0, + 0xff, 0x03, 0x43, 0xf0, 0x33, 0x03, 0xf3, 0x62, 0x4f, 0xf4, 0x80, 0x73, + 0xcd, 0xe9, 0x02, 0x93, 0x4f, 0xf4, 0x80, 0x53, 0x05, 0x93, 0xfc, 0xf7, + 0x61, 0xfe, 0x41, 0xf2, 0x88, 0x32, 0x49, 0x46, 0x30, 0x46, 0xff, 0xf7, + 0x6f, 0xfe, 0x04, 0x46, 0x68, 0xb9, 0x81, 0x46, 0x06, 0x46, 0x40, 0xf2, + 0x2a, 0x5a, 0x2b, 0x68, 0x5a, 0x6b, 0x12, 0xea, 0x0a, 0x0f, 0x5a, 0x6b, + 0x07, 0xd0, 0x11, 0x07, 0x16, 0xd5, 0x08, 0x24, 0x9c, 0x63, 0x20, 0x46, + 0x06, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x10, 0x03, 0x05, 0xd4, 0x24, 0xb9, + 0xd3, 0xf8, 0x80, 0x60, 0x01, 0x24, 0xd3, 0xf8, 0x80, 0x90, 0xfe, 0xf7, + 0x3d, 0xfe, 0xa0, 0xeb, 0x08, 0x00, 0x01, 0x30, 0xe3, 0xd1, 0x4f, 0xf0, + 0x00, 0x44, 0xea, 0xe7, 0x5a, 0x6b, 0x92, 0x07, 0x01, 0xd5, 0x02, 0x24, + 0xe4, 0xe7, 0x5c, 0x6b, 0x14, 0xf0, 0x20, 0x04, 0x01, 0xd0, 0x20, 0x24, + 0xde, 0xe7, 0x05, 0x4a, 0x36, 0xba, 0x9a, 0x63, 0x99, 0xfa, 0x89, 0xf3, + 0x7e, 0x60, 0x3b, 0x60, 0xd7, 0xe7, 0x00, 0xbf, 0x2c, 0x0d, 0x02, 0x24, + 0x3a, 0x0f, 0x00, 0x18, 0x2d, 0xe9, 0xf8, 0x43, 0x06, 0x68, 0x05, 0x46, + 0x16, 0xf0, 0x00, 0x76, 0x07, 0xd0, 0x83, 0x6c, 0x20, 0x2b, 0x1f, 0xd0, + 0x0d, 0xd8, 0x73, 0xb1, 0x10, 0x2b, 0x15, 0xd0, 0x01, 0x26, 0x2b, 0x68, + 0xd9, 0x01, 0x73, 0xd5, 0x6b, 0x6c, 0x03, 0x2b, 0x6f, 0xd8, 0xdf, 0xe8, + 0x03, 0xf0, 0x20, 0x1b, 0x22, 0x20, 0x30, 0x2b, 0xf2, 0xd1, 0x73, 0x4a, + 0x00, 0x26, 0xa9, 0x6c, 0xd3, 0x6c, 0x23, 0xf0, 0x30, 0x03, 0x0b, 0x43, + 0xd3, 0x64, 0xea, 0xe7, 0x6e, 0x4a, 0xd3, 0x6a, 0x43, 0xf4, 0x00, 0x33, + 0xd3, 0x62, 0xf0, 0xe7, 0x02, 0x21, 0x04, 0x30, 0xfe, 0xf7, 0x7c, 0xff, + 0x06, 0x46, 0x00, 0x28, 0xdd, 0xd1, 0xe8, 0xe7, 0x67, 0x4a, 0xd3, 0x6a, + 0x43, 0xf4, 0x00, 0x33, 0xd3, 0x62, 0x34, 0x46, 0x04, 0xe0, 0x02, 0x21, + 0x28, 0x1d, 0xfe, 0xf7, 0x6d, 0xff, 0x04, 0x46, 0x00, 0x2c, 0x47, 0xd1, + 0x60, 0x4a, 0x69, 0x6c, 0xd3, 0x6c, 0x23, 0xf0, 0x03, 0x03, 0x0b, 0x43, + 0xd3, 0x64, 0x2b, 0x68, 0x5a, 0x02, 0x47, 0xd5, 0x5c, 0x4f, 0x3b, 0x68, + 0x43, 0xf4, 0x80, 0x73, 0x3b, 0x60, 0xfe, 0xf7, 0xcd, 0xfd, 0x80, 0x46, + 0x3b, 0x68, 0xdb, 0x05, 0x34, 0xd5, 0x00, 0x2c, 0x66, 0xd1, 0x55, 0x4b, + 0xd5, 0xf8, 0xb4, 0x00, 0x1a, 0x6f, 0x42, 0x40, 0x12, 0xf4, 0x40, 0x7f, + 0x0b, 0xd0, 0x1a, 0x6f, 0x19, 0x6f, 0x22, 0xf4, 0x40, 0x72, 0x41, 0xf4, + 0x80, 0x31, 0x19, 0x67, 0x19, 0x6f, 0x21, 0xf4, 0x80, 0x31, 0x19, 0x67, + 0x1a, 0x67, 0xb0, 0xf5, 0x80, 0x7f, 0x3a, 0xd0, 0xd5, 0xf8, 0xb4, 0x30, + 0x48, 0x49, 0x03, 0xf4, 0x40, 0x72, 0xb2, 0xf5, 0x40, 0x7f, 0x43, 0xd1, + 0x08, 0x69, 0x47, 0x4a, 0x20, 0xf4, 0x7c, 0x50, 0x02, 0xea, 0x13, 0x12, + 0x02, 0x43, 0x0a, 0x61, 0xc3, 0xf3, 0x0b, 0x03, 0x40, 0x4a, 0x11, 0x6f, + 0x0b, 0x43, 0x13, 0x67, 0x0c, 0xe0, 0x01, 0x26, 0x34, 0x46, 0xbe, 0xe7, + 0x26, 0x46, 0xbc, 0xe7, 0xfe, 0xf7, 0x92, 0xfd, 0xa0, 0xeb, 0x08, 0x00, + 0x64, 0x28, 0xc1, 0xd9, 0x03, 0x26, 0x34, 0x46, 0x2b, 0x68, 0xd9, 0x07, + 0x08, 0xd5, 0xeb, 0x6f, 0x10, 0x2b, 0x3c, 0xd0, 0x26, 0xd8, 0x5b, 0xb3, + 0x08, 0x2b, 0x32, 0xd0, 0x01, 0x26, 0x34, 0x46, 0x2b, 0x68, 0x9a, 0x07, + 0x48, 0xd5, 0xab, 0x6f, 0x05, 0x2b, 0x58, 0xd8, 0xdf, 0xe8, 0x03, 0xf0, + 0x3c, 0x37, 0x51, 0x3c, 0x3c, 0x3c, 0xfe, 0xf7, 0x73, 0xfd, 0xdf, 0xf8, + 0xac, 0x80, 0x07, 0x46, 0x41, 0xf2, 0x88, 0x39, 0xd8, 0xf8, 0x70, 0x30, + 0x98, 0x07, 0xb9, 0xd4, 0xfe, 0xf7, 0x68, 0xfd, 0xc0, 0x1b, 0x48, 0x45, + 0xf6, 0xd9, 0xd5, 0xe7, 0x0a, 0x69, 0x22, 0xf4, 0x7c, 0x52, 0xbe, 0xe7, + 0x26, 0x46, 0xd1, 0xe7, 0x23, 0xf0, 0x08, 0x02, 0x20, 0x2a, 0x01, 0xd0, + 0x18, 0x2b, 0xd5, 0xd1, 0x9c, 0xb9, 0x1d, 0x4a, 0xe9, 0x6f, 0x53, 0x6d, + 0x23, 0xf0, 0x38, 0x03, 0x0b, 0x43, 0x53, 0x65, 0xce, 0xe7, 0x01, 0x21, + 0x28, 0x1d, 0xfe, 0xf7, 0xd7, 0xfe, 0x04, 0x46, 0xf0, 0xe7, 0x01, 0x21, + 0x05, 0xf1, 0x24, 0x00, 0xfe, 0xf7, 0x50, 0xfe, 0xf7, 0xe7, 0x26, 0x46, + 0xc0, 0xe7, 0x01, 0x21, 0x28, 0x1d, 0xfe, 0xf7, 0xc9, 0xfe, 0x04, 0x46, + 0xe4, 0xb9, 0x0f, 0x4a, 0xa9, 0x6f, 0x53, 0x6d, 0x23, 0xf0, 0x07, 0x03, + 0x0b, 0x43, 0x53, 0x65, 0x2b, 0x68, 0x5b, 0x07, 0x2a, 0xd5, 0xd5, 0xf8, + 0x94, 0x30, 0x05, 0x2b, 0x00, 0xf2, 0x9e, 0x80, 0xdf, 0xe8, 0x03, 0xf0, + 0x19, 0x14, 0x96, 0x19, 0x19, 0x19, 0x01, 0x21, 0x05, 0xf1, 0x24, 0x00, + 0xfe, 0xf7, 0x2e, 0xfe, 0xe3, 0xe7, 0x01, 0x26, 0x34, 0x46, 0xe9, 0xe7, + 0x26, 0x46, 0xe7, 0xe7, 0x00, 0x44, 0x02, 0x58, 0x00, 0x48, 0x02, 0x58, + 0xcf, 0xff, 0xff, 0x00, 0x01, 0x21, 0x28, 0x1d, 0xfe, 0xf7, 0x9e, 0xfe, + 0x04, 0x46, 0x00, 0x2c, 0x40, 0xf0, 0x83, 0x80, 0x53, 0x4a, 0xd5, 0xf8, + 0x94, 0x10, 0x93, 0x6d, 0x23, 0xf0, 0x07, 0x03, 0x0b, 0x43, 0x93, 0x65, + 0x2b, 0x68, 0x1f, 0x07, 0x14, 0xd5, 0xd5, 0xf8, 0x84, 0x30, 0xb3, 0xf5, + 0x80, 0x5f, 0x07, 0xd1, 0x02, 0x21, 0x05, 0xf1, 0x24, 0x00, 0xfe, 0xf7, + 0x05, 0xfe, 0x00, 0x28, 0x18, 0xbf, 0x01, 0x26, 0x47, 0x4a, 0xd5, 0xf8, + 0x84, 0x10, 0x53, 0x6d, 0x23, 0xf4, 0x40, 0x53, 0x0b, 0x43, 0x53, 0x65, + 0x2b, 0x68, 0xd8, 0x06, 0x14, 0xd5, 0xd5, 0xf8, 0x98, 0x30, 0xb3, 0xf5, + 0x80, 0x7f, 0x07, 0xd1, 0x02, 0x21, 0x05, 0xf1, 0x24, 0x00, 0xfe, 0xf7, + 0xed, 0xfd, 0x00, 0x28, 0x18, 0xbf, 0x01, 0x26, 0x3b, 0x4a, 0xd5, 0xf8, + 0x98, 0x10, 0x93, 0x6d, 0x23, 0xf4, 0x40, 0x73, 0x0b, 0x43, 0x93, 0x65, + 0x2b, 0x68, 0x59, 0x03, 0x19, 0xd5, 0xd5, 0xf8, 0x88, 0x30, 0xb3, 0xf5, + 0x00, 0x1f, 0x44, 0xd0, 0xb3, 0xf5, 0x40, 0x1f, 0x07, 0xd0, 0xb3, 0xf5, + 0x80, 0x1f, 0x45, 0xd1, 0x30, 0x4a, 0xd3, 0x6a, 0x43, 0xf4, 0x00, 0x33, + 0xd3, 0x62, 0x00, 0x2c, 0x41, 0xd1, 0x2d, 0x4a, 0xd5, 0xf8, 0x88, 0x10, + 0x53, 0x6d, 0x23, 0xf4, 0x40, 0x13, 0x0b, 0x43, 0x53, 0x65, 0x2b, 0x68, + 0xda, 0x03, 0x06, 0xd5, 0x2b, 0x6d, 0x00, 0x2b, 0x35, 0xd0, 0xb3, 0xf5, + 0x80, 0x3f, 0x40, 0xd0, 0x01, 0x26, 0x29, 0x68, 0x4b, 0x00, 0x09, 0xd5, + 0x22, 0x4b, 0x1a, 0x69, 0x22, 0xf4, 0x00, 0x42, 0x1a, 0x61, 0x1a, 0x69, + 0xd5, 0xf8, 0xbc, 0x00, 0x02, 0x43, 0x1a, 0x61, 0x00, 0x29, 0x06, 0xda, + 0x1c, 0x4a, 0x69, 0x6d, 0xd3, 0x6c, 0x23, 0xf0, 0x40, 0x53, 0x0b, 0x43, + 0xd3, 0x64, 0x30, 0x1e, 0x18, 0xbf, 0x01, 0x20, 0xbd, 0xe8, 0xf8, 0x83, + 0x01, 0x21, 0x05, 0xf1, 0x24, 0x00, 0xfe, 0xf7, 0x9b, 0xfd, 0x7b, 0xe7, + 0x01, 0x26, 0x34, 0x46, 0x84, 0xe7, 0x26, 0x46, 0x82, 0xe7, 0x01, 0x21, + 0x05, 0xf1, 0x24, 0x00, 0xfe, 0xf7, 0x90, 0xfd, 0x04, 0x46, 0xbe, 0xe7, + 0x01, 0x26, 0x34, 0x46, 0xc5, 0xe7, 0x26, 0x46, 0xc3, 0xe7, 0x0b, 0x4a, + 0xd3, 0x6a, 0x43, 0xf4, 0x00, 0x33, 0xd3, 0x62, 0x6c, 0xb9, 0x08, 0x4a, + 0x29, 0x6d, 0xd3, 0x6c, 0x23, 0xf4, 0x80, 0x33, 0x0b, 0x43, 0xd3, 0x64, + 0xbf, 0xe7, 0x02, 0x21, 0x28, 0x1d, 0xfe, 0xf7, 0xf7, 0xfd, 0x04, 0x46, + 0xf0, 0xe7, 0x26, 0x46, 0xb7, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, + 0x00, 0xb5, 0x0c, 0x23, 0xc5, 0xb0, 0x01, 0x93, 0x00, 0x23, 0x01, 0xa8, + 0x0a, 0x93, 0x03, 0x93, 0x01, 0x23, 0x06, 0x93, 0xfe, 0xf7, 0x64, 0xfe, + 0x70, 0xb9, 0x4f, 0xf4, 0x80, 0x03, 0x14, 0xa8, 0x14, 0x93, 0x4f, 0xf4, + 0x00, 0x73, 0x41, 0x93, 0xff, 0xf7, 0x30, 0xfe, 0x20, 0xb9, 0x04, 0x4a, + 0x13, 0x6f, 0x43, 0xf4, 0x00, 0x43, 0x13, 0x67, 0x45, 0xb0, 0x5d, 0xf8, + 0x04, 0xfb, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, 0x48, 0x4b, 0x1a, 0x69, + 0x02, 0xf0, 0x38, 0x02, 0x10, 0x2a, 0x30, 0xb5, 0x00, 0xf0, 0x86, 0x80, + 0x18, 0x2a, 0x0c, 0xd0, 0x00, 0x2a, 0x40, 0xf0, 0x83, 0x80, 0x1a, 0x68, + 0x42, 0x48, 0x12, 0xf0, 0x20, 0x0f, 0x03, 0xd0, 0x1b, 0x68, 0xc3, 0xf3, + 0xc1, 0x03, 0xd8, 0x40, 0x30, 0xbd, 0x99, 0x6a, 0x9d, 0x6a, 0xda, 0x6a, + 0x15, 0xf4, 0x7c, 0x7f, 0xc5, 0xf3, 0x05, 0x10, 0x5c, 0x6b, 0xf5, 0xd0, + 0xc4, 0xf3, 0xcc, 0x04, 0x02, 0xf0, 0x01, 0x02, 0x07, 0xee, 0x90, 0x0a, + 0x01, 0xf0, 0x03, 0x01, 0x62, 0x43, 0xb7, 0xee, 0x00, 0x6a, 0xf8, 0xee, + 0xe7, 0x6a, 0x01, 0x29, 0x07, 0xee, 0x90, 0x2a, 0xfa, 0xee, 0xe9, 0x7a, + 0x4c, 0xd0, 0x02, 0x29, 0x3c, 0xd0, 0x00, 0x29, 0x48, 0xd1, 0x1a, 0x68, + 0x92, 0x06, 0x27, 0xd5, 0x19, 0x68, 0x2c, 0x4a, 0xc1, 0xf3, 0xc1, 0x01, + 0x1b, 0x6b, 0xca, 0x40, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x2a, + 0xf8, 0xee, 0xc7, 0x5a, 0x85, 0xee, 0xa6, 0x7a, 0x06, 0xee, 0x90, 0x3a, + 0xf8, 0xee, 0xe6, 0x6a, 0x76, 0xee, 0xa7, 0x7a, 0x77, 0xee, 0x86, 0x7a, + 0x20, 0x4b, 0x67, 0xee, 0x87, 0x7a, 0x1b, 0x6b, 0xc3, 0xf3, 0x46, 0x23, + 0x01, 0x33, 0x07, 0xee, 0x10, 0x3a, 0xf8, 0xee, 0xc7, 0x6a, 0x87, 0xee, + 0xa6, 0x7a, 0xfc, 0xee, 0xc7, 0x7a, 0x17, 0xee, 0x90, 0x0a, 0xb3, 0xe7, + 0x1b, 0x6b, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, + 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0x9f, 0xed, + 0x14, 0x6a, 0x86, 0xee, 0x26, 0x7a, 0xdd, 0xe7, 0x1b, 0x6b, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, 0xc7, 0x7a, 0x77, 0xee, - 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0x9f, 0xed, 0x07, 0x6a, 0xe0, 0xe7, - 0x06, 0x48, 0x85, 0xe7, 0x06, 0x48, 0x83, 0xe7, 0x00, 0x44, 0x02, 0x58, - 0x00, 0x90, 0xd0, 0x03, 0x00, 0x24, 0x74, 0x4c, 0x20, 0xbc, 0xbe, 0x4b, - 0x00, 0x24, 0x74, 0x4a, 0x40, 0x78, 0x7d, 0x01, 0x00, 0x09, 0x3d, 0x00, - 0x08, 0xb5, 0xff, 0xf7, 0x5d, 0xff, 0x09, 0x49, 0x09, 0x4a, 0x8b, 0x69, - 0xc3, 0xf3, 0x03, 0x23, 0xd3, 0x5c, 0x03, 0xf0, 0x1f, 0x03, 0xd8, 0x40, - 0x8b, 0x69, 0x03, 0xf0, 0x0f, 0x03, 0xd3, 0x5c, 0x04, 0x4a, 0x03, 0xf0, - 0x1f, 0x03, 0x10, 0x60, 0xd8, 0x40, 0x08, 0xbd, 0x00, 0x44, 0x02, 0x58, - 0x54, 0xda, 0x01, 0x08, 0x00, 0x00, 0x00, 0x24, 0x73, 0xb5, 0x0e, 0x46, - 0x04, 0x46, 0xff, 0xf7, 0xdf, 0xff, 0xb0, 0xfb, 0xf6, 0xf5, 0xff, 0x2d, - 0x47, 0xdc, 0xff, 0xf7, 0xd9, 0xff, 0xb0, 0xfb, 0xf6, 0xf1, 0x01, 0xfb, - 0x16, 0x06, 0x06, 0xb9, 0x01, 0x3d, 0x65, 0x60, 0xfe, 0xf7, 0x72, 0xfb, - 0x94, 0xf8, 0x41, 0x20, 0x03, 0x46, 0x12, 0xb9, 0x41, 0xf2, 0x88, 0x32, - 0xa2, 0x64, 0x20, 0x68, 0xa1, 0x68, 0x02, 0x68, 0x01, 0x39, 0x22, 0xf4, - 0x70, 0x62, 0x42, 0xea, 0x01, 0x22, 0x20, 0x21, 0x02, 0x60, 0x20, 0x46, - 0xa2, 0x6c, 0x00, 0x92, 0x00, 0x22, 0xfe, 0xf7, 0xcb, 0xfe, 0x30, 0xbb, - 0x22, 0x68, 0xe5, 0x69, 0xe3, 0x68, 0x11, 0x68, 0x2b, 0x43, 0x25, 0x6a, - 0x21, 0xf0, 0x7f, 0x41, 0x2b, 0x43, 0x65, 0x68, 0x21, 0xf0, 0xd0, 0x01, - 0x43, 0xea, 0x05, 0x63, 0x0b, 0x43, 0x13, 0x60, 0x55, 0x68, 0xd4, 0xe9, - 0x05, 0x31, 0x0b, 0x43, 0x21, 0x69, 0x43, 0xea, 0x01, 0x43, 0x09, 0x49, - 0x29, 0x40, 0x0b, 0x43, 0x53, 0x60, 0x13, 0x68, 0x43, 0xf0, 0x01, 0x03, - 0x13, 0x60, 0x01, 0x23, 0x60, 0x64, 0x84, 0xf8, 0x41, 0x30, 0x02, 0xb0, - 0x70, 0xbd, 0xff, 0x25, 0xbd, 0xe7, 0x4f, 0xf0, 0xff, 0x30, 0xf8, 0xe7, - 0xfe, 0xf8, 0xe0, 0xff, 0x08, 0xb5, 0xff, 0xf7, 0x89, 0xff, 0x05, 0x4b, - 0x05, 0x4a, 0x1b, 0x6a, 0xc3, 0xf3, 0x02, 0x13, 0xd3, 0x5c, 0x03, 0xf0, - 0x1f, 0x03, 0xd8, 0x40, 0x08, 0xbd, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, - 0x54, 0xda, 0x01, 0x08, 0x08, 0xb5, 0xff, 0xf7, 0x77, 0xff, 0x05, 0x4b, - 0x05, 0x4a, 0xdb, 0x69, 0xc3, 0xf3, 0x02, 0x23, 0xd3, 0x5c, 0x03, 0xf0, - 0x1f, 0x03, 0xd8, 0x40, 0x08, 0xbd, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, - 0x54, 0xda, 0x01, 0x08, 0x08, 0xb5, 0xff, 0xf7, 0x65, 0xff, 0x05, 0x4b, - 0x05, 0x4a, 0xdb, 0x69, 0xc3, 0xf3, 0x02, 0x13, 0xd3, 0x5c, 0x03, 0xf0, - 0x1f, 0x03, 0xd8, 0x40, 0x08, 0xbd, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, - 0x54, 0xda, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x43, 0x7f, 0x4e, 0x90, 0x21, - 0x7f, 0x4c, 0x89, 0xb0, 0xd6, 0xf8, 0x08, 0xe0, 0xf0, 0x68, 0x37, 0x69, - 0xd6, 0xf8, 0x14, 0xc0, 0xd6, 0xe9, 0x00, 0x35, 0x69, 0x43, 0x62, 0x18, - 0x63, 0x50, 0x00, 0x21, 0xc2, 0xf8, 0x04, 0xe0, 0xa2, 0xf8, 0x56, 0x10, - 0xa2, 0xf8, 0x54, 0x10, 0xa2, 0xf8, 0x5e, 0x10, 0xa2, 0xf8, 0x5c, 0x10, - 0x91, 0x62, 0x51, 0x66, 0x90, 0x60, 0xd7, 0x60, 0xc2, 0xf8, 0x10, 0xc0, - 0xc2, 0xe9, 0x06, 0x11, 0xc2, 0xe9, 0x08, 0x11, 0xb6, 0xf9, 0x1a, 0x10, - 0x01, 0x31, 0x5a, 0xd1, 0x08, 0x21, 0x51, 0x61, 0x6c, 0x4a, 0x93, 0x42, - 0x10, 0xd1, 0x90, 0x22, 0xbe, 0xf5, 0x16, 0x5f, 0x02, 0xfb, 0x05, 0x42, - 0x92, 0xf8, 0x80, 0x10, 0x54, 0xd8, 0x01, 0x29, 0x06, 0xd0, 0x19, 0x68, - 0x41, 0xf0, 0x02, 0x01, 0x19, 0x60, 0x00, 0x21, 0x82, 0xf8, 0x80, 0x10, - 0x90, 0x22, 0x02, 0xfb, 0x05, 0x41, 0xd1, 0xf8, 0x84, 0x60, 0x0e, 0xb9, - 0x81, 0xf8, 0x80, 0x60, 0x02, 0xfb, 0x05, 0x42, 0x24, 0x21, 0x40, 0xea, - 0x0c, 0x00, 0xc2, 0xf8, 0x84, 0x10, 0x19, 0x68, 0x52, 0x69, 0x21, 0xf0, - 0x01, 0x01, 0x10, 0x43, 0x59, 0x4a, 0x19, 0x60, 0x19, 0x68, 0x0a, 0x40, - 0x10, 0x43, 0x18, 0x60, 0x5a, 0x68, 0x22, 0xf4, 0x40, 0x52, 0x17, 0x43, - 0x5f, 0x60, 0x9a, 0x68, 0x22, 0xf0, 0x6e, 0x42, 0x22, 0xf4, 0x30, 0x62, - 0x9a, 0x60, 0xda, 0x6a, 0x22, 0xf0, 0x0f, 0x02, 0xda, 0x62, 0x50, 0x4a, - 0x93, 0x42, 0x25, 0xd1, 0x4f, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, 0x38, 0x03, - 0x28, 0x2b, 0x00, 0xf2, 0x84, 0x80, 0x4d, 0x4a, 0xd3, 0x5c, 0x08, 0x2b, - 0x00, 0xf2, 0xb3, 0x81, 0x08, 0x2b, 0x7c, 0xd8, 0xdf, 0xe8, 0x13, 0xf0, - 0xd8, 0x01, 0xde, 0x01, 0x7b, 0x00, 0x7b, 0x00, 0xe1, 0x01, 0x7b, 0x00, - 0x7b, 0x00, 0x7b, 0x00, 0xe6, 0x01, 0xb6, 0xf9, 0x18, 0x10, 0x01, 0x31, - 0x0c, 0xbf, 0x04, 0x21, 0x0c, 0x21, 0x9e, 0xe7, 0x01, 0x29, 0xb1, 0xd0, - 0x19, 0x68, 0x21, 0xf0, 0x02, 0x01, 0xa9, 0xe7, 0x3e, 0x4a, 0x93, 0x42, - 0x07, 0xd1, 0x3b, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, 0x07, 0x03, 0x05, 0x2b, - 0x5b, 0xd8, 0x3b, 0x4a, 0xd6, 0xe7, 0x3b, 0x4a, 0x93, 0x42, 0x07, 0xd1, - 0x35, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, 0x07, 0x03, 0x05, 0x2b, 0x50, 0xd8, - 0x37, 0x4a, 0xcb, 0xe7, 0x37, 0x4a, 0x93, 0x42, 0x07, 0xd1, 0x30, 0x4b, - 0x5b, 0x6d, 0x03, 0xf0, 0x07, 0x03, 0x05, 0x2b, 0x45, 0xd8, 0x34, 0x4a, - 0xc0, 0xe7, 0x34, 0x4a, 0x93, 0x42, 0x07, 0xd1, 0x2a, 0x4b, 0x5b, 0x6d, - 0x03, 0xf0, 0x07, 0x03, 0x05, 0x2b, 0x3a, 0xd8, 0x30, 0x4a, 0xb5, 0xe7, - 0x30, 0x4a, 0x93, 0x42, 0x07, 0xd1, 0x25, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, - 0x38, 0x03, 0x28, 0x2b, 0x2f, 0xd8, 0x2d, 0x4a, 0xaa, 0xe7, 0x2d, 0x4a, - 0x93, 0x42, 0x07, 0xd1, 0x1f, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, 0x07, 0x03, - 0x05, 0x2b, 0x24, 0xd8, 0x29, 0x4a, 0x9f, 0xe7, 0x29, 0x4a, 0x93, 0x42, - 0x07, 0xd1, 0x1a, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, 0x07, 0x03, 0x05, 0x2b, - 0x19, 0xd8, 0x26, 0x4a, 0x94, 0xe7, 0x13, 0x4a, 0x93, 0x42, 0x14, 0xd1, - 0x02, 0xf5, 0x0e, 0x32, 0x93, 0x6d, 0x03, 0xf0, 0x07, 0x03, 0x05, 0x2b, - 0x0d, 0xd8, 0x21, 0x49, 0xcb, 0x5c, 0x10, 0x2b, 0x00, 0xf0, 0x00, 0x81, - 0x09, 0xd8, 0x04, 0x2b, 0x00, 0xf0, 0xf2, 0x80, 0x08, 0x2b, 0x00, 0xf0, - 0xf4, 0x80, 0x02, 0x2b, 0x36, 0xd0, 0x01, 0x26, 0x3a, 0xe0, 0x20, 0x2b, - 0x00, 0xf0, 0x2d, 0x81, 0x40, 0x2b, 0xf8, 0xd1, 0x4f, 0xf4, 0x00, 0x40, - 0xf5, 0xe0, 0x00, 0xbf, 0xa0, 0x6a, 0x00, 0x24, 0x80, 0x6c, 0x00, 0x24, - 0x00, 0x0c, 0x00, 0x58, 0xf3, 0x69, 0xff, 0xcf, 0x00, 0x10, 0x01, 0x40, - 0x00, 0x44, 0x02, 0x58, 0x1f, 0xda, 0x01, 0x08, 0x00, 0x44, 0x00, 0x40, - 0x48, 0xda, 0x01, 0x08, 0x00, 0x48, 0x00, 0x40, 0x48, 0xda, 0x01, 0x08, - 0x00, 0x4c, 0x00, 0x40, 0x48, 0xda, 0x01, 0x08, 0x00, 0x50, 0x00, 0x40, - 0x48, 0xda, 0x01, 0x08, 0x00, 0x14, 0x01, 0x40, 0x1f, 0xda, 0x01, 0x08, - 0x00, 0x78, 0x00, 0x40, 0x48, 0xda, 0x01, 0x08, 0x00, 0x7c, 0x00, 0x40, - 0x48, 0xda, 0x01, 0x08, 0x4e, 0xda, 0x01, 0x08, 0xff, 0xf7, 0x9a, 0xfe, - 0x00, 0x28, 0x40, 0xf0, 0xc4, 0x80, 0x00, 0x26, 0x90, 0x22, 0x4f, 0xf0, - 0x01, 0x13, 0x01, 0x2e, 0x02, 0xfb, 0x05, 0xf2, 0x04, 0xeb, 0x02, 0x01, - 0x8b, 0x66, 0x4f, 0xf0, 0x00, 0x03, 0xc1, 0xe9, 0x1c, 0x33, 0x00, 0xf0, - 0x34, 0x81, 0x8b, 0x6a, 0x00, 0x2b, 0x66, 0xd0, 0xd8, 0x07, 0x06, 0xd5, - 0xa0, 0x58, 0xc9, 0x6a, 0x42, 0x68, 0x22, 0xf4, 0x00, 0x32, 0x0a, 0x43, - 0x42, 0x60, 0x9a, 0x07, 0x09, 0xd5, 0x90, 0x22, 0x6a, 0x43, 0xa1, 0x58, - 0xa0, 0x18, 0x4a, 0x68, 0x00, 0x6b, 0x22, 0xf4, 0x80, 0x32, 0x02, 0x43, - 0x4a, 0x60, 0x5f, 0x07, 0x09, 0xd5, 0x90, 0x22, 0x6a, 0x43, 0xa1, 0x58, - 0xa0, 0x18, 0x4a, 0x68, 0x40, 0x6b, 0x22, 0xf4, 0x80, 0x22, 0x02, 0x43, - 0x4a, 0x60, 0x18, 0x07, 0x09, 0xd5, 0x90, 0x22, 0x6a, 0x43, 0xa1, 0x58, - 0xa0, 0x18, 0x4a, 0x68, 0x80, 0x6b, 0x22, 0xf4, 0x00, 0x42, 0x02, 0x43, - 0x4a, 0x60, 0xd9, 0x06, 0x09, 0xd5, 0x90, 0x22, 0x6a, 0x43, 0xa1, 0x58, - 0xa0, 0x18, 0x8a, 0x68, 0xc0, 0x6b, 0x22, 0xf4, 0x80, 0x52, 0x02, 0x43, - 0x8a, 0x60, 0x9a, 0x06, 0x09, 0xd5, 0x90, 0x22, 0x6a, 0x43, 0xa1, 0x58, - 0xa0, 0x18, 0x8a, 0x68, 0x00, 0x6c, 0x22, 0xf4, 0x00, 0x52, 0x02, 0x43, - 0x8a, 0x60, 0x5f, 0x06, 0x13, 0xd5, 0x90, 0x22, 0x6a, 0x43, 0xa1, 0x58, - 0xa0, 0x18, 0x4a, 0x68, 0x47, 0x6c, 0x22, 0xf4, 0x80, 0x12, 0xb7, 0xf5, - 0x80, 0x1f, 0x42, 0xea, 0x07, 0x02, 0x4a, 0x60, 0x05, 0xd1, 0x4a, 0x68, - 0x80, 0x6c, 0x22, 0xf4, 0xc0, 0x02, 0x02, 0x43, 0x4a, 0x60, 0x18, 0x06, - 0x09, 0xd5, 0x90, 0x23, 0x6b, 0x43, 0xe2, 0x58, 0xe1, 0x18, 0x53, 0x68, - 0xc9, 0x6c, 0x23, 0xf4, 0x00, 0x23, 0x0b, 0x43, 0x53, 0x60, 0x90, 0x27, - 0x6f, 0x43, 0xe3, 0x59, 0x04, 0xeb, 0x07, 0x08, 0x5a, 0x68, 0x22, 0xf4, - 0x90, 0x42, 0x5a, 0x60, 0x9a, 0x68, 0x22, 0xf0, 0x2a, 0x02, 0x9a, 0x60, - 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, 0x00, 0x23, 0xc8, 0xf8, - 0x8c, 0x30, 0xfe, 0xf7, 0x35, 0xf9, 0xe3, 0x59, 0x02, 0x46, 0x1b, 0x68, - 0x19, 0x07, 0x00, 0xf1, 0xa3, 0x80, 0x90, 0x23, 0x6b, 0x43, 0xe3, 0x58, - 0x1b, 0x68, 0x5b, 0x07, 0x07, 0xd5, 0x4f, 0xf4, 0x80, 0x01, 0x40, 0x46, - 0xfe, 0xf7, 0xf4, 0xf9, 0x00, 0x28, 0x40, 0xf0, 0x9f, 0x80, 0x90, 0x23, - 0x03, 0xfb, 0x05, 0x44, 0x20, 0x23, 0xc4, 0xf8, 0x84, 0x30, 0xc4, 0xf8, - 0x88, 0x30, 0x00, 0x23, 0xe3, 0x66, 0x84, 0xf8, 0x80, 0x30, 0x92, 0xe0, - 0x02, 0xa8, 0xfa, 0xf7, 0x19, 0xfa, 0x03, 0x98, 0x46, 0xe7, 0x05, 0xa8, - 0xfa, 0xf7, 0x6c, 0xf9, 0x06, 0x98, 0x41, 0xe7, 0x13, 0x68, 0x46, 0x48, - 0x13, 0xf0, 0x20, 0x0f, 0x03, 0xd0, 0x13, 0x68, 0xc3, 0xf3, 0xc1, 0x03, - 0xd8, 0x40, 0x4f, 0xf0, 0x90, 0x09, 0x42, 0x4b, 0x09, 0xfb, 0x05, 0xf9, - 0x04, 0xeb, 0x09, 0x01, 0x4a, 0x6a, 0xd1, 0xf8, 0x04, 0x80, 0x33, 0xf8, - 0x12, 0x20, 0x08, 0xeb, 0x48, 0x01, 0xb0, 0xfb, 0xf2, 0xf3, 0x8b, 0x42, - 0xff, 0xf4, 0xed, 0xae, 0xb3, 0xeb, 0x08, 0x3f, 0x3f, 0xf6, 0xe9, 0xae, - 0x00, 0x23, 0x00, 0x21, 0x16, 0xf0, 0xae, 0xfc, 0x42, 0x46, 0x0f, 0x02, - 0x00, 0x23, 0x06, 0x02, 0x47, 0xea, 0x10, 0x67, 0x4f, 0xea, 0x58, 0x00, - 0x30, 0x18, 0x47, 0xf1, 0x00, 0x01, 0x16, 0xf0, 0xa1, 0xfc, 0x30, 0x4b, - 0xa0, 0xf5, 0x40, 0x72, 0x9a, 0x42, 0x3f, 0xf6, 0xd2, 0xae, 0x54, 0xf8, - 0x09, 0x30, 0xd8, 0x60, 0x09, 0xe7, 0x2c, 0x48, 0xcb, 0xe7, 0x20, 0x2b, - 0x39, 0xd0, 0x40, 0x2b, 0x39, 0xd0, 0x10, 0x2b, 0x7f, 0xf4, 0xc5, 0xae, - 0x28, 0x4b, 0x24, 0x48, 0x1a, 0x68, 0x12, 0xf0, 0x20, 0x0f, 0x03, 0xd0, - 0x1b, 0x68, 0xc3, 0xf3, 0xc1, 0x03, 0xd8, 0x40, 0x90, 0x23, 0x6b, 0x43, - 0xe1, 0x18, 0x4a, 0x68, 0x4e, 0x6a, 0x1e, 0x49, 0x31, 0xf8, 0x16, 0x10, - 0xb0, 0xfb, 0xf1, 0xf0, 0x00, 0xeb, 0x52, 0x00, 0xb0, 0xfb, 0xf2, 0xf0, - 0x80, 0xb2, 0x4f, 0xf6, 0xef, 0x72, 0xa0, 0xf1, 0x10, 0x01, 0x91, 0x42, - 0x3f, 0xf6, 0xa5, 0xae, 0xe3, 0x58, 0xd2, 0xe7, 0xff, 0xf7, 0x98, 0xfd, - 0x00, 0x28, 0x3f, 0xf4, 0xda, 0xae, 0xe1, 0xe7, 0xff, 0xf7, 0x80, 0xfd, - 0xf8, 0xe7, 0x02, 0xa8, 0xfa, 0xf7, 0xa0, 0xf9, 0x03, 0x98, 0xf3, 0xe7, - 0x05, 0xa8, 0xfa, 0xf7, 0xf3, 0xf8, 0x06, 0x98, 0xee, 0xe7, 0x0d, 0x48, - 0xd2, 0xe7, 0x4f, 0xf4, 0x00, 0x40, 0xcf, 0xe7, 0x01, 0x90, 0x4f, 0xf4, - 0x00, 0x11, 0x40, 0x46, 0xfe, 0xf7, 0x56, 0xf9, 0x01, 0x9a, 0x00, 0x28, - 0x3f, 0xf4, 0x53, 0xaf, 0x03, 0x26, 0x30, 0x46, 0x09, 0xb0, 0xbd, 0xe8, - 0xf0, 0x83, 0x00, 0xbf, 0x00, 0x90, 0xd0, 0x03, 0xc4, 0xdb, 0x01, 0x08, - 0xff, 0xfc, 0x0f, 0x00, 0x00, 0x09, 0x3d, 0x00, 0x00, 0x44, 0x02, 0x58, - 0x15, 0x4b, 0x4f, 0xf4, 0xe1, 0x32, 0x10, 0xb5, 0x9a, 0x60, 0xb0, 0xb0, - 0x1a, 0x68, 0x13, 0x4b, 0x9a, 0x42, 0x1c, 0xd1, 0xbc, 0x22, 0x00, 0x21, - 0x01, 0xa8, 0x14, 0xf0, 0x4f, 0xfd, 0x04, 0x23, 0x68, 0x46, 0x00, 0x93, - 0x01, 0x23, 0x25, 0x93, 0xff, 0xf7, 0x3e, 0xfa, 0xff, 0xf7, 0x62, 0xfd, - 0x78, 0xb1, 0x00, 0x23, 0x0a, 0x4c, 0x25, 0x93, 0x0a, 0x4b, 0xd4, 0xf8, - 0x8c, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0x68, 0x46, 0xff, 0xf7, 0x30, 0xfa, - 0x4f, 0xf4, 0x40, 0x73, 0xe3, 0x60, 0xff, 0xf7, 0x51, 0xfd, 0x30, 0xb0, - 0x10, 0xbd, 0x00, 0xbf, 0xa0, 0x6a, 0x00, 0x24, 0x00, 0x0c, 0x00, 0x58, - 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, 0x37, 0xb5, 0x44, 0x4c, - 0x23, 0x69, 0xa3, 0x69, 0xa3, 0x69, 0xa3, 0x69, 0xe5, 0x69, 0xe3, 0x69, - 0x23, 0x6a, 0x05, 0xf0, 0x70, 0x05, 0x40, 0x4b, 0x1b, 0x68, 0xff, 0xf7, - 0x25, 0xfd, 0xd4, 0xf8, 0xe8, 0x30, 0x3e, 0x4a, 0x43, 0xf0, 0x08, 0x03, - 0xc4, 0xf8, 0xe8, 0x30, 0xd4, 0xf8, 0xe8, 0x30, 0x03, 0xf0, 0x08, 0x03, - 0x01, 0x93, 0x01, 0x9b, 0x39, 0x4b, 0xd2, 0xf8, 0x8c, 0x10, 0x99, 0x42, - 0xfb, 0xd1, 0xd4, 0xf8, 0x90, 0x30, 0x43, 0xf0, 0x08, 0x03, 0xc4, 0xf8, - 0x90, 0x30, 0xd4, 0xf8, 0x90, 0x30, 0x23, 0xf0, 0x08, 0x03, 0xc4, 0xf8, - 0x90, 0x30, 0x4f, 0xf4, 0x40, 0x73, 0x31, 0x4c, 0xd3, 0x60, 0x31, 0x4b, - 0x23, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0xe3, 0x60, 0x2f, 0x4b, 0x00, 0x2d, - 0x4d, 0xd1, 0xb0, 0xfb, 0xf3, 0xf0, 0x00, 0x23, 0x01, 0x38, 0x23, 0x61, - 0xa3, 0x60, 0x60, 0x60, 0xc4, 0xe9, 0x05, 0x33, 0x94, 0xf8, 0x3d, 0x30, - 0x03, 0xf0, 0xff, 0x02, 0x0b, 0xb9, 0x84, 0xf8, 0x3c, 0x20, 0x25, 0x4a, - 0x02, 0x23, 0x84, 0xf8, 0x3d, 0x30, 0x13, 0x68, 0x23, 0xf4, 0x7c, 0x73, - 0x13, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0xd3, 0x62, 0x01, 0x23, 0x90, 0x62, - 0x53, 0x61, 0x84, 0xf8, 0x48, 0x30, 0x84, 0xf8, 0x3e, 0x30, 0x84, 0xf8, - 0x3f, 0x30, 0x84, 0xf8, 0x40, 0x30, 0x84, 0xf8, 0x41, 0x30, 0x84, 0xf8, - 0x42, 0x30, 0x84, 0xf8, 0x43, 0x30, 0x84, 0xf8, 0x44, 0x30, 0x84, 0xf8, - 0x45, 0x30, 0x84, 0xf8, 0x46, 0x30, 0x84, 0xf8, 0x47, 0x30, 0x84, 0xf8, - 0x3d, 0x30, 0x14, 0x4b, 0x14, 0x4a, 0x9b, 0x68, 0xc3, 0xf8, 0x08, 0x21, - 0xbf, 0xf3, 0x4f, 0x8f, 0x12, 0x4b, 0x4f, 0xf4, 0x80, 0x22, 0x5a, 0x60, - 0x94, 0xf8, 0x3e, 0x30, 0x01, 0x2b, 0x01, 0xd1, 0xf9, 0xf7, 0x1a, 0xfe, - 0x22, 0x68, 0xd3, 0x68, 0x23, 0xf0, 0x02, 0x03, 0xd3, 0x60, 0x03, 0xb0, - 0x30, 0xbd, 0x40, 0x00, 0xaf, 0xe7, 0x00, 0xbf, 0x00, 0x44, 0x02, 0x58, - 0x00, 0x20, 0x00, 0x52, 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, - 0x68, 0x05, 0x00, 0x24, 0x00, 0x0c, 0x00, 0x40, 0x40, 0x42, 0x0f, 0x00, - 0x00, 0xed, 0x00, 0xe0, 0x39, 0x09, 0x00, 0x08, 0x00, 0xe1, 0x00, 0xe0, - 0x00, 0x23, 0xf0, 0xb5, 0x04, 0x46, 0x89, 0xb0, 0xc3, 0x66, 0x83, 0x60, - 0x39, 0xb1, 0x8b, 0x88, 0xa0, 0xf8, 0x58, 0x30, 0x8b, 0x89, 0xa0, 0xf8, - 0x5a, 0x30, 0x0b, 0x68, 0x03, 0x60, 0x23, 0x68, 0xa8, 0x4a, 0x93, 0x42, - 0x12, 0xd1, 0x00, 0x23, 0x84, 0xf8, 0x50, 0x30, 0xa6, 0x4b, 0xd3, 0xf8, - 0xe8, 0x20, 0x42, 0xf4, 0x00, 0x12, 0xc3, 0xf8, 0xe8, 0x20, 0xd3, 0xf8, - 0xe8, 0x30, 0x03, 0xf4, 0x00, 0x13, 0x01, 0x93, 0x01, 0x9b, 0xa1, 0x4b, - 0xe3, 0x65, 0x0b, 0xe0, 0xa0, 0x4a, 0x93, 0x42, 0x7c, 0xd0, 0x02, 0xf5, - 0x80, 0x62, 0x93, 0x42, 0x00, 0xf0, 0x8a, 0x80, 0x9d, 0x4a, 0x93, 0x42, - 0x00, 0xf0, 0x98, 0x80, 0x9c, 0x49, 0xb4, 0xf9, 0x58, 0x00, 0x09, 0xf0, - 0x07, 0xf8, 0x9b, 0x49, 0xb4, 0xf9, 0x5a, 0x00, 0x09, 0xf0, 0x02, 0xf8, - 0x04, 0x21, 0xb4, 0xf9, 0x58, 0x00, 0xfd, 0xf7, 0x5b, 0xfe, 0x04, 0x21, - 0xb4, 0xf9, 0x5a, 0x00, 0xfd, 0xf7, 0x56, 0xfe, 0x63, 0x6d, 0x0b, 0xb9, - 0x93, 0x4b, 0x63, 0x65, 0x93, 0x4a, 0x14, 0x21, 0x66, 0x6d, 0x12, 0x68, - 0x23, 0x68, 0xb2, 0xfb, 0xf6, 0xf2, 0x4a, 0x43, 0x63, 0x60, 0x11, 0x46, - 0x98, 0x69, 0x00, 0x04, 0x01, 0xd5, 0x01, 0x39, 0xfa, 0xd1, 0x8d, 0x4d, - 0x8d, 0x49, 0xd5, 0xf8, 0x8c, 0x00, 0x88, 0x42, 0xfb, 0xd1, 0x81, 0x49, - 0x8b, 0x42, 0x79, 0xd1, 0x80, 0x49, 0xd1, 0xf8, 0x90, 0x00, 0x40, 0xf4, - 0x00, 0x10, 0xc1, 0xf8, 0x90, 0x00, 0xd1, 0xf8, 0x90, 0x00, 0x20, 0xf4, - 0x00, 0x10, 0xc1, 0xf8, 0x90, 0x00, 0x82, 0x49, 0x4f, 0xf4, 0x40, 0x70, - 0xc8, 0x60, 0x99, 0x69, 0x09, 0x04, 0x01, 0xd5, 0x01, 0x3a, 0xfa, 0xd1, - 0x7f, 0x4a, 0x96, 0x42, 0x1a, 0xd1, 0x73, 0x4a, 0x93, 0x42, 0x02, 0xd1, - 0x01, 0x20, 0xfa, 0xf7, 0xcf, 0xf8, 0x22, 0x68, 0x72, 0x4b, 0x9a, 0x42, - 0x02, 0xd1, 0x02, 0x20, 0xfa, 0xf7, 0xc8, 0xf8, 0x22, 0x68, 0x78, 0x4b, - 0x9a, 0x42, 0x02, 0xd1, 0x04, 0x20, 0xfa, 0xf7, 0xc1, 0xf8, 0x22, 0x68, - 0x6c, 0x4b, 0x9a, 0x42, 0x02, 0xd1, 0x08, 0x20, 0xfa, 0xf7, 0xba, 0xf8, - 0x6e, 0x49, 0x6f, 0x4b, 0xd1, 0xf8, 0x8c, 0x20, 0x9a, 0x42, 0xfb, 0xd1, - 0x62, 0x4b, 0x22, 0x68, 0x9a, 0x42, 0x62, 0x4b, 0x6a, 0xd1, 0x59, 0x6d, - 0x21, 0xf4, 0x40, 0x51, 0x59, 0x65, 0x6f, 0xe0, 0x01, 0x23, 0x84, 0xf8, - 0x50, 0x30, 0x5d, 0x4b, 0xd3, 0xf8, 0xe8, 0x20, 0x42, 0xf4, 0x80, 0x02, - 0xc3, 0xf8, 0xe8, 0x20, 0xd3, 0xf8, 0xe8, 0x30, 0x03, 0xf4, 0x80, 0x03, - 0x02, 0x93, 0x02, 0x9b, 0x62, 0x4b, 0x6b, 0xe7, 0x02, 0x23, 0x84, 0xf8, - 0x50, 0x30, 0x54, 0x4b, 0xd3, 0xf8, 0xe8, 0x20, 0x42, 0xf4, 0x00, 0x02, - 0xc3, 0xf8, 0xe8, 0x20, 0xd3, 0xf8, 0xe8, 0x30, 0x03, 0xf4, 0x00, 0x03, - 0x03, 0x93, 0x03, 0x9b, 0x5a, 0x4b, 0x59, 0xe7, 0x03, 0x23, 0x84, 0xf8, - 0x50, 0x30, 0x4b, 0x4b, 0xd3, 0xf8, 0xf4, 0x20, 0x42, 0xf0, 0x80, 0x02, - 0xc3, 0xf8, 0xf4, 0x20, 0xd3, 0xf8, 0xf4, 0x30, 0x03, 0xf0, 0x80, 0x03, - 0x04, 0x93, 0x04, 0x9b, 0x52, 0x4b, 0x47, 0xe7, 0x45, 0x49, 0x8b, 0x42, - 0x14, 0xd0, 0x01, 0xf5, 0x80, 0x61, 0x8b, 0x42, 0x1c, 0xd0, 0x43, 0x49, - 0x8b, 0x42, 0x88, 0xd1, 0x3e, 0x49, 0xd1, 0xf8, 0x9c, 0x00, 0x40, 0xf0, - 0x80, 0x00, 0xc1, 0xf8, 0x9c, 0x00, 0xd1, 0xf8, 0x9c, 0x00, 0x20, 0xf0, - 0x80, 0x00, 0xc1, 0xf8, 0x9c, 0x00, 0x7a, 0xe7, 0x37, 0x49, 0xd1, 0xf8, - 0x90, 0x00, 0x40, 0xf4, 0x80, 0x00, 0xc1, 0xf8, 0x90, 0x00, 0xd1, 0xf8, - 0x90, 0x00, 0x20, 0xf4, 0x80, 0x00, 0x6c, 0xe7, 0x31, 0x49, 0xd1, 0xf8, - 0x90, 0x00, 0x40, 0xf4, 0x00, 0x00, 0xc1, 0xf8, 0x90, 0x00, 0xd1, 0xf8, - 0x90, 0x00, 0x20, 0xf4, 0x00, 0x00, 0x60, 0xe7, 0x2d, 0x49, 0x8a, 0x42, - 0x91, 0xd0, 0x01, 0xf5, 0x80, 0x61, 0x8a, 0x42, 0x8d, 0xd0, 0x2b, 0x49, - 0x8a, 0x42, 0x3f, 0xd0, 0x2e, 0x4b, 0x4f, 0xf4, 0x40, 0x71, 0xd9, 0x60, - 0x94, 0xf8, 0x45, 0x30, 0x20, 0x2b, 0xd8, 0xb2, 0x1a, 0xd1, 0x94, 0xf8, - 0x44, 0x30, 0x01, 0x2b, 0x16, 0xd0, 0x24, 0x23, 0x84, 0xf8, 0x45, 0x30, - 0x63, 0x68, 0x19, 0x68, 0x21, 0xf0, 0x01, 0x01, 0x19, 0x60, 0x19, 0x68, - 0x21, 0xf4, 0x80, 0x51, 0x19, 0x60, 0x19, 0x68, 0x19, 0x60, 0x19, 0x68, - 0x41, 0xf0, 0x01, 0x01, 0x19, 0x60, 0x00, 0x23, 0x84, 0xf8, 0x45, 0x00, - 0x84, 0xf8, 0x44, 0x30, 0x13, 0x4b, 0x22, 0xf4, 0x00, 0x61, 0xa5, 0x68, - 0x99, 0x42, 0xe7, 0x6e, 0x11, 0x4b, 0x03, 0xd0, 0x12, 0x49, 0x8a, 0x42, - 0x40, 0xf0, 0x8c, 0x80, 0x5b, 0x6d, 0x03, 0xf4, 0x40, 0x53, 0xb3, 0xf5, - 0x00, 0x5f, 0x00, 0xf0, 0xb6, 0x80, 0x0c, 0xd8, 0xa3, 0xb3, 0xb3, 0xf5, - 0x80, 0x5f, 0x00, 0xf0, 0x97, 0x80, 0x17, 0x48, 0x08, 0xf0, 0x72, 0xff, - 0x99, 0x6d, 0x21, 0xf4, 0x40, 0x71, 0x99, 0x65, 0xba, 0xe7, 0xb3, 0xf5, - 0x40, 0x5f, 0xf4, 0xd1, 0x65, 0xb3, 0xb7, 0x42, 0x2a, 0xd1, 0x2a, 0xe0, - 0x00, 0x54, 0x00, 0x40, 0x00, 0x44, 0x02, 0x58, 0x1f, 0x00, 0x20, 0x00, - 0x00, 0x58, 0x00, 0x40, 0x00, 0x1c, 0x00, 0x58, 0x28, 0xdb, 0x01, 0x08, - 0x8c, 0xda, 0x01, 0x08, 0xa0, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, 0x40, 0x42, 0x0f, 0x00, - 0x00, 0x5c, 0x00, 0x40, 0x21, 0x00, 0x22, 0x00, 0x48, 0x00, 0x49, 0x00, - 0x5f, 0x00, 0x60, 0x00, 0x9d, 0xd9, 0x01, 0x08, 0xff, 0xf7, 0x10, 0xfb, - 0x0d, 0xb1, 0xb7, 0x42, 0x03, 0xd0, 0x3f, 0x4b, 0x98, 0x42, 0x66, 0xd0, - 0x00, 0x25, 0x00, 0x23, 0x01, 0x22, 0xa5, 0x60, 0xe3, 0x60, 0xc4, 0xe9, - 0x04, 0x23, 0xc4, 0xe9, 0x08, 0x33, 0xc4, 0xe9, 0x06, 0x33, 0x94, 0xf8, - 0x45, 0x30, 0x03, 0xf0, 0xff, 0x02, 0x0b, 0xb9, 0x84, 0xf8, 0x44, 0x20, - 0x24, 0x23, 0x25, 0xf0, 0x70, 0x65, 0x84, 0xf8, 0x45, 0x30, 0x63, 0x68, - 0x1a, 0x68, 0x22, 0xf0, 0x01, 0x02, 0x1a, 0x60, 0x1d, 0x61, 0x9a, 0x68, - 0x22, 0xf4, 0x00, 0x42, 0x9a, 0x60, 0x4f, 0xf4, 0x00, 0x42, 0x9a, 0x60, - 0x5a, 0x68, 0x42, 0xf0, 0x00, 0x72, 0x42, 0xf4, 0x00, 0x42, 0x5a, 0x60, - 0xda, 0x68, 0x22, 0xf4, 0x00, 0x42, 0xda, 0x60, 0x00, 0x22, 0xda, 0x60, - 0x1a, 0x60, 0x19, 0x68, 0x41, 0xf0, 0x01, 0x01, 0x19, 0x60, 0x20, 0x23, - 0xa2, 0x64, 0x84, 0xf8, 0x45, 0x30, 0x4f, 0xf0, 0x00, 0x73, 0x62, 0x63, - 0x66, 0x65, 0x84, 0xf8, 0x46, 0x20, 0xe6, 0x66, 0x84, 0xf8, 0x64, 0x20, - 0x23, 0x66, 0xa2, 0x66, 0x09, 0xb0, 0xf0, 0xbd, 0x1b, 0x49, 0x8a, 0x42, - 0x1b, 0xd1, 0x9b, 0x6d, 0x03, 0xf4, 0x40, 0x73, 0xb3, 0xf5, 0x00, 0x7f, - 0x13, 0xd0, 0x05, 0xd8, 0x4b, 0xb1, 0xb3, 0xf5, 0x80, 0x7f, 0x09, 0xd0, - 0x15, 0x48, 0x71, 0xe7, 0xb3, 0xf5, 0x40, 0x7f, 0xfa, 0xd1, 0x14, 0x48, - 0x9e, 0xe7, 0xff, 0xf7, 0x89, 0xfa, 0x9b, 0xe7, 0x05, 0xa8, 0xf9, 0xf7, - 0x13, 0xfe, 0x07, 0x98, 0x96, 0xe7, 0x10, 0x48, 0x94, 0xe7, 0x10, 0x48, - 0x60, 0xe7, 0x10, 0x4b, 0x9e, 0x42, 0x08, 0xd0, 0x0f, 0x4b, 0x9e, 0x42, - 0x07, 0xd0, 0x0f, 0x4b, 0x0f, 0x4d, 0x9e, 0x42, 0x18, 0xbf, 0x00, 0x25, - 0x8d, 0xe7, 0x0e, 0x4d, 0x8b, 0xe7, 0x0e, 0x4d, 0x89, 0xe7, 0x00, 0x2d, - 0x86, 0xd0, 0x05, 0x48, 0x7f, 0xe7, 0x00, 0xbf, 0x00, 0x0e, 0x27, 0x07, - 0x00, 0x1c, 0x00, 0x58, 0xba, 0xd9, 0x01, 0x08, 0x00, 0x09, 0x3d, 0x00, - 0x00, 0x90, 0xd0, 0x03, 0xd5, 0xd9, 0x01, 0x08, 0x80, 0x1a, 0x06, 0x00, - 0x40, 0x42, 0x0f, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x76, 0x56, 0xe1, 0x40, - 0x34, 0x14, 0xc1, 0x20, 0x36, 0x15, 0xc3, 0x00, 0x38, 0xb5, 0x90, 0xf8, - 0x41, 0x30, 0x04, 0x46, 0x00, 0x21, 0x60, 0x2b, 0x17, 0xd1, 0x02, 0x68, - 0x20, 0x23, 0x80, 0xf8, 0x40, 0x10, 0x80, 0xf8, 0x41, 0x30, 0x01, 0x63, - 0x13, 0x68, 0xb0, 0xf9, 0x5a, 0x50, 0x23, 0xf0, 0xfe, 0x03, 0xb0, 0xf9, - 0x58, 0x00, 0x13, 0x60, 0x02, 0xf0, 0xde, 0xfa, 0x28, 0x46, 0x02, 0xf0, - 0xdb, 0xfa, 0x02, 0x23, 0x84, 0xf8, 0x60, 0x30, 0x38, 0xbd, 0x01, 0x63, - 0x04, 0x38, 0x85, 0x6c, 0x80, 0xf8, 0x44, 0x10, 0x15, 0xf0, 0x04, 0x05, - 0x18, 0xbf, 0x14, 0x25, 0xff, 0xf7, 0xb6, 0xfd, 0x45, 0xf0, 0x02, 0x05, - 0x84, 0xf8, 0x60, 0x50, 0xee, 0xe7, 0x80, 0x6b, 0x83, 0x6b, 0x0b, 0xb1, - 0x00, 0x22, 0x1a, 0x65, 0xc3, 0x6b, 0x0b, 0xb1, 0x00, 0x22, 0x1a, 0x65, - 0xff, 0xf7, 0xc6, 0xbf, 0x85, 0x4a, 0x13, 0x68, 0x03, 0xf0, 0x0f, 0x03, - 0x8b, 0x42, 0x2d, 0xe9, 0xf0, 0x41, 0x04, 0x46, 0x0d, 0x46, 0xc0, 0xf0, - 0x88, 0x80, 0x23, 0x68, 0x5f, 0x07, 0x00, 0xf1, 0x92, 0x80, 0x1e, 0x07, - 0x0b, 0xd5, 0x7e, 0x49, 0x66, 0x69, 0xc8, 0x69, 0x00, 0xf0, 0x70, 0x00, - 0x86, 0x42, 0x04, 0xd9, 0xca, 0x69, 0x22, 0xf0, 0x70, 0x02, 0x32, 0x43, - 0xca, 0x61, 0xd8, 0x06, 0x0b, 0xd5, 0x77, 0x49, 0xa6, 0x69, 0xc8, 0x69, - 0x00, 0xf4, 0xe0, 0x60, 0x86, 0x42, 0x04, 0xd9, 0xca, 0x69, 0x22, 0xf4, - 0xe0, 0x62, 0x32, 0x43, 0xca, 0x61, 0x99, 0x06, 0x0b, 0xd5, 0x70, 0x49, - 0xe6, 0x69, 0x08, 0x6a, 0x00, 0xf0, 0x70, 0x00, 0x86, 0x42, 0x04, 0xd9, - 0x0a, 0x6a, 0x22, 0xf0, 0x70, 0x02, 0x32, 0x43, 0x0a, 0x62, 0x9a, 0x07, - 0x0b, 0xd5, 0x69, 0x49, 0xe6, 0x68, 0x88, 0x69, 0x00, 0xf0, 0x0f, 0x00, - 0x86, 0x42, 0x04, 0xd9, 0x8a, 0x69, 0x22, 0xf0, 0x0f, 0x02, 0x32, 0x43, - 0x8a, 0x61, 0xdf, 0x07, 0x65, 0xd4, 0x23, 0x68, 0x9e, 0x07, 0x00, 0xf1, - 0x97, 0x80, 0x5f, 0x49, 0x0a, 0x68, 0x02, 0xf0, 0x0f, 0x02, 0x95, 0x42, - 0xc0, 0xf0, 0x9e, 0x80, 0x58, 0x07, 0x00, 0xf1, 0xa6, 0x80, 0x19, 0x07, - 0x0b, 0xd5, 0x5a, 0x49, 0x65, 0x69, 0xc8, 0x69, 0x00, 0xf0, 0x70, 0x00, - 0x85, 0x42, 0x04, 0xd2, 0xca, 0x69, 0x22, 0xf0, 0x70, 0x02, 0x2a, 0x43, - 0xca, 0x61, 0xda, 0x06, 0x0b, 0xd5, 0x53, 0x49, 0xa5, 0x69, 0xc8, 0x69, - 0x00, 0xf4, 0xe0, 0x60, 0x85, 0x42, 0x04, 0xd2, 0xca, 0x69, 0x22, 0xf4, - 0xe0, 0x62, 0x2a, 0x43, 0xca, 0x61, 0x9b, 0x06, 0x0b, 0xd5, 0x4c, 0x4a, - 0xe0, 0x69, 0x11, 0x6a, 0x01, 0xf0, 0x70, 0x01, 0x88, 0x42, 0x04, 0xd2, - 0x13, 0x6a, 0x23, 0xf0, 0x70, 0x03, 0x03, 0x43, 0x13, 0x62, 0xff, 0xf7, - 0x81, 0xf8, 0x45, 0x4a, 0x93, 0x69, 0x92, 0x69, 0xc3, 0xf3, 0x03, 0x23, - 0x43, 0x4a, 0xd3, 0x5c, 0x03, 0xf0, 0x1f, 0x03, 0xd8, 0x40, 0x42, 0x4b, - 0x18, 0x60, 0xff, 0xf7, 0x77, 0xfc, 0x00, 0x20, 0x0b, 0xe0, 0x13, 0x68, - 0x23, 0xf0, 0x0f, 0x03, 0x0b, 0x43, 0x13, 0x60, 0x13, 0x68, 0x03, 0xf0, - 0x0f, 0x03, 0x8b, 0x42, 0x3f, 0xf4, 0x6d, 0xaf, 0x01, 0x20, 0xbd, 0xe8, - 0xf0, 0x81, 0x36, 0x49, 0x26, 0x69, 0x88, 0x69, 0x00, 0xf0, 0x70, 0x00, - 0x86, 0x42, 0x7f, 0xf6, 0x66, 0xaf, 0x8a, 0x69, 0x22, 0xf0, 0x70, 0x02, - 0x32, 0x43, 0x8a, 0x61, 0x5f, 0xe7, 0x2f, 0x4b, 0xa1, 0x68, 0x9a, 0x69, - 0x22, 0xf4, 0x70, 0x62, 0x0a, 0x43, 0x9a, 0x61, 0x62, 0x68, 0x1b, 0x68, - 0x02, 0x2a, 0x1c, 0xd1, 0x13, 0xf4, 0x00, 0x3f, 0xe0, 0xd0, 0x28, 0x4e, - 0x41, 0xf2, 0x88, 0x38, 0x33, 0x69, 0x23, 0xf0, 0x07, 0x03, 0x13, 0x43, - 0x33, 0x61, 0xfd, 0xf7, 0x7f, 0xfc, 0x07, 0x46, 0x33, 0x69, 0x62, 0x68, - 0x03, 0xf0, 0x38, 0x03, 0xb3, 0xeb, 0xc2, 0x0f, 0x3f, 0xf4, 0x79, 0xaf, - 0xfd, 0xf7, 0x74, 0xfc, 0xc0, 0x1b, 0x40, 0x45, 0xf2, 0xd9, 0x03, 0x20, - 0xc7, 0xe7, 0x03, 0x2a, 0x02, 0xd1, 0x13, 0xf0, 0x00, 0x7f, 0xdf, 0xe7, - 0x01, 0x2a, 0x02, 0xd1, 0x13, 0xf4, 0x80, 0x7f, 0xda, 0xe7, 0x13, 0xf0, - 0x04, 0x0f, 0xd7, 0xe7, 0x14, 0x49, 0xe6, 0x68, 0x88, 0x69, 0x00, 0xf0, - 0x0f, 0x00, 0x86, 0x42, 0xbf, 0xf4, 0x61, 0xaf, 0x8a, 0x69, 0x22, 0xf0, - 0x0f, 0x02, 0x32, 0x43, 0x8a, 0x61, 0x5a, 0xe7, 0x0a, 0x68, 0x22, 0xf0, - 0x0f, 0x02, 0x2a, 0x43, 0x0a, 0x60, 0x0a, 0x68, 0x02, 0xf0, 0x0f, 0x02, - 0x95, 0x42, 0xa1, 0xd1, 0x56, 0xe7, 0x08, 0x49, 0x25, 0x69, 0x88, 0x69, - 0x00, 0xf0, 0x70, 0x00, 0x85, 0x42, 0xbf, 0xf4, 0x52, 0xaf, 0x8a, 0x69, - 0x22, 0xf0, 0x70, 0x02, 0x2a, 0x43, 0x8a, 0x61, 0x4b, 0xe7, 0x00, 0xbf, - 0x00, 0x20, 0x00, 0x52, 0x00, 0x44, 0x02, 0x58, 0x54, 0xda, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x24, 0xf0, 0xb5, 0xa5, 0xb0, 0x20, 0x22, 0x00, 0x21, - 0x04, 0x46, 0x09, 0xa8, 0x14, 0xf0, 0x16, 0xf9, 0x4c, 0x22, 0x00, 0x21, - 0x11, 0xa8, 0x14, 0xf0, 0x11, 0xf9, 0x56, 0x4b, 0x9b, 0x6a, 0x03, 0xf0, - 0x03, 0x03, 0x02, 0x2b, 0x34, 0xd0, 0x53, 0x4b, 0x02, 0x27, 0x53, 0x4e, - 0x00, 0x25, 0xd3, 0xf8, 0xe0, 0x20, 0x04, 0xa9, 0x30, 0x46, 0x42, 0xf0, - 0x80, 0x02, 0xc3, 0xf8, 0xe0, 0x20, 0xd3, 0xf8, 0xe0, 0x30, 0x07, 0x95, - 0x03, 0xf0, 0x80, 0x03, 0x03, 0x93, 0x03, 0x9b, 0x01, 0x23, 0xcd, 0xe9, - 0x04, 0x73, 0x06, 0x93, 0x01, 0xf0, 0xae, 0xff, 0x0a, 0x20, 0x02, 0xf0, - 0x8d, 0xf9, 0xb7, 0x61, 0xfd, 0xf7, 0xaa, 0xfc, 0x45, 0x4b, 0xf4, 0xb9, - 0x01, 0x94, 0xda, 0x6a, 0x22, 0xf0, 0x01, 0x02, 0xda, 0x62, 0xdb, 0x6a, - 0x03, 0xf0, 0x01, 0x03, 0x01, 0x93, 0x41, 0x4b, 0x9a, 0x69, 0x42, 0xf4, - 0x40, 0x42, 0x9a, 0x61, 0x9b, 0x69, 0x03, 0xf4, 0x40, 0x43, 0x01, 0x93, - 0x01, 0x9b, 0x1f, 0xe0, 0x01, 0x21, 0x09, 0xa8, 0xcd, 0xe9, 0x09, 0x11, - 0xff, 0xf7, 0x9e, 0xfe, 0x00, 0x28, 0xc2, 0xd0, 0x00, 0x20, 0x25, 0xb0, - 0xf0, 0xbd, 0x02, 0x95, 0xda, 0x6a, 0x22, 0xf0, 0x01, 0x02, 0xda, 0x62, - 0xdb, 0x6a, 0x33, 0x4a, 0x03, 0xf0, 0x01, 0x03, 0x02, 0x93, 0x93, 0x69, - 0x23, 0xf4, 0x40, 0x43, 0x43, 0xf4, 0x80, 0x43, 0x93, 0x61, 0x93, 0x69, - 0x03, 0xf4, 0x40, 0x43, 0x02, 0x93, 0x02, 0x9b, 0x2b, 0x4a, 0x93, 0x69, - 0x9d, 0x04, 0xfc, 0xd5, 0x21, 0x21, 0x4f, 0xf4, 0xa0, 0x23, 0x05, 0x22, - 0x00, 0x2c, 0x4f, 0xf0, 0x08, 0x05, 0x11, 0xa8, 0x1c, 0x92, 0x0c, 0xbf, - 0xa0, 0x22, 0x28, 0x22, 0x21, 0x95, 0xcd, 0xe9, 0x11, 0x13, 0x01, 0x23, - 0x1d, 0x92, 0x00, 0x22, 0x17, 0x93, 0x02, 0x23, 0x23, 0x92, 0x1e, 0x93, - 0x20, 0x93, 0x22, 0x92, 0xcd, 0xe9, 0x1a, 0x33, 0x0a, 0x23, 0x1f, 0x93, - 0xfd, 0xf7, 0xb4, 0xfd, 0x01, 0x46, 0x00, 0x28, 0xc2, 0xd1, 0x3f, 0x22, - 0x03, 0x23, 0xcd, 0xe9, 0x09, 0x23, 0x40, 0x23, 0x4f, 0xf4, 0x80, 0x62, - 0xcd, 0xe9, 0x0b, 0x05, 0xcd, 0xe9, 0x0e, 0x32, 0x0d, 0x93, 0x10, 0x93, - 0xe4, 0xb1, 0x09, 0xa8, 0xff, 0xf7, 0x4e, 0xfe, 0x00, 0x28, 0xaf, 0xd1, - 0x0c, 0x4b, 0x01, 0x20, 0x1a, 0x68, 0x42, 0xf0, 0x80, 0x02, 0x1a, 0x60, - 0xd3, 0xf8, 0xf4, 0x20, 0x42, 0xf0, 0x02, 0x02, 0xc3, 0xf8, 0xf4, 0x20, - 0xd3, 0xf8, 0xf4, 0x30, 0x07, 0x4a, 0x03, 0xf0, 0x02, 0x03, 0x00, 0x93, - 0x00, 0x9b, 0x13, 0x6a, 0x43, 0xf0, 0x01, 0x03, 0x13, 0x62, 0x98, 0xe7, - 0x04, 0x21, 0xe0, 0xe7, 0x00, 0x44, 0x02, 0x58, 0x00, 0x1c, 0x02, 0x58, - 0x00, 0x04, 0x00, 0x58, 0x00, 0x48, 0x02, 0x58, 0x90, 0xf8, 0xbc, 0x23, - 0x03, 0x68, 0x01, 0x2a, 0x21, 0xd0, 0x01, 0x22, 0x80, 0xf8, 0xbc, 0x23, - 0x82, 0x6a, 0x01, 0x2a, 0x06, 0xd1, 0x82, 0x69, 0x01, 0x2a, 0x03, 0xd0, - 0x9a, 0x6b, 0x42, 0xf4, 0x80, 0x32, 0x9a, 0x63, 0x9a, 0x68, 0x42, 0xf0, - 0x01, 0x02, 0x9a, 0x60, 0xd3, 0xf8, 0x00, 0x2e, 0x22, 0xf0, 0x03, 0x02, - 0xc3, 0xf8, 0x00, 0x2e, 0xd3, 0xf8, 0x04, 0x28, 0x22, 0xf0, 0x02, 0x02, - 0xc3, 0xf8, 0x04, 0x28, 0x00, 0x23, 0x80, 0xf8, 0xbc, 0x33, 0x18, 0x46, - 0x70, 0x47, 0x02, 0x20, 0x70, 0x47, 0x00, 0x00, 0x30, 0xb5, 0x03, 0x9d, - 0xc1, 0xf3, 0x09, 0x01, 0x04, 0x68, 0x45, 0xea, 0x02, 0x42, 0x60, 0x68, - 0x1a, 0x43, 0x04, 0x4b, 0x43, 0xea, 0x55, 0x53, 0x0a, 0x43, 0x20, 0xea, - 0x03, 0x00, 0x02, 0x43, 0x62, 0x60, 0x30, 0xbd, 0xff, 0x63, 0xff, 0x03, - 0x2d, 0xe9, 0xf3, 0x41, 0x04, 0x46, 0x88, 0x46, 0x09, 0xf0, 0xc5, 0xf9, + 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0x9f, 0xed, 0x0d, 0x6a, 0xee, 0xe7, + 0x1b, 0x6b, 0xc3, 0xf3, 0x08, 0x03, 0x07, 0xee, 0x10, 0x3a, 0xb8, 0xee, + 0xc7, 0x7a, 0x77, 0xee, 0x27, 0x7a, 0x77, 0xee, 0x86, 0x7a, 0x9f, 0xed, + 0x07, 0x6a, 0xe0, 0xe7, 0x06, 0x48, 0x85, 0xe7, 0x06, 0x48, 0x83, 0xe7, + 0x00, 0x44, 0x02, 0x58, 0x00, 0x90, 0xd0, 0x03, 0x00, 0x24, 0x74, 0x4c, + 0x20, 0xbc, 0xbe, 0x4b, 0x00, 0x24, 0x74, 0x4a, 0x40, 0x78, 0x7d, 0x01, + 0x00, 0x09, 0x3d, 0x00, 0x08, 0xb5, 0xff, 0xf7, 0x5d, 0xff, 0x09, 0x49, + 0x09, 0x4a, 0x8b, 0x69, 0xc3, 0xf3, 0x03, 0x23, 0xd3, 0x5c, 0x03, 0xf0, + 0x1f, 0x03, 0xd8, 0x40, 0x8b, 0x69, 0x03, 0xf0, 0x0f, 0x03, 0xd3, 0x5c, + 0x04, 0x4a, 0x03, 0xf0, 0x1f, 0x03, 0x10, 0x60, 0xd8, 0x40, 0x08, 0xbd, + 0x00, 0x44, 0x02, 0x58, 0x29, 0xd5, 0x01, 0x08, 0x00, 0x00, 0x00, 0x24, + 0x73, 0xb5, 0x0e, 0x46, 0x04, 0x46, 0xff, 0xf7, 0xdf, 0xff, 0xb0, 0xfb, + 0xf6, 0xf5, 0xff, 0x2d, 0x47, 0xdc, 0xff, 0xf7, 0xd9, 0xff, 0xb0, 0xfb, + 0xf6, 0xf1, 0x01, 0xfb, 0x16, 0x06, 0x06, 0xb9, 0x01, 0x3d, 0x65, 0x60, + 0xfe, 0xf7, 0x72, 0xfb, 0x94, 0xf8, 0x41, 0x20, 0x03, 0x46, 0x12, 0xb9, + 0x41, 0xf2, 0x88, 0x32, 0xa2, 0x64, 0x20, 0x68, 0xa1, 0x68, 0x02, 0x68, + 0x01, 0x39, 0x22, 0xf4, 0x70, 0x62, 0x42, 0xea, 0x01, 0x22, 0x20, 0x21, + 0x02, 0x60, 0x20, 0x46, 0xa2, 0x6c, 0x00, 0x92, 0x00, 0x22, 0xfe, 0xf7, + 0xcb, 0xfe, 0x30, 0xbb, 0x22, 0x68, 0xe5, 0x69, 0xe3, 0x68, 0x11, 0x68, + 0x2b, 0x43, 0x25, 0x6a, 0x21, 0xf0, 0x7f, 0x41, 0x2b, 0x43, 0x65, 0x68, + 0x21, 0xf0, 0xd0, 0x01, 0x43, 0xea, 0x05, 0x63, 0x0b, 0x43, 0x13, 0x60, + 0x55, 0x68, 0xd4, 0xe9, 0x05, 0x31, 0x0b, 0x43, 0x21, 0x69, 0x43, 0xea, + 0x01, 0x43, 0x09, 0x49, 0x29, 0x40, 0x0b, 0x43, 0x53, 0x60, 0x13, 0x68, + 0x43, 0xf0, 0x01, 0x03, 0x13, 0x60, 0x01, 0x23, 0x60, 0x64, 0x84, 0xf8, + 0x41, 0x30, 0x02, 0xb0, 0x70, 0xbd, 0xff, 0x25, 0xbd, 0xe7, 0x4f, 0xf0, + 0xff, 0x30, 0xf8, 0xe7, 0xfe, 0xf8, 0xe0, 0xff, 0x08, 0xb5, 0xff, 0xf7, + 0x89, 0xff, 0x05, 0x4b, 0x05, 0x4a, 0x1b, 0x6a, 0xc3, 0xf3, 0x02, 0x13, + 0xd3, 0x5c, 0x03, 0xf0, 0x1f, 0x03, 0xd8, 0x40, 0x08, 0xbd, 0x00, 0xbf, + 0x00, 0x44, 0x02, 0x58, 0x29, 0xd5, 0x01, 0x08, 0x08, 0xb5, 0xff, 0xf7, + 0x77, 0xff, 0x05, 0x4b, 0x05, 0x4a, 0xdb, 0x69, 0xc3, 0xf3, 0x02, 0x23, + 0xd3, 0x5c, 0x03, 0xf0, 0x1f, 0x03, 0xd8, 0x40, 0x08, 0xbd, 0x00, 0xbf, + 0x00, 0x44, 0x02, 0x58, 0x29, 0xd5, 0x01, 0x08, 0x08, 0xb5, 0xff, 0xf7, + 0x65, 0xff, 0x05, 0x4b, 0x05, 0x4a, 0xdb, 0x69, 0xc3, 0xf3, 0x02, 0x13, + 0xd3, 0x5c, 0x03, 0xf0, 0x1f, 0x03, 0xd8, 0x40, 0x08, 0xbd, 0x00, 0xbf, + 0x00, 0x44, 0x02, 0x58, 0x29, 0xd5, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x43, + 0x7f, 0x4e, 0x90, 0x21, 0x7f, 0x4c, 0x89, 0xb0, 0xd6, 0xf8, 0x08, 0xe0, + 0xf0, 0x68, 0x37, 0x69, 0xd6, 0xf8, 0x14, 0xc0, 0xd6, 0xe9, 0x00, 0x35, + 0x69, 0x43, 0x62, 0x18, 0x63, 0x50, 0x00, 0x21, 0xc2, 0xf8, 0x04, 0xe0, + 0xa2, 0xf8, 0x56, 0x10, 0xa2, 0xf8, 0x54, 0x10, 0xa2, 0xf8, 0x5e, 0x10, + 0xa2, 0xf8, 0x5c, 0x10, 0x91, 0x62, 0x51, 0x66, 0x90, 0x60, 0xd7, 0x60, + 0xc2, 0xf8, 0x10, 0xc0, 0xc2, 0xe9, 0x06, 0x11, 0xc2, 0xe9, 0x08, 0x11, + 0xb6, 0xf9, 0x1a, 0x10, 0x01, 0x31, 0x5a, 0xd1, 0x08, 0x21, 0x51, 0x61, + 0x6c, 0x4a, 0x93, 0x42, 0x10, 0xd1, 0x90, 0x22, 0xbe, 0xf5, 0x16, 0x5f, + 0x02, 0xfb, 0x05, 0x42, 0x92, 0xf8, 0x80, 0x10, 0x54, 0xd8, 0x01, 0x29, + 0x06, 0xd0, 0x19, 0x68, 0x41, 0xf0, 0x02, 0x01, 0x19, 0x60, 0x00, 0x21, + 0x82, 0xf8, 0x80, 0x10, 0x90, 0x22, 0x02, 0xfb, 0x05, 0x41, 0xd1, 0xf8, + 0x84, 0x60, 0x0e, 0xb9, 0x81, 0xf8, 0x80, 0x60, 0x02, 0xfb, 0x05, 0x42, + 0x24, 0x21, 0x40, 0xea, 0x0c, 0x00, 0xc2, 0xf8, 0x84, 0x10, 0x19, 0x68, + 0x52, 0x69, 0x21, 0xf0, 0x01, 0x01, 0x10, 0x43, 0x59, 0x4a, 0x19, 0x60, + 0x19, 0x68, 0x0a, 0x40, 0x10, 0x43, 0x18, 0x60, 0x5a, 0x68, 0x22, 0xf4, + 0x40, 0x52, 0x17, 0x43, 0x5f, 0x60, 0x9a, 0x68, 0x22, 0xf0, 0x6e, 0x42, + 0x22, 0xf4, 0x30, 0x62, 0x9a, 0x60, 0xda, 0x6a, 0x22, 0xf0, 0x0f, 0x02, + 0xda, 0x62, 0x50, 0x4a, 0x93, 0x42, 0x25, 0xd1, 0x4f, 0x4b, 0x5b, 0x6d, + 0x03, 0xf0, 0x38, 0x03, 0x28, 0x2b, 0x00, 0xf2, 0x84, 0x80, 0x4d, 0x4a, + 0xd3, 0x5c, 0x08, 0x2b, 0x00, 0xf2, 0xb3, 0x81, 0x08, 0x2b, 0x7c, 0xd8, + 0xdf, 0xe8, 0x13, 0xf0, 0xd8, 0x01, 0xde, 0x01, 0x7b, 0x00, 0x7b, 0x00, + 0xe1, 0x01, 0x7b, 0x00, 0x7b, 0x00, 0x7b, 0x00, 0xe6, 0x01, 0xb6, 0xf9, + 0x18, 0x10, 0x01, 0x31, 0x0c, 0xbf, 0x04, 0x21, 0x0c, 0x21, 0x9e, 0xe7, + 0x01, 0x29, 0xb1, 0xd0, 0x19, 0x68, 0x21, 0xf0, 0x02, 0x01, 0xa9, 0xe7, + 0x3e, 0x4a, 0x93, 0x42, 0x07, 0xd1, 0x3b, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, + 0x07, 0x03, 0x05, 0x2b, 0x5b, 0xd8, 0x3b, 0x4a, 0xd6, 0xe7, 0x3b, 0x4a, + 0x93, 0x42, 0x07, 0xd1, 0x35, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, 0x07, 0x03, + 0x05, 0x2b, 0x50, 0xd8, 0x37, 0x4a, 0xcb, 0xe7, 0x37, 0x4a, 0x93, 0x42, + 0x07, 0xd1, 0x30, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, 0x07, 0x03, 0x05, 0x2b, + 0x45, 0xd8, 0x34, 0x4a, 0xc0, 0xe7, 0x34, 0x4a, 0x93, 0x42, 0x07, 0xd1, + 0x2a, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, 0x07, 0x03, 0x05, 0x2b, 0x3a, 0xd8, + 0x30, 0x4a, 0xb5, 0xe7, 0x30, 0x4a, 0x93, 0x42, 0x07, 0xd1, 0x25, 0x4b, + 0x5b, 0x6d, 0x03, 0xf0, 0x38, 0x03, 0x28, 0x2b, 0x2f, 0xd8, 0x2d, 0x4a, + 0xaa, 0xe7, 0x2d, 0x4a, 0x93, 0x42, 0x07, 0xd1, 0x1f, 0x4b, 0x5b, 0x6d, + 0x03, 0xf0, 0x07, 0x03, 0x05, 0x2b, 0x24, 0xd8, 0x29, 0x4a, 0x9f, 0xe7, + 0x29, 0x4a, 0x93, 0x42, 0x07, 0xd1, 0x1a, 0x4b, 0x5b, 0x6d, 0x03, 0xf0, + 0x07, 0x03, 0x05, 0x2b, 0x19, 0xd8, 0x26, 0x4a, 0x94, 0xe7, 0x13, 0x4a, + 0x93, 0x42, 0x14, 0xd1, 0x02, 0xf5, 0x0e, 0x32, 0x93, 0x6d, 0x03, 0xf0, + 0x07, 0x03, 0x05, 0x2b, 0x0d, 0xd8, 0x21, 0x49, 0xcb, 0x5c, 0x10, 0x2b, + 0x00, 0xf0, 0x00, 0x81, 0x09, 0xd8, 0x04, 0x2b, 0x00, 0xf0, 0xf2, 0x80, + 0x08, 0x2b, 0x00, 0xf0, 0xf4, 0x80, 0x02, 0x2b, 0x36, 0xd0, 0x01, 0x26, + 0x3a, 0xe0, 0x20, 0x2b, 0x00, 0xf0, 0x2d, 0x81, 0x40, 0x2b, 0xf8, 0xd1, + 0x4f, 0xf4, 0x00, 0x40, 0xf5, 0xe0, 0x00, 0xbf, 0xc8, 0x0b, 0x02, 0x24, + 0xa8, 0x0d, 0x02, 0x24, 0x00, 0x0c, 0x00, 0x58, 0xf3, 0x69, 0xff, 0xcf, + 0x00, 0x10, 0x01, 0x40, 0x00, 0x44, 0x02, 0x58, 0xf4, 0xd4, 0x01, 0x08, + 0x00, 0x44, 0x00, 0x40, 0x1d, 0xd5, 0x01, 0x08, 0x00, 0x48, 0x00, 0x40, + 0x1d, 0xd5, 0x01, 0x08, 0x00, 0x4c, 0x00, 0x40, 0x1d, 0xd5, 0x01, 0x08, + 0x00, 0x50, 0x00, 0x40, 0x1d, 0xd5, 0x01, 0x08, 0x00, 0x14, 0x01, 0x40, + 0xf4, 0xd4, 0x01, 0x08, 0x00, 0x78, 0x00, 0x40, 0x1d, 0xd5, 0x01, 0x08, + 0x00, 0x7c, 0x00, 0x40, 0x1d, 0xd5, 0x01, 0x08, 0x23, 0xd5, 0x01, 0x08, + 0xff, 0xf7, 0x9a, 0xfe, 0x00, 0x28, 0x40, 0xf0, 0xc4, 0x80, 0x00, 0x26, + 0x90, 0x22, 0x4f, 0xf0, 0x01, 0x13, 0x01, 0x2e, 0x02, 0xfb, 0x05, 0xf2, + 0x04, 0xeb, 0x02, 0x01, 0x8b, 0x66, 0x4f, 0xf0, 0x00, 0x03, 0xc1, 0xe9, + 0x1c, 0x33, 0x00, 0xf0, 0x34, 0x81, 0x8b, 0x6a, 0x00, 0x2b, 0x66, 0xd0, + 0xd8, 0x07, 0x06, 0xd5, 0xa0, 0x58, 0xc9, 0x6a, 0x42, 0x68, 0x22, 0xf4, + 0x00, 0x32, 0x0a, 0x43, 0x42, 0x60, 0x9a, 0x07, 0x09, 0xd5, 0x90, 0x22, + 0x6a, 0x43, 0xa1, 0x58, 0xa0, 0x18, 0x4a, 0x68, 0x00, 0x6b, 0x22, 0xf4, + 0x80, 0x32, 0x02, 0x43, 0x4a, 0x60, 0x5f, 0x07, 0x09, 0xd5, 0x90, 0x22, + 0x6a, 0x43, 0xa1, 0x58, 0xa0, 0x18, 0x4a, 0x68, 0x40, 0x6b, 0x22, 0xf4, + 0x80, 0x22, 0x02, 0x43, 0x4a, 0x60, 0x18, 0x07, 0x09, 0xd5, 0x90, 0x22, + 0x6a, 0x43, 0xa1, 0x58, 0xa0, 0x18, 0x4a, 0x68, 0x80, 0x6b, 0x22, 0xf4, + 0x00, 0x42, 0x02, 0x43, 0x4a, 0x60, 0xd9, 0x06, 0x09, 0xd5, 0x90, 0x22, + 0x6a, 0x43, 0xa1, 0x58, 0xa0, 0x18, 0x8a, 0x68, 0xc0, 0x6b, 0x22, 0xf4, + 0x80, 0x52, 0x02, 0x43, 0x8a, 0x60, 0x9a, 0x06, 0x09, 0xd5, 0x90, 0x22, + 0x6a, 0x43, 0xa1, 0x58, 0xa0, 0x18, 0x8a, 0x68, 0x00, 0x6c, 0x22, 0xf4, + 0x00, 0x52, 0x02, 0x43, 0x8a, 0x60, 0x5f, 0x06, 0x13, 0xd5, 0x90, 0x22, + 0x6a, 0x43, 0xa1, 0x58, 0xa0, 0x18, 0x4a, 0x68, 0x47, 0x6c, 0x22, 0xf4, + 0x80, 0x12, 0xb7, 0xf5, 0x80, 0x1f, 0x42, 0xea, 0x07, 0x02, 0x4a, 0x60, + 0x05, 0xd1, 0x4a, 0x68, 0x80, 0x6c, 0x22, 0xf4, 0xc0, 0x02, 0x02, 0x43, + 0x4a, 0x60, 0x18, 0x06, 0x09, 0xd5, 0x90, 0x23, 0x6b, 0x43, 0xe2, 0x58, + 0xe1, 0x18, 0x53, 0x68, 0xc9, 0x6c, 0x23, 0xf4, 0x00, 0x23, 0x0b, 0x43, + 0x53, 0x60, 0x90, 0x27, 0x6f, 0x43, 0xe3, 0x59, 0x04, 0xeb, 0x07, 0x08, + 0x5a, 0x68, 0x22, 0xf4, 0x90, 0x42, 0x5a, 0x60, 0x9a, 0x68, 0x22, 0xf0, + 0x2a, 0x02, 0x9a, 0x60, 0x1a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x60, + 0x00, 0x23, 0xc8, 0xf8, 0x8c, 0x30, 0xfe, 0xf7, 0x35, 0xf9, 0xe3, 0x59, + 0x02, 0x46, 0x1b, 0x68, 0x19, 0x07, 0x00, 0xf1, 0xa3, 0x80, 0x90, 0x23, + 0x6b, 0x43, 0xe3, 0x58, 0x1b, 0x68, 0x5b, 0x07, 0x07, 0xd5, 0x4f, 0xf4, + 0x80, 0x01, 0x40, 0x46, 0xfe, 0xf7, 0xf4, 0xf9, 0x00, 0x28, 0x40, 0xf0, + 0x9f, 0x80, 0x90, 0x23, 0x03, 0xfb, 0x05, 0x44, 0x20, 0x23, 0xc4, 0xf8, + 0x84, 0x30, 0xc4, 0xf8, 0x88, 0x30, 0x00, 0x23, 0xe3, 0x66, 0x84, 0xf8, + 0x80, 0x30, 0x92, 0xe0, 0x02, 0xa8, 0xfa, 0xf7, 0x6d, 0xfd, 0x03, 0x98, + 0x46, 0xe7, 0x05, 0xa8, 0xfa, 0xf7, 0xc0, 0xfc, 0x06, 0x98, 0x41, 0xe7, + 0x13, 0x68, 0x46, 0x48, 0x13, 0xf0, 0x20, 0x0f, 0x03, 0xd0, 0x13, 0x68, + 0xc3, 0xf3, 0xc1, 0x03, 0xd8, 0x40, 0x4f, 0xf0, 0x90, 0x09, 0x42, 0x4b, + 0x09, 0xfb, 0x05, 0xf9, 0x04, 0xeb, 0x09, 0x01, 0x4a, 0x6a, 0xd1, 0xf8, + 0x04, 0x80, 0x33, 0xf8, 0x12, 0x20, 0x08, 0xeb, 0x48, 0x01, 0xb0, 0xfb, + 0xf2, 0xf3, 0x8b, 0x42, 0xff, 0xf4, 0xed, 0xae, 0xb3, 0xeb, 0x08, 0x3f, + 0x3f, 0xf6, 0xe9, 0xae, 0x00, 0x23, 0x00, 0x21, 0x17, 0xf0, 0xbc, 0xf8, + 0x42, 0x46, 0x0f, 0x02, 0x00, 0x23, 0x06, 0x02, 0x47, 0xea, 0x10, 0x67, + 0x4f, 0xea, 0x58, 0x00, 0x30, 0x18, 0x47, 0xf1, 0x00, 0x01, 0x17, 0xf0, + 0xaf, 0xf8, 0x30, 0x4b, 0xa0, 0xf5, 0x40, 0x72, 0x9a, 0x42, 0x3f, 0xf6, + 0xd2, 0xae, 0x54, 0xf8, 0x09, 0x30, 0xd8, 0x60, 0x09, 0xe7, 0x2c, 0x48, + 0xcb, 0xe7, 0x20, 0x2b, 0x39, 0xd0, 0x40, 0x2b, 0x39, 0xd0, 0x10, 0x2b, + 0x7f, 0xf4, 0xc5, 0xae, 0x28, 0x4b, 0x24, 0x48, 0x1a, 0x68, 0x12, 0xf0, + 0x20, 0x0f, 0x03, 0xd0, 0x1b, 0x68, 0xc3, 0xf3, 0xc1, 0x03, 0xd8, 0x40, + 0x90, 0x23, 0x6b, 0x43, 0xe1, 0x18, 0x4a, 0x68, 0x4e, 0x6a, 0x1e, 0x49, + 0x31, 0xf8, 0x16, 0x10, 0xb0, 0xfb, 0xf1, 0xf0, 0x00, 0xeb, 0x52, 0x00, + 0xb0, 0xfb, 0xf2, 0xf0, 0x80, 0xb2, 0x4f, 0xf6, 0xef, 0x72, 0xa0, 0xf1, + 0x10, 0x01, 0x91, 0x42, 0x3f, 0xf6, 0xa5, 0xae, 0xe3, 0x58, 0xd2, 0xe7, + 0xff, 0xf7, 0x98, 0xfd, 0x00, 0x28, 0x3f, 0xf4, 0xda, 0xae, 0xe1, 0xe7, + 0xff, 0xf7, 0x80, 0xfd, 0xf8, 0xe7, 0x02, 0xa8, 0xfa, 0xf7, 0xf4, 0xfc, + 0x03, 0x98, 0xf3, 0xe7, 0x05, 0xa8, 0xfa, 0xf7, 0x47, 0xfc, 0x06, 0x98, + 0xee, 0xe7, 0x0d, 0x48, 0xd2, 0xe7, 0x4f, 0xf4, 0x00, 0x40, 0xcf, 0xe7, + 0x01, 0x90, 0x4f, 0xf4, 0x00, 0x11, 0x40, 0x46, 0xfe, 0xf7, 0x56, 0xf9, + 0x01, 0x9a, 0x00, 0x28, 0x3f, 0xf4, 0x53, 0xaf, 0x03, 0x26, 0x30, 0x46, + 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x00, 0xbf, 0x00, 0x90, 0xd0, 0x03, + 0x9c, 0xd6, 0x01, 0x08, 0xff, 0xfc, 0x0f, 0x00, 0x00, 0x09, 0x3d, 0x00, + 0x00, 0x44, 0x02, 0x58, 0x15, 0x4b, 0x4f, 0xf4, 0xe1, 0x32, 0x10, 0xb5, + 0x9a, 0x60, 0xb0, 0xb0, 0x1a, 0x68, 0x13, 0x4b, 0x9a, 0x42, 0x1c, 0xd1, + 0xbc, 0x22, 0x00, 0x21, 0x01, 0xa8, 0x15, 0xf0, 0x5d, 0xf9, 0x04, 0x23, + 0x68, 0x46, 0x00, 0x93, 0x01, 0x23, 0x25, 0x93, 0xff, 0xf7, 0x3e, 0xfa, + 0xff, 0xf7, 0x62, 0xfd, 0x78, 0xb1, 0x00, 0x23, 0x0a, 0x4c, 0x25, 0x93, + 0x0a, 0x4b, 0xd4, 0xf8, 0x8c, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0x68, 0x46, + 0xff, 0xf7, 0x30, 0xfa, 0x4f, 0xf4, 0x40, 0x73, 0xe3, 0x60, 0xff, 0xf7, + 0x51, 0xfd, 0x30, 0xb0, 0x10, 0xbd, 0x00, 0xbf, 0xc8, 0x0b, 0x02, 0x24, + 0x00, 0x0c, 0x00, 0x58, 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, + 0x37, 0xb5, 0x44, 0x4c, 0x23, 0x69, 0xa3, 0x69, 0xa3, 0x69, 0xa3, 0x69, + 0xe5, 0x69, 0xe3, 0x69, 0x23, 0x6a, 0x05, 0xf0, 0x70, 0x05, 0x40, 0x4b, + 0x1b, 0x68, 0xff, 0xf7, 0x25, 0xfd, 0xd4, 0xf8, 0xe8, 0x30, 0x3e, 0x4a, + 0x43, 0xf0, 0x08, 0x03, 0xc4, 0xf8, 0xe8, 0x30, 0xd4, 0xf8, 0xe8, 0x30, + 0x03, 0xf0, 0x08, 0x03, 0x01, 0x93, 0x01, 0x9b, 0x39, 0x4b, 0xd2, 0xf8, + 0x8c, 0x10, 0x99, 0x42, 0xfb, 0xd1, 0xd4, 0xf8, 0x90, 0x30, 0x43, 0xf0, + 0x08, 0x03, 0xc4, 0xf8, 0x90, 0x30, 0xd4, 0xf8, 0x90, 0x30, 0x23, 0xf0, + 0x08, 0x03, 0xc4, 0xf8, 0x90, 0x30, 0x4f, 0xf4, 0x40, 0x73, 0x31, 0x4c, + 0xd3, 0x60, 0x31, 0x4b, 0x23, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0xe3, 0x60, + 0x2f, 0x4b, 0x00, 0x2d, 0x4d, 0xd1, 0xb0, 0xfb, 0xf3, 0xf0, 0x00, 0x23, + 0x01, 0x38, 0x23, 0x61, 0xa3, 0x60, 0x60, 0x60, 0xc4, 0xe9, 0x05, 0x33, + 0x94, 0xf8, 0x3d, 0x30, 0x03, 0xf0, 0xff, 0x02, 0x0b, 0xb9, 0x84, 0xf8, + 0x3c, 0x20, 0x25, 0x4a, 0x02, 0x23, 0x84, 0xf8, 0x3d, 0x30, 0x13, 0x68, + 0x23, 0xf4, 0x7c, 0x73, 0x13, 0x60, 0x4f, 0xf0, 0xff, 0x33, 0xd3, 0x62, + 0x01, 0x23, 0x90, 0x62, 0x53, 0x61, 0x84, 0xf8, 0x48, 0x30, 0x84, 0xf8, + 0x3e, 0x30, 0x84, 0xf8, 0x3f, 0x30, 0x84, 0xf8, 0x40, 0x30, 0x84, 0xf8, + 0x41, 0x30, 0x84, 0xf8, 0x42, 0x30, 0x84, 0xf8, 0x43, 0x30, 0x84, 0xf8, + 0x44, 0x30, 0x84, 0xf8, 0x45, 0x30, 0x84, 0xf8, 0x46, 0x30, 0x84, 0xf8, + 0x47, 0x30, 0x84, 0xf8, 0x3d, 0x30, 0x14, 0x4b, 0x14, 0x4a, 0x9b, 0x68, + 0xc3, 0xf8, 0x08, 0x21, 0xbf, 0xf3, 0x4f, 0x8f, 0x12, 0x4b, 0x4f, 0xf4, + 0x80, 0x22, 0x5a, 0x60, 0x94, 0xf8, 0x3e, 0x30, 0x01, 0x2b, 0x01, 0xd1, + 0xfa, 0xf7, 0xd8, 0xf9, 0x22, 0x68, 0xd3, 0x68, 0x23, 0xf0, 0x02, 0x03, + 0xd3, 0x60, 0x03, 0xb0, 0x30, 0xbd, 0x40, 0x00, 0xaf, 0xe7, 0x00, 0xbf, + 0x00, 0x44, 0x02, 0x58, 0x00, 0x20, 0x00, 0x52, 0x00, 0x64, 0x02, 0x58, + 0x00, 0x03, 0x00, 0x80, 0x68, 0x05, 0x00, 0x24, 0x00, 0x0c, 0x00, 0x40, + 0x40, 0x42, 0x0f, 0x00, 0x00, 0xed, 0x00, 0xe0, 0x65, 0x08, 0x00, 0x08, + 0x00, 0xe1, 0x00, 0xe0, 0x00, 0x23, 0xf0, 0xb5, 0x04, 0x46, 0x89, 0xb0, + 0xc3, 0x66, 0x83, 0x60, 0x39, 0xb1, 0x8b, 0x88, 0xa0, 0xf8, 0x58, 0x30, + 0x8b, 0x89, 0xa0, 0xf8, 0x5a, 0x30, 0x0b, 0x68, 0x03, 0x60, 0x23, 0x68, + 0xa8, 0x4a, 0x93, 0x42, 0x12, 0xd1, 0x00, 0x23, 0x84, 0xf8, 0x50, 0x30, + 0xa6, 0x4b, 0xd3, 0xf8, 0xe8, 0x20, 0x42, 0xf4, 0x00, 0x12, 0xc3, 0xf8, + 0xe8, 0x20, 0xd3, 0xf8, 0xe8, 0x30, 0x03, 0xf4, 0x00, 0x13, 0x01, 0x93, + 0x01, 0x9b, 0xa1, 0x4b, 0xe3, 0x65, 0x0b, 0xe0, 0xa0, 0x4a, 0x93, 0x42, + 0x7c, 0xd0, 0x02, 0xf5, 0x80, 0x62, 0x93, 0x42, 0x00, 0xf0, 0x8a, 0x80, + 0x9d, 0x4a, 0x93, 0x42, 0x00, 0xf0, 0x98, 0x80, 0x9c, 0x49, 0xb4, 0xf9, + 0x58, 0x00, 0x08, 0xf0, 0x1f, 0xfd, 0x9b, 0x49, 0xb4, 0xf9, 0x5a, 0x00, + 0x08, 0xf0, 0x1a, 0xfd, 0x04, 0x21, 0xb4, 0xf9, 0x58, 0x00, 0xfd, 0xf7, + 0x5b, 0xfe, 0x04, 0x21, 0xb4, 0xf9, 0x5a, 0x00, 0xfd, 0xf7, 0x56, 0xfe, + 0x63, 0x6d, 0x0b, 0xb9, 0x93, 0x4b, 0x63, 0x65, 0x93, 0x4a, 0x14, 0x21, + 0x66, 0x6d, 0x12, 0x68, 0x23, 0x68, 0xb2, 0xfb, 0xf6, 0xf2, 0x4a, 0x43, + 0x63, 0x60, 0x11, 0x46, 0x98, 0x69, 0x00, 0x04, 0x01, 0xd5, 0x01, 0x39, + 0xfa, 0xd1, 0x8d, 0x4d, 0x8d, 0x49, 0xd5, 0xf8, 0x8c, 0x00, 0x88, 0x42, + 0xfb, 0xd1, 0x81, 0x49, 0x8b, 0x42, 0x79, 0xd1, 0x80, 0x49, 0xd1, 0xf8, + 0x90, 0x00, 0x40, 0xf4, 0x00, 0x10, 0xc1, 0xf8, 0x90, 0x00, 0xd1, 0xf8, + 0x90, 0x00, 0x20, 0xf4, 0x00, 0x10, 0xc1, 0xf8, 0x90, 0x00, 0x82, 0x49, + 0x4f, 0xf4, 0x40, 0x70, 0xc8, 0x60, 0x99, 0x69, 0x09, 0x04, 0x01, 0xd5, + 0x01, 0x3a, 0xfa, 0xd1, 0x7f, 0x4a, 0x96, 0x42, 0x1a, 0xd1, 0x73, 0x4a, + 0x93, 0x42, 0x02, 0xd1, 0x01, 0x20, 0xfa, 0xf7, 0x23, 0xfc, 0x22, 0x68, + 0x72, 0x4b, 0x9a, 0x42, 0x02, 0xd1, 0x02, 0x20, 0xfa, 0xf7, 0x1c, 0xfc, + 0x22, 0x68, 0x78, 0x4b, 0x9a, 0x42, 0x02, 0xd1, 0x04, 0x20, 0xfa, 0xf7, + 0x15, 0xfc, 0x22, 0x68, 0x6c, 0x4b, 0x9a, 0x42, 0x02, 0xd1, 0x08, 0x20, + 0xfa, 0xf7, 0x0e, 0xfc, 0x6e, 0x49, 0x6f, 0x4b, 0xd1, 0xf8, 0x8c, 0x20, + 0x9a, 0x42, 0xfb, 0xd1, 0x62, 0x4b, 0x22, 0x68, 0x9a, 0x42, 0x62, 0x4b, + 0x6a, 0xd1, 0x59, 0x6d, 0x21, 0xf4, 0x40, 0x51, 0x59, 0x65, 0x6f, 0xe0, + 0x01, 0x23, 0x84, 0xf8, 0x50, 0x30, 0x5d, 0x4b, 0xd3, 0xf8, 0xe8, 0x20, + 0x42, 0xf4, 0x80, 0x02, 0xc3, 0xf8, 0xe8, 0x20, 0xd3, 0xf8, 0xe8, 0x30, + 0x03, 0xf4, 0x80, 0x03, 0x02, 0x93, 0x02, 0x9b, 0x62, 0x4b, 0x6b, 0xe7, + 0x02, 0x23, 0x84, 0xf8, 0x50, 0x30, 0x54, 0x4b, 0xd3, 0xf8, 0xe8, 0x20, + 0x42, 0xf4, 0x00, 0x02, 0xc3, 0xf8, 0xe8, 0x20, 0xd3, 0xf8, 0xe8, 0x30, + 0x03, 0xf4, 0x00, 0x03, 0x03, 0x93, 0x03, 0x9b, 0x5a, 0x4b, 0x59, 0xe7, + 0x03, 0x23, 0x84, 0xf8, 0x50, 0x30, 0x4b, 0x4b, 0xd3, 0xf8, 0xf4, 0x20, + 0x42, 0xf0, 0x80, 0x02, 0xc3, 0xf8, 0xf4, 0x20, 0xd3, 0xf8, 0xf4, 0x30, + 0x03, 0xf0, 0x80, 0x03, 0x04, 0x93, 0x04, 0x9b, 0x52, 0x4b, 0x47, 0xe7, + 0x45, 0x49, 0x8b, 0x42, 0x14, 0xd0, 0x01, 0xf5, 0x80, 0x61, 0x8b, 0x42, + 0x1c, 0xd0, 0x43, 0x49, 0x8b, 0x42, 0x88, 0xd1, 0x3e, 0x49, 0xd1, 0xf8, + 0x9c, 0x00, 0x40, 0xf0, 0x80, 0x00, 0xc1, 0xf8, 0x9c, 0x00, 0xd1, 0xf8, + 0x9c, 0x00, 0x20, 0xf0, 0x80, 0x00, 0xc1, 0xf8, 0x9c, 0x00, 0x7a, 0xe7, + 0x37, 0x49, 0xd1, 0xf8, 0x90, 0x00, 0x40, 0xf4, 0x80, 0x00, 0xc1, 0xf8, + 0x90, 0x00, 0xd1, 0xf8, 0x90, 0x00, 0x20, 0xf4, 0x80, 0x00, 0x6c, 0xe7, + 0x31, 0x49, 0xd1, 0xf8, 0x90, 0x00, 0x40, 0xf4, 0x00, 0x00, 0xc1, 0xf8, + 0x90, 0x00, 0xd1, 0xf8, 0x90, 0x00, 0x20, 0xf4, 0x00, 0x00, 0x60, 0xe7, + 0x2d, 0x49, 0x8a, 0x42, 0x91, 0xd0, 0x01, 0xf5, 0x80, 0x61, 0x8a, 0x42, + 0x8d, 0xd0, 0x2b, 0x49, 0x8a, 0x42, 0x3f, 0xd0, 0x2e, 0x4b, 0x4f, 0xf4, + 0x40, 0x71, 0xd9, 0x60, 0x94, 0xf8, 0x45, 0x30, 0x20, 0x2b, 0xd8, 0xb2, + 0x1a, 0xd1, 0x94, 0xf8, 0x44, 0x30, 0x01, 0x2b, 0x16, 0xd0, 0x24, 0x23, + 0x84, 0xf8, 0x45, 0x30, 0x63, 0x68, 0x19, 0x68, 0x21, 0xf0, 0x01, 0x01, + 0x19, 0x60, 0x19, 0x68, 0x21, 0xf4, 0x80, 0x51, 0x19, 0x60, 0x19, 0x68, + 0x19, 0x60, 0x19, 0x68, 0x41, 0xf0, 0x01, 0x01, 0x19, 0x60, 0x00, 0x23, + 0x84, 0xf8, 0x45, 0x00, 0x84, 0xf8, 0x44, 0x30, 0x13, 0x4b, 0x22, 0xf4, + 0x00, 0x61, 0xa5, 0x68, 0x99, 0x42, 0xe7, 0x6e, 0x11, 0x4b, 0x03, 0xd0, + 0x12, 0x49, 0x8a, 0x42, 0x40, 0xf0, 0x8c, 0x80, 0x5b, 0x6d, 0x03, 0xf4, + 0x40, 0x53, 0xb3, 0xf5, 0x00, 0x5f, 0x00, 0xf0, 0xb6, 0x80, 0x0c, 0xd8, + 0xa3, 0xb3, 0xb3, 0xf5, 0x80, 0x5f, 0x00, 0xf0, 0x97, 0x80, 0x17, 0x48, + 0x08, 0xf0, 0x8a, 0xfc, 0x99, 0x6d, 0x21, 0xf4, 0x40, 0x71, 0x99, 0x65, + 0xba, 0xe7, 0xb3, 0xf5, 0x40, 0x5f, 0xf4, 0xd1, 0x65, 0xb3, 0xb7, 0x42, + 0x2a, 0xd1, 0x2a, 0xe0, 0x00, 0x54, 0x00, 0x40, 0x00, 0x44, 0x02, 0x58, + 0x1f, 0x00, 0x20, 0x00, 0x00, 0x58, 0x00, 0x40, 0x00, 0x1c, 0x00, 0x58, + 0x00, 0xd6, 0x01, 0x08, 0x64, 0xd5, 0x01, 0x08, 0xa0, 0x86, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x24, 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, + 0x40, 0x42, 0x0f, 0x00, 0x00, 0x5c, 0x00, 0x40, 0x21, 0x00, 0x22, 0x00, + 0x48, 0x00, 0x49, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x72, 0xd4, 0x01, 0x08, + 0xff, 0xf7, 0x10, 0xfb, 0x0d, 0xb1, 0xb7, 0x42, 0x03, 0xd0, 0x3f, 0x4b, + 0x98, 0x42, 0x66, 0xd0, 0x00, 0x25, 0x00, 0x23, 0x01, 0x22, 0xa5, 0x60, + 0xe3, 0x60, 0xc4, 0xe9, 0x04, 0x23, 0xc4, 0xe9, 0x08, 0x33, 0xc4, 0xe9, + 0x06, 0x33, 0x94, 0xf8, 0x45, 0x30, 0x03, 0xf0, 0xff, 0x02, 0x0b, 0xb9, + 0x84, 0xf8, 0x44, 0x20, 0x24, 0x23, 0x25, 0xf0, 0x70, 0x65, 0x84, 0xf8, + 0x45, 0x30, 0x63, 0x68, 0x1a, 0x68, 0x22, 0xf0, 0x01, 0x02, 0x1a, 0x60, + 0x1d, 0x61, 0x9a, 0x68, 0x22, 0xf4, 0x00, 0x42, 0x9a, 0x60, 0x4f, 0xf4, + 0x00, 0x42, 0x9a, 0x60, 0x5a, 0x68, 0x42, 0xf0, 0x00, 0x72, 0x42, 0xf4, + 0x00, 0x42, 0x5a, 0x60, 0xda, 0x68, 0x22, 0xf4, 0x00, 0x42, 0xda, 0x60, + 0x00, 0x22, 0xda, 0x60, 0x1a, 0x60, 0x19, 0x68, 0x41, 0xf0, 0x01, 0x01, + 0x19, 0x60, 0x20, 0x23, 0xa2, 0x64, 0x84, 0xf8, 0x45, 0x30, 0x4f, 0xf0, + 0x00, 0x73, 0x62, 0x63, 0x66, 0x65, 0x84, 0xf8, 0x46, 0x20, 0xe6, 0x66, + 0x84, 0xf8, 0x64, 0x20, 0x23, 0x66, 0xa2, 0x66, 0x09, 0xb0, 0xf0, 0xbd, + 0x1b, 0x49, 0x8a, 0x42, 0x1b, 0xd1, 0x9b, 0x6d, 0x03, 0xf4, 0x40, 0x73, + 0xb3, 0xf5, 0x00, 0x7f, 0x13, 0xd0, 0x05, 0xd8, 0x4b, 0xb1, 0xb3, 0xf5, + 0x80, 0x7f, 0x09, 0xd0, 0x15, 0x48, 0x71, 0xe7, 0xb3, 0xf5, 0x40, 0x7f, + 0xfa, 0xd1, 0x14, 0x48, 0x9e, 0xe7, 0xff, 0xf7, 0x89, 0xfa, 0x9b, 0xe7, + 0x05, 0xa8, 0xfa, 0xf7, 0x67, 0xf9, 0x07, 0x98, 0x96, 0xe7, 0x10, 0x48, + 0x94, 0xe7, 0x10, 0x48, 0x60, 0xe7, 0x10, 0x4b, 0x9e, 0x42, 0x08, 0xd0, + 0x0f, 0x4b, 0x9e, 0x42, 0x07, 0xd0, 0x0f, 0x4b, 0x0f, 0x4d, 0x9e, 0x42, + 0x18, 0xbf, 0x00, 0x25, 0x8d, 0xe7, 0x0e, 0x4d, 0x8b, 0xe7, 0x0e, 0x4d, + 0x89, 0xe7, 0x00, 0x2d, 0x86, 0xd0, 0x05, 0x48, 0x7f, 0xe7, 0x00, 0xbf, + 0x00, 0x0e, 0x27, 0x07, 0x00, 0x1c, 0x00, 0x58, 0x8f, 0xd4, 0x01, 0x08, + 0x00, 0x09, 0x3d, 0x00, 0x00, 0x90, 0xd0, 0x03, 0xaa, 0xd4, 0x01, 0x08, + 0x80, 0x1a, 0x06, 0x00, 0x40, 0x42, 0x0f, 0x00, 0xa0, 0x86, 0x01, 0x00, + 0x76, 0x56, 0xe1, 0x40, 0x34, 0x14, 0xc1, 0x20, 0x36, 0x15, 0xc3, 0x00, + 0x2d, 0xe9, 0xf3, 0x41, 0x04, 0x46, 0x88, 0x46, 0x09, 0xf0, 0x67, 0xf9, 0xd4, 0xf8, 0x90, 0x50, 0x04, 0xf1, 0x34, 0x00, 0x35, 0xf0, 0x00, 0x75, 0x0d, 0xd1, 0x4f, 0xf0, 0x00, 0x73, 0x84, 0xf8, 0x94, 0x50, 0xc4, 0xf8, 0x90, 0x30, 0x94, 0xf8, 0x80, 0x30, 0x03, 0x2b, 0x7e, 0xd8, 0xdf, 0xe8, - 0x03, 0xf0, 0x05, 0x77, 0x79, 0x7b, 0x77, 0x48, 0x08, 0xf0, 0x3c, 0xfc, + 0x03, 0xf0, 0x05, 0x77, 0x79, 0x7b, 0x77, 0x48, 0x08, 0xf0, 0xa2, 0xfb, 0x76, 0x4e, 0x77, 0x4a, 0x77, 0x4f, 0x42, 0xf8, 0x23, 0x00, 0xb4, 0xf9, 0x8c, 0x30, 0xb9, 0x68, 0x03, 0xf1, 0x10, 0x0c, 0xb4, 0xf9, 0x8e, 0x20, 0x41, 0xf8, 0x2c, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, 0xb9, 0x68, 0x02, 0xf1, @@ -2499,48 +2241,36 @@ const unsigned char mcuboot_bin[] = { 0x41, 0xf8, 0x26, 0x30, 0x00, 0x2a, 0x96, 0xda, 0x9e, 0xe7, 0xb4, 0xf8, 0x5e, 0x30, 0xa4, 0xf8, 0x5c, 0x30, 0x23, 0x6e, 0xc1, 0xe7, 0x22, 0x6e, 0xb2, 0xf5, 0x2a, 0x4f, 0xca, 0xd1, 0x4f, 0xf0, 0x00, 0x72, 0xc6, 0xe7, - 0x00, 0x22, 0x00, 0x92, 0x10, 0x21, 0x94, 0xf8, 0x5c, 0x20, 0xff, 0xf7, - 0x25, 0xff, 0x00, 0x23, 0x2b, 0x4a, 0x84, 0xf8, 0x74, 0x30, 0xa3, 0x6e, + 0x00, 0x22, 0x00, 0x92, 0x10, 0x21, 0x94, 0xf8, 0x5c, 0x20, 0xfa, 0xf7, + 0x21, 0xfa, 0x00, 0x23, 0x2b, 0x4a, 0x84, 0xf8, 0x74, 0x30, 0xa3, 0x6e, 0x93, 0x42, 0x03, 0xd0, 0x29, 0x4a, 0x93, 0x42, 0x18, 0xbf, 0xf2, 0x25, 0x62, 0x6b, 0x13, 0x68, 0x1d, 0x43, 0x27, 0x4b, 0x15, 0x60, 0x1d, 0x68, 0xd4, 0xf8, 0x84, 0x30, 0xb5, 0xfb, 0xf3, 0xf3, 0x5a, 0x25, 0x5d, 0x43, 0x94, 0xf8, 0x94, 0x30, 0x13, 0xf0, 0x1e, 0x0f, 0x01, 0xd1, 0x01, 0x3d, - 0x1d, 0xd1, 0xb4, 0xf9, 0x8e, 0x60, 0xb4, 0xf9, 0x8c, 0x00, 0x01, 0xf0, - 0xbd, 0xff, 0x30, 0x46, 0x01, 0xf0, 0xba, 0xff, 0x1d, 0xb1, 0x94, 0xf8, + 0x1d, 0xd1, 0xb4, 0xf9, 0x8e, 0x60, 0xb4, 0xf9, 0x8c, 0x00, 0x02, 0xf0, + 0x21, 0xfb, 0x30, 0x46, 0x02, 0xf0, 0x1e, 0xfb, 0x1d, 0xb1, 0x94, 0xf8, 0x94, 0x30, 0x08, 0x2b, 0x13, 0xd0, 0x00, 0x21, 0x04, 0xf1, 0x30, 0x00, - 0xff, 0xf7, 0x9a, 0xfa, 0x6f, 0xf0, 0x01, 0x05, 0x20, 0x46, 0x09, 0xf0, - 0xc6, 0xf8, 0xa8, 0x1e, 0x18, 0xbf, 0x01, 0x20, 0x02, 0xb0, 0xbd, 0xe8, - 0xf0, 0x81, 0x01, 0x20, 0x07, 0xf0, 0x3c, 0xfe, 0xd6, 0xe7, 0x02, 0x25, - 0xf0, 0xe7, 0x00, 0xbf, 0xeb, 0xd9, 0x01, 0x08, 0x19, 0x12, 0x00, 0x08, - 0x34, 0x0e, 0x00, 0x24, 0x00, 0xed, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe0, - 0x07, 0x8a, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x35, 0x12, 0x00, 0x08, - 0x51, 0x12, 0x00, 0x08, 0x6d, 0x12, 0x00, 0x08, 0xfc, 0xec, 0x00, 0xe0, - 0x1d, 0x7d, 0x00, 0x08, 0x49, 0x79, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, - 0x83, 0x6f, 0x37, 0xb5, 0x04, 0x46, 0x00, 0x2b, 0x62, 0xd0, 0xd0, 0xf8, - 0x88, 0x30, 0x00, 0x2b, 0x5e, 0xd0, 0x90, 0xf8, 0x70, 0x20, 0x90, 0xf8, - 0x41, 0x10, 0x00, 0x2a, 0x14, 0xbf, 0x4f, 0xf0, 0x00, 0x72, 0x00, 0x22, - 0x20, 0x29, 0xc2, 0x65, 0x45, 0xd1, 0x90, 0xf8, 0x40, 0x10, 0x01, 0x29, - 0x41, 0xd0, 0x01, 0x25, 0xc1, 0x6e, 0xd0, 0xf8, 0x84, 0x00, 0x9b, 0xb2, - 0x84, 0xf8, 0x40, 0x50, 0x22, 0x25, 0x60, 0x62, 0x84, 0xf8, 0x41, 0x50, - 0x10, 0x25, 0x84, 0xf8, 0x42, 0x50, 0x00, 0x25, 0x65, 0x64, 0x63, 0x85, - 0x20, 0x4b, 0xe2, 0x62, 0x63, 0x63, 0x63, 0x8d, 0x9b, 0xb2, 0xff, 0x2b, - 0x2b, 0xd9, 0xff, 0x23, 0x23, 0x85, 0x4f, 0xf0, 0x80, 0x73, 0x22, 0x6b, - 0x12, 0x2a, 0x4f, 0xf0, 0x00, 0x02, 0x09, 0xd0, 0xe0, 0x6a, 0xaa, 0x28, - 0x23, 0xd1, 0xe2, 0x62, 0x62, 0x8d, 0x92, 0xb2, 0xff, 0x2a, 0x00, 0xd8, - 0xe3, 0x6a, 0x15, 0x4a, 0x89, 0xb2, 0x00, 0x92, 0x20, 0x46, 0x94, 0xf8, - 0x28, 0x20, 0xff, 0xf7, 0x7b, 0xfe, 0x62, 0x6b, 0x11, 0x49, 0x00, 0x23, - 0x8a, 0x42, 0x84, 0xf8, 0x40, 0x30, 0x04, 0xd0, 0x0f, 0x4b, 0x9a, 0x42, - 0x14, 0xbf, 0xf4, 0x23, 0x00, 0x23, 0x21, 0x68, 0x0a, 0x68, 0x13, 0x43, - 0x0b, 0x60, 0x03, 0xb0, 0x30, 0xbd, 0x63, 0x8d, 0x23, 0x85, 0xe3, 0x6a, - 0xd3, 0xe7, 0xe2, 0x6a, 0xb2, 0xf5, 0x2a, 0x4f, 0xd8, 0xd1, 0x4f, 0xf0, - 0x00, 0x72, 0xd4, 0xe7, 0x08, 0x23, 0x84, 0xf8, 0x60, 0x30, 0xee, 0xe7, - 0x07, 0x8a, 0x00, 0x08, 0x00, 0x24, 0x00, 0x80, 0x1d, 0x7d, 0x00, 0x08, - 0x49, 0x79, 0x00, 0x08, 0x03, 0x68, 0x9a, 0x69, 0x91, 0x07, 0x01, 0xd5, - 0x00, 0x22, 0x9a, 0x62, 0x9a, 0x69, 0xd2, 0x07, 0x03, 0xd4, 0x9a, 0x69, - 0x42, 0xf0, 0x01, 0x02, 0x9a, 0x61, 0x70, 0x47, 0x70, 0xb5, 0x3c, 0x4a, + 0xff, 0xf7, 0xe8, 0xfc, 0x6f, 0xf0, 0x01, 0x05, 0x20, 0x46, 0x09, 0xf0, + 0x68, 0xf8, 0xa8, 0x1e, 0x18, 0xbf, 0x01, 0x20, 0x02, 0xb0, 0xbd, 0xe8, + 0xf0, 0x81, 0x01, 0x20, 0x07, 0xf0, 0x98, 0xfd, 0xd6, 0xe7, 0x02, 0x25, + 0xf0, 0xe7, 0x00, 0xbf, 0xc0, 0xd4, 0x01, 0x08, 0xd5, 0x72, 0x00, 0x08, + 0x64, 0x0b, 0x02, 0x24, 0x00, 0xed, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe0, + 0x2b, 0x70, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0xf1, 0x72, 0x00, 0x08, + 0x0d, 0x73, 0x00, 0x08, 0x29, 0x73, 0x00, 0x08, 0xfc, 0xec, 0x00, 0xe0, + 0x4d, 0x71, 0x00, 0x08, 0xa1, 0x6c, 0x00, 0x08, 0x00, 0x00, 0x00, 0x24, + 0x38, 0xb5, 0x90, 0xf8, 0x41, 0x30, 0x04, 0x46, 0x00, 0x21, 0x60, 0x2b, + 0x17, 0xd1, 0x02, 0x68, 0x20, 0x23, 0x80, 0xf8, 0x40, 0x10, 0x80, 0xf8, + 0x41, 0x30, 0x01, 0x63, 0x13, 0x68, 0xb0, 0xf9, 0x5a, 0x50, 0x23, 0xf0, + 0xfe, 0x03, 0xb0, 0xf9, 0x58, 0x00, 0x13, 0x60, 0x02, 0xf0, 0xce, 0xfa, + 0x28, 0x46, 0x02, 0xf0, 0xcb, 0xfa, 0x02, 0x23, 0x84, 0xf8, 0x60, 0x30, + 0x38, 0xbd, 0x01, 0x63, 0x04, 0x38, 0x85, 0x6c, 0x80, 0xf8, 0x44, 0x10, + 0x15, 0xf0, 0x04, 0x05, 0x18, 0xbf, 0x14, 0x25, 0xff, 0xf7, 0x90, 0xfc, + 0x45, 0xf0, 0x02, 0x05, 0x84, 0xf8, 0x60, 0x50, 0xee, 0xe7, 0x80, 0x6b, + 0x83, 0x6b, 0x0b, 0xb1, 0x00, 0x22, 0x1a, 0x65, 0xc3, 0x6b, 0x0b, 0xb1, + 0x00, 0x22, 0x1a, 0x65, 0xff, 0xf7, 0xc6, 0xbf, 0x70, 0xb5, 0x3c, 0x4a, 0x00, 0x25, 0x90, 0xf8, 0x41, 0x30, 0x04, 0x46, 0x80, 0xf8, 0x42, 0x50, 0x28, 0x3b, 0xc2, 0x62, 0x45, 0x85, 0x42, 0x6c, 0x02, 0x2b, 0x41, 0xea, - 0x02, 0x01, 0x41, 0x64, 0x2b, 0xd8, 0x03, 0x21, 0xf9, 0xf7, 0x3e, 0xfb, + 0x02, 0x01, 0x41, 0x64, 0x2b, 0xd8, 0x03, 0x21, 0xfa, 0xf7, 0x28, 0xf9, 0x28, 0x23, 0x80, 0xf8, 0x41, 0x30, 0x32, 0x4b, 0xa0, 0x6b, 0x63, 0x63, 0x23, 0x6b, 0x00, 0x28, 0x36, 0xd0, 0x11, 0x2b, 0x01, 0xd0, 0x21, 0x2b, 0x32, 0xd1, 0x23, 0x68, 0x1a, 0x68, 0x51, 0x04, 0x03, 0xd5, 0x1a, 0x68, @@ -2548,23 +2278,23 @@ const unsigned char mcuboot_bin[] = { 0x21, 0xd0, 0x28, 0x4b, 0x03, 0x65, 0x00, 0x23, 0x84, 0xf8, 0x40, 0x30, 0x90, 0xf8, 0x35, 0x30, 0x02, 0x2b, 0x13, 0xd0, 0x80, 0x23, 0x43, 0x65, 0xa0, 0x6b, 0x03, 0x6d, 0xbd, 0xe8, 0x70, 0x40, 0x18, 0x47, 0x48, 0xf2, - 0x03, 0x01, 0xf9, 0xf7, 0x11, 0xfb, 0x90, 0xf8, 0x41, 0x30, 0x60, 0x2b, + 0x03, 0x01, 0xfa, 0xf7, 0xfb, 0xf8, 0x90, 0xf8, 0x41, 0x30, 0x60, 0x2b, 0x02, 0xd0, 0x20, 0x23, 0x80, 0xf8, 0x41, 0x30, 0x00, 0x23, 0xcd, 0xe7, - 0x01, 0xf0, 0x0a, 0xfe, 0x00, 0x28, 0xe9, 0xd1, 0x70, 0xbd, 0x20, 0x46, - 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0xb6, 0xbb, 0xe0, 0x6b, 0x00, 0x28, + 0x02, 0xf0, 0xb6, 0xf9, 0x00, 0x28, 0xe9, 0xd1, 0x70, 0xbd, 0x20, 0x46, + 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0x72, 0xbf, 0xe0, 0x6b, 0x00, 0x28, 0xf7, 0xd0, 0x12, 0x2b, 0x01, 0xd0, 0x22, 0x2b, 0xf3, 0xd1, 0x23, 0x68, 0x1a, 0x68, 0x12, 0x04, 0x03, 0xd5, 0x1a, 0x68, 0x22, 0xf4, 0x00, 0x42, 0x1a, 0x60, 0x90, 0xf8, 0x35, 0x30, 0x01, 0x2b, 0xe7, 0xd0, 0x0b, 0x4b, 0x03, 0x65, 0x00, 0x23, 0x84, 0xf8, 0x40, 0x30, 0x90, 0xf8, 0x35, 0x30, 0x02, 0x2b, 0x03, 0xd0, 0x80, 0x23, 0x43, 0x65, 0xe0, 0x6b, 0xc4, 0xe7, - 0x01, 0xf0, 0xe0, 0xfd, 0x00, 0x28, 0xd5, 0xd0, 0xf8, 0xe7, 0x00, 0xbf, - 0x00, 0x00, 0xff, 0xff, 0xd5, 0x7a, 0x00, 0x08, 0x73, 0x6f, 0x00, 0x08, + 0x02, 0xf0, 0x8c, 0xf9, 0x00, 0x28, 0xd5, 0xd0, 0xf8, 0xe7, 0x00, 0xbf, + 0x00, 0x00, 0xff, 0xff, 0x2d, 0x6e, 0x00, 0x08, 0x43, 0x6a, 0x00, 0x08, 0xf8, 0xb5, 0x03, 0x68, 0x20, 0x22, 0x04, 0x46, 0x0e, 0x46, 0x1f, 0x68, 0x90, 0xf8, 0x41, 0x50, 0xda, 0x61, 0x05, 0xf0, 0xf7, 0x05, 0x21, 0x2d, - 0x70, 0xd1, 0x48, 0xf2, 0x01, 0x01, 0xf9, 0xf7, 0xc1, 0xfa, 0x25, 0x63, + 0x70, 0xd1, 0x48, 0xf2, 0x01, 0x01, 0xfa, 0xf7, 0xab, 0xf8, 0x25, 0x63, 0x23, 0x68, 0x20, 0x46, 0x5a, 0x68, 0x42, 0xf4, 0x00, 0x42, 0x5a, 0x60, 0x5a, 0x68, 0x22, 0xf0, 0xff, 0x72, 0x22, 0xf4, 0x8b, 0x32, 0x22, 0xf4, - 0xff, 0x72, 0x22, 0xf0, 0x01, 0x02, 0x5a, 0x60, 0xff, 0xf7, 0x4e, 0xff, + 0xff, 0x72, 0x22, 0xf0, 0x01, 0x02, 0x5a, 0x60, 0xfa, 0xf7, 0x6c, 0xf9, 0x79, 0x04, 0x5c, 0xd5, 0x22, 0x68, 0x13, 0x68, 0x23, 0xf4, 0x80, 0x43, 0x13, 0x60, 0xa3, 0x6b, 0x13, 0xb3, 0x1b, 0x68, 0x38, 0x4a, 0x93, 0x42, 0x1b, 0xd0, 0x18, 0x32, 0x93, 0x42, 0x18, 0xd0, 0x18, 0x32, 0x93, 0x42, @@ -2579,11 +2309,11 @@ const unsigned char mcuboot_bin[] = { 0x63, 0x6c, 0x43, 0xf0, 0x04, 0x03, 0x63, 0x64, 0x00, 0x23, 0x84, 0xf8, 0x42, 0x30, 0x65, 0x6c, 0x63, 0x63, 0xdd, 0xb1, 0x61, 0x6c, 0x20, 0x46, 0xff, 0xf7, 0x0c, 0xff, 0x94, 0xf8, 0x41, 0x30, 0x28, 0x2b, 0x22, 0xd1, - 0x31, 0x46, 0x20, 0x46, 0xbd, 0xe8, 0xf8, 0x40, 0xf9, 0xf7, 0xa0, 0xba, + 0x31, 0x46, 0x20, 0x46, 0xbd, 0xe8, 0xf8, 0x40, 0xfa, 0xf7, 0x20, 0xb9, 0x22, 0x2d, 0x91, 0xd1, 0x48, 0xf2, 0x02, 0x01, 0x8b, 0xe7, 0x3a, 0x04, 0xca, 0xd5, 0x22, 0x68, 0x13, 0x68, 0x23, 0xf4, 0x00, 0x43, 0x13, 0x60, 0xe3, 0x6b, 0x9f, 0xe7, 0xe3, 0x6a, 0x13, 0xf5, 0x80, 0x3f, 0x0b, 0xd0, - 0x20, 0x46, 0xf9, 0xf7, 0xb9, 0xfa, 0x07, 0x4b, 0xe3, 0x62, 0x20, 0x23, + 0x20, 0x46, 0xfa, 0xf7, 0x39, 0xf9, 0x07, 0x4b, 0xe3, 0x62, 0x20, 0x23, 0x84, 0xf8, 0x40, 0x50, 0x84, 0xf8, 0x41, 0x30, 0x25, 0x63, 0xf8, 0xbd, 0x94, 0xf8, 0x41, 0x30, 0xf5, 0xe7, 0x00, 0xbf, 0x10, 0x00, 0x02, 0x40, 0x00, 0x00, 0xff, 0xff, 0xf8, 0xb5, 0x90, 0xf8, 0x40, 0x30, 0x04, 0x46, @@ -2608,27 +2338,27 @@ const unsigned char mcuboot_bin[] = { 0x02, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0xff, 0xd0, 0x5b, 0x68, 0xb3, 0xfa, 0x83, 0xf3, 0x5b, 0x09, 0x0b, 0xb9, 0x01, 0x2a, 0x1f, 0xd1, 0x94, 0xf8, 0x41, 0x30, 0x28, 0x2b, 0x0a, 0xd1, 0xb7, 0xf1, 0x00, 0x7f, 0x07, 0xd1, - 0x31, 0x46, 0x20, 0x46, 0xf9, 0xf7, 0xf4, 0xf9, 0x00, 0x20, 0x84, 0xf8, + 0x31, 0x46, 0x20, 0x46, 0xfa, 0xf7, 0x74, 0xf8, 0x00, 0x20, 0x84, 0xf8, 0x40, 0x00, 0xf8, 0xbd, 0x94, 0xf8, 0x41, 0x20, 0x23, 0x68, 0x29, 0x2a, 0x4f, 0xf0, 0x10, 0x02, 0xda, 0x61, 0xf3, 0xd1, 0x17, 0xf5, 0x80, 0x3f, - 0xf0, 0xd0, 0x20, 0x46, 0xff, 0xf7, 0x36, 0xfe, 0xf9, 0xf7, 0x0e, 0xfa, + 0xf0, 0xd0, 0x20, 0x46, 0xfa, 0xf7, 0x54, 0xf8, 0xfa, 0xf7, 0x8e, 0xf8, 0xea, 0xe7, 0x23, 0x68, 0x10, 0x22, 0xda, 0x61, 0x37, 0xf0, 0x80, 0x72, 0x63, 0x6c, 0x43, 0xf0, 0x04, 0x03, 0x63, 0x64, 0x94, 0xf8, 0x41, 0x30, 0xdb, 0xb2, 0xdd, 0xd1, 0x03, 0xf0, 0xf7, 0x03, 0x21, 0x2b, 0x01, 0xd1, 0x23, 0x63, 0x01, 0xe0, 0x22, 0x2b, 0xfb, 0xd0, 0x61, 0x6c, 0x20, 0x46, 0xff, 0xf7, 0x28, 0xfe, 0xd0, 0xe7, 0x23, 0x68, 0x10, 0x22, 0xda, 0x61, 0xcc, 0xe7, 0x32, 0x07, 0xca, 0xd5, 0x2b, 0x07, 0xc8, 0xd5, 0x20, 0x46, - 0xf9, 0xf7, 0x8f, 0xf9, 0xc4, 0xe7, 0x02, 0x20, 0xc5, 0xe7, 0x00, 0xbf, + 0xf9, 0xf7, 0x79, 0xff, 0xc4, 0xe7, 0x02, 0x20, 0xc5, 0xe7, 0x00, 0xbf, 0x10, 0x00, 0x02, 0x40, 0xf8, 0xb5, 0x90, 0xf8, 0x40, 0x30, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x01, 0x2b, 0xc7, 0x6a, 0x7d, 0xd0, 0x01, 0x23, 0x8a, 0x06, 0x80, 0xf8, 0x40, 0x30, 0x03, 0xd5, 0xb3, 0x06, 0x01, 0xd5, 0xff, 0xf7, 0x84, 0xfe, 0xe8, 0x06, 0x34, 0xd5, 0xf1, 0x06, 0x32, 0xd5, 0x63, 0x8d, 0x9b, 0xb2, 0x03, 0xbb, 0x94, 0xf8, 0x41, 0x30, 0x28, 0x2b, 0x0a, 0xd1, 0xb7, 0xf1, 0x00, 0x7f, 0x07, 0xd1, 0x29, 0x46, 0x20, 0x46, - 0xf9, 0xf7, 0x90, 0xf9, 0x00, 0x20, 0x84, 0xf8, 0x40, 0x00, 0xf8, 0xbd, + 0xfa, 0xf7, 0x10, 0xf8, 0x00, 0x20, 0x84, 0xf8, 0x40, 0x00, 0xf8, 0xbd, 0x94, 0xf8, 0x41, 0x20, 0x23, 0x68, 0x29, 0x2a, 0x4f, 0xf0, 0x10, 0x02, 0xda, 0x61, 0xf3, 0xd1, 0x17, 0xf5, 0x80, 0x3f, 0xf0, 0xd0, 0x20, 0x46, - 0xff, 0xf7, 0xd2, 0xfd, 0x20, 0x46, 0xf9, 0xf7, 0xa9, 0xf9, 0xe9, 0xe7, + 0xf9, 0xf7, 0xf0, 0xff, 0x20, 0x46, 0xfa, 0xf7, 0x29, 0xf8, 0xe9, 0xe7, 0x23, 0x68, 0x10, 0x22, 0xda, 0x61, 0x63, 0x6c, 0x43, 0xf0, 0x04, 0x03, 0x63, 0x64, 0x37, 0xf0, 0x80, 0x73, 0xdf, 0xd1, 0x61, 0x6c, 0x20, 0x46, 0xff, 0xf7, 0xce, 0xfd, 0xda, 0xe7, 0x6a, 0x07, 0x1a, 0xd5, 0x73, 0x07, @@ -2637,66 +2367,225 @@ const unsigned char mcuboot_bin[] = { 0x01, 0x3b, 0x23, 0x85, 0x63, 0x8d, 0x01, 0x3b, 0x9b, 0xb2, 0x63, 0x85, 0x63, 0x8d, 0x9b, 0xb2, 0x00, 0x2b, 0xc1, 0xd1, 0x17, 0xf5, 0x80, 0x3f, 0xbe, 0xd0, 0xcf, 0xe7, 0x28, 0x07, 0x05, 0xd5, 0x31, 0x07, 0x03, 0xd5, - 0x20, 0x46, 0xf9, 0xf7, 0x1c, 0xf9, 0xb5, 0xe7, 0xaa, 0x07, 0xb3, 0xd5, + 0x20, 0x46, 0xf9, 0xf7, 0x06, 0xff, 0xb5, 0xe7, 0xaa, 0x07, 0xb3, 0xd5, 0xb3, 0x07, 0xb1, 0xd5, 0x63, 0x8d, 0x9b, 0xb2, 0x6b, 0xb1, 0x63, 0x6a, 0x22, 0x68, 0x13, 0xf8, 0x01, 0x1b, 0x91, 0x62, 0x63, 0x62, 0x63, 0x8d, 0x01, 0x3b, 0x9b, 0xb2, 0x63, 0x85, 0x23, 0x8d, 0x01, 0x3b, 0x23, 0x85, 0xa0, 0xe7, 0x37, 0xf0, 0x80, 0x73, 0xaf, 0xd0, 0x9c, 0xe7, 0x02, 0x20, 0x9d, 0xe7, 0x37, 0xb5, 0x03, 0x68, 0x20, 0x22, 0x04, 0x46, 0x0d, 0x46, 0xda, 0x61, 0x90, 0xf8, 0x41, 0x30, 0x21, 0x2b, 0x37, 0xd1, 0x01, 0x21, - 0xf9, 0xf7, 0xd2, 0xf8, 0x11, 0x23, 0x23, 0x63, 0x23, 0x68, 0xe9, 0x06, + 0xf9, 0xf7, 0xbc, 0xfe, 0x11, 0x23, 0x23, 0x63, 0x23, 0x68, 0xe9, 0x06, 0x5a, 0x68, 0x22, 0xf0, 0xff, 0x72, 0x22, 0xf4, 0x8b, 0x32, 0x22, 0xf4, 0xff, 0x72, 0x22, 0xf0, 0x01, 0x02, 0x5a, 0x60, 0x4f, 0xf0, 0x00, 0x02, 0x62, 0x63, 0xa2, 0xf5, 0x80, 0x32, 0xe2, 0x62, 0x05, 0xd5, 0x10, 0x22, 0xda, 0x61, 0x62, 0x6c, 0x42, 0xf0, 0x04, 0x02, 0x62, 0x64, 0x94, 0xf8, 0x41, 0x20, 0x60, 0x2a, 0x05, 0xd1, 0x6a, 0x07, 0x03, 0xd5, 0x5b, 0x6a, - 0xdb, 0xb2, 0x01, 0x93, 0x01, 0x9b, 0x20, 0x46, 0xff, 0xf7, 0x4a, 0xfd, + 0xdb, 0xb2, 0x01, 0x93, 0x01, 0x9b, 0x20, 0x46, 0xf9, 0xf7, 0x68, 0xff, 0x63, 0x6c, 0x94, 0xf8, 0x41, 0x20, 0x60, 0x2a, 0x00, 0xd0, 0x7b, 0xb1, 0x61, 0x6c, 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0x30, 0x40, 0xff, 0xf7, 0x4b, 0xbd, 0x90, 0xf8, 0x41, 0x30, 0x22, 0x2b, 0xc8, 0xd1, 0x02, 0x21, - 0xf9, 0xf7, 0x96, 0xf8, 0x12, 0x23, 0xc2, 0xe7, 0x94, 0xf8, 0x41, 0x20, + 0xf9, 0xf7, 0x80, 0xfe, 0x12, 0x23, 0xc2, 0xe7, 0x94, 0xf8, 0x41, 0x20, 0x21, 0x2a, 0x12, 0xd1, 0x20, 0x22, 0x84, 0xf8, 0x40, 0x30, 0x84, 0xf8, 0x41, 0x20, 0x23, 0x63, 0x94, 0xf8, 0x42, 0x20, 0x84, 0xf8, 0x42, 0x30, 0x40, 0x2a, 0x01, 0xd1, 0x03, 0xb0, 0x30, 0xbd, 0x03, 0xb0, 0xbd, 0xe8, - 0x30, 0x40, 0xff, 0xf7, 0xa9, 0xbc, 0x94, 0xf8, 0x41, 0x20, 0x22, 0x2a, + 0x30, 0x40, 0xf9, 0xf7, 0xc7, 0xbe, 0x94, 0xf8, 0x41, 0x20, 0x22, 0x2a, 0xf4, 0xd1, 0x20, 0x22, 0x84, 0xf8, 0x40, 0x30, 0x84, 0xf8, 0x41, 0x20, 0x23, 0x63, 0x94, 0xf8, 0x42, 0x20, 0x84, 0xf8, 0x42, 0x30, 0x40, 0x2a, - 0xe8, 0xd0, 0x08, 0x23, 0x84, 0xf8, 0x60, 0x30, 0xe4, 0xe7, 0x38, 0xb5, - 0x00, 0x25, 0x80, 0xf8, 0x42, 0x50, 0x90, 0xf8, 0x41, 0x30, 0x21, 0x2b, - 0x4f, 0xf0, 0x20, 0x03, 0x80, 0xf8, 0x41, 0x30, 0x0b, 0xd1, 0x11, 0x23, - 0x45, 0x63, 0x01, 0x21, 0x03, 0x63, 0xf9, 0xf7, 0x57, 0xf8, 0x80, 0xf8, - 0x40, 0x50, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0x7d, 0xbc, 0x12, 0x23, - 0x02, 0x21, 0x45, 0x63, 0x03, 0x63, 0xf9, 0xf7, 0x4b, 0xf8, 0x08, 0x23, - 0x80, 0xf8, 0x40, 0x50, 0x80, 0xf8, 0x60, 0x30, 0x38, 0xbd, 0x00, 0x00, + 0xe8, 0xd0, 0x08, 0x23, 0x84, 0xf8, 0x60, 0x30, 0xe4, 0xe7, 0x73, 0xb5, + 0x90, 0xf8, 0x40, 0x30, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x01, 0x2b, + 0x00, 0xf0, 0x86, 0x80, 0x01, 0x23, 0xca, 0x06, 0x80, 0xf8, 0x40, 0x30, + 0x17, 0xd5, 0xf3, 0x06, 0x15, 0xd5, 0x03, 0x68, 0x10, 0x22, 0xda, 0x61, + 0x43, 0x6c, 0x43, 0xf0, 0x04, 0x03, 0x43, 0x64, 0xf9, 0xf7, 0x0e, 0xff, + 0xaa, 0x06, 0x05, 0xd5, 0xb3, 0x06, 0x03, 0xd5, 0x29, 0x46, 0x20, 0x46, + 0xff, 0xf7, 0x69, 0xff, 0x00, 0x20, 0x84, 0xf8, 0x40, 0x00, 0x02, 0xb0, + 0x70, 0xbd, 0x68, 0x07, 0x12, 0xd5, 0x71, 0x07, 0x10, 0xd5, 0x23, 0x68, + 0x25, 0xf0, 0x04, 0x05, 0x5a, 0x6a, 0x63, 0x6a, 0x1a, 0x70, 0x63, 0x6a, + 0x01, 0x33, 0x63, 0x62, 0x23, 0x8d, 0x01, 0x3b, 0x23, 0x85, 0x63, 0x8d, + 0x01, 0x3b, 0x9b, 0xb2, 0x63, 0x85, 0xdd, 0xe7, 0xaa, 0x07, 0x07, 0xd5, + 0xb3, 0x07, 0x05, 0xd5, 0x63, 0x6a, 0x22, 0x68, 0x13, 0xf8, 0x01, 0x1b, + 0x91, 0x62, 0xec, 0xe7, 0x28, 0x06, 0x32, 0xd5, 0x71, 0x06, 0x30, 0xd5, + 0x63, 0x8d, 0x22, 0x68, 0x9b, 0xb2, 0x03, 0xb3, 0x20, 0x8d, 0xf0, 0xb9, + 0x51, 0x68, 0x63, 0x8d, 0xc1, 0xf3, 0x09, 0x01, 0x9b, 0xb2, 0xff, 0x2b, + 0x08, 0xd9, 0xff, 0x22, 0x4f, 0xf0, 0x80, 0x73, 0x00, 0x90, 0x22, 0x85, + 0x20, 0x46, 0xf9, 0xf7, 0x41, 0xfe, 0xb9, 0xe7, 0x62, 0x8d, 0xe3, 0x6a, + 0x92, 0xb2, 0x13, 0xf5, 0x80, 0x3f, 0x22, 0x85, 0xd2, 0xb2, 0x02, 0xd0, + 0xe3, 0x6a, 0x00, 0x90, 0xf0, 0xe7, 0x4f, 0xf0, 0x00, 0x73, 0x00, 0x90, + 0xec, 0xe7, 0x53, 0x68, 0x9a, 0x01, 0x03, 0xd4, 0x20, 0x46, 0xf9, 0xf7, + 0x1c, 0xff, 0xa3, 0xe7, 0x40, 0x21, 0x20, 0x46, 0xff, 0xf7, 0x9e, 0xfc, + 0x9e, 0xe7, 0x6b, 0x06, 0x9c, 0xd5, 0x70, 0x06, 0x9a, 0xd5, 0x63, 0x8d, + 0x9b, 0xb2, 0x00, 0x2b, 0xf2, 0xd1, 0x23, 0x68, 0x5a, 0x68, 0x91, 0x01, + 0x92, 0xd4, 0xe2, 0x6a, 0x12, 0xf5, 0x80, 0x3f, 0xe6, 0xd1, 0x5a, 0x68, + 0x42, 0xf4, 0x80, 0x42, 0x5a, 0x60, 0x89, 0xe7, 0x02, 0x20, 0x92, 0xe7, 0x13, 0xb5, 0x90, 0xf8, 0x40, 0x30, 0x04, 0x46, 0x01, 0x2b, 0x00, 0xf0, 0x87, 0x80, 0x01, 0x23, 0x80, 0xf8, 0x40, 0x30, 0xcb, 0x06, 0x1e, 0xd5, 0xd0, 0x06, 0x1c, 0xd5, 0x10, 0x23, 0x22, 0x68, 0x3f, 0x49, 0xd3, 0x61, 0x63, 0x6c, 0x43, 0xf0, 0x04, 0x03, 0x63, 0x64, 0x63, 0x6b, 0x8b, 0x42, 0x0f, 0xd0, 0x3c, 0x49, 0x8b, 0x42, 0x0c, 0xbf, 0x60, 0x23, 0x20, 0x23, - 0x11, 0x68, 0x20, 0x46, 0x0b, 0x43, 0x13, 0x60, 0xff, 0xf7, 0xc0, 0xfc, + 0x11, 0x68, 0x20, 0x46, 0x0b, 0x43, 0x13, 0x60, 0xf9, 0xf7, 0x72, 0xfe, 0x00, 0x20, 0x84, 0xf8, 0x40, 0x00, 0x02, 0xb0, 0x10, 0xbd, 0x60, 0x23, 0xf2, 0xe7, 0x0b, 0x06, 0x43, 0xd5, 0x50, 0x06, 0x41, 0xd5, 0x23, 0x68, 0x1a, 0x68, 0x22, 0xf0, 0x40, 0x02, 0x1a, 0x60, 0x62, 0x8d, 0x92, 0xb2, 0x6a, 0xb3, 0x59, 0x68, 0x63, 0x8d, 0xc1, 0xf3, 0x09, 0x01, 0x9b, 0xb2, 0xff, 0x2b, 0x1b, 0xd9, 0xff, 0x23, 0x23, 0x85, 0x4f, 0xf0, 0x80, 0x73, - 0x00, 0x22, 0x20, 0x46, 0x00, 0x92, 0x94, 0xf8, 0x28, 0x20, 0xff, 0xf7, - 0xed, 0xfa, 0x63, 0x8d, 0x22, 0x8d, 0x9b, 0x1a, 0x9b, 0xb2, 0x63, 0x85, + 0x00, 0x22, 0x20, 0x46, 0x00, 0x92, 0x94, 0xf8, 0x28, 0x20, 0xf9, 0xf7, + 0xc5, 0xfd, 0x63, 0x8d, 0x22, 0x8d, 0x9b, 0x1a, 0x9b, 0xb2, 0x63, 0x85, 0x94, 0xf8, 0x41, 0x30, 0x22, 0x2b, 0x23, 0x68, 0x1a, 0x68, 0x0c, 0xbf, 0x42, 0xf4, 0x00, 0x42, 0x42, 0xf4, 0x80, 0x42, 0x1a, 0x60, 0xc9, 0xe7, 0x63, 0x8d, 0x23, 0x85, 0xe3, 0x6a, 0x13, 0xf5, 0x80, 0x3f, 0x01, 0xd0, 0xe3, 0x6a, 0xdf, 0xe7, 0x4f, 0xf0, 0x00, 0x73, 0xdc, 0xe7, 0x5b, 0x68, - 0x9a, 0x01, 0x03, 0xd4, 0x20, 0x46, 0xff, 0xf7, 0x70, 0xff, 0xb7, 0xe7, - 0x40, 0x21, 0x20, 0x46, 0xff, 0xf7, 0x82, 0xfc, 0xb2, 0xe7, 0x4b, 0x06, + 0x9a, 0x01, 0x03, 0xd4, 0x20, 0x46, 0xf9, 0xf7, 0x94, 0xfe, 0xb7, 0xe7, + 0x40, 0x21, 0x20, 0x46, 0xff, 0xf7, 0x16, 0xfc, 0xb2, 0xe7, 0x4b, 0x06, 0x12, 0xd5, 0x50, 0x06, 0x10, 0xd5, 0x63, 0x8d, 0x9b, 0xb2, 0x00, 0x2b, 0xf2, 0xd1, 0x23, 0x68, 0x5a, 0x68, 0x92, 0x01, 0xa6, 0xd4, 0xe2, 0x6a, 0x12, 0xf5, 0x80, 0x3f, 0xe6, 0xd1, 0x5a, 0x68, 0x42, 0xf4, 0x80, 0x42, 0x5a, 0x60, 0x9d, 0xe7, 0x88, 0x06, 0x9b, 0xd5, 0x93, 0x06, 0x99, 0xd5, - 0x20, 0x46, 0xff, 0xf7, 0xd8, 0xfe, 0x95, 0xe7, 0x02, 0x20, 0x96, 0xe7, - 0x1d, 0x7d, 0x00, 0x08, 0x49, 0x79, 0x00, 0x08, 0x10, 0xb5, 0x04, 0x46, + 0x20, 0x46, 0xff, 0xf7, 0x6c, 0xfe, 0x95, 0xe7, 0x02, 0x20, 0x96, 0xe7, + 0x4d, 0x71, 0x00, 0x08, 0xa1, 0x6c, 0x00, 0x08, 0x03, 0x68, 0x99, 0x69, + 0x1a, 0x68, 0x10, 0xb4, 0xcc, 0x05, 0x08, 0xd5, 0x14, 0x06, 0x06, 0xd5, + 0x44, 0x6c, 0x44, 0xf0, 0x01, 0x04, 0x44, 0x64, 0x4f, 0xf4, 0x80, 0x74, + 0xdc, 0x61, 0x4c, 0x05, 0x08, 0xd5, 0x14, 0x06, 0x06, 0xd5, 0x44, 0x6c, + 0x44, 0xf0, 0x08, 0x04, 0x44, 0x64, 0x4f, 0xf4, 0x80, 0x64, 0xdc, 0x61, + 0x89, 0x05, 0x08, 0xd5, 0x12, 0x06, 0x06, 0xd5, 0x42, 0x6c, 0x42, 0xf0, + 0x02, 0x02, 0x42, 0x64, 0x4f, 0xf4, 0x00, 0x72, 0xda, 0x61, 0x41, 0x6c, + 0x11, 0xf0, 0x0b, 0x0f, 0x03, 0xd0, 0x5d, 0xf8, 0x04, 0x4b, 0xff, 0xf7, + 0xc5, 0xbb, 0x5d, 0xf8, 0x04, 0x4b, 0x70, 0x47, 0x05, 0x4b, 0x07, 0xb5, + 0x18, 0x68, 0x01, 0x90, 0xf9, 0xf7, 0x59, 0xfe, 0x01, 0x98, 0x03, 0xb0, + 0x5d, 0xf8, 0x04, 0xeb, 0xff, 0xf7, 0xc4, 0xbf, 0x64, 0x0b, 0x02, 0x24, + 0x05, 0x4b, 0x07, 0xb5, 0x58, 0x68, 0x01, 0x90, 0xf9, 0xf7, 0x4b, 0xfe, + 0x01, 0x98, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xeb, 0xff, 0xf7, 0xb6, 0xbf, + 0x64, 0x0b, 0x02, 0x24, 0x05, 0x4b, 0x07, 0xb5, 0x98, 0x68, 0x01, 0x90, + 0xf9, 0xf7, 0x3d, 0xfe, 0x01, 0x98, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xeb, + 0xff, 0xf7, 0xa8, 0xbf, 0x64, 0x0b, 0x02, 0x24, 0x05, 0x4b, 0x07, 0xb5, + 0xd8, 0x68, 0x01, 0x90, 0xf9, 0xf7, 0x2f, 0xfe, 0x01, 0x98, 0x03, 0xb0, + 0x5d, 0xf8, 0x04, 0xeb, 0xff, 0xf7, 0x9a, 0xbf, 0x64, 0x0b, 0x02, 0x24, + 0x85, 0x4a, 0x13, 0x68, 0x03, 0xf0, 0x0f, 0x03, 0x8b, 0x42, 0x2d, 0xe9, + 0xf0, 0x41, 0x04, 0x46, 0x0d, 0x46, 0xc0, 0xf0, 0x88, 0x80, 0x23, 0x68, + 0x5f, 0x07, 0x00, 0xf1, 0x92, 0x80, 0x1e, 0x07, 0x0b, 0xd5, 0x7e, 0x49, + 0x66, 0x69, 0xc8, 0x69, 0x00, 0xf0, 0x70, 0x00, 0x86, 0x42, 0x04, 0xd9, + 0xca, 0x69, 0x22, 0xf0, 0x70, 0x02, 0x32, 0x43, 0xca, 0x61, 0xd8, 0x06, + 0x0b, 0xd5, 0x77, 0x49, 0xa6, 0x69, 0xc8, 0x69, 0x00, 0xf4, 0xe0, 0x60, + 0x86, 0x42, 0x04, 0xd9, 0xca, 0x69, 0x22, 0xf4, 0xe0, 0x62, 0x32, 0x43, + 0xca, 0x61, 0x99, 0x06, 0x0b, 0xd5, 0x70, 0x49, 0xe6, 0x69, 0x08, 0x6a, + 0x00, 0xf0, 0x70, 0x00, 0x86, 0x42, 0x04, 0xd9, 0x0a, 0x6a, 0x22, 0xf0, + 0x70, 0x02, 0x32, 0x43, 0x0a, 0x62, 0x9a, 0x07, 0x0b, 0xd5, 0x69, 0x49, + 0xe6, 0x68, 0x88, 0x69, 0x00, 0xf0, 0x0f, 0x00, 0x86, 0x42, 0x04, 0xd9, + 0x8a, 0x69, 0x22, 0xf0, 0x0f, 0x02, 0x32, 0x43, 0x8a, 0x61, 0xdf, 0x07, + 0x65, 0xd4, 0x23, 0x68, 0x9e, 0x07, 0x00, 0xf1, 0x97, 0x80, 0x5f, 0x49, + 0x0a, 0x68, 0x02, 0xf0, 0x0f, 0x02, 0x95, 0x42, 0xc0, 0xf0, 0x9e, 0x80, + 0x58, 0x07, 0x00, 0xf1, 0xa6, 0x80, 0x19, 0x07, 0x0b, 0xd5, 0x5a, 0x49, + 0x65, 0x69, 0xc8, 0x69, 0x00, 0xf0, 0x70, 0x00, 0x85, 0x42, 0x04, 0xd2, + 0xca, 0x69, 0x22, 0xf0, 0x70, 0x02, 0x2a, 0x43, 0xca, 0x61, 0xda, 0x06, + 0x0b, 0xd5, 0x53, 0x49, 0xa5, 0x69, 0xc8, 0x69, 0x00, 0xf4, 0xe0, 0x60, + 0x85, 0x42, 0x04, 0xd2, 0xca, 0x69, 0x22, 0xf4, 0xe0, 0x62, 0x2a, 0x43, + 0xca, 0x61, 0x9b, 0x06, 0x0b, 0xd5, 0x4c, 0x4a, 0xe0, 0x69, 0x11, 0x6a, + 0x01, 0xf0, 0x70, 0x01, 0x88, 0x42, 0x04, 0xd2, 0x13, 0x6a, 0x23, 0xf0, + 0x70, 0x03, 0x03, 0x43, 0x13, 0x62, 0xfe, 0xf7, 0xe5, 0xfa, 0x45, 0x4a, + 0x93, 0x69, 0x92, 0x69, 0xc3, 0xf3, 0x03, 0x23, 0x43, 0x4a, 0xd3, 0x5c, + 0x03, 0xf0, 0x1f, 0x03, 0xd8, 0x40, 0x42, 0x4b, 0x18, 0x60, 0xfe, 0xf7, + 0xdb, 0xfe, 0x00, 0x20, 0x0b, 0xe0, 0x13, 0x68, 0x23, 0xf0, 0x0f, 0x03, + 0x0b, 0x43, 0x13, 0x60, 0x13, 0x68, 0x03, 0xf0, 0x0f, 0x03, 0x8b, 0x42, + 0x3f, 0xf4, 0x6d, 0xaf, 0x01, 0x20, 0xbd, 0xe8, 0xf0, 0x81, 0x36, 0x49, + 0x26, 0x69, 0x88, 0x69, 0x00, 0xf0, 0x70, 0x00, 0x86, 0x42, 0x7f, 0xf6, + 0x66, 0xaf, 0x8a, 0x69, 0x22, 0xf0, 0x70, 0x02, 0x32, 0x43, 0x8a, 0x61, + 0x5f, 0xe7, 0x2f, 0x4b, 0xa1, 0x68, 0x9a, 0x69, 0x22, 0xf4, 0x70, 0x62, + 0x0a, 0x43, 0x9a, 0x61, 0x62, 0x68, 0x1b, 0x68, 0x02, 0x2a, 0x1c, 0xd1, + 0x13, 0xf4, 0x00, 0x3f, 0xe0, 0xd0, 0x28, 0x4e, 0x41, 0xf2, 0x88, 0x38, + 0x33, 0x69, 0x23, 0xf0, 0x07, 0x03, 0x13, 0x43, 0x33, 0x61, 0xfc, 0xf7, + 0xe3, 0xfe, 0x07, 0x46, 0x33, 0x69, 0x62, 0x68, 0x03, 0xf0, 0x38, 0x03, + 0xb3, 0xeb, 0xc2, 0x0f, 0x3f, 0xf4, 0x79, 0xaf, 0xfc, 0xf7, 0xd8, 0xfe, + 0xc0, 0x1b, 0x40, 0x45, 0xf2, 0xd9, 0x03, 0x20, 0xc7, 0xe7, 0x03, 0x2a, + 0x02, 0xd1, 0x13, 0xf0, 0x00, 0x7f, 0xdf, 0xe7, 0x01, 0x2a, 0x02, 0xd1, + 0x13, 0xf4, 0x80, 0x7f, 0xda, 0xe7, 0x13, 0xf0, 0x04, 0x0f, 0xd7, 0xe7, + 0x14, 0x49, 0xe6, 0x68, 0x88, 0x69, 0x00, 0xf0, 0x0f, 0x00, 0x86, 0x42, + 0xbf, 0xf4, 0x61, 0xaf, 0x8a, 0x69, 0x22, 0xf0, 0x0f, 0x02, 0x32, 0x43, + 0x8a, 0x61, 0x5a, 0xe7, 0x0a, 0x68, 0x22, 0xf0, 0x0f, 0x02, 0x2a, 0x43, + 0x0a, 0x60, 0x0a, 0x68, 0x02, 0xf0, 0x0f, 0x02, 0x95, 0x42, 0xa1, 0xd1, + 0x56, 0xe7, 0x08, 0x49, 0x25, 0x69, 0x88, 0x69, 0x00, 0xf0, 0x70, 0x00, + 0x85, 0x42, 0xbf, 0xf4, 0x52, 0xaf, 0x8a, 0x69, 0x22, 0xf0, 0x70, 0x02, + 0x2a, 0x43, 0x8a, 0x61, 0x4b, 0xe7, 0x00, 0xbf, 0x00, 0x20, 0x00, 0x52, + 0x00, 0x44, 0x02, 0x58, 0x29, 0xd5, 0x01, 0x08, 0x00, 0x00, 0x00, 0x24, + 0x90, 0xf8, 0xbc, 0x23, 0x03, 0x68, 0x01, 0x2a, 0x21, 0xd0, 0x01, 0x22, + 0x80, 0xf8, 0xbc, 0x23, 0x82, 0x6a, 0x01, 0x2a, 0x06, 0xd1, 0x82, 0x69, + 0x01, 0x2a, 0x03, 0xd0, 0x9a, 0x6b, 0x42, 0xf4, 0x80, 0x32, 0x9a, 0x63, + 0x9a, 0x68, 0x42, 0xf0, 0x01, 0x02, 0x9a, 0x60, 0xd3, 0xf8, 0x00, 0x2e, + 0x22, 0xf0, 0x03, 0x02, 0xc3, 0xf8, 0x00, 0x2e, 0xd3, 0xf8, 0x04, 0x28, + 0x22, 0xf0, 0x02, 0x02, 0xc3, 0xf8, 0x04, 0x28, 0x00, 0x23, 0x80, 0xf8, + 0xbc, 0x33, 0x18, 0x46, 0x70, 0x47, 0x02, 0x20, 0x70, 0x47, 0x00, 0x00, + 0x2d, 0xe9, 0xf7, 0x4f, 0x00, 0x23, 0xdf, 0xf8, 0xbc, 0x81, 0xdf, 0xf8, + 0xbc, 0xc1, 0x4f, 0xf0, 0xb0, 0x49, 0x0a, 0x68, 0x32, 0xfa, 0x03, 0xf4, + 0x02, 0xd1, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x27, 0x9f, 0x40, + 0x3a, 0x40, 0x00, 0xf0, 0xb6, 0x80, 0x4c, 0x68, 0x4f, 0xea, 0x43, 0x0e, + 0x03, 0x25, 0x24, 0xf0, 0x10, 0x0a, 0x05, 0xfa, 0x0e, 0xf5, 0x0a, 0xf1, + 0xff, 0x36, 0xed, 0x43, 0x01, 0x2e, 0x10, 0xd8, 0x86, 0x68, 0x06, 0xea, + 0x05, 0x0b, 0xce, 0x68, 0x06, 0xfa, 0x0e, 0xf6, 0x46, 0xea, 0x0b, 0x06, + 0x86, 0x60, 0x46, 0x68, 0x26, 0xea, 0x07, 0x07, 0xc4, 0xf3, 0x00, 0x16, + 0x9e, 0x40, 0x37, 0x43, 0x47, 0x60, 0xc7, 0x68, 0xba, 0xf1, 0x02, 0x0f, + 0x8e, 0x68, 0x07, 0xea, 0x05, 0x07, 0x06, 0xfa, 0x0e, 0xf6, 0x46, 0xea, + 0x07, 0x06, 0xc6, 0x60, 0x14, 0xd1, 0x4f, 0xea, 0xd3, 0x0a, 0x03, 0xf0, + 0x07, 0x0b, 0x0f, 0x27, 0x00, 0xeb, 0x8a, 0x0a, 0x4f, 0xea, 0x8b, 0x0b, + 0xda, 0xf8, 0x20, 0x60, 0x07, 0xfa, 0x0b, 0xf7, 0x26, 0xea, 0x07, 0x07, + 0x0e, 0x69, 0x06, 0xfa, 0x0b, 0xf6, 0x3e, 0x43, 0xca, 0xf8, 0x20, 0x60, + 0x06, 0x68, 0x35, 0x40, 0x04, 0xf0, 0x03, 0x06, 0x06, 0xfa, 0x0e, 0xfe, + 0x4e, 0xea, 0x05, 0x05, 0x05, 0x60, 0xe5, 0x00, 0x6b, 0xd5, 0xd8, 0xf8, + 0xf4, 0x50, 0x23, 0xf0, 0x03, 0x06, 0x03, 0xf0, 0x03, 0x07, 0x4f, 0xf0, + 0x0f, 0x0e, 0x45, 0xf0, 0x02, 0x05, 0x06, 0xf1, 0xb0, 0x46, 0xbf, 0x00, + 0xc8, 0xf8, 0xf4, 0x50, 0x06, 0xf5, 0x80, 0x66, 0xd8, 0xf8, 0xf4, 0x50, + 0x05, 0xf0, 0x02, 0x05, 0x01, 0x95, 0x01, 0x9d, 0x0e, 0xfa, 0x07, 0xf5, + 0xd6, 0xf8, 0x08, 0xa0, 0x2a, 0xea, 0x05, 0x0e, 0x31, 0x4d, 0xa8, 0x42, + 0x4d, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, 0x4b, 0xd0, 0x05, 0xf5, + 0x80, 0x65, 0xa8, 0x42, 0x49, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, + 0x47, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, 0x45, 0xd0, 0x05, 0xf5, + 0x80, 0x65, 0xa8, 0x42, 0x43, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, + 0x41, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, 0x3f, 0xd0, 0x05, 0xf5, + 0x80, 0x65, 0xa8, 0x42, 0x3d, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, + 0x0c, 0xbf, 0x09, 0x25, 0x0a, 0x25, 0xbd, 0x40, 0xe7, 0x03, 0x45, 0xea, + 0x0e, 0x05, 0xb5, 0x60, 0x6f, 0xea, 0x02, 0x06, 0xdc, 0xf8, 0x00, 0x50, + 0x54, 0xbf, 0x35, 0x40, 0x15, 0x43, 0xa7, 0x03, 0xcc, 0xf8, 0x00, 0x50, + 0xdc, 0xf8, 0x04, 0x50, 0x54, 0xbf, 0x35, 0x40, 0x15, 0x43, 0xe7, 0x02, + 0x4f, 0xf0, 0xb0, 0x47, 0xcc, 0xf8, 0x04, 0x50, 0xd9, 0xf8, 0x00, 0x50, + 0x54, 0xbf, 0x35, 0x40, 0x15, 0x43, 0xa4, 0x02, 0x3d, 0x60, 0x7d, 0x68, + 0x54, 0xbf, 0x35, 0x40, 0x15, 0x43, 0xc9, 0xf8, 0x04, 0x50, 0x01, 0x33, + 0x3b, 0xe7, 0x00, 0x25, 0xd5, 0xe7, 0x01, 0x25, 0xd3, 0xe7, 0x02, 0x25, + 0xd1, 0xe7, 0x03, 0x25, 0xcf, 0xe7, 0x04, 0x25, 0xcd, 0xe7, 0x05, 0x25, + 0xcb, 0xe7, 0x06, 0x25, 0xc9, 0xe7, 0x07, 0x25, 0xc7, 0xe7, 0x08, 0x25, + 0xc5, 0xe7, 0x00, 0xbf, 0x00, 0x00, 0x02, 0x58, 0x00, 0x44, 0x02, 0x58, + 0x80, 0x00, 0x00, 0x58, 0xf0, 0xb5, 0xa5, 0xb0, 0x20, 0x22, 0x00, 0x21, + 0x04, 0x46, 0x09, 0xa8, 0x13, 0xf0, 0x78, 0xfe, 0x4c, 0x22, 0x00, 0x21, + 0x11, 0xa8, 0x13, 0xf0, 0x73, 0xfe, 0x56, 0x4b, 0x9b, 0x6a, 0x03, 0xf0, + 0x03, 0x03, 0x02, 0x2b, 0x34, 0xd0, 0x53, 0x4b, 0x02, 0x27, 0x53, 0x4e, + 0x00, 0x25, 0xd3, 0xf8, 0xe0, 0x20, 0x04, 0xa9, 0x30, 0x46, 0x42, 0xf0, + 0x80, 0x02, 0xc3, 0xf8, 0xe0, 0x20, 0xd3, 0xf8, 0xe0, 0x30, 0x07, 0x95, + 0x03, 0xf0, 0x80, 0x03, 0x03, 0x93, 0x03, 0x9b, 0x01, 0x23, 0xcd, 0xe9, + 0x04, 0x73, 0x06, 0x93, 0xff, 0xf7, 0xee, 0xfe, 0x0a, 0x20, 0x01, 0xf0, + 0xf7, 0xfb, 0xb7, 0x61, 0xfc, 0xf7, 0xfe, 0xfd, 0x45, 0x4b, 0xf4, 0xb9, + 0x01, 0x94, 0xda, 0x6a, 0x22, 0xf0, 0x01, 0x02, 0xda, 0x62, 0xdb, 0x6a, + 0x03, 0xf0, 0x01, 0x03, 0x01, 0x93, 0x41, 0x4b, 0x9a, 0x69, 0x42, 0xf4, + 0x40, 0x42, 0x9a, 0x61, 0x9b, 0x69, 0x03, 0xf4, 0x40, 0x43, 0x01, 0x93, + 0x01, 0x9b, 0x1f, 0xe0, 0x01, 0x21, 0x09, 0xa8, 0xcd, 0xe9, 0x09, 0x11, + 0xff, 0xf7, 0x8e, 0xfd, 0x00, 0x28, 0xc2, 0xd0, 0x00, 0x20, 0x25, 0xb0, + 0xf0, 0xbd, 0x02, 0x95, 0xda, 0x6a, 0x22, 0xf0, 0x01, 0x02, 0xda, 0x62, + 0xdb, 0x6a, 0x33, 0x4a, 0x03, 0xf0, 0x01, 0x03, 0x02, 0x93, 0x93, 0x69, + 0x23, 0xf4, 0x40, 0x43, 0x43, 0xf4, 0x80, 0x43, 0x93, 0x61, 0x93, 0x69, + 0x03, 0xf4, 0x40, 0x43, 0x02, 0x93, 0x02, 0x9b, 0x2b, 0x4a, 0x93, 0x69, + 0x9d, 0x04, 0xfc, 0xd5, 0x21, 0x21, 0x4f, 0xf4, 0xa0, 0x23, 0x05, 0x22, + 0x00, 0x2c, 0x4f, 0xf0, 0x08, 0x05, 0x11, 0xa8, 0x1c, 0x92, 0x0c, 0xbf, + 0xa0, 0x22, 0x28, 0x22, 0x21, 0x95, 0xcd, 0xe9, 0x11, 0x13, 0x01, 0x23, + 0x1d, 0x92, 0x00, 0x22, 0x17, 0x93, 0x02, 0x23, 0x23, 0x92, 0x1e, 0x93, + 0x20, 0x93, 0x22, 0x92, 0xcd, 0xe9, 0x1a, 0x33, 0x0a, 0x23, 0x1f, 0x93, + 0xfc, 0xf7, 0x08, 0xff, 0x01, 0x46, 0x00, 0x28, 0xc2, 0xd1, 0x3f, 0x22, + 0x03, 0x23, 0xcd, 0xe9, 0x09, 0x23, 0x40, 0x23, 0x4f, 0xf4, 0x80, 0x62, + 0xcd, 0xe9, 0x0b, 0x05, 0xcd, 0xe9, 0x0e, 0x32, 0x0d, 0x93, 0x10, 0x93, + 0xe4, 0xb1, 0x09, 0xa8, 0xff, 0xf7, 0x3e, 0xfd, 0x00, 0x28, 0xaf, 0xd1, + 0x0c, 0x4b, 0x01, 0x20, 0x1a, 0x68, 0x42, 0xf0, 0x80, 0x02, 0x1a, 0x60, + 0xd3, 0xf8, 0xf4, 0x20, 0x42, 0xf0, 0x02, 0x02, 0xc3, 0xf8, 0xf4, 0x20, + 0xd3, 0xf8, 0xf4, 0x30, 0x07, 0x4a, 0x03, 0xf0, 0x02, 0x03, 0x00, 0x93, + 0x00, 0x9b, 0x13, 0x6a, 0x43, 0xf0, 0x01, 0x03, 0x13, 0x62, 0x98, 0xe7, + 0x04, 0x21, 0xe0, 0xe7, 0x00, 0x44, 0x02, 0x58, 0x00, 0x1c, 0x02, 0x58, + 0x00, 0x04, 0x00, 0x58, 0x00, 0x48, 0x02, 0x58, 0x10, 0xb5, 0x04, 0x46, 0xef, 0xf3, 0x05, 0x83, 0x13, 0xb1, 0x6f, 0xf0, 0x05, 0x00, 0x10, 0xbd, - 0x0f, 0xf0, 0x30, 0xfd, 0x00, 0x28, 0xf8, 0xd1, 0x20, 0x46, 0x4f, 0xf0, + 0x0f, 0xf0, 0x64, 0xfa, 0x00, 0x28, 0xf8, 0xd1, 0x20, 0x46, 0x4f, 0xf0, 0xff, 0x31, 0xdf, 0xf8, 0x08, 0xc0, 0x00, 0xdf, 0xf3, 0xe7, 0x00, 0xbf, - 0x0d, 0x4d, 0x01, 0x08, 0x00, 0x20, 0x70, 0x47, 0x6f, 0xf0, 0x57, 0x00, + 0x39, 0x40, 0x01, 0x08, 0x00, 0x20, 0x70, 0x47, 0x6f, 0xf0, 0x57, 0x00, 0x70, 0x47, 0x6f, 0xf0, 0x57, 0x00, 0x70, 0x47, 0x03, 0x68, 0x10, 0xb4, 0x9c, 0x6c, 0x00, 0x23, 0xa4, 0x46, 0x1a, 0x46, 0x5d, 0xf8, 0x04, 0x4b, 0x60, 0x47, 0x6f, 0xf0, 0x57, 0x00, 0x70, 0x47, 0x43, 0x68, 0x0a, 0x46, @@ -2720,9 +2609,9 @@ const unsigned char mcuboot_bin[] = { 0x29, 0x68, 0x0e, 0x6b, 0x00, 0xf1, 0x08, 0x01, 0x28, 0x46, 0xb0, 0x47, 0x00, 0xb9, 0x65, 0x60, 0x70, 0xbd, 0x6f, 0xf0, 0x15, 0x00, 0xfb, 0xe7, 0x04, 0x4b, 0x10, 0xb5, 0x03, 0x60, 0x04, 0x46, 0x43, 0x68, 0x0b, 0xb1, - 0xff, 0xf7, 0xce, 0xff, 0x20, 0x46, 0x10, 0xbd, 0xe0, 0xe0, 0x01, 0x08, + 0xff, 0xf7, 0xce, 0xff, 0x20, 0x46, 0x10, 0xbd, 0x20, 0xdb, 0x01, 0x08, 0x03, 0x4b, 0x10, 0xb5, 0x04, 0x46, 0x03, 0x60, 0xff, 0xf7, 0xee, 0xff, - 0x20, 0x46, 0x10, 0xbd, 0x60, 0xe1, 0x01, 0x08, 0x43, 0x68, 0x81, 0x68, + 0x20, 0x46, 0x10, 0xbd, 0xa0, 0xdb, 0x01, 0x08, 0x43, 0x68, 0x81, 0x68, 0x1a, 0x68, 0x18, 0x46, 0x52, 0x6f, 0x10, 0x47, 0x43, 0x68, 0x81, 0x68, 0x1a, 0x68, 0x18, 0x46, 0x12, 0x6f, 0x10, 0x47, 0x43, 0x68, 0x81, 0x68, 0x1a, 0x68, 0x18, 0x46, 0xd2, 0x6e, 0x10, 0x47, 0x43, 0x68, 0x0a, 0x46, @@ -2736,9 +2625,9 @@ const unsigned char mcuboot_bin[] = { 0x28, 0x46, 0xdb, 0x6d, 0x98, 0x47, 0x00, 0xb9, 0x65, 0x60, 0x38, 0xbd, 0x6f, 0xf0, 0x15, 0x00, 0xfb, 0xe7, 0x00, 0x00, 0x04, 0x4b, 0x10, 0xb5, 0x03, 0x60, 0x04, 0x46, 0x43, 0x68, 0x0b, 0xb1, 0xff, 0xf7, 0xcd, 0xff, - 0x20, 0x46, 0x10, 0xbd, 0xb4, 0xe0, 0x01, 0x08, 0x03, 0x4b, 0x10, 0xb5, + 0x20, 0x46, 0x10, 0xbd, 0xf4, 0xda, 0x01, 0x08, 0x03, 0x4b, 0x10, 0xb5, 0x04, 0x46, 0x03, 0x60, 0xff, 0xf7, 0xee, 0xff, 0x20, 0x46, 0x10, 0xbd, - 0x34, 0xe1, 0x01, 0x08, 0x03, 0x68, 0x01, 0x33, 0x03, 0x60, 0x00, 0x20, + 0x74, 0xdb, 0x01, 0x08, 0x03, 0x68, 0x01, 0x33, 0x03, 0x60, 0x00, 0x20, 0x70, 0x47, 0xf7, 0xb5, 0x08, 0x9f, 0x0e, 0x46, 0x04, 0x68, 0x19, 0x46, 0xc0, 0x69, 0x00, 0x23, 0x25, 0x68, 0x00, 0x97, 0x00, 0x27, 0xe0, 0xfb, 0x06, 0x23, 0x20, 0x46, 0x01, 0x97, 0x6d, 0x69, 0xa8, 0x47, 0x03, 0xb0, @@ -2755,522 +2644,528 @@ const unsigned char mcuboot_bin[] = { 0x01, 0x4b, 0x84, 0xea, 0x03, 0x05, 0x05, 0xf0, 0x0f, 0x05, 0x56, 0xf8, 0x25, 0x50, 0x85, 0xea, 0x13, 0x13, 0x83, 0xea, 0x14, 0x14, 0x04, 0xf0, 0x0f, 0x04, 0x56, 0xf8, 0x24, 0x40, 0x84, 0xea, 0x13, 0x13, 0xea, 0xe7, - 0x03, 0x60, 0x70, 0xbd, 0x18, 0xe0, 0x01, 0x08, 0x43, 0x79, 0x82, 0x79, - 0x04, 0x33, 0xc0, 0x79, 0x13, 0x44, 0x18, 0x44, 0x70, 0x47, 0x0b, 0x68, - 0x10, 0xb5, 0x04, 0x68, 0x9c, 0x42, 0x09, 0xd0, 0x40, 0x68, 0x4a, 0x68, - 0x90, 0x42, 0x05, 0xd0, 0x94, 0x42, 0x03, 0xd0, 0x18, 0x1a, 0x18, 0xbf, - 0x01, 0x20, 0x10, 0xbd, 0x00, 0x20, 0xfc, 0xe7, 0x03, 0x68, 0x01, 0x33, - 0x04, 0xd0, 0x40, 0x68, 0x43, 0x1c, 0x58, 0x42, 0x58, 0x41, 0x70, 0x47, - 0x01, 0x20, 0x70, 0x47, 0x03, 0x68, 0x1a, 0x6a, 0xc3, 0x6a, 0xd3, 0x1a, - 0x19, 0x44, 0xb1, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x11, 0x03, 0x6b, - 0x8b, 0x42, 0x10, 0xb5, 0x0b, 0xd9, 0x4c, 0x09, 0xc2, 0x6b, 0x01, 0x23, - 0x01, 0xf0, 0x1f, 0x01, 0x03, 0xfa, 0x01, 0xf1, 0x52, 0xf8, 0x24, 0x30, - 0x0b, 0x43, 0x42, 0xf8, 0x24, 0x30, 0x00, 0x20, 0x10, 0xbd, 0x03, 0x68, - 0x08, 0x46, 0x18, 0x47, 0x03, 0x69, 0x10, 0xb5, 0x04, 0x46, 0x13, 0xb1, - 0x50, 0xf8, 0x04, 0x1b, 0x98, 0x47, 0x20, 0x46, 0x10, 0xbd, 0x38, 0xb5, + 0x03, 0x60, 0x70, 0xbd, 0x58, 0xda, 0x01, 0x08, 0x0b, 0x68, 0x10, 0xb5, + 0x04, 0x68, 0x9c, 0x42, 0x09, 0xd0, 0x40, 0x68, 0x4a, 0x68, 0x90, 0x42, + 0x05, 0xd0, 0x94, 0x42, 0x03, 0xd0, 0x18, 0x1a, 0x18, 0xbf, 0x01, 0x20, + 0x10, 0xbd, 0x00, 0x20, 0xfc, 0xe7, 0x03, 0x68, 0x01, 0x33, 0x04, 0xd0, + 0x40, 0x68, 0x43, 0x1c, 0x58, 0x42, 0x58, 0x41, 0x70, 0x47, 0x01, 0x20, + 0x70, 0x47, 0x03, 0x68, 0x1a, 0x6a, 0xc3, 0x6a, 0xd3, 0x1a, 0x19, 0x44, + 0xb1, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x11, 0x03, 0x6b, 0x8b, 0x42, + 0x10, 0xb5, 0x0b, 0xd9, 0x4c, 0x09, 0xc2, 0x6b, 0x01, 0x23, 0x01, 0xf0, + 0x1f, 0x01, 0x03, 0xfa, 0x01, 0xf1, 0x52, 0xf8, 0x24, 0x30, 0x0b, 0x43, + 0x42, 0xf8, 0x24, 0x30, 0x00, 0x20, 0x10, 0xbd, 0x03, 0x68, 0x08, 0x46, + 0x18, 0x47, 0x03, 0x69, 0x10, 0xb5, 0x04, 0x46, 0x13, 0xb1, 0x50, 0xf8, + 0x04, 0x1b, 0x98, 0x47, 0x20, 0x46, 0x10, 0xbd, 0x38, 0xb5, 0x03, 0x68, + 0x04, 0x46, 0x0d, 0x46, 0x9b, 0x6f, 0x98, 0x47, 0x23, 0x68, 0x2d, 0x69, + 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x28, 0x46, 0x38, 0xbd, 0x38, 0xb5, 0x03, 0x68, 0x04, 0x46, 0x0d, 0x46, 0x9b, 0x6f, 0x98, 0x47, 0x23, 0x68, - 0x2d, 0x69, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x28, 0x46, 0x38, 0xbd, + 0xed, 0x68, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x28, 0x46, 0x38, 0xbd, 0x38, 0xb5, 0x03, 0x68, 0x04, 0x46, 0x0d, 0x46, 0x9b, 0x6f, 0x98, 0x47, - 0x23, 0x68, 0xed, 0x68, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x28, 0x46, - 0x38, 0xbd, 0x38, 0xb5, 0x03, 0x68, 0x04, 0x46, 0x0d, 0x46, 0x9b, 0x6f, - 0x98, 0x47, 0x23, 0x68, 0x6d, 0x69, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, - 0x28, 0x46, 0x38, 0xbd, 0x03, 0x68, 0x01, 0x22, 0xd3, 0xf8, 0x80, 0x30, - 0x18, 0x47, 0x00, 0x00, 0x08, 0xb5, 0x06, 0x4b, 0x53, 0xf8, 0x20, 0x00, - 0x03, 0x68, 0xdb, 0x6a, 0x98, 0x47, 0x80, 0xb2, 0xb0, 0xf5, 0x00, 0x7f, - 0x38, 0xbf, 0x4f, 0xf4, 0x00, 0x70, 0x08, 0xbd, 0x54, 0x74, 0x00, 0x24, - 0x2d, 0xe9, 0xff, 0x47, 0x16, 0x46, 0x1c, 0x46, 0x80, 0x46, 0xdf, 0xf8, - 0x44, 0x90, 0x03, 0x91, 0xff, 0xf7, 0xe6, 0xff, 0xa0, 0xfb, 0x06, 0x67, - 0xa0, 0xfb, 0x04, 0x45, 0x59, 0xf8, 0x28, 0x00, 0x32, 0x46, 0x03, 0x68, - 0xcd, 0xe9, 0x00, 0x45, 0xd3, 0xf8, 0x1c, 0xa0, 0x3b, 0x46, 0xd0, 0x47, - 0x50, 0xb9, 0x59, 0xf8, 0x28, 0x00, 0x32, 0x46, 0x03, 0x99, 0x03, 0x68, - 0xcd, 0xe9, 0x00, 0x45, 0x9c, 0x69, 0x3b, 0x46, 0xa0, 0x47, 0x00, 0xb1, - 0x04, 0x20, 0x04, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x54, 0x74, 0x00, 0x24, - 0x7f, 0xb5, 0x16, 0x46, 0x05, 0x46, 0x1c, 0x46, 0x03, 0x91, 0xff, 0xf7, - 0xbf, 0xff, 0x0a, 0x4a, 0x03, 0x46, 0x03, 0x99, 0x52, 0xf8, 0x25, 0x00, - 0xa3, 0xfb, 0x04, 0x45, 0x02, 0x68, 0xcd, 0xe9, 0x00, 0x45, 0x54, 0x69, - 0xa3, 0xfb, 0x06, 0x23, 0xa0, 0x47, 0x00, 0x28, 0x14, 0xbf, 0x04, 0x20, - 0x00, 0x20, 0x04, 0xb0, 0x70, 0xbd, 0x00, 0xbf, 0x54, 0x74, 0x00, 0x24, - 0x13, 0x28, 0x9a, 0xbf, 0x01, 0x4b, 0x18, 0x56, 0x40, 0x42, 0x70, 0x47, - 0x81, 0xdf, 0x01, 0x08, 0x03, 0x28, 0xca, 0x7e, 0x8b, 0x7e, 0x08, 0xbf, - 0x48, 0x7d, 0x43, 0xea, 0x02, 0x23, 0x02, 0xbf, 0x0a, 0x7d, 0x42, 0xea, - 0x00, 0x22, 0x43, 0xea, 0x02, 0x43, 0x18, 0x46, 0x70, 0x47, 0x60, 0xb1, - 0x03, 0x68, 0x5b, 0xb1, 0x1a, 0x78, 0x5a, 0xb1, 0x80, 0x88, 0xda, 0x88, - 0x90, 0x42, 0x16, 0xbf, 0x09, 0x20, 0x00, 0x20, 0x00, 0x23, 0x0b, 0x60, - 0x70, 0x47, 0x03, 0x46, 0x09, 0x20, 0xfa, 0xe7, 0x09, 0x20, 0x13, 0x46, - 0xf7, 0xe7, 0x02, 0x68, 0x10, 0xb5, 0x04, 0x46, 0x5a, 0xb1, 0x11, 0x46, - 0x11, 0xf8, 0x01, 0x3b, 0x20, 0x2b, 0x11, 0xd9, 0x3a, 0x2b, 0xf9, 0xd1, - 0x13, 0x78, 0x30, 0x3b, 0xd8, 0xb2, 0x09, 0x28, 0x02, 0xd9, 0x4f, 0xf0, - 0xff, 0x30, 0x06, 0xe0, 0x02, 0x32, 0x91, 0x42, 0xf9, 0xd1, 0x03, 0x2b, - 0x18, 0x46, 0xf6, 0xdc, 0x21, 0x60, 0x10, 0xbd, 0x00, 0x20, 0xfc, 0xe7, - 0x38, 0xb5, 0xc3, 0x78, 0x04, 0x46, 0x13, 0xb9, 0x00, 0x25, 0x28, 0x46, - 0x38, 0xbd, 0xd0, 0xe9, 0x0c, 0x21, 0x01, 0x23, 0x40, 0x78, 0xff, 0xf7, - 0x63, 0xff, 0x05, 0x46, 0x80, 0xb9, 0x21, 0x6b, 0x63, 0x6a, 0xe2, 0x69, - 0xcb, 0x1a, 0xe0, 0x70, 0x93, 0x42, 0xed, 0xd2, 0xa3, 0x78, 0x02, 0x2b, - 0xea, 0xd1, 0x0a, 0x44, 0x01, 0x23, 0x61, 0x6b, 0x60, 0x78, 0xff, 0xf7, - 0x51, 0xff, 0xe4, 0xe7, 0x01, 0x25, 0xe2, 0xe7, 0x0b, 0x0a, 0x01, 0x70, - 0x43, 0x70, 0x0b, 0x0c, 0x09, 0x0e, 0x83, 0x70, 0xc1, 0x70, 0x70, 0x47, - 0x42, 0x88, 0x43, 0x78, 0x00, 0x78, 0x43, 0xea, 0x02, 0x23, 0x40, 0xea, - 0x03, 0x20, 0x70, 0x47, 0x00, 0x23, 0x70, 0xb5, 0x1c, 0x46, 0x2e, 0x26, - 0xc5, 0x69, 0x2a, 0x5d, 0x01, 0x34, 0x20, 0x2a, 0x0a, 0xd0, 0x05, 0x2a, - 0x08, 0xbf, 0xe5, 0x22, 0x09, 0x2c, 0x02, 0xbf, 0xcd, 0x18, 0x01, 0x33, - 0x6e, 0x72, 0xcd, 0x18, 0x01, 0x33, 0x6a, 0x72, 0x0b, 0x2c, 0xed, 0xd1, - 0x0b, 0x44, 0x00, 0x22, 0x5a, 0x72, 0xc3, 0x69, 0xdb, 0x7a, 0x03, 0xf0, - 0x3f, 0x03, 0x0b, 0x72, 0xc4, 0x69, 0x04, 0xf1, 0x1c, 0x00, 0xff, 0xf7, - 0xd5, 0xff, 0x08, 0x60, 0xe2, 0x7d, 0xa3, 0x7d, 0x43, 0xea, 0x02, 0x23, - 0xcb, 0x80, 0x62, 0x7e, 0x23, 0x7e, 0x43, 0xea, 0x02, 0x23, 0x8b, 0x80, - 0x70, 0xbd, 0x40, 0x68, 0x03, 0x68, 0x9b, 0x6c, 0x18, 0x47, 0xd0, 0xe9, - 0x04, 0x31, 0x10, 0xb5, 0xd0, 0xe9, 0x08, 0x24, 0xd0, 0x1a, 0x64, 0xeb, - 0x01, 0x01, 0x10, 0xbd, 0x40, 0x68, 0x03, 0x68, 0x5b, 0x6b, 0x18, 0x47, - 0x41, 0x68, 0x30, 0xb4, 0xd0, 0xe9, 0x04, 0x40, 0x0d, 0x68, 0x12, 0x19, - 0x2d, 0x6b, 0x40, 0xeb, 0x03, 0x03, 0x08, 0x46, 0x29, 0x46, 0x30, 0xbc, - 0x08, 0x47, 0x41, 0x68, 0x0b, 0x68, 0x10, 0xb4, 0x1c, 0x6b, 0xd0, 0xe9, - 0x04, 0x23, 0x08, 0x46, 0x21, 0x46, 0x5d, 0xf8, 0x04, 0x4b, 0x08, 0x47, - 0x40, 0x68, 0x03, 0x68, 0x9b, 0x6a, 0x18, 0x47, 0x40, 0x68, 0x03, 0x68, - 0x5b, 0x6a, 0x18, 0x47, 0x2d, 0xe9, 0xf3, 0x47, 0x05, 0x46, 0x14, 0x46, - 0x98, 0x46, 0x40, 0x68, 0xd5, 0xe9, 0x04, 0x23, 0x01, 0x68, 0xa2, 0x18, - 0xdd, 0xe9, 0x0a, 0xa9, 0x48, 0xeb, 0x03, 0x03, 0xcd, 0xe9, 0x00, 0xa9, - 0x49, 0x6c, 0x88, 0x47, 0x80, 0xb1, 0x14, 0xeb, 0x0a, 0x04, 0xd5, 0xe9, - 0x04, 0x32, 0x48, 0xeb, 0x09, 0x08, 0xe6, 0x18, 0x48, 0xeb, 0x02, 0x07, - 0xd5, 0xe9, 0x08, 0x23, 0xbb, 0x42, 0x08, 0xbf, 0xb2, 0x42, 0x2c, 0xbf, - 0x01, 0x20, 0x00, 0x20, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x2d, 0xe9, - 0xf3, 0x47, 0x05, 0x46, 0x14, 0x46, 0x98, 0x46, 0x40, 0x68, 0xd5, 0xe9, - 0x04, 0x23, 0x01, 0x68, 0xa2, 0x18, 0xdd, 0xe9, 0x0a, 0xa9, 0x48, 0xeb, - 0x03, 0x03, 0xcd, 0xe9, 0x00, 0xa9, 0x09, 0x6c, 0x88, 0x47, 0x80, 0xb1, - 0x14, 0xeb, 0x0a, 0x04, 0xd5, 0xe9, 0x04, 0x32, 0x48, 0xeb, 0x09, 0x08, - 0xe6, 0x18, 0x48, 0xeb, 0x02, 0x07, 0xd5, 0xe9, 0x08, 0x23, 0xbb, 0x42, - 0x08, 0xbf, 0xb2, 0x42, 0x2c, 0xbf, 0x01, 0x20, 0x00, 0x20, 0x02, 0xb0, - 0xbd, 0xe8, 0xf0, 0x87, 0x2d, 0xe9, 0xf3, 0x47, 0x05, 0x46, 0x14, 0x46, - 0x98, 0x46, 0x40, 0x68, 0xd5, 0xe9, 0x04, 0x23, 0x01, 0x68, 0xa2, 0x18, - 0xdd, 0xe9, 0x0a, 0xa9, 0x48, 0xeb, 0x03, 0x03, 0xcd, 0xe9, 0x00, 0xa9, - 0xc9, 0x6b, 0x88, 0x47, 0x80, 0xb1, 0x14, 0xeb, 0x0a, 0x04, 0xd5, 0xe9, - 0x04, 0x32, 0x48, 0xeb, 0x09, 0x08, 0xe6, 0x18, 0x48, 0xeb, 0x02, 0x07, - 0xd5, 0xe9, 0x08, 0x23, 0xbb, 0x42, 0x08, 0xbf, 0xb2, 0x42, 0x2c, 0xbf, - 0x01, 0x20, 0x00, 0x20, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x2d, 0xe9, - 0xf3, 0x41, 0xdd, 0xe9, 0x08, 0x67, 0x01, 0x68, 0x04, 0x46, 0x15, 0x46, - 0x98, 0x46, 0xcd, 0xe9, 0x00, 0x67, 0x49, 0x6c, 0x88, 0x47, 0x68, 0xb1, - 0x60, 0x68, 0xd4, 0xe9, 0x04, 0x23, 0x01, 0x68, 0xaa, 0x18, 0xcd, 0xe9, - 0x08, 0x67, 0x48, 0xeb, 0x03, 0x03, 0xc9, 0x69, 0x02, 0xb0, 0xbd, 0xe8, - 0xf0, 0x41, 0x08, 0x47, 0x6f, 0xf4, 0x7a, 0x60, 0x02, 0xb0, 0xbd, 0xe8, - 0xf0, 0x81, 0x2d, 0xe9, 0xf0, 0x43, 0x85, 0xb0, 0x04, 0x46, 0x15, 0x46, - 0x98, 0x46, 0x03, 0x91, 0xdd, 0xe9, 0x0c, 0x67, 0xcd, 0xe9, 0x00, 0x67, - 0x01, 0x68, 0xd1, 0xf8, 0x40, 0x90, 0xc8, 0x47, 0x78, 0xb1, 0x60, 0x68, - 0x03, 0x99, 0xd4, 0xe9, 0x04, 0x23, 0x04, 0x68, 0xaa, 0x18, 0xcd, 0xe9, - 0x0c, 0x67, 0xa4, 0x69, 0x48, 0xeb, 0x03, 0x03, 0xa4, 0x46, 0x05, 0xb0, - 0xbd, 0xe8, 0xf0, 0x43, 0x60, 0x47, 0x6f, 0xf4, 0x7a, 0x60, 0x05, 0xb0, - 0xbd, 0xe8, 0xf0, 0x83, 0x2d, 0xe9, 0xf0, 0x43, 0x85, 0xb0, 0x04, 0x46, - 0x15, 0x46, 0x98, 0x46, 0x03, 0x91, 0xdd, 0xe9, 0x0c, 0x67, 0xcd, 0xe9, - 0x00, 0x67, 0x01, 0x68, 0xd1, 0xf8, 0x3c, 0x90, 0xc8, 0x47, 0x78, 0xb1, - 0x60, 0x68, 0x03, 0x99, 0xd4, 0xe9, 0x04, 0x23, 0x04, 0x68, 0xaa, 0x18, - 0xcd, 0xe9, 0x0c, 0x67, 0x64, 0x69, 0x48, 0xeb, 0x03, 0x03, 0xa4, 0x46, - 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, 0x60, 0x47, 0x6f, 0xf4, 0x7a, 0x60, - 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x40, 0x68, 0x03, 0x68, 0x1b, 0x69, - 0x18, 0x47, 0x40, 0x68, 0x03, 0x68, 0xdb, 0x68, 0x18, 0x47, 0x73, 0xb5, - 0x04, 0x46, 0x40, 0x68, 0x03, 0x68, 0x9b, 0x68, 0x98, 0x47, 0x05, 0x46, - 0x58, 0xbb, 0x60, 0x68, 0x03, 0x68, 0x9b, 0x6b, 0x98, 0x47, 0x23, 0x7a, - 0x3b, 0xb1, 0x25, 0x72, 0xd4, 0xe9, 0x04, 0x32, 0xc3, 0x1a, 0x61, 0xeb, - 0x02, 0x02, 0xc4, 0xe9, 0x04, 0x32, 0x23, 0x7e, 0x43, 0xb1, 0x00, 0x26, - 0xd4, 0xe9, 0x08, 0x32, 0x26, 0x76, 0xc3, 0x1a, 0x61, 0xeb, 0x02, 0x01, - 0xc4, 0xe9, 0x08, 0x31, 0xd4, 0xe9, 0x04, 0x16, 0xd4, 0xe9, 0x08, 0x32, - 0x20, 0x68, 0x5b, 0x1a, 0x62, 0xeb, 0x06, 0x02, 0xcd, 0xe9, 0x00, 0x32, - 0x00, 0x22, 0x41, 0x6c, 0x00, 0x23, 0x20, 0x46, 0x88, 0x47, 0x00, 0x28, - 0x08, 0xbf, 0x6f, 0xf4, 0x7a, 0x65, 0x28, 0x46, 0x02, 0xb0, 0x70, 0xbd, - 0x70, 0x47, 0x40, 0x68, 0x10, 0xb1, 0x03, 0x68, 0x9b, 0x6c, 0x18, 0x47, - 0x70, 0x47, 0x40, 0x7e, 0x70, 0x47, 0x00, 0x7e, 0x70, 0x47, 0xd0, 0xe9, - 0x04, 0x21, 0x10, 0xb5, 0xd0, 0xe9, 0x02, 0x34, 0x98, 0x18, 0x44, 0xeb, - 0x01, 0x01, 0x10, 0xbd, 0xd0, 0xe9, 0x02, 0x01, 0x70, 0x47, 0xd0, 0xe9, - 0x04, 0x01, 0x70, 0x47, 0x90, 0xf8, 0x20, 0x30, 0x1b, 0xb1, 0x40, 0x68, - 0x03, 0x68, 0x5b, 0x6b, 0x18, 0x47, 0x6f, 0xf4, 0x7a, 0x60, 0x70, 0x47, - 0x90, 0xf8, 0x20, 0x10, 0x30, 0xb4, 0x59, 0xb1, 0xd0, 0xe9, 0x01, 0x14, - 0xc0, 0x68, 0x0d, 0x68, 0x12, 0x19, 0x2d, 0x6b, 0x40, 0xeb, 0x03, 0x03, - 0x08, 0x46, 0x29, 0x46, 0x30, 0xbc, 0x08, 0x47, 0x00, 0x20, 0x00, 0x21, - 0x30, 0xbc, 0x70, 0x47, 0x90, 0xf8, 0x20, 0x30, 0x1b, 0xb1, 0x40, 0x68, - 0x03, 0x68, 0xdb, 0x6a, 0x18, 0x47, 0x00, 0x20, 0x00, 0x21, 0x70, 0x47, - 0x90, 0xf8, 0x20, 0x30, 0x1b, 0xb1, 0x40, 0x68, 0x03, 0x68, 0x9b, 0x6a, - 0x18, 0x47, 0x00, 0x20, 0x00, 0x21, 0x70, 0x47, 0x90, 0xf8, 0x20, 0x30, - 0x1b, 0xb1, 0x40, 0x68, 0x03, 0x68, 0x5b, 0x6a, 0x18, 0x47, 0x00, 0x20, - 0x00, 0x21, 0x70, 0x47, 0x2d, 0xe9, 0xf3, 0x41, 0x90, 0xf8, 0x20, 0x10, - 0x04, 0x46, 0x15, 0x46, 0x98, 0x46, 0xdd, 0xe9, 0x08, 0x67, 0x99, 0xb1, - 0x01, 0x68, 0xcd, 0xe9, 0x00, 0x67, 0x49, 0x6c, 0x88, 0x47, 0x68, 0xb1, - 0xe3, 0x68, 0xd4, 0xe9, 0x01, 0x02, 0x01, 0x68, 0xaa, 0x18, 0xcd, 0xe9, - 0x08, 0x67, 0x48, 0xeb, 0x03, 0x03, 0xc9, 0x69, 0x02, 0xb0, 0xbd, 0xe8, - 0xf0, 0x41, 0x08, 0x47, 0x6f, 0xf4, 0x7a, 0x60, 0x02, 0xb0, 0xbd, 0xe8, - 0xf0, 0x81, 0x2d, 0xe9, 0xf0, 0x43, 0x90, 0xf8, 0x20, 0xc0, 0x85, 0xb0, - 0x04, 0x46, 0x15, 0x46, 0x98, 0x46, 0x03, 0x91, 0xdd, 0xe9, 0x0c, 0x67, - 0xbc, 0xf1, 0x00, 0x0f, 0x16, 0xd0, 0xcd, 0xe9, 0x00, 0x67, 0x01, 0x68, - 0xd1, 0xf8, 0x40, 0x90, 0xc8, 0x47, 0x78, 0xb1, 0xe3, 0x68, 0x03, 0x99, - 0xd4, 0xe9, 0x01, 0x02, 0x04, 0x68, 0xaa, 0x18, 0xcd, 0xe9, 0x0c, 0x67, - 0xa4, 0x69, 0x48, 0xeb, 0x03, 0x03, 0xa4, 0x46, 0x05, 0xb0, 0xbd, 0xe8, - 0xf0, 0x43, 0x60, 0x47, 0x6f, 0xf4, 0x7a, 0x60, 0x05, 0xb0, 0xbd, 0xe8, - 0xf0, 0x83, 0x2d, 0xe9, 0xf0, 0x43, 0x90, 0xf8, 0x20, 0xc0, 0x85, 0xb0, - 0x04, 0x46, 0x15, 0x46, 0x98, 0x46, 0x03, 0x91, 0xdd, 0xe9, 0x0c, 0x67, - 0xbc, 0xf1, 0x00, 0x0f, 0x16, 0xd0, 0xcd, 0xe9, 0x00, 0x67, 0x01, 0x68, - 0xd1, 0xf8, 0x3c, 0x90, 0xc8, 0x47, 0x78, 0xb1, 0xe3, 0x68, 0x03, 0x99, - 0xd4, 0xe9, 0x01, 0x02, 0x04, 0x68, 0xaa, 0x18, 0xcd, 0xe9, 0x0c, 0x67, + 0x23, 0x68, 0x6d, 0x69, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x28, 0x46, + 0x38, 0xbd, 0x03, 0x68, 0x01, 0x22, 0xd3, 0xf8, 0x80, 0x30, 0x18, 0x47, + 0x08, 0xb5, 0x06, 0x4b, 0x53, 0xf8, 0x20, 0x00, 0x03, 0x68, 0xdb, 0x6a, + 0x98, 0x47, 0x80, 0xb2, 0xb0, 0xf5, 0x00, 0x7f, 0x38, 0xbf, 0x4f, 0xf4, + 0x00, 0x70, 0x08, 0xbd, 0xa8, 0x15, 0x02, 0x24, 0x2d, 0xe9, 0xff, 0x47, + 0x16, 0x46, 0x1c, 0x46, 0x80, 0x46, 0xdf, 0xf8, 0x44, 0x90, 0x03, 0x91, + 0xff, 0xf7, 0xe6, 0xff, 0xa0, 0xfb, 0x06, 0x67, 0xa0, 0xfb, 0x04, 0x45, + 0x59, 0xf8, 0x28, 0x00, 0x32, 0x46, 0x03, 0x68, 0xcd, 0xe9, 0x00, 0x45, + 0xd3, 0xf8, 0x1c, 0xa0, 0x3b, 0x46, 0xd0, 0x47, 0x50, 0xb9, 0x59, 0xf8, + 0x28, 0x00, 0x32, 0x46, 0x03, 0x99, 0x03, 0x68, 0xcd, 0xe9, 0x00, 0x45, + 0x9c, 0x69, 0x3b, 0x46, 0xa0, 0x47, 0x00, 0xb1, 0x04, 0x20, 0x04, 0xb0, + 0xbd, 0xe8, 0xf0, 0x87, 0xa8, 0x15, 0x02, 0x24, 0x7f, 0xb5, 0x16, 0x46, + 0x05, 0x46, 0x1c, 0x46, 0x03, 0x91, 0xff, 0xf7, 0xbf, 0xff, 0x0a, 0x4a, + 0x03, 0x46, 0x03, 0x99, 0x52, 0xf8, 0x25, 0x00, 0xa3, 0xfb, 0x04, 0x45, + 0x02, 0x68, 0xcd, 0xe9, 0x00, 0x45, 0x54, 0x69, 0xa3, 0xfb, 0x06, 0x23, + 0xa0, 0x47, 0x00, 0x28, 0x14, 0xbf, 0x04, 0x20, 0x00, 0x20, 0x04, 0xb0, + 0x70, 0xbd, 0x00, 0xbf, 0xa8, 0x15, 0x02, 0x24, 0x13, 0x28, 0x9a, 0xbf, + 0x01, 0x4b, 0x18, 0x56, 0x40, 0x42, 0x70, 0x47, 0xc1, 0xd9, 0x01, 0x08, + 0x03, 0x28, 0xca, 0x7e, 0x8b, 0x7e, 0x08, 0xbf, 0x48, 0x7d, 0x43, 0xea, + 0x02, 0x23, 0x02, 0xbf, 0x0a, 0x7d, 0x42, 0xea, 0x00, 0x22, 0x43, 0xea, + 0x02, 0x43, 0x18, 0x46, 0x70, 0x47, 0x60, 0xb1, 0x03, 0x68, 0x5b, 0xb1, + 0x1a, 0x78, 0x5a, 0xb1, 0x80, 0x88, 0xda, 0x88, 0x90, 0x42, 0x16, 0xbf, + 0x09, 0x20, 0x00, 0x20, 0x00, 0x23, 0x0b, 0x60, 0x70, 0x47, 0x03, 0x46, + 0x09, 0x20, 0xfa, 0xe7, 0x09, 0x20, 0x13, 0x46, 0xf7, 0xe7, 0x02, 0x68, + 0x10, 0xb5, 0x04, 0x46, 0x5a, 0xb1, 0x11, 0x46, 0x11, 0xf8, 0x01, 0x3b, + 0x20, 0x2b, 0x11, 0xd9, 0x3a, 0x2b, 0xf9, 0xd1, 0x13, 0x78, 0x30, 0x3b, + 0xd8, 0xb2, 0x09, 0x28, 0x02, 0xd9, 0x4f, 0xf0, 0xff, 0x30, 0x06, 0xe0, + 0x02, 0x32, 0x91, 0x42, 0xf9, 0xd1, 0x03, 0x2b, 0x18, 0x46, 0xf6, 0xdc, + 0x21, 0x60, 0x10, 0xbd, 0x00, 0x20, 0xfc, 0xe7, 0x38, 0xb5, 0xc3, 0x78, + 0x04, 0x46, 0x13, 0xb9, 0x00, 0x25, 0x28, 0x46, 0x38, 0xbd, 0xd0, 0xe9, + 0x0c, 0x21, 0x01, 0x23, 0x40, 0x78, 0xff, 0xf7, 0x63, 0xff, 0x05, 0x46, + 0x80, 0xb9, 0x21, 0x6b, 0x63, 0x6a, 0xe2, 0x69, 0xcb, 0x1a, 0xe0, 0x70, + 0x93, 0x42, 0xed, 0xd2, 0xa3, 0x78, 0x02, 0x2b, 0xea, 0xd1, 0x0a, 0x44, + 0x01, 0x23, 0x61, 0x6b, 0x60, 0x78, 0xff, 0xf7, 0x51, 0xff, 0xe4, 0xe7, + 0x01, 0x25, 0xe2, 0xe7, 0x0b, 0x0a, 0x01, 0x70, 0x43, 0x70, 0x0b, 0x0c, + 0x09, 0x0e, 0x83, 0x70, 0xc1, 0x70, 0x70, 0x47, 0x42, 0x88, 0x43, 0x78, + 0x00, 0x78, 0x43, 0xea, 0x02, 0x23, 0x40, 0xea, 0x03, 0x20, 0x70, 0x47, + 0x00, 0x23, 0x70, 0xb5, 0x1c, 0x46, 0x2e, 0x26, 0xc5, 0x69, 0x2a, 0x5d, + 0x01, 0x34, 0x20, 0x2a, 0x0a, 0xd0, 0x05, 0x2a, 0x08, 0xbf, 0xe5, 0x22, + 0x09, 0x2c, 0x02, 0xbf, 0xcd, 0x18, 0x01, 0x33, 0x6e, 0x72, 0xcd, 0x18, + 0x01, 0x33, 0x6a, 0x72, 0x0b, 0x2c, 0xed, 0xd1, 0x0b, 0x44, 0x00, 0x22, + 0x5a, 0x72, 0xc3, 0x69, 0xdb, 0x7a, 0x03, 0xf0, 0x3f, 0x03, 0x0b, 0x72, + 0xc4, 0x69, 0x04, 0xf1, 0x1c, 0x00, 0xff, 0xf7, 0xd5, 0xff, 0x08, 0x60, + 0xe2, 0x7d, 0xa3, 0x7d, 0x43, 0xea, 0x02, 0x23, 0xcb, 0x80, 0x62, 0x7e, + 0x23, 0x7e, 0x43, 0xea, 0x02, 0x23, 0x8b, 0x80, 0x70, 0xbd, 0x40, 0x68, + 0x03, 0x68, 0x9b, 0x6c, 0x18, 0x47, 0xd0, 0xe9, 0x04, 0x31, 0x10, 0xb5, + 0xd0, 0xe9, 0x08, 0x24, 0xd0, 0x1a, 0x64, 0xeb, 0x01, 0x01, 0x10, 0xbd, + 0x40, 0x68, 0x03, 0x68, 0x5b, 0x6b, 0x18, 0x47, 0x41, 0x68, 0x30, 0xb4, + 0xd0, 0xe9, 0x04, 0x40, 0x0d, 0x68, 0x12, 0x19, 0x2d, 0x6b, 0x40, 0xeb, + 0x03, 0x03, 0x08, 0x46, 0x29, 0x46, 0x30, 0xbc, 0x08, 0x47, 0x41, 0x68, + 0x0b, 0x68, 0x10, 0xb4, 0x1c, 0x6b, 0xd0, 0xe9, 0x04, 0x23, 0x08, 0x46, + 0x21, 0x46, 0x5d, 0xf8, 0x04, 0x4b, 0x08, 0x47, 0x40, 0x68, 0x03, 0x68, + 0x9b, 0x6a, 0x18, 0x47, 0x40, 0x68, 0x03, 0x68, 0x5b, 0x6a, 0x18, 0x47, + 0x2d, 0xe9, 0xf3, 0x47, 0x05, 0x46, 0x14, 0x46, 0x98, 0x46, 0x40, 0x68, + 0xd5, 0xe9, 0x04, 0x23, 0x01, 0x68, 0xa2, 0x18, 0xdd, 0xe9, 0x0a, 0xa9, + 0x48, 0xeb, 0x03, 0x03, 0xcd, 0xe9, 0x00, 0xa9, 0x49, 0x6c, 0x88, 0x47, + 0x80, 0xb1, 0x14, 0xeb, 0x0a, 0x04, 0xd5, 0xe9, 0x04, 0x32, 0x48, 0xeb, + 0x09, 0x08, 0xe6, 0x18, 0x48, 0xeb, 0x02, 0x07, 0xd5, 0xe9, 0x08, 0x23, + 0xbb, 0x42, 0x08, 0xbf, 0xb2, 0x42, 0x2c, 0xbf, 0x01, 0x20, 0x00, 0x20, + 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x2d, 0xe9, 0xf3, 0x47, 0x05, 0x46, + 0x14, 0x46, 0x98, 0x46, 0x40, 0x68, 0xd5, 0xe9, 0x04, 0x23, 0x01, 0x68, + 0xa2, 0x18, 0xdd, 0xe9, 0x0a, 0xa9, 0x48, 0xeb, 0x03, 0x03, 0xcd, 0xe9, + 0x00, 0xa9, 0x09, 0x6c, 0x88, 0x47, 0x80, 0xb1, 0x14, 0xeb, 0x0a, 0x04, + 0xd5, 0xe9, 0x04, 0x32, 0x48, 0xeb, 0x09, 0x08, 0xe6, 0x18, 0x48, 0xeb, + 0x02, 0x07, 0xd5, 0xe9, 0x08, 0x23, 0xbb, 0x42, 0x08, 0xbf, 0xb2, 0x42, + 0x2c, 0xbf, 0x01, 0x20, 0x00, 0x20, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, + 0x2d, 0xe9, 0xf3, 0x47, 0x05, 0x46, 0x14, 0x46, 0x98, 0x46, 0x40, 0x68, + 0xd5, 0xe9, 0x04, 0x23, 0x01, 0x68, 0xa2, 0x18, 0xdd, 0xe9, 0x0a, 0xa9, + 0x48, 0xeb, 0x03, 0x03, 0xcd, 0xe9, 0x00, 0xa9, 0xc9, 0x6b, 0x88, 0x47, + 0x80, 0xb1, 0x14, 0xeb, 0x0a, 0x04, 0xd5, 0xe9, 0x04, 0x32, 0x48, 0xeb, + 0x09, 0x08, 0xe6, 0x18, 0x48, 0xeb, 0x02, 0x07, 0xd5, 0xe9, 0x08, 0x23, + 0xbb, 0x42, 0x08, 0xbf, 0xb2, 0x42, 0x2c, 0xbf, 0x01, 0x20, 0x00, 0x20, + 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x2d, 0xe9, 0xf3, 0x41, 0xdd, 0xe9, + 0x08, 0x67, 0x01, 0x68, 0x04, 0x46, 0x15, 0x46, 0x98, 0x46, 0xcd, 0xe9, + 0x00, 0x67, 0x49, 0x6c, 0x88, 0x47, 0x68, 0xb1, 0x60, 0x68, 0xd4, 0xe9, + 0x04, 0x23, 0x01, 0x68, 0xaa, 0x18, 0xcd, 0xe9, 0x08, 0x67, 0x48, 0xeb, + 0x03, 0x03, 0xc9, 0x69, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x41, 0x08, 0x47, + 0x6f, 0xf4, 0x7a, 0x60, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x2d, 0xe9, + 0xf0, 0x43, 0x85, 0xb0, 0x04, 0x46, 0x15, 0x46, 0x98, 0x46, 0x03, 0x91, + 0xdd, 0xe9, 0x0c, 0x67, 0xcd, 0xe9, 0x00, 0x67, 0x01, 0x68, 0xd1, 0xf8, + 0x40, 0x90, 0xc8, 0x47, 0x78, 0xb1, 0x60, 0x68, 0x03, 0x99, 0xd4, 0xe9, + 0x04, 0x23, 0x04, 0x68, 0xaa, 0x18, 0xcd, 0xe9, 0x0c, 0x67, 0xa4, 0x69, + 0x48, 0xeb, 0x03, 0x03, 0xa4, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, + 0x60, 0x47, 0x6f, 0xf4, 0x7a, 0x60, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, + 0x2d, 0xe9, 0xf0, 0x43, 0x85, 0xb0, 0x04, 0x46, 0x15, 0x46, 0x98, 0x46, + 0x03, 0x91, 0xdd, 0xe9, 0x0c, 0x67, 0xcd, 0xe9, 0x00, 0x67, 0x01, 0x68, + 0xd1, 0xf8, 0x3c, 0x90, 0xc8, 0x47, 0x78, 0xb1, 0x60, 0x68, 0x03, 0x99, + 0xd4, 0xe9, 0x04, 0x23, 0x04, 0x68, 0xaa, 0x18, 0xcd, 0xe9, 0x0c, 0x67, 0x64, 0x69, 0x48, 0xeb, 0x03, 0x03, 0xa4, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, 0x60, 0x47, 0x6f, 0xf4, 0x7a, 0x60, 0x05, 0xb0, 0xbd, 0xe8, - 0xf0, 0x83, 0x90, 0xf8, 0x20, 0x30, 0x1b, 0xb1, 0x40, 0x68, 0x03, 0x68, - 0x1b, 0x69, 0x18, 0x47, 0x6f, 0xf4, 0x7a, 0x60, 0x70, 0x47, 0x2d, 0xe9, - 0xf0, 0x47, 0xd0, 0xe9, 0x01, 0x14, 0x05, 0x68, 0x4f, 0xea, 0x64, 0x0a, - 0x9d, 0xf8, 0x20, 0xc0, 0x05, 0xeb, 0x64, 0x00, 0xe4, 0x07, 0x9d, 0xf8, - 0x24, 0xe0, 0x48, 0xbf, 0x55, 0xf8, 0x0a, 0x40, 0x9d, 0xf8, 0x28, 0x80, - 0xdd, 0xf8, 0x2c, 0x90, 0x48, 0xbf, 0x61, 0x58, 0xdd, 0xe9, 0x0c, 0x67, - 0xcd, 0xe9, 0x0a, 0x89, 0xcd, 0xe9, 0x0c, 0x67, 0xcd, 0xe9, 0x08, 0xce, - 0xbd, 0xe8, 0xf0, 0x47, 0x08, 0x47, 0xff, 0x20, 0x70, 0x47, 0xd0, 0xe9, - 0x44, 0x01, 0x70, 0x47, 0xf0, 0xb5, 0x1f, 0x46, 0xd0, 0xf8, 0x18, 0x31, - 0x16, 0x46, 0x01, 0x33, 0x2d, 0xd1, 0xd0, 0xf8, 0x60, 0x21, 0xd0, 0xe9, - 0x44, 0x45, 0xaf, 0x42, 0x08, 0xbf, 0xa6, 0x42, 0x1c, 0xd2, 0xd0, 0xf8, - 0x28, 0x11, 0xc9, 0xb1, 0x01, 0x29, 0x0c, 0xd0, 0x00, 0xf5, 0xb4, 0x7c, - 0x00, 0x23, 0x99, 0x42, 0x12, 0xdd, 0xfc, 0xe8, 0x02, 0x45, 0xbd, 0x42, - 0x08, 0xbf, 0xb4, 0x42, 0x02, 0xd2, 0x01, 0x33, 0xf5, 0xe7, 0x00, 0x23, - 0x03, 0x44, 0x01, 0x21, 0x93, 0xf8, 0x54, 0x41, 0x00, 0x23, 0x0c, 0x42, - 0x05, 0xd0, 0x72, 0x33, 0x50, 0xf8, 0x23, 0x20, 0x10, 0x46, 0xd1, 0x17, - 0xf0, 0xbd, 0x01, 0x33, 0x49, 0x00, 0x04, 0x2b, 0x49, 0xb2, 0xf2, 0xd1, - 0xf6, 0xe7, 0x4f, 0xf4, 0x80, 0x50, 0x00, 0x21, 0xf4, 0xe7, 0x00, 0x00, - 0x00, 0x48, 0x70, 0x47, 0x44, 0xdf, 0x01, 0x08, 0xd0, 0xf8, 0x60, 0x01, - 0x00, 0x21, 0x70, 0x47, 0x01, 0x20, 0x00, 0x21, 0x70, 0x47, 0x2d, 0xe9, - 0xf7, 0x4f, 0x16, 0x46, 0x01, 0x68, 0x02, 0x69, 0x05, 0x46, 0x00, 0x93, - 0x01, 0x92, 0x89, 0x6b, 0x47, 0x69, 0xdd, 0xe9, 0x0c, 0xab, 0x16, 0xeb, - 0x0a, 0x08, 0x43, 0xeb, 0x0b, 0x09, 0x88, 0x47, 0x49, 0x45, 0x08, 0xbf, - 0x40, 0x45, 0xdd, 0xe9, 0x00, 0x32, 0x03, 0xd2, 0x00, 0x20, 0x03, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x16, 0xf1, 0x78, 0x44, 0x28, 0x46, 0x43, 0xf1, - 0xff, 0x31, 0xa4, 0x18, 0x2a, 0x68, 0x41, 0xeb, 0x07, 0x07, 0x11, 0x6b, - 0x32, 0x46, 0x88, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x20, 0x46, 0x39, 0x46, - 0x14, 0xf0, 0x00, 0xfc, 0x13, 0x43, 0xe7, 0xd1, 0x14, 0xeb, 0x0a, 0x04, - 0x2b, 0x68, 0x28, 0x46, 0x47, 0xeb, 0x0b, 0x07, 0x18, 0xf1, 0xff, 0x32, - 0x19, 0x6b, 0x49, 0xf1, 0xff, 0x33, 0x88, 0x47, 0x02, 0x46, 0x0b, 0x46, - 0x20, 0x46, 0x39, 0x46, 0x14, 0xf0, 0xec, 0xfb, 0x13, 0x43, 0x0c, 0xbf, - 0x01, 0x20, 0x00, 0x20, 0xd1, 0xe7, 0x00, 0x00, 0x00, 0x48, 0x70, 0x47, - 0x4a, 0xdf, 0x01, 0x08, 0xd0, 0xe9, 0x06, 0x01, 0x70, 0x47, 0x90, 0xf8, - 0x20, 0x30, 0x00, 0x2b, 0x0c, 0xbf, 0x4f, 0xf0, 0xff, 0x30, 0xff, 0x20, - 0x70, 0x47, 0x90, 0xf8, 0x20, 0x30, 0x13, 0xb1, 0x20, 0x20, 0x00, 0x21, - 0x70, 0x47, 0x00, 0x20, 0xfb, 0xe7, 0x73, 0xb5, 0x90, 0xf8, 0x40, 0x30, - 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x01, 0x2b, 0x00, 0xf0, 0x86, 0x80, - 0x01, 0x23, 0xca, 0x06, 0x80, 0xf8, 0x40, 0x30, 0x17, 0xd5, 0xf3, 0x06, - 0x15, 0xd5, 0x03, 0x68, 0x10, 0x22, 0xda, 0x61, 0x43, 0x6c, 0x43, 0xf0, - 0x04, 0x03, 0x43, 0x64, 0xfe, 0xf7, 0x56, 0xfe, 0xaa, 0x06, 0x05, 0xd5, - 0xb3, 0x06, 0x03, 0xd5, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xcf, 0xf8, - 0x00, 0x20, 0x84, 0xf8, 0x40, 0x00, 0x02, 0xb0, 0x70, 0xbd, 0x68, 0x07, - 0x12, 0xd5, 0x71, 0x07, 0x10, 0xd5, 0x23, 0x68, 0x25, 0xf0, 0x04, 0x05, - 0x5a, 0x6a, 0x63, 0x6a, 0x1a, 0x70, 0x63, 0x6a, 0x01, 0x33, 0x63, 0x62, - 0x23, 0x8d, 0x01, 0x3b, 0x23, 0x85, 0x63, 0x8d, 0x01, 0x3b, 0x9b, 0xb2, - 0x63, 0x85, 0xdd, 0xe7, 0xaa, 0x07, 0x07, 0xd5, 0xb3, 0x07, 0x05, 0xd5, - 0x63, 0x6a, 0x22, 0x68, 0x13, 0xf8, 0x01, 0x1b, 0x91, 0x62, 0xec, 0xe7, - 0x28, 0x06, 0x32, 0xd5, 0x71, 0x06, 0x30, 0xd5, 0x63, 0x8d, 0x22, 0x68, - 0x9b, 0xb2, 0x03, 0xb3, 0x20, 0x8d, 0xf0, 0xb9, 0x51, 0x68, 0x63, 0x8d, - 0xc1, 0xf3, 0x09, 0x01, 0x9b, 0xb2, 0xff, 0x2b, 0x08, 0xd9, 0xff, 0x22, - 0x4f, 0xf0, 0x80, 0x73, 0x00, 0x90, 0x22, 0x85, 0x20, 0x46, 0xfe, 0xf7, - 0x63, 0xfc, 0xb9, 0xe7, 0x62, 0x8d, 0xe3, 0x6a, 0x92, 0xb2, 0x13, 0xf5, - 0x80, 0x3f, 0x22, 0x85, 0xd2, 0xb2, 0x02, 0xd0, 0xe3, 0x6a, 0x00, 0x90, - 0xf0, 0xe7, 0x4f, 0xf0, 0x00, 0x73, 0x00, 0x90, 0xec, 0xe7, 0x53, 0x68, - 0x9a, 0x01, 0x03, 0xd4, 0x20, 0x46, 0xff, 0xf7, 0xf2, 0xf8, 0xa3, 0xe7, - 0x40, 0x21, 0x20, 0x46, 0xfe, 0xf7, 0x04, 0xfe, 0x9e, 0xe7, 0x6b, 0x06, - 0x9c, 0xd5, 0x70, 0x06, 0x9a, 0xd5, 0x63, 0x8d, 0x9b, 0xb2, 0x00, 0x2b, - 0xf2, 0xd1, 0x23, 0x68, 0x5a, 0x68, 0x91, 0x01, 0x92, 0xd4, 0xe2, 0x6a, - 0x12, 0xf5, 0x80, 0x3f, 0xe6, 0xd1, 0x5a, 0x68, 0x42, 0xf4, 0x80, 0x42, - 0x5a, 0x60, 0x89, 0xe7, 0x02, 0x20, 0x92, 0xe7, 0x10, 0xb5, 0x04, 0x46, - 0xff, 0xf7, 0x34, 0xfa, 0x20, 0x46, 0x12, 0xf0, 0xf3, 0xfb, 0x20, 0x46, - 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x89, 0xfa, 0x20, 0x46, - 0x12, 0xf0, 0xea, 0xfb, 0x20, 0x46, 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, - 0xff, 0xf7, 0x16, 0xfa, 0x20, 0x46, 0x12, 0xf0, 0xe1, 0xfb, 0x20, 0x46, - 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x6b, 0xfa, 0x20, 0x46, - 0x12, 0xf0, 0xd8, 0xfb, 0x20, 0x46, 0x10, 0xbd, 0x03, 0x68, 0x9b, 0x6a, - 0x10, 0xb5, 0x04, 0x46, 0x13, 0xb9, 0xc0, 0x69, 0x12, 0xf0, 0xce, 0xfb, - 0x23, 0x68, 0xdb, 0x6a, 0x13, 0xb9, 0xa0, 0x6a, 0x12, 0xf0, 0xc8, 0xfb, - 0x23, 0x68, 0x1b, 0x6b, 0x23, 0xb9, 0xe0, 0x6b, 0xbd, 0xe8, 0x10, 0x40, - 0x12, 0xf0, 0xc0, 0xbb, 0x10, 0xbd, 0x03, 0x68, 0x73, 0xb5, 0x0c, 0x46, - 0x9b, 0x6f, 0x06, 0x46, 0x98, 0x47, 0x01, 0xa9, 0x20, 0x46, 0xff, 0xf7, - 0xa8, 0xfb, 0x05, 0x46, 0x00, 0xb9, 0x20, 0x60, 0x33, 0x68, 0x30, 0x46, - 0xdb, 0x6f, 0x98, 0x47, 0x14, 0xb1, 0x20, 0x46, 0x12, 0xf0, 0xaa, 0xfb, - 0x28, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0x80, 0xbb, - 0x08, 0xb1, 0x12, 0xf0, 0xa1, 0xbb, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x46, - 0x12, 0xf0, 0x9c, 0xfb, 0x20, 0x46, 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, - 0x12, 0xf0, 0x96, 0xfb, 0x20, 0x46, 0x10, 0xbd, 0x0b, 0x46, 0x40, 0xf2, - 0x01, 0x12, 0x00, 0x21, 0x70, 0xb5, 0x04, 0x46, 0x18, 0x46, 0x12, 0xf0, - 0xf3, 0xfb, 0x03, 0x46, 0x60, 0x68, 0xa1, 0x68, 0x02, 0x68, 0x55, 0x6e, - 0x1a, 0x46, 0x2b, 0x46, 0xbd, 0xe8, 0x70, 0x40, 0x18, 0x47, 0x10, 0xb5, - 0x0c, 0x46, 0x82, 0x69, 0xff, 0x21, 0xa0, 0x68, 0x12, 0xf0, 0xe2, 0xfb, - 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x60, 0x10, 0xbd, 0x38, 0xb5, 0x8b, 0x6a, - 0x04, 0x46, 0x0d, 0x46, 0x01, 0x60, 0xcb, 0xb1, 0xc3, 0x61, 0xeb, 0x6a, - 0x13, 0xb3, 0xa3, 0x62, 0x04, 0xf1, 0x20, 0x01, 0x28, 0x46, 0xff, 0xf7, - 0xe6, 0xff, 0x4f, 0xf0, 0xff, 0x33, 0x63, 0x61, 0x23, 0x68, 0x1a, 0x6b, - 0xea, 0xb1, 0xe2, 0x63, 0x00, 0x20, 0x4f, 0xf0, 0xff, 0x33, 0xc4, 0xe9, - 0x03, 0x00, 0xc4, 0xe9, 0x01, 0x33, 0xa4, 0xf8, 0x40, 0x00, 0x38, 0xbd, - 0x48, 0x69, 0x12, 0xf0, 0x4b, 0xfb, 0xe0, 0x61, 0x00, 0x28, 0xe0, 0xd1, - 0x20, 0x46, 0xff, 0xf7, 0x77, 0xff, 0x6f, 0xf0, 0x0b, 0x00, 0xf2, 0xe7, - 0xa8, 0x69, 0x12, 0xf0, 0x3f, 0xfb, 0xa0, 0x62, 0x00, 0x28, 0xd7, 0xd1, - 0xf2, 0xe7, 0x58, 0x6a, 0xc0, 0x08, 0x12, 0xf0, 0x37, 0xfb, 0xe0, 0x63, - 0x00, 0x28, 0xdb, 0xd1, 0xea, 0xe7, 0xf7, 0xb5, 0x0c, 0x46, 0x09, 0x68, - 0x06, 0x46, 0x17, 0x46, 0x4b, 0x1c, 0x21, 0xd0, 0x00, 0x68, 0x83, 0x69, - 0x00, 0x93, 0x85, 0x68, 0xd4, 0xe9, 0x01, 0x23, 0xa8, 0x47, 0x05, 0x46, - 0x20, 0xb9, 0x37, 0xb9, 0x21, 0x46, 0x30, 0x68, 0xff, 0xf7, 0xa5, 0xff, - 0x28, 0x46, 0x03, 0xb0, 0xf0, 0xbd, 0x33, 0x68, 0x39, 0x46, 0x30, 0x46, - 0x9b, 0x69, 0x01, 0x93, 0xa3, 0x68, 0x00, 0x93, 0xd4, 0xe9, 0x00, 0x23, - 0xfa, 0xf7, 0xa3, 0xfb, 0x00, 0x28, 0x05, 0xdb, 0xea, 0xd1, 0x6f, 0xf0, - 0x33, 0x05, 0xeb, 0xe7, 0x00, 0x25, 0xe9, 0xe7, 0x05, 0x46, 0xe7, 0xe7, - 0x2d, 0xe9, 0xf7, 0x4f, 0x0c, 0x9c, 0x07, 0x46, 0x0d, 0x46, 0x91, 0x46, - 0x98, 0x46, 0xdd, 0xf8, 0x38, 0xa0, 0xba, 0xf1, 0x00, 0x0f, 0x03, 0xd1, - 0x50, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x2b, 0x68, 0x38, 0x68, - 0x43, 0x45, 0x82, 0x69, 0x28, 0xd1, 0x6b, 0x68, 0xa3, 0x42, 0x25, 0xd8, - 0x03, 0xeb, 0x02, 0x0b, 0xa3, 0x45, 0x21, 0xd9, 0xab, 0xeb, 0x04, 0x0b, - 0xe0, 0x1a, 0xab, 0x68, 0xd3, 0x45, 0x0d, 0x99, 0x18, 0x44, 0x28, 0xbf, - 0xd3, 0x46, 0x5a, 0x46, 0x5c, 0x44, 0x12, 0xf0, 0x3f, 0xfb, 0x0d, 0x9b, - 0x5b, 0x44, 0xaa, 0xeb, 0x0b, 0x0b, 0x0d, 0x93, 0x3b, 0x68, 0x9a, 0x69, - 0xb4, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x43, 0x33, 0xb9, 0x4a, 0x46, - 0x29, 0x46, 0x38, 0x46, 0xff, 0xf7, 0x99, 0xff, 0x00, 0x28, 0xd0, 0xd1, - 0xda, 0x46, 0xca, 0xe7, 0xb4, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x43, - 0x4b, 0xbb, 0x92, 0x45, 0x27, 0xd3, 0x41, 0x46, 0xba, 0xfb, 0xf2, 0xf3, - 0x02, 0xfb, 0x13, 0xab, 0x22, 0x46, 0xaa, 0xeb, 0x0b, 0x0a, 0xcd, 0xf8, - 0x00, 0xa0, 0x83, 0x68, 0x1e, 0x46, 0x0d, 0x9b, 0xb0, 0x47, 0x00, 0x28, - 0xb7, 0xd1, 0xb9, 0xf1, 0x00, 0x0f, 0x04, 0xd1, 0x0d, 0x9b, 0x54, 0x44, - 0x53, 0x44, 0x0d, 0x93, 0xde, 0xe7, 0x0d, 0x9b, 0x42, 0x46, 0x49, 0x46, - 0x38, 0x46, 0x00, 0x93, 0x23, 0x46, 0xcd, 0xf8, 0x04, 0xa0, 0xfa, 0xf7, - 0x32, 0xfb, 0x00, 0x28, 0xa3, 0xdb, 0xed, 0xd1, 0x6f, 0xf0, 0x33, 0x00, - 0x9f, 0xe7, 0xe3, 0x1a, 0xd3, 0x46, 0xc5, 0xf8, 0x00, 0x80, 0x6b, 0x60, - 0xc8, 0xe7, 0x00, 0x00, 0x70, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xba, 0xfa, - 0x05, 0x46, 0x00, 0x28, 0x3f, 0xd1, 0x23, 0x78, 0x03, 0x2b, 0x35, 0xd1, - 0x26, 0x79, 0x01, 0x2e, 0x32, 0xd1, 0x01, 0x46, 0xa2, 0x89, 0x60, 0x6b, - 0x12, 0xf0, 0xf0, 0xfa, 0x63, 0x6b, 0x55, 0x22, 0x41, 0x21, 0x72, 0x20, - 0x83, 0xf8, 0xfe, 0x21, 0xaa, 0x22, 0x83, 0xf8, 0xff, 0x21, 0x52, 0x23, - 0x62, 0x6b, 0x13, 0x70, 0x53, 0x70, 0x61, 0x23, 0xd1, 0x70, 0x93, 0x70, - 0x62, 0x6b, 0x82, 0xf8, 0xe7, 0x31, 0x82, 0xf8, 0xe4, 0x01, 0x82, 0xf8, - 0xe5, 0x01, 0x82, 0xf8, 0xe6, 0x11, 0x60, 0x6b, 0x61, 0x69, 0x00, 0xf5, - 0xf4, 0x70, 0xff, 0xf7, 0xaf, 0xfa, 0x60, 0x6b, 0x21, 0x69, 0x00, 0xf5, - 0xf6, 0x70, 0xff, 0xf7, 0xa9, 0xfa, 0x22, 0x6a, 0x33, 0x46, 0x61, 0x6b, - 0x01, 0x32, 0x60, 0x78, 0x22, 0x63, 0xff, 0xf7, 0xef, 0xf9, 0x25, 0x71, - 0x62, 0x78, 0x03, 0x4b, 0x53, 0xf8, 0x22, 0x00, 0xb0, 0xfa, 0x80, 0xf0, - 0x40, 0x09, 0x70, 0xbd, 0x54, 0x74, 0x00, 0x24, 0x90, 0xf8, 0x20, 0x30, - 0x10, 0xb5, 0x04, 0x46, 0x5b, 0xb1, 0x1c, 0x30, 0xf9, 0xf7, 0xbe, 0xff, - 0x38, 0xb9, 0x84, 0xf8, 0x20, 0x00, 0x60, 0x68, 0x03, 0x68, 0xbd, 0xe8, - 0x10, 0x40, 0xdb, 0x68, 0x18, 0x47, 0x00, 0x20, 0x10, 0xbd, 0x2d, 0xe9, - 0xf0, 0x4f, 0x89, 0xb0, 0x90, 0x46, 0x99, 0x46, 0x05, 0x46, 0x9d, 0xf8, - 0x48, 0x20, 0xc3, 0x46, 0x9d, 0xf8, 0x50, 0x30, 0x90, 0xf8, 0xfa, 0x71, - 0xdd, 0xe9, 0x15, 0x61, 0x05, 0x91, 0x03, 0x2a, 0x57, 0xd8, 0xdf, 0xe8, - 0x02, 0xf0, 0x1b, 0x02, 0x19, 0x03, 0x02, 0x27, 0x0f, 0x2b, 0x4f, 0xf0, - 0x00, 0x02, 0x05, 0xf1, 0x04, 0x0a, 0x08, 0xbf, 0x95, 0xf8, 0xfd, 0x31, - 0x11, 0x46, 0x50, 0x46, 0x00, 0x92, 0x03, 0x93, 0x3b, 0x46, 0xcd, 0xe9, - 0x01, 0x22, 0x07, 0xf0, 0x8d, 0xfb, 0x04, 0x46, 0x38, 0xb1, 0x09, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x03, 0x27, 0xe7, 0xe7, 0x4f, 0xf0, 0xff, 0x3b, - 0xe4, 0xe7, 0x05, 0x9b, 0x4f, 0xf0, 0xff, 0x32, 0x9d, 0xf8, 0x4c, 0x10, - 0x50, 0x46, 0x07, 0x93, 0x07, 0xab, 0xcd, 0xe9, 0x00, 0x63, 0x5b, 0x46, - 0xfc, 0xf7, 0x72, 0xfa, 0x3b, 0x46, 0x83, 0x46, 0x22, 0x46, 0x21, 0x46, - 0x50, 0x46, 0xcd, 0xe9, 0x02, 0x44, 0xcd, 0xe9, 0x00, 0x44, 0x07, 0xf0, - 0x6b, 0xfb, 0x00, 0x28, 0xdd, 0xd1, 0xbb, 0xf1, 0x00, 0x0f, 0x01, 0xd0, - 0x58, 0x46, 0xd8, 0xe7, 0x95, 0xf8, 0x01, 0x01, 0x00, 0x28, 0xd4, 0xd0, - 0xb9, 0xf1, 0x00, 0x0f, 0x08, 0xbf, 0xb8, 0xf1, 0x04, 0x0f, 0x04, 0xd1, - 0x33, 0x78, 0x43, 0xf0, 0x0a, 0x03, 0x33, 0x70, 0xee, 0xe7, 0xb9, 0xf1, - 0x00, 0x0f, 0x08, 0xbf, 0xb8, 0xf1, 0x02, 0x0f, 0xe8, 0xd1, 0x33, 0x78, - 0x23, 0xf0, 0x04, 0x03, 0xf3, 0xe7, 0x4f, 0xf0, 0xff, 0x30, 0xbc, 0xe7, - 0x08, 0xb5, 0x90, 0xf8, 0x20, 0x30, 0x23, 0xb1, 0x00, 0x69, 0xf9, 0xf7, - 0x3f, 0xfd, 0x00, 0x21, 0x08, 0xbd, 0x18, 0x46, 0xfb, 0xe7, 0x08, 0xb5, - 0x90, 0xf8, 0x20, 0x30, 0x2b, 0xb1, 0x00, 0x69, 0x10, 0x44, 0xf9, 0xf7, - 0x33, 0xfd, 0x00, 0x21, 0x08, 0xbd, 0x18, 0x46, 0xfb, 0xe7, 0xf7, 0xb5, - 0x90, 0xf8, 0x20, 0x10, 0x04, 0x46, 0x15, 0x46, 0xdd, 0xe9, 0x08, 0x67, - 0x71, 0xb1, 0x01, 0x68, 0xcd, 0xe9, 0x00, 0x67, 0x49, 0x6c, 0x88, 0x47, - 0x40, 0xb1, 0x21, 0x69, 0x32, 0x46, 0x20, 0x1d, 0x29, 0x44, 0x03, 0xb0, - 0xbd, 0xe8, 0xf0, 0x40, 0x07, 0xf0, 0xc0, 0xbb, 0x6f, 0xf4, 0x7a, 0x60, - 0x03, 0xb0, 0xf0, 0xbd, 0xf0, 0xb5, 0x90, 0xf8, 0x20, 0x70, 0x85, 0xb0, - 0x04, 0x46, 0x15, 0x46, 0x03, 0x91, 0xdd, 0xe9, 0x0a, 0x6c, 0x7f, 0xb1, - 0x07, 0x68, 0xcd, 0xe9, 0x00, 0x6c, 0x3f, 0x6c, 0xb8, 0x47, 0x48, 0xb1, - 0x22, 0x69, 0x33, 0x46, 0x03, 0x99, 0x20, 0x1d, 0x2a, 0x44, 0x05, 0xb0, - 0xbd, 0xe8, 0xf0, 0x40, 0x07, 0xf0, 0xee, 0xbc, 0x6f, 0xf4, 0x7a, 0x60, - 0x05, 0xb0, 0xf0, 0xbd, 0x90, 0xf8, 0x20, 0x30, 0x10, 0xb5, 0x04, 0x46, - 0x13, 0xb9, 0x43, 0x62, 0x00, 0x20, 0x10, 0xbd, 0x24, 0x30, 0xf9, 0xf7, - 0xeb, 0xfe, 0x00, 0x28, 0xf8, 0xd1, 0x84, 0xf8, 0x20, 0x00, 0x20, 0x1d, - 0xbd, 0xe8, 0x10, 0x40, 0x07, 0xf0, 0x1a, 0xbe, 0x90, 0xf8, 0x20, 0x30, - 0x2d, 0xe9, 0xf0, 0x4f, 0x81, 0x46, 0x85, 0xb0, 0x03, 0xb9, 0x43, 0x62, - 0x09, 0xf1, 0x24, 0x06, 0x56, 0xe8, 0x00, 0x0f, 0x01, 0x30, 0x46, 0xe8, - 0x00, 0x03, 0x00, 0x2b, 0xf8, 0xd1, 0x01, 0x28, 0x43, 0xd1, 0x09, 0xf1, - 0x04, 0x00, 0x07, 0xf0, 0x1f, 0xfe, 0x80, 0x46, 0x30, 0xb1, 0x30, 0x46, - 0xf9, 0xf7, 0xc6, 0xfe, 0x40, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, - 0xd9, 0xe9, 0x06, 0xab, 0xd9, 0xe9, 0x04, 0x45, 0x1a, 0xeb, 0x04, 0x03, - 0x00, 0x93, 0x4b, 0xeb, 0x05, 0x03, 0x01, 0x93, 0xf9, 0xf7, 0xd6, 0xfc, - 0x00, 0x23, 0x00, 0xf1, 0x00, 0x6c, 0x86, 0x46, 0xdd, 0xe9, 0x00, 0x01, - 0x8b, 0x42, 0x08, 0xbf, 0x84, 0x45, 0x05, 0xd2, 0x30, 0x46, 0x6f, 0xf4, - 0x7a, 0x68, 0xf9, 0xf7, 0xa7, 0xfe, 0xdf, 0xe7, 0x00, 0x2d, 0x08, 0xbf, - 0xb4, 0xf1, 0x00, 0x6f, 0xf4, 0xd3, 0x5a, 0xea, 0x0b, 0x03, 0x0e, 0xd1, - 0x4f, 0xf0, 0x00, 0x61, 0x0b, 0x1b, 0x02, 0x93, 0x65, 0xeb, 0x45, 0x03, - 0x03, 0x93, 0xdd, 0xe9, 0x02, 0x67, 0x16, 0xeb, 0x0e, 0x06, 0x47, 0xf1, - 0x00, 0x07, 0xc9, 0xe9, 0x06, 0x67, 0x01, 0x21, 0x89, 0xf8, 0x20, 0x10, - 0xc4, 0xe7, 0x98, 0x46, 0xc2, 0xe7, 0x03, 0x68, 0x99, 0x69, 0x1a, 0x68, - 0x10, 0xb4, 0xcc, 0x05, 0x08, 0xd5, 0x14, 0x06, 0x06, 0xd5, 0x44, 0x6c, - 0x44, 0xf0, 0x01, 0x04, 0x44, 0x64, 0x4f, 0xf4, 0x80, 0x74, 0xdc, 0x61, - 0x4c, 0x05, 0x08, 0xd5, 0x14, 0x06, 0x06, 0xd5, 0x44, 0x6c, 0x44, 0xf0, - 0x08, 0x04, 0x44, 0x64, 0x4f, 0xf4, 0x80, 0x64, 0xdc, 0x61, 0x89, 0x05, - 0x08, 0xd5, 0x12, 0x06, 0x06, 0xd5, 0x42, 0x6c, 0x42, 0xf0, 0x02, 0x02, - 0x42, 0x64, 0x4f, 0xf4, 0x00, 0x72, 0xda, 0x61, 0x41, 0x6c, 0x11, 0xf0, - 0x0b, 0x0f, 0x03, 0xd0, 0x5d, 0xf8, 0x04, 0x4b, 0xfe, 0xf7, 0xd8, 0xba, - 0x5d, 0xf8, 0x04, 0x4b, 0x70, 0x47, 0x02, 0x68, 0x43, 0x6b, 0x91, 0x69, - 0x12, 0x68, 0x03, 0xb1, 0x18, 0x47, 0x70, 0x47, 0x2d, 0xe9, 0xf7, 0x4f, - 0x00, 0x23, 0xdf, 0xf8, 0xbc, 0x81, 0xdf, 0xf8, 0xbc, 0xc1, 0x4f, 0xf0, - 0xb0, 0x49, 0x0a, 0x68, 0x32, 0xfa, 0x03, 0xf4, 0x02, 0xd1, 0x03, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x27, 0x9f, 0x40, 0x3a, 0x40, 0x00, 0xf0, - 0xb6, 0x80, 0x4c, 0x68, 0x4f, 0xea, 0x43, 0x0e, 0x03, 0x25, 0x24, 0xf0, - 0x10, 0x0a, 0x05, 0xfa, 0x0e, 0xf5, 0x0a, 0xf1, 0xff, 0x36, 0xed, 0x43, - 0x01, 0x2e, 0x10, 0xd8, 0x86, 0x68, 0x06, 0xea, 0x05, 0x0b, 0xce, 0x68, - 0x06, 0xfa, 0x0e, 0xf6, 0x46, 0xea, 0x0b, 0x06, 0x86, 0x60, 0x46, 0x68, - 0x26, 0xea, 0x07, 0x07, 0xc4, 0xf3, 0x00, 0x16, 0x9e, 0x40, 0x37, 0x43, - 0x47, 0x60, 0xc7, 0x68, 0xba, 0xf1, 0x02, 0x0f, 0x8e, 0x68, 0x07, 0xea, - 0x05, 0x07, 0x06, 0xfa, 0x0e, 0xf6, 0x46, 0xea, 0x07, 0x06, 0xc6, 0x60, - 0x14, 0xd1, 0x4f, 0xea, 0xd3, 0x0a, 0x03, 0xf0, 0x07, 0x0b, 0x0f, 0x27, - 0x00, 0xeb, 0x8a, 0x0a, 0x4f, 0xea, 0x8b, 0x0b, 0xda, 0xf8, 0x20, 0x60, - 0x07, 0xfa, 0x0b, 0xf7, 0x26, 0xea, 0x07, 0x07, 0x0e, 0x69, 0x06, 0xfa, - 0x0b, 0xf6, 0x3e, 0x43, 0xca, 0xf8, 0x20, 0x60, 0x06, 0x68, 0x35, 0x40, - 0x04, 0xf0, 0x03, 0x06, 0x06, 0xfa, 0x0e, 0xfe, 0x4e, 0xea, 0x05, 0x05, - 0x05, 0x60, 0xe5, 0x00, 0x6b, 0xd5, 0xd8, 0xf8, 0xf4, 0x50, 0x23, 0xf0, - 0x03, 0x06, 0x03, 0xf0, 0x03, 0x07, 0x4f, 0xf0, 0x0f, 0x0e, 0x45, 0xf0, - 0x02, 0x05, 0x06, 0xf1, 0xb0, 0x46, 0xbf, 0x00, 0xc8, 0xf8, 0xf4, 0x50, - 0x06, 0xf5, 0x80, 0x66, 0xd8, 0xf8, 0xf4, 0x50, 0x05, 0xf0, 0x02, 0x05, - 0x01, 0x95, 0x01, 0x9d, 0x0e, 0xfa, 0x07, 0xf5, 0xd6, 0xf8, 0x08, 0xa0, - 0x2a, 0xea, 0x05, 0x0e, 0x31, 0x4d, 0xa8, 0x42, 0x4d, 0xd0, 0x05, 0xf5, - 0x80, 0x65, 0xa8, 0x42, 0x4b, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, - 0x49, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, 0x47, 0xd0, 0x05, 0xf5, - 0x80, 0x65, 0xa8, 0x42, 0x45, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, - 0x43, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, 0x41, 0xd0, 0x05, 0xf5, - 0x80, 0x65, 0xa8, 0x42, 0x3f, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, - 0x3d, 0xd0, 0x05, 0xf5, 0x80, 0x65, 0xa8, 0x42, 0x0c, 0xbf, 0x09, 0x25, - 0x0a, 0x25, 0xbd, 0x40, 0xe7, 0x03, 0x45, 0xea, 0x0e, 0x05, 0xb5, 0x60, - 0x6f, 0xea, 0x02, 0x06, 0xdc, 0xf8, 0x00, 0x50, 0x54, 0xbf, 0x35, 0x40, - 0x15, 0x43, 0xa7, 0x03, 0xcc, 0xf8, 0x00, 0x50, 0xdc, 0xf8, 0x04, 0x50, - 0x54, 0xbf, 0x35, 0x40, 0x15, 0x43, 0xe7, 0x02, 0x4f, 0xf0, 0xb0, 0x47, - 0xcc, 0xf8, 0x04, 0x50, 0xd9, 0xf8, 0x00, 0x50, 0x54, 0xbf, 0x35, 0x40, - 0x15, 0x43, 0xa4, 0x02, 0x3d, 0x60, 0x7d, 0x68, 0x54, 0xbf, 0x35, 0x40, - 0x15, 0x43, 0xc9, 0xf8, 0x04, 0x50, 0x01, 0x33, 0x3b, 0xe7, 0x00, 0x25, - 0xd5, 0xe7, 0x01, 0x25, 0xd3, 0xe7, 0x02, 0x25, 0xd1, 0xe7, 0x03, 0x25, - 0xcf, 0xe7, 0x04, 0x25, 0xcd, 0xe7, 0x05, 0x25, 0xcb, 0xe7, 0x06, 0x25, - 0xc9, 0xe7, 0x07, 0x25, 0xc7, 0xe7, 0x08, 0x25, 0xc5, 0xe7, 0x00, 0xbf, - 0x00, 0x00, 0x02, 0x58, 0x00, 0x44, 0x02, 0x58, 0x80, 0x00, 0x00, 0x58, - 0x0a, 0x4b, 0xda, 0x68, 0x42, 0xf0, 0x01, 0x02, 0xda, 0x60, 0xda, 0x68, - 0xd2, 0x07, 0x0b, 0xd5, 0xd3, 0xf8, 0x0c, 0x21, 0x42, 0xf0, 0x01, 0x02, - 0xc3, 0xf8, 0x0c, 0x21, 0xd3, 0xf8, 0x0c, 0x01, 0xc0, 0x43, 0x00, 0xf0, - 0x01, 0x00, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x00, 0x52, - 0x10, 0x4b, 0xda, 0x68, 0xd2, 0x07, 0x06, 0xd4, 0x0e, 0x4b, 0xd3, 0xf8, - 0x0c, 0x01, 0x10, 0xf0, 0x01, 0x00, 0x0a, 0xd1, 0x70, 0x47, 0x0c, 0x4a, - 0x5a, 0x60, 0x02, 0xf1, 0x88, 0x32, 0x5a, 0x60, 0xdb, 0x68, 0xdb, 0x07, - 0xf0, 0xd5, 0x01, 0x20, 0x70, 0x47, 0x07, 0x4a, 0xc3, 0xf8, 0x04, 0x21, - 0x02, 0xf1, 0x88, 0x32, 0xc3, 0xf8, 0x04, 0x21, 0xd3, 0xf8, 0x0c, 0x01, - 0x00, 0xf0, 0x01, 0x00, 0x70, 0x47, 0x00, 0xbf, 0x00, 0x20, 0x00, 0x52, - 0x23, 0x01, 0x67, 0x45, 0x50, 0x4a, 0x08, 0xb5, 0x03, 0x68, 0x93, 0x42, - 0x52, 0xd0, 0x4f, 0x49, 0x8b, 0x42, 0x4f, 0xd0, 0x18, 0x31, 0x8b, 0x42, - 0x4c, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x49, 0xd0, 0x18, 0x31, 0x8b, 0x42, - 0x46, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x43, 0xd0, 0x18, 0x31, 0x8b, 0x42, - 0x40, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x3d, 0xd0, 0x01, 0xf5, 0x56, 0x71, - 0x8b, 0x42, 0x39, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x36, 0xd0, 0x18, 0x31, - 0x8b, 0x42, 0x33, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x30, 0xd0, 0x18, 0x31, - 0x8b, 0x42, 0x2d, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x2a, 0xd0, 0x18, 0x31, - 0x8b, 0x42, 0x27, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x24, 0xd0, 0x1a, 0x68, - 0x22, 0xf0, 0x0e, 0x02, 0x1a, 0x60, 0x1a, 0x68, 0x22, 0xf0, 0x01, 0x02, - 0x1a, 0x60, 0x35, 0x4a, 0x93, 0x42, 0x43, 0xd1, 0x02, 0x6e, 0x13, 0x68, - 0x23, 0xf4, 0x80, 0x73, 0x13, 0x60, 0xd0, 0xe9, 0x16, 0x13, 0x03, 0xf0, - 0x1f, 0x02, 0x01, 0x23, 0x93, 0x40, 0x4b, 0x60, 0xd0, 0xe9, 0x19, 0x32, - 0x5a, 0x60, 0xc3, 0x6e, 0x00, 0x2b, 0x46, 0xd0, 0x1a, 0x68, 0x22, 0xf4, - 0x80, 0x72, 0x1a, 0x60, 0xd0, 0xe9, 0x1c, 0x32, 0x5a, 0x60, 0x3e, 0xe0, - 0x04, 0x21, 0x93, 0x42, 0x80, 0xf8, 0x35, 0x10, 0x1e, 0xd0, 0x23, 0x4a, - 0x93, 0x42, 0x1b, 0xd0, 0x18, 0x32, 0x93, 0x42, 0x18, 0xd0, 0x18, 0x32, - 0x93, 0x42, 0x15, 0xd0, 0x18, 0x32, 0x93, 0x42, 0x12, 0xd0, 0x18, 0x32, - 0x93, 0x42, 0x0f, 0xd0, 0x18, 0x32, 0x93, 0x42, 0x0c, 0xd0, 0x18, 0x32, - 0x93, 0x42, 0x09, 0xd0, 0x02, 0xf5, 0x56, 0x72, 0x93, 0x42, 0x05, 0xd0, - 0x18, 0x32, 0x93, 0x42, 0x02, 0xd0, 0x18, 0x32, 0x93, 0x42, 0xff, 0xd0, - 0x1a, 0x68, 0x22, 0xf0, 0x01, 0x02, 0x1a, 0x60, 0x00, 0x20, 0x08, 0xbd, - 0x12, 0x4a, 0x93, 0x42, 0xb8, 0xd0, 0x14, 0x32, 0x93, 0x42, 0xb5, 0xd0, - 0x14, 0x32, 0x93, 0x42, 0xb2, 0xd0, 0x14, 0x32, 0x93, 0x42, 0xaf, 0xd0, - 0x14, 0x32, 0x93, 0x42, 0xac, 0xd0, 0x14, 0x32, 0x93, 0x42, 0xa9, 0xd0, - 0x14, 0x32, 0x93, 0x42, 0xa6, 0xd0, 0x00, 0x23, 0x80, 0xf8, 0x34, 0x30, - 0x01, 0x23, 0x80, 0xf8, 0x35, 0x30, 0x03, 0x6d, 0x00, 0x2b, 0xdf, 0xd0, - 0x98, 0x47, 0xdd, 0xe7, 0x10, 0x00, 0x02, 0x40, 0x28, 0x00, 0x02, 0x40, - 0x08, 0x54, 0x02, 0x58, 0x1c, 0x54, 0x02, 0x58, 0x00, 0x28, 0x0d, 0xdb, - 0x43, 0x09, 0x01, 0x22, 0x00, 0xf0, 0x1f, 0x00, 0x20, 0x33, 0x02, 0xfa, - 0x00, 0xf0, 0x04, 0x4a, 0x42, 0xf8, 0x23, 0x00, 0xbf, 0xf3, 0x4f, 0x8f, - 0xbf, 0xf3, 0x6f, 0x8f, 0x70, 0x47, 0x00, 0xbf, 0x00, 0xe1, 0x00, 0xe0, - 0x38, 0xb5, 0x04, 0x46, 0xfb, 0xf7, 0x72, 0xfa, 0x05, 0x46, 0x01, 0x34, - 0xfb, 0xf7, 0x6e, 0xfa, 0x43, 0x1b, 0xa3, 0x42, 0xfa, 0xd3, 0x38, 0xbd, - 0xf8, 0xb5, 0xc5, 0x69, 0x0f, 0x46, 0x0e, 0x68, 0x08, 0x3d, 0xae, 0x42, - 0x13, 0xd3, 0xb6, 0xfb, 0xf5, 0xf0, 0x01, 0x38, 0x13, 0xf0, 0x3e, 0xfe, - 0x84, 0x1c, 0xa6, 0xeb, 0x84, 0x04, 0xb4, 0xfb, 0xf5, 0xf4, 0x20, 0x46, - 0x13, 0xf0, 0x36, 0xfe, 0xa6, 0xeb, 0x80, 0x00, 0x04, 0xfb, 0x15, 0x05, - 0x20, 0x46, 0x3d, 0x60, 0xf8, 0xbd, 0x00, 0x20, 0xfc, 0xe7, 0x2d, 0xe9, - 0xf0, 0x4f, 0x85, 0xb0, 0x0f, 0x46, 0x91, 0x46, 0x98, 0x46, 0x10, 0x9d, - 0x03, 0x90, 0xdd, 0xe9, 0x0e, 0x46, 0x0d, 0xb9, 0x28, 0x46, 0x59, 0xe0, - 0x03, 0x9b, 0x18, 0x68, 0xb9, 0xf1, 0x00, 0x0f, 0x1e, 0xd0, 0xd9, 0xf8, - 0x00, 0x30, 0x43, 0x45, 0x1a, 0xd1, 0xd9, 0xf8, 0x04, 0x10, 0xa1, 0x42, - 0x16, 0xd8, 0x82, 0x69, 0x01, 0xeb, 0x02, 0x0a, 0x54, 0x45, 0x11, 0xd2, - 0xaa, 0xeb, 0x04, 0x0a, 0x61, 0x1a, 0xd9, 0xf8, 0x08, 0x30, 0xaa, 0x45, - 0x28, 0xbf, 0xaa, 0x46, 0x30, 0x46, 0x52, 0x46, 0x19, 0x44, 0x56, 0x44, - 0x54, 0x44, 0xa5, 0xeb, 0x0a, 0x05, 0x11, 0xf0, 0xfb, 0xfe, 0xd8, 0xe7, - 0x3a, 0x68, 0x43, 0x69, 0x90, 0x45, 0x0e, 0xd1, 0x79, 0x68, 0x8c, 0x42, - 0x0b, 0xd3, 0x01, 0xeb, 0x03, 0x0a, 0x54, 0x45, 0x07, 0xd2, 0xaa, 0xeb, - 0x04, 0x0a, 0x61, 0x1a, 0xbb, 0x68, 0xaa, 0x45, 0x28, 0xbf, 0xaa, 0x46, - 0xe2, 0xe7, 0xb4, 0xfb, 0xf3, 0xf2, 0x03, 0xfb, 0x12, 0x42, 0xd0, 0xf8, - 0x04, 0xb0, 0x8a, 0xb9, 0x9d, 0x42, 0x0f, 0xd3, 0x22, 0x46, 0x41, 0x46, - 0xb5, 0xfb, 0xf3, 0xfa, 0x03, 0xfb, 0x1a, 0x5a, 0x33, 0x46, 0xa5, 0xeb, - 0x0a, 0x05, 0x00, 0x95, 0xd8, 0x47, 0x68, 0xb9, 0x2e, 0x44, 0x2c, 0x44, - 0x55, 0x46, 0xac, 0xe7, 0xa2, 0x1a, 0x00, 0x93, 0x41, 0x46, 0xbb, 0x68, - 0xc7, 0xf8, 0x00, 0x80, 0x7a, 0x60, 0xd8, 0x47, 0x00, 0x28, 0xa2, 0xd0, - 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x2d, 0xe9, 0xf0, 0x4f, 0x8b, 0xb0, - 0x91, 0x46, 0x07, 0x46, 0x88, 0x46, 0x14, 0x9a, 0x07, 0xa9, 0x00, 0x68, - 0x0d, 0xf1, 0x20, 0x0b, 0x01, 0x3a, 0x05, 0x93, 0xdd, 0xf8, 0x58, 0xa0, - 0x07, 0x92, 0xff, 0xf7, 0x67, 0xff, 0x05, 0x9b, 0x05, 0x46, 0x19, 0x46, - 0x05, 0x93, 0x50, 0x46, 0x15, 0x9b, 0x98, 0x47, 0x02, 0x46, 0x18, 0xbb, - 0x15, 0xb3, 0x05, 0xf0, 0x01, 0x06, 0x4a, 0x46, 0x00, 0x90, 0x38, 0x46, - 0xc6, 0xf1, 0x02, 0x04, 0x05, 0x9b, 0xa1, 0x00, 0xcd, 0xe9, 0x01, 0xb1, - 0x41, 0x46, 0xff, 0xf7, 0x6c, 0xff, 0x02, 0x46, 0x90, 0xb9, 0x01, 0x3c, - 0x94, 0x42, 0x07, 0xdc, 0x0a, 0xab, 0x02, 0x3e, 0x03, 0xeb, 0x84, 0x04, - 0x35, 0x44, 0x54, 0xf8, 0x08, 0x3c, 0xdc, 0xe7, 0x08, 0x99, 0x50, 0x46, - 0x15, 0x9b, 0x98, 0x47, 0x01, 0x22, 0x00, 0x28, 0xee, 0xd0, 0x02, 0x46, - 0x10, 0x46, 0x0b, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x2d, 0xe9, 0xf0, 0x47, - 0x86, 0xb0, 0x05, 0x46, 0x0f, 0x46, 0x14, 0x46, 0x00, 0xf1, 0x14, 0x09, - 0xd6, 0x18, 0x4f, 0xf0, 0x01, 0x0a, 0x0d, 0xf1, 0x17, 0x08, 0xb4, 0x42, - 0x03, 0xd1, 0x00, 0x20, 0x06, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x00, 0x94, - 0x3b, 0x46, 0x00, 0x22, 0x49, 0x46, 0x28, 0x46, 0x01, 0x34, 0xcd, 0xe9, - 0x01, 0x8a, 0xff, 0xf7, 0x36, 0xff, 0x00, 0x28, 0xf0, 0xd1, 0x01, 0x22, - 0x41, 0x46, 0x0e, 0x98, 0xfe, 0xf7, 0xec, 0xfc, 0xe7, 0xe7, 0x1f, 0xb5, - 0x06, 0x9c, 0x00, 0x92, 0x00, 0x22, 0xcd, 0xe9, 0x01, 0x34, 0x0b, 0x46, - 0x00, 0xf1, 0x14, 0x01, 0xff, 0xf7, 0x23, 0xff, 0x04, 0xb0, 0x10, 0xbd, - 0x2d, 0xe9, 0xf0, 0x4f, 0x13, 0x68, 0x8b, 0xb0, 0x00, 0x26, 0x07, 0x46, - 0x04, 0x93, 0x0c, 0x46, 0x53, 0x68, 0xb0, 0x46, 0x0d, 0xf1, 0x10, 0x0b, - 0x06, 0xad, 0x4f, 0xf0, 0x10, 0x0a, 0x05, 0x93, 0x5b, 0xf8, 0x26, 0x90, - 0x2b, 0x46, 0x00, 0x22, 0x38, 0x46, 0x49, 0x46, 0xcd, 0xf8, 0x00, 0xa0, - 0xff, 0xf7, 0xd9, 0xff, 0x70, 0xb1, 0x10, 0xf1, 0x34, 0x0f, 0x06, 0xd1, - 0x46, 0xb1, 0xb8, 0xf1, 0x00, 0x0f, 0x14, 0xbf, 0x00, 0x20, 0x6f, 0xf0, - 0x33, 0x00, 0x0b, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x26, 0xe5, 0xe7, - 0xb8, 0xf1, 0x00, 0x0f, 0x04, 0xd0, 0xe2, 0x69, 0x06, 0x9b, 0x9b, 0x1a, - 0x00, 0x2b, 0xeb, 0xdb, 0x07, 0x9b, 0x23, 0xf0, 0x00, 0x43, 0x13, 0x2b, - 0xe6, 0xd9, 0x3a, 0x68, 0xd2, 0x69, 0x93, 0x42, 0xe2, 0xd8, 0x4f, 0xf0, - 0xff, 0x33, 0x03, 0xa8, 0x10, 0x22, 0x29, 0x46, 0x03, 0x93, 0xfe, 0xf7, - 0x9b, 0xfc, 0x07, 0x9b, 0x10, 0x22, 0x00, 0x90, 0x49, 0x46, 0x23, 0xf0, - 0x00, 0x43, 0x38, 0x46, 0x10, 0x3b, 0xff, 0xf7, 0x81, 0xff, 0x00, 0x28, - 0xcb, 0xd1, 0x03, 0x9b, 0x00, 0x2b, 0xcb, 0xd1, 0x0a, 0xaa, 0x86, 0xf0, - 0x01, 0x03, 0x04, 0xf1, 0x1c, 0x0c, 0xc4, 0xf8, 0x04, 0x90, 0x02, 0xeb, - 0x83, 0x03, 0x4f, 0xf0, 0x01, 0x08, 0x53, 0xf8, 0x18, 0x3c, 0xc4, 0xe9, - 0x02, 0x3a, 0x95, 0xe8, 0x0f, 0x00, 0x8c, 0xe8, 0x0f, 0x00, 0xb7, 0xe7, + 0xf0, 0x83, 0x40, 0x68, 0x03, 0x68, 0x1b, 0x69, 0x18, 0x47, 0x40, 0x68, + 0x03, 0x68, 0xdb, 0x68, 0x18, 0x47, 0x73, 0xb5, 0x04, 0x46, 0x40, 0x68, + 0x03, 0x68, 0x9b, 0x68, 0x98, 0x47, 0x05, 0x46, 0x58, 0xbb, 0x60, 0x68, + 0x03, 0x68, 0x9b, 0x6b, 0x98, 0x47, 0x23, 0x7a, 0x3b, 0xb1, 0x25, 0x72, + 0xd4, 0xe9, 0x04, 0x32, 0xc3, 0x1a, 0x61, 0xeb, 0x02, 0x02, 0xc4, 0xe9, + 0x04, 0x32, 0x23, 0x7e, 0x43, 0xb1, 0x00, 0x26, 0xd4, 0xe9, 0x08, 0x32, + 0x26, 0x76, 0xc3, 0x1a, 0x61, 0xeb, 0x02, 0x01, 0xc4, 0xe9, 0x08, 0x31, + 0xd4, 0xe9, 0x04, 0x16, 0xd4, 0xe9, 0x08, 0x32, 0x20, 0x68, 0x5b, 0x1a, + 0x62, 0xeb, 0x06, 0x02, 0xcd, 0xe9, 0x00, 0x32, 0x00, 0x22, 0x41, 0x6c, + 0x00, 0x23, 0x20, 0x46, 0x88, 0x47, 0x00, 0x28, 0x08, 0xbf, 0x6f, 0xf4, + 0x7a, 0x65, 0x28, 0x46, 0x02, 0xb0, 0x70, 0xbd, 0x70, 0x47, 0x40, 0x68, + 0x10, 0xb1, 0x03, 0x68, 0x9b, 0x6c, 0x18, 0x47, 0x70, 0x47, 0x40, 0x7e, + 0x70, 0x47, 0x00, 0x7e, 0x70, 0x47, 0xd0, 0xe9, 0x04, 0x21, 0x10, 0xb5, + 0xd0, 0xe9, 0x02, 0x34, 0x98, 0x18, 0x44, 0xeb, 0x01, 0x01, 0x10, 0xbd, + 0xd0, 0xe9, 0x02, 0x01, 0x70, 0x47, 0xd0, 0xe9, 0x04, 0x01, 0x70, 0x47, + 0x90, 0xf8, 0x20, 0x30, 0x1b, 0xb1, 0x40, 0x68, 0x03, 0x68, 0x5b, 0x6b, + 0x18, 0x47, 0x6f, 0xf4, 0x7a, 0x60, 0x70, 0x47, 0x90, 0xf8, 0x20, 0x10, + 0x30, 0xb4, 0x59, 0xb1, 0xd0, 0xe9, 0x01, 0x14, 0xc0, 0x68, 0x0d, 0x68, + 0x12, 0x19, 0x2d, 0x6b, 0x40, 0xeb, 0x03, 0x03, 0x08, 0x46, 0x29, 0x46, + 0x30, 0xbc, 0x08, 0x47, 0x00, 0x20, 0x00, 0x21, 0x30, 0xbc, 0x70, 0x47, + 0x90, 0xf8, 0x20, 0x30, 0x1b, 0xb1, 0x40, 0x68, 0x03, 0x68, 0xdb, 0x6a, + 0x18, 0x47, 0x00, 0x20, 0x00, 0x21, 0x70, 0x47, 0x90, 0xf8, 0x20, 0x30, + 0x1b, 0xb1, 0x40, 0x68, 0x03, 0x68, 0x9b, 0x6a, 0x18, 0x47, 0x00, 0x20, + 0x00, 0x21, 0x70, 0x47, 0x90, 0xf8, 0x20, 0x30, 0x1b, 0xb1, 0x40, 0x68, + 0x03, 0x68, 0x5b, 0x6a, 0x18, 0x47, 0x00, 0x20, 0x00, 0x21, 0x70, 0x47, + 0x2d, 0xe9, 0xf3, 0x41, 0x90, 0xf8, 0x20, 0x10, 0x04, 0x46, 0x15, 0x46, + 0x98, 0x46, 0xdd, 0xe9, 0x08, 0x67, 0x99, 0xb1, 0x01, 0x68, 0xcd, 0xe9, + 0x00, 0x67, 0x49, 0x6c, 0x88, 0x47, 0x68, 0xb1, 0xe3, 0x68, 0xd4, 0xe9, + 0x01, 0x02, 0x01, 0x68, 0xaa, 0x18, 0xcd, 0xe9, 0x08, 0x67, 0x48, 0xeb, + 0x03, 0x03, 0xc9, 0x69, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x41, 0x08, 0x47, + 0x6f, 0xf4, 0x7a, 0x60, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x2d, 0xe9, + 0xf0, 0x43, 0x90, 0xf8, 0x20, 0xc0, 0x85, 0xb0, 0x04, 0x46, 0x15, 0x46, + 0x98, 0x46, 0x03, 0x91, 0xdd, 0xe9, 0x0c, 0x67, 0xbc, 0xf1, 0x00, 0x0f, + 0x16, 0xd0, 0xcd, 0xe9, 0x00, 0x67, 0x01, 0x68, 0xd1, 0xf8, 0x40, 0x90, + 0xc8, 0x47, 0x78, 0xb1, 0xe3, 0x68, 0x03, 0x99, 0xd4, 0xe9, 0x01, 0x02, + 0x04, 0x68, 0xaa, 0x18, 0xcd, 0xe9, 0x0c, 0x67, 0xa4, 0x69, 0x48, 0xeb, + 0x03, 0x03, 0xa4, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, 0x60, 0x47, + 0x6f, 0xf4, 0x7a, 0x60, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x2d, 0xe9, + 0xf0, 0x43, 0x90, 0xf8, 0x20, 0xc0, 0x85, 0xb0, 0x04, 0x46, 0x15, 0x46, + 0x98, 0x46, 0x03, 0x91, 0xdd, 0xe9, 0x0c, 0x67, 0xbc, 0xf1, 0x00, 0x0f, + 0x16, 0xd0, 0xcd, 0xe9, 0x00, 0x67, 0x01, 0x68, 0xd1, 0xf8, 0x3c, 0x90, + 0xc8, 0x47, 0x78, 0xb1, 0xe3, 0x68, 0x03, 0x99, 0xd4, 0xe9, 0x01, 0x02, + 0x04, 0x68, 0xaa, 0x18, 0xcd, 0xe9, 0x0c, 0x67, 0x64, 0x69, 0x48, 0xeb, + 0x03, 0x03, 0xa4, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, 0x60, 0x47, + 0x6f, 0xf4, 0x7a, 0x60, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x90, 0xf8, + 0x20, 0x30, 0x1b, 0xb1, 0x40, 0x68, 0x03, 0x68, 0x1b, 0x69, 0x18, 0x47, + 0x6f, 0xf4, 0x7a, 0x60, 0x70, 0x47, 0x2d, 0xe9, 0xf0, 0x47, 0xd0, 0xe9, + 0x01, 0x14, 0x05, 0x68, 0x4f, 0xea, 0x64, 0x0a, 0x9d, 0xf8, 0x20, 0xc0, + 0x05, 0xeb, 0x64, 0x00, 0xe4, 0x07, 0x9d, 0xf8, 0x24, 0xe0, 0x48, 0xbf, + 0x55, 0xf8, 0x0a, 0x40, 0x9d, 0xf8, 0x28, 0x80, 0xdd, 0xf8, 0x2c, 0x90, + 0x48, 0xbf, 0x61, 0x58, 0xdd, 0xe9, 0x0c, 0x67, 0xcd, 0xe9, 0x0a, 0x89, + 0xcd, 0xe9, 0x0c, 0x67, 0xcd, 0xe9, 0x08, 0xce, 0xbd, 0xe8, 0xf0, 0x47, + 0x08, 0x47, 0xff, 0x20, 0x70, 0x47, 0xd0, 0xe9, 0x44, 0x01, 0x70, 0x47, + 0xf0, 0xb5, 0x1f, 0x46, 0xd0, 0xf8, 0x18, 0x31, 0x16, 0x46, 0x01, 0x33, + 0x2d, 0xd1, 0xd0, 0xf8, 0x60, 0x21, 0xd0, 0xe9, 0x44, 0x45, 0xaf, 0x42, + 0x08, 0xbf, 0xa6, 0x42, 0x1c, 0xd2, 0xd0, 0xf8, 0x28, 0x11, 0xc9, 0xb1, + 0x01, 0x29, 0x0c, 0xd0, 0x00, 0xf5, 0xb4, 0x7c, 0x00, 0x23, 0x99, 0x42, + 0x12, 0xdd, 0xfc, 0xe8, 0x02, 0x45, 0xbd, 0x42, 0x08, 0xbf, 0xb4, 0x42, + 0x02, 0xd2, 0x01, 0x33, 0xf5, 0xe7, 0x00, 0x23, 0x03, 0x44, 0x01, 0x21, + 0x93, 0xf8, 0x54, 0x41, 0x00, 0x23, 0x0c, 0x42, 0x05, 0xd0, 0x72, 0x33, + 0x50, 0xf8, 0x23, 0x20, 0x10, 0x46, 0xd1, 0x17, 0xf0, 0xbd, 0x01, 0x33, + 0x49, 0x00, 0x04, 0x2b, 0x49, 0xb2, 0xf2, 0xd1, 0xf6, 0xe7, 0x4f, 0xf4, + 0x80, 0x50, 0x00, 0x21, 0xf4, 0xe7, 0x00, 0x00, 0x00, 0x48, 0x70, 0x47, + 0x84, 0xd9, 0x01, 0x08, 0xd0, 0xf8, 0x60, 0x01, 0x00, 0x21, 0x70, 0x47, + 0x01, 0x20, 0x00, 0x21, 0x70, 0x47, 0x2d, 0xe9, 0xf7, 0x4f, 0x16, 0x46, + 0x01, 0x68, 0x02, 0x69, 0x05, 0x46, 0x00, 0x93, 0x01, 0x92, 0x89, 0x6b, + 0x47, 0x69, 0xdd, 0xe9, 0x0c, 0xab, 0x16, 0xeb, 0x0a, 0x08, 0x43, 0xeb, + 0x0b, 0x09, 0x88, 0x47, 0x49, 0x45, 0x08, 0xbf, 0x40, 0x45, 0xdd, 0xe9, + 0x00, 0x32, 0x03, 0xd2, 0x00, 0x20, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, + 0x16, 0xf1, 0x78, 0x44, 0x28, 0x46, 0x43, 0xf1, 0xff, 0x31, 0xa4, 0x18, + 0x2a, 0x68, 0x41, 0xeb, 0x07, 0x07, 0x11, 0x6b, 0x32, 0x46, 0x88, 0x47, + 0x02, 0x46, 0x0b, 0x46, 0x20, 0x46, 0x39, 0x46, 0x14, 0xf0, 0xf2, 0xfe, + 0x13, 0x43, 0xe7, 0xd1, 0x14, 0xeb, 0x0a, 0x04, 0x2b, 0x68, 0x28, 0x46, + 0x47, 0xeb, 0x0b, 0x07, 0x18, 0xf1, 0xff, 0x32, 0x19, 0x6b, 0x49, 0xf1, + 0xff, 0x33, 0x88, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x20, 0x46, 0x39, 0x46, + 0x14, 0xf0, 0xde, 0xfe, 0x13, 0x43, 0x0c, 0xbf, 0x01, 0x20, 0x00, 0x20, + 0xd1, 0xe7, 0x00, 0x00, 0x00, 0x48, 0x70, 0x47, 0x8a, 0xd9, 0x01, 0x08, + 0xd0, 0xe9, 0x06, 0x01, 0x70, 0x47, 0x90, 0xf8, 0x20, 0x30, 0x00, 0x2b, + 0x0c, 0xbf, 0x4f, 0xf0, 0xff, 0x30, 0xff, 0x20, 0x70, 0x47, 0x90, 0xf8, + 0x20, 0x30, 0x13, 0xb1, 0x20, 0x20, 0x00, 0x21, 0x70, 0x47, 0x00, 0x20, + 0xfb, 0xe7, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xcd, 0xfa, 0x20, 0x46, + 0x12, 0xf0, 0x78, 0xff, 0x20, 0x46, 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, + 0xff, 0xf7, 0x22, 0xfb, 0x20, 0x46, 0x12, 0xf0, 0x6f, 0xff, 0x20, 0x46, + 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xaf, 0xfa, 0x20, 0x46, + 0x12, 0xf0, 0x66, 0xff, 0x20, 0x46, 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, + 0xff, 0xf7, 0x04, 0xfb, 0x20, 0x46, 0x12, 0xf0, 0x5d, 0xff, 0x20, 0x46, + 0x10, 0xbd, 0x03, 0x68, 0x9b, 0x6a, 0x10, 0xb5, 0x04, 0x46, 0x13, 0xb9, + 0xc0, 0x69, 0x12, 0xf0, 0x53, 0xff, 0x23, 0x68, 0xdb, 0x6a, 0x13, 0xb9, + 0xa0, 0x6a, 0x12, 0xf0, 0x4d, 0xff, 0x23, 0x68, 0x1b, 0x6b, 0x23, 0xb9, + 0xe0, 0x6b, 0xbd, 0xe8, 0x10, 0x40, 0x12, 0xf0, 0x45, 0xbf, 0x10, 0xbd, + 0x03, 0x68, 0x73, 0xb5, 0x0c, 0x46, 0x9b, 0x6f, 0x06, 0x46, 0x98, 0x47, + 0x01, 0xa9, 0x20, 0x46, 0xff, 0xf7, 0x39, 0xfc, 0x05, 0x46, 0x00, 0xb9, + 0x20, 0x60, 0x33, 0x68, 0x30, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x14, 0xb1, + 0x20, 0x46, 0x12, 0xf0, 0x2f, 0xff, 0x28, 0x46, 0x02, 0xb0, 0xbd, 0xe8, + 0x70, 0x40, 0xff, 0xf7, 0x11, 0xbc, 0x08, 0xb1, 0x12, 0xf0, 0x26, 0xbf, + 0x70, 0x47, 0x10, 0xb5, 0x04, 0x46, 0x12, 0xf0, 0x21, 0xff, 0x20, 0x46, + 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, 0x12, 0xf0, 0x1b, 0xff, 0x20, 0x46, + 0x10, 0xbd, 0x0b, 0x46, 0x40, 0xf2, 0x01, 0x12, 0x00, 0x21, 0x70, 0xb5, + 0x04, 0x46, 0x18, 0x46, 0x12, 0xf0, 0x76, 0xff, 0x03, 0x46, 0x60, 0x68, + 0xa1, 0x68, 0x02, 0x68, 0x55, 0x6e, 0x1a, 0x46, 0x2b, 0x46, 0xbd, 0xe8, + 0x70, 0x40, 0x18, 0x47, 0x10, 0xb5, 0x0c, 0x46, 0x82, 0x69, 0xff, 0x21, + 0xa0, 0x68, 0x12, 0xf0, 0x65, 0xff, 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x60, + 0x10, 0xbd, 0xf7, 0xb5, 0x0c, 0x46, 0x09, 0x68, 0x06, 0x46, 0x17, 0x46, + 0x4b, 0x1c, 0x21, 0xd0, 0x00, 0x68, 0x83, 0x69, 0x00, 0x93, 0x85, 0x68, + 0xd4, 0xe9, 0x01, 0x23, 0xa8, 0x47, 0x05, 0x46, 0x20, 0xb9, 0x37, 0xb9, + 0x21, 0x46, 0x30, 0x68, 0xff, 0xf7, 0xe0, 0xff, 0x28, 0x46, 0x03, 0xb0, + 0xf0, 0xbd, 0x33, 0x68, 0x39, 0x46, 0x30, 0x46, 0x9b, 0x69, 0x01, 0x93, + 0xa3, 0x68, 0x00, 0x93, 0xd4, 0xe9, 0x00, 0x23, 0xf9, 0xf7, 0xa9, 0xff, + 0x00, 0x28, 0x05, 0xdb, 0xea, 0xd1, 0x6f, 0xf0, 0x33, 0x05, 0xeb, 0xe7, + 0x00, 0x25, 0xe9, 0xe7, 0x05, 0x46, 0xe7, 0xe7, 0x2d, 0xe9, 0xf7, 0x4f, + 0x0c, 0x9c, 0x07, 0x46, 0x0d, 0x46, 0x91, 0x46, 0x98, 0x46, 0xdd, 0xf8, + 0x38, 0xa0, 0xba, 0xf1, 0x00, 0x0f, 0x03, 0xd1, 0x50, 0x46, 0x03, 0xb0, + 0xbd, 0xe8, 0xf0, 0x8f, 0x2b, 0x68, 0x38, 0x68, 0x43, 0x45, 0x82, 0x69, + 0x28, 0xd1, 0x6b, 0x68, 0xa3, 0x42, 0x25, 0xd8, 0x03, 0xeb, 0x02, 0x0b, + 0xa3, 0x45, 0x21, 0xd9, 0xab, 0xeb, 0x04, 0x0b, 0xe0, 0x1a, 0xab, 0x68, + 0xd3, 0x45, 0x0d, 0x99, 0x18, 0x44, 0x28, 0xbf, 0xd3, 0x46, 0x5a, 0x46, + 0x5c, 0x44, 0x12, 0xf0, 0xfd, 0xfe, 0x0d, 0x9b, 0x5b, 0x44, 0xaa, 0xeb, + 0x0b, 0x0b, 0x0d, 0x93, 0x3b, 0x68, 0x9a, 0x69, 0xb4, 0xfb, 0xf2, 0xf3, + 0x02, 0xfb, 0x13, 0x43, 0x33, 0xb9, 0x4a, 0x46, 0x29, 0x46, 0x38, 0x46, + 0xff, 0xf7, 0x99, 0xff, 0x00, 0x28, 0xd0, 0xd1, 0xda, 0x46, 0xca, 0xe7, + 0xb4, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x43, 0x4b, 0xbb, 0x92, 0x45, + 0x27, 0xd3, 0x41, 0x46, 0xba, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0xab, + 0x22, 0x46, 0xaa, 0xeb, 0x0b, 0x0a, 0xcd, 0xf8, 0x00, 0xa0, 0x83, 0x68, + 0x1e, 0x46, 0x0d, 0x9b, 0xb0, 0x47, 0x00, 0x28, 0xb7, 0xd1, 0xb9, 0xf1, + 0x00, 0x0f, 0x04, 0xd1, 0x0d, 0x9b, 0x54, 0x44, 0x53, 0x44, 0x0d, 0x93, + 0xde, 0xe7, 0x0d, 0x9b, 0x42, 0x46, 0x49, 0x46, 0x38, 0x46, 0x00, 0x93, + 0x23, 0x46, 0xcd, 0xf8, 0x04, 0xa0, 0xf9, 0xf7, 0x38, 0xff, 0x00, 0x28, + 0xa3, 0xdb, 0xed, 0xd1, 0x6f, 0xf0, 0x33, 0x00, 0x9f, 0xe7, 0xe3, 0x1a, + 0xd3, 0x46, 0xc5, 0xf8, 0x00, 0x80, 0x6b, 0x60, 0xc8, 0xe7, 0x00, 0x00, + 0x70, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x86, 0xfb, 0x05, 0x46, 0x00, 0x28, + 0x3f, 0xd1, 0x23, 0x78, 0x03, 0x2b, 0x35, 0xd1, 0x26, 0x79, 0x01, 0x2e, + 0x32, 0xd1, 0x01, 0x46, 0xa2, 0x89, 0x60, 0x6b, 0x12, 0xf0, 0xae, 0xfe, + 0x63, 0x6b, 0x55, 0x22, 0x41, 0x21, 0x72, 0x20, 0x83, 0xf8, 0xfe, 0x21, + 0xaa, 0x22, 0x83, 0xf8, 0xff, 0x21, 0x52, 0x23, 0x62, 0x6b, 0x13, 0x70, + 0x53, 0x70, 0x61, 0x23, 0xd1, 0x70, 0x93, 0x70, 0x62, 0x6b, 0x82, 0xf8, + 0xe7, 0x31, 0x82, 0xf8, 0xe4, 0x01, 0x82, 0xf8, 0xe5, 0x01, 0x82, 0xf8, + 0xe6, 0x11, 0x60, 0x6b, 0x61, 0x69, 0x00, 0xf5, 0xf4, 0x70, 0xff, 0xf7, + 0x7b, 0xfb, 0x60, 0x6b, 0x21, 0x69, 0x00, 0xf5, 0xf6, 0x70, 0xff, 0xf7, + 0x75, 0xfb, 0x22, 0x6a, 0x33, 0x46, 0x61, 0x6b, 0x01, 0x32, 0x60, 0x78, + 0x22, 0x63, 0xff, 0xf7, 0xbb, 0xfa, 0x25, 0x71, 0x62, 0x78, 0x03, 0x4b, + 0x53, 0xf8, 0x22, 0x00, 0xb0, 0xfa, 0x80, 0xf0, 0x40, 0x09, 0x70, 0xbd, + 0xa8, 0x15, 0x02, 0x24, 0x90, 0xf8, 0x20, 0x30, 0x10, 0xb5, 0x04, 0x46, + 0x5b, 0xb1, 0x1c, 0x30, 0xf9, 0xf7, 0x1c, 0xfe, 0x38, 0xb9, 0x84, 0xf8, + 0x20, 0x00, 0x60, 0x68, 0x03, 0x68, 0xbd, 0xe8, 0x10, 0x40, 0xdb, 0x68, + 0x18, 0x47, 0x00, 0x20, 0x10, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, 0x89, 0xb0, + 0x90, 0x46, 0x99, 0x46, 0x05, 0x46, 0x9d, 0xf8, 0x48, 0x20, 0xc3, 0x46, + 0x9d, 0xf8, 0x50, 0x30, 0x90, 0xf8, 0xfa, 0x71, 0xdd, 0xe9, 0x15, 0x61, + 0x05, 0x91, 0x03, 0x2a, 0x57, 0xd8, 0xdf, 0xe8, 0x02, 0xf0, 0x1b, 0x02, + 0x19, 0x03, 0x02, 0x27, 0x0f, 0x2b, 0x4f, 0xf0, 0x00, 0x02, 0x05, 0xf1, + 0x04, 0x0a, 0x08, 0xbf, 0x95, 0xf8, 0xfd, 0x31, 0x11, 0x46, 0x50, 0x46, + 0x00, 0x92, 0x03, 0x93, 0x3b, 0x46, 0xcd, 0xe9, 0x01, 0x22, 0x07, 0xf0, + 0x91, 0xf8, 0x04, 0x46, 0x38, 0xb1, 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, + 0x03, 0x27, 0xe7, 0xe7, 0x4f, 0xf0, 0xff, 0x3b, 0xe4, 0xe7, 0x05, 0x9b, + 0x4f, 0xf0, 0xff, 0x32, 0x9d, 0xf8, 0x4c, 0x10, 0x50, 0x46, 0x07, 0x93, + 0x07, 0xab, 0xcd, 0xe9, 0x00, 0x63, 0x5b, 0x46, 0xfc, 0xf7, 0x22, 0xfa, + 0x3b, 0x46, 0x83, 0x46, 0x22, 0x46, 0x21, 0x46, 0x50, 0x46, 0xcd, 0xe9, + 0x02, 0x44, 0xcd, 0xe9, 0x00, 0x44, 0x07, 0xf0, 0x6f, 0xf8, 0x00, 0x28, + 0xdd, 0xd1, 0xbb, 0xf1, 0x00, 0x0f, 0x01, 0xd0, 0x58, 0x46, 0xd8, 0xe7, + 0x95, 0xf8, 0x01, 0x01, 0x00, 0x28, 0xd4, 0xd0, 0xb9, 0xf1, 0x00, 0x0f, + 0x08, 0xbf, 0xb8, 0xf1, 0x04, 0x0f, 0x04, 0xd1, 0x33, 0x78, 0x43, 0xf0, + 0x0a, 0x03, 0x33, 0x70, 0xee, 0xe7, 0xb9, 0xf1, 0x00, 0x0f, 0x08, 0xbf, + 0xb8, 0xf1, 0x02, 0x0f, 0xe8, 0xd1, 0x33, 0x78, 0x23, 0xf0, 0x04, 0x03, + 0xf3, 0xe7, 0x4f, 0xf0, 0xff, 0x30, 0xbc, 0xe7, 0x08, 0xb5, 0x90, 0xf8, + 0x20, 0x30, 0x2b, 0xb1, 0x00, 0x69, 0x10, 0x44, 0xf9, 0xf7, 0x5a, 0xfc, + 0x00, 0x21, 0x08, 0xbd, 0x18, 0x46, 0xfb, 0xe7, 0x08, 0xb5, 0x90, 0xf8, + 0x20, 0x30, 0x23, 0xb1, 0x00, 0x69, 0xf9, 0xf7, 0x4f, 0xfc, 0x00, 0x21, + 0x08, 0xbd, 0x18, 0x46, 0xfb, 0xe7, 0xf7, 0xb5, 0x90, 0xf8, 0x20, 0x10, + 0x04, 0x46, 0x15, 0x46, 0xdd, 0xe9, 0x08, 0x67, 0x71, 0xb1, 0x01, 0x68, + 0xcd, 0xe9, 0x00, 0x67, 0x49, 0x6c, 0x88, 0x47, 0x40, 0xb1, 0x21, 0x69, + 0x32, 0x46, 0x20, 0x1d, 0x29, 0x44, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, + 0x07, 0xf0, 0xc4, 0xb8, 0x6f, 0xf4, 0x7a, 0x60, 0x03, 0xb0, 0xf0, 0xbd, + 0xf0, 0xb5, 0x90, 0xf8, 0x20, 0x70, 0x85, 0xb0, 0x04, 0x46, 0x15, 0x46, + 0x03, 0x91, 0xdd, 0xe9, 0x0a, 0x6c, 0x7f, 0xb1, 0x07, 0x68, 0xcd, 0xe9, + 0x00, 0x6c, 0x3f, 0x6c, 0xb8, 0x47, 0x48, 0xb1, 0x22, 0x69, 0x33, 0x46, + 0x03, 0x99, 0x20, 0x1d, 0x2a, 0x44, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, + 0x07, 0xf0, 0xf2, 0xb9, 0x6f, 0xf4, 0x7a, 0x60, 0x05, 0xb0, 0xf0, 0xbd, + 0x90, 0xf8, 0x20, 0x30, 0x10, 0xb5, 0x04, 0x46, 0x13, 0xb9, 0x43, 0x62, + 0x00, 0x20, 0x10, 0xbd, 0x24, 0x30, 0xf9, 0xf7, 0x49, 0xfd, 0x00, 0x28, + 0xf8, 0xd1, 0x84, 0xf8, 0x20, 0x00, 0x20, 0x1d, 0xbd, 0xe8, 0x10, 0x40, + 0x07, 0xf0, 0x1e, 0xbb, 0x90, 0xf8, 0x20, 0x30, 0x2d, 0xe9, 0xf0, 0x4f, + 0x81, 0x46, 0x85, 0xb0, 0x03, 0xb9, 0x43, 0x62, 0x09, 0xf1, 0x24, 0x06, + 0x56, 0xe8, 0x00, 0x0f, 0x01, 0x30, 0x46, 0xe8, 0x00, 0x03, 0x00, 0x2b, + 0xf8, 0xd1, 0x01, 0x28, 0x43, 0xd1, 0x09, 0xf1, 0x04, 0x00, 0x07, 0xf0, + 0x23, 0xfb, 0x80, 0x46, 0x30, 0xb1, 0x30, 0x46, 0xf9, 0xf7, 0x24, 0xfd, + 0x40, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xd9, 0xe9, 0x06, 0xab, + 0xd9, 0xe9, 0x04, 0x45, 0x1a, 0xeb, 0x04, 0x03, 0x00, 0x93, 0x4b, 0xeb, + 0x05, 0x03, 0x01, 0x93, 0xf9, 0xf7, 0xf2, 0xfb, 0x00, 0x23, 0x00, 0xf1, + 0x00, 0x6c, 0x86, 0x46, 0xdd, 0xe9, 0x00, 0x01, 0x8b, 0x42, 0x08, 0xbf, + 0x84, 0x45, 0x05, 0xd2, 0x30, 0x46, 0x6f, 0xf4, 0x7a, 0x68, 0xf9, 0xf7, + 0x05, 0xfd, 0xdf, 0xe7, 0x00, 0x2d, 0x08, 0xbf, 0xb4, 0xf1, 0x00, 0x6f, + 0xf4, 0xd3, 0x5a, 0xea, 0x0b, 0x03, 0x0e, 0xd1, 0x4f, 0xf0, 0x00, 0x61, + 0x0b, 0x1b, 0x02, 0x93, 0x65, 0xeb, 0x45, 0x03, 0x03, 0x93, 0xdd, 0xe9, + 0x02, 0x67, 0x16, 0xeb, 0x0e, 0x06, 0x47, 0xf1, 0x00, 0x07, 0xc9, 0xe9, + 0x06, 0x67, 0x01, 0x21, 0x89, 0xf8, 0x20, 0x10, 0xc4, 0xe7, 0x98, 0x46, + 0xc2, 0xe7, 0x70, 0xb5, 0x14, 0x46, 0x6f, 0xf0, 0x00, 0x46, 0x12, 0x68, + 0x05, 0x46, 0x04, 0x98, 0xb2, 0x42, 0x07, 0xd2, 0x38, 0xb1, 0x01, 0x46, + 0x18, 0x46, 0x14, 0xf0, 0x0f, 0xf8, 0x43, 0x1c, 0x05, 0xd1, 0x20, 0x60, + 0x70, 0xbd, 0x15, 0xb1, 0x8a, 0x42, 0x38, 0xbf, 0xab, 0x54, 0x23, 0x68, + 0x01, 0x33, 0x23, 0x60, 0xf6, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4f, + 0x89, 0xb0, 0x00, 0x24, 0x05, 0x46, 0x9d, 0xf8, 0x50, 0xa0, 0x9d, 0xf8, + 0x48, 0x00, 0xa2, 0x45, 0xdd, 0xf8, 0x54, 0x80, 0x07, 0x94, 0x14, 0xbf, + 0x4f, 0xf0, 0x30, 0x0b, 0x4f, 0xf0, 0x20, 0x0b, 0x01, 0x28, 0xcd, 0xe9, + 0x05, 0x44, 0x3f, 0xd1, 0xa3, 0x42, 0x3d, 0xda, 0x5b, 0x42, 0x81, 0x46, + 0x84, 0x1e, 0x00, 0x27, 0x0d, 0xf1, 0x14, 0x0c, 0x4f, 0xf0, 0x0a, 0x0e, + 0xe4, 0xb2, 0x02, 0x94, 0x02, 0x9c, 0x01, 0x2c, 0x56, 0xd8, 0x02, 0x28, + 0x03, 0xf0, 0x0f, 0x04, 0x4f, 0xea, 0x13, 0x13, 0x0c, 0xbf, 0x33, 0x4e, + 0x33, 0x4e, 0x34, 0x5d, 0x0c, 0xf8, 0x07, 0x40, 0x7c, 0x1c, 0x00, 0x2b, + 0x46, 0xd1, 0xb9, 0xf1, 0x00, 0x0f, 0x27, 0xd0, 0xba, 0xf1, 0x00, 0x0f, + 0x09, 0xd0, 0x2d, 0x23, 0x28, 0x46, 0xcd, 0xf8, 0x00, 0x80, 0xcd, 0xe9, + 0x02, 0x12, 0xff, 0xf7, 0xa4, 0xff, 0xdd, 0xe9, 0x02, 0x12, 0xbc, 0x1c, + 0x13, 0x9b, 0x9c, 0x42, 0x1b, 0xdb, 0xba, 0xf1, 0x00, 0x0f, 0x09, 0xd1, + 0x2d, 0x23, 0x28, 0x46, 0xcd, 0xf8, 0x00, 0x80, 0xcd, 0xe9, 0x02, 0x12, + 0xff, 0xf7, 0x93, 0xff, 0xdd, 0xe9, 0x02, 0x12, 0x01, 0x3c, 0x1e, 0xe0, + 0x13, 0xb1, 0x4f, 0xf0, 0x00, 0x09, 0xbf, 0xe7, 0x30, 0x23, 0x01, 0x24, + 0x8d, 0xf8, 0x14, 0x30, 0x13, 0x9b, 0x9c, 0x42, 0x13, 0xda, 0x4f, 0xf0, + 0x00, 0x09, 0x5b, 0x46, 0x28, 0x46, 0xcd, 0xf8, 0x00, 0x80, 0xcd, 0xe9, + 0x02, 0x12, 0xff, 0xf7, 0x7a, 0xff, 0x13, 0x9b, 0x01, 0x3b, 0xa3, 0x42, + 0x13, 0x93, 0xdd, 0xe9, 0x02, 0x12, 0xf0, 0xdc, 0xb9, 0xf1, 0x00, 0x0f, + 0xd1, 0xd1, 0x05, 0xae, 0x6c, 0xb9, 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, + 0x27, 0x46, 0xa5, 0xe7, 0xb3, 0xfb, 0xfe, 0xf4, 0x0e, 0xfb, 0x14, 0x33, + 0x30, 0x33, 0x0c, 0xf8, 0x07, 0x30, 0x23, 0x46, 0xaa, 0xe7, 0x01, 0x3c, + 0xcd, 0xf8, 0x00, 0x80, 0x28, 0x46, 0x33, 0x5d, 0xcd, 0xe9, 0x02, 0x12, + 0xff, 0xf7, 0x57, 0xff, 0xdd, 0xe9, 0x02, 0x12, 0xe4, 0xe7, 0x00, 0xbf, + 0xec, 0xdb, 0x01, 0x08, 0xfc, 0xdb, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x4f, + 0x1c, 0x46, 0x89, 0xb0, 0x00, 0x23, 0x89, 0x46, 0x12, 0x9e, 0x15, 0x46, + 0x07, 0x93, 0xb2, 0xb1, 0x99, 0x42, 0x14, 0xdb, 0x0c, 0xbf, 0x01, 0x23, + 0x01, 0xf1, 0xff, 0x39, 0x4f, 0xf0, 0x00, 0x0b, 0x04, 0x93, 0x15, 0xf8, + 0x0b, 0x30, 0x73, 0xb9, 0x48, 0xb1, 0x04, 0x9b, 0x3b, 0xb9, 0x07, 0x9b, + 0x4b, 0x45, 0x95, 0xbf, 0x04, 0x9a, 0x04, 0x9b, 0xc2, 0x54, 0x00, 0xf8, + 0x09, 0x30, 0x07, 0x98, 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x25, 0x2b, + 0x40, 0xf0, 0x02, 0x81, 0x0b, 0xf1, 0x01, 0x08, 0x15, 0xf8, 0x08, 0x30, + 0x20, 0x3b, 0xdb, 0xb2, 0x0d, 0x2b, 0x07, 0xd8, 0x42, 0xf6, 0x09, 0x02, + 0x22, 0xfa, 0x03, 0xf3, 0xdb, 0x07, 0x48, 0xbf, 0x0b, 0xf1, 0x02, 0x08, + 0x15, 0xf8, 0x08, 0x30, 0x2a, 0x2b, 0x1d, 0xd1, 0x00, 0x21, 0x08, 0xf1, + 0x01, 0x02, 0x04, 0x34, 0x8e, 0x46, 0xaf, 0x5c, 0xab, 0x18, 0x2e, 0x2f, + 0x51, 0xd1, 0x5f, 0x78, 0x2a, 0x2f, 0x2c, 0xd0, 0x4f, 0xf0, 0x00, 0x0a, + 0xc5, 0xf1, 0x01, 0x0c, 0x0c, 0xeb, 0x03, 0x02, 0x13, 0xf8, 0x01, 0x7f, + 0x30, 0x3f, 0x5f, 0xfa, 0x87, 0xf8, 0xb8, 0xf1, 0x09, 0x0f, 0x21, 0xd8, + 0x0a, 0x22, 0x02, 0xfb, 0x0a, 0x7a, 0xf1, 0xe7, 0x30, 0x2b, 0x15, 0xd1, + 0x08, 0xf1, 0x01, 0x08, 0x15, 0xf8, 0x08, 0x30, 0x30, 0x2b, 0xf9, 0xd0, + 0x4f, 0xf0, 0x01, 0x0e, 0xa8, 0x44, 0x00, 0x21, 0xa8, 0xeb, 0x05, 0x02, + 0x18, 0xf8, 0x01, 0x3b, 0x30, 0x3b, 0xdf, 0xb2, 0x09, 0x2f, 0xd2, 0xd8, + 0x0a, 0x22, 0x02, 0xfb, 0x01, 0x31, 0xf3, 0xe7, 0x4f, 0xf0, 0x00, 0x0e, + 0xee, 0xe7, 0x02, 0x32, 0x54, 0xf8, 0x04, 0xab, 0xab, 0x5c, 0x68, 0x2b, + 0x1e, 0xd1, 0xab, 0x18, 0x5b, 0x78, 0x68, 0x2b, 0x0c, 0xbf, 0x72, 0x23, + 0x11, 0x23, 0x03, 0xf0, 0x03, 0x08, 0x90, 0x44, 0x15, 0xf8, 0x08, 0x70, + 0x64, 0x2f, 0x01, 0xd0, 0x69, 0x2f, 0x3f, 0xd1, 0x82, 0x2b, 0x27, 0xd1, + 0x25, 0x23, 0x07, 0xaa, 0x49, 0x46, 0x00, 0x96, 0x05, 0x90, 0x25, 0x2f, + 0x18, 0xbf, 0xd8, 0x46, 0xff, 0xf7, 0xb9, 0xfe, 0x2e, 0xe0, 0x6f, 0xf0, + 0x00, 0x4a, 0xdd, 0xe7, 0x6c, 0x2b, 0x06, 0xd1, 0xab, 0x18, 0x5b, 0x78, + 0x6c, 0x2b, 0x0c, 0xbf, 0x82, 0x23, 0x21, 0x23, 0xdd, 0xe7, 0x6a, 0x2b, + 0x08, 0xd0, 0x7a, 0x2b, 0x08, 0xd0, 0x74, 0x2b, 0x08, 0xd0, 0x4c, 0x2b, + 0x14, 0xbf, 0x00, 0x23, 0x61, 0x23, 0xd2, 0xe7, 0x31, 0x23, 0xd0, 0xe7, + 0x41, 0x23, 0xce, 0xe7, 0x51, 0x23, 0xcc, 0xe7, 0x11, 0x2b, 0x54, 0xf8, + 0x04, 0x2b, 0x0f, 0xd0, 0x72, 0x2b, 0x00, 0xd1, 0x52, 0xb2, 0x01, 0x23, + 0x01, 0x91, 0xcd, 0xe9, 0x02, 0xe6, 0x00, 0x93, 0x49, 0x46, 0x13, 0x46, + 0x07, 0xaa, 0x05, 0x90, 0xff, 0xf7, 0xa4, 0xfe, 0x05, 0x98, 0x38, 0xe0, + 0x12, 0xb2, 0xf0, 0xe7, 0x75, 0x2f, 0x03, 0xd0, 0x07, 0xf0, 0xdf, 0x02, + 0x58, 0x2a, 0x16, 0xd1, 0x82, 0x2b, 0xb9, 0xd0, 0x11, 0x2b, 0x54, 0xf8, + 0x04, 0x2b, 0x09, 0xd0, 0x72, 0x2b, 0x00, 0xd1, 0xd2, 0xb2, 0x75, 0x2f, + 0x01, 0x91, 0xcd, 0xe9, 0x02, 0xe6, 0x03, 0xd1, 0x00, 0x23, 0xde, 0xe7, + 0x92, 0xb2, 0xf6, 0xe7, 0x58, 0x2f, 0x0c, 0xbf, 0x03, 0x23, 0x02, 0x23, + 0xd7, 0xe7, 0x63, 0x2f, 0x09, 0xd1, 0x54, 0xf8, 0x04, 0x3b, 0x07, 0xaa, + 0x49, 0x46, 0x00, 0x96, 0xdb, 0xb2, 0x05, 0x90, 0xff, 0xf7, 0x5d, 0xfe, + 0xd2, 0xe7, 0x73, 0x2f, 0x16, 0xd1, 0x54, 0xf8, 0x04, 0xbb, 0x0b, 0xf1, + 0xff, 0x37, 0x17, 0xf8, 0x01, 0x3f, 0x23, 0xb1, 0xaa, 0xeb, 0x07, 0x02, + 0x1b, 0xeb, 0x02, 0x0f, 0x02, 0xd1, 0x08, 0xf1, 0x01, 0x0b, 0x0e, 0xe7, + 0x07, 0xaa, 0x49, 0x46, 0x00, 0x96, 0x05, 0x90, 0xff, 0xf7, 0x45, 0xfe, + 0x05, 0x98, 0xec, 0xe7, 0x70, 0x2f, 0x7f, 0xf4, 0x7d, 0xaf, 0x54, 0xf8, + 0x04, 0x7b, 0x30, 0x23, 0x07, 0xaa, 0x49, 0x46, 0x00, 0x96, 0x05, 0x90, + 0xff, 0xf7, 0x37, 0xfe, 0x78, 0x23, 0x07, 0xaa, 0x49, 0x46, 0x05, 0x98, + 0x00, 0x96, 0xff, 0xf7, 0x30, 0xfe, 0x00, 0x23, 0x07, 0xaa, 0x49, 0x46, + 0x05, 0x98, 0x03, 0x96, 0xcd, 0xe9, 0x01, 0x33, 0x03, 0x23, 0x00, 0x93, + 0x3b, 0x46, 0x99, 0xe7, 0x07, 0xaa, 0x49, 0x46, 0x00, 0x96, 0xd8, 0x46, + 0x05, 0x90, 0xff, 0xf7, 0x1e, 0xfe, 0x93, 0xe7, 0x0a, 0x4b, 0xda, 0x68, + 0x42, 0xf0, 0x01, 0x02, 0xda, 0x60, 0xda, 0x68, 0xd2, 0x07, 0x0b, 0xd5, + 0xd3, 0xf8, 0x0c, 0x21, 0x42, 0xf0, 0x01, 0x02, 0xc3, 0xf8, 0x0c, 0x21, + 0xd3, 0xf8, 0x0c, 0x01, 0xc0, 0x43, 0x00, 0xf0, 0x01, 0x00, 0x70, 0x47, + 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x00, 0x52, 0x10, 0x4b, 0xda, 0x68, + 0xd2, 0x07, 0x06, 0xd4, 0x0e, 0x4b, 0xd3, 0xf8, 0x0c, 0x01, 0x10, 0xf0, + 0x01, 0x00, 0x0a, 0xd1, 0x70, 0x47, 0x0c, 0x4a, 0x5a, 0x60, 0x02, 0xf1, + 0x88, 0x32, 0x5a, 0x60, 0xdb, 0x68, 0xdb, 0x07, 0xf0, 0xd5, 0x01, 0x20, + 0x70, 0x47, 0x07, 0x4a, 0xc3, 0xf8, 0x04, 0x21, 0x02, 0xf1, 0x88, 0x32, + 0xc3, 0xf8, 0x04, 0x21, 0xd3, 0xf8, 0x0c, 0x01, 0x00, 0xf0, 0x01, 0x00, + 0x70, 0x47, 0x00, 0xbf, 0x00, 0x20, 0x00, 0x52, 0x23, 0x01, 0x67, 0x45, + 0x50, 0x4a, 0x08, 0xb5, 0x03, 0x68, 0x93, 0x42, 0x52, 0xd0, 0x4f, 0x49, + 0x8b, 0x42, 0x4f, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x4c, 0xd0, 0x18, 0x31, + 0x8b, 0x42, 0x49, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x46, 0xd0, 0x18, 0x31, + 0x8b, 0x42, 0x43, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x40, 0xd0, 0x18, 0x31, + 0x8b, 0x42, 0x3d, 0xd0, 0x01, 0xf5, 0x56, 0x71, 0x8b, 0x42, 0x39, 0xd0, + 0x18, 0x31, 0x8b, 0x42, 0x36, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x33, 0xd0, + 0x18, 0x31, 0x8b, 0x42, 0x30, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x2d, 0xd0, + 0x18, 0x31, 0x8b, 0x42, 0x2a, 0xd0, 0x18, 0x31, 0x8b, 0x42, 0x27, 0xd0, + 0x18, 0x31, 0x8b, 0x42, 0x24, 0xd0, 0x1a, 0x68, 0x22, 0xf0, 0x0e, 0x02, + 0x1a, 0x60, 0x1a, 0x68, 0x22, 0xf0, 0x01, 0x02, 0x1a, 0x60, 0x35, 0x4a, + 0x93, 0x42, 0x43, 0xd1, 0x02, 0x6e, 0x13, 0x68, 0x23, 0xf4, 0x80, 0x73, + 0x13, 0x60, 0xd0, 0xe9, 0x16, 0x13, 0x03, 0xf0, 0x1f, 0x02, 0x01, 0x23, + 0x93, 0x40, 0x4b, 0x60, 0xd0, 0xe9, 0x19, 0x32, 0x5a, 0x60, 0xc3, 0x6e, + 0x00, 0x2b, 0x46, 0xd0, 0x1a, 0x68, 0x22, 0xf4, 0x80, 0x72, 0x1a, 0x60, + 0xd0, 0xe9, 0x1c, 0x32, 0x5a, 0x60, 0x3e, 0xe0, 0x04, 0x21, 0x93, 0x42, + 0x80, 0xf8, 0x35, 0x10, 0x1e, 0xd0, 0x23, 0x4a, 0x93, 0x42, 0x1b, 0xd0, + 0x18, 0x32, 0x93, 0x42, 0x18, 0xd0, 0x18, 0x32, 0x93, 0x42, 0x15, 0xd0, + 0x18, 0x32, 0x93, 0x42, 0x12, 0xd0, 0x18, 0x32, 0x93, 0x42, 0x0f, 0xd0, + 0x18, 0x32, 0x93, 0x42, 0x0c, 0xd0, 0x18, 0x32, 0x93, 0x42, 0x09, 0xd0, + 0x02, 0xf5, 0x56, 0x72, 0x93, 0x42, 0x05, 0xd0, 0x18, 0x32, 0x93, 0x42, + 0x02, 0xd0, 0x18, 0x32, 0x93, 0x42, 0xff, 0xd0, 0x1a, 0x68, 0x22, 0xf0, + 0x01, 0x02, 0x1a, 0x60, 0x00, 0x20, 0x08, 0xbd, 0x12, 0x4a, 0x93, 0x42, + 0xb8, 0xd0, 0x14, 0x32, 0x93, 0x42, 0xb5, 0xd0, 0x14, 0x32, 0x93, 0x42, + 0xb2, 0xd0, 0x14, 0x32, 0x93, 0x42, 0xaf, 0xd0, 0x14, 0x32, 0x93, 0x42, + 0xac, 0xd0, 0x14, 0x32, 0x93, 0x42, 0xa9, 0xd0, 0x14, 0x32, 0x93, 0x42, + 0xa6, 0xd0, 0x00, 0x23, 0x80, 0xf8, 0x34, 0x30, 0x01, 0x23, 0x80, 0xf8, + 0x35, 0x30, 0x03, 0x6d, 0x00, 0x2b, 0xdf, 0xd0, 0x98, 0x47, 0xdd, 0xe7, + 0x10, 0x00, 0x02, 0x40, 0x28, 0x00, 0x02, 0x40, 0x08, 0x54, 0x02, 0x58, + 0x1c, 0x54, 0x02, 0x58, 0x00, 0x28, 0x0d, 0xdb, 0x43, 0x09, 0x01, 0x22, + 0x00, 0xf0, 0x1f, 0x00, 0x20, 0x33, 0x02, 0xfa, 0x00, 0xf0, 0x04, 0x4a, + 0x42, 0xf8, 0x23, 0x00, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, + 0x70, 0x47, 0x00, 0xbf, 0x00, 0xe1, 0x00, 0xe0, 0x38, 0xb5, 0x04, 0x46, + 0xfb, 0xf7, 0x5c, 0xf9, 0x05, 0x46, 0x01, 0x34, 0xfb, 0xf7, 0x58, 0xf9, + 0x43, 0x1b, 0xa3, 0x42, 0xfa, 0xd3, 0x38, 0xbd, 0xf8, 0xb5, 0xc5, 0x69, + 0x0f, 0x46, 0x0e, 0x68, 0x08, 0x3d, 0xae, 0x42, 0x13, 0xd3, 0xb6, 0xfb, + 0xf5, 0xf0, 0x01, 0x38, 0x14, 0xf0, 0x36, 0xf9, 0x84, 0x1c, 0xa6, 0xeb, + 0x84, 0x04, 0xb4, 0xfb, 0xf5, 0xf4, 0x20, 0x46, 0x14, 0xf0, 0x2e, 0xf9, + 0xa6, 0xeb, 0x80, 0x00, 0x04, 0xfb, 0x15, 0x05, 0x20, 0x46, 0x3d, 0x60, + 0xf8, 0xbd, 0x00, 0x20, 0xfc, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, 0x85, 0xb0, + 0x0f, 0x46, 0x91, 0x46, 0x98, 0x46, 0x10, 0x9d, 0x03, 0x90, 0xdd, 0xe9, + 0x0e, 0x46, 0x0d, 0xb9, 0x28, 0x46, 0x59, 0xe0, 0x03, 0x9b, 0x18, 0x68, + 0xb9, 0xf1, 0x00, 0x0f, 0x1e, 0xd0, 0xd9, 0xf8, 0x00, 0x30, 0x43, 0x45, + 0x1a, 0xd1, 0xd9, 0xf8, 0x04, 0x10, 0xa1, 0x42, 0x16, 0xd8, 0x82, 0x69, + 0x01, 0xeb, 0x02, 0x0a, 0x54, 0x45, 0x11, 0xd2, 0xaa, 0xeb, 0x04, 0x0a, + 0x61, 0x1a, 0xd9, 0xf8, 0x08, 0x30, 0xaa, 0x45, 0x28, 0xbf, 0xaa, 0x46, + 0x30, 0x46, 0x52, 0x46, 0x19, 0x44, 0x56, 0x44, 0x54, 0x44, 0xa5, 0xeb, + 0x0a, 0x05, 0x12, 0xf0, 0xf3, 0xf9, 0xd8, 0xe7, 0x3a, 0x68, 0x43, 0x69, + 0x90, 0x45, 0x0e, 0xd1, 0x79, 0x68, 0x8c, 0x42, 0x0b, 0xd3, 0x01, 0xeb, + 0x03, 0x0a, 0x54, 0x45, 0x07, 0xd2, 0xaa, 0xeb, 0x04, 0x0a, 0x61, 0x1a, + 0xbb, 0x68, 0xaa, 0x45, 0x28, 0xbf, 0xaa, 0x46, 0xe2, 0xe7, 0xb4, 0xfb, + 0xf3, 0xf2, 0x03, 0xfb, 0x12, 0x42, 0xd0, 0xf8, 0x04, 0xb0, 0x8a, 0xb9, + 0x9d, 0x42, 0x0f, 0xd3, 0x22, 0x46, 0x41, 0x46, 0xb5, 0xfb, 0xf3, 0xfa, + 0x03, 0xfb, 0x1a, 0x5a, 0x33, 0x46, 0xa5, 0xeb, 0x0a, 0x05, 0x00, 0x95, + 0xd8, 0x47, 0x68, 0xb9, 0x2e, 0x44, 0x2c, 0x44, 0x55, 0x46, 0xac, 0xe7, + 0xa2, 0x1a, 0x00, 0x93, 0x41, 0x46, 0xbb, 0x68, 0xc7, 0xf8, 0x00, 0x80, + 0x7a, 0x60, 0xd8, 0x47, 0x00, 0x28, 0xa2, 0xd0, 0x05, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0x2d, 0xe9, 0xf0, 0x4f, 0x8b, 0xb0, 0x91, 0x46, 0x07, 0x46, + 0x88, 0x46, 0x14, 0x9a, 0x07, 0xa9, 0x00, 0x68, 0x0d, 0xf1, 0x20, 0x0b, + 0x01, 0x3a, 0x05, 0x93, 0xdd, 0xf8, 0x58, 0xa0, 0x07, 0x92, 0xff, 0xf7, + 0x67, 0xff, 0x05, 0x9b, 0x05, 0x46, 0x19, 0x46, 0x05, 0x93, 0x50, 0x46, + 0x15, 0x9b, 0x98, 0x47, 0x02, 0x46, 0x18, 0xbb, 0x15, 0xb3, 0x05, 0xf0, + 0x01, 0x06, 0x4a, 0x46, 0x00, 0x90, 0x38, 0x46, 0xc6, 0xf1, 0x02, 0x04, + 0x05, 0x9b, 0xa1, 0x00, 0xcd, 0xe9, 0x01, 0xb1, 0x41, 0x46, 0xff, 0xf7, + 0x6c, 0xff, 0x02, 0x46, 0x90, 0xb9, 0x01, 0x3c, 0x94, 0x42, 0x07, 0xdc, + 0x0a, 0xab, 0x02, 0x3e, 0x03, 0xeb, 0x84, 0x04, 0x35, 0x44, 0x54, 0xf8, + 0x08, 0x3c, 0xdc, 0xe7, 0x08, 0x99, 0x50, 0x46, 0x15, 0x9b, 0x98, 0x47, + 0x01, 0x22, 0x00, 0x28, 0xee, 0xd0, 0x02, 0x46, 0x10, 0x46, 0x0b, 0xb0, + 0xbd, 0xe8, 0xf0, 0x8f, 0x2d, 0xe9, 0xf0, 0x47, 0x86, 0xb0, 0x05, 0x46, + 0x0f, 0x46, 0x14, 0x46, 0x00, 0xf1, 0x14, 0x09, 0xd6, 0x18, 0x4f, 0xf0, + 0x01, 0x0a, 0x0d, 0xf1, 0x17, 0x08, 0xb4, 0x42, 0x03, 0xd1, 0x00, 0x20, + 0x06, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x00, 0x94, 0x3b, 0x46, 0x00, 0x22, + 0x49, 0x46, 0x28, 0x46, 0x01, 0x34, 0xcd, 0xe9, 0x01, 0x8a, 0xff, 0xf7, + 0x36, 0xff, 0x00, 0x28, 0xf0, 0xd1, 0x01, 0x22, 0x41, 0x46, 0x0e, 0x98, + 0xfe, 0xf7, 0xfa, 0xfc, 0xe7, 0xe7, 0x1f, 0xb5, 0x06, 0x9c, 0x00, 0x92, + 0x00, 0x22, 0xcd, 0xe9, 0x01, 0x34, 0x0b, 0x46, 0x00, 0xf1, 0x14, 0x01, + 0xff, 0xf7, 0x23, 0xff, 0x04, 0xb0, 0x10, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, + 0x13, 0x68, 0x8b, 0xb0, 0x00, 0x26, 0x07, 0x46, 0x04, 0x93, 0x0c, 0x46, + 0x53, 0x68, 0xb0, 0x46, 0x0d, 0xf1, 0x10, 0x0b, 0x06, 0xad, 0x4f, 0xf0, + 0x10, 0x0a, 0x05, 0x93, 0x5b, 0xf8, 0x26, 0x90, 0x2b, 0x46, 0x00, 0x22, + 0x38, 0x46, 0x49, 0x46, 0xcd, 0xf8, 0x00, 0xa0, 0xff, 0xf7, 0xd9, 0xff, + 0x70, 0xb1, 0x10, 0xf1, 0x34, 0x0f, 0x06, 0xd1, 0x46, 0xb1, 0xb8, 0xf1, + 0x00, 0x0f, 0x14, 0xbf, 0x00, 0x20, 0x6f, 0xf0, 0x33, 0x00, 0x0b, 0xb0, + 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x26, 0xe5, 0xe7, 0xb8, 0xf1, 0x00, 0x0f, + 0x04, 0xd0, 0xe2, 0x69, 0x06, 0x9b, 0x9b, 0x1a, 0x00, 0x2b, 0xeb, 0xdb, + 0x07, 0x9b, 0x23, 0xf0, 0x00, 0x43, 0x13, 0x2b, 0xe6, 0xd9, 0x3a, 0x68, + 0xd2, 0x69, 0x93, 0x42, 0xe2, 0xd8, 0x4f, 0xf0, 0xff, 0x33, 0x03, 0xa8, + 0x10, 0x22, 0x29, 0x46, 0x03, 0x93, 0xfe, 0xf7, 0xa9, 0xfc, 0x07, 0x9b, + 0x10, 0x22, 0x00, 0x90, 0x49, 0x46, 0x23, 0xf0, 0x00, 0x43, 0x38, 0x46, + 0x10, 0x3b, 0xff, 0xf7, 0x81, 0xff, 0x00, 0x28, 0xcb, 0xd1, 0x03, 0x9b, + 0x00, 0x2b, 0xcb, 0xd1, 0x0a, 0xaa, 0x86, 0xf0, 0x01, 0x03, 0x04, 0xf1, + 0x1c, 0x0c, 0xc4, 0xf8, 0x04, 0x90, 0x02, 0xeb, 0x83, 0x03, 0x4f, 0xf0, + 0x01, 0x08, 0x53, 0xf8, 0x18, 0x3c, 0xc4, 0xe9, 0x02, 0x3a, 0x95, 0xe8, + 0x0f, 0x00, 0x8c, 0xe8, 0x0f, 0x00, 0xb7, 0xe7, 0xf7, 0xb5, 0x04, 0x46, + 0x04, 0x30, 0x0e, 0x46, 0x15, 0x46, 0xfe, 0xf7, 0xb2, 0xfc, 0x10, 0xb1, + 0x00, 0x20, 0x03, 0xb0, 0xf0, 0xbd, 0x01, 0x23, 0x00, 0x90, 0x6a, 0x46, + 0x29, 0x46, 0x20, 0x46, 0x01, 0x93, 0xff, 0xf7, 0x87, 0xff, 0x00, 0x28, + 0xf3, 0xd1, 0x05, 0xf1, 0x24, 0x07, 0x38, 0x46, 0xfe, 0xf7, 0x9f, 0xfc, + 0x00, 0x28, 0xeb, 0xd1, 0x31, 0x46, 0x38, 0x46, 0xfe, 0xf7, 0x88, 0xfc, + 0x38, 0xb1, 0x3a, 0x46, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x74, 0xff, + 0x00, 0x28, 0xee, 0xd0, 0xdf, 0xe7, 0x01, 0x20, 0xdd, 0xe7, 0x43, 0x79, + 0x82, 0x79, 0x04, 0x33, 0xc0, 0x79, 0x13, 0x44, 0x18, 0x44, 0x70, 0x47, 0x2d, 0xe9, 0xf0, 0x43, 0x01, 0x23, 0x97, 0xb0, 0x0f, 0x46, 0x06, 0x46, 0x00, 0x21, 0x90, 0x46, 0xcd, 0xe9, 0x05, 0x13, 0x05, 0x99, 0x40, 0x46, 0xb8, 0x47, 0x04, 0x46, 0x10, 0xbb, 0x06, 0x99, 0x40, 0x46, 0xb8, 0x47, 0x04, 0x46, 0xe8, 0xb9, 0x05, 0xaa, 0x0b, 0xa9, 0x30, 0x46, 0xff, 0xf7, - 0x81, 0xff, 0x04, 0x46, 0xb0, 0xb9, 0x0c, 0x25, 0x13, 0x9b, 0x0e, 0x9a, + 0x4f, 0xff, 0x04, 0x46, 0xb0, 0xb9, 0x0c, 0x25, 0x13, 0x9b, 0x0e, 0x9a, 0x23, 0xf0, 0x00, 0x43, 0x02, 0xf1, 0x0c, 0x01, 0x04, 0x3b, 0x99, 0x42, 0x10, 0xd9, 0x14, 0x9b, 0x05, 0xa8, 0x05, 0x93, 0x15, 0x9b, 0x06, 0x93, - 0xfe, 0xf7, 0x86, 0xfc, 0x00, 0x28, 0xdb, 0xd0, 0xf5, 0x68, 0x06, 0xf1, + 0xfe, 0xf7, 0x5b, 0xfc, 0x00, 0x28, 0xdb, 0xd0, 0xf5, 0x68, 0x06, 0xf1, 0x14, 0x09, 0x4d, 0xbb, 0x20, 0x46, 0x17, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, - 0x0c, 0x99, 0x08, 0xab, 0x30, 0x46, 0x00, 0x95, 0xff, 0xf7, 0x51, 0xff, - 0x01, 0x46, 0x00, 0x28, 0x42, 0xd1, 0x07, 0xa8, 0xfe, 0xf7, 0x58, 0xfc, + 0x0c, 0x99, 0x08, 0xab, 0x30, 0x46, 0x00, 0x95, 0xff, 0xf7, 0x1f, 0xff, + 0x01, 0x46, 0x00, 0x28, 0x42, 0xd1, 0x07, 0xa8, 0xff, 0xf7, 0xb7, 0xff, 0x0e, 0x9b, 0x18, 0x44, 0x9d, 0xf8, 0x20, 0x30, 0x03, 0xf0, 0x70, 0x03, 0x0e, 0x90, 0x10, 0x2b, 0xd0, 0xd1, 0x0a, 0x9b, 0x00, 0x2b, 0xcc, 0xd0, 0x0a, 0x46, 0x00, 0x93, 0x06, 0xf1, 0x14, 0x01, 0x09, 0x9b, 0x30, 0x46, - 0xcd, 0xe9, 0x01, 0x78, 0xff, 0xf7, 0xcd, 0xfe, 0x00, 0x28, 0xc0, 0xd0, + 0xcd, 0xe9, 0x01, 0x78, 0xff, 0xf7, 0x9b, 0xfe, 0x00, 0x28, 0xc0, 0xd0, 0x04, 0x46, 0xd5, 0xe7, 0xeb, 0x69, 0xda, 0x03, 0x12, 0xd4, 0xeb, 0x69, 0x9b, 0x03, 0x0d, 0xd5, 0x2b, 0x6a, 0x5b, 0xb1, 0x00, 0x93, 0x05, 0xf1, 0x2c, 0x02, 0x49, 0x46, 0x30, 0x46, 0xcd, 0xe9, 0x01, 0x78, 0x6b, 0x6a, - 0xff, 0xf7, 0xb7, 0xfe, 0x00, 0x28, 0xe9, 0xd1, 0x2d, 0x68, 0xbe, 0xe7, + 0xff, 0xf7, 0x85, 0xfe, 0x00, 0x28, 0xe9, 0xd1, 0x2d, 0x68, 0xbe, 0xe7, 0x6b, 0x69, 0x00, 0x2b, 0xe9, 0xd0, 0x00, 0x93, 0x05, 0xf1, 0x2c, 0x02, 0x49, 0x46, 0x30, 0x46, 0xcd, 0xe9, 0x01, 0x78, 0x2b, 0x69, 0xff, 0xf7, - 0xa6, 0xfe, 0x00, 0x28, 0xdd, 0xd0, 0xd7, 0xe7, 0x04, 0x46, 0xad, 0xe7, + 0x74, 0xfe, 0x00, 0x28, 0xdd, 0xd0, 0xd7, 0xe7, 0x04, 0x46, 0xad, 0xe7, 0x2d, 0xe9, 0xf0, 0x41, 0x04, 0x46, 0x0d, 0x46, 0x01, 0x27, 0x30, 0x4e, 0x4f, 0xf0, 0x00, 0x08, 0x22, 0x6b, 0xd4, 0xe9, 0x0d, 0x13, 0x91, 0x42, 0x24, 0xd1, 0x00, 0x2b, 0x52, 0xd0, 0x20, 0x68, 0xe1, 0x6a, 0xd0, 0xf8, 0x20, 0xc0, 0x0a, 0x44, 0xb2, 0xfb, 0xfc, 0xf1, 0x0c, 0xfb, 0x11, 0x22, 0x00, 0x21, 0xe2, 0x62, 0x42, 0x6a, 0xe0, 0x6b, 0x93, 0x42, 0x94, 0xbf, - 0x23, 0x63, 0x22, 0x63, 0xd2, 0x08, 0xc4, 0xf8, 0x34, 0x80, 0x11, 0xf0, - 0x4b, 0xfd, 0x20, 0x1d, 0xfe, 0xf7, 0x06, 0xfc, 0x00, 0x28, 0xdd, 0xd1, + 0x23, 0x63, 0x22, 0x63, 0xd2, 0x08, 0xc4, 0xf8, 0x34, 0x80, 0x12, 0xf0, + 0x11, 0xf8, 0x20, 0x1d, 0xfe, 0xf7, 0xdb, 0xfb, 0x00, 0x28, 0xdd, 0xd1, 0x22, 0x46, 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x4d, 0xff, 0x00, 0x28, 0xd4, 0xd0, 0x25, 0xe0, 0x48, 0x1c, 0x01, 0x3b, 0xd4, 0xf8, 0x3c, 0xc0, 0x60, 0x63, 0x48, 0x09, 0xa3, 0x63, 0x01, 0xf0, 0x1f, 0x03, 0x5c, 0xf8, @@ -3281,30 +3176,30 @@ const unsigned char mcuboot_bin[] = { 0x01, 0xfa, 0x00, 0xf0, 0x10, 0x40, 0x01, 0xd1, 0xbd, 0xe8, 0xf0, 0x81, 0x01, 0x33, 0x63, 0x63, 0xa3, 0x6b, 0x01, 0x3b, 0xa3, 0x63, 0xeb, 0xe7, 0x00, 0x20, 0xf5, 0xe7, 0x6f, 0xf0, 0x1b, 0x00, 0xf2, 0xe7, 0x00, 0xbf, - 0x7d, 0x81, 0x00, 0x08, 0x2d, 0xe9, 0xf0, 0x4f, 0x04, 0x46, 0x87, 0xb0, + 0x3b, 0x7c, 0x00, 0x08, 0x2d, 0xe9, 0xf0, 0x4f, 0x04, 0x46, 0x87, 0xb0, 0x0e, 0x46, 0x00, 0xf1, 0x14, 0x0a, 0x05, 0xa9, 0x20, 0x46, 0xff, 0xf7, 0x8d, 0xff, 0x05, 0x46, 0x48, 0xb9, 0x20, 0x68, 0x05, 0x99, 0xc3, 0x68, 0x98, 0x47, 0x05, 0x46, 0x00, 0x28, 0x3b, 0xd0, 0x10, 0xf1, 0x34, 0x0f, 0xef, 0xd0, 0x28, 0x46, 0x07, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x0d, 0xf1, 0x13, 0x07, 0x73, 0x6a, 0x5a, 0x46, 0x51, 0x46, 0x20, 0x46, 0xcd, 0xf8, - 0x08, 0x90, 0xcd, 0xe9, 0x00, 0x87, 0xff, 0xf7, 0xa8, 0xfd, 0x70, 0xb9, + 0x08, 0x90, 0xcd, 0xe9, 0x00, 0x87, 0xff, 0xf7, 0x76, 0xfd, 0x70, 0xb9, 0x05, 0x9b, 0x52, 0x46, 0x04, 0xf1, 0x20, 0x01, 0x20, 0x46, 0xcd, 0xf8, - 0x00, 0x80, 0xcd, 0xe9, 0x01, 0x79, 0xff, 0xf7, 0x5f, 0xf9, 0x20, 0xb1, + 0x00, 0x80, 0xcd, 0xe9, 0x01, 0x79, 0xff, 0xf7, 0x67, 0xf8, 0x20, 0xb1, 0x10, 0xf1, 0x34, 0x0f, 0xcf, 0xd0, 0x05, 0x46, 0xdd, 0xe7, 0x08, 0xf1, 0x01, 0x08, 0xb3, 0x6a, 0x43, 0x45, 0xdc, 0xd8, 0x23, 0x68, 0xa1, 0x6a, - 0x9a, 0x69, 0x70, 0x6b, 0x11, 0xf0, 0xb6, 0xfc, 0x23, 0x6a, 0x04, 0xf1, + 0x9a, 0x69, 0x70, 0x6b, 0x11, 0xf0, 0x7c, 0xff, 0x23, 0x6a, 0x04, 0xf1, 0x20, 0x01, 0x20, 0x68, 0xf3, 0x62, 0x63, 0x6a, 0x33, 0x63, 0xff, 0xf7, - 0xd2, 0xf8, 0x05, 0x9b, 0x73, 0x62, 0xc6, 0xe7, 0x80, 0x46, 0x06, 0xf1, + 0x15, 0xf8, 0x05, 0x9b, 0x73, 0x62, 0xc6, 0xe7, 0x80, 0x46, 0x06, 0xf1, 0x2c, 0x0b, 0x4f, 0xf0, 0x01, 0x09, 0xe4, 0xe7, 0xcb, 0x69, 0x5a, 0x03, 0x44, 0xbf, 0x23, 0xf4, 0x80, 0x23, 0x4f, 0xf0, 0xff, 0x32, 0x2d, 0xe9, 0xf0, 0x41, 0x48, 0xbf, 0xcb, 0x61, 0x05, 0x46, 0xcb, 0x69, 0x90, 0xb0, 0x48, 0xbf, 0xca, 0x62, 0x0c, 0x46, 0x13, 0xf4, 0x00, 0x30, 0x2c, 0xd0, - 0x0f, 0x6a, 0x2c, 0x22, 0x00, 0x21, 0x02, 0xa8, 0x11, 0xf0, 0x98, 0xfc, + 0x0f, 0x6a, 0x2c, 0x22, 0x00, 0x21, 0x02, 0xa8, 0x11, 0xf0, 0x5e, 0xff, 0x23, 0x69, 0x05, 0xf1, 0x14, 0x06, 0x06, 0x93, 0x63, 0x69, 0x07, 0x93, 0x01, 0x23, 0x96, 0xe8, 0x07, 0x00, 0xcd, 0xe9, 0x09, 0x37, 0x10, 0xab, 0x03, 0xe9, 0x07, 0x00, 0x4f, 0xf0, 0xff, 0x33, 0x98, 0x46, 0x6b, 0x61, 0x22, 0x6a, 0x63, 0x69, 0x9a, 0x42, 0x13, 0xd3, 0x04, 0xf1, 0x2c, 0x08, - 0x32, 0x46, 0x41, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xd8, 0xf8, 0x28, 0xb3, + 0x32, 0x46, 0x41, 0x46, 0x28, 0x46, 0xfe, 0xf7, 0xe0, 0xff, 0x28, 0xb3, 0x10, 0xf1, 0x34, 0x0f, 0x05, 0xd1, 0x21, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x6b, 0xff, 0x00, 0x28, 0xf0, 0xd0, 0x10, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x01, 0x23, 0x0d, 0xf1, 0x07, 0x02, 0x02, 0xa9, 0x28, 0x46, 0x00, 0xf0, @@ -3333,34 +3228,34 @@ const unsigned char mcuboot_bin[] = { 0x34, 0x0f, 0x16, 0xd1, 0x4f, 0xf0, 0xff, 0x33, 0x2b, 0x62, 0xec, 0xe7, 0x23, 0x6a, 0x00, 0x2b, 0xe0, 0xd0, 0x04, 0xf1, 0x28, 0x02, 0x01, 0x3b, 0x31, 0x46, 0x28, 0x46, 0x02, 0x92, 0x04, 0xf1, 0x24, 0x02, 0x00, 0x93, - 0x01, 0x92, 0xd4, 0xe9, 0x04, 0x23, 0xf9, 0xf7, 0x18, 0xfc, 0x02, 0x46, + 0x01, 0x92, 0xd4, 0xe9, 0x04, 0x23, 0xf8, 0xf7, 0x26, 0xff, 0x02, 0x46, 0x20, 0xb1, 0xe3, 0x69, 0x43, 0xf4, 0x00, 0x23, 0xe3, 0x61, 0xa6, 0xe7, - 0x31, 0x46, 0x28, 0x68, 0xfe, 0xf7, 0xd9, 0xff, 0xc6, 0xe7, 0x0a, 0x9b, + 0x31, 0x46, 0x28, 0x68, 0xfe, 0xf7, 0x1c, 0xff, 0xc6, 0xe7, 0x0a, 0x9b, 0x28, 0x68, 0x43, 0xbb, 0x0b, 0x9a, 0x62, 0x62, 0xa3, 0x62, 0xe3, 0x69, 0x43, 0xf4, 0x00, 0x33, 0xe3, 0x61, 0xa8, 0x46, 0x58, 0xf8, 0x14, 0x3b, 0xdf, 0x69, 0xa3, 0x6a, 0xff, 0x1a, 0x4f, 0x45, 0x28, 0xbf, 0x4f, 0x46, 0x04, 0x9b, 0x42, 0x46, 0x31, 0x46, 0x28, 0x46, 0x01, 0x93, 0xa3, 0x6a, - 0x02, 0x97, 0x00, 0x93, 0x63, 0x6a, 0xff, 0xf7, 0x2d, 0xf8, 0x02, 0x46, + 0x02, 0x97, 0x00, 0x93, 0x63, 0x6a, 0xfe, 0xf7, 0x35, 0xff, 0x02, 0x46, 0x00, 0x28, 0x75, 0xd0, 0x10, 0xf1, 0x34, 0x0f, 0xd1, 0xd1, 0x21, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x91, 0xfe, 0x02, 0x46, 0x00, 0x28, 0xe7, 0xd0, 0xc9, 0xe7, 0x01, 0x3b, 0x0a, 0xa9, 0x05, 0x92, 0x0a, 0x93, 0xff, 0xf7, - 0x39, 0xfc, 0x0a, 0x9b, 0x29, 0x68, 0x01, 0x33, 0x05, 0x9a, 0xc9, 0x69, + 0x07, 0xfc, 0x0a, 0x9b, 0x29, 0x68, 0x01, 0x33, 0x05, 0x9a, 0xc9, 0x69, 0x0a, 0x93, 0x8b, 0x42, 0x4a, 0xd1, 0x01, 0x30, 0x90, 0x46, 0x09, 0xaf, 0x90, 0xfa, 0xa0, 0xf3, 0xb3, 0xfa, 0x83, 0xf3, 0x05, 0x93, 0x01, 0x33, 0x06, 0x93, 0x4f, 0xea, 0x88, 0x03, 0x52, 0x46, 0x31, 0x46, 0x28, 0x46, 0x07, 0x93, 0x04, 0x23, 0xcd, 0xe9, 0x01, 0x73, 0x07, 0x9b, 0x00, 0x93, - 0x0b, 0x9b, 0xfe, 0xf7, 0xf9, 0xff, 0x02, 0x46, 0x00, 0x28, 0x86, 0xd1, + 0x0b, 0x9b, 0xfe, 0xf7, 0x01, 0xff, 0x02, 0x46, 0x00, 0x28, 0x86, 0xd1, 0x05, 0x9b, 0x43, 0x45, 0x30, 0xd1, 0x08, 0xf1, 0x01, 0x08, 0x06, 0x9b, 0x43, 0x45, 0xe6, 0xd8, 0x0b, 0x9b, 0x63, 0x62, 0x06, 0x9b, 0x9b, 0x00, 0xa2, 0xe7, 0x01, 0x23, 0x00, 0x22, 0x51, 0x46, 0x28, 0x46, 0xcd, 0xf8, - 0x00, 0x80, 0xcd, 0xe9, 0x01, 0x73, 0x09, 0x9b, 0xff, 0xf7, 0x1b, 0xfc, + 0x00, 0x80, 0xcd, 0xe9, 0x01, 0x73, 0x09, 0x9b, 0xff, 0xf7, 0xe9, 0xfb, 0x02, 0x46, 0x00, 0x28, 0x85, 0xd1, 0x01, 0x23, 0x52, 0x46, 0x31, 0x46, 0x28, 0x46, 0xcd, 0xf8, 0x00, 0x80, 0xcd, 0xe9, 0x01, 0x73, 0x0b, 0x9b, - 0xfe, 0xf7, 0xd0, 0xff, 0x02, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x5d, 0xaf, + 0xfe, 0xf7, 0xd8, 0xfe, 0x02, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x5d, 0xaf, 0x08, 0xf1, 0x01, 0x08, 0x0a, 0x9b, 0x98, 0x45, 0xdd, 0xd3, 0x7d, 0xe7, 0x90, 0x46, 0x0d, 0xf1, 0x23, 0x07, 0xf7, 0xe7, 0x04, 0x23, 0x51, 0x46, 0x28, 0x46, 0xcd, 0xe9, 0x01, 0x73, 0x07, 0x9b, 0x00, 0x93, 0x09, 0x9b, - 0xff, 0xf7, 0xf5, 0xfb, 0x02, 0x46, 0x00, 0x28, 0xc1, 0xd0, 0x5e, 0xe7, + 0xff, 0xf7, 0xc3, 0xfb, 0x02, 0x46, 0x00, 0x28, 0xc1, 0xd0, 0x5e, 0xe7, 0x23, 0x6a, 0xa9, 0xeb, 0x07, 0x09, 0x3b, 0x44, 0x23, 0x62, 0xa3, 0x6a, 0x3b, 0x44, 0xa3, 0x62, 0x04, 0x9b, 0x3b, 0x44, 0x04, 0x93, 0x2b, 0x68, 0x1b, 0x6a, 0xab, 0x63, 0xed, 0xe6, 0x6f, 0xf0, 0x08, 0x02, 0xf8, 0xe6, @@ -3374,907 +3269,807 @@ const unsigned char mcuboot_bin[] = { 0x00, 0x0f, 0x01, 0xd1, 0x30, 0x46, 0xec, 0xe7, 0xe3, 0x69, 0x5b, 0x03, 0x04, 0xd5, 0x3b, 0x68, 0xa2, 0x6a, 0xdb, 0x69, 0x9a, 0x42, 0x10, 0xd1, 0x23, 0x6a, 0x38, 0x46, 0x05, 0x91, 0x00, 0x93, 0xcd, 0xe9, 0x01, 0xba, - 0xd4, 0xe9, 0x04, 0x23, 0xf9, 0xf7, 0x23, 0xfb, 0x00, 0x28, 0xd8, 0xd1, + 0xd4, 0xe9, 0x04, 0x23, 0xf8, 0xf7, 0x31, 0xfe, 0x00, 0x28, 0xd8, 0xd1, 0xe3, 0x69, 0x05, 0x99, 0x43, 0xf4, 0x80, 0x23, 0xe3, 0x61, 0x3a, 0x68, 0x38, 0x46, 0xa3, 0x6a, 0xd5, 0x69, 0x00, 0x22, 0x00, 0x93, 0xed, 0x1a, 0x63, 0x6a, 0x05, 0x91, 0x4d, 0x45, 0x28, 0xbf, 0x4d, 0x46, 0xcd, 0xe9, - 0x01, 0x85, 0xff, 0xf7, 0x88, 0xfb, 0x00, 0x28, 0xc1, 0xd1, 0x23, 0x6a, + 0x01, 0x85, 0xff, 0xf7, 0x56, 0xfb, 0x00, 0x28, 0xc1, 0xd1, 0x23, 0x6a, 0xa8, 0x44, 0xa9, 0xeb, 0x05, 0x09, 0x05, 0x99, 0x2b, 0x44, 0x23, 0x62, 0xa3, 0x6a, 0x2b, 0x44, 0xa3, 0x62, 0xc4, 0xe7, 0x6f, 0xf0, 0x08, 0x00, - 0xb3, 0xe7, 0xf7, 0xb5, 0x04, 0x46, 0x04, 0x30, 0x0e, 0x46, 0x15, 0x46, - 0xfe, 0xf7, 0x68, 0xf9, 0x10, 0xb1, 0x00, 0x20, 0x03, 0xb0, 0xf0, 0xbd, - 0x01, 0x23, 0x00, 0x90, 0x6a, 0x46, 0x29, 0x46, 0x20, 0x46, 0x01, 0x93, - 0xff, 0xf7, 0x44, 0xfc, 0x00, 0x28, 0xf3, 0xd1, 0x05, 0xf1, 0x24, 0x07, - 0x38, 0x46, 0xfe, 0xf7, 0x55, 0xf9, 0x00, 0x28, 0xeb, 0xd1, 0x31, 0x46, - 0x38, 0x46, 0xfe, 0xf7, 0x3e, 0xf9, 0x38, 0xb1, 0x3a, 0x46, 0x29, 0x46, - 0x20, 0x46, 0xff, 0xf7, 0x31, 0xfc, 0x00, 0x28, 0xee, 0xd0, 0xdf, 0xe7, - 0x01, 0x20, 0xdd, 0xe7, 0x2d, 0xe9, 0xf3, 0x41, 0x06, 0x46, 0x0c, 0x46, - 0x15, 0x46, 0x01, 0xf1, 0x24, 0x08, 0x10, 0x27, 0x22, 0x6a, 0xe1, 0x68, - 0x22, 0xf0, 0x00, 0x43, 0x01, 0xf1, 0x0c, 0x00, 0x04, 0x3b, 0x98, 0x42, - 0x17, 0xd8, 0x0c, 0x23, 0x0a, 0x46, 0x30, 0x46, 0x61, 0x68, 0x00, 0x93, - 0x2b, 0x1d, 0xff, 0xf7, 0x06, 0xfc, 0x01, 0x46, 0x90, 0xb9, 0xe6, 0x68, - 0x28, 0x46, 0x2e, 0x60, 0xfe, 0xf7, 0x0c, 0xf9, 0x30, 0x44, 0xe0, 0x60, - 0x28, 0x46, 0xfe, 0xf7, 0x07, 0xf9, 0xa3, 0x69, 0x18, 0x44, 0xa0, 0x61, - 0x04, 0xe0, 0x00, 0x2a, 0x06, 0xdb, 0x29, 0x60, 0x6f, 0xf0, 0x01, 0x01, - 0x08, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x21, 0x46, 0x42, 0x46, - 0x30, 0x46, 0xff, 0xf7, 0xf5, 0xfb, 0x01, 0x46, 0x00, 0x28, 0xf3, 0xd1, - 0xa3, 0x69, 0xe7, 0x60, 0x14, 0x33, 0xa3, 0x61, 0xc8, 0xe7, 0x2d, 0xe9, - 0xf8, 0x43, 0x14, 0x46, 0x1d, 0x46, 0x00, 0x22, 0x01, 0x23, 0x06, 0x46, - 0x0f, 0x46, 0x04, 0xf1, 0x24, 0x08, 0x05, 0xf1, 0x08, 0x09, 0xc4, 0xe9, - 0x09, 0x23, 0x40, 0x46, 0xfe, 0xf7, 0xf4, 0xf8, 0x08, 0xb1, 0x00, 0x20, - 0x0d, 0xe0, 0x42, 0x46, 0x21, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xd4, 0xfb, - 0x38, 0xb9, 0x2a, 0x46, 0x21, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xa2, 0xff, - 0x18, 0xb1, 0x83, 0x1c, 0xeb, 0xd0, 0xbd, 0xe8, 0xf8, 0x83, 0x2b, 0x79, - 0x03, 0xf0, 0x70, 0x03, 0x20, 0x2b, 0xf0, 0xd1, 0x39, 0x46, 0x48, 0x46, - 0xfe, 0xf7, 0xc7, 0xf8, 0x00, 0x28, 0xea, 0xd1, 0x01, 0x20, 0xf0, 0xe7, - 0x70, 0xb5, 0x05, 0x46, 0x92, 0xb0, 0x04, 0x30, 0x0e, 0x46, 0xfe, 0xf7, - 0xcd, 0xf8, 0x68, 0xbb, 0x01, 0x23, 0x01, 0x90, 0x01, 0xaa, 0x07, 0xa9, - 0x28, 0x46, 0x02, 0x93, 0xff, 0xf7, 0xac, 0xfb, 0x04, 0x46, 0x18, 0xb9, - 0x10, 0xa8, 0xfe, 0xf7, 0xbf, 0xf8, 0x10, 0xb1, 0x20, 0x46, 0x12, 0xb0, - 0x70, 0xbd, 0x10, 0xaa, 0x07, 0xa9, 0x28, 0x46, 0xff, 0xf7, 0x9e, 0xfb, - 0x38, 0xb9, 0x03, 0xaa, 0x07, 0xa9, 0x28, 0x46, 0xff, 0xf7, 0x6c, 0xff, - 0x18, 0xb1, 0x83, 0x1c, 0xea, 0xd0, 0x04, 0x46, 0xec, 0xe7, 0x9d, 0xf9, - 0x10, 0x30, 0x00, 0x2b, 0xf1, 0xdb, 0x08, 0x22, 0x31, 0x46, 0x05, 0xa8, - 0x12, 0xf0, 0x3e, 0xfd, 0x00, 0x28, 0xea, 0xd1, 0x01, 0x24, 0xdf, 0xe7, - 0x00, 0x24, 0xdd, 0xe7, 0xf0, 0xb5, 0x01, 0x27, 0x06, 0x1d, 0xa7, 0xb0, - 0x04, 0x46, 0x80, 0xf8, 0x40, 0x70, 0x30, 0x46, 0xfe, 0xf7, 0x92, 0xf8, - 0x05, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x81, 0x80, 0x01, 0x46, 0x2c, 0x22, - 0x05, 0xa8, 0x11, 0xf0, 0xcb, 0xf9, 0x4f, 0xf0, 0x00, 0x43, 0x28, 0x22, - 0x29, 0x46, 0x10, 0xa8, 0x0d, 0x93, 0x11, 0xf0, 0xc3, 0xf9, 0x1a, 0x97, - 0x23, 0x68, 0x1b, 0x6a, 0x9d, 0x42, 0x02, 0xd3, 0x6f, 0xf0, 0x33, 0x00, - 0x1b, 0xe0, 0x19, 0xa8, 0xfe, 0xf7, 0x76, 0xf8, 0x00, 0x28, 0x66, 0xd1, - 0x19, 0xaa, 0x10, 0xa9, 0x20, 0x46, 0xff, 0xf7, 0x57, 0xfb, 0x80, 0xb9, - 0x0d, 0x9b, 0x00, 0x2b, 0x38, 0xdb, 0x30, 0x46, 0xfe, 0xf7, 0x68, 0xf8, - 0x58, 0xb1, 0x19, 0x9b, 0x0e, 0x93, 0x1a, 0x9b, 0x0f, 0x93, 0x00, 0x23, - 0x05, 0xa9, 0x20, 0x46, 0x1a, 0x46, 0x00, 0xf0, 0x52, 0xf8, 0x27, 0xb0, - 0xf0, 0xbd, 0x01, 0xab, 0x1b, 0xaa, 0x0e, 0xa9, 0x20, 0x46, 0xff, 0xf7, - 0x50, 0xff, 0x00, 0x28, 0xf5, 0xdb, 0xea, 0xd0, 0x03, 0x9a, 0x0e, 0x99, - 0x04, 0x9b, 0x8a, 0x42, 0x0f, 0x98, 0x01, 0xd1, 0x98, 0x42, 0x17, 0xd0, - 0x82, 0x42, 0x01, 0xd1, 0x99, 0x42, 0x13, 0xd0, 0x0e, 0x92, 0xdf, 0xe7, - 0x9d, 0xf9, 0x70, 0x30, 0x00, 0x2b, 0x0d, 0xda, 0x1d, 0xa9, 0x20, 0x46, - 0xff, 0xf7, 0x68, 0xff, 0x00, 0x28, 0xdc, 0xdb, 0x1e, 0xd0, 0x1b, 0xaa, - 0x10, 0xa9, 0x20, 0x46, 0x00, 0xf0, 0x75, 0xf9, 0x00, 0x28, 0xd4, 0xd1, - 0x1b, 0xaa, 0x10, 0xa9, 0x20, 0x46, 0xff, 0xf7, 0xe9, 0xfe, 0x00, 0x28, - 0xe6, 0xd0, 0x83, 0x1c, 0xcb, 0xd1, 0x0d, 0xf1, 0x40, 0x0c, 0x05, 0xaf, - 0x01, 0x35, 0xbc, 0xe8, 0x0f, 0x00, 0x0f, 0xc7, 0xbc, 0xe8, 0x0f, 0x00, - 0x0f, 0xc7, 0x9c, 0xe8, 0x07, 0x00, 0x87, 0xe8, 0x07, 0x00, 0x99, 0xe7, - 0x9d, 0xf8, 0x70, 0x30, 0x1b, 0xaa, 0x10, 0xa9, 0x03, 0xf0, 0x7f, 0x03, - 0x8d, 0xf8, 0x70, 0x30, 0x03, 0x46, 0x20, 0x46, 0x00, 0xf0, 0xc3, 0xf9, - 0xd8, 0xe7, 0x00, 0x20, 0xad, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, 0x2d, 0xed, + 0xb3, 0xe7, 0x70, 0xb5, 0x92, 0xb0, 0x06, 0x46, 0x0d, 0x46, 0xff, 0xf7, + 0xf9, 0xfd, 0x04, 0x46, 0x68, 0xbb, 0xeb, 0x69, 0x03, 0xf4, 0x10, 0x23, + 0xb3, 0xf5, 0x80, 0x3f, 0x27, 0xd1, 0x2a, 0x1d, 0x10, 0x46, 0xfe, 0xf7, + 0x32, 0xf9, 0x10, 0xbb, 0x07, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x0e, 0xfc, + 0x04, 0x46, 0xe0, 0xb9, 0x0c, 0x23, 0xea, 0x68, 0x06, 0x90, 0x00, 0x93, + 0x04, 0xab, 0x08, 0x99, 0x03, 0x92, 0xcd, 0xe9, 0x04, 0x00, 0x30, 0x46, + 0xff, 0xf7, 0xf3, 0xfb, 0x04, 0x46, 0x70, 0xb9, 0x2b, 0x69, 0x03, 0xaa, + 0x07, 0xa9, 0x30, 0x46, 0x05, 0x93, 0x6b, 0x69, 0x06, 0x93, 0xf8, 0xf7, + 0x20, 0xfe, 0x04, 0x46, 0x18, 0xb9, 0xeb, 0x69, 0x23, 0xf4, 0x80, 0x33, + 0xeb, 0x61, 0x20, 0x46, 0x12, 0xb0, 0x70, 0xbd, 0x73, 0xb5, 0x0c, 0x46, + 0x04, 0x31, 0x06, 0x46, 0xff, 0xf7, 0x02, 0xfd, 0x05, 0x46, 0xf0, 0xb9, + 0x04, 0xf1, 0x08, 0x01, 0x30, 0x46, 0xff, 0xf7, 0xfb, 0xfc, 0x05, 0x46, + 0xb8, 0xb9, 0x04, 0x23, 0x02, 0x46, 0x61, 0x68, 0x30, 0x46, 0x00, 0x93, + 0x04, 0xf1, 0x1c, 0x03, 0xff, 0xf7, 0xc7, 0xfb, 0x10, 0xb1, 0x10, 0xf1, + 0x34, 0x0f, 0x0d, 0xd1, 0xe3, 0x69, 0x14, 0x22, 0x01, 0x33, 0xe3, 0x61, + 0x4f, 0xf0, 0xff, 0x33, 0xc4, 0xe9, 0x08, 0x23, 0xa3, 0x62, 0x10, 0x23, + 0xe3, 0x60, 0x28, 0x46, 0x02, 0xb0, 0x70, 0xbd, 0x05, 0x46, 0xfa, 0xe7, + 0x2d, 0xe9, 0xf3, 0x41, 0x06, 0x46, 0x0c, 0x46, 0x15, 0x46, 0x01, 0xf1, + 0x24, 0x08, 0x10, 0x27, 0x22, 0x6a, 0xe1, 0x68, 0x22, 0xf0, 0x00, 0x43, + 0x01, 0xf1, 0x0c, 0x00, 0x04, 0x3b, 0x98, 0x42, 0x17, 0xd8, 0x0c, 0x23, + 0x0a, 0x46, 0x30, 0x46, 0x61, 0x68, 0x00, 0x93, 0x2b, 0x1d, 0xff, 0xf7, + 0x9a, 0xfb, 0x01, 0x46, 0x90, 0xb9, 0xe6, 0x68, 0x28, 0x46, 0x2e, 0x60, + 0xff, 0xf7, 0x31, 0xfc, 0x30, 0x44, 0xe0, 0x60, 0x28, 0x46, 0xff, 0xf7, + 0x2c, 0xfc, 0xa3, 0x69, 0x18, 0x44, 0xa0, 0x61, 0x04, 0xe0, 0x00, 0x2a, + 0x06, 0xdb, 0x29, 0x60, 0x6f, 0xf0, 0x01, 0x01, 0x08, 0x46, 0x02, 0xb0, + 0xbd, 0xe8, 0xf0, 0x81, 0x21, 0x46, 0x42, 0x46, 0x30, 0x46, 0xff, 0xf7, + 0x89, 0xfb, 0x01, 0x46, 0x00, 0x28, 0xf3, 0xd1, 0xa3, 0x69, 0xe7, 0x60, + 0x14, 0x33, 0xa3, 0x61, 0xc8, 0xe7, 0x2d, 0xe9, 0xf8, 0x43, 0x14, 0x46, + 0x1d, 0x46, 0x00, 0x22, 0x01, 0x23, 0x06, 0x46, 0x0f, 0x46, 0x04, 0xf1, + 0x24, 0x08, 0x05, 0xf1, 0x08, 0x09, 0xc4, 0xe9, 0x09, 0x23, 0x40, 0x46, + 0xfe, 0xf7, 0x8f, 0xf8, 0x08, 0xb1, 0x00, 0x20, 0x0d, 0xe0, 0x42, 0x46, + 0x21, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x68, 0xfb, 0x38, 0xb9, 0x2a, 0x46, + 0x21, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xa2, 0xff, 0x18, 0xb1, 0x83, 0x1c, + 0xeb, 0xd0, 0xbd, 0xe8, 0xf8, 0x83, 0x2b, 0x79, 0x03, 0xf0, 0x70, 0x03, + 0x20, 0x2b, 0xf0, 0xd1, 0x39, 0x46, 0x48, 0x46, 0xfe, 0xf7, 0x62, 0xf8, + 0x00, 0x28, 0xea, 0xd1, 0x01, 0x20, 0xf0, 0xe7, 0x70, 0xb5, 0x05, 0x46, + 0x92, 0xb0, 0x04, 0x30, 0x0e, 0x46, 0xfe, 0xf7, 0x68, 0xf8, 0x68, 0xbb, + 0x01, 0x23, 0x01, 0x90, 0x01, 0xaa, 0x07, 0xa9, 0x28, 0x46, 0x02, 0x93, + 0xff, 0xf7, 0x40, 0xfb, 0x04, 0x46, 0x18, 0xb9, 0x10, 0xa8, 0xfe, 0xf7, + 0x5a, 0xf8, 0x10, 0xb1, 0x20, 0x46, 0x12, 0xb0, 0x70, 0xbd, 0x10, 0xaa, + 0x07, 0xa9, 0x28, 0x46, 0xff, 0xf7, 0x32, 0xfb, 0x38, 0xb9, 0x03, 0xaa, + 0x07, 0xa9, 0x28, 0x46, 0xff, 0xf7, 0x6c, 0xff, 0x18, 0xb1, 0x83, 0x1c, + 0xea, 0xd0, 0x04, 0x46, 0xec, 0xe7, 0x9d, 0xf9, 0x10, 0x30, 0x00, 0x2b, + 0xf1, 0xdb, 0x08, 0x22, 0x31, 0x46, 0x05, 0xa8, 0x12, 0xf0, 0xca, 0xff, + 0x00, 0x28, 0xea, 0xd1, 0x01, 0x24, 0xdf, 0xe7, 0x00, 0x24, 0xdd, 0xe7, + 0x2d, 0xe9, 0xf0, 0x4f, 0x2d, 0xed, 0x02, 0x8b, 0x85, 0xb0, 0x1f, 0x68, + 0x05, 0x46, 0x08, 0xee, 0x10, 0x1a, 0x02, 0x93, 0x40, 0xf6, 0x22, 0x03, + 0x14, 0x46, 0xdf, 0xf8, 0x40, 0x91, 0x53, 0x60, 0x43, 0x68, 0x93, 0x60, + 0x83, 0x68, 0xd3, 0x60, 0x49, 0x46, 0x38, 0x46, 0x13, 0xf0, 0xa9, 0xf8, + 0x07, 0xeb, 0x00, 0x08, 0x83, 0x46, 0x49, 0x46, 0x40, 0x46, 0x13, 0xf0, + 0x7e, 0xf8, 0x01, 0x28, 0x06, 0x46, 0x08, 0xeb, 0x00, 0x0a, 0x05, 0xd1, + 0x17, 0xf8, 0x0b, 0x30, 0x2e, 0x2b, 0x0a, 0xd1, 0x57, 0x46, 0xe9, 0xe7, + 0x02, 0x28, 0x06, 0xd1, 0x02, 0x46, 0x3f, 0x49, 0x40, 0x46, 0x12, 0xf0, + 0x93, 0xff, 0x00, 0x28, 0xf4, 0xd0, 0x57, 0x46, 0x4f, 0xf0, 0x01, 0x0b, + 0x49, 0x46, 0x50, 0x46, 0x13, 0xf0, 0x87, 0xf8, 0x82, 0x44, 0x49, 0x46, + 0x50, 0x46, 0x13, 0xf0, 0x5e, 0xf8, 0x02, 0x46, 0x90, 0xb1, 0x02, 0x28, + 0x0c, 0xd1, 0x03, 0x90, 0x50, 0x46, 0x33, 0x49, 0x12, 0xf0, 0x7c, 0xff, + 0x03, 0x9a, 0x28, 0xb9, 0xbb, 0xf1, 0x01, 0x0b, 0x04, 0xd1, 0x0a, 0xf1, + 0x02, 0x07, 0xc3, 0xe7, 0x0b, 0xf1, 0x01, 0x0b, 0x92, 0x44, 0xe1, 0xe7, + 0x98, 0xf8, 0x00, 0x00, 0x00, 0x28, 0x46, 0xd0, 0x02, 0x9b, 0xc3, 0xf8, + 0x00, 0x80, 0x23, 0x79, 0x22, 0x2b, 0x4a, 0xd1, 0x04, 0xf1, 0x08, 0x0a, + 0x18, 0xee, 0x10, 0x1a, 0x28, 0x46, 0x52, 0x46, 0xff, 0xf7, 0xb2, 0xfa, + 0x00, 0x28, 0x36, 0xd1, 0x05, 0xf1, 0x14, 0x0b, 0x22, 0x46, 0x18, 0xee, + 0x10, 0x1a, 0x28, 0x46, 0xff, 0xf7, 0xe8, 0xfe, 0x68, 0xbb, 0x23, 0x79, + 0x03, 0xf0, 0x7f, 0x03, 0x11, 0x2b, 0x01, 0xd0, 0x22, 0x2b, 0xf1, 0xd1, + 0xe3, 0x79, 0xb3, 0x42, 0xee, 0xd1, 0x23, 0x68, 0x59, 0x46, 0x62, 0x79, + 0x28, 0x46, 0x04, 0x33, 0x13, 0x44, 0xa2, 0x79, 0x13, 0x44, 0x18, 0xee, + 0x10, 0x2a, 0xcd, 0xe9, 0x00, 0x86, 0x52, 0x68, 0xf8, 0xf7, 0x4b, 0xfc, + 0x00, 0x28, 0x12, 0xdb, 0xdc, 0xd0, 0x95, 0xf8, 0x41, 0x30, 0x00, 0x2b, + 0x82, 0xd1, 0x94, 0xf9, 0x04, 0x30, 0x00, 0x2b, 0xbf, 0xf6, 0x7e, 0xaf, + 0x51, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x2e, 0xff, 0x00, 0x28, 0x07, 0xd0, + 0x01, 0xdb, 0x6f, 0xf0, 0x01, 0x00, 0x05, 0xb0, 0xbd, 0xec, 0x02, 0x8b, + 0xbd, 0xe8, 0xf0, 0x8f, 0x23, 0x79, 0x03, 0xf0, 0x7f, 0x03, 0x23, 0x71, + 0x6a, 0xe7, 0x6f, 0xf0, 0x13, 0x00, 0xf2, 0xe7, 0x95, 0xd9, 0x01, 0x08, + 0x93, 0xd9, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x47, 0x80, 0x46, 0x8c, 0xb0, + 0x10, 0x46, 0x0c, 0x46, 0x16, 0x46, 0xff, 0xf7, 0xf0, 0xfa, 0x0b, 0x6a, + 0x14, 0x30, 0x23, 0xf0, 0x00, 0x43, 0x83, 0x42, 0x1d, 0xd1, 0x01, 0xaa, + 0x04, 0x31, 0x40, 0x46, 0xff, 0xf7, 0xba, 0xfa, 0x05, 0x1e, 0x12, 0xdb, + 0x09, 0x9a, 0x00, 0x2a, 0x13, 0xda, 0x23, 0x6a, 0x01, 0xa9, 0x40, 0x46, + 0x63, 0xf0, 0x00, 0x43, 0x13, 0x40, 0x09, 0x93, 0x63, 0x6a, 0x0a, 0x93, + 0xa3, 0x6a, 0x0b, 0x93, 0x00, 0x23, 0x1a, 0x46, 0x00, 0xf0, 0xdb, 0xf8, + 0x05, 0x46, 0x28, 0x46, 0x0c, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x33, 0x68, + 0x30, 0x46, 0x01, 0x93, 0xff, 0xf7, 0xc7, 0xfa, 0x00, 0x23, 0x02, 0x90, + 0x01, 0xaa, 0x21, 0x46, 0x40, 0x46, 0xcd, 0xe9, 0x03, 0x33, 0x01, 0x23, + 0x00, 0xf0, 0xc7, 0xf8, 0x05, 0x46, 0x00, 0x28, 0xe9, 0xd1, 0xd8, 0xf8, + 0x0c, 0x70, 0x21, 0x1d, 0x4f, 0xf0, 0xff, 0x3a, 0xcf, 0xb9, 0xd8, 0xf8, + 0x10, 0x70, 0x21, 0x1d, 0x00, 0x2f, 0xde, 0xd0, 0x38, 0x1d, 0xfd, 0xf7, + 0x29, 0xff, 0x70, 0xb9, 0xfc, 0x68, 0x33, 0x68, 0x9c, 0x42, 0x0a, 0xd9, + 0x30, 0x46, 0xff, 0xf7, 0xa4, 0xfa, 0x20, 0x1a, 0xf8, 0x60, 0x30, 0x46, + 0xff, 0xf7, 0x9f, 0xfa, 0xbb, 0x69, 0x18, 0x1a, 0xb8, 0x61, 0x3f, 0x68, + 0xe8, 0xe7, 0x38, 0x1d, 0xfd, 0xf7, 0x14, 0xff, 0x30, 0xb9, 0xd7, 0xf8, + 0x0c, 0x90, 0x33, 0x68, 0x99, 0x45, 0x03, 0xd1, 0xc7, 0xe9, 0x01, 0xaa, + 0x3f, 0x68, 0xd7, 0xe7, 0xfc, 0xd9, 0x30, 0x46, 0xff, 0xf7, 0x89, 0xfa, + 0xa9, 0xeb, 0x00, 0x00, 0xf8, 0x60, 0xf5, 0xe7, 0xf0, 0xb5, 0x01, 0x27, + 0x06, 0x1d, 0xa7, 0xb0, 0x04, 0x46, 0x80, 0xf8, 0x40, 0x70, 0x30, 0x46, + 0xfd, 0xf7, 0x09, 0xff, 0x05, 0x46, 0x00, 0x28, 0x7f, 0xd1, 0x01, 0x46, + 0x2c, 0x22, 0x05, 0xa8, 0x11, 0xf0, 0x34, 0xfb, 0x4f, 0xf0, 0x00, 0x43, + 0x28, 0x22, 0x29, 0x46, 0x10, 0xa8, 0x0d, 0x93, 0x11, 0xf0, 0x2c, 0xfb, + 0x1a, 0x97, 0x23, 0x68, 0x1b, 0x6a, 0x9d, 0x42, 0x02, 0xd3, 0x6f, 0xf0, + 0x33, 0x00, 0x1b, 0xe0, 0x19, 0xa8, 0xfd, 0xf7, 0xee, 0xfe, 0x00, 0x28, + 0x65, 0xd1, 0x19, 0xaa, 0x10, 0xa9, 0x20, 0x46, 0xff, 0xf7, 0xc8, 0xf9, + 0x80, 0xb9, 0x0d, 0x9b, 0x00, 0x2b, 0x38, 0xdb, 0x30, 0x46, 0xfd, 0xf7, + 0xe0, 0xfe, 0x58, 0xb1, 0x19, 0x9b, 0x0e, 0x93, 0x1a, 0x9b, 0x0f, 0x93, + 0x00, 0x23, 0x05, 0xa9, 0x20, 0x46, 0x1a, 0x46, 0x00, 0xf0, 0x51, 0xf8, + 0x27, 0xb0, 0xf0, 0xbd, 0x01, 0xab, 0x1b, 0xaa, 0x0e, 0xa9, 0x20, 0x46, + 0xff, 0xf7, 0x2d, 0xfe, 0x00, 0x28, 0xf5, 0xdb, 0xea, 0xd0, 0x03, 0x9a, + 0x0e, 0x99, 0x04, 0x9b, 0x8a, 0x42, 0x0f, 0x98, 0x01, 0xd1, 0x98, 0x42, + 0x17, 0xd0, 0x82, 0x42, 0x01, 0xd1, 0x99, 0x42, 0x13, 0xd0, 0x0e, 0x92, + 0xdf, 0xe7, 0x9d, 0xf9, 0x70, 0x30, 0x00, 0x2b, 0x0d, 0xda, 0x1d, 0xa9, + 0x20, 0x46, 0xff, 0xf7, 0x45, 0xfe, 0x00, 0x28, 0xdc, 0xdb, 0x1e, 0xd0, + 0x1b, 0xaa, 0x10, 0xa9, 0x20, 0x46, 0xff, 0xf7, 0x25, 0xff, 0x00, 0x28, + 0xd4, 0xd1, 0x1b, 0xaa, 0x10, 0xa9, 0x20, 0x46, 0xff, 0xf7, 0xc6, 0xfd, + 0x00, 0x28, 0xe6, 0xd0, 0x83, 0x1c, 0xcb, 0xd1, 0x0d, 0xf1, 0x40, 0x0c, + 0x05, 0xaf, 0x01, 0x35, 0xbc, 0xe8, 0x0f, 0x00, 0x0f, 0xc7, 0xbc, 0xe8, + 0x0f, 0x00, 0x0f, 0xc7, 0x9c, 0xe8, 0x07, 0x00, 0x87, 0xe8, 0x07, 0x00, + 0x99, 0xe7, 0x9d, 0xf8, 0x70, 0x30, 0x1b, 0xaa, 0x10, 0xa9, 0x20, 0x46, + 0x03, 0xf0, 0x7f, 0x03, 0x8d, 0xf8, 0x70, 0x30, 0xf8, 0xf7, 0x93, 0xfb, + 0xd9, 0xe7, 0x00, 0x20, 0xae, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, 0x2d, 0xed, 0x02, 0x8b, 0x9b, 0xb0, 0x06, 0x46, 0x0d, 0x46, 0x07, 0x93, 0xcb, 0x69, 0x07, 0x98, 0x01, 0x33, 0x05, 0x92, 0x02, 0xeb, 0x00, 0x17, 0xcb, 0x61, 0x0b, 0x1d, 0xd1, 0xe9, 0x01, 0x14, 0x08, 0xee, 0x10, 0x3a, 0x13, 0x46, 0xc5, 0xe9, 0x01, 0x41, 0x9f, 0x42, 0x0f, 0xd1, 0x00, 0x23, 0xcd, 0xe9, 0x09, 0x41, 0x06, 0x93, 0x30, 0x68, 0x69, 0x68, 0xc3, 0x68, 0x98, 0x47, - 0x04, 0x46, 0x70, 0xb1, 0x14, 0xf1, 0x34, 0x0f, 0x00, 0xf0, 0xf4, 0x80, - 0x20, 0x46, 0xff, 0xe0, 0xd8, 0x68, 0x10, 0x33, 0x2a, 0x6a, 0x02, 0x44, + 0x04, 0x46, 0x70, 0xb1, 0x14, 0xf1, 0x34, 0x0f, 0x00, 0xf0, 0xf3, 0x80, + 0x20, 0x46, 0xfe, 0xe0, 0xd8, 0x68, 0x10, 0x33, 0x2a, 0x6a, 0x02, 0x44, 0x53, 0xf8, 0x0c, 0x0c, 0x12, 0x1a, 0x2a, 0x62, 0xe4, 0xe7, 0x05, 0xf1, 0x1c, 0x08, 0x0d, 0xf1, 0x2c, 0x09, 0x4f, 0xf0, 0xff, 0x33, 0x06, 0xf1, 0x20, 0x0a, 0x10, 0x27, 0x10, 0x22, 0x41, 0x46, 0x48, 0x46, 0x0b, 0x93, - 0xfd, 0xf7, 0x90, 0xff, 0x22, 0x46, 0x00, 0x94, 0x6b, 0x68, 0x51, 0x46, - 0x30, 0x46, 0xcd, 0xe9, 0x01, 0x87, 0xfe, 0xf7, 0x8d, 0xfd, 0x04, 0x46, + 0xfd, 0xf7, 0x10, 0xfe, 0x22, 0x46, 0x00, 0x94, 0x6b, 0x68, 0x51, 0x46, + 0x30, 0x46, 0xcd, 0xe9, 0x01, 0x87, 0xfe, 0xf7, 0x39, 0xfb, 0x04, 0x46, 0x00, 0x28, 0xd5, 0xd1, 0x83, 0x46, 0xb8, 0x46, 0x08, 0xee, 0x90, 0x9a, - 0x2a, 0xe0, 0x07, 0x9b, 0x9b, 0x45, 0x80, 0xf2, 0xa0, 0x80, 0x05, 0x9a, + 0x2a, 0xe0, 0x07, 0x9b, 0x9b, 0x45, 0x80, 0xf2, 0x9f, 0x80, 0x05, 0x9a, 0x4f, 0xea, 0x0b, 0x13, 0xd3, 0x58, 0x02, 0xeb, 0x0b, 0x19, 0x43, 0x45, - 0x40, 0xf0, 0x97, 0x80, 0x18, 0xee, 0x90, 0x0a, 0xd9, 0xe9, 0x02, 0x12, - 0xfd, 0xf7, 0x6c, 0xff, 0xd9, 0xf8, 0x0c, 0x30, 0x00, 0x22, 0x51, 0x46, + 0x40, 0xf0, 0x96, 0x80, 0x18, 0xee, 0x90, 0x0a, 0xd9, 0xe9, 0x02, 0x12, + 0xfd, 0xf7, 0xec, 0xfd, 0xd9, 0xf8, 0x0c, 0x30, 0x00, 0x22, 0x51, 0x46, 0x02, 0x93, 0x30, 0x46, 0xd9, 0xf8, 0x08, 0x30, 0xcd, 0xe9, 0x00, 0x73, - 0x6b, 0x68, 0xfe, 0xf7, 0x65, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xad, 0xd1, + 0x6b, 0x68, 0xfe, 0xf7, 0x11, 0xfb, 0x04, 0x46, 0x00, 0x28, 0xad, 0xd1, 0xd9, 0xf8, 0x04, 0x30, 0x0b, 0xf1, 0x01, 0x0b, 0x98, 0x44, 0xd9, 0xf8, 0x0c, 0x30, 0x1f, 0x44, 0x2b, 0x6a, 0x23, 0xf0, 0x00, 0x43, 0x04, 0x3b, 0xbb, 0x42, 0xce, 0xd8, 0x04, 0x23, 0x0d, 0xf1, 0x2c, 0x08, 0x00, 0x22, 0x51, 0x46, 0x02, 0x93, 0x30, 0x46, 0x6b, 0x68, 0xcd, 0xe9, 0x00, 0x78, - 0xfe, 0xf7, 0x48, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x90, 0xd1, 0x4f, 0xf0, + 0xfe, 0xf7, 0xf4, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x90, 0xd1, 0x4f, 0xf0, 0xff, 0x33, 0x02, 0x46, 0x51, 0x46, 0x30, 0x46, 0x73, 0x61, 0xfe, 0xf7, - 0x10, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x85, 0xd1, 0x30, 0x68, 0x03, 0x69, + 0xbc, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x85, 0xd1, 0x30, 0x68, 0x03, 0x69, 0x98, 0x47, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x7f, 0xaf, 0x4f, 0xf0, 0xff, 0x33, 0x0f, 0xaf, 0x02, 0x46, 0x69, 0x68, 0x0f, 0x93, 0x30, 0x46, 0x2b, 0x6a, 0x00, 0x97, 0x23, 0xf0, 0x00, 0x43, 0x04, 0x3b, 0xff, 0xf7, - 0x0f, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x71, 0xaf, 0x0f, 0x9a, - 0x0b, 0x9b, 0x9a, 0x42, 0x60, 0xd1, 0x06, 0x9b, 0x4b, 0xb3, 0x06, 0xf1, - 0x04, 0x09, 0x48, 0x46, 0xfd, 0xf7, 0x4a, 0xff, 0x00, 0x28, 0x75, 0xd1, - 0x43, 0x46, 0x3a, 0x46, 0x09, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x3d, 0xfe, - 0x00, 0x28, 0x5d, 0xdb, 0x6c, 0xd0, 0x6b, 0x68, 0x42, 0x46, 0x39, 0x46, - 0x30, 0x46, 0x0d, 0x93, 0xab, 0x68, 0x0e, 0x93, 0x00, 0x23, 0x00, 0xf0, - 0xea, 0xf8, 0x00, 0x28, 0x50, 0xd1, 0x49, 0x46, 0x09, 0xa8, 0xfd, 0xf7, - 0x1e, 0xff, 0x18, 0xb9, 0x6b, 0x68, 0x73, 0x60, 0xab, 0x68, 0xb3, 0x60, - 0x30, 0x46, 0xff, 0xf7, 0x8b, 0xfe, 0x00, 0x28, 0x42, 0xd1, 0x34, 0x69, - 0x00, 0x2c, 0x3f, 0xf4, 0x3d, 0xaf, 0x18, 0xee, 0x10, 0x1a, 0x20, 0x1d, - 0xfd, 0xf7, 0x0b, 0xff, 0x18, 0xb9, 0x6b, 0x68, 0x63, 0x60, 0xab, 0x68, - 0xa3, 0x60, 0x24, 0x68, 0xf0, 0xe7, 0x01, 0x23, 0x42, 0x46, 0x0a, 0x99, - 0x30, 0x46, 0x00, 0x93, 0x0f, 0xab, 0xff, 0xf7, 0xe8, 0xf9, 0x04, 0x46, - 0x00, 0x28, 0x7f, 0xf4, 0x25, 0xaf, 0x01, 0x22, 0x0f, 0xa9, 0x18, 0xee, - 0x90, 0x0a, 0xfd, 0xf7, 0xc9, 0xfe, 0x01, 0x23, 0x22, 0x46, 0x51, 0x46, - 0x02, 0x93, 0x0f, 0xab, 0x30, 0x46, 0xcd, 0xe9, 0x00, 0x73, 0x6b, 0x68, - 0xfe, 0xf7, 0xc4, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x0c, 0xaf, - 0x08, 0xf1, 0x01, 0x08, 0x01, 0x37, 0x61, 0xe7, 0x4f, 0xf0, 0xff, 0x33, - 0x00, 0x22, 0x0f, 0xa9, 0x09, 0xa8, 0x33, 0x62, 0x01, 0x23, 0xcd, 0xe9, - 0x0f, 0x23, 0xfd, 0xf7, 0xd4, 0xfe, 0x30, 0xb9, 0x6f, 0xf0, 0x33, 0x00, - 0x1b, 0xb0, 0xbd, 0xec, 0x02, 0x8b, 0xbd, 0xe8, 0xf0, 0x8f, 0x18, 0xee, - 0x10, 0x1a, 0x30, 0x46, 0xff, 0xf7, 0xaa, 0xfa, 0x01, 0x23, 0x06, 0x93, - 0x00, 0x28, 0x3f, 0xf4, 0xe5, 0xae, 0xef, 0xe7, 0x3a, 0x46, 0x09, 0xa9, - 0x30, 0x46, 0xff, 0xf7, 0x5e, 0xfd, 0x00, 0x28, 0xe8, 0xdb, 0xa4, 0xd0, - 0x6b, 0x68, 0x39, 0x46, 0x30, 0x46, 0x18, 0x93, 0xab, 0x68, 0x19, 0x93, - 0x00, 0x23, 0x1a, 0x46, 0xff, 0xf7, 0xb5, 0xfe, 0x97, 0xe7, 0x2d, 0xe9, - 0xf0, 0x47, 0x80, 0x46, 0x8c, 0xb0, 0x10, 0x46, 0x0c, 0x46, 0x16, 0x46, - 0xfd, 0xf7, 0x9e, 0xfe, 0x0b, 0x6a, 0x14, 0x30, 0x23, 0xf0, 0x00, 0x43, - 0x83, 0x42, 0x1d, 0xd1, 0x01, 0xaa, 0x04, 0x31, 0x40, 0x46, 0xff, 0xf7, - 0x3c, 0xfd, 0x05, 0x1e, 0x12, 0xdb, 0x09, 0x9a, 0x00, 0x2a, 0x13, 0xda, - 0x23, 0x6a, 0x01, 0xa9, 0x40, 0x46, 0x63, 0xf0, 0x00, 0x43, 0x13, 0x40, - 0x09, 0x93, 0x63, 0x6a, 0x0a, 0x93, 0xa3, 0x6a, 0x0b, 0x93, 0x00, 0x23, - 0x1a, 0x46, 0xff, 0xf7, 0x8c, 0xfe, 0x05, 0x46, 0x28, 0x46, 0x0c, 0xb0, - 0xbd, 0xe8, 0xf0, 0x87, 0x33, 0x68, 0x30, 0x46, 0x01, 0x93, 0xfd, 0xf7, - 0x75, 0xfe, 0x00, 0x23, 0x02, 0x90, 0x01, 0xaa, 0x21, 0x46, 0x40, 0x46, - 0xcd, 0xe9, 0x03, 0x33, 0x01, 0x23, 0xff, 0xf7, 0x78, 0xfe, 0x05, 0x46, - 0x00, 0x28, 0xe9, 0xd1, 0xd8, 0xf8, 0x0c, 0x70, 0x21, 0x1d, 0x4f, 0xf0, - 0xff, 0x3a, 0xcf, 0xb9, 0xd8, 0xf8, 0x10, 0x70, 0x21, 0x1d, 0x00, 0x2f, - 0xde, 0xd0, 0x38, 0x1d, 0xfd, 0xf7, 0x61, 0xfe, 0x70, 0xb9, 0xfc, 0x68, - 0x33, 0x68, 0x9c, 0x42, 0x0a, 0xd9, 0x30, 0x46, 0xfd, 0xf7, 0x52, 0xfe, - 0x20, 0x1a, 0xf8, 0x60, 0x30, 0x46, 0xfd, 0xf7, 0x4d, 0xfe, 0xbb, 0x69, - 0x18, 0x1a, 0xb8, 0x61, 0x3f, 0x68, 0xe8, 0xe7, 0x38, 0x1d, 0xfd, 0xf7, - 0x4c, 0xfe, 0x30, 0xb9, 0xd7, 0xf8, 0x0c, 0x90, 0x33, 0x68, 0x99, 0x45, - 0x03, 0xd1, 0xc7, 0xe9, 0x01, 0xaa, 0x3f, 0x68, 0xd7, 0xe7, 0xfc, 0xd9, - 0x30, 0x46, 0xfd, 0xf7, 0x37, 0xfe, 0xa9, 0xeb, 0x00, 0x00, 0xf8, 0x60, - 0xf5, 0xe7, 0x70, 0xb5, 0x15, 0x46, 0x88, 0xb0, 0x0c, 0x26, 0xd2, 0x79, - 0x55, 0xf8, 0x04, 0x4b, 0x00, 0x2b, 0x07, 0x92, 0x00, 0x94, 0x34, 0x44, - 0x03, 0x96, 0x04, 0x94, 0xcd, 0xe9, 0x05, 0x23, 0x14, 0xbf, 0x02, 0x23, - 0x01, 0x23, 0x6a, 0x46, 0xcd, 0xe9, 0x01, 0x65, 0xff, 0xf7, 0x29, 0xfe, - 0x08, 0xb0, 0x70, 0xbd, 0x70, 0xb5, 0x92, 0xb0, 0x06, 0x46, 0x0d, 0x46, - 0xff, 0xf7, 0xbc, 0xfa, 0x04, 0x46, 0x70, 0xbb, 0xeb, 0x69, 0x03, 0xf4, - 0x10, 0x23, 0xb3, 0xf5, 0x80, 0x3f, 0x28, 0xd1, 0x2a, 0x1d, 0x10, 0x46, - 0xfd, 0xf7, 0x20, 0xfe, 0x18, 0xbb, 0x07, 0xa9, 0x30, 0x46, 0xff, 0xf7, - 0x03, 0xf9, 0x04, 0x46, 0xe8, 0xb9, 0x0c, 0x23, 0xea, 0x68, 0x06, 0x90, - 0x00, 0x93, 0x04, 0xab, 0x08, 0x99, 0x03, 0x92, 0xcd, 0xe9, 0x04, 0x00, - 0x30, 0x46, 0xff, 0xf7, 0xe8, 0xf8, 0x04, 0x46, 0x78, 0xb9, 0x2b, 0x69, - 0x03, 0xaa, 0x07, 0xa9, 0x05, 0x93, 0x6b, 0x69, 0x06, 0x93, 0x03, 0x46, - 0x30, 0x46, 0xff, 0xf7, 0xb6, 0xff, 0x04, 0x46, 0x18, 0xb9, 0xeb, 0x69, - 0x23, 0xf4, 0x80, 0x33, 0xeb, 0x61, 0x20, 0x46, 0x12, 0xb0, 0x70, 0xbd, - 0x2d, 0xe9, 0xf0, 0x4f, 0x2d, 0xed, 0x02, 0x8b, 0x85, 0xb0, 0x1f, 0x68, - 0x05, 0x46, 0x08, 0xee, 0x10, 0x1a, 0x02, 0x93, 0x40, 0xf6, 0x22, 0x03, - 0x14, 0x46, 0xdf, 0xf8, 0x40, 0x91, 0x53, 0x60, 0x43, 0x68, 0x93, 0x60, - 0x83, 0x68, 0xd3, 0x60, 0x49, 0x46, 0x38, 0x46, 0x12, 0xf0, 0x79, 0xfb, - 0x07, 0xeb, 0x00, 0x08, 0x83, 0x46, 0x49, 0x46, 0x40, 0x46, 0x12, 0xf0, - 0x4e, 0xfb, 0x01, 0x28, 0x06, 0x46, 0x08, 0xeb, 0x00, 0x0a, 0x05, 0xd1, - 0x17, 0xf8, 0x0b, 0x30, 0x2e, 0x2b, 0x0a, 0xd1, 0x57, 0x46, 0xe9, 0xe7, - 0x02, 0x28, 0x06, 0xd1, 0x02, 0x46, 0x3f, 0x49, 0x40, 0x46, 0x12, 0xf0, - 0x63, 0xfa, 0x00, 0x28, 0xf4, 0xd0, 0x57, 0x46, 0x4f, 0xf0, 0x01, 0x0b, - 0x49, 0x46, 0x50, 0x46, 0x12, 0xf0, 0x57, 0xfb, 0x82, 0x44, 0x49, 0x46, - 0x50, 0x46, 0x12, 0xf0, 0x2e, 0xfb, 0x02, 0x46, 0x90, 0xb1, 0x02, 0x28, - 0x0c, 0xd1, 0x03, 0x90, 0x50, 0x46, 0x33, 0x49, 0x12, 0xf0, 0x4c, 0xfa, - 0x03, 0x9a, 0x28, 0xb9, 0xbb, 0xf1, 0x01, 0x0b, 0x04, 0xd1, 0x0a, 0xf1, - 0x02, 0x07, 0xc3, 0xe7, 0x0b, 0xf1, 0x01, 0x0b, 0x92, 0x44, 0xe1, 0xe7, - 0x98, 0xf8, 0x00, 0x00, 0x00, 0x28, 0x46, 0xd0, 0x02, 0x9b, 0xc3, 0xf8, - 0x00, 0x80, 0x23, 0x79, 0x22, 0x2b, 0x4a, 0xd1, 0x04, 0xf1, 0x08, 0x0a, - 0x18, 0xee, 0x10, 0x1a, 0x28, 0x46, 0x52, 0x46, 0xff, 0xf7, 0x7a, 0xf8, - 0x00, 0x28, 0x36, 0xd1, 0x05, 0xf1, 0x14, 0x0b, 0x22, 0x46, 0x18, 0xee, - 0x10, 0x1a, 0x28, 0x46, 0xff, 0xf7, 0x44, 0xfc, 0x68, 0xbb, 0x23, 0x79, - 0x03, 0xf0, 0x7f, 0x03, 0x11, 0x2b, 0x01, 0xd0, 0x22, 0x2b, 0xf1, 0xd1, - 0xe3, 0x79, 0xb3, 0x42, 0xee, 0xd1, 0x23, 0x68, 0x59, 0x46, 0x62, 0x79, - 0x28, 0x46, 0x04, 0x33, 0x13, 0x44, 0xa2, 0x79, 0x13, 0x44, 0x18, 0xee, - 0x10, 0x2a, 0xcd, 0xe9, 0x00, 0x86, 0x52, 0x68, 0xf8, 0xf7, 0xd3, 0xfe, - 0x00, 0x28, 0x12, 0xdb, 0xdc, 0xd0, 0x95, 0xf8, 0x41, 0x30, 0x00, 0x2b, - 0x82, 0xd1, 0x94, 0xf9, 0x04, 0x30, 0x00, 0x2b, 0xbf, 0xf6, 0x7e, 0xaf, - 0x51, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x8a, 0xfc, 0x00, 0x28, 0x07, 0xd0, - 0x01, 0xdb, 0x6f, 0xf0, 0x01, 0x00, 0x05, 0xb0, 0xbd, 0xec, 0x02, 0x8b, - 0xbd, 0xe8, 0xf0, 0x8f, 0x23, 0x79, 0x03, 0xf0, 0x7f, 0x03, 0x23, 0x71, - 0x6a, 0xe7, 0x6f, 0xf0, 0x13, 0x00, 0xf2, 0xe7, 0x55, 0xdf, 0x01, 0x08, - 0x53, 0xdf, 0x01, 0x08, 0x73, 0xb5, 0x0c, 0x46, 0x04, 0x31, 0x06, 0x46, - 0xff, 0xf7, 0x14, 0xf9, 0x05, 0x46, 0xf0, 0xb9, 0x04, 0xf1, 0x08, 0x01, - 0x30, 0x46, 0xff, 0xf7, 0x0d, 0xf9, 0x05, 0x46, 0xb8, 0xb9, 0x04, 0x23, - 0x02, 0x46, 0x61, 0x68, 0x30, 0x46, 0x00, 0x93, 0x04, 0xf1, 0x1c, 0x03, - 0xff, 0xf7, 0x0b, 0xf8, 0x10, 0xb1, 0x10, 0xf1, 0x34, 0x0f, 0x0d, 0xd1, - 0xe3, 0x69, 0x14, 0x22, 0x01, 0x33, 0xe3, 0x61, 0x4f, 0xf0, 0xff, 0x33, - 0xc4, 0xe9, 0x08, 0x23, 0xa3, 0x62, 0x10, 0x23, 0xe3, 0x60, 0x28, 0x46, - 0x02, 0xb0, 0x70, 0xbd, 0x05, 0x46, 0xfa, 0xe7, 0x2d, 0xe9, 0xf0, 0x43, - 0x07, 0x46, 0x95, 0xb0, 0x0e, 0x46, 0x90, 0x46, 0x99, 0x46, 0x01, 0xf1, - 0x24, 0x04, 0x40, 0x46, 0x31, 0x6a, 0xfd, 0xf7, 0xf7, 0xfc, 0x3b, 0x68, - 0x08, 0x44, 0xdb, 0x69, 0x98, 0x42, 0x18, 0xd8, 0x04, 0x39, 0x43, 0x46, - 0x00, 0x22, 0x43, 0xf8, 0x04, 0x1b, 0x09, 0x91, 0xcd, 0xe9, 0x0a, 0x23, - 0x0c, 0x23, 0xcd, 0xe9, 0x0c, 0x31, 0x98, 0xf8, 0x07, 0x30, 0x31, 0x46, - 0xcd, 0xe9, 0x0e, 0x29, 0x10, 0x93, 0x09, 0xaa, 0x02, 0x23, 0x38, 0x46, - 0xff, 0xf7, 0xe9, 0xfc, 0x15, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x00, 0x29, - 0x37, 0xdb, 0x35, 0x46, 0x09, 0xac, 0x0f, 0xcd, 0x0f, 0xc4, 0x0f, 0xcd, - 0x0f, 0xc4, 0x95, 0xe8, 0x07, 0x00, 0x84, 0xe8, 0x07, 0x00, 0x31, 0x46, - 0x38, 0x46, 0xff, 0xf7, 0x99, 0xff, 0x00, 0x28, 0xea, 0xd1, 0x12, 0x9b, - 0x42, 0x46, 0x31, 0x46, 0x73, 0x62, 0x13, 0x9b, 0xb3, 0x62, 0x33, 0x6a, - 0x04, 0x3b, 0x42, 0xf8, 0x04, 0x3b, 0x03, 0x92, 0x0c, 0x22, 0xcd, 0xe9, - 0x01, 0x30, 0xcd, 0xe9, 0x04, 0x23, 0x98, 0xf8, 0x07, 0x30, 0x01, 0xaa, - 0xcd, 0xe9, 0x06, 0x09, 0x08, 0x93, 0x38, 0x46, 0x02, 0x23, 0xff, 0xf7, - 0xba, 0xfc, 0x00, 0x28, 0xce, 0xd1, 0x11, 0x9b, 0x02, 0x46, 0x09, 0xa9, - 0x43, 0xf0, 0x00, 0x43, 0x11, 0x93, 0x73, 0x68, 0x12, 0x93, 0xb3, 0x68, - 0x13, 0x93, 0x03, 0x46, 0xbf, 0xe7, 0x22, 0x46, 0x31, 0x46, 0x38, 0x46, - 0xfe, 0xf7, 0x9a, 0xff, 0x00, 0x28, 0x9c, 0xd0, 0xba, 0xe7, 0x83, 0x69, - 0x02, 0x39, 0x02, 0x3b, 0x8b, 0x42, 0x83, 0xbf, 0x43, 0x89, 0xc0, 0x6a, - 0x01, 0xfb, 0x03, 0x00, 0x00, 0x20, 0x70, 0x47, 0x38, 0xb5, 0x03, 0x6b, - 0x05, 0x46, 0x0c, 0x46, 0x8b, 0x42, 0x0f, 0xd0, 0xfd, 0xf7, 0x9a, 0xfd, - 0x58, 0xb9, 0x22, 0x46, 0x01, 0x23, 0x69, 0x6b, 0x68, 0x78, 0xfd, 0xf7, - 0x2d, 0xfd, 0x00, 0x28, 0x1c, 0xbf, 0x4f, 0xf0, 0xff, 0x34, 0x01, 0x20, - 0x2c, 0x63, 0x38, 0xbd, 0x00, 0x20, 0xfc, 0xe7, 0x01, 0x29, 0xf8, 0xb5, - 0x04, 0x46, 0x0e, 0x46, 0x64, 0xd9, 0x83, 0x69, 0x99, 0x42, 0x61, 0xd2, - 0x03, 0x78, 0x02, 0x2b, 0x30, 0xd0, 0x03, 0x2b, 0x45, 0xd0, 0x01, 0x2b, - 0x5a, 0xd1, 0x01, 0xeb, 0x51, 0x05, 0x83, 0x89, 0x41, 0x6a, 0xb5, 0xfb, - 0xf3, 0xf3, 0x19, 0x44, 0xff, 0xf7, 0xd0, 0xff, 0x10, 0xb1, 0x4f, 0xf0, - 0xff, 0x30, 0xf8, 0xbd, 0xa1, 0x89, 0x6f, 0x1c, 0x20, 0x46, 0xb5, 0xfb, - 0xf1, 0xf3, 0x01, 0xfb, 0x13, 0x55, 0x63, 0x6b, 0xb7, 0xfb, 0xf1, 0xf1, - 0x5d, 0x5d, 0x63, 0x6a, 0x19, 0x44, 0xff, 0xf7, 0xbd, 0xff, 0x00, 0x28, - 0xeb, 0xd1, 0xa2, 0x89, 0xb7, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x73, - 0x62, 0x6b, 0xd0, 0x5c, 0xf3, 0x07, 0x45, 0xea, 0x00, 0x20, 0x4c, 0xbf, - 0x00, 0x09, 0xc0, 0xf3, 0x0b, 0x00, 0xde, 0xe7, 0x83, 0x89, 0x5b, 0x08, - 0xb1, 0xfb, 0xf3, 0xf3, 0x41, 0x6a, 0x19, 0x44, 0xff, 0xf7, 0xa4, 0xff, - 0x00, 0x28, 0xd2, 0xd1, 0xa2, 0x89, 0x76, 0x00, 0xb6, 0xfb, 0xf2, 0xf3, - 0x02, 0xfb, 0x13, 0x66, 0x63, 0x6b, 0x9a, 0x19, 0x98, 0x5d, 0x52, 0x78, - 0x40, 0xea, 0x02, 0x20, 0xc7, 0xe7, 0x83, 0x89, 0x9b, 0x08, 0xb1, 0xfb, - 0xf3, 0xf3, 0x41, 0x6a, 0x19, 0x44, 0xff, 0xf7, 0x8d, 0xff, 0x00, 0x28, - 0xbb, 0xd1, 0xa1, 0x89, 0xb6, 0x00, 0xb6, 0xfb, 0xf1, 0xf0, 0x01, 0xfb, - 0x10, 0x66, 0x60, 0x6b, 0x30, 0x44, 0xfd, 0xf7, 0x4d, 0xfd, 0x20, 0xf0, - 0x70, 0x40, 0xb0, 0xe7, 0x01, 0x20, 0xae, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, - 0x1e, 0x46, 0x03, 0x68, 0x85, 0xb0, 0x0c, 0x46, 0x9b, 0x6f, 0x82, 0x46, - 0x91, 0x46, 0x98, 0x47, 0x03, 0xa9, 0x20, 0x46, 0xfd, 0xf7, 0xdf, 0xfc, - 0x05, 0x46, 0x07, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xa3, 0x80, 0x65, 0x7c, - 0x0d, 0xbb, 0x23, 0x7c, 0x13, 0xf0, 0x01, 0x03, 0x00, 0x93, 0x00, 0xf0, - 0x9d, 0x80, 0xe3, 0x68, 0x2f, 0x46, 0x62, 0x69, 0x9b, 0x1a, 0x9e, 0x42, - 0x28, 0xbf, 0x1e, 0x46, 0x9e, 0xb1, 0x03, 0x98, 0x62, 0x69, 0x83, 0x89, - 0xb2, 0xfb, 0xf3, 0xf1, 0x03, 0xfb, 0x11, 0x23, 0x00, 0x2b, 0x69, 0xd1, - 0x43, 0x89, 0x01, 0x3b, 0x0b, 0x40, 0x01, 0x93, 0x1e, 0xd1, 0x8a, 0xb9, - 0xa0, 0x68, 0x01, 0x28, 0x13, 0xd8, 0x02, 0x25, 0x65, 0x74, 0xda, 0xf8, - 0x00, 0x30, 0x50, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x00, 0x2d, 0x7c, 0xd0, - 0x28, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x4f, 0xfd, 0xf7, 0x92, 0xbc, - 0xa1, 0x69, 0x20, 0x68, 0xff, 0xf7, 0x4c, 0xff, 0xe9, 0xe7, 0x43, 0x1c, - 0x03, 0xd1, 0x01, 0x23, 0x00, 0x9d, 0x63, 0x74, 0xe7, 0xe7, 0xa0, 0x61, - 0xdd, 0xf8, 0x0c, 0xb0, 0xa1, 0x69, 0x58, 0x46, 0xff, 0xf7, 0x1b, 0xff, - 0x00, 0x28, 0xdc, 0xd0, 0x01, 0x9b, 0x03, 0xeb, 0x00, 0x08, 0xbb, 0xf8, - 0x0c, 0x30, 0x9e, 0x42, 0x34, 0xd3, 0x01, 0x99, 0xbb, 0xf8, 0x0a, 0x20, - 0x9b, 0xf8, 0x01, 0x00, 0xb6, 0xfb, 0xf3, 0xf3, 0x19, 0x44, 0x91, 0x42, - 0x49, 0x46, 0x84, 0xbf, 0x01, 0x9b, 0xd3, 0x1a, 0x42, 0x46, 0x01, 0x93, - 0xfd, 0xf7, 0x48, 0xfc, 0x01, 0x9b, 0x00, 0x28, 0xd7, 0xd1, 0xdd, 0xf8, - 0x0c, 0xb0, 0x9b, 0xf8, 0x03, 0x20, 0x7a, 0xb1, 0xdb, 0xf8, 0x30, 0x00, - 0xa0, 0xeb, 0x08, 0x00, 0x83, 0x42, 0x09, 0xd9, 0xbb, 0xf8, 0x0c, 0x20, - 0xdb, 0xf8, 0x34, 0x10, 0x00, 0xfb, 0x02, 0x90, 0x01, 0x93, 0x10, 0xf0, - 0xcd, 0xfc, 0x01, 0x9b, 0xbb, 0xf8, 0x0c, 0x80, 0x03, 0xfb, 0x08, 0xf8, - 0x63, 0x69, 0xa6, 0xeb, 0x08, 0x06, 0x47, 0x44, 0xc1, 0x44, 0x43, 0x44, - 0x63, 0x61, 0x8d, 0xe7, 0xc4, 0xf8, 0x1c, 0x80, 0x03, 0x98, 0x62, 0x69, - 0x83, 0x89, 0xe1, 0x69, 0xb2, 0xfb, 0xf3, 0xf8, 0x03, 0xfb, 0x18, 0x28, - 0xa3, 0xeb, 0x08, 0x03, 0xb3, 0x42, 0x28, 0xbf, 0x33, 0x46, 0x98, 0x46, - 0xff, 0xf7, 0xd6, 0xfe, 0x00, 0x28, 0xa2, 0xd1, 0x03, 0x9a, 0x60, 0x69, - 0x91, 0x89, 0xb0, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, 0x13, 0x03, 0x51, 0x6b, - 0x48, 0x46, 0x42, 0x46, 0x19, 0x44, 0x10, 0xf0, 0x9f, 0xfc, 0xd5, 0xe7, - 0x00, 0x27, 0x7e, 0xe7, 0x2f, 0x46, 0x07, 0x25, 0x7b, 0xe7, 0x38, 0x46, - 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x00, 0x00, 0x38, 0xb5, 0x00, 0x23, - 0x04, 0x46, 0xc3, 0x70, 0x4f, 0xf0, 0xff, 0x33, 0x03, 0x63, 0xff, 0xf7, - 0xb3, 0xfe, 0x00, 0x28, 0x51, 0xd1, 0x64, 0x6b, 0x23, 0x78, 0x94, 0xf8, - 0xff, 0x51, 0x94, 0xf8, 0xfe, 0x01, 0xeb, 0x2b, 0x40, 0xea, 0x05, 0x25, - 0x03, 0xd0, 0x18, 0x33, 0xdb, 0xb2, 0x01, 0x2b, 0x3c, 0xd8, 0x4a, 0xf6, - 0x55, 0x23, 0x9d, 0x42, 0x07, 0xd1, 0x08, 0x22, 0x21, 0x49, 0x04, 0xf1, - 0x52, 0x00, 0x11, 0xf0, 0xd9, 0xff, 0x00, 0x28, 0x36, 0xd0, 0x22, 0x7b, - 0xe3, 0x7a, 0x43, 0xea, 0x02, 0x23, 0xa3, 0xf5, 0x00, 0x72, 0xb2, 0xf5, - 0x60, 0x6f, 0x27, 0xd8, 0x60, 0x7b, 0x28, 0xb3, 0x59, 0x1e, 0x42, 0x1e, - 0x0b, 0x40, 0x02, 0x40, 0x13, 0x43, 0x1f, 0xd1, 0xe2, 0x7b, 0xa3, 0x7b, - 0x53, 0xea, 0x02, 0x23, 0x1a, 0xd0, 0x23, 0x7c, 0x01, 0x3b, 0x01, 0x2b, - 0x16, 0xd8, 0xa2, 0x7c, 0x63, 0x7c, 0x53, 0xea, 0x02, 0x23, 0x11, 0xd0, - 0x22, 0x7d, 0xe3, 0x7c, 0x43, 0xea, 0x02, 0x23, 0x7f, 0x2b, 0x06, 0xd8, - 0x04, 0xf1, 0x20, 0x00, 0xfd, 0xf7, 0x3a, 0xfc, 0xb0, 0xf5, 0x80, 0x3f, - 0x04, 0xd3, 0xe2, 0x7d, 0xa3, 0x7d, 0x53, 0xea, 0x02, 0x23, 0x08, 0xd1, - 0x4a, 0xf6, 0x55, 0x20, 0x85, 0x42, 0x0c, 0xbf, 0x02, 0x20, 0x03, 0x20, - 0x38, 0xbd, 0x04, 0x20, 0xfc, 0xe7, 0x00, 0x20, 0xfa, 0xe7, 0x00, 0xbf, - 0x58, 0xdf, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x4f, 0x00, 0x26, 0x87, 0xb0, - 0x0d, 0x46, 0x17, 0x46, 0x0e, 0x60, 0xfd, 0xf7, 0xd4, 0xfb, 0x00, 0x28, - 0xc0, 0xf2, 0x51, 0x81, 0xb0, 0x4b, 0x53, 0xf8, 0x20, 0x40, 0x00, 0x2c, - 0x00, 0xf0, 0x4d, 0x81, 0x2c, 0x60, 0x23, 0x78, 0xbb, 0xb9, 0x60, 0x70, - 0xc0, 0xb2, 0xac, 0x4d, 0x55, 0xf8, 0x20, 0x00, 0x03, 0x68, 0x9b, 0x68, - 0x98, 0x47, 0x10, 0xf0, 0x01, 0x06, 0xc3, 0xb2, 0x40, 0xf0, 0x3f, 0x81, - 0x17, 0xf0, 0xfe, 0x0f, 0x02, 0xd0, 0x5b, 0x07, 0x00, 0xf1, 0x3b, 0x81, - 0x60, 0x78, 0x55, 0xf8, 0x20, 0x30, 0x23, 0xb9, 0x01, 0x26, 0x30, 0x46, - 0x07, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xfd, 0xf7, 0x27, 0xfb, 0xa0, 0xf5, - 0x00, 0x72, 0xa0, 0x81, 0xb2, 0xf5, 0x60, 0x6f, 0xf2, 0xd8, 0x42, 0x1e, - 0x02, 0x42, 0xef, 0xd1, 0x63, 0x6b, 0x00, 0x2b, 0x00, 0xf0, 0xf2, 0x80, - 0x00, 0x21, 0x20, 0x46, 0xff, 0xf7, 0x58, 0xff, 0x02, 0x28, 0x40, 0xf0, - 0xfd, 0x80, 0x65, 0x6b, 0x02, 0xaf, 0x05, 0xf5, 0xe3, 0x71, 0xb8, 0x46, - 0x05, 0xf2, 0x06, 0x25, 0x08, 0x46, 0xfd, 0xf7, 0xd3, 0xfb, 0x10, 0x31, - 0x48, 0xf8, 0x04, 0x0b, 0x8d, 0x42, 0xf7, 0xd1, 0x00, 0x25, 0x57, 0xf8, - 0x04, 0x1b, 0x00, 0x29, 0x00, 0xf0, 0xde, 0x80, 0x20, 0x46, 0xff, 0xf7, - 0x3d, 0xff, 0x01, 0x28, 0x00, 0xf2, 0xd9, 0x80, 0x65, 0x6b, 0xb4, 0xf8, - 0x0c, 0x90, 0x2a, 0x7b, 0xeb, 0x7a, 0x43, 0xea, 0x02, 0x23, 0x99, 0x45, - 0x40, 0xf0, 0xd6, 0x80, 0xe8, 0x7d, 0xa9, 0x7d, 0x51, 0xea, 0x00, 0x21, - 0x04, 0xd1, 0x05, 0xf1, 0x24, 0x00, 0xfd, 0xf7, 0xaf, 0xfb, 0x01, 0x46, - 0xe1, 0x61, 0x95, 0xf8, 0x10, 0xa0, 0xd4, 0xf8, 0x30, 0xb0, 0x0a, 0xf1, - 0xff, 0x33, 0x84, 0xf8, 0x02, 0xa0, 0x01, 0x2b, 0x00, 0xf2, 0xc0, 0x80, - 0x6b, 0x7b, 0x63, 0x81, 0x00, 0x2b, 0x00, 0xf0, 0xbb, 0x80, 0x5a, 0x1e, - 0x1a, 0x42, 0x40, 0xf0, 0xb7, 0x80, 0xaa, 0x7c, 0x95, 0xf8, 0x11, 0x80, - 0x48, 0xea, 0x02, 0x28, 0x0f, 0xfa, 0x88, 0xf2, 0xa4, 0xf8, 0x08, 0x80, - 0x00, 0x92, 0x4f, 0xea, 0x59, 0x12, 0xb8, 0xfb, 0xf2, 0xf7, 0x02, 0xfb, - 0x17, 0x82, 0x92, 0xb2, 0x00, 0x2a, 0x40, 0xf0, 0xa3, 0x80, 0x2a, 0x7d, - 0xe8, 0x7c, 0x50, 0xea, 0x02, 0x20, 0x05, 0xd1, 0x05, 0xf1, 0x20, 0x00, - 0x01, 0x93, 0xfd, 0xf7, 0x7b, 0xfb, 0x01, 0x9b, 0x95, 0xf8, 0x0f, 0xc0, - 0xaa, 0x7b, 0x52, 0xea, 0x0c, 0x22, 0x00, 0xf0, 0x91, 0x80, 0x01, 0xfb, - 0x0a, 0xfc, 0x17, 0x44, 0x07, 0xeb, 0x0c, 0x0e, 0x70, 0x45, 0xc0, 0xf0, - 0x89, 0x80, 0xa0, 0xeb, 0x0e, 0x00, 0x98, 0x42, 0xb0, 0xfb, 0xf3, 0xf7, - 0xc0, 0xf0, 0x82, 0x80, 0x58, 0x4b, 0x9f, 0x42, 0x7e, 0xd8, 0x4f, 0xf6, - 0xf5, 0x73, 0x9f, 0x42, 0x40, 0xf2, 0x9d, 0x80, 0x4f, 0xf0, 0x03, 0x0a, - 0x02, 0x37, 0x5a, 0x44, 0x0b, 0xeb, 0x0e, 0x03, 0xba, 0xf1, 0x03, 0x0f, - 0xa7, 0x61, 0xc4, 0xf8, 0x20, 0xb0, 0x62, 0x62, 0xe3, 0x62, 0x74, 0xd1, - 0x95, 0xf8, 0x2b, 0x20, 0x95, 0xf8, 0x2a, 0x30, 0x43, 0xea, 0x02, 0x23, - 0x00, 0x9a, 0x1a, 0x43, 0x13, 0xb2, 0x00, 0x2b, 0x60, 0xd1, 0xbf, 0x00, - 0x05, 0xf1, 0x2c, 0x00, 0xfd, 0xf7, 0x3e, 0xfb, 0xa0, 0x62, 0x09, 0xf1, - 0xff, 0x33, 0x1f, 0x44, 0xb7, 0xfb, 0xf9, 0xf9, 0x89, 0x45, 0x53, 0xd8, - 0x4f, 0xf0, 0xff, 0x33, 0xba, 0xf1, 0x03, 0x0f, 0xc4, 0xe9, 0x04, 0x33, - 0x4f, 0xf0, 0x80, 0x03, 0x23, 0x71, 0x30, 0xd1, 0x95, 0xf8, 0x31, 0x20, - 0x95, 0xf8, 0x30, 0x30, 0x43, 0xea, 0x02, 0x23, 0x01, 0x2b, 0x28, 0xd1, - 0x0b, 0xf1, 0x01, 0x01, 0x20, 0x46, 0xff, 0xf7, 0x53, 0xfd, 0x10, 0xbb, - 0x61, 0x6b, 0x20, 0x71, 0x91, 0xf8, 0xff, 0x21, 0x91, 0xf8, 0xfe, 0x31, - 0x43, 0xea, 0x02, 0x23, 0x4a, 0xf6, 0x55, 0x22, 0x93, 0x42, 0x16, 0xd1, - 0x08, 0x46, 0xfd, 0xf7, 0x0f, 0xfb, 0x2f, 0x4b, 0x98, 0x42, 0x10, 0xd1, - 0x01, 0xf5, 0xf2, 0x70, 0xfd, 0xf7, 0x08, 0xfb, 0x2c, 0x4b, 0x98, 0x42, - 0x09, 0xd1, 0x01, 0xf5, 0xf4, 0x70, 0xfd, 0xf7, 0x01, 0xfb, 0x60, 0x61, - 0x01, 0xf5, 0xf6, 0x70, 0xfd, 0xf7, 0xfc, 0xfa, 0x20, 0x61, 0x27, 0x4a, - 0x84, 0xf8, 0x00, 0xa0, 0x13, 0x88, 0x01, 0x33, 0x9b, 0xb2, 0x13, 0x80, - 0xe3, 0x80, 0xfa, 0xe6, 0x10, 0xf0, 0x9a, 0xfa, 0x60, 0x63, 0x00, 0x28, - 0x7f, 0xf4, 0x08, 0xaf, 0x11, 0x26, 0xf2, 0xe6, 0x03, 0x20, 0x01, 0x35, - 0x04, 0x2d, 0x7f, 0xf4, 0x18, 0xaf, 0x04, 0x28, 0x3f, 0xf4, 0xea, 0xae, - 0x0d, 0x26, 0xe8, 0xe6, 0x04, 0x28, 0x3f, 0xf4, 0xe5, 0xae, 0x01, 0x28, - 0x7f, 0xf6, 0x18, 0xaf, 0xf6, 0xe7, 0xb8, 0xf1, 0x00, 0x0f, 0xf3, 0xd0, - 0xba, 0xf1, 0x02, 0x0f, 0x4f, 0xea, 0x47, 0x03, 0x62, 0x44, 0x1a, 0xbf, - 0xdb, 0x19, 0x07, 0xf0, 0x01, 0x07, 0x1f, 0x46, 0xa2, 0x62, 0x18, 0xbf, - 0x07, 0xeb, 0x53, 0x07, 0x89, 0xe7, 0x0b, 0x26, 0xcd, 0xe6, 0x0c, 0x26, - 0xcb, 0xe6, 0x03, 0x26, 0xc9, 0xe6, 0x0a, 0x26, 0xc7, 0xe6, 0x40, 0xf6, - 0xf5, 0x7a, 0x57, 0x45, 0x8c, 0xbf, 0x4f, 0xf0, 0x02, 0x0a, 0x4f, 0xf0, - 0x01, 0x0a, 0x5b, 0xe7, 0xcc, 0x73, 0x00, 0x24, 0x54, 0x74, 0x00, 0x24, - 0xf5, 0xff, 0xff, 0x0f, 0x52, 0x52, 0x61, 0x41, 0x72, 0x72, 0x41, 0x61, - 0xc8, 0x73, 0x00, 0x24, 0x2d, 0xe9, 0xf7, 0x4f, 0x15, 0x46, 0x80, 0x46, - 0x28, 0x22, 0x00, 0x21, 0x28, 0x46, 0x10, 0xf0, 0xbb, 0xfa, 0xd8, 0xf8, - 0x00, 0x30, 0x40, 0x46, 0x9b, 0x6f, 0x98, 0x47, 0x08, 0xf1, 0x4c, 0x03, - 0x00, 0x22, 0x01, 0xa9, 0x68, 0x46, 0x00, 0x93, 0xff, 0xf7, 0x70, 0xfe, - 0x06, 0x46, 0x04, 0x46, 0x00, 0x28, 0x6e, 0xd1, 0xdd, 0xf8, 0x04, 0x90, - 0xd9, 0xe9, 0x05, 0x7a, 0xaa, 0xf1, 0x02, 0x03, 0x9f, 0x42, 0x1c, 0xd9, - 0x99, 0xf8, 0x00, 0x60, 0x01, 0x2e, 0x35, 0xd1, 0x4f, 0xf0, 0x02, 0x0a, - 0x07, 0x46, 0x51, 0x46, 0x48, 0x46, 0xff, 0xf7, 0xc9, 0xfc, 0x43, 0x1c, - 0x59, 0xd0, 0x01, 0x28, 0x56, 0xd0, 0x00, 0xb9, 0x01, 0x37, 0x01, 0x9b, - 0x0a, 0xf1, 0x01, 0x0a, 0x9b, 0x69, 0x9a, 0x45, 0xef, 0xd3, 0x01, 0x9b, - 0x1a, 0x79, 0x5f, 0x61, 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x71, 0xb9, 0xf8, - 0x0c, 0x30, 0x00, 0x24, 0xd9, 0xf8, 0x18, 0x20, 0x40, 0x46, 0xc5, 0xe9, - 0x00, 0x33, 0x02, 0x3a, 0xb9, 0xf8, 0x0a, 0x30, 0x5a, 0x43, 0x5f, 0x43, - 0x0c, 0x23, 0x6b, 0x62, 0xd8, 0xf8, 0x00, 0x30, 0xc5, 0xe9, 0x02, 0x24, - 0xdb, 0x6f, 0xc5, 0xe9, 0x04, 0x74, 0xc5, 0xe9, 0x06, 0x74, 0x98, 0x47, - 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xd9, 0xf8, 0x24, 0x10, - 0x07, 0x46, 0x3c, 0xb9, 0x01, 0x98, 0x01, 0xf1, 0x01, 0x0b, 0xff, 0xf7, - 0x79, 0xfc, 0x06, 0x46, 0x08, 0xbb, 0x59, 0x46, 0x01, 0x9e, 0x32, 0x78, - 0x73, 0x6b, 0x02, 0x2a, 0x03, 0xeb, 0x04, 0x00, 0x0f, 0xd1, 0x1b, 0x5d, - 0x02, 0x34, 0x42, 0x78, 0x53, 0xea, 0x02, 0x23, 0x08, 0xbf, 0x01, 0x37, - 0xb3, 0x89, 0xba, 0xf1, 0x01, 0x0a, 0xb4, 0xfb, 0xf3, 0xf2, 0x03, 0xfb, - 0x12, 0x44, 0xe0, 0xd1, 0xb9, 0xe7, 0xfd, 0xf7, 0x29, 0xfa, 0x30, 0xf0, - 0x70, 0x43, 0x04, 0xf1, 0x04, 0x04, 0x08, 0xbf, 0x01, 0x37, 0xed, 0xe7, - 0x02, 0x26, 0xd8, 0xf8, 0x00, 0x30, 0x40, 0x46, 0xdb, 0x6f, 0x98, 0x47, - 0x30, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x4f, 0xfd, 0xf7, 0xa4, 0xb9, - 0x7f, 0xb5, 0xcd, 0xe9, 0x00, 0x10, 0x03, 0xa8, 0x14, 0x46, 0x03, 0x91, - 0xfd, 0xf7, 0xc7, 0xf9, 0x05, 0x1e, 0x19, 0xdb, 0x0d, 0x4e, 0x56, 0xf8, - 0x25, 0x20, 0x22, 0xb1, 0x00, 0x23, 0x50, 0x6b, 0x13, 0x70, 0x10, 0xf0, - 0xb5, 0xf9, 0x01, 0x9b, 0x13, 0xb1, 0x00, 0x22, 0x1a, 0x70, 0x5a, 0x63, - 0x46, 0xf8, 0x25, 0x30, 0x2c, 0xb1, 0x00, 0x22, 0x01, 0xa9, 0x68, 0x46, - 0xff, 0xf7, 0xd2, 0xfd, 0x04, 0x46, 0x20, 0x46, 0x04, 0xb0, 0x70, 0xbd, - 0x0b, 0x24, 0xfa, 0xe7, 0xcc, 0x73, 0x00, 0x24, 0xf8, 0xb5, 0x03, 0x68, - 0x04, 0x46, 0x9b, 0x6f, 0x98, 0x47, 0x23, 0x6d, 0x01, 0x33, 0x07, 0xd1, - 0x23, 0x68, 0x6f, 0xf0, 0x15, 0x05, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, - 0x28, 0x46, 0xf8, 0xbd, 0x00, 0x22, 0x04, 0xf1, 0x4c, 0x01, 0x10, 0x4f, - 0x10, 0x46, 0xff, 0xf7, 0xc1, 0xff, 0x23, 0x6d, 0x06, 0x46, 0x57, 0xf8, - 0x23, 0x00, 0x03, 0x68, 0xdb, 0x68, 0x98, 0x47, 0x23, 0x68, 0x05, 0x46, - 0x18, 0xb1, 0xdb, 0x6f, 0x20, 0x46, 0x98, 0x47, 0xe8, 0xe7, 0x22, 0x6d, - 0xdb, 0x6f, 0x47, 0xf8, 0x22, 0x00, 0x4f, 0xf0, 0xff, 0x32, 0x20, 0x46, - 0x22, 0x65, 0x98, 0x47, 0x30, 0x46, 0xbd, 0xe8, 0xf8, 0x40, 0xfd, 0xf7, - 0x49, 0xb9, 0x00, 0xbf, 0x54, 0x74, 0x00, 0x24, 0x08, 0x4b, 0x10, 0xb5, - 0x03, 0x60, 0x8c, 0x33, 0x04, 0x46, 0x43, 0x60, 0xff, 0xf7, 0xc2, 0xff, - 0x05, 0x4b, 0x20, 0x46, 0x23, 0x60, 0x2c, 0x33, 0x40, 0xf8, 0x04, 0x3f, - 0x05, 0xf0, 0x6c, 0xfa, 0x20, 0x46, 0x10, 0xbd, 0x98, 0xdc, 0x01, 0x08, - 0x34, 0xdd, 0x01, 0x08, 0xa0, 0xf1, 0x04, 0x00, 0xff, 0xf7, 0xe6, 0xbf, - 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xe2, 0xff, 0x20, 0x46, 0x10, 0xf0, - 0x49, 0xf9, 0x20, 0x46, 0x10, 0xbd, 0xa0, 0xf1, 0x04, 0x00, 0xff, 0xf7, - 0xf3, 0xbf, 0x00, 0x00, 0x03, 0x68, 0x73, 0xb5, 0x04, 0x46, 0x9b, 0x6f, - 0x01, 0x92, 0x0d, 0x46, 0x98, 0x47, 0x23, 0x6d, 0x01, 0x9a, 0x01, 0x33, - 0x07, 0xd0, 0x23, 0x68, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x6f, 0xf0, - 0x15, 0x00, 0x02, 0xb0, 0x70, 0xbd, 0x16, 0x48, 0x00, 0x23, 0x06, 0x46, - 0x50, 0xf8, 0x04, 0x1b, 0xd9, 0xb9, 0x46, 0xf8, 0x23, 0x50, 0x04, 0xf1, - 0x14, 0x00, 0x23, 0x65, 0x30, 0x33, 0x84, 0xf8, 0x4e, 0x10, 0x04, 0xf1, - 0x4c, 0x01, 0x84, 0xf8, 0x4c, 0x30, 0x3a, 0x23, 0x84, 0xf8, 0x4d, 0x30, - 0xff, 0xf7, 0x50, 0xff, 0x23, 0x68, 0x05, 0x46, 0x20, 0x46, 0xdb, 0x6f, - 0x98, 0x47, 0x28, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xfd, 0xf7, - 0xe9, 0xb8, 0x01, 0x33, 0x04, 0x2b, 0xdd, 0xd1, 0x23, 0x68, 0x20, 0x46, - 0xdb, 0x6f, 0x98, 0x47, 0x6f, 0xf0, 0x0b, 0x00, 0xd1, 0xe7, 0x00, 0xbf, - 0x54, 0x74, 0x00, 0x24, 0x01, 0x29, 0x2d, 0xe9, 0xf8, 0x43, 0x04, 0x46, - 0x0e, 0x46, 0x17, 0x46, 0x40, 0xf2, 0x83, 0x80, 0x83, 0x69, 0x8b, 0x42, - 0x7f, 0xd9, 0x03, 0x78, 0x02, 0x2b, 0x45, 0xd0, 0x03, 0x2b, 0x5a, 0xd0, - 0x01, 0x2b, 0x78, 0xd1, 0x01, 0xeb, 0x51, 0x09, 0x83, 0x89, 0x41, 0x6a, - 0xb9, 0xfb, 0xf3, 0xf3, 0x19, 0x44, 0xff, 0xf7, 0x67, 0xfb, 0x05, 0x46, - 0x60, 0xbb, 0xa3, 0x89, 0x16, 0xf0, 0x01, 0x06, 0x60, 0x6b, 0x09, 0xf1, - 0x01, 0x08, 0xb9, 0xfb, 0xf3, 0xf2, 0x03, 0xfb, 0x12, 0x92, 0x0f, 0xbf, - 0xfb, 0xb2, 0x83, 0x5c, 0x03, 0xf0, 0x0f, 0x01, 0x3b, 0x01, 0x1c, 0xbf, - 0x03, 0xf0, 0xf0, 0x03, 0x0b, 0x43, 0x83, 0x54, 0x01, 0x23, 0x61, 0x6a, - 0x20, 0x46, 0xe3, 0x70, 0xa3, 0x89, 0xb8, 0xfb, 0xf3, 0xf3, 0x19, 0x44, - 0xff, 0xf7, 0x46, 0xfb, 0x05, 0x46, 0x58, 0xb9, 0xa3, 0x89, 0x61, 0x6b, - 0xb8, 0xfb, 0xf3, 0xf0, 0x03, 0xfb, 0x10, 0x80, 0x3e, 0xb1, 0xc7, 0xf3, - 0x07, 0x17, 0x0f, 0x54, 0x01, 0x23, 0xe3, 0x70, 0x28, 0x46, 0xbd, 0xe8, - 0xf8, 0x83, 0x0b, 0x5c, 0xc7, 0xf3, 0x03, 0x27, 0x23, 0xf0, 0x0f, 0x03, - 0x1f, 0x43, 0xf2, 0xe7, 0x83, 0x89, 0x5b, 0x08, 0xb1, 0xfb, 0xf3, 0xf3, - 0x41, 0x6a, 0x19, 0x44, 0xff, 0xf7, 0x26, 0xfb, 0x05, 0x46, 0x00, 0x28, - 0xea, 0xd1, 0xa2, 0x89, 0x76, 0x00, 0xb6, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, - 0x13, 0x66, 0x63, 0x6b, 0x9f, 0x55, 0x98, 0x19, 0x3f, 0x12, 0x47, 0x70, - 0xdc, 0xe7, 0x83, 0x89, 0x9b, 0x08, 0xb1, 0xfb, 0xf3, 0xf3, 0x41, 0x6a, - 0x19, 0x44, 0xff, 0xf7, 0x0f, 0xfb, 0x05, 0x46, 0x00, 0x28, 0xd3, 0xd1, - 0xa3, 0x89, 0xb6, 0x00, 0x27, 0xf0, 0x70, 0x47, 0xb6, 0xfb, 0xf3, 0xf1, - 0x03, 0xfb, 0x11, 0x61, 0x66, 0x6b, 0x0e, 0x44, 0x30, 0x46, 0xfd, 0xf7, - 0xcb, 0xf8, 0x00, 0xf0, 0x70, 0x40, 0x47, 0xea, 0x00, 0x01, 0x30, 0x46, - 0xfd, 0xf7, 0xbc, 0xf8, 0xbc, 0xe7, 0x02, 0x25, 0xbc, 0xe7, 0x2d, 0xe9, - 0xf0, 0x41, 0x80, 0x46, 0x05, 0x68, 0x0f, 0x46, 0x49, 0xb9, 0x2e, 0x69, - 0xc6, 0xb1, 0xab, 0x69, 0xb3, 0x42, 0x98, 0xbf, 0x01, 0x26, 0x6b, 0x69, - 0xa3, 0xb9, 0x00, 0x24, 0x06, 0xe0, 0x28, 0x46, 0xff, 0xf7, 0xfa, 0xfa, - 0x01, 0x28, 0x04, 0x46, 0x03, 0xd8, 0x01, 0x24, 0x20, 0x46, 0xbd, 0xe8, - 0xf0, 0x81, 0x42, 0x1c, 0x51, 0xd0, 0xab, 0x69, 0x83, 0x42, 0xf7, 0xd8, - 0x3e, 0x46, 0xea, 0xe7, 0x01, 0x26, 0xe8, 0xe7, 0xbe, 0x42, 0x15, 0xd1, - 0xab, 0x69, 0x74, 0x1c, 0xd8, 0xf8, 0x00, 0x00, 0xa3, 0x42, 0x98, 0xbf, - 0x02, 0x24, 0x21, 0x46, 0xff, 0xf7, 0xde, 0xfa, 0x01, 0x28, 0xe4, 0xd0, - 0x43, 0x1c, 0x3a, 0xd0, 0xd8, 0xb1, 0x2b, 0x69, 0x01, 0x2b, 0x03, 0xd9, - 0xaa, 0x69, 0x93, 0x42, 0x38, 0xbf, 0x1e, 0x46, 0x34, 0x46, 0x01, 0x34, - 0xab, 0x69, 0xa3, 0x42, 0x02, 0xd8, 0x01, 0x2e, 0xcb, 0xd9, 0x02, 0x24, - 0x21, 0x46, 0xd8, 0xf8, 0x00, 0x00, 0xff, 0xf7, 0xc5, 0xfa, 0x40, 0xb1, - 0x01, 0x28, 0xca, 0xd0, 0x01, 0x30, 0x20, 0xd0, 0xb4, 0x42, 0xec, 0xd1, - 0xbd, 0xe7, 0x00, 0x2c, 0xe8, 0xd0, 0x4f, 0xf0, 0xff, 0x32, 0x21, 0x46, - 0x28, 0x46, 0xff, 0xf7, 0x1b, 0xff, 0x90, 0xb9, 0x57, 0xb9, 0x2c, 0x61, - 0xd5, 0xe9, 0x05, 0x32, 0x02, 0x3a, 0x93, 0x42, 0x10, 0xd9, 0x2b, 0x79, - 0x43, 0xf0, 0x01, 0x03, 0x2b, 0x71, 0xb1, 0xe7, 0x22, 0x46, 0x39, 0x46, - 0x28, 0x46, 0xff, 0xf7, 0x09, 0xff, 0x00, 0x28, 0xed, 0xd0, 0x01, 0x28, - 0xa7, 0xd1, 0x4f, 0xf0, 0xff, 0x34, 0xa5, 0xe7, 0x01, 0x3b, 0x6b, 0x61, - 0xeb, 0xe7, 0x2d, 0xe9, 0xf3, 0x41, 0x0d, 0x46, 0x01, 0xa9, 0x04, 0x46, - 0xfc, 0xf7, 0xeb, 0xff, 0x06, 0x46, 0x00, 0x28, 0x63, 0xd1, 0x66, 0x7c, - 0x00, 0x2e, 0x60, 0xd1, 0xe3, 0x68, 0xab, 0x42, 0x04, 0xd2, 0x22, 0x7c, - 0x12, 0xf0, 0x02, 0x0f, 0x08, 0xbf, 0x1d, 0x46, 0x00, 0x22, 0x63, 0x69, - 0x62, 0x61, 0xb5, 0xb9, 0x00, 0x20, 0xe2, 0x68, 0x63, 0x69, 0x93, 0x42, - 0x81, 0xbf, 0x22, 0x7c, 0xe3, 0x60, 0x42, 0xf0, 0x40, 0x02, 0x22, 0x74, - 0x01, 0x9a, 0x91, 0x89, 0xb3, 0xfb, 0xf1, 0xf2, 0x01, 0xfb, 0x12, 0x33, - 0x00, 0x2b, 0x42, 0xd0, 0xe3, 0x69, 0x83, 0x42, 0x18, 0xbf, 0xe0, 0x61, - 0x3d, 0xe0, 0x01, 0x9a, 0x51, 0x89, 0x97, 0x89, 0x4f, 0x43, 0x73, 0xb3, - 0x01, 0x3b, 0x6a, 0x1e, 0xb3, 0xfb, 0xf7, 0xf1, 0xb2, 0xfb, 0xf7, 0xf2, - 0x8a, 0x42, 0x26, 0xd3, 0x7a, 0x42, 0xa1, 0x69, 0x13, 0x40, 0xed, 0x1a, - 0x63, 0x61, 0x00, 0x29, 0xd4, 0xd0, 0xbd, 0x42, 0x63, 0x69, 0x0c, 0xd9, - 0x3b, 0x44, 0xa5, 0xeb, 0x07, 0x08, 0x63, 0x61, 0x23, 0x7c, 0x9a, 0x07, - 0x2a, 0xd5, 0x20, 0x46, 0xff, 0xf7, 0x3b, 0xff, 0x05, 0x46, 0x48, 0xbb, - 0x01, 0x46, 0x63, 0x69, 0x01, 0x98, 0x2b, 0x44, 0x63, 0x61, 0x83, 0x89, - 0xb5, 0xfb, 0xf3, 0xf2, 0x03, 0xfb, 0x12, 0x55, 0x00, 0x2d, 0xb9, 0xd0, - 0xff, 0xf7, 0x15, 0xfa, 0x48, 0xb1, 0x10, 0x44, 0xb5, 0xe7, 0xa1, 0x68, - 0x81, 0xb9, 0x20, 0x46, 0xff, 0xf7, 0x23, 0xff, 0x01, 0x28, 0x01, 0x46, - 0x05, 0xd1, 0x02, 0x26, 0x66, 0x74, 0x30, 0x46, 0x02, 0xb0, 0xbd, 0xe8, - 0xf0, 0x81, 0x48, 0x1c, 0x01, 0xd1, 0x01, 0x26, 0xf6, 0xe7, 0xa1, 0x60, - 0xa1, 0x61, 0xc8, 0xe7, 0x20, 0x68, 0xff, 0xf7, 0x1d, 0xfa, 0x05, 0x46, - 0x6b, 0x1c, 0xf4, 0xd0, 0x01, 0x2d, 0xea, 0xd9, 0x01, 0x9b, 0x9b, 0x69, - 0xab, 0x42, 0xe6, 0xd9, 0x29, 0x46, 0xa5, 0x61, 0x45, 0x46, 0xba, 0xe7, - 0xf8, 0xb5, 0x1f, 0x46, 0x03, 0x68, 0x06, 0x46, 0x0d, 0x46, 0x9b, 0x6f, - 0x14, 0x46, 0x98, 0x47, 0x02, 0x2f, 0x11, 0xd1, 0xeb, 0x68, 0x1c, 0x44, - 0x21, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x67, 0xff, 0x33, 0x68, 0x04, 0x46, - 0x30, 0x46, 0xdb, 0x6f, 0x6d, 0x69, 0x98, 0x47, 0x44, 0xb1, 0x20, 0x46, - 0xbd, 0xe8, 0xf8, 0x40, 0xfc, 0xf7, 0x36, 0xbf, 0x01, 0x2f, 0xed, 0xd1, - 0x6b, 0x69, 0xea, 0xe7, 0x28, 0x46, 0xf8, 0xbd, 0x03, 0x69, 0x2d, 0xe9, - 0xf0, 0x47, 0x03, 0xf1, 0x20, 0x08, 0x05, 0x46, 0x89, 0x46, 0x04, 0x68, - 0xb8, 0xf5, 0x00, 0x1f, 0x24, 0xbf, 0x00, 0x23, 0x83, 0x61, 0x83, 0x69, - 0x83, 0xb1, 0xa2, 0x89, 0xb8, 0xfb, 0xf2, 0xf0, 0x02, 0xfb, 0x10, 0x82, - 0x00, 0x2a, 0x56, 0xd1, 0x01, 0x33, 0x69, 0x69, 0xab, 0x61, 0x39, 0xb9, - 0x23, 0x89, 0xb3, 0xeb, 0x58, 0x1f, 0x4e, 0xd8, 0x00, 0x23, 0xab, 0x61, - 0x04, 0x20, 0x0a, 0xe0, 0x67, 0x89, 0x01, 0x3f, 0x07, 0x40, 0x46, 0xd1, - 0x20, 0x46, 0xff, 0xf7, 0xc5, 0xf9, 0x01, 0x28, 0x06, 0x46, 0x02, 0xd8, - 0x02, 0x20, 0xbd, 0xe8, 0xf0, 0x87, 0x42, 0x1c, 0x01, 0xd1, 0x01, 0x20, - 0xf9, 0xe7, 0xa3, 0x69, 0x83, 0x42, 0x30, 0xd8, 0xb9, 0xf1, 0x00, 0x0f, - 0xe4, 0xd0, 0x69, 0x69, 0x28, 0x46, 0xff, 0xf7, 0xa4, 0xfe, 0x06, 0x46, - 0x00, 0x28, 0x38, 0xd0, 0x01, 0x28, 0xe9, 0xd0, 0x43, 0x1c, 0xec, 0xd0, - 0x20, 0x46, 0xfc, 0xf7, 0x31, 0xff, 0x82, 0x46, 0x00, 0x28, 0xe6, 0xd1, - 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x7d, 0xf9, 0x51, 0x46, 0x20, 0x63, - 0x81, 0x46, 0xa2, 0x89, 0x60, 0x6b, 0x0f, 0xf0, 0x67, 0xff, 0xd4, 0xf8, - 0x34, 0xa0, 0x63, 0x89, 0xbb, 0x42, 0x09, 0xd9, 0x01, 0x23, 0x09, 0xeb, - 0x07, 0x02, 0x51, 0x46, 0x60, 0x78, 0xfc, 0xf7, 0x87, 0xfe, 0x08, 0xb9, - 0x01, 0x37, 0xf2, 0xe7, 0x63, 0x89, 0x9f, 0x42, 0xc9, 0xd1, 0x31, 0x46, - 0x20, 0x46, 0x6e, 0x61, 0xff, 0xf7, 0x5f, 0xf9, 0xa8, 0x61, 0xa2, 0x89, - 0x00, 0x20, 0xc5, 0xf8, 0x10, 0x80, 0xb8, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, - 0x13, 0x88, 0x63, 0x6b, 0x43, 0x44, 0xeb, 0x61, 0xb3, 0xe7, 0x07, 0x20, - 0xb1, 0xe7, 0x37, 0xb5, 0x0d, 0x46, 0x01, 0xa9, 0x04, 0x46, 0xfc, 0xf7, - 0xc6, 0xfe, 0x18, 0xb9, 0x20, 0x46, 0x1d, 0xb9, 0xf7, 0xf7, 0xfa, 0xfe, - 0x03, 0xb0, 0x30, 0xbd, 0xf7, 0xf7, 0x2a, 0xff, 0x10, 0xf0, 0xfb, 0x03, - 0xf8, 0xd1, 0x6b, 0x72, 0xa3, 0x69, 0x1b, 0xb1, 0x29, 0x46, 0x20, 0x46, - 0xfc, 0xf7, 0x16, 0xff, 0x00, 0x21, 0x20, 0x46, 0xff, 0xf7, 0x68, 0xff, - 0x04, 0x28, 0x08, 0xbf, 0x00, 0x20, 0xe9, 0xe7, 0x03, 0x68, 0x70, 0xb5, - 0x0d, 0x46, 0x04, 0x46, 0x9b, 0x6f, 0x98, 0x47, 0x28, 0x46, 0x00, 0x21, - 0xff, 0xf7, 0xd5, 0xff, 0x23, 0x68, 0x20, 0x46, 0xdb, 0x6f, 0xbd, 0xe8, - 0x70, 0x40, 0x18, 0x47, 0x03, 0x68, 0xf0, 0xb5, 0x16, 0x46, 0x0f, 0x69, - 0x87, 0xb0, 0x9b, 0x6f, 0x05, 0x46, 0x0c, 0x46, 0x98, 0x47, 0xb7, 0x42, - 0x09, 0xdd, 0x00, 0x21, 0x20, 0x46, 0xff, 0xf7, 0xc0, 0xff, 0x2b, 0x68, - 0x28, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x07, 0xb0, 0xf0, 0xbd, 0xb7, 0x42, - 0xf7, 0xda, 0x69, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xb4, 0xff, 0x27, 0x69, - 0x00, 0x28, 0xf0, 0xd1, 0x9d, 0xf8, 0x09, 0x30, 0x00, 0x2b, 0xf2, 0xd1, - 0xeb, 0xe7, 0x03, 0x68, 0x70, 0xb5, 0x0e, 0x46, 0x86, 0xb0, 0x04, 0x46, - 0x9b, 0x6f, 0x15, 0x46, 0x98, 0x47, 0x30, 0x46, 0x69, 0x46, 0xff, 0xf7, - 0xa0, 0xff, 0x23, 0x68, 0x06, 0x46, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, - 0x2e, 0xb1, 0x30, 0x46, 0x06, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xfc, 0xf7, - 0x49, 0xbe, 0x9d, 0xf8, 0x09, 0x00, 0x78, 0xb1, 0x9d, 0xf8, 0x08, 0x30, - 0x0c, 0x22, 0x0d, 0xf1, 0x09, 0x01, 0x28, 0x46, 0x13, 0xf0, 0x10, 0x0f, - 0x14, 0xbf, 0x03, 0x23, 0x05, 0x23, 0x85, 0xf8, 0x00, 0x31, 0x11, 0xf0, - 0x07, 0xfb, 0x01, 0x20, 0x06, 0xb0, 0x70, 0xbd, 0x2d, 0xe9, 0xf7, 0x4f, - 0x04, 0x46, 0xd0, 0xf8, 0x00, 0x90, 0x0d, 0x46, 0x11, 0xf8, 0x01, 0x3b, - 0x2f, 0x2b, 0xfa, 0xd0, 0x5c, 0x2b, 0xf8, 0xd0, 0x00, 0x23, 0xa3, 0x60, - 0x2b, 0x78, 0x1f, 0x2b, 0x25, 0xd9, 0x04, 0xf1, 0x20, 0x07, 0x4f, 0xf0, - 0x20, 0x3b, 0xc5, 0xf1, 0x02, 0x03, 0x05, 0xf1, 0xff, 0x3a, 0x00, 0x26, - 0x4f, 0xf0, 0x08, 0x08, 0x00, 0x93, 0x51, 0x4a, 0x51, 0x4b, 0xc7, 0xf8, - 0x04, 0xb0, 0xc7, 0xf8, 0x00, 0xb0, 0xc7, 0xf8, 0x07, 0xb0, 0x00, 0x99, - 0x01, 0xeb, 0x0a, 0x00, 0x1a, 0xf8, 0x01, 0x1f, 0x20, 0x29, 0x2e, 0xd9, - 0x2f, 0x29, 0x01, 0xd0, 0x5c, 0x29, 0x0f, 0xd1, 0x2b, 0x5c, 0x2f, 0x2b, - 0x01, 0xd0, 0x5c, 0x2b, 0x25, 0xd1, 0x01, 0x30, 0xf8, 0xe7, 0x80, 0x23, - 0x20, 0x46, 0x84, 0xf8, 0x2b, 0x30, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x4f, - 0xf7, 0xf7, 0x44, 0xbe, 0x2e, 0x29, 0x76, 0xd0, 0xb0, 0x45, 0x72, 0xd9, - 0x08, 0x06, 0x18, 0x46, 0x44, 0xbf, 0x01, 0xf0, 0x7f, 0x01, 0x51, 0x5c, - 0x01, 0x91, 0x11, 0xf0, 0x99, 0xfa, 0x00, 0x28, 0x67, 0xd1, 0x01, 0x99, - 0x38, 0x4b, 0xa1, 0xf1, 0x61, 0x00, 0x36, 0x4a, 0x19, 0x28, 0x9c, 0xbf, - 0x20, 0x39, 0xc9, 0xb2, 0xb9, 0x55, 0x01, 0x36, 0xc9, 0xe7, 0x05, 0x44, - 0x00, 0x2e, 0x58, 0xd0, 0x94, 0xf8, 0x20, 0x30, 0xe5, 0x2b, 0x04, 0xbf, - 0x05, 0x23, 0x84, 0xf8, 0x20, 0x30, 0x20, 0x29, 0x28, 0xd9, 0x2b, 0x78, - 0x21, 0x2b, 0x34, 0xbf, 0x04, 0x23, 0x00, 0x23, 0x20, 0x46, 0x84, 0xf8, - 0x2b, 0x30, 0xd4, 0xf8, 0x00, 0x80, 0xf7, 0xf7, 0x11, 0xfe, 0x06, 0x46, - 0xe8, 0xb9, 0xa1, 0x69, 0x40, 0x46, 0xff, 0xf7, 0x61, 0xf8, 0x06, 0x46, - 0xb8, 0xb9, 0xe0, 0x69, 0x03, 0x78, 0x9b, 0xb1, 0xc3, 0x7a, 0x03, 0xf0, - 0x3f, 0x03, 0xa3, 0x71, 0xc6, 0x7a, 0x16, 0xf0, 0x08, 0x06, 0x04, 0xd1, - 0x0b, 0x22, 0x39, 0x46, 0x11, 0xf0, 0x90, 0xf9, 0x38, 0xb1, 0x00, 0x21, - 0x20, 0x46, 0xff, 0xf7, 0x75, 0xfe, 0xe2, 0xe7, 0x04, 0x23, 0xd9, 0xe7, - 0x04, 0x26, 0x94, 0xf8, 0x2b, 0x30, 0x4e, 0xb1, 0x04, 0x2e, 0x03, 0xd1, - 0x13, 0xf0, 0x04, 0x0f, 0x08, 0xbf, 0x05, 0x26, 0x30, 0x46, 0x03, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x5a, 0x07, 0xf9, 0xd4, 0xa3, 0x79, 0xdb, 0x06, - 0x0f, 0xd5, 0xb9, 0xf8, 0x0c, 0x10, 0x22, 0x69, 0x99, 0xf8, 0x00, 0x00, - 0xb2, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, 0x13, 0x23, 0xd9, 0xf8, 0x34, 0x10, - 0x19, 0x44, 0xfc, 0xf7, 0x89, 0xfd, 0xa0, 0x60, 0x5f, 0xe7, 0x05, 0x26, - 0xe4, 0xe7, 0x06, 0x26, 0xe2, 0xe7, 0xb8, 0xf1, 0x0b, 0x0f, 0xfa, 0xd0, - 0x08, 0x26, 0x4f, 0xf0, 0x0b, 0x08, 0x64, 0xe7, 0x95, 0xdf, 0x01, 0x08, - 0x61, 0xdf, 0x01, 0x08, 0x2d, 0xe9, 0xf7, 0x4f, 0x0c, 0x46, 0x80, 0x46, - 0x11, 0x46, 0x05, 0x68, 0x01, 0x2c, 0x5a, 0xd9, 0xab, 0x69, 0xa3, 0x42, - 0x57, 0xd9, 0x62, 0xb9, 0x27, 0x46, 0xdf, 0xf8, 0xb4, 0x90, 0x21, 0x46, - 0xd8, 0xf8, 0x00, 0x00, 0x26, 0x46, 0xff, 0xf7, 0x19, 0xf8, 0x04, 0x46, - 0x58, 0xb9, 0x00, 0x20, 0x06, 0xe0, 0x4f, 0xf0, 0xff, 0x32, 0x28, 0x46, - 0xff, 0xf7, 0x76, 0xfc, 0x00, 0x28, 0xeb, 0xd0, 0x03, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0x01, 0x28, 0x3d, 0xd0, 0x43, 0x1c, 0x3d, 0xd0, 0x00, 0x22, - 0x31, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x68, 0xfc, 0x00, 0x28, 0xf1, 0xd1, - 0xd5, 0xe9, 0x05, 0x32, 0x02, 0x3a, 0x93, 0x42, 0x05, 0xd2, 0x01, 0x33, - 0x6b, 0x61, 0x2b, 0x79, 0x43, 0xf0, 0x01, 0x03, 0x2b, 0x71, 0x73, 0x1c, - 0xa3, 0x42, 0x22, 0xd0, 0x95, 0xf8, 0x01, 0xb0, 0x59, 0xf8, 0x2b, 0x30, - 0xe3, 0xb1, 0x39, 0x46, 0x28, 0x46, 0xfe, 0xf7, 0xc6, 0xff, 0x31, 0x46, - 0x82, 0x46, 0x28, 0x46, 0xfe, 0xf7, 0xc1, 0xff, 0x6f, 0x89, 0x06, 0x46, - 0x58, 0x46, 0xfc, 0xf7, 0xc9, 0xfc, 0x02, 0x46, 0x3e, 0x44, 0x59, 0xf8, - 0x2b, 0x00, 0xa6, 0xeb, 0x0a, 0x06, 0x03, 0x68, 0xa6, 0xfb, 0x02, 0x67, - 0xcd, 0xe9, 0x00, 0x67, 0x19, 0x6a, 0xa2, 0xfb, 0x0a, 0x23, 0x88, 0x47, - 0x27, 0x46, 0xab, 0x69, 0xa3, 0x42, 0xac, 0xd8, 0xb3, 0xe7, 0x02, 0x20, - 0xba, 0xe7, 0x01, 0x20, 0xb8, 0xe7, 0x00, 0xbf, 0x54, 0x74, 0x00, 0x24, - 0x2d, 0xe9, 0xff, 0x41, 0x03, 0x68, 0x0c, 0x46, 0x01, 0x92, 0x06, 0x46, - 0x9b, 0x6f, 0x98, 0x47, 0x01, 0x99, 0x20, 0x46, 0x67, 0x69, 0xff, 0xf7, - 0x1e, 0xfd, 0x05, 0x46, 0x48, 0xb1, 0x33, 0x68, 0x30, 0x46, 0xdb, 0x6f, - 0x98, 0x47, 0x28, 0x46, 0x04, 0xb0, 0xbd, 0xe8, 0xf0, 0x41, 0xfc, 0xf7, - 0xed, 0xbc, 0x03, 0xa9, 0x20, 0x46, 0xfc, 0xf7, 0x00, 0xfd, 0x05, 0x46, - 0x00, 0x28, 0xee, 0xd1, 0x65, 0x7c, 0x00, 0x2d, 0xeb, 0xd1, 0x23, 0x7c, - 0x9a, 0x07, 0x01, 0xd4, 0x07, 0x25, 0xe6, 0xe7, 0xd4, 0xf8, 0x14, 0x80, - 0xe3, 0x68, 0x98, 0x45, 0x08, 0xd3, 0x20, 0x46, 0x39, 0x46, 0xff, 0xf7, - 0xfa, 0xfc, 0x04, 0x46, 0x70, 0xbb, 0x04, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, - 0xb8, 0xf1, 0x00, 0x0f, 0x11, 0xd1, 0x2a, 0x46, 0xa1, 0x68, 0x20, 0x46, - 0xff, 0xf7, 0x58, 0xff, 0x05, 0x46, 0xc4, 0xf8, 0x08, 0x80, 0x63, 0x69, - 0xe3, 0x60, 0x23, 0x7c, 0x43, 0xf0, 0x40, 0x03, 0x23, 0x74, 0x00, 0x2d, - 0xe3, 0xd0, 0x65, 0x74, 0xc3, 0xe7, 0xa1, 0x69, 0x20, 0x68, 0xfe, 0xf7, - 0x75, 0xff, 0x43, 0x1c, 0x01, 0x46, 0x0b, 0xd0, 0x01, 0x28, 0x0b, 0xd0, - 0x03, 0x9b, 0x9b, 0x69, 0x98, 0x42, 0xe8, 0xd2, 0xa2, 0x69, 0x20, 0x46, - 0xff, 0xf7, 0x3a, 0xff, 0x05, 0x46, 0xe2, 0xe7, 0x01, 0x25, 0xe0, 0xe7, - 0x02, 0x25, 0xde, 0xe7, 0x33, 0x68, 0x30, 0x46, 0xdb, 0x6f, 0x98, 0x47, - 0x20, 0x46, 0xab, 0xe7, 0xf0, 0xb5, 0x1f, 0x46, 0x09, 0x4b, 0x16, 0x46, - 0xdd, 0xe9, 0x05, 0x45, 0xc0, 0xe9, 0x00, 0x31, 0x00, 0x23, 0x03, 0x76, - 0x03, 0x72, 0x54, 0xea, 0x05, 0x03, 0x08, 0xbf, 0x01, 0x23, 0xc0, 0xe9, - 0x04, 0x67, 0xc0, 0xe9, 0x08, 0x45, 0x08, 0xbf, 0x03, 0x76, 0xf0, 0xbd, - 0x60, 0xe0, 0x01, 0x08, 0x70, 0x47, 0x00, 0x00, 0x03, 0x4b, 0x10, 0xb5, - 0x04, 0x46, 0x03, 0x60, 0xfd, 0xf7, 0x22, 0xfb, 0x20, 0x46, 0x10, 0xbd, - 0x38, 0xdc, 0x01, 0x08, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xf2, 0xff, - 0x20, 0x46, 0x0f, 0xf0, 0x97, 0xfc, 0x20, 0x46, 0x10, 0xbd, 0x00, 0x00, - 0x08, 0xb5, 0x03, 0x6a, 0x01, 0x3b, 0x03, 0x62, 0x00, 0x68, 0x0c, 0xf0, - 0x89, 0xfb, 0x01, 0x46, 0x30, 0xb1, 0x04, 0x4b, 0x1b, 0x78, 0xdb, 0xb2, - 0x13, 0xb9, 0x03, 0x48, 0xf6, 0xf7, 0xd4, 0xff, 0x08, 0xbd, 0x00, 0xbf, - 0x48, 0x0e, 0x00, 0x24, 0x17, 0x01, 0x02, 0x80, 0x08, 0xb5, 0x03, 0x48, - 0x04, 0xf0, 0xa4, 0xfc, 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0xe2, 0xbf, - 0x2c, 0x74, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, 0x00, 0x68, 0xfc, 0xf7, - 0x03, 0xfa, 0x01, 0x46, 0x18, 0xb9, 0x23, 0x6a, 0x01, 0x33, 0x23, 0x62, - 0x10, 0xbd, 0x04, 0x4b, 0x1b, 0x78, 0xdb, 0xb2, 0x00, 0x2b, 0xf9, 0xd1, - 0x02, 0x48, 0xf6, 0xf7, 0xb1, 0xff, 0x00, 0xbf, 0x48, 0x0e, 0x00, 0x24, - 0x15, 0x01, 0x02, 0x80, 0x70, 0xb5, 0x00, 0xf1, 0xa4, 0x06, 0x0c, 0x46, - 0x05, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xe0, 0xff, 0x04, 0xf1, 0x10, 0x02, - 0x21, 0x46, 0x05, 0xf1, 0x14, 0x00, 0xfd, 0xf7, 0x5b, 0xfe, 0x38, 0xb9, - 0x23, 0x69, 0x63, 0x60, 0x63, 0x69, 0xa3, 0x60, 0x0e, 0x23, 0xa3, 0x61, - 0x10, 0x23, 0xe3, 0x60, 0x30, 0x46, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, - 0xab, 0xbf, 0x13, 0xb5, 0x0c, 0x46, 0xa4, 0x30, 0x01, 0x90, 0xff, 0xf7, - 0xc5, 0xff, 0xa4, 0x69, 0x01, 0x98, 0xff, 0xf7, 0xa1, 0xff, 0x20, 0x46, - 0x02, 0xb0, 0xbd, 0xe8, 0x10, 0x40, 0xfc, 0xf7, 0x10, 0xbb, 0x2d, 0xe9, - 0xf0, 0x41, 0x06, 0x46, 0x00, 0xf1, 0xa4, 0x07, 0x0c, 0x46, 0x15, 0x46, - 0x14, 0x36, 0x38, 0x46, 0xff, 0xf7, 0xb0, 0xff, 0x04, 0xf1, 0x10, 0x02, - 0x21, 0x46, 0x30, 0x46, 0xfd, 0xf7, 0x2c, 0xfe, 0xd0, 0xb9, 0x23, 0x69, - 0x04, 0xf1, 0x24, 0x08, 0xa5, 0x61, 0x63, 0x60, 0x63, 0x69, 0xa3, 0x60, - 0x10, 0x23, 0xe3, 0x60, 0x21, 0x6a, 0x21, 0xf0, 0x00, 0x43, 0x9d, 0x42, - 0x01, 0xd8, 0xe5, 0x60, 0x0a, 0xe0, 0x00, 0x29, 0xa5, 0xeb, 0x03, 0x05, - 0x06, 0xda, 0x42, 0x46, 0x21, 0x46, 0x30, 0x46, 0xfd, 0xf7, 0x12, 0xfe, - 0x00, 0x28, 0xed, 0xd0, 0x38, 0x46, 0xbd, 0xe8, 0xf0, 0x41, 0xff, 0xf7, - 0x69, 0xbf, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x41, 0x00, 0xf1, 0xa4, 0x08, - 0xc8, 0xb0, 0x0e, 0x46, 0x05, 0x46, 0x40, 0x46, 0x17, 0x46, 0xff, 0xf7, - 0x7d, 0xff, 0x4f, 0xf4, 0x84, 0x72, 0x00, 0x21, 0x06, 0xa8, 0x0f, 0xf0, - 0x53, 0xfc, 0xb3, 0x69, 0x14, 0x35, 0x0e, 0x2b, 0x22, 0xd1, 0x22, 0x23, - 0x36, 0x49, 0x08, 0xa8, 0x8d, 0xf8, 0x18, 0x30, 0x10, 0xf0, 0x34, 0xfa, - 0x0f, 0x23, 0x01, 0x24, 0xb3, 0x61, 0x40, 0x46, 0xff, 0xf7, 0x46, 0xff, - 0x01, 0x2c, 0x0d, 0xd1, 0x9d, 0xf8, 0x18, 0x30, 0x11, 0x2b, 0x59, 0xd0, - 0x22, 0x2b, 0x14, 0xbf, 0x00, 0x23, 0x03, 0x23, 0x08, 0xa9, 0x38, 0x46, - 0x87, 0xf8, 0x00, 0x31, 0x10, 0xf0, 0x1e, 0xfa, 0x20, 0x46, 0x48, 0xb0, - 0xbd, 0xe8, 0xf0, 0x41, 0xfc, 0xf7, 0xa5, 0xba, 0x0f, 0x2b, 0x08, 0xd1, - 0x22, 0x23, 0x25, 0x49, 0x08, 0xa8, 0x8d, 0xf8, 0x18, 0x30, 0x10, 0xf0, - 0x0f, 0xfa, 0x10, 0x23, 0xd9, 0xe7, 0x02, 0xaa, 0x31, 0x46, 0x28, 0x46, - 0xfe, 0xf7, 0x96, 0xf9, 0x04, 0x46, 0x18, 0xb1, 0x82, 0x1c, 0x08, 0xbf, - 0x00, 0x24, 0xd0, 0xe7, 0x9d, 0xf8, 0x0c, 0x30, 0x03, 0xf0, 0x7f, 0x02, - 0x11, 0x2a, 0x01, 0xd0, 0x22, 0x2a, 0xec, 0xd1, 0x1b, 0x06, 0x0c, 0xd5, - 0x04, 0xa9, 0x28, 0x46, 0xfe, 0xf7, 0xf2, 0xf9, 0x04, 0x1e, 0xc0, 0xdb, - 0xe3, 0xd1, 0x9d, 0xf8, 0x0c, 0x30, 0x03, 0xf0, 0x7f, 0x03, 0x8d, 0xf8, - 0x0c, 0x30, 0x9d, 0xf8, 0x0c, 0x30, 0x28, 0x46, 0x02, 0x9a, 0x11, 0x2b, - 0x8d, 0xf8, 0x18, 0x30, 0x02, 0xf1, 0x04, 0x02, 0x9d, 0xf8, 0x0e, 0x10, - 0x04, 0xbf, 0x05, 0x9b, 0x07, 0x93, 0x9d, 0xf8, 0x0d, 0x30, 0x1a, 0x44, - 0x9d, 0xf8, 0x0f, 0x30, 0x0a, 0x44, 0x00, 0x93, 0x71, 0x68, 0x08, 0xab, - 0xfd, 0xf7, 0x7f, 0xfd, 0x04, 0x1e, 0x08, 0xbf, 0x01, 0x24, 0x9c, 0xe7, - 0x05, 0x23, 0xa7, 0xe7, 0x56, 0xdf, 0x01, 0x08, 0x55, 0xdf, 0x01, 0x08, - 0x37, 0xb5, 0x05, 0x46, 0xa4, 0x30, 0x0c, 0x46, 0x01, 0x90, 0xff, 0xf7, - 0xf9, 0xfe, 0x05, 0xf1, 0x24, 0x02, 0x6b, 0x6a, 0x01, 0x98, 0x1b, 0xb1, - 0x9c, 0x42, 0x0d, 0xd1, 0x23, 0x68, 0x13, 0x60, 0xff, 0xf7, 0xce, 0xfe, - 0x14, 0xb1, 0x20, 0x46, 0x0f, 0xf0, 0x5e, 0xfb, 0x00, 0x20, 0x03, 0xb0, - 0xbd, 0xe8, 0x30, 0x40, 0xfc, 0xf7, 0x39, 0xba, 0x1a, 0x46, 0x1b, 0x68, - 0xeb, 0xe7, 0x2d, 0xe9, 0xf0, 0x47, 0x00, 0xf1, 0xa4, 0x06, 0x0d, 0x46, - 0x81, 0x46, 0x86, 0xb0, 0x30, 0x46, 0x90, 0x46, 0xff, 0xf7, 0xd6, 0xfe, - 0xea, 0x69, 0x09, 0xf1, 0x14, 0x09, 0x02, 0xf0, 0x03, 0x03, 0x01, 0x2b, - 0x5a, 0xd0, 0x92, 0x03, 0x6b, 0x69, 0x03, 0xd5, 0x2a, 0x6a, 0x93, 0x42, - 0x38, 0xbf, 0x13, 0x46, 0x98, 0x45, 0x24, 0xd2, 0x29, 0x46, 0x48, 0x46, - 0xfd, 0xf7, 0xec, 0xfe, 0x04, 0x46, 0xa8, 0xb9, 0x05, 0xab, 0x05, 0x90, - 0x05, 0xf1, 0x2c, 0x01, 0x48, 0x46, 0x02, 0x93, 0x05, 0xf1, 0x10, 0x03, - 0xcd, 0xe9, 0x00, 0x83, 0xd5, 0xe9, 0x04, 0x23, 0xf7, 0xf7, 0xd9, 0xfb, - 0x04, 0x46, 0x28, 0xb9, 0xeb, 0x69, 0xc5, 0xf8, 0x14, 0x80, 0x43, 0xf4, - 0x80, 0x33, 0xeb, 0x61, 0x30, 0x46, 0xff, 0xf7, 0x87, 0xfe, 0x20, 0x46, - 0x06, 0xb0, 0xbd, 0xe8, 0xf0, 0x47, 0xfc, 0xf7, 0xf6, 0xb9, 0x2e, 0xd9, - 0x2f, 0x6a, 0xbb, 0x42, 0x09, 0xd0, 0x29, 0x46, 0x48, 0x46, 0xfd, 0xf7, - 0xc3, 0xfe, 0x04, 0x1e, 0x15, 0xd1, 0x6b, 0x69, 0x00, 0x2b, 0x24, 0xdb, - 0x2b, 0x62, 0x4f, 0xf0, 0x00, 0x0a, 0x2b, 0x6a, 0x98, 0x45, 0x0e, 0xd8, - 0x29, 0x46, 0x48, 0x46, 0xfd, 0xf7, 0xb4, 0xfe, 0x20, 0xb9, 0x38, 0x1e, - 0xb4, 0xbf, 0x6f, 0xf0, 0x15, 0x00, 0x28, 0x62, 0x00, 0xea, 0xe0, 0x74, - 0xd6, 0xe7, 0xd5, 0xdb, 0xeb, 0xe7, 0x01, 0x23, 0x05, 0xaa, 0x29, 0x46, - 0x48, 0x46, 0x8d, 0xf8, 0x14, 0xa0, 0xfd, 0xf7, 0x0b, 0xff, 0x04, 0x1e, - 0xe3, 0xda, 0xc9, 0xe7, 0x6f, 0xf0, 0x08, 0x04, 0xc6, 0xe7, 0x00, 0x24, - 0xc4, 0xe7, 0x6f, 0xf0, 0x15, 0x04, 0xc1, 0xe7, 0x37, 0xb5, 0x0d, 0x46, - 0xa4, 0x30, 0x01, 0x90, 0xff, 0xf7, 0x66, 0xfe, 0xeb, 0x69, 0x6c, 0x69, - 0x13, 0xf4, 0x00, 0x3f, 0x01, 0x98, 0x03, 0xd0, 0x2b, 0x6a, 0x9c, 0x42, - 0x38, 0xbf, 0x1c, 0x46, 0xff, 0xf7, 0x3a, 0xfe, 0x20, 0x46, 0x03, 0xb0, - 0xbd, 0xe8, 0x30, 0x40, 0xfc, 0xf7, 0xa9, 0xb9, 0x13, 0xb5, 0x0c, 0x46, - 0xa4, 0x30, 0x01, 0x90, 0xff, 0xf7, 0x4e, 0xfe, 0x24, 0x6a, 0x01, 0x98, - 0xff, 0xf7, 0x2a, 0xfe, 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0x10, 0x40, - 0xfc, 0xf7, 0x99, 0xb9, 0x2d, 0xe9, 0xf0, 0x41, 0x00, 0xf1, 0xa4, 0x08, - 0x05, 0x46, 0x0e, 0x46, 0x14, 0x46, 0x40, 0x46, 0x1f, 0x46, 0xff, 0xf7, - 0x39, 0xfe, 0x05, 0xf1, 0x14, 0x00, 0x31, 0x46, 0xfd, 0xf7, 0x5e, 0xfe, - 0x05, 0x46, 0x70, 0xb9, 0x3f, 0xb1, 0x01, 0x2f, 0x33, 0x6a, 0x01, 0xd1, - 0x1c, 0x44, 0x02, 0xe0, 0x02, 0x2f, 0x0e, 0xd0, 0x1c, 0x46, 0x00, 0x2c, - 0xaa, 0xbf, 0x25, 0x46, 0x6f, 0xf0, 0x15, 0x05, 0x34, 0x62, 0x40, 0x46, - 0xff, 0xf7, 0x00, 0xfe, 0x28, 0x46, 0xbd, 0xe8, 0xf0, 0x41, 0xfc, 0xf7, - 0x70, 0xb9, 0x73, 0x69, 0xea, 0xe7, 0x37, 0xb5, 0x00, 0xf1, 0xa4, 0x05, - 0x04, 0x46, 0x01, 0x91, 0x28, 0x46, 0xff, 0xf7, 0x11, 0xfe, 0x01, 0x99, - 0x04, 0xf1, 0x14, 0x00, 0xfe, 0xf7, 0x74, 0xfb, 0x04, 0x46, 0x28, 0x46, - 0xff, 0xf7, 0xe8, 0xfd, 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0x30, 0x40, - 0xfc, 0xf7, 0x57, 0xb9, 0x30, 0xb5, 0x00, 0xf1, 0xa4, 0x05, 0x85, 0xb0, - 0x04, 0x46, 0x28, 0x46, 0x01, 0x93, 0xcd, 0xe9, 0x02, 0x21, 0xff, 0xf7, - 0xf7, 0xfd, 0x03, 0x99, 0x04, 0xf1, 0x14, 0x00, 0xdd, 0xe9, 0x01, 0x32, - 0xfd, 0xf7, 0x84, 0xfe, 0x04, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xcc, 0xfd, - 0x20, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0x30, 0x40, 0xfc, 0xf7, 0x3b, 0xb9, + 0x81, 0xf8, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x71, 0xaf, 0x0f, 0x9a, + 0x0b, 0x9b, 0x9a, 0x42, 0x5f, 0xd1, 0x06, 0x9b, 0x43, 0xb3, 0x06, 0xf1, + 0x04, 0x09, 0x48, 0x46, 0xfd, 0xf7, 0xc3, 0xfd, 0x00, 0x28, 0x74, 0xd1, + 0x43, 0x46, 0x3a, 0x46, 0x09, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x1b, 0xfd, + 0x00, 0x28, 0x5c, 0xdb, 0x6b, 0xd0, 0x6b, 0x68, 0x42, 0x46, 0x39, 0x46, + 0x30, 0x46, 0x0d, 0x93, 0xab, 0x68, 0x0e, 0x93, 0xf8, 0xf7, 0xbb, 0xfa, + 0x00, 0x28, 0x50, 0xd1, 0x49, 0x46, 0x09, 0xa8, 0xfd, 0xf7, 0x98, 0xfd, + 0x18, 0xb9, 0x6b, 0x68, 0x73, 0x60, 0xab, 0x68, 0xb3, 0x60, 0x30, 0x46, + 0xff, 0xf7, 0x8e, 0xfe, 0x00, 0x28, 0x42, 0xd1, 0x34, 0x69, 0x00, 0x2c, + 0x3f, 0xf4, 0x3e, 0xaf, 0x18, 0xee, 0x10, 0x1a, 0x20, 0x1d, 0xfd, 0xf7, + 0x85, 0xfd, 0x18, 0xb9, 0x6b, 0x68, 0x63, 0x60, 0xab, 0x68, 0xa3, 0x60, + 0x24, 0x68, 0xf0, 0xe7, 0x01, 0x23, 0x42, 0x46, 0x0a, 0x99, 0x30, 0x46, + 0x00, 0x93, 0x0f, 0xab, 0xff, 0xf7, 0x5b, 0xf8, 0x04, 0x46, 0x00, 0x28, + 0x7f, 0xf4, 0x26, 0xaf, 0x01, 0x22, 0x0f, 0xa9, 0x18, 0xee, 0x90, 0x0a, + 0xfd, 0xf7, 0x4a, 0xfd, 0x01, 0x23, 0x22, 0x46, 0x51, 0x46, 0x02, 0x93, + 0x0f, 0xab, 0x30, 0x46, 0xcd, 0xe9, 0x00, 0x73, 0x6b, 0x68, 0xfe, 0xf7, + 0x71, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x0d, 0xaf, 0x08, 0xf1, + 0x01, 0x08, 0x01, 0x37, 0x62, 0xe7, 0x4f, 0xf0, 0xff, 0x33, 0x00, 0x22, + 0x0f, 0xa9, 0x09, 0xa8, 0x33, 0x62, 0x01, 0x23, 0xcd, 0xe9, 0x0f, 0x23, + 0xfd, 0xf7, 0x4e, 0xfd, 0x30, 0xb9, 0x6f, 0xf0, 0x33, 0x00, 0x1b, 0xb0, + 0xbd, 0xec, 0x02, 0x8b, 0xbd, 0xe8, 0xf0, 0x8f, 0x18, 0xee, 0x10, 0x1a, + 0x30, 0x46, 0xff, 0xf7, 0x4f, 0xf9, 0x01, 0x23, 0x06, 0x93, 0x00, 0x28, + 0x3f, 0xf4, 0xe6, 0xae, 0xef, 0xe7, 0x3a, 0x46, 0x09, 0xa9, 0x30, 0x46, + 0xff, 0xf7, 0x8e, 0xf8, 0x00, 0x28, 0xe8, 0xdb, 0xa4, 0xd0, 0x6b, 0x68, + 0x39, 0x46, 0x30, 0x46, 0x18, 0x93, 0xab, 0x68, 0x19, 0x93, 0x00, 0x23, + 0x1a, 0x46, 0xff, 0xf7, 0xb6, 0xfe, 0x97, 0xe7, 0x83, 0x69, 0x02, 0x39, + 0x02, 0x3b, 0x8b, 0x42, 0x83, 0xbf, 0x43, 0x89, 0xc0, 0x6a, 0x01, 0xfb, + 0x03, 0x00, 0x00, 0x20, 0x70, 0x47, 0x38, 0xb5, 0x03, 0x6b, 0x05, 0x46, + 0x0c, 0x46, 0x8b, 0x42, 0x0f, 0xd0, 0xfd, 0xf7, 0x23, 0xfe, 0x58, 0xb9, + 0x22, 0x46, 0x01, 0x23, 0x69, 0x6b, 0x68, 0x78, 0xfd, 0xf7, 0xb6, 0xfd, + 0x00, 0x28, 0x1c, 0xbf, 0x4f, 0xf0, 0xff, 0x34, 0x01, 0x20, 0x2c, 0x63, + 0x38, 0xbd, 0x00, 0x20, 0xfc, 0xe7, 0x01, 0x29, 0xf8, 0xb5, 0x04, 0x46, + 0x0e, 0x46, 0x64, 0xd9, 0x83, 0x69, 0x99, 0x42, 0x61, 0xd2, 0x03, 0x78, + 0x02, 0x2b, 0x30, 0xd0, 0x03, 0x2b, 0x45, 0xd0, 0x01, 0x2b, 0x5a, 0xd1, + 0x01, 0xeb, 0x51, 0x05, 0x83, 0x89, 0x41, 0x6a, 0xb5, 0xfb, 0xf3, 0xf3, + 0x19, 0x44, 0xff, 0xf7, 0xd0, 0xff, 0x10, 0xb1, 0x4f, 0xf0, 0xff, 0x30, + 0xf8, 0xbd, 0xa1, 0x89, 0x6f, 0x1c, 0x20, 0x46, 0xb5, 0xfb, 0xf1, 0xf3, + 0x01, 0xfb, 0x13, 0x55, 0x63, 0x6b, 0xb7, 0xfb, 0xf1, 0xf1, 0x5d, 0x5d, + 0x63, 0x6a, 0x19, 0x44, 0xff, 0xf7, 0xbd, 0xff, 0x00, 0x28, 0xeb, 0xd1, + 0xa2, 0x89, 0xb7, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x73, 0x62, 0x6b, + 0xd0, 0x5c, 0xf3, 0x07, 0x45, 0xea, 0x00, 0x20, 0x4c, 0xbf, 0x00, 0x09, + 0xc0, 0xf3, 0x0b, 0x00, 0xde, 0xe7, 0x83, 0x89, 0x5b, 0x08, 0xb1, 0xfb, + 0xf3, 0xf3, 0x41, 0x6a, 0x19, 0x44, 0xff, 0xf7, 0xa4, 0xff, 0x00, 0x28, + 0xd2, 0xd1, 0xa2, 0x89, 0x76, 0x00, 0xb6, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, + 0x13, 0x66, 0x63, 0x6b, 0x9a, 0x19, 0x98, 0x5d, 0x52, 0x78, 0x40, 0xea, + 0x02, 0x20, 0xc7, 0xe7, 0x83, 0x89, 0x9b, 0x08, 0xb1, 0xfb, 0xf3, 0xf3, + 0x41, 0x6a, 0x19, 0x44, 0xff, 0xf7, 0x8d, 0xff, 0x00, 0x28, 0xbb, 0xd1, + 0xa1, 0x89, 0xb6, 0x00, 0xb6, 0xfb, 0xf1, 0xf0, 0x01, 0xfb, 0x10, 0x66, + 0x60, 0x6b, 0x30, 0x44, 0xfd, 0xf7, 0xd6, 0xfd, 0x20, 0xf0, 0x70, 0x40, + 0xb0, 0xe7, 0x01, 0x20, 0xae, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, 0x1e, 0x46, + 0x03, 0x68, 0x85, 0xb0, 0x0c, 0x46, 0x9b, 0x6f, 0x82, 0x46, 0x91, 0x46, + 0x98, 0x47, 0x03, 0xa9, 0x20, 0x46, 0xfd, 0xf7, 0x68, 0xfd, 0x05, 0x46, + 0x07, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xa3, 0x80, 0x65, 0x7c, 0x0d, 0xbb, + 0x23, 0x7c, 0x13, 0xf0, 0x01, 0x03, 0x00, 0x93, 0x00, 0xf0, 0x9d, 0x80, + 0xe3, 0x68, 0x2f, 0x46, 0x62, 0x69, 0x9b, 0x1a, 0x9e, 0x42, 0x28, 0xbf, + 0x1e, 0x46, 0x9e, 0xb1, 0x03, 0x98, 0x62, 0x69, 0x83, 0x89, 0xb2, 0xfb, + 0xf3, 0xf1, 0x03, 0xfb, 0x11, 0x23, 0x00, 0x2b, 0x69, 0xd1, 0x43, 0x89, + 0x01, 0x3b, 0x0b, 0x40, 0x01, 0x93, 0x1e, 0xd1, 0x8a, 0xb9, 0xa0, 0x68, + 0x01, 0x28, 0x13, 0xd8, 0x02, 0x25, 0x65, 0x74, 0xda, 0xf8, 0x00, 0x30, + 0x50, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x00, 0x2d, 0x7c, 0xd0, 0x28, 0x46, + 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x4f, 0xfd, 0xf7, 0x1b, 0xbd, 0xa1, 0x69, + 0x20, 0x68, 0xff, 0xf7, 0x4c, 0xff, 0xe9, 0xe7, 0x43, 0x1c, 0x03, 0xd1, + 0x01, 0x23, 0x00, 0x9d, 0x63, 0x74, 0xe7, 0xe7, 0xa0, 0x61, 0xdd, 0xf8, + 0x0c, 0xb0, 0xa1, 0x69, 0x58, 0x46, 0xff, 0xf7, 0x1b, 0xff, 0x00, 0x28, + 0xdc, 0xd0, 0x01, 0x9b, 0x03, 0xeb, 0x00, 0x08, 0xbb, 0xf8, 0x0c, 0x30, + 0x9e, 0x42, 0x34, 0xd3, 0x01, 0x99, 0xbb, 0xf8, 0x0a, 0x20, 0x9b, 0xf8, + 0x01, 0x00, 0xb6, 0xfb, 0xf3, 0xf3, 0x19, 0x44, 0x91, 0x42, 0x49, 0x46, + 0x84, 0xbf, 0x01, 0x9b, 0xd3, 0x1a, 0x42, 0x46, 0x01, 0x93, 0xfd, 0xf7, + 0xd1, 0xfc, 0x01, 0x9b, 0x00, 0x28, 0xd7, 0xd1, 0xdd, 0xf8, 0x0c, 0xb0, + 0x9b, 0xf8, 0x03, 0x20, 0x7a, 0xb1, 0xdb, 0xf8, 0x30, 0x00, 0xa0, 0xeb, + 0x08, 0x00, 0x83, 0x42, 0x09, 0xd9, 0xbb, 0xf8, 0x0c, 0x20, 0xdb, 0xf8, + 0x34, 0x10, 0x00, 0xfb, 0x02, 0x90, 0x01, 0x93, 0x11, 0xf0, 0x48, 0xf8, + 0x01, 0x9b, 0xbb, 0xf8, 0x0c, 0x80, 0x03, 0xfb, 0x08, 0xf8, 0x63, 0x69, + 0xa6, 0xeb, 0x08, 0x06, 0x47, 0x44, 0xc1, 0x44, 0x43, 0x44, 0x63, 0x61, + 0x8d, 0xe7, 0xc4, 0xf8, 0x1c, 0x80, 0x03, 0x98, 0x62, 0x69, 0x83, 0x89, + 0xe1, 0x69, 0xb2, 0xfb, 0xf3, 0xf8, 0x03, 0xfb, 0x18, 0x28, 0xa3, 0xeb, + 0x08, 0x03, 0xb3, 0x42, 0x28, 0xbf, 0x33, 0x46, 0x98, 0x46, 0xff, 0xf7, + 0xd6, 0xfe, 0x00, 0x28, 0xa2, 0xd1, 0x03, 0x9a, 0x60, 0x69, 0x91, 0x89, + 0xb0, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, 0x13, 0x03, 0x51, 0x6b, 0x48, 0x46, + 0x42, 0x46, 0x19, 0x44, 0x11, 0xf0, 0x1a, 0xf8, 0xd5, 0xe7, 0x00, 0x27, + 0x7e, 0xe7, 0x2f, 0x46, 0x07, 0x25, 0x7b, 0xe7, 0x38, 0x46, 0x05, 0xb0, + 0xbd, 0xe8, 0xf0, 0x8f, 0x38, 0xb5, 0x00, 0x23, 0x04, 0x46, 0xc3, 0x70, + 0x4f, 0xf0, 0xff, 0x33, 0x03, 0x63, 0xff, 0xf7, 0xb4, 0xfe, 0x00, 0x28, + 0x51, 0xd1, 0x64, 0x6b, 0x23, 0x78, 0x94, 0xf8, 0xff, 0x51, 0x94, 0xf8, + 0xfe, 0x01, 0xeb, 0x2b, 0x40, 0xea, 0x05, 0x25, 0x03, 0xd0, 0x18, 0x33, + 0xdb, 0xb2, 0x01, 0x2b, 0x3c, 0xd8, 0x4a, 0xf6, 0x55, 0x23, 0x9d, 0x42, + 0x07, 0xd1, 0x08, 0x22, 0x21, 0x49, 0x04, 0xf1, 0x52, 0x00, 0x12, 0xf0, + 0x55, 0xfb, 0x00, 0x28, 0x36, 0xd0, 0x22, 0x7b, 0xe3, 0x7a, 0x43, 0xea, + 0x02, 0x23, 0xa3, 0xf5, 0x00, 0x72, 0xb2, 0xf5, 0x60, 0x6f, 0x27, 0xd8, + 0x60, 0x7b, 0x28, 0xb3, 0x59, 0x1e, 0x42, 0x1e, 0x0b, 0x40, 0x02, 0x40, + 0x13, 0x43, 0x1f, 0xd1, 0xe2, 0x7b, 0xa3, 0x7b, 0x53, 0xea, 0x02, 0x23, + 0x1a, 0xd0, 0x23, 0x7c, 0x01, 0x3b, 0x01, 0x2b, 0x16, 0xd8, 0xa2, 0x7c, + 0x63, 0x7c, 0x53, 0xea, 0x02, 0x23, 0x11, 0xd0, 0x22, 0x7d, 0xe3, 0x7c, + 0x43, 0xea, 0x02, 0x23, 0x7f, 0x2b, 0x06, 0xd8, 0x04, 0xf1, 0x20, 0x00, + 0xfd, 0xf7, 0xc4, 0xfc, 0xb0, 0xf5, 0x80, 0x3f, 0x04, 0xd3, 0xe2, 0x7d, + 0xa3, 0x7d, 0x53, 0xea, 0x02, 0x23, 0x08, 0xd1, 0x4a, 0xf6, 0x55, 0x20, + 0x85, 0x42, 0x0c, 0xbf, 0x02, 0x20, 0x03, 0x20, 0x38, 0xbd, 0x04, 0x20, + 0xfc, 0xe7, 0x00, 0x20, 0xfa, 0xe7, 0x00, 0xbf, 0x98, 0xd9, 0x01, 0x08, + 0x2d, 0xe9, 0xf0, 0x4f, 0x00, 0x26, 0x87, 0xb0, 0x0d, 0x46, 0x17, 0x46, + 0x0e, 0x60, 0xfd, 0xf7, 0x5e, 0xfc, 0x00, 0x28, 0xc0, 0xf2, 0x51, 0x81, + 0xb0, 0x4b, 0x53, 0xf8, 0x20, 0x40, 0x00, 0x2c, 0x00, 0xf0, 0x4d, 0x81, + 0x2c, 0x60, 0x23, 0x78, 0xbb, 0xb9, 0x60, 0x70, 0xc0, 0xb2, 0xac, 0x4d, + 0x55, 0xf8, 0x20, 0x00, 0x03, 0x68, 0x9b, 0x68, 0x98, 0x47, 0x10, 0xf0, + 0x01, 0x06, 0xc3, 0xb2, 0x40, 0xf0, 0x3f, 0x81, 0x17, 0xf0, 0xfe, 0x0f, + 0x02, 0xd0, 0x5b, 0x07, 0x00, 0xf1, 0x3b, 0x81, 0x60, 0x78, 0x55, 0xf8, + 0x20, 0x30, 0x23, 0xb9, 0x01, 0x26, 0x30, 0x46, 0x07, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0xfd, 0xf7, 0xb1, 0xfb, 0xa0, 0xf5, 0x00, 0x72, 0xa0, 0x81, + 0xb2, 0xf5, 0x60, 0x6f, 0xf2, 0xd8, 0x42, 0x1e, 0x02, 0x42, 0xef, 0xd1, + 0x63, 0x6b, 0x00, 0x2b, 0x00, 0xf0, 0xf2, 0x80, 0x00, 0x21, 0x20, 0x46, + 0xff, 0xf7, 0x58, 0xff, 0x02, 0x28, 0x40, 0xf0, 0xfd, 0x80, 0x65, 0x6b, + 0x02, 0xaf, 0x05, 0xf5, 0xe3, 0x71, 0xb8, 0x46, 0x05, 0xf2, 0x06, 0x25, + 0x08, 0x46, 0xfd, 0xf7, 0x5d, 0xfc, 0x10, 0x31, 0x48, 0xf8, 0x04, 0x0b, + 0x8d, 0x42, 0xf7, 0xd1, 0x00, 0x25, 0x57, 0xf8, 0x04, 0x1b, 0x00, 0x29, + 0x00, 0xf0, 0xde, 0x80, 0x20, 0x46, 0xff, 0xf7, 0x3d, 0xff, 0x01, 0x28, + 0x00, 0xf2, 0xd9, 0x80, 0x65, 0x6b, 0xb4, 0xf8, 0x0c, 0x90, 0x2a, 0x7b, + 0xeb, 0x7a, 0x43, 0xea, 0x02, 0x23, 0x99, 0x45, 0x40, 0xf0, 0xd6, 0x80, + 0xe8, 0x7d, 0xa9, 0x7d, 0x51, 0xea, 0x00, 0x21, 0x04, 0xd1, 0x05, 0xf1, + 0x24, 0x00, 0xfd, 0xf7, 0x39, 0xfc, 0x01, 0x46, 0xe1, 0x61, 0x95, 0xf8, + 0x10, 0xa0, 0xd4, 0xf8, 0x30, 0xb0, 0x0a, 0xf1, 0xff, 0x33, 0x84, 0xf8, + 0x02, 0xa0, 0x01, 0x2b, 0x00, 0xf2, 0xc0, 0x80, 0x6b, 0x7b, 0x63, 0x81, + 0x00, 0x2b, 0x00, 0xf0, 0xbb, 0x80, 0x5a, 0x1e, 0x1a, 0x42, 0x40, 0xf0, + 0xb7, 0x80, 0xaa, 0x7c, 0x95, 0xf8, 0x11, 0x80, 0x48, 0xea, 0x02, 0x28, + 0x0f, 0xfa, 0x88, 0xf2, 0xa4, 0xf8, 0x08, 0x80, 0x00, 0x92, 0x4f, 0xea, + 0x59, 0x12, 0xb8, 0xfb, 0xf2, 0xf7, 0x02, 0xfb, 0x17, 0x82, 0x92, 0xb2, + 0x00, 0x2a, 0x40, 0xf0, 0xa3, 0x80, 0x2a, 0x7d, 0xe8, 0x7c, 0x50, 0xea, + 0x02, 0x20, 0x05, 0xd1, 0x05, 0xf1, 0x20, 0x00, 0x01, 0x93, 0xfd, 0xf7, + 0x05, 0xfc, 0x01, 0x9b, 0x95, 0xf8, 0x0f, 0xc0, 0xaa, 0x7b, 0x52, 0xea, + 0x0c, 0x22, 0x00, 0xf0, 0x91, 0x80, 0x01, 0xfb, 0x0a, 0xfc, 0x17, 0x44, + 0x07, 0xeb, 0x0c, 0x0e, 0x70, 0x45, 0xc0, 0xf0, 0x89, 0x80, 0xa0, 0xeb, + 0x0e, 0x00, 0x98, 0x42, 0xb0, 0xfb, 0xf3, 0xf7, 0xc0, 0xf0, 0x82, 0x80, + 0x58, 0x4b, 0x9f, 0x42, 0x7e, 0xd8, 0x4f, 0xf6, 0xf5, 0x73, 0x9f, 0x42, + 0x40, 0xf2, 0x9d, 0x80, 0x4f, 0xf0, 0x03, 0x0a, 0x02, 0x37, 0x5a, 0x44, + 0x0b, 0xeb, 0x0e, 0x03, 0xba, 0xf1, 0x03, 0x0f, 0xa7, 0x61, 0xc4, 0xf8, + 0x20, 0xb0, 0x62, 0x62, 0xe3, 0x62, 0x74, 0xd1, 0x95, 0xf8, 0x2b, 0x20, + 0x95, 0xf8, 0x2a, 0x30, 0x43, 0xea, 0x02, 0x23, 0x00, 0x9a, 0x1a, 0x43, + 0x13, 0xb2, 0x00, 0x2b, 0x60, 0xd1, 0xbf, 0x00, 0x05, 0xf1, 0x2c, 0x00, + 0xfd, 0xf7, 0xc8, 0xfb, 0xa0, 0x62, 0x09, 0xf1, 0xff, 0x33, 0x1f, 0x44, + 0xb7, 0xfb, 0xf9, 0xf9, 0x89, 0x45, 0x53, 0xd8, 0x4f, 0xf0, 0xff, 0x33, + 0xba, 0xf1, 0x03, 0x0f, 0xc4, 0xe9, 0x04, 0x33, 0x4f, 0xf0, 0x80, 0x03, + 0x23, 0x71, 0x30, 0xd1, 0x95, 0xf8, 0x31, 0x20, 0x95, 0xf8, 0x30, 0x30, + 0x43, 0xea, 0x02, 0x23, 0x01, 0x2b, 0x28, 0xd1, 0x0b, 0xf1, 0x01, 0x01, + 0x20, 0x46, 0xff, 0xf7, 0x54, 0xfd, 0x10, 0xbb, 0x61, 0x6b, 0x20, 0x71, + 0x91, 0xf8, 0xff, 0x21, 0x91, 0xf8, 0xfe, 0x31, 0x43, 0xea, 0x02, 0x23, + 0x4a, 0xf6, 0x55, 0x22, 0x93, 0x42, 0x16, 0xd1, 0x08, 0x46, 0xfd, 0xf7, + 0x99, 0xfb, 0x2f, 0x4b, 0x98, 0x42, 0x10, 0xd1, 0x01, 0xf5, 0xf2, 0x70, + 0xfd, 0xf7, 0x92, 0xfb, 0x2c, 0x4b, 0x98, 0x42, 0x09, 0xd1, 0x01, 0xf5, + 0xf4, 0x70, 0xfd, 0xf7, 0x8b, 0xfb, 0x60, 0x61, 0x01, 0xf5, 0xf6, 0x70, + 0xfd, 0xf7, 0x86, 0xfb, 0x20, 0x61, 0x27, 0x4a, 0x84, 0xf8, 0x00, 0xa0, + 0x13, 0x88, 0x01, 0x33, 0x9b, 0xb2, 0x13, 0x80, 0xe3, 0x80, 0xfa, 0xe6, + 0x10, 0xf0, 0x18, 0xfe, 0x60, 0x63, 0x00, 0x28, 0x7f, 0xf4, 0x08, 0xaf, + 0x11, 0x26, 0xf2, 0xe6, 0x03, 0x20, 0x01, 0x35, 0x04, 0x2d, 0x7f, 0xf4, + 0x18, 0xaf, 0x04, 0x28, 0x3f, 0xf4, 0xea, 0xae, 0x0d, 0x26, 0xe8, 0xe6, + 0x04, 0x28, 0x3f, 0xf4, 0xe5, 0xae, 0x01, 0x28, 0x7f, 0xf6, 0x18, 0xaf, + 0xf6, 0xe7, 0xb8, 0xf1, 0x00, 0x0f, 0xf3, 0xd0, 0xba, 0xf1, 0x02, 0x0f, + 0x4f, 0xea, 0x47, 0x03, 0x62, 0x44, 0x1a, 0xbf, 0xdb, 0x19, 0x07, 0xf0, + 0x01, 0x07, 0x1f, 0x46, 0xa2, 0x62, 0x18, 0xbf, 0x07, 0xeb, 0x53, 0x07, + 0x89, 0xe7, 0x0b, 0x26, 0xcd, 0xe6, 0x0c, 0x26, 0xcb, 0xe6, 0x03, 0x26, + 0xc9, 0xe6, 0x0a, 0x26, 0xc7, 0xe6, 0x40, 0xf6, 0xf5, 0x7a, 0x57, 0x45, + 0x8c, 0xbf, 0x4f, 0xf0, 0x02, 0x0a, 0x4f, 0xf0, 0x01, 0x0a, 0x5b, 0xe7, + 0xf4, 0x14, 0x02, 0x24, 0xa8, 0x15, 0x02, 0x24, 0xf5, 0xff, 0xff, 0x0f, + 0x52, 0x52, 0x61, 0x41, 0x72, 0x72, 0x41, 0x61, 0xf0, 0x14, 0x02, 0x24, + 0x2d, 0xe9, 0xf7, 0x4f, 0x15, 0x46, 0x80, 0x46, 0x28, 0x22, 0x00, 0x21, + 0x28, 0x46, 0x10, 0xf0, 0x37, 0xfe, 0xd8, 0xf8, 0x00, 0x30, 0x40, 0x46, + 0x9b, 0x6f, 0x98, 0x47, 0x08, 0xf1, 0x4c, 0x03, 0x00, 0x22, 0x01, 0xa9, + 0x68, 0x46, 0x00, 0x93, 0xff, 0xf7, 0x70, 0xfe, 0x06, 0x46, 0x04, 0x46, + 0x00, 0x28, 0x6e, 0xd1, 0xdd, 0xf8, 0x04, 0x90, 0xd9, 0xe9, 0x05, 0x7a, + 0xaa, 0xf1, 0x02, 0x03, 0x9f, 0x42, 0x1c, 0xd9, 0x99, 0xf8, 0x00, 0x60, + 0x01, 0x2e, 0x35, 0xd1, 0x4f, 0xf0, 0x02, 0x0a, 0x07, 0x46, 0x51, 0x46, + 0x48, 0x46, 0xff, 0xf7, 0xca, 0xfc, 0x43, 0x1c, 0x59, 0xd0, 0x01, 0x28, + 0x56, 0xd0, 0x00, 0xb9, 0x01, 0x37, 0x01, 0x9b, 0x0a, 0xf1, 0x01, 0x0a, + 0x9b, 0x69, 0x9a, 0x45, 0xef, 0xd3, 0x01, 0x9b, 0x1a, 0x79, 0x5f, 0x61, + 0x42, 0xf0, 0x01, 0x02, 0x1a, 0x71, 0xb9, 0xf8, 0x0c, 0x30, 0x00, 0x24, + 0xd9, 0xf8, 0x18, 0x20, 0x40, 0x46, 0xc5, 0xe9, 0x00, 0x33, 0x02, 0x3a, + 0xb9, 0xf8, 0x0a, 0x30, 0x5a, 0x43, 0x5f, 0x43, 0x0c, 0x23, 0x6b, 0x62, + 0xd8, 0xf8, 0x00, 0x30, 0xc5, 0xe9, 0x02, 0x24, 0xdb, 0x6f, 0xc5, 0xe9, + 0x04, 0x74, 0xc5, 0xe9, 0x06, 0x74, 0x98, 0x47, 0x20, 0x46, 0x03, 0xb0, + 0xbd, 0xe8, 0xf0, 0x8f, 0xd9, 0xf8, 0x24, 0x10, 0x07, 0x46, 0x3c, 0xb9, + 0x01, 0x98, 0x01, 0xf1, 0x01, 0x0b, 0xff, 0xf7, 0x7a, 0xfc, 0x06, 0x46, + 0x08, 0xbb, 0x59, 0x46, 0x01, 0x9e, 0x32, 0x78, 0x73, 0x6b, 0x02, 0x2a, + 0x03, 0xeb, 0x04, 0x00, 0x0f, 0xd1, 0x1b, 0x5d, 0x02, 0x34, 0x42, 0x78, + 0x53, 0xea, 0x02, 0x23, 0x08, 0xbf, 0x01, 0x37, 0xb3, 0x89, 0xba, 0xf1, + 0x01, 0x0a, 0xb4, 0xfb, 0xf3, 0xf2, 0x03, 0xfb, 0x12, 0x44, 0xe0, 0xd1, + 0xb9, 0xe7, 0xfd, 0xf7, 0xb3, 0xfa, 0x30, 0xf0, 0x70, 0x43, 0x04, 0xf1, + 0x04, 0x04, 0x08, 0xbf, 0x01, 0x37, 0xed, 0xe7, 0x02, 0x26, 0xd8, 0xf8, + 0x00, 0x30, 0x40, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x30, 0x46, 0x03, 0xb0, + 0xbd, 0xe8, 0xf0, 0x4f, 0xfd, 0xf7, 0x2e, 0xba, 0x7f, 0xb5, 0xcd, 0xe9, + 0x00, 0x10, 0x03, 0xa8, 0x14, 0x46, 0x03, 0x91, 0xfd, 0xf7, 0x51, 0xfa, + 0x05, 0x1e, 0x19, 0xdb, 0x0d, 0x4e, 0x56, 0xf8, 0x25, 0x20, 0x22, 0xb1, + 0x00, 0x23, 0x50, 0x6b, 0x13, 0x70, 0x10, 0xf0, 0x33, 0xfd, 0x01, 0x9b, + 0x13, 0xb1, 0x00, 0x22, 0x1a, 0x70, 0x5a, 0x63, 0x46, 0xf8, 0x25, 0x30, + 0x2c, 0xb1, 0x00, 0x22, 0x01, 0xa9, 0x68, 0x46, 0xff, 0xf7, 0xd2, 0xfd, + 0x04, 0x46, 0x20, 0x46, 0x04, 0xb0, 0x70, 0xbd, 0x0b, 0x24, 0xfa, 0xe7, + 0xf4, 0x14, 0x02, 0x24, 0xf8, 0xb5, 0x03, 0x68, 0x04, 0x46, 0x9b, 0x6f, + 0x98, 0x47, 0x23, 0x6d, 0x01, 0x33, 0x07, 0xd1, 0x23, 0x68, 0x6f, 0xf0, + 0x15, 0x05, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x28, 0x46, 0xf8, 0xbd, + 0x00, 0x22, 0x04, 0xf1, 0x4c, 0x01, 0x10, 0x4f, 0x10, 0x46, 0xff, 0xf7, + 0xc1, 0xff, 0x23, 0x6d, 0x06, 0x46, 0x57, 0xf8, 0x23, 0x00, 0x03, 0x68, + 0xdb, 0x68, 0x98, 0x47, 0x23, 0x68, 0x05, 0x46, 0x18, 0xb1, 0xdb, 0x6f, + 0x20, 0x46, 0x98, 0x47, 0xe8, 0xe7, 0x22, 0x6d, 0xdb, 0x6f, 0x47, 0xf8, + 0x22, 0x00, 0x4f, 0xf0, 0xff, 0x32, 0x20, 0x46, 0x22, 0x65, 0x98, 0x47, + 0x30, 0x46, 0xbd, 0xe8, 0xf8, 0x40, 0xfd, 0xf7, 0xd3, 0xb9, 0x00, 0xbf, + 0xa8, 0x15, 0x02, 0x24, 0x08, 0x4b, 0x10, 0xb5, 0x03, 0x60, 0x8c, 0x33, + 0x04, 0x46, 0x43, 0x60, 0xff, 0xf7, 0xc2, 0xff, 0x05, 0x4b, 0x20, 0x46, + 0x23, 0x60, 0x2c, 0x33, 0x40, 0xf8, 0x04, 0x3f, 0x04, 0xf0, 0x2e, 0xff, + 0x20, 0x46, 0x10, 0xbd, 0x1c, 0xd7, 0x01, 0x08, 0xb8, 0xd7, 0x01, 0x08, + 0xa0, 0xf1, 0x04, 0x00, 0xff, 0xf7, 0xe6, 0xbf, 0x10, 0xb5, 0x04, 0x46, + 0xff, 0xf7, 0xe2, 0xff, 0x20, 0x46, 0x10, 0xf0, 0xc7, 0xfc, 0x20, 0x46, + 0x10, 0xbd, 0xa0, 0xf1, 0x04, 0x00, 0xff, 0xf7, 0xf3, 0xbf, 0x00, 0x00, + 0x03, 0x68, 0x73, 0xb5, 0x04, 0x46, 0x9b, 0x6f, 0x01, 0x92, 0x0d, 0x46, + 0x98, 0x47, 0x23, 0x6d, 0x01, 0x9a, 0x01, 0x33, 0x07, 0xd0, 0x23, 0x68, + 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x6f, 0xf0, 0x15, 0x00, 0x02, 0xb0, + 0x70, 0xbd, 0x16, 0x48, 0x00, 0x23, 0x06, 0x46, 0x50, 0xf8, 0x04, 0x1b, + 0xd9, 0xb9, 0x46, 0xf8, 0x23, 0x50, 0x04, 0xf1, 0x14, 0x00, 0x23, 0x65, + 0x30, 0x33, 0x84, 0xf8, 0x4e, 0x10, 0x04, 0xf1, 0x4c, 0x01, 0x84, 0xf8, + 0x4c, 0x30, 0x3a, 0x23, 0x84, 0xf8, 0x4d, 0x30, 0xff, 0xf7, 0x50, 0xff, + 0x23, 0x68, 0x05, 0x46, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x28, 0x46, + 0x02, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xfd, 0xf7, 0x73, 0xb9, 0x01, 0x33, + 0x04, 0x2b, 0xdd, 0xd1, 0x23, 0x68, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, + 0x6f, 0xf0, 0x0b, 0x00, 0xd1, 0xe7, 0x00, 0xbf, 0xa8, 0x15, 0x02, 0x24, + 0x01, 0x29, 0x2d, 0xe9, 0xf8, 0x43, 0x04, 0x46, 0x0e, 0x46, 0x17, 0x46, + 0x40, 0xf2, 0x83, 0x80, 0x83, 0x69, 0x8b, 0x42, 0x7f, 0xd9, 0x03, 0x78, + 0x02, 0x2b, 0x45, 0xd0, 0x03, 0x2b, 0x5a, 0xd0, 0x01, 0x2b, 0x78, 0xd1, + 0x01, 0xeb, 0x51, 0x09, 0x83, 0x89, 0x41, 0x6a, 0xb9, 0xfb, 0xf3, 0xf3, + 0x19, 0x44, 0xff, 0xf7, 0x68, 0xfb, 0x05, 0x46, 0x60, 0xbb, 0xa3, 0x89, + 0x16, 0xf0, 0x01, 0x06, 0x60, 0x6b, 0x09, 0xf1, 0x01, 0x08, 0xb9, 0xfb, + 0xf3, 0xf2, 0x03, 0xfb, 0x12, 0x92, 0x0f, 0xbf, 0xfb, 0xb2, 0x83, 0x5c, + 0x03, 0xf0, 0x0f, 0x01, 0x3b, 0x01, 0x1c, 0xbf, 0x03, 0xf0, 0xf0, 0x03, + 0x0b, 0x43, 0x83, 0x54, 0x01, 0x23, 0x61, 0x6a, 0x20, 0x46, 0xe3, 0x70, + 0xa3, 0x89, 0xb8, 0xfb, 0xf3, 0xf3, 0x19, 0x44, 0xff, 0xf7, 0x47, 0xfb, + 0x05, 0x46, 0x58, 0xb9, 0xa3, 0x89, 0x61, 0x6b, 0xb8, 0xfb, 0xf3, 0xf0, + 0x03, 0xfb, 0x10, 0x80, 0x3e, 0xb1, 0xc7, 0xf3, 0x07, 0x17, 0x0f, 0x54, + 0x01, 0x23, 0xe3, 0x70, 0x28, 0x46, 0xbd, 0xe8, 0xf8, 0x83, 0x0b, 0x5c, + 0xc7, 0xf3, 0x03, 0x27, 0x23, 0xf0, 0x0f, 0x03, 0x1f, 0x43, 0xf2, 0xe7, + 0x83, 0x89, 0x5b, 0x08, 0xb1, 0xfb, 0xf3, 0xf3, 0x41, 0x6a, 0x19, 0x44, + 0xff, 0xf7, 0x27, 0xfb, 0x05, 0x46, 0x00, 0x28, 0xea, 0xd1, 0xa2, 0x89, + 0x76, 0x00, 0xb6, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x66, 0x63, 0x6b, + 0x9f, 0x55, 0x98, 0x19, 0x3f, 0x12, 0x47, 0x70, 0xdc, 0xe7, 0x83, 0x89, + 0x9b, 0x08, 0xb1, 0xfb, 0xf3, 0xf3, 0x41, 0x6a, 0x19, 0x44, 0xff, 0xf7, + 0x10, 0xfb, 0x05, 0x46, 0x00, 0x28, 0xd3, 0xd1, 0xa3, 0x89, 0xb6, 0x00, + 0x27, 0xf0, 0x70, 0x47, 0xb6, 0xfb, 0xf3, 0xf1, 0x03, 0xfb, 0x11, 0x61, + 0x66, 0x6b, 0x0e, 0x44, 0x30, 0x46, 0xfd, 0xf7, 0x55, 0xf9, 0x00, 0xf0, + 0x70, 0x40, 0x47, 0xea, 0x00, 0x01, 0x30, 0x46, 0xfd, 0xf7, 0x46, 0xf9, + 0xbc, 0xe7, 0x02, 0x25, 0xbc, 0xe7, 0x2d, 0xe9, 0xf0, 0x41, 0x80, 0x46, + 0x05, 0x68, 0x0f, 0x46, 0x49, 0xb9, 0x2e, 0x69, 0xc6, 0xb1, 0xab, 0x69, + 0xb3, 0x42, 0x98, 0xbf, 0x01, 0x26, 0x6b, 0x69, 0xa3, 0xb9, 0x00, 0x24, + 0x06, 0xe0, 0x28, 0x46, 0xff, 0xf7, 0xfb, 0xfa, 0x01, 0x28, 0x04, 0x46, + 0x03, 0xd8, 0x01, 0x24, 0x20, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0x42, 0x1c, + 0x51, 0xd0, 0xab, 0x69, 0x83, 0x42, 0xf7, 0xd8, 0x3e, 0x46, 0xea, 0xe7, + 0x01, 0x26, 0xe8, 0xe7, 0xbe, 0x42, 0x15, 0xd1, 0xab, 0x69, 0x74, 0x1c, + 0xd8, 0xf8, 0x00, 0x00, 0xa3, 0x42, 0x98, 0xbf, 0x02, 0x24, 0x21, 0x46, + 0xff, 0xf7, 0xdf, 0xfa, 0x01, 0x28, 0xe4, 0xd0, 0x43, 0x1c, 0x3a, 0xd0, + 0xd8, 0xb1, 0x2b, 0x69, 0x01, 0x2b, 0x03, 0xd9, 0xaa, 0x69, 0x93, 0x42, + 0x38, 0xbf, 0x1e, 0x46, 0x34, 0x46, 0x01, 0x34, 0xab, 0x69, 0xa3, 0x42, + 0x02, 0xd8, 0x01, 0x2e, 0xcb, 0xd9, 0x02, 0x24, 0x21, 0x46, 0xd8, 0xf8, + 0x00, 0x00, 0xff, 0xf7, 0xc6, 0xfa, 0x40, 0xb1, 0x01, 0x28, 0xca, 0xd0, + 0x01, 0x30, 0x20, 0xd0, 0xb4, 0x42, 0xec, 0xd1, 0xbd, 0xe7, 0x00, 0x2c, + 0xe8, 0xd0, 0x4f, 0xf0, 0xff, 0x32, 0x21, 0x46, 0x28, 0x46, 0xff, 0xf7, + 0x1b, 0xff, 0x90, 0xb9, 0x57, 0xb9, 0x2c, 0x61, 0xd5, 0xe9, 0x05, 0x32, + 0x02, 0x3a, 0x93, 0x42, 0x10, 0xd9, 0x2b, 0x79, 0x43, 0xf0, 0x01, 0x03, + 0x2b, 0x71, 0xb1, 0xe7, 0x22, 0x46, 0x39, 0x46, 0x28, 0x46, 0xff, 0xf7, + 0x09, 0xff, 0x00, 0x28, 0xed, 0xd0, 0x01, 0x28, 0xa7, 0xd1, 0x4f, 0xf0, + 0xff, 0x34, 0xa5, 0xe7, 0x01, 0x3b, 0x6b, 0x61, 0xeb, 0xe7, 0x2d, 0xe9, + 0xf3, 0x41, 0x0d, 0x46, 0x01, 0xa9, 0x04, 0x46, 0xfd, 0xf7, 0x75, 0xf8, + 0x06, 0x46, 0x00, 0x28, 0x63, 0xd1, 0x66, 0x7c, 0x00, 0x2e, 0x60, 0xd1, + 0xe3, 0x68, 0xab, 0x42, 0x04, 0xd2, 0x22, 0x7c, 0x12, 0xf0, 0x02, 0x0f, + 0x08, 0xbf, 0x1d, 0x46, 0x00, 0x22, 0x63, 0x69, 0x62, 0x61, 0xb5, 0xb9, + 0x00, 0x20, 0xe2, 0x68, 0x63, 0x69, 0x93, 0x42, 0x81, 0xbf, 0x22, 0x7c, + 0xe3, 0x60, 0x42, 0xf0, 0x40, 0x02, 0x22, 0x74, 0x01, 0x9a, 0x91, 0x89, + 0xb3, 0xfb, 0xf1, 0xf2, 0x01, 0xfb, 0x12, 0x33, 0x00, 0x2b, 0x42, 0xd0, + 0xe3, 0x69, 0x83, 0x42, 0x18, 0xbf, 0xe0, 0x61, 0x3d, 0xe0, 0x01, 0x9a, + 0x51, 0x89, 0x97, 0x89, 0x4f, 0x43, 0x73, 0xb3, 0x01, 0x3b, 0x6a, 0x1e, + 0xb3, 0xfb, 0xf7, 0xf1, 0xb2, 0xfb, 0xf7, 0xf2, 0x8a, 0x42, 0x26, 0xd3, + 0x7a, 0x42, 0xa1, 0x69, 0x13, 0x40, 0xed, 0x1a, 0x63, 0x61, 0x00, 0x29, + 0xd4, 0xd0, 0xbd, 0x42, 0x63, 0x69, 0x0c, 0xd9, 0x3b, 0x44, 0xa5, 0xeb, + 0x07, 0x08, 0x63, 0x61, 0x23, 0x7c, 0x9a, 0x07, 0x2a, 0xd5, 0x20, 0x46, + 0xff, 0xf7, 0x3b, 0xff, 0x05, 0x46, 0x48, 0xbb, 0x01, 0x46, 0x63, 0x69, + 0x01, 0x98, 0x2b, 0x44, 0x63, 0x61, 0x83, 0x89, 0xb5, 0xfb, 0xf3, 0xf2, + 0x03, 0xfb, 0x12, 0x55, 0x00, 0x2d, 0xb9, 0xd0, 0xff, 0xf7, 0x16, 0xfa, + 0x48, 0xb1, 0x10, 0x44, 0xb5, 0xe7, 0xa1, 0x68, 0x81, 0xb9, 0x20, 0x46, + 0xff, 0xf7, 0x23, 0xff, 0x01, 0x28, 0x01, 0x46, 0x05, 0xd1, 0x02, 0x26, + 0x66, 0x74, 0x30, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x48, 0x1c, + 0x01, 0xd1, 0x01, 0x26, 0xf6, 0xe7, 0xa1, 0x60, 0xa1, 0x61, 0xc8, 0xe7, + 0x20, 0x68, 0xff, 0xf7, 0x1e, 0xfa, 0x05, 0x46, 0x6b, 0x1c, 0xf4, 0xd0, + 0x01, 0x2d, 0xea, 0xd9, 0x01, 0x9b, 0x9b, 0x69, 0xab, 0x42, 0xe6, 0xd9, + 0x29, 0x46, 0xa5, 0x61, 0x45, 0x46, 0xba, 0xe7, 0xf8, 0xb5, 0x1f, 0x46, + 0x03, 0x68, 0x06, 0x46, 0x0d, 0x46, 0x9b, 0x6f, 0x14, 0x46, 0x98, 0x47, + 0x02, 0x2f, 0x11, 0xd1, 0xeb, 0x68, 0x1c, 0x44, 0x21, 0x46, 0x28, 0x46, + 0xff, 0xf7, 0x67, 0xff, 0x33, 0x68, 0x04, 0x46, 0x30, 0x46, 0xdb, 0x6f, + 0x6d, 0x69, 0x98, 0x47, 0x44, 0xb1, 0x20, 0x46, 0xbd, 0xe8, 0xf8, 0x40, + 0xfc, 0xf7, 0xc0, 0xbf, 0x01, 0x2f, 0xed, 0xd1, 0x6b, 0x69, 0xea, 0xe7, + 0x28, 0x46, 0xf8, 0xbd, 0x03, 0x69, 0x2d, 0xe9, 0xf0, 0x47, 0x03, 0xf1, + 0x20, 0x08, 0x05, 0x46, 0x89, 0x46, 0x04, 0x68, 0xb8, 0xf5, 0x00, 0x1f, + 0x24, 0xbf, 0x00, 0x23, 0x83, 0x61, 0x83, 0x69, 0x83, 0xb1, 0xa2, 0x89, + 0xb8, 0xfb, 0xf2, 0xf0, 0x02, 0xfb, 0x10, 0x82, 0x00, 0x2a, 0x56, 0xd1, + 0x01, 0x33, 0x69, 0x69, 0xab, 0x61, 0x39, 0xb9, 0x23, 0x89, 0xb3, 0xeb, + 0x58, 0x1f, 0x4e, 0xd8, 0x00, 0x23, 0xab, 0x61, 0x04, 0x20, 0x0a, 0xe0, + 0x67, 0x89, 0x01, 0x3f, 0x07, 0x40, 0x46, 0xd1, 0x20, 0x46, 0xff, 0xf7, + 0xc6, 0xf9, 0x01, 0x28, 0x06, 0x46, 0x02, 0xd8, 0x02, 0x20, 0xbd, 0xe8, + 0xf0, 0x87, 0x42, 0x1c, 0x01, 0xd1, 0x01, 0x20, 0xf9, 0xe7, 0xa3, 0x69, + 0x83, 0x42, 0x30, 0xd8, 0xb9, 0xf1, 0x00, 0x0f, 0xe4, 0xd0, 0x69, 0x69, + 0x28, 0x46, 0xff, 0xf7, 0xa4, 0xfe, 0x06, 0x46, 0x00, 0x28, 0x38, 0xd0, + 0x01, 0x28, 0xe9, 0xd0, 0x43, 0x1c, 0xec, 0xd0, 0x20, 0x46, 0xfc, 0xf7, + 0xbb, 0xff, 0x82, 0x46, 0x00, 0x28, 0xe6, 0xd1, 0x31, 0x46, 0x20, 0x46, + 0xff, 0xf7, 0x7e, 0xf9, 0x51, 0x46, 0x20, 0x63, 0x81, 0x46, 0xa2, 0x89, + 0x60, 0x6b, 0x10, 0xf0, 0xe3, 0xfa, 0xd4, 0xf8, 0x34, 0xa0, 0x63, 0x89, + 0xbb, 0x42, 0x09, 0xd9, 0x01, 0x23, 0x09, 0xeb, 0x07, 0x02, 0x51, 0x46, + 0x60, 0x78, 0xfc, 0xf7, 0x11, 0xff, 0x08, 0xb9, 0x01, 0x37, 0xf2, 0xe7, + 0x63, 0x89, 0x9f, 0x42, 0xc9, 0xd1, 0x31, 0x46, 0x20, 0x46, 0x6e, 0x61, + 0xff, 0xf7, 0x60, 0xf9, 0xa8, 0x61, 0xa2, 0x89, 0x00, 0x20, 0xc5, 0xf8, + 0x10, 0x80, 0xb8, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x88, 0x63, 0x6b, + 0x43, 0x44, 0xeb, 0x61, 0xb3, 0xe7, 0x07, 0x20, 0xb1, 0xe7, 0x37, 0xb5, + 0x0d, 0x46, 0x01, 0xa9, 0x04, 0x46, 0xfc, 0xf7, 0x50, 0xff, 0x18, 0xb9, + 0x20, 0x46, 0x1d, 0xb9, 0xf7, 0xf7, 0xbe, 0xfa, 0x03, 0xb0, 0x30, 0xbd, + 0xf7, 0xf7, 0xee, 0xfa, 0x10, 0xf0, 0xfb, 0x03, 0xf8, 0xd1, 0x6b, 0x72, + 0xa3, 0x69, 0x1b, 0xb1, 0x29, 0x46, 0x20, 0x46, 0xfc, 0xf7, 0xa0, 0xff, + 0x00, 0x21, 0x20, 0x46, 0xff, 0xf7, 0x68, 0xff, 0x04, 0x28, 0x08, 0xbf, + 0x00, 0x20, 0xe9, 0xe7, 0x03, 0x68, 0x70, 0xb5, 0x0d, 0x46, 0x04, 0x46, + 0x9b, 0x6f, 0x98, 0x47, 0x28, 0x46, 0x00, 0x21, 0xff, 0xf7, 0xd5, 0xff, + 0x23, 0x68, 0x20, 0x46, 0xdb, 0x6f, 0xbd, 0xe8, 0x70, 0x40, 0x18, 0x47, + 0x03, 0x68, 0xf0, 0xb5, 0x16, 0x46, 0x0f, 0x69, 0x87, 0xb0, 0x9b, 0x6f, + 0x05, 0x46, 0x0c, 0x46, 0x98, 0x47, 0xb7, 0x42, 0x09, 0xdd, 0x00, 0x21, + 0x20, 0x46, 0xff, 0xf7, 0xc0, 0xff, 0x2b, 0x68, 0x28, 0x46, 0xdb, 0x6f, + 0x98, 0x47, 0x07, 0xb0, 0xf0, 0xbd, 0xb7, 0x42, 0xf7, 0xda, 0x69, 0x46, + 0x20, 0x46, 0xff, 0xf7, 0xb4, 0xff, 0x27, 0x69, 0x00, 0x28, 0xf0, 0xd1, + 0x9d, 0xf8, 0x09, 0x30, 0x00, 0x2b, 0xf2, 0xd1, 0xeb, 0xe7, 0x03, 0x68, + 0x70, 0xb5, 0x0e, 0x46, 0x86, 0xb0, 0x04, 0x46, 0x9b, 0x6f, 0x15, 0x46, + 0x98, 0x47, 0x30, 0x46, 0x69, 0x46, 0xff, 0xf7, 0xa0, 0xff, 0x23, 0x68, + 0x06, 0x46, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x2e, 0xb1, 0x30, 0x46, + 0x06, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xfc, 0xf7, 0xd3, 0xbe, 0x9d, 0xf8, + 0x09, 0x00, 0x78, 0xb1, 0x9d, 0xf8, 0x08, 0x30, 0x0c, 0x22, 0x0d, 0xf1, + 0x09, 0x01, 0x28, 0x46, 0x13, 0xf0, 0x10, 0x0f, 0x14, 0xbf, 0x03, 0x23, + 0x05, 0x23, 0x85, 0xf8, 0x00, 0x31, 0x11, 0xf0, 0x83, 0xfe, 0x01, 0x20, + 0x06, 0xb0, 0x70, 0xbd, 0x2d, 0xe9, 0xf7, 0x4f, 0x04, 0x46, 0xd0, 0xf8, + 0x00, 0x90, 0x0d, 0x46, 0x11, 0xf8, 0x01, 0x3b, 0x2f, 0x2b, 0xfa, 0xd0, + 0x5c, 0x2b, 0xf8, 0xd0, 0x00, 0x23, 0xa3, 0x60, 0x2b, 0x78, 0x1f, 0x2b, + 0x25, 0xd9, 0x04, 0xf1, 0x20, 0x07, 0x4f, 0xf0, 0x20, 0x3b, 0xc5, 0xf1, + 0x02, 0x03, 0x05, 0xf1, 0xff, 0x3a, 0x00, 0x26, 0x4f, 0xf0, 0x08, 0x08, + 0x00, 0x93, 0x51, 0x4a, 0x51, 0x4b, 0xc7, 0xf8, 0x04, 0xb0, 0xc7, 0xf8, + 0x00, 0xb0, 0xc7, 0xf8, 0x07, 0xb0, 0x00, 0x99, 0x01, 0xeb, 0x0a, 0x00, + 0x1a, 0xf8, 0x01, 0x1f, 0x20, 0x29, 0x2e, 0xd9, 0x2f, 0x29, 0x01, 0xd0, + 0x5c, 0x29, 0x0f, 0xd1, 0x2b, 0x5c, 0x2f, 0x2b, 0x01, 0xd0, 0x5c, 0x2b, + 0x25, 0xd1, 0x01, 0x30, 0xf8, 0xe7, 0x80, 0x23, 0x20, 0x46, 0x84, 0xf8, + 0x2b, 0x30, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x4f, 0xf7, 0xf7, 0x08, 0xba, + 0x2e, 0x29, 0x76, 0xd0, 0xb0, 0x45, 0x72, 0xd9, 0x08, 0x06, 0x18, 0x46, + 0x44, 0xbf, 0x01, 0xf0, 0x7f, 0x01, 0x51, 0x5c, 0x01, 0x91, 0x11, 0xf0, + 0x15, 0xfe, 0x00, 0x28, 0x67, 0xd1, 0x01, 0x99, 0x38, 0x4b, 0xa1, 0xf1, + 0x61, 0x00, 0x36, 0x4a, 0x19, 0x28, 0x9c, 0xbf, 0x20, 0x39, 0xc9, 0xb2, + 0xb9, 0x55, 0x01, 0x36, 0xc9, 0xe7, 0x05, 0x44, 0x00, 0x2e, 0x58, 0xd0, + 0x94, 0xf8, 0x20, 0x30, 0xe5, 0x2b, 0x04, 0xbf, 0x05, 0x23, 0x84, 0xf8, + 0x20, 0x30, 0x20, 0x29, 0x28, 0xd9, 0x2b, 0x78, 0x21, 0x2b, 0x34, 0xbf, + 0x04, 0x23, 0x00, 0x23, 0x20, 0x46, 0x84, 0xf8, 0x2b, 0x30, 0xd4, 0xf8, + 0x00, 0x80, 0xf7, 0xf7, 0xd5, 0xf9, 0x06, 0x46, 0xe8, 0xb9, 0xa1, 0x69, + 0x40, 0x46, 0xff, 0xf7, 0x62, 0xf8, 0x06, 0x46, 0xb8, 0xb9, 0xe0, 0x69, + 0x03, 0x78, 0x9b, 0xb1, 0xc3, 0x7a, 0x03, 0xf0, 0x3f, 0x03, 0xa3, 0x71, + 0xc6, 0x7a, 0x16, 0xf0, 0x08, 0x06, 0x04, 0xd1, 0x0b, 0x22, 0x39, 0x46, + 0x11, 0xf0, 0x0c, 0xfd, 0x38, 0xb1, 0x00, 0x21, 0x20, 0x46, 0xff, 0xf7, + 0x75, 0xfe, 0xe2, 0xe7, 0x04, 0x23, 0xd9, 0xe7, 0x04, 0x26, 0x94, 0xf8, + 0x2b, 0x30, 0x4e, 0xb1, 0x04, 0x2e, 0x03, 0xd1, 0x13, 0xf0, 0x04, 0x0f, + 0x08, 0xbf, 0x05, 0x26, 0x30, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, + 0x5a, 0x07, 0xf9, 0xd4, 0xa3, 0x79, 0xdb, 0x06, 0x0f, 0xd5, 0xb9, 0xf8, + 0x0c, 0x10, 0x22, 0x69, 0x99, 0xf8, 0x00, 0x00, 0xb2, 0xfb, 0xf1, 0xf3, + 0x01, 0xfb, 0x13, 0x23, 0xd9, 0xf8, 0x34, 0x10, 0x19, 0x44, 0xfc, 0xf7, + 0x13, 0xfe, 0xa0, 0x60, 0x5f, 0xe7, 0x05, 0x26, 0xe4, 0xe7, 0x06, 0x26, + 0xe2, 0xe7, 0xb8, 0xf1, 0x0b, 0x0f, 0xfa, 0xd0, 0x08, 0x26, 0x4f, 0xf0, + 0x0b, 0x08, 0x64, 0xe7, 0xd5, 0xd9, 0x01, 0x08, 0xa1, 0xd9, 0x01, 0x08, + 0x2d, 0xe9, 0xf7, 0x4f, 0x0c, 0x46, 0x80, 0x46, 0x11, 0x46, 0x05, 0x68, + 0x01, 0x2c, 0x5a, 0xd9, 0xab, 0x69, 0xa3, 0x42, 0x57, 0xd9, 0x62, 0xb9, + 0x27, 0x46, 0xdf, 0xf8, 0xb4, 0x90, 0x21, 0x46, 0xd8, 0xf8, 0x00, 0x00, + 0x26, 0x46, 0xff, 0xf7, 0x1a, 0xf8, 0x04, 0x46, 0x58, 0xb9, 0x00, 0x20, + 0x06, 0xe0, 0x4f, 0xf0, 0xff, 0x32, 0x28, 0x46, 0xff, 0xf7, 0x76, 0xfc, + 0x00, 0x28, 0xeb, 0xd0, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x28, + 0x3d, 0xd0, 0x43, 0x1c, 0x3d, 0xd0, 0x00, 0x22, 0x31, 0x46, 0x28, 0x46, + 0xff, 0xf7, 0x68, 0xfc, 0x00, 0x28, 0xf1, 0xd1, 0xd5, 0xe9, 0x05, 0x32, + 0x02, 0x3a, 0x93, 0x42, 0x05, 0xd2, 0x01, 0x33, 0x6b, 0x61, 0x2b, 0x79, + 0x43, 0xf0, 0x01, 0x03, 0x2b, 0x71, 0x73, 0x1c, 0xa3, 0x42, 0x22, 0xd0, + 0x95, 0xf8, 0x01, 0xb0, 0x59, 0xf8, 0x2b, 0x30, 0xe3, 0xb1, 0x39, 0x46, + 0x28, 0x46, 0xfe, 0xf7, 0xc7, 0xff, 0x31, 0x46, 0x82, 0x46, 0x28, 0x46, + 0xfe, 0xf7, 0xc2, 0xff, 0x6f, 0x89, 0x06, 0x46, 0x58, 0x46, 0xfc, 0xf7, + 0x53, 0xfd, 0x02, 0x46, 0x3e, 0x44, 0x59, 0xf8, 0x2b, 0x00, 0xa6, 0xeb, + 0x0a, 0x06, 0x03, 0x68, 0xa6, 0xfb, 0x02, 0x67, 0xcd, 0xe9, 0x00, 0x67, + 0x19, 0x6a, 0xa2, 0xfb, 0x0a, 0x23, 0x88, 0x47, 0x27, 0x46, 0xab, 0x69, + 0xa3, 0x42, 0xac, 0xd8, 0xb3, 0xe7, 0x02, 0x20, 0xba, 0xe7, 0x01, 0x20, + 0xb8, 0xe7, 0x00, 0xbf, 0xa8, 0x15, 0x02, 0x24, 0x2d, 0xe9, 0xff, 0x41, + 0x03, 0x68, 0x0c, 0x46, 0x01, 0x92, 0x06, 0x46, 0x9b, 0x6f, 0x98, 0x47, + 0x01, 0x99, 0x20, 0x46, 0x67, 0x69, 0xff, 0xf7, 0x1e, 0xfd, 0x05, 0x46, + 0x48, 0xb1, 0x33, 0x68, 0x30, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x28, 0x46, + 0x04, 0xb0, 0xbd, 0xe8, 0xf0, 0x41, 0xfc, 0xf7, 0x77, 0xbd, 0x03, 0xa9, + 0x20, 0x46, 0xfc, 0xf7, 0x8a, 0xfd, 0x05, 0x46, 0x00, 0x28, 0xee, 0xd1, + 0x65, 0x7c, 0x00, 0x2d, 0xeb, 0xd1, 0x23, 0x7c, 0x9a, 0x07, 0x01, 0xd4, + 0x07, 0x25, 0xe6, 0xe7, 0xd4, 0xf8, 0x14, 0x80, 0xe3, 0x68, 0x98, 0x45, + 0x08, 0xd3, 0x20, 0x46, 0x39, 0x46, 0xff, 0xf7, 0xfa, 0xfc, 0x04, 0x46, + 0x70, 0xbb, 0x04, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0xb8, 0xf1, 0x00, 0x0f, + 0x11, 0xd1, 0x2a, 0x46, 0xa1, 0x68, 0x20, 0x46, 0xff, 0xf7, 0x58, 0xff, + 0x05, 0x46, 0xc4, 0xf8, 0x08, 0x80, 0x63, 0x69, 0xe3, 0x60, 0x23, 0x7c, + 0x43, 0xf0, 0x40, 0x03, 0x23, 0x74, 0x00, 0x2d, 0xe3, 0xd0, 0x65, 0x74, + 0xc3, 0xe7, 0xa1, 0x69, 0x20, 0x68, 0xfe, 0xf7, 0x76, 0xff, 0x43, 0x1c, + 0x01, 0x46, 0x0b, 0xd0, 0x01, 0x28, 0x0b, 0xd0, 0x03, 0x9b, 0x9b, 0x69, + 0x98, 0x42, 0xe8, 0xd2, 0xa2, 0x69, 0x20, 0x46, 0xff, 0xf7, 0x3a, 0xff, + 0x05, 0x46, 0xe2, 0xe7, 0x01, 0x25, 0xe0, 0xe7, 0x02, 0x25, 0xde, 0xe7, + 0x33, 0x68, 0x30, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x20, 0x46, 0xab, 0xe7, + 0xf0, 0xb5, 0x1f, 0x46, 0x09, 0x4b, 0x16, 0x46, 0xdd, 0xe9, 0x05, 0x45, + 0xc0, 0xe9, 0x00, 0x31, 0x00, 0x23, 0x03, 0x76, 0x03, 0x72, 0x54, 0xea, + 0x05, 0x03, 0x08, 0xbf, 0x01, 0x23, 0xc0, 0xe9, 0x04, 0x67, 0xc0, 0xe9, + 0x08, 0x45, 0x08, 0xbf, 0x03, 0x76, 0xf0, 0xbd, 0xa0, 0xda, 0x01, 0x08, + 0x70, 0x47, 0x00, 0x00, 0x03, 0x4b, 0x10, 0xb5, 0x04, 0x46, 0x03, 0x60, + 0xfd, 0xf7, 0xe0, 0xfa, 0x20, 0x46, 0x10, 0xbd, 0xbc, 0xd6, 0x01, 0x08, + 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xf2, 0xff, 0x20, 0x46, 0x10, 0xf0, + 0x15, 0xf8, 0x20, 0x46, 0x10, 0xbd, 0x00, 0x00, 0x08, 0xb5, 0x03, 0x6a, + 0x01, 0x3b, 0x03, 0x62, 0x00, 0x68, 0x0c, 0xf0, 0x79, 0xf9, 0x01, 0x46, + 0x30, 0xb1, 0x04, 0x4b, 0x1b, 0x78, 0xdb, 0xb2, 0x13, 0xb9, 0x03, 0x48, + 0xf6, 0xf7, 0x0a, 0xfe, 0x08, 0xbd, 0x00, 0xbf, 0x78, 0x0b, 0x02, 0x24, + 0x17, 0x01, 0x02, 0x80, 0x08, 0xb5, 0x03, 0x48, 0x04, 0xf0, 0x56, 0xf9, + 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0xe2, 0xbf, 0x80, 0x15, 0x02, 0x24, + 0x10, 0xb5, 0x04, 0x46, 0x00, 0x68, 0xfc, 0xf7, 0x95, 0xfa, 0x01, 0x46, + 0x18, 0xb9, 0x23, 0x6a, 0x01, 0x33, 0x23, 0x62, 0x10, 0xbd, 0x04, 0x4b, + 0x1b, 0x78, 0xdb, 0xb2, 0x00, 0x2b, 0xf9, 0xd1, 0x02, 0x48, 0xf6, 0xf7, + 0xe7, 0xfd, 0x00, 0xbf, 0x78, 0x0b, 0x02, 0x24, 0x15, 0x01, 0x02, 0x80, + 0x70, 0xb5, 0x00, 0xf1, 0xa4, 0x06, 0x0c, 0x46, 0x05, 0x46, 0x30, 0x46, + 0xff, 0xf7, 0xe0, 0xff, 0x04, 0xf1, 0x10, 0x02, 0x21, 0x46, 0x05, 0xf1, + 0x14, 0x00, 0xfd, 0xf7, 0xdf, 0xfe, 0x38, 0xb9, 0x23, 0x69, 0x63, 0x60, + 0x63, 0x69, 0xa3, 0x60, 0x0e, 0x23, 0xa3, 0x61, 0x10, 0x23, 0xe3, 0x60, + 0x30, 0x46, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0xab, 0xbf, 0x13, 0xb5, + 0x0c, 0x46, 0xa4, 0x30, 0x01, 0x90, 0xff, 0xf7, 0xc5, 0xff, 0xa4, 0x69, + 0x01, 0x98, 0xff, 0xf7, 0xa1, 0xff, 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, + 0x10, 0x40, 0xfc, 0xf7, 0xa2, 0xbb, 0x2d, 0xe9, 0xf0, 0x41, 0x06, 0x46, + 0x00, 0xf1, 0xa4, 0x07, 0x0c, 0x46, 0x15, 0x46, 0x14, 0x36, 0x38, 0x46, + 0xff, 0xf7, 0xb0, 0xff, 0x04, 0xf1, 0x10, 0x02, 0x21, 0x46, 0x30, 0x46, + 0xfd, 0xf7, 0xb0, 0xfe, 0xd0, 0xb9, 0x23, 0x69, 0x04, 0xf1, 0x24, 0x08, + 0xa5, 0x61, 0x63, 0x60, 0x63, 0x69, 0xa3, 0x60, 0x10, 0x23, 0xe3, 0x60, + 0x21, 0x6a, 0x21, 0xf0, 0x00, 0x43, 0x9d, 0x42, 0x01, 0xd8, 0xe5, 0x60, + 0x0a, 0xe0, 0x00, 0x29, 0xa5, 0xeb, 0x03, 0x05, 0x06, 0xda, 0x42, 0x46, + 0x21, 0x46, 0x30, 0x46, 0xfd, 0xf7, 0x96, 0xfe, 0x00, 0x28, 0xed, 0xd0, + 0x38, 0x46, 0xbd, 0xe8, 0xf0, 0x41, 0xff, 0xf7, 0x69, 0xbf, 0x00, 0x00, + 0x2d, 0xe9, 0xf0, 0x41, 0x00, 0xf1, 0xa4, 0x08, 0xc8, 0xb0, 0x0e, 0x46, + 0x05, 0x46, 0x40, 0x46, 0x17, 0x46, 0xff, 0xf7, 0x7d, 0xff, 0x4f, 0xf4, + 0x84, 0x72, 0x00, 0x21, 0x06, 0xa8, 0x0f, 0xf0, 0xcf, 0xff, 0xb3, 0x69, + 0x14, 0x35, 0x0e, 0x2b, 0x22, 0xd1, 0x22, 0x23, 0x36, 0x49, 0x08, 0xa8, + 0x8d, 0xf8, 0x18, 0x30, 0x10, 0xf0, 0xb0, 0xfd, 0x0f, 0x23, 0x01, 0x24, + 0xb3, 0x61, 0x40, 0x46, 0xff, 0xf7, 0x46, 0xff, 0x01, 0x2c, 0x0d, 0xd1, + 0x9d, 0xf8, 0x18, 0x30, 0x11, 0x2b, 0x59, 0xd0, 0x22, 0x2b, 0x14, 0xbf, + 0x00, 0x23, 0x03, 0x23, 0x08, 0xa9, 0x38, 0x46, 0x87, 0xf8, 0x00, 0x31, + 0x10, 0xf0, 0x9a, 0xfd, 0x20, 0x46, 0x48, 0xb0, 0xbd, 0xe8, 0xf0, 0x41, + 0xfc, 0xf7, 0x37, 0xbb, 0x0f, 0x2b, 0x08, 0xd1, 0x22, 0x23, 0x25, 0x49, + 0x08, 0xa8, 0x8d, 0xf8, 0x18, 0x30, 0x10, 0xf0, 0x8b, 0xfd, 0x10, 0x23, + 0xd9, 0xe7, 0x02, 0xaa, 0x31, 0x46, 0x28, 0x46, 0xfe, 0xf7, 0x86, 0xfa, + 0x04, 0x46, 0x18, 0xb1, 0x82, 0x1c, 0x08, 0xbf, 0x00, 0x24, 0xd0, 0xe7, + 0x9d, 0xf8, 0x0c, 0x30, 0x03, 0xf0, 0x7f, 0x02, 0x11, 0x2a, 0x01, 0xd0, + 0x22, 0x2a, 0xec, 0xd1, 0x1b, 0x06, 0x0c, 0xd5, 0x04, 0xa9, 0x28, 0x46, + 0xfe, 0xf7, 0xe2, 0xfa, 0x04, 0x1e, 0xc0, 0xdb, 0xe3, 0xd1, 0x9d, 0xf8, + 0x0c, 0x30, 0x03, 0xf0, 0x7f, 0x03, 0x8d, 0xf8, 0x0c, 0x30, 0x9d, 0xf8, + 0x0c, 0x30, 0x28, 0x46, 0x02, 0x9a, 0x11, 0x2b, 0x8d, 0xf8, 0x18, 0x30, + 0x02, 0xf1, 0x04, 0x02, 0x9d, 0xf8, 0x0e, 0x10, 0x04, 0xbf, 0x05, 0x9b, + 0x07, 0x93, 0x9d, 0xf8, 0x0d, 0x30, 0x1a, 0x44, 0x9d, 0xf8, 0x0f, 0x30, + 0x0a, 0x44, 0x00, 0x93, 0x71, 0x68, 0x08, 0xab, 0xfd, 0xf7, 0x03, 0xfe, + 0x04, 0x1e, 0x08, 0xbf, 0x01, 0x24, 0x9c, 0xe7, 0x05, 0x23, 0xa7, 0xe7, + 0x96, 0xd9, 0x01, 0x08, 0x95, 0xd9, 0x01, 0x08, 0x37, 0xb5, 0x05, 0x46, + 0xa4, 0x30, 0x0c, 0x46, 0x01, 0x90, 0xff, 0xf7, 0xf9, 0xfe, 0x05, 0xf1, + 0x24, 0x02, 0x6b, 0x6a, 0x01, 0x98, 0x1b, 0xb1, 0x9c, 0x42, 0x0d, 0xd1, + 0x23, 0x68, 0x13, 0x60, 0xff, 0xf7, 0xce, 0xfe, 0x14, 0xb1, 0x20, 0x46, + 0x0f, 0xf0, 0xdc, 0xfe, 0x00, 0x20, 0x03, 0xb0, 0xbd, 0xe8, 0x30, 0x40, + 0xfc, 0xf7, 0xcb, 0xba, 0x1a, 0x46, 0x1b, 0x68, 0xeb, 0xe7, 0x2d, 0xe9, + 0xf0, 0x47, 0x00, 0xf1, 0xa4, 0x06, 0x0d, 0x46, 0x81, 0x46, 0x86, 0xb0, + 0x30, 0x46, 0x90, 0x46, 0xff, 0xf7, 0xd6, 0xfe, 0xea, 0x69, 0x09, 0xf1, + 0x14, 0x09, 0x02, 0xf0, 0x03, 0x03, 0x01, 0x2b, 0x5a, 0xd0, 0x92, 0x03, + 0x6b, 0x69, 0x03, 0xd5, 0x2a, 0x6a, 0x93, 0x42, 0x38, 0xbf, 0x13, 0x46, + 0x98, 0x45, 0x24, 0xd2, 0x29, 0x46, 0x48, 0x46, 0xfd, 0xf7, 0xa2, 0xff, + 0x04, 0x46, 0xa8, 0xb9, 0x05, 0xab, 0x05, 0x90, 0x05, 0xf1, 0x2c, 0x01, + 0x48, 0x46, 0x02, 0x93, 0x05, 0xf1, 0x10, 0x03, 0xcd, 0xe9, 0x00, 0x83, + 0xd5, 0xe9, 0x04, 0x23, 0xf6, 0xf7, 0x9d, 0xff, 0x04, 0x46, 0x28, 0xb9, + 0xeb, 0x69, 0xc5, 0xf8, 0x14, 0x80, 0x43, 0xf4, 0x80, 0x33, 0xeb, 0x61, + 0x30, 0x46, 0xff, 0xf7, 0x87, 0xfe, 0x20, 0x46, 0x06, 0xb0, 0xbd, 0xe8, + 0xf0, 0x47, 0xfc, 0xf7, 0x88, 0xba, 0x2e, 0xd9, 0x2f, 0x6a, 0xbb, 0x42, + 0x09, 0xd0, 0x29, 0x46, 0x48, 0x46, 0xfd, 0xf7, 0x79, 0xff, 0x04, 0x1e, + 0x15, 0xd1, 0x6b, 0x69, 0x00, 0x2b, 0x24, 0xdb, 0x2b, 0x62, 0x4f, 0xf0, + 0x00, 0x0a, 0x2b, 0x6a, 0x98, 0x45, 0x0e, 0xd8, 0x29, 0x46, 0x48, 0x46, + 0xfd, 0xf7, 0x6a, 0xff, 0x20, 0xb9, 0x38, 0x1e, 0xb4, 0xbf, 0x6f, 0xf0, + 0x15, 0x00, 0x28, 0x62, 0x00, 0xea, 0xe0, 0x74, 0xd6, 0xe7, 0xd5, 0xdb, + 0xeb, 0xe7, 0x01, 0x23, 0x05, 0xaa, 0x29, 0x46, 0x48, 0x46, 0x8d, 0xf8, + 0x14, 0xa0, 0xfd, 0xf7, 0xc1, 0xff, 0x04, 0x1e, 0xe3, 0xda, 0xc9, 0xe7, + 0x6f, 0xf0, 0x08, 0x04, 0xc6, 0xe7, 0x00, 0x24, 0xc4, 0xe7, 0x6f, 0xf0, + 0x15, 0x04, 0xc1, 0xe7, 0x37, 0xb5, 0x0d, 0x46, 0xa4, 0x30, 0x01, 0x90, + 0xff, 0xf7, 0x66, 0xfe, 0xeb, 0x69, 0x6c, 0x69, 0x13, 0xf4, 0x00, 0x3f, + 0x01, 0x98, 0x03, 0xd0, 0x2b, 0x6a, 0x9c, 0x42, 0x38, 0xbf, 0x1c, 0x46, + 0xff, 0xf7, 0x3a, 0xfe, 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0x30, 0x40, + 0xfc, 0xf7, 0x3b, 0xba, 0x13, 0xb5, 0x0c, 0x46, 0xa4, 0x30, 0x01, 0x90, + 0xff, 0xf7, 0x4e, 0xfe, 0x24, 0x6a, 0x01, 0x98, 0xff, 0xf7, 0x2a, 0xfe, + 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0x10, 0x40, 0xfc, 0xf7, 0x2b, 0xba, + 0x2d, 0xe9, 0xf0, 0x41, 0x00, 0xf1, 0xa4, 0x08, 0x05, 0x46, 0x0e, 0x46, + 0x14, 0x46, 0x40, 0x46, 0x1f, 0x46, 0xff, 0xf7, 0x39, 0xfe, 0x05, 0xf1, + 0x14, 0x00, 0x31, 0x46, 0xfd, 0xf7, 0x14, 0xff, 0x05, 0x46, 0x70, 0xb9, + 0x3f, 0xb1, 0x01, 0x2f, 0x33, 0x6a, 0x01, 0xd1, 0x1c, 0x44, 0x02, 0xe0, + 0x02, 0x2f, 0x0e, 0xd0, 0x1c, 0x46, 0x00, 0x2c, 0xaa, 0xbf, 0x25, 0x46, + 0x6f, 0xf0, 0x15, 0x05, 0x34, 0x62, 0x40, 0x46, 0xff, 0xf7, 0x00, 0xfe, + 0x28, 0x46, 0xbd, 0xe8, 0xf0, 0x41, 0xfc, 0xf7, 0x02, 0xba, 0x73, 0x69, + 0xea, 0xe7, 0x37, 0xb5, 0x00, 0xf1, 0xa4, 0x05, 0x04, 0x46, 0x01, 0x91, + 0x28, 0x46, 0xff, 0xf7, 0x11, 0xfe, 0x01, 0x99, 0x04, 0xf1, 0x14, 0x00, + 0xfe, 0xf7, 0xed, 0xf8, 0x04, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xe8, 0xfd, + 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0x30, 0x40, 0xfc, 0xf7, 0xe9, 0xb9, 0x30, 0xb5, 0x00, 0xf1, 0xa4, 0x05, 0x85, 0xb0, 0x04, 0x46, 0x28, 0x46, - 0x01, 0x93, 0xcd, 0xe9, 0x02, 0x21, 0xff, 0xf7, 0xdb, 0xfd, 0x03, 0x99, - 0x04, 0xf1, 0x14, 0x00, 0xdd, 0xe9, 0x01, 0x32, 0xfd, 0xf7, 0x9b, 0xff, - 0x04, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xb0, 0xfd, 0x20, 0x46, 0x05, 0xb0, - 0xbd, 0xe8, 0x30, 0x40, 0xfc, 0xf7, 0x1f, 0xb9, 0xf8, 0xb5, 0x00, 0xf1, - 0xa4, 0x07, 0x05, 0x46, 0x0c, 0x46, 0x38, 0x46, 0xff, 0xf7, 0xc2, 0xfd, - 0x21, 0x46, 0x05, 0xf1, 0x14, 0x00, 0xfe, 0xf7, 0x25, 0xfb, 0x05, 0xf1, - 0x20, 0x02, 0x06, 0x46, 0x2b, 0x6a, 0x1b, 0xb1, 0x9c, 0x42, 0x16, 0xd1, - 0x23, 0x68, 0x13, 0x60, 0xa3, 0x69, 0x0b, 0xb1, 0x1b, 0x68, 0x2b, 0xb9, - 0x6b, 0x69, 0x5b, 0x6b, 0x13, 0xb9, 0x60, 0x6b, 0x0f, 0xf0, 0x1e, 0xfa, - 0x38, 0x46, 0xff, 0xf7, 0x87, 0xfd, 0x20, 0x46, 0x0f, 0xf0, 0x18, 0xfa, - 0x30, 0x46, 0xbd, 0xe8, 0xf8, 0x40, 0xfc, 0xf7, 0xf4, 0xb8, 0x1a, 0x46, - 0x1b, 0x68, 0xe2, 0xe7, 0x2d, 0xe9, 0xf3, 0x41, 0x06, 0x46, 0x14, 0x46, - 0x00, 0x21, 0x28, 0x22, 0x06, 0xf1, 0xa4, 0x07, 0x20, 0x46, 0x00, 0x25, - 0x0f, 0xf0, 0x6c, 0xfa, 0x38, 0x46, 0x06, 0xf1, 0x14, 0x08, 0x01, 0x95, - 0xff, 0xf7, 0x8a, 0xfd, 0x06, 0xf1, 0x18, 0x00, 0xfc, 0xf7, 0x20, 0xf9, - 0x28, 0xb9, 0x01, 0xaa, 0x0d, 0x49, 0x40, 0x46, 0xfd, 0xf7, 0x68, 0xfc, - 0x05, 0x46, 0x38, 0x46, 0xff, 0xf7, 0x5c, 0xfd, 0x6d, 0xb9, 0x73, 0x6f, - 0x01, 0x9a, 0xc4, 0xe9, 0x00, 0x33, 0xb3, 0x6f, 0xc4, 0xe9, 0x02, 0x35, - 0x9b, 0x1a, 0xc4, 0xe9, 0x04, 0x35, 0xc4, 0xe9, 0x06, 0x35, 0xff, 0x23, - 0x63, 0x62, 0x28, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0xbf, - 0x69, 0x80, 0x00, 0x08, 0x2d, 0xe9, 0xf0, 0x41, 0x80, 0x46, 0x00, 0xf1, - 0xa4, 0x06, 0xd4, 0xb0, 0x0c, 0x46, 0x08, 0xf1, 0x14, 0x07, 0x30, 0x46, - 0x15, 0x46, 0xff, 0xf7, 0x59, 0xfd, 0x02, 0xab, 0x03, 0xaa, 0x07, 0xa9, - 0x38, 0x46, 0x02, 0x94, 0xfe, 0xf7, 0xf4, 0xfa, 0x04, 0x46, 0xc0, 0xb9, - 0x01, 0x46, 0x4f, 0xf4, 0x84, 0x72, 0x12, 0xa8, 0x0f, 0xf0, 0x26, 0xfa, - 0x9d, 0xf8, 0x10, 0x30, 0x08, 0xf1, 0x18, 0x01, 0x05, 0xa8, 0x11, 0x2b, - 0x8d, 0xf8, 0x48, 0x30, 0x04, 0xbf, 0x06, 0x9b, 0x13, 0x93, 0xfc, 0xf7, - 0xc6, 0xf8, 0x04, 0x46, 0xc0, 0xb9, 0x17, 0x49, 0x14, 0xa8, 0x0f, 0xf0, - 0xff, 0xff, 0x30, 0x46, 0xff, 0xf7, 0x14, 0xfd, 0x13, 0x9b, 0x2b, 0x61, - 0x9d, 0xf8, 0x48, 0x30, 0x11, 0x2b, 0x1d, 0xd0, 0x22, 0x2b, 0x44, 0xf2, - 0xff, 0x13, 0x18, 0xbf, 0x00, 0x23, 0x20, 0x46, 0x6b, 0x60, 0x54, 0xb0, - 0xbd, 0xe8, 0xf0, 0x41, 0xfc, 0xf7, 0x77, 0xb8, 0x03, 0x9b, 0x38, 0x46, - 0x9d, 0xf8, 0x11, 0x10, 0x04, 0x33, 0x9d, 0xf8, 0x12, 0x20, 0x19, 0x44, - 0x9d, 0xf8, 0x13, 0x30, 0x0a, 0x44, 0x00, 0x93, 0x08, 0x99, 0x14, 0xab, - 0xfd, 0xf7, 0x87, 0xfb, 0x04, 0x46, 0xd8, 0xe7, 0x48, 0xf2, 0xff, 0x13, - 0xe3, 0xe7, 0x00, 0xbf, 0x53, 0xdf, 0x01, 0x08, 0xf0, 0xb5, 0x00, 0xf1, - 0xa4, 0x06, 0x05, 0x46, 0x9f, 0xb0, 0x0c, 0x46, 0x30, 0x46, 0x05, 0xf1, - 0x14, 0x07, 0xff, 0xf7, 0xff, 0xfc, 0x95, 0xf8, 0x54, 0x30, 0x03, 0x94, - 0x00, 0x2b, 0x43, 0xd0, 0x03, 0xab, 0x04, 0xaa, 0x08, 0xa9, 0x38, 0x46, - 0xfe, 0xf7, 0x96, 0xfa, 0x83, 0x1c, 0x04, 0x46, 0x49, 0xd1, 0x2f, 0x21, - 0x03, 0x98, 0x10, 0xf0, 0xef, 0xfd, 0x00, 0x28, 0x3a, 0xd1, 0x6b, 0x69, - 0x13, 0xa9, 0x38, 0x46, 0x1b, 0x6a, 0xeb, 0x64, 0xfe, 0xf7, 0x36, 0xfb, - 0x04, 0x46, 0x00, 0x28, 0x30, 0xd1, 0x11, 0x9b, 0x02, 0x46, 0x13, 0xa9, - 0x1c, 0x93, 0x12, 0x9b, 0x1d, 0x93, 0x03, 0x46, 0x38, 0x46, 0xfe, 0xf7, - 0x66, 0xf8, 0x04, 0x46, 0x20, 0xbb, 0x40, 0xf6, 0x22, 0x03, 0x8d, 0xf8, - 0x16, 0x00, 0xad, 0xf8, 0x14, 0x30, 0x03, 0x9b, 0x18, 0x46, 0x01, 0x93, - 0x0f, 0xf0, 0x9a, 0xff, 0x14, 0x99, 0x15, 0x9a, 0x8d, 0xf8, 0x17, 0x00, - 0x38, 0x46, 0x06, 0x91, 0x07, 0x92, 0x01, 0x9b, 0xcd, 0xe9, 0x11, 0x12, - 0x04, 0xaa, 0x08, 0xa9, 0xfe, 0xf7, 0x3a, 0xfb, 0x04, 0x46, 0x48, 0xb9, - 0x6b, 0x69, 0x1b, 0x6a, 0xeb, 0x64, 0x05, 0xe0, 0x38, 0x46, 0xfd, 0xf7, - 0xb1, 0xff, 0x04, 0x46, 0x00, 0x28, 0xb5, 0xd0, 0x30, 0x46, 0xff, 0xf7, - 0x8d, 0xfc, 0x20, 0x46, 0x1f, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0xfb, 0xf7, - 0xfc, 0xbf, 0x00, 0x28, 0x08, 0xbf, 0x6f, 0xf0, 0x10, 0x04, 0xf1, 0xe7, - 0x2d, 0xe9, 0xf0, 0x43, 0x00, 0xf1, 0xa4, 0x05, 0x80, 0x46, 0xb3, 0xb0, - 0x0f, 0x46, 0x28, 0x46, 0x14, 0x46, 0xff, 0xf7, 0x97, 0xfc, 0x98, 0xf8, - 0x54, 0x30, 0x08, 0xf1, 0x14, 0x06, 0xcd, 0xe9, 0x02, 0x74, 0x00, 0x2b, - 0x4d, 0xd0, 0x02, 0x9b, 0x05, 0xaa, 0x11, 0xa9, 0x30, 0x46, 0x04, 0x93, - 0x04, 0xab, 0xfe, 0xf7, 0x29, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x48, 0xd1, - 0x9d, 0xf8, 0x18, 0x30, 0x05, 0xaa, 0x11, 0xa9, 0x63, 0xf0, 0x7f, 0x03, - 0x8d, 0xf8, 0x18, 0x30, 0x03, 0x46, 0x30, 0x46, 0xfe, 0xf7, 0xc7, 0xf9, - 0x04, 0x46, 0x00, 0x28, 0x39, 0xd1, 0x0d, 0xf1, 0x24, 0x09, 0x03, 0xab, - 0x1c, 0xa9, 0x30, 0x46, 0x4a, 0x46, 0xfe, 0xf7, 0x0f, 0xfa, 0x07, 0x46, - 0x00, 0x28, 0x37, 0xd0, 0x82, 0x1c, 0x40, 0xf0, 0x85, 0x80, 0x2f, 0x21, - 0x03, 0x98, 0x10, 0xf0, 0x65, 0xfd, 0x00, 0x28, 0x7e, 0xd1, 0x0d, 0xac, - 0x99, 0xe8, 0x0f, 0x00, 0x84, 0xe8, 0x0f, 0x00, 0x06, 0xaa, 0x0e, 0xab, - 0x07, 0xca, 0x83, 0xe8, 0x07, 0x00, 0x9d, 0xf8, 0x38, 0x30, 0x03, 0xf0, - 0x7f, 0x03, 0x8d, 0xf8, 0x38, 0x30, 0x03, 0x9b, 0x18, 0x46, 0x01, 0x93, - 0x0f, 0xf0, 0x1c, 0xff, 0xbb, 0x1c, 0x8d, 0xf8, 0x3b, 0x00, 0x01, 0x9b, - 0x2c, 0xd1, 0x22, 0x46, 0x1c, 0xa9, 0x30, 0x46, 0xfe, 0xf7, 0xc0, 0xfa, - 0x2b, 0xe0, 0x30, 0x46, 0xfd, 0xf7, 0x3c, 0xff, 0x04, 0x46, 0x00, 0x28, - 0xab, 0xd0, 0x28, 0x46, 0xff, 0xf7, 0x18, 0xfc, 0x20, 0x46, 0x33, 0xb0, - 0xbd, 0xe8, 0xf0, 0x43, 0xfb, 0xf7, 0x87, 0xbf, 0x9d, 0xf8, 0x18, 0x30, - 0x9d, 0xf8, 0x28, 0x20, 0x03, 0xf0, 0x7f, 0x03, 0x9a, 0x42, 0x49, 0xd1, - 0x22, 0x2a, 0xc6, 0xd1, 0x0b, 0xaa, 0x27, 0xa9, 0x30, 0x46, 0xfd, 0xf7, - 0xa5, 0xfa, 0x04, 0x46, 0x00, 0x28, 0xe4, 0xd1, 0x2f, 0x9b, 0x14, 0x2b, - 0xbb, 0xd0, 0x6f, 0xf0, 0x26, 0x04, 0xde, 0xe7, 0x22, 0x46, 0x1c, 0xa9, - 0x30, 0x46, 0xfe, 0xf7, 0x64, 0xf9, 0x04, 0x46, 0x00, 0x28, 0xd6, 0xd1, - 0x01, 0x23, 0x05, 0xaa, 0x11, 0xa9, 0x30, 0x46, 0x88, 0xf8, 0x55, 0x30, - 0x02, 0xab, 0xfe, 0xf7, 0xab, 0xf9, 0x04, 0x46, 0x00, 0x28, 0xca, 0xd1, - 0x88, 0xf8, 0x55, 0x00, 0x81, 0x46, 0x05, 0xaa, 0x11, 0xa9, 0x30, 0x46, - 0xfe, 0xf7, 0xd9, 0xf8, 0x04, 0x46, 0x00, 0x28, 0xbf, 0xd1, 0x02, 0x37, - 0xbd, 0xd0, 0x9d, 0xf8, 0x28, 0x30, 0x22, 0x2b, 0xb9, 0xd1, 0x1c, 0xaa, - 0x28, 0xa9, 0x30, 0x46, 0xfd, 0xf7, 0x1b, 0xfe, 0x04, 0x1e, 0xb2, 0xdb, - 0x30, 0x9b, 0x4a, 0x46, 0x1c, 0xa9, 0x30, 0x46, 0x25, 0x93, 0x31, 0x9b, - 0x26, 0x93, 0x4b, 0x46, 0xfd, 0xf7, 0x73, 0xff, 0x04, 0x46, 0xa6, 0xe7, - 0x3c, 0x46, 0xa4, 0xe7, 0x6f, 0xf0, 0x14, 0x04, 0xa1, 0xe7, 0xf0, 0xb5, - 0x00, 0xf1, 0xa4, 0x05, 0x04, 0x46, 0x9d, 0xb0, 0x0f, 0x46, 0x28, 0x46, - 0x04, 0xf1, 0x14, 0x06, 0xff, 0xf7, 0xd2, 0xfb, 0x94, 0xf8, 0x54, 0x30, - 0x01, 0x97, 0x83, 0xb1, 0x01, 0xab, 0x02, 0xaa, 0x06, 0xa9, 0x30, 0x46, - 0xfe, 0xf7, 0x6a, 0xf9, 0x04, 0x46, 0x78, 0xb1, 0x28, 0x46, 0xff, 0xf7, - 0xa3, 0xfb, 0x20, 0x46, 0x1d, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0xfb, 0xf7, - 0x12, 0xbf, 0x30, 0x46, 0xfd, 0xf7, 0xb8, 0xfe, 0x04, 0x46, 0x00, 0x28, - 0xe8, 0xd0, 0xef, 0xe7, 0x9d, 0xf8, 0x0c, 0x30, 0x22, 0x2b, 0x1e, 0xd0, - 0x02, 0xaa, 0x06, 0xa9, 0x30, 0x46, 0xfe, 0xf7, 0x88, 0xf8, 0x04, 0x46, - 0x00, 0x28, 0xe3, 0xd1, 0x9d, 0xf8, 0x0c, 0x30, 0x22, 0x2b, 0xdf, 0xd1, - 0x06, 0xaa, 0x12, 0xa9, 0x30, 0x46, 0xfd, 0xf7, 0xcc, 0xfd, 0x04, 0x1e, - 0xd8, 0xdb, 0x1a, 0x9b, 0x06, 0xa9, 0x30, 0x46, 0x0f, 0x93, 0x1b, 0x9b, - 0x10, 0x93, 0x00, 0x23, 0x1a, 0x46, 0xfd, 0xf7, 0x24, 0xff, 0x04, 0x46, - 0xcc, 0xe7, 0x04, 0xaa, 0x11, 0xa9, 0x30, 0x46, 0xfd, 0xf7, 0x10, 0xfa, - 0x04, 0x46, 0x00, 0x28, 0xc4, 0xd1, 0x19, 0x9b, 0x14, 0x2b, 0xd5, 0xd0, - 0x6f, 0xf0, 0x26, 0x04, 0xbe, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4f, - 0x00, 0xf1, 0xa4, 0x08, 0x06, 0x46, 0xc3, 0xb0, 0x0d, 0x46, 0x40, 0x46, - 0xff, 0xf7, 0x7a, 0xfb, 0xd6, 0xf8, 0x90, 0x30, 0x63, 0xb1, 0x00, 0x2d, - 0x08, 0xbf, 0x1d, 0x46, 0x33, 0x68, 0x30, 0x46, 0x9b, 0x6a, 0x98, 0x47, - 0x04, 0x46, 0x68, 0xb1, 0x40, 0x46, 0xff, 0xf7, 0x4b, 0xfb, 0x05, 0xe0, - 0x45, 0xb9, 0x6f, 0xf0, 0x12, 0x04, 0x40, 0x46, 0xff, 0xf7, 0x44, 0xfb, - 0x20, 0x46, 0x43, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x2b, 0x68, 0x28, 0x46, - 0x9b, 0x68, 0xd6, 0xe9, 0x25, 0xba, 0xd6, 0xe9, 0x27, 0x97, 0x98, 0x47, - 0x04, 0x46, 0x00, 0x28, 0xe6, 0xd1, 0x24, 0x22, 0x01, 0x46, 0x28, 0xa8, - 0x0f, 0xf0, 0x2c, 0xf8, 0x6a, 0x4b, 0x28, 0x46, 0x23, 0x95, 0x24, 0x93, - 0x69, 0x4b, 0x25, 0x93, 0x69, 0x4b, 0x26, 0x93, 0x69, 0x4b, 0x27, 0x93, - 0x2b, 0x68, 0x5b, 0x6a, 0x98, 0x47, 0x2b, 0x68, 0x58, 0x45, 0x2c, 0xbf, - 0x28, 0x90, 0xcd, 0xf8, 0xa0, 0xb0, 0x28, 0x46, 0x9b, 0x6a, 0x98, 0x47, - 0x2b, 0x68, 0x50, 0x45, 0x2c, 0xbf, 0x29, 0x90, 0xcd, 0xf8, 0xa4, 0xa0, - 0x28, 0x46, 0xdb, 0x6a, 0x98, 0x47, 0x2b, 0x68, 0x48, 0x45, 0x2c, 0xbf, - 0x2a, 0x90, 0xcd, 0xf8, 0xa8, 0x90, 0x28, 0x46, 0x9b, 0x6b, 0x98, 0x47, - 0x23, 0x46, 0x2a, 0x9a, 0x10, 0xf0, 0xdc, 0xfe, 0x2b, 0x90, 0x1f, 0x30, - 0x23, 0xa9, 0x20, 0xf0, 0x1f, 0x00, 0xb8, 0x42, 0x94, 0xbf, 0x2c, 0x90, - 0x2c, 0x97, 0x31, 0xa8, 0xfc, 0xf7, 0x16, 0xfc, 0x04, 0x46, 0x00, 0x28, - 0x40, 0xf0, 0x86, 0x80, 0x31, 0x9b, 0x01, 0x46, 0x40, 0x98, 0x5a, 0x6a, - 0xd2, 0x08, 0x0e, 0xf0, 0xe9, 0xff, 0x31, 0x9a, 0x0d, 0xa9, 0x31, 0xa8, - 0x3c, 0x94, 0xd2, 0xe9, 0x08, 0x32, 0xcd, 0xe9, 0x3e, 0x43, 0x9a, 0x42, - 0x94, 0xbf, 0x3d, 0x92, 0x3d, 0x93, 0xfe, 0xf7, 0x51, 0xf9, 0x04, 0x46, - 0x00, 0x28, 0x69, 0xd1, 0x18, 0xa9, 0x31, 0xa8, 0xfe, 0xf7, 0x4a, 0xf9, - 0x04, 0x46, 0x00, 0x28, 0x62, 0xd1, 0x03, 0x46, 0x02, 0x46, 0x18, 0xa9, - 0x31, 0xa8, 0xfd, 0xf7, 0x7e, 0xfe, 0x04, 0x46, 0x00, 0x28, 0x59, 0xd1, - 0x41, 0xf2, 0x2e, 0x43, 0x8d, 0xf8, 0x16, 0x00, 0x1a, 0x9f, 0x4f, 0xf0, - 0x10, 0x09, 0xad, 0xf8, 0x14, 0x30, 0x08, 0x23, 0xdd, 0xf8, 0x64, 0xc0, - 0x8d, 0xf8, 0x17, 0x30, 0x31, 0x9b, 0x33, 0x97, 0xda, 0x69, 0x1b, 0x6a, - 0x08, 0x92, 0x09, 0x93, 0x4f, 0xf0, 0x01, 0x13, 0x31, 0x4a, 0x0a, 0x93, - 0x0b, 0xab, 0x10, 0x68, 0x51, 0x68, 0x6a, 0x46, 0xcd, 0xf8, 0xc8, 0xc0, - 0xcd, 0xf8, 0x10, 0x90, 0xcd, 0xf8, 0x00, 0x90, 0x03, 0xc3, 0x34, 0x23, - 0x0d, 0xa9, 0x31, 0xa8, 0x15, 0x93, 0x20, 0x23, 0xcd, 0xe9, 0x06, 0xc7, - 0xcd, 0xe9, 0x16, 0xc7, 0x05, 0xaf, 0x01, 0x93, 0xcd, 0xe9, 0x02, 0x73, - 0x01, 0x23, 0xfd, 0xf7, 0x48, 0xfe, 0x4b, 0x46, 0x20, 0xb1, 0x10, 0xf1, - 0x34, 0x0f, 0x02, 0xd0, 0x04, 0x46, 0x1f, 0xe0, 0x01, 0x24, 0x00, 0x93, - 0x20, 0x23, 0x6a, 0x46, 0x0d, 0xa9, 0x03, 0x93, 0x31, 0xa8, 0xcd, 0xe9, - 0x01, 0x37, 0x01, 0x23, 0xfd, 0xf7, 0x35, 0xfe, 0x20, 0xb1, 0x10, 0xf1, - 0x34, 0x0f, 0xed, 0xd1, 0x00, 0x2c, 0xeb, 0xd0, 0x00, 0x22, 0x01, 0x23, - 0x0d, 0xa9, 0x31, 0xa8, 0xcd, 0xe9, 0x00, 0x23, 0x6a, 0x46, 0xfd, 0xf7, - 0x19, 0xf9, 0x04, 0x46, 0x10, 0xb9, 0x31, 0x9b, 0x1b, 0x6a, 0x3f, 0x93, - 0x31, 0xa8, 0xfc, 0xf7, 0x2d, 0xfb, 0x6c, 0xb1, 0x20, 0x46, 0xfb, 0xf7, - 0xe0, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x19, 0xaf, 0x33, 0x68, - 0x29, 0x46, 0x30, 0x46, 0x5b, 0x6a, 0x98, 0x47, 0x04, 0x46, 0x11, 0xe7, - 0x2b, 0x68, 0x28, 0x46, 0xdb, 0x68, 0x98, 0x47, 0xef, 0xe7, 0x00, 0xbf, - 0x73, 0x80, 0x00, 0x08, 0x97, 0x80, 0x00, 0x08, 0xbb, 0x80, 0x00, 0x08, - 0xd7, 0x80, 0x00, 0x08, 0x70, 0xdf, 0x01, 0x08, 0x70, 0xb5, 0x00, 0xf1, - 0xa4, 0x06, 0x05, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x69, 0xfa, 0xd5, 0xf8, - 0x90, 0x40, 0x64, 0xb1, 0x05, 0xf1, 0x14, 0x00, 0xfc, 0xf7, 0x00, 0xfb, - 0xd5, 0xf8, 0x90, 0x00, 0x03, 0x68, 0xdb, 0x68, 0x98, 0x47, 0x00, 0x23, - 0x04, 0x46, 0xc5, 0xf8, 0x90, 0x30, 0x30, 0x46, 0xff, 0xf7, 0x36, 0xfa, - 0x20, 0x46, 0x70, 0xbd, 0x0a, 0x4b, 0x10, 0xb5, 0x03, 0x60, 0x80, 0x33, - 0x04, 0x46, 0x43, 0x60, 0xff, 0xf7, 0xdc, 0xff, 0xd4, 0xf8, 0xa4, 0x00, - 0x0b, 0xf0, 0x8a, 0xfd, 0x05, 0x4b, 0x20, 0x46, 0x23, 0x60, 0x2c, 0x33, - 0x40, 0xf8, 0x04, 0x3f, 0x03, 0xf0, 0xc6, 0xff, 0x20, 0x46, 0x10, 0xbd, - 0x9c, 0xdd, 0x01, 0x08, 0x34, 0xdd, 0x01, 0x08, 0xa0, 0xf1, 0x04, 0x00, - 0xff, 0xf7, 0xe2, 0xbf, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xde, 0xff, - 0x20, 0x46, 0x0e, 0xf0, 0xa3, 0xfe, 0x20, 0x46, 0x10, 0xbd, 0xa0, 0xf1, - 0x04, 0x00, 0xff, 0xf7, 0xf3, 0xbf, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x43, - 0x00, 0xf1, 0xa4, 0x07, 0x0d, 0x46, 0x04, 0x46, 0x99, 0xb0, 0x38, 0x46, - 0xff, 0xf7, 0x1e, 0xfa, 0xc4, 0xf8, 0x90, 0x50, 0x2b, 0x68, 0x28, 0x46, - 0x9b, 0x68, 0x98, 0x47, 0x06, 0x46, 0x48, 0xb1, 0x00, 0x23, 0xc4, 0xf8, - 0x90, 0x30, 0x38, 0x46, 0xff, 0xf7, 0xf0, 0xf9, 0x30, 0x46, 0x19, 0xb0, - 0xbd, 0xe8, 0xf0, 0x83, 0x24, 0x22, 0x01, 0x46, 0x04, 0xf1, 0x6c, 0x00, - 0x04, 0xf1, 0x58, 0x09, 0x0e, 0xf0, 0xe0, 0xfe, 0x40, 0x4b, 0xa5, 0x65, - 0x28, 0x46, 0xe3, 0x65, 0x04, 0xf1, 0x14, 0x08, 0x3e, 0x4b, 0x23, 0x66, - 0x3e, 0x4b, 0x63, 0x66, 0x3e, 0x4b, 0xa3, 0x66, 0x2b, 0x68, 0x5b, 0x6a, - 0x98, 0x47, 0xd4, 0xf8, 0x94, 0x30, 0x83, 0x42, 0x2c, 0xbf, 0xe3, 0x66, - 0xe0, 0x66, 0x28, 0x46, 0x2b, 0x68, 0x9b, 0x6a, 0x98, 0x47, 0xd4, 0xf8, - 0x98, 0x30, 0x83, 0x42, 0x2c, 0xbf, 0x23, 0x67, 0x20, 0x67, 0x28, 0x46, - 0x2b, 0x68, 0xdb, 0x6a, 0x98, 0x47, 0xd4, 0xf8, 0x9c, 0x30, 0x83, 0x42, - 0x2c, 0xbf, 0x63, 0x67, 0x60, 0x67, 0x28, 0x46, 0x2b, 0x68, 0x9b, 0x6b, - 0x98, 0x47, 0x62, 0x6f, 0x33, 0x46, 0x10, 0xf0, 0x8b, 0xfd, 0xa0, 0x67, - 0x1f, 0x30, 0xd4, 0xf8, 0xa0, 0x30, 0x49, 0x46, 0x20, 0xf0, 0x1f, 0x00, - 0x83, 0x42, 0x94, 0xbf, 0xe3, 0x67, 0xe0, 0x67, 0x40, 0x46, 0xfc, 0xf7, - 0xc3, 0xfa, 0x05, 0x46, 0x00, 0x28, 0x33, 0xd1, 0x63, 0x69, 0x02, 0xaa, - 0x0d, 0xa9, 0x40, 0x46, 0x1b, 0x6a, 0xa6, 0x64, 0xe3, 0x64, 0x01, 0x23, - 0x02, 0x96, 0x03, 0x93, 0xc4, 0xe9, 0x10, 0x66, 0xfd, 0xf7, 0x36, 0xf8, - 0x05, 0x46, 0x00, 0xbb, 0x20, 0x23, 0x10, 0x22, 0x0e, 0x99, 0x40, 0x46, - 0x00, 0x93, 0x05, 0xab, 0xfd, 0xf7, 0x1f, 0xf8, 0x05, 0x46, 0xb0, 0xb9, - 0x06, 0x9b, 0x08, 0x22, 0x15, 0x49, 0x0b, 0xa8, 0xa3, 0x61, 0x07, 0x9b, - 0xe3, 0x61, 0x10, 0xf0, 0xd5, 0xf9, 0x06, 0x46, 0x48, 0xb9, 0x0a, 0x9b, - 0x1a, 0x0c, 0x01, 0x2a, 0x02, 0xd1, 0x9b, 0xb2, 0x01, 0x2b, 0x82, 0xd9, - 0x6f, 0xf0, 0x15, 0x05, 0x01, 0xe0, 0x6f, 0xf0, 0x33, 0x05, 0x40, 0x46, - 0xfc, 0xf7, 0x2c, 0xfa, 0x00, 0x23, 0x38, 0x46, 0xc4, 0xf8, 0x90, 0x30, - 0xff, 0xf7, 0x68, 0xf9, 0x28, 0x46, 0x19, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, - 0xfb, 0xf7, 0xd7, 0xbc, 0x73, 0x80, 0x00, 0x08, 0x97, 0x80, 0x00, 0x08, - 0xbb, 0x80, 0x00, 0x08, 0xd7, 0x80, 0x00, 0x08, 0x70, 0xdf, 0x01, 0x08, - 0x08, 0xb5, 0x03, 0x48, 0x03, 0xf0, 0x12, 0xfe, 0xbd, 0xe8, 0x08, 0x40, - 0xff, 0xf7, 0x70, 0xb9, 0x2c, 0x74, 0x00, 0x24, 0x13, 0xb5, 0x15, 0x4c, - 0x20, 0x46, 0x03, 0xf0, 0x07, 0xfe, 0xff, 0xf7, 0x67, 0xf9, 0x20, 0x46, - 0x03, 0xf0, 0x02, 0xfe, 0xff, 0xf7, 0x42, 0xf9, 0x4f, 0xf0, 0xff, 0x32, - 0x4f, 0xf0, 0xff, 0x33, 0x68, 0x46, 0xcd, 0xe9, 0x00, 0x23, 0x0e, 0xf0, - 0x53, 0xfc, 0xd0, 0xe9, 0x02, 0x32, 0xdb, 0x02, 0x43, 0xea, 0x02, 0x43, + 0x01, 0x93, 0xcd, 0xe9, 0x02, 0x21, 0xff, 0xf7, 0xf7, 0xfd, 0x03, 0x99, + 0x04, 0xf1, 0x14, 0x00, 0xdd, 0xe9, 0x01, 0x32, 0xfd, 0xf7, 0x3a, 0xff, + 0x04, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xcc, 0xfd, 0x20, 0x46, 0x05, 0xb0, + 0xbd, 0xe8, 0x30, 0x40, 0xfc, 0xf7, 0xcd, 0xb9, 0x30, 0xb5, 0x00, 0xf1, + 0xa4, 0x05, 0x85, 0xb0, 0x04, 0x46, 0x28, 0x46, 0x01, 0x93, 0xcd, 0xe9, + 0x02, 0x21, 0xff, 0xf7, 0xdb, 0xfd, 0x03, 0x99, 0x04, 0xf1, 0x14, 0x00, + 0xdd, 0xe9, 0x01, 0x32, 0xfe, 0xf7, 0x51, 0xf8, 0x04, 0x46, 0x28, 0x46, + 0xff, 0xf7, 0xb0, 0xfd, 0x20, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0x30, 0x40, + 0xfc, 0xf7, 0xb1, 0xb9, 0xf8, 0xb5, 0x00, 0xf1, 0xa4, 0x07, 0x05, 0x46, + 0x0c, 0x46, 0x38, 0x46, 0xff, 0xf7, 0xc2, 0xfd, 0x21, 0x46, 0x05, 0xf1, + 0x14, 0x00, 0xfe, 0xf7, 0x9e, 0xf8, 0x05, 0xf1, 0x20, 0x02, 0x06, 0x46, + 0x2b, 0x6a, 0x1b, 0xb1, 0x9c, 0x42, 0x16, 0xd1, 0x23, 0x68, 0x13, 0x60, + 0xa3, 0x69, 0x0b, 0xb1, 0x1b, 0x68, 0x2b, 0xb9, 0x6b, 0x69, 0x5b, 0x6b, + 0x13, 0xb9, 0x60, 0x6b, 0x0f, 0xf0, 0x9c, 0xfd, 0x38, 0x46, 0xff, 0xf7, + 0x87, 0xfd, 0x20, 0x46, 0x0f, 0xf0, 0x96, 0xfd, 0x30, 0x46, 0xbd, 0xe8, + 0xf8, 0x40, 0xfc, 0xf7, 0x86, 0xb9, 0x1a, 0x46, 0x1b, 0x68, 0xe2, 0xe7, + 0x2d, 0xe9, 0xf3, 0x41, 0x06, 0x46, 0x14, 0x46, 0x00, 0x21, 0x28, 0x22, + 0x06, 0xf1, 0xa4, 0x07, 0x20, 0x46, 0x00, 0x25, 0x0f, 0xf0, 0xe8, 0xfd, + 0x38, 0x46, 0x06, 0xf1, 0x14, 0x08, 0x01, 0x95, 0xff, 0xf7, 0x8a, 0xfd, + 0x06, 0xf1, 0x18, 0x00, 0xfc, 0xf7, 0xab, 0xf9, 0x28, 0xb9, 0x01, 0xaa, + 0x0d, 0x49, 0x40, 0x46, 0xfd, 0xf7, 0x1e, 0xfd, 0x05, 0x46, 0x38, 0x46, + 0xff, 0xf7, 0x5c, 0xfd, 0x6d, 0xb9, 0x73, 0x6f, 0x01, 0x9a, 0xc4, 0xe9, + 0x00, 0x33, 0xb3, 0x6f, 0xc4, 0xe9, 0x02, 0x35, 0x9b, 0x1a, 0xc4, 0xe9, + 0x04, 0x35, 0xc4, 0xe9, 0x06, 0x35, 0xff, 0x23, 0x63, 0x62, 0x28, 0x46, + 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0xbf, 0x35, 0x7b, 0x00, 0x08, + 0x2d, 0xe9, 0xf0, 0x41, 0x80, 0x46, 0x00, 0xf1, 0xa4, 0x06, 0xd4, 0xb0, + 0x0c, 0x46, 0x08, 0xf1, 0x14, 0x07, 0x30, 0x46, 0x15, 0x46, 0xff, 0xf7, + 0x59, 0xfd, 0x02, 0xab, 0x03, 0xaa, 0x07, 0xa9, 0x38, 0x46, 0x02, 0x94, + 0xfe, 0xf7, 0x40, 0xf9, 0x04, 0x46, 0xc0, 0xb9, 0x01, 0x46, 0x4f, 0xf4, + 0x84, 0x72, 0x12, 0xa8, 0x0f, 0xf0, 0xa2, 0xfd, 0x9d, 0xf8, 0x10, 0x30, + 0x08, 0xf1, 0x18, 0x01, 0x05, 0xa8, 0x11, 0x2b, 0x8d, 0xf8, 0x48, 0x30, + 0x04, 0xbf, 0x06, 0x9b, 0x13, 0x93, 0xfc, 0xf7, 0x51, 0xf9, 0x04, 0x46, + 0xc0, 0xb9, 0x17, 0x49, 0x14, 0xa8, 0x10, 0xf0, 0x7b, 0xfb, 0x30, 0x46, + 0xff, 0xf7, 0x14, 0xfd, 0x13, 0x9b, 0x2b, 0x61, 0x9d, 0xf8, 0x48, 0x30, + 0x11, 0x2b, 0x1d, 0xd0, 0x22, 0x2b, 0x44, 0xf2, 0xff, 0x13, 0x18, 0xbf, + 0x00, 0x23, 0x20, 0x46, 0x6b, 0x60, 0x54, 0xb0, 0xbd, 0xe8, 0xf0, 0x41, + 0xfc, 0xf7, 0x09, 0xb9, 0x03, 0x9b, 0x38, 0x46, 0x9d, 0xf8, 0x11, 0x10, + 0x04, 0x33, 0x9d, 0xf8, 0x12, 0x20, 0x19, 0x44, 0x9d, 0xf8, 0x13, 0x30, + 0x0a, 0x44, 0x00, 0x93, 0x08, 0x99, 0x14, 0xab, 0xfd, 0xf7, 0x0b, 0xfc, + 0x04, 0x46, 0xd8, 0xe7, 0x48, 0xf2, 0xff, 0x13, 0xe3, 0xe7, 0x00, 0xbf, + 0x93, 0xd9, 0x01, 0x08, 0xf0, 0xb5, 0x00, 0xf1, 0xa4, 0x06, 0x05, 0x46, + 0x9f, 0xb0, 0x0c, 0x46, 0x30, 0x46, 0x05, 0xf1, 0x14, 0x07, 0xff, 0xf7, + 0xff, 0xfc, 0x95, 0xf8, 0x54, 0x30, 0x03, 0x94, 0x00, 0x2b, 0x43, 0xd0, + 0x03, 0xab, 0x04, 0xaa, 0x08, 0xa9, 0x38, 0x46, 0xfe, 0xf7, 0xe2, 0xf8, + 0x83, 0x1c, 0x04, 0x46, 0x49, 0xd1, 0x2f, 0x21, 0x03, 0x98, 0x11, 0xf0, + 0x6b, 0xf9, 0x00, 0x28, 0x3a, 0xd1, 0x6b, 0x69, 0x13, 0xa9, 0x38, 0x46, + 0x1b, 0x6a, 0xeb, 0x64, 0xfd, 0xf7, 0xfe, 0xff, 0x04, 0x46, 0x00, 0x28, + 0x30, 0xd1, 0x11, 0x9b, 0x02, 0x46, 0x13, 0xa9, 0x1c, 0x93, 0x12, 0x9b, + 0x1d, 0x93, 0x03, 0x46, 0x38, 0x46, 0xfe, 0xf7, 0x78, 0xfa, 0x04, 0x46, + 0x20, 0xbb, 0x40, 0xf6, 0x22, 0x03, 0x8d, 0xf8, 0x16, 0x00, 0xad, 0xf8, + 0x14, 0x30, 0x03, 0x9b, 0x18, 0x46, 0x01, 0x93, 0x10, 0xf0, 0x16, 0xfb, + 0x14, 0x99, 0x15, 0x9a, 0x8d, 0xf8, 0x17, 0x00, 0x38, 0x46, 0x06, 0x91, + 0x07, 0x92, 0x01, 0x9b, 0xcd, 0xe9, 0x11, 0x12, 0x04, 0xaa, 0x08, 0xa9, + 0xf6, 0xf7, 0x04, 0xfe, 0x04, 0x46, 0x48, 0xb9, 0x6b, 0x69, 0x1b, 0x6a, + 0xeb, 0x64, 0x05, 0xe0, 0x38, 0x46, 0xfe, 0xf7, 0xc5, 0xf9, 0x04, 0x46, + 0x00, 0x28, 0xb5, 0xd0, 0x30, 0x46, 0xff, 0xf7, 0x8d, 0xfc, 0x20, 0x46, + 0x1f, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0xfc, 0xf7, 0x8e, 0xb8, 0x00, 0x28, + 0x08, 0xbf, 0x6f, 0xf0, 0x10, 0x04, 0xf1, 0xe7, 0xf0, 0xb5, 0x00, 0xf1, + 0xa4, 0x05, 0x04, 0x46, 0x9d, 0xb0, 0x0f, 0x46, 0x28, 0x46, 0x04, 0xf1, + 0x14, 0x06, 0xff, 0xf7, 0x97, 0xfc, 0x94, 0xf8, 0x54, 0x30, 0x01, 0x97, + 0x83, 0xb1, 0x01, 0xab, 0x02, 0xaa, 0x06, 0xa9, 0x30, 0x46, 0xfe, 0xf7, + 0x7b, 0xf8, 0x04, 0x46, 0x78, 0xb1, 0x28, 0x46, 0xff, 0xf7, 0x68, 0xfc, + 0x20, 0x46, 0x1d, 0xb0, 0xbd, 0xe8, 0xf0, 0x40, 0xfc, 0xf7, 0x69, 0xb8, + 0x30, 0x46, 0xfe, 0xf7, 0x91, 0xf9, 0x04, 0x46, 0x00, 0x28, 0xe8, 0xd0, + 0xef, 0xe7, 0x9d, 0xf8, 0x0c, 0x30, 0x22, 0x2b, 0x1e, 0xd0, 0x02, 0xaa, + 0x06, 0xa9, 0x30, 0x46, 0xfe, 0xf7, 0x10, 0xf9, 0x04, 0x46, 0x00, 0x28, + 0xe3, 0xd1, 0x9d, 0xf8, 0x0c, 0x30, 0x22, 0x2b, 0xdf, 0xd1, 0x06, 0xaa, + 0x12, 0xa9, 0x30, 0x46, 0xfd, 0xf7, 0xd2, 0xfb, 0x04, 0x1e, 0xd8, 0xdb, + 0x1a, 0x9b, 0x06, 0xa9, 0x30, 0x46, 0x0f, 0x93, 0x1b, 0x9b, 0x10, 0x93, + 0x00, 0x23, 0x1a, 0x46, 0xfe, 0xf7, 0xfb, 0xf9, 0x04, 0x46, 0xcc, 0xe7, + 0x04, 0xaa, 0x11, 0xa9, 0x30, 0x46, 0xfd, 0xf7, 0x59, 0xfb, 0x04, 0x46, + 0x00, 0x28, 0xc4, 0xd1, 0x19, 0x9b, 0x14, 0x2b, 0xd5, 0xd0, 0x6f, 0xf0, + 0x26, 0x04, 0xbe, 0xe7, 0x70, 0xb5, 0x00, 0xf1, 0xa4, 0x06, 0x05, 0x46, + 0x30, 0x46, 0xff, 0xf7, 0x43, 0xfc, 0xd5, 0xf8, 0x90, 0x40, 0x64, 0xb1, + 0x05, 0xf1, 0x14, 0x00, 0xfc, 0xf7, 0xd3, 0xfc, 0xd5, 0xf8, 0x90, 0x00, + 0x03, 0x68, 0xdb, 0x68, 0x98, 0x47, 0x00, 0x23, 0x04, 0x46, 0xc5, 0xf8, + 0x90, 0x30, 0x30, 0x46, 0xff, 0xf7, 0x10, 0xfc, 0x20, 0x46, 0x70, 0xbd, + 0x0a, 0x4b, 0x10, 0xb5, 0x03, 0x60, 0x80, 0x33, 0x04, 0x46, 0x43, 0x60, + 0xff, 0xf7, 0xdc, 0xff, 0xd4, 0xf8, 0xa4, 0x00, 0x0b, 0xf0, 0x38, 0xfd, + 0x05, 0x4b, 0x20, 0x46, 0x23, 0x60, 0x2c, 0x33, 0x40, 0xf8, 0x04, 0x3f, + 0x03, 0xf0, 0x62, 0xfe, 0x20, 0x46, 0x10, 0xbd, 0x20, 0xd8, 0x01, 0x08, + 0xb8, 0xd7, 0x01, 0x08, 0xa0, 0xf1, 0x04, 0x00, 0xff, 0xf7, 0xe2, 0xbf, + 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xde, 0xff, 0x20, 0x46, 0x0f, 0xf0, + 0xfb, 0xfb, 0x20, 0x46, 0x10, 0xbd, 0xa0, 0xf1, 0x04, 0x00, 0xff, 0xf7, + 0xf3, 0xbf, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x43, 0x00, 0xf1, 0xa4, 0x07, + 0x0d, 0x46, 0x04, 0x46, 0x99, 0xb0, 0x38, 0x46, 0xff, 0xf7, 0xf8, 0xfb, + 0xc4, 0xf8, 0x90, 0x50, 0x2b, 0x68, 0x28, 0x46, 0x9b, 0x68, 0x98, 0x47, + 0x06, 0x46, 0x48, 0xb1, 0x00, 0x23, 0xc4, 0xf8, 0x90, 0x30, 0x38, 0x46, + 0xff, 0xf7, 0xca, 0xfb, 0x30, 0x46, 0x19, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, + 0x24, 0x22, 0x01, 0x46, 0x04, 0xf1, 0x6c, 0x00, 0x04, 0xf1, 0x58, 0x08, + 0x0f, 0xf0, 0x36, 0xfc, 0x5c, 0x4b, 0xa5, 0x65, 0x28, 0x46, 0xe3, 0x65, + 0x04, 0xf1, 0x14, 0x09, 0x5a, 0x4b, 0x23, 0x66, 0x5a, 0x4b, 0x63, 0x66, + 0x5a, 0x4b, 0xa3, 0x66, 0x2b, 0x68, 0x5b, 0x6a, 0x98, 0x47, 0xd4, 0xf8, + 0x94, 0x30, 0x83, 0x42, 0x2c, 0xbf, 0xe3, 0x66, 0xe0, 0x66, 0x28, 0x46, + 0x2b, 0x68, 0x9b, 0x6a, 0x98, 0x47, 0xd4, 0xf8, 0x98, 0x30, 0x83, 0x42, + 0x2c, 0xbf, 0x23, 0x67, 0x20, 0x67, 0x28, 0x46, 0x2b, 0x68, 0xdb, 0x6a, + 0x98, 0x47, 0xd4, 0xf8, 0x9c, 0x30, 0x83, 0x42, 0x2c, 0xbf, 0x63, 0x67, + 0x60, 0x67, 0x28, 0x46, 0x2b, 0x68, 0x9b, 0x6b, 0x98, 0x47, 0x33, 0x46, + 0x62, 0x6f, 0x11, 0xf0, 0xe1, 0xfa, 0xa0, 0x67, 0x1f, 0x30, 0xd4, 0xf8, + 0xa0, 0x30, 0xc4, 0xf8, 0x14, 0x80, 0x20, 0xf0, 0x1f, 0x00, 0x83, 0x42, + 0x94, 0xbf, 0xe3, 0x67, 0xe0, 0x67, 0xd4, 0xf8, 0x80, 0x30, 0x00, 0x2b, + 0x4c, 0xd0, 0x23, 0x63, 0xd4, 0xf8, 0x84, 0x30, 0x00, 0x2b, 0x5e, 0xd0, + 0xe3, 0x63, 0x04, 0xf1, 0x34, 0x01, 0x40, 0x46, 0xfc, 0xf7, 0x7e, 0xfc, + 0x4f, 0xf0, 0xff, 0x33, 0x65, 0x69, 0xa3, 0x62, 0x2b, 0x6b, 0x00, 0x2b, + 0x58, 0xd0, 0x23, 0x65, 0x4f, 0xf0, 0xff, 0x33, 0x2a, 0x6a, 0x0d, 0xa9, + 0x48, 0x46, 0xe2, 0x64, 0x02, 0xaa, 0xc4, 0xe9, 0x06, 0x33, 0x00, 0x23, + 0xc4, 0xe9, 0x08, 0x33, 0xa4, 0xf8, 0x54, 0x30, 0xa3, 0x64, 0x02, 0x93, + 0xc4, 0xe9, 0x10, 0x33, 0x01, 0x23, 0x03, 0x93, 0xfd, 0xf7, 0x7a, 0xfa, + 0x05, 0x46, 0x00, 0x28, 0x48, 0xd1, 0x20, 0x23, 0x10, 0x22, 0x0e, 0x99, + 0x48, 0x46, 0x00, 0x93, 0x05, 0xab, 0xfd, 0xf7, 0x62, 0xfa, 0x05, 0x46, + 0x00, 0x28, 0x3d, 0xd1, 0x06, 0x9b, 0x08, 0x22, 0x23, 0x49, 0x0b, 0xa8, + 0xa3, 0x61, 0x07, 0x9b, 0xe3, 0x61, 0x10, 0xf0, 0x0f, 0xff, 0x06, 0x46, + 0x80, 0xbb, 0x0a, 0x9b, 0x1a, 0x0c, 0x01, 0x2a, 0x03, 0xd1, 0x9b, 0xb2, + 0x01, 0x2b, 0x7f, 0xf6, 0x66, 0xaf, 0x6f, 0xf0, 0x15, 0x05, 0x27, 0xe0, + 0xe0, 0x6e, 0x0f, 0xf0, 0x37, 0xfb, 0x20, 0x63, 0x00, 0x28, 0xad, 0xd1, + 0x6f, 0xf0, 0x0b, 0x05, 0x48, 0x46, 0xfc, 0xf7, 0xdc, 0xfb, 0x00, 0x23, + 0x38, 0x46, 0xc4, 0xf8, 0x90, 0x30, 0xff, 0xf7, 0x1f, 0xfb, 0x28, 0x46, + 0x19, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, 0xfb, 0xf7, 0x20, 0xbf, 0x20, 0x6f, + 0x0f, 0xf0, 0x20, 0xfb, 0xe0, 0x63, 0x00, 0x28, 0x9b, 0xd1, 0xe7, 0xe7, + 0x68, 0x6a, 0xc0, 0x08, 0x0f, 0xf0, 0x18, 0xfb, 0x20, 0x65, 0x00, 0x28, + 0xa0, 0xd1, 0xdf, 0xe7, 0x6f, 0xf0, 0x33, 0x05, 0x48, 0x46, 0xfc, 0xf7, + 0xbc, 0xfb, 0xde, 0xe7, 0x3f, 0x7b, 0x00, 0x08, 0x63, 0x7b, 0x00, 0x08, + 0x87, 0x7b, 0x00, 0x08, 0xa3, 0x7b, 0x00, 0x08, 0xb0, 0xd9, 0x01, 0x08, + 0x08, 0xb5, 0x03, 0x48, 0x03, 0xf0, 0x66, 0xfc, 0xbd, 0xe8, 0x08, 0x40, + 0xff, 0xf7, 0x12, 0xbb, 0x80, 0x15, 0x02, 0x24, 0x13, 0xb5, 0x15, 0x4c, + 0x20, 0x46, 0x03, 0xf0, 0x5b, 0xfc, 0xff, 0xf7, 0x09, 0xfb, 0x20, 0x46, + 0x03, 0xf0, 0x56, 0xfc, 0xff, 0xf7, 0xe4, 0xfa, 0x4f, 0xf0, 0xff, 0x32, + 0x4f, 0xf0, 0xff, 0x33, 0x68, 0x46, 0xcd, 0xe9, 0x00, 0x23, 0x0f, 0xf0, + 0x73, 0xf9, 0xd0, 0xe9, 0x02, 0x32, 0xdb, 0x02, 0x43, 0xea, 0x02, 0x43, 0x42, 0x68, 0x43, 0xea, 0x42, 0x13, 0x02, 0x68, 0x02, 0xeb, 0xd2, 0x72, 0x43, 0xea, 0x62, 0x03, 0x42, 0x69, 0x00, 0x69, 0x50, 0x3a, 0x01, 0x30, 0x43, 0xea, 0x42, 0x63, 0x43, 0xea, 0x40, 0x50, 0x02, 0xb0, 0x10, 0xbd, - 0xdc, 0x73, 0x00, 0x24, 0x37, 0xb5, 0x01, 0xa9, 0x04, 0x46, 0xfb, 0xf7, - 0xa2, 0xfd, 0x00, 0x28, 0x32, 0xd1, 0x23, 0x7c, 0x13, 0xf0, 0x40, 0x00, + 0x04, 0x15, 0x02, 0x24, 0x37, 0xb5, 0x01, 0xa9, 0x04, 0x46, 0xfb, 0xf7, + 0xce, 0xff, 0x00, 0x28, 0x32, 0xd1, 0x23, 0x7c, 0x13, 0xf0, 0x40, 0x00, 0x2e, 0xd0, 0xff, 0xf7, 0xc5, 0xff, 0x21, 0x6a, 0x05, 0x46, 0x01, 0x98, - 0xfe, 0xf7, 0x24, 0xf8, 0x30, 0xbb, 0x62, 0x6a, 0xd3, 0x7a, 0x43, 0xf0, + 0xfe, 0xf7, 0xc7, 0xf9, 0x30, 0xbb, 0x62, 0x6a, 0xd3, 0x7a, 0x43, 0xf0, 0x20, 0x03, 0xd3, 0x72, 0xa3, 0x68, 0x21, 0x68, 0x18, 0x12, 0x93, 0x76, 0xd0, 0x76, 0x02, 0xf1, 0x1c, 0x00, 0x09, 0x78, 0x03, 0x29, 0x01, 0xbf, 0x1b, 0x0c, 0x13, 0x75, 0x1b, 0x12, 0x53, 0x75, 0xe1, 0x68, 0xfb, 0xf7, - 0xd1, 0xfd, 0x29, 0x46, 0x02, 0xf1, 0x16, 0x00, 0xfb, 0xf7, 0xcc, 0xfd, + 0xfd, 0xff, 0x29, 0x46, 0x02, 0xf1, 0x16, 0x00, 0xfb, 0xf7, 0xf8, 0xff, 0x00, 0x23, 0x01, 0x98, 0x93, 0x74, 0xd3, 0x74, 0x01, 0x23, 0xc3, 0x70, - 0xfc, 0xf7, 0xe4, 0xfa, 0x23, 0x7c, 0x23, 0xf0, 0x40, 0x03, 0x23, 0x74, + 0xfc, 0xf7, 0x44, 0xfc, 0x23, 0x7c, 0x23, 0xf0, 0x40, 0x03, 0x23, 0x74, 0x03, 0xb0, 0x30, 0xbd, 0x38, 0xb5, 0x03, 0x68, 0x0d, 0x46, 0x04, 0x46, 0x9b, 0x6f, 0x98, 0x47, 0x28, 0x46, 0xff, 0xf7, 0xbb, 0xff, 0x23, 0x68, 0x05, 0x46, 0x20, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x28, 0x46, 0xbd, 0xe8, - 0x38, 0x40, 0xfb, 0xf7, 0x41, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, 0x1e, 0x46, + 0x38, 0x40, 0xfb, 0xf7, 0x6d, 0xbf, 0x2d, 0xe9, 0xf0, 0x4f, 0x1e, 0x46, 0x03, 0x68, 0x85, 0xb0, 0x0d, 0x46, 0x9b, 0x6f, 0x82, 0x46, 0x91, 0x46, - 0x98, 0x47, 0x03, 0xa9, 0x28, 0x46, 0xfb, 0xf7, 0x4a, 0xfd, 0x04, 0x46, + 0x98, 0x47, 0x03, 0xa9, 0x28, 0x46, 0xfb, 0xf7, 0x76, 0xff, 0x04, 0x46, 0x07, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xd6, 0x80, 0x6c, 0x7c, 0x5c, 0xbb, 0x2b, 0x7c, 0x9a, 0x07, 0x40, 0xf1, 0xd2, 0x80, 0x6b, 0x69, 0x00, 0x27, 0xde, 0x42, 0x00, 0x97, 0x28, 0xbf, 0xde, 0x43, 0x00, 0x2e, 0x00, 0xf0, @@ -4282,86 +4077,106 @@ const unsigned char mcuboot_bin[] = { 0x03, 0xfb, 0x11, 0x23, 0x00, 0x2b, 0x40, 0xf0, 0x8d, 0x80, 0xb0, 0xf8, 0x0a, 0x80, 0x08, 0xf1, 0xff, 0x38, 0x18, 0xea, 0x01, 0x08, 0x25, 0xd1, 0xd2, 0xb9, 0xa8, 0x68, 0x30, 0xb9, 0x01, 0x46, 0x28, 0x46, 0xfe, 0xf7, - 0xb8, 0xfc, 0x00, 0x28, 0x00, 0xf0, 0xa0, 0x80, 0x01, 0x28, 0x11, 0xd1, + 0x5a, 0xfe, 0x00, 0x28, 0x00, 0xf0, 0xa0, 0x80, 0x01, 0x28, 0x11, 0xd1, 0x02, 0x24, 0x6c, 0x74, 0xda, 0xf8, 0x00, 0x30, 0x50, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x00, 0x2c, 0x00, 0xf0, 0xa5, 0x80, 0x20, 0x46, 0x05, 0xb0, - 0xbd, 0xe8, 0xf0, 0x4f, 0xfb, 0xf7, 0xf2, 0xbc, 0xa9, 0x69, 0xe5, 0xe7, + 0xbd, 0xe8, 0xf0, 0x4f, 0xfb, 0xf7, 0x1e, 0xbf, 0xa9, 0x69, 0xe5, 0xe7, 0x43, 0x1c, 0x01, 0xd1, 0x01, 0x24, 0xea, 0xe7, 0xab, 0x68, 0xa8, 0x61, 0x03, 0xb9, 0xa8, 0x60, 0x03, 0x98, 0xeb, 0x69, 0x02, 0x6b, 0x9a, 0x42, - 0x47, 0xd0, 0xdd, 0xf8, 0x0c, 0xb0, 0xa9, 0x69, 0x58, 0x46, 0xfd, 0xf7, - 0x78, 0xff, 0x00, 0x28, 0xd8, 0xd0, 0xbb, 0xf8, 0x0c, 0x30, 0x08, 0xeb, + 0x47, 0xd0, 0xdd, 0xf8, 0x0c, 0xb0, 0xa9, 0x69, 0x58, 0x46, 0xfe, 0xf7, + 0x1b, 0xf9, 0x00, 0x28, 0xd8, 0xd0, 0xbb, 0xf8, 0x0c, 0x30, 0x08, 0xeb, 0x00, 0x02, 0x9e, 0x42, 0x3e, 0xd3, 0xbb, 0xf8, 0x0a, 0x10, 0xb6, 0xfb, 0xf3, 0xf3, 0x08, 0xeb, 0x03, 0x00, 0x88, 0x42, 0x9b, 0xf8, 0x01, 0x00, 0x88, 0xbf, 0xa1, 0xeb, 0x08, 0x03, 0x49, 0x46, 0xcd, 0xe9, 0x00, 0x23, - 0xfb, 0xf7, 0x7c, 0xfc, 0x80, 0x46, 0xdd, 0xe9, 0x00, 0x23, 0x00, 0x28, + 0xfb, 0xf7, 0xa8, 0xfe, 0x80, 0x46, 0xdd, 0xe9, 0x00, 0x23, 0x00, 0x28, 0xd0, 0xd1, 0x03, 0x98, 0x01, 0x6b, 0x89, 0x1a, 0x8b, 0x42, 0x0a, 0xd9, - 0x82, 0x89, 0x40, 0x6b, 0x02, 0xfb, 0x01, 0x91, 0x00, 0x93, 0x0e, 0xf0, - 0x31, 0xfd, 0x03, 0x9a, 0x00, 0x9b, 0x82, 0xf8, 0x03, 0x80, 0x03, 0x9a, + 0x82, 0x89, 0x40, 0x6b, 0x02, 0xfb, 0x01, 0x91, 0x00, 0x93, 0x0f, 0xf0, + 0x4f, 0xfa, 0x03, 0x9a, 0x00, 0x9b, 0x82, 0xf8, 0x03, 0x80, 0x03, 0x9a, 0xb2, 0xf8, 0x0c, 0x80, 0x03, 0xfb, 0x08, 0xf8, 0x01, 0x23, 0x00, 0x93, 0x6b, 0x69, 0xa6, 0xeb, 0x08, 0x06, 0xea, 0x68, 0x47, 0x44, 0x43, 0x44, 0xc1, 0x44, 0x6b, 0x61, 0x9a, 0x42, 0x2c, 0xbf, 0xea, 0x60, 0xeb, 0x60, - 0x78, 0xe7, 0xfb, 0xf7, 0xe1, 0xfc, 0x00, 0x28, 0xb3, 0xd0, 0xa7, 0xe7, + 0x78, 0xe7, 0xfb, 0xf7, 0x0d, 0xff, 0x00, 0x28, 0xb3, 0xd0, 0xa7, 0xe7, 0x69, 0x69, 0xeb, 0x68, 0x99, 0x42, 0x08, 0xd3, 0x58, 0x46, 0x01, 0x92, - 0xfb, 0xf7, 0xd6, 0xfc, 0x01, 0x9a, 0x00, 0x28, 0x9c, 0xd1, 0x03, 0x9b, + 0xfb, 0xf7, 0x02, 0xff, 0x01, 0x9a, 0x00, 0x28, 0x9c, 0xd1, 0x03, 0x9b, 0x1a, 0x63, 0xea, 0x61, 0x03, 0x98, 0x6b, 0x69, 0xb0, 0xf8, 0x0c, 0x80, 0xe9, 0x69, 0xb3, 0xfb, 0xf8, 0xf2, 0x08, 0xfb, 0x12, 0x32, 0xa8, 0xeb, - 0x02, 0x08, 0xb0, 0x45, 0x28, 0xbf, 0xb0, 0x46, 0xfd, 0xf7, 0x1e, 0xff, + 0x02, 0x08, 0xb0, 0x45, 0x28, 0xbf, 0xb0, 0x46, 0xfe, 0xf7, 0xc1, 0xf8, 0x00, 0x28, 0x87, 0xd1, 0x03, 0x9a, 0x69, 0x69, 0x90, 0x89, 0xb1, 0xfb, 0xf0, 0xf3, 0x00, 0xfb, 0x13, 0x13, 0x50, 0x6b, 0x49, 0x46, 0x42, 0x46, - 0x18, 0x44, 0x0e, 0xf0, 0xe7, 0xfc, 0x03, 0x9b, 0x4f, 0xf0, 0x01, 0x02, + 0x18, 0x44, 0x0f, 0xf0, 0x05, 0xfa, 0x03, 0x9b, 0x4f, 0xf0, 0x01, 0x02, 0xda, 0x70, 0xbb, 0xe7, 0x2b, 0x7c, 0x43, 0xf0, 0x40, 0x03, 0x2b, 0x74, 0x00, 0x9b, 0x00, 0x2b, 0x3f, 0xf4, 0x5c, 0xaf, 0x28, 0x46, 0xff, 0xf7, 0xc9, 0xfe, 0x57, 0xe7, 0x00, 0x27, 0x55, 0xe7, 0x27, 0x46, 0x07, 0x24, 0x52, 0xe7, 0x38, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x03, 0x68, 0x73, 0xb5, 0x0d, 0x46, 0x9b, 0x6f, 0x06, 0x46, 0x98, 0x47, 0x28, 0x46, 0xff, 0xf7, 0xb6, 0xfe, 0x04, 0x46, 0x30, 0xb9, 0x01, 0xa9, 0x28, 0x46, - 0xfb, 0xf7, 0x57, 0xfc, 0x04, 0x46, 0x00, 0xb9, 0x28, 0x60, 0x33, 0x68, - 0x30, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x15, 0xb1, 0x28, 0x46, 0x0e, 0xf0, - 0x59, 0xfc, 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xfb, 0xf7, - 0x2f, 0xbc, 0x00, 0x00, 0xf0, 0xb5, 0x0e, 0x46, 0x85, 0xb0, 0x90, 0xf8, + 0xfb, 0xf7, 0x83, 0xfe, 0x04, 0x46, 0x00, 0xb9, 0x28, 0x60, 0x33, 0x68, + 0x30, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x15, 0xb1, 0x28, 0x46, 0x0f, 0xf0, + 0x79, 0xf9, 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xfb, 0xf7, + 0x5b, 0xbe, 0x00, 0x00, 0xf0, 0xb5, 0x0e, 0x46, 0x85, 0xb0, 0x90, 0xf8, 0x20, 0x10, 0x05, 0x46, 0x14, 0x46, 0xdd, 0xe9, 0x0a, 0x7c, 0x19, 0xb9, 0x6f, 0xf4, 0x7a, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0x01, 0x68, 0xcd, 0xe9, 0x00, 0x7c, 0xc9, 0x6b, 0x88, 0x47, 0x00, 0x28, 0xf4, 0xd0, 0x29, 0x69, - 0x0d, 0x48, 0x61, 0x18, 0x03, 0x91, 0x03, 0xf0, 0x61, 0xfc, 0xfe, 0xf7, - 0xc1, 0xff, 0x02, 0xf0, 0x89, 0xfc, 0x02, 0xf0, 0x63, 0xfc, 0x3a, 0x46, - 0x03, 0x99, 0x30, 0x46, 0x0e, 0xf0, 0x86, 0xfc, 0x02, 0xf0, 0x4a, 0xfc, - 0x02, 0xf0, 0x6c, 0xfc, 0x03, 0x48, 0x03, 0xf0, 0x4f, 0xfc, 0xfe, 0xf7, - 0x8f, 0xff, 0x00, 0x20, 0xda, 0xe7, 0x00, 0xbf, 0x04, 0x74, 0x00, 0x24, - 0x10, 0xb5, 0x04, 0x46, 0x04, 0x30, 0x0c, 0xf0, 0x09, 0xf8, 0x04, 0xf1, - 0x54, 0x00, 0xfe, 0xf7, 0xa1, 0xff, 0x00, 0x23, 0x20, 0x6c, 0x63, 0x61, + 0x0d, 0x48, 0x61, 0x18, 0x03, 0x91, 0x03, 0xf0, 0xb5, 0xfa, 0xff, 0xf7, + 0x63, 0xf9, 0x02, 0xf0, 0xa7, 0xfa, 0x02, 0xf0, 0x81, 0xfa, 0x3a, 0x46, + 0x03, 0x99, 0x30, 0x46, 0x0f, 0xf0, 0xa4, 0xf9, 0x02, 0xf0, 0x68, 0xfa, + 0x02, 0xf0, 0x8a, 0xfa, 0x03, 0x48, 0x03, 0xf0, 0xa3, 0xfa, 0xff, 0xf7, + 0x31, 0xf9, 0x00, 0x20, 0xda, 0xe7, 0x00, 0xbf, 0x58, 0x15, 0x02, 0x24, + 0x10, 0xb5, 0x04, 0x46, 0x04, 0x30, 0x0b, 0xf0, 0x6d, 0xfb, 0x04, 0xf1, + 0x54, 0x00, 0xff, 0xf7, 0x43, 0xf9, 0x00, 0x23, 0x20, 0x6c, 0x63, 0x61, 0x01, 0x23, 0x84, 0xf8, 0x3d, 0x30, 0xbd, 0xe8, 0x10, 0x40, 0x0b, 0xf0, - 0x43, 0xba, 0x00, 0x00, 0x73, 0xb5, 0x05, 0x46, 0x0c, 0x20, 0x0e, 0x46, - 0x01, 0x92, 0x02, 0xf0, 0x99, 0xfb, 0x00, 0x23, 0x29, 0x46, 0x01, 0x9a, + 0xb9, 0xb9, 0x07, 0xb5, 0x13, 0x46, 0x0a, 0x46, 0x6f, 0xf0, 0x00, 0x41, + 0x00, 0x90, 0x00, 0x20, 0xfc, 0xf7, 0x00, 0xfd, 0x03, 0xb0, 0x5d, 0xf8, + 0x04, 0xfb, 0x0e, 0xb4, 0x0f, 0xb5, 0x05, 0xab, 0x6f, 0xf0, 0x00, 0x41, + 0x53, 0xf8, 0x04, 0x2b, 0x00, 0x90, 0x00, 0x20, 0x03, 0x93, 0xfc, 0xf7, + 0xf1, 0xfc, 0x04, 0xb0, 0x5d, 0xf8, 0x04, 0xeb, 0x03, 0xb0, 0x70, 0x47, + 0x13, 0xb5, 0x00, 0x24, 0x00, 0x94, 0xfc, 0xf7, 0xe7, 0xfc, 0x02, 0xb0, + 0x10, 0xbd, 0x07, 0xb5, 0x13, 0x46, 0x00, 0x22, 0x00, 0x92, 0x0a, 0x46, + 0x6f, 0xf0, 0x00, 0x41, 0xfc, 0xf7, 0xdc, 0xfc, 0x03, 0xb0, 0x5d, 0xf8, + 0x04, 0xfb, 0x00, 0x00, 0x07, 0xb5, 0x0b, 0x46, 0x06, 0x49, 0x02, 0x46, + 0x00, 0x20, 0x09, 0x68, 0x89, 0x68, 0x00, 0x91, 0x6f, 0xf0, 0x00, 0x41, + 0xfc, 0xf7, 0xcc, 0xfc, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x00, 0xbf, + 0x10, 0x03, 0x00, 0x24, 0x0c, 0xb4, 0x1f, 0xb5, 0x06, 0xab, 0x00, 0x24, + 0x53, 0xf8, 0x04, 0x2b, 0x00, 0x94, 0x03, 0x93, 0xfc, 0xf7, 0xbc, 0xfc, + 0x04, 0xb0, 0xbd, 0xe8, 0x10, 0x40, 0x02, 0xb0, 0x70, 0x47, 0x0e, 0xb4, + 0x0f, 0xb5, 0x00, 0x21, 0x05, 0xab, 0x53, 0xf8, 0x04, 0x2b, 0x00, 0x91, + 0x6f, 0xf0, 0x00, 0x41, 0x03, 0x93, 0xfc, 0xf7, 0xab, 0xfc, 0x04, 0xb0, + 0x5d, 0xf8, 0x04, 0xeb, 0x03, 0xb0, 0x70, 0x47, 0x0f, 0xb4, 0x1f, 0xb5, + 0x08, 0x49, 0x06, 0xab, 0x00, 0x20, 0x09, 0x68, 0x53, 0xf8, 0x04, 0x2b, + 0x89, 0x68, 0x03, 0x93, 0x00, 0x91, 0x6f, 0xf0, 0x00, 0x41, 0xfc, 0xf7, + 0x97, 0xfc, 0x05, 0xb0, 0x5d, 0xf8, 0x04, 0xeb, 0x04, 0xb0, 0x70, 0x47, + 0x10, 0x03, 0x00, 0x24, 0x73, 0xb5, 0x05, 0x46, 0x0c, 0x20, 0x0e, 0x46, + 0x01, 0x92, 0x02, 0xf0, 0x3f, 0xf9, 0x00, 0x23, 0x29, 0x46, 0x01, 0x9a, 0x04, 0x46, 0xc0, 0xe9, 0x01, 0x33, 0x07, 0x4b, 0x03, 0x60, 0xfb, 0xf7, - 0x77, 0xfa, 0x05, 0x46, 0x30, 0xb1, 0x23, 0x68, 0x20, 0x46, 0x5b, 0x68, + 0x33, 0xfc, 0x05, 0x46, 0x30, 0xb1, 0x23, 0x68, 0x20, 0x46, 0x5b, 0x68, 0x98, 0x47, 0x28, 0x46, 0x02, 0xb0, 0x70, 0xbd, 0x34, 0x60, 0xfa, 0xe7, - 0x34, 0xe1, 0x01, 0x08, 0x73, 0xb5, 0x05, 0x46, 0x0c, 0x20, 0x0e, 0x46, - 0xcd, 0xe9, 0x00, 0x32, 0x02, 0xf0, 0x7a, 0xfb, 0x00, 0x21, 0x04, 0x46, + 0x74, 0xdb, 0x01, 0x08, 0x73, 0xb5, 0x05, 0x46, 0x0c, 0x20, 0x0e, 0x46, + 0xcd, 0xe9, 0x00, 0x32, 0x02, 0xf0, 0x20, 0xf9, 0x00, 0x21, 0x04, 0x46, 0xc0, 0xe9, 0x01, 0x11, 0x08, 0x49, 0xdd, 0xe9, 0x00, 0x32, 0x01, 0x60, - 0x29, 0x46, 0xfb, 0xf7, 0xfa, 0xf9, 0x05, 0x46, 0x30, 0xb1, 0x23, 0x68, + 0x29, 0x46, 0xfb, 0xf7, 0xb6, 0xfb, 0x05, 0x46, 0x30, 0xb1, 0x23, 0x68, 0x20, 0x46, 0x5b, 0x68, 0x98, 0x47, 0x28, 0x46, 0x02, 0xb0, 0x70, 0xbd, - 0x34, 0x60, 0xfa, 0xe7, 0x60, 0xe1, 0x01, 0x08, 0x03, 0x68, 0x2d, 0xe9, + 0x34, 0x60, 0xfa, 0xe7, 0xa0, 0xdb, 0x01, 0x08, 0x03, 0x68, 0x2d, 0xe9, 0xf0, 0x41, 0xdb, 0x6e, 0x04, 0x46, 0x0d, 0x46, 0x98, 0x47, 0x80, 0x46, - 0x40, 0xf2, 0x01, 0x10, 0x02, 0xf0, 0x56, 0xfb, 0x23, 0x68, 0x00, 0x27, + 0x40, 0xf2, 0x01, 0x10, 0x02, 0xf0, 0xfc, 0xf8, 0x23, 0x68, 0x00, 0x27, 0x06, 0x46, 0x1b, 0x6f, 0x29, 0x46, 0x20, 0x46, 0x98, 0x47, 0x23, 0x68, 0x32, 0x46, 0x29, 0x46, 0x20, 0x46, 0x5b, 0x6e, 0x98, 0x47, 0x00, 0x28, 0x01, 0xdd, 0x01, 0x37, 0xf5, 0xe7, 0x23, 0x68, 0x42, 0x46, 0x29, 0x46, - 0x20, 0x46, 0x9b, 0x6e, 0x98, 0x47, 0x30, 0x46, 0x0e, 0xf0, 0xa6, 0xfb, + 0x20, 0x46, 0x9b, 0x6e, 0x98, 0x47, 0x30, 0x46, 0x0f, 0xf0, 0x4e, 0xf8, 0x38, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0x2d, 0xe9, 0xf0, 0x43, 0x06, 0x46, 0x87, 0xb0, 0x2c, 0x20, 0x15, 0x46, 0x06, 0xf1, 0xa4, 0x08, 0x0f, 0x46, - 0x02, 0xf0, 0x2e, 0xfb, 0x04, 0x46, 0x40, 0x46, 0x06, 0xf1, 0x14, 0x09, - 0xfe, 0xf7, 0x1e, 0xff, 0xb3, 0x69, 0x02, 0xaa, 0x21, 0x46, 0x63, 0x60, + 0x02, 0xf0, 0xd4, 0xf8, 0x04, 0x46, 0x40, 0x46, 0x06, 0xf1, 0x14, 0x09, + 0xff, 0xf7, 0x48, 0xf8, 0xb3, 0x69, 0x02, 0xaa, 0x21, 0x46, 0x63, 0x60, 0x48, 0x46, 0xf3, 0x69, 0x01, 0x95, 0xa3, 0x60, 0x01, 0xab, 0xfd, 0xf7, - 0xb5, 0xfc, 0x05, 0x46, 0xa8, 0xb9, 0x9d, 0xf8, 0x0c, 0x30, 0x22, 0x2b, - 0x1c, 0xd1, 0x04, 0xaa, 0x21, 0x46, 0x48, 0x46, 0xfc, 0xf7, 0x8a, 0xfd, + 0x2b, 0xfc, 0x05, 0x46, 0xa8, 0xb9, 0x9d, 0xf8, 0x0c, 0x30, 0x22, 0x2b, + 0x1c, 0xd1, 0x04, 0xaa, 0x21, 0x46, 0x48, 0x46, 0xfc, 0xf7, 0x38, 0xff, 0x05, 0x46, 0x50, 0xb9, 0x63, 0x68, 0x23, 0x61, 0xa3, 0x68, 0x63, 0x61, 0x0e, 0x23, 0xa3, 0x61, 0x10, 0x23, 0xe3, 0x60, 0x73, 0x6a, 0x74, 0x62, - 0x23, 0x60, 0x40, 0x46, 0xfe, 0xf7, 0xd8, 0xfe, 0x4d, 0xb9, 0x3c, 0x60, - 0x28, 0x46, 0x07, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, 0xfb, 0xf7, 0x45, 0xba, - 0x6f, 0xf0, 0x13, 0x05, 0xf1, 0xe7, 0x20, 0x46, 0x0e, 0xf0, 0x5e, 0xfb, + 0x23, 0x60, 0x40, 0x46, 0xff, 0xf7, 0x02, 0xf8, 0x4d, 0xb9, 0x3c, 0x60, + 0x28, 0x46, 0x07, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, 0xfb, 0xf7, 0x01, 0xbc, + 0x6f, 0xf0, 0x13, 0x05, 0xf1, 0xe7, 0x20, 0x46, 0x0f, 0xf0, 0x06, 0xf8, 0xf2, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, 0x07, 0x46, 0x9b, 0x46, 0x93, 0xb0, 0x38, 0x20, 0x07, 0xf1, 0xa4, 0x09, 0x88, 0x46, 0x16, 0x46, 0x02, 0xf0, - 0xe7, 0xfa, 0x04, 0x46, 0x48, 0x46, 0xfe, 0xf7, 0xd9, 0xfe, 0x1b, 0xf0, + 0x8d, 0xf8, 0x04, 0x46, 0x48, 0x46, 0xff, 0xf7, 0x03, 0xf8, 0x1b, 0xf0, 0x03, 0x0c, 0x07, 0xf1, 0x14, 0x0a, 0x00, 0xf0, 0xc5, 0x80, 0xbc, 0xf1, 0x01, 0x0f, 0x4f, 0xf0, 0x00, 0x00, 0x00, 0xf0, 0xc1, 0x80, 0xbc, 0xf1, 0x02, 0x0f, 0x84, 0x46, 0x01, 0xd0, 0x00, 0x21, 0x00, 0xe0, 0x03, 0x21, @@ -4370,18 +4185,18 @@ const unsigned char mcuboot_bin[] = { 0x2a, 0x43, 0x4f, 0xea, 0x0b, 0x25, 0x05, 0xf4, 0x00, 0x65, 0x15, 0x43, 0x45, 0xea, 0x0c, 0x05, 0x05, 0x43, 0x0d, 0x43, 0x05, 0xf0, 0x03, 0x03, 0x01, 0x2b, 0x11, 0xd1, 0x02, 0xab, 0x03, 0xaa, 0x07, 0xa9, 0x50, 0x46, - 0xfd, 0xf7, 0x48, 0xfc, 0x06, 0x46, 0x00, 0xbb, 0x9d, 0xf8, 0x10, 0x30, + 0xfd, 0xf7, 0xbe, 0xfb, 0x06, 0x46, 0x00, 0xbb, 0x9d, 0xf8, 0x10, 0x30, 0x22, 0x2b, 0x00, 0xf0, 0x8a, 0x80, 0xa9, 0x05, 0x3f, 0xd5, 0x6f, 0xf0, 0x10, 0x06, 0x09, 0xe0, 0x97, 0xf8, 0x54, 0x30, 0x00, 0x2b, 0xe9, 0xd1, - 0x50, 0x46, 0xfd, 0xf7, 0x91, 0xf9, 0x06, 0x46, 0x00, 0x28, 0xe3, 0xd0, - 0x48, 0x46, 0xfe, 0xf7, 0x6d, 0xfe, 0x00, 0x2e, 0x78, 0xd1, 0xc8, 0xf8, + 0x50, 0x46, 0xfd, 0xf7, 0xcf, 0xfc, 0x06, 0x46, 0x00, 0x28, 0xe3, 0xd0, + 0x48, 0x46, 0xfe, 0xf7, 0x97, 0xff, 0x00, 0x2e, 0x78, 0xd1, 0xc8, 0xf8, 0x00, 0x40, 0x30, 0x46, 0x13, 0xb0, 0xbd, 0xe8, 0xf0, 0x4f, 0xfb, 0xf7, - 0xd8, 0xb9, 0x82, 0x1c, 0xf0, 0xd1, 0x02, 0x9b, 0x2f, 0x21, 0x18, 0x46, - 0x01, 0x93, 0x0f, 0xf0, 0x7d, 0xff, 0x83, 0x46, 0x00, 0x28, 0xe7, 0xd1, + 0x94, 0xbb, 0x82, 0x1c, 0xf0, 0xd1, 0x02, 0x9b, 0x2f, 0x21, 0x18, 0x46, + 0x01, 0x93, 0x10, 0xf0, 0x23, 0xfc, 0x83, 0x46, 0x00, 0x28, 0xe7, 0xd1, 0xeb, 0x05, 0xe5, 0xd5, 0x01, 0x9b, 0x40, 0xf6, 0x11, 0x02, 0x8d, 0xf8, - 0x12, 0x00, 0x18, 0x46, 0xad, 0xf8, 0x10, 0x20, 0x0f, 0xf0, 0x3c, 0xf9, + 0x12, 0x00, 0x18, 0x46, 0xad, 0xf8, 0x10, 0x20, 0x0f, 0xf0, 0xe2, 0xfd, 0x4f, 0xf0, 0xff, 0x32, 0x8d, 0xf8, 0x13, 0x00, 0x07, 0xa9, 0x01, 0x9b, - 0x50, 0x46, 0xcd, 0xe9, 0x05, 0x2b, 0x03, 0xaa, 0xfd, 0xf7, 0xde, 0xfc, + 0x50, 0x46, 0xcd, 0xe9, 0x05, 0x2b, 0x03, 0xaa, 0xf6, 0xf7, 0xd2, 0xf8, 0x06, 0x46, 0x00, 0x28, 0xcc, 0xd1, 0x08, 0x9b, 0x00, 0x22, 0x68, 0x05, 0x63, 0x60, 0x09, 0x9b, 0xa2, 0x61, 0xa3, 0x60, 0x03, 0x9b, 0xe3, 0x60, 0x05, 0x9b, 0x23, 0x61, 0x06, 0x9b, 0xc4, 0xe9, 0x07, 0x52, 0x63, 0x61, @@ -4390,83 +4205,83 @@ const unsigned char mcuboot_bin[] = { 0x13, 0xb1, 0x45, 0xf4, 0x80, 0x35, 0xe5, 0x61, 0x4f, 0xf0, 0xff, 0x32, 0x00, 0x23, 0xc4, 0xe9, 0x04, 0x23, 0xea, 0xe7, 0x63, 0x63, 0xe3, 0x69, 0x03, 0xf0, 0x03, 0x03, 0x01, 0x2b, 0x04, 0xd0, 0x04, 0xf1, 0x2c, 0x01, - 0x28, 0x46, 0xfb, 0xf7, 0x20, 0xff, 0x3b, 0x6a, 0x00, 0x26, 0x3c, 0x62, + 0x28, 0x46, 0xfc, 0xf7, 0x43, 0xf8, 0x3b, 0x6a, 0x00, 0x26, 0x3c, 0x62, 0x23, 0x60, 0x97, 0xe7, 0xe3, 0x69, 0x03, 0xf0, 0x03, 0x03, 0x01, 0x2b, - 0x06, 0xd1, 0x68, 0x69, 0x0e, 0xf0, 0x8c, 0xfa, 0x60, 0x63, 0x00, 0x28, - 0xef, 0xd1, 0xd6, 0xe7, 0xa8, 0x69, 0x0e, 0xf0, 0x85, 0xfa, 0x60, 0x63, + 0x06, 0xd1, 0x68, 0x69, 0x0e, 0xf0, 0x34, 0xff, 0x60, 0x63, 0x00, 0x28, + 0xef, 0xd1, 0xd6, 0xe7, 0xa8, 0x69, 0x0e, 0xf0, 0x2d, 0xff, 0x60, 0x63, 0x00, 0x28, 0xe3, 0xd1, 0xcf, 0xe7, 0x6f, 0xf0, 0x14, 0x06, 0x81, 0xe7, - 0x20, 0x46, 0x0e, 0xf0, 0x83, 0xfa, 0x84, 0xe7, 0x01, 0x20, 0x42, 0xe7, + 0x20, 0x46, 0x0e, 0xf0, 0x2b, 0xff, 0x84, 0xe7, 0x01, 0x20, 0x42, 0xe7, 0x4f, 0xf0, 0x02, 0x0c, 0x3f, 0xe7, 0x00, 0x00, 0xf0, 0xb5, 0x0c, 0x46, 0x8b, 0xb0, 0x06, 0x46, 0x24, 0xb9, 0x32, 0x60, 0x04, 0x61, 0x30, 0x46, - 0x0b, 0xb0, 0xf0, 0xbd, 0x10, 0x46, 0x01, 0x92, 0x0f, 0xf0, 0xca, 0xf8, - 0x04, 0x30, 0x02, 0xf0, 0x01, 0xfa, 0x3a, 0x23, 0x30, 0x34, 0x05, 0x46, + 0x0b, 0xb0, 0xf0, 0xbd, 0x10, 0x46, 0x01, 0x92, 0x0f, 0xf0, 0x70, 0xfd, + 0x04, 0x30, 0x01, 0xf0, 0xa7, 0xff, 0x3a, 0x23, 0x30, 0x34, 0x05, 0x46, 0x43, 0x70, 0x2f, 0x23, 0x04, 0x70, 0x03, 0x30, 0x00, 0xf8, 0x01, 0x3c, - 0x37, 0x46, 0x01, 0x99, 0x06, 0xac, 0x0f, 0xf0, 0xb1, 0xf8, 0x08, 0x4b, + 0x37, 0x46, 0x01, 0x99, 0x06, 0xac, 0x0f, 0xf0, 0x57, 0xfd, 0x08, 0x4b, 0x00, 0x22, 0x47, 0xf8, 0x04, 0x5b, 0x05, 0x93, 0x06, 0x4b, 0x02, 0x93, 0x02, 0xab, 0xcd, 0xe9, 0x03, 0x22, 0x0f, 0xcb, 0x84, 0xe8, 0x0f, 0x00, - 0x87, 0xe8, 0x0f, 0x00, 0xd7, 0xe7, 0x00, 0xbf, 0xb3, 0x81, 0x00, 0x08, - 0xd5, 0x8b, 0x00, 0x08, 0xf0, 0xb5, 0x06, 0x46, 0x8b, 0xb0, 0x2c, 0x20, - 0x0f, 0x46, 0x01, 0x92, 0x02, 0xf0, 0xd6, 0xf9, 0x01, 0x9a, 0x05, 0x46, + 0x87, 0xe8, 0x0f, 0x00, 0xd7, 0xe7, 0x00, 0xbf, 0x71, 0x7c, 0x00, 0x08, + 0x6f, 0x85, 0x00, 0x08, 0xf0, 0xb5, 0x06, 0x46, 0x8b, 0xb0, 0x2c, 0x20, + 0x0f, 0x46, 0x01, 0x92, 0x01, 0xf0, 0x7c, 0xff, 0x01, 0x9a, 0x05, 0x46, 0x31, 0x6d, 0x05, 0xa8, 0xff, 0xf7, 0xbe, 0xff, 0x33, 0x68, 0x30, 0x46, 0x9b, 0x6f, 0x98, 0x47, 0x05, 0x9b, 0x03, 0x93, 0x00, 0x2d, 0x3d, 0xd0, - 0x00, 0x22, 0x04, 0xa9, 0x03, 0xa8, 0xfd, 0xf7, 0x57, 0xfe, 0x04, 0x46, + 0x00, 0x22, 0x04, 0xa9, 0x03, 0xa8, 0xfd, 0xf7, 0x81, 0xff, 0x04, 0x46, 0x80, 0xb9, 0x04, 0x9b, 0x28, 0x46, 0x03, 0x99, 0x2b, 0x60, 0xfe, 0xf7, - 0xcd, 0xfb, 0x04, 0x46, 0x00, 0x28, 0x31, 0xd1, 0x95, 0xf9, 0x2b, 0x30, + 0xf7, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x31, 0xd1, 0x95, 0xf9, 0x2b, 0x30, 0x00, 0x2b, 0x0c, 0xdb, 0xab, 0x79, 0xdb, 0x06, 0x03, 0xd4, 0x05, 0x24, 0x00, 0x23, 0x2b, 0x60, 0x10, 0xe0, 0x04, 0x9b, 0xe9, 0x69, 0x18, 0x78, - 0xfb, 0xf7, 0xf6, 0xf9, 0xa8, 0x60, 0x04, 0x9b, 0x28, 0x46, 0xdb, 0x88, - 0xab, 0x80, 0xf6, 0xf7, 0x37, 0xfa, 0x04, 0x28, 0x04, 0x46, 0xec, 0xd0, + 0xfb, 0xf7, 0xaa, 0xfb, 0xa8, 0x60, 0x04, 0x9b, 0x28, 0x46, 0xdb, 0x88, + 0xab, 0x80, 0xf5, 0xf7, 0x25, 0xff, 0x04, 0x28, 0x04, 0x46, 0xec, 0xd0, 0x00, 0x28, 0xeb, 0xd1, 0x33, 0x68, 0x30, 0x46, 0xdb, 0x6f, 0x98, 0x47, - 0x74, 0xb1, 0x28, 0x46, 0x0e, 0xf0, 0xfe, 0xf9, 0x20, 0x46, 0xfb, 0xf7, - 0xd7, 0xf9, 0x04, 0x46, 0x05, 0xa8, 0xfb, 0xf7, 0x45, 0xf9, 0x20, 0x46, + 0x74, 0xb1, 0x28, 0x46, 0x0e, 0xf0, 0xa6, 0xfe, 0x20, 0x46, 0xfb, 0xf7, + 0x8b, 0xfb, 0x04, 0x46, 0x05, 0xa8, 0xfb, 0xf7, 0xfa, 0xfa, 0x20, 0x46, 0x0b, 0xb0, 0xf0, 0xbd, 0x09, 0x24, 0xeb, 0xe7, 0x3d, 0x60, 0xf5, 0xe7, 0x04, 0x28, 0xd2, 0xd0, 0xd2, 0xe7, 0x2d, 0xe9, 0xf0, 0x47, 0x07, 0x46, - 0x94, 0xb0, 0x1c, 0x46, 0x28, 0x20, 0x88, 0x46, 0x01, 0x92, 0x02, 0xf0, - 0x79, 0xf9, 0x01, 0x9a, 0x39, 0x6d, 0x05, 0x46, 0x04, 0xa8, 0xff, 0xf7, + 0x94, 0xb0, 0x1c, 0x46, 0x28, 0x20, 0x88, 0x46, 0x01, 0x92, 0x01, 0xf0, + 0x1f, 0xff, 0x01, 0x9a, 0x39, 0x6d, 0x05, 0x46, 0x04, 0xa8, 0xff, 0xf7, 0x61, 0xff, 0xa1, 0x07, 0x56, 0xbf, 0x04, 0xf0, 0x01, 0x06, 0x03, 0x26, 0x01, 0x36, 0xa2, 0x05, 0x05, 0xd5, 0x63, 0x05, 0x4c, 0xbf, 0x46, 0xf0, 0x08, 0x06, 0x46, 0xf0, 0x10, 0x06, 0x3b, 0x68, 0x20, 0x07, 0x38, 0x46, 0x9b, 0x6f, 0x48, 0xbf, 0x46, 0xf0, 0x30, 0x06, 0x98, 0x47, 0x04, 0x9b, 0x02, 0x93, 0x95, 0xb9, 0x09, 0x24, 0x3b, 0x68, 0x38, 0x46, 0xdb, 0x6f, - 0x98, 0x47, 0x28, 0x46, 0x0e, 0xf0, 0xbc, 0xf9, 0x20, 0x46, 0xfb, 0xf7, - 0x95, 0xf9, 0x04, 0x46, 0x04, 0xa8, 0xfb, 0xf7, 0x03, 0xf9, 0x20, 0x46, + 0x98, 0x47, 0x28, 0x46, 0x0e, 0xf0, 0x64, 0xfe, 0x20, 0x46, 0xfb, 0xf7, + 0x49, 0xfb, 0x04, 0x46, 0x04, 0xa8, 0xfb, 0xf7, 0xb8, 0xfa, 0x20, 0x46, 0x14, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x32, 0x46, 0x03, 0xa9, 0x02, 0xa8, - 0xfd, 0xf7, 0xd6, 0xfd, 0x00, 0x28, 0x40, 0xf0, 0xeb, 0x80, 0x03, 0x9b, - 0x09, 0xa8, 0x02, 0x99, 0x09, 0x93, 0xfe, 0xf7, 0x4b, 0xfb, 0x04, 0x46, + 0xfd, 0xf7, 0x00, 0xff, 0x00, 0x28, 0x40, 0xf0, 0xeb, 0x80, 0x03, 0x9b, + 0x09, 0xa8, 0x02, 0x99, 0x09, 0x93, 0xfe, 0xf7, 0x75, 0xfc, 0x04, 0x46, 0x20, 0xb9, 0x9d, 0xf9, 0x4f, 0x30, 0x00, 0x2b, 0xb8, 0xbf, 0x06, 0x24, 0x16, 0xf0, 0x1c, 0x0f, 0x00, 0xf0, 0xc9, 0x80, 0x00, 0x2c, 0x79, 0xd0, 0x04, 0x2c, 0x40, 0xf0, 0xce, 0x80, 0x09, 0xa8, 0xdd, 0xf8, 0x24, 0x90, - 0xf6, 0xf7, 0xba, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xd2, 0x80, - 0x0f, 0x99, 0x48, 0x46, 0xfd, 0xf7, 0x08, 0xfc, 0x04, 0x46, 0x00, 0x28, + 0xf5, 0xf7, 0xa8, 0xfe, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xd2, 0x80, + 0x0f, 0x99, 0x48, 0x46, 0xfd, 0xf7, 0x33, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xca, 0x80, 0x10, 0x9b, 0x1b, 0x78, 0xe5, 0x2b, 0x5a, 0xd1, - 0x0f, 0x99, 0x48, 0x46, 0xfd, 0xf7, 0xfc, 0xfb, 0x04, 0x46, 0x00, 0x28, + 0x0f, 0x99, 0x48, 0x46, 0xfd, 0xf7, 0x27, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xb1, 0x80, 0x01, 0x46, 0x20, 0x22, 0x10, 0x98, 0x46, 0xf0, - 0x08, 0x06, 0x0e, 0xf0, 0xd7, 0xf9, 0x11, 0xab, 0x10, 0x9a, 0x03, 0xcb, + 0x08, 0x06, 0x0e, 0xf0, 0x7d, 0xfe, 0x11, 0xab, 0x10, 0x9a, 0x03, 0xcb, 0x10, 0x60, 0x51, 0x60, 0x19, 0x88, 0x9b, 0x78, 0x11, 0x81, 0x93, 0x72, - 0x01, 0x23, 0x89, 0xf8, 0x03, 0x30, 0xff, 0xf7, 0x7f, 0xfb, 0x01, 0x46, - 0x01, 0x90, 0x10, 0x98, 0x0e, 0x30, 0xfb, 0xf7, 0xa1, 0xf9, 0x10, 0x98, - 0x01, 0x99, 0x16, 0x30, 0xfb, 0xf7, 0x9c, 0xf9, 0x03, 0x9c, 0x10, 0x99, - 0x20, 0x78, 0xfb, 0xf7, 0x35, 0xf9, 0x20, 0x23, 0x81, 0x46, 0xcb, 0x72, + 0x01, 0x23, 0x89, 0xf8, 0x03, 0x30, 0xff, 0xf7, 0x07, 0xfb, 0x01, 0x46, + 0x01, 0x90, 0x10, 0x98, 0x0e, 0x30, 0xfb, 0xf7, 0x55, 0xfb, 0x10, 0x98, + 0x01, 0x99, 0x16, 0x30, 0xfb, 0xf7, 0x50, 0xfb, 0x03, 0x9c, 0x10, 0x99, + 0x20, 0x78, 0xfb, 0xf7, 0xe9, 0xfa, 0x20, 0x23, 0x81, 0x46, 0xcb, 0x72, 0x00, 0x23, 0x10, 0x9a, 0x93, 0x76, 0xd3, 0x76, 0x21, 0x78, 0x03, 0x29, 0x04, 0xbf, 0x13, 0x75, 0x53, 0x75, 0x10, 0x9a, 0x13, 0x77, 0x53, 0x77, 0x93, 0x77, 0xd3, 0x77, 0x01, 0x23, 0xe3, 0x70, 0xa0, 0xb1, 0x01, 0x46, - 0x00, 0x22, 0x09, 0xa8, 0xd4, 0xf8, 0x30, 0xa0, 0xfe, 0xf7, 0xa2, 0xfb, + 0x00, 0x22, 0x09, 0xa8, 0xd4, 0xf8, 0x30, 0xa0, 0xfe, 0xf7, 0xcc, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x6d, 0xd1, 0x51, 0x46, 0x03, 0x98, 0xfd, 0xf7, - 0xb1, 0xfb, 0x09, 0xf1, 0xff, 0x33, 0x03, 0x9a, 0x04, 0x46, 0x13, 0x61, + 0xdc, 0xfc, 0x09, 0xf1, 0xff, 0x33, 0x03, 0x9a, 0x04, 0x46, 0x13, 0x61, 0x00, 0x28, 0x62, 0xd1, 0x31, 0x07, 0x48, 0xbf, 0x46, 0xf0, 0x40, 0x06, 0x0d, 0xe0, 0x00, 0x2b, 0xa2, 0xd0, 0x01, 0x21, 0x09, 0xa8, 0xfe, 0xf7, - 0xc9, 0xf9, 0x8d, 0xe7, 0x9d, 0xf8, 0x2a, 0x30, 0x13, 0xf0, 0x11, 0x0f, + 0xf3, 0xfa, 0x8d, 0xe7, 0x9d, 0xf8, 0x2a, 0x30, 0x13, 0xf0, 0x11, 0x0f, 0x50, 0xd1, 0x31, 0x07, 0xb1, 0xd4, 0x03, 0x9c, 0xdd, 0xf8, 0x40, 0x90, 0x23, 0x6b, 0x49, 0x46, 0xc5, 0xf8, 0x24, 0x90, 0x2b, 0x62, 0x20, 0x78, - 0xfb, 0xf7, 0xee, 0xf8, 0x01, 0x46, 0xa8, 0x60, 0x09, 0xf1, 0x1c, 0x00, - 0xfb, 0xf7, 0x52, 0xf9, 0xe3, 0x88, 0xb2, 0x06, 0x81, 0x46, 0xab, 0x80, + 0xfb, 0xf7, 0xa2, 0xfa, 0x01, 0x46, 0xa8, 0x60, 0x09, 0xf1, 0x1c, 0x00, + 0xfb, 0xf7, 0x06, 0xfb, 0xe3, 0x88, 0xb2, 0x06, 0x81, 0x46, 0xab, 0x80, 0x4f, 0xf0, 0x00, 0x03, 0xe8, 0x60, 0x2c, 0x60, 0x2e, 0x74, 0x6b, 0x74, 0xeb, 0x61, 0x6b, 0x61, 0x1f, 0xd5, 0xf0, 0xb1, 0x63, 0x89, 0xa4, 0x89, 0x68, 0x61, 0x5c, 0x43, 0x4c, 0x45, 0x2d, 0xd2, 0x28, 0x68, 0xa9, 0xeb, - 0x04, 0x09, 0xfd, 0xf7, 0x85, 0xfb, 0x01, 0x28, 0x01, 0x46, 0x27, 0xd9, + 0x04, 0x09, 0xfd, 0xf7, 0xb0, 0xfc, 0x01, 0x28, 0x01, 0x46, 0x27, 0xd9, 0x43, 0x1c, 0xf3, 0xd1, 0x01, 0x24, 0xa9, 0x61, 0xec, 0xb9, 0x03, 0x98, 0x83, 0x89, 0xb9, 0xfb, 0xf3, 0xf2, 0x03, 0xfb, 0x12, 0x93, 0x23, 0xb1, - 0xfd, 0xf7, 0x51, 0xfb, 0xf0, 0xb1, 0x10, 0x44, 0xe8, 0x61, 0x3b, 0x68, + 0xfd, 0xf7, 0x7c, 0xfc, 0xf0, 0xb1, 0x10, 0x44, 0xe8, 0x61, 0x3b, 0x68, 0x38, 0x46, 0x00, 0x24, 0xdb, 0x6f, 0x98, 0x47, 0xc8, 0xf8, 0x00, 0x50, 0x16, 0xe7, 0x44, 0xb9, 0x9d, 0xf8, 0x2a, 0x30, 0xda, 0x06, 0x0d, 0xd4, 0xb4, 0x07, 0x9f, 0xd5, 0xd8, 0x07, 0x9d, 0xd5, 0x07, 0x24, 0x00, 0x23, @@ -4475,14 +4290,14 @@ const unsigned char mcuboot_bin[] = { 0x04, 0x2c, 0xef, 0xd0, 0xef, 0xe7, 0x70, 0xb5, 0x98, 0xb0, 0x05, 0x46, 0x16, 0x46, 0x0a, 0x46, 0x01, 0x6d, 0x02, 0xa8, 0xff, 0xf7, 0x30, 0xfe, 0x2b, 0x68, 0x28, 0x46, 0x9b, 0x6f, 0x98, 0x47, 0x18, 0x22, 0x00, 0x21, - 0x07, 0xa8, 0x0e, 0xf0, 0x0b, 0xf9, 0x02, 0x9b, 0x00, 0x22, 0x0d, 0xa9, - 0x01, 0xa8, 0x01, 0x93, 0xfd, 0xf7, 0xc6, 0xfc, 0x04, 0x46, 0x50, 0xb9, - 0x01, 0x99, 0x0d, 0xa8, 0xfe, 0xf7, 0x3e, 0xfa, 0x04, 0x46, 0x20, 0xb9, + 0x07, 0xa8, 0x0e, 0xf0, 0xb1, 0xfd, 0x02, 0x9b, 0x00, 0x22, 0x0d, 0xa9, + 0x01, 0xa8, 0x01, 0x93, 0xfd, 0xf7, 0xf0, 0xfd, 0x04, 0x46, 0x50, 0xb9, + 0x01, 0x99, 0x0d, 0xa8, 0xfe, 0xf7, 0x68, 0xfb, 0x04, 0x46, 0x20, 0xb9, 0x9d, 0xf9, 0x5f, 0x30, 0x00, 0x2b, 0x0e, 0xda, 0x06, 0x24, 0x2b, 0x68, - 0x28, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x20, 0x46, 0xfb, 0xf7, 0x64, 0xf8, - 0x04, 0x46, 0x02, 0xa8, 0xfa, 0xf7, 0xd2, 0xff, 0x20, 0x46, 0x18, 0xb0, + 0x28, 0x46, 0xdb, 0x6f, 0x98, 0x47, 0x20, 0x46, 0xfb, 0xf7, 0x18, 0xfa, + 0x04, 0x46, 0x02, 0xa8, 0xfb, 0xf7, 0x87, 0xf9, 0x20, 0x46, 0x18, 0xb0, 0x70, 0xbd, 0x13, 0x9b, 0x8d, 0xf8, 0x25, 0x00, 0x1b, 0xb1, 0x07, 0xa9, - 0x0d, 0xa8, 0xfb, 0xf7, 0xcf, 0xf8, 0x9d, 0xf8, 0x24, 0x20, 0x40, 0xf2, + 0x0d, 0xa8, 0xfb, 0xf7, 0x83, 0xfa, 0x9d, 0xf8, 0x24, 0x20, 0x40, 0xf2, 0xff, 0x11, 0x07, 0x9b, 0x28, 0x46, 0x12, 0xf0, 0x10, 0x0f, 0x4f, 0xf0, 0x00, 0x04, 0x33, 0x61, 0x14, 0xbf, 0x4f, 0xf4, 0x80, 0x43, 0x4f, 0xf4, 0x00, 0x43, 0x12, 0xf0, 0x01, 0x0f, 0x40, 0xf2, 0x6d, 0x12, 0x08, 0xbf, @@ -4490,34 +4305,34 @@ const unsigned char mcuboot_bin[] = { 0xd5, 0xe7, 0xf0, 0xb5, 0x9f, 0xb0, 0x05, 0x46, 0x0a, 0x46, 0x01, 0x6d, 0x03, 0xa8, 0xff, 0xf7, 0xd9, 0xfd, 0x2b, 0x68, 0x28, 0x46, 0x9b, 0x6f, 0x98, 0x47, 0x03, 0x9b, 0x02, 0x22, 0x02, 0xa9, 0x01, 0xa8, 0x01, 0x93, - 0xfd, 0xf7, 0x74, 0xfc, 0x04, 0x46, 0x80, 0xb9, 0x02, 0x9b, 0x08, 0xa8, - 0x01, 0x99, 0x08, 0x93, 0xfe, 0xf7, 0xea, 0xf9, 0x04, 0x46, 0x40, 0xb9, + 0xfd, 0xf7, 0x9e, 0xfd, 0x04, 0x46, 0x80, 0xb9, 0x02, 0x9b, 0x08, 0xa8, + 0x01, 0x99, 0x08, 0x93, 0xfe, 0xf7, 0x14, 0xfb, 0x04, 0x46, 0x40, 0xb9, 0x9d, 0xf9, 0x4b, 0x30, 0x00, 0x2b, 0x49, 0xdb, 0x9d, 0xf8, 0x26, 0x70, 0xfa, 0x07, 0x10, 0xd5, 0x07, 0x24, 0x2b, 0x68, 0x28, 0x46, 0xdb, 0x6f, - 0x98, 0x47, 0x07, 0x2c, 0x40, 0xd0, 0x20, 0x46, 0xfb, 0xf7, 0x0a, 0xf8, - 0x04, 0x46, 0x03, 0xa8, 0xfa, 0xf7, 0x78, 0xff, 0x20, 0x46, 0x1f, 0xb0, - 0xf0, 0xbd, 0x02, 0x9c, 0x0f, 0x99, 0x20, 0x78, 0xfb, 0xf7, 0x06, 0xf8, + 0x98, 0x47, 0x07, 0x2c, 0x40, 0xd0, 0x20, 0x46, 0xfb, 0xf7, 0xbe, 0xf9, + 0x04, 0x46, 0x03, 0xa8, 0xfb, 0xf7, 0x2d, 0xf9, 0x20, 0x46, 0x1f, 0xb0, + 0xf0, 0xbd, 0x02, 0x9c, 0x0f, 0x99, 0x20, 0x78, 0xfb, 0xf7, 0xba, 0xf9, 0xfb, 0x06, 0x06, 0x46, 0x12, 0xd4, 0x08, 0x9f, 0x0e, 0x99, 0x38, 0x46, - 0xfd, 0xf7, 0x9c, 0xfa, 0x04, 0x46, 0x00, 0x28, 0xdf, 0xd1, 0x0f, 0x9b, + 0xfd, 0xf7, 0xc7, 0xfb, 0x04, 0x46, 0x00, 0x28, 0xdf, 0xd1, 0x0f, 0x9b, 0xe5, 0x22, 0x1a, 0x70, 0x01, 0x23, 0xfb, 0x70, 0xae, 0xb9, 0x02, 0x98, - 0xfb, 0xf7, 0x74, 0xfd, 0x04, 0x46, 0xd4, 0xe7, 0x15, 0x90, 0x13, 0xa8, - 0x13, 0x94, 0xf6, 0xf7, 0x33, 0xf8, 0x04, 0x46, 0x00, 0x28, 0xcc, 0xd1, - 0x13, 0xa8, 0xf6, 0xf7, 0x61, 0xf8, 0x04, 0x46, 0x00, 0x28, 0xc5, 0xd0, + 0xfb, 0xf7, 0x5c, 0xfe, 0x04, 0x46, 0xd4, 0xe7, 0x15, 0x90, 0x13, 0xa8, + 0x13, 0x94, 0xf5, 0xf7, 0x21, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xcc, 0xd1, + 0x13, 0xa8, 0xf5, 0xf7, 0x4f, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xc5, 0xd0, 0x04, 0x28, 0xc4, 0xd1, 0xdb, 0xe7, 0x02, 0x46, 0x31, 0x46, 0x08, 0xa8, - 0xfe, 0xf7, 0x62, 0xfa, 0x04, 0x46, 0x00, 0x28, 0xbb, 0xd1, 0xe0, 0xe7, + 0xfe, 0xf7, 0x8c, 0xfb, 0x04, 0x46, 0x00, 0x28, 0xbb, 0xd1, 0xe0, 0xe7, 0x06, 0x24, 0xb8, 0xe7, 0x6f, 0xf0, 0x59, 0x04, 0xbf, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0xf3, 0x4d, 0x00, 0xf1, 0x1c, 0x03, 0x07, 0x46, 0x53, 0xe8, 0x00, 0x2f, 0x01, 0x32, 0x43, 0xe8, 0x00, 0x26, 0x00, 0x2e, 0xf8, 0xd1, 0x01, 0x2a, 0x40, 0xf0, 0x86, 0x80, 0x78, 0x68, 0x03, 0x68, 0x9b, 0x68, 0x98, 0x47, 0x06, 0x46, 0x68, 0xbb, 0x78, 0x68, 0x03, 0x68, 0x5b, 0x6a, 0x98, 0x47, 0x42, 0x28, 0x38, 0xbf, 0x42, 0x20, 0x04, 0x46, 0x01, 0xf0, - 0x63, 0xff, 0x80, 0x46, 0x78, 0x68, 0xc4, 0xf5, 0x00, 0x72, 0x03, 0x68, + 0x09, 0xfd, 0x80, 0x46, 0x78, 0x68, 0xc4, 0xf5, 0x00, 0x72, 0x03, 0x68, 0x41, 0x46, 0xcd, 0xe9, 0x00, 0x46, 0x5d, 0x69, 0x33, 0x46, 0xa8, 0x47, 0x06, 0x46, 0x98, 0xb9, 0xa4, 0xf1, 0x42, 0x03, 0x08, 0xeb, 0x03, 0x05, 0x95, 0xf8, 0x40, 0x30, 0x55, 0x2b, 0x64, 0xd1, 0x95, 0xf8, 0x41, 0x30, 0xaa, 0x2b, 0x60, 0xd1, 0x7b, 0x7e, 0x05, 0xeb, 0x03, 0x13, 0x13, 0xf8, - 0x10, 0x2c, 0x52, 0x06, 0x08, 0xd0, 0x2e, 0x4e, 0x40, 0x46, 0x0d, 0xf0, - 0xa9, 0xff, 0x00, 0x23, 0x87, 0xf8, 0x20, 0x30, 0xfb, 0x61, 0x4c, 0xe0, + 0x10, 0x2c, 0x52, 0x06, 0x08, 0xd0, 0x2e, 0x4e, 0x40, 0x46, 0x0e, 0xf0, + 0x51, 0xfc, 0x00, 0x23, 0x87, 0xf8, 0x20, 0x30, 0xfb, 0x61, 0x4c, 0xe0, 0x13, 0xf8, 0x0c, 0x2c, 0x0f, 0x2a, 0x04, 0xd8, 0x48, 0xf2, 0x21, 0x03, 0xd3, 0x40, 0xdb, 0x07, 0xed, 0xd4, 0x78, 0x68, 0x4f, 0xf0, 0x00, 0x0a, 0x03, 0x68, 0xdb, 0x6a, 0x98, 0x47, 0x7b, 0x7e, 0xb0, 0xf5, 0x00, 0x7f, @@ -4530,31 +4345,31 @@ const unsigned char mcuboot_bin[] = { 0x17, 0x42, 0x63, 0xf3, 0x1f, 0x62, 0xa0, 0xfb, 0x02, 0x45, 0x78, 0x68, 0x52, 0x46, 0x03, 0x68, 0xc7, 0xe9, 0x04, 0x45, 0xcd, 0xe9, 0x00, 0x45, 0x59, 0x6c, 0x5b, 0x46, 0x88, 0x47, 0x00, 0x28, 0xaf, 0xd0, 0x01, 0x23, - 0x40, 0x46, 0x87, 0xf8, 0x20, 0x30, 0x0d, 0xf0, 0x57, 0xff, 0x30, 0x46, + 0x40, 0x46, 0x87, 0xf8, 0x20, 0x30, 0x0e, 0xf0, 0xff, 0xfb, 0x30, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x8d, 0x02, 0x4e, 0xa4, 0xe7, 0x00, 0xbf, 0xe2, 0xf3, 0xff, 0xff, 0xe3, 0xf3, 0xff, 0xff, 0x70, 0xb5, 0x1d, 0x4b, 0x05, 0x46, 0x04, 0x46, 0x45, 0xf8, 0x54, 0x3b, 0x28, 0x46, 0xfe, 0xf7, - 0xcf, 0xfa, 0x20, 0x6c, 0x66, 0x69, 0x0a, 0xf0, 0x77, 0xfd, 0x00, 0x23, + 0xf9, 0xfb, 0x20, 0x6c, 0x66, 0x69, 0x0a, 0xf0, 0x75, 0xfc, 0x00, 0x23, 0x63, 0x61, 0x94, 0xf8, 0x3d, 0x30, 0x6b, 0xb9, 0x01, 0x23, 0x84, 0xf8, 0x3d, 0x30, 0x4e, 0xb1, 0xef, 0xf3, 0x05, 0x83, 0x33, 0xb9, 0x0a, 0xf0, - 0xff, 0xf9, 0x18, 0xb9, 0x30, 0x46, 0xdf, 0xf8, 0x40, 0xc0, 0x00, 0xdf, - 0x28, 0x46, 0xfe, 0xf7, 0x95, 0xfa, 0x94, 0xf8, 0x3c, 0x30, 0x2b, 0xb1, - 0xa0, 0x6a, 0x08, 0xb1, 0x0d, 0xf0, 0x22, 0xff, 0x00, 0x23, 0xa3, 0x62, - 0x60, 0x6d, 0x0a, 0xf0, 0xeb, 0xfd, 0x25, 0x6c, 0xef, 0xf3, 0x05, 0x83, - 0x33, 0xb9, 0x0a, 0xf0, 0xe5, 0xf9, 0x18, 0xb9, 0x28, 0x46, 0xdf, 0xf8, - 0x10, 0xc0, 0x00, 0xdf, 0x20, 0x46, 0x70, 0xbd, 0x6c, 0xde, 0x01, 0x08, - 0x99, 0x4f, 0x01, 0x08, 0x69, 0x50, 0x01, 0x08, 0x10, 0xb5, 0x04, 0x46, - 0xff, 0xf7, 0xba, 0xff, 0x20, 0x46, 0x0d, 0xf0, 0x03, 0xff, 0x20, 0x46, + 0xef, 0xf8, 0x18, 0xb9, 0x30, 0x46, 0xdf, 0xf8, 0x40, 0xc0, 0x00, 0xdf, + 0x28, 0x46, 0xfe, 0xf7, 0xbf, 0xfb, 0x94, 0xf8, 0x3c, 0x30, 0x2b, 0xb1, + 0xa0, 0x6a, 0x08, 0xb1, 0x0e, 0xf0, 0xca, 0xfb, 0x00, 0x23, 0xa3, 0x62, + 0x60, 0x6d, 0x0a, 0xf0, 0xe9, 0xfc, 0x25, 0x6c, 0xef, 0xf3, 0x05, 0x83, + 0x33, 0xb9, 0x0a, 0xf0, 0xd5, 0xf8, 0x18, 0xb9, 0x28, 0x46, 0xdf, 0xf8, + 0x10, 0xc0, 0x00, 0xdf, 0x20, 0x46, 0x70, 0xbd, 0xcc, 0xd8, 0x01, 0x08, + 0xc5, 0x42, 0x01, 0x08, 0x95, 0x43, 0x01, 0x08, 0x10, 0xb5, 0x04, 0x46, + 0xff, 0xf7, 0xba, 0xff, 0x20, 0x46, 0x0e, 0xf0, 0xab, 0xfb, 0x20, 0x46, 0x10, 0xbd, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x47, 0x00, 0x23, 0x8a, 0xb0, 0x81, 0x46, 0x42, 0xf2, 0x10, 0x78, 0xdf, 0xf8, 0x5c, 0xa0, 0x01, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x8d, 0xf8, 0x27, 0x30, 0xef, 0xf3, - 0x05, 0x83, 0x2b, 0xb9, 0x0a, 0xf0, 0xba, 0xf9, 0x10, 0xb9, 0x01, 0x20, + 0x05, 0x83, 0x2b, 0xb9, 0x0a, 0xf0, 0xaa, 0xf8, 0x10, 0xb9, 0x01, 0x20, 0xd4, 0x46, 0x00, 0xdf, 0x0d, 0xf1, 0x27, 0x03, 0x4f, 0xf0, 0xff, 0x32, 0x05, 0x21, 0x48, 0x46, 0x04, 0x93, 0x00, 0x23, 0xcd, 0xe9, 0x06, 0x45, 0x00, 0x93, 0x4f, 0xf0, 0xff, 0x33, 0xcd, 0xe9, 0x02, 0x67, 0x00, 0xf0, 0x7f, 0xf8, 0x9d, 0xf8, 0x27, 0x30, 0x13, 0xf0, 0x01, 0x00, 0x02, 0xd0, 0xb8, 0xf1, 0x01, 0x08, 0xdd, 0xd1, 0x80, 0xf0, 0x01, 0x00, 0x0a, 0xb0, - 0xbd, 0xe8, 0xf0, 0x87, 0xb9, 0x55, 0x01, 0x08, 0xf0, 0xb5, 0x00, 0x23, + 0xbd, 0xe8, 0xf0, 0x87, 0xe5, 0x48, 0x01, 0x08, 0xf0, 0xb5, 0x00, 0x23, 0x8b, 0xb0, 0x00, 0x26, 0x00, 0x27, 0x8d, 0xf8, 0x27, 0x30, 0x4f, 0xf0, 0xff, 0x32, 0x04, 0x93, 0x06, 0x21, 0x00, 0x93, 0x4f, 0xf0, 0xff, 0x33, 0x04, 0x46, 0xcd, 0xe9, 0x06, 0x67, 0xcd, 0xe9, 0x02, 0x67, 0x00, 0xf0, @@ -4568,7 +4383,7 @@ const unsigned char mcuboot_bin[] = { 0xf4, 0x30, 0x86, 0xb0, 0x06, 0x46, 0x01, 0x33, 0x17, 0xd0, 0x14, 0x0e, 0x8d, 0xf8, 0x17, 0x40, 0xff, 0xf7, 0xb8, 0xff, 0x70, 0xb9, 0x01, 0x23, 0x4f, 0xf0, 0xff, 0x32, 0xd6, 0xf8, 0xf4, 0x10, 0x00, 0x93, 0x0d, 0xf1, - 0x17, 0x03, 0xcd, 0xe9, 0x01, 0x00, 0x30, 0x1d, 0xf7, 0xf7, 0x7e, 0xff, + 0x17, 0x03, 0xcd, 0xe9, 0x01, 0x00, 0x30, 0x1d, 0xf8, 0xf7, 0x16, 0xf8, 0x06, 0xb0, 0x70, 0xbd, 0x4f, 0xf0, 0xff, 0x30, 0xfa, 0xe7, 0x90, 0xf8, 0xfa, 0x31, 0x03, 0x2b, 0x0e, 0xd0, 0x6b, 0x1c, 0x08, 0xbf, 0xb2, 0xf1, 0xff, 0x3f, 0x09, 0xd0, 0x00, 0x2d, 0x08, 0xbf, 0xb2, 0xf1, 0x80, 0x7f, @@ -4577,7 +4392,7 @@ const unsigned char mcuboot_bin[] = { 0x15, 0x46, 0x0c, 0x9f, 0xdd, 0xf8, 0x38, 0x80, 0xdd, 0xf8, 0x40, 0x90, 0x01, 0x91, 0xff, 0xf7, 0xbe, 0xff, 0x58, 0xb9, 0x33, 0x46, 0x2a, 0x46, 0x01, 0x99, 0x20, 0x1d, 0x0a, 0x97, 0xcd, 0xe9, 0x0b, 0x89, 0x03, 0xb0, - 0xbd, 0xe8, 0xf0, 0x43, 0xf7, 0xf7, 0x4a, 0xbf, 0x03, 0xb0, 0xbd, 0xe8, + 0xbd, 0xe8, 0xf0, 0x43, 0xf7, 0xf7, 0xe2, 0xbf, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0xd0, 0xf8, 0xe8, 0x30, 0x01, 0x33, 0x2d, 0xe9, 0xf0, 0x47, 0x05, 0x46, 0x88, 0xb0, 0x8a, 0x46, 0x1d, 0xd1, 0xff, 0xf7, 0x68, 0xff, 0x28, 0xb1, 0x4f, 0xf0, 0xff, 0x34, 0x20, 0x46, 0x08, 0xb0, 0xbd, 0xe8, @@ -4601,35 +4416,35 @@ const unsigned char mcuboot_bin[] = { 0x04, 0x94, 0xcd, 0xe9, 0x06, 0x30, 0xcd, 0xe9, 0x02, 0x67, 0x4f, 0xf0, 0xff, 0x33, 0x28, 0x46, 0xff, 0xf7, 0x62, 0xff, 0x09, 0xb0, 0xf0, 0xbd, 0xf0, 0xb5, 0x00, 0xf1, 0xbc, 0x07, 0x04, 0x46, 0x89, 0xb0, 0x38, 0x46, - 0xfe, 0xf7, 0x3c, 0xf9, 0x94, 0xf8, 0x04, 0x52, 0x2d, 0xb9, 0x38, 0x46, - 0xc4, 0xf8, 0x00, 0x52, 0xfe, 0xf7, 0x14, 0xf9, 0x09, 0xe0, 0xd4, 0xf8, + 0xfe, 0xf7, 0x66, 0xfa, 0x94, 0xf8, 0x04, 0x52, 0x2d, 0xb9, 0x38, 0x46, + 0xc4, 0xf8, 0x00, 0x52, 0xfe, 0xf7, 0x3e, 0xfa, 0x09, 0xe0, 0xd4, 0xf8, 0x00, 0x62, 0x01, 0x3e, 0xc4, 0xf8, 0x00, 0x62, 0x36, 0xb1, 0x00, 0x25, - 0x38, 0x46, 0xfe, 0xf7, 0x09, 0xf9, 0x28, 0x46, 0x09, 0xb0, 0xf0, 0xbd, + 0x38, 0x46, 0xfe, 0xf7, 0x33, 0xfa, 0x28, 0x46, 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0x22, 0x00, 0x23, 0x04, 0x21, 0x20, 0x46, 0x04, 0x96, 0x00, 0x96, 0xcd, 0xe9, 0x06, 0x23, 0xcd, 0xe9, 0x02, 0x23, 0x4f, 0xf0, 0xff, 0x33, 0x4f, 0xf0, 0xff, 0x32, 0xff, 0xf7, 0x32, 0xff, 0x00, 0x28, 0x84, 0xf8, 0x04, 0x62, 0x38, 0x46, 0x0c, 0xbf, 0x00, 0x25, 0x6f, 0xf4, 0x7a, 0x65, - 0xfe, 0xf7, 0xec, 0xf8, 0xd4, 0xf8, 0xb4, 0x30, 0x00, 0x2b, 0xde, 0xd1, - 0x10, 0x48, 0xb4, 0xf9, 0xb8, 0x40, 0x02, 0xf0, 0xa1, 0xfd, 0xfe, 0xf7, - 0x01, 0xf9, 0x0e, 0x4b, 0x1b, 0x68, 0x03, 0xf1, 0x14, 0x01, 0x1a, 0x46, + 0xfe, 0xf7, 0x16, 0xfa, 0xd4, 0xf8, 0xb4, 0x30, 0x00, 0x2b, 0xde, 0xd1, + 0x10, 0x48, 0xb4, 0xf9, 0xb8, 0x40, 0x02, 0xf0, 0x7d, 0xfb, 0xfe, 0xf7, + 0x2b, 0xfa, 0x0e, 0x4b, 0x1b, 0x68, 0x03, 0xf1, 0x14, 0x01, 0x1a, 0x46, 0x02, 0x33, 0xb2, 0xf9, 0x00, 0x00, 0xa0, 0x42, 0x0c, 0xd1, 0x4f, 0xf6, 0xff, 0x73, 0x13, 0x80, 0x08, 0x4a, 0x13, 0x68, 0x00, 0x2b, 0x01, 0xdd, - 0x01, 0x3b, 0x13, 0x60, 0x03, 0x48, 0x02, 0xf0, 0x89, 0xfd, 0xb3, 0xe7, - 0x8b, 0x42, 0xea, 0xd1, 0xf8, 0xe7, 0x00, 0xbf, 0x98, 0x06, 0x00, 0x24, - 0xc0, 0x06, 0x00, 0x24, 0xc4, 0x06, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x47, + 0x01, 0x3b, 0x13, 0x60, 0x03, 0x48, 0x02, 0xf0, 0x65, 0xfb, 0xb3, 0xe7, + 0x8b, 0x42, 0xea, 0xd1, 0xf8, 0xe7, 0x00, 0xbf, 0x2c, 0x15, 0x02, 0x24, + 0xd8, 0x06, 0x00, 0x24, 0x54, 0x15, 0x02, 0x24, 0x2d, 0xe9, 0xf0, 0x47, 0x00, 0xf1, 0xbc, 0x07, 0x88, 0xb0, 0x04, 0x46, 0x15, 0x46, 0x10, 0x9e, - 0x38, 0x46, 0x05, 0x93, 0x89, 0x46, 0xfe, 0xf7, 0xd3, 0xf8, 0x2a, 0x46, + 0x38, 0x46, 0x05, 0x93, 0x89, 0x46, 0xfe, 0xf7, 0xfd, 0xf9, 0x2a, 0x46, 0x05, 0x9b, 0x20, 0x46, 0xd4, 0xf8, 0xe0, 0xa0, 0x07, 0x96, 0xff, 0xf7, 0xb2, 0xfe, 0xa0, 0xbb, 0x94, 0xf8, 0xfd, 0x31, 0x04, 0xf1, 0x04, 0x08, 0x94, 0xf8, 0xf9, 0x21, 0x03, 0x93, 0x40, 0x46, 0x94, 0xf8, 0xfe, 0x31, 0x02, 0x93, 0x94, 0xf8, 0xfb, 0x31, 0xcd, 0xe9, 0x00, 0x23, 0x94, 0xf8, - 0xfa, 0x31, 0x94, 0xf8, 0xf8, 0x11, 0x02, 0xf0, 0xa1, 0xfe, 0x06, 0x46, + 0xfa, 0x31, 0x94, 0xf8, 0xf8, 0x11, 0x02, 0xf0, 0x8d, 0xfc, 0x06, 0x46, 0xe8, 0xb9, 0x94, 0xf8, 0xfb, 0x01, 0x07, 0xab, 0x51, 0x46, 0xb0, 0xfa, 0x80, 0xf0, 0x40, 0x09, 0xcd, 0xe9, 0x00, 0x93, 0x42, 0x42, 0x2b, 0x46, - 0x40, 0x46, 0xf7, 0xf7, 0x8d, 0xfd, 0x05, 0x46, 0x32, 0x46, 0x31, 0x46, + 0x40, 0x46, 0xf7, 0xf7, 0x25, 0xfe, 0x05, 0x46, 0x32, 0x46, 0x31, 0x46, 0x40, 0x46, 0xcd, 0xe9, 0x02, 0x66, 0xcd, 0xe9, 0x00, 0x66, 0x94, 0xf8, - 0xfa, 0x31, 0x02, 0xf0, 0x85, 0xfe, 0x45, 0xea, 0x00, 0x04, 0x64, 0xb2, - 0x0c, 0xb1, 0x6f, 0xf4, 0x7a, 0x64, 0x38, 0x46, 0xfe, 0xf7, 0x70, 0xf8, + 0xfa, 0x31, 0x02, 0xf0, 0x71, 0xfc, 0x45, 0xea, 0x00, 0x04, 0x64, 0xb2, + 0x0c, 0xb1, 0x6f, 0xf4, 0x7a, 0x64, 0x38, 0x46, 0xfe, 0xf7, 0x9a, 0xf9, 0x20, 0x46, 0x08, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, 0x2d, 0xe9, 0xf0, 0x4f, 0x92, 0x46, 0x9b, 0x46, 0x8d, 0xb0, 0x04, 0x46, 0xd0, 0xe9, 0x44, 0x23, 0x9b, 0x45, 0x08, 0xbf, 0x92, 0x45, 0x28, 0xd2, 0xd0, 0xf8, 0x28, 0xc1, @@ -4641,79 +4456,79 @@ const unsigned char mcuboot_bin[] = { 0xbb, 0x42, 0x08, 0xbf, 0xb2, 0x42, 0x07, 0xd2, 0x61, 0x4c, 0x20, 0x46, 0x0d, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x4f, 0xf0, 0xff, 0x35, 0xe9, 0xe7, 0x23, 0x68, 0x52, 0x46, 0x20, 0x46, 0x19, 0x6b, 0x5b, 0x46, 0x88, 0x47, - 0x02, 0x46, 0x0b, 0x46, 0x50, 0x46, 0x59, 0x46, 0x0f, 0xf0, 0x00, 0xfc, + 0x02, 0x46, 0x0b, 0x46, 0x50, 0x46, 0x59, 0x46, 0x10, 0xf0, 0xa6, 0xf8, 0x13, 0x43, 0xe9, 0xd1, 0x16, 0xf1, 0xff, 0x32, 0x23, 0x68, 0x20, 0x46, 0x19, 0x6b, 0x47, 0xf1, 0xff, 0x33, 0x88, 0x47, 0x02, 0x46, 0x0b, 0x46, - 0x30, 0x46, 0x39, 0x46, 0x0f, 0xf0, 0xf0, 0xfb, 0x13, 0x43, 0xd9, 0xd1, + 0x30, 0x46, 0x39, 0x46, 0x10, 0xf0, 0x96, 0xf8, 0x13, 0x43, 0xd9, 0xd1, 0x04, 0xf5, 0xe4, 0x73, 0x09, 0x93, 0xdd, 0xe9, 0x16, 0x23, 0x13, 0x43, 0x00, 0xf0, 0x94, 0x80, 0xd4, 0xf8, 0x18, 0x91, 0xb9, 0xf1, 0xff, 0x3f, 0x59, 0xd1, 0x1a, 0xf1, 0xff, 0x33, 0x4f, 0xf0, 0x08, 0x07, 0x4f, 0xf0, 0x03, 0x06, 0x0a, 0x93, 0x4b, 0xf1, 0xff, 0x33, 0x0b, 0x93, 0x05, 0xf1, 0x09, 0x03, 0x04, 0xeb, 0xc3, 0x03, 0x08, 0x93, 0x05, 0x9b, 0x3b, 0x42, 0x24, 0xd0, 0x09, 0x9b, 0x4f, 0xf0, 0x00, 0x09, 0x50, 0x46, 0x59, 0x46, - 0x53, 0xf8, 0x26, 0x30, 0x1a, 0x46, 0x98, 0x46, 0x4b, 0x46, 0x0f, 0xf0, - 0xc3, 0xfb, 0x13, 0x43, 0x16, 0xd1, 0xdd, 0xe9, 0x16, 0x23, 0x4b, 0x45, + 0x53, 0xf8, 0x26, 0x30, 0x1a, 0x46, 0x98, 0x46, 0x4b, 0x46, 0x10, 0xf0, + 0x69, 0xf8, 0x13, 0x43, 0x16, 0xd1, 0xdd, 0xe9, 0x16, 0x23, 0x4b, 0x45, 0x08, 0xbf, 0x42, 0x45, 0x10, 0xd3, 0x0a, 0x9b, 0x13, 0xeb, 0x08, 0x03, 0x06, 0x93, 0x0b, 0x9b, 0x43, 0xeb, 0x09, 0x03, 0x07, 0x93, 0x08, 0x9b, 0xdd, 0xe9, 0x06, 0x01, 0xd3, 0xe9, 0x48, 0x23, 0x8b, 0x42, 0x08, 0xbf, 0x82, 0x42, 0x03, 0xd2, 0x01, 0x3e, 0x4f, 0xea, 0x57, 0x07, 0xd3, 0xd2, 0x04, 0xeb, 0x86, 0x06, 0xd6, 0xf8, 0xb8, 0x91, 0xd6, 0xf8, 0xc8, 0x61, - 0x04, 0xf1, 0xbc, 0x07, 0x4f, 0xf0, 0x00, 0x08, 0x38, 0x46, 0xfd, 0xf7, - 0xe1, 0xff, 0x20, 0x46, 0xff, 0xf7, 0x8a, 0xfd, 0x00, 0x28, 0x3d, 0xd1, + 0x04, 0xf1, 0xbc, 0x07, 0x4f, 0xf0, 0x00, 0x08, 0x38, 0x46, 0xfe, 0xf7, + 0x0b, 0xf9, 0x20, 0x46, 0xff, 0xf7, 0x8a, 0xfd, 0x00, 0x28, 0x3d, 0xd1, 0x5b, 0x46, 0x52, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xbe, 0xfd, 0x03, 0x46, - 0x40, 0xb1, 0x6f, 0xf4, 0x7a, 0x64, 0x38, 0x46, 0xfd, 0xf7, 0xb0, 0xff, + 0x40, 0xb1, 0x6f, 0xf4, 0x7a, 0x64, 0x38, 0x46, 0xfe, 0xf7, 0xda, 0xf8, 0x73, 0xe7, 0x4f, 0xf4, 0x80, 0x56, 0xe3, 0xe7, 0xcd, 0xe9, 0x01, 0x00, - 0x00, 0x90, 0x52, 0x46, 0x49, 0x46, 0x20, 0x1d, 0xf7, 0xf7, 0x44, 0xfd, + 0x00, 0x90, 0x52, 0x46, 0x49, 0x46, 0x20, 0x1d, 0xf7, 0xf7, 0xdc, 0xfd, 0x00, 0x28, 0xec, 0xd1, 0x1a, 0xeb, 0x06, 0x0a, 0x16, 0x9b, 0x4b, 0xeb, 0x08, 0x0b, 0x9b, 0x1b, 0x16, 0x93, 0x17, 0x9b, 0x63, 0xeb, 0x08, 0x03, 0x17, 0x93, 0xdd, 0xe9, 0x16, 0x23, 0x13, 0x43, 0x0c, 0xd0, 0x04, 0xeb, 0xc5, 0x03, 0xd3, 0xe9, 0x5a, 0x23, 0x5b, 0x45, 0x08, 0xbf, 0x52, 0x45, 0x3f, 0xbf, 0x01, 0x35, 0x63, 0x19, 0x93, 0xf8, 0x54, 0x31, 0x05, 0x93, - 0x20, 0x46, 0xff, 0xf7, 0x17, 0xfd, 0x28, 0xb1, 0x38, 0x46, 0xfd, 0xf7, - 0x7f, 0xff, 0x6a, 0xe7, 0x03, 0x4c, 0xc8, 0xe7, 0x03, 0x4c, 0xc6, 0xe7, + 0x20, 0x46, 0xff, 0xf7, 0x17, 0xfd, 0x28, 0xb1, 0x38, 0x46, 0xfe, 0xf7, + 0xa9, 0xf8, 0x6a, 0xe7, 0x03, 0x4c, 0xc8, 0xe7, 0x03, 0x4c, 0xc6, 0xe7, 0x00, 0x24, 0x3c, 0xe7, 0x5b, 0xf0, 0xff, 0xff, 0x5c, 0xf0, 0xff, 0xff, 0x5d, 0xf0, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x4f, 0x1f, 0x46, 0x00, 0xf1, 0x08, 0x03, 0x04, 0x46, 0x0e, 0x46, 0x15, 0x46, 0x00, 0xf1, 0xbc, 0x08, 0x00, 0xf1, 0x04, 0x09, 0x2d, 0xed, 0x02, 0x8b, 0x08, 0xee, 0x10, 0x3a, 0x87, 0xb0, 0xdd, 0xe9, 0x12, 0x23, 0x13, 0x43, 0x7c, 0xd0, 0xd4, 0xf8, 0xf0, 0x31, 0x4f, 0xf0, 0x00, 0x0b, 0x28, 0x46, 0x39, 0x46, 0x9a, 0x46, - 0x1a, 0x46, 0x02, 0x93, 0x5b, 0x46, 0x0f, 0xf0, 0x29, 0xfb, 0x12, 0x99, + 0x1a, 0x46, 0x02, 0x93, 0x5b, 0x46, 0x0f, 0xf0, 0xcf, 0xff, 0x12, 0x99, 0x51, 0x18, 0x00, 0x91, 0x13, 0x99, 0x4b, 0x41, 0x01, 0x93, 0xdd, 0xe9, 0x00, 0x01, 0x59, 0x45, 0x4f, 0xf0, 0x00, 0x0b, 0x08, 0xbf, 0x50, 0x45, 0x40, 0x46, 0x2a, 0xbf, 0x02, 0x9b, 0x12, 0x9b, 0x9b, 0x1a, 0x02, 0x93, - 0x02, 0x9b, 0x9a, 0x46, 0xcd, 0xe9, 0x04, 0xab, 0xfd, 0xf7, 0x58, 0xff, + 0x02, 0x9b, 0x9a, 0x46, 0xcd, 0xe9, 0x04, 0xab, 0xfe, 0xf7, 0x82, 0xf8, 0x20, 0x46, 0xff, 0xf7, 0x01, 0xfd, 0x00, 0x28, 0x4e, 0xd1, 0x2a, 0x46, 0x3b, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x35, 0xfd, 0x50, 0xb1, 0x6f, 0xf4, - 0x7a, 0x64, 0x40, 0x46, 0xfd, 0xf7, 0x28, 0xff, 0x20, 0x46, 0x07, 0xb0, + 0x7a, 0x64, 0x40, 0x46, 0xfe, 0xf7, 0x52, 0xf8, 0x20, 0x46, 0x07, 0xb0, 0xbd, 0xec, 0x02, 0x8b, 0xbd, 0xe8, 0xf0, 0x8f, 0x94, 0xf8, 0x98, 0x30, 0x00, 0x2b, 0xf0, 0xd0, 0x00, 0x2e, 0xee, 0xd0, 0x04, 0x9b, 0x00, 0x2b, - 0xeb, 0xd0, 0x48, 0x46, 0x02, 0xf0, 0x18, 0xfd, 0x4f, 0xf0, 0xff, 0x33, - 0x2a, 0x46, 0x02, 0x21, 0x48, 0x46, 0x02, 0xf0, 0x70, 0xfb, 0x04, 0xab, + 0xeb, 0xd0, 0x48, 0x46, 0x02, 0xf0, 0x04, 0xfb, 0x4f, 0xf0, 0xff, 0x33, + 0x2a, 0x46, 0x02, 0x21, 0x48, 0x46, 0x02, 0xf0, 0x4b, 0xf9, 0x04, 0xab, 0x32, 0x46, 0x04, 0xf1, 0x6c, 0x01, 0x18, 0xee, 0x10, 0x0a, 0xf7, 0xf7, - 0x3b, 0xfc, 0x03, 0x90, 0x48, 0x46, 0x02, 0xf0, 0xfb, 0xfc, 0x03, 0x9b, + 0xd3, 0xfc, 0x03, 0x90, 0x48, 0x46, 0x02, 0xf0, 0xe7, 0xfa, 0x03, 0x9b, 0x00, 0x2b, 0xd2, 0xd1, 0xdd, 0xe9, 0x04, 0x23, 0x9b, 0x45, 0x08, 0xbf, 0x92, 0x45, 0xcc, 0xd1, 0x02, 0x9b, 0x15, 0xeb, 0x0a, 0x05, 0x20, 0x46, 0x1e, 0x44, 0x12, 0x9b, 0x47, 0xeb, 0x0b, 0x07, 0xb3, 0xeb, 0x0a, 0x03, 0x12, 0x93, 0x13, 0x9b, 0x63, 0xeb, 0x0b, 0x03, 0x13, 0x93, 0xff, 0xf7, - 0x7d, 0xfc, 0x28, 0xb1, 0x40, 0x46, 0xfd, 0xf7, 0xe5, 0xfe, 0x82, 0xe7, + 0x7d, 0xfc, 0x28, 0xb1, 0x40, 0x46, 0xfe, 0xf7, 0x0f, 0xf8, 0x82, 0xe7, 0x02, 0x4c, 0xb6, 0xe7, 0x02, 0x4c, 0xb4, 0xe7, 0x00, 0x24, 0xb5, 0xe7, 0x5c, 0xf0, 0xff, 0xff, 0x5d, 0xf0, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x4f, 0xd0, 0xf8, 0xb4, 0xa0, 0x05, 0x46, 0x2d, 0xed, 0x02, 0x8b, 0xb5, 0xb0, 0xba, 0xf1, 0x00, 0x0f, 0x0c, 0xd0, 0xae, 0x4a, 0xae, 0x4b, 0xba, 0xf1, 0xff, 0x3f, 0x0c, 0xbf, 0x92, 0x46, 0x9a, 0x46, 0x50, 0x46, 0x35, 0xb0, 0xbd, 0xec, 0x02, 0x8b, 0xbd, 0xe8, 0xf0, 0x8f, 0x00, 0xf1, 0xbc, 0x03, - 0x18, 0x46, 0x08, 0xee, 0x90, 0x3a, 0xfd, 0xf7, 0xdb, 0xfe, 0x2b, 0x1d, + 0x18, 0x46, 0x08, 0xee, 0x90, 0x3a, 0xfe, 0xf7, 0x05, 0xf8, 0x2b, 0x1d, 0x52, 0x46, 0x51, 0x46, 0x08, 0xee, 0x10, 0x3a, 0x95, 0xf8, 0xfa, 0x31, 0x18, 0xee, 0x10, 0x0a, 0xcd, 0xe9, 0x02, 0xaa, 0xcd, 0xe9, 0x00, 0xaa, - 0x02, 0xf0, 0xb8, 0xfc, 0x30, 0xb1, 0x6f, 0xf4, 0x7a, 0x6a, 0x18, 0xee, - 0x90, 0x0a, 0xfd, 0xf7, 0xa5, 0xfe, 0xdb, 0xe7, 0x95, 0xf8, 0x04, 0x32, + 0x02, 0xf0, 0xa4, 0xfa, 0x30, 0xb1, 0x6f, 0xf4, 0x7a, 0x6a, 0x18, 0xee, + 0x90, 0x0a, 0xfd, 0xf7, 0xcf, 0xff, 0xdb, 0xe7, 0x95, 0xf8, 0x04, 0x32, 0x0b, 0xb9, 0xc5, 0xf8, 0x00, 0xa2, 0xd5, 0xf8, 0x00, 0x62, 0x01, 0x36, 0x01, 0x2e, 0xc5, 0xf8, 0x00, 0x62, 0xee, 0xd1, 0x00, 0x23, 0xd5, 0xf8, 0xf4, 0x41, 0x85, 0xf8, 0xfb, 0x31, 0x85, 0xf8, 0xfd, 0x31, 0x95, 0xf8, 0x98, 0x30, 0x00, 0x2b, 0xe1, 0xd0, 0x18, 0xee, 0x10, 0x0a, 0x02, 0xf0, - 0x8b, 0xfc, 0x18, 0xee, 0x10, 0x3a, 0x21, 0x46, 0xc5, 0xf8, 0x90, 0x40, - 0x18, 0x1d, 0xf8, 0xf7, 0x0b, 0xfb, 0x80, 0x46, 0x18, 0xee, 0x10, 0x0a, - 0x02, 0xf0, 0x74, 0xfc, 0xb8, 0xf1, 0x00, 0x0f, 0xcd, 0xd1, 0x28, 0x46, + 0x77, 0xfa, 0x18, 0xee, 0x10, 0x3a, 0x21, 0x46, 0xc5, 0xf8, 0x90, 0x40, + 0x18, 0x1d, 0xf8, 0xf7, 0xa3, 0xfb, 0x80, 0x46, 0x18, 0xee, 0x10, 0x0a, + 0x02, 0xf0, 0x60, 0xfa, 0xb8, 0xf1, 0x00, 0x0f, 0xcd, 0xd1, 0x28, 0x46, 0xff, 0xf7, 0x0a, 0xfc, 0x00, 0x28, 0x00, 0xf0, 0xd5, 0x84, 0x82, 0x4f, 0x03, 0x22, 0x20, 0xac, 0x9f, 0x21, 0x3b, 0x78, 0x28, 0x46, 0x04, 0x94, 0xbb, 0x46, 0x8d, 0xf8, 0x80, 0x30, 0x00, 0x23, 0xcd, 0xf8, 0x00, 0x80, @@ -4724,12 +4539,12 @@ const unsigned char mcuboot_bin[] = { 0x00, 0xf0, 0xb6, 0x80, 0x9d, 0x2b, 0x00, 0xf0, 0xb0, 0x80, 0x00, 0x23, 0x10, 0xae, 0xdf, 0xf8, 0xb8, 0x81, 0x29, 0x46, 0x30, 0x46, 0x00, 0x27, 0x0d, 0xf1, 0x70, 0x09, 0xc5, 0xe9, 0x42, 0x33, 0xc5, 0xe9, 0x48, 0x33, - 0xcd, 0xe9, 0x20, 0x83, 0x94, 0xe8, 0x0c, 0x00, 0xf4, 0xf7, 0x68, 0xff, + 0xcd, 0xe9, 0x20, 0x83, 0x94, 0xe8, 0x0c, 0x00, 0xf4, 0xf7, 0xce, 0xff, 0x4f, 0xf0, 0x5a, 0x0c, 0x96, 0xe8, 0x0f, 0x00, 0x08, 0x26, 0x84, 0xe8, 0x0f, 0x00, 0x01, 0x23, 0x00, 0x22, 0x20, 0x46, 0x23, 0x99, 0xcd, 0xf8, 0x0c, 0x90, 0xb2, 0x46, 0x02, 0x96, 0xcd, 0xe9, 0x00, 0x3c, 0xcd, 0xe9, 0x04, 0x67, 0x00, 0x23, 0x88, 0x47, 0xb8, 0x42, 0xcd, 0xf8, 0x28, 0x80, - 0x6f, 0xdb, 0x04, 0x22, 0x57, 0x49, 0x48, 0x46, 0x0e, 0xf0, 0x6e, 0xfe, + 0x6f, 0xdb, 0x04, 0x22, 0x57, 0x49, 0x48, 0x46, 0x0f, 0xf0, 0x14, 0xfb, 0x80, 0x46, 0x00, 0x28, 0x67, 0xd1, 0x9d, 0xf8, 0x75, 0x30, 0x01, 0x2b, 0x63, 0xd1, 0x9d, 0xf8, 0x76, 0x30, 0x32, 0x46, 0x0b, 0x93, 0x3b, 0x46, 0x37, 0x46, 0x1e, 0x46, 0x01, 0x21, 0x5a, 0x20, 0xcd, 0xe9, 0x04, 0x76, @@ -4742,7 +4557,7 @@ const unsigned char mcuboot_bin[] = { 0x50, 0x29, 0xa8, 0xbf, 0x50, 0x21, 0xc5, 0xf8, 0x0c, 0x11, 0x08, 0x32, 0x0b, 0x98, 0x08, 0xf1, 0x01, 0x01, 0x43, 0xf1, 0x00, 0x03, 0x40, 0x45, 0x4c, 0xdc, 0x0a, 0x9b, 0x00, 0x27, 0x14, 0xae, 0x29, 0x46, 0x20, 0x93, - 0x30, 0x46, 0x21, 0x97, 0x94, 0xe8, 0x0c, 0x00, 0xf4, 0xf7, 0xfc, 0xfe, + 0x30, 0x46, 0x21, 0x97, 0x94, 0xe8, 0x0c, 0x00, 0xf4, 0xf7, 0x62, 0xff, 0x0d, 0xf1, 0x70, 0x0c, 0x96, 0xe8, 0x0f, 0x00, 0x8c, 0xe8, 0x0f, 0x00, 0xd5, 0xf8, 0x0c, 0x31, 0x08, 0x22, 0x01, 0x26, 0x60, 0x46, 0x1f, 0x99, 0x03, 0x94, 0x00, 0x96, 0xcd, 0xe9, 0x04, 0x37, 0x5a, 0x23, 0xcd, 0xe9, @@ -4758,8 +4573,8 @@ const unsigned char mcuboot_bin[] = { 0x9d, 0xf8, 0x73, 0x10, 0x89, 0x00, 0xc5, 0xf8, 0x24, 0x11, 0x9e, 0xe7, 0x21, 0xf0, 0x7f, 0x41, 0xc5, 0xf8, 0xd8, 0x11, 0x9d, 0xf8, 0x73, 0x10, 0x89, 0x00, 0xc5, 0xf8, 0xdc, 0x11, 0x94, 0xe7, 0x5a, 0xf0, 0xff, 0xff, - 0x59, 0xf0, 0xff, 0xff, 0x7e, 0xdf, 0x01, 0x08, 0x79, 0xdf, 0x01, 0x08, - 0xa3, 0x8e, 0x00, 0x08, 0x5e, 0xf0, 0xff, 0xff, 0x21, 0x9b, 0x01, 0x33, + 0x59, 0xf0, 0xff, 0xff, 0xbe, 0xd9, 0x01, 0x08, 0xb9, 0xd9, 0x01, 0x08, + 0xc7, 0x87, 0x00, 0x08, 0x5e, 0xf0, 0xff, 0xff, 0x21, 0x9b, 0x01, 0x33, 0xdb, 0x08, 0xc5, 0xe9, 0x44, 0x30, 0xd5, 0xf8, 0x0c, 0x31, 0x28, 0x2b, 0x89, 0xbf, 0x9d, 0xf8, 0xa8, 0x30, 0x4f, 0xf4, 0x80, 0x76, 0x1b, 0x11, 0x9e, 0x40, 0x9d, 0xf8, 0xbd, 0x30, 0x13, 0xf0, 0x08, 0x02, 0xc5, 0xf8, @@ -4792,7 +4607,7 @@ const unsigned char mcuboot_bin[] = { 0xf9, 0x31, 0x85, 0xf8, 0xfe, 0x31, 0x95, 0xf8, 0x00, 0x31, 0x93, 0xb3, 0x00, 0x22, 0x9b, 0xf8, 0x00, 0x30, 0x18, 0xee, 0x10, 0x0a, 0x8d, 0xf8, 0x60, 0x30, 0x11, 0x46, 0x02, 0x23, 0xad, 0xf8, 0x61, 0x20, 0xcd, 0xe9, - 0x02, 0x22, 0xcd, 0xe9, 0x00, 0x22, 0x02, 0xf0, 0xab, 0xfa, 0x00, 0xbb, + 0x02, 0x22, 0xcd, 0xe9, 0x00, 0x22, 0x02, 0xf0, 0x97, 0xf8, 0x00, 0xbb, 0x18, 0xa9, 0x28, 0x46, 0xff, 0xf7, 0x49, 0xfb, 0xd8, 0xb9, 0x9d, 0xf8, 0x62, 0x30, 0x28, 0x46, 0x43, 0xf0, 0x02, 0x03, 0x8d, 0xf8, 0x62, 0x30, 0xff, 0xf7, 0x5c, 0xfa, 0x88, 0xb9, 0x18, 0xa9, 0x28, 0x46, 0xff, 0xf7, @@ -4817,7 +4632,7 @@ const unsigned char mcuboot_bin[] = { 0x28, 0x46, 0xff, 0xf7, 0xb1, 0xf9, 0x00, 0x28, 0x3f, 0xf4, 0x6d, 0xae, 0x0a, 0x9b, 0x18, 0xae, 0x4f, 0xf0, 0x00, 0x09, 0x0d, 0xf1, 0x80, 0x08, 0x29, 0x46, 0x20, 0x93, 0xcd, 0xf8, 0x84, 0x90, 0x30, 0x46, 0x1c, 0xac, - 0x98, 0xe8, 0x0c, 0x00, 0xf4, 0xf7, 0x3c, 0xfd, 0xd5, 0xf8, 0x20, 0xb1, + 0x98, 0xe8, 0x0c, 0x00, 0xf4, 0xf7, 0xa2, 0xfd, 0xd5, 0xf8, 0x20, 0xb1, 0x96, 0xe8, 0x0f, 0x00, 0x84, 0xe8, 0x0f, 0x00, 0xbb, 0xf1, 0x00, 0x0f, 0x04, 0xd0, 0xd5, 0xf8, 0x24, 0x61, 0x00, 0x2e, 0x40, 0xf0, 0xc8, 0x81, 0x01, 0x23, 0xc5, 0xf8, 0x28, 0x31, 0xd5, 0xe9, 0x44, 0x32, 0xc5, 0xf8, @@ -4892,11 +4707,11 @@ const unsigned char mcuboot_bin[] = { 0x18, 0xab, 0x4f, 0xf0, 0xff, 0x32, 0x00, 0x93, 0x4f, 0xf0, 0xff, 0x33, 0x95, 0xe7, 0x13, 0xf0, 0x04, 0x0b, 0x4f, 0xf0, 0x02, 0x03, 0xe0, 0xd0, 0xc5, 0x22, 0xc5, 0xf8, 0xf4, 0x20, 0x20, 0xe6, 0xdf, 0xf8, 0x10, 0xb0, - 0x21, 0xe6, 0x00, 0xbf, 0x7e, 0xdf, 0x01, 0x08, 0x03, 0x00, 0x80, 0x00, + 0x21, 0xe6, 0x00, 0xbf, 0xbe, 0xd9, 0x01, 0x08, 0x03, 0x00, 0x80, 0x00, 0x5e, 0xf0, 0xff, 0xff, 0x5c, 0xf0, 0xff, 0xff, 0x00, 0x22, 0x18, 0xee, 0x10, 0x0a, 0x11, 0x46, 0xcd, 0xe9, 0x02, 0x22, 0xcd, 0xe9, 0x00, 0x22, - 0x02, 0xf0, 0x44, 0xf8, 0x00, 0x28, 0x3f, 0xf4, 0x11, 0xae, 0x86, 0xe4, - 0x30, 0x46, 0x0c, 0xf0, 0xbd, 0xfe, 0x07, 0x46, 0x00, 0x28, 0x3f, 0xf4, + 0x01, 0xf0, 0x30, 0xfe, 0x00, 0x28, 0x3f, 0xf4, 0x11, 0xae, 0x86, 0xe4, + 0x30, 0x46, 0x0d, 0xf0, 0x65, 0xfb, 0x07, 0x46, 0x00, 0x28, 0x3f, 0xf4, 0x80, 0xac, 0x5a, 0x23, 0x08, 0x21, 0x03, 0x90, 0x5a, 0x46, 0x20, 0x46, 0xcd, 0xe9, 0x01, 0x31, 0x01, 0x23, 0x1f, 0x99, 0x00, 0x93, 0x4b, 0x46, 0xcd, 0xe9, 0x04, 0x69, 0x88, 0x47, 0x00, 0x28, 0x3d, 0xdb, 0x3e, 0x78, @@ -4931,7 +4746,7 @@ const unsigned char mcuboot_bin[] = { 0x02, 0x01, 0x59, 0x1c, 0x09, 0xeb, 0x06, 0x03, 0x9c, 0x45, 0xe6, 0xdc, 0x00, 0x23, 0xc5, 0xf8, 0x60, 0x31, 0x09, 0x99, 0x11, 0xea, 0x02, 0x04, 0x8a, 0xd0, 0x05, 0xeb, 0x83, 0x03, 0x00, 0x24, 0xd3, 0xf8, 0xc8, 0x31, - 0xc5, 0xf8, 0x60, 0x31, 0x38, 0x46, 0x0c, 0xf0, 0xf1, 0xfd, 0x01, 0x34, + 0xc5, 0xf8, 0x60, 0x31, 0x38, 0x46, 0x0d, 0xf0, 0x99, 0xfa, 0x01, 0x34, 0x3f, 0xf4, 0xad, 0xab, 0x69, 0xe5, 0x3c, 0x46, 0x4e, 0x46, 0xd5, 0xf8, 0x24, 0x21, 0x3a, 0x44, 0x21, 0x78, 0x88, 0x07, 0x7f, 0xf5, 0x71, 0xaf, 0x04, 0xf1, 0x08, 0x03, 0x9a, 0x42, 0xff, 0xf4, 0x6c, 0xaf, 0x94, 0xf8, @@ -4941,8 +4756,8 @@ const unsigned char mcuboot_bin[] = { 0x70, 0x47, 0x00, 0x00, 0x09, 0x4b, 0x0a, 0x48, 0x5b, 0x68, 0x70, 0xb5, 0x90, 0x24, 0x8d, 0x18, 0x04, 0xfb, 0x03, 0x03, 0x8d, 0x42, 0x07, 0xd0, 0x11, 0xf8, 0x01, 0x4b, 0x18, 0x68, 0xc6, 0x69, 0x36, 0x06, 0xfc, 0xd5, - 0x84, 0x62, 0xf5, 0xe7, 0x10, 0x46, 0x70, 0xbd, 0xa0, 0x6a, 0x00, 0x24, - 0x80, 0x6c, 0x00, 0x24, 0x00, 0x20, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, + 0x84, 0x62, 0xf5, 0xe7, 0x10, 0x46, 0x70, 0xbd, 0xc8, 0x0b, 0x02, 0x24, + 0xa8, 0x0d, 0x02, 0x24, 0x00, 0x20, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x6f, 0xf0, 0x15, 0x00, 0x70, 0x47, 0x6f, 0xf0, 0x1c, 0x00, 0x70, 0x47, 0x03, 0x68, 0x1b, 0x68, 0x18, 0x47, 0x6f, 0xf0, 0x15, 0x00, 0x70, 0x47, 0x11, 0x20, 0x70, 0x47, 0xbf, 0xf3, 0x5f, 0x8f, 0x01, 0x22, 0x08, 0x49, @@ -4962,7 +4777,7 @@ const unsigned char mcuboot_bin[] = { 0x0c, 0x43, 0x1c, 0x43, 0x04, 0xfa, 0x02, 0xf2, 0xa8, 0xeb, 0x02, 0x02, 0x72, 0x62, 0xd6, 0xe9, 0x0a, 0x32, 0x1b, 0x19, 0x45, 0xeb, 0x02, 0x02, 0xc6, 0xe9, 0x0a, 0x32, 0xbd, 0xe8, 0xf0, 0x87, 0xd6, 0xf8, 0x0c, 0xa0, - 0x3b, 0x46, 0x40, 0x46, 0x49, 0x46, 0x52, 0x46, 0x0e, 0xf0, 0x7a, 0xfc, + 0x3b, 0x46, 0x40, 0x46, 0x49, 0x46, 0x52, 0x46, 0x0f, 0xf0, 0x20, 0xf9, 0x04, 0x46, 0x0d, 0x46, 0x0a, 0xfb, 0x10, 0x82, 0xe8, 0xe7, 0x2d, 0xe9, 0xf1, 0x4f, 0x46, 0x68, 0x05, 0x46, 0x37, 0x6b, 0x27, 0xf0, 0x7f, 0x47, 0x27, 0xf0, 0xff, 0x07, 0x00, 0x2f, 0x57, 0xd1, 0xff, 0xf7, 0xad, 0xff, @@ -4981,7 +4796,7 @@ const unsigned char mcuboot_bin[] = { 0xda, 0xf8, 0x10, 0x30, 0x58, 0x46, 0x98, 0x47, 0x2b, 0x68, 0x5b, 0x68, 0x98, 0x47, 0x33, 0x6a, 0x5b, 0x45, 0x0a, 0xd2, 0x58, 0x45, 0x0c, 0xd2, 0x83, 0x42, 0x0a, 0xd8, 0x01, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x3b, 0x46, - 0x0e, 0xf0, 0x0c, 0xfc, 0xe2, 0xe7, 0x83, 0x42, 0xf6, 0xd9, 0x58, 0x45, + 0x0f, 0xf0, 0xb2, 0xf8, 0xe2, 0xe7, 0x83, 0x42, 0xf6, 0xd9, 0x58, 0x45, 0xf4, 0xd3, 0x2b, 0x68, 0x5b, 0x69, 0xaa, 0xe7, 0x73, 0x69, 0x30, 0x6a, 0x32, 0x69, 0x18, 0x44, 0x2b, 0x68, 0x10, 0x40, 0x1b, 0x69, 0x01, 0xb0, 0xbd, 0xe8, 0xf0, 0x4f, 0x18, 0x47, 0x84, 0xb0, 0x01, 0xa8, 0x04, 0xb0, @@ -5040,1185 +4855,1094 @@ const unsigned char mcuboot_bin[] = { 0x05, 0x33, 0x24, 0xba, 0x14, 0x60, 0xde, 0xe7, 0x6f, 0xf0, 0x63, 0x00, 0xcc, 0xe7, 0x00, 0x20, 0xca, 0xe7, 0x00, 0x00, 0x02, 0x4b, 0x98, 0x7a, 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, 0x70, 0x47, 0x1c, 0x01, 0x00, 0x24, - 0x08, 0xb5, 0x05, 0xf0, 0x75, 0xfc, 0xfc, 0xe7, 0x70, 0xb5, 0x14, 0x46, - 0x6f, 0xf0, 0x00, 0x46, 0x12, 0x68, 0x05, 0x46, 0x04, 0x98, 0xb2, 0x42, - 0x07, 0xd2, 0x38, 0xb1, 0x01, 0x46, 0x18, 0x46, 0x0d, 0xf0, 0xa2, 0xfe, - 0x43, 0x1c, 0x05, 0xd1, 0x20, 0x60, 0x70, 0xbd, 0x15, 0xb1, 0x8a, 0x42, - 0x38, 0xbf, 0xab, 0x54, 0x23, 0x68, 0x01, 0x33, 0x23, 0x60, 0xf6, 0xe7, - 0x2d, 0xe9, 0xf0, 0x4f, 0x89, 0xb0, 0x00, 0x24, 0x05, 0x46, 0x9d, 0xf8, - 0x50, 0xa0, 0x9d, 0xf8, 0x48, 0x00, 0xa2, 0x45, 0xdd, 0xf8, 0x54, 0x80, - 0x07, 0x94, 0x14, 0xbf, 0x4f, 0xf0, 0x30, 0x0b, 0x4f, 0xf0, 0x20, 0x0b, - 0x01, 0x28, 0xcd, 0xe9, 0x05, 0x44, 0x3f, 0xd1, 0xa3, 0x42, 0x3d, 0xda, - 0x5b, 0x42, 0x81, 0x46, 0x84, 0x1e, 0x00, 0x27, 0x0d, 0xf1, 0x14, 0x0c, - 0x4f, 0xf0, 0x0a, 0x0e, 0xe4, 0xb2, 0x02, 0x94, 0x02, 0x9c, 0x01, 0x2c, - 0x56, 0xd8, 0x02, 0x28, 0x03, 0xf0, 0x0f, 0x04, 0x4f, 0xea, 0x13, 0x13, - 0x0c, 0xbf, 0x33, 0x4e, 0x33, 0x4e, 0x34, 0x5d, 0x0c, 0xf8, 0x07, 0x40, - 0x7c, 0x1c, 0x00, 0x2b, 0x46, 0xd1, 0xb9, 0xf1, 0x00, 0x0f, 0x27, 0xd0, - 0xba, 0xf1, 0x00, 0x0f, 0x09, 0xd0, 0x2d, 0x23, 0x28, 0x46, 0xcd, 0xf8, - 0x00, 0x80, 0xcd, 0xe9, 0x02, 0x12, 0xff, 0xf7, 0xa5, 0xff, 0xdd, 0xe9, - 0x02, 0x12, 0xbc, 0x1c, 0x13, 0x9b, 0x9c, 0x42, 0x1b, 0xdb, 0xba, 0xf1, - 0x00, 0x0f, 0x09, 0xd1, 0x2d, 0x23, 0x28, 0x46, 0xcd, 0xf8, 0x00, 0x80, - 0xcd, 0xe9, 0x02, 0x12, 0xff, 0xf7, 0x94, 0xff, 0xdd, 0xe9, 0x02, 0x12, - 0x01, 0x3c, 0x1e, 0xe0, 0x13, 0xb1, 0x4f, 0xf0, 0x00, 0x09, 0xbf, 0xe7, - 0x30, 0x23, 0x01, 0x24, 0x8d, 0xf8, 0x14, 0x30, 0x13, 0x9b, 0x9c, 0x42, - 0x13, 0xda, 0x4f, 0xf0, 0x00, 0x09, 0x5b, 0x46, 0x28, 0x46, 0xcd, 0xf8, - 0x00, 0x80, 0xcd, 0xe9, 0x02, 0x12, 0xff, 0xf7, 0x7b, 0xff, 0x13, 0x9b, - 0x01, 0x3b, 0xa3, 0x42, 0x13, 0x93, 0xdd, 0xe9, 0x02, 0x12, 0xf0, 0xdc, - 0xb9, 0xf1, 0x00, 0x0f, 0xd1, 0xd1, 0x05, 0xae, 0x6c, 0xb9, 0x09, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x27, 0x46, 0xa5, 0xe7, 0xb3, 0xfb, 0xfe, 0xf4, - 0x0e, 0xfb, 0x14, 0x33, 0x30, 0x33, 0x0c, 0xf8, 0x07, 0x30, 0x23, 0x46, - 0xaa, 0xe7, 0x01, 0x3c, 0xcd, 0xf8, 0x00, 0x80, 0x28, 0x46, 0x33, 0x5d, - 0xcd, 0xe9, 0x02, 0x12, 0xff, 0xf7, 0x58, 0xff, 0xdd, 0xe9, 0x02, 0x12, - 0xe4, 0xe7, 0x00, 0xbf, 0xef, 0xe6, 0x01, 0x08, 0xff, 0xe6, 0x01, 0x08, - 0x2d, 0xe9, 0xf0, 0x4f, 0x1c, 0x46, 0x89, 0xb0, 0x00, 0x23, 0x89, 0x46, - 0x12, 0x9e, 0x15, 0x46, 0x07, 0x93, 0xb2, 0xb1, 0x99, 0x42, 0x14, 0xdb, - 0x0c, 0xbf, 0x01, 0x23, 0x01, 0xf1, 0xff, 0x39, 0x4f, 0xf0, 0x00, 0x0b, - 0x04, 0x93, 0x15, 0xf8, 0x0b, 0x30, 0x73, 0xb9, 0x48, 0xb1, 0x04, 0x9b, - 0x3b, 0xb9, 0x07, 0x9b, 0x4b, 0x45, 0x95, 0xbf, 0x04, 0x9a, 0x04, 0x9b, - 0xc2, 0x54, 0x00, 0xf8, 0x09, 0x30, 0x07, 0x98, 0x09, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0x25, 0x2b, 0x40, 0xf0, 0x02, 0x81, 0x0b, 0xf1, 0x01, 0x08, - 0x15, 0xf8, 0x08, 0x30, 0x20, 0x3b, 0xdb, 0xb2, 0x0d, 0x2b, 0x07, 0xd8, - 0x42, 0xf6, 0x09, 0x02, 0x22, 0xfa, 0x03, 0xf3, 0xdb, 0x07, 0x48, 0xbf, - 0x0b, 0xf1, 0x02, 0x08, 0x15, 0xf8, 0x08, 0x30, 0x2a, 0x2b, 0x1d, 0xd1, - 0x00, 0x21, 0x08, 0xf1, 0x01, 0x02, 0x04, 0x34, 0x8e, 0x46, 0xaf, 0x5c, - 0xab, 0x18, 0x2e, 0x2f, 0x51, 0xd1, 0x5f, 0x78, 0x2a, 0x2f, 0x2c, 0xd0, - 0x4f, 0xf0, 0x00, 0x0a, 0xc5, 0xf1, 0x01, 0x0c, 0x0c, 0xeb, 0x03, 0x02, - 0x13, 0xf8, 0x01, 0x7f, 0x30, 0x3f, 0x5f, 0xfa, 0x87, 0xf8, 0xb8, 0xf1, - 0x09, 0x0f, 0x21, 0xd8, 0x0a, 0x22, 0x02, 0xfb, 0x0a, 0x7a, 0xf1, 0xe7, - 0x30, 0x2b, 0x15, 0xd1, 0x08, 0xf1, 0x01, 0x08, 0x15, 0xf8, 0x08, 0x30, - 0x30, 0x2b, 0xf9, 0xd0, 0x4f, 0xf0, 0x01, 0x0e, 0xa8, 0x44, 0x00, 0x21, - 0xa8, 0xeb, 0x05, 0x02, 0x18, 0xf8, 0x01, 0x3b, 0x30, 0x3b, 0xdf, 0xb2, - 0x09, 0x2f, 0xd2, 0xd8, 0x0a, 0x22, 0x02, 0xfb, 0x01, 0x31, 0xf3, 0xe7, - 0x4f, 0xf0, 0x00, 0x0e, 0xee, 0xe7, 0x02, 0x32, 0x54, 0xf8, 0x04, 0xab, - 0xab, 0x5c, 0x68, 0x2b, 0x1e, 0xd1, 0xab, 0x18, 0x5b, 0x78, 0x68, 0x2b, - 0x0c, 0xbf, 0x72, 0x23, 0x11, 0x23, 0x03, 0xf0, 0x03, 0x08, 0x90, 0x44, - 0x15, 0xf8, 0x08, 0x70, 0x64, 0x2f, 0x01, 0xd0, 0x69, 0x2f, 0x3f, 0xd1, - 0x82, 0x2b, 0x27, 0xd1, 0x25, 0x23, 0x07, 0xaa, 0x49, 0x46, 0x00, 0x96, - 0x05, 0x90, 0x25, 0x2f, 0x18, 0xbf, 0xd8, 0x46, 0xff, 0xf7, 0xba, 0xfe, - 0x2e, 0xe0, 0x6f, 0xf0, 0x00, 0x4a, 0xdd, 0xe7, 0x6c, 0x2b, 0x06, 0xd1, - 0xab, 0x18, 0x5b, 0x78, 0x6c, 0x2b, 0x0c, 0xbf, 0x82, 0x23, 0x21, 0x23, - 0xdd, 0xe7, 0x6a, 0x2b, 0x08, 0xd0, 0x7a, 0x2b, 0x08, 0xd0, 0x74, 0x2b, - 0x08, 0xd0, 0x4c, 0x2b, 0x14, 0xbf, 0x00, 0x23, 0x61, 0x23, 0xd2, 0xe7, - 0x31, 0x23, 0xd0, 0xe7, 0x41, 0x23, 0xce, 0xe7, 0x51, 0x23, 0xcc, 0xe7, - 0x11, 0x2b, 0x54, 0xf8, 0x04, 0x2b, 0x0f, 0xd0, 0x72, 0x2b, 0x00, 0xd1, - 0x52, 0xb2, 0x01, 0x23, 0x01, 0x91, 0xcd, 0xe9, 0x02, 0xe6, 0x00, 0x93, - 0x49, 0x46, 0x13, 0x46, 0x07, 0xaa, 0x05, 0x90, 0xff, 0xf7, 0xa4, 0xfe, - 0x05, 0x98, 0x38, 0xe0, 0x12, 0xb2, 0xf0, 0xe7, 0x75, 0x2f, 0x03, 0xd0, - 0x07, 0xf0, 0xdf, 0x02, 0x58, 0x2a, 0x16, 0xd1, 0x82, 0x2b, 0xb9, 0xd0, - 0x11, 0x2b, 0x54, 0xf8, 0x04, 0x2b, 0x09, 0xd0, 0x72, 0x2b, 0x00, 0xd1, - 0xd2, 0xb2, 0x75, 0x2f, 0x01, 0x91, 0xcd, 0xe9, 0x02, 0xe6, 0x03, 0xd1, - 0x00, 0x23, 0xde, 0xe7, 0x92, 0xb2, 0xf6, 0xe7, 0x58, 0x2f, 0x0c, 0xbf, - 0x03, 0x23, 0x02, 0x23, 0xd7, 0xe7, 0x63, 0x2f, 0x09, 0xd1, 0x54, 0xf8, - 0x04, 0x3b, 0x07, 0xaa, 0x49, 0x46, 0x00, 0x96, 0xdb, 0xb2, 0x05, 0x90, - 0xff, 0xf7, 0x5e, 0xfe, 0xd2, 0xe7, 0x73, 0x2f, 0x16, 0xd1, 0x54, 0xf8, - 0x04, 0xbb, 0x0b, 0xf1, 0xff, 0x37, 0x17, 0xf8, 0x01, 0x3f, 0x23, 0xb1, - 0xaa, 0xeb, 0x07, 0x02, 0x1b, 0xeb, 0x02, 0x0f, 0x02, 0xd1, 0x08, 0xf1, - 0x01, 0x0b, 0x0e, 0xe7, 0x07, 0xaa, 0x49, 0x46, 0x00, 0x96, 0x05, 0x90, - 0xff, 0xf7, 0x46, 0xfe, 0x05, 0x98, 0xec, 0xe7, 0x70, 0x2f, 0x7f, 0xf4, - 0x7d, 0xaf, 0x54, 0xf8, 0x04, 0x7b, 0x30, 0x23, 0x07, 0xaa, 0x49, 0x46, - 0x00, 0x96, 0x05, 0x90, 0xff, 0xf7, 0x38, 0xfe, 0x78, 0x23, 0x07, 0xaa, - 0x49, 0x46, 0x05, 0x98, 0x00, 0x96, 0xff, 0xf7, 0x31, 0xfe, 0x00, 0x23, - 0x07, 0xaa, 0x49, 0x46, 0x05, 0x98, 0x03, 0x96, 0xcd, 0xe9, 0x01, 0x33, - 0x03, 0x23, 0x00, 0x93, 0x3b, 0x46, 0x99, 0xe7, 0x07, 0xaa, 0x49, 0x46, - 0x00, 0x96, 0xd8, 0x46, 0x05, 0x90, 0xff, 0xf7, 0x1f, 0xfe, 0x93, 0xe7, - 0x10, 0xb5, 0x04, 0x46, 0x0c, 0xf0, 0x7e, 0xf9, 0x20, 0x46, 0x10, 0xbd, - 0x02, 0x4b, 0x18, 0x68, 0x08, 0xb1, 0x09, 0xf0, 0x73, 0xb8, 0x70, 0x47, - 0xe8, 0x86, 0x00, 0x24, 0x02, 0x4b, 0x18, 0x68, 0x08, 0xb1, 0xf8, 0xf7, - 0x03, 0xbf, 0x70, 0x47, 0xe8, 0x86, 0x00, 0x24, 0x01, 0x20, 0x08, 0xb5, - 0x00, 0xf0, 0xe6, 0xfd, 0x11, 0xf0, 0x01, 0x00, 0x10, 0xb5, 0x8c, 0xb2, - 0x04, 0xd0, 0xf4, 0xf7, 0x79, 0xf9, 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, - 0xe2, 0x06, 0x0a, 0xd5, 0x05, 0x4b, 0x5a, 0x68, 0x90, 0x23, 0x53, 0x43, - 0x04, 0x4a, 0xd3, 0x58, 0xdb, 0x69, 0x1b, 0x06, 0x48, 0xbf, 0x40, 0xf0, - 0x10, 0x00, 0x10, 0xbd, 0xa0, 0x6a, 0x00, 0x24, 0x80, 0x6c, 0x00, 0x24, - 0xf8, 0xb5, 0x0d, 0x46, 0x82, 0xb3, 0x19, 0x4b, 0x19, 0x4c, 0x5f, 0x68, - 0x90, 0x23, 0x03, 0xfb, 0x07, 0x43, 0x9a, 0x68, 0xb2, 0xf5, 0x80, 0x5f, - 0x16, 0xd1, 0x1a, 0x69, 0xba, 0xb9, 0x40, 0xf2, 0xff, 0x12, 0xa3, 0xf8, - 0x60, 0x20, 0x90, 0x22, 0x02, 0xfb, 0x07, 0x42, 0xb2, 0xf8, 0x60, 0x60, - 0xf4, 0xf7, 0x4a, 0xf9, 0x00, 0x28, 0xfb, 0xd0, 0x90, 0x23, 0x01, 0x20, - 0x7b, 0x43, 0xe3, 0x58, 0x5b, 0x6a, 0x1e, 0x40, 0x2e, 0x70, 0xf8, 0xbd, - 0x1a, 0xb9, 0x1a, 0x69, 0x32, 0xb9, 0xff, 0x22, 0xe7, 0xe7, 0xb2, 0xf1, - 0x80, 0x5f, 0x05, 0xd1, 0x1a, 0x69, 0x0a, 0xb9, 0x7f, 0x22, 0xe0, 0xe7, - 0x3f, 0x22, 0xde, 0xe7, 0x00, 0x22, 0xdc, 0xe7, 0x10, 0x46, 0xec, 0xe7, - 0xa0, 0x6a, 0x00, 0x24, 0x80, 0x6c, 0x00, 0x24, 0x43, 0x6b, 0x30, 0xb5, - 0x05, 0x46, 0x85, 0xb0, 0x53, 0xb1, 0x00, 0xf1, 0x28, 0x03, 0x6c, 0x46, - 0x0f, 0xcb, 0x84, 0xe8, 0x0f, 0x00, 0x00, 0x23, 0x20, 0x46, 0x6b, 0x63, - 0x09, 0xf0, 0xf2, 0xfc, 0x05, 0xb0, 0x30, 0xbd, 0x39, 0xb1, 0x01, 0xf1, - 0x80, 0x41, 0x01, 0x39, 0x00, 0xeb, 0x81, 0x01, 0x81, 0x42, 0x03, 0x46, - 0x00, 0xd2, 0x70, 0x47, 0x1b, 0x68, 0x0a, 0x68, 0x1b, 0xba, 0x12, 0xba, - 0x40, 0xf8, 0x04, 0x2b, 0x41, 0xf8, 0x04, 0x39, 0xf2, 0xe7, 0x07, 0xb5, - 0x13, 0x46, 0x0a, 0x46, 0x6f, 0xf0, 0x00, 0x41, 0x00, 0x90, 0x00, 0x20, - 0xff, 0xf7, 0x30, 0xfe, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x0e, 0xb4, - 0x0f, 0xb5, 0x05, 0xab, 0x6f, 0xf0, 0x00, 0x41, 0x53, 0xf8, 0x04, 0x2b, - 0x00, 0x90, 0x00, 0x20, 0x03, 0x93, 0xff, 0xf7, 0x21, 0xfe, 0x04, 0xb0, - 0x5d, 0xf8, 0x04, 0xeb, 0x03, 0xb0, 0x70, 0x47, 0x13, 0xb5, 0x00, 0x24, - 0x00, 0x94, 0xff, 0xf7, 0x17, 0xfe, 0x02, 0xb0, 0x10, 0xbd, 0x07, 0xb5, - 0x13, 0x46, 0x00, 0x22, 0x00, 0x92, 0x0a, 0x46, 0x6f, 0xf0, 0x00, 0x41, - 0xff, 0xf7, 0x0c, 0xfe, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x00, 0x00, - 0x07, 0xb5, 0x0b, 0x46, 0x06, 0x49, 0x02, 0x46, 0x00, 0x20, 0x09, 0x68, - 0x89, 0x68, 0x00, 0x91, 0x6f, 0xf0, 0x00, 0x41, 0xff, 0xf7, 0xfc, 0xfd, - 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, - 0x0c, 0xb4, 0x1f, 0xb5, 0x06, 0xab, 0x00, 0x24, 0x53, 0xf8, 0x04, 0x2b, - 0x00, 0x94, 0x03, 0x93, 0xff, 0xf7, 0xec, 0xfd, 0x04, 0xb0, 0xbd, 0xe8, - 0x10, 0x40, 0x02, 0xb0, 0x70, 0x47, 0x0e, 0xb4, 0x0f, 0xb5, 0x00, 0x21, - 0x05, 0xab, 0x53, 0xf8, 0x04, 0x2b, 0x00, 0x91, 0x6f, 0xf0, 0x00, 0x41, - 0x03, 0x93, 0xff, 0xf7, 0xdb, 0xfd, 0x04, 0xb0, 0x5d, 0xf8, 0x04, 0xeb, - 0x03, 0xb0, 0x70, 0x47, 0x0f, 0xb4, 0x1f, 0xb5, 0x08, 0x49, 0x06, 0xab, - 0x00, 0x20, 0x09, 0x68, 0x53, 0xf8, 0x04, 0x2b, 0x89, 0x68, 0x03, 0x93, - 0x00, 0x91, 0x6f, 0xf0, 0x00, 0x41, 0xff, 0xf7, 0xc7, 0xfd, 0x05, 0xb0, - 0x5d, 0xf8, 0x04, 0xeb, 0x04, 0xb0, 0x70, 0x47, 0x10, 0x03, 0x00, 0x24, - 0x03, 0x4b, 0x59, 0x6a, 0x5a, 0x6a, 0x52, 0x1a, 0x82, 0x42, 0xfb, 0xd3, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0x0c, 0x00, 0x40, 0x07, 0xb5, 0x01, 0x90, - 0x0c, 0xf0, 0x5e, 0xf8, 0x01, 0x99, 0x10, 0xb9, 0x02, 0x48, 0xf3, 0xf7, - 0xb1, 0xfb, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x1f, 0x01, 0x01, 0x80, - 0x03, 0x78, 0x23, 0xf0, 0x03, 0x03, 0x43, 0xf0, 0x01, 0x03, 0x03, 0x70, - 0xff, 0xf7, 0xd8, 0xbe, 0x10, 0xb5, 0x04, 0x46, 0x03, 0x78, 0x03, 0xf0, - 0x03, 0x03, 0x01, 0x2b, 0x08, 0xd0, 0xff, 0xf7, 0xd7, 0xfe, 0x23, 0x78, - 0x03, 0xf0, 0x03, 0x02, 0x01, 0x2a, 0x03, 0xd1, 0xff, 0xf7, 0xc8, 0xfe, - 0x00, 0x20, 0x03, 0xe0, 0x43, 0xf0, 0x02, 0x03, 0x23, 0x70, 0x01, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x01, 0x4b, 0x18, 0x68, 0x08, 0xf0, 0x34, 0xbf, - 0xa0, 0x86, 0x00, 0x24, 0x01, 0x4b, 0x18, 0x68, 0xf8, 0xf7, 0xc6, 0xbd, - 0xa0, 0x86, 0x00, 0x24, 0x01, 0x4b, 0x18, 0x68, 0x08, 0xf0, 0x28, 0xbf, - 0xe0, 0x86, 0x00, 0x24, 0x01, 0x4b, 0x18, 0x68, 0xf8, 0xf7, 0xba, 0xbd, - 0xe0, 0x86, 0x00, 0x24, 0x01, 0x20, 0x70, 0x47, 0x07, 0x4a, 0x08, 0x49, - 0x13, 0x68, 0x18, 0x44, 0x88, 0x42, 0x83, 0xbf, 0x06, 0x4b, 0x0c, 0x22, - 0x4f, 0xf0, 0xff, 0x30, 0x10, 0x60, 0x8c, 0xbf, 0x1a, 0x60, 0x18, 0x46, - 0x70, 0x47, 0x00, 0xbf, 0x10, 0x01, 0x00, 0x24, 0x00, 0xfc, 0x07, 0x24, - 0x78, 0xa8, 0x00, 0x24, 0x06, 0x4a, 0x13, 0x68, 0x43, 0xb1, 0x01, 0x3b, - 0x13, 0x60, 0x2b, 0xb9, 0x04, 0x4a, 0x13, 0x70, 0x04, 0x4b, 0x1b, 0x78, - 0x03, 0xb1, 0x62, 0xb6, 0x70, 0x47, 0x00, 0xbf, 0x9c, 0x86, 0x00, 0x24, - 0xec, 0x86, 0x00, 0x24, 0x98, 0x86, 0x00, 0x24, 0xef, 0xf3, 0x10, 0x83, - 0x72, 0xb6, 0x07, 0x4a, 0x11, 0x78, 0x31, 0xb9, 0xdb, 0x43, 0x06, 0x49, - 0x03, 0xf0, 0x01, 0x03, 0x0b, 0x70, 0x01, 0x23, 0x13, 0x70, 0x04, 0x4a, - 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x70, 0x47, 0xec, 0x86, 0x00, 0x24, - 0x98, 0x86, 0x00, 0x24, 0x9c, 0x86, 0x00, 0x24, 0x08, 0xb5, 0xff, 0xf7, - 0xe5, 0xff, 0x06, 0x4a, 0x13, 0x88, 0x01, 0x3b, 0x9b, 0xb2, 0x13, 0x80, - 0x13, 0xb9, 0x01, 0x20, 0xff, 0xf7, 0x4a, 0xfa, 0xbd, 0xe8, 0x08, 0x40, - 0xff, 0xf7, 0xc4, 0xbf, 0xe4, 0x86, 0x00, 0x24, 0x10, 0xb5, 0x07, 0x4c, - 0xff, 0xf7, 0xd2, 0xff, 0x21, 0x88, 0x11, 0xb9, 0x08, 0x46, 0xff, 0xf7, - 0x3b, 0xfa, 0x01, 0x31, 0x21, 0x80, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, - 0xb3, 0xbf, 0x00, 0xbf, 0xe4, 0x86, 0x00, 0x24, 0x08, 0xb5, 0xff, 0xf7, - 0xc1, 0xff, 0x06, 0x4a, 0x13, 0x88, 0x01, 0x3b, 0x9b, 0xb2, 0x13, 0x80, - 0x13, 0xb9, 0x01, 0x20, 0xff, 0xf7, 0x10, 0xfa, 0xbd, 0xe8, 0x08, 0x40, - 0xff, 0xf7, 0xa0, 0xbf, 0xe6, 0x86, 0x00, 0x24, 0x10, 0xb5, 0x06, 0x4c, - 0xff, 0xf7, 0xae, 0xff, 0x20, 0x88, 0x08, 0xb9, 0xff, 0xf7, 0x02, 0xfa, - 0x01, 0x30, 0x20, 0x80, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x90, 0xbf, - 0xe6, 0x86, 0x00, 0x24, 0xf0, 0xb5, 0x8f, 0xb0, 0x07, 0x46, 0x0e, 0x46, - 0x15, 0x46, 0x00, 0x21, 0x14, 0x22, 0x09, 0xa8, 0x01, 0xac, 0x0b, 0xf0, - 0xf7, 0xff, 0x10, 0x4b, 0x08, 0x94, 0x5b, 0x69, 0x01, 0x97, 0xda, 0x6b, - 0x04, 0x93, 0x05, 0x92, 0x5a, 0x6b, 0x1b, 0x6b, 0x06, 0x92, 0x07, 0x93, - 0xcd, 0xe9, 0x02, 0x56, 0xff, 0xf7, 0x88, 0xff, 0x09, 0x4a, 0x0a, 0x4d, - 0x13, 0x68, 0x01, 0x33, 0x13, 0x60, 0x0f, 0xcc, 0x0f, 0xc5, 0x0f, 0xcc, - 0x0f, 0xc5, 0x0f, 0xcc, 0x0f, 0xc5, 0x23, 0x68, 0x2b, 0x60, 0xff, 0xf7, - 0x65, 0xff, 0x00, 0x20, 0x0f, 0xb0, 0xf0, 0xbd, 0x1c, 0x01, 0x00, 0x24, - 0xa4, 0x86, 0x00, 0x24, 0xac, 0x86, 0x00, 0x24, 0xf8, 0xb5, 0x05, 0x46, - 0xff, 0xf7, 0x6c, 0xff, 0xd0, 0xe9, 0x00, 0x34, 0xdb, 0x68, 0x98, 0x47, - 0x94, 0xf8, 0x32, 0x30, 0x1b, 0xb1, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, - 0x4d, 0xbf, 0x01, 0x23, 0x84, 0xf8, 0x31, 0x30, 0x63, 0x68, 0xab, 0xb1, - 0x28, 0x46, 0xff, 0xf7, 0xda, 0xf9, 0x61, 0x68, 0xd4, 0xe9, 0x0a, 0x67, - 0xd1, 0xe9, 0x00, 0x23, 0x9f, 0x42, 0x08, 0xbf, 0x96, 0x42, 0x09, 0xd3, - 0x6b, 0x68, 0x5a, 0x68, 0xcb, 0x68, 0x63, 0x60, 0x23, 0x68, 0x00, 0x2b, - 0xea, 0xd0, 0x90, 0x68, 0x98, 0x47, 0xe7, 0xe7, 0x00, 0x23, 0x28, 0x46, - 0x84, 0xf8, 0x31, 0x30, 0xff, 0xf7, 0x07, 0xfa, 0xd9, 0xe7, 0x2d, 0xe9, - 0xf7, 0x43, 0x04, 0x46, 0x00, 0xf1, 0x08, 0x05, 0x80, 0x69, 0x90, 0x46, - 0x99, 0x46, 0x01, 0x90, 0xff, 0xf7, 0x34, 0xff, 0x01, 0x98, 0xff, 0xf7, - 0xb2, 0xf9, 0x01, 0x98, 0x00, 0x21, 0x42, 0x68, 0x24, 0x61, 0x53, 0x68, - 0xc4, 0xe9, 0x02, 0x89, 0x2b, 0xb9, 0x63, 0x61, 0x61, 0xb9, 0x55, 0x60, - 0xff, 0xf7, 0xeb, 0xf9, 0x0f, 0xe0, 0xd3, 0xe9, 0x00, 0x67, 0xb9, 0x45, - 0x08, 0xbf, 0xb0, 0x45, 0xf3, 0xd3, 0x19, 0x46, 0xdb, 0x68, 0xef, 0xe7, - 0xd2, 0xe9, 0x0a, 0x23, 0xcd, 0x60, 0x4b, 0x45, 0x08, 0xbf, 0x42, 0x45, - 0xec, 0xd2, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x43, 0xff, 0xf7, 0xfa, 0xbe, - 0x90, 0xf8, 0x3c, 0x30, 0x30, 0xb4, 0x53, 0xb1, 0x00, 0x23, 0x80, 0xf8, - 0x3c, 0x30, 0x90, 0xf8, 0x3e, 0x30, 0x13, 0xb9, 0x01, 0x23, 0x80, 0xf8, - 0x3d, 0x30, 0x30, 0xbc, 0x70, 0x47, 0x90, 0xf8, 0x3f, 0x30, 0x00, 0x2b, - 0xf9, 0xd0, 0x83, 0x6b, 0x4f, 0xf0, 0x80, 0x62, 0x01, 0x33, 0x83, 0x63, - 0x0b, 0x4b, 0x5a, 0x60, 0xd0, 0xe9, 0x0c, 0x32, 0x01, 0x33, 0x42, 0xf1, - 0x00, 0x02, 0xc0, 0xe9, 0x0c, 0x32, 0xd0, 0xe9, 0x0a, 0x23, 0x12, 0xf5, - 0x7a, 0x75, 0x43, 0xf1, 0x00, 0x04, 0x12, 0xf5, 0xfa, 0x62, 0xc0, 0xe9, - 0x0a, 0x54, 0x43, 0xf1, 0x00, 0x03, 0x30, 0xbc, 0xff, 0xf7, 0x9f, 0xbf, - 0x00, 0xed, 0x00, 0xe0, 0x38, 0xb5, 0xd0, 0xe9, 0x08, 0x25, 0xd0, 0xe9, - 0x02, 0x13, 0x04, 0x46, 0x52, 0x18, 0x45, 0xeb, 0x03, 0x03, 0xff, 0xf7, - 0x92, 0xff, 0x63, 0x6b, 0x2b, 0xb1, 0x04, 0xf1, 0x28, 0x00, 0xbd, 0xe8, - 0x38, 0x40, 0x09, 0xf0, 0xb1, 0xba, 0x38, 0xbd, 0x09, 0x4b, 0x30, 0xb5, - 0x1a, 0x46, 0x09, 0x4c, 0xd3, 0xf8, 0x94, 0x50, 0xa5, 0x42, 0xfb, 0xd1, - 0x03, 0x68, 0x29, 0xb1, 0x81, 0x68, 0x0b, 0x60, 0x4f, 0xf4, 0x40, 0x73, - 0x53, 0x61, 0x30, 0xbd, 0xc1, 0x68, 0x1b, 0x04, 0xf7, 0xe7, 0x00, 0xbf, - 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, 0xf0, 0xb5, 0x72, 0xb6, - 0x00, 0x23, 0x26, 0x4a, 0x4f, 0xf0, 0xff, 0x36, 0x25, 0x4f, 0x13, 0x60, - 0x4f, 0xf0, 0xe0, 0x22, 0x1d, 0x46, 0x51, 0x68, 0x01, 0xf0, 0x0f, 0x01, - 0x01, 0x31, 0x9a, 0x00, 0x4f, 0xea, 0xc3, 0x0c, 0x02, 0xf1, 0x60, 0x42, - 0x02, 0xf5, 0x61, 0x42, 0xc2, 0xf8, 0x80, 0x60, 0xc2, 0xf8, 0x80, 0x61, - 0x00, 0x22, 0x02, 0xeb, 0x0c, 0x04, 0x01, 0x32, 0x3c, 0x44, 0x08, 0x2a, - 0x84, 0xf8, 0x00, 0x53, 0xf7, 0xd1, 0x01, 0x33, 0x99, 0x42, 0xe8, 0xdc, - 0x16, 0x4b, 0x4f, 0xf0, 0x20, 0x62, 0x5a, 0x60, 0x40, 0xf2, 0xfa, 0x52, - 0x98, 0x60, 0xda, 0x60, 0x00, 0x22, 0x1d, 0x61, 0x11, 0x46, 0x9c, 0x18, - 0x01, 0x32, 0x0c, 0x2a, 0x21, 0x76, 0xfa, 0xd1, 0x4f, 0xf0, 0xff, 0x32, - 0x59, 0x62, 0x9a, 0x62, 0x0d, 0x4a, 0xda, 0x62, 0x1f, 0x22, 0x1a, 0x63, - 0xbf, 0xf3, 0x5f, 0x8f, 0x0b, 0x4b, 0x59, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, - 0xbf, 0xf3, 0x6f, 0x8f, 0xd0, 0xe9, 0x00, 0x31, 0x00, 0x22, 0x82, 0xf3, - 0x14, 0x88, 0x9d, 0x46, 0x82, 0xf3, 0x10, 0x88, 0x08, 0x47, 0xf0, 0xbd, - 0x10, 0xe0, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe0, 0x00, 0xed, 0x00, 0xe0, - 0x02, 0x00, 0x00, 0xc0, 0x90, 0xed, 0x00, 0xe0, 0x0b, 0xf0, 0xbc, 0xbe, - 0x0b, 0xf0, 0xca, 0xbe, 0x0b, 0xf0, 0x72, 0xbf, 0x0b, 0xf0, 0x16, 0xbf, - 0x43, 0x68, 0x93, 0xf8, 0x30, 0x20, 0x2d, 0xe9, 0xf0, 0x47, 0x06, 0x46, - 0x00, 0x2a, 0x74, 0xd1, 0x93, 0xf8, 0x32, 0x30, 0x00, 0x2b, 0x70, 0xd1, - 0x03, 0x68, 0x1b, 0x68, 0x98, 0x47, 0x33, 0x68, 0xdb, 0x69, 0x98, 0x47, - 0x36, 0x4b, 0x02, 0x68, 0x00, 0x2a, 0x08, 0xbf, 0x1a, 0x46, 0x11, 0x46, - 0x1c, 0x46, 0xb1, 0xfb, 0xf3, 0xf3, 0x04, 0xfb, 0x13, 0x13, 0x21, 0x46, - 0x00, 0x2b, 0xf7, 0xd1, 0x2f, 0x4b, 0x01, 0x25, 0x77, 0x68, 0xb3, 0xfb, - 0xf4, 0xf1, 0x1f, 0x23, 0xb9, 0x60, 0x01, 0x3b, 0x03, 0xd3, 0x05, 0xfa, - 0x03, 0xfc, 0x61, 0x45, 0xf9, 0xd1, 0xb2, 0xfb, 0xf4, 0xf2, 0x87, 0xf8, - 0x33, 0x30, 0x01, 0x24, 0x1f, 0x23, 0xfa, 0x60, 0x04, 0xfa, 0x03, 0xf5, - 0xaa, 0x42, 0x01, 0xd0, 0x01, 0x3b, 0xf9, 0xd2, 0x87, 0xf8, 0x34, 0x30, - 0x44, 0x68, 0x23, 0x1f, 0x1b, 0x2b, 0x93, 0xbf, 0x01, 0x23, 0x4f, 0xf0, - 0xff, 0x33, 0x20, 0x24, 0xa3, 0x40, 0xa4, 0xf1, 0x04, 0x04, 0x98, 0xbf, - 0x03, 0xf1, 0xff, 0x33, 0x12, 0xf1, 0xff, 0x30, 0x3b, 0x61, 0x4f, 0xf0, - 0x07, 0x03, 0x03, 0xfa, 0x04, 0xf4, 0x4f, 0xf0, 0x00, 0x03, 0x4f, 0xea, - 0xe4, 0x79, 0x7c, 0x61, 0xa4, 0xfb, 0x01, 0x45, 0x9a, 0x46, 0x01, 0xfb, - 0x09, 0x55, 0x43, 0xf1, 0xff, 0x31, 0x20, 0x18, 0x45, 0xeb, 0x01, 0x01, - 0x0d, 0xf0, 0x28, 0xfd, 0x33, 0x68, 0xc7, 0xe9, 0x06, 0x01, 0x5b, 0x68, - 0xc7, 0xe9, 0x00, 0xaa, 0x98, 0x47, 0x73, 0x68, 0x38, 0x62, 0x00, 0x21, - 0x00, 0x20, 0x01, 0x22, 0xc3, 0xf8, 0x24, 0xa0, 0x83, 0xf8, 0x32, 0xa0, - 0x1a, 0x86, 0xc3, 0xe9, 0x0a, 0x01, 0x30, 0x46, 0xff, 0xf7, 0x57, 0xf8, - 0x30, 0x46, 0xbd, 0xe8, 0xf0, 0x47, 0xff, 0xf7, 0x98, 0xb8, 0xbd, 0xe8, - 0xf0, 0x87, 0x00, 0xbf, 0x40, 0x42, 0x0f, 0x00, 0x10, 0xb5, 0x04, 0x46, - 0xff, 0xf7, 0x7a, 0xff, 0xff, 0xf7, 0xc6, 0xfd, 0x20, 0x46, 0xff, 0xf7, - 0x44, 0xf8, 0x63, 0x68, 0xd3, 0xe9, 0x0a, 0x01, 0xff, 0xf7, 0xaa, 0xfd, - 0x10, 0xbd, 0x2d, 0xe9, 0xf8, 0x43, 0x0c, 0x46, 0x80, 0x46, 0x88, 0x69, - 0xff, 0xf7, 0xea, 0xff, 0xd4, 0xe9, 0x0a, 0x59, 0x46, 0x1b, 0x61, 0xeb, - 0x09, 0x07, 0x00, 0x2f, 0x08, 0xbf, 0xb6, 0xf5, 0x7a, 0x7f, 0x2a, 0xd3, - 0x00, 0x2f, 0x08, 0xbf, 0xb6, 0xf5, 0xfa, 0x6f, 0x28, 0xd3, 0x00, 0x2e, - 0x4f, 0xf4, 0x7a, 0x72, 0x30, 0x46, 0x77, 0xf1, 0x01, 0x03, 0x4f, 0xf0, - 0x00, 0x03, 0xb4, 0xbf, 0x00, 0x21, 0x39, 0x46, 0x0d, 0xf0, 0xd6, 0xfc, - 0x4f, 0xf4, 0x7a, 0x76, 0x00, 0x23, 0xa3, 0x63, 0xa0, 0xfb, 0x06, 0x23, - 0x55, 0x19, 0x06, 0xfb, 0x01, 0x33, 0x43, 0xeb, 0x09, 0x03, 0xc4, 0xe9, - 0x0a, 0x53, 0xd4, 0xe9, 0x0c, 0x32, 0xc3, 0x18, 0x40, 0x46, 0x42, 0xeb, - 0x01, 0x01, 0xc4, 0xe9, 0x0c, 0x31, 0xc8, 0xe9, 0x00, 0x31, 0xbd, 0xe8, - 0xf8, 0x83, 0x00, 0x20, 0x01, 0x46, 0xe3, 0xe7, 0x01, 0x20, 0x00, 0x21, - 0xe0, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0x70, 0x43, 0x15, 0x4e, 0x35, 0x68, - 0x2d, 0xbb, 0x15, 0x4c, 0x4f, 0xf0, 0x00, 0x08, 0x14, 0x48, 0x4f, 0xf0, - 0x00, 0x09, 0x14, 0x4b, 0xa0, 0x61, 0x23, 0x60, 0xc4, 0xe9, 0x02, 0x89, - 0xc4, 0xe9, 0x04, 0x55, 0xff, 0xf7, 0x18, 0xff, 0xff, 0xf7, 0x64, 0xfd, - 0x0f, 0x4b, 0x10, 0x4a, 0x1a, 0x60, 0xff, 0xf7, 0x4b, 0xfd, 0x0f, 0x4b, - 0xa0, 0x69, 0x23, 0x60, 0xff, 0xf7, 0x8e, 0xff, 0x84, 0xf8, 0x40, 0x50, - 0x34, 0x60, 0xc4, 0xe9, 0x08, 0x01, 0xc4, 0xe9, 0x0a, 0x01, 0xc4, 0xe9, - 0x0c, 0x89, 0xc4, 0xe9, 0x0e, 0x55, 0x30, 0x68, 0xbd, 0xe8, 0x70, 0x83, - 0x88, 0x86, 0x00, 0x24, 0x40, 0x86, 0x00, 0x24, 0x18, 0xdf, 0x01, 0x08, - 0x8c, 0xdc, 0x01, 0x08, 0xe0, 0x0d, 0x00, 0x24, 0xcd, 0xe7, 0x00, 0x08, - 0xd4, 0xe6, 0x01, 0x08, 0xb1, 0xf9, 0x00, 0x30, 0x5a, 0x1c, 0x01, 0xd1, - 0x18, 0x46, 0x70, 0x47, 0x83, 0x42, 0x01, 0xd1, 0x88, 0x68, 0x70, 0x47, - 0x0c, 0x31, 0xf3, 0xe7, 0x08, 0xb5, 0x43, 0x1c, 0x03, 0xd1, 0x03, 0x46, - 0x18, 0x46, 0x08, 0xbd, 0x0c, 0x31, 0xb1, 0xf9, 0x00, 0x30, 0x5a, 0x1c, - 0x04, 0xd0, 0x98, 0x42, 0xf8, 0xd1, 0x4b, 0x68, 0x59, 0x1c, 0xf3, 0xd1, - 0x01, 0x46, 0x01, 0x48, 0xf3, 0xf7, 0x66, 0xf8, 0x30, 0x01, 0x01, 0x80, - 0x88, 0x42, 0x08, 0xb5, 0x07, 0xd0, 0x43, 0x1c, 0x05, 0xd0, 0x01, 0x31, - 0x01, 0x46, 0x02, 0xd0, 0x02, 0x48, 0xf3, 0xf7, 0x59, 0xf8, 0x08, 0x46, - 0x08, 0xbd, 0x00, 0xbf, 0x30, 0x01, 0x01, 0x80, 0xd0, 0xf8, 0x90, 0x30, - 0x2d, 0xe9, 0xf0, 0x4f, 0x01, 0x2b, 0x04, 0x46, 0x2d, 0xed, 0x08, 0x8b, - 0x87, 0xb0, 0x02, 0x93, 0x07, 0xd9, 0x00, 0x20, 0x84, 0xf8, 0x94, 0x00, - 0x07, 0xb0, 0xbd, 0xec, 0x08, 0x8b, 0xbd, 0xe8, 0xf0, 0x8f, 0x03, 0x1d, - 0xb0, 0xf9, 0x96, 0x70, 0xb0, 0xf9, 0x98, 0x60, 0x08, 0xee, 0x10, 0x3a, - 0xd0, 0xf8, 0x8c, 0x30, 0xb0, 0xf9, 0x9a, 0x50, 0xb0, 0xf9, 0x9c, 0xa0, - 0x08, 0xee, 0x90, 0x3a, 0xb0, 0xf9, 0x9e, 0xb0, 0xb0, 0xf9, 0xa0, 0x80, - 0x38, 0x46, 0x72, 0x49, 0xff, 0xf7, 0xb0, 0xff, 0x71, 0x49, 0x03, 0x90, - 0x30, 0x46, 0xff, 0xf7, 0xab, 0xff, 0x70, 0x49, 0x01, 0x90, 0x28, 0x46, - 0xff, 0xf7, 0xa6, 0xff, 0x6e, 0x49, 0x09, 0xee, 0x10, 0x0a, 0x50, 0x46, - 0xff, 0xf7, 0xa0, 0xff, 0x6c, 0x49, 0x09, 0xee, 0x90, 0x0a, 0x58, 0x46, - 0xff, 0xf7, 0x9a, 0xff, 0x6a, 0x49, 0x0a, 0xee, 0x10, 0x0a, 0x40, 0x46, - 0xff, 0xf7, 0x94, 0xff, 0x01, 0x9a, 0x03, 0x9b, 0x81, 0x46, 0x11, 0x46, - 0x18, 0x46, 0xff, 0xf7, 0xa3, 0xff, 0x19, 0xee, 0x90, 0x1a, 0x01, 0x90, - 0x19, 0xee, 0x10, 0x0a, 0xff, 0xf7, 0x9c, 0xff, 0x49, 0x46, 0x03, 0x90, - 0x1a, 0xee, 0x10, 0x0a, 0xff, 0xf7, 0x96, 0xff, 0x01, 0x9b, 0x1a, 0x46, - 0x03, 0x9b, 0x9a, 0x42, 0xab, 0xd1, 0x01, 0x9b, 0x83, 0x42, 0xa8, 0xd1, - 0x54, 0x49, 0x38, 0x46, 0xff, 0xf7, 0x68, 0xff, 0x53, 0x49, 0x03, 0x90, - 0x30, 0x46, 0xff, 0xf7, 0x63, 0xff, 0x52, 0x49, 0x09, 0xee, 0x10, 0x0a, - 0x28, 0x46, 0xff, 0xf7, 0x5d, 0xff, 0x50, 0x49, 0x09, 0xee, 0x90, 0x0a, - 0x50, 0x46, 0xff, 0xf7, 0x57, 0xff, 0x4e, 0x49, 0x0a, 0xee, 0x10, 0x0a, - 0x58, 0x46, 0xff, 0xf7, 0x51, 0xff, 0x4c, 0x49, 0x0a, 0xee, 0x90, 0x0a, - 0x40, 0x46, 0xff, 0xf7, 0x4b, 0xff, 0x4a, 0x4a, 0x0b, 0xee, 0x10, 0x0a, - 0x03, 0x9b, 0xd2, 0xf8, 0xd4, 0x10, 0x48, 0x48, 0x41, 0xf4, 0x80, 0x41, - 0xc2, 0xf8, 0xd4, 0x10, 0xd2, 0xf8, 0xd4, 0x10, 0x01, 0xf4, 0x80, 0x41, - 0x05, 0x91, 0x05, 0x99, 0x43, 0x49, 0xd0, 0xf8, 0x8c, 0xc0, 0x8c, 0x45, - 0xfb, 0xd1, 0xd1, 0x6f, 0x4f, 0xf0, 0x00, 0x09, 0x41, 0xf4, 0x80, 0x41, - 0xd1, 0x67, 0xd1, 0x6f, 0x21, 0xf4, 0x80, 0x41, 0xd1, 0x67, 0x4f, 0xf4, - 0x40, 0x72, 0x01, 0x21, 0xc2, 0x60, 0x00, 0x22, 0x38, 0x46, 0xa4, 0xf8, - 0x54, 0x70, 0x84, 0xf8, 0x45, 0x20, 0x22, 0x61, 0x84, 0xf8, 0x44, 0x20, - 0x4f, 0xf0, 0x00, 0x42, 0x92, 0xfa, 0xa2, 0xf2, 0xb2, 0xfa, 0x82, 0xf2, - 0x01, 0x3a, 0x62, 0x61, 0x4f, 0xf4, 0x80, 0x62, 0xa2, 0x61, 0x02, 0x9a, - 0xe2, 0x61, 0x01, 0x9a, 0xc4, 0xe9, 0x02, 0x11, 0x62, 0x60, 0x19, 0x46, - 0xc4, 0xe9, 0x08, 0x99, 0xf4, 0xf7, 0xfe, 0xfe, 0x49, 0x46, 0x38, 0x46, - 0xf4, 0xf7, 0xb2, 0xfe, 0x19, 0xee, 0x10, 0x1a, 0x30, 0x46, 0xa4, 0xf8, - 0x56, 0x60, 0xf4, 0xf7, 0xf3, 0xfe, 0x49, 0x46, 0x30, 0x46, 0xf4, 0xf7, - 0xa7, 0xfe, 0x19, 0xee, 0x90, 0x1a, 0x28, 0x46, 0xa4, 0xf8, 0x58, 0x50, - 0xf4, 0xf7, 0xe8, 0xfe, 0x49, 0x46, 0x28, 0x46, 0xf4, 0xf7, 0x9c, 0xfe, - 0x1a, 0xee, 0x10, 0x1a, 0x50, 0x46, 0xa4, 0xf8, 0x5a, 0xa0, 0xf4, 0xf7, - 0xdd, 0xfe, 0x49, 0x46, 0x50, 0x46, 0xf4, 0xf7, 0x91, 0xfe, 0x1a, 0xee, - 0x90, 0x1a, 0x58, 0x46, 0xa4, 0xf8, 0x5c, 0xb0, 0xf4, 0xf7, 0xd2, 0xfe, - 0x49, 0x46, 0x58, 0x46, 0xf4, 0xf7, 0x86, 0xfe, 0x1b, 0xee, 0x10, 0x1a, - 0x40, 0x46, 0xa4, 0xf8, 0x5e, 0x80, 0xf4, 0xf7, 0xc7, 0xfe, 0x49, 0x46, - 0x40, 0x46, 0xf4, 0xf7, 0x7b, 0xfe, 0x18, 0xee, 0x90, 0x1a, 0x18, 0xee, - 0x10, 0x0a, 0xf6, 0xf7, 0xf3, 0xfb, 0xb0, 0xfa, 0x80, 0xf0, 0x40, 0x09, - 0x00, 0xe7, 0x00, 0xbf, 0xc8, 0xe2, 0x01, 0x08, 0xf8, 0xe2, 0x01, 0x08, - 0x28, 0xe3, 0x01, 0x08, 0x4c, 0xe3, 0x01, 0x08, 0x7c, 0xe3, 0x01, 0x08, - 0xa0, 0xe3, 0x01, 0x08, 0x00, 0x44, 0x02, 0x58, 0x00, 0x64, 0x02, 0x58, - 0x00, 0x03, 0x00, 0x80, 0x43, 0x1c, 0x07, 0xb5, 0x10, 0xd1, 0x03, 0xb0, - 0x5d, 0xf8, 0x04, 0xfb, 0x83, 0x42, 0x0a, 0xd1, 0x89, 0x68, 0x01, 0x90, - 0xf4, 0xf7, 0x9a, 0xfe, 0x00, 0x21, 0x01, 0x98, 0x03, 0xb0, 0x5d, 0xf8, - 0x04, 0xeb, 0xf4, 0xf7, 0x4b, 0xbe, 0x0c, 0x31, 0xb1, 0xf9, 0x00, 0x30, - 0x5a, 0x1c, 0xed, 0xd1, 0x01, 0x46, 0x01, 0x48, 0xf2, 0xf7, 0x1a, 0xff, - 0x30, 0x01, 0x01, 0x80, 0x38, 0xb5, 0x15, 0x46, 0x04, 0x46, 0x01, 0x82, - 0xf5, 0xf7, 0x2e, 0xfd, 0x20, 0x46, 0x29, 0x46, 0xff, 0xf7, 0xfe, 0xfc, - 0x01, 0x21, 0xf5, 0xf7, 0x4b, 0xfd, 0xb4, 0xf9, 0x10, 0x00, 0x00, 0x21, - 0xbd, 0xe8, 0x38, 0x40, 0xf4, 0xf7, 0x2c, 0xbe, 0x00, 0xb5, 0x89, 0xb0, - 0x15, 0x4d, 0xff, 0xf7, 0xb7, 0xfb, 0x00, 0x22, 0xa5, 0x21, 0x01, 0xa8, - 0xff, 0xf7, 0xe2, 0xff, 0x04, 0x24, 0x01, 0x21, 0x01, 0xa8, 0xff, 0xf7, - 0xe5, 0xfc, 0x28, 0x46, 0xff, 0xf7, 0x2e, 0xfb, 0x00, 0x21, 0x01, 0xa8, - 0xff, 0xf7, 0xde, 0xfc, 0x28, 0x46, 0xff, 0xf7, 0x27, 0xfb, 0x01, 0x3c, - 0xef, 0xd1, 0x04, 0x24, 0x09, 0x4e, 0x01, 0x21, 0x01, 0xa8, 0xff, 0xf7, - 0xd3, 0xfc, 0x30, 0x46, 0xff, 0xf7, 0x1c, 0xfb, 0x00, 0x21, 0x01, 0xa8, - 0xff, 0xf7, 0xcc, 0xfc, 0x30, 0x46, 0xff, 0xf7, 0x15, 0xfb, 0x01, 0x3c, - 0xef, 0xd1, 0xdb, 0xe7, 0xf0, 0x49, 0x02, 0x00, 0x80, 0x1a, 0x06, 0x00, - 0x08, 0xb5, 0x08, 0xb1, 0xff, 0xf7, 0xca, 0xff, 0xfe, 0xe7, 0x00, 0x00, - 0x08, 0xb5, 0x0e, 0x4b, 0x01, 0x21, 0xd3, 0xe8, 0x4f, 0x2f, 0xc3, 0xe8, - 0x40, 0x1f, 0xd2, 0xb2, 0x00, 0x28, 0xf8, 0xd1, 0x2a, 0xb1, 0xff, 0xf7, - 0x77, 0xfb, 0xbf, 0xf3, 0x4f, 0x8f, 0x20, 0xbf, 0xfd, 0xe7, 0xef, 0xf3, - 0x05, 0x83, 0x1b, 0xb9, 0xef, 0xf3, 0x10, 0x83, 0xdb, 0x07, 0x01, 0xd5, - 0xff, 0xf7, 0xae, 0xff, 0x01, 0x20, 0xff, 0xf7, 0xdd, 0xff, 0x00, 0xbf, - 0xa8, 0x86, 0x00, 0x24, 0x0f, 0xb4, 0x72, 0x46, 0x08, 0xb5, 0x07, 0x4b, - 0x01, 0x20, 0xd3, 0xe8, 0x4f, 0x1f, 0xc3, 0xe8, 0x44, 0x0f, 0xc9, 0xb2, - 0x00, 0x2c, 0xf8, 0xd1, 0x11, 0xb9, 0x03, 0x48, 0xff, 0xf7, 0xb2, 0xfb, - 0xff, 0xf7, 0xce, 0xff, 0x48, 0x0e, 0x00, 0x24, 0x00, 0x01, 0xff, 0x80, - 0x3f, 0x28, 0x2d, 0xe9, 0xf0, 0x4f, 0x06, 0x46, 0x8b, 0xb0, 0x00, 0xf3, - 0x2b, 0x81, 0x96, 0x4f, 0x57, 0xf8, 0x20, 0x00, 0x41, 0x1c, 0x40, 0xf0, - 0x09, 0x81, 0x02, 0x2e, 0x00, 0xf3, 0x06, 0x81, 0x92, 0x48, 0xdf, 0xf8, - 0x8c, 0x92, 0x03, 0x78, 0xbf, 0xf3, 0x5b, 0x8f, 0x13, 0xf0, 0x01, 0x0f, - 0x40, 0xf0, 0xf9, 0x80, 0xff, 0xf7, 0xd6, 0xfa, 0x00, 0x28, 0x00, 0xf0, - 0xf4, 0x80, 0x8c, 0x4b, 0xc9, 0xf8, 0x00, 0x30, 0x8b, 0x4b, 0x1a, 0x68, - 0x98, 0x46, 0x00, 0x2a, 0x40, 0xf0, 0xe8, 0x80, 0x89, 0x49, 0x09, 0x20, - 0xff, 0xf7, 0xf0, 0xfd, 0x04, 0x46, 0x88, 0x49, 0x0a, 0x20, 0xff, 0xf7, - 0xeb, 0xfd, 0x01, 0x46, 0x20, 0x46, 0x86, 0x4d, 0xff, 0xf7, 0xfc, 0xfd, - 0x82, 0x49, 0x04, 0x46, 0x09, 0x20, 0xff, 0xf7, 0xd5, 0xfd, 0x81, 0x49, - 0x83, 0x46, 0x0a, 0x20, 0xff, 0xf7, 0xd0, 0xfd, 0x80, 0x4b, 0x82, 0x46, - 0x2c, 0x60, 0x9c, 0x42, 0x21, 0xd1, 0x7f, 0x4a, 0xd2, 0xf8, 0xf0, 0x10, - 0x41, 0xf0, 0x10, 0x01, 0xc2, 0xf8, 0xf0, 0x10, 0xd2, 0xf8, 0xf0, 0x20, - 0x02, 0xf0, 0x10, 0x02, 0x09, 0x92, 0x09, 0x9a, 0x79, 0x4a, 0x94, 0x42, - 0x4a, 0xd1, 0x77, 0x4b, 0xd3, 0xf8, 0xf0, 0x20, 0x42, 0xf0, 0x20, 0x02, - 0xc3, 0xf8, 0xf0, 0x20, 0xd3, 0xf8, 0xf0, 0x30, 0x03, 0xf0, 0x20, 0x03, - 0x04, 0x93, 0x04, 0x9b, 0x72, 0x4b, 0x9c, 0x42, 0x4a, 0xd1, 0x01, 0x24, - 0x87, 0xe0, 0x70, 0x4a, 0x94, 0x42, 0x1a, 0xd0, 0x02, 0xf5, 0x80, 0x62, - 0x94, 0x42, 0x24, 0xd0, 0x6d, 0x4a, 0x94, 0x42, 0x5c, 0xd0, 0x6d, 0x4a, - 0x94, 0x42, 0xdd, 0xd1, 0x67, 0x4a, 0xd2, 0xf8, 0xe8, 0x10, 0x41, 0xf4, - 0x80, 0x11, 0xc2, 0xf8, 0xe8, 0x10, 0xd2, 0xf8, 0xe8, 0x20, 0x02, 0xf4, - 0x80, 0x12, 0x05, 0x92, 0x05, 0x9a, 0x9c, 0x42, 0xde, 0xd1, 0x00, 0x24, - 0x69, 0xe0, 0x5f, 0x4a, 0xd2, 0xf8, 0xe8, 0x10, 0x41, 0xf4, 0x00, 0x31, - 0xc2, 0xf8, 0xe8, 0x10, 0xd2, 0xf8, 0xe8, 0x20, 0x02, 0xf4, 0x00, 0x32, - 0x08, 0x92, 0x08, 0x9a, 0xbe, 0xe7, 0x58, 0x4a, 0xd2, 0xf8, 0xe8, 0x10, - 0x41, 0xf4, 0x80, 0x21, 0xc2, 0xf8, 0xe8, 0x10, 0xd2, 0xf8, 0xe8, 0x20, - 0x02, 0xf4, 0x80, 0x22, 0x07, 0x92, 0x07, 0x9a, 0x56, 0x4a, 0x94, 0x42, - 0x37, 0xd1, 0x50, 0x4b, 0xd3, 0xf8, 0xe8, 0x20, 0x42, 0xf0, 0x80, 0x42, - 0xc3, 0xf8, 0xe8, 0x20, 0xd3, 0xf8, 0xe8, 0x30, 0x03, 0xf0, 0x80, 0x43, - 0x03, 0x93, 0x03, 0x9b, 0x4f, 0x4b, 0x9c, 0x42, 0x74, 0xd0, 0x03, 0xf5, - 0x80, 0x63, 0x9c, 0x42, 0x72, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x9c, 0x42, - 0x70, 0xd0, 0x03, 0xf5, 0x44, 0x43, 0x9c, 0x42, 0x6e, 0xd0, 0xa3, 0xf5, - 0x1c, 0x43, 0x9c, 0x42, 0x6c, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x9c, 0x42, - 0x5e, 0xd0, 0x45, 0x48, 0x84, 0x42, 0x14, 0xbf, 0x4f, 0xf0, 0xff, 0x34, - 0x08, 0x24, 0x20, 0xe0, 0x3a, 0x4a, 0xd2, 0xf8, 0xe8, 0x10, 0x41, 0xf4, - 0x00, 0x21, 0xc2, 0xf8, 0xe8, 0x10, 0xd2, 0xf8, 0xe8, 0x20, 0x02, 0xf4, - 0x00, 0x22, 0x06, 0x92, 0x06, 0x9a, 0x3c, 0x4a, 0x94, 0x42, 0x3a, 0xd0, - 0x39, 0x4a, 0x94, 0x42, 0x9f, 0xd1, 0x31, 0x4b, 0x08, 0x24, 0xd3, 0xf8, - 0xf4, 0x20, 0x42, 0xf0, 0x08, 0x02, 0xc3, 0xf8, 0xf4, 0x20, 0xd3, 0xf8, - 0xf4, 0x30, 0x03, 0xf0, 0x08, 0x03, 0x01, 0x93, 0x01, 0x9b, 0x59, 0x46, - 0x09, 0x20, 0x6c, 0x60, 0xf4, 0xf7, 0x12, 0xfd, 0x01, 0x21, 0x09, 0x20, - 0xf4, 0xf7, 0xc6, 0xfc, 0x51, 0x46, 0x0a, 0x20, 0xf4, 0xf7, 0x0a, 0xfd, - 0x01, 0x21, 0x0a, 0x20, 0xf4, 0xf7, 0xbe, 0xfc, 0x00, 0x23, 0x4f, 0xf4, - 0xe1, 0x32, 0xc5, 0xe9, 0x04, 0x33, 0xc5, 0xe9, 0x02, 0x23, 0x27, 0x4b, - 0xab, 0x61, 0xf6, 0xf7, 0xbf, 0xfa, 0x01, 0x23, 0xc8, 0xf8, 0x00, 0x30, - 0xf6, 0xf7, 0x40, 0xfd, 0x12, 0x48, 0xff, 0xf7, 0xd7, 0xf9, 0x22, 0x48, - 0x47, 0xf8, 0x26, 0x90, 0x0b, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x15, 0x4b, - 0xd3, 0xf8, 0xe8, 0x20, 0x42, 0xf0, 0x00, 0x42, 0xc3, 0xf8, 0xe8, 0x20, - 0xd3, 0xf8, 0xe8, 0x30, 0x03, 0xf0, 0x00, 0x43, 0x02, 0x93, 0x02, 0x9b, - 0x07, 0x24, 0xc6, 0xe7, 0x02, 0x24, 0xc4, 0xe7, 0x03, 0x24, 0xc2, 0xe7, - 0x04, 0x24, 0xc0, 0xe7, 0x05, 0x24, 0xbe, 0xe7, 0x06, 0x24, 0xbc, 0xe7, - 0x00, 0x20, 0xe1, 0xe7, 0x10, 0x00, 0x00, 0x24, 0x64, 0x85, 0x00, 0x24, - 0x84, 0xe6, 0x01, 0x08, 0xf0, 0x86, 0x00, 0x24, 0x2c, 0xe5, 0x01, 0x08, - 0xd0, 0xe3, 0x01, 0x08, 0xa0, 0x6a, 0x00, 0x24, 0x00, 0x10, 0x01, 0x40, - 0x00, 0x44, 0x02, 0x58, 0x00, 0x14, 0x01, 0x40, 0x00, 0x44, 0x00, 0x40, - 0x00, 0x4c, 0x00, 0x40, 0x00, 0x50, 0x00, 0x40, 0x00, 0x78, 0x00, 0x40, - 0x00, 0x48, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x58, 0x00, 0x7c, 0x00, 0x40, - 0x09, 0x00, 0x0a, 0x00, 0x8c, 0x86, 0x00, 0x24, 0x38, 0xb5, 0x0d, 0x46, - 0xff, 0xf7, 0xa2, 0xfe, 0x04, 0x46, 0x30, 0xb9, 0x0a, 0xf0, 0xcc, 0xfb, - 0x09, 0x23, 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x30, 0x38, 0xbd, 0x03, 0x68, - 0xdb, 0x69, 0x98, 0x47, 0x00, 0x28, 0x20, 0x46, 0x14, 0xbf, 0x4f, 0xf4, - 0x00, 0x53, 0x4f, 0xf4, 0x00, 0x43, 0x6b, 0x60, 0x23, 0x68, 0x9b, 0x6a, - 0x98, 0x47, 0x28, 0x61, 0x00, 0x20, 0xed, 0xe7, 0x13, 0xb5, 0xcd, 0xe9, - 0x00, 0x21, 0xff, 0xf7, 0x83, 0xfe, 0xdd, 0xe9, 0x00, 0x21, 0x40, 0xb9, - 0x0a, 0xf0, 0xac, 0xfb, 0x09, 0x23, 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x34, - 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, 0x03, 0x68, 0x1b, 0x69, 0x98, 0x47, - 0x04, 0x1e, 0xf7, 0xda, 0x64, 0x42, 0x0a, 0xf0, 0x9d, 0xfb, 0x04, 0x60, - 0xf0, 0xe7, 0x10, 0xb5, 0xff, 0xf7, 0x6a, 0xfe, 0x04, 0x46, 0x28, 0xb9, - 0x0a, 0xf0, 0x94, 0xfb, 0x09, 0x23, 0x03, 0x60, 0x20, 0x46, 0x10, 0xbd, - 0x03, 0x68, 0xdb, 0x69, 0x98, 0x47, 0x04, 0x1e, 0xf8, 0xda, 0x64, 0x42, - 0x0a, 0xf0, 0x88, 0xfb, 0x04, 0x60, 0x00, 0x24, 0xf2, 0xe7, 0xff, 0xf7, - 0xe8, 0xbf, 0x13, 0xb5, 0xcd, 0xe9, 0x00, 0x21, 0xff, 0xf7, 0x50, 0xfe, - 0xdd, 0xe9, 0x00, 0x21, 0x40, 0xb9, 0x0a, 0xf0, 0x79, 0xfb, 0x09, 0x23, - 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x34, 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, - 0x03, 0x68, 0x9b, 0x68, 0x98, 0x47, 0x04, 0x1e, 0xf7, 0xda, 0x64, 0x42, - 0x0a, 0xf0, 0x6a, 0xfb, 0x04, 0x60, 0xf0, 0xe7, 0x7f, 0xb5, 0x00, 0x2a, - 0x04, 0x46, 0x0d, 0x46, 0x06, 0xda, 0x0a, 0xf0, 0x61, 0xfb, 0x16, 0x23, - 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x30, 0x19, 0xe0, 0x01, 0x92, 0xff, 0xf7, - 0xbe, 0xff, 0x01, 0x9a, 0xe8, 0xb1, 0x11, 0x4e, 0x01, 0x22, 0x0d, 0xf1, - 0x0f, 0x01, 0x20, 0x46, 0xff, 0xf7, 0xcd, 0xff, 0x00, 0x28, 0xee, 0xdb, - 0x0a, 0xd0, 0x9d, 0xf8, 0x0f, 0x30, 0x0d, 0x2b, 0x08, 0xd1, 0x32, 0x5d, - 0x0a, 0x2a, 0x33, 0x55, 0xee, 0xd0, 0x0a, 0x23, 0x01, 0x20, 0x2b, 0x70, - 0x04, 0xb0, 0x70, 0xbd, 0x0a, 0x2b, 0x02, 0xd1, 0x32, 0x5d, 0x0d, 0x2a, - 0xf3, 0xe7, 0x33, 0x55, 0xf4, 0xe7, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, - 0xb2, 0xff, 0xf1, 0xe7, 0x68, 0x85, 0x00, 0x24, 0x13, 0xb5, 0xcd, 0xe9, - 0x00, 0x21, 0xff, 0xf7, 0xff, 0xfd, 0xdd, 0xe9, 0x00, 0x21, 0x40, 0xb9, - 0x0a, 0xf0, 0x28, 0xfb, 0x09, 0x23, 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x34, - 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, 0x03, 0x68, 0xdb, 0x68, 0x98, 0x47, - 0x04, 0x1e, 0xf7, 0xda, 0x64, 0x42, 0x0a, 0xf0, 0x19, 0xfb, 0x04, 0x60, - 0xf0, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0xf7, 0x4f, 0xb2, 0xf1, 0x00, 0x08, - 0x05, 0x46, 0x0e, 0x46, 0x09, 0xda, 0x0a, 0xf0, 0x0d, 0xfb, 0x16, 0x23, - 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x34, 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0xff, 0xf7, 0x68, 0xff, 0x04, 0x46, 0x60, 0xb3, 0x1f, 0x4a, - 0x00, 0x27, 0xdf, 0xf8, 0x7c, 0xa0, 0x4f, 0xf0, 0x0d, 0x0b, 0x53, 0x5d, - 0x3c, 0x46, 0x91, 0x46, 0xb8, 0x45, 0x21, 0xdd, 0xf2, 0x5d, 0x0a, 0x2a, - 0x1b, 0xd1, 0x0d, 0x2b, 0x01, 0x93, 0x18, 0xd0, 0xbc, 0x42, 0x0c, 0xda, - 0x3a, 0x1b, 0x31, 0x19, 0x28, 0x46, 0xff, 0xf7, 0xb7, 0xff, 0x00, 0x28, - 0x01, 0x9b, 0xda, 0xdb, 0x04, 0x44, 0xa7, 0x42, 0xd9, 0xdc, 0x09, 0xf8, - 0x05, 0x30, 0x01, 0x22, 0x51, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xaa, 0xff, - 0x00, 0x28, 0xce, 0xdb, 0xcf, 0xd0, 0x09, 0xf8, 0x05, 0xb0, 0xf3, 0x5d, - 0x01, 0x37, 0xdb, 0xe7, 0xa0, 0x45, 0xc8, 0xdd, 0xa8, 0xeb, 0x04, 0x02, - 0x31, 0x19, 0x28, 0x46, 0xff, 0xf7, 0x9a, 0xff, 0x00, 0x28, 0xbe, 0xdb, - 0x24, 0x18, 0x1f, 0xbf, 0x36, 0x19, 0x02, 0x4b, 0x16, 0xf8, 0x01, 0x2c, - 0x5a, 0x55, 0xb8, 0xe7, 0xa8, 0x85, 0x00, 0x24, 0xb0, 0xe1, 0x01, 0x08, - 0x38, 0xb5, 0x05, 0x46, 0x00, 0x24, 0xff, 0xf7, 0x8b, 0xfd, 0x0b, 0x4b, - 0x43, 0xf8, 0x25, 0x40, 0x30, 0xb9, 0x0a, 0xf0, 0xb3, 0xfa, 0x09, 0x23, - 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x30, 0x38, 0xbd, 0x03, 0x68, 0x5b, 0x69, - 0x98, 0x47, 0x05, 0x1e, 0x04, 0xda, 0x6d, 0x42, 0x0a, 0xf0, 0xa6, 0xfa, - 0x05, 0x60, 0xf2, 0xe7, 0x20, 0x46, 0xf2, 0xe7, 0x10, 0x00, 0x00, 0x24, - 0xf8, 0xb5, 0x4b, 0x69, 0x15, 0x46, 0x0c, 0x46, 0x9b, 0x1a, 0x00, 0x2b, - 0xac, 0xbf, 0xd3, 0x18, 0x13, 0x1c, 0x4b, 0x61, 0x03, 0x89, 0x8b, 0x80, - 0xff, 0xf7, 0xb2, 0xf8, 0x02, 0x46, 0x03, 0x68, 0x6b, 0xb3, 0x5e, 0x69, - 0x61, 0x69, 0x77, 0x1a, 0x00, 0x2f, 0x24, 0xdb, 0x8e, 0x42, 0x26, 0xd1, - 0x9b, 0x68, 0xa3, 0x60, 0x13, 0xb1, 0x04, 0xf1, 0x08, 0x01, 0x19, 0x61, - 0x13, 0x68, 0x21, 0x46, 0x00, 0x26, 0x41, 0xf8, 0x0c, 0x3f, 0x9e, 0x60, - 0x19, 0x61, 0x14, 0x60, 0x83, 0x6a, 0x22, 0x61, 0x6b, 0xb1, 0x90, 0xf8, - 0x24, 0x20, 0x52, 0xb1, 0x02, 0x68, 0xa2, 0x42, 0x07, 0xd1, 0xe2, 0x68, - 0x2a, 0xb9, 0x61, 0x69, 0xc0, 0x6a, 0x49, 0x1b, 0x21, 0xea, 0xe1, 0x71, - 0x98, 0x47, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, 0x71, 0xb8, 0x03, 0xf1, - 0x08, 0x02, 0x9b, 0x68, 0xd0, 0xe7, 0xa3, 0x60, 0x13, 0xb1, 0x04, 0xf1, - 0x08, 0x01, 0x19, 0x61, 0x00, 0x23, 0xe3, 0x60, 0xdd, 0xe7, 0x38, 0xb5, - 0x85, 0x69, 0x00, 0xf1, 0x08, 0x04, 0xff, 0xf7, 0x73, 0xf8, 0x6a, 0x68, - 0x53, 0x68, 0x9c, 0x42, 0x09, 0xd1, 0x43, 0x69, 0x28, 0x46, 0x53, 0x60, - 0xfe, 0xf7, 0x31, 0xfb, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0x52, 0xb8, - 0x13, 0x46, 0x00, 0x2b, 0xf8, 0xd0, 0xda, 0x68, 0x94, 0x42, 0xf9, 0xd1, - 0x42, 0x69, 0xda, 0x60, 0xf2, 0xe7, 0x84, 0xb0, 0xf8, 0xb5, 0x04, 0x46, - 0x07, 0xa8, 0xdd, 0xe9, 0x0c, 0x67, 0x04, 0xf1, 0x28, 0x05, 0x80, 0xe8, - 0x0e, 0x00, 0xff, 0xf7, 0x51, 0xf8, 0x0f, 0xc8, 0x85, 0xe8, 0x0f, 0x00, - 0x20, 0x46, 0xff, 0xf7, 0xd2, 0xff, 0xa0, 0x69, 0xc4, 0xe9, 0x08, 0x67, - 0xff, 0xf7, 0x7a, 0xfa, 0x82, 0x19, 0x20, 0x46, 0x41, 0xeb, 0x07, 0x03, - 0xff, 0xf7, 0x01, 0xf9, 0xbd, 0xe8, 0xf8, 0x40, 0x04, 0xb0, 0xff, 0xf7, - 0x27, 0xb8, 0xf8, 0xb5, 0x04, 0x46, 0x0e, 0x46, 0x15, 0x46, 0x00, 0x21, - 0x20, 0x22, 0x68, 0x30, 0x1f, 0x46, 0x0b, 0xf0, 0x91, 0xf8, 0x94, 0xf8, - 0x60, 0x30, 0x72, 0x1c, 0x84, 0xf8, 0x68, 0x30, 0x16, 0xbf, 0x00, 0x23, - 0x01, 0x23, 0x84, 0xf8, 0x69, 0x60, 0x84, 0xf8, 0x6a, 0x30, 0x94, 0xf8, - 0x61, 0x30, 0x84, 0xf8, 0x6c, 0x30, 0x94, 0xf8, 0x62, 0x30, 0x84, 0xf8, - 0x6d, 0x30, 0x6b, 0x1c, 0x16, 0xbf, 0x00, 0x23, 0x01, 0x23, 0x25, 0x67, - 0x01, 0x37, 0x84, 0xf8, 0x74, 0x30, 0x94, 0xf8, 0x63, 0x30, 0x84, 0xf8, - 0x78, 0x30, 0x94, 0xf8, 0x64, 0x30, 0x84, 0xf8, 0x79, 0x30, 0x16, 0xbf, - 0x00, 0x23, 0x01, 0x23, 0xe3, 0x67, 0x84, 0xf8, 0x80, 0x30, 0xd4, 0xf8, - 0x88, 0x30, 0x84, 0xf8, 0x84, 0x30, 0x94, 0xf8, 0x65, 0x30, 0x84, 0xf8, - 0x85, 0x30, 0xf8, 0xbd, 0x43, 0x68, 0x1a, 0x68, 0x03, 0x68, 0x1a, 0x42, - 0x14, 0xbf, 0x01, 0x20, 0x00, 0x20, 0x70, 0x47, 0x09, 0x4b, 0x30, 0xb5, - 0x1a, 0x46, 0x09, 0x4c, 0xd3, 0xf8, 0x94, 0x50, 0xa5, 0x42, 0xfb, 0xd1, - 0x03, 0x68, 0x29, 0xb1, 0x81, 0x68, 0x0b, 0x60, 0x4f, 0xf4, 0x40, 0x73, - 0x53, 0x61, 0x30, 0xbd, 0xc1, 0x68, 0x1b, 0x04, 0xf7, 0xe7, 0x00, 0xbf, - 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, 0x38, 0xb5, 0x05, 0x46, - 0x04, 0x68, 0x54, 0xb9, 0xfe, 0xf7, 0x5c, 0xfe, 0x2c, 0x68, 0x24, 0xb9, - 0x2c, 0x1d, 0x20, 0x46, 0xf2, 0xf7, 0x2c, 0xfb, 0x2c, 0x60, 0xfe, 0xf7, - 0x4b, 0xfe, 0x20, 0x46, 0x38, 0xbd, 0x00, 0x00, 0x2d, 0xe9, 0xf7, 0x4f, - 0x89, 0x46, 0x5d, 0x49, 0x05, 0x46, 0x0b, 0xf0, 0x07, 0xfe, 0x04, 0x46, - 0x28, 0xb9, 0xff, 0xf7, 0x73, 0xfc, 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0x58, 0x49, 0x28, 0x46, 0x0b, 0xf0, 0xfb, 0xfd, 0x20, 0xb9, - 0x01, 0x20, 0x01, 0x24, 0xff, 0xf7, 0x66, 0xfc, 0xf1, 0xe7, 0x54, 0x49, - 0x28, 0x46, 0x0b, 0xf0, 0xf1, 0xfd, 0x20, 0xb9, 0x02, 0x20, 0x02, 0x24, - 0xff, 0xf7, 0x5c, 0xfc, 0xe7, 0xe7, 0x2b, 0x78, 0x40, 0x2b, 0x02, 0xd1, - 0xd5, 0xf8, 0x01, 0x40, 0xe1, 0xe7, 0x4d, 0x48, 0x03, 0x24, 0xff, 0xf7, - 0xc1, 0xff, 0xfb, 0xf7, 0x21, 0xfb, 0x4b, 0x4b, 0x1f, 0x46, 0x53, 0xf8, - 0x24, 0x60, 0x00, 0x2e, 0x76, 0xd0, 0x01, 0x34, 0x40, 0x2c, 0xf8, 0xd1, - 0x0a, 0xf0, 0x72, 0xf9, 0x18, 0x23, 0x03, 0x60, 0x43, 0x48, 0xff, 0xf7, - 0xaf, 0xff, 0xfb, 0xf7, 0xef, 0xfa, 0x4d, 0xe0, 0x3a, 0xb1, 0x1a, 0x78, - 0xa3, 0xeb, 0x05, 0x0a, 0x98, 0x46, 0x01, 0x33, 0x2f, 0x2a, 0xf7, 0xd1, - 0x98, 0x46, 0x3e, 0x48, 0xff, 0xf7, 0xa0, 0xff, 0xfb, 0xf7, 0x00, 0xfb, - 0x3c, 0x4b, 0x1e, 0x68, 0x1e, 0xb3, 0xd6, 0xf8, 0x08, 0xb0, 0xbb, 0xf1, - 0x00, 0x0f, 0x1c, 0xd0, 0x58, 0x46, 0x0b, 0xf0, 0xc5, 0xfd, 0x50, 0x45, - 0x17, 0xd1, 0x52, 0x46, 0x29, 0x46, 0x58, 0x46, 0x0c, 0xf0, 0x24, 0xfb, - 0x88, 0xb9, 0x32, 0x48, 0xff, 0xf7, 0x88, 0xff, 0xfb, 0xf7, 0xc8, 0xfa, - 0x33, 0x7b, 0x73, 0xbb, 0x04, 0x3e, 0x01, 0x96, 0x01, 0x9b, 0x2f, 0x4a, - 0x47, 0xf8, 0x24, 0x30, 0x00, 0x23, 0x13, 0x55, 0x2d, 0x4a, 0x13, 0x55, - 0x95, 0xe7, 0x76, 0x68, 0xda, 0xe7, 0xba, 0xf1, 0x07, 0x0f, 0x18, 0xd1, - 0x52, 0x46, 0x29, 0x46, 0x29, 0x48, 0x0c, 0xf0, 0x07, 0xfb, 0x90, 0xb9, - 0x23, 0x48, 0xff, 0xf7, 0x6b, 0xff, 0xfb, 0xf7, 0xab, 0xfa, 0x26, 0x4b, - 0x1e, 0x68, 0x00, 0x2e, 0xde, 0xd1, 0x0a, 0xf0, 0x21, 0xf9, 0x13, 0x23, - 0x03, 0x60, 0x00, 0x23, 0x47, 0xf8, 0x24, 0x30, 0x4f, 0xf0, 0xff, 0x34, - 0x77, 0xe7, 0x1a, 0x48, 0xff, 0xf7, 0x58, 0xff, 0xfb, 0xf7, 0x98, 0xfa, - 0xef, 0xe7, 0x01, 0x2b, 0xed, 0xd1, 0x56, 0xf8, 0x04, 0x3c, 0x42, 0x46, - 0x01, 0xa9, 0x30, 0x1f, 0x9d, 0x68, 0x29, 0xf4, 0x80, 0x33, 0xa8, 0x47, - 0x05, 0x46, 0x00, 0x28, 0xc4, 0xd0, 0x6d, 0x42, 0x0a, 0xf0, 0x02, 0xf9, - 0x05, 0x60, 0xe0, 0xe7, 0x4f, 0xf0, 0xff, 0x32, 0x0a, 0x48, 0x43, 0xf8, - 0x24, 0x20, 0xff, 0xf7, 0x3b, 0xff, 0xfb, 0xf7, 0x7b, 0xfa, 0x28, 0x46, - 0x0e, 0x49, 0x01, 0x96, 0x0c, 0xf0, 0xc9, 0xfb, 0x05, 0x44, 0x2b, 0x46, - 0x85, 0xe7, 0x00, 0xbf, 0xe0, 0xe6, 0x01, 0x08, 0xe7, 0xe6, 0x01, 0x08, - 0xd8, 0xe6, 0x01, 0x08, 0xe8, 0x85, 0x00, 0x24, 0x10, 0x00, 0x00, 0x24, - 0xcc, 0x06, 0x00, 0x24, 0xc8, 0x06, 0x00, 0x24, 0x68, 0x85, 0x00, 0x24, - 0xa8, 0x85, 0x00, 0x24, 0xb2, 0xe1, 0x01, 0x08, 0x38, 0x86, 0x00, 0x24, - 0x53, 0xdf, 0x01, 0x08, 0x1d, 0x4b, 0x70, 0xb5, 0x03, 0x60, 0x04, 0x46, - 0x1c, 0x48, 0xff, 0xf7, 0x11, 0xff, 0xfb, 0xf7, 0x71, 0xfa, 0xa3, 0x68, - 0x2b, 0xb1, 0x1a, 0x49, 0x62, 0x68, 0x0b, 0x68, 0xa3, 0x42, 0x24, 0xd1, - 0x0a, 0x60, 0x18, 0x4b, 0x15, 0x48, 0x1a, 0x68, 0xa2, 0x42, 0x04, 0xbf, - 0x00, 0x22, 0x1a, 0x60, 0xff, 0xf7, 0xfe, 0xfe, 0xfb, 0xf7, 0x3e, 0xfa, - 0x25, 0x7b, 0xa5, 0xb9, 0x12, 0x48, 0x26, 0x1f, 0xff, 0xf7, 0xf6, 0xfe, - 0xfb, 0xf7, 0x56, 0xfa, 0x10, 0x4a, 0x40, 0x23, 0x52, 0xf8, 0x04, 0x1b, - 0x8e, 0x42, 0x08, 0xbf, 0x42, 0xf8, 0x04, 0x5c, 0x01, 0x3b, 0xf7, 0xd1, - 0x0a, 0x48, 0xff, 0xf7, 0xe7, 0xfe, 0xfb, 0xf7, 0x27, 0xfa, 0x20, 0x46, - 0x70, 0xbd, 0x19, 0x46, 0x5b, 0x68, 0xa3, 0x42, 0xfb, 0xd1, 0x4a, 0x60, - 0xd5, 0xe7, 0x00, 0xbf, 0x5c, 0xde, 0x01, 0x08, 0xcc, 0x06, 0x00, 0x24, - 0xc8, 0x06, 0x00, 0x24, 0x38, 0x86, 0x00, 0x24, 0xe8, 0x85, 0x00, 0x24, - 0x10, 0x00, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xb4, 0xff, - 0x20, 0x46, 0x0a, 0xf0, 0x9f, 0xfe, 0x20, 0x46, 0x10, 0xbd, 0x00, 0x00, - 0x08, 0xb5, 0x03, 0x48, 0xff, 0xf7, 0xc2, 0xfe, 0xbd, 0xe8, 0x08, 0x40, - 0xfb, 0xf7, 0x00, 0xba, 0x10, 0x86, 0x00, 0x24, 0x08, 0xb5, 0x03, 0x48, - 0xff, 0xf7, 0xb8, 0xfe, 0xbd, 0xe8, 0x08, 0x40, 0xfb, 0xf7, 0x16, 0xba, - 0x10, 0x86, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x47, 0x9d, 0xf8, 0x20, 0x70, - 0x05, 0x46, 0x89, 0x46, 0x92, 0x46, 0x02, 0x2f, 0x98, 0x46, 0x9d, 0xf8, - 0x24, 0x60, 0x22, 0xd8, 0x12, 0x4b, 0xdb, 0x5d, 0xfb, 0xb1, 0xb6, 0xfb, - 0xf3, 0xf4, 0x03, 0xfb, 0x14, 0x64, 0x14, 0xf0, 0xff, 0x04, 0x18, 0xd1, - 0xff, 0xf7, 0xde, 0xff, 0x9d, 0xf8, 0x28, 0x30, 0x28, 0x46, 0x85, 0xf8, - 0x60, 0x90, 0x85, 0xf8, 0x65, 0x30, 0x0b, 0x9b, 0x85, 0xf8, 0x61, 0xa0, - 0x85, 0xf8, 0x62, 0x80, 0x85, 0xf8, 0x63, 0x70, 0x85, 0xf8, 0x64, 0x60, - 0xc5, 0xf8, 0x88, 0x30, 0xff, 0xf7, 0xc0, 0xff, 0x20, 0x46, 0xbd, 0xe8, - 0xf0, 0x87, 0x4f, 0xf0, 0xff, 0x30, 0xfa, 0xe7, 0xc5, 0xe1, 0x01, 0x08, - 0x27, 0x4b, 0x10, 0xb5, 0x04, 0x46, 0x03, 0x60, 0xff, 0xf7, 0xbc, 0xff, - 0x25, 0x49, 0x62, 0x68, 0x13, 0x68, 0x23, 0xf0, 0x01, 0x03, 0x13, 0x60, - 0x00, 0x23, 0xa3, 0x64, 0x84, 0xf8, 0x45, 0x30, 0x21, 0x4b, 0xd1, 0xf8, - 0x8c, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0x20, 0x4b, 0xb4, 0xf9, 0x54, 0x00, - 0xda, 0x6f, 0x42, 0xf4, 0x80, 0x42, 0xda, 0x67, 0xda, 0x6f, 0x22, 0xf4, - 0x80, 0x42, 0xda, 0x67, 0x4f, 0xf4, 0x40, 0x72, 0xca, 0x60, 0x40, 0xf2, - 0xc3, 0x31, 0xd3, 0xf8, 0xd4, 0x20, 0x22, 0xf4, 0x80, 0x42, 0xc3, 0xf8, - 0xd4, 0x20, 0xf4, 0xf7, 0xe7, 0xf8, 0xb4, 0xf9, 0x56, 0x00, 0x40, 0xf2, - 0xc3, 0x31, 0xf4, 0xf7, 0xe1, 0xf8, 0xb4, 0xf9, 0x58, 0x00, 0x40, 0xf2, - 0xc3, 0x31, 0xf4, 0xf7, 0xdb, 0xf8, 0xb4, 0xf9, 0x5a, 0x00, 0x40, 0xf2, - 0xc3, 0x31, 0xf4, 0xf7, 0xd5, 0xf8, 0xb4, 0xf9, 0x5c, 0x00, 0x40, 0xf2, - 0xc3, 0x31, 0xf4, 0xf7, 0xcf, 0xf8, 0x40, 0xf2, 0xc3, 0x31, 0xb4, 0xf9, - 0x5e, 0x00, 0xf4, 0xf7, 0xc9, 0xf8, 0x20, 0x46, 0xff, 0xf7, 0x6a, 0xff, - 0x20, 0x46, 0x10, 0xbd, 0x2c, 0xde, 0x01, 0x08, 0x00, 0x64, 0x02, 0x58, - 0x00, 0x03, 0x00, 0x80, 0x00, 0x44, 0x02, 0x58, 0x10, 0xb5, 0x04, 0x46, - 0xff, 0xf7, 0xa4, 0xff, 0x20, 0x46, 0x0a, 0xf0, 0xf5, 0xfd, 0x20, 0x46, - 0x10, 0xbd, 0x08, 0xb5, 0xcc, 0x30, 0xff, 0xf7, 0x19, 0xfe, 0xbd, 0xe8, - 0x08, 0x40, 0xfb, 0xf7, 0x57, 0xb9, 0x08, 0xb5, 0xcc, 0x30, 0xff, 0xf7, - 0x11, 0xfe, 0xbd, 0xe8, 0x08, 0x40, 0xfb, 0xf7, 0x6f, 0xb9, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x4f, 0x0d, 0x46, 0x16, 0x46, 0x85, 0xb0, 0xf2, 0xf7, - 0x71, 0xf9, 0xac, 0x19, 0x00, 0xf1, 0x00, 0x60, 0xa0, 0x42, 0xc0, 0xf0, - 0x1e, 0x81, 0x09, 0xd9, 0x20, 0x46, 0xf2, 0xf7, 0x47, 0xf9, 0xb4, 0xfb, - 0xf0, 0xf3, 0x03, 0xfb, 0x10, 0x40, 0x00, 0x28, 0x40, 0xf0, 0x13, 0x81, - 0x90, 0x48, 0x4f, 0xf0, 0x00, 0x09, 0xdf, 0xf8, 0x58, 0xb2, 0xff, 0xf7, - 0xed, 0xfd, 0xfb, 0xf7, 0x4d, 0xf9, 0x00, 0x2e, 0x00, 0xf0, 0xfe, 0x80, - 0xb9, 0xf1, 0x00, 0x0f, 0x40, 0xf0, 0xf8, 0x80, 0x05, 0xf1, 0x78, 0x43, - 0xb5, 0xf1, 0x01, 0x6f, 0x4f, 0xf0, 0x10, 0x0a, 0x4f, 0xea, 0x53, 0x43, - 0x01, 0x93, 0x34, 0xbf, 0x01, 0x23, 0x02, 0x23, 0x01, 0x2b, 0x03, 0xf0, - 0x01, 0x08, 0x03, 0xf0, 0x02, 0x07, 0x0c, 0xbf, 0x4f, 0xf0, 0x00, 0x63, - 0x4f, 0xf0, 0x01, 0x63, 0x02, 0x93, 0xfe, 0xf7, 0xf7, 0xfd, 0xfe, 0xf7, - 0xd1, 0xfd, 0xbb, 0xf8, 0x00, 0x30, 0x4f, 0xf6, 0xfd, 0x71, 0x5a, 0x1e, - 0x92, 0xb2, 0x8a, 0x42, 0x97, 0xbf, 0x78, 0x4a, 0x4f, 0xf0, 0x02, 0x63, - 0x02, 0xea, 0x83, 0x23, 0x03, 0xf1, 0x00, 0x63, 0x9d, 0x42, 0x0e, 0xd2, - 0xb5, 0xf1, 0x00, 0x6f, 0x0b, 0xd3, 0x73, 0x4c, 0x73, 0x4b, 0xd4, 0xf8, - 0x88, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0xf8, 0xf7, 0xa5, 0xfd, 0x60, 0xb1, - 0x4f, 0xf4, 0x40, 0x73, 0xa3, 0x60, 0xfe, 0xf7, 0x9d, 0xfd, 0xfe, 0xf7, - 0xbf, 0xfd, 0xba, 0xf1, 0x01, 0x0a, 0xd4, 0xd1, 0x4f, 0xf0, 0xff, 0x39, - 0x6b, 0xe0, 0xfe, 0xf7, 0x7b, 0xfd, 0xbb, 0xf8, 0x00, 0x20, 0x4f, 0xf6, - 0xfd, 0x71, 0xdf, 0xf8, 0xac, 0x91, 0x53, 0x1e, 0x9b, 0xb2, 0x8b, 0x42, - 0x99, 0xf8, 0x14, 0x30, 0x97, 0xbf, 0x63, 0x4c, 0x4f, 0xf0, 0x01, 0x64, - 0x04, 0xea, 0x42, 0x24, 0x04, 0xf1, 0x00, 0x64, 0xa5, 0x42, 0x2a, 0xbf, - 0x2c, 0x1b, 0x01, 0x9c, 0x64, 0x0c, 0x01, 0x2b, 0x00, 0xf0, 0x93, 0x80, - 0x01, 0x20, 0x00, 0x23, 0x89, 0xf8, 0x14, 0x00, 0xc9, 0xf8, 0x18, 0x30, - 0xb8, 0xf1, 0x00, 0x0f, 0x00, 0xf0, 0x9d, 0x80, 0xf4, 0xf7, 0xfa, 0xf8, - 0x03, 0x1e, 0x18, 0xbf, 0x01, 0x23, 0x00, 0x2f, 0x00, 0xf0, 0x99, 0x80, - 0x02, 0x20, 0x03, 0x93, 0xf4, 0xf7, 0xf0, 0xf8, 0x03, 0x9b, 0x00, 0x28, - 0x3b, 0xd0, 0x01, 0x20, 0x00, 0x23, 0xc0, 0x1a, 0x89, 0xf8, 0x14, 0x30, - 0x18, 0xbf, 0x01, 0x20, 0xc0, 0xf1, 0x00, 0x09, 0x02, 0x9b, 0x03, 0xeb, - 0x44, 0x44, 0xbf, 0xf3, 0x4f, 0x8f, 0x49, 0x4b, 0x04, 0xf5, 0x00, 0x32, - 0xc3, 0xf8, 0x70, 0x42, 0x20, 0x34, 0x94, 0x42, 0xfa, 0xd1, 0xbf, 0xf3, - 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, - 0x6f, 0x8f, 0x00, 0x22, 0xc3, 0xf8, 0x50, 0x22, 0xbf, 0xf3, 0x4f, 0x8f, - 0xbf, 0xf3, 0x6f, 0x8f, 0xfe, 0xf7, 0x0c, 0xfd, 0xf8, 0xf7, 0x20, 0xfd, - 0x00, 0x28, 0x94, 0xd1, 0x37, 0x4b, 0x4f, 0xf4, 0x40, 0x72, 0x9a, 0x60, - 0xb9, 0xf1, 0x00, 0x0f, 0x8d, 0xd1, 0xfe, 0xf7, 0x2b, 0xfd, 0xfe, 0xf7, - 0x4d, 0xfd, 0x28, 0x46, 0xf2, 0xf7, 0x7c, 0xf8, 0x36, 0x1a, 0x05, 0x44, - 0x41, 0xe7, 0x00, 0x2b, 0xc1, 0xd1, 0xb8, 0xf1, 0x00, 0x0f, 0x0a, 0xd0, - 0x30, 0x4a, 0xd3, 0x68, 0x23, 0xf4, 0xe6, 0x63, 0xd3, 0x60, 0xd3, 0x68, - 0x43, 0xea, 0x04, 0x23, 0x43, 0xf0, 0xa4, 0x03, 0xd3, 0x60, 0x77, 0xb1, - 0x2a, 0x4a, 0xd2, 0xf8, 0x0c, 0x31, 0x23, 0xf4, 0xe6, 0x63, 0xc2, 0xf8, - 0x0c, 0x31, 0xd2, 0xf8, 0x0c, 0x31, 0x43, 0xea, 0x04, 0x23, 0x43, 0xf0, - 0xa4, 0x03, 0xc2, 0xf8, 0x0c, 0x31, 0xb8, 0xf1, 0x00, 0x0f, 0x2b, 0xd0, - 0x01, 0x20, 0xf4, 0xf7, 0x8b, 0xf8, 0x20, 0x4a, 0xd3, 0x68, 0x23, 0xf4, - 0xe0, 0x63, 0x23, 0xf0, 0x04, 0x03, 0xd3, 0x60, 0x5f, 0xb1, 0x02, 0x20, - 0xf4, 0xf7, 0x80, 0xf8, 0x1a, 0x4a, 0xd2, 0xf8, 0x0c, 0x31, 0x23, 0xf4, - 0xe0, 0x63, 0x23, 0xf0, 0x04, 0x03, 0xc2, 0xf8, 0x0c, 0x31, 0x00, 0x28, - 0x88, 0xd1, 0x00, 0x20, 0x86, 0xe7, 0x4f, 0xf0, 0xff, 0x39, 0x8b, 0xe7, - 0x4f, 0xf0, 0xff, 0x39, 0x0b, 0x48, 0xff, 0xf7, 0xe7, 0xfc, 0xfb, 0xf7, - 0x27, 0xf8, 0x48, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x4f, 0xf0, - 0xff, 0x39, 0xf8, 0xe7, 0x00, 0x2f, 0xea, 0xd0, 0xdb, 0xe7, 0x00, 0x2f, - 0xe7, 0xd0, 0x43, 0x46, 0x66, 0xe7, 0x00, 0x28, 0x7f, 0xf4, 0x6b, 0xaf, - 0xaa, 0xe7, 0x00, 0xbf, 0x04, 0x74, 0x00, 0x24, 0x00, 0xfc, 0x3f, 0x00, - 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, 0x00, 0xfe, 0x1f, 0x00, - 0x00, 0xed, 0x00, 0xe0, 0x00, 0x20, 0x00, 0x52, 0x80, 0xe8, 0xf1, 0x1f, - 0x50, 0x0e, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x4f, 0x12, 0xf0, 0x1f, 0x04, - 0x87, 0xb0, 0x82, 0x46, 0x0f, 0x46, 0x16, 0x46, 0x99, 0x46, 0x40, 0xf0, - 0x26, 0x81, 0x00, 0x29, 0x00, 0xf0, 0x23, 0x81, 0xf2, 0xf7, 0x1c, 0xf8, - 0x09, 0xeb, 0x06, 0x03, 0x00, 0xf1, 0x00, 0x60, 0x83, 0x42, 0x00, 0xf2, - 0x1a, 0x81, 0x8e, 0x48, 0xdf, 0xf8, 0x50, 0xb2, 0xff, 0xf7, 0xa4, 0xfc, - 0xfb, 0xf7, 0x04, 0xf8, 0xb9, 0xf1, 0x00, 0x0f, 0x00, 0xf0, 0x06, 0x81, - 0x00, 0x2c, 0x40, 0xf0, 0x01, 0x81, 0x30, 0x46, 0xf1, 0xf7, 0xe4, 0xff, - 0xb6, 0xfb, 0xf0, 0xf5, 0x00, 0xfb, 0x15, 0x65, 0x45, 0x1b, 0x4d, 0x45, - 0x28, 0xbf, 0x4d, 0x46, 0xbb, 0x07, 0x01, 0xd1, 0x1f, 0x2d, 0x4b, 0xd8, - 0x20, 0x2d, 0xa8, 0x46, 0x39, 0x46, 0xda, 0xf8, 0x04, 0x00, 0x28, 0xbf, - 0x4f, 0xf0, 0x20, 0x08, 0x42, 0x46, 0x0a, 0xf0, 0xb1, 0xfc, 0x1f, 0x2d, - 0x07, 0xd8, 0xda, 0xf8, 0x04, 0x00, 0xc8, 0xf1, 0x20, 0x02, 0xff, 0x21, - 0x40, 0x44, 0x0a, 0xf0, 0xb5, 0xfc, 0xda, 0xf8, 0x04, 0x30, 0x20, 0x25, - 0x03, 0x93, 0x10, 0x23, 0x02, 0x93, 0xfe, 0xf7, 0x9b, 0xfc, 0xfe, 0xf7, - 0x75, 0xfc, 0x71, 0x4b, 0x19, 0x88, 0x4f, 0xf6, 0xfd, 0x73, 0x4a, 0x1e, - 0x92, 0xb2, 0x9a, 0x42, 0x97, 0xbf, 0x6e, 0x4b, 0x4f, 0xf0, 0x02, 0x63, - 0x03, 0xea, 0x81, 0x23, 0x03, 0xf1, 0x00, 0x63, 0x9e, 0x42, 0x10, 0xd2, - 0xb6, 0xf1, 0x00, 0x6f, 0x0d, 0xd3, 0x69, 0x4c, 0x69, 0x4b, 0xd4, 0xf8, - 0x88, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0xf8, 0xf7, 0x49, 0xfc, 0x00, 0x28, - 0x00, 0xf0, 0xac, 0x80, 0x4f, 0xf4, 0x40, 0x73, 0xa3, 0x60, 0xfe, 0xf7, - 0x3f, 0xfc, 0xfe, 0xf7, 0x61, 0xfc, 0x02, 0x9b, 0x01, 0x3b, 0x02, 0x93, - 0xd1, 0xd1, 0x4f, 0xf0, 0xff, 0x34, 0x87, 0xe0, 0x25, 0xf0, 0x1f, 0x05, - 0x03, 0x97, 0xa8, 0x46, 0xc7, 0xe7, 0x01, 0x2b, 0x00, 0xf0, 0x9b, 0x80, - 0x02, 0xf1, 0x78, 0x40, 0x01, 0x23, 0xb0, 0xf5, 0x80, 0x1f, 0x8b, 0xf8, - 0x14, 0x30, 0x06, 0xd3, 0xa2, 0xf1, 0x01, 0x63, 0xb3, 0xf5, 0x80, 0x1f, - 0x80, 0xf0, 0x85, 0x80, 0x02, 0x23, 0x00, 0x20, 0x05, 0x92, 0x04, 0x93, - 0xcb, 0xf8, 0x18, 0x00, 0x18, 0x46, 0xf3, 0xf7, 0xa5, 0xff, 0x05, 0x9a, - 0x20, 0xbb, 0x04, 0x9b, 0x4d, 0x48, 0x01, 0x2b, 0x67, 0xd1, 0xc1, 0x68, - 0x41, 0xf0, 0x02, 0x01, 0xc1, 0x60, 0xbf, 0xf3, 0x6f, 0x8f, 0xbf, 0xf3, - 0x4f, 0x8f, 0x00, 0x20, 0x01, 0x99, 0x09, 0x58, 0x11, 0x50, 0x04, 0x30, - 0x20, 0x28, 0xf9, 0xd1, 0x05, 0x92, 0xbf, 0xf3, 0x6f, 0x8f, 0xbf, 0xf3, - 0x4f, 0x8f, 0x18, 0x46, 0x04, 0x93, 0xf3, 0xf7, 0x87, 0xff, 0x04, 0x9b, - 0x05, 0x9a, 0x01, 0x2b, 0x3e, 0x4b, 0x51, 0xd1, 0xd9, 0x68, 0x21, 0xf0, - 0x02, 0x01, 0xd9, 0x60, 0x00, 0x23, 0x8b, 0xf8, 0x14, 0x30, 0x00, 0x28, - 0x4f, 0xd1, 0x01, 0x9b, 0x20, 0x32, 0x20, 0x33, 0x01, 0x93, 0x9b, 0xf8, - 0x14, 0x30, 0x70, 0x19, 0x82, 0x42, 0x03, 0xd2, 0x00, 0x2c, 0xae, 0xd0, - 0x4f, 0xf0, 0xff, 0x34, 0x00, 0x2d, 0x11, 0xdd, 0x06, 0xf0, 0x1f, 0x03, - 0x2b, 0x44, 0xbf, 0xf3, 0x4f, 0x8f, 0x30, 0x48, 0x32, 0x46, 0x33, 0x44, - 0xc0, 0xf8, 0x70, 0x22, 0x20, 0x32, 0x99, 0x1a, 0x00, 0x29, 0xf9, 0xdc, - 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0xbf, 0xf3, 0x4f, 0x8f, - 0xbf, 0xf3, 0x6f, 0x8f, 0x27, 0x4b, 0x00, 0x22, 0xc3, 0xf8, 0x50, 0x22, - 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0xf8, 0xf7, 0xa6, 0xfb, - 0x00, 0x28, 0x7f, 0xf4, 0x78, 0xaf, 0x1e, 0x4b, 0x4f, 0xf4, 0x40, 0x72, - 0x9a, 0x60, 0x00, 0x2c, 0x7f, 0xf4, 0x71, 0xaf, 0xfe, 0xf7, 0xb0, 0xfb, - 0xfe, 0xf7, 0xd2, 0xfb, 0xa9, 0xeb, 0x08, 0x09, 0x46, 0x44, 0x47, 0x44, - 0x10, 0xe7, 0xd0, 0xf8, 0x0c, 0x11, 0x41, 0xf0, 0x02, 0x01, 0xc0, 0xf8, - 0x0c, 0x11, 0x94, 0xe7, 0xd3, 0xf8, 0x0c, 0x11, 0x21, 0xf0, 0x02, 0x01, - 0xc3, 0xf8, 0x0c, 0x11, 0xaa, 0xe7, 0x4f, 0xf0, 0xff, 0x34, 0xb0, 0xe7, - 0x03, 0x9b, 0x04, 0x46, 0x32, 0x46, 0x01, 0x93, 0xab, 0xe7, 0x4f, 0xf0, - 0xff, 0x34, 0xab, 0xe7, 0x4f, 0xf0, 0xff, 0x34, 0x05, 0x48, 0xff, 0xf7, - 0x95, 0xfb, 0xfa, 0xf7, 0xd5, 0xfe, 0x20, 0x46, 0x07, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0x4f, 0xf0, 0xff, 0x34, 0xf8, 0xe7, 0x04, 0x74, 0x00, 0x24, - 0x80, 0xe8, 0xf1, 0x1f, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x64, 0x02, 0x58, - 0x00, 0x03, 0x00, 0x80, 0x00, 0x20, 0x00, 0x52, 0x00, 0xed, 0x00, 0xe0, - 0x50, 0x0e, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, 0x0b, 0x48, 0xff, 0xf7, - 0x77, 0xfb, 0xfa, 0xf7, 0xd7, 0xfe, 0xfe, 0xf7, 0x9f, 0xfb, 0xfe, 0xf7, - 0x79, 0xfb, 0xfe, 0xf7, 0x65, 0xfb, 0xfe, 0xf7, 0x87, 0xfb, 0x60, 0x68, - 0x08, 0xb1, 0x0a, 0xf0, 0x3f, 0xfb, 0x03, 0x48, 0xff, 0xf7, 0x66, 0xfb, - 0xfa, 0xf7, 0xa6, 0xfe, 0x00, 0x20, 0x10, 0xbd, 0x04, 0x74, 0x00, 0x24, - 0x10, 0xb5, 0x04, 0x46, 0x12, 0x48, 0xff, 0xf7, 0x5b, 0xfb, 0xfa, 0xf7, - 0xbb, 0xfe, 0xfe, 0xf7, 0x83, 0xfb, 0xfe, 0xf7, 0x5d, 0xfb, 0x0f, 0x4b, - 0x0f, 0x4a, 0xd3, 0xf8, 0x88, 0x10, 0x91, 0x42, 0xfb, 0xd1, 0x4f, 0xf4, - 0x8e, 0x01, 0x0d, 0x4a, 0x51, 0x61, 0x4f, 0xf4, 0x40, 0x72, 0x9a, 0x60, - 0xfe, 0xf7, 0x3c, 0xfb, 0xfe, 0xf7, 0x5e, 0xfb, 0x20, 0x20, 0xfe, 0xf7, - 0xad, 0xfa, 0x60, 0x60, 0x03, 0x48, 0xff, 0xf7, 0x3d, 0xfb, 0xfa, 0xf7, - 0x7d, 0xfe, 0x00, 0x20, 0x10, 0xbd, 0x00, 0xbf, 0x04, 0x74, 0x00, 0x24, + 0x08, 0xb5, 0x05, 0xf0, 0x61, 0xfa, 0xfc, 0xe7, 0x10, 0xb5, 0x04, 0x46, + 0x0d, 0xf0, 0x08, 0xf8, 0x20, 0x46, 0x10, 0xbd, 0x02, 0x4b, 0x18, 0x68, + 0x08, 0xb1, 0x09, 0xf0, 0x6f, 0xb9, 0x70, 0x47, 0x38, 0x28, 0x02, 0x24, + 0x02, 0x4b, 0x18, 0x68, 0x08, 0xb1, 0xf9, 0xf7, 0xa1, 0xba, 0x70, 0x47, + 0x38, 0x28, 0x02, 0x24, 0x01, 0x20, 0x08, 0xb5, 0x00, 0xf0, 0x78, 0xfd, + 0x11, 0xf0, 0x01, 0x00, 0x10, 0xb5, 0x8c, 0xb2, 0x04, 0xd0, 0xf4, 0xf7, + 0x33, 0xf8, 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, 0xe2, 0x06, 0x0a, 0xd5, + 0x05, 0x4b, 0x5a, 0x68, 0x90, 0x23, 0x53, 0x43, 0x04, 0x4a, 0xd3, 0x58, + 0xdb, 0x69, 0x1b, 0x06, 0x48, 0xbf, 0x40, 0xf0, 0x10, 0x00, 0x10, 0xbd, + 0xc8, 0x0b, 0x02, 0x24, 0xa8, 0x0d, 0x02, 0x24, 0xf8, 0xb5, 0x0d, 0x46, + 0x82, 0xb3, 0x19, 0x4b, 0x19, 0x4c, 0x5f, 0x68, 0x90, 0x23, 0x03, 0xfb, + 0x07, 0x43, 0x9a, 0x68, 0xb2, 0xf5, 0x80, 0x5f, 0x16, 0xd1, 0x1a, 0x69, + 0xba, 0xb9, 0x40, 0xf2, 0xff, 0x12, 0xa3, 0xf8, 0x60, 0x20, 0x90, 0x22, + 0x02, 0xfb, 0x07, 0x42, 0xb2, 0xf8, 0x60, 0x60, 0xf4, 0xf7, 0x04, 0xf8, + 0x00, 0x28, 0xfb, 0xd0, 0x90, 0x23, 0x01, 0x20, 0x7b, 0x43, 0xe3, 0x58, + 0x5b, 0x6a, 0x1e, 0x40, 0x2e, 0x70, 0xf8, 0xbd, 0x1a, 0xb9, 0x1a, 0x69, + 0x32, 0xb9, 0xff, 0x22, 0xe7, 0xe7, 0xb2, 0xf1, 0x80, 0x5f, 0x05, 0xd1, + 0x1a, 0x69, 0x0a, 0xb9, 0x7f, 0x22, 0xe0, 0xe7, 0x3f, 0x22, 0xde, 0xe7, + 0x00, 0x22, 0xdc, 0xe7, 0x10, 0x46, 0xec, 0xe7, 0xc8, 0x0b, 0x02, 0x24, + 0xa8, 0x0d, 0x02, 0x24, 0x43, 0x6b, 0x30, 0xb5, 0x05, 0x46, 0x85, 0xb0, + 0x53, 0xb1, 0x00, 0xf1, 0x28, 0x03, 0x6c, 0x46, 0x0f, 0xcb, 0x84, 0xe8, + 0x0f, 0x00, 0x00, 0x23, 0x20, 0x46, 0x6b, 0x63, 0x09, 0xf0, 0xc0, 0xf9, + 0x05, 0xb0, 0x30, 0xbd, 0x39, 0xb1, 0x01, 0xf1, 0x80, 0x41, 0x01, 0x39, + 0x00, 0xeb, 0x81, 0x01, 0x81, 0x42, 0x03, 0x46, 0x00, 0xd2, 0x70, 0x47, + 0x1b, 0x68, 0x0a, 0x68, 0x1b, 0xba, 0x12, 0xba, 0x40, 0xf8, 0x04, 0x2b, + 0x41, 0xf8, 0x04, 0x39, 0xf2, 0xe7, 0x00, 0x00, 0x03, 0x4b, 0x59, 0x6a, + 0x5a, 0x6a, 0x52, 0x1a, 0x82, 0x42, 0xfb, 0xd3, 0x70, 0x47, 0x00, 0xbf, + 0x00, 0x0c, 0x00, 0x40, 0x07, 0xb5, 0x01, 0x90, 0x0c, 0xf0, 0x60, 0xff, + 0x01, 0x99, 0x10, 0xb9, 0x02, 0x48, 0xf3, 0xf7, 0x6b, 0xfd, 0x03, 0xb0, + 0x5d, 0xf8, 0x04, 0xfb, 0x1f, 0x01, 0x01, 0x80, 0x03, 0x78, 0x23, 0xf0, + 0x03, 0x03, 0x43, 0xf0, 0x01, 0x03, 0x03, 0x70, 0xff, 0xf7, 0x50, 0xbf, + 0x10, 0xb5, 0x04, 0x46, 0x03, 0x78, 0x03, 0xf0, 0x03, 0x03, 0x01, 0x2b, + 0x08, 0xd0, 0xff, 0xf7, 0x4f, 0xff, 0x23, 0x78, 0x03, 0xf0, 0x03, 0x02, + 0x01, 0x2a, 0x03, 0xd1, 0xff, 0xf7, 0x40, 0xff, 0x00, 0x20, 0x03, 0xe0, + 0x43, 0xf0, 0x02, 0x03, 0x23, 0x70, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, + 0x01, 0x4b, 0x18, 0x68, 0x09, 0xf0, 0xa8, 0xb8, 0xf0, 0x27, 0x02, 0x24, + 0x01, 0x4b, 0x18, 0x68, 0xf9, 0xf7, 0xdc, 0xb9, 0xf0, 0x27, 0x02, 0x24, + 0x01, 0x4b, 0x18, 0x68, 0x09, 0xf0, 0x9c, 0xb8, 0x30, 0x28, 0x02, 0x24, + 0x01, 0x4b, 0x18, 0x68, 0xf9, 0xf7, 0xd0, 0xb9, 0x30, 0x28, 0x02, 0x24, + 0x01, 0x20, 0x70, 0x47, 0x07, 0x4a, 0x08, 0x49, 0x13, 0x68, 0x18, 0x44, + 0x88, 0x42, 0x83, 0xbf, 0x06, 0x4b, 0x0c, 0x22, 0x4f, 0xf0, 0xff, 0x30, + 0x10, 0x60, 0x8c, 0xbf, 0x1a, 0x60, 0x18, 0x46, 0x70, 0x47, 0x00, 0xbf, + 0x10, 0x01, 0x00, 0x24, 0x00, 0xfc, 0x07, 0x24, 0xd8, 0xa5, 0x02, 0x24, + 0x06, 0x4a, 0x13, 0x68, 0x43, 0xb1, 0x01, 0x3b, 0x13, 0x60, 0x2b, 0xb9, + 0x04, 0x4a, 0x13, 0x70, 0x04, 0x4b, 0x1b, 0x78, 0x03, 0xb1, 0x62, 0xb6, + 0x70, 0x47, 0x00, 0xbf, 0xec, 0x27, 0x02, 0x24, 0x3c, 0x28, 0x02, 0x24, + 0xe8, 0x27, 0x02, 0x24, 0xef, 0xf3, 0x10, 0x83, 0x72, 0xb6, 0x07, 0x4a, + 0x11, 0x78, 0x31, 0xb9, 0xdb, 0x43, 0x06, 0x49, 0x03, 0xf0, 0x01, 0x03, + 0x0b, 0x70, 0x01, 0x23, 0x13, 0x70, 0x04, 0x4a, 0x13, 0x68, 0x01, 0x33, + 0x13, 0x60, 0x70, 0x47, 0x3c, 0x28, 0x02, 0x24, 0xe8, 0x27, 0x02, 0x24, + 0xec, 0x27, 0x02, 0x24, 0x08, 0xb5, 0xff, 0xf7, 0xe5, 0xff, 0x06, 0x4a, + 0x13, 0x88, 0x01, 0x3b, 0x9b, 0xb2, 0x13, 0x80, 0x13, 0xb9, 0x01, 0x20, + 0xff, 0xf7, 0xa4, 0xfc, 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0xc4, 0xbf, + 0x34, 0x28, 0x02, 0x24, 0x10, 0xb5, 0x07, 0x4c, 0xff, 0xf7, 0xd2, 0xff, + 0x21, 0x88, 0x11, 0xb9, 0x08, 0x46, 0xff, 0xf7, 0x95, 0xfc, 0x01, 0x31, + 0x21, 0x80, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xb3, 0xbf, 0x00, 0xbf, + 0x34, 0x28, 0x02, 0x24, 0x08, 0xb5, 0xff, 0xf7, 0xc1, 0xff, 0x06, 0x4a, + 0x13, 0x88, 0x01, 0x3b, 0x9b, 0xb2, 0x13, 0x80, 0x13, 0xb9, 0x01, 0x20, + 0xff, 0xf7, 0x6a, 0xfc, 0xbd, 0xe8, 0x08, 0x40, 0xff, 0xf7, 0xa0, 0xbf, + 0x36, 0x28, 0x02, 0x24, 0x10, 0xb5, 0x06, 0x4c, 0xff, 0xf7, 0xae, 0xff, + 0x20, 0x88, 0x08, 0xb9, 0xff, 0xf7, 0x5c, 0xfc, 0x01, 0x30, 0x20, 0x80, + 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x90, 0xbf, 0x36, 0x28, 0x02, 0x24, + 0xf0, 0xb5, 0x8f, 0xb0, 0x07, 0x46, 0x0e, 0x46, 0x15, 0x46, 0x00, 0x21, + 0x14, 0x22, 0x09, 0xa8, 0x01, 0xac, 0x0c, 0xf0, 0xf7, 0xfe, 0x10, 0x4b, + 0x08, 0x94, 0x5b, 0x69, 0x01, 0x97, 0xda, 0x6b, 0x04, 0x93, 0x05, 0x92, + 0x5a, 0x6b, 0x1b, 0x6b, 0x06, 0x92, 0x07, 0x93, 0xcd, 0xe9, 0x02, 0x56, + 0xff, 0xf7, 0x88, 0xff, 0x09, 0x4a, 0x0a, 0x4d, 0x13, 0x68, 0x01, 0x33, + 0x13, 0x60, 0x0f, 0xcc, 0x0f, 0xc5, 0x0f, 0xcc, 0x0f, 0xc5, 0x0f, 0xcc, + 0x0f, 0xc5, 0x23, 0x68, 0x2b, 0x60, 0xff, 0xf7, 0x65, 0xff, 0x00, 0x20, + 0x0f, 0xb0, 0xf0, 0xbd, 0x1c, 0x01, 0x00, 0x24, 0xf4, 0x27, 0x02, 0x24, + 0xfc, 0x27, 0x02, 0x24, 0xf8, 0xb5, 0x05, 0x46, 0xff, 0xf7, 0x6c, 0xff, + 0xd0, 0xe9, 0x00, 0x34, 0xdb, 0x68, 0x98, 0x47, 0x94, 0xf8, 0x32, 0x30, + 0x1b, 0xb1, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, 0x4d, 0xbf, 0x01, 0x23, + 0x84, 0xf8, 0x31, 0x30, 0x63, 0x68, 0xab, 0xb1, 0x28, 0x46, 0xff, 0xf7, + 0x34, 0xfc, 0x61, 0x68, 0xd4, 0xe9, 0x0a, 0x67, 0xd1, 0xe9, 0x00, 0x23, + 0x9f, 0x42, 0x08, 0xbf, 0x96, 0x42, 0x09, 0xd3, 0x6b, 0x68, 0x5a, 0x68, + 0xcb, 0x68, 0x63, 0x60, 0x23, 0x68, 0x00, 0x2b, 0xea, 0xd0, 0x90, 0x68, + 0x98, 0x47, 0xe7, 0xe7, 0x00, 0x23, 0x28, 0x46, 0x84, 0xf8, 0x31, 0x30, + 0xff, 0xf7, 0x61, 0xfc, 0xd9, 0xe7, 0x2d, 0xe9, 0xf7, 0x43, 0x04, 0x46, + 0x00, 0xf1, 0x08, 0x05, 0x80, 0x69, 0x90, 0x46, 0x99, 0x46, 0x01, 0x90, + 0xff, 0xf7, 0x34, 0xff, 0x01, 0x98, 0xff, 0xf7, 0x0c, 0xfc, 0x01, 0x98, + 0x00, 0x21, 0x42, 0x68, 0x24, 0x61, 0x53, 0x68, 0xc4, 0xe9, 0x02, 0x89, + 0x2b, 0xb9, 0x63, 0x61, 0x61, 0xb9, 0x55, 0x60, 0xff, 0xf7, 0x45, 0xfc, + 0x0f, 0xe0, 0xd3, 0xe9, 0x00, 0x67, 0xb9, 0x45, 0x08, 0xbf, 0xb0, 0x45, + 0xf3, 0xd3, 0x19, 0x46, 0xdb, 0x68, 0xef, 0xe7, 0xd2, 0xe9, 0x0a, 0x23, + 0xcd, 0x60, 0x4b, 0x45, 0x08, 0xbf, 0x42, 0x45, 0xec, 0xd2, 0x03, 0xb0, + 0xbd, 0xe8, 0xf0, 0x43, 0xff, 0xf7, 0xfa, 0xbe, 0x90, 0xf8, 0x3c, 0x30, + 0x30, 0xb4, 0x53, 0xb1, 0x00, 0x23, 0x80, 0xf8, 0x3c, 0x30, 0x90, 0xf8, + 0x3e, 0x30, 0x13, 0xb9, 0x01, 0x23, 0x80, 0xf8, 0x3d, 0x30, 0x30, 0xbc, + 0x70, 0x47, 0x90, 0xf8, 0x3f, 0x30, 0x00, 0x2b, 0xf9, 0xd0, 0x83, 0x6b, + 0x4f, 0xf0, 0x80, 0x62, 0x01, 0x33, 0x83, 0x63, 0x0b, 0x4b, 0x5a, 0x60, + 0xd0, 0xe9, 0x0c, 0x32, 0x01, 0x33, 0x42, 0xf1, 0x00, 0x02, 0xc0, 0xe9, + 0x0c, 0x32, 0xd0, 0xe9, 0x0a, 0x23, 0x12, 0xf5, 0x7a, 0x75, 0x43, 0xf1, + 0x00, 0x04, 0x12, 0xf5, 0xfa, 0x62, 0xc0, 0xe9, 0x0a, 0x54, 0x43, 0xf1, + 0x00, 0x03, 0x30, 0xbc, 0xff, 0xf7, 0x9f, 0xbf, 0x00, 0xed, 0x00, 0xe0, + 0x38, 0xb5, 0xd0, 0xe9, 0x08, 0x25, 0xd0, 0xe9, 0x02, 0x13, 0x04, 0x46, + 0x52, 0x18, 0x45, 0xeb, 0x03, 0x03, 0xff, 0xf7, 0x92, 0xff, 0x63, 0x6b, + 0x2b, 0xb1, 0x04, 0xf1, 0x28, 0x00, 0xbd, 0xe8, 0x38, 0x40, 0x08, 0xf0, + 0xf7, 0xbf, 0x38, 0xbd, 0x09, 0x4b, 0x30, 0xb5, 0x1a, 0x46, 0x09, 0x4c, + 0xd3, 0xf8, 0x94, 0x50, 0xa5, 0x42, 0xfb, 0xd1, 0x03, 0x68, 0x29, 0xb1, + 0x81, 0x68, 0x0b, 0x60, 0x4f, 0xf4, 0x40, 0x73, 0x53, 0x61, 0x30, 0xbd, + 0xc1, 0x68, 0x1b, 0x04, 0xf7, 0xe7, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x58, + 0x00, 0x03, 0x00, 0x80, 0xf0, 0xb5, 0x72, 0xb6, 0x00, 0x23, 0x26, 0x4a, + 0x4f, 0xf0, 0xff, 0x36, 0x25, 0x4f, 0x13, 0x60, 0x4f, 0xf0, 0xe0, 0x22, + 0x1d, 0x46, 0x51, 0x68, 0x01, 0xf0, 0x0f, 0x01, 0x01, 0x31, 0x9a, 0x00, + 0x4f, 0xea, 0xc3, 0x0c, 0x02, 0xf1, 0x60, 0x42, 0x02, 0xf5, 0x61, 0x42, + 0xc2, 0xf8, 0x80, 0x60, 0xc2, 0xf8, 0x80, 0x61, 0x00, 0x22, 0x02, 0xeb, + 0x0c, 0x04, 0x01, 0x32, 0x3c, 0x44, 0x08, 0x2a, 0x84, 0xf8, 0x00, 0x53, + 0xf7, 0xd1, 0x01, 0x33, 0x99, 0x42, 0xe8, 0xdc, 0x16, 0x4b, 0x4f, 0xf0, + 0x20, 0x62, 0x5a, 0x60, 0x40, 0xf2, 0xfa, 0x52, 0x98, 0x60, 0xda, 0x60, + 0x00, 0x22, 0x1d, 0x61, 0x11, 0x46, 0x9c, 0x18, 0x01, 0x32, 0x0c, 0x2a, + 0x21, 0x76, 0xfa, 0xd1, 0x4f, 0xf0, 0xff, 0x32, 0x59, 0x62, 0x9a, 0x62, + 0x0d, 0x4a, 0xda, 0x62, 0x1f, 0x22, 0x1a, 0x63, 0xbf, 0xf3, 0x5f, 0x8f, + 0x0b, 0x4b, 0x59, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, + 0xd0, 0xe9, 0x00, 0x31, 0x00, 0x22, 0x82, 0xf3, 0x14, 0x88, 0x9d, 0x46, + 0x82, 0xf3, 0x10, 0x88, 0x08, 0x47, 0xf0, 0xbd, 0x10, 0xe0, 0x00, 0xe0, + 0x00, 0xe1, 0x00, 0xe0, 0x00, 0xed, 0x00, 0xe0, 0x02, 0x00, 0x00, 0xc0, + 0x90, 0xed, 0x00, 0xe0, 0x0c, 0xf0, 0xbc, 0xbd, 0x0c, 0xf0, 0xca, 0xbd, + 0x0c, 0xf0, 0x72, 0xbe, 0x0c, 0xf0, 0x16, 0xbe, 0x40, 0x68, 0x28, 0xb1, + 0x03, 0x7b, 0x01, 0x2b, 0x01, 0xd1, 0x04, 0x38, 0x70, 0x47, 0x00, 0x20, + 0x70, 0x47, 0x00, 0x00, 0x43, 0x68, 0x93, 0xf8, 0x30, 0x20, 0x2d, 0xe9, + 0xf0, 0x47, 0x06, 0x46, 0x00, 0x2a, 0x74, 0xd1, 0x93, 0xf8, 0x32, 0x30, + 0x00, 0x2b, 0x70, 0xd1, 0x03, 0x68, 0x1b, 0x68, 0x98, 0x47, 0x33, 0x68, + 0xdb, 0x69, 0x98, 0x47, 0x36, 0x4b, 0x02, 0x68, 0x00, 0x2a, 0x08, 0xbf, + 0x1a, 0x46, 0x11, 0x46, 0x1c, 0x46, 0xb1, 0xfb, 0xf3, 0xf3, 0x04, 0xfb, + 0x13, 0x13, 0x21, 0x46, 0x00, 0x2b, 0xf7, 0xd1, 0x2f, 0x4b, 0x01, 0x25, + 0x77, 0x68, 0xb3, 0xfb, 0xf4, 0xf1, 0x1f, 0x23, 0xb9, 0x60, 0x01, 0x3b, + 0x03, 0xd3, 0x05, 0xfa, 0x03, 0xfc, 0x61, 0x45, 0xf9, 0xd1, 0xb2, 0xfb, + 0xf4, 0xf2, 0x87, 0xf8, 0x33, 0x30, 0x01, 0x24, 0x1f, 0x23, 0xfa, 0x60, + 0x04, 0xfa, 0x03, 0xf5, 0xaa, 0x42, 0x01, 0xd0, 0x01, 0x3b, 0xf9, 0xd2, + 0x87, 0xf8, 0x34, 0x30, 0x44, 0x68, 0x23, 0x1f, 0x1b, 0x2b, 0x93, 0xbf, + 0x01, 0x23, 0x4f, 0xf0, 0xff, 0x33, 0x20, 0x24, 0xa3, 0x40, 0xa4, 0xf1, + 0x04, 0x04, 0x98, 0xbf, 0x03, 0xf1, 0xff, 0x33, 0x12, 0xf1, 0xff, 0x30, + 0x3b, 0x61, 0x4f, 0xf0, 0x07, 0x03, 0x03, 0xfa, 0x04, 0xf4, 0x4f, 0xf0, + 0x00, 0x03, 0x4f, 0xea, 0xe4, 0x79, 0x7c, 0x61, 0xa4, 0xfb, 0x01, 0x45, + 0x9a, 0x46, 0x01, 0xfb, 0x09, 0x55, 0x43, 0xf1, 0xff, 0x31, 0x20, 0x18, + 0x45, 0xeb, 0x01, 0x01, 0x0e, 0xf0, 0x1e, 0xfc, 0x33, 0x68, 0xc7, 0xe9, + 0x06, 0x01, 0x5b, 0x68, 0xc7, 0xe9, 0x00, 0xaa, 0x98, 0x47, 0x73, 0x68, + 0x38, 0x62, 0x00, 0x21, 0x00, 0x20, 0x01, 0x22, 0xc3, 0xf8, 0x24, 0xa0, + 0x83, 0xf8, 0x32, 0xa0, 0x1a, 0x86, 0xc3, 0xe9, 0x0a, 0x01, 0x30, 0x46, + 0xff, 0xf7, 0xa7, 0xfa, 0x30, 0x46, 0xbd, 0xe8, 0xf0, 0x47, 0xff, 0xf7, + 0xe8, 0xba, 0xbd, 0xe8, 0xf0, 0x87, 0x00, 0xbf, 0x40, 0x42, 0x0f, 0x00, + 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0x7a, 0xff, 0xff, 0xf7, 0xbc, 0xfd, + 0x20, 0x46, 0xff, 0xf7, 0x94, 0xfa, 0x63, 0x68, 0xd3, 0xe9, 0x0a, 0x01, + 0xff, 0xf7, 0xa0, 0xfd, 0x10, 0xbd, 0x2d, 0xe9, 0xf8, 0x43, 0x0c, 0x46, + 0x80, 0x46, 0x88, 0x69, 0xff, 0xf7, 0xea, 0xff, 0xd4, 0xe9, 0x0a, 0x59, + 0x46, 0x1b, 0x61, 0xeb, 0x09, 0x07, 0x00, 0x2f, 0x08, 0xbf, 0xb6, 0xf5, + 0x7a, 0x7f, 0x2a, 0xd3, 0x00, 0x2f, 0x08, 0xbf, 0xb6, 0xf5, 0xfa, 0x6f, + 0x28, 0xd3, 0x00, 0x2e, 0x4f, 0xf4, 0x7a, 0x72, 0x30, 0x46, 0x77, 0xf1, + 0x01, 0x03, 0x4f, 0xf0, 0x00, 0x03, 0xb4, 0xbf, 0x00, 0x21, 0x39, 0x46, + 0x0e, 0xf0, 0xcc, 0xfb, 0x4f, 0xf4, 0x7a, 0x76, 0x00, 0x23, 0xa3, 0x63, + 0xa0, 0xfb, 0x06, 0x23, 0x55, 0x19, 0x06, 0xfb, 0x01, 0x33, 0x43, 0xeb, + 0x09, 0x03, 0xc4, 0xe9, 0x0a, 0x53, 0xd4, 0xe9, 0x0c, 0x32, 0xc3, 0x18, + 0x40, 0x46, 0x42, 0xeb, 0x01, 0x01, 0xc4, 0xe9, 0x0c, 0x31, 0xc8, 0xe9, + 0x00, 0x31, 0xbd, 0xe8, 0xf8, 0x83, 0x00, 0x20, 0x01, 0x46, 0xe3, 0xe7, + 0x01, 0x20, 0x00, 0x21, 0xe0, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0x70, 0x43, + 0x15, 0x4e, 0x35, 0x68, 0x2d, 0xbb, 0x15, 0x4c, 0x4f, 0xf0, 0x00, 0x08, + 0x14, 0x48, 0x4f, 0xf0, 0x00, 0x09, 0x14, 0x4b, 0xa0, 0x61, 0x23, 0x60, + 0xc4, 0xe9, 0x02, 0x89, 0xc4, 0xe9, 0x04, 0x55, 0xff, 0xf7, 0x18, 0xff, + 0xff, 0xf7, 0x5a, 0xfd, 0x0f, 0x4b, 0x10, 0x4a, 0x1a, 0x60, 0xff, 0xf7, + 0x41, 0xfd, 0x0f, 0x4b, 0xa0, 0x69, 0x23, 0x60, 0xff, 0xf7, 0x8e, 0xff, + 0x84, 0xf8, 0x40, 0x50, 0x34, 0x60, 0xc4, 0xe9, 0x08, 0x01, 0xc4, 0xe9, + 0x0a, 0x01, 0xc4, 0xe9, 0x0c, 0x89, 0xc4, 0xe9, 0x0e, 0x55, 0x30, 0x68, + 0xbd, 0xe8, 0x70, 0x83, 0xd8, 0x27, 0x02, 0x24, 0x90, 0x27, 0x02, 0x24, + 0x58, 0xd9, 0x01, 0x08, 0x10, 0xd7, 0x01, 0x08, 0x10, 0x0b, 0x02, 0x24, + 0x21, 0xdf, 0x00, 0x08, 0x58, 0xe1, 0x01, 0x08, 0xb1, 0xf9, 0x00, 0x30, + 0x5a, 0x1c, 0x01, 0xd1, 0x18, 0x46, 0x70, 0x47, 0x83, 0x42, 0x01, 0xd1, + 0x88, 0x68, 0x70, 0x47, 0x0c, 0x31, 0xf3, 0xe7, 0x08, 0xb5, 0x43, 0x1c, + 0x03, 0xd1, 0x03, 0x46, 0x18, 0x46, 0x08, 0xbd, 0x0c, 0x31, 0xb1, 0xf9, + 0x00, 0x30, 0x5a, 0x1c, 0x04, 0xd0, 0x98, 0x42, 0xf8, 0xd1, 0x4b, 0x68, + 0x59, 0x1c, 0xf3, 0xd1, 0x01, 0x46, 0x01, 0x48, 0xf3, 0xf7, 0x16, 0xfa, + 0x30, 0x01, 0x01, 0x80, 0x88, 0x42, 0x08, 0xb5, 0x07, 0xd0, 0x43, 0x1c, + 0x05, 0xd0, 0x01, 0x31, 0x01, 0x46, 0x02, 0xd0, 0x02, 0x48, 0xf3, 0xf7, + 0x09, 0xfa, 0x08, 0x46, 0x08, 0xbd, 0x00, 0xbf, 0x30, 0x01, 0x01, 0x80, + 0xd0, 0xf8, 0x90, 0x30, 0x2d, 0xe9, 0xf0, 0x4f, 0x01, 0x2b, 0x04, 0x46, + 0x2d, 0xed, 0x08, 0x8b, 0x87, 0xb0, 0x02, 0x93, 0x07, 0xd9, 0x00, 0x20, + 0x84, 0xf8, 0x94, 0x00, 0x07, 0xb0, 0xbd, 0xec, 0x08, 0x8b, 0xbd, 0xe8, + 0xf0, 0x8f, 0x03, 0x1d, 0xb0, 0xf9, 0x96, 0x70, 0xb0, 0xf9, 0x98, 0x60, + 0x08, 0xee, 0x10, 0x3a, 0xd0, 0xf8, 0x8c, 0x30, 0xb0, 0xf9, 0x9a, 0x50, + 0xb0, 0xf9, 0x9c, 0xa0, 0x08, 0xee, 0x90, 0x3a, 0xb0, 0xf9, 0x9e, 0xb0, + 0xb0, 0xf9, 0xa0, 0x80, 0x38, 0x46, 0x72, 0x49, 0xff, 0xf7, 0xb0, 0xff, + 0x71, 0x49, 0x03, 0x90, 0x30, 0x46, 0xff, 0xf7, 0xab, 0xff, 0x70, 0x49, + 0x01, 0x90, 0x28, 0x46, 0xff, 0xf7, 0xa6, 0xff, 0x6e, 0x49, 0x09, 0xee, + 0x10, 0x0a, 0x50, 0x46, 0xff, 0xf7, 0xa0, 0xff, 0x6c, 0x49, 0x09, 0xee, + 0x90, 0x0a, 0x58, 0x46, 0xff, 0xf7, 0x9a, 0xff, 0x6a, 0x49, 0x0a, 0xee, + 0x10, 0x0a, 0x40, 0x46, 0xff, 0xf7, 0x94, 0xff, 0x01, 0x9a, 0x03, 0x9b, + 0x81, 0x46, 0x11, 0x46, 0x18, 0x46, 0xff, 0xf7, 0xa3, 0xff, 0x19, 0xee, + 0x90, 0x1a, 0x01, 0x90, 0x19, 0xee, 0x10, 0x0a, 0xff, 0xf7, 0x9c, 0xff, + 0x49, 0x46, 0x03, 0x90, 0x1a, 0xee, 0x10, 0x0a, 0xff, 0xf7, 0x96, 0xff, + 0x01, 0x9b, 0x1a, 0x46, 0x03, 0x9b, 0x9a, 0x42, 0xab, 0xd1, 0x01, 0x9b, + 0x83, 0x42, 0xa8, 0xd1, 0x54, 0x49, 0x38, 0x46, 0xff, 0xf7, 0x68, 0xff, + 0x53, 0x49, 0x03, 0x90, 0x30, 0x46, 0xff, 0xf7, 0x63, 0xff, 0x52, 0x49, + 0x09, 0xee, 0x10, 0x0a, 0x28, 0x46, 0xff, 0xf7, 0x5d, 0xff, 0x50, 0x49, + 0x09, 0xee, 0x90, 0x0a, 0x50, 0x46, 0xff, 0xf7, 0x57, 0xff, 0x4e, 0x49, + 0x0a, 0xee, 0x10, 0x0a, 0x58, 0x46, 0xff, 0xf7, 0x51, 0xff, 0x4c, 0x49, + 0x0a, 0xee, 0x90, 0x0a, 0x40, 0x46, 0xff, 0xf7, 0x4b, 0xff, 0x4a, 0x4a, + 0x0b, 0xee, 0x10, 0x0a, 0x03, 0x9b, 0xd2, 0xf8, 0xd4, 0x10, 0x48, 0x48, + 0x41, 0xf4, 0x80, 0x41, 0xc2, 0xf8, 0xd4, 0x10, 0xd2, 0xf8, 0xd4, 0x10, + 0x01, 0xf4, 0x80, 0x41, 0x05, 0x91, 0x05, 0x99, 0x43, 0x49, 0xd0, 0xf8, + 0x8c, 0xc0, 0x8c, 0x45, 0xfb, 0xd1, 0xd1, 0x6f, 0x4f, 0xf0, 0x00, 0x09, + 0x41, 0xf4, 0x80, 0x41, 0xd1, 0x67, 0xd1, 0x6f, 0x21, 0xf4, 0x80, 0x41, + 0xd1, 0x67, 0x4f, 0xf4, 0x40, 0x72, 0x01, 0x21, 0xc2, 0x60, 0x00, 0x22, + 0x38, 0x46, 0xa4, 0xf8, 0x54, 0x70, 0x84, 0xf8, 0x45, 0x20, 0x22, 0x61, + 0x84, 0xf8, 0x44, 0x20, 0x4f, 0xf0, 0x00, 0x42, 0x92, 0xfa, 0xa2, 0xf2, + 0xb2, 0xfa, 0x82, 0xf2, 0x01, 0x3a, 0x62, 0x61, 0x4f, 0xf4, 0x80, 0x62, + 0xa2, 0x61, 0x02, 0x9a, 0xe2, 0x61, 0x01, 0x9a, 0xc4, 0xe9, 0x02, 0x11, + 0x62, 0x60, 0x19, 0x46, 0xc4, 0xe9, 0x08, 0x99, 0xf5, 0xf7, 0xe6, 0xf9, + 0x49, 0x46, 0x38, 0x46, 0xf5, 0xf7, 0x9a, 0xf9, 0x19, 0xee, 0x10, 0x1a, + 0x30, 0x46, 0xa4, 0xf8, 0x56, 0x60, 0xf5, 0xf7, 0xdb, 0xf9, 0x49, 0x46, + 0x30, 0x46, 0xf5, 0xf7, 0x8f, 0xf9, 0x19, 0xee, 0x90, 0x1a, 0x28, 0x46, + 0xa4, 0xf8, 0x58, 0x50, 0xf5, 0xf7, 0xd0, 0xf9, 0x49, 0x46, 0x28, 0x46, + 0xf5, 0xf7, 0x84, 0xf9, 0x1a, 0xee, 0x10, 0x1a, 0x50, 0x46, 0xa4, 0xf8, + 0x5a, 0xa0, 0xf5, 0xf7, 0xc5, 0xf9, 0x49, 0x46, 0x50, 0x46, 0xf5, 0xf7, + 0x79, 0xf9, 0x1a, 0xee, 0x90, 0x1a, 0x58, 0x46, 0xa4, 0xf8, 0x5c, 0xb0, + 0xf5, 0xf7, 0xba, 0xf9, 0x49, 0x46, 0x58, 0x46, 0xf5, 0xf7, 0x6e, 0xf9, + 0x1b, 0xee, 0x10, 0x1a, 0x40, 0x46, 0xa4, 0xf8, 0x5e, 0x80, 0xf5, 0xf7, + 0xaf, 0xf9, 0x49, 0x46, 0x40, 0x46, 0xf5, 0xf7, 0x63, 0xf9, 0x18, 0xee, + 0x90, 0x1a, 0x18, 0xee, 0x10, 0x0a, 0xf6, 0xf7, 0xdb, 0xfe, 0xb0, 0xfa, + 0x80, 0xf0, 0x40, 0x09, 0x00, 0xe7, 0x00, 0xbf, 0x28, 0xdd, 0x01, 0x08, + 0x58, 0xdd, 0x01, 0x08, 0x88, 0xdd, 0x01, 0x08, 0xac, 0xdd, 0x01, 0x08, + 0xdc, 0xdd, 0x01, 0x08, 0x00, 0xde, 0x01, 0x08, 0x00, 0x44, 0x02, 0x58, + 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, 0x43, 0x1c, 0x07, 0xb5, + 0x10, 0xd1, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x83, 0x42, 0x0a, 0xd1, + 0x89, 0x68, 0x01, 0x90, 0xf5, 0xf7, 0x82, 0xf9, 0x00, 0x21, 0x01, 0x98, + 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xeb, 0xf5, 0xf7, 0x33, 0xb9, 0x0c, 0x31, + 0xb1, 0xf9, 0x00, 0x30, 0x5a, 0x1c, 0xed, 0xd1, 0x01, 0x46, 0x01, 0x48, + 0xf3, 0xf7, 0xca, 0xf8, 0x30, 0x01, 0x01, 0x80, 0x38, 0xb5, 0x15, 0x46, + 0x04, 0x46, 0x01, 0x82, 0xf6, 0xf7, 0x16, 0xf8, 0x20, 0x46, 0x29, 0x46, + 0xff, 0xf7, 0xf4, 0xfc, 0x01, 0x21, 0xf6, 0xf7, 0x33, 0xf8, 0xb4, 0xf9, + 0x10, 0x00, 0x00, 0x21, 0xbd, 0xe8, 0x38, 0x40, 0xf5, 0xf7, 0x14, 0xb9, + 0x00, 0xb5, 0x89, 0xb0, 0x15, 0x4d, 0xff, 0xf7, 0xad, 0xfb, 0x00, 0x22, + 0xa5, 0x21, 0x01, 0xa8, 0xff, 0xf7, 0xe2, 0xff, 0x04, 0x24, 0x01, 0x21, + 0x01, 0xa8, 0xff, 0xf7, 0xdb, 0xfc, 0x28, 0x46, 0xff, 0xf7, 0x24, 0xfb, + 0x00, 0x21, 0x01, 0xa8, 0xff, 0xf7, 0xd4, 0xfc, 0x28, 0x46, 0xff, 0xf7, + 0x1d, 0xfb, 0x01, 0x3c, 0xef, 0xd1, 0x04, 0x24, 0x09, 0x4e, 0x01, 0x21, + 0x01, 0xa8, 0xff, 0xf7, 0xc9, 0xfc, 0x30, 0x46, 0xff, 0xf7, 0x12, 0xfb, + 0x00, 0x21, 0x01, 0xa8, 0xff, 0xf7, 0xc2, 0xfc, 0x30, 0x46, 0xff, 0xf7, + 0x0b, 0xfb, 0x01, 0x3c, 0xef, 0xd1, 0xdb, 0xe7, 0xf0, 0x49, 0x02, 0x00, + 0x80, 0x1a, 0x06, 0x00, 0x08, 0xb5, 0x08, 0xb1, 0xff, 0xf7, 0xca, 0xff, + 0xfe, 0xe7, 0x00, 0x00, 0x08, 0xb5, 0x0e, 0x4b, 0x01, 0x21, 0xd3, 0xe8, + 0x4f, 0x2f, 0xc3, 0xe8, 0x40, 0x1f, 0xd2, 0xb2, 0x00, 0x28, 0xf8, 0xd1, + 0x2a, 0xb1, 0xff, 0xf7, 0x6d, 0xfb, 0xbf, 0xf3, 0x4f, 0x8f, 0x20, 0xbf, + 0xfd, 0xe7, 0xef, 0xf3, 0x05, 0x83, 0x1b, 0xb9, 0xef, 0xf3, 0x10, 0x83, + 0xdb, 0x07, 0x01, 0xd5, 0xff, 0xf7, 0xae, 0xff, 0x01, 0x20, 0xff, 0xf7, + 0xdd, 0xff, 0x00, 0xbf, 0xf8, 0x27, 0x02, 0x24, 0x0f, 0xb4, 0x72, 0x46, + 0x08, 0xb5, 0x07, 0x4b, 0x01, 0x20, 0xd3, 0xe8, 0x4f, 0x1f, 0xc3, 0xe8, + 0x44, 0x0f, 0xc9, 0xb2, 0x00, 0x2c, 0xf8, 0xd1, 0x11, 0xb9, 0x03, 0x48, + 0xff, 0xf7, 0xa8, 0xfb, 0xff, 0xf7, 0xce, 0xff, 0x78, 0x0b, 0x02, 0x24, + 0x00, 0x01, 0xff, 0x80, 0x3f, 0x28, 0x2d, 0xe9, 0xf0, 0x4f, 0x06, 0x46, + 0x8b, 0xb0, 0x00, 0xf3, 0x2b, 0x81, 0x96, 0x4f, 0x57, 0xf8, 0x20, 0x00, + 0x41, 0x1c, 0x40, 0xf0, 0x09, 0x81, 0x02, 0x2e, 0x00, 0xf3, 0x06, 0x81, + 0x92, 0x48, 0xdf, 0xf8, 0x8c, 0x92, 0x03, 0x78, 0xbf, 0xf3, 0x5b, 0x8f, + 0x13, 0xf0, 0x01, 0x0f, 0x40, 0xf0, 0xf9, 0x80, 0xff, 0xf7, 0xcc, 0xfa, + 0x00, 0x28, 0x00, 0xf0, 0xf4, 0x80, 0x8c, 0x4b, 0xc9, 0xf8, 0x00, 0x30, + 0x8b, 0x4b, 0x1a, 0x68, 0x98, 0x46, 0x00, 0x2a, 0x40, 0xf0, 0xe8, 0x80, + 0x89, 0x49, 0x09, 0x20, 0xff, 0xf7, 0xf0, 0xfd, 0x04, 0x46, 0x88, 0x49, + 0x0a, 0x20, 0xff, 0xf7, 0xeb, 0xfd, 0x01, 0x46, 0x20, 0x46, 0x86, 0x4d, + 0xff, 0xf7, 0xfc, 0xfd, 0x82, 0x49, 0x04, 0x46, 0x09, 0x20, 0xff, 0xf7, + 0xd5, 0xfd, 0x81, 0x49, 0x83, 0x46, 0x0a, 0x20, 0xff, 0xf7, 0xd0, 0xfd, + 0x80, 0x4b, 0x82, 0x46, 0x2c, 0x60, 0x9c, 0x42, 0x21, 0xd1, 0x7f, 0x4a, + 0xd2, 0xf8, 0xf0, 0x10, 0x41, 0xf0, 0x10, 0x01, 0xc2, 0xf8, 0xf0, 0x10, + 0xd2, 0xf8, 0xf0, 0x20, 0x02, 0xf0, 0x10, 0x02, 0x09, 0x92, 0x09, 0x9a, + 0x79, 0x4a, 0x94, 0x42, 0x4a, 0xd1, 0x77, 0x4b, 0xd3, 0xf8, 0xf0, 0x20, + 0x42, 0xf0, 0x20, 0x02, 0xc3, 0xf8, 0xf0, 0x20, 0xd3, 0xf8, 0xf0, 0x30, + 0x03, 0xf0, 0x20, 0x03, 0x04, 0x93, 0x04, 0x9b, 0x72, 0x4b, 0x9c, 0x42, + 0x4a, 0xd1, 0x01, 0x24, 0x87, 0xe0, 0x70, 0x4a, 0x94, 0x42, 0x1a, 0xd0, + 0x02, 0xf5, 0x80, 0x62, 0x94, 0x42, 0x24, 0xd0, 0x6d, 0x4a, 0x94, 0x42, + 0x5c, 0xd0, 0x6d, 0x4a, 0x94, 0x42, 0xdd, 0xd1, 0x67, 0x4a, 0xd2, 0xf8, + 0xe8, 0x10, 0x41, 0xf4, 0x80, 0x11, 0xc2, 0xf8, 0xe8, 0x10, 0xd2, 0xf8, + 0xe8, 0x20, 0x02, 0xf4, 0x80, 0x12, 0x05, 0x92, 0x05, 0x9a, 0x9c, 0x42, + 0xde, 0xd1, 0x00, 0x24, 0x69, 0xe0, 0x5f, 0x4a, 0xd2, 0xf8, 0xe8, 0x10, + 0x41, 0xf4, 0x00, 0x31, 0xc2, 0xf8, 0xe8, 0x10, 0xd2, 0xf8, 0xe8, 0x20, + 0x02, 0xf4, 0x00, 0x32, 0x08, 0x92, 0x08, 0x9a, 0xbe, 0xe7, 0x58, 0x4a, + 0xd2, 0xf8, 0xe8, 0x10, 0x41, 0xf4, 0x80, 0x21, 0xc2, 0xf8, 0xe8, 0x10, + 0xd2, 0xf8, 0xe8, 0x20, 0x02, 0xf4, 0x80, 0x22, 0x07, 0x92, 0x07, 0x9a, + 0x56, 0x4a, 0x94, 0x42, 0x37, 0xd1, 0x50, 0x4b, 0xd3, 0xf8, 0xe8, 0x20, + 0x42, 0xf0, 0x80, 0x42, 0xc3, 0xf8, 0xe8, 0x20, 0xd3, 0xf8, 0xe8, 0x30, + 0x03, 0xf0, 0x80, 0x43, 0x03, 0x93, 0x03, 0x9b, 0x4f, 0x4b, 0x9c, 0x42, + 0x74, 0xd0, 0x03, 0xf5, 0x80, 0x63, 0x9c, 0x42, 0x72, 0xd0, 0x03, 0xf5, + 0x80, 0x63, 0x9c, 0x42, 0x70, 0xd0, 0x03, 0xf5, 0x44, 0x43, 0x9c, 0x42, + 0x6e, 0xd0, 0xa3, 0xf5, 0x1c, 0x43, 0x9c, 0x42, 0x6c, 0xd0, 0x03, 0xf5, + 0x80, 0x63, 0x9c, 0x42, 0x5e, 0xd0, 0x45, 0x48, 0x84, 0x42, 0x14, 0xbf, + 0x4f, 0xf0, 0xff, 0x34, 0x08, 0x24, 0x20, 0xe0, 0x3a, 0x4a, 0xd2, 0xf8, + 0xe8, 0x10, 0x41, 0xf4, 0x00, 0x21, 0xc2, 0xf8, 0xe8, 0x10, 0xd2, 0xf8, + 0xe8, 0x20, 0x02, 0xf4, 0x00, 0x22, 0x06, 0x92, 0x06, 0x9a, 0x3c, 0x4a, + 0x94, 0x42, 0x3a, 0xd0, 0x39, 0x4a, 0x94, 0x42, 0x9f, 0xd1, 0x31, 0x4b, + 0x08, 0x24, 0xd3, 0xf8, 0xf4, 0x20, 0x42, 0xf0, 0x08, 0x02, 0xc3, 0xf8, + 0xf4, 0x20, 0xd3, 0xf8, 0xf4, 0x30, 0x03, 0xf0, 0x08, 0x03, 0x01, 0x93, + 0x01, 0x9b, 0x59, 0x46, 0x09, 0x20, 0x6c, 0x60, 0xf4, 0xf7, 0xfa, 0xff, + 0x01, 0x21, 0x09, 0x20, 0xf4, 0xf7, 0xae, 0xff, 0x51, 0x46, 0x0a, 0x20, + 0xf4, 0xf7, 0xf2, 0xff, 0x01, 0x21, 0x0a, 0x20, 0xf4, 0xf7, 0xa6, 0xff, + 0x00, 0x23, 0x4f, 0xf4, 0xe1, 0x32, 0xc5, 0xe9, 0x04, 0x33, 0xc5, 0xe9, + 0x02, 0x23, 0x27, 0x4b, 0xab, 0x61, 0xf6, 0xf7, 0xa7, 0xfd, 0x01, 0x23, + 0xc8, 0xf8, 0x00, 0x30, 0xf7, 0xf7, 0x28, 0xf8, 0x12, 0x48, 0xff, 0xf7, + 0xcd, 0xf9, 0x22, 0x48, 0x47, 0xf8, 0x26, 0x90, 0x0b, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0x15, 0x4b, 0xd3, 0xf8, 0xe8, 0x20, 0x42, 0xf0, 0x00, 0x42, + 0xc3, 0xf8, 0xe8, 0x20, 0xd3, 0xf8, 0xe8, 0x30, 0x03, 0xf0, 0x00, 0x43, + 0x02, 0x93, 0x02, 0x9b, 0x07, 0x24, 0xc6, 0xe7, 0x02, 0x24, 0xc4, 0xe7, + 0x03, 0x24, 0xc2, 0xe7, 0x04, 0x24, 0xc0, 0xe7, 0x05, 0x24, 0xbe, 0xe7, + 0x06, 0x24, 0xbc, 0xe7, 0x00, 0x20, 0xe1, 0xe7, 0x10, 0x00, 0x00, 0x24, + 0xb8, 0x26, 0x02, 0x24, 0xe4, 0xe0, 0x01, 0x08, 0x40, 0x28, 0x02, 0x24, + 0x8c, 0xdf, 0x01, 0x08, 0x30, 0xde, 0x01, 0x08, 0xc8, 0x0b, 0x02, 0x24, + 0x00, 0x10, 0x01, 0x40, 0x00, 0x44, 0x02, 0x58, 0x00, 0x14, 0x01, 0x40, + 0x00, 0x44, 0x00, 0x40, 0x00, 0x4c, 0x00, 0x40, 0x00, 0x50, 0x00, 0x40, + 0x00, 0x78, 0x00, 0x40, 0x00, 0x48, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x58, + 0x00, 0x7c, 0x00, 0x40, 0x09, 0x00, 0x0a, 0x00, 0xdc, 0x27, 0x02, 0x24, + 0x38, 0xb5, 0x0d, 0x46, 0xff, 0xf7, 0xa2, 0xfe, 0x04, 0x46, 0x30, 0xb9, + 0x0b, 0xf0, 0xc4, 0xfa, 0x09, 0x23, 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x30, + 0x38, 0xbd, 0x03, 0x68, 0xdb, 0x69, 0x98, 0x47, 0x00, 0x28, 0x20, 0x46, + 0x14, 0xbf, 0x4f, 0xf4, 0x00, 0x53, 0x4f, 0xf4, 0x00, 0x43, 0x6b, 0x60, + 0x23, 0x68, 0x9b, 0x6a, 0x98, 0x47, 0x28, 0x61, 0x00, 0x20, 0xed, 0xe7, + 0x13, 0xb5, 0xcd, 0xe9, 0x00, 0x21, 0xff, 0xf7, 0x83, 0xfe, 0xdd, 0xe9, + 0x00, 0x21, 0x40, 0xb9, 0x0b, 0xf0, 0xa4, 0xfa, 0x09, 0x23, 0x03, 0x60, + 0x4f, 0xf0, 0xff, 0x34, 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, 0x03, 0x68, + 0x1b, 0x69, 0x98, 0x47, 0x04, 0x1e, 0xf7, 0xda, 0x64, 0x42, 0x0b, 0xf0, + 0x95, 0xfa, 0x04, 0x60, 0xf0, 0xe7, 0x10, 0xb5, 0xff, 0xf7, 0x6a, 0xfe, + 0x04, 0x46, 0x28, 0xb9, 0x0b, 0xf0, 0x8c, 0xfa, 0x09, 0x23, 0x03, 0x60, + 0x20, 0x46, 0x10, 0xbd, 0x03, 0x68, 0xdb, 0x69, 0x98, 0x47, 0x04, 0x1e, + 0xf8, 0xda, 0x64, 0x42, 0x0b, 0xf0, 0x80, 0xfa, 0x04, 0x60, 0x00, 0x24, + 0xf2, 0xe7, 0xff, 0xf7, 0xe8, 0xbf, 0x13, 0xb5, 0xcd, 0xe9, 0x00, 0x21, + 0xff, 0xf7, 0x50, 0xfe, 0xdd, 0xe9, 0x00, 0x21, 0x40, 0xb9, 0x0b, 0xf0, + 0x71, 0xfa, 0x09, 0x23, 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x34, 0x20, 0x46, + 0x02, 0xb0, 0x10, 0xbd, 0x03, 0x68, 0x9b, 0x68, 0x98, 0x47, 0x04, 0x1e, + 0xf7, 0xda, 0x64, 0x42, 0x0b, 0xf0, 0x62, 0xfa, 0x04, 0x60, 0xf0, 0xe7, + 0x7f, 0xb5, 0x00, 0x2a, 0x04, 0x46, 0x0d, 0x46, 0x06, 0xda, 0x0b, 0xf0, + 0x59, 0xfa, 0x16, 0x23, 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x30, 0x19, 0xe0, + 0x01, 0x92, 0xff, 0xf7, 0xbe, 0xff, 0x01, 0x9a, 0xe8, 0xb1, 0x11, 0x4e, + 0x01, 0x22, 0x0d, 0xf1, 0x0f, 0x01, 0x20, 0x46, 0xff, 0xf7, 0xcd, 0xff, + 0x00, 0x28, 0xee, 0xdb, 0x0a, 0xd0, 0x9d, 0xf8, 0x0f, 0x30, 0x0d, 0x2b, + 0x08, 0xd1, 0x32, 0x5d, 0x0a, 0x2a, 0x33, 0x55, 0xee, 0xd0, 0x0a, 0x23, + 0x01, 0x20, 0x2b, 0x70, 0x04, 0xb0, 0x70, 0xbd, 0x0a, 0x2b, 0x02, 0xd1, + 0x32, 0x5d, 0x0d, 0x2a, 0xf3, 0xe7, 0x33, 0x55, 0xf4, 0xe7, 0x29, 0x46, + 0x20, 0x46, 0xff, 0xf7, 0xb2, 0xff, 0xf1, 0xe7, 0xbc, 0x26, 0x02, 0x24, + 0x13, 0xb5, 0xcd, 0xe9, 0x00, 0x21, 0xff, 0xf7, 0xff, 0xfd, 0xdd, 0xe9, + 0x00, 0x21, 0x40, 0xb9, 0x0b, 0xf0, 0x20, 0xfa, 0x09, 0x23, 0x03, 0x60, + 0x4f, 0xf0, 0xff, 0x34, 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, 0x03, 0x68, + 0xdb, 0x68, 0x98, 0x47, 0x04, 0x1e, 0xf7, 0xda, 0x64, 0x42, 0x0b, 0xf0, + 0x11, 0xfa, 0x04, 0x60, 0xf0, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0xf7, 0x4f, + 0xb2, 0xf1, 0x00, 0x08, 0x05, 0x46, 0x0e, 0x46, 0x09, 0xda, 0x0b, 0xf0, + 0x05, 0xfa, 0x16, 0x23, 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x34, 0x20, 0x46, + 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xff, 0xf7, 0x68, 0xff, 0x04, 0x46, + 0x60, 0xb3, 0x1f, 0x4a, 0x00, 0x27, 0xdf, 0xf8, 0x7c, 0xa0, 0x4f, 0xf0, + 0x0d, 0x0b, 0x53, 0x5d, 0x3c, 0x46, 0x91, 0x46, 0xb8, 0x45, 0x21, 0xdd, + 0xf2, 0x5d, 0x0a, 0x2a, 0x1b, 0xd1, 0x0d, 0x2b, 0x01, 0x93, 0x18, 0xd0, + 0xbc, 0x42, 0x0c, 0xda, 0x3a, 0x1b, 0x31, 0x19, 0x28, 0x46, 0xff, 0xf7, + 0xb7, 0xff, 0x00, 0x28, 0x01, 0x9b, 0xda, 0xdb, 0x04, 0x44, 0xa7, 0x42, + 0xd9, 0xdc, 0x09, 0xf8, 0x05, 0x30, 0x01, 0x22, 0x51, 0x46, 0x28, 0x46, + 0xff, 0xf7, 0xaa, 0xff, 0x00, 0x28, 0xce, 0xdb, 0xcf, 0xd0, 0x09, 0xf8, + 0x05, 0xb0, 0xf3, 0x5d, 0x01, 0x37, 0xdb, 0xe7, 0xa0, 0x45, 0xc8, 0xdd, + 0xa8, 0xeb, 0x04, 0x02, 0x31, 0x19, 0x28, 0x46, 0xff, 0xf7, 0x9a, 0xff, + 0x00, 0x28, 0xbe, 0xdb, 0x24, 0x18, 0x1f, 0xbf, 0x36, 0x19, 0x02, 0x4b, + 0x16, 0xf8, 0x01, 0x2c, 0x5a, 0x55, 0xb8, 0xe7, 0xfc, 0x26, 0x02, 0x24, + 0x10, 0xdc, 0x01, 0x08, 0x38, 0xb5, 0x05, 0x46, 0x00, 0x24, 0xff, 0xf7, + 0x8b, 0xfd, 0x0b, 0x4b, 0x43, 0xf8, 0x25, 0x40, 0x30, 0xb9, 0x0b, 0xf0, + 0xab, 0xf9, 0x09, 0x23, 0x03, 0x60, 0x4f, 0xf0, 0xff, 0x30, 0x38, 0xbd, + 0x03, 0x68, 0x5b, 0x69, 0x98, 0x47, 0x05, 0x1e, 0x04, 0xda, 0x6d, 0x42, + 0x0b, 0xf0, 0x9e, 0xf9, 0x05, 0x60, 0xf2, 0xe7, 0x20, 0x46, 0xf2, 0xe7, + 0x10, 0x00, 0x00, 0x24, 0xf8, 0xb5, 0x4b, 0x69, 0x15, 0x46, 0x0c, 0x46, + 0x9b, 0x1a, 0x00, 0x2b, 0xac, 0xbf, 0xd3, 0x18, 0x13, 0x1c, 0x4b, 0x61, + 0x03, 0x89, 0x8b, 0x80, 0xff, 0xf7, 0xa8, 0xf8, 0x02, 0x46, 0x03, 0x68, + 0x6b, 0xb3, 0x5e, 0x69, 0x61, 0x69, 0x77, 0x1a, 0x00, 0x2f, 0x24, 0xdb, + 0x8e, 0x42, 0x26, 0xd1, 0x9b, 0x68, 0xa3, 0x60, 0x13, 0xb1, 0x04, 0xf1, + 0x08, 0x01, 0x19, 0x61, 0x13, 0x68, 0x21, 0x46, 0x00, 0x26, 0x41, 0xf8, + 0x0c, 0x3f, 0x9e, 0x60, 0x19, 0x61, 0x14, 0x60, 0x83, 0x6a, 0x22, 0x61, + 0x6b, 0xb1, 0x90, 0xf8, 0x24, 0x20, 0x52, 0xb1, 0x02, 0x68, 0xa2, 0x42, + 0x07, 0xd1, 0xe2, 0x68, 0x2a, 0xb9, 0x61, 0x69, 0xc0, 0x6a, 0x49, 0x1b, + 0x21, 0xea, 0xe1, 0x71, 0x98, 0x47, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, + 0x67, 0xb8, 0x03, 0xf1, 0x08, 0x02, 0x9b, 0x68, 0xd0, 0xe7, 0xa3, 0x60, + 0x13, 0xb1, 0x04, 0xf1, 0x08, 0x01, 0x19, 0x61, 0x00, 0x23, 0xe3, 0x60, + 0xdd, 0xe7, 0x38, 0xb5, 0x85, 0x69, 0x00, 0xf1, 0x08, 0x04, 0xff, 0xf7, + 0x69, 0xf8, 0x6a, 0x68, 0x53, 0x68, 0x9c, 0x42, 0x09, 0xd1, 0x43, 0x69, + 0x28, 0x46, 0x53, 0x60, 0xfe, 0xf7, 0x81, 0xfd, 0xbd, 0xe8, 0x38, 0x40, + 0xff, 0xf7, 0x48, 0xb8, 0x13, 0x46, 0x00, 0x2b, 0xf8, 0xd0, 0xda, 0x68, + 0x94, 0x42, 0xf9, 0xd1, 0x42, 0x69, 0xda, 0x60, 0xf2, 0xe7, 0x00, 0x00, + 0xf8, 0xb5, 0x0f, 0x4b, 0x00, 0x26, 0x00, 0x27, 0x00, 0x25, 0x04, 0x46, + 0x03, 0x60, 0xc0, 0xe9, 0x02, 0x67, 0xc0, 0xe9, 0x04, 0x55, 0x0b, 0x48, + 0xa0, 0x61, 0xff, 0xf7, 0xff, 0xf9, 0xff, 0xf7, 0x41, 0xf8, 0x09, 0x4b, + 0x09, 0x4a, 0x1a, 0x60, 0xff, 0xf7, 0x28, 0xf8, 0x01, 0x23, 0x20, 0x46, + 0x65, 0x63, 0x84, 0xf8, 0x38, 0x30, 0x06, 0x4b, 0xc4, 0xe9, 0x08, 0x67, + 0x23, 0x60, 0xf8, 0xbd, 0x10, 0xd7, 0x01, 0x08, 0x58, 0xd9, 0x01, 0x08, + 0x10, 0x0b, 0x02, 0x24, 0x21, 0xdf, 0x00, 0x08, 0x4c, 0xe1, 0x01, 0x08, + 0x84, 0xb0, 0xf8, 0xb5, 0x04, 0x46, 0x07, 0xa8, 0xdd, 0xe9, 0x0c, 0x67, + 0x04, 0xf1, 0x28, 0x05, 0x80, 0xe8, 0x0e, 0x00, 0xff, 0xf7, 0x1c, 0xf8, + 0x0f, 0xc8, 0x85, 0xe8, 0x0f, 0x00, 0x20, 0x46, 0xff, 0xf7, 0xa7, 0xff, + 0xa0, 0x69, 0xc4, 0xe9, 0x08, 0x67, 0xff, 0xf7, 0x4f, 0xfa, 0x82, 0x19, + 0x20, 0x46, 0x41, 0xeb, 0x07, 0x03, 0xff, 0xf7, 0xcc, 0xf8, 0xbd, 0xe8, + 0xf8, 0x40, 0x04, 0xb0, 0xfe, 0xf7, 0xf2, 0xbf, 0xf8, 0xb5, 0x04, 0x46, + 0x0e, 0x46, 0x15, 0x46, 0x00, 0x21, 0x20, 0x22, 0x68, 0x30, 0x1f, 0x46, + 0x0b, 0xf0, 0x5c, 0xff, 0x94, 0xf8, 0x60, 0x30, 0x72, 0x1c, 0x84, 0xf8, + 0x68, 0x30, 0x16, 0xbf, 0x00, 0x23, 0x01, 0x23, 0x84, 0xf8, 0x69, 0x60, + 0x84, 0xf8, 0x6a, 0x30, 0x94, 0xf8, 0x61, 0x30, 0x84, 0xf8, 0x6c, 0x30, + 0x94, 0xf8, 0x62, 0x30, 0x84, 0xf8, 0x6d, 0x30, 0x6b, 0x1c, 0x16, 0xbf, + 0x00, 0x23, 0x01, 0x23, 0x25, 0x67, 0x01, 0x37, 0x84, 0xf8, 0x74, 0x30, + 0x94, 0xf8, 0x63, 0x30, 0x84, 0xf8, 0x78, 0x30, 0x94, 0xf8, 0x64, 0x30, + 0x84, 0xf8, 0x79, 0x30, 0x16, 0xbf, 0x00, 0x23, 0x01, 0x23, 0xe3, 0x67, + 0x84, 0xf8, 0x80, 0x30, 0xd4, 0xf8, 0x88, 0x30, 0x84, 0xf8, 0x84, 0x30, + 0x94, 0xf8, 0x65, 0x30, 0x84, 0xf8, 0x85, 0x30, 0xf8, 0xbd, 0x43, 0x68, + 0x1a, 0x68, 0x03, 0x68, 0x1a, 0x42, 0x14, 0xbf, 0x01, 0x20, 0x00, 0x20, + 0x70, 0x47, 0x00, 0x00, 0x09, 0x4b, 0x30, 0xb5, 0x1a, 0x46, 0x09, 0x4c, + 0xd3, 0xf8, 0x94, 0x50, 0xa5, 0x42, 0xfb, 0xd1, 0x03, 0x68, 0x29, 0xb1, + 0x81, 0x68, 0x0b, 0x60, 0x4f, 0xf4, 0x40, 0x73, 0x53, 0x61, 0x30, 0xbd, + 0xc1, 0x68, 0x1b, 0x04, 0xf7, 0xe7, 0x00, 0xbf, 0x00, 0x64, 0x02, 0x58, + 0x00, 0x03, 0x00, 0x80, 0x38, 0xb5, 0x05, 0x46, 0x04, 0x68, 0x54, 0xb9, + 0xfe, 0xf7, 0x9e, 0xfe, 0x2c, 0x68, 0x24, 0xb9, 0x2c, 0x1d, 0x20, 0x46, + 0xf2, 0xf7, 0xb0, 0xfc, 0x2c, 0x60, 0xfe, 0xf7, 0x8d, 0xfe, 0x20, 0x46, + 0x38, 0xbd, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x41, 0x88, 0x46, 0x00, 0x25, + 0x04, 0x46, 0x23, 0x49, 0xc0, 0xe9, 0x00, 0x55, 0x40, 0x46, 0x0d, 0xf0, + 0x42, 0xfb, 0x80, 0x44, 0xc4, 0xf8, 0x00, 0x80, 0x23, 0x68, 0x1a, 0x78, + 0x2f, 0x2a, 0x1c, 0xd1, 0x01, 0x33, 0x23, 0x60, 0x1c, 0x48, 0xff, 0xf7, + 0xd7, 0xff, 0xfb, 0xf7, 0x85, 0xfe, 0x1b, 0x4b, 0x1e, 0x68, 0xd6, 0xb1, + 0xb7, 0x68, 0xb7, 0xb1, 0x38, 0x46, 0x0c, 0xf0, 0xc9, 0xfc, 0x85, 0x42, + 0x11, 0xd1, 0x2a, 0x46, 0x41, 0x46, 0x38, 0x46, 0x0d, 0xf0, 0x28, 0xfa, + 0x58, 0xb9, 0x12, 0x48, 0xff, 0xf7, 0xc2, 0xff, 0xfb, 0xf7, 0x50, 0xfe, + 0x17, 0xe0, 0x00, 0x2a, 0xe2, 0xd0, 0x01, 0x33, 0x01, 0x35, 0x23, 0x60, + 0xd8, 0xe7, 0x76, 0x68, 0xe3, 0xe7, 0x07, 0x2d, 0xef, 0xd1, 0x2a, 0x46, + 0x41, 0x46, 0x0b, 0x48, 0x0d, 0xf0, 0x12, 0xfa, 0x00, 0x28, 0xe8, 0xd1, + 0x06, 0x48, 0xff, 0xf7, 0xab, 0xff, 0xfb, 0xf7, 0x39, 0xfe, 0x07, 0x4b, + 0x1e, 0x68, 0x20, 0x46, 0x66, 0x60, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0xbf, + 0x93, 0xd9, 0x01, 0x08, 0xe0, 0x06, 0x00, 0x24, 0xdc, 0x06, 0x00, 0x24, + 0x12, 0xdc, 0x01, 0x08, 0x8c, 0x27, 0x02, 0x24, 0x2d, 0xe9, 0xff, 0x47, + 0x8a, 0x46, 0x3f, 0x49, 0x05, 0x46, 0x0c, 0xf0, 0x7b, 0xfc, 0x04, 0x46, + 0x28, 0xb9, 0xff, 0xf7, 0xf1, 0xfb, 0x20, 0x46, 0x04, 0xb0, 0xbd, 0xe8, + 0xf0, 0x87, 0x3a, 0x49, 0x28, 0x46, 0x0c, 0xf0, 0x6f, 0xfc, 0x20, 0xb9, + 0x01, 0x20, 0x01, 0x24, 0xff, 0xf7, 0xe4, 0xfb, 0xf1, 0xe7, 0x36, 0x49, + 0x28, 0x46, 0x0c, 0xf0, 0x65, 0xfc, 0x20, 0xb9, 0x02, 0x20, 0x02, 0x24, + 0xff, 0xf7, 0xda, 0xfb, 0xe7, 0xe7, 0x2b, 0x78, 0x40, 0x2b, 0x02, 0xd1, + 0xd5, 0xf8, 0x01, 0x40, 0xe1, 0xe7, 0x2f, 0x4e, 0x03, 0x24, 0x2f, 0x48, + 0xb0, 0x46, 0xff, 0xf7, 0x69, 0xff, 0xfb, 0xf7, 0x17, 0xfe, 0x56, 0xf8, + 0x24, 0x90, 0xb9, 0xf1, 0x00, 0x0f, 0x2a, 0xd0, 0x01, 0x34, 0x40, 0x2c, + 0xf7, 0xd1, 0x0a, 0xf0, 0xe7, 0xff, 0x18, 0x23, 0x03, 0x60, 0x26, 0x48, + 0xff, 0xf7, 0x58, 0xff, 0xfb, 0xf7, 0xe6, 0xfd, 0x0a, 0xe0, 0x02, 0xa8, + 0xff, 0xf7, 0xac, 0xf8, 0x05, 0x46, 0x40, 0xb9, 0x0a, 0xf0, 0xd8, 0xff, + 0x13, 0x23, 0x03, 0x60, 0x46, 0xf8, 0x24, 0x50, 0x4f, 0xf0, 0xff, 0x34, + 0xb9, 0xe7, 0x03, 0x68, 0x01, 0xa9, 0x02, 0x9a, 0x9d, 0x68, 0x2a, 0xf4, + 0x80, 0x33, 0xa8, 0x47, 0x05, 0x46, 0xe8, 0xb1, 0x6d, 0x42, 0x0a, 0xf0, + 0xc5, 0xff, 0x05, 0x60, 0x46, 0xf8, 0x24, 0x90, 0xec, 0xe7, 0x4f, 0xf0, + 0xff, 0x37, 0x13, 0x48, 0x46, 0xf8, 0x24, 0x70, 0xff, 0xf7, 0x30, 0xff, + 0xfb, 0xf7, 0xbe, 0xfd, 0x29, 0x46, 0x02, 0xa8, 0xcd, 0xf8, 0x04, 0x90, + 0xff, 0xf7, 0x3a, 0xff, 0x03, 0x9d, 0x00, 0x2d, 0xd4, 0xd0, 0x2b, 0x7b, + 0x00, 0x2b, 0xcc, 0xd1, 0x04, 0x3d, 0x01, 0x95, 0x01, 0x9b, 0x09, 0x4a, + 0x48, 0xf8, 0x24, 0x30, 0x00, 0x23, 0x13, 0x55, 0x07, 0x4a, 0x13, 0x55, + 0x89, 0xe7, 0x00, 0xbf, 0x64, 0xe1, 0x01, 0x08, 0x6b, 0xe1, 0x01, 0x08, + 0x5c, 0xe1, 0x01, 0x08, 0x10, 0x00, 0x00, 0x24, 0x3c, 0x27, 0x02, 0x24, + 0xbc, 0x26, 0x02, 0x24, 0xfc, 0x26, 0x02, 0x24, 0x1d, 0x4b, 0x70, 0xb5, + 0x03, 0x60, 0x04, 0x46, 0x1c, 0x48, 0xff, 0xf7, 0x01, 0xff, 0xfb, 0xf7, + 0xaf, 0xfd, 0xa3, 0x68, 0x2b, 0xb1, 0x1a, 0x49, 0x62, 0x68, 0x0b, 0x68, + 0xa3, 0x42, 0x24, 0xd1, 0x0a, 0x60, 0x18, 0x4b, 0x15, 0x48, 0x1a, 0x68, + 0xa2, 0x42, 0x04, 0xbf, 0x00, 0x22, 0x1a, 0x60, 0xff, 0xf7, 0xee, 0xfe, + 0xfb, 0xf7, 0x7c, 0xfd, 0x25, 0x7b, 0xa5, 0xb9, 0x12, 0x48, 0x26, 0x1f, + 0xff, 0xf7, 0xe6, 0xfe, 0xfb, 0xf7, 0x94, 0xfd, 0x10, 0x4a, 0x40, 0x23, + 0x52, 0xf8, 0x04, 0x1b, 0x8e, 0x42, 0x08, 0xbf, 0x42, 0xf8, 0x04, 0x5c, + 0x01, 0x3b, 0xf7, 0xd1, 0x0a, 0x48, 0xff, 0xf7, 0xd7, 0xfe, 0xfb, 0xf7, + 0x65, 0xfd, 0x20, 0x46, 0x70, 0xbd, 0x19, 0x46, 0x5b, 0x68, 0xa3, 0x42, + 0xfb, 0xd1, 0x4a, 0x60, 0xd5, 0xe7, 0x00, 0xbf, 0xbc, 0xd8, 0x01, 0x08, + 0xe0, 0x06, 0x00, 0x24, 0xdc, 0x06, 0x00, 0x24, 0x8c, 0x27, 0x02, 0x24, + 0x3c, 0x27, 0x02, 0x24, 0x10, 0x00, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, + 0xff, 0xf7, 0xb4, 0xff, 0x20, 0x46, 0x0b, 0xf0, 0x5b, 0xfd, 0x20, 0x46, + 0x10, 0xbd, 0x00, 0x00, 0x08, 0xb5, 0x03, 0x48, 0xff, 0xf7, 0xb2, 0xfe, + 0xbd, 0xe8, 0x08, 0x40, 0xfb, 0xf7, 0x3e, 0xbd, 0x64, 0x27, 0x02, 0x24, + 0x08, 0xb5, 0x03, 0x48, 0xff, 0xf7, 0xa8, 0xfe, 0xbd, 0xe8, 0x08, 0x40, + 0xfb, 0xf7, 0x54, 0xbd, 0x64, 0x27, 0x02, 0x24, 0x2d, 0xe9, 0xf0, 0x47, + 0x9d, 0xf8, 0x20, 0x70, 0x05, 0x46, 0x89, 0x46, 0x92, 0x46, 0x02, 0x2f, + 0x98, 0x46, 0x9d, 0xf8, 0x24, 0x60, 0x22, 0xd8, 0x12, 0x4b, 0xdb, 0x5d, + 0xfb, 0xb1, 0xb6, 0xfb, 0xf3, 0xf4, 0x03, 0xfb, 0x14, 0x64, 0x14, 0xf0, + 0xff, 0x04, 0x18, 0xd1, 0xff, 0xf7, 0xde, 0xff, 0x9d, 0xf8, 0x28, 0x30, + 0x28, 0x46, 0x85, 0xf8, 0x60, 0x90, 0x85, 0xf8, 0x65, 0x30, 0x0b, 0x9b, + 0x85, 0xf8, 0x61, 0xa0, 0x85, 0xf8, 0x62, 0x80, 0x85, 0xf8, 0x63, 0x70, + 0x85, 0xf8, 0x64, 0x60, 0xc5, 0xf8, 0x88, 0x30, 0xff, 0xf7, 0xc0, 0xff, + 0x20, 0x46, 0xbd, 0xe8, 0xf0, 0x87, 0x4f, 0xf0, 0xff, 0x30, 0xfa, 0xe7, + 0x25, 0xdc, 0x01, 0x08, 0x27, 0x4b, 0x10, 0xb5, 0x04, 0x46, 0x03, 0x60, + 0xff, 0xf7, 0xbc, 0xff, 0x25, 0x49, 0x62, 0x68, 0x13, 0x68, 0x23, 0xf0, + 0x01, 0x03, 0x13, 0x60, 0x00, 0x23, 0xa3, 0x64, 0x84, 0xf8, 0x45, 0x30, + 0x21, 0x4b, 0xd1, 0xf8, 0x8c, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0x20, 0x4b, + 0xb4, 0xf9, 0x54, 0x00, 0xda, 0x6f, 0x42, 0xf4, 0x80, 0x42, 0xda, 0x67, + 0xda, 0x6f, 0x22, 0xf4, 0x80, 0x42, 0xda, 0x67, 0x4f, 0xf4, 0x40, 0x72, + 0xca, 0x60, 0x40, 0xf2, 0xc3, 0x31, 0xd3, 0xf8, 0xd4, 0x20, 0x22, 0xf4, + 0x80, 0x42, 0xc3, 0xf8, 0xd4, 0x20, 0xf4, 0xf7, 0x93, 0xfb, 0xb4, 0xf9, + 0x56, 0x00, 0x40, 0xf2, 0xc3, 0x31, 0xf4, 0xf7, 0x8d, 0xfb, 0xb4, 0xf9, + 0x58, 0x00, 0x40, 0xf2, 0xc3, 0x31, 0xf4, 0xf7, 0x87, 0xfb, 0xb4, 0xf9, + 0x5a, 0x00, 0x40, 0xf2, 0xc3, 0x31, 0xf4, 0xf7, 0x81, 0xfb, 0xb4, 0xf9, + 0x5c, 0x00, 0x40, 0xf2, 0xc3, 0x31, 0xf4, 0xf7, 0x7b, 0xfb, 0x40, 0xf2, + 0xc3, 0x31, 0xb4, 0xf9, 0x5e, 0x00, 0xf4, 0xf7, 0x75, 0xfb, 0x20, 0x46, + 0xff, 0xf7, 0x6a, 0xff, 0x20, 0x46, 0x10, 0xbd, 0x34, 0xe1, 0x01, 0x08, + 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, 0x00, 0x44, 0x02, 0x58, + 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xa4, 0xff, 0x20, 0x46, 0x0b, 0xf0, + 0xb1, 0xfc, 0x20, 0x46, 0x10, 0xbd, 0x08, 0xb5, 0xcc, 0x30, 0xff, 0xf7, + 0x09, 0xfe, 0xbd, 0xe8, 0x08, 0x40, 0xfb, 0xf7, 0x95, 0xbc, 0x08, 0xb5, + 0xcc, 0x30, 0xff, 0xf7, 0x01, 0xfe, 0xbd, 0xe8, 0x08, 0x40, 0xfb, 0xf7, + 0xad, 0xbc, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x4f, 0x0d, 0x46, 0x16, 0x46, + 0x85, 0xb0, 0xf2, 0xf7, 0x89, 0xfb, 0xac, 0x19, 0x00, 0xf1, 0x00, 0x60, + 0xa0, 0x42, 0xc0, 0xf0, 0x1e, 0x81, 0x09, 0xd9, 0x20, 0x46, 0xf2, 0xf7, + 0x5f, 0xfb, 0xb4, 0xfb, 0xf0, 0xf3, 0x03, 0xfb, 0x10, 0x40, 0x00, 0x28, + 0x40, 0xf0, 0x13, 0x81, 0x90, 0x48, 0x4f, 0xf0, 0x00, 0x09, 0xdf, 0xf8, + 0x58, 0xb2, 0xff, 0xf7, 0xdd, 0xfd, 0xfb, 0xf7, 0x8b, 0xfc, 0x00, 0x2e, + 0x00, 0xf0, 0xfe, 0x80, 0xb9, 0xf1, 0x00, 0x0f, 0x40, 0xf0, 0xf8, 0x80, + 0x05, 0xf1, 0x78, 0x43, 0xb5, 0xf1, 0x01, 0x6f, 0x4f, 0xf0, 0x10, 0x0a, + 0x4f, 0xea, 0x53, 0x43, 0x01, 0x93, 0x34, 0xbf, 0x01, 0x23, 0x02, 0x23, + 0x01, 0x2b, 0x03, 0xf0, 0x01, 0x08, 0x03, 0xf0, 0x02, 0x07, 0x0c, 0xbf, + 0x4f, 0xf0, 0x00, 0x63, 0x4f, 0xf0, 0x01, 0x63, 0x02, 0x93, 0xfe, 0xf7, + 0xb1, 0xfd, 0xfe, 0xf7, 0x8b, 0xfd, 0xbb, 0xf8, 0x00, 0x30, 0x4f, 0xf6, + 0xfd, 0x71, 0x5a, 0x1e, 0x92, 0xb2, 0x8a, 0x42, 0x97, 0xbf, 0x78, 0x4a, + 0x4f, 0xf0, 0x02, 0x63, 0x02, 0xea, 0x83, 0x23, 0x03, 0xf1, 0x00, 0x63, + 0x9d, 0x42, 0x0e, 0xd2, 0xb5, 0xf1, 0x00, 0x6f, 0x0b, 0xd3, 0x73, 0x4c, + 0x73, 0x4b, 0xd4, 0xf8, 0x88, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0xf9, 0xf7, + 0x67, 0xf9, 0x60, 0xb1, 0x4f, 0xf4, 0x40, 0x73, 0xa3, 0x60, 0xfe, 0xf7, + 0x57, 0xfd, 0xfe, 0xf7, 0x79, 0xfd, 0xba, 0xf1, 0x01, 0x0a, 0xd4, 0xd1, + 0x4f, 0xf0, 0xff, 0x39, 0x6b, 0xe0, 0xfe, 0xf7, 0x35, 0xfd, 0xbb, 0xf8, + 0x00, 0x20, 0x4f, 0xf6, 0xfd, 0x71, 0xdf, 0xf8, 0xac, 0x91, 0x53, 0x1e, + 0x9b, 0xb2, 0x8b, 0x42, 0x99, 0xf8, 0x14, 0x30, 0x97, 0xbf, 0x63, 0x4c, + 0x4f, 0xf0, 0x01, 0x64, 0x04, 0xea, 0x42, 0x24, 0x04, 0xf1, 0x00, 0x64, + 0xa5, 0x42, 0x2a, 0xbf, 0x2c, 0x1b, 0x01, 0x9c, 0x64, 0x0c, 0x01, 0x2b, + 0x00, 0xf0, 0x93, 0x80, 0x01, 0x20, 0x00, 0x23, 0x89, 0xf8, 0x14, 0x00, + 0xc9, 0xf8, 0x18, 0x30, 0xb8, 0xf1, 0x00, 0x0f, 0x00, 0xf0, 0x9d, 0x80, + 0xf4, 0xf7, 0xc0, 0xfb, 0x03, 0x1e, 0x18, 0xbf, 0x01, 0x23, 0x00, 0x2f, + 0x00, 0xf0, 0x99, 0x80, 0x02, 0x20, 0x03, 0x93, 0xf4, 0xf7, 0xb6, 0xfb, + 0x03, 0x9b, 0x00, 0x28, 0x3b, 0xd0, 0x01, 0x20, 0x00, 0x23, 0xc0, 0x1a, + 0x89, 0xf8, 0x14, 0x30, 0x18, 0xbf, 0x01, 0x20, 0xc0, 0xf1, 0x00, 0x09, + 0x02, 0x9b, 0x03, 0xeb, 0x44, 0x44, 0xbf, 0xf3, 0x4f, 0x8f, 0x49, 0x4b, + 0x04, 0xf5, 0x00, 0x32, 0xc3, 0xf8, 0x70, 0x42, 0x20, 0x34, 0x94, 0x42, + 0xfa, 0xd1, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0xbf, 0xf3, + 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x00, 0x22, 0xc3, 0xf8, 0x50, 0x22, + 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0xfe, 0xf7, 0xc6, 0xfc, + 0xf9, 0xf7, 0xe2, 0xf8, 0x00, 0x28, 0x94, 0xd1, 0x37, 0x4b, 0x4f, 0xf4, + 0x40, 0x72, 0x9a, 0x60, 0xb9, 0xf1, 0x00, 0x0f, 0x8d, 0xd1, 0xfe, 0xf7, + 0xe5, 0xfc, 0xfe, 0xf7, 0x07, 0xfd, 0x28, 0x46, 0xf2, 0xf7, 0x94, 0xfa, + 0x36, 0x1a, 0x05, 0x44, 0x41, 0xe7, 0x00, 0x2b, 0xc1, 0xd1, 0xb8, 0xf1, + 0x00, 0x0f, 0x0a, 0xd0, 0x30, 0x4a, 0xd3, 0x68, 0x23, 0xf4, 0xe6, 0x63, + 0xd3, 0x60, 0xd3, 0x68, 0x43, 0xea, 0x04, 0x23, 0x43, 0xf0, 0xa4, 0x03, + 0xd3, 0x60, 0x77, 0xb1, 0x2a, 0x4a, 0xd2, 0xf8, 0x0c, 0x31, 0x23, 0xf4, + 0xe6, 0x63, 0xc2, 0xf8, 0x0c, 0x31, 0xd2, 0xf8, 0x0c, 0x31, 0x43, 0xea, + 0x04, 0x23, 0x43, 0xf0, 0xa4, 0x03, 0xc2, 0xf8, 0x0c, 0x31, 0xb8, 0xf1, + 0x00, 0x0f, 0x2b, 0xd0, 0x01, 0x20, 0xf4, 0xf7, 0x51, 0xfb, 0x20, 0x4a, + 0xd3, 0x68, 0x23, 0xf4, 0xe0, 0x63, 0x23, 0xf0, 0x04, 0x03, 0xd3, 0x60, + 0x5f, 0xb1, 0x02, 0x20, 0xf4, 0xf7, 0x46, 0xfb, 0x1a, 0x4a, 0xd2, 0xf8, + 0x0c, 0x31, 0x23, 0xf4, 0xe0, 0x63, 0x23, 0xf0, 0x04, 0x03, 0xc2, 0xf8, + 0x0c, 0x31, 0x00, 0x28, 0x88, 0xd1, 0x00, 0x20, 0x86, 0xe7, 0x4f, 0xf0, + 0xff, 0x39, 0x8b, 0xe7, 0x4f, 0xf0, 0xff, 0x39, 0x0b, 0x48, 0xff, 0xf7, + 0xd7, 0xfc, 0xfb, 0xf7, 0x65, 0xfb, 0x48, 0x46, 0x05, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0x4f, 0xf0, 0xff, 0x39, 0xf8, 0xe7, 0x00, 0x2f, 0xea, 0xd0, + 0xdb, 0xe7, 0x00, 0x2f, 0xe7, 0xd0, 0x43, 0x46, 0x66, 0xe7, 0x00, 0x28, + 0x7f, 0xf4, 0x6b, 0xaf, 0xaa, 0xe7, 0x00, 0xbf, 0x58, 0x15, 0x02, 0x24, + 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, + 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xed, 0x00, 0xe0, 0x00, 0x20, 0x00, 0x52, + 0x80, 0xe8, 0xf1, 0x1f, 0x80, 0x0b, 0x02, 0x24, 0x2d, 0xe9, 0xf0, 0x4f, + 0x12, 0xf0, 0x1f, 0x04, 0x87, 0xb0, 0x82, 0x46, 0x0f, 0x46, 0x16, 0x46, + 0x99, 0x46, 0x40, 0xf0, 0x26, 0x81, 0x00, 0x29, 0x00, 0xf0, 0x23, 0x81, + 0xf2, 0xf7, 0x34, 0xfa, 0x09, 0xeb, 0x06, 0x03, 0x00, 0xf1, 0x00, 0x60, + 0x83, 0x42, 0x00, 0xf2, 0x1a, 0x81, 0x8e, 0x48, 0xdf, 0xf8, 0x50, 0xb2, + 0xff, 0xf7, 0x94, 0xfc, 0xfb, 0xf7, 0x42, 0xfb, 0xb9, 0xf1, 0x00, 0x0f, + 0x00, 0xf0, 0x06, 0x81, 0x00, 0x2c, 0x40, 0xf0, 0x01, 0x81, 0x30, 0x46, + 0xf2, 0xf7, 0xfc, 0xf9, 0xb6, 0xfb, 0xf0, 0xf5, 0x00, 0xfb, 0x15, 0x65, + 0x45, 0x1b, 0x4d, 0x45, 0x28, 0xbf, 0x4d, 0x46, 0xbb, 0x07, 0x01, 0xd1, + 0x1f, 0x2d, 0x4b, 0xd8, 0x20, 0x2d, 0xa8, 0x46, 0x39, 0x46, 0xda, 0xf8, + 0x04, 0x00, 0x28, 0xbf, 0x4f, 0xf0, 0x20, 0x08, 0x42, 0x46, 0x0b, 0xf0, + 0x6b, 0xfb, 0x1f, 0x2d, 0x07, 0xd8, 0xda, 0xf8, 0x04, 0x00, 0xc8, 0xf1, + 0x20, 0x02, 0xff, 0x21, 0x40, 0x44, 0x0b, 0xf0, 0x6f, 0xfb, 0xda, 0xf8, + 0x04, 0x30, 0x20, 0x25, 0x03, 0x93, 0x10, 0x23, 0x02, 0x93, 0xfe, 0xf7, + 0x55, 0xfc, 0xfe, 0xf7, 0x2f, 0xfc, 0x71, 0x4b, 0x19, 0x88, 0x4f, 0xf6, + 0xfd, 0x73, 0x4a, 0x1e, 0x92, 0xb2, 0x9a, 0x42, 0x97, 0xbf, 0x6e, 0x4b, + 0x4f, 0xf0, 0x02, 0x63, 0x03, 0xea, 0x81, 0x23, 0x03, 0xf1, 0x00, 0x63, + 0x9e, 0x42, 0x10, 0xd2, 0xb6, 0xf1, 0x00, 0x6f, 0x0d, 0xd3, 0x69, 0x4c, + 0x69, 0x4b, 0xd4, 0xf8, 0x88, 0x20, 0x9a, 0x42, 0xfb, 0xd1, 0xf9, 0xf7, + 0x0b, 0xf8, 0x00, 0x28, 0x00, 0xf0, 0xac, 0x80, 0x4f, 0xf4, 0x40, 0x73, + 0xa3, 0x60, 0xfe, 0xf7, 0xf9, 0xfb, 0xfe, 0xf7, 0x1b, 0xfc, 0x02, 0x9b, + 0x01, 0x3b, 0x02, 0x93, 0xd1, 0xd1, 0x4f, 0xf0, 0xff, 0x34, 0x87, 0xe0, + 0x25, 0xf0, 0x1f, 0x05, 0x03, 0x97, 0xa8, 0x46, 0xc7, 0xe7, 0x01, 0x2b, + 0x00, 0xf0, 0x9b, 0x80, 0x02, 0xf1, 0x78, 0x40, 0x01, 0x23, 0xb0, 0xf5, + 0x80, 0x1f, 0x8b, 0xf8, 0x14, 0x30, 0x06, 0xd3, 0xa2, 0xf1, 0x01, 0x63, + 0xb3, 0xf5, 0x80, 0x1f, 0x80, 0xf0, 0x85, 0x80, 0x02, 0x23, 0x00, 0x20, + 0x05, 0x92, 0x04, 0x93, 0xcb, 0xf8, 0x18, 0x00, 0x18, 0x46, 0xf4, 0xf7, + 0x6b, 0xfa, 0x05, 0x9a, 0x20, 0xbb, 0x04, 0x9b, 0x4d, 0x48, 0x01, 0x2b, + 0x67, 0xd1, 0xc1, 0x68, 0x41, 0xf0, 0x02, 0x01, 0xc1, 0x60, 0xbf, 0xf3, + 0x6f, 0x8f, 0xbf, 0xf3, 0x4f, 0x8f, 0x00, 0x20, 0x01, 0x99, 0x09, 0x58, + 0x11, 0x50, 0x04, 0x30, 0x20, 0x28, 0xf9, 0xd1, 0x05, 0x92, 0xbf, 0xf3, + 0x6f, 0x8f, 0xbf, 0xf3, 0x4f, 0x8f, 0x18, 0x46, 0x04, 0x93, 0xf4, 0xf7, + 0x4d, 0xfa, 0x04, 0x9b, 0x05, 0x9a, 0x01, 0x2b, 0x3e, 0x4b, 0x51, 0xd1, + 0xd9, 0x68, 0x21, 0xf0, 0x02, 0x01, 0xd9, 0x60, 0x00, 0x23, 0x8b, 0xf8, + 0x14, 0x30, 0x00, 0x28, 0x4f, 0xd1, 0x01, 0x9b, 0x20, 0x32, 0x20, 0x33, + 0x01, 0x93, 0x9b, 0xf8, 0x14, 0x30, 0x70, 0x19, 0x82, 0x42, 0x03, 0xd2, + 0x00, 0x2c, 0xae, 0xd0, 0x4f, 0xf0, 0xff, 0x34, 0x00, 0x2d, 0x11, 0xdd, + 0x06, 0xf0, 0x1f, 0x03, 0x2b, 0x44, 0xbf, 0xf3, 0x4f, 0x8f, 0x30, 0x48, + 0x32, 0x46, 0x33, 0x44, 0xc0, 0xf8, 0x70, 0x22, 0x20, 0x32, 0x99, 0x1a, + 0x00, 0x29, 0xf9, 0xdc, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, + 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x27, 0x4b, 0x00, 0x22, + 0xc3, 0xf8, 0x50, 0x22, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, + 0xf8, 0xf7, 0x68, 0xff, 0x00, 0x28, 0x7f, 0xf4, 0x78, 0xaf, 0x1e, 0x4b, + 0x4f, 0xf4, 0x40, 0x72, 0x9a, 0x60, 0x00, 0x2c, 0x7f, 0xf4, 0x71, 0xaf, + 0xfe, 0xf7, 0x6a, 0xfb, 0xfe, 0xf7, 0x8c, 0xfb, 0xa9, 0xeb, 0x08, 0x09, + 0x46, 0x44, 0x47, 0x44, 0x10, 0xe7, 0xd0, 0xf8, 0x0c, 0x11, 0x41, 0xf0, + 0x02, 0x01, 0xc0, 0xf8, 0x0c, 0x11, 0x94, 0xe7, 0xd3, 0xf8, 0x0c, 0x11, + 0x21, 0xf0, 0x02, 0x01, 0xc3, 0xf8, 0x0c, 0x11, 0xaa, 0xe7, 0x4f, 0xf0, + 0xff, 0x34, 0xb0, 0xe7, 0x03, 0x9b, 0x04, 0x46, 0x32, 0x46, 0x01, 0x93, + 0xab, 0xe7, 0x4f, 0xf0, 0xff, 0x34, 0xab, 0xe7, 0x4f, 0xf0, 0xff, 0x34, + 0x05, 0x48, 0xff, 0xf7, 0x85, 0xfb, 0xfb, 0xf7, 0x13, 0xfa, 0x20, 0x46, + 0x07, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x4f, 0xf0, 0xff, 0x34, 0xf8, 0xe7, + 0x58, 0x15, 0x02, 0x24, 0x80, 0xe8, 0xf1, 0x1f, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, 0x00, 0x20, 0x00, 0x52, - 0x02, 0x4b, 0x0a, 0x46, 0x00, 0x21, 0x1b, 0x68, 0x18, 0x47, 0x00, 0xbf, - 0x14, 0x01, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x4f, 0x00, 0xf1, 0x08, 0x03, - 0xd3, 0xb0, 0x04, 0x93, 0x4a, 0xab, 0x05, 0x93, 0x00, 0xf1, 0x28, 0x03, - 0x06, 0x93, 0xdd, 0xe9, 0x04, 0x32, 0x53, 0xf8, 0x04, 0x0b, 0x42, 0xf8, - 0x04, 0x0b, 0x06, 0x98, 0x98, 0x42, 0xf8, 0xd1, 0x0a, 0xaa, 0x01, 0xf1, - 0x40, 0x00, 0x4b, 0x78, 0x04, 0x31, 0x11, 0xf8, 0x04, 0x4c, 0x1b, 0x04, - 0x43, 0xea, 0x04, 0x63, 0x11, 0xf8, 0x01, 0x4c, 0x23, 0x43, 0x11, 0xf8, - 0x02, 0x4c, 0x88, 0x42, 0x43, 0xea, 0x04, 0x23, 0x42, 0xf8, 0x04, 0x3b, - 0xed, 0xd1, 0x50, 0x9b, 0x0d, 0xf1, 0x20, 0x0b, 0xa2, 0x48, 0x00, 0x93, - 0xde, 0x46, 0xdd, 0xf8, 0x44, 0xc1, 0x81, 0x46, 0xdd, 0xf8, 0x38, 0xa1, - 0x4f, 0x9e, 0x01, 0x90, 0xdd, 0xe9, 0x4a, 0x72, 0xdd, 0xe9, 0x4c, 0x31, - 0x4f, 0xea, 0xfa, 0x25, 0xde, 0xf8, 0x08, 0x40, 0xd9, 0xf8, 0x00, 0x00, - 0x0e, 0xf1, 0x20, 0x0e, 0x85, 0xea, 0xba, 0x15, 0x09, 0xf1, 0x20, 0x09, - 0x20, 0x44, 0x00, 0x9c, 0x85, 0xea, 0x7a, 0x65, 0x05, 0x44, 0x00, 0x98, - 0x70, 0x40, 0x00, 0xea, 0x0a, 0x00, 0x60, 0x40, 0x47, 0xea, 0x02, 0x04, - 0x05, 0x44, 0x4f, 0xea, 0x77, 0x30, 0x1c, 0x40, 0xac, 0x44, 0x80, 0xea, - 0xb7, 0x00, 0x07, 0xea, 0x02, 0x05, 0x80, 0xea, 0xb7, 0x50, 0x61, 0x44, - 0x2c, 0x43, 0x59, 0xf8, 0x1c, 0x5c, 0x04, 0x44, 0x5e, 0xf8, 0x14, 0x0c, - 0xa4, 0x44, 0x05, 0x44, 0x8a, 0xea, 0x06, 0x04, 0x00, 0x98, 0x0c, 0xea, - 0x07, 0x08, 0x05, 0x44, 0x0c, 0x40, 0x4f, 0xea, 0xf1, 0x20, 0x74, 0x40, - 0x80, 0xea, 0xb1, 0x10, 0x25, 0x44, 0x4c, 0xea, 0x07, 0x04, 0x80, 0xea, - 0x71, 0x60, 0x14, 0x40, 0x28, 0x44, 0x4f, 0xea, 0x7c, 0x35, 0x44, 0xea, - 0x08, 0x04, 0x85, 0xea, 0xbc, 0x05, 0x03, 0x44, 0x85, 0xea, 0xbc, 0x55, - 0x25, 0x44, 0x59, 0xf8, 0x18, 0x4c, 0x05, 0x44, 0x5e, 0xf8, 0x10, 0x0c, - 0x04, 0x44, 0x4c, 0xea, 0x05, 0x00, 0x26, 0x44, 0x81, 0xea, 0x0a, 0x04, - 0x38, 0x40, 0x1c, 0x40, 0x84, 0xea, 0x0a, 0x08, 0x06, 0xeb, 0x08, 0x04, - 0x4f, 0xea, 0xf3, 0x26, 0x0c, 0xea, 0x05, 0x08, 0x86, 0xea, 0xb3, 0x16, - 0x40, 0xea, 0x08, 0x00, 0x86, 0xea, 0x73, 0x66, 0x26, 0x44, 0x4f, 0xea, - 0x75, 0x34, 0x84, 0xea, 0xb5, 0x04, 0x32, 0x44, 0x84, 0xea, 0xb5, 0x54, - 0x04, 0x44, 0x59, 0xf8, 0x14, 0x0c, 0x34, 0x44, 0x5e, 0xf8, 0x0c, 0x6c, - 0x30, 0x44, 0x45, 0xea, 0x04, 0x06, 0x82, 0x44, 0x81, 0xea, 0x03, 0x00, - 0x06, 0xea, 0x0c, 0x06, 0x10, 0x40, 0x80, 0xea, 0x01, 0x08, 0x0a, 0xeb, - 0x08, 0x00, 0x4f, 0xea, 0xf2, 0x2a, 0x8a, 0xea, 0xb2, 0x1a, 0x8a, 0xea, - 0x72, 0x6a, 0x82, 0x44, 0x4f, 0xea, 0x74, 0x30, 0x0a, 0xeb, 0x07, 0x08, - 0x80, 0xea, 0xb4, 0x00, 0x05, 0xea, 0x04, 0x07, 0x80, 0xea, 0xb4, 0x50, - 0x3e, 0x43, 0x5e, 0xf8, 0x08, 0x7c, 0x30, 0x44, 0x59, 0xf8, 0x10, 0x6c, - 0x50, 0x44, 0x3e, 0x44, 0x83, 0xea, 0x02, 0x0a, 0x31, 0x44, 0x4f, 0xea, - 0xf8, 0x26, 0x0a, 0xea, 0x08, 0x0a, 0x44, 0xea, 0x00, 0x07, 0x86, 0xea, - 0xb8, 0x16, 0x8a, 0xea, 0x03, 0x0a, 0x2f, 0x40, 0x86, 0xea, 0x78, 0x66, - 0x51, 0x44, 0x04, 0xea, 0x00, 0x0a, 0x0e, 0x44, 0x4f, 0xea, 0x70, 0x31, - 0x47, 0xea, 0x0a, 0x07, 0x82, 0xea, 0x08, 0x0a, 0x81, 0xea, 0xb0, 0x01, - 0xb4, 0x44, 0x81, 0xea, 0xb0, 0x51, 0x0a, 0xea, 0x0c, 0x0a, 0x39, 0x44, - 0x5e, 0xf8, 0x04, 0x7c, 0x8a, 0xea, 0x02, 0x0a, 0x31, 0x44, 0x59, 0xf8, - 0x0c, 0x6c, 0x3e, 0x44, 0x00, 0xea, 0x01, 0x07, 0x33, 0x44, 0x4f, 0xea, - 0xfc, 0x26, 0x86, 0xea, 0xbc, 0x16, 0x53, 0x44, 0x86, 0xea, 0x7c, 0x66, - 0x1e, 0x44, 0xab, 0x19, 0x40, 0xea, 0x01, 0x05, 0x00, 0x93, 0x4f, 0xea, - 0x71, 0x33, 0x25, 0x40, 0x83, 0xea, 0xb1, 0x03, 0x3d, 0x43, 0x83, 0xea, - 0xb1, 0x53, 0x2b, 0x44, 0x59, 0xf8, 0x08, 0x5c, 0x33, 0x44, 0xde, 0xf8, - 0x00, 0x60, 0x35, 0x44, 0x00, 0x9e, 0x15, 0x44, 0x88, 0xea, 0x0c, 0x02, - 0x32, 0x40, 0x82, 0xea, 0x08, 0x07, 0xea, 0x19, 0x4f, 0xea, 0xf6, 0x25, - 0x01, 0xea, 0x03, 0x07, 0x85, 0xea, 0xb6, 0x15, 0x85, 0xea, 0x76, 0x65, - 0x15, 0x44, 0x4f, 0xea, 0x73, 0x32, 0x66, 0x19, 0x41, 0xea, 0x03, 0x04, - 0x82, 0xea, 0xb3, 0x02, 0x04, 0x40, 0x82, 0xea, 0xb3, 0x52, 0x3c, 0x43, - 0x22, 0x44, 0x59, 0xf8, 0x04, 0x4c, 0x2a, 0x44, 0xde, 0xf8, 0x04, 0x50, - 0x2c, 0x44, 0x4f, 0xea, 0x72, 0x35, 0xa0, 0x44, 0x00, 0x9c, 0x85, 0xea, - 0xb2, 0x05, 0x8c, 0xea, 0x04, 0x04, 0x34, 0x40, 0x84, 0xea, 0x0c, 0x07, - 0x08, 0xeb, 0x07, 0x04, 0x4f, 0xea, 0xf6, 0x28, 0x43, 0xea, 0x02, 0x07, - 0x88, 0xea, 0xb6, 0x18, 0x0f, 0x40, 0x88, 0xea, 0x76, 0x68, 0x44, 0x44, - 0x85, 0xea, 0xb2, 0x58, 0x03, 0xea, 0x02, 0x05, 0x00, 0xeb, 0x04, 0x0a, - 0x18, 0xa8, 0x3d, 0x43, 0x70, 0x45, 0x45, 0x44, 0x04, 0xeb, 0x05, 0x07, - 0x7f, 0xf4, 0xd8, 0xae, 0x00, 0x98, 0xcd, 0xf8, 0x44, 0xc1, 0xcd, 0xf8, - 0x38, 0xa1, 0xcd, 0xe9, 0x4f, 0x60, 0x38, 0xa8, 0xcd, 0xe9, 0x4a, 0x72, - 0xcd, 0xe9, 0x4c, 0x31, 0xcd, 0xe9, 0x08, 0x45, 0x07, 0x90, 0x01, 0xe0, - 0xc8, 0xe1, 0x01, 0x08, 0xdb, 0xf8, 0x40, 0x00, 0x0b, 0xf1, 0x20, 0x0b, - 0x5b, 0xf8, 0x14, 0x5c, 0x4f, 0xea, 0xf0, 0x4e, 0x5b, 0xf8, 0x18, 0x4c, - 0x4f, 0xea, 0xb5, 0x48, 0x8e, 0xea, 0x70, 0x4e, 0x88, 0xea, 0xf5, 0x18, - 0x8e, 0xea, 0x90, 0x2e, 0xdb, 0xf8, 0x0c, 0x00, 0x88, 0xea, 0xd5, 0x08, - 0x20, 0x44, 0x4f, 0xea, 0xfa, 0x24, 0x86, 0x44, 0x84, 0xea, 0xba, 0x14, - 0x0e, 0xeb, 0x08, 0x00, 0x84, 0xea, 0x7a, 0x6e, 0x00, 0x9c, 0x03, 0x90, - 0x74, 0x40, 0x00, 0x98, 0x04, 0xea, 0x0a, 0x04, 0x44, 0x40, 0x01, 0x98, - 0x74, 0x44, 0x00, 0x6c, 0x8a, 0xea, 0x06, 0x0e, 0x20, 0x44, 0x03, 0x9c, - 0x20, 0x44, 0xcb, 0xf8, 0x28, 0x40, 0x07, 0xea, 0x02, 0x04, 0x84, 0x44, - 0x47, 0xea, 0x02, 0x00, 0x01, 0xeb, 0x0c, 0x08, 0x4f, 0xea, 0x77, 0x31, - 0x18, 0x40, 0x81, 0xea, 0xb7, 0x01, 0x0e, 0xea, 0x08, 0x0e, 0x20, 0x43, - 0x5b, 0xf8, 0x10, 0x4c, 0x81, 0xea, 0xb7, 0x51, 0x8e, 0xea, 0x06, 0x0e, - 0x8a, 0xea, 0x08, 0x09, 0x08, 0x44, 0xdb, 0xf8, 0x24, 0x10, 0x84, 0x44, - 0x4f, 0xea, 0xf1, 0x40, 0x80, 0xea, 0x71, 0x40, 0x80, 0xea, 0x91, 0x20, - 0xdb, 0xf8, 0x10, 0x10, 0x29, 0x44, 0x4f, 0xea, 0xb4, 0x45, 0x85, 0xea, - 0xf4, 0x15, 0x01, 0x44, 0x01, 0x98, 0x85, 0xea, 0xd4, 0x05, 0x40, 0x6c, - 0x29, 0x44, 0x00, 0x9d, 0x28, 0x44, 0x4f, 0xea, 0xf8, 0x25, 0xcb, 0xf8, - 0x2c, 0x10, 0x08, 0x44, 0x85, 0xea, 0xb8, 0x15, 0x86, 0x44, 0x85, 0xea, - 0x78, 0x65, 0x05, 0xeb, 0x0e, 0x00, 0x4f, 0xea, 0x7c, 0x35, 0x07, 0xea, - 0x0c, 0x0e, 0x03, 0x44, 0x85, 0xea, 0xbc, 0x05, 0x00, 0x93, 0x47, 0xea, - 0x0c, 0x03, 0x85, 0xea, 0xbc, 0x55, 0x13, 0x40, 0x43, 0xea, 0x0e, 0x03, - 0x5b, 0xf8, 0x0c, 0xec, 0x1d, 0x44, 0x03, 0x9b, 0x05, 0x44, 0x4f, 0xea, - 0xf3, 0x40, 0x80, 0xea, 0x73, 0x40, 0x80, 0xea, 0x93, 0x20, 0xdb, 0xf8, - 0x14, 0x30, 0x23, 0x44, 0x4f, 0xea, 0xbe, 0x44, 0x03, 0x44, 0x00, 0x98, - 0x84, 0xea, 0xfe, 0x14, 0x09, 0xea, 0x00, 0x09, 0x01, 0x98, 0x84, 0xea, - 0xde, 0x04, 0x80, 0x6c, 0x89, 0xea, 0x0a, 0x09, 0x23, 0x44, 0x30, 0x44, - 0x4f, 0xea, 0x75, 0x36, 0xcb, 0xf8, 0x30, 0x30, 0x18, 0x44, 0x86, 0xea, - 0xb5, 0x06, 0x81, 0x44, 0x00, 0x98, 0x86, 0xea, 0xb5, 0x56, 0x4f, 0xea, - 0xf0, 0x24, 0x84, 0xea, 0xb0, 0x14, 0x84, 0xea, 0x70, 0x64, 0x04, 0xeb, - 0x09, 0x00, 0x4c, 0xea, 0x05, 0x04, 0x02, 0x44, 0x3c, 0x40, 0x02, 0x92, - 0x0c, 0xea, 0x05, 0x02, 0x14, 0x43, 0x5b, 0xf8, 0x08, 0x2c, 0x34, 0x44, - 0x04, 0x44, 0x4f, 0xea, 0xf1, 0x40, 0x80, 0xea, 0x71, 0x40, 0x80, 0xea, - 0x91, 0x21, 0xdb, 0xf8, 0x18, 0x00, 0x86, 0x44, 0x02, 0x98, 0x71, 0x44, - 0x4f, 0xea, 0xb2, 0x4e, 0x8e, 0xea, 0xf2, 0x1e, 0x8e, 0xea, 0xd2, 0x0e, - 0x8e, 0x44, 0x00, 0x99, 0x88, 0xea, 0x01, 0x01, 0x01, 0x40, 0x01, 0x98, - 0xcb, 0xf8, 0x34, 0xe0, 0xc6, 0x6c, 0x81, 0xea, 0x08, 0x01, 0x02, 0x98, - 0x56, 0x44, 0x4f, 0xea, 0x74, 0x3a, 0x4f, 0xea, 0xf0, 0x20, 0x76, 0x44, - 0x8a, 0xea, 0xb4, 0x0a, 0x31, 0x44, 0x02, 0x9e, 0x8a, 0xea, 0xb4, 0x5a, - 0x80, 0xea, 0xb6, 0x10, 0x80, 0xea, 0x76, 0x60, 0x46, 0x18, 0x45, 0xea, - 0x04, 0x00, 0x05, 0xea, 0x04, 0x01, 0x00, 0xea, 0x0c, 0x00, 0x07, 0xeb, - 0x06, 0x09, 0x08, 0x43, 0x4f, 0xea, 0xf3, 0x41, 0x81, 0xea, 0x73, 0x41, - 0x50, 0x44, 0x81, 0xea, 0x93, 0x23, 0xdb, 0xf8, 0x1c, 0x10, 0x30, 0x44, - 0x5b, 0xf8, 0x04, 0x6c, 0x0a, 0x44, 0x02, 0x99, 0x13, 0x44, 0x4f, 0xea, - 0xb6, 0x42, 0x82, 0xea, 0xf6, 0x12, 0x82, 0xea, 0xd6, 0x02, 0x1a, 0x44, - 0x00, 0x9b, 0x83, 0xea, 0x01, 0x07, 0x4f, 0xea, 0xf9, 0x21, 0xcb, 0xf8, - 0x38, 0x20, 0x07, 0xea, 0x09, 0x07, 0x81, 0xea, 0xb9, 0x11, 0x5f, 0x40, - 0x01, 0x9b, 0x81, 0xea, 0x79, 0x61, 0x1b, 0x6d, 0x13, 0x44, 0x43, 0x44, - 0x04, 0xea, 0x00, 0x08, 0x1f, 0x44, 0xcb, 0x19, 0x44, 0xea, 0x00, 0x07, - 0x4f, 0xea, 0x70, 0x31, 0x2f, 0x40, 0x9c, 0x44, 0x81, 0xea, 0xb0, 0x01, - 0x47, 0xea, 0x08, 0x07, 0xdb, 0xf8, 0x00, 0x80, 0x81, 0xea, 0xb0, 0x51, - 0x39, 0x44, 0x4f, 0xea, 0xfe, 0x47, 0x19, 0x44, 0x87, 0xea, 0x7e, 0x47, - 0xdb, 0xf8, 0x20, 0x30, 0x87, 0xea, 0x9e, 0x2e, 0x9f, 0x19, 0x4f, 0xea, - 0xb8, 0x43, 0x00, 0x9e, 0x83, 0xea, 0xf8, 0x13, 0x77, 0x44, 0x83, 0xea, - 0xd8, 0x03, 0x1f, 0x44, 0x02, 0x9b, 0x83, 0xea, 0x09, 0x0e, 0xcb, 0xf8, - 0x3c, 0x70, 0x0e, 0xea, 0x0c, 0x0e, 0x8e, 0xea, 0x03, 0x0e, 0x01, 0x9b, - 0x5b, 0x6d, 0x3b, 0x44, 0x33, 0x44, 0x9e, 0x44, 0x4f, 0xea, 0xfc, 0x23, - 0x83, 0xea, 0xbc, 0x13, 0x83, 0xea, 0x7c, 0x63, 0x03, 0xeb, 0x0e, 0x06, - 0x00, 0xea, 0x01, 0x0e, 0xab, 0x19, 0x40, 0xea, 0x01, 0x05, 0x00, 0x93, - 0x4f, 0xea, 0x71, 0x33, 0x25, 0x40, 0x83, 0xea, 0xb1, 0x03, 0x45, 0xea, - 0x0e, 0x05, 0xdb, 0xf8, 0x04, 0xe0, 0x83, 0xea, 0xb1, 0x53, 0x2b, 0x44, - 0xdb, 0xf8, 0x24, 0x50, 0x33, 0x44, 0x4f, 0xea, 0xf2, 0x46, 0x86, 0xea, - 0x72, 0x46, 0x86, 0xea, 0x92, 0x22, 0x05, 0xeb, 0x08, 0x06, 0x89, 0xea, - 0x0c, 0x08, 0x16, 0x44, 0x4f, 0xea, 0xbe, 0x42, 0x82, 0xea, 0xfe, 0x12, - 0x82, 0xea, 0xde, 0x02, 0x16, 0x44, 0x00, 0x9a, 0x08, 0xea, 0x02, 0x08, - 0x01, 0x9a, 0xcb, 0xf8, 0x40, 0x60, 0x95, 0x6d, 0x88, 0xea, 0x09, 0x08, - 0x02, 0x9a, 0x35, 0x44, 0x00, 0x9e, 0x15, 0x44, 0x00, 0x9a, 0x4f, 0xea, - 0xf2, 0x22, 0x45, 0x44, 0x01, 0xea, 0x03, 0x08, 0x82, 0xea, 0xb6, 0x12, - 0x82, 0xea, 0x76, 0x62, 0x15, 0x44, 0x4f, 0xea, 0x73, 0x32, 0x66, 0x19, + 0x00, 0xed, 0x00, 0xe0, 0x80, 0x0b, 0x02, 0x24, 0x10, 0xb5, 0x04, 0x46, + 0x0b, 0x48, 0xff, 0xf7, 0x67, 0xfb, 0xfb, 0xf7, 0x15, 0xfa, 0xfe, 0xf7, + 0x59, 0xfb, 0xfe, 0xf7, 0x33, 0xfb, 0xfe, 0xf7, 0x1f, 0xfb, 0xfe, 0xf7, + 0x41, 0xfb, 0x60, 0x68, 0x08, 0xb1, 0x0b, 0xf0, 0xfb, 0xf9, 0x03, 0x48, + 0xff, 0xf7, 0x56, 0xfb, 0xfb, 0xf7, 0xe4, 0xf9, 0x00, 0x20, 0x10, 0xbd, + 0x58, 0x15, 0x02, 0x24, 0x10, 0xb5, 0x04, 0x46, 0x12, 0x48, 0xff, 0xf7, + 0x4b, 0xfb, 0xfb, 0xf7, 0xf9, 0xf9, 0xfe, 0xf7, 0x3d, 0xfb, 0xfe, 0xf7, + 0x17, 0xfb, 0x0f, 0x4b, 0x0f, 0x4a, 0xd3, 0xf8, 0x88, 0x10, 0x91, 0x42, + 0xfb, 0xd1, 0x4f, 0xf4, 0x8e, 0x01, 0x0d, 0x4a, 0x51, 0x61, 0x4f, 0xf4, + 0x40, 0x72, 0x9a, 0x60, 0xfe, 0xf7, 0xf6, 0xfa, 0xfe, 0xf7, 0x18, 0xfb, + 0x20, 0x20, 0xfe, 0xf7, 0x67, 0xfa, 0x60, 0x60, 0x03, 0x48, 0xff, 0xf7, + 0x2d, 0xfb, 0xfb, 0xf7, 0xbb, 0xf9, 0x00, 0x20, 0x10, 0xbd, 0x00, 0xbf, + 0x58, 0x15, 0x02, 0x24, 0x00, 0x64, 0x02, 0x58, 0x00, 0x03, 0x00, 0x80, + 0x00, 0x20, 0x00, 0x52, 0x02, 0x4b, 0x0a, 0x46, 0x00, 0x21, 0x1b, 0x68, + 0x18, 0x47, 0x00, 0xbf, 0x14, 0x01, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x4f, + 0x00, 0xf1, 0x08, 0x03, 0xd3, 0xb0, 0x04, 0x93, 0x4a, 0xab, 0x05, 0x93, + 0x00, 0xf1, 0x28, 0x03, 0x06, 0x93, 0xdd, 0xe9, 0x04, 0x32, 0x53, 0xf8, + 0x04, 0x0b, 0x42, 0xf8, 0x04, 0x0b, 0x06, 0x98, 0x98, 0x42, 0xf8, 0xd1, + 0x0a, 0xaa, 0x01, 0xf1, 0x40, 0x00, 0x4b, 0x78, 0x04, 0x31, 0x11, 0xf8, + 0x04, 0x4c, 0x1b, 0x04, 0x43, 0xea, 0x04, 0x63, 0x11, 0xf8, 0x01, 0x4c, + 0x23, 0x43, 0x11, 0xf8, 0x02, 0x4c, 0x88, 0x42, 0x43, 0xea, 0x04, 0x23, + 0x42, 0xf8, 0x04, 0x3b, 0xed, 0xd1, 0x50, 0x9b, 0x0d, 0xf1, 0x20, 0x0b, + 0xa2, 0x48, 0x00, 0x93, 0xde, 0x46, 0xdd, 0xf8, 0x44, 0xc1, 0x81, 0x46, + 0xdd, 0xf8, 0x38, 0xa1, 0x4f, 0x9e, 0x01, 0x90, 0xdd, 0xe9, 0x4a, 0x72, + 0xdd, 0xe9, 0x4c, 0x31, 0x4f, 0xea, 0xfa, 0x25, 0xde, 0xf8, 0x08, 0x40, + 0xd9, 0xf8, 0x00, 0x00, 0x0e, 0xf1, 0x20, 0x0e, 0x85, 0xea, 0xba, 0x15, + 0x09, 0xf1, 0x20, 0x09, 0x20, 0x44, 0x00, 0x9c, 0x85, 0xea, 0x7a, 0x65, + 0x05, 0x44, 0x00, 0x98, 0x70, 0x40, 0x00, 0xea, 0x0a, 0x00, 0x60, 0x40, + 0x47, 0xea, 0x02, 0x04, 0x05, 0x44, 0x4f, 0xea, 0x77, 0x30, 0x1c, 0x40, + 0xac, 0x44, 0x80, 0xea, 0xb7, 0x00, 0x07, 0xea, 0x02, 0x05, 0x80, 0xea, + 0xb7, 0x50, 0x61, 0x44, 0x2c, 0x43, 0x59, 0xf8, 0x1c, 0x5c, 0x04, 0x44, + 0x5e, 0xf8, 0x14, 0x0c, 0xa4, 0x44, 0x05, 0x44, 0x8a, 0xea, 0x06, 0x04, + 0x00, 0x98, 0x0c, 0xea, 0x07, 0x08, 0x05, 0x44, 0x0c, 0x40, 0x4f, 0xea, + 0xf1, 0x20, 0x74, 0x40, 0x80, 0xea, 0xb1, 0x10, 0x25, 0x44, 0x4c, 0xea, + 0x07, 0x04, 0x80, 0xea, 0x71, 0x60, 0x14, 0x40, 0x28, 0x44, 0x4f, 0xea, + 0x7c, 0x35, 0x44, 0xea, 0x08, 0x04, 0x85, 0xea, 0xbc, 0x05, 0x03, 0x44, + 0x85, 0xea, 0xbc, 0x55, 0x25, 0x44, 0x59, 0xf8, 0x18, 0x4c, 0x05, 0x44, + 0x5e, 0xf8, 0x10, 0x0c, 0x04, 0x44, 0x4c, 0xea, 0x05, 0x00, 0x26, 0x44, + 0x81, 0xea, 0x0a, 0x04, 0x38, 0x40, 0x1c, 0x40, 0x84, 0xea, 0x0a, 0x08, + 0x06, 0xeb, 0x08, 0x04, 0x4f, 0xea, 0xf3, 0x26, 0x0c, 0xea, 0x05, 0x08, + 0x86, 0xea, 0xb3, 0x16, 0x40, 0xea, 0x08, 0x00, 0x86, 0xea, 0x73, 0x66, + 0x26, 0x44, 0x4f, 0xea, 0x75, 0x34, 0x84, 0xea, 0xb5, 0x04, 0x32, 0x44, + 0x84, 0xea, 0xb5, 0x54, 0x04, 0x44, 0x59, 0xf8, 0x14, 0x0c, 0x34, 0x44, + 0x5e, 0xf8, 0x0c, 0x6c, 0x30, 0x44, 0x45, 0xea, 0x04, 0x06, 0x82, 0x44, + 0x81, 0xea, 0x03, 0x00, 0x06, 0xea, 0x0c, 0x06, 0x10, 0x40, 0x80, 0xea, + 0x01, 0x08, 0x0a, 0xeb, 0x08, 0x00, 0x4f, 0xea, 0xf2, 0x2a, 0x8a, 0xea, + 0xb2, 0x1a, 0x8a, 0xea, 0x72, 0x6a, 0x82, 0x44, 0x4f, 0xea, 0x74, 0x30, + 0x0a, 0xeb, 0x07, 0x08, 0x80, 0xea, 0xb4, 0x00, 0x05, 0xea, 0x04, 0x07, + 0x80, 0xea, 0xb4, 0x50, 0x3e, 0x43, 0x5e, 0xf8, 0x08, 0x7c, 0x30, 0x44, + 0x59, 0xf8, 0x10, 0x6c, 0x50, 0x44, 0x3e, 0x44, 0x83, 0xea, 0x02, 0x0a, + 0x31, 0x44, 0x4f, 0xea, 0xf8, 0x26, 0x0a, 0xea, 0x08, 0x0a, 0x44, 0xea, + 0x00, 0x07, 0x86, 0xea, 0xb8, 0x16, 0x8a, 0xea, 0x03, 0x0a, 0x2f, 0x40, + 0x86, 0xea, 0x78, 0x66, 0x51, 0x44, 0x04, 0xea, 0x00, 0x0a, 0x0e, 0x44, + 0x4f, 0xea, 0x70, 0x31, 0x47, 0xea, 0x0a, 0x07, 0x82, 0xea, 0x08, 0x0a, + 0x81, 0xea, 0xb0, 0x01, 0xb4, 0x44, 0x81, 0xea, 0xb0, 0x51, 0x0a, 0xea, + 0x0c, 0x0a, 0x39, 0x44, 0x5e, 0xf8, 0x04, 0x7c, 0x8a, 0xea, 0x02, 0x0a, + 0x31, 0x44, 0x59, 0xf8, 0x0c, 0x6c, 0x3e, 0x44, 0x00, 0xea, 0x01, 0x07, + 0x33, 0x44, 0x4f, 0xea, 0xfc, 0x26, 0x86, 0xea, 0xbc, 0x16, 0x53, 0x44, + 0x86, 0xea, 0x7c, 0x66, 0x1e, 0x44, 0xab, 0x19, 0x40, 0xea, 0x01, 0x05, + 0x00, 0x93, 0x4f, 0xea, 0x71, 0x33, 0x25, 0x40, 0x83, 0xea, 0xb1, 0x03, + 0x3d, 0x43, 0x83, 0xea, 0xb1, 0x53, 0x2b, 0x44, 0x59, 0xf8, 0x08, 0x5c, + 0x33, 0x44, 0xde, 0xf8, 0x00, 0x60, 0x35, 0x44, 0x00, 0x9e, 0x15, 0x44, + 0x88, 0xea, 0x0c, 0x02, 0x32, 0x40, 0x82, 0xea, 0x08, 0x07, 0xea, 0x19, + 0x4f, 0xea, 0xf6, 0x25, 0x01, 0xea, 0x03, 0x07, 0x85, 0xea, 0xb6, 0x15, + 0x85, 0xea, 0x76, 0x65, 0x15, 0x44, 0x4f, 0xea, 0x73, 0x32, 0x66, 0x19, 0x41, 0xea, 0x03, 0x04, 0x82, 0xea, 0xb3, 0x02, 0x04, 0x40, 0x82, 0xea, - 0xb3, 0x52, 0x44, 0xea, 0x08, 0x04, 0x22, 0x44, 0x4f, 0xea, 0xf7, 0x44, - 0x84, 0xea, 0x77, 0x44, 0x2a, 0x44, 0xdb, 0xf8, 0x08, 0x50, 0x84, 0xea, - 0x97, 0x27, 0x03, 0x9c, 0xa6, 0x44, 0x4f, 0xea, 0xb5, 0x44, 0x84, 0xea, - 0xf5, 0x14, 0x77, 0x44, 0x84, 0xea, 0xd5, 0x05, 0x00, 0x9c, 0x8c, 0xea, - 0x04, 0x0e, 0x01, 0x9c, 0x3d, 0x44, 0xe7, 0x6d, 0x0e, 0xea, 0x06, 0x0e, - 0x4f, 0xea, 0xf6, 0x24, 0xcb, 0xf8, 0x44, 0x50, 0x2f, 0x44, 0x8e, 0xea, - 0x0c, 0x0e, 0x84, 0xea, 0xb6, 0x14, 0x4f, 0x44, 0x4f, 0xea, 0x72, 0x35, - 0x84, 0xea, 0x76, 0x64, 0x77, 0x44, 0x85, 0xea, 0xb2, 0x05, 0x3c, 0x44, - 0x43, 0xea, 0x02, 0x07, 0x85, 0xea, 0xb2, 0x5e, 0x03, 0xea, 0x02, 0x05, - 0x00, 0xeb, 0x04, 0x0a, 0x01, 0x98, 0x0f, 0x40, 0x20, 0x30, 0x3d, 0x43, - 0x01, 0x90, 0x07, 0x98, 0x75, 0x44, 0x58, 0x45, 0x04, 0xeb, 0x05, 0x07, - 0x7f, 0xf4, 0x20, 0xae, 0x00, 0x98, 0xcd, 0xf8, 0x44, 0xc1, 0xcd, 0xf8, - 0x38, 0xa1, 0xcd, 0xe9, 0x4f, 0x60, 0xcd, 0xe9, 0x4a, 0x72, 0xcd, 0xe9, - 0x4c, 0x31, 0xcd, 0xe9, 0x08, 0x45, 0x04, 0x9b, 0x05, 0x99, 0x1b, 0x68, - 0x51, 0xf8, 0x04, 0x2b, 0x13, 0x44, 0x04, 0x9a, 0x05, 0x91, 0x42, 0xf8, - 0x04, 0x3b, 0x06, 0x9b, 0x04, 0x92, 0x93, 0x42, 0xf1, 0xd1, 0x08, 0xa8, - 0x4f, 0xf4, 0x94, 0x71, 0xff, 0xf7, 0x84, 0xfc, 0x00, 0x20, 0x53, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x2d, 0xe9, 0xf8, 0x43, 0x03, 0x68, 0x05, 0x46, - 0x0e, 0x46, 0x14, 0x46, 0x03, 0xf0, 0x3f, 0x07, 0x9b, 0x18, 0x03, 0x60, - 0x22, 0xbf, 0x43, 0x68, 0x01, 0x33, 0x43, 0x60, 0x9f, 0xb1, 0xc7, 0xf1, - 0x40, 0x09, 0x91, 0x45, 0x0f, 0xd8, 0x00, 0xf1, 0x28, 0x08, 0x4a, 0x46, - 0x08, 0xeb, 0x07, 0x00, 0x09, 0xf0, 0xc6, 0xff, 0x41, 0x46, 0x28, 0x46, - 0xff, 0xf7, 0x6a, 0xfc, 0xb0, 0xb9, 0x40, 0x3c, 0x4e, 0x44, 0x3c, 0x44, - 0x07, 0x46, 0x26, 0x44, 0x04, 0xe0, 0x28, 0x46, 0xff, 0xf7, 0x60, 0xfc, - 0x60, 0xb9, 0x40, 0x3c, 0x3f, 0x2c, 0xa6, 0xeb, 0x04, 0x01, 0xf6, 0xd8, - 0x44, 0xb1, 0x05, 0xf1, 0x28, 0x00, 0x22, 0x46, 0x38, 0x44, 0x09, 0xf0, - 0xab, 0xff, 0x00, 0x20, 0xbd, 0xe8, 0xf8, 0x83, 0x20, 0x46, 0xfb, 0xe7, - 0x10, 0xb4, 0x58, 0xb1, 0x04, 0x68, 0x4c, 0xb1, 0x24, 0x79, 0x05, 0x3c, - 0x01, 0x2c, 0x05, 0xd8, 0x42, 0xb1, 0x40, 0x68, 0x5d, 0xf8, 0x04, 0x4b, - 0xff, 0xf7, 0xb8, 0xbf, 0x02, 0x48, 0x5d, 0xf8, 0x04, 0x4b, 0x70, 0x47, - 0x10, 0x46, 0xfa, 0xe7, 0x00, 0xaf, 0xff, 0xff, 0x38, 0xb5, 0x03, 0x68, - 0x04, 0x46, 0x63, 0xb1, 0x85, 0x68, 0x55, 0xb1, 0xfd, 0xf7, 0xaa, 0xfa, - 0x40, 0xb9, 0x23, 0x68, 0x29, 0x46, 0x20, 0x46, 0x9a, 0x79, 0xbd, 0xe8, - 0x38, 0x40, 0xff, 0xf7, 0xd9, 0xbf, 0x01, 0x48, 0x38, 0xbd, 0x00, 0xbf, - 0x00, 0xaf, 0xff, 0xff, 0x03, 0x68, 0x03, 0xf0, 0x3f, 0x03, 0x5a, 0x1c, - 0x03, 0x44, 0x70, 0xb5, 0x38, 0x2a, 0x0d, 0x46, 0x00, 0xf1, 0x28, 0x06, - 0x4f, 0xf0, 0x80, 0x01, 0x04, 0x46, 0x83, 0xf8, 0x28, 0x10, 0x06, 0xeb, - 0x02, 0x00, 0x61, 0xd8, 0xc2, 0xf1, 0x38, 0x02, 0x00, 0x21, 0x09, 0xf0, - 0x71, 0xff, 0x20, 0x46, 0xd4, 0xe9, 0x00, 0x31, 0x5a, 0x0f, 0xdb, 0x00, - 0x42, 0xea, 0xc1, 0x02, 0x31, 0x46, 0x1b, 0xba, 0x12, 0xba, 0x63, 0x66, - 0x22, 0x66, 0xff, 0xf7, 0xfd, 0xfb, 0x00, 0x28, 0x4b, 0xd1, 0xe3, 0x7a, - 0x2b, 0x70, 0x63, 0x89, 0x6b, 0x70, 0xa3, 0x68, 0x1b, 0x0a, 0xab, 0x70, - 0xa3, 0x68, 0xeb, 0x70, 0xe3, 0x7b, 0x2b, 0x71, 0xe3, 0x89, 0x6b, 0x71, - 0xe3, 0x68, 0x1b, 0x0a, 0xab, 0x71, 0xe3, 0x68, 0xeb, 0x71, 0xe3, 0x7c, - 0x2b, 0x72, 0x63, 0x8a, 0x6b, 0x72, 0x23, 0x69, 0x1b, 0x0a, 0xab, 0x72, - 0x23, 0x69, 0xeb, 0x72, 0xe3, 0x7d, 0x2b, 0x73, 0xe3, 0x8a, 0x6b, 0x73, - 0x63, 0x69, 0x1b, 0x0a, 0xab, 0x73, 0x63, 0x69, 0xeb, 0x73, 0xe3, 0x7e, - 0x2b, 0x74, 0x63, 0x8b, 0x6b, 0x74, 0xa3, 0x69, 0x1b, 0x0a, 0xab, 0x74, - 0xa3, 0x69, 0xeb, 0x74, 0xe3, 0x7f, 0x2b, 0x75, 0xe3, 0x8b, 0x6b, 0x75, - 0xe3, 0x69, 0x1b, 0x0a, 0xab, 0x75, 0xe3, 0x69, 0xeb, 0x75, 0x94, 0xf8, - 0x23, 0x30, 0x2b, 0x76, 0x63, 0x8c, 0x6b, 0x76, 0x23, 0x6a, 0x1b, 0x0a, - 0xab, 0x76, 0x23, 0x6a, 0xeb, 0x76, 0xa3, 0x6e, 0x4b, 0xb9, 0x94, 0xf8, - 0x27, 0x30, 0x2b, 0x77, 0xe3, 0x8c, 0x6b, 0x77, 0x63, 0x6a, 0x1b, 0x0a, - 0xab, 0x77, 0x63, 0x6a, 0xeb, 0x77, 0x70, 0xbd, 0x00, 0x21, 0xc2, 0xf1, - 0x40, 0x02, 0x09, 0xf0, 0x0f, 0xff, 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, - 0xa5, 0xfb, 0x00, 0x28, 0xf3, 0xd1, 0x01, 0x46, 0x38, 0x22, 0x30, 0x46, - 0x91, 0xe7, 0x00, 0x00, 0x40, 0xb1, 0x03, 0x68, 0x33, 0xb1, 0x1b, 0x79, - 0x05, 0x3b, 0x01, 0x2b, 0x02, 0xd8, 0x40, 0x68, 0xff, 0xf7, 0x72, 0xbf, - 0x00, 0x48, 0x70, 0x47, 0x00, 0xaf, 0xff, 0xff, 0x42, 0xf2, 0x10, 0x73, - 0x99, 0x42, 0x2d, 0xe9, 0xf0, 0x41, 0x04, 0x46, 0x0d, 0x46, 0x03, 0xd9, - 0x6f, 0xf0, 0x0f, 0x00, 0xbd, 0xe8, 0xf0, 0x81, 0x46, 0x68, 0x8e, 0x42, - 0x1a, 0xd2, 0x04, 0x21, 0x28, 0x46, 0x0b, 0xf0, 0x87, 0xf9, 0x07, 0x46, - 0x00, 0x28, 0xf1, 0xd0, 0xd4, 0xf8, 0x08, 0x80, 0xb8, 0xf1, 0x00, 0x0f, - 0x0c, 0xd0, 0xb6, 0x00, 0x41, 0x46, 0x32, 0x46, 0x09, 0xf0, 0xc8, 0xfe, - 0x1e, 0xb1, 0x31, 0x46, 0x40, 0x46, 0xff, 0xf7, 0x63, 0xfb, 0xa0, 0x68, - 0x09, 0xf0, 0x66, 0xfe, 0xc4, 0xe9, 0x01, 0x57, 0x00, 0x20, 0xdd, 0xe7, - 0x42, 0xf2, 0x10, 0x73, 0x99, 0x42, 0x2d, 0xe9, 0xf0, 0x41, 0x05, 0x46, - 0x0c, 0x46, 0x03, 0xd9, 0x6f, 0xf0, 0x0f, 0x00, 0xbd, 0xe8, 0xf0, 0x81, - 0x46, 0x68, 0x8e, 0x42, 0x03, 0xd8, 0xbd, 0xe8, 0xf0, 0x41, 0xff, 0xf7, - 0xc1, 0xbf, 0x73, 0x1e, 0xfb, 0xb9, 0x01, 0x33, 0x04, 0x21, 0x9c, 0x42, - 0x38, 0xbf, 0x1c, 0x46, 0x20, 0x46, 0x0b, 0xf0, 0x51, 0xf9, 0x07, 0x46, - 0x00, 0x28, 0xe7, 0xd0, 0xd5, 0xf8, 0x08, 0x80, 0xb8, 0xf1, 0x00, 0x0f, - 0x0b, 0xd0, 0x41, 0x46, 0xa2, 0x00, 0x09, 0xf0, 0x93, 0xfe, 0xb1, 0x00, - 0x02, 0xd0, 0x40, 0x46, 0xff, 0xf7, 0x2e, 0xfb, 0xa8, 0x68, 0x09, 0xf0, - 0x31, 0xfe, 0x00, 0x20, 0xc5, 0xe9, 0x01, 0x47, 0xd4, 0xe7, 0xaa, 0x68, - 0x52, 0xf8, 0x23, 0x20, 0x00, 0x2a, 0xda, 0xd1, 0x01, 0x3b, 0xd7, 0xe7, - 0x03, 0x68, 0xf0, 0xb5, 0x04, 0x46, 0x89, 0xb0, 0x0d, 0x46, 0xf3, 0xb1, - 0x86, 0x68, 0xe6, 0xb1, 0x69, 0x46, 0x9f, 0x79, 0xff, 0xf7, 0x7e, 0xff, - 0xa8, 0xb9, 0x20, 0x46, 0xfd, 0xf7, 0x92, 0xf9, 0x88, 0xb9, 0x23, 0x68, - 0xf1, 0x19, 0x20, 0x46, 0x9a, 0x79, 0xff, 0xf7, 0xc3, 0xfe, 0x50, 0xb9, - 0x23, 0x68, 0x69, 0x46, 0x20, 0x46, 0x5a, 0x79, 0xff, 0xf7, 0xbc, 0xfe, - 0x18, 0xb9, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x67, 0xff, 0x09, 0xb0, - 0xf0, 0xbd, 0x01, 0x48, 0xfb, 0xe7, 0x00, 0xbf, 0x00, 0xaf, 0xff, 0xff, - 0x10, 0xb4, 0x04, 0x68, 0x2c, 0xb1, 0x83, 0x68, 0x1b, 0xb1, 0x5d, 0xf8, - 0x04, 0x4b, 0xff, 0xf7, 0xa7, 0xbe, 0x02, 0x48, 0x5d, 0xf8, 0x04, 0x4b, - 0x70, 0x47, 0x00, 0xbf, 0x00, 0xaf, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x41, - 0x0e, 0x46, 0x88, 0xb0, 0x17, 0x46, 0x05, 0x46, 0x00, 0x28, 0x52, 0xd0, - 0x03, 0x68, 0x00, 0x2b, 0x4f, 0xd0, 0x82, 0x68, 0x00, 0x2a, 0x4c, 0xd0, - 0x9b, 0x79, 0xbb, 0x42, 0x13, 0xd2, 0xfd, 0xf7, 0x55, 0xf9, 0x04, 0x46, - 0x88, 0xbb, 0x3a, 0x46, 0x31, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x86, 0xfe, - 0x04, 0x46, 0x50, 0xbb, 0x69, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x30, 0xff, - 0x04, 0x46, 0x20, 0xbb, 0x2b, 0x68, 0x6e, 0x46, 0x5f, 0x79, 0x2b, 0x68, - 0x36, 0x21, 0xd5, 0xf8, 0x08, 0x80, 0x01, 0x3e, 0x9a, 0x79, 0x40, 0x46, - 0x47, 0x44, 0x08, 0xeb, 0x02, 0x04, 0x09, 0xf0, 0x23, 0xfe, 0x2b, 0x68, - 0x5c, 0x21, 0x20, 0x46, 0x9a, 0x79, 0x09, 0xf0, 0x1d, 0xfe, 0x43, 0x46, - 0x60, 0x1e, 0x9f, 0x42, 0x13, 0xd1, 0x28, 0x46, 0xfd, 0xf7, 0x2a, 0xf9, - 0x04, 0x46, 0x30, 0xb9, 0x2b, 0x68, 0x41, 0x46, 0x28, 0x46, 0x9a, 0x79, - 0xff, 0xf7, 0x5a, 0xfe, 0x04, 0x46, 0x20, 0x21, 0x68, 0x46, 0xff, 0xf7, - 0x9b, 0xfa, 0x20, 0x46, 0x08, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x16, 0xf8, - 0x01, 0x1f, 0x1a, 0x78, 0x4a, 0x40, 0x03, 0xf8, 0x01, 0x2b, 0x10, 0xf8, - 0x01, 0x2f, 0x31, 0x78, 0x4a, 0x40, 0x02, 0x70, 0xdd, 0xe7, 0x01, 0x4c, - 0xed, 0xe7, 0x00, 0xbf, 0x00, 0xaf, 0xff, 0xff, 0x10, 0xb5, 0x04, 0x46, - 0xf0, 0xb1, 0x03, 0x68, 0xe3, 0xb1, 0x40, 0x68, 0x48, 0xb1, 0x1b, 0x79, - 0x05, 0x3b, 0x01, 0x2b, 0x02, 0xd8, 0x6c, 0x21, 0xff, 0xf7, 0x78, 0xfa, - 0x60, 0x68, 0x09, 0xf0, 0x7b, 0xfd, 0xa0, 0x68, 0x40, 0xb1, 0x23, 0x68, - 0x9b, 0x79, 0x59, 0x00, 0x0b, 0xb1, 0xff, 0xf7, 0x6d, 0xfa, 0xa0, 0x68, - 0x09, 0xf0, 0x70, 0xfd, 0x20, 0x46, 0x0c, 0x21, 0xbd, 0xe8, 0x10, 0x40, - 0xff, 0xf7, 0x64, 0xba, 0x10, 0xbd, 0x2d, 0xe9, 0xf0, 0x47, 0x05, 0x68, - 0x8a, 0xb0, 0x82, 0x46, 0x0e, 0x46, 0x17, 0x46, 0x05, 0xb1, 0x6d, 0x79, - 0x76, 0xb3, 0x00, 0x2f, 0x14, 0xbf, 0x4f, 0xf0, 0x02, 0x08, 0x4f, 0xf0, - 0x01, 0x08, 0x00, 0x23, 0x0a, 0xf1, 0x0c, 0x09, 0x8d, 0xf8, 0x04, 0x30, - 0x50, 0x46, 0xff, 0xf7, 0x1b, 0xfe, 0x04, 0x46, 0xb0, 0xb9, 0x2a, 0x46, - 0x49, 0x46, 0x50, 0x46, 0xff, 0xf7, 0x4e, 0xff, 0x04, 0x46, 0x78, 0xb9, - 0x01, 0x22, 0x01, 0xa9, 0x50, 0x46, 0xff, 0xf7, 0x47, 0xff, 0x04, 0x46, - 0x40, 0xb9, 0xb8, 0xf1, 0x02, 0x0f, 0x10, 0xd0, 0x02, 0xa9, 0x50, 0x46, - 0xff, 0xf7, 0x14, 0xff, 0x04, 0x46, 0x98, 0xb1, 0x02, 0xa8, 0x20, 0x21, - 0xff, 0xf7, 0x2e, 0xfa, 0x20, 0x46, 0x0a, 0xb0, 0xbd, 0xe8, 0xf0, 0x87, - 0x4f, 0xf0, 0x01, 0x08, 0xd3, 0xe7, 0x3a, 0x46, 0x31, 0x46, 0x50, 0x46, - 0xff, 0xf7, 0x2c, 0xff, 0x04, 0x46, 0x00, 0x28, 0xe6, 0xd0, 0xeb, 0xe7, - 0x2a, 0x46, 0x02, 0xa9, 0x50, 0x46, 0xff, 0xf7, 0x33, 0xff, 0x04, 0x46, - 0x00, 0x28, 0xe3, 0xd1, 0x2a, 0x46, 0x49, 0x46, 0x50, 0x46, 0xff, 0xf7, - 0x1b, 0xff, 0x04, 0x46, 0x00, 0x28, 0xdb, 0xd1, 0x49, 0x46, 0x50, 0x46, - 0xff, 0xf7, 0xea, 0xfe, 0x04, 0x46, 0x00, 0x28, 0xd4, 0xd1, 0x9d, 0xf8, - 0x04, 0x30, 0x01, 0x33, 0xdb, 0xb2, 0x43, 0x45, 0x8d, 0xf8, 0x04, 0x30, - 0xb0, 0xd3, 0xcb, 0xe7, 0x2d, 0xe9, 0xf8, 0x43, 0x06, 0x68, 0x04, 0x46, - 0x0f, 0x46, 0x15, 0x46, 0x06, 0xb1, 0x76, 0x79, 0xb5, 0xf5, 0x80, 0x6f, - 0x3b, 0xd8, 0xe3, 0x6b, 0x63, 0xb9, 0x04, 0xf1, 0x0c, 0x09, 0xbd, 0xb9, - 0x2a, 0x46, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x86, 0xff, 0x78, 0xb9, - 0xe3, 0x6a, 0x01, 0x33, 0xe3, 0x62, 0x0b, 0xe0, 0x63, 0x6b, 0x01, 0x2b, - 0x03, 0xd0, 0xe2, 0x6a, 0xa3, 0x6b, 0x9a, 0x42, 0xeb, 0xdd, 0x20, 0x46, - 0xf1, 0xf7, 0xcc, 0xfc, 0x00, 0x28, 0xe6, 0xd0, 0xbd, 0xe8, 0xf8, 0x83, - 0xae, 0x42, 0x20, 0x46, 0xb0, 0x46, 0x28, 0xbf, 0xa8, 0x46, 0xff, 0xf7, - 0x9f, 0xfd, 0x00, 0x28, 0xf4, 0xd1, 0x32, 0x46, 0x49, 0x46, 0x20, 0x46, - 0xff, 0xf7, 0xd2, 0xfe, 0x00, 0x28, 0xed, 0xd1, 0x49, 0x46, 0x20, 0x46, - 0xff, 0xf7, 0xa2, 0xfe, 0x00, 0x28, 0xe7, 0xd1, 0x38, 0x46, 0x42, 0x46, - 0x49, 0x46, 0x47, 0x44, 0xa5, 0xeb, 0x08, 0x05, 0x09, 0xf0, 0x18, 0xfd, - 0xc7, 0xe7, 0x6f, 0xf0, 0x02, 0x00, 0xdb, 0xe7, 0x00, 0x23, 0x01, 0x22, - 0xc0, 0xe9, 0x04, 0x33, 0xc0, 0xe9, 0x00, 0x23, 0xc0, 0xe9, 0x02, 0x32, - 0xc0, 0xe9, 0x06, 0x23, 0x03, 0x62, 0x70, 0x47, 0x38, 0xb5, 0x00, 0x24, - 0x01, 0x25, 0x01, 0x46, 0x04, 0x70, 0x44, 0x62, 0xc0, 0xe9, 0x01, 0x54, - 0xc0, 0xe9, 0x03, 0x45, 0xc0, 0xe9, 0x05, 0x44, 0xc0, 0xe9, 0x07, 0x54, - 0x28, 0x30, 0xff, 0xf7, 0xe3, 0xff, 0xc1, 0xe9, 0x13, 0x54, 0xc1, 0xe9, - 0x15, 0x44, 0xc1, 0xe9, 0x17, 0x44, 0xc1, 0xe9, 0x19, 0x44, 0xc1, 0xe9, - 0x1b, 0x44, 0xc1, 0xe9, 0x1d, 0x44, 0x38, 0xbd, 0x03, 0x6b, 0x2b, 0xb1, - 0xc3, 0x6b, 0x00, 0x2b, 0x0c, 0xbf, 0x02, 0x20, 0x01, 0x20, 0x70, 0x47, - 0x18, 0x46, 0x70, 0x47, 0x02, 0x46, 0x43, 0x68, 0x30, 0xb5, 0x23, 0xb9, - 0x48, 0x68, 0x58, 0xb9, 0x00, 0x2b, 0x38, 0xd1, 0x31, 0xe0, 0x90, 0x68, - 0x00, 0xeb, 0x83, 0x00, 0x50, 0xf8, 0x04, 0x0c, 0x00, 0x28, 0xf3, 0xd1, - 0x01, 0x3b, 0xf0, 0xe7, 0x8c, 0x68, 0x04, 0xeb, 0x80, 0x05, 0x55, 0xf8, - 0x04, 0x5c, 0x25, 0xbb, 0x01, 0x38, 0xea, 0xe7, 0x83, 0x42, 0x09, 0x68, - 0x01, 0xd2, 0x48, 0x42, 0x22, 0xe0, 0x10, 0x68, 0x00, 0x28, 0x03, 0xdd, - 0x00, 0x29, 0x13, 0xda, 0x01, 0x20, 0x1b, 0xe0, 0x00, 0x29, 0x0f, 0xdd, - 0x70, 0xb1, 0x4f, 0xf0, 0xff, 0x30, 0x15, 0xe0, 0x91, 0x68, 0x51, 0xf8, - 0x23, 0x50, 0x54, 0xf8, 0x23, 0x10, 0x8d, 0x42, 0x0e, 0xd8, 0x03, 0xf1, - 0xff, 0x33, 0x02, 0xd2, 0x40, 0x42, 0x09, 0xe0, 0x01, 0x3b, 0x59, 0x1c, - 0xf0, 0xd1, 0x00, 0x20, 0x04, 0xe0, 0x00, 0x2b, 0xda, 0xd0, 0x83, 0x42, - 0xd8, 0xd9, 0x10, 0x68, 0x30, 0xbd, 0x1f, 0xb5, 0x81, 0xea, 0xe1, 0x73, - 0xcd, 0xf8, 0x0c, 0xd0, 0xa3, 0xeb, 0xe1, 0x73, 0x00, 0x93, 0x4b, 0x1c, - 0x4f, 0xf0, 0x01, 0x03, 0x18, 0xbf, 0x01, 0x21, 0x02, 0x93, 0x01, 0x91, - 0x01, 0xa9, 0xff, 0xf7, 0xab, 0xff, 0x05, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, - 0xf8, 0xb5, 0x04, 0x46, 0x08, 0x46, 0x63, 0x68, 0xb2, 0xeb, 0x83, 0x0f, - 0x4f, 0xea, 0x83, 0x05, 0x1c, 0xd9, 0x52, 0x1b, 0x8e, 0x18, 0x00, 0x21, - 0x09, 0xf0, 0x88, 0xfc, 0x2a, 0x46, 0x30, 0x46, 0x81, 0x18, 0x00, 0x23, - 0x9a, 0x42, 0x13, 0xd1, 0x00, 0x20, 0xf8, 0xbd, 0x03, 0xf0, 0x03, 0x01, - 0x23, 0xf0, 0x03, 0x0c, 0xa7, 0x68, 0xce, 0x00, 0x57, 0xf8, 0x0c, 0x10, - 0xf1, 0x40, 0x11, 0xf0, 0xff, 0x0f, 0x11, 0xd1, 0x01, 0x33, 0xab, 0x42, - 0xf0, 0xd1, 0xe9, 0xe7, 0x13, 0x46, 0xfa, 0xe7, 0x03, 0xf0, 0x03, 0x00, - 0x23, 0xf0, 0x03, 0x06, 0xa7, 0x68, 0x01, 0x33, 0xc5, 0x00, 0xb8, 0x59, - 0xe8, 0x40, 0x01, 0xf8, 0x01, 0x0d, 0xdd, 0xe7, 0x6f, 0xf0, 0x07, 0x00, - 0xdd, 0xe7, 0x00, 0x00, 0x42, 0x2a, 0xf0, 0xb5, 0x06, 0x46, 0x93, 0xb0, - 0x08, 0x46, 0x15, 0x46, 0x26, 0xd8, 0x01, 0xa9, 0xff, 0xf7, 0xbe, 0xff, - 0x04, 0x46, 0xc8, 0xb9, 0x11, 0x49, 0x30, 0x46, 0xf1, 0xf7, 0x74, 0xf9, - 0x04, 0x46, 0x98, 0xb9, 0x06, 0xf1, 0x0c, 0x07, 0x20, 0x22, 0x30, 0x46, - 0x39, 0x46, 0xff, 0xf7, 0xf1, 0xfd, 0x04, 0x46, 0x50, 0xb9, 0x20, 0x22, - 0x01, 0x21, 0x38, 0x46, 0x09, 0xf0, 0x3e, 0xfc, 0x2a, 0x46, 0x01, 0xa9, - 0x30, 0x46, 0xff, 0xf7, 0x68, 0xfe, 0x04, 0x46, 0x1d, 0xb1, 0x29, 0x46, - 0x01, 0xa8, 0xff, 0xf7, 0xc5, 0xf8, 0x20, 0x46, 0x13, 0xb0, 0xf0, 0xbd, - 0x01, 0x4c, 0xf6, 0xe7, 0x10, 0xdf, 0x01, 0x08, 0x00, 0xb3, 0xff, 0xff, - 0x02, 0x46, 0x40, 0x68, 0x80, 0xb1, 0x43, 0x1e, 0x92, 0x68, 0x73, 0xb9, - 0x52, 0xf8, 0x23, 0x10, 0x00, 0x20, 0x4f, 0xf0, 0x00, 0x42, 0x11, 0x42, - 0x03, 0xd1, 0x01, 0x30, 0x52, 0x08, 0x20, 0x28, 0xf9, 0xd1, 0x01, 0x33, - 0xc0, 0xeb, 0x43, 0x10, 0x70, 0x47, 0x52, 0xf8, 0x23, 0x10, 0x00, 0x29, - 0xec, 0xd1, 0x01, 0x3b, 0xe9, 0xe7, 0x00, 0x00, 0x38, 0xb5, 0x14, 0x4a, - 0x01, 0x25, 0x14, 0x4b, 0x04, 0x46, 0xc2, 0x60, 0x43, 0x66, 0x08, 0x23, - 0x12, 0x4a, 0x83, 0x63, 0x42, 0x62, 0x12, 0x4a, 0x45, 0x64, 0x42, 0x65, - 0x11, 0x4a, 0xc0, 0xe9, 0x01, 0x53, 0xc0, 0xe9, 0x07, 0x53, 0xc0, 0xe9, - 0x13, 0x53, 0xc0, 0xe9, 0x0a, 0x53, 0x0e, 0x4b, 0xc0, 0xe9, 0x0f, 0x35, - 0x0d, 0x4b, 0xc0, 0xe9, 0x0c, 0x25, 0x83, 0x64, 0x04, 0x30, 0xff, 0xf7, - 0xc3, 0xff, 0xa0, 0x65, 0x04, 0xf1, 0x4c, 0x00, 0xff, 0xf7, 0xbe, 0xff, - 0xc4, 0xe9, 0x17, 0x05, 0x00, 0x20, 0x38, 0xbd, 0x90, 0xe7, 0x01, 0x08, - 0xdd, 0x25, 0x01, 0x08, 0x10, 0xe7, 0x01, 0x08, 0x70, 0xe7, 0x01, 0x08, - 0x30, 0xe7, 0x01, 0x08, 0x50, 0xe7, 0x01, 0x08, 0x18, 0x01, 0x00, 0x24, - 0xf8, 0xb5, 0x04, 0x46, 0x0e, 0x46, 0x4d, 0x09, 0x01, 0xf0, 0x1f, 0x07, - 0xff, 0xf7, 0xa4, 0xff, 0x63, 0x68, 0x30, 0x44, 0xb0, 0xeb, 0x43, 0x1f, - 0x05, 0xd8, 0x1f, 0x2e, 0x0f, 0xd8, 0x00, 0x2f, 0x3b, 0xd1, 0x00, 0x20, - 0x0a, 0xe0, 0x10, 0xf0, 0x1f, 0x01, 0x18, 0xbf, 0x01, 0x21, 0x01, 0xeb, - 0x50, 0x11, 0x20, 0x46, 0xff, 0xf7, 0xc4, 0xfc, 0x00, 0x28, 0xee, 0xd0, - 0xf8, 0xbd, 0x63, 0x68, 0x6f, 0xf0, 0x03, 0x00, 0x9a, 0x00, 0x68, 0x43, - 0x19, 0x46, 0xa9, 0x42, 0xa2, 0xf1, 0x04, 0x02, 0x0b, 0xd8, 0xab, 0x42, - 0x4f, 0xf0, 0x00, 0x02, 0x28, 0xbf, 0x2b, 0x46, 0x9b, 0x00, 0x04, 0x3b, - 0x19, 0x1d, 0xdc, 0xd0, 0xa1, 0x68, 0xca, 0x50, 0xf9, 0xe7, 0xa6, 0x68, - 0x01, 0x39, 0x06, 0xeb, 0x02, 0x0c, 0x5c, 0xf8, 0x00, 0xc0, 0x46, 0xf8, - 0x02, 0xc0, 0xe6, 0xe7, 0xa0, 0x68, 0x50, 0xf8, 0x25, 0x10, 0x01, 0xfa, - 0x07, 0xf3, 0x13, 0x43, 0x21, 0xfa, 0x06, 0xf2, 0x40, 0xf8, 0x25, 0x30, - 0x01, 0x35, 0x63, 0x68, 0xab, 0x42, 0xf1, 0xd8, 0xc3, 0xe7, 0x00, 0x22, - 0xc7, 0xf1, 0x20, 0x06, 0xf7, 0xe7, 0x43, 0x68, 0xb1, 0xeb, 0x43, 0x1f, - 0x3f, 0xbf, 0x4a, 0x09, 0x83, 0x68, 0x01, 0xf0, 0x1f, 0x01, 0x53, 0xf8, - 0x22, 0x00, 0x3a, 0xbf, 0x20, 0xfa, 0x01, 0xf1, 0x01, 0xf0, 0x01, 0x00, - 0x00, 0x20, 0x70, 0x47, 0xf8, 0xb5, 0x07, 0x46, 0x0d, 0x46, 0xff, 0xf7, - 0x77, 0xfe, 0x02, 0x28, 0x06, 0x46, 0x1d, 0xd1, 0x00, 0x21, 0x28, 0x46, - 0xff, 0xf7, 0xe3, 0xff, 0x60, 0xbb, 0x01, 0x21, 0x28, 0x46, 0xff, 0xf7, - 0xde, 0xff, 0x04, 0x46, 0x30, 0xbb, 0x28, 0x46, 0xff, 0xf7, 0x34, 0xff, - 0xfb, 0x6d, 0x01, 0x38, 0x98, 0x42, 0x1f, 0xd1, 0xfe, 0x28, 0x07, 0xd1, - 0x31, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xcf, 0xff, 0x0d, 0x4b, 0x04, 0x1e, - 0x18, 0xbf, 0x1c, 0x46, 0x20, 0x46, 0xf8, 0xbd, 0x01, 0x28, 0x0f, 0xd1, - 0x01, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x9d, 0xfe, 0x00, 0x28, 0x0b, 0xdb, - 0x07, 0xf1, 0x4c, 0x01, 0x28, 0x46, 0xff, 0xf7, 0x53, 0xfe, 0x00, 0x28, - 0x03, 0x4c, 0xb8, 0xbf, 0x00, 0x24, 0xeb, 0xe7, 0x02, 0x4c, 0xe9, 0xe7, - 0x00, 0x4c, 0xe7, 0xe7, 0x80, 0xb3, 0xff, 0xff, 0x80, 0xb0, 0xff, 0xff, - 0x70, 0xb5, 0x0e, 0x46, 0x01, 0x21, 0x04, 0x46, 0xff, 0xf7, 0x38, 0xfc, - 0x05, 0x46, 0x48, 0xb9, 0x62, 0x68, 0x01, 0x46, 0xa0, 0x68, 0x92, 0x00, - 0x09, 0xf0, 0x26, 0xfb, 0xa3, 0x68, 0x1e, 0x60, 0x01, 0x23, 0x23, 0x60, - 0x28, 0x46, 0x70, 0xbd, 0x10, 0xb5, 0x01, 0x21, 0x04, 0x46, 0xff, 0xf7, - 0xe7, 0xff, 0x60, 0xb9, 0x01, 0x21, 0x04, 0xf1, 0x0c, 0x00, 0xff, 0xf7, - 0xe1, 0xff, 0x30, 0xb9, 0x01, 0x46, 0x04, 0xf1, 0x18, 0x00, 0xbd, 0xe8, - 0x10, 0x40, 0xff, 0xf7, 0xd9, 0xbf, 0x10, 0xbd, 0xf0, 0xb4, 0x43, 0x68, - 0x4e, 0x09, 0x01, 0xf0, 0x1f, 0x04, 0xb3, 0x42, 0x01, 0xd3, 0x04, 0xd1, - 0x5c, 0xb3, 0x00, 0x21, 0xf0, 0xbc, 0xff, 0xf7, 0xcb, 0xbf, 0x1f, 0x29, - 0x27, 0xd8, 0x04, 0xbb, 0x00, 0x20, 0xf0, 0xbc, 0x70, 0x47, 0x82, 0x68, - 0x57, 0x59, 0x04, 0x35, 0x42, 0xf8, 0x21, 0x70, 0x01, 0x31, 0x9a, 0x1b, - 0x8a, 0x42, 0xf6, 0xd8, 0x00, 0x21, 0x93, 0x42, 0xef, 0xd9, 0x85, 0x68, - 0x45, 0xf8, 0x22, 0x10, 0x01, 0x32, 0xf8, 0xe7, 0x86, 0x68, 0x56, 0xf8, - 0x23, 0x50, 0x25, 0xfa, 0x04, 0xf2, 0x0a, 0x43, 0x05, 0xfa, 0x07, 0xf1, - 0x46, 0xf8, 0x23, 0x20, 0x01, 0x3b, 0xf3, 0xd2, 0xde, 0xe7, 0x00, 0x21, - 0xc4, 0xf1, 0x20, 0x07, 0xf8, 0xe7, 0x1f, 0x29, 0xd8, 0xd9, 0xb5, 0x00, - 0x00, 0x21, 0xde, 0xe7, 0x88, 0x42, 0xf8, 0xb5, 0x06, 0x46, 0x0d, 0x46, - 0x14, 0x46, 0x01, 0xd1, 0x00, 0x20, 0xf8, 0xbd, 0x49, 0x68, 0xff, 0xf7, - 0xd1, 0xfb, 0x00, 0x28, 0xf9, 0xd1, 0x71, 0x68, 0x28, 0x46, 0xff, 0xf7, - 0xcb, 0xfb, 0x00, 0x28, 0xf3, 0xd1, 0x62, 0x42, 0x31, 0x68, 0x22, 0x43, - 0x2c, 0x68, 0xc2, 0xf3, 0xc0, 0x12, 0xc2, 0xf1, 0x01, 0x03, 0x03, 0xfb, - 0x01, 0xf7, 0x51, 0x43, 0x04, 0xfb, 0x02, 0x74, 0x34, 0x60, 0x2c, 0x68, - 0x04, 0xfb, 0x03, 0x11, 0x29, 0x60, 0x71, 0x68, 0x88, 0x42, 0xdd, 0xd2, - 0xd6, 0xf8, 0x08, 0xc0, 0xaf, 0x68, 0x5c, 0xf8, 0x20, 0x10, 0x57, 0xf8, - 0x20, 0x40, 0x03, 0xfb, 0x01, 0xfe, 0x51, 0x43, 0x04, 0xfb, 0x02, 0xe4, - 0x4c, 0xf8, 0x20, 0x40, 0x57, 0xf8, 0x20, 0x40, 0x04, 0xfb, 0x03, 0x11, - 0x47, 0xf8, 0x20, 0x10, 0x01, 0x30, 0xe6, 0xe7, 0x2d, 0xe9, 0xf0, 0x41, - 0x0d, 0x46, 0x49, 0x68, 0x06, 0x46, 0x14, 0x46, 0xff, 0xf7, 0x96, 0xfb, - 0xb8, 0xb9, 0x62, 0x42, 0x29, 0x68, 0x33, 0x68, 0x22, 0x43, 0xd5, 0xf8, - 0x04, 0xe0, 0xd5, 0xf8, 0x08, 0x80, 0xc2, 0xf3, 0xc0, 0x12, 0x51, 0x43, - 0xc2, 0xf1, 0x01, 0x0c, 0x03, 0xfb, 0x0c, 0x13, 0xb1, 0x68, 0x33, 0x60, - 0x03, 0x46, 0x9e, 0x45, 0x05, 0xd1, 0x6b, 0x68, 0x72, 0x68, 0x9a, 0x42, - 0x0c, 0xd8, 0xbd, 0xe8, 0xf0, 0x81, 0x58, 0xf8, 0x23, 0x70, 0x51, 0xf8, - 0x23, 0x40, 0x57, 0x43, 0x04, 0xfb, 0x0c, 0x74, 0x41, 0xf8, 0x23, 0x40, - 0x01, 0x33, 0xec, 0xe7, 0x51, 0xf8, 0x23, 0x20, 0x0c, 0xfb, 0x02, 0xf2, - 0x41, 0xf8, 0x23, 0x20, 0x01, 0x33, 0xe7, 0xe7, 0x10, 0xb5, 0x04, 0x46, - 0x70, 0xb1, 0x80, 0x68, 0x38, 0xb1, 0x61, 0x68, 0x89, 0x00, 0x01, 0xd0, - 0xfe, 0xf7, 0xe6, 0xfe, 0xa0, 0x68, 0x09, 0xf0, 0xe9, 0xf9, 0x00, 0x23, - 0x01, 0x22, 0xa3, 0x60, 0xc4, 0xe9, 0x00, 0x23, 0x10, 0xbd, 0x10, 0xb5, - 0x04, 0x46, 0xff, 0xf7, 0xe9, 0xff, 0x04, 0xf1, 0x0c, 0x00, 0xff, 0xf7, - 0xe5, 0xff, 0x04, 0xf1, 0x18, 0x00, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, - 0xdf, 0xbf, 0x08, 0xb1, 0xff, 0xf7, 0xef, 0xbf, 0x70, 0x47, 0x70, 0xb5, - 0x04, 0x46, 0x60, 0xb3, 0x03, 0x6e, 0x01, 0x2b, 0x12, 0xd0, 0x04, 0x30, - 0xff, 0xf7, 0xd2, 0xff, 0x04, 0xf1, 0x10, 0x00, 0xff, 0xf7, 0xce, 0xff, - 0x04, 0xf1, 0x1c, 0x00, 0xff, 0xf7, 0xca, 0xff, 0x04, 0xf1, 0x28, 0x00, - 0xff, 0xf7, 0xe7, 0xff, 0x04, 0xf1, 0x4c, 0x00, 0xff, 0xf7, 0xc2, 0xff, - 0x63, 0x6f, 0x8b, 0xb9, 0x20, 0x46, 0x7c, 0x21, 0xbd, 0xe8, 0x70, 0x40, - 0xfe, 0xf7, 0xaa, 0xbe, 0x06, 0xfb, 0x05, 0x00, 0x01, 0x35, 0xff, 0xf7, - 0xd6, 0xff, 0xd4, 0xe9, 0x1d, 0x03, 0xab, 0x42, 0xf6, 0xd8, 0x09, 0xf0, - 0xa5, 0xf9, 0xed, 0xe7, 0x00, 0x25, 0x24, 0x26, 0xf5, 0xe7, 0x70, 0xbd, - 0x2d, 0xe9, 0xf8, 0x43, 0x11, 0xf0, 0x03, 0x06, 0x99, 0x46, 0x43, 0x68, - 0x05, 0x46, 0x18, 0xbf, 0x01, 0x26, 0x0f, 0x46, 0x90, 0x46, 0x06, 0xeb, - 0x91, 0x06, 0xb3, 0x42, 0x08, 0xd1, 0x00, 0x21, 0x28, 0x46, 0xff, 0xf7, - 0xc1, 0xfe, 0x04, 0x46, 0x88, 0xb1, 0x20, 0x46, 0xbd, 0xe8, 0xf8, 0x83, - 0xff, 0xf7, 0x90, 0xff, 0x00, 0x23, 0x01, 0x22, 0x31, 0x46, 0x28, 0x46, - 0xab, 0x60, 0xc5, 0xe9, 0x00, 0x23, 0xff, 0xf7, 0xef, 0xfa, 0x04, 0x46, - 0x00, 0x28, 0xe8, 0xd0, 0xed, 0xe7, 0xc7, 0xeb, 0x86, 0x03, 0xa9, 0x68, - 0x3a, 0x46, 0x48, 0x46, 0x19, 0x44, 0xc0, 0x47, 0x04, 0x46, 0x00, 0x28, - 0xe3, 0xd1, 0x31, 0x46, 0xa8, 0x68, 0xfd, 0xf7, 0x6b, 0xf8, 0xde, 0xe7, - 0x2d, 0xe9, 0xf0, 0x41, 0x12, 0xf0, 0x03, 0x06, 0x43, 0x68, 0x04, 0x46, - 0x88, 0x46, 0x18, 0xbf, 0x01, 0x26, 0x17, 0x46, 0x06, 0xeb, 0x92, 0x06, - 0xb3, 0x42, 0x08, 0xd1, 0x00, 0x21, 0x20, 0x46, 0xff, 0xf7, 0x8c, 0xfe, - 0x05, 0x46, 0x88, 0xb1, 0x28, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0xff, 0xf7, - 0x5b, 0xff, 0x00, 0x23, 0x01, 0x22, 0x31, 0x46, 0x20, 0x46, 0xa3, 0x60, - 0xc4, 0xe9, 0x00, 0x23, 0xff, 0xf7, 0xba, 0xfa, 0x05, 0x46, 0x00, 0x28, - 0xe8, 0xd0, 0xed, 0xe7, 0xb8, 0xf1, 0x00, 0x0f, 0xea, 0xd0, 0xa3, 0x68, - 0xc7, 0xeb, 0x86, 0x00, 0x41, 0x46, 0x3a, 0x46, 0x18, 0x44, 0x09, 0xf0, - 0x93, 0xf9, 0x31, 0x46, 0xa0, 0x68, 0xfd, 0xf7, 0x35, 0xf8, 0xdd, 0xe7, - 0x2d, 0xe9, 0xf8, 0x43, 0x81, 0x46, 0x0d, 0x46, 0x90, 0x46, 0x1e, 0x46, - 0x1b, 0xb9, 0x4d, 0x4c, 0x20, 0x46, 0xbd, 0xe8, 0xf8, 0x83, 0x04, 0x30, - 0xff, 0xf7, 0x64, 0xfd, 0xc4, 0x1d, 0x48, 0x46, 0xff, 0xf7, 0x92, 0xfc, - 0x02, 0x28, 0x4f, 0xea, 0xd4, 0x07, 0x65, 0xd1, 0xbe, 0x42, 0xee, 0xd1, - 0x16, 0xf0, 0x03, 0x01, 0x6b, 0x68, 0x18, 0xbf, 0x01, 0x21, 0x01, 0xeb, - 0x54, 0x14, 0x9c, 0x42, 0x4a, 0xd1, 0x00, 0x21, 0x28, 0x46, 0xff, 0xf7, - 0x43, 0xfe, 0x04, 0x46, 0x00, 0x28, 0xdf, 0xd1, 0xa9, 0x68, 0xe2, 0x00, - 0x18, 0xf8, 0x04, 0x30, 0x24, 0xf0, 0x03, 0x00, 0x01, 0x34, 0x02, 0xf0, - 0x18, 0x02, 0xa7, 0x42, 0x03, 0xfa, 0x02, 0xf2, 0x0b, 0x58, 0x43, 0xea, - 0x02, 0x03, 0x0b, 0x50, 0xef, 0xd8, 0x05, 0xf1, 0x0c, 0x00, 0xff, 0xf7, - 0x01, 0xff, 0x99, 0xf8, 0x00, 0x30, 0x09, 0x2b, 0x12, 0xd1, 0xfb, 0x00, - 0x6a, 0x68, 0x01, 0x3b, 0xb3, 0xeb, 0x42, 0x1f, 0x0c, 0xd2, 0x58, 0x09, - 0xa9, 0x68, 0x01, 0x22, 0x03, 0xf0, 0x1f, 0x03, 0x02, 0xfa, 0x03, 0xf3, - 0x51, 0xf8, 0x20, 0x20, 0x22, 0xea, 0x03, 0x02, 0x41, 0xf8, 0x20, 0x20, - 0x01, 0x21, 0x05, 0xf1, 0x18, 0x00, 0xff, 0xf7, 0x0f, 0xfe, 0x04, 0x46, - 0x00, 0x28, 0xab, 0xd1, 0x48, 0x46, 0xff, 0xf7, 0x45, 0xfc, 0x01, 0x28, - 0x81, 0x46, 0xa5, 0xd1, 0x98, 0xf8, 0x00, 0x30, 0xc3, 0xb9, 0x01, 0x2e, - 0x9f, 0xd1, 0x28, 0x46, 0xbd, 0xe8, 0xf8, 0x43, 0xff, 0xf7, 0x10, 0xbe, - 0x28, 0x46, 0xff, 0xf7, 0xcf, 0xfe, 0x00, 0x23, 0x01, 0x22, 0x21, 0x46, - 0x28, 0x46, 0xab, 0x60, 0xc5, 0xe9, 0x00, 0x23, 0xff, 0xf7, 0x2e, 0xfa, - 0x04, 0x46, 0x00, 0x28, 0xa5, 0xd0, 0x8b, 0xe7, 0x13, 0x4c, 0xdd, 0xe7, - 0x04, 0x2b, 0x1f, 0xd1, 0x7b, 0x00, 0x01, 0x33, 0xb3, 0x42, 0x82, 0xd1, - 0x3a, 0x46, 0x08, 0xf1, 0x01, 0x01, 0x28, 0x46, 0xff, 0xf7, 0x40, 0xff, - 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x7a, 0xaf, 0x79, 0x1c, 0x3a, 0x46, - 0x05, 0xf1, 0x0c, 0x00, 0x41, 0x44, 0xff, 0xf7, 0x35, 0xff, 0x04, 0x46, - 0x00, 0x28, 0x7f, 0xf4, 0x6f, 0xaf, 0x49, 0x46, 0x05, 0xf1, 0x18, 0x00, - 0xbd, 0xe8, 0xf8, 0x43, 0xff, 0xf7, 0xc8, 0xbd, 0x01, 0x4c, 0x65, 0xe7, - 0x80, 0xb0, 0xff, 0xff, 0x80, 0xb1, 0xff, 0xff, 0x88, 0x42, 0x70, 0xb5, - 0x05, 0x46, 0x0e, 0x46, 0x03, 0xd0, 0x4c, 0x68, 0x3c, 0xb9, 0xff, 0xf7, - 0x8f, 0xfe, 0x00, 0x20, 0x11, 0xe0, 0xb3, 0x68, 0x53, 0xf8, 0x24, 0x30, - 0x13, 0xb9, 0x01, 0x3c, 0x00, 0x2c, 0xf8, 0xd1, 0x01, 0x34, 0x6a, 0x68, - 0x33, 0x68, 0xa2, 0x42, 0x2b, 0x60, 0x05, 0xd2, 0x21, 0x46, 0x28, 0x46, - 0xff, 0xf7, 0xe4, 0xf9, 0x40, 0xb1, 0x70, 0xbd, 0x12, 0x1b, 0xa8, 0x68, - 0x00, 0x21, 0x92, 0x00, 0x00, 0xeb, 0x84, 0x00, 0x09, 0xf0, 0xd0, 0xf8, - 0xa2, 0x00, 0xb1, 0x68, 0xa8, 0x68, 0x09, 0xf0, 0xbd, 0xf8, 0xdc, 0xe7, - 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0xff, 0xf7, 0xcf, 0xff, 0x70, 0xb9, - 0x05, 0xf1, 0x0c, 0x01, 0x04, 0xf1, 0x0c, 0x00, 0xff, 0xf7, 0xc8, 0xff, - 0x38, 0xb9, 0x05, 0xf1, 0x18, 0x01, 0x04, 0xf1, 0x18, 0x00, 0xbd, 0xe8, - 0x38, 0x40, 0xff, 0xf7, 0xbf, 0xbf, 0x38, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, - 0x00, 0x23, 0x89, 0xb0, 0x17, 0x46, 0x88, 0x42, 0x4f, 0xf0, 0x01, 0x02, - 0x81, 0x46, 0x88, 0x46, 0x07, 0x93, 0x04, 0x93, 0xcd, 0xe9, 0x05, 0x23, - 0xcd, 0xe9, 0x02, 0x23, 0x06, 0xd1, 0x05, 0xa8, 0xff, 0xf7, 0xaa, 0xff, - 0x06, 0x46, 0x90, 0xbb, 0x0d, 0xf1, 0x14, 0x08, 0xb9, 0x45, 0x06, 0xd1, - 0x49, 0x46, 0x02, 0xa8, 0xff, 0xf7, 0xa0, 0xff, 0x06, 0x46, 0x40, 0xbb, - 0x02, 0xaf, 0xd8, 0xf8, 0x04, 0xa0, 0xba, 0xf1, 0x00, 0x0f, 0x2c, 0xd1, - 0x7c, 0x68, 0xac, 0xbb, 0x0a, 0xeb, 0x04, 0x01, 0x48, 0x46, 0xff, 0xf7, - 0x91, 0xf9, 0x06, 0x46, 0xc8, 0xb9, 0x01, 0x46, 0x48, 0x46, 0xff, 0xf7, - 0x4d, 0xfd, 0x06, 0x46, 0x98, 0xb9, 0x6f, 0xf0, 0x0f, 0x03, 0x4f, 0xea, - 0x1a, 0x1b, 0x04, 0xf1, 0xff, 0x3c, 0x03, 0xfb, 0x0b, 0xab, 0xab, 0xf1, - 0x08, 0x03, 0x01, 0x93, 0xbc, 0xf1, 0xff, 0x3f, 0x23, 0xd1, 0xd8, 0xf8, - 0x00, 0x20, 0x3b, 0x68, 0x53, 0x43, 0xc9, 0xf8, 0x00, 0x30, 0x02, 0xa8, - 0xff, 0xf7, 0x0a, 0xfe, 0x05, 0xa8, 0xff, 0xf7, 0x07, 0xfe, 0x30, 0x46, - 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xd8, 0xf8, 0x08, 0x30, 0x03, 0xeb, - 0x8a, 0x03, 0x53, 0xf8, 0x04, 0x3c, 0x00, 0x2b, 0xca, 0xd1, 0x0a, 0xf1, - 0xff, 0x3a, 0xc4, 0xe7, 0xbb, 0x68, 0x03, 0xeb, 0x84, 0x03, 0x53, 0xf8, - 0x04, 0x3c, 0x00, 0x2b, 0xc2, 0xd1, 0x01, 0x3c, 0xbf, 0xe7, 0xba, 0x68, - 0x00, 0x24, 0xd9, 0xf8, 0x08, 0x30, 0x52, 0xf8, 0x2c, 0xe0, 0x52, 0x46, - 0xd8, 0xf8, 0x08, 0x50, 0x03, 0xeb, 0x8c, 0x03, 0x0f, 0x2a, 0x48, 0xd8, - 0xbb, 0xf1, 0x07, 0x0f, 0x40, 0xf2, 0xb7, 0x80, 0x55, 0xf8, 0x04, 0x0b, - 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, - 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, + 0xb3, 0x52, 0x3c, 0x43, 0x22, 0x44, 0x59, 0xf8, 0x04, 0x4c, 0x2a, 0x44, + 0xde, 0xf8, 0x04, 0x50, 0x2c, 0x44, 0x4f, 0xea, 0x72, 0x35, 0xa0, 0x44, + 0x00, 0x9c, 0x85, 0xea, 0xb2, 0x05, 0x8c, 0xea, 0x04, 0x04, 0x34, 0x40, + 0x84, 0xea, 0x0c, 0x07, 0x08, 0xeb, 0x07, 0x04, 0x4f, 0xea, 0xf6, 0x28, + 0x43, 0xea, 0x02, 0x07, 0x88, 0xea, 0xb6, 0x18, 0x0f, 0x40, 0x88, 0xea, + 0x76, 0x68, 0x44, 0x44, 0x85, 0xea, 0xb2, 0x58, 0x03, 0xea, 0x02, 0x05, + 0x00, 0xeb, 0x04, 0x0a, 0x18, 0xa8, 0x3d, 0x43, 0x70, 0x45, 0x45, 0x44, + 0x04, 0xeb, 0x05, 0x07, 0x7f, 0xf4, 0xd8, 0xae, 0x00, 0x98, 0xcd, 0xf8, + 0x44, 0xc1, 0xcd, 0xf8, 0x38, 0xa1, 0xcd, 0xe9, 0x4f, 0x60, 0x38, 0xa8, + 0xcd, 0xe9, 0x4a, 0x72, 0xcd, 0xe9, 0x4c, 0x31, 0xcd, 0xe9, 0x08, 0x45, + 0x07, 0x90, 0x01, 0xe0, 0x28, 0xdc, 0x01, 0x08, 0xdb, 0xf8, 0x40, 0x00, + 0x0b, 0xf1, 0x20, 0x0b, 0x5b, 0xf8, 0x14, 0x5c, 0x4f, 0xea, 0xf0, 0x4e, + 0x5b, 0xf8, 0x18, 0x4c, 0x4f, 0xea, 0xb5, 0x48, 0x8e, 0xea, 0x70, 0x4e, + 0x88, 0xea, 0xf5, 0x18, 0x8e, 0xea, 0x90, 0x2e, 0xdb, 0xf8, 0x0c, 0x00, + 0x88, 0xea, 0xd5, 0x08, 0x20, 0x44, 0x4f, 0xea, 0xfa, 0x24, 0x86, 0x44, + 0x84, 0xea, 0xba, 0x14, 0x0e, 0xeb, 0x08, 0x00, 0x84, 0xea, 0x7a, 0x6e, + 0x00, 0x9c, 0x03, 0x90, 0x74, 0x40, 0x00, 0x98, 0x04, 0xea, 0x0a, 0x04, + 0x44, 0x40, 0x01, 0x98, 0x74, 0x44, 0x00, 0x6c, 0x8a, 0xea, 0x06, 0x0e, + 0x20, 0x44, 0x03, 0x9c, 0x20, 0x44, 0xcb, 0xf8, 0x28, 0x40, 0x07, 0xea, + 0x02, 0x04, 0x84, 0x44, 0x47, 0xea, 0x02, 0x00, 0x01, 0xeb, 0x0c, 0x08, + 0x4f, 0xea, 0x77, 0x31, 0x18, 0x40, 0x81, 0xea, 0xb7, 0x01, 0x0e, 0xea, + 0x08, 0x0e, 0x20, 0x43, 0x5b, 0xf8, 0x10, 0x4c, 0x81, 0xea, 0xb7, 0x51, + 0x8e, 0xea, 0x06, 0x0e, 0x8a, 0xea, 0x08, 0x09, 0x08, 0x44, 0xdb, 0xf8, + 0x24, 0x10, 0x84, 0x44, 0x4f, 0xea, 0xf1, 0x40, 0x80, 0xea, 0x71, 0x40, + 0x80, 0xea, 0x91, 0x20, 0xdb, 0xf8, 0x10, 0x10, 0x29, 0x44, 0x4f, 0xea, + 0xb4, 0x45, 0x85, 0xea, 0xf4, 0x15, 0x01, 0x44, 0x01, 0x98, 0x85, 0xea, + 0xd4, 0x05, 0x40, 0x6c, 0x29, 0x44, 0x00, 0x9d, 0x28, 0x44, 0x4f, 0xea, + 0xf8, 0x25, 0xcb, 0xf8, 0x2c, 0x10, 0x08, 0x44, 0x85, 0xea, 0xb8, 0x15, + 0x86, 0x44, 0x85, 0xea, 0x78, 0x65, 0x05, 0xeb, 0x0e, 0x00, 0x4f, 0xea, + 0x7c, 0x35, 0x07, 0xea, 0x0c, 0x0e, 0x03, 0x44, 0x85, 0xea, 0xbc, 0x05, + 0x00, 0x93, 0x47, 0xea, 0x0c, 0x03, 0x85, 0xea, 0xbc, 0x55, 0x13, 0x40, + 0x43, 0xea, 0x0e, 0x03, 0x5b, 0xf8, 0x0c, 0xec, 0x1d, 0x44, 0x03, 0x9b, + 0x05, 0x44, 0x4f, 0xea, 0xf3, 0x40, 0x80, 0xea, 0x73, 0x40, 0x80, 0xea, + 0x93, 0x20, 0xdb, 0xf8, 0x14, 0x30, 0x23, 0x44, 0x4f, 0xea, 0xbe, 0x44, + 0x03, 0x44, 0x00, 0x98, 0x84, 0xea, 0xfe, 0x14, 0x09, 0xea, 0x00, 0x09, + 0x01, 0x98, 0x84, 0xea, 0xde, 0x04, 0x80, 0x6c, 0x89, 0xea, 0x0a, 0x09, + 0x23, 0x44, 0x30, 0x44, 0x4f, 0xea, 0x75, 0x36, 0xcb, 0xf8, 0x30, 0x30, + 0x18, 0x44, 0x86, 0xea, 0xb5, 0x06, 0x81, 0x44, 0x00, 0x98, 0x86, 0xea, + 0xb5, 0x56, 0x4f, 0xea, 0xf0, 0x24, 0x84, 0xea, 0xb0, 0x14, 0x84, 0xea, + 0x70, 0x64, 0x04, 0xeb, 0x09, 0x00, 0x4c, 0xea, 0x05, 0x04, 0x02, 0x44, + 0x3c, 0x40, 0x02, 0x92, 0x0c, 0xea, 0x05, 0x02, 0x14, 0x43, 0x5b, 0xf8, + 0x08, 0x2c, 0x34, 0x44, 0x04, 0x44, 0x4f, 0xea, 0xf1, 0x40, 0x80, 0xea, + 0x71, 0x40, 0x80, 0xea, 0x91, 0x21, 0xdb, 0xf8, 0x18, 0x00, 0x86, 0x44, + 0x02, 0x98, 0x71, 0x44, 0x4f, 0xea, 0xb2, 0x4e, 0x8e, 0xea, 0xf2, 0x1e, + 0x8e, 0xea, 0xd2, 0x0e, 0x8e, 0x44, 0x00, 0x99, 0x88, 0xea, 0x01, 0x01, + 0x01, 0x40, 0x01, 0x98, 0xcb, 0xf8, 0x34, 0xe0, 0xc6, 0x6c, 0x81, 0xea, + 0x08, 0x01, 0x02, 0x98, 0x56, 0x44, 0x4f, 0xea, 0x74, 0x3a, 0x4f, 0xea, + 0xf0, 0x20, 0x76, 0x44, 0x8a, 0xea, 0xb4, 0x0a, 0x31, 0x44, 0x02, 0x9e, + 0x8a, 0xea, 0xb4, 0x5a, 0x80, 0xea, 0xb6, 0x10, 0x80, 0xea, 0x76, 0x60, + 0x46, 0x18, 0x45, 0xea, 0x04, 0x00, 0x05, 0xea, 0x04, 0x01, 0x00, 0xea, + 0x0c, 0x00, 0x07, 0xeb, 0x06, 0x09, 0x08, 0x43, 0x4f, 0xea, 0xf3, 0x41, + 0x81, 0xea, 0x73, 0x41, 0x50, 0x44, 0x81, 0xea, 0x93, 0x23, 0xdb, 0xf8, + 0x1c, 0x10, 0x30, 0x44, 0x5b, 0xf8, 0x04, 0x6c, 0x0a, 0x44, 0x02, 0x99, + 0x13, 0x44, 0x4f, 0xea, 0xb6, 0x42, 0x82, 0xea, 0xf6, 0x12, 0x82, 0xea, + 0xd6, 0x02, 0x1a, 0x44, 0x00, 0x9b, 0x83, 0xea, 0x01, 0x07, 0x4f, 0xea, + 0xf9, 0x21, 0xcb, 0xf8, 0x38, 0x20, 0x07, 0xea, 0x09, 0x07, 0x81, 0xea, + 0xb9, 0x11, 0x5f, 0x40, 0x01, 0x9b, 0x81, 0xea, 0x79, 0x61, 0x1b, 0x6d, + 0x13, 0x44, 0x43, 0x44, 0x04, 0xea, 0x00, 0x08, 0x1f, 0x44, 0xcb, 0x19, + 0x44, 0xea, 0x00, 0x07, 0x4f, 0xea, 0x70, 0x31, 0x2f, 0x40, 0x9c, 0x44, + 0x81, 0xea, 0xb0, 0x01, 0x47, 0xea, 0x08, 0x07, 0xdb, 0xf8, 0x00, 0x80, + 0x81, 0xea, 0xb0, 0x51, 0x39, 0x44, 0x4f, 0xea, 0xfe, 0x47, 0x19, 0x44, + 0x87, 0xea, 0x7e, 0x47, 0xdb, 0xf8, 0x20, 0x30, 0x87, 0xea, 0x9e, 0x2e, + 0x9f, 0x19, 0x4f, 0xea, 0xb8, 0x43, 0x00, 0x9e, 0x83, 0xea, 0xf8, 0x13, + 0x77, 0x44, 0x83, 0xea, 0xd8, 0x03, 0x1f, 0x44, 0x02, 0x9b, 0x83, 0xea, + 0x09, 0x0e, 0xcb, 0xf8, 0x3c, 0x70, 0x0e, 0xea, 0x0c, 0x0e, 0x8e, 0xea, + 0x03, 0x0e, 0x01, 0x9b, 0x5b, 0x6d, 0x3b, 0x44, 0x33, 0x44, 0x9e, 0x44, + 0x4f, 0xea, 0xfc, 0x23, 0x83, 0xea, 0xbc, 0x13, 0x83, 0xea, 0x7c, 0x63, + 0x03, 0xeb, 0x0e, 0x06, 0x00, 0xea, 0x01, 0x0e, 0xab, 0x19, 0x40, 0xea, + 0x01, 0x05, 0x00, 0x93, 0x4f, 0xea, 0x71, 0x33, 0x25, 0x40, 0x83, 0xea, + 0xb1, 0x03, 0x45, 0xea, 0x0e, 0x05, 0xdb, 0xf8, 0x04, 0xe0, 0x83, 0xea, + 0xb1, 0x53, 0x2b, 0x44, 0xdb, 0xf8, 0x24, 0x50, 0x33, 0x44, 0x4f, 0xea, + 0xf2, 0x46, 0x86, 0xea, 0x72, 0x46, 0x86, 0xea, 0x92, 0x22, 0x05, 0xeb, + 0x08, 0x06, 0x89, 0xea, 0x0c, 0x08, 0x16, 0x44, 0x4f, 0xea, 0xbe, 0x42, + 0x82, 0xea, 0xfe, 0x12, 0x82, 0xea, 0xde, 0x02, 0x16, 0x44, 0x00, 0x9a, + 0x08, 0xea, 0x02, 0x08, 0x01, 0x9a, 0xcb, 0xf8, 0x40, 0x60, 0x95, 0x6d, + 0x88, 0xea, 0x09, 0x08, 0x02, 0x9a, 0x35, 0x44, 0x00, 0x9e, 0x15, 0x44, + 0x00, 0x9a, 0x4f, 0xea, 0xf2, 0x22, 0x45, 0x44, 0x01, 0xea, 0x03, 0x08, + 0x82, 0xea, 0xb6, 0x12, 0x82, 0xea, 0x76, 0x62, 0x15, 0x44, 0x4f, 0xea, + 0x73, 0x32, 0x66, 0x19, 0x41, 0xea, 0x03, 0x04, 0x82, 0xea, 0xb3, 0x02, + 0x04, 0x40, 0x82, 0xea, 0xb3, 0x52, 0x44, 0xea, 0x08, 0x04, 0x22, 0x44, + 0x4f, 0xea, 0xf7, 0x44, 0x84, 0xea, 0x77, 0x44, 0x2a, 0x44, 0xdb, 0xf8, + 0x08, 0x50, 0x84, 0xea, 0x97, 0x27, 0x03, 0x9c, 0xa6, 0x44, 0x4f, 0xea, + 0xb5, 0x44, 0x84, 0xea, 0xf5, 0x14, 0x77, 0x44, 0x84, 0xea, 0xd5, 0x05, + 0x00, 0x9c, 0x8c, 0xea, 0x04, 0x0e, 0x01, 0x9c, 0x3d, 0x44, 0xe7, 0x6d, + 0x0e, 0xea, 0x06, 0x0e, 0x4f, 0xea, 0xf6, 0x24, 0xcb, 0xf8, 0x44, 0x50, + 0x2f, 0x44, 0x8e, 0xea, 0x0c, 0x0e, 0x84, 0xea, 0xb6, 0x14, 0x4f, 0x44, + 0x4f, 0xea, 0x72, 0x35, 0x84, 0xea, 0x76, 0x64, 0x77, 0x44, 0x85, 0xea, + 0xb2, 0x05, 0x3c, 0x44, 0x43, 0xea, 0x02, 0x07, 0x85, 0xea, 0xb2, 0x5e, + 0x03, 0xea, 0x02, 0x05, 0x00, 0xeb, 0x04, 0x0a, 0x01, 0x98, 0x0f, 0x40, + 0x20, 0x30, 0x3d, 0x43, 0x01, 0x90, 0x07, 0x98, 0x75, 0x44, 0x58, 0x45, + 0x04, 0xeb, 0x05, 0x07, 0x7f, 0xf4, 0x20, 0xae, 0x00, 0x98, 0xcd, 0xf8, + 0x44, 0xc1, 0xcd, 0xf8, 0x38, 0xa1, 0xcd, 0xe9, 0x4f, 0x60, 0xcd, 0xe9, + 0x4a, 0x72, 0xcd, 0xe9, 0x4c, 0x31, 0xcd, 0xe9, 0x08, 0x45, 0x04, 0x9b, + 0x05, 0x99, 0x1b, 0x68, 0x51, 0xf8, 0x04, 0x2b, 0x13, 0x44, 0x04, 0x9a, + 0x05, 0x91, 0x42, 0xf8, 0x04, 0x3b, 0x06, 0x9b, 0x04, 0x92, 0x93, 0x42, + 0xf1, 0xd1, 0x08, 0xa8, 0x4f, 0xf4, 0x94, 0x71, 0xff, 0xf7, 0x84, 0xfc, + 0x00, 0x20, 0x53, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x2d, 0xe9, 0xf8, 0x43, + 0x03, 0x68, 0x05, 0x46, 0x0e, 0x46, 0x14, 0x46, 0x03, 0xf0, 0x3f, 0x07, + 0x9b, 0x18, 0x03, 0x60, 0x22, 0xbf, 0x43, 0x68, 0x01, 0x33, 0x43, 0x60, + 0x9f, 0xb1, 0xc7, 0xf1, 0x40, 0x09, 0x91, 0x45, 0x0f, 0xd8, 0x00, 0xf1, + 0x28, 0x08, 0x4a, 0x46, 0x08, 0xeb, 0x07, 0x00, 0x0a, 0xf0, 0x80, 0xfe, + 0x41, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x6a, 0xfc, 0xb0, 0xb9, 0x40, 0x3c, + 0x4e, 0x44, 0x3c, 0x44, 0x07, 0x46, 0x26, 0x44, 0x04, 0xe0, 0x28, 0x46, + 0xff, 0xf7, 0x60, 0xfc, 0x60, 0xb9, 0x40, 0x3c, 0x3f, 0x2c, 0xa6, 0xeb, + 0x04, 0x01, 0xf6, 0xd8, 0x44, 0xb1, 0x05, 0xf1, 0x28, 0x00, 0x22, 0x46, + 0x38, 0x44, 0x0a, 0xf0, 0x65, 0xfe, 0x00, 0x20, 0xbd, 0xe8, 0xf8, 0x83, + 0x20, 0x46, 0xfb, 0xe7, 0x10, 0xb4, 0x58, 0xb1, 0x04, 0x68, 0x4c, 0xb1, + 0x24, 0x79, 0x05, 0x3c, 0x01, 0x2c, 0x05, 0xd8, 0x42, 0xb1, 0x40, 0x68, + 0x5d, 0xf8, 0x04, 0x4b, 0xff, 0xf7, 0xb8, 0xbf, 0x02, 0x48, 0x5d, 0xf8, + 0x04, 0x4b, 0x70, 0x47, 0x10, 0x46, 0xfa, 0xe7, 0x00, 0xaf, 0xff, 0xff, + 0x38, 0xb5, 0x03, 0x68, 0x04, 0x46, 0x63, 0xb1, 0x85, 0x68, 0x55, 0xb1, + 0xfd, 0xf7, 0xbe, 0xfc, 0x40, 0xb9, 0x23, 0x68, 0x29, 0x46, 0x20, 0x46, + 0x9a, 0x79, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0xd9, 0xbf, 0x01, 0x48, + 0x38, 0xbd, 0x00, 0xbf, 0x00, 0xaf, 0xff, 0xff, 0x03, 0x68, 0x03, 0xf0, + 0x3f, 0x03, 0x5a, 0x1c, 0x03, 0x44, 0x70, 0xb5, 0x38, 0x2a, 0x0d, 0x46, + 0x00, 0xf1, 0x28, 0x06, 0x4f, 0xf0, 0x80, 0x01, 0x04, 0x46, 0x83, 0xf8, + 0x28, 0x10, 0x06, 0xeb, 0x02, 0x00, 0x61, 0xd8, 0xc2, 0xf1, 0x38, 0x02, + 0x00, 0x21, 0x0a, 0xf0, 0x2b, 0xfe, 0x20, 0x46, 0xd4, 0xe9, 0x00, 0x31, + 0x5a, 0x0f, 0xdb, 0x00, 0x42, 0xea, 0xc1, 0x02, 0x31, 0x46, 0x1b, 0xba, + 0x12, 0xba, 0x63, 0x66, 0x22, 0x66, 0xff, 0xf7, 0xfd, 0xfb, 0x00, 0x28, + 0x4b, 0xd1, 0xe3, 0x7a, 0x2b, 0x70, 0x63, 0x89, 0x6b, 0x70, 0xa3, 0x68, + 0x1b, 0x0a, 0xab, 0x70, 0xa3, 0x68, 0xeb, 0x70, 0xe3, 0x7b, 0x2b, 0x71, + 0xe3, 0x89, 0x6b, 0x71, 0xe3, 0x68, 0x1b, 0x0a, 0xab, 0x71, 0xe3, 0x68, + 0xeb, 0x71, 0xe3, 0x7c, 0x2b, 0x72, 0x63, 0x8a, 0x6b, 0x72, 0x23, 0x69, + 0x1b, 0x0a, 0xab, 0x72, 0x23, 0x69, 0xeb, 0x72, 0xe3, 0x7d, 0x2b, 0x73, + 0xe3, 0x8a, 0x6b, 0x73, 0x63, 0x69, 0x1b, 0x0a, 0xab, 0x73, 0x63, 0x69, + 0xeb, 0x73, 0xe3, 0x7e, 0x2b, 0x74, 0x63, 0x8b, 0x6b, 0x74, 0xa3, 0x69, + 0x1b, 0x0a, 0xab, 0x74, 0xa3, 0x69, 0xeb, 0x74, 0xe3, 0x7f, 0x2b, 0x75, + 0xe3, 0x8b, 0x6b, 0x75, 0xe3, 0x69, 0x1b, 0x0a, 0xab, 0x75, 0xe3, 0x69, + 0xeb, 0x75, 0x94, 0xf8, 0x23, 0x30, 0x2b, 0x76, 0x63, 0x8c, 0x6b, 0x76, + 0x23, 0x6a, 0x1b, 0x0a, 0xab, 0x76, 0x23, 0x6a, 0xeb, 0x76, 0xa3, 0x6e, + 0x4b, 0xb9, 0x94, 0xf8, 0x27, 0x30, 0x2b, 0x77, 0xe3, 0x8c, 0x6b, 0x77, + 0x63, 0x6a, 0x1b, 0x0a, 0xab, 0x77, 0x63, 0x6a, 0xeb, 0x77, 0x70, 0xbd, + 0x00, 0x21, 0xc2, 0xf1, 0x40, 0x02, 0x0a, 0xf0, 0xc9, 0xfd, 0x31, 0x46, + 0x20, 0x46, 0xff, 0xf7, 0xa5, 0xfb, 0x00, 0x28, 0xf3, 0xd1, 0x01, 0x46, + 0x38, 0x22, 0x30, 0x46, 0x91, 0xe7, 0x00, 0x00, 0x40, 0xb1, 0x03, 0x68, + 0x33, 0xb1, 0x1b, 0x79, 0x05, 0x3b, 0x01, 0x2b, 0x02, 0xd8, 0x40, 0x68, + 0xff, 0xf7, 0x72, 0xbf, 0x00, 0x48, 0x70, 0x47, 0x00, 0xaf, 0xff, 0xff, + 0x42, 0xf2, 0x10, 0x73, 0x99, 0x42, 0x2d, 0xe9, 0xf0, 0x41, 0x04, 0x46, + 0x0d, 0x46, 0x03, 0xd9, 0x6f, 0xf0, 0x0f, 0x00, 0xbd, 0xe8, 0xf0, 0x81, + 0x46, 0x68, 0x8e, 0x42, 0x1a, 0xd2, 0x04, 0x21, 0x28, 0x46, 0x0c, 0xf0, + 0x41, 0xf8, 0x07, 0x46, 0x00, 0x28, 0xf1, 0xd0, 0xd4, 0xf8, 0x08, 0x80, + 0xb8, 0xf1, 0x00, 0x0f, 0x0c, 0xd0, 0xb6, 0x00, 0x41, 0x46, 0x32, 0x46, + 0x0a, 0xf0, 0x82, 0xfd, 0x1e, 0xb1, 0x31, 0x46, 0x40, 0x46, 0xff, 0xf7, + 0x63, 0xfb, 0xa0, 0x68, 0x0a, 0xf0, 0x22, 0xfd, 0xc4, 0xe9, 0x01, 0x57, + 0x00, 0x20, 0xdd, 0xe7, 0x42, 0xf2, 0x10, 0x73, 0x99, 0x42, 0x2d, 0xe9, + 0xf0, 0x41, 0x05, 0x46, 0x0c, 0x46, 0x03, 0xd9, 0x6f, 0xf0, 0x0f, 0x00, + 0xbd, 0xe8, 0xf0, 0x81, 0x46, 0x68, 0x8e, 0x42, 0x03, 0xd8, 0xbd, 0xe8, + 0xf0, 0x41, 0xff, 0xf7, 0xc1, 0xbf, 0x73, 0x1e, 0xfb, 0xb9, 0x01, 0x33, + 0x04, 0x21, 0x9c, 0x42, 0x38, 0xbf, 0x1c, 0x46, 0x20, 0x46, 0x0c, 0xf0, + 0x0b, 0xf8, 0x07, 0x46, 0x00, 0x28, 0xe7, 0xd0, 0xd5, 0xf8, 0x08, 0x80, + 0xb8, 0xf1, 0x00, 0x0f, 0x0b, 0xd0, 0x41, 0x46, 0xa2, 0x00, 0x0a, 0xf0, + 0x4d, 0xfd, 0xb1, 0x00, 0x02, 0xd0, 0x40, 0x46, 0xff, 0xf7, 0x2e, 0xfb, + 0xa8, 0x68, 0x0a, 0xf0, 0xed, 0xfc, 0x00, 0x20, 0xc5, 0xe9, 0x01, 0x47, + 0xd4, 0xe7, 0xaa, 0x68, 0x52, 0xf8, 0x23, 0x20, 0x00, 0x2a, 0xda, 0xd1, + 0x01, 0x3b, 0xd7, 0xe7, 0x03, 0x68, 0xf0, 0xb5, 0x04, 0x46, 0x89, 0xb0, + 0x0d, 0x46, 0xf3, 0xb1, 0x86, 0x68, 0xe6, 0xb1, 0x69, 0x46, 0x9f, 0x79, + 0xff, 0xf7, 0x7e, 0xff, 0xa8, 0xb9, 0x20, 0x46, 0xfd, 0xf7, 0xa6, 0xfb, + 0x88, 0xb9, 0x23, 0x68, 0xf1, 0x19, 0x20, 0x46, 0x9a, 0x79, 0xff, 0xf7, + 0xc3, 0xfe, 0x50, 0xb9, 0x23, 0x68, 0x69, 0x46, 0x20, 0x46, 0x5a, 0x79, + 0xff, 0xf7, 0xbc, 0xfe, 0x18, 0xb9, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, + 0x67, 0xff, 0x09, 0xb0, 0xf0, 0xbd, 0x01, 0x48, 0xfb, 0xe7, 0x00, 0xbf, + 0x00, 0xaf, 0xff, 0xff, 0x10, 0xb4, 0x04, 0x68, 0x2c, 0xb1, 0x83, 0x68, + 0x1b, 0xb1, 0x5d, 0xf8, 0x04, 0x4b, 0xff, 0xf7, 0xa7, 0xbe, 0x02, 0x48, + 0x5d, 0xf8, 0x04, 0x4b, 0x70, 0x47, 0x00, 0xbf, 0x00, 0xaf, 0xff, 0xff, + 0x2d, 0xe9, 0xf0, 0x41, 0x0e, 0x46, 0x88, 0xb0, 0x17, 0x46, 0x05, 0x46, + 0x00, 0x28, 0x52, 0xd0, 0x03, 0x68, 0x00, 0x2b, 0x4f, 0xd0, 0x82, 0x68, + 0x00, 0x2a, 0x4c, 0xd0, 0x9b, 0x79, 0xbb, 0x42, 0x13, 0xd2, 0xfd, 0xf7, + 0x69, 0xfb, 0x04, 0x46, 0x88, 0xbb, 0x3a, 0x46, 0x31, 0x46, 0x28, 0x46, + 0xff, 0xf7, 0x86, 0xfe, 0x04, 0x46, 0x50, 0xbb, 0x69, 0x46, 0x28, 0x46, + 0xff, 0xf7, 0x30, 0xff, 0x04, 0x46, 0x20, 0xbb, 0x2b, 0x68, 0x6e, 0x46, + 0x5f, 0x79, 0x2b, 0x68, 0x36, 0x21, 0xd5, 0xf8, 0x08, 0x80, 0x01, 0x3e, + 0x9a, 0x79, 0x40, 0x46, 0x47, 0x44, 0x08, 0xeb, 0x02, 0x04, 0x0a, 0xf0, + 0xdd, 0xfc, 0x2b, 0x68, 0x5c, 0x21, 0x20, 0x46, 0x9a, 0x79, 0x0a, 0xf0, + 0xd7, 0xfc, 0x43, 0x46, 0x60, 0x1e, 0x9f, 0x42, 0x13, 0xd1, 0x28, 0x46, + 0xfd, 0xf7, 0x3e, 0xfb, 0x04, 0x46, 0x30, 0xb9, 0x2b, 0x68, 0x41, 0x46, + 0x28, 0x46, 0x9a, 0x79, 0xff, 0xf7, 0x5a, 0xfe, 0x04, 0x46, 0x20, 0x21, + 0x68, 0x46, 0xff, 0xf7, 0x9b, 0xfa, 0x20, 0x46, 0x08, 0xb0, 0xbd, 0xe8, + 0xf0, 0x81, 0x16, 0xf8, 0x01, 0x1f, 0x1a, 0x78, 0x4a, 0x40, 0x03, 0xf8, + 0x01, 0x2b, 0x10, 0xf8, 0x01, 0x2f, 0x31, 0x78, 0x4a, 0x40, 0x02, 0x70, + 0xdd, 0xe7, 0x01, 0x4c, 0xed, 0xe7, 0x00, 0xbf, 0x00, 0xaf, 0xff, 0xff, + 0x10, 0xb5, 0x04, 0x46, 0xf0, 0xb1, 0x03, 0x68, 0xe3, 0xb1, 0x40, 0x68, + 0x48, 0xb1, 0x1b, 0x79, 0x05, 0x3b, 0x01, 0x2b, 0x02, 0xd8, 0x6c, 0x21, + 0xff, 0xf7, 0x78, 0xfa, 0x60, 0x68, 0x0a, 0xf0, 0x37, 0xfc, 0xa0, 0x68, + 0x40, 0xb1, 0x23, 0x68, 0x9b, 0x79, 0x59, 0x00, 0x0b, 0xb1, 0xff, 0xf7, + 0x6d, 0xfa, 0xa0, 0x68, 0x0a, 0xf0, 0x2c, 0xfc, 0x20, 0x46, 0x0c, 0x21, + 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x64, 0xba, 0x10, 0xbd, 0x2d, 0xe9, + 0xf0, 0x47, 0x05, 0x68, 0x8a, 0xb0, 0x82, 0x46, 0x0e, 0x46, 0x17, 0x46, + 0x05, 0xb1, 0x6d, 0x79, 0x76, 0xb3, 0x00, 0x2f, 0x14, 0xbf, 0x4f, 0xf0, + 0x02, 0x08, 0x4f, 0xf0, 0x01, 0x08, 0x00, 0x23, 0x0a, 0xf1, 0x0c, 0x09, + 0x8d, 0xf8, 0x04, 0x30, 0x50, 0x46, 0xff, 0xf7, 0x1b, 0xfe, 0x04, 0x46, + 0xb0, 0xb9, 0x2a, 0x46, 0x49, 0x46, 0x50, 0x46, 0xff, 0xf7, 0x4e, 0xff, + 0x04, 0x46, 0x78, 0xb9, 0x01, 0x22, 0x01, 0xa9, 0x50, 0x46, 0xff, 0xf7, + 0x47, 0xff, 0x04, 0x46, 0x40, 0xb9, 0xb8, 0xf1, 0x02, 0x0f, 0x10, 0xd0, + 0x02, 0xa9, 0x50, 0x46, 0xff, 0xf7, 0x14, 0xff, 0x04, 0x46, 0x98, 0xb1, + 0x02, 0xa8, 0x20, 0x21, 0xff, 0xf7, 0x2e, 0xfa, 0x20, 0x46, 0x0a, 0xb0, + 0xbd, 0xe8, 0xf0, 0x87, 0x4f, 0xf0, 0x01, 0x08, 0xd3, 0xe7, 0x3a, 0x46, + 0x31, 0x46, 0x50, 0x46, 0xff, 0xf7, 0x2c, 0xff, 0x04, 0x46, 0x00, 0x28, + 0xe6, 0xd0, 0xeb, 0xe7, 0x2a, 0x46, 0x02, 0xa9, 0x50, 0x46, 0xff, 0xf7, + 0x33, 0xff, 0x04, 0x46, 0x00, 0x28, 0xe3, 0xd1, 0x2a, 0x46, 0x49, 0x46, + 0x50, 0x46, 0xff, 0xf7, 0x1b, 0xff, 0x04, 0x46, 0x00, 0x28, 0xdb, 0xd1, + 0x49, 0x46, 0x50, 0x46, 0xff, 0xf7, 0xea, 0xfe, 0x04, 0x46, 0x00, 0x28, + 0xd4, 0xd1, 0x9d, 0xf8, 0x04, 0x30, 0x01, 0x33, 0xdb, 0xb2, 0x43, 0x45, + 0x8d, 0xf8, 0x04, 0x30, 0xb0, 0xd3, 0xcb, 0xe7, 0x2d, 0xe9, 0xf8, 0x43, + 0x06, 0x68, 0x04, 0x46, 0x0f, 0x46, 0x15, 0x46, 0x06, 0xb1, 0x76, 0x79, + 0xb5, 0xf5, 0x80, 0x6f, 0x3b, 0xd8, 0xe3, 0x6b, 0x63, 0xb9, 0x04, 0xf1, + 0x0c, 0x09, 0xbd, 0xb9, 0x2a, 0x46, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, + 0x86, 0xff, 0x78, 0xb9, 0xe3, 0x6a, 0x01, 0x33, 0xe3, 0x62, 0x0b, 0xe0, + 0x63, 0x6b, 0x01, 0x2b, 0x03, 0xd0, 0xe2, 0x6a, 0xa3, 0x6b, 0x9a, 0x42, + 0xeb, 0xdd, 0x20, 0x46, 0xf1, 0xf7, 0xb9, 0xfb, 0x00, 0x28, 0xe6, 0xd0, + 0xbd, 0xe8, 0xf8, 0x83, 0xae, 0x42, 0x20, 0x46, 0xb0, 0x46, 0x28, 0xbf, + 0xa8, 0x46, 0xff, 0xf7, 0x9f, 0xfd, 0x00, 0x28, 0xf4, 0xd1, 0x32, 0x46, + 0x49, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xd2, 0xfe, 0x00, 0x28, 0xed, 0xd1, + 0x49, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xa2, 0xfe, 0x00, 0x28, 0xe7, 0xd1, + 0x38, 0x46, 0x42, 0x46, 0x49, 0x46, 0x47, 0x44, 0xa5, 0xeb, 0x08, 0x05, + 0x0a, 0xf0, 0xd2, 0xfb, 0xc7, 0xe7, 0x6f, 0xf0, 0x02, 0x00, 0xdb, 0xe7, + 0x00, 0x23, 0x01, 0x22, 0xc0, 0xe9, 0x04, 0x33, 0xc0, 0xe9, 0x00, 0x23, + 0xc0, 0xe9, 0x02, 0x32, 0xc0, 0xe9, 0x06, 0x23, 0x03, 0x62, 0x70, 0x47, + 0x38, 0xb5, 0x00, 0x24, 0x01, 0x25, 0x01, 0x46, 0x04, 0x70, 0x44, 0x62, + 0xc0, 0xe9, 0x01, 0x54, 0xc0, 0xe9, 0x03, 0x45, 0xc0, 0xe9, 0x05, 0x44, + 0xc0, 0xe9, 0x07, 0x54, 0x28, 0x30, 0xff, 0xf7, 0xe3, 0xff, 0xc1, 0xe9, + 0x13, 0x54, 0xc1, 0xe9, 0x15, 0x44, 0xc1, 0xe9, 0x17, 0x44, 0xc1, 0xe9, + 0x19, 0x44, 0xc1, 0xe9, 0x1b, 0x44, 0xc1, 0xe9, 0x1d, 0x44, 0x38, 0xbd, + 0x03, 0x6b, 0x2b, 0xb1, 0xc3, 0x6b, 0x00, 0x2b, 0x0c, 0xbf, 0x02, 0x20, + 0x01, 0x20, 0x70, 0x47, 0x18, 0x46, 0x70, 0x47, 0x02, 0x46, 0x43, 0x68, + 0x30, 0xb5, 0x23, 0xb9, 0x48, 0x68, 0x58, 0xb9, 0x00, 0x2b, 0x38, 0xd1, + 0x31, 0xe0, 0x90, 0x68, 0x00, 0xeb, 0x83, 0x00, 0x50, 0xf8, 0x04, 0x0c, + 0x00, 0x28, 0xf3, 0xd1, 0x01, 0x3b, 0xf0, 0xe7, 0x8c, 0x68, 0x04, 0xeb, + 0x80, 0x05, 0x55, 0xf8, 0x04, 0x5c, 0x25, 0xbb, 0x01, 0x38, 0xea, 0xe7, + 0x83, 0x42, 0x09, 0x68, 0x01, 0xd2, 0x48, 0x42, 0x22, 0xe0, 0x10, 0x68, + 0x00, 0x28, 0x03, 0xdd, 0x00, 0x29, 0x13, 0xda, 0x01, 0x20, 0x1b, 0xe0, + 0x00, 0x29, 0x0f, 0xdd, 0x70, 0xb1, 0x4f, 0xf0, 0xff, 0x30, 0x15, 0xe0, + 0x91, 0x68, 0x51, 0xf8, 0x23, 0x50, 0x54, 0xf8, 0x23, 0x10, 0x8d, 0x42, + 0x0e, 0xd8, 0x03, 0xf1, 0xff, 0x33, 0x02, 0xd2, 0x40, 0x42, 0x09, 0xe0, + 0x01, 0x3b, 0x59, 0x1c, 0xf0, 0xd1, 0x00, 0x20, 0x04, 0xe0, 0x00, 0x2b, + 0xda, 0xd0, 0x83, 0x42, 0xd8, 0xd9, 0x10, 0x68, 0x30, 0xbd, 0x1f, 0xb5, + 0x81, 0xea, 0xe1, 0x73, 0xcd, 0xf8, 0x0c, 0xd0, 0xa3, 0xeb, 0xe1, 0x73, + 0x00, 0x93, 0x4b, 0x1c, 0x4f, 0xf0, 0x01, 0x03, 0x18, 0xbf, 0x01, 0x21, + 0x02, 0x93, 0x01, 0x91, 0x01, 0xa9, 0xff, 0xf7, 0xab, 0xff, 0x05, 0xb0, + 0x5d, 0xf8, 0x04, 0xfb, 0xf8, 0xb5, 0x04, 0x46, 0x08, 0x46, 0x63, 0x68, + 0xb2, 0xeb, 0x83, 0x0f, 0x4f, 0xea, 0x83, 0x05, 0x1c, 0xd9, 0x52, 0x1b, + 0x8e, 0x18, 0x00, 0x21, 0x0a, 0xf0, 0x42, 0xfb, 0x2a, 0x46, 0x30, 0x46, + 0x81, 0x18, 0x00, 0x23, 0x9a, 0x42, 0x13, 0xd1, 0x00, 0x20, 0xf8, 0xbd, + 0x03, 0xf0, 0x03, 0x01, 0x23, 0xf0, 0x03, 0x0c, 0xa7, 0x68, 0xce, 0x00, + 0x57, 0xf8, 0x0c, 0x10, 0xf1, 0x40, 0x11, 0xf0, 0xff, 0x0f, 0x11, 0xd1, + 0x01, 0x33, 0xab, 0x42, 0xf0, 0xd1, 0xe9, 0xe7, 0x13, 0x46, 0xfa, 0xe7, + 0x03, 0xf0, 0x03, 0x00, 0x23, 0xf0, 0x03, 0x06, 0xa7, 0x68, 0x01, 0x33, + 0xc5, 0x00, 0xb8, 0x59, 0xe8, 0x40, 0x01, 0xf8, 0x01, 0x0d, 0xdd, 0xe7, + 0x6f, 0xf0, 0x07, 0x00, 0xdd, 0xe7, 0x00, 0x00, 0x42, 0x2a, 0xf0, 0xb5, + 0x06, 0x46, 0x93, 0xb0, 0x08, 0x46, 0x15, 0x46, 0x26, 0xd8, 0x01, 0xa9, + 0xff, 0xf7, 0xbe, 0xff, 0x04, 0x46, 0xc8, 0xb9, 0x11, 0x49, 0x30, 0x46, + 0xf1, 0xf7, 0xd0, 0xf9, 0x04, 0x46, 0x98, 0xb9, 0x06, 0xf1, 0x0c, 0x07, + 0x20, 0x22, 0x30, 0x46, 0x39, 0x46, 0xff, 0xf7, 0xf1, 0xfd, 0x04, 0x46, + 0x50, 0xb9, 0x20, 0x22, 0x01, 0x21, 0x38, 0x46, 0x0a, 0xf0, 0xf8, 0xfa, + 0x2a, 0x46, 0x01, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x68, 0xfe, 0x04, 0x46, + 0x1d, 0xb1, 0x29, 0x46, 0x01, 0xa8, 0xff, 0xf7, 0xc5, 0xf8, 0x20, 0x46, + 0x13, 0xb0, 0xf0, 0xbd, 0x01, 0x4c, 0xf6, 0xe7, 0x50, 0xd9, 0x01, 0x08, + 0x00, 0xb3, 0xff, 0xff, 0x02, 0x46, 0x40, 0x68, 0x80, 0xb1, 0x43, 0x1e, + 0x92, 0x68, 0x73, 0xb9, 0x52, 0xf8, 0x23, 0x10, 0x00, 0x20, 0x4f, 0xf0, + 0x00, 0x42, 0x11, 0x42, 0x03, 0xd1, 0x01, 0x30, 0x52, 0x08, 0x20, 0x28, + 0xf9, 0xd1, 0x01, 0x33, 0xc0, 0xeb, 0x43, 0x10, 0x70, 0x47, 0x52, 0xf8, + 0x23, 0x10, 0x00, 0x29, 0xec, 0xd1, 0x01, 0x3b, 0xe9, 0xe7, 0x00, 0x00, + 0x38, 0xb5, 0x14, 0x4a, 0x01, 0x25, 0x14, 0x4b, 0x04, 0x46, 0xc2, 0x60, + 0x43, 0x66, 0x08, 0x23, 0x12, 0x4a, 0x83, 0x63, 0x42, 0x62, 0x12, 0x4a, + 0x45, 0x64, 0x42, 0x65, 0x11, 0x4a, 0xc0, 0xe9, 0x01, 0x53, 0xc0, 0xe9, + 0x07, 0x53, 0xc0, 0xe9, 0x13, 0x53, 0xc0, 0xe9, 0x0a, 0x53, 0x0e, 0x4b, + 0xc0, 0xe9, 0x0f, 0x35, 0x0d, 0x4b, 0xc0, 0xe9, 0x0c, 0x25, 0x83, 0x64, + 0x04, 0x30, 0xff, 0xf7, 0xc3, 0xff, 0xa0, 0x65, 0x04, 0xf1, 0x4c, 0x00, + 0xff, 0xf7, 0xbe, 0xff, 0xc4, 0xe9, 0x17, 0x05, 0x00, 0x20, 0x38, 0xbd, + 0xf4, 0xe1, 0x01, 0x08, 0x09, 0x19, 0x01, 0x08, 0x74, 0xe1, 0x01, 0x08, + 0xd4, 0xe1, 0x01, 0x08, 0x94, 0xe1, 0x01, 0x08, 0xb4, 0xe1, 0x01, 0x08, + 0x18, 0x01, 0x00, 0x24, 0xf8, 0xb5, 0x04, 0x46, 0x0e, 0x46, 0x4d, 0x09, + 0x01, 0xf0, 0x1f, 0x07, 0xff, 0xf7, 0xa4, 0xff, 0x63, 0x68, 0x30, 0x44, + 0xb0, 0xeb, 0x43, 0x1f, 0x05, 0xd8, 0x1f, 0x2e, 0x0f, 0xd8, 0x00, 0x2f, + 0x3b, 0xd1, 0x00, 0x20, 0x0a, 0xe0, 0x10, 0xf0, 0x1f, 0x01, 0x18, 0xbf, + 0x01, 0x21, 0x01, 0xeb, 0x50, 0x11, 0x20, 0x46, 0xff, 0xf7, 0xc4, 0xfc, + 0x00, 0x28, 0xee, 0xd0, 0xf8, 0xbd, 0x63, 0x68, 0x6f, 0xf0, 0x03, 0x00, + 0x9a, 0x00, 0x68, 0x43, 0x19, 0x46, 0xa9, 0x42, 0xa2, 0xf1, 0x04, 0x02, + 0x0b, 0xd8, 0xab, 0x42, 0x4f, 0xf0, 0x00, 0x02, 0x28, 0xbf, 0x2b, 0x46, + 0x9b, 0x00, 0x04, 0x3b, 0x19, 0x1d, 0xdc, 0xd0, 0xa1, 0x68, 0xca, 0x50, + 0xf9, 0xe7, 0xa6, 0x68, 0x01, 0x39, 0x06, 0xeb, 0x02, 0x0c, 0x5c, 0xf8, + 0x00, 0xc0, 0x46, 0xf8, 0x02, 0xc0, 0xe6, 0xe7, 0xa0, 0x68, 0x50, 0xf8, + 0x25, 0x10, 0x01, 0xfa, 0x07, 0xf3, 0x13, 0x43, 0x21, 0xfa, 0x06, 0xf2, + 0x40, 0xf8, 0x25, 0x30, 0x01, 0x35, 0x63, 0x68, 0xab, 0x42, 0xf1, 0xd8, + 0xc3, 0xe7, 0x00, 0x22, 0xc7, 0xf1, 0x20, 0x06, 0xf7, 0xe7, 0x43, 0x68, + 0xb1, 0xeb, 0x43, 0x1f, 0x3f, 0xbf, 0x4a, 0x09, 0x83, 0x68, 0x01, 0xf0, + 0x1f, 0x01, 0x53, 0xf8, 0x22, 0x00, 0x3a, 0xbf, 0x20, 0xfa, 0x01, 0xf1, + 0x01, 0xf0, 0x01, 0x00, 0x00, 0x20, 0x70, 0x47, 0xf8, 0xb5, 0x07, 0x46, + 0x0d, 0x46, 0xff, 0xf7, 0x77, 0xfe, 0x02, 0x28, 0x06, 0x46, 0x1d, 0xd1, + 0x00, 0x21, 0x28, 0x46, 0xff, 0xf7, 0xe3, 0xff, 0x60, 0xbb, 0x01, 0x21, + 0x28, 0x46, 0xff, 0xf7, 0xde, 0xff, 0x04, 0x46, 0x30, 0xbb, 0x28, 0x46, + 0xff, 0xf7, 0x34, 0xff, 0xfb, 0x6d, 0x01, 0x38, 0x98, 0x42, 0x1f, 0xd1, + 0xfe, 0x28, 0x07, 0xd1, 0x31, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xcf, 0xff, + 0x0d, 0x4b, 0x04, 0x1e, 0x18, 0xbf, 0x1c, 0x46, 0x20, 0x46, 0xf8, 0xbd, + 0x01, 0x28, 0x0f, 0xd1, 0x01, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x9d, 0xfe, + 0x00, 0x28, 0x0b, 0xdb, 0x07, 0xf1, 0x4c, 0x01, 0x28, 0x46, 0xff, 0xf7, + 0x53, 0xfe, 0x00, 0x28, 0x03, 0x4c, 0xb8, 0xbf, 0x00, 0x24, 0xeb, 0xe7, + 0x02, 0x4c, 0xe9, 0xe7, 0x00, 0x4c, 0xe7, 0xe7, 0x80, 0xb3, 0xff, 0xff, + 0x80, 0xb0, 0xff, 0xff, 0x70, 0xb5, 0x0e, 0x46, 0x01, 0x21, 0x04, 0x46, + 0xff, 0xf7, 0x38, 0xfc, 0x05, 0x46, 0x48, 0xb9, 0x62, 0x68, 0x01, 0x46, + 0xa0, 0x68, 0x92, 0x00, 0x0a, 0xf0, 0xe0, 0xf9, 0xa3, 0x68, 0x1e, 0x60, + 0x01, 0x23, 0x23, 0x60, 0x28, 0x46, 0x70, 0xbd, 0x10, 0xb5, 0x01, 0x21, + 0x04, 0x46, 0xff, 0xf7, 0xe7, 0xff, 0x60, 0xb9, 0x01, 0x21, 0x04, 0xf1, + 0x0c, 0x00, 0xff, 0xf7, 0xe1, 0xff, 0x30, 0xb9, 0x01, 0x46, 0x04, 0xf1, + 0x18, 0x00, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xd9, 0xbf, 0x10, 0xbd, + 0xf0, 0xb4, 0x43, 0x68, 0x4e, 0x09, 0x01, 0xf0, 0x1f, 0x04, 0xb3, 0x42, + 0x01, 0xd3, 0x04, 0xd1, 0x5c, 0xb3, 0x00, 0x21, 0xf0, 0xbc, 0xff, 0xf7, + 0xcb, 0xbf, 0x1f, 0x29, 0x27, 0xd8, 0x04, 0xbb, 0x00, 0x20, 0xf0, 0xbc, + 0x70, 0x47, 0x82, 0x68, 0x57, 0x59, 0x04, 0x35, 0x42, 0xf8, 0x21, 0x70, + 0x01, 0x31, 0x9a, 0x1b, 0x8a, 0x42, 0xf6, 0xd8, 0x00, 0x21, 0x93, 0x42, + 0xef, 0xd9, 0x85, 0x68, 0x45, 0xf8, 0x22, 0x10, 0x01, 0x32, 0xf8, 0xe7, + 0x86, 0x68, 0x56, 0xf8, 0x23, 0x50, 0x25, 0xfa, 0x04, 0xf2, 0x0a, 0x43, + 0x05, 0xfa, 0x07, 0xf1, 0x46, 0xf8, 0x23, 0x20, 0x01, 0x3b, 0xf3, 0xd2, + 0xde, 0xe7, 0x00, 0x21, 0xc4, 0xf1, 0x20, 0x07, 0xf8, 0xe7, 0x1f, 0x29, + 0xd8, 0xd9, 0xb5, 0x00, 0x00, 0x21, 0xde, 0xe7, 0x88, 0x42, 0xf8, 0xb5, + 0x06, 0x46, 0x0d, 0x46, 0x14, 0x46, 0x01, 0xd1, 0x00, 0x20, 0xf8, 0xbd, + 0x49, 0x68, 0xff, 0xf7, 0xd1, 0xfb, 0x00, 0x28, 0xf9, 0xd1, 0x71, 0x68, + 0x28, 0x46, 0xff, 0xf7, 0xcb, 0xfb, 0x00, 0x28, 0xf3, 0xd1, 0x62, 0x42, + 0x31, 0x68, 0x22, 0x43, 0x2c, 0x68, 0xc2, 0xf3, 0xc0, 0x12, 0xc2, 0xf1, + 0x01, 0x03, 0x03, 0xfb, 0x01, 0xf7, 0x51, 0x43, 0x04, 0xfb, 0x02, 0x74, + 0x34, 0x60, 0x2c, 0x68, 0x04, 0xfb, 0x03, 0x11, 0x29, 0x60, 0x71, 0x68, + 0x88, 0x42, 0xdd, 0xd2, 0xd6, 0xf8, 0x08, 0xc0, 0xaf, 0x68, 0x5c, 0xf8, + 0x20, 0x10, 0x57, 0xf8, 0x20, 0x40, 0x03, 0xfb, 0x01, 0xfe, 0x51, 0x43, + 0x04, 0xfb, 0x02, 0xe4, 0x4c, 0xf8, 0x20, 0x40, 0x57, 0xf8, 0x20, 0x40, + 0x04, 0xfb, 0x03, 0x11, 0x47, 0xf8, 0x20, 0x10, 0x01, 0x30, 0xe6, 0xe7, + 0x2d, 0xe9, 0xf0, 0x41, 0x0d, 0x46, 0x49, 0x68, 0x06, 0x46, 0x14, 0x46, + 0xff, 0xf7, 0x96, 0xfb, 0xb8, 0xb9, 0x62, 0x42, 0x29, 0x68, 0x33, 0x68, + 0x22, 0x43, 0xd5, 0xf8, 0x04, 0xe0, 0xd5, 0xf8, 0x08, 0x80, 0xc2, 0xf3, + 0xc0, 0x12, 0x51, 0x43, 0xc2, 0xf1, 0x01, 0x0c, 0x03, 0xfb, 0x0c, 0x13, + 0xb1, 0x68, 0x33, 0x60, 0x03, 0x46, 0x9e, 0x45, 0x05, 0xd1, 0x6b, 0x68, + 0x72, 0x68, 0x9a, 0x42, 0x0c, 0xd8, 0xbd, 0xe8, 0xf0, 0x81, 0x58, 0xf8, + 0x23, 0x70, 0x51, 0xf8, 0x23, 0x40, 0x57, 0x43, 0x04, 0xfb, 0x0c, 0x74, + 0x41, 0xf8, 0x23, 0x40, 0x01, 0x33, 0xec, 0xe7, 0x51, 0xf8, 0x23, 0x20, + 0x0c, 0xfb, 0x02, 0xf2, 0x41, 0xf8, 0x23, 0x20, 0x01, 0x33, 0xe7, 0xe7, + 0x10, 0xb5, 0x04, 0x46, 0x70, 0xb1, 0x80, 0x68, 0x38, 0xb1, 0x61, 0x68, + 0x89, 0x00, 0x01, 0xd0, 0xfe, 0xf7, 0xe6, 0xfe, 0xa0, 0x68, 0x0a, 0xf0, + 0xa5, 0xf8, 0x00, 0x23, 0x01, 0x22, 0xa3, 0x60, 0xc4, 0xe9, 0x00, 0x23, + 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xe9, 0xff, 0x04, 0xf1, + 0x0c, 0x00, 0xff, 0xf7, 0xe5, 0xff, 0x04, 0xf1, 0x18, 0x00, 0xbd, 0xe8, + 0x10, 0x40, 0xff, 0xf7, 0xdf, 0xbf, 0x08, 0xb1, 0xff, 0xf7, 0xef, 0xbf, + 0x70, 0x47, 0x70, 0xb5, 0x04, 0x46, 0x60, 0xb3, 0x03, 0x6e, 0x01, 0x2b, + 0x12, 0xd0, 0x04, 0x30, 0xff, 0xf7, 0xd2, 0xff, 0x04, 0xf1, 0x10, 0x00, + 0xff, 0xf7, 0xce, 0xff, 0x04, 0xf1, 0x1c, 0x00, 0xff, 0xf7, 0xca, 0xff, + 0x04, 0xf1, 0x28, 0x00, 0xff, 0xf7, 0xe7, 0xff, 0x04, 0xf1, 0x4c, 0x00, + 0xff, 0xf7, 0xc2, 0xff, 0x63, 0x6f, 0x8b, 0xb9, 0x20, 0x46, 0x7c, 0x21, + 0xbd, 0xe8, 0x70, 0x40, 0xfe, 0xf7, 0xaa, 0xbe, 0x06, 0xfb, 0x05, 0x00, + 0x01, 0x35, 0xff, 0xf7, 0xd6, 0xff, 0xd4, 0xe9, 0x1d, 0x03, 0xab, 0x42, + 0xf6, 0xd8, 0x0a, 0xf0, 0x61, 0xf8, 0xed, 0xe7, 0x00, 0x25, 0x24, 0x26, + 0xf5, 0xe7, 0x70, 0xbd, 0x2d, 0xe9, 0xf8, 0x43, 0x11, 0xf0, 0x03, 0x06, + 0x99, 0x46, 0x43, 0x68, 0x05, 0x46, 0x18, 0xbf, 0x01, 0x26, 0x0f, 0x46, + 0x90, 0x46, 0x06, 0xeb, 0x91, 0x06, 0xb3, 0x42, 0x08, 0xd1, 0x00, 0x21, + 0x28, 0x46, 0xff, 0xf7, 0xc1, 0xfe, 0x04, 0x46, 0x88, 0xb1, 0x20, 0x46, + 0xbd, 0xe8, 0xf8, 0x83, 0xff, 0xf7, 0x90, 0xff, 0x00, 0x23, 0x01, 0x22, + 0x31, 0x46, 0x28, 0x46, 0xab, 0x60, 0xc5, 0xe9, 0x00, 0x23, 0xff, 0xf7, + 0xef, 0xfa, 0x04, 0x46, 0x00, 0x28, 0xe8, 0xd0, 0xed, 0xe7, 0xc7, 0xeb, + 0x86, 0x03, 0xa9, 0x68, 0x3a, 0x46, 0x48, 0x46, 0x19, 0x44, 0xc0, 0x47, + 0x04, 0x46, 0x00, 0x28, 0xe3, 0xd1, 0x31, 0x46, 0xa8, 0x68, 0xfd, 0xf7, + 0x9d, 0xf8, 0xde, 0xe7, 0x2d, 0xe9, 0xf0, 0x41, 0x12, 0xf0, 0x03, 0x06, + 0x43, 0x68, 0x04, 0x46, 0x88, 0x46, 0x18, 0xbf, 0x01, 0x26, 0x17, 0x46, + 0x06, 0xeb, 0x92, 0x06, 0xb3, 0x42, 0x08, 0xd1, 0x00, 0x21, 0x20, 0x46, + 0xff, 0xf7, 0x8c, 0xfe, 0x05, 0x46, 0x88, 0xb1, 0x28, 0x46, 0xbd, 0xe8, + 0xf0, 0x81, 0xff, 0xf7, 0x5b, 0xff, 0x00, 0x23, 0x01, 0x22, 0x31, 0x46, + 0x20, 0x46, 0xa3, 0x60, 0xc4, 0xe9, 0x00, 0x23, 0xff, 0xf7, 0xba, 0xfa, + 0x05, 0x46, 0x00, 0x28, 0xe8, 0xd0, 0xed, 0xe7, 0xb8, 0xf1, 0x00, 0x0f, + 0xea, 0xd0, 0xa3, 0x68, 0xc7, 0xeb, 0x86, 0x00, 0x41, 0x46, 0x3a, 0x46, + 0x18, 0x44, 0x0a, 0xf0, 0x4d, 0xf8, 0x31, 0x46, 0xa0, 0x68, 0xfd, 0xf7, + 0x67, 0xf8, 0xdd, 0xe7, 0x2d, 0xe9, 0xf8, 0x43, 0x81, 0x46, 0x0d, 0x46, + 0x90, 0x46, 0x1e, 0x46, 0x1b, 0xb9, 0x4d, 0x4c, 0x20, 0x46, 0xbd, 0xe8, + 0xf8, 0x83, 0x04, 0x30, 0xff, 0xf7, 0x64, 0xfd, 0xc4, 0x1d, 0x48, 0x46, + 0xff, 0xf7, 0x92, 0xfc, 0x02, 0x28, 0x4f, 0xea, 0xd4, 0x07, 0x65, 0xd1, + 0xbe, 0x42, 0xee, 0xd1, 0x16, 0xf0, 0x03, 0x01, 0x6b, 0x68, 0x18, 0xbf, + 0x01, 0x21, 0x01, 0xeb, 0x54, 0x14, 0x9c, 0x42, 0x4a, 0xd1, 0x00, 0x21, + 0x28, 0x46, 0xff, 0xf7, 0x43, 0xfe, 0x04, 0x46, 0x00, 0x28, 0xdf, 0xd1, + 0xa9, 0x68, 0xe2, 0x00, 0x18, 0xf8, 0x04, 0x30, 0x24, 0xf0, 0x03, 0x00, + 0x01, 0x34, 0x02, 0xf0, 0x18, 0x02, 0xa7, 0x42, 0x03, 0xfa, 0x02, 0xf2, + 0x0b, 0x58, 0x43, 0xea, 0x02, 0x03, 0x0b, 0x50, 0xef, 0xd8, 0x05, 0xf1, + 0x0c, 0x00, 0xff, 0xf7, 0x01, 0xff, 0x99, 0xf8, 0x00, 0x30, 0x09, 0x2b, + 0x12, 0xd1, 0xfb, 0x00, 0x6a, 0x68, 0x01, 0x3b, 0xb3, 0xeb, 0x42, 0x1f, + 0x0c, 0xd2, 0x58, 0x09, 0xa9, 0x68, 0x01, 0x22, 0x03, 0xf0, 0x1f, 0x03, + 0x02, 0xfa, 0x03, 0xf3, 0x51, 0xf8, 0x20, 0x20, 0x22, 0xea, 0x03, 0x02, + 0x41, 0xf8, 0x20, 0x20, 0x01, 0x21, 0x05, 0xf1, 0x18, 0x00, 0xff, 0xf7, + 0x0f, 0xfe, 0x04, 0x46, 0x00, 0x28, 0xab, 0xd1, 0x48, 0x46, 0xff, 0xf7, + 0x45, 0xfc, 0x01, 0x28, 0x81, 0x46, 0xa5, 0xd1, 0x98, 0xf8, 0x00, 0x30, + 0xc3, 0xb9, 0x01, 0x2e, 0x9f, 0xd1, 0x28, 0x46, 0xbd, 0xe8, 0xf8, 0x43, + 0xff, 0xf7, 0x10, 0xbe, 0x28, 0x46, 0xff, 0xf7, 0xcf, 0xfe, 0x00, 0x23, + 0x01, 0x22, 0x21, 0x46, 0x28, 0x46, 0xab, 0x60, 0xc5, 0xe9, 0x00, 0x23, + 0xff, 0xf7, 0x2e, 0xfa, 0x04, 0x46, 0x00, 0x28, 0xa5, 0xd0, 0x8b, 0xe7, + 0x13, 0x4c, 0xdd, 0xe7, 0x04, 0x2b, 0x1f, 0xd1, 0x7b, 0x00, 0x01, 0x33, + 0xb3, 0x42, 0x82, 0xd1, 0x3a, 0x46, 0x08, 0xf1, 0x01, 0x01, 0x28, 0x46, + 0xff, 0xf7, 0x40, 0xff, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x7a, 0xaf, + 0x79, 0x1c, 0x3a, 0x46, 0x05, 0xf1, 0x0c, 0x00, 0x41, 0x44, 0xff, 0xf7, + 0x35, 0xff, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x6f, 0xaf, 0x49, 0x46, + 0x05, 0xf1, 0x18, 0x00, 0xbd, 0xe8, 0xf8, 0x43, 0xff, 0xf7, 0xc8, 0xbd, + 0x01, 0x4c, 0x65, 0xe7, 0x80, 0xb0, 0xff, 0xff, 0x80, 0xb1, 0xff, 0xff, + 0x88, 0x42, 0x70, 0xb5, 0x05, 0x46, 0x0e, 0x46, 0x03, 0xd0, 0x4c, 0x68, + 0x3c, 0xb9, 0xff, 0xf7, 0x8f, 0xfe, 0x00, 0x20, 0x11, 0xe0, 0xb3, 0x68, + 0x53, 0xf8, 0x24, 0x30, 0x13, 0xb9, 0x01, 0x3c, 0x00, 0x2c, 0xf8, 0xd1, + 0x01, 0x34, 0x6a, 0x68, 0x33, 0x68, 0xa2, 0x42, 0x2b, 0x60, 0x05, 0xd2, + 0x21, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xe4, 0xf9, 0x40, 0xb1, 0x70, 0xbd, + 0x12, 0x1b, 0xa8, 0x68, 0x00, 0x21, 0x92, 0x00, 0x00, 0xeb, 0x84, 0x00, + 0x09, 0xf0, 0x8a, 0xff, 0xa2, 0x00, 0xb1, 0x68, 0xa8, 0x68, 0x09, 0xf0, + 0x77, 0xff, 0xdc, 0xe7, 0x38, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0xff, 0xf7, + 0xcf, 0xff, 0x70, 0xb9, 0x05, 0xf1, 0x0c, 0x01, 0x04, 0xf1, 0x0c, 0x00, + 0xff, 0xf7, 0xc8, 0xff, 0x38, 0xb9, 0x05, 0xf1, 0x18, 0x01, 0x04, 0xf1, + 0x18, 0x00, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0xbf, 0xbf, 0x38, 0xbd, + 0x2d, 0xe9, 0xf0, 0x4f, 0x00, 0x23, 0x89, 0xb0, 0x17, 0x46, 0x88, 0x42, + 0x4f, 0xf0, 0x01, 0x02, 0x81, 0x46, 0x88, 0x46, 0x07, 0x93, 0x04, 0x93, + 0xcd, 0xe9, 0x05, 0x23, 0xcd, 0xe9, 0x02, 0x23, 0x06, 0xd1, 0x05, 0xa8, + 0xff, 0xf7, 0xaa, 0xff, 0x06, 0x46, 0x90, 0xbb, 0x0d, 0xf1, 0x14, 0x08, + 0xb9, 0x45, 0x06, 0xd1, 0x49, 0x46, 0x02, 0xa8, 0xff, 0xf7, 0xa0, 0xff, + 0x06, 0x46, 0x40, 0xbb, 0x02, 0xaf, 0xd8, 0xf8, 0x04, 0xa0, 0xba, 0xf1, + 0x00, 0x0f, 0x2c, 0xd1, 0x7c, 0x68, 0xac, 0xbb, 0x0a, 0xeb, 0x04, 0x01, + 0x48, 0x46, 0xff, 0xf7, 0x91, 0xf9, 0x06, 0x46, 0xc8, 0xb9, 0x01, 0x46, + 0x48, 0x46, 0xff, 0xf7, 0x4d, 0xfd, 0x06, 0x46, 0x98, 0xb9, 0x6f, 0xf0, + 0x0f, 0x03, 0x4f, 0xea, 0x1a, 0x1b, 0x04, 0xf1, 0xff, 0x3c, 0x03, 0xfb, + 0x0b, 0xab, 0xab, 0xf1, 0x08, 0x03, 0x01, 0x93, 0xbc, 0xf1, 0xff, 0x3f, + 0x23, 0xd1, 0xd8, 0xf8, 0x00, 0x20, 0x3b, 0x68, 0x53, 0x43, 0xc9, 0xf8, + 0x00, 0x30, 0x02, 0xa8, 0xff, 0xf7, 0x0a, 0xfe, 0x05, 0xa8, 0xff, 0xf7, + 0x07, 0xfe, 0x30, 0x46, 0x09, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xd8, 0xf8, + 0x08, 0x30, 0x03, 0xeb, 0x8a, 0x03, 0x53, 0xf8, 0x04, 0x3c, 0x00, 0x2b, + 0xca, 0xd1, 0x0a, 0xf1, 0xff, 0x3a, 0xc4, 0xe7, 0xbb, 0x68, 0x03, 0xeb, + 0x84, 0x03, 0x53, 0xf8, 0x04, 0x3c, 0x00, 0x2b, 0xc2, 0xd1, 0x01, 0x3c, + 0xbf, 0xe7, 0xba, 0x68, 0x00, 0x24, 0xd9, 0xf8, 0x08, 0x30, 0x52, 0xf8, + 0x2c, 0xe0, 0x52, 0x46, 0xd8, 0xf8, 0x08, 0x50, 0x03, 0xeb, 0x8c, 0x03, + 0x0f, 0x2a, 0x48, 0xd8, 0xbb, 0xf1, 0x07, 0x0f, 0x40, 0xf2, 0xb7, 0x80, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, @@ -6226,11 +5950,11 @@ const unsigned char mcuboot_bin[] = { 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, - 0x01, 0x9a, 0x00, 0x2a, 0x7d, 0xd1, 0x1a, 0x68, 0x14, 0x19, 0x43, 0xf8, - 0x04, 0x4b, 0x4f, 0xf0, 0x01, 0x04, 0xf8, 0xd2, 0x0c, 0xf1, 0xff, 0x3c, - 0x82, 0xe7, 0x10, 0x3a, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, - 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, - 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, + 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, + 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, + 0x43, 0xf8, 0x04, 0x1b, 0x01, 0x9a, 0x00, 0x2a, 0x7d, 0xd1, 0x1a, 0x68, + 0x14, 0x19, 0x43, 0xf8, 0x04, 0x4b, 0x4f, 0xf0, 0x01, 0x04, 0xf8, 0xd2, + 0x0c, 0xf1, 0xff, 0x3c, 0x82, 0xe7, 0x10, 0x3a, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, @@ -6247,1098 +5971,1115 @@ const unsigned char mcuboot_bin[] = { 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, - 0x42, 0xe7, 0x5a, 0x46, 0x7f, 0xe7, 0x01, 0x3a, 0x55, 0xf8, 0x04, 0x0b, - 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, 0x04, 0x1b, 0x76, 0xe7, - 0x1f, 0xb5, 0x01, 0x23, 0x00, 0x92, 0x01, 0xaa, 0xcd, 0xf8, 0x0c, 0xd0, - 0xcd, 0xe9, 0x01, 0x33, 0xff, 0xf7, 0xbc, 0xfe, 0x05, 0xb0, 0x5d, 0xf8, - 0x04, 0xfb, 0x2d, 0xe9, 0xff, 0x41, 0x16, 0x46, 0x00, 0x23, 0x01, 0x22, - 0x05, 0x46, 0xb0, 0x42, 0x0f, 0x46, 0x03, 0x93, 0xcd, 0xe9, 0x01, 0x23, - 0x06, 0xd1, 0x01, 0x46, 0x01, 0xa8, 0xff, 0xf7, 0x67, 0xfe, 0x04, 0x46, - 0x20, 0xbb, 0x01, 0xae, 0xbd, 0x42, 0x1a, 0xd1, 0x01, 0x23, 0x2b, 0x60, - 0xd6, 0xe9, 0x01, 0x37, 0x1b, 0xbb, 0xaa, 0x68, 0x00, 0x24, 0x16, 0x1f, - 0x20, 0x46, 0x98, 0x42, 0x25, 0xd1, 0xac, 0xb1, 0x4f, 0xf0, 0xff, 0x30, - 0x69, 0x68, 0x99, 0x42, 0x3a, 0xd9, 0x52, 0xf8, 0x23, 0x10, 0x99, 0xb3, - 0x52, 0xf8, 0x23, 0x10, 0x00, 0x24, 0x01, 0x39, 0x42, 0xf8, 0x23, 0x10, - 0x06, 0xe0, 0x39, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x43, 0xfe, 0x04, 0x46, - 0x00, 0x28, 0xdd, 0xd0, 0x01, 0xa8, 0xff, 0xf7, 0xd5, 0xfc, 0x20, 0x46, - 0x04, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x07, 0xeb, 0x83, 0x02, 0x52, 0xf8, - 0x04, 0x2c, 0x00, 0x2a, 0xd5, 0xd1, 0x01, 0x3b, 0xd2, 0xe7, 0x56, 0xf8, - 0x04, 0xef, 0xae, 0xeb, 0x04, 0x01, 0x31, 0x60, 0x57, 0xf8, 0x20, 0xc0, - 0x01, 0x30, 0x61, 0x45, 0xa1, 0xeb, 0x0c, 0x01, 0x2c, 0xbf, 0x4f, 0xf0, - 0x00, 0x08, 0x4f, 0xf0, 0x01, 0x08, 0x31, 0x60, 0xa6, 0x45, 0x2c, 0xbf, - 0x44, 0x46, 0x08, 0xf1, 0x01, 0x04, 0xc0, 0xe7, 0x42, 0xf8, 0x23, 0x00, - 0x01, 0x33, 0xc1, 0xe7, 0xc6, 0xd1, 0x6f, 0xf0, 0x09, 0x04, 0xd1, 0xe7, - 0x30, 0xb5, 0x8f, 0xb0, 0x09, 0x23, 0x01, 0x22, 0x00, 0x21, 0x04, 0x46, - 0x05, 0xa8, 0x8d, 0xf8, 0x03, 0x10, 0x04, 0x90, 0xcd, 0xe9, 0x02, 0x23, - 0x24, 0x22, 0x08, 0xf0, 0xf9, 0xfe, 0x10, 0x21, 0x20, 0x46, 0xfe, 0xf7, - 0xff, 0xff, 0x05, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x29, 0x82, 0xa3, 0x68, - 0x01, 0xa8, 0x1a, 0x68, 0x19, 0x6a, 0x01, 0x92, 0x0d, 0xf1, 0x03, 0x02, - 0xfc, 0xf7, 0x6d, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, - 0x59, 0x6a, 0xfc, 0xf7, 0x66, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, 0x54, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, - 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, 0xfc, 0xf7, 0x4d, 0xfa, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, 0x46, 0xfa, - 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, - 0x3f, 0xfa, 0x01, 0x9a, 0xa3, 0x68, 0x1a, 0x60, 0x0d, 0xf1, 0x03, 0x02, - 0x9d, 0xf9, 0x03, 0x10, 0x5b, 0x68, 0x00, 0x29, 0x8d, 0xf8, 0x03, 0x50, - 0x01, 0x93, 0x80, 0xf2, 0xf2, 0x81, 0x49, 0x42, 0x01, 0xa8, 0xfc, 0xf7, - 0x2d, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6a, - 0xfc, 0xf7, 0x31, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, - 0x99, 0x6a, 0xfc, 0xf7, 0x2a, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0x19, 0x6b, 0xfc, 0xf7, 0x18, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, - 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, 0x11, 0xfa, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0x0a, 0xfa, - 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, 0xfc, 0xf7, - 0x03, 0xfa, 0x01, 0x9a, 0xa3, 0x68, 0x9d, 0xf9, 0x03, 0x10, 0x5a, 0x60, - 0x0d, 0xf1, 0x03, 0x02, 0x9b, 0x68, 0x01, 0x93, 0x00, 0x23, 0x99, 0x42, - 0x8d, 0xf8, 0x03, 0x30, 0x80, 0xf2, 0xb9, 0x81, 0x49, 0x42, 0x01, 0xa8, - 0xfc, 0xf7, 0xf0, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, - 0x99, 0x6a, 0xfc, 0xf7, 0xf4, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, 0xed, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, - 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, 0xdb, 0xf9, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0xd4, 0xf9, - 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, 0xfc, 0xf7, - 0xcd, 0xf9, 0x01, 0x9a, 0xa3, 0x68, 0x9d, 0xf9, 0x03, 0x10, 0x9a, 0x60, - 0x0d, 0xf1, 0x03, 0x02, 0xdb, 0x68, 0x01, 0x93, 0x00, 0x23, 0x99, 0x42, - 0x8d, 0xf8, 0x03, 0x30, 0x80, 0xf2, 0x87, 0x81, 0x49, 0x42, 0x01, 0xa8, - 0xfc, 0xf7, 0xba, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, - 0xd9, 0x6a, 0xfc, 0xf7, 0xbe, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, 0xb7, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, - 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, 0xfc, 0xf7, 0xb0, 0xf9, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, 0xfc, 0xf7, 0xa9, 0xf9, - 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, - 0xa2, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, - 0xfc, 0xf7, 0x90, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, - 0x19, 0x6a, 0xfc, 0xf7, 0x89, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0x59, 0x6a, 0xfc, 0xf7, 0x82, 0xf9, 0x01, 0x9a, 0xa3, 0x68, - 0x9d, 0xf9, 0x03, 0x10, 0xda, 0x60, 0x0d, 0xf1, 0x03, 0x02, 0x1b, 0x69, - 0x01, 0x93, 0x00, 0x23, 0x99, 0x42, 0x8d, 0xf8, 0x03, 0x30, 0x80, 0xf2, - 0x40, 0x81, 0x49, 0x42, 0x01, 0xa8, 0xfc, 0xf7, 0x6f, 0xf9, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, 0xfc, 0xf7, 0x73, 0xf9, + 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, + 0x04, 0x1b, 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, + 0x43, 0xf8, 0x04, 0x1b, 0x42, 0xe7, 0x5a, 0x46, 0x7f, 0xe7, 0x01, 0x3a, + 0x55, 0xf8, 0x04, 0x0b, 0x19, 0x68, 0xee, 0xfb, 0x60, 0x14, 0x43, 0xf8, + 0x04, 0x1b, 0x76, 0xe7, 0x1f, 0xb5, 0x01, 0x23, 0x00, 0x92, 0x01, 0xaa, + 0xcd, 0xf8, 0x0c, 0xd0, 0xcd, 0xe9, 0x01, 0x33, 0xff, 0xf7, 0xbc, 0xfe, + 0x05, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x2d, 0xe9, 0xff, 0x41, 0x16, 0x46, + 0x00, 0x23, 0x01, 0x22, 0x05, 0x46, 0xb0, 0x42, 0x0f, 0x46, 0x03, 0x93, + 0xcd, 0xe9, 0x01, 0x23, 0x06, 0xd1, 0x01, 0x46, 0x01, 0xa8, 0xff, 0xf7, + 0x67, 0xfe, 0x04, 0x46, 0x20, 0xbb, 0x01, 0xae, 0xbd, 0x42, 0x1a, 0xd1, + 0x01, 0x23, 0x2b, 0x60, 0xd6, 0xe9, 0x01, 0x37, 0x1b, 0xbb, 0xaa, 0x68, + 0x00, 0x24, 0x16, 0x1f, 0x20, 0x46, 0x98, 0x42, 0x25, 0xd1, 0xac, 0xb1, + 0x4f, 0xf0, 0xff, 0x30, 0x69, 0x68, 0x99, 0x42, 0x3a, 0xd9, 0x52, 0xf8, + 0x23, 0x10, 0x99, 0xb3, 0x52, 0xf8, 0x23, 0x10, 0x00, 0x24, 0x01, 0x39, + 0x42, 0xf8, 0x23, 0x10, 0x06, 0xe0, 0x39, 0x46, 0x28, 0x46, 0xff, 0xf7, + 0x43, 0xfe, 0x04, 0x46, 0x00, 0x28, 0xdd, 0xd0, 0x01, 0xa8, 0xff, 0xf7, + 0xd5, 0xfc, 0x20, 0x46, 0x04, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x07, 0xeb, + 0x83, 0x02, 0x52, 0xf8, 0x04, 0x2c, 0x00, 0x2a, 0xd5, 0xd1, 0x01, 0x3b, + 0xd2, 0xe7, 0x56, 0xf8, 0x04, 0xef, 0xae, 0xeb, 0x04, 0x01, 0x31, 0x60, + 0x57, 0xf8, 0x20, 0xc0, 0x01, 0x30, 0x61, 0x45, 0xa1, 0xeb, 0x0c, 0x01, + 0x2c, 0xbf, 0x4f, 0xf0, 0x00, 0x08, 0x4f, 0xf0, 0x01, 0x08, 0x31, 0x60, + 0xa6, 0x45, 0x2c, 0xbf, 0x44, 0x46, 0x08, 0xf1, 0x01, 0x04, 0xc0, 0xe7, + 0x42, 0xf8, 0x23, 0x00, 0x01, 0x33, 0xc1, 0xe7, 0xc6, 0xd1, 0x6f, 0xf0, + 0x09, 0x04, 0xd1, 0xe7, 0x30, 0xb5, 0x8f, 0xb0, 0x09, 0x23, 0x01, 0x22, + 0x00, 0x21, 0x04, 0x46, 0x05, 0xa8, 0x8d, 0xf8, 0x03, 0x10, 0x04, 0x90, + 0xcd, 0xe9, 0x02, 0x23, 0x24, 0x22, 0x09, 0xf0, 0xb3, 0xfd, 0x10, 0x21, + 0x20, 0x46, 0xfe, 0xf7, 0xff, 0xff, 0x05, 0x46, 0x00, 0x28, 0x40, 0xf0, + 0x29, 0x82, 0xa3, 0x68, 0x01, 0xa8, 0x1a, 0x68, 0x19, 0x6a, 0x01, 0x92, + 0x0d, 0xf1, 0x03, 0x02, 0xfc, 0xf7, 0x81, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, + 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6a, 0xfc, 0xf7, 0x7a, 0xfc, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, 0x68, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, 0xfc, 0xf7, - 0x6c, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, - 0xfc, 0xf7, 0x65, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, - 0x59, 0x6b, 0xfc, 0xf7, 0x5e, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0x57, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, - 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6a, 0xfc, 0xf7, 0x45, 0xf9, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6a, 0xfc, 0xf7, 0x3e, 0xf9, - 0x01, 0x9a, 0xa3, 0x68, 0x9d, 0xf9, 0x03, 0x10, 0x1a, 0x61, 0x0d, 0xf1, - 0x03, 0x02, 0x5b, 0x69, 0x01, 0x93, 0x00, 0x23, 0x99, 0x42, 0x8d, 0xf8, - 0x03, 0x30, 0x80, 0xf2, 0x00, 0x81, 0x49, 0x42, 0x01, 0xa8, 0xfc, 0xf7, - 0x2b, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, - 0xfc, 0xf7, 0x2f, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, - 0x59, 0x6b, 0xfc, 0xf7, 0x28, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0x21, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, - 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0x1a, 0xf9, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, 0xfc, 0xf7, 0x13, 0xf9, - 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6a, 0xfc, 0xf7, - 0x01, 0xf9, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6a, - 0xfc, 0xf7, 0xfa, 0xf8, 0x01, 0x9a, 0xa3, 0x68, 0x9d, 0xf9, 0x03, 0x10, - 0x5a, 0x61, 0x0d, 0xf1, 0x03, 0x02, 0x9b, 0x69, 0x01, 0x93, 0x00, 0x23, - 0x99, 0x42, 0x8d, 0xf8, 0x03, 0x30, 0x80, 0xf2, 0xc0, 0x80, 0x49, 0x42, - 0x01, 0xa8, 0xfc, 0xf7, 0xe7, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0xeb, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, - 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0xe4, 0xf8, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, 0xfc, 0xf7, 0xdd, 0xf8, - 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, 0xfc, 0xf7, - 0xd6, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, - 0xfc, 0xf7, 0xcf, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, - 0x59, 0x6b, 0xfc, 0xf7, 0xc8, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0x19, 0x6a, 0xfc, 0xf7, 0xb6, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, - 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6a, 0xfc, 0xf7, 0xaf, 0xf8, 0x01, 0x9a, - 0xa3, 0x68, 0x9d, 0xf9, 0x03, 0x10, 0x9a, 0x61, 0x0d, 0xf1, 0x03, 0x02, - 0xdb, 0x69, 0x01, 0x93, 0x00, 0x23, 0x99, 0x42, 0x8d, 0xf8, 0x03, 0x30, - 0x79, 0xda, 0x49, 0x42, 0x01, 0xa8, 0xfc, 0xf7, 0x9d, 0xf8, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, 0xfc, 0xf7, 0xa1, 0xf8, - 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, 0xfc, 0xf7, - 0x9a, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, - 0xfc, 0xf7, 0x93, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, - 0x19, 0x6a, 0xfc, 0xf7, 0x8c, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, - 0x01, 0xa8, 0x99, 0x6a, 0xfc, 0xf7, 0x7a, 0xf8, 0xa3, 0x68, 0x0d, 0xf1, - 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, 0x73, 0xf8, 0xa3, 0x68, - 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, 0xfc, 0xf7, 0x6c, 0xf8, + 0x61, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, + 0xfc, 0xf7, 0x5a, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, + 0x99, 0x6b, 0xfc, 0xf7, 0x53, 0xfc, 0x01, 0x9a, 0xa3, 0x68, 0x1a, 0x60, + 0x0d, 0xf1, 0x03, 0x02, 0x9d, 0xf9, 0x03, 0x10, 0x5b, 0x68, 0x00, 0x29, + 0x8d, 0xf8, 0x03, 0x50, 0x01, 0x93, 0x80, 0xf2, 0xf2, 0x81, 0x49, 0x42, + 0x01, 0xa8, 0xfc, 0xf7, 0x41, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, + 0x01, 0xa8, 0x59, 0x6a, 0xfc, 0xf7, 0x45, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, + 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6a, 0xfc, 0xf7, 0x3e, 0xfc, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, 0xfc, 0xf7, 0x2c, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, - 0x65, 0xf8, 0x01, 0x9b, 0xa1, 0x68, 0x9d, 0xf9, 0x03, 0x20, 0xcb, 0x61, - 0x22, 0xea, 0xe2, 0x73, 0x0b, 0x62, 0x00, 0x23, 0x01, 0x93, 0x08, 0x23, - 0x01, 0x33, 0x60, 0x68, 0x98, 0x42, 0x32, 0xd8, 0x00, 0x2a, 0x11, 0xda, - 0x03, 0x9b, 0x52, 0x42, 0x04, 0x99, 0x20, 0x46, 0x03, 0xf1, 0x80, 0x43, - 0x01, 0x3b, 0x41, 0xf8, 0x23, 0x20, 0x22, 0x46, 0x02, 0xa9, 0xff, 0xf7, - 0x60, 0xfd, 0x05, 0x46, 0x10, 0xb9, 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x60, - 0x28, 0x46, 0x0f, 0xb0, 0x30, 0xbd, 0x01, 0xa8, 0xfc, 0xf7, 0x47, 0xf8, - 0x0d, 0xe6, 0x01, 0xa8, 0xfc, 0xf7, 0x43, 0xf8, 0x46, 0xe6, 0x01, 0xa8, - 0xfc, 0xf7, 0x3f, 0xf8, 0x78, 0xe6, 0x01, 0xa8, 0xfc, 0xf7, 0x3b, 0xf8, - 0xbf, 0xe6, 0x01, 0xa8, 0xfc, 0xf7, 0x37, 0xf8, 0xff, 0xe6, 0x01, 0xa8, - 0xfc, 0xf7, 0x33, 0xf8, 0x3f, 0xe7, 0x01, 0xa8, 0xfc, 0xf7, 0x2f, 0xf8, - 0x85, 0xe7, 0x01, 0x98, 0x41, 0xf8, 0x23, 0x00, 0xc4, 0xe7, 0x38, 0xb5, - 0x0c, 0x46, 0x05, 0x1d, 0x29, 0x46, 0x20, 0x46, 0xfe, 0xf7, 0xb0, 0xff, - 0x00, 0x28, 0x01, 0xda, 0x00, 0x20, 0x06, 0xe0, 0x2a, 0x46, 0x21, 0x46, - 0x20, 0x46, 0xff, 0xf7, 0x28, 0xfd, 0x00, 0x28, 0xf0, 0xd0, 0x38, 0xbd, - 0x90, 0x42, 0x2d, 0xe9, 0xf0, 0x41, 0x07, 0x46, 0x0d, 0x46, 0x16, 0x46, - 0x02, 0xd0, 0x88, 0x42, 0x29, 0xd1, 0x35, 0x46, 0x01, 0x23, 0x6e, 0x68, - 0x3b, 0x60, 0x66, 0xbb, 0x31, 0x46, 0x38, 0x46, 0xfe, 0xf7, 0x8a, 0xfd, - 0x04, 0x46, 0x18, 0xbb, 0xa9, 0x68, 0x05, 0x46, 0xbb, 0x68, 0x86, 0x42, - 0x2a, 0xd1, 0x03, 0xeb, 0x86, 0x03, 0xdd, 0xb1, 0x7a, 0x68, 0x06, 0xf1, - 0x01, 0x08, 0xb2, 0x42, 0x08, 0xd8, 0x41, 0x46, 0x38, 0x46, 0xfe, 0xf7, - 0x77, 0xfd, 0x00, 0x28, 0x2f, 0xd1, 0xbb, 0x68, 0x03, 0xeb, 0x86, 0x03, - 0x1a, 0x68, 0x46, 0x46, 0x55, 0x19, 0x43, 0xf8, 0x04, 0x5b, 0x2c, 0xbf, - 0x01, 0x25, 0x00, 0x25, 0xe7, 0xe7, 0xff, 0xf7, 0x67, 0xfb, 0x04, 0x46, - 0x00, 0x28, 0xd0, 0xd0, 0x20, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0xab, 0x68, - 0x03, 0xeb, 0x86, 0x03, 0x53, 0xf8, 0x04, 0x3c, 0x00, 0x2b, 0xcb, 0xd1, - 0x01, 0x3e, 0xc8, 0xe7, 0x53, 0xf8, 0x20, 0x20, 0x12, 0xeb, 0x05, 0x0c, - 0x51, 0xf8, 0x20, 0x20, 0x2c, 0xbf, 0x01, 0x25, 0x00, 0x25, 0x1c, 0xeb, - 0x02, 0x02, 0x43, 0xf8, 0x20, 0x20, 0x2c, 0xbf, 0x01, 0x22, 0x00, 0x22, - 0x01, 0x30, 0x15, 0x44, 0xbf, 0xe7, 0x04, 0x46, 0xde, 0xe7, 0xf8, 0xb5, - 0x0d, 0x68, 0x04, 0x46, 0x13, 0x68, 0x0f, 0x46, 0x16, 0x46, 0x6b, 0x43, - 0x00, 0x2b, 0x16, 0xdd, 0x11, 0x46, 0x38, 0x46, 0xfb, 0xf7, 0xbc, 0xff, - 0x00, 0x28, 0x06, 0xdb, 0x32, 0x46, 0x39, 0x46, 0x20, 0x46, 0xff, 0xf7, - 0xb8, 0xfc, 0x40, 0xb1, 0xf8, 0xbd, 0x3a, 0x46, 0x31, 0x46, 0x20, 0x46, - 0xff, 0xf7, 0xb1, 0xfc, 0x00, 0x28, 0xf7, 0xd1, 0x6d, 0x42, 0x25, 0x60, - 0xf4, 0xe7, 0xff, 0xf7, 0x85, 0xff, 0xf0, 0xe7, 0x7f, 0xb5, 0x00, 0x23, - 0x01, 0xf1, 0x0c, 0x05, 0x16, 0x46, 0x01, 0x22, 0x01, 0x1d, 0x01, 0xa8, - 0x03, 0x93, 0xcd, 0xe9, 0x01, 0x23, 0x2a, 0x46, 0xff, 0xf7, 0xcf, 0xff, - 0x04, 0x46, 0x68, 0xb9, 0x01, 0x46, 0x28, 0x46, 0xfe, 0xf7, 0x57, 0xff, - 0x01, 0xa9, 0x00, 0x28, 0x0c, 0xbf, 0x00, 0x22, 0x06, 0xf0, 0x01, 0x02, - 0x28, 0x46, 0xff, 0xf7, 0x65, 0xf9, 0x04, 0x46, 0x01, 0xa8, 0xff, 0xf7, - 0x97, 0xf9, 0x20, 0x46, 0x04, 0xb0, 0x70, 0xbd, 0x2d, 0xe9, 0xf7, 0x4f, - 0x9d, 0xf8, 0x30, 0x80, 0x06, 0x46, 0x0d, 0x46, 0x1f, 0x46, 0xc8, 0xf3, - 0x45, 0x09, 0x02, 0xf1, 0x0c, 0x04, 0x4f, 0xf0, 0x00, 0x0b, 0x01, 0xf1, - 0x0c, 0x0a, 0xbb, 0x45, 0x08, 0xd1, 0x4f, 0xea, 0xd8, 0x12, 0x29, 0x46, - 0x30, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x4f, 0xff, 0xf7, 0xc2, 0xbf, - 0x5f, 0xfa, 0x8b, 0xf2, 0xa4, 0xf1, 0x0c, 0x01, 0x28, 0x46, 0xa2, 0xeb, - 0x09, 0x03, 0x5a, 0x42, 0x5a, 0x41, 0x01, 0x92, 0xff, 0xf7, 0x38, 0xf9, - 0x48, 0xb9, 0x21, 0x46, 0x01, 0x9a, 0x50, 0x46, 0x0b, 0xf1, 0x01, 0x0b, - 0x24, 0x34, 0xff, 0xf7, 0x2f, 0xf9, 0x00, 0x28, 0xdd, 0xd0, 0x03, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0xf8, 0xb5, 0x0d, 0x68, 0x04, 0x46, 0x13, 0x68, - 0x0f, 0x46, 0x16, 0x46, 0x6b, 0x43, 0x16, 0xd5, 0x11, 0x46, 0x38, 0x46, - 0xfb, 0xf7, 0x42, 0xff, 0x00, 0x28, 0x06, 0xdb, 0x32, 0x46, 0x39, 0x46, - 0x20, 0x46, 0xff, 0xf7, 0x3e, 0xfc, 0x40, 0xb1, 0xf8, 0xbd, 0x3a, 0x46, - 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x37, 0xfc, 0x00, 0x28, 0xf7, 0xd1, - 0x6d, 0x42, 0x25, 0x60, 0xf4, 0xe7, 0xff, 0xf7, 0x0b, 0xff, 0xf0, 0xe7, - 0x38, 0xb5, 0x0c, 0x46, 0x05, 0x46, 0x11, 0x46, 0x1a, 0x46, 0x20, 0x46, - 0xff, 0xf7, 0xd6, 0xff, 0x28, 0xb9, 0x21, 0x46, 0x28, 0x46, 0xbd, 0xe8, - 0x38, 0x40, 0xff, 0xf7, 0xe8, 0xbe, 0x38, 0xbd, 0x70, 0xb5, 0x0c, 0x46, - 0x06, 0x46, 0x11, 0x46, 0x1a, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x4b, 0xff, - 0x05, 0x46, 0x80, 0xb9, 0x04, 0x36, 0x23, 0x68, 0x00, 0x2b, 0x0c, 0xda, - 0x00, 0x21, 0x20, 0x46, 0xfe, 0xf7, 0xcf, 0xfe, 0x30, 0xb1, 0x32, 0x46, - 0x21, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xb6, 0xff, 0x00, 0x28, 0xf0, 0xd0, - 0x05, 0x46, 0x28, 0x46, 0x70, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, 0x06, 0x46, - 0x9b, 0xb0, 0x89, 0x46, 0x10, 0x46, 0x00, 0x21, 0x90, 0x46, 0xfe, 0xf7, - 0xba, 0xfe, 0x00, 0x28, 0xc0, 0xf2, 0x9b, 0x81, 0x05, 0xd1, 0x6f, 0xf0, - 0x0b, 0x04, 0x20, 0x46, 0x1b, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x00, 0x23, - 0x01, 0x25, 0x41, 0x46, 0x48, 0x46, 0x14, 0x95, 0xcd, 0xe9, 0x08, 0x53, - 0xcd, 0xe9, 0x0a, 0x35, 0xcd, 0xe9, 0x0c, 0x33, 0xcd, 0xe9, 0x0e, 0x53, - 0xcd, 0xe9, 0x10, 0x35, 0xcd, 0xe9, 0x12, 0x33, 0x03, 0x23, 0x15, 0x93, - 0x17, 0xab, 0x16, 0x93, 0xfb, 0xf7, 0xd4, 0xfe, 0x00, 0x28, 0x17, 0xda, - 0x36, 0xb1, 0x49, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x47, 0xfa, 0x04, 0x46, - 0x00, 0x28, 0x46, 0xd1, 0x00, 0x21, 0x30, 0x46, 0xfe, 0xf7, 0x8b, 0xfe, - 0x00, 0x28, 0xc0, 0xf2, 0x5b, 0x81, 0x41, 0x46, 0x30, 0x46, 0xfe, 0xf7, - 0x41, 0xfe, 0x00, 0x28, 0x80, 0xf2, 0x5b, 0x81, 0x00, 0x24, 0xca, 0xe7, - 0x49, 0x46, 0x08, 0xa8, 0xff, 0xf7, 0x30, 0xfa, 0x04, 0x46, 0x80, 0xbb, - 0x41, 0x46, 0x0b, 0xa8, 0xff, 0xf7, 0x2a, 0xfa, 0x04, 0x46, 0x50, 0xbb, - 0xd9, 0xf8, 0x04, 0x10, 0x0e, 0xa8, 0x0b, 0x95, 0x02, 0x31, 0x08, 0x95, - 0xfe, 0xf7, 0x20, 0xfc, 0x04, 0x46, 0x00, 0xbb, 0x01, 0x46, 0x0e, 0xa8, - 0xfe, 0xf7, 0xdc, 0xff, 0x04, 0x46, 0xd0, 0xb9, 0x02, 0x21, 0x11, 0xa8, - 0xfe, 0xf7, 0x14, 0xfc, 0x04, 0x46, 0xa0, 0xb9, 0x0b, 0xa8, 0xfe, 0xf7, - 0xdb, 0xfe, 0x00, 0xf0, 0x1f, 0x00, 0x1f, 0x28, 0x20, 0xd0, 0xc0, 0xf1, - 0x1f, 0x07, 0x08, 0xa8, 0x39, 0x46, 0xfe, 0xf7, 0x25, 0xff, 0x04, 0x46, - 0x28, 0xb9, 0x39, 0x46, 0x0b, 0xa8, 0xfe, 0xf7, 0x1f, 0xff, 0x04, 0x46, - 0x98, 0xb1, 0x08, 0xa8, 0xff, 0xf7, 0x92, 0xf8, 0x0b, 0xa8, 0xff, 0xf7, - 0x8f, 0xf8, 0x0e, 0xa8, 0xff, 0xf7, 0x8c, 0xf8, 0x11, 0xa8, 0xff, 0xf7, - 0x89, 0xf8, 0x0c, 0x21, 0x17, 0xa8, 0xfd, 0xf7, 0x75, 0xff, 0x00, 0x2c, - 0xa6, 0xd0, 0x80, 0xe7, 0x27, 0x46, 0x09, 0x9d, 0x0b, 0xa8, 0xdd, 0xf8, - 0x30, 0xb0, 0xa5, 0xeb, 0x0b, 0x03, 0x4f, 0xea, 0x43, 0x1a, 0x01, 0x93, - 0x51, 0x46, 0xfe, 0xf7, 0xfd, 0xfe, 0x04, 0x46, 0x00, 0x28, 0xdc, 0xd1, - 0x01, 0x9b, 0x9b, 0x00, 0x0b, 0xa9, 0x08, 0xa8, 0x01, 0x93, 0xfe, 0xf7, - 0xdb, 0xfd, 0x00, 0x28, 0x01, 0x9b, 0x36, 0xda, 0x51, 0x46, 0x0b, 0xa8, - 0xfe, 0xf7, 0xb6, 0xff, 0x04, 0x46, 0x00, 0x28, 0xcb, 0xd1, 0x0b, 0xf1, - 0xff, 0x33, 0x05, 0xf1, 0xff, 0x3a, 0x05, 0xf1, 0x80, 0x45, 0x01, 0x93, - 0x9b, 0x00, 0x01, 0x3d, 0x03, 0x93, 0x0b, 0xf1, 0x80, 0x43, 0xa5, 0xeb, - 0x0b, 0x05, 0x02, 0x3b, 0xad, 0x00, 0x9b, 0x00, 0x07, 0x93, 0x01, 0x9b, - 0x53, 0x45, 0x29, 0xd3, 0x00, 0x2e, 0xb4, 0xd0, 0x39, 0x46, 0x08, 0xa8, - 0xfe, 0xf7, 0x98, 0xff, 0x88, 0xb9, 0xd9, 0xf8, 0x00, 0x30, 0x08, 0xa9, - 0x30, 0x46, 0x08, 0x93, 0xff, 0xf7, 0xa6, 0xf9, 0x01, 0x46, 0x00, 0x28, - 0x40, 0xf0, 0xbe, 0x80, 0x30, 0x46, 0xfe, 0xf7, 0xea, 0xfd, 0x00, 0x28, - 0x9f, 0xd1, 0x01, 0x23, 0x33, 0x60, 0x04, 0x46, 0x9b, 0xe7, 0x10, 0x99, - 0x01, 0x93, 0xca, 0x58, 0x01, 0x32, 0xca, 0x50, 0x08, 0xa9, 0x0b, 0xaa, - 0x08, 0x46, 0xff, 0xf7, 0x4c, 0xfe, 0x01, 0x9b, 0x04, 0x46, 0x00, 0x28, - 0xb2, 0xd0, 0x8c, 0xe7, 0xdd, 0xf8, 0x28, 0xb0, 0x4f, 0xea, 0x8a, 0x03, - 0x03, 0x9a, 0x04, 0x93, 0x0b, 0xeb, 0x8a, 0x03, 0x5b, 0xf8, 0x2a, 0x10, - 0x06, 0x93, 0x0d, 0x9b, 0x9a, 0x58, 0x04, 0x9b, 0x91, 0x42, 0xa3, 0xf1, - 0x04, 0x03, 0x05, 0x93, 0x10, 0x9b, 0x03, 0xeb, 0x05, 0x00, 0x02, 0x90, - 0x75, 0xd3, 0x4f, 0xf0, 0xff, 0x32, 0x5a, 0x51, 0xba, 0xf1, 0x01, 0x0f, - 0x02, 0x9a, 0x16, 0xbf, 0x06, 0x9b, 0x00, 0x23, 0x53, 0xf8, 0x08, 0x3c, - 0x17, 0x93, 0x05, 0x9b, 0x5b, 0xf8, 0x03, 0x30, 0x18, 0x93, 0x04, 0x9b, - 0x5b, 0xf8, 0x03, 0x30, 0x19, 0x93, 0x02, 0x9b, 0x1b, 0x68, 0x01, 0x33, - 0x13, 0x60, 0x10, 0x9a, 0x00, 0x21, 0x11, 0xa8, 0x53, 0x59, 0x01, 0x3b, - 0x53, 0x51, 0xfe, 0xf7, 0x15, 0xff, 0x00, 0x28, 0xb5, 0xd1, 0x01, 0x9b, - 0x0d, 0x9a, 0x00, 0x2b, 0x66, 0xd0, 0x07, 0x9b, 0xd1, 0x58, 0x13, 0x9b, - 0x19, 0x60, 0x03, 0x99, 0x52, 0x58, 0x11, 0xa9, 0x5a, 0x60, 0x08, 0x46, - 0x10, 0x9b, 0x5a, 0x59, 0xff, 0xf7, 0xbc, 0xfa, 0x00, 0x28, 0xa2, 0xd1, - 0x14, 0xa9, 0x11, 0xa8, 0xfe, 0xf7, 0x42, 0xfd, 0x00, 0x28, 0xdc, 0xdc, - 0x10, 0x9b, 0x0b, 0xa9, 0x11, 0xa8, 0x5a, 0x59, 0xff, 0xf7, 0xae, 0xfa, - 0x00, 0x28, 0x94, 0xd1, 0x4f, 0xea, 0xc5, 0x0b, 0x11, 0xa8, 0x59, 0x46, - 0xfe, 0xf7, 0x4a, 0xfe, 0x00, 0x28, 0x8c, 0xd1, 0x08, 0xa9, 0x11, 0xaa, - 0x08, 0x46, 0xff, 0xf7, 0xe0, 0xfd, 0x01, 0x46, 0x00, 0x28, 0x3b, 0xd1, - 0x08, 0xa8, 0xfe, 0xf7, 0x68, 0xfd, 0x00, 0x28, 0x19, 0xda, 0x0b, 0xa9, - 0x11, 0xa8, 0xff, 0xf7, 0x17, 0xf9, 0x00, 0x28, 0x7f, 0xf4, 0x79, 0xaf, - 0x59, 0x46, 0x11, 0xa8, 0xfe, 0xf7, 0x30, 0xfe, 0x00, 0x28, 0x7f, 0xf4, - 0x72, 0xaf, 0x08, 0xa9, 0x11, 0xaa, 0x08, 0x46, 0xff, 0xf7, 0x40, 0xfe, - 0x00, 0x28, 0x7f, 0xf4, 0x6a, 0xaf, 0x10, 0x9a, 0x53, 0x59, 0x01, 0x3b, - 0x53, 0x51, 0x0a, 0xf1, 0xff, 0x3a, 0x04, 0x3d, 0x45, 0xe7, 0x05, 0x9b, - 0x5b, 0xf8, 0x03, 0x00, 0x7a, 0xb1, 0x00, 0x23, 0x0a, 0xf0, 0xc8, 0xf8, - 0x0b, 0x46, 0x00, 0x21, 0x02, 0x46, 0x4f, 0xf0, 0xff, 0x30, 0x99, 0x42, - 0x08, 0xbf, 0x90, 0x42, 0x00, 0xd2, 0x02, 0x46, 0x02, 0x9b, 0x1a, 0x60, - 0x78, 0xe7, 0x4f, 0xf0, 0xff, 0x32, 0xf9, 0xe7, 0x01, 0x99, 0x98, 0xe7, - 0x0c, 0x46, 0xe4, 0xe6, 0x42, 0x46, 0x31, 0x46, 0x30, 0x46, 0xff, 0xf7, - 0x15, 0xfe, 0x04, 0x46, 0xed, 0xe6, 0x42, 0x46, 0x31, 0x46, 0x30, 0x46, - 0xff, 0xf7, 0x93, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, 0x95, 0xae, - 0x67, 0xe6, 0x6f, 0xf0, 0x09, 0x04, 0x64, 0xe6, 0xf8, 0xb5, 0x0c, 0x46, - 0x06, 0x46, 0x11, 0x46, 0x1a, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x08, 0xf9, - 0x05, 0x46, 0x50, 0xbb, 0x77, 0x6e, 0x37, 0xb9, 0x32, 0x1d, 0x21, 0x46, - 0x20, 0x46, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, 0x42, 0xbe, 0x23, 0x68, - 0x00, 0x2b, 0x04, 0xda, 0x01, 0x46, 0x20, 0x46, 0xfe, 0xf7, 0xff, 0xfc, - 0x60, 0xbb, 0x20, 0x46, 0xfe, 0xf7, 0x7c, 0xfd, 0xb3, 0x6d, 0xb0, 0xeb, - 0x43, 0x0f, 0x25, 0xd8, 0x20, 0x46, 0xb8, 0x47, 0x05, 0x46, 0x70, 0xb9, - 0x04, 0x36, 0x23, 0x68, 0x00, 0x2b, 0x04, 0xda, 0x00, 0x21, 0x20, 0x46, - 0xfe, 0xf7, 0xeb, 0xfc, 0x38, 0xb9, 0x31, 0x46, 0x20, 0x46, 0xfe, 0xf7, - 0xa3, 0xfc, 0x00, 0x28, 0x0a, 0xda, 0x28, 0x46, 0xf8, 0xbd, 0x32, 0x46, - 0x21, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xca, 0xfd, 0x00, 0x28, 0xe8, 0xd0, - 0x05, 0x46, 0xf4, 0xe7, 0x32, 0x46, 0x21, 0x46, 0x20, 0x46, 0xff, 0xf7, - 0x12, 0xfa, 0x00, 0x28, 0xe7, 0xd0, 0xf5, 0xe7, 0x00, 0x4d, 0xea, 0xe7, - 0x80, 0xb0, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x43, 0x0e, 0x46, 0x8b, 0xb0, - 0x05, 0x46, 0x01, 0x21, 0x06, 0xf1, 0x18, 0x00, 0xfe, 0xf7, 0xc3, 0xfc, - 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x99, 0x80, 0x28, 0x46, 0xfe, 0xf7, - 0x6f, 0xfc, 0x02, 0x28, 0x07, 0x46, 0x0f, 0xd1, 0x30, 0x46, 0xfe, 0xf7, - 0x37, 0xfd, 0xeb, 0x6d, 0x07, 0x30, 0x07, 0x33, 0xc0, 0x08, 0xb0, 0xeb, - 0xd3, 0x0f, 0x47, 0x4b, 0x88, 0xbf, 0x1c, 0x46, 0x20, 0x46, 0x0b, 0xb0, - 0xbd, 0xe8, 0xf0, 0x83, 0x01, 0x28, 0x40, 0xf0, 0x82, 0x80, 0x21, 0x46, - 0x30, 0x46, 0xfe, 0xf7, 0xa2, 0xfc, 0x00, 0x28, 0x79, 0xdb, 0x06, 0xf1, - 0x0c, 0x09, 0x21, 0x46, 0x48, 0x46, 0xfe, 0xf7, 0x9a, 0xfc, 0x00, 0x28, - 0x71, 0xdb, 0x05, 0xf1, 0x04, 0x08, 0x30, 0x46, 0x41, 0x46, 0xfe, 0xf7, - 0x4f, 0xfc, 0x00, 0x28, 0x69, 0xda, 0x41, 0x46, 0x48, 0x46, 0xfe, 0xf7, - 0x49, 0xfc, 0x00, 0x28, 0x63, 0xda, 0x4b, 0x46, 0x4a, 0x46, 0x01, 0xa9, - 0x28, 0x46, 0xcd, 0xe9, 0x01, 0x74, 0xcd, 0xe9, 0x03, 0x47, 0xcd, 0xe9, - 0x05, 0x44, 0xff, 0xf7, 0x65, 0xff, 0x04, 0x46, 0x00, 0x28, 0x4d, 0xd1, - 0x33, 0x46, 0x32, 0x46, 0x04, 0xa9, 0x28, 0x46, 0xff, 0xf7, 0x5c, 0xff, - 0x04, 0x46, 0x00, 0x28, 0x44, 0xd1, 0xab, 0x69, 0x00, 0x2b, 0x37, 0xd1, - 0x03, 0x23, 0x04, 0xa9, 0x07, 0xaa, 0xcd, 0xf8, 0x24, 0xd0, 0x00, 0x93, - 0x01, 0x23, 0x08, 0x46, 0xcd, 0xe9, 0x07, 0x33, 0xff, 0xf7, 0xd5, 0xfc, - 0x04, 0x46, 0x00, 0x28, 0x32, 0xd1, 0x04, 0x9b, 0x00, 0x2b, 0x19, 0xdb, - 0x04, 0xaa, 0x33, 0x46, 0x28, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x3e, 0xff, - 0x04, 0x46, 0x38, 0xbb, 0x04, 0xaa, 0x05, 0xf1, 0x1c, 0x03, 0x28, 0x46, - 0x11, 0x46, 0xff, 0xf7, 0x5d, 0xfd, 0x04, 0x46, 0xf0, 0xb9, 0x04, 0xa9, - 0x01, 0xa8, 0xfe, 0xf7, 0x05, 0xfc, 0x13, 0x4b, 0x04, 0x1e, 0x18, 0xbf, - 0x1c, 0x46, 0x15, 0xe0, 0x00, 0x21, 0x04, 0xa8, 0xfe, 0xf7, 0x3f, 0xfc, - 0x00, 0x28, 0xdf, 0xd0, 0x04, 0xa9, 0x42, 0x46, 0x08, 0x46, 0xff, 0xf7, - 0x25, 0xfd, 0xd3, 0xe7, 0x04, 0xaa, 0x05, 0xf1, 0x10, 0x03, 0x28, 0x46, - 0x11, 0x46, 0xff, 0xf7, 0x3f, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xcf, 0xd0, - 0x01, 0xa8, 0xfe, 0xf7, 0x77, 0xfe, 0x04, 0xa8, 0xfe, 0xf7, 0x74, 0xfe, - 0x78, 0xe7, 0x02, 0x4c, 0x76, 0xe7, 0x02, 0x4c, 0x74, 0xe7, 0x00, 0xbf, - 0x80, 0xb3, 0xff, 0xff, 0x80, 0xb0, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x4f, - 0x87, 0x6d, 0x85, 0xb0, 0x91, 0x46, 0x9a, 0x46, 0x07, 0x37, 0x00, 0x23, - 0x01, 0x22, 0x06, 0x46, 0x0d, 0x46, 0xff, 0x08, 0x4f, 0xf0, 0x0c, 0x08, - 0x00, 0xf1, 0x04, 0x0b, 0x03, 0x93, 0xcd, 0xe9, 0x01, 0x23, 0x53, 0x46, - 0x4a, 0x46, 0x39, 0x46, 0x01, 0xa8, 0xfe, 0xf7, 0xa7, 0xfe, 0x04, 0x46, - 0xf0, 0xb9, 0x59, 0x46, 0x01, 0xa8, 0xfe, 0xf7, 0xbb, 0xfb, 0x00, 0x28, - 0x1f, 0xda, 0xb8, 0xf1, 0x01, 0x08, 0x21, 0xd0, 0x01, 0x21, 0x01, 0xa8, - 0xfe, 0xf7, 0xf5, 0xfb, 0x00, 0x28, 0xe8, 0xdd, 0x01, 0xab, 0x2a, 0x46, - 0x29, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xd4, 0xfe, 0x04, 0x46, 0x38, 0xb9, - 0x05, 0xf1, 0x18, 0x02, 0x01, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, - 0xcb, 0xfe, 0x04, 0x46, 0x01, 0xa8, 0xfe, 0xf7, 0x2d, 0xfe, 0x20, 0x46, - 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x21, 0x01, 0xa8, 0xfe, 0xf7, - 0x77, 0xfd, 0xd2, 0xe7, 0x00, 0x4c, 0xf1, 0xe7, 0x00, 0xb3, 0xff, 0xff, - 0x2d, 0xe9, 0xf0, 0x4f, 0x87, 0x6d, 0x87, 0xb0, 0x91, 0x46, 0x9a, 0x46, - 0x07, 0x37, 0x00, 0x23, 0x01, 0x22, 0x05, 0x46, 0x0e, 0x46, 0xff, 0x08, - 0x4f, 0xf0, 0x0c, 0x08, 0x00, 0xf1, 0x04, 0x0b, 0x05, 0x93, 0x02, 0x93, - 0xcd, 0xe9, 0x03, 0x23, 0xcd, 0xe9, 0x00, 0x23, 0x53, 0x46, 0x4a, 0x46, - 0x39, 0x46, 0x03, 0xa8, 0xfe, 0xf7, 0x5a, 0xfe, 0x04, 0x46, 0xb8, 0xbb, - 0x59, 0x46, 0x03, 0xa8, 0xfe, 0xf7, 0x6e, 0xfb, 0x00, 0x28, 0x3b, 0xda, - 0xb8, 0xf1, 0x01, 0x08, 0x3d, 0xd0, 0x01, 0x21, 0x03, 0xa8, 0xfe, 0xf7, - 0xa8, 0xfb, 0x00, 0x28, 0xe8, 0xdd, 0x06, 0xf1, 0x18, 0x02, 0x03, 0xab, - 0x28, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x86, 0xfe, 0x04, 0x46, 0xf8, 0xb9, - 0x03, 0xab, 0x69, 0x46, 0x28, 0x46, 0x1a, 0x46, 0xff, 0xf7, 0x7e, 0xfe, - 0x04, 0x46, 0xb8, 0xb9, 0x6b, 0x46, 0x32, 0x46, 0x31, 0x46, 0x28, 0x46, - 0xff, 0xf7, 0x76, 0xfe, 0x04, 0x46, 0x78, 0xb9, 0x03, 0xab, 0x6a, 0x46, - 0x69, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x6e, 0xfe, 0x04, 0x46, 0x38, 0xb9, - 0x06, 0xf1, 0x0c, 0x02, 0x6b, 0x46, 0x28, 0x46, 0x11, 0x46, 0xff, 0xf7, - 0x65, 0xfe, 0x04, 0x46, 0x03, 0xa8, 0xfe, 0xf7, 0xc7, 0xfd, 0x68, 0x46, - 0xfe, 0xf7, 0xc4, 0xfd, 0x20, 0x46, 0x07, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, - 0x01, 0x21, 0x03, 0xa8, 0xfe, 0xf7, 0x0e, 0xfd, 0xb6, 0xe7, 0x01, 0x4c, - 0xee, 0xe7, 0x00, 0xbf, 0x00, 0xb3, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x41, - 0x00, 0x23, 0x8c, 0xb0, 0x0d, 0x46, 0x01, 0x21, 0x0b, 0x93, 0x06, 0x46, - 0x08, 0x93, 0x17, 0x46, 0x05, 0x93, 0x02, 0x93, 0xcd, 0xe9, 0x09, 0x13, - 0xcd, 0xe9, 0x06, 0x13, 0xcd, 0xe9, 0x03, 0x13, 0xcd, 0xe9, 0x00, 0x13, - 0x83, 0x69, 0x00, 0x2b, 0x40, 0xf0, 0xdd, 0x80, 0x02, 0xf1, 0x18, 0x03, - 0x06, 0xa9, 0x1a, 0x46, 0xff, 0xf7, 0x32, 0xfe, 0x04, 0x46, 0x00, 0x28, - 0x40, 0xf0, 0xc3, 0x80, 0x06, 0xab, 0x3a, 0x46, 0x03, 0xa9, 0x30, 0x46, - 0xff, 0xf7, 0x50, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xb9, 0x80, - 0x06, 0xab, 0x3a, 0x46, 0x69, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x56, 0xfc, - 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xaf, 0x80, 0x6b, 0x46, 0x03, 0xaa, - 0x06, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x14, 0xfe, 0x04, 0x46, 0x00, 0x28, - 0x40, 0xf0, 0xa5, 0x80, 0x03, 0x22, 0x06, 0xa9, 0x09, 0xa8, 0xff, 0xf7, - 0x55, 0xf8, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x9c, 0x80, 0x06, 0xf1, - 0x04, 0x08, 0x41, 0x46, 0x09, 0xa8, 0xfe, 0xf7, 0xd7, 0xfa, 0x00, 0x28, - 0x80, 0xf2, 0x8a, 0x80, 0x07, 0xf1, 0x0c, 0x08, 0x03, 0xa9, 0x30, 0x46, - 0x43, 0x46, 0x42, 0x46, 0xff, 0xf7, 0xf6, 0xfd, 0x04, 0x46, 0x00, 0x28, - 0x40, 0xf0, 0x87, 0x80, 0x03, 0xa9, 0x30, 0x46, 0xef, 0xf7, 0xc9, 0xfc, - 0x04, 0x46, 0x00, 0x28, 0x7f, 0xd1, 0x03, 0xab, 0x3a, 0x46, 0x06, 0xa9, - 0x30, 0x46, 0xff, 0xf7, 0xe5, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x76, 0xd1, - 0x06, 0xa9, 0x30, 0x46, 0xef, 0xf7, 0xb9, 0xfc, 0x04, 0x46, 0x00, 0x28, - 0x6f, 0xd1, 0x03, 0xab, 0x69, 0x46, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, - 0xd5, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x66, 0xd1, 0x69, 0x46, 0x30, 0x46, - 0xef, 0xf7, 0xa9, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x5f, 0xd1, 0x09, 0xab, - 0x03, 0xa9, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, 0xc5, 0xfd, 0x04, 0x46, - 0x00, 0x28, 0x56, 0xd1, 0x03, 0xaa, 0x06, 0xab, 0x30, 0x46, 0x11, 0x46, - 0xff, 0xf7, 0xf4, 0xfb, 0x04, 0x46, 0x00, 0x28, 0x4d, 0xd1, 0x03, 0xaa, - 0x06, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0xeb, 0xfb, 0x04, 0x46, - 0x00, 0x28, 0x44, 0xd1, 0x06, 0xaa, 0x03, 0xab, 0x30, 0x46, 0x11, 0x46, - 0xff, 0xf7, 0xe2, 0xfb, 0x04, 0x46, 0x00, 0x28, 0x3b, 0xd1, 0x06, 0xaa, - 0x09, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0xa1, 0xfd, 0x04, 0x46, - 0x98, 0xbb, 0x06, 0xaa, 0x6b, 0x46, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, - 0xd1, 0xfb, 0x04, 0x46, 0x58, 0xbb, 0x07, 0xf1, 0x18, 0x03, 0x42, 0x46, - 0x69, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x90, 0xfd, 0x04, 0x46, 0x10, 0xbb, - 0x69, 0x46, 0x30, 0x46, 0xef, 0xf7, 0x65, 0xfc, 0x04, 0x46, 0xe0, 0xb9, - 0x03, 0xa9, 0x28, 0x46, 0xfe, 0xf7, 0x52, 0xfe, 0x04, 0x46, 0xb0, 0xb9, - 0x06, 0xa9, 0x05, 0xf1, 0x0c, 0x00, 0xfe, 0xf7, 0x4b, 0xfe, 0x04, 0x46, - 0x78, 0xb9, 0x69, 0x46, 0x05, 0xf1, 0x18, 0x00, 0xfe, 0xf7, 0x44, 0xfe, - 0x04, 0x46, 0x08, 0xe0, 0x09, 0xa9, 0x42, 0x46, 0x08, 0x46, 0xfe, 0xf7, - 0xc6, 0xff, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, 0x66, 0xaf, 0x09, 0xa8, - 0xfe, 0xf7, 0xce, 0xfc, 0x06, 0xa8, 0xfe, 0xf7, 0xcb, 0xfc, 0x03, 0xa8, - 0xfe, 0xf7, 0xc8, 0xfc, 0x68, 0x46, 0xfe, 0xf7, 0xc5, 0xfc, 0x20, 0x46, - 0x0c, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x13, 0x46, 0x06, 0xa9, 0xff, 0xf7, - 0x57, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xe8, 0xd1, 0x03, 0x22, 0x06, 0xa9, - 0x09, 0xa8, 0xfe, 0xf7, 0x99, 0xff, 0x04, 0x46, 0x00, 0x28, 0xe0, 0xd1, - 0x06, 0xf1, 0x04, 0x08, 0x41, 0x46, 0x09, 0xa8, 0xfe, 0xf7, 0x1c, 0xfa, - 0x00, 0x28, 0x2f, 0xda, 0x06, 0xf1, 0x10, 0x08, 0x00, 0x21, 0x40, 0x46, - 0xfe, 0xf7, 0x57, 0xfa, 0x00, 0x28, 0x3f, 0xf4, 0x3d, 0xaf, 0x07, 0xf1, - 0x18, 0x03, 0x06, 0xa9, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, 0x34, 0xfd, - 0x04, 0x46, 0x00, 0x28, 0xc5, 0xd1, 0x06, 0xab, 0x03, 0xa9, 0x30, 0x46, - 0x1a, 0x46, 0xff, 0xf7, 0x2b, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xbc, 0xd1, - 0x43, 0x46, 0x03, 0xaa, 0x06, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x22, 0xfd, - 0x04, 0x46, 0x00, 0x28, 0xb3, 0xd1, 0x09, 0xaa, 0x06, 0xab, 0x30, 0x46, - 0x11, 0x46, 0xff, 0xf7, 0x41, 0xfb, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, - 0x17, 0xaf, 0xa8, 0xe7, 0x09, 0xa9, 0x42, 0x46, 0x08, 0x46, 0xfe, 0xf7, - 0x66, 0xff, 0x04, 0x46, 0x00, 0x28, 0xc1, 0xd0, 0x9f, 0xe7, 0x00, 0x00, - 0x2d, 0xe9, 0xf0, 0x43, 0x02, 0xf1, 0x18, 0x09, 0x97, 0xb0, 0x06, 0x46, - 0x0d, 0x46, 0x48, 0x46, 0x00, 0x21, 0x90, 0x46, 0x1f, 0x46, 0xfe, 0xf7, - 0x16, 0xfa, 0x40, 0xb9, 0x39, 0x46, 0x28, 0x46, 0xfe, 0xf7, 0xf2, 0xfd, - 0x04, 0x46, 0x20, 0x46, 0x17, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x3b, 0x6a, - 0x7b, 0xb1, 0x07, 0xf1, 0x18, 0x04, 0x00, 0x21, 0x20, 0x46, 0xfe, 0xf7, - 0x04, 0xfa, 0x08, 0xb9, 0x41, 0x46, 0xec, 0xe7, 0x01, 0x21, 0x20, 0x46, - 0xfe, 0xf7, 0xfd, 0xf9, 0x00, 0x28, 0x40, 0xf0, 0xff, 0x80, 0x00, 0x23, - 0x01, 0x22, 0x13, 0xa9, 0x30, 0x46, 0x15, 0x93, 0x12, 0x93, 0x0f, 0x93, - 0x0c, 0x93, 0x09, 0x93, 0x06, 0x93, 0x03, 0x93, 0xcd, 0xe9, 0x13, 0x23, - 0xcd, 0xe9, 0x10, 0x23, 0xcd, 0xe9, 0x0d, 0x23, 0xcd, 0xe9, 0x0a, 0x23, - 0xcd, 0xe9, 0x07, 0x23, 0xcd, 0xe9, 0x04, 0x23, 0xcd, 0xe9, 0x01, 0x23, - 0x4b, 0x46, 0x4a, 0x46, 0xff, 0xf7, 0xc4, 0xfc, 0x04, 0x46, 0x00, 0x28, - 0x3a, 0xd1, 0x4b, 0x46, 0x13, 0xaa, 0x10, 0xa9, 0x30, 0x46, 0xff, 0xf7, - 0xbb, 0xfc, 0x04, 0x46, 0x90, 0xbb, 0x13, 0xaa, 0x3b, 0x46, 0x30, 0x46, - 0x11, 0x46, 0xff, 0xf7, 0xb3, 0xfc, 0x04, 0x46, 0x50, 0xbb, 0x10, 0xaa, - 0x07, 0xf1, 0x0c, 0x03, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0xaa, 0xfc, - 0x04, 0x46, 0x08, 0xbb, 0x13, 0xaa, 0x43, 0x46, 0x30, 0x46, 0x11, 0x46, - 0xff, 0xf7, 0xda, 0xfa, 0x04, 0x46, 0xc8, 0xb9, 0x10, 0xaa, 0x08, 0xf1, - 0x0c, 0x07, 0x30, 0x46, 0x3b, 0x46, 0x11, 0x46, 0xff, 0xf7, 0xd0, 0xfa, - 0x04, 0x46, 0x78, 0xb9, 0x01, 0x46, 0x13, 0xa8, 0xfe, 0xf7, 0xab, 0xf9, - 0x20, 0xbb, 0x21, 0x46, 0x10, 0xa8, 0xfe, 0xf7, 0xa6, 0xf9, 0xd8, 0xb9, - 0x42, 0x46, 0x29, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x37, 0xfe, 0x04, 0x46, - 0x13, 0xa8, 0xfe, 0xf7, 0xe9, 0xfb, 0x10, 0xa8, 0xfe, 0xf7, 0xe6, 0xfb, - 0x0d, 0xa8, 0xfe, 0xf7, 0xe3, 0xfb, 0x0a, 0xa8, 0xfe, 0xf7, 0xe0, 0xfb, - 0x07, 0xa8, 0xfe, 0xf7, 0xdd, 0xfb, 0x04, 0xa8, 0xfe, 0xf7, 0xda, 0xfb, - 0x01, 0xa8, 0xfe, 0xf7, 0xd7, 0xfb, 0x78, 0xe7, 0x28, 0x46, 0xfe, 0xf7, - 0x11, 0xfb, 0xe4, 0xe7, 0x13, 0xab, 0x4a, 0x46, 0x01, 0xa9, 0x30, 0x46, - 0xff, 0xf7, 0x66, 0xfc, 0x04, 0x46, 0x00, 0x28, 0xdc, 0xd1, 0x13, 0xab, - 0x0d, 0xa9, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, 0x5d, 0xfc, 0x04, 0x46, - 0x00, 0x28, 0xd3, 0xd1, 0x13, 0xab, 0x0d, 0xaa, 0x0a, 0xa9, 0x30, 0x46, - 0xff, 0xf7, 0x54, 0xfc, 0x04, 0x46, 0x00, 0x28, 0xca, 0xd1, 0x0d, 0xaa, - 0x43, 0x46, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x4b, 0xfc, 0x04, 0x46, - 0x00, 0x28, 0xc1, 0xd1, 0x0d, 0xa9, 0x13, 0xa8, 0xfe, 0xf7, 0x12, 0xfd, - 0x04, 0x46, 0x00, 0x28, 0xba, 0xd1, 0x13, 0xa9, 0x30, 0x46, 0xef, 0xf7, - 0x18, 0xfb, 0x04, 0x46, 0x00, 0x28, 0xb3, 0xd1, 0x10, 0xab, 0x07, 0xa9, - 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, 0x34, 0xfc, 0x04, 0x46, 0x00, 0x28, - 0xaa, 0xd1, 0x07, 0xaa, 0x13, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, - 0x63, 0xfa, 0x04, 0x46, 0x00, 0x28, 0xa1, 0xd1, 0x07, 0xaa, 0x0a, 0xab, - 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x5a, 0xfa, 0x04, 0x46, 0x00, 0x28, - 0x98, 0xd1, 0x0d, 0xaa, 0x07, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, - 0x51, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x8f, 0xd1, 0x0d, 0xaa, 0x10, 0xab, - 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x10, 0xfc, 0x04, 0x46, 0x00, 0x28, - 0x86, 0xd1, 0x0a, 0xaa, 0x3b, 0x46, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, - 0x07, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x7d, 0xaf, 0x0a, 0xab, - 0x0d, 0xaa, 0x04, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x35, 0xfa, 0x04, 0x46, - 0x00, 0x28, 0x7f, 0xf4, 0x73, 0xaf, 0x07, 0xa9, 0x28, 0x46, 0xfe, 0xf7, - 0xc3, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x6b, 0xaf, 0x04, 0xa9, - 0x05, 0xf1, 0x0c, 0x00, 0xfe, 0xf7, 0xba, 0xfc, 0x04, 0x46, 0x00, 0x28, - 0x7f, 0xf4, 0x62, 0xaf, 0x01, 0xa9, 0x05, 0xf1, 0x18, 0x00, 0xfe, 0xf7, - 0xb1, 0xfc, 0x5a, 0xe7, 0x00, 0x4c, 0xe8, 0xe6, 0x80, 0xb0, 0xff, 0xff, - 0x2d, 0xe9, 0xf0, 0x43, 0x06, 0x46, 0xa3, 0xb0, 0x0f, 0x46, 0x10, 0x46, - 0x01, 0x21, 0x15, 0x46, 0xfe, 0xf7, 0xed, 0xf8, 0x00, 0x28, 0x40, 0xf3, - 0xc4, 0x81, 0x00, 0x23, 0x4f, 0xf0, 0x01, 0x09, 0x39, 0x46, 0x1c, 0xa8, - 0x18, 0x93, 0x15, 0x93, 0x12, 0x93, 0x0f, 0x93, 0x1b, 0x93, 0x0c, 0x93, - 0x09, 0x93, 0x06, 0x93, 0x03, 0x93, 0xcd, 0xe9, 0x16, 0x93, 0xcd, 0xe9, - 0x13, 0x93, 0xcd, 0xe9, 0x10, 0x93, 0xcd, 0xe9, 0x0d, 0x93, 0xcd, 0xe9, - 0x19, 0x93, 0xcd, 0xe9, 0x0a, 0x93, 0xcd, 0xe9, 0x07, 0x93, 0xcd, 0xe9, - 0x04, 0x93, 0xcd, 0xe9, 0x01, 0x93, 0xcd, 0xe9, 0x1c, 0x93, 0xcd, 0xe9, - 0x1e, 0x39, 0xcd, 0xe9, 0x20, 0x33, 0xfe, 0xf7, 0x77, 0xfc, 0x04, 0x46, - 0x00, 0x28, 0x5a, 0xd1, 0x29, 0x46, 0x1f, 0xa8, 0xfe, 0xf7, 0x70, 0xfc, - 0x04, 0x46, 0x00, 0x28, 0x53, 0xd1, 0x1c, 0xa8, 0xfb, 0xf7, 0x23, 0xf9, - 0x80, 0x46, 0x1f, 0xa8, 0xfb, 0xf7, 0x1f, 0xf9, 0x80, 0x45, 0x28, 0xbf, - 0x80, 0x46, 0x1c, 0xa8, 0x41, 0x46, 0xfe, 0xf7, 0x49, 0xfa, 0x04, 0x46, - 0x00, 0x28, 0x42, 0xd1, 0x41, 0x46, 0x1f, 0xa8, 0xfe, 0xf7, 0x42, 0xfa, - 0x04, 0x46, 0x00, 0x28, 0x3b, 0xd1, 0xcd, 0xf8, 0x7c, 0x90, 0xcd, 0xf8, - 0x70, 0x90, 0x00, 0x21, 0x1c, 0xa8, 0xfe, 0xf7, 0x98, 0xf8, 0x58, 0xb9, - 0x41, 0x46, 0x1f, 0xa8, 0xfe, 0xf7, 0x68, 0xf9, 0x04, 0x46, 0x60, 0xbb, - 0x1f, 0xa9, 0x19, 0xa8, 0xfe, 0xf7, 0x42, 0xfc, 0x04, 0x46, 0x26, 0xe0, - 0x1c, 0xa8, 0xfb, 0xf7, 0xf6, 0xf8, 0x01, 0x46, 0x1c, 0xa8, 0xfe, 0xf7, - 0x23, 0xfa, 0x04, 0x46, 0xe8, 0xb9, 0x1f, 0xa8, 0xfb, 0xf7, 0xed, 0xf8, - 0x01, 0x46, 0x1f, 0xa8, 0xfe, 0xf7, 0x1a, 0xfa, 0x04, 0x46, 0xa0, 0xb9, - 0x1f, 0xa9, 0x1c, 0xa8, 0xfe, 0xf7, 0x32, 0xf8, 0x00, 0x28, 0xc0, 0xf2, - 0x9c, 0x80, 0x1c, 0xa9, 0x1f, 0xaa, 0x08, 0x46, 0xfe, 0xf7, 0xab, 0xfd, - 0x04, 0x46, 0x30, 0xb9, 0x01, 0x21, 0x1c, 0xa8, 0xfe, 0xf7, 0x06, 0xfa, - 0x04, 0x46, 0x00, 0x28, 0xc7, 0xd0, 0x1c, 0xa8, 0xfe, 0xf7, 0xae, 0xfa, - 0x1f, 0xa8, 0xfe, 0xf7, 0xab, 0xfa, 0x00, 0x2c, 0x40, 0xf0, 0xa6, 0x80, - 0x01, 0x21, 0x19, 0xa8, 0xfe, 0xf7, 0x57, 0xf8, 0x00, 0x28, 0x40, 0xf0, - 0x2b, 0x81, 0x2a, 0x46, 0x39, 0x46, 0x16, 0xa8, 0xff, 0xf7, 0x8b, 0xf9, - 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x96, 0x80, 0x16, 0xa9, 0x13, 0xa8, - 0xfe, 0xf7, 0xfc, 0xfb, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x8e, 0x80, - 0x29, 0x46, 0x0a, 0xa8, 0xfe, 0xf7, 0xf4, 0xfb, 0x04, 0x46, 0x00, 0x28, - 0x40, 0xf0, 0x86, 0x80, 0x29, 0x46, 0x07, 0xa8, 0xfe, 0xf7, 0xec, 0xfb, - 0x04, 0x46, 0x00, 0x28, 0x7e, 0xd1, 0x01, 0x21, 0x10, 0xa8, 0xfe, 0xf7, - 0xa7, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x77, 0xd1, 0x01, 0x46, 0x0d, 0xa8, - 0xfe, 0xf7, 0xa0, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x70, 0xd1, 0x01, 0x46, - 0x04, 0xa8, 0xfe, 0xf7, 0x99, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x69, 0xd1, - 0x01, 0x21, 0x01, 0xa8, 0xfe, 0xf7, 0x92, 0xf9, 0x04, 0x46, 0x00, 0x28, - 0x62, 0xd1, 0x15, 0x9b, 0x1b, 0x68, 0xd8, 0x07, 0x49, 0xd5, 0x09, 0x9b, - 0x1b, 0x68, 0xdb, 0x07, 0x40, 0xf1, 0x8f, 0x80, 0x07, 0xa9, 0x13, 0xa8, - 0xfd, 0xf7, 0xc8, 0xff, 0x00, 0x28, 0xc0, 0xf2, 0xb8, 0x80, 0x13, 0xa9, - 0x07, 0xaa, 0x08, 0x46, 0xff, 0xf7, 0x75, 0xf8, 0x04, 0x46, 0x00, 0x28, - 0x4a, 0xd1, 0x10, 0xa9, 0x04, 0xaa, 0x08, 0x46, 0xff, 0xf7, 0x6d, 0xf8, - 0x04, 0x46, 0x00, 0x28, 0x42, 0xd1, 0x01, 0xaa, 0x0d, 0xa9, 0x08, 0x46, - 0xff, 0xf7, 0x65, 0xf8, 0x04, 0x46, 0x00, 0x28, 0x3a, 0xd1, 0x00, 0x21, - 0x13, 0xa8, 0xfd, 0xf7, 0xec, 0xff, 0x00, 0x28, 0xd1, 0xd1, 0x00, 0x21, - 0x04, 0xa8, 0xfd, 0xf7, 0xe6, 0xff, 0x00, 0x28, 0xc0, 0xf2, 0xa6, 0x80, - 0x29, 0x46, 0x04, 0xa8, 0xfd, 0xf7, 0x9c, 0xff, 0x00, 0x28, 0x80, 0xf2, - 0xa9, 0x80, 0x04, 0xa9, 0x30, 0x46, 0xfe, 0xf7, 0x8d, 0xfb, 0x04, 0x46, - 0x20, 0xe0, 0x1f, 0xa9, 0x1c, 0xaa, 0x08, 0x46, 0xfe, 0xf7, 0x0f, 0xfd, - 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x69, 0xaf, 0x01, 0x21, 0x1f, 0xa8, - 0x60, 0xe7, 0x01, 0x21, 0x13, 0xa8, 0xfe, 0xf7, 0x65, 0xf9, 0x04, 0x46, - 0x70, 0xb9, 0x12, 0x9b, 0x1b, 0x68, 0xdf, 0x07, 0x29, 0xd4, 0x0f, 0x9b, - 0x1b, 0x68, 0xdc, 0x07, 0x25, 0xd4, 0x01, 0x21, 0x10, 0xa8, 0xfe, 0xf7, - 0x57, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x2f, 0xd0, 0x16, 0xa8, 0xfe, 0xf7, - 0xff, 0xf9, 0x13, 0xa8, 0xfe, 0xf7, 0xfc, 0xf9, 0x10, 0xa8, 0xfe, 0xf7, - 0xf9, 0xf9, 0x0d, 0xa8, 0xfe, 0xf7, 0xf6, 0xf9, 0x19, 0xa8, 0xfe, 0xf7, - 0xf3, 0xf9, 0x0a, 0xa8, 0xfe, 0xf7, 0xf0, 0xf9, 0x07, 0xa8, 0xfe, 0xf7, - 0xed, 0xf9, 0x04, 0xa8, 0xfe, 0xf7, 0xea, 0xf9, 0x01, 0xa8, 0xfe, 0xf7, - 0xe7, 0xf9, 0x20, 0x46, 0x23, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x10, 0xa9, - 0x0a, 0xaa, 0x08, 0x46, 0xff, 0xf7, 0x7e, 0xf8, 0x04, 0x46, 0x00, 0x28, - 0xd8, 0xd1, 0x0d, 0xa9, 0x16, 0xaa, 0x08, 0x46, 0xfe, 0xf7, 0xfb, 0xff, - 0x04, 0x46, 0x00, 0x28, 0xc9, 0xd0, 0xcf, 0xe7, 0x01, 0x21, 0x0d, 0xa8, - 0xfe, 0xf7, 0x20, 0xf9, 0x64, 0xe7, 0x01, 0x21, 0x07, 0xa8, 0xfe, 0xf7, - 0x1b, 0xf9, 0x04, 0x46, 0x00, 0x28, 0xc3, 0xd1, 0x06, 0x9b, 0x1b, 0x68, - 0xd9, 0x07, 0x13, 0xd4, 0x03, 0x9b, 0x1b, 0x68, 0xda, 0x07, 0x0f, 0xd4, - 0x01, 0x21, 0x04, 0xa8, 0xfe, 0xf7, 0x0c, 0xf9, 0x04, 0x46, 0x00, 0x28, - 0xb4, 0xd1, 0x01, 0x21, 0x01, 0xa8, 0xfe, 0xf7, 0x05, 0xf9, 0x04, 0x46, - 0x00, 0x28, 0x3f, 0xf4, 0x4e, 0xaf, 0xab, 0xe7, 0x04, 0xa9, 0x0a, 0xaa, - 0x08, 0x46, 0xff, 0xf7, 0x49, 0xf8, 0x04, 0x46, 0x00, 0x28, 0xa3, 0xd1, - 0x01, 0xa9, 0x16, 0xaa, 0x08, 0x46, 0xfe, 0xf7, 0xc6, 0xff, 0x04, 0x46, - 0x00, 0x28, 0xdf, 0xd0, 0x9a, 0xe7, 0x07, 0xa9, 0x13, 0xaa, 0x08, 0x46, - 0xfe, 0xf7, 0xbd, 0xff, 0x04, 0x46, 0x00, 0x28, 0x92, 0xd1, 0x04, 0xa9, - 0x10, 0xaa, 0x08, 0x46, 0xfe, 0xf7, 0xb5, 0xff, 0x04, 0x46, 0x00, 0x28, - 0x8a, 0xd1, 0x0d, 0xaa, 0x01, 0xa9, 0x46, 0xe7, 0x04, 0xa9, 0x2a, 0x46, - 0x08, 0x46, 0xff, 0xf7, 0x25, 0xf8, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, - 0x4a, 0xaf, 0x7d, 0xe7, 0x04, 0xa9, 0x2a, 0x46, 0x08, 0x46, 0xfe, 0xf7, - 0xa0, 0xff, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, 0x47, 0xaf, 0x73, 0xe7, - 0x6f, 0xf0, 0x0d, 0x04, 0x70, 0xe7, 0x6f, 0xf0, 0x03, 0x04, 0x88, 0xe7, - 0x2d, 0xe9, 0xf0, 0x41, 0x01, 0xf1, 0x18, 0x05, 0x88, 0xb0, 0x07, 0x46, - 0x88, 0x46, 0x28, 0x46, 0x00, 0x21, 0xfd, 0xf7, 0x18, 0xff, 0x04, 0x46, - 0x00, 0x28, 0x3b, 0xd0, 0x00, 0x23, 0x01, 0x26, 0x3a, 0x1d, 0x29, 0x46, - 0x05, 0xa8, 0x07, 0x93, 0x04, 0x93, 0xcd, 0xe9, 0x05, 0x63, 0xcd, 0xe9, - 0x02, 0x63, 0xff, 0xf7, 0x11, 0xfe, 0x04, 0x46, 0x30, 0xbb, 0x05, 0xab, - 0x02, 0xa9, 0x38, 0x46, 0x1a, 0x46, 0xff, 0xf7, 0xe7, 0xf9, 0x04, 0x46, - 0xf0, 0xb9, 0x02, 0xab, 0x42, 0x46, 0x41, 0x46, 0x38, 0x46, 0xff, 0xf7, - 0xdf, 0xf9, 0x04, 0x46, 0xb0, 0xb9, 0x08, 0xf1, 0x0c, 0x02, 0x02, 0xab, - 0x38, 0x46, 0x11, 0x46, 0x01, 0x92, 0xff, 0xf7, 0xd5, 0xf9, 0x04, 0x46, - 0x60, 0xb9, 0x01, 0x9a, 0x05, 0xab, 0x38, 0x46, 0x11, 0x46, 0xff, 0xf7, - 0xcd, 0xf9, 0x04, 0x46, 0x20, 0xb9, 0x31, 0x46, 0x28, 0x46, 0xfe, 0xf7, - 0x57, 0xf8, 0x04, 0x46, 0x05, 0xa8, 0xfe, 0xf7, 0x29, 0xf9, 0x02, 0xa8, - 0xfe, 0xf7, 0x26, 0xf9, 0x20, 0x46, 0x08, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, - 0x01, 0x2a, 0x2d, 0xe9, 0xf0, 0x4f, 0x06, 0x46, 0x8d, 0xb0, 0x0c, 0x46, - 0x15, 0x46, 0x07, 0xd8, 0x09, 0x68, 0xff, 0xf7, 0xa7, 0xff, 0x82, 0x46, - 0x50, 0x46, 0x0d, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x0c, 0x21, 0x10, 0x46, - 0x08, 0xf0, 0x10, 0xfe, 0x07, 0x46, 0x00, 0x28, 0x00, 0xf0, 0xb7, 0x80, - 0x4f, 0xf0, 0x0c, 0x08, 0x81, 0x46, 0x02, 0x46, 0x01, 0x21, 0x08, 0xfb, - 0x05, 0xf8, 0x00, 0xeb, 0x08, 0x03, 0x00, 0x93, 0x00, 0x23, 0x93, 0x60, - 0x00, 0x98, 0xc2, 0xe9, 0x00, 0x13, 0x0c, 0x32, 0x90, 0x42, 0xf8, 0xd1, - 0x38, 0x46, 0x0b, 0x93, 0x08, 0x93, 0x05, 0x93, 0xcd, 0xe9, 0x09, 0x13, - 0xcd, 0xe9, 0x06, 0x13, 0xcd, 0xe9, 0x03, 0x13, 0x21, 0x68, 0x18, 0x31, - 0xfe, 0xf7, 0x52, 0xfa, 0x82, 0x46, 0x90, 0xbb, 0x04, 0xf1, 0x04, 0x0b, - 0x07, 0xf1, 0x0c, 0x01, 0x04, 0xeb, 0x85, 0x04, 0x5b, 0xf8, 0x04, 0x3b, - 0xa1, 0xf1, 0x0c, 0x02, 0x30, 0x46, 0x01, 0x91, 0x18, 0x33, 0xff, 0xf7, - 0x73, 0xf9, 0x82, 0x46, 0x08, 0xbb, 0x01, 0x99, 0x5c, 0x45, 0x01, 0xf1, - 0x0c, 0x01, 0xef, 0xd1, 0xa8, 0xf1, 0x0c, 0x01, 0x32, 0x1d, 0x09, 0xa8, - 0x39, 0x44, 0xff, 0xf7, 0x87, 0xfd, 0x82, 0x46, 0x98, 0xb9, 0x01, 0x3d, - 0x4f, 0xf0, 0x0c, 0x08, 0xa7, 0xf1, 0x0c, 0x0b, 0x15, 0xbb, 0x09, 0xa9, - 0x06, 0xa8, 0xfe, 0xf7, 0x27, 0xfa, 0x82, 0x46, 0x38, 0xb9, 0x06, 0xab, - 0x03, 0xa9, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, 0x51, 0xf9, 0x82, 0x46, - 0x38, 0xb3, 0x09, 0xa8, 0xfe, 0xf7, 0xb2, 0xf8, 0x06, 0xa8, 0xfe, 0xf7, - 0xaf, 0xf8, 0x03, 0xa8, 0xfe, 0xf7, 0xac, 0xf8, 0x48, 0x46, 0x09, 0xf1, - 0x0c, 0x09, 0xfe, 0xf7, 0xa7, 0xf8, 0x00, 0x9b, 0x4b, 0x45, 0xf7, 0xd1, - 0x38, 0x46, 0x07, 0xf0, 0x97, 0xfa, 0x89, 0xe7, 0x08, 0xfb, 0x05, 0xb3, - 0x09, 0xaa, 0x06, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x33, 0xf9, 0x82, 0x46, - 0x00, 0x28, 0xe0, 0xd1, 0x54, 0xf8, 0x04, 0x3c, 0x09, 0xaa, 0x30, 0x46, - 0x18, 0x33, 0x11, 0x46, 0xff, 0xf7, 0x28, 0xf9, 0xcd, 0xe7, 0x54, 0xf8, - 0x04, 0x2c, 0x03, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x20, 0xf9, - 0x82, 0x46, 0x00, 0x28, 0xcd, 0xd1, 0x54, 0xf8, 0x04, 0x2c, 0x03, 0xab, - 0x30, 0x46, 0x0c, 0x32, 0x11, 0x46, 0xff, 0xf7, 0x15, 0xf9, 0x82, 0x46, - 0x00, 0x28, 0xc2, 0xd1, 0x54, 0xf8, 0x04, 0x2c, 0x06, 0xab, 0x30, 0x46, - 0x0c, 0x32, 0x11, 0x46, 0xff, 0xf7, 0x0a, 0xf9, 0x82, 0x46, 0x00, 0x28, - 0xb7, 0xd1, 0xb1, 0x68, 0x54, 0xf8, 0x04, 0x0c, 0xfd, 0xf7, 0xfc, 0xfb, - 0x82, 0x46, 0x00, 0x28, 0xaf, 0xd1, 0x54, 0xf8, 0x04, 0x0c, 0xb1, 0x68, - 0x0c, 0x30, 0xfd, 0xf7, 0xf3, 0xfb, 0x82, 0x46, 0x00, 0x28, 0xa6, 0xd1, - 0x54, 0xf8, 0x04, 0x0d, 0x18, 0x30, 0xfe, 0xf7, 0x57, 0xf8, 0x00, 0x2d, - 0x9f, 0xd0, 0x01, 0x3d, 0x8e, 0xe7, 0xdf, 0xf8, 0x04, 0xa0, 0x39, 0xe7, - 0x80, 0xb2, 0xff, 0xff, 0x70, 0xb4, 0x04, 0x68, 0x0e, 0x1b, 0x00, 0x2e, - 0x07, 0xdd, 0x26, 0x78, 0x9e, 0x42, 0x08, 0xd1, 0x01, 0x34, 0x04, 0x60, - 0x70, 0xbc, 0xfa, 0xf7, 0x7c, 0xbe, 0x6f, 0xf0, 0x5f, 0x00, 0x70, 0xbc, - 0x70, 0x47, 0x6f, 0xf0, 0x61, 0x00, 0xfa, 0xe7, 0x2d, 0xe9, 0xf7, 0x43, - 0x90, 0x46, 0x1f, 0x46, 0x01, 0xaa, 0x30, 0x23, 0x05, 0x46, 0x89, 0x46, - 0xff, 0xf7, 0xe2, 0xff, 0x04, 0x46, 0xf8, 0xb9, 0x2e, 0x68, 0xa9, 0xeb, - 0x06, 0x09, 0xb9, 0xf1, 0x00, 0x0f, 0x35, 0xdd, 0x01, 0x99, 0x42, 0x46, - 0x33, 0x78, 0x28, 0x46, 0x0e, 0x44, 0x42, 0xf8, 0x04, 0x3b, 0x06, 0x23, - 0x31, 0x46, 0xff, 0xf7, 0xcf, 0xff, 0x04, 0x46, 0x60, 0xb9, 0x2a, 0x68, - 0xd8, 0xf8, 0x04, 0x10, 0xc8, 0xf8, 0x08, 0x20, 0x53, 0x18, 0xb3, 0x42, - 0x2b, 0x60, 0x07, 0xd1, 0x0c, 0x21, 0x38, 0x46, 0xfc, 0xf7, 0xfe, 0xfe, - 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x51, 0x5c, 0x01, 0x33, - 0x3a, 0x46, 0x28, 0x46, 0x42, 0xf8, 0x04, 0x1b, 0x31, 0x46, 0x2b, 0x60, - 0xfa, 0xf7, 0x3b, 0xfe, 0x04, 0x46, 0x00, 0x28, 0xee, 0xd1, 0x2b, 0x68, - 0x7a, 0x68, 0xbb, 0x60, 0x13, 0x44, 0xb3, 0x42, 0x2b, 0x60, 0x0c, 0xbf, - 0x04, 0x46, 0x6f, 0xf0, 0x65, 0x04, 0xe3, 0xe7, 0x6f, 0xf0, 0x5f, 0x04, - 0xe0, 0xe7, 0x37, 0xb5, 0x02, 0x23, 0x15, 0x46, 0x01, 0xaa, 0x04, 0x46, - 0xff, 0xf7, 0x9a, 0xff, 0x40, 0xb9, 0x01, 0x9a, 0x28, 0x46, 0x21, 0x68, - 0xfe, 0xf7, 0x6e, 0xf8, 0x23, 0x68, 0x01, 0x9a, 0x13, 0x44, 0x23, 0x60, - 0x03, 0xb0, 0x30, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, 0x97, 0xb0, 0x02, 0x93, - 0x13, 0x68, 0x20, 0x9c, 0x0f, 0x2b, 0x01, 0x93, 0xcd, 0xe9, 0x0a, 0x02, - 0x00, 0xf2, 0xf1, 0x81, 0x21, 0x9b, 0xb5, 0x4d, 0x0b, 0x44, 0xb5, 0x4e, - 0xb5, 0x4f, 0x0c, 0x93, 0x21, 0x9b, 0x0c, 0x9a, 0x93, 0x42, 0x07, 0xd1, - 0x0b, 0x9b, 0x00, 0x20, 0x1a, 0x46, 0x01, 0x9b, 0x13, 0x60, 0x17, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x9b, 0x83, 0xb1, 0x01, 0x9b, 0x21, 0x99, - 0xe3, 0x5c, 0x11, 0xf8, 0x01, 0x2b, 0x53, 0x40, 0x22, 0x9a, 0x21, 0x91, - 0x02, 0xf8, 0x01, 0x3b, 0x01, 0x9b, 0x22, 0x92, 0x01, 0x33, 0x03, 0xf0, - 0x0f, 0x03, 0x01, 0x93, 0xe0, 0xe7, 0x0a, 0x9b, 0xdf, 0xf8, 0x98, 0xc2, - 0x5a, 0x68, 0x02, 0x9b, 0x19, 0x68, 0x0e, 0x91, 0x13, 0x68, 0x4b, 0x40, - 0x0e, 0x93, 0x02, 0x9b, 0x59, 0x68, 0x0f, 0x91, 0x53, 0x68, 0x4b, 0x40, - 0x0f, 0x93, 0x02, 0x9b, 0x99, 0x68, 0x10, 0x91, 0x93, 0x68, 0x4b, 0x40, - 0x10, 0x93, 0x02, 0x9b, 0xd9, 0x68, 0x02, 0xf1, 0x10, 0x03, 0x30, 0x32, - 0x11, 0x91, 0x0d, 0x93, 0x52, 0xf8, 0x24, 0x3c, 0x4b, 0x40, 0x11, 0x93, - 0x0a, 0x9b, 0x1b, 0x68, 0x5b, 0x10, 0x04, 0x93, 0x01, 0x3b, 0x05, 0x93, - 0x03, 0x93, 0x20, 0x32, 0xdd, 0xe9, 0x0e, 0x9a, 0xdd, 0xe9, 0x10, 0x83, - 0x5f, 0xfa, 0x89, 0xf0, 0x19, 0x0e, 0x55, 0xf8, 0x20, 0x00, 0x5f, 0xfa, - 0x83, 0xfe, 0x56, 0xf8, 0x21, 0x10, 0x5f, 0xfa, 0x88, 0xfb, 0x55, 0xf8, - 0x2e, 0xe0, 0x48, 0x40, 0xca, 0xf3, 0x07, 0x21, 0x55, 0xf8, 0x2b, 0xb0, - 0x57, 0xf8, 0x21, 0x10, 0x48, 0x40, 0xc8, 0xf3, 0x07, 0x41, 0x5c, 0xf8, - 0x21, 0x10, 0x48, 0x40, 0x52, 0xf8, 0x40, 0x1c, 0x41, 0x40, 0xc8, 0xb2, - 0x06, 0x90, 0x08, 0x0e, 0x07, 0x90, 0xc1, 0xf3, 0x07, 0x40, 0x08, 0x90, - 0xc1, 0xf3, 0x07, 0x20, 0x09, 0x90, 0x4f, 0xea, 0x18, 0x60, 0xc8, 0xf3, - 0x07, 0x28, 0x56, 0xf8, 0x20, 0x00, 0x8e, 0xea, 0x00, 0x0e, 0xc9, 0xf3, - 0x07, 0x20, 0x57, 0xf8, 0x20, 0x00, 0x8e, 0xea, 0x00, 0x0e, 0xca, 0xf3, - 0x07, 0x40, 0x5c, 0xf8, 0x20, 0x00, 0x8e, 0xea, 0x00, 0x0e, 0x4f, 0xea, - 0x1a, 0x60, 0x5f, 0xfa, 0x8a, 0xfa, 0x56, 0xf8, 0x20, 0x00, 0x55, 0xf8, - 0x2a, 0xa0, 0x8b, 0xea, 0x00, 0x00, 0xc3, 0xf3, 0x07, 0x2b, 0xc3, 0xf3, - 0x07, 0x43, 0x57, 0xf8, 0x2b, 0xb0, 0x5c, 0xf8, 0x23, 0x30, 0x80, 0xea, - 0x0b, 0x00, 0xc9, 0xf3, 0x07, 0x4b, 0x4f, 0xea, 0x19, 0x69, 0x5c, 0xf8, - 0x2b, 0xb0, 0x56, 0xf8, 0x29, 0x90, 0x80, 0xea, 0x0b, 0x00, 0x8a, 0xea, - 0x09, 0x0a, 0x57, 0xf8, 0x28, 0x90, 0x8a, 0xea, 0x09, 0x0a, 0x8a, 0xea, - 0x03, 0x0a, 0x03, 0x9b, 0x00, 0x2b, 0x00, 0xf3, 0xbf, 0x80, 0x05, 0x9b, - 0x12, 0x91, 0x4f, 0xea, 0x43, 0x1c, 0x04, 0x9b, 0x00, 0x2b, 0x0d, 0x9b, - 0xd8, 0xbf, 0x4f, 0xf0, 0x00, 0x0c, 0x63, 0x44, 0x5a, 0x68, 0x9c, 0x46, - 0x8a, 0xea, 0x02, 0x0a, 0xcd, 0xf8, 0x4c, 0xa0, 0x99, 0x68, 0x41, 0x40, - 0x53, 0x48, 0x14, 0x91, 0xda, 0x68, 0x8e, 0xea, 0x02, 0x0e, 0x4f, 0xea, - 0x1e, 0x62, 0xcd, 0xf8, 0x54, 0xe0, 0x10, 0xf8, 0x02, 0x90, 0x06, 0x9a, - 0x10, 0xf8, 0x02, 0x80, 0x1a, 0x69, 0x88, 0xea, 0x02, 0x02, 0x82, 0xea, - 0x09, 0x68, 0xca, 0xf3, 0x07, 0x22, 0x82, 0x5c, 0x88, 0xea, 0x02, 0x28, - 0xc1, 0xf3, 0x07, 0x42, 0x82, 0x5c, 0x88, 0xea, 0x02, 0x48, 0x07, 0x9a, - 0x10, 0xf8, 0x02, 0xb0, 0x5a, 0x69, 0xcd, 0xf8, 0x38, 0x80, 0x82, 0xea, - 0x0b, 0x6b, 0x5f, 0xfa, 0x8a, 0xf2, 0x82, 0x5c, 0x8b, 0xea, 0x02, 0x0b, - 0xc1, 0xf3, 0x07, 0x22, 0x82, 0x5c, 0x8b, 0xea, 0x02, 0x2b, 0xce, 0xf3, - 0x07, 0x42, 0x82, 0x5c, 0x8b, 0xea, 0x02, 0x4b, 0x08, 0x9a, 0x10, 0xf8, - 0x02, 0x90, 0x9a, 0x69, 0x09, 0x9b, 0x82, 0xea, 0x09, 0x42, 0xcd, 0xf8, - 0x3c, 0xb0, 0x5f, 0xfa, 0x81, 0xf9, 0x09, 0x0e, 0x10, 0xf8, 0x09, 0x90, - 0x82, 0xea, 0x09, 0x02, 0x4f, 0xea, 0x1a, 0x69, 0x10, 0xf8, 0x09, 0x90, - 0x82, 0xea, 0x09, 0x62, 0xce, 0xf3, 0x07, 0x29, 0x5f, 0xfa, 0x8e, 0xfe, - 0x10, 0xf8, 0x09, 0x90, 0x82, 0xea, 0x09, 0x22, 0x10, 0x92, 0x10, 0xf8, - 0x03, 0x90, 0xca, 0xf3, 0x07, 0x43, 0xdc, 0xf8, 0x1c, 0xc0, 0xc3, 0x5c, - 0x8c, 0xea, 0x09, 0x29, 0x10, 0xf8, 0x0e, 0xc0, 0x89, 0xea, 0x0c, 0x09, - 0x10, 0xf8, 0x01, 0xc0, 0x4f, 0xea, 0x18, 0x21, 0x22, 0x72, 0x89, 0xea, - 0x0c, 0x69, 0x84, 0xf8, 0x00, 0x80, 0x61, 0x70, 0x4f, 0xea, 0x18, 0x41, - 0x89, 0xea, 0x03, 0x43, 0x84, 0xf8, 0x04, 0xb0, 0xa1, 0x70, 0x4f, 0xea, - 0x1b, 0x21, 0x4f, 0xea, 0x13, 0x69, 0x23, 0x73, 0x61, 0x71, 0x4f, 0xea, - 0x1b, 0x41, 0x4f, 0xea, 0x18, 0x68, 0x0e, 0xa8, 0xa1, 0x71, 0x11, 0x0a, - 0x4f, 0xea, 0x1b, 0x6b, 0x84, 0xf8, 0x03, 0x80, 0x61, 0x72, 0x11, 0x0c, - 0x12, 0x0e, 0x84, 0xf8, 0x07, 0xb0, 0xa1, 0x72, 0x20, 0x21, 0xe2, 0x72, - 0x1a, 0x0a, 0x84, 0xf8, 0x0f, 0x90, 0x62, 0x73, 0x1a, 0x0c, 0x11, 0x93, - 0xa2, 0x73, 0xfc, 0xf7, 0x63, 0xfd, 0x02, 0x9b, 0x03, 0xf1, 0x10, 0x02, - 0x12, 0xf8, 0x01, 0x3d, 0x01, 0x33, 0xdb, 0xb2, 0x13, 0x70, 0x00, 0x2b, - 0x7f, 0xf4, 0xac, 0xae, 0x02, 0x9b, 0x9a, 0x42, 0xf4, 0xd1, 0xa7, 0xe6, - 0x64, 0x74, 0x00, 0x24, 0x64, 0x80, 0x00, 0x24, 0x64, 0x78, 0x00, 0x24, - 0x1c, 0x04, 0x00, 0x24, 0x64, 0x7c, 0x00, 0x24, 0x12, 0x91, 0x52, 0xf8, - 0x3c, 0x3c, 0x8a, 0xea, 0x03, 0x09, 0x06, 0x9b, 0xcd, 0xf8, 0x4c, 0x90, - 0x52, 0xf8, 0x38, 0x1c, 0x41, 0x40, 0x14, 0x91, 0x52, 0xf8, 0x34, 0x0c, - 0x8e, 0xea, 0x00, 0x00, 0x55, 0xf8, 0x23, 0xe0, 0x15, 0x90, 0x4f, 0xea, - 0x10, 0x68, 0x52, 0xf8, 0x30, 0x3c, 0x56, 0xf8, 0x28, 0x80, 0x83, 0xea, - 0x0e, 0x0e, 0x07, 0x9b, 0x8e, 0xea, 0x08, 0x0e, 0xc9, 0xf3, 0x07, 0x28, - 0x57, 0xf8, 0x28, 0x80, 0x8e, 0xea, 0x08, 0x0e, 0xc1, 0xf3, 0x07, 0x48, - 0x5c, 0xf8, 0x28, 0x80, 0x8e, 0xea, 0x08, 0x0e, 0x5f, 0xfa, 0x89, 0xf8, - 0xcd, 0xf8, 0x38, 0xe0, 0x56, 0xf8, 0x23, 0xe0, 0x52, 0xf8, 0x2c, 0x3c, - 0x55, 0xf8, 0x28, 0x80, 0x83, 0xea, 0x0e, 0x0e, 0x08, 0x9b, 0x8e, 0xea, - 0x08, 0x0e, 0xc1, 0xf3, 0x07, 0x28, 0x57, 0xf8, 0x28, 0x80, 0x8e, 0xea, - 0x08, 0x0e, 0xc0, 0xf3, 0x07, 0x48, 0x5c, 0xf8, 0x28, 0x80, 0x8e, 0xea, - 0x08, 0x0e, 0x5c, 0xf8, 0x23, 0x80, 0xcd, 0xf8, 0x3c, 0xe0, 0x5f, 0xfa, - 0x81, 0xfe, 0x52, 0xf8, 0x28, 0x3c, 0x09, 0x0e, 0x55, 0xf8, 0x2e, 0xe0, - 0x8e, 0xea, 0x08, 0x0e, 0x4f, 0xea, 0x19, 0x68, 0x8e, 0xea, 0x03, 0x0e, - 0x56, 0xf8, 0x28, 0x80, 0x09, 0x9b, 0x8e, 0xea, 0x08, 0x0e, 0xc0, 0xf3, - 0x07, 0x28, 0xc0, 0xb2, 0x57, 0xf8, 0x28, 0x80, 0x8e, 0xea, 0x08, 0x0e, - 0xcd, 0xf8, 0x40, 0xe0, 0x55, 0xf8, 0x20, 0xe0, 0x57, 0xf8, 0x23, 0x00, - 0xc9, 0xf3, 0x07, 0x43, 0x8e, 0xea, 0x00, 0x0e, 0x52, 0xf8, 0x24, 0x0c, - 0x56, 0xf8, 0x21, 0x10, 0x8e, 0xea, 0x00, 0x00, 0x48, 0x40, 0x5c, 0xf8, - 0x23, 0x10, 0x03, 0x9b, 0x48, 0x40, 0x01, 0x3b, 0x11, 0x90, 0x03, 0x93, - 0x5b, 0xe6, 0x6f, 0xf0, 0x20, 0x00, 0x1a, 0xe6, 0xf0, 0xb5, 0xad, 0xf6, - 0x04, 0x0d, 0x01, 0x23, 0x00, 0x22, 0x0d, 0xf5, 0x80, 0x60, 0x05, 0x46, - 0x13, 0xf0, 0x80, 0x01, 0x4d, 0xf8, 0x23, 0x20, 0x40, 0xf8, 0x04, 0x3b, - 0x02, 0xf1, 0x01, 0x02, 0x18, 0xbf, 0x1b, 0x21, 0x83, 0xea, 0x43, 0x03, - 0xb2, 0xf5, 0x80, 0x7f, 0x83, 0xea, 0x01, 0x03, 0xdb, 0xb2, 0xed, 0xd1, - 0x36, 0x48, 0x01, 0x23, 0x00, 0x22, 0x13, 0xf0, 0x80, 0x01, 0x02, 0xf1, - 0x01, 0x02, 0x40, 0xf8, 0x04, 0x3b, 0x18, 0xbf, 0x1b, 0x21, 0x0a, 0x2a, - 0x81, 0xea, 0x43, 0x03, 0xdb, 0xb2, 0xf2, 0xd1, 0x63, 0x23, 0x2f, 0x4c, - 0x2f, 0x48, 0x01, 0x21, 0x23, 0x70, 0x00, 0x23, 0x80, 0xf8, 0x63, 0x30, - 0x5d, 0xf8, 0x21, 0x30, 0xc3, 0xf1, 0xff, 0x03, 0x55, 0xf8, 0x23, 0xe0, - 0x4f, 0xea, 0xee, 0x12, 0x42, 0xea, 0x4e, 0x02, 0x5f, 0xfa, 0x82, 0xfc, - 0xc2, 0xf3, 0xc0, 0x12, 0x42, 0xea, 0x4c, 0x02, 0xd7, 0xb2, 0xc2, 0xf3, - 0xc0, 0x12, 0x42, 0xea, 0x47, 0x02, 0xd6, 0xb2, 0xc2, 0xf3, 0xc0, 0x12, - 0x42, 0xea, 0x46, 0x02, 0xd3, 0xb2, 0x83, 0xea, 0x0e, 0x03, 0x83, 0xea, - 0x0c, 0x03, 0x7b, 0x40, 0x73, 0x40, 0x83, 0xf0, 0x63, 0x03, 0x63, 0x54, - 0xc1, 0x54, 0x01, 0x31, 0xb1, 0xf5, 0x80, 0x7f, 0xd6, 0xd1, 0xdf, 0xf8, - 0x5c, 0xc0, 0x18, 0x4f, 0x18, 0x4e, 0x19, 0x4d, 0x19, 0x4c, 0x1c, 0xf8, - 0x01, 0x2b, 0x12, 0xf0, 0x80, 0x0f, 0x4f, 0xea, 0x02, 0x43, 0x14, 0xbf, - 0x1b, 0x20, 0x00, 0x20, 0x43, 0xea, 0x02, 0x23, 0x01, 0x39, 0x80, 0xea, - 0x42, 0x00, 0xc0, 0xb2, 0x82, 0xea, 0x00, 0x02, 0x83, 0xea, 0x00, 0x03, - 0x43, 0xea, 0x02, 0x63, 0x4f, 0xea, 0x33, 0x62, 0x47, 0xf8, 0x04, 0x3b, - 0x46, 0xf8, 0x04, 0x2b, 0x4f, 0xea, 0x33, 0x42, 0x4f, 0xea, 0x33, 0x23, - 0x45, 0xf8, 0x04, 0x2b, 0x44, 0xf8, 0x04, 0x3b, 0xdb, 0xd1, 0x0d, 0xf6, - 0x04, 0x0d, 0xf0, 0xbd, 0x1c, 0x05, 0x00, 0x24, 0x1c, 0x04, 0x00, 0x24, - 0x64, 0x84, 0x00, 0x24, 0x64, 0x74, 0x00, 0x24, 0x64, 0x78, 0x00, 0x24, - 0x64, 0x7c, 0x00, 0x24, 0x64, 0x80, 0x00, 0x24, 0x10, 0xb5, 0xfb, 0xf7, - 0xc7, 0xf9, 0x01, 0x23, 0x80, 0xf8, 0x3f, 0x30, 0x83, 0x6b, 0x1b, 0xb1, - 0x06, 0x4b, 0x4f, 0xf0, 0x80, 0x62, 0x5a, 0x60, 0xd0, 0xe9, 0x0a, 0x23, - 0xbd, 0xe8, 0x10, 0x40, 0x12, 0xf5, 0x7a, 0x72, 0x43, 0xf1, 0x00, 0x03, - 0xfa, 0xf7, 0xef, 0xbf, 0x00, 0xed, 0x00, 0xe0, 0x08, 0xb5, 0xef, 0xf3, - 0x05, 0x83, 0x53, 0xb1, 0x12, 0x4b, 0x1b, 0x68, 0x98, 0x69, 0xfb, 0xf7, - 0x57, 0xf9, 0x4f, 0xf4, 0x7a, 0x72, 0x00, 0x23, 0x08, 0xf0, 0xa6, 0xfc, - 0x08, 0xbd, 0xfa, 0xf7, 0x1b, 0xff, 0xef, 0xf3, 0x05, 0x83, 0x6b, 0xb1, - 0x0b, 0x4b, 0xd8, 0x68, 0x0b, 0x4b, 0x1a, 0x68, 0x18, 0x60, 0x82, 0x42, - 0x81, 0xbf, 0x0a, 0x49, 0x0a, 0x68, 0x01, 0x32, 0x0a, 0x60, 0xfa, 0xf7, - 0xf7, 0xfe, 0xeb, 0xe7, 0x03, 0xf0, 0xce, 0xf9, 0x00, 0x28, 0xed, 0xd1, - 0xdf, 0xf8, 0x14, 0xc0, 0x00, 0xdf, 0xeb, 0xe7, 0x88, 0x86, 0x00, 0x24, - 0x1c, 0x01, 0x00, 0x24, 0x94, 0x86, 0x00, 0x24, 0x90, 0x86, 0x00, 0x24, - 0x25, 0x55, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x4f, 0x85, 0xb0, 0xef, 0xf3, - 0x05, 0x83, 0x00, 0x2b, 0x42, 0xd0, 0x00, 0x20, 0xdf, 0xf8, 0x48, 0xa1, - 0xda, 0xf8, 0x00, 0x40, 0xfa, 0xf7, 0xea, 0xfe, 0xd4, 0xe9, 0x0c, 0x89, - 0xfa, 0xf7, 0xd2, 0xfe, 0xa3, 0x6b, 0xb8, 0xeb, 0x03, 0x08, 0x69, 0xeb, - 0xe3, 0x79, 0x18, 0xeb, 0x00, 0x04, 0x49, 0xf1, 0x00, 0x05, 0xfb, 0xf7, - 0x61, 0xf9, 0x4f, 0xf4, 0x7a, 0x73, 0xa4, 0xfb, 0x03, 0x67, 0x03, 0xfb, - 0x05, 0x77, 0x00, 0x20, 0xfa, 0xf7, 0x5a, 0xfb, 0x00, 0x28, 0x55, 0xd1, - 0xda, 0xf8, 0x00, 0x30, 0x93, 0xf8, 0x3d, 0x30, 0x00, 0x2b, 0x4f, 0xd1, - 0x6f, 0xf0, 0x00, 0x43, 0x4f, 0xf0, 0xff, 0x32, 0x9d, 0x42, 0x08, 0xbf, - 0x94, 0x42, 0xec, 0xd0, 0xda, 0xf8, 0x00, 0xb0, 0x9b, 0xf8, 0x3c, 0x30, - 0x00, 0x2b, 0xe6, 0xd1, 0x59, 0x46, 0x02, 0xa8, 0xfb, 0xf7, 0xfb, 0xf8, - 0xdd, 0xe9, 0x02, 0x23, 0xab, 0x42, 0x08, 0xbf, 0xa2, 0x42, 0x0b, 0xd3, - 0x01, 0x23, 0x8b, 0xf8, 0x3d, 0x30, 0xd8, 0xe7, 0x03, 0xf0, 0x72, 0xf9, - 0x00, 0x28, 0xb8, 0xd1, 0xdf, 0xf8, 0xc0, 0xc0, 0x00, 0xdf, 0xb5, 0xe7, - 0xfa, 0xf7, 0xa4, 0xfe, 0xdb, 0xe9, 0x0c, 0x01, 0xfa, 0xf7, 0x8c, 0xfe, - 0x23, 0x1a, 0x4f, 0xf0, 0x01, 0x00, 0x00, 0x93, 0x65, 0xeb, 0x01, 0x03, - 0x9b, 0xf8, 0x40, 0x10, 0x01, 0x93, 0xab, 0xf8, 0x3c, 0x00, 0xdb, 0xe9, - 0x08, 0x23, 0x16, 0xeb, 0x02, 0x0c, 0x47, 0xeb, 0x03, 0x03, 0x39, 0xb9, - 0xdb, 0xf8, 0x18, 0x20, 0x11, 0x68, 0x91, 0xf8, 0x20, 0x10, 0x69, 0xbb, - 0x8b, 0xf8, 0x40, 0x00, 0x4f, 0xf0, 0x00, 0x02, 0x9b, 0xf8, 0x40, 0x00, - 0x8b, 0xf8, 0x3e, 0x20, 0x10, 0xb9, 0x01, 0x20, 0x8b, 0xf8, 0x40, 0x00, - 0x62, 0x46, 0x2b, 0xe0, 0xda, 0xf8, 0x00, 0x40, 0x20, 0x46, 0xfb, 0xf7, - 0xfc, 0xfd, 0x00, 0x23, 0x94, 0xf8, 0x40, 0x20, 0xa3, 0x87, 0x0a, 0xb1, - 0x84, 0xf8, 0x40, 0x30, 0xda, 0xf8, 0x00, 0x10, 0x02, 0xa8, 0xfb, 0xf7, - 0xac, 0xf8, 0x02, 0x9c, 0xef, 0xf3, 0x05, 0x83, 0x3b, 0xb9, 0x03, 0xf0, - 0x29, 0xf9, 0x20, 0xb9, 0xa4, 0xeb, 0x08, 0x00, 0xdf, 0xf8, 0x30, 0xc0, - 0x00, 0xdf, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xdd, 0xe9, 0x00, 0x12, - 0x00, 0x2a, 0x08, 0xbf, 0x05, 0x29, 0xcd, 0xd3, 0xbc, 0xf5, 0x7a, 0x62, - 0x8b, 0xf8, 0x3e, 0x00, 0x43, 0xf1, 0xff, 0x33, 0x58, 0x46, 0xfa, 0xf7, - 0x0c, 0xff, 0x74, 0xe7, 0x88, 0x86, 0x00, 0x24, 0xc1, 0x5d, 0x01, 0x08, - 0x55, 0x59, 0x01, 0x08, 0x2d, 0xe9, 0xf3, 0x47, 0x05, 0x46, 0x00, 0x26, - 0x67, 0x4f, 0xff, 0xf7, 0x11, 0xff, 0x85, 0xf8, 0x24, 0x60, 0xfa, 0xf7, - 0x39, 0xfe, 0x6b, 0x68, 0x01, 0xa9, 0x1b, 0x1a, 0x00, 0x2b, 0x2b, 0x68, - 0xd8, 0xbf, 0x68, 0x60, 0x01, 0x93, 0x1b, 0xb1, 0x5a, 0x69, 0x12, 0x1a, - 0x00, 0x2a, 0x3b, 0xdd, 0x2b, 0x60, 0x03, 0xb1, 0x1d, 0x61, 0x0e, 0x60, - 0x01, 0x99, 0x11, 0xb1, 0x2b, 0x89, 0x01, 0x33, 0x2b, 0x81, 0xfa, 0xf7, - 0x0d, 0xfe, 0x01, 0xa8, 0x00, 0x29, 0x31, 0xd1, 0x01, 0x9c, 0x05, 0xf1, - 0x18, 0x09, 0x4f, 0xf0, 0x01, 0x0a, 0x00, 0x2c, 0x37, 0xd1, 0xff, 0xf7, - 0xe9, 0xfe, 0xfa, 0xf7, 0x13, 0xfe, 0x2b, 0x68, 0x00, 0x2b, 0x7e, 0xd0, - 0x5c, 0x69, 0x24, 0x1a, 0x24, 0xea, 0xe4, 0x74, 0xfa, 0xf7, 0xf6, 0xfd, - 0xd5, 0xf8, 0x30, 0x80, 0xef, 0xf3, 0x05, 0x83, 0x00, 0x2b, 0x75, 0xd0, - 0xb8, 0xf1, 0x00, 0x0f, 0x7d, 0xd1, 0xab, 0x7a, 0x00, 0x2b, 0x00, 0xf0, - 0x8a, 0x80, 0xfa, 0xf7, 0xfb, 0xfd, 0xab, 0x7a, 0x00, 0x2b, 0x00, 0xf0, - 0x82, 0x80, 0x00, 0x23, 0xab, 0x72, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x47, - 0xfa, 0xf7, 0xdc, 0xbd, 0x03, 0xf1, 0x08, 0x01, 0x9b, 0x68, 0xba, 0xe7, - 0x8c, 0x68, 0x0b, 0x46, 0x00, 0x22, 0x9a, 0x60, 0x1a, 0x46, 0xdb, 0x68, - 0x00, 0x2b, 0xfa, 0xd1, 0x02, 0x60, 0x01, 0xf1, 0x08, 0x00, 0x21, 0x46, - 0xbe, 0xe7, 0x23, 0x6a, 0xd4, 0xf8, 0x08, 0x80, 0x13, 0xb1, 0x04, 0xf1, - 0x24, 0x00, 0x98, 0x47, 0xa2, 0x69, 0x00, 0x2a, 0x0b, 0xdb, 0x63, 0x69, - 0x13, 0x44, 0x63, 0x61, 0xff, 0xf7, 0xa4, 0xfe, 0x21, 0x46, 0x02, 0x46, - 0x28, 0x46, 0xfb, 0xf7, 0x0b, 0xfd, 0x44, 0x46, 0xaf, 0xe7, 0xeb, 0x68, - 0x73, 0xb1, 0xa3, 0x42, 0x0c, 0xd8, 0x2b, 0x6a, 0xa3, 0x42, 0x09, 0xd3, - 0xa3, 0x79, 0x2a, 0x69, 0x01, 0x33, 0xdb, 0xb2, 0x13, 0xfa, 0x02, 0xf2, - 0x14, 0xbf, 0xa3, 0x71, 0x84, 0xf8, 0x06, 0xa0, 0xe3, 0x69, 0x13, 0xb1, - 0x04, 0xf1, 0x24, 0x00, 0x98, 0x47, 0xeb, 0x68, 0x23, 0xb1, 0xa3, 0x42, - 0x02, 0xd8, 0x2b, 0x6a, 0xa3, 0x42, 0x01, 0xd2, 0xa6, 0x71, 0xde, 0xe7, - 0xfa, 0xf7, 0xa8, 0xfd, 0x48, 0x46, 0xab, 0x69, 0x83, 0xb1, 0x19, 0x68, - 0x22, 0x68, 0x91, 0x42, 0x08, 0xd3, 0x0b, 0xd1, 0xe3, 0x60, 0x03, 0x68, - 0x9b, 0x68, 0xa3, 0x60, 0x04, 0x60, 0xfa, 0xf7, 0x85, 0xfd, 0xcc, 0xe7, - 0x03, 0xf1, 0x08, 0x00, 0x9b, 0x68, 0xed, 0xe7, 0xe6, 0x60, 0x03, 0x68, - 0xf3, 0xe7, 0x4f, 0xf0, 0xff, 0x34, 0x81, 0xe7, 0x03, 0xf0, 0x52, 0xf8, - 0x02, 0x46, 0x00, 0x28, 0x84, 0xd1, 0x40, 0x46, 0x01, 0x21, 0x23, 0x46, - 0xbc, 0x46, 0x00, 0xdf, 0x81, 0xe7, 0x98, 0xf8, 0x00, 0x30, 0xf3, 0x2b, - 0x7f, 0xf4, 0x7d, 0xaf, 0x00, 0x2c, 0x7f, 0xf4, 0x7a, 0xaf, 0x22, 0x46, - 0x01, 0x21, 0x40, 0x46, 0x03, 0xf0, 0x90, 0xfc, 0x73, 0xe7, 0xfa, 0xf7, - 0x5f, 0xfd, 0xff, 0xf7, 0x45, 0xfe, 0x34, 0xe7, 0x9d, 0x81, 0x01, 0x08, - 0x01, 0x4b, 0x58, 0x69, 0x70, 0x47, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, - 0x01, 0x23, 0x0a, 0x4a, 0x90, 0xf9, 0x20, 0x10, 0x43, 0x70, 0x1c, 0x32, - 0x93, 0x68, 0x10, 0xb5, 0x1b, 0xb1, 0x93, 0xf9, 0x20, 0x40, 0x8c, 0x42, - 0x05, 0xdc, 0xc0, 0xe9, 0x02, 0x32, 0x90, 0x60, 0x03, 0xb1, 0xd8, 0x60, - 0x10, 0xbd, 0x1a, 0x46, 0x9b, 0x68, 0xf1, 0xe7, 0x1c, 0x01, 0x00, 0x24, - 0x90, 0xf8, 0x22, 0x30, 0x82, 0x6b, 0x13, 0xf0, 0x10, 0x0f, 0x0c, 0xbf, - 0x60, 0x20, 0x20, 0x20, 0x10, 0x44, 0x70, 0x47, 0x10, 0xb5, 0xc4, 0x69, - 0x62, 0x1c, 0xd0, 0xe9, 0x04, 0x31, 0x0c, 0xd1, 0x03, 0xb1, 0x59, 0x61, - 0x42, 0x69, 0x1a, 0xb1, 0x13, 0x61, 0x00, 0x23, 0x43, 0x61, 0x01, 0xe0, - 0x07, 0x4a, 0x13, 0x63, 0x00, 0x23, 0xc3, 0x61, 0x10, 0xbd, 0x1b, 0xb1, - 0xda, 0x69, 0x59, 0x61, 0x22, 0x44, 0xda, 0x61, 0x42, 0x69, 0x00, 0x2a, - 0xee, 0xd1, 0x01, 0x4a, 0xd3, 0x62, 0xf1, 0xe7, 0x1c, 0x01, 0x00, 0x24, - 0xc2, 0x68, 0x2a, 0xb1, 0x83, 0x68, 0x93, 0x60, 0x03, 0xb1, 0xda, 0x60, - 0x00, 0x23, 0xc3, 0x60, 0x70, 0x47, 0x03, 0x78, 0xf1, 0x2b, 0x00, 0xd0, - 0x70, 0x47, 0xc0, 0x68, 0xf9, 0xe7, 0x83, 0x68, 0x9a, 0x68, 0x82, 0x60, - 0x02, 0xb1, 0xd0, 0x60, 0x00, 0x22, 0x18, 0x46, 0xda, 0x60, 0x70, 0x47, - 0x38, 0xb5, 0x1f, 0x4c, 0x23, 0x7a, 0x02, 0x2b, 0x35, 0xd1, 0x63, 0x6a, - 0x00, 0x2b, 0x34, 0xd0, 0x63, 0x69, 0x4a, 0x1c, 0x58, 0x70, 0x16, 0xd1, - 0x22, 0x6b, 0x00, 0x21, 0x72, 0xb9, 0x4f, 0xf0, 0xff, 0x30, 0xc3, 0xe9, - 0x04, 0x21, 0xd8, 0x61, 0x59, 0xb1, 0x0b, 0x61, 0x15, 0x48, 0xff, 0xf7, - 0xde, 0xff, 0x02, 0x23, 0x43, 0x70, 0xa0, 0x61, 0x01, 0x20, 0x38, 0xbd, - 0x11, 0x46, 0x12, 0x69, 0xec, 0xe7, 0x23, 0x63, 0xf2, 0xe7, 0xe2, 0x6a, - 0x00, 0x20, 0x12, 0xb1, 0xd5, 0x69, 0xa9, 0x42, 0x0b, 0xd2, 0xd9, 0x61, - 0xc3, 0xe9, 0x04, 0x20, 0x58, 0xb1, 0x03, 0x61, 0x00, 0x2a, 0xe5, 0xd0, - 0xd0, 0x69, 0x53, 0x61, 0x41, 0x1a, 0xd1, 0x61, 0xe0, 0xe7, 0x10, 0x46, - 0x49, 0x1b, 0x12, 0x69, 0xeb, 0xe7, 0xe3, 0x62, 0xf2, 0xe7, 0x00, 0x20, - 0xdf, 0xe7, 0x18, 0x46, 0xdd, 0xe7, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, - 0x38, 0x01, 0x00, 0x24, 0x91, 0xf9, 0x20, 0x20, 0x83, 0x68, 0x10, 0xb5, - 0x1b, 0xb1, 0x93, 0xf9, 0x20, 0x40, 0x94, 0x42, 0x05, 0xda, 0xc1, 0xe9, - 0x02, 0x30, 0x81, 0x60, 0x03, 0xb1, 0xd9, 0x60, 0x10, 0xbd, 0x18, 0x46, - 0x9b, 0x68, 0xf1, 0xe7, 0x01, 0x23, 0x01, 0x46, 0x43, 0x70, 0x01, 0x48, - 0xff, 0xf7, 0xe8, 0xbf, 0x38, 0x01, 0x00, 0x24, 0x70, 0xb5, 0x12, 0x4d, - 0x04, 0x46, 0x2e, 0x7a, 0x69, 0x69, 0x90, 0xb9, 0x02, 0x2e, 0x0f, 0xd1, - 0x6c, 0x6a, 0x6c, 0xb1, 0x94, 0xf9, 0x20, 0x20, 0x91, 0xf9, 0x20, 0x30, - 0x9a, 0x42, 0x07, 0xdd, 0x20, 0x46, 0xff, 0xf7, 0x77, 0xff, 0x08, 0x46, - 0xff, 0xf7, 0x32, 0xff, 0x66, 0x70, 0xac, 0x61, 0x70, 0xbd, 0x02, 0x2e, - 0x05, 0xd1, 0x90, 0xf9, 0x20, 0x20, 0x91, 0xf9, 0x20, 0x30, 0x9a, 0x42, - 0xf1, 0xdc, 0x20, 0x46, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0xd2, 0xbf, - 0x1c, 0x01, 0x00, 0x24, 0x38, 0xb5, 0x04, 0x46, 0x15, 0x46, 0xff, 0xf7, - 0x33, 0xff, 0x01, 0x60, 0x20, 0x46, 0xff, 0xf7, 0x39, 0xff, 0x1d, 0xb1, - 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0xca, 0xbf, 0xbd, 0xe8, 0x38, 0x40, - 0xff, 0xf7, 0xbe, 0xbf, 0x10, 0xb5, 0x04, 0x46, 0x80, 0x69, 0x18, 0xb1, - 0x00, 0x22, 0x11, 0x46, 0xff, 0xf7, 0xe6, 0xff, 0x63, 0x78, 0x23, 0x2b, - 0x02, 0xbf, 0xa3, 0x68, 0x00, 0x22, 0x9a, 0x61, 0x10, 0xbd, 0x10, 0xb5, - 0x01, 0x46, 0x04, 0x46, 0x64, 0xb1, 0x23, 0x78, 0xf1, 0x2b, 0x07, 0xd0, - 0x08, 0x46, 0xff, 0xf7, 0x37, 0xff, 0x20, 0x46, 0xbd, 0xe8, 0x10, 0x40, - 0xff, 0xf7, 0x8e, 0xbf, 0xe4, 0x68, 0xf1, 0xe7, 0x10, 0xbd, 0x00, 0x00, - 0x38, 0xb5, 0x25, 0x4d, 0xec, 0x6a, 0x00, 0x2c, 0x45, 0xd0, 0xe3, 0x69, - 0x01, 0x3b, 0xe3, 0x61, 0x00, 0x2b, 0x40, 0xd1, 0x63, 0x78, 0x73, 0x2b, - 0x06, 0xd0, 0x09, 0xd8, 0x53, 0x2b, 0x0b, 0xd0, 0x03, 0xf0, 0xdf, 0x03, - 0x43, 0x2b, 0x29, 0xd1, 0x20, 0x46, 0xff, 0xf7, 0x20, 0xff, 0x25, 0xe0, - 0x03, 0xf0, 0xef, 0x03, 0x83, 0x2b, 0xf6, 0xe7, 0x20, 0x46, 0xff, 0xf7, - 0x18, 0xff, 0xc3, 0x78, 0x9b, 0x07, 0x1b, 0xd5, 0xc0, 0x68, 0x90, 0xf9, - 0x21, 0x20, 0xc3, 0x6a, 0xd9, 0x78, 0x89, 0x07, 0x09, 0xd5, 0x99, 0x68, - 0x8c, 0x42, 0x08, 0xbf, 0xa1, 0x68, 0x21, 0xb1, 0x91, 0xf9, 0x20, 0x10, - 0x8a, 0x42, 0xb8, 0xbf, 0x0a, 0x46, 0x5b, 0x69, 0x00, 0x2b, 0xef, 0xd1, - 0x90, 0xf9, 0x20, 0x30, 0x93, 0x42, 0x03, 0xd0, 0x80, 0xf8, 0x20, 0x20, - 0xff, 0xf7, 0xaf, 0xff, 0x20, 0x46, 0xff, 0xf7, 0xed, 0xfe, 0xff, 0xf7, - 0x59, 0xff, 0x24, 0x69, 0x24, 0xb1, 0xe3, 0x69, 0x00, 0x2b, 0xc1, 0xd0, - 0x00, 0x23, 0x63, 0x61, 0xec, 0x62, 0x38, 0xbd, 0x1c, 0x01, 0x00, 0x24, - 0x10, 0xb5, 0x03, 0x46, 0x53, 0xe8, 0x00, 0x0f, 0x08, 0x42, 0x03, 0xd1, - 0xbf, 0xf3, 0x2f, 0x8f, 0x00, 0x20, 0x05, 0xe0, 0x20, 0xea, 0x01, 0x02, - 0x43, 0xe8, 0x00, 0x24, 0x04, 0xb1, 0xf1, 0xe7, 0x10, 0xbd, 0x10, 0xb5, - 0x03, 0x46, 0x53, 0xe8, 0x00, 0x0f, 0x00, 0xea, 0x01, 0x02, 0x8a, 0x42, - 0x03, 0xd0, 0xbf, 0xf3, 0x2f, 0x8f, 0x00, 0x20, 0x05, 0xe0, 0x20, 0xea, - 0x01, 0x02, 0x43, 0xe8, 0x00, 0x24, 0x04, 0xb1, 0xef, 0xe7, 0x10, 0xbd, - 0x10, 0xb5, 0x43, 0x78, 0x04, 0x46, 0x33, 0x2b, 0x15, 0xd1, 0x90, 0xf8, - 0x23, 0x30, 0x41, 0x6a, 0x03, 0xf0, 0x01, 0x02, 0x9b, 0x07, 0x08, 0xd4, - 0x28, 0x30, 0x1a, 0xb1, 0xff, 0xf7, 0xdd, 0xff, 0x48, 0xb1, 0x0b, 0xe0, - 0xff, 0xf7, 0xc8, 0xff, 0xfa, 0xe7, 0x80, 0x6a, 0x01, 0xea, 0x00, 0x03, - 0x12, 0xb1, 0x99, 0x42, 0xf4, 0xd0, 0x10, 0xbd, 0x00, 0x2b, 0xfc, 0xd0, - 0x01, 0x46, 0x00, 0x22, 0x20, 0x46, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, - 0x35, 0xbf, 0xd0, 0xe8, 0x5f, 0x3f, 0x13, 0xb9, 0xbf, 0xf3, 0x2f, 0x8f, - 0x04, 0xe0, 0x5a, 0x1e, 0xc0, 0xe8, 0x51, 0x2f, 0x01, 0xb1, 0xf4, 0xe7, - 0x98, 0xb2, 0x70, 0x47, 0x10, 0xb5, 0xd0, 0xe8, 0x5f, 0x3f, 0x5a, 0x1c, - 0x91, 0x42, 0x00, 0xd8, 0x00, 0x22, 0xc0, 0xe8, 0x54, 0x2f, 0x04, 0xb1, - 0xf5, 0xe7, 0x98, 0xb2, 0x10, 0xbd, 0x10, 0xb5, 0xd0, 0xe8, 0x5f, 0x3f, - 0x99, 0x42, 0x02, 0xd8, 0xbf, 0xf3, 0x2f, 0x8f, 0x04, 0xe0, 0x5a, 0x1c, - 0xc0, 0xe8, 0x54, 0x2f, 0x04, 0xb1, 0xf3, 0xe7, 0x98, 0xb2, 0x10, 0xbd, - 0x10, 0xb5, 0x04, 0x46, 0xb8, 0xb1, 0x03, 0x78, 0xf6, 0x2b, 0x14, 0xd1, - 0x83, 0x68, 0x3b, 0xb1, 0xff, 0xf7, 0x73, 0xfe, 0x01, 0x22, 0x00, 0x21, - 0xff, 0xf7, 0xfe, 0xfe, 0x00, 0x20, 0x10, 0xbd, 0xc1, 0x89, 0x0c, 0x30, - 0xff, 0xf7, 0xdd, 0xff, 0xe3, 0x89, 0x83, 0x42, 0x8c, 0xbf, 0x00, 0x20, - 0x6f, 0xf0, 0x02, 0x00, 0xf3, 0xe7, 0x6f, 0xf0, 0x03, 0x00, 0xf0, 0xe7, - 0x83, 0x68, 0x10, 0xb5, 0x04, 0x46, 0x63, 0xb1, 0x0c, 0x30, 0xff, 0xf7, - 0xb2, 0xff, 0x40, 0xb1, 0x20, 0x46, 0xff, 0xf7, 0x54, 0xfe, 0x00, 0x22, - 0xbd, 0xe8, 0x10, 0x40, 0x11, 0x46, 0xff, 0xf7, 0xdd, 0xbe, 0x10, 0xbd, - 0x28, 0x4b, 0x5a, 0x69, 0x70, 0xb5, 0x04, 0x46, 0x00, 0x2a, 0x41, 0xd0, - 0x00, 0x28, 0x42, 0xd0, 0x03, 0x78, 0xf5, 0x2b, 0x3f, 0xd1, 0x03, 0x7e, - 0x00, 0x2b, 0x3f, 0xd0, 0xc1, 0x68, 0x91, 0x42, 0x3c, 0xd1, 0x01, 0x3b, - 0xdb, 0xb2, 0x03, 0x76, 0x13, 0xbb, 0x43, 0x69, 0x0b, 0xb1, 0x01, 0x69, - 0x19, 0x61, 0x21, 0x69, 0xf1, 0xb1, 0x4b, 0x61, 0x92, 0xf9, 0x21, 0x30, - 0xd5, 0x6a, 0xdd, 0xb9, 0x82, 0xf8, 0x20, 0x30, 0xa3, 0x68, 0x83, 0xb1, - 0x20, 0x46, 0xff, 0xf7, 0x26, 0xfe, 0x06, 0x46, 0x2a, 0x46, 0x29, 0x46, - 0xff, 0xf7, 0xb0, 0xfe, 0xf3, 0x6a, 0xc4, 0xe9, 0x03, 0x65, 0x63, 0x61, - 0x03, 0xb1, 0x1c, 0x61, 0x01, 0x23, 0xf4, 0x62, 0x23, 0x76, 0x00, 0x20, - 0xff, 0xf7, 0x7c, 0xfe, 0x00, 0x20, 0x0f, 0xe0, 0xd3, 0x62, 0xdf, 0xe7, - 0xe9, 0x78, 0x89, 0x07, 0x06, 0xd5, 0xa9, 0x68, 0x21, 0xb1, 0x91, 0xf9, - 0x20, 0x10, 0x8b, 0x42, 0xb8, 0xbf, 0x0b, 0x46, 0x6d, 0x69, 0xd6, 0xe7, - 0x4f, 0xf0, 0xff, 0x30, 0x70, 0xbd, 0x6f, 0xf0, 0x03, 0x00, 0xfb, 0xe7, - 0x6f, 0xf0, 0x02, 0x00, 0xf8, 0xe7, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, - 0x22, 0x4b, 0x70, 0xb5, 0x5d, 0x69, 0x04, 0x46, 0x0e, 0x46, 0x00, 0x2d, - 0x35, 0xd0, 0x00, 0x28, 0x36, 0xd0, 0x03, 0x78, 0xf5, 0x2b, 0x33, 0xd1, - 0x03, 0x7e, 0x53, 0xb9, 0xc0, 0xe9, 0x03, 0x53, 0xeb, 0x6a, 0x43, 0x61, - 0x03, 0xb1, 0x18, 0x61, 0x01, 0x23, 0xec, 0x62, 0x00, 0x20, 0x23, 0x76, - 0x70, 0xbd, 0xc2, 0x78, 0xd1, 0x07, 0x06, 0xd5, 0xc1, 0x68, 0xa9, 0x42, - 0x03, 0xd1, 0xff, 0x2b, 0x21, 0xd0, 0x01, 0x33, 0xf2, 0xe7, 0xf6, 0xb1, - 0x93, 0x07, 0x0a, 0xd5, 0xe0, 0x68, 0x95, 0xf9, 0x20, 0x30, 0x90, 0xf9, - 0x20, 0x20, 0x9a, 0x42, 0x03, 0xda, 0x80, 0xf8, 0x20, 0x30, 0xff, 0xf7, - 0x78, 0xfe, 0x31, 0x46, 0x53, 0x20, 0xff, 0xf7, 0xcd, 0xfd, 0x18, 0xb1, - 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x0c, 0xfe, 0x6f, 0xf0, 0x01, 0x00, - 0xda, 0xe7, 0x4f, 0xf0, 0xff, 0x30, 0xd7, 0xe7, 0x6f, 0xf0, 0x03, 0x00, - 0xd4, 0xe7, 0x6f, 0xf0, 0x02, 0x00, 0xd1, 0xe7, 0x1c, 0x01, 0x00, 0x24, - 0x2d, 0xe9, 0xf0, 0x41, 0x04, 0x46, 0x00, 0x26, 0x01, 0x27, 0x0c, 0xb9, - 0xbd, 0xe8, 0xf0, 0x81, 0xe3, 0x78, 0xd4, 0xf8, 0x14, 0x80, 0x1b, 0x07, - 0x12, 0xd5, 0xa3, 0x68, 0x26, 0x76, 0x7b, 0xb1, 0x20, 0x46, 0xff, 0xf7, - 0x9e, 0xfd, 0x00, 0x22, 0x05, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x28, 0xfe, - 0xeb, 0x6a, 0xc4, 0xe9, 0x03, 0x56, 0x63, 0x61, 0x03, 0xb1, 0x1c, 0x61, - 0xec, 0x62, 0x27, 0x76, 0x44, 0x46, 0xe2, 0xe7, 0x03, 0x46, 0x53, 0xe8, - 0x00, 0x0f, 0x42, 0x1c, 0x43, 0xe8, 0x00, 0x21, 0x01, 0xb1, 0xf8, 0xe7, - 0x70, 0x47, 0x03, 0x6b, 0x30, 0xb4, 0xbb, 0xb1, 0xcd, 0x78, 0x00, 0x24, - 0xda, 0x78, 0xaa, 0x42, 0x0a, 0xd3, 0x1a, 0x46, 0xc1, 0xe9, 0x01, 0x24, - 0x62, 0xb1, 0x91, 0x60, 0x7c, 0xb1, 0x61, 0x60, 0x28, 0x30, 0x30, 0xbc, - 0xff, 0xf7, 0xe4, 0xbf, 0x5a, 0x68, 0x1c, 0x46, 0x00, 0x2a, 0xf1, 0xd0, - 0x13, 0x46, 0xeb, 0xe7, 0xc1, 0x62, 0xf1, 0xe7, 0xc1, 0xe9, 0x01, 0x33, - 0xc1, 0x62, 0x01, 0x63, 0xee, 0xe7, 0x30, 0xb5, 0xf0, 0xb1, 0xc3, 0x68, - 0x8b, 0x42, 0x1b, 0xd8, 0x03, 0x69, 0x8b, 0x42, 0x18, 0xd9, 0x00, 0xf1, - 0x14, 0x03, 0x1a, 0x68, 0x0a, 0x60, 0xbf, 0xf3, 0x5f, 0x8f, 0x53, 0xe8, - 0x00, 0x2f, 0x0c, 0x68, 0x94, 0x42, 0xf6, 0xd1, 0x43, 0xe8, 0x00, 0x15, - 0x05, 0xb1, 0xf2, 0xe7, 0x04, 0x30, 0x50, 0xe8, 0x00, 0x3f, 0x5a, 0x1e, - 0x40, 0xe8, 0x00, 0x21, 0x01, 0xb1, 0xf8, 0xe7, 0x00, 0x20, 0x30, 0xbd, - 0x6f, 0xf0, 0x03, 0x00, 0xfb, 0xe7, 0x10, 0xb5, 0x90, 0xb1, 0x00, 0xf1, - 0x14, 0x03, 0x53, 0xe8, 0x00, 0x4f, 0x14, 0xb9, 0xbf, 0xf3, 0x2f, 0x8f, - 0x04, 0xe0, 0x22, 0x68, 0x43, 0xe8, 0x00, 0x21, 0x01, 0xb1, 0xf4, 0xe7, - 0x14, 0xb1, 0x04, 0x30, 0xff, 0xf7, 0xa0, 0xff, 0x20, 0x46, 0x10, 0xbd, - 0x04, 0x46, 0xfb, 0xe7, 0x30, 0xb5, 0xc0, 0xb1, 0x89, 0xb1, 0xc2, 0xb1, - 0xcb, 0xb1, 0x00, 0x24, 0x01, 0x60, 0xc3, 0x60, 0x43, 0x61, 0xc0, 0xe9, - 0x01, 0x42, 0x02, 0xfb, 0x01, 0xf4, 0x1d, 0x19, 0x05, 0x61, 0x18, 0x46, - 0x01, 0x39, 0x04, 0xd1, 0xa2, 0x1a, 0x99, 0x50, 0x01, 0x21, 0x08, 0x46, - 0x30, 0xbd, 0x85, 0x18, 0x05, 0x60, 0x28, 0x46, 0xf4, 0xe7, 0x01, 0x46, - 0xf7, 0xe7, 0x11, 0x46, 0xf5, 0xe7, 0x19, 0x46, 0xf3, 0xe7, 0x30, 0xb5, - 0x80, 0xb1, 0xc9, 0xb1, 0xa1, 0xf1, 0x08, 0x05, 0x00, 0xf1, 0x08, 0x04, - 0x00, 0x22, 0xa5, 0x42, 0x09, 0xd1, 0x6b, 0x68, 0x23, 0xf0, 0x03, 0x04, - 0x43, 0x68, 0x1b, 0x1b, 0x43, 0x60, 0x3a, 0xb9, 0x6a, 0x60, 0x01, 0x20, - 0x30, 0xbd, 0x23, 0x68, 0x22, 0x46, 0x3b, 0xb1, 0x1c, 0x46, 0xee, 0xe7, - 0x51, 0xf8, 0x08, 0x3c, 0x13, 0x60, 0xf4, 0xe7, 0x08, 0x46, 0xf3, 0xe7, - 0x18, 0x46, 0xf1, 0xe7, 0x10, 0xb5, 0xc3, 0x78, 0x04, 0x46, 0x13, 0xf0, - 0x01, 0x03, 0x22, 0xd1, 0x03, 0x80, 0x83, 0x78, 0x9a, 0x07, 0x08, 0xd5, - 0x13, 0xf0, 0x10, 0x0f, 0x01, 0x6b, 0x13, 0x4b, 0x0f, 0xd0, 0xd3, 0xf8, - 0x84, 0x00, 0xff, 0xf7, 0x70, 0xff, 0xa3, 0x78, 0xdb, 0x07, 0x1c, 0xd5, - 0x0e, 0x4b, 0x21, 0x46, 0xd3, 0xf8, 0x88, 0x00, 0x38, 0xb1, 0xbd, 0xe8, - 0x10, 0x40, 0xff, 0xf7, 0x64, 0xbf, 0x58, 0x6f, 0xff, 0xf7, 0xbd, 0xff, - 0xef, 0xe7, 0xd3, 0xf8, 0x80, 0x00, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, - 0xb6, 0xbf, 0x04, 0x23, 0x43, 0x70, 0x00, 0x23, 0xc3, 0x60, 0x03, 0x4b, - 0x5a, 0x6b, 0x82, 0x60, 0x02, 0xb1, 0xd0, 0x60, 0x5c, 0x63, 0x10, 0xbd, - 0x1c, 0x01, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, 0x00, 0x28, 0x3a, 0xd0, - 0x03, 0x78, 0xf1, 0x2b, 0x37, 0xd1, 0x43, 0x78, 0x03, 0xf0, 0x0f, 0x03, - 0x02, 0x2b, 0x06, 0xd0, 0x03, 0x2b, 0x27, 0xd0, 0x01, 0x2b, 0x22, 0xd0, - 0x6f, 0xf0, 0x02, 0x00, 0x1e, 0xe0, 0x17, 0x4b, 0x1a, 0x7a, 0x02, 0x2a, - 0xf8, 0xd1, 0x5b, 0x6a, 0x00, 0x2b, 0xf5, 0xd0, 0xe0, 0x6a, 0xff, 0xf7, - 0xe5, 0xfe, 0x20, 0x46, 0xff, 0xf7, 0x34, 0xfd, 0x61, 0x78, 0x02, 0x29, - 0x17, 0xd1, 0x10, 0x48, 0xff, 0xf7, 0x8d, 0xfc, 0x0d, 0x4b, 0x41, 0x70, - 0x98, 0x61, 0xef, 0xf3, 0x09, 0x82, 0xa2, 0x63, 0x00, 0x22, 0x5a, 0x61, - 0x20, 0x46, 0xff, 0xf7, 0x99, 0xff, 0x00, 0x20, 0x10, 0xbd, 0xff, 0xf7, - 0x6f, 0xfc, 0xe3, 0xe7, 0xff, 0xf7, 0x6c, 0xfc, 0xff, 0xf7, 0x4a, 0xfc, - 0xde, 0xe7, 0x00, 0x20, 0xff, 0xf7, 0xdc, 0xfc, 0xee, 0xe7, 0x6f, 0xf0, - 0x03, 0x00, 0xef, 0xe7, 0x1c, 0x01, 0x00, 0x24, 0x38, 0x01, 0x00, 0x24, - 0x70, 0xb5, 0x0f, 0x4c, 0x26, 0x7a, 0x02, 0x2e, 0x18, 0xd1, 0x63, 0x6a, - 0xb3, 0xb1, 0x65, 0x69, 0xe8, 0x6a, 0xff, 0xf7, 0xb1, 0xfe, 0x28, 0x46, - 0xff, 0xf7, 0x00, 0xfd, 0x04, 0xf1, 0x1c, 0x00, 0xff, 0xf7, 0x5b, 0xfc, - 0x46, 0x70, 0xa0, 0x61, 0xef, 0xf3, 0x09, 0x83, 0xab, 0x63, 0x00, 0x23, - 0x28, 0x46, 0x63, 0x61, 0xbd, 0xe8, 0x70, 0x40, 0xff, 0xf7, 0x66, 0xbf, - 0x70, 0xbd, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0x70, 0xb5, 0x05, 0x46, - 0x38, 0xb3, 0x03, 0x78, 0xf6, 0x2b, 0x24, 0xd1, 0x83, 0x68, 0x63, 0xb1, - 0x28, 0x46, 0xff, 0xf7, 0x40, 0xfc, 0x00, 0x22, 0x6f, 0xf0, 0x02, 0x01, - 0xff, 0xf7, 0xca, 0xfc, 0xa8, 0x68, 0x00, 0x28, 0xf4, 0xd1, 0xff, 0xf7, - 0x9d, 0xfc, 0xab, 0x78, 0x00, 0x26, 0x13, 0xf0, 0x01, 0x03, 0x2e, 0x70, - 0x12, 0xd0, 0x0a, 0x4b, 0x29, 0x46, 0xd3, 0xf8, 0x98, 0x40, 0x24, 0xb1, - 0x20, 0x46, 0xff, 0xf7, 0xc2, 0xfe, 0x30, 0x46, 0x70, 0xbd, 0xd3, 0xf8, - 0x80, 0x00, 0xff, 0xf7, 0x18, 0xff, 0x20, 0x46, 0xf8, 0xe7, 0x6f, 0xf0, - 0x03, 0x00, 0xf5, 0xe7, 0x18, 0x46, 0xf3, 0xe7, 0x1c, 0x01, 0x00, 0x24, - 0x70, 0xb5, 0x04, 0x46, 0x00, 0x28, 0x49, 0xd0, 0x03, 0x78, 0xf5, 0x2b, - 0x46, 0xd1, 0x03, 0x7e, 0xbb, 0xb1, 0x63, 0x69, 0xc0, 0x68, 0x0b, 0xb1, - 0x22, 0x69, 0x1a, 0x61, 0x22, 0x69, 0x02, 0xb3, 0x53, 0x61, 0x90, 0xf9, - 0x21, 0x20, 0xc3, 0x6a, 0xeb, 0xb9, 0x90, 0xf9, 0x20, 0x30, 0x93, 0x42, - 0x03, 0xd0, 0x80, 0xf8, 0x20, 0x20, 0xff, 0xf7, 0xac, 0xfc, 0xa0, 0x68, - 0xf8, 0xb9, 0xff, 0xf7, 0x5f, 0xfc, 0xa0, 0x78, 0x00, 0x26, 0x10, 0xf0, - 0x01, 0x00, 0x26, 0x70, 0x08, 0xd0, 0x15, 0x4b, 0x21, 0x46, 0xd3, 0xf8, - 0x94, 0x50, 0xdd, 0xb1, 0x28, 0x46, 0xff, 0xf7, 0x84, 0xfe, 0x30, 0x46, - 0x70, 0xbd, 0xc3, 0x62, 0xdd, 0xe7, 0xd9, 0x78, 0x89, 0x07, 0x06, 0xd5, - 0x99, 0x68, 0x21, 0xb1, 0x91, 0xf9, 0x20, 0x10, 0x8a, 0x42, 0xb8, 0xbf, - 0x0a, 0x46, 0x5b, 0x69, 0xd4, 0xe7, 0x20, 0x46, 0xff, 0xf7, 0xd7, 0xfb, - 0x00, 0x22, 0x6f, 0xf0, 0x02, 0x01, 0xff, 0xf7, 0x61, 0xfc, 0xd4, 0xe7, - 0xd3, 0xf8, 0x80, 0x00, 0xff, 0xf7, 0xc3, 0xfe, 0x28, 0x46, 0xe1, 0xe7, - 0x6f, 0xf0, 0x03, 0x00, 0xde, 0xe7, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, - 0xf0, 0xb5, 0x68, 0xb3, 0x81, 0xb1, 0x0f, 0x31, 0x00, 0xf1, 0x08, 0x06, - 0x21, 0xf0, 0x07, 0x07, 0x33, 0x46, 0x36, 0x68, 0x5c, 0x68, 0xf1, 0x1a, - 0x24, 0xf0, 0x03, 0x04, 0x09, 0x1b, 0x8f, 0x42, 0x04, 0xd9, 0x31, 0x68, - 0x00, 0x29, 0xf3, 0xd1, 0x08, 0x46, 0xf0, 0xbd, 0x45, 0x68, 0x3a, 0x43, - 0x04, 0x68, 0x3d, 0x44, 0x45, 0x60, 0x20, 0x44, 0x50, 0xf8, 0x04, 0x1c, - 0x08, 0x38, 0x8d, 0x42, 0x88, 0xbf, 0x45, 0x60, 0x58, 0x68, 0x18, 0xb9, - 0x03, 0xf1, 0x08, 0x01, 0x5a, 0x60, 0xeb, 0xe7, 0x20, 0xf0, 0x03, 0x00, - 0x19, 0x18, 0x1e, 0x50, 0x4a, 0x60, 0x19, 0x60, 0x08, 0x31, 0xe3, 0xe7, - 0x01, 0x46, 0xe1, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, 0x85, 0xb0, 0x81, 0x46, - 0x02, 0x91, 0x20, 0xb9, 0x00, 0x24, 0x20, 0x46, 0x05, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0x00, 0x2a, 0x00, 0xf0, 0x86, 0x80, 0x94, 0x68, 0xb4, 0xb1, - 0xa0, 0x07, 0xf3, 0xd1, 0xd3, 0x68, 0x43, 0x2b, 0xf0, 0xd9, 0x97, 0x69, - 0xd2, 0xe9, 0x04, 0x65, 0x8e, 0xb1, 0x71, 0x07, 0xea, 0xd1, 0x00, 0x2d, - 0xe8, 0xd0, 0x77, 0xb9, 0x18, 0x27, 0x6b, 0x07, 0xe4, 0xd1, 0xa5, 0xf1, - 0x48, 0x01, 0x57, 0x4b, 0x99, 0x42, 0x0b, 0xd9, 0xde, 0xe7, 0xd3, 0x68, - 0x00, 0x2b, 0xea, 0xd0, 0xda, 0xe7, 0x00, 0x2f, 0x64, 0xd0, 0x7b, 0x1e, - 0x37, 0x2b, 0xd5, 0xd8, 0x00, 0x2d, 0xec, 0xd1, 0xd2, 0xe9, 0x00, 0xa3, - 0x01, 0x93, 0x00, 0x2c, 0x69, 0xd1, 0x4e, 0x4b, 0xd3, 0xf8, 0x88, 0x00, - 0x00, 0x28, 0x5d, 0xd0, 0xff, 0xf7, 0x13, 0xfe, 0x04, 0x46, 0x00, 0x28, - 0xc4, 0xd0, 0x4f, 0xf0, 0x01, 0x08, 0xa6, 0xb9, 0xdf, 0xf8, 0x1c, 0xb1, - 0x00, 0x2d, 0x71, 0xd1, 0xdb, 0xf8, 0x84, 0x00, 0x00, 0x28, 0x57, 0xd0, - 0xff, 0xf7, 0x03, 0xfe, 0x00, 0x28, 0x70, 0xd0, 0x48, 0xf0, 0x10, 0x08, - 0x06, 0x46, 0x4f, 0xf4, 0x80, 0x55, 0x48, 0xf0, 0x02, 0x08, 0x00, 0x2c, - 0xac, 0xd0, 0x40, 0xf2, 0xf1, 0x13, 0xfd, 0x22, 0x65, 0x63, 0x40, 0x3d, - 0x23, 0x80, 0x7f, 0xb2, 0x01, 0x9b, 0x35, 0x44, 0x62, 0x84, 0xe3, 0x70, - 0x00, 0x23, 0x38, 0x4a, 0x84, 0xf8, 0x02, 0x80, 0xc4, 0xf8, 0x04, 0xa0, - 0x84, 0xf8, 0x20, 0x70, 0x84, 0xf8, 0x21, 0x70, 0xc4, 0xe9, 0x0e, 0x59, - 0xc4, 0xe9, 0x02, 0x33, 0xc4, 0xe9, 0x04, 0x33, 0xc4, 0xe9, 0x06, 0x33, - 0xc4, 0xe9, 0x09, 0x33, 0xc4, 0xe9, 0x0b, 0x36, 0x32, 0x60, 0xa2, 0x6b, - 0x11, 0x46, 0x02, 0xf1, 0x34, 0x00, 0x42, 0xf8, 0x04, 0x3b, 0x82, 0x42, - 0xfb, 0xd1, 0x2a, 0x4b, 0x20, 0x46, 0x2a, 0x4a, 0xc1, 0xe9, 0x0d, 0x39, - 0x4f, 0xf0, 0x80, 0x73, 0xcb, 0x63, 0x02, 0x9b, 0x0b, 0x62, 0x23, 0x4b, - 0x1a, 0x66, 0xff, 0xf7, 0x69, 0xfb, 0x74, 0xe7, 0x18, 0x27, 0x9b, 0xe7, - 0x92, 0x46, 0x16, 0x46, 0x18, 0x27, 0x15, 0x46, 0x01, 0x92, 0x9c, 0xe7, - 0x01, 0x22, 0x44, 0x21, 0xd3, 0xf8, 0x80, 0x00, 0xff, 0xf7, 0x2e, 0xff, - 0x9c, 0xe7, 0x4f, 0xf0, 0x00, 0x08, 0x9e, 0xe7, 0x2a, 0x46, 0x4f, 0xf4, - 0x80, 0x55, 0x4f, 0xf4, 0x80, 0x51, 0xdb, 0xf8, 0x74, 0x00, 0xff, 0xf7, - 0x21, 0xff, 0xf8, 0xb9, 0xb8, 0xf1, 0x00, 0x0f, 0x1e, 0xd0, 0xdb, 0xf8, - 0x88, 0x20, 0x7a, 0xb1, 0x21, 0x46, 0x10, 0x46, 0x00, 0x24, 0xff, 0xf7, - 0x74, 0xfd, 0x9a, 0xe7, 0x32, 0x46, 0x29, 0x46, 0xdb, 0xf8, 0x74, 0x00, - 0xff, 0xf7, 0x0e, 0xff, 0xeb, 0xe7, 0x4f, 0xf4, 0x80, 0x55, 0xe9, 0xe7, - 0x21, 0x46, 0xdb, 0xf8, 0x80, 0x00, 0x03, 0x92, 0xff, 0xf7, 0xbf, 0xfd, - 0x03, 0x9a, 0x14, 0x46, 0x16, 0x46, 0x86, 0xe7, 0x06, 0x46, 0x84, 0xe7, - 0x44, 0x46, 0x82, 0xe7, 0xb7, 0xff, 0xff, 0x7f, 0x1c, 0x01, 0x00, 0x24, - 0xa5, 0x2e, 0x5a, 0xe2, 0xd1, 0x78, 0x01, 0x08, 0x69, 0x4b, 0x01, 0x08, - 0x70, 0xb5, 0x4f, 0xf6, 0xfe, 0x73, 0x14, 0x46, 0x42, 0x1e, 0x05, 0x46, - 0x0e, 0x46, 0x9a, 0x42, 0x01, 0xd9, 0x00, 0x20, 0x70, 0xbd, 0x88, 0x42, - 0xfb, 0xd3, 0xcc, 0xb1, 0xa0, 0x68, 0x22, 0x68, 0x90, 0xb1, 0x10, 0xf0, - 0x03, 0x03, 0xf4, 0xd1, 0xe1, 0x68, 0x0f, 0x29, 0xf1, 0xd9, 0x14, 0x46, - 0xf6, 0x22, 0x83, 0x70, 0x00, 0x23, 0x44, 0x60, 0x02, 0x70, 0x83, 0x60, - 0x0d, 0x4a, 0x0e, 0x4b, 0x86, 0x81, 0xc5, 0x81, 0x9a, 0x66, 0xe5, 0xe7, - 0xe3, 0x68, 0x00, 0x2b, 0xe1, 0xd1, 0x14, 0x46, 0x09, 0x4b, 0xd3, 0xf8, - 0x98, 0x00, 0x28, 0xb1, 0xff, 0xf7, 0x47, 0xfd, 0x00, 0x28, 0xd8, 0xd0, - 0x01, 0x23, 0xe5, 0xe7, 0x01, 0x22, 0x10, 0x21, 0xd3, 0xf8, 0x80, 0x00, - 0xff, 0xf7, 0xba, 0xfe, 0xf4, 0xe7, 0x00, 0xbf, 0x41, 0x4c, 0x01, 0x08, - 0x1c, 0x01, 0x00, 0x24, 0x38, 0xb5, 0x03, 0x46, 0x60, 0xb3, 0xd0, 0xe9, - 0x00, 0x45, 0x80, 0x68, 0xa0, 0xb1, 0x10, 0xf0, 0x03, 0x02, 0x01, 0xd0, - 0x00, 0x20, 0x38, 0xbd, 0xdb, 0x68, 0x1b, 0x2b, 0xfa, 0xd9, 0x13, 0x46, - 0xf5, 0x22, 0x83, 0x70, 0x00, 0x23, 0xc5, 0x70, 0x02, 0x70, 0x44, 0x60, - 0x03, 0x76, 0xc0, 0xe9, 0x02, 0x33, 0xc0, 0xe9, 0x04, 0x33, 0xee, 0xe7, - 0xdb, 0x68, 0x00, 0x2b, 0xea, 0xd1, 0x0a, 0x4b, 0xd3, 0xf8, 0x94, 0x00, - 0x30, 0xb9, 0x01, 0x22, 0x1c, 0x21, 0xd3, 0xf8, 0x80, 0x00, 0xff, 0xf7, - 0x8b, 0xfe, 0x01, 0xe0, 0xff, 0xf7, 0x0b, 0xfd, 0x00, 0x28, 0xdb, 0xd0, - 0x01, 0x23, 0xdf, 0xe7, 0x04, 0x46, 0x05, 0x46, 0xeb, 0xe7, 0x00, 0xbf, - 0x1c, 0x01, 0x00, 0x24, 0x10, 0xb5, 0x98, 0xb1, 0x40, 0xea, 0x01, 0x03, - 0x13, 0xf0, 0x07, 0x03, 0x0e, 0xd1, 0x17, 0x29, 0x0a, 0xd9, 0x01, 0x60, - 0x08, 0x39, 0x10, 0x22, 0x0c, 0x18, 0x42, 0x60, 0x84, 0x60, 0x0b, 0x50, - 0x81, 0x68, 0x4a, 0x60, 0xc3, 0x60, 0x01, 0x23, 0x18, 0x46, 0x10, 0xbd, - 0x00, 0x23, 0xfb, 0xe7, 0x38, 0xb5, 0x1c, 0x4c, 0x25, 0x7a, 0x01, 0x2d, - 0x28, 0xd0, 0x7d, 0xbb, 0x1a, 0x4b, 0x29, 0x46, 0x28, 0x46, 0xe3, 0x65, - 0x10, 0x23, 0xa4, 0xf8, 0x54, 0x30, 0x05, 0x23, 0x23, 0x64, 0xff, 0xf7, - 0xd7, 0xff, 0x08, 0xb1, 0xc4, 0xf8, 0x80, 0x50, 0x00, 0x21, 0x08, 0x46, - 0xff, 0xf7, 0xd0, 0xff, 0xb0, 0xb9, 0xd4, 0xf8, 0x80, 0x30, 0x00, 0x21, - 0x63, 0x67, 0x08, 0x46, 0xff, 0xf7, 0xc8, 0xff, 0x80, 0xb9, 0xd4, 0xf8, - 0x80, 0x30, 0x00, 0x21, 0xa3, 0x67, 0x08, 0x46, 0xff, 0xf7, 0xc0, 0xff, - 0x50, 0xb9, 0xd4, 0xf8, 0x80, 0x30, 0xe3, 0x67, 0x01, 0x23, 0x23, 0x72, - 0x00, 0x20, 0x38, 0xbd, 0x00, 0x23, 0xe8, 0xe7, 0x00, 0x23, 0xee, 0xe7, - 0x00, 0x23, 0xf4, 0xe7, 0x4f, 0xf0, 0xff, 0x30, 0xf5, 0xe7, 0x00, 0xbf, - 0x1c, 0x01, 0x00, 0x24, 0x90, 0xa0, 0x00, 0x24, 0x01, 0x4b, 0xd8, 0x68, - 0x70, 0x47, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0x06, 0x4b, 0xda, 0x6a, - 0x3a, 0xb1, 0xd0, 0x69, 0x5b, 0x6c, 0x1b, 0xb1, 0x1b, 0x69, 0x98, 0x42, - 0x28, 0xbf, 0x18, 0x46, 0x70, 0x47, 0x4f, 0xf0, 0xff, 0x30, 0xf5, 0xe7, - 0x1c, 0x01, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, 0xd0, 0xb1, 0x02, 0x68, - 0x80, 0x68, 0x98, 0xb1, 0x10, 0xf0, 0x03, 0x03, 0x01, 0xd0, 0x00, 0x20, - 0x10, 0xbd, 0xe1, 0x68, 0x0f, 0x29, 0xfa, 0xd9, 0x14, 0x46, 0xf3, 0x22, - 0x83, 0x70, 0x00, 0x23, 0x44, 0x60, 0x02, 0x70, 0x0d, 0x4a, 0xc0, 0xe9, - 0x02, 0x33, 0x0d, 0x4b, 0x5a, 0x66, 0xef, 0xe7, 0xe3, 0x68, 0x00, 0x2b, - 0xeb, 0xd1, 0x14, 0x46, 0x09, 0x4b, 0xd3, 0xf8, 0x90, 0x00, 0x28, 0xb1, - 0xff, 0xf7, 0x71, 0xfc, 0x00, 0x28, 0xe2, 0xd0, 0x01, 0x23, 0xe6, 0xe7, - 0x01, 0x22, 0x10, 0x21, 0xd3, 0xf8, 0x80, 0x00, 0xff, 0xf7, 0xe4, 0xfd, - 0xf4, 0xe7, 0x00, 0xbf, 0x57, 0x82, 0x01, 0x08, 0x1c, 0x01, 0x00, 0x24, - 0x01, 0x46, 0x08, 0xb5, 0x38, 0xb1, 0x13, 0x20, 0xff, 0xf7, 0xa6, 0xf9, - 0x80, 0xf0, 0x01, 0x00, 0xc0, 0xb2, 0x40, 0x42, 0x08, 0xbd, 0x6f, 0xf0, - 0x03, 0x00, 0xfb, 0xe7, 0x03, 0x68, 0x18, 0x47, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x48, 0x70, 0x47, 0xb0, 0xe7, 0x01, 0x08, 0xd0, 0xe9, 0x09, 0x31, - 0xc2, 0x6a, 0x00, 0x6a, 0x42, 0x43, 0x01, 0xfb, 0x03, 0x23, 0xa0, 0xfb, - 0x01, 0x01, 0x19, 0x44, 0x70, 0x47, 0xd0, 0xe9, 0x06, 0x01, 0x70, 0x47, - 0xd0, 0xe9, 0x04, 0x01, 0x70, 0x47, 0xd0, 0xe9, 0x02, 0x01, 0x70, 0x47, - 0x01, 0x68, 0x2d, 0xe9, 0xf0, 0x47, 0x17, 0x46, 0x98, 0x46, 0x09, 0x6b, - 0x06, 0x46, 0xdd, 0xe9, 0x08, 0x9a, 0x88, 0x47, 0x02, 0x46, 0x0b, 0x46, - 0x38, 0x46, 0x41, 0x46, 0x07, 0xf0, 0xbc, 0xfd, 0x13, 0x43, 0x02, 0xd0, - 0x00, 0x20, 0xbd, 0xe8, 0xf0, 0x87, 0x17, 0xeb, 0x09, 0x04, 0x33, 0x68, - 0x30, 0x46, 0x48, 0xeb, 0x0a, 0x05, 0x14, 0xf1, 0xff, 0x32, 0x19, 0x6b, - 0x45, 0xf1, 0xff, 0x33, 0x88, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x20, 0x46, - 0x29, 0x46, 0x07, 0xf0, 0xa5, 0xfd, 0x13, 0x43, 0xe8, 0xd1, 0x33, 0x68, - 0x30, 0x46, 0x9b, 0x6b, 0x98, 0x47, 0xa9, 0x42, 0x08, 0xbf, 0xa0, 0x42, - 0x2c, 0xbf, 0x01, 0x20, 0x00, 0x20, 0xde, 0xe7, 0x2d, 0xe9, 0xf0, 0x47, - 0x1e, 0x46, 0x03, 0x68, 0x15, 0x46, 0x04, 0x46, 0x9b, 0x6a, 0xdd, 0xe9, - 0x08, 0x7a, 0x98, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x28, 0x46, 0x31, 0x46, - 0x07, 0xf0, 0x88, 0xfd, 0x13, 0x43, 0x02, 0xd0, 0x00, 0x20, 0xbd, 0xe8, - 0xf0, 0x87, 0x23, 0x68, 0x20, 0x46, 0x9b, 0x6a, 0x98, 0x47, 0x02, 0x46, - 0x0b, 0x46, 0x38, 0x46, 0x51, 0x46, 0x07, 0xf0, 0x79, 0xfd, 0x13, 0x43, - 0xf0, 0xd1, 0x15, 0xeb, 0x07, 0x08, 0x23, 0x68, 0x20, 0x46, 0x46, 0xeb, - 0x0a, 0x09, 0x9b, 0x6b, 0x98, 0x47, 0x49, 0x45, 0x08, 0xbf, 0x40, 0x45, - 0x2c, 0xbf, 0x01, 0x20, 0x00, 0x20, 0xe2, 0xe7, 0x2d, 0xe9, 0xf0, 0x47, - 0x1e, 0x46, 0x03, 0x68, 0x15, 0x46, 0x04, 0x46, 0x5b, 0x6a, 0xdd, 0xe9, - 0x08, 0x7a, 0x98, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x28, 0x46, 0x31, 0x46, - 0x07, 0xf0, 0x58, 0xfd, 0x13, 0x43, 0x02, 0xd0, 0x00, 0x20, 0xbd, 0xe8, - 0xf0, 0x87, 0x23, 0x68, 0x20, 0x46, 0x5b, 0x6a, 0x98, 0x47, 0x02, 0x46, - 0x0b, 0x46, 0x38, 0x46, 0x51, 0x46, 0x07, 0xf0, 0x49, 0xfd, 0x13, 0x43, - 0xf0, 0xd1, 0x15, 0xeb, 0x07, 0x08, 0x23, 0x68, 0x20, 0x46, 0x46, 0xeb, - 0x0a, 0x09, 0x9b, 0x6b, 0x98, 0x47, 0x49, 0x45, 0x08, 0xbf, 0x40, 0x45, - 0x2c, 0xbf, 0x01, 0x20, 0x00, 0x20, 0xe2, 0xe7, 0x00, 0x48, 0x70, 0x47, - 0xb7, 0xe7, 0x01, 0x08, 0xd0, 0xe9, 0x04, 0x01, 0x70, 0x47, 0xd0, 0xe9, - 0x0a, 0x01, 0x70, 0x47, 0xd0, 0xe9, 0x0a, 0x01, 0x70, 0x47, 0xd0, 0xe9, - 0x08, 0x01, 0x70, 0x47, 0xd0, 0xe9, 0x06, 0x01, 0x70, 0x47, 0x30, 0xb5, - 0x03, 0x99, 0x54, 0x18, 0x04, 0x9a, 0x43, 0xeb, 0x02, 0x05, 0xd0, 0xe9, - 0x04, 0x23, 0xab, 0x42, 0x08, 0xbf, 0xa2, 0x42, 0x2c, 0xbf, 0x01, 0x20, - 0x00, 0x20, 0x30, 0xbd, 0x00, 0x20, 0x70, 0x47, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0xd0, 0xe9, 0x00, 0x30, 0x18, 0x47, 0xd0, 0xe9, 0x01, 0x32, - 0x01, 0x68, 0x10, 0xb4, 0x01, 0xeb, 0x62, 0x00, 0x54, 0x10, 0xd2, 0x07, - 0x48, 0xbf, 0x0a, 0x59, 0x5d, 0xf8, 0x04, 0x4b, 0x48, 0xbf, 0xd3, 0x58, - 0x18, 0x47, 0x70, 0x47, 0x00, 0x20, 0x50, 0x70, 0x90, 0x70, 0xd0, 0x70, - 0x70, 0x47, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0x47, 0x03, 0x68, 0xdb, 0x6a, - 0x18, 0x47, 0x30, 0xb5, 0xa1, 0xf1, 0x10, 0x04, 0x00, 0x25, 0x00, 0xf0, - 0x0f, 0x02, 0xcd, 0x73, 0x02, 0x39, 0x00, 0x09, 0xd3, 0xb2, 0x09, 0x2a, - 0xcc, 0xbf, 0x37, 0x33, 0x30, 0x33, 0x0b, 0x74, 0x8c, 0x42, 0xf2, 0xd1, - 0x30, 0xbd, 0x00, 0x00, 0x32, 0x23, 0x10, 0xb5, 0x0a, 0x4c, 0x0b, 0x80, - 0x0a, 0x4b, 0xa1, 0x1c, 0x18, 0x68, 0xff, 0xf7, 0xe4, 0xff, 0x09, 0x4b, - 0x04, 0xf1, 0x12, 0x01, 0x18, 0x68, 0xff, 0xf7, 0xde, 0xff, 0x07, 0x4b, - 0x04, 0xf1, 0x22, 0x01, 0x18, 0x68, 0xff, 0xf7, 0xd8, 0xff, 0x20, 0x46, + 0x25, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, + 0xfc, 0xf7, 0x1e, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, + 0xd9, 0x6b, 0xfc, 0xf7, 0x17, 0xfc, 0x01, 0x9a, 0xa3, 0x68, 0x9d, 0xf9, + 0x03, 0x10, 0x5a, 0x60, 0x0d, 0xf1, 0x03, 0x02, 0x9b, 0x68, 0x01, 0x93, + 0x00, 0x23, 0x99, 0x42, 0x8d, 0xf8, 0x03, 0x30, 0x80, 0xf2, 0xb9, 0x81, + 0x49, 0x42, 0x01, 0xa8, 0xfc, 0xf7, 0x04, 0xfc, 0xa3, 0x68, 0x0d, 0xf1, + 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6a, 0xfc, 0xf7, 0x08, 0xfc, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, 0x01, 0xfc, + 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, + 0xef, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, + 0xfc, 0xf7, 0xe8, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, + 0xd9, 0x6b, 0xfc, 0xf7, 0xe1, 0xfb, 0x01, 0x9a, 0xa3, 0x68, 0x9d, 0xf9, + 0x03, 0x10, 0x9a, 0x60, 0x0d, 0xf1, 0x03, 0x02, 0xdb, 0x68, 0x01, 0x93, + 0x00, 0x23, 0x99, 0x42, 0x8d, 0xf8, 0x03, 0x30, 0x80, 0xf2, 0x87, 0x81, + 0x49, 0x42, 0x01, 0xa8, 0xfc, 0xf7, 0xce, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, + 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, 0xd2, 0xfb, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, 0xcb, 0xfb, + 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, 0xfc, 0xf7, + 0xc4, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, + 0xfc, 0xf7, 0xbd, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, + 0x59, 0x6b, 0xfc, 0xf7, 0xb6, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, + 0x01, 0xa8, 0xd9, 0x6b, 0xfc, 0xf7, 0xa4, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, + 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6a, 0xfc, 0xf7, 0x9d, 0xfb, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6a, 0xfc, 0xf7, 0x96, 0xfb, + 0x01, 0x9a, 0xa3, 0x68, 0x9d, 0xf9, 0x03, 0x10, 0xda, 0x60, 0x0d, 0xf1, + 0x03, 0x02, 0x1b, 0x69, 0x01, 0x93, 0x00, 0x23, 0x99, 0x42, 0x8d, 0xf8, + 0x03, 0x30, 0x80, 0xf2, 0x40, 0x81, 0x49, 0x42, 0x01, 0xa8, 0xfc, 0xf7, + 0x83, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, + 0xfc, 0xf7, 0x87, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, + 0x19, 0x6b, 0xfc, 0xf7, 0x80, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, + 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, 0x79, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, + 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, 0x72, 0xfb, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0x6b, 0xfb, + 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6a, 0xfc, 0xf7, + 0x59, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6a, + 0xfc, 0xf7, 0x52, 0xfb, 0x01, 0x9a, 0xa3, 0x68, 0x9d, 0xf9, 0x03, 0x10, + 0x1a, 0x61, 0x0d, 0xf1, 0x03, 0x02, 0x5b, 0x69, 0x01, 0x93, 0x00, 0x23, + 0x99, 0x42, 0x8d, 0xf8, 0x03, 0x30, 0x80, 0xf2, 0x00, 0x81, 0x49, 0x42, + 0x01, 0xa8, 0xfc, 0xf7, 0x3f, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, + 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, 0x43, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, + 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, 0x3c, 0xfb, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0x35, 0xfb, + 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, + 0x2e, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, + 0xfc, 0xf7, 0x27, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, + 0x99, 0x6a, 0xfc, 0xf7, 0x15, 0xfb, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, + 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, 0x0e, 0xfb, 0x01, 0x9a, 0xa3, 0x68, + 0x9d, 0xf9, 0x03, 0x10, 0x5a, 0x61, 0x0d, 0xf1, 0x03, 0x02, 0x9b, 0x69, + 0x01, 0x93, 0x00, 0x23, 0x99, 0x42, 0x8d, 0xf8, 0x03, 0x30, 0x80, 0xf2, + 0xc0, 0x80, 0x49, 0x42, 0x01, 0xa8, 0xfc, 0xf7, 0xfb, 0xfa, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0xff, 0xfa, + 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, + 0xf8, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, + 0xfc, 0xf7, 0xf1, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, + 0xd9, 0x6b, 0xfc, 0xf7, 0xea, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, + 0x01, 0xa8, 0x99, 0x6b, 0xfc, 0xf7, 0xe3, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, + 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6b, 0xfc, 0xf7, 0xdc, 0xfa, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6a, 0xfc, 0xf7, 0xca, 0xfa, + 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x59, 0x6a, 0xfc, 0xf7, + 0xc3, 0xfa, 0x01, 0x9a, 0xa3, 0x68, 0x9d, 0xf9, 0x03, 0x10, 0x9a, 0x61, + 0x0d, 0xf1, 0x03, 0x02, 0xdb, 0x69, 0x01, 0x93, 0x00, 0x23, 0x99, 0x42, + 0x8d, 0xf8, 0x03, 0x30, 0x79, 0xda, 0x49, 0x42, 0x01, 0xa8, 0xfc, 0xf7, + 0xb1, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6b, + 0xfc, 0xf7, 0xb5, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, + 0xd9, 0x6b, 0xfc, 0xf7, 0xae, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, + 0x01, 0xa8, 0xd9, 0x6b, 0xfc, 0xf7, 0xa7, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, + 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6a, 0xfc, 0xf7, 0xa0, 0xfa, 0xa3, 0x68, + 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x99, 0x6a, 0xfc, 0xf7, 0x8e, 0xfa, + 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0xd9, 0x6a, 0xfc, 0xf7, + 0x87, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, 0x19, 0x6b, + 0xfc, 0xf7, 0x80, 0xfa, 0xa3, 0x68, 0x0d, 0xf1, 0x03, 0x02, 0x01, 0xa8, + 0x59, 0x6b, 0xfc, 0xf7, 0x79, 0xfa, 0x01, 0x9b, 0xa1, 0x68, 0x9d, 0xf9, + 0x03, 0x20, 0xcb, 0x61, 0x22, 0xea, 0xe2, 0x73, 0x0b, 0x62, 0x00, 0x23, + 0x01, 0x93, 0x08, 0x23, 0x01, 0x33, 0x60, 0x68, 0x98, 0x42, 0x32, 0xd8, + 0x00, 0x2a, 0x11, 0xda, 0x03, 0x9b, 0x52, 0x42, 0x04, 0x99, 0x20, 0x46, + 0x03, 0xf1, 0x80, 0x43, 0x01, 0x3b, 0x41, 0xf8, 0x23, 0x20, 0x22, 0x46, + 0x02, 0xa9, 0xff, 0xf7, 0x60, 0xfd, 0x05, 0x46, 0x10, 0xb9, 0x4f, 0xf0, + 0xff, 0x33, 0x23, 0x60, 0x28, 0x46, 0x0f, 0xb0, 0x30, 0xbd, 0x01, 0xa8, + 0xfc, 0xf7, 0x5b, 0xfa, 0x0d, 0xe6, 0x01, 0xa8, 0xfc, 0xf7, 0x57, 0xfa, + 0x46, 0xe6, 0x01, 0xa8, 0xfc, 0xf7, 0x53, 0xfa, 0x78, 0xe6, 0x01, 0xa8, + 0xfc, 0xf7, 0x4f, 0xfa, 0xbf, 0xe6, 0x01, 0xa8, 0xfc, 0xf7, 0x4b, 0xfa, + 0xff, 0xe6, 0x01, 0xa8, 0xfc, 0xf7, 0x47, 0xfa, 0x3f, 0xe7, 0x01, 0xa8, + 0xfc, 0xf7, 0x43, 0xfa, 0x85, 0xe7, 0x01, 0x98, 0x41, 0xf8, 0x23, 0x00, + 0xc4, 0xe7, 0x38, 0xb5, 0x0c, 0x46, 0x05, 0x1d, 0x29, 0x46, 0x20, 0x46, + 0xfe, 0xf7, 0xb0, 0xff, 0x00, 0x28, 0x01, 0xda, 0x00, 0x20, 0x06, 0xe0, + 0x2a, 0x46, 0x21, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x28, 0xfd, 0x00, 0x28, + 0xf0, 0xd0, 0x38, 0xbd, 0x90, 0x42, 0x2d, 0xe9, 0xf0, 0x41, 0x07, 0x46, + 0x0d, 0x46, 0x16, 0x46, 0x02, 0xd0, 0x88, 0x42, 0x29, 0xd1, 0x35, 0x46, + 0x01, 0x23, 0x6e, 0x68, 0x3b, 0x60, 0x66, 0xbb, 0x31, 0x46, 0x38, 0x46, + 0xfe, 0xf7, 0x8a, 0xfd, 0x04, 0x46, 0x18, 0xbb, 0xa9, 0x68, 0x05, 0x46, + 0xbb, 0x68, 0x86, 0x42, 0x2a, 0xd1, 0x03, 0xeb, 0x86, 0x03, 0xdd, 0xb1, + 0x7a, 0x68, 0x06, 0xf1, 0x01, 0x08, 0xb2, 0x42, 0x08, 0xd8, 0x41, 0x46, + 0x38, 0x46, 0xfe, 0xf7, 0x77, 0xfd, 0x00, 0x28, 0x2f, 0xd1, 0xbb, 0x68, + 0x03, 0xeb, 0x86, 0x03, 0x1a, 0x68, 0x46, 0x46, 0x55, 0x19, 0x43, 0xf8, + 0x04, 0x5b, 0x2c, 0xbf, 0x01, 0x25, 0x00, 0x25, 0xe7, 0xe7, 0xff, 0xf7, + 0x67, 0xfb, 0x04, 0x46, 0x00, 0x28, 0xd0, 0xd0, 0x20, 0x46, 0xbd, 0xe8, + 0xf0, 0x81, 0xab, 0x68, 0x03, 0xeb, 0x86, 0x03, 0x53, 0xf8, 0x04, 0x3c, + 0x00, 0x2b, 0xcb, 0xd1, 0x01, 0x3e, 0xc8, 0xe7, 0x53, 0xf8, 0x20, 0x20, + 0x12, 0xeb, 0x05, 0x0c, 0x51, 0xf8, 0x20, 0x20, 0x2c, 0xbf, 0x01, 0x25, + 0x00, 0x25, 0x1c, 0xeb, 0x02, 0x02, 0x43, 0xf8, 0x20, 0x20, 0x2c, 0xbf, + 0x01, 0x22, 0x00, 0x22, 0x01, 0x30, 0x15, 0x44, 0xbf, 0xe7, 0x04, 0x46, + 0xde, 0xe7, 0xf8, 0xb5, 0x0d, 0x68, 0x04, 0x46, 0x13, 0x68, 0x0f, 0x46, + 0x16, 0x46, 0x6b, 0x43, 0x00, 0x2b, 0x16, 0xdd, 0x11, 0x46, 0x38, 0x46, + 0xfc, 0xf7, 0xd0, 0xf9, 0x00, 0x28, 0x06, 0xdb, 0x32, 0x46, 0x39, 0x46, + 0x20, 0x46, 0xff, 0xf7, 0xb8, 0xfc, 0x40, 0xb1, 0xf8, 0xbd, 0x3a, 0x46, + 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xb1, 0xfc, 0x00, 0x28, 0xf7, 0xd1, + 0x6d, 0x42, 0x25, 0x60, 0xf4, 0xe7, 0xff, 0xf7, 0x85, 0xff, 0xf0, 0xe7, + 0x7f, 0xb5, 0x00, 0x23, 0x01, 0xf1, 0x0c, 0x05, 0x16, 0x46, 0x01, 0x22, + 0x01, 0x1d, 0x01, 0xa8, 0x03, 0x93, 0xcd, 0xe9, 0x01, 0x23, 0x2a, 0x46, + 0xff, 0xf7, 0xcf, 0xff, 0x04, 0x46, 0x68, 0xb9, 0x01, 0x46, 0x28, 0x46, + 0xfe, 0xf7, 0x57, 0xff, 0x01, 0xa9, 0x00, 0x28, 0x0c, 0xbf, 0x00, 0x22, + 0x06, 0xf0, 0x01, 0x02, 0x28, 0x46, 0xff, 0xf7, 0x65, 0xf9, 0x04, 0x46, + 0x01, 0xa8, 0xff, 0xf7, 0x97, 0xf9, 0x20, 0x46, 0x04, 0xb0, 0x70, 0xbd, + 0x2d, 0xe9, 0xf7, 0x4f, 0x9d, 0xf8, 0x30, 0x80, 0x06, 0x46, 0x0d, 0x46, + 0x1f, 0x46, 0xc8, 0xf3, 0x45, 0x09, 0x02, 0xf1, 0x0c, 0x04, 0x4f, 0xf0, + 0x00, 0x0b, 0x01, 0xf1, 0x0c, 0x0a, 0xbb, 0x45, 0x08, 0xd1, 0x4f, 0xea, + 0xd8, 0x12, 0x29, 0x46, 0x30, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x4f, + 0xff, 0xf7, 0xc2, 0xbf, 0x5f, 0xfa, 0x8b, 0xf2, 0xa4, 0xf1, 0x0c, 0x01, + 0x28, 0x46, 0xa2, 0xeb, 0x09, 0x03, 0x5a, 0x42, 0x5a, 0x41, 0x01, 0x92, + 0xff, 0xf7, 0x38, 0xf9, 0x48, 0xb9, 0x21, 0x46, 0x01, 0x9a, 0x50, 0x46, + 0x0b, 0xf1, 0x01, 0x0b, 0x24, 0x34, 0xff, 0xf7, 0x2f, 0xf9, 0x00, 0x28, + 0xdd, 0xd0, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xf8, 0xb5, 0x0d, 0x68, + 0x04, 0x46, 0x13, 0x68, 0x0f, 0x46, 0x16, 0x46, 0x6b, 0x43, 0x16, 0xd5, + 0x11, 0x46, 0x38, 0x46, 0xfc, 0xf7, 0x56, 0xf9, 0x00, 0x28, 0x06, 0xdb, + 0x32, 0x46, 0x39, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x3e, 0xfc, 0x40, 0xb1, + 0xf8, 0xbd, 0x3a, 0x46, 0x31, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x37, 0xfc, + 0x00, 0x28, 0xf7, 0xd1, 0x6d, 0x42, 0x25, 0x60, 0xf4, 0xe7, 0xff, 0xf7, + 0x0b, 0xff, 0xf0, 0xe7, 0x38, 0xb5, 0x0c, 0x46, 0x05, 0x46, 0x11, 0x46, + 0x1a, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xd6, 0xff, 0x28, 0xb9, 0x21, 0x46, + 0x28, 0x46, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0xe8, 0xbe, 0x38, 0xbd, + 0x70, 0xb5, 0x0c, 0x46, 0x06, 0x46, 0x11, 0x46, 0x1a, 0x46, 0x20, 0x46, + 0xff, 0xf7, 0x4b, 0xff, 0x05, 0x46, 0x80, 0xb9, 0x04, 0x36, 0x23, 0x68, + 0x00, 0x2b, 0x0c, 0xda, 0x00, 0x21, 0x20, 0x46, 0xfe, 0xf7, 0xcf, 0xfe, + 0x30, 0xb1, 0x32, 0x46, 0x21, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xb6, 0xff, + 0x00, 0x28, 0xf0, 0xd0, 0x05, 0x46, 0x28, 0x46, 0x70, 0xbd, 0x2d, 0xe9, + 0xf0, 0x4f, 0x06, 0x46, 0x9b, 0xb0, 0x89, 0x46, 0x10, 0x46, 0x00, 0x21, + 0x90, 0x46, 0xfe, 0xf7, 0xba, 0xfe, 0x00, 0x28, 0xc0, 0xf2, 0x9b, 0x81, + 0x05, 0xd1, 0x6f, 0xf0, 0x0b, 0x04, 0x20, 0x46, 0x1b, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0x00, 0x23, 0x01, 0x25, 0x41, 0x46, 0x48, 0x46, 0x14, 0x95, + 0xcd, 0xe9, 0x08, 0x53, 0xcd, 0xe9, 0x0a, 0x35, 0xcd, 0xe9, 0x0c, 0x33, + 0xcd, 0xe9, 0x0e, 0x53, 0xcd, 0xe9, 0x10, 0x35, 0xcd, 0xe9, 0x12, 0x33, + 0x03, 0x23, 0x15, 0x93, 0x17, 0xab, 0x16, 0x93, 0xfc, 0xf7, 0xe8, 0xf8, + 0x00, 0x28, 0x17, 0xda, 0x36, 0xb1, 0x49, 0x46, 0x30, 0x46, 0xff, 0xf7, + 0x47, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x46, 0xd1, 0x00, 0x21, 0x30, 0x46, + 0xfe, 0xf7, 0x8b, 0xfe, 0x00, 0x28, 0xc0, 0xf2, 0x5b, 0x81, 0x41, 0x46, + 0x30, 0x46, 0xfe, 0xf7, 0x41, 0xfe, 0x00, 0x28, 0x80, 0xf2, 0x5b, 0x81, + 0x00, 0x24, 0xca, 0xe7, 0x49, 0x46, 0x08, 0xa8, 0xff, 0xf7, 0x30, 0xfa, + 0x04, 0x46, 0x80, 0xbb, 0x41, 0x46, 0x0b, 0xa8, 0xff, 0xf7, 0x2a, 0xfa, + 0x04, 0x46, 0x50, 0xbb, 0xd9, 0xf8, 0x04, 0x10, 0x0e, 0xa8, 0x0b, 0x95, + 0x02, 0x31, 0x08, 0x95, 0xfe, 0xf7, 0x20, 0xfc, 0x04, 0x46, 0x00, 0xbb, + 0x01, 0x46, 0x0e, 0xa8, 0xfe, 0xf7, 0xdc, 0xff, 0x04, 0x46, 0xd0, 0xb9, + 0x02, 0x21, 0x11, 0xa8, 0xfe, 0xf7, 0x14, 0xfc, 0x04, 0x46, 0xa0, 0xb9, + 0x0b, 0xa8, 0xfe, 0xf7, 0xdb, 0xfe, 0x00, 0xf0, 0x1f, 0x00, 0x1f, 0x28, + 0x20, 0xd0, 0xc0, 0xf1, 0x1f, 0x07, 0x08, 0xa8, 0x39, 0x46, 0xfe, 0xf7, + 0x25, 0xff, 0x04, 0x46, 0x28, 0xb9, 0x39, 0x46, 0x0b, 0xa8, 0xfe, 0xf7, + 0x1f, 0xff, 0x04, 0x46, 0x98, 0xb1, 0x08, 0xa8, 0xff, 0xf7, 0x92, 0xf8, + 0x0b, 0xa8, 0xff, 0xf7, 0x8f, 0xf8, 0x0e, 0xa8, 0xff, 0xf7, 0x8c, 0xf8, + 0x11, 0xa8, 0xff, 0xf7, 0x89, 0xf8, 0x0c, 0x21, 0x17, 0xa8, 0xfd, 0xf7, + 0x75, 0xff, 0x00, 0x2c, 0xa6, 0xd0, 0x80, 0xe7, 0x27, 0x46, 0x09, 0x9d, + 0x0b, 0xa8, 0xdd, 0xf8, 0x30, 0xb0, 0xa5, 0xeb, 0x0b, 0x03, 0x4f, 0xea, + 0x43, 0x1a, 0x01, 0x93, 0x51, 0x46, 0xfe, 0xf7, 0xfd, 0xfe, 0x04, 0x46, + 0x00, 0x28, 0xdc, 0xd1, 0x01, 0x9b, 0x9b, 0x00, 0x0b, 0xa9, 0x08, 0xa8, + 0x01, 0x93, 0xfe, 0xf7, 0xdb, 0xfd, 0x00, 0x28, 0x01, 0x9b, 0x36, 0xda, + 0x51, 0x46, 0x0b, 0xa8, 0xfe, 0xf7, 0xb6, 0xff, 0x04, 0x46, 0x00, 0x28, + 0xcb, 0xd1, 0x0b, 0xf1, 0xff, 0x33, 0x05, 0xf1, 0xff, 0x3a, 0x05, 0xf1, + 0x80, 0x45, 0x01, 0x93, 0x9b, 0x00, 0x01, 0x3d, 0x03, 0x93, 0x0b, 0xf1, + 0x80, 0x43, 0xa5, 0xeb, 0x0b, 0x05, 0x02, 0x3b, 0xad, 0x00, 0x9b, 0x00, + 0x07, 0x93, 0x01, 0x9b, 0x53, 0x45, 0x29, 0xd3, 0x00, 0x2e, 0xb4, 0xd0, + 0x39, 0x46, 0x08, 0xa8, 0xfe, 0xf7, 0x98, 0xff, 0x88, 0xb9, 0xd9, 0xf8, + 0x00, 0x30, 0x08, 0xa9, 0x30, 0x46, 0x08, 0x93, 0xff, 0xf7, 0xa6, 0xf9, + 0x01, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xbe, 0x80, 0x30, 0x46, 0xfe, 0xf7, + 0xea, 0xfd, 0x00, 0x28, 0x9f, 0xd1, 0x01, 0x23, 0x33, 0x60, 0x04, 0x46, + 0x9b, 0xe7, 0x10, 0x99, 0x01, 0x93, 0xca, 0x58, 0x01, 0x32, 0xca, 0x50, + 0x08, 0xa9, 0x0b, 0xaa, 0x08, 0x46, 0xff, 0xf7, 0x4c, 0xfe, 0x01, 0x9b, + 0x04, 0x46, 0x00, 0x28, 0xb2, 0xd0, 0x8c, 0xe7, 0xdd, 0xf8, 0x28, 0xb0, + 0x4f, 0xea, 0x8a, 0x03, 0x03, 0x9a, 0x04, 0x93, 0x0b, 0xeb, 0x8a, 0x03, + 0x5b, 0xf8, 0x2a, 0x10, 0x06, 0x93, 0x0d, 0x9b, 0x9a, 0x58, 0x04, 0x9b, + 0x91, 0x42, 0xa3, 0xf1, 0x04, 0x03, 0x05, 0x93, 0x10, 0x9b, 0x03, 0xeb, + 0x05, 0x00, 0x02, 0x90, 0x75, 0xd3, 0x4f, 0xf0, 0xff, 0x32, 0x5a, 0x51, + 0xba, 0xf1, 0x01, 0x0f, 0x02, 0x9a, 0x16, 0xbf, 0x06, 0x9b, 0x00, 0x23, + 0x53, 0xf8, 0x08, 0x3c, 0x17, 0x93, 0x05, 0x9b, 0x5b, 0xf8, 0x03, 0x30, + 0x18, 0x93, 0x04, 0x9b, 0x5b, 0xf8, 0x03, 0x30, 0x19, 0x93, 0x02, 0x9b, + 0x1b, 0x68, 0x01, 0x33, 0x13, 0x60, 0x10, 0x9a, 0x00, 0x21, 0x11, 0xa8, + 0x53, 0x59, 0x01, 0x3b, 0x53, 0x51, 0xfe, 0xf7, 0x15, 0xff, 0x00, 0x28, + 0xb5, 0xd1, 0x01, 0x9b, 0x0d, 0x9a, 0x00, 0x2b, 0x66, 0xd0, 0x07, 0x9b, + 0xd1, 0x58, 0x13, 0x9b, 0x19, 0x60, 0x03, 0x99, 0x52, 0x58, 0x11, 0xa9, + 0x5a, 0x60, 0x08, 0x46, 0x10, 0x9b, 0x5a, 0x59, 0xff, 0xf7, 0xbc, 0xfa, + 0x00, 0x28, 0xa2, 0xd1, 0x14, 0xa9, 0x11, 0xa8, 0xfe, 0xf7, 0x42, 0xfd, + 0x00, 0x28, 0xdc, 0xdc, 0x10, 0x9b, 0x0b, 0xa9, 0x11, 0xa8, 0x5a, 0x59, + 0xff, 0xf7, 0xae, 0xfa, 0x00, 0x28, 0x94, 0xd1, 0x4f, 0xea, 0xc5, 0x0b, + 0x11, 0xa8, 0x59, 0x46, 0xfe, 0xf7, 0x4a, 0xfe, 0x00, 0x28, 0x8c, 0xd1, + 0x08, 0xa9, 0x11, 0xaa, 0x08, 0x46, 0xff, 0xf7, 0xe0, 0xfd, 0x01, 0x46, + 0x00, 0x28, 0x3b, 0xd1, 0x08, 0xa8, 0xfe, 0xf7, 0x68, 0xfd, 0x00, 0x28, + 0x19, 0xda, 0x0b, 0xa9, 0x11, 0xa8, 0xff, 0xf7, 0x17, 0xf9, 0x00, 0x28, + 0x7f, 0xf4, 0x79, 0xaf, 0x59, 0x46, 0x11, 0xa8, 0xfe, 0xf7, 0x30, 0xfe, + 0x00, 0x28, 0x7f, 0xf4, 0x72, 0xaf, 0x08, 0xa9, 0x11, 0xaa, 0x08, 0x46, + 0xff, 0xf7, 0x40, 0xfe, 0x00, 0x28, 0x7f, 0xf4, 0x6a, 0xaf, 0x10, 0x9a, + 0x53, 0x59, 0x01, 0x3b, 0x53, 0x51, 0x0a, 0xf1, 0xff, 0x3a, 0x04, 0x3d, + 0x45, 0xe7, 0x05, 0x9b, 0x5b, 0xf8, 0x03, 0x00, 0x7a, 0xb1, 0x00, 0x23, + 0x0a, 0xf0, 0x82, 0xff, 0x0b, 0x46, 0x00, 0x21, 0x02, 0x46, 0x4f, 0xf0, + 0xff, 0x30, 0x99, 0x42, 0x08, 0xbf, 0x90, 0x42, 0x00, 0xd2, 0x02, 0x46, + 0x02, 0x9b, 0x1a, 0x60, 0x78, 0xe7, 0x4f, 0xf0, 0xff, 0x32, 0xf9, 0xe7, + 0x01, 0x99, 0x98, 0xe7, 0x0c, 0x46, 0xe4, 0xe6, 0x42, 0x46, 0x31, 0x46, + 0x30, 0x46, 0xff, 0xf7, 0x15, 0xfe, 0x04, 0x46, 0xed, 0xe6, 0x42, 0x46, + 0x31, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x93, 0xfd, 0x04, 0x46, 0x00, 0x28, + 0x3f, 0xf4, 0x95, 0xae, 0x67, 0xe6, 0x6f, 0xf0, 0x09, 0x04, 0x64, 0xe6, + 0xf8, 0xb5, 0x0c, 0x46, 0x06, 0x46, 0x11, 0x46, 0x1a, 0x46, 0x20, 0x46, + 0xff, 0xf7, 0x08, 0xf9, 0x05, 0x46, 0x50, 0xbb, 0x77, 0x6e, 0x37, 0xb9, + 0x32, 0x1d, 0x21, 0x46, 0x20, 0x46, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, + 0x42, 0xbe, 0x23, 0x68, 0x00, 0x2b, 0x04, 0xda, 0x01, 0x46, 0x20, 0x46, + 0xfe, 0xf7, 0xff, 0xfc, 0x60, 0xbb, 0x20, 0x46, 0xfe, 0xf7, 0x7c, 0xfd, + 0xb3, 0x6d, 0xb0, 0xeb, 0x43, 0x0f, 0x25, 0xd8, 0x20, 0x46, 0xb8, 0x47, + 0x05, 0x46, 0x70, 0xb9, 0x04, 0x36, 0x23, 0x68, 0x00, 0x2b, 0x04, 0xda, + 0x00, 0x21, 0x20, 0x46, 0xfe, 0xf7, 0xeb, 0xfc, 0x38, 0xb9, 0x31, 0x46, + 0x20, 0x46, 0xfe, 0xf7, 0xa3, 0xfc, 0x00, 0x28, 0x0a, 0xda, 0x28, 0x46, + 0xf8, 0xbd, 0x32, 0x46, 0x21, 0x46, 0x20, 0x46, 0xff, 0xf7, 0xca, 0xfd, + 0x00, 0x28, 0xe8, 0xd0, 0x05, 0x46, 0xf4, 0xe7, 0x32, 0x46, 0x21, 0x46, + 0x20, 0x46, 0xff, 0xf7, 0x12, 0xfa, 0x00, 0x28, 0xe7, 0xd0, 0xf5, 0xe7, + 0x00, 0x4d, 0xea, 0xe7, 0x80, 0xb0, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x43, + 0x0e, 0x46, 0x8b, 0xb0, 0x05, 0x46, 0x01, 0x21, 0x06, 0xf1, 0x18, 0x00, + 0xfe, 0xf7, 0xc3, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x99, 0x80, + 0x28, 0x46, 0xfe, 0xf7, 0x6f, 0xfc, 0x02, 0x28, 0x07, 0x46, 0x0f, 0xd1, + 0x30, 0x46, 0xfe, 0xf7, 0x37, 0xfd, 0xeb, 0x6d, 0x07, 0x30, 0x07, 0x33, + 0xc0, 0x08, 0xb0, 0xeb, 0xd3, 0x0f, 0x47, 0x4b, 0x88, 0xbf, 0x1c, 0x46, + 0x20, 0x46, 0x0b, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0x01, 0x28, 0x40, 0xf0, + 0x82, 0x80, 0x21, 0x46, 0x30, 0x46, 0xfe, 0xf7, 0xa2, 0xfc, 0x00, 0x28, + 0x79, 0xdb, 0x06, 0xf1, 0x0c, 0x09, 0x21, 0x46, 0x48, 0x46, 0xfe, 0xf7, + 0x9a, 0xfc, 0x00, 0x28, 0x71, 0xdb, 0x05, 0xf1, 0x04, 0x08, 0x30, 0x46, + 0x41, 0x46, 0xfe, 0xf7, 0x4f, 0xfc, 0x00, 0x28, 0x69, 0xda, 0x41, 0x46, + 0x48, 0x46, 0xfe, 0xf7, 0x49, 0xfc, 0x00, 0x28, 0x63, 0xda, 0x4b, 0x46, + 0x4a, 0x46, 0x01, 0xa9, 0x28, 0x46, 0xcd, 0xe9, 0x01, 0x74, 0xcd, 0xe9, + 0x03, 0x47, 0xcd, 0xe9, 0x05, 0x44, 0xff, 0xf7, 0x65, 0xff, 0x04, 0x46, + 0x00, 0x28, 0x4d, 0xd1, 0x33, 0x46, 0x32, 0x46, 0x04, 0xa9, 0x28, 0x46, + 0xff, 0xf7, 0x5c, 0xff, 0x04, 0x46, 0x00, 0x28, 0x44, 0xd1, 0xab, 0x69, + 0x00, 0x2b, 0x37, 0xd1, 0x03, 0x23, 0x04, 0xa9, 0x07, 0xaa, 0xcd, 0xf8, + 0x24, 0xd0, 0x00, 0x93, 0x01, 0x23, 0x08, 0x46, 0xcd, 0xe9, 0x07, 0x33, + 0xff, 0xf7, 0xd5, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x32, 0xd1, 0x04, 0x9b, + 0x00, 0x2b, 0x19, 0xdb, 0x04, 0xaa, 0x33, 0x46, 0x28, 0x46, 0x11, 0x46, + 0xff, 0xf7, 0x3e, 0xff, 0x04, 0x46, 0x38, 0xbb, 0x04, 0xaa, 0x05, 0xf1, + 0x1c, 0x03, 0x28, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x5d, 0xfd, 0x04, 0x46, + 0xf0, 0xb9, 0x04, 0xa9, 0x01, 0xa8, 0xfe, 0xf7, 0x05, 0xfc, 0x13, 0x4b, + 0x04, 0x1e, 0x18, 0xbf, 0x1c, 0x46, 0x15, 0xe0, 0x00, 0x21, 0x04, 0xa8, + 0xfe, 0xf7, 0x3f, 0xfc, 0x00, 0x28, 0xdf, 0xd0, 0x04, 0xa9, 0x42, 0x46, + 0x08, 0x46, 0xff, 0xf7, 0x25, 0xfd, 0xd3, 0xe7, 0x04, 0xaa, 0x05, 0xf1, + 0x10, 0x03, 0x28, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x3f, 0xfd, 0x04, 0x46, + 0x00, 0x28, 0xcf, 0xd0, 0x01, 0xa8, 0xfe, 0xf7, 0x77, 0xfe, 0x04, 0xa8, + 0xfe, 0xf7, 0x74, 0xfe, 0x78, 0xe7, 0x02, 0x4c, 0x76, 0xe7, 0x02, 0x4c, + 0x74, 0xe7, 0x00, 0xbf, 0x80, 0xb3, 0xff, 0xff, 0x80, 0xb0, 0xff, 0xff, + 0x2d, 0xe9, 0xf0, 0x4f, 0x87, 0x6d, 0x85, 0xb0, 0x91, 0x46, 0x9a, 0x46, + 0x07, 0x37, 0x00, 0x23, 0x01, 0x22, 0x06, 0x46, 0x0d, 0x46, 0xff, 0x08, + 0x4f, 0xf0, 0x0c, 0x08, 0x00, 0xf1, 0x04, 0x0b, 0x03, 0x93, 0xcd, 0xe9, + 0x01, 0x23, 0x53, 0x46, 0x4a, 0x46, 0x39, 0x46, 0x01, 0xa8, 0xfe, 0xf7, + 0xa7, 0xfe, 0x04, 0x46, 0xf0, 0xb9, 0x59, 0x46, 0x01, 0xa8, 0xfe, 0xf7, + 0xbb, 0xfb, 0x00, 0x28, 0x1f, 0xda, 0xb8, 0xf1, 0x01, 0x08, 0x21, 0xd0, + 0x01, 0x21, 0x01, 0xa8, 0xfe, 0xf7, 0xf5, 0xfb, 0x00, 0x28, 0xe8, 0xdd, + 0x01, 0xab, 0x2a, 0x46, 0x29, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xd4, 0xfe, + 0x04, 0x46, 0x38, 0xb9, 0x05, 0xf1, 0x18, 0x02, 0x01, 0xab, 0x30, 0x46, + 0x11, 0x46, 0xff, 0xf7, 0xcb, 0xfe, 0x04, 0x46, 0x01, 0xa8, 0xfe, 0xf7, + 0x2d, 0xfe, 0x20, 0x46, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x21, + 0x01, 0xa8, 0xfe, 0xf7, 0x77, 0xfd, 0xd2, 0xe7, 0x00, 0x4c, 0xf1, 0xe7, + 0x00, 0xb3, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x4f, 0x87, 0x6d, 0x87, 0xb0, + 0x91, 0x46, 0x9a, 0x46, 0x07, 0x37, 0x00, 0x23, 0x01, 0x22, 0x05, 0x46, + 0x0e, 0x46, 0xff, 0x08, 0x4f, 0xf0, 0x0c, 0x08, 0x00, 0xf1, 0x04, 0x0b, + 0x05, 0x93, 0x02, 0x93, 0xcd, 0xe9, 0x03, 0x23, 0xcd, 0xe9, 0x00, 0x23, + 0x53, 0x46, 0x4a, 0x46, 0x39, 0x46, 0x03, 0xa8, 0xfe, 0xf7, 0x5a, 0xfe, + 0x04, 0x46, 0xb8, 0xbb, 0x59, 0x46, 0x03, 0xa8, 0xfe, 0xf7, 0x6e, 0xfb, + 0x00, 0x28, 0x3b, 0xda, 0xb8, 0xf1, 0x01, 0x08, 0x3d, 0xd0, 0x01, 0x21, + 0x03, 0xa8, 0xfe, 0xf7, 0xa8, 0xfb, 0x00, 0x28, 0xe8, 0xdd, 0x06, 0xf1, + 0x18, 0x02, 0x03, 0xab, 0x28, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x86, 0xfe, + 0x04, 0x46, 0xf8, 0xb9, 0x03, 0xab, 0x69, 0x46, 0x28, 0x46, 0x1a, 0x46, + 0xff, 0xf7, 0x7e, 0xfe, 0x04, 0x46, 0xb8, 0xb9, 0x6b, 0x46, 0x32, 0x46, + 0x31, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x76, 0xfe, 0x04, 0x46, 0x78, 0xb9, + 0x03, 0xab, 0x6a, 0x46, 0x69, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x6e, 0xfe, + 0x04, 0x46, 0x38, 0xb9, 0x06, 0xf1, 0x0c, 0x02, 0x6b, 0x46, 0x28, 0x46, + 0x11, 0x46, 0xff, 0xf7, 0x65, 0xfe, 0x04, 0x46, 0x03, 0xa8, 0xfe, 0xf7, + 0xc7, 0xfd, 0x68, 0x46, 0xfe, 0xf7, 0xc4, 0xfd, 0x20, 0x46, 0x07, 0xb0, + 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x21, 0x03, 0xa8, 0xfe, 0xf7, 0x0e, 0xfd, + 0xb6, 0xe7, 0x01, 0x4c, 0xee, 0xe7, 0x00, 0xbf, 0x00, 0xb3, 0xff, 0xff, + 0x2d, 0xe9, 0xf0, 0x41, 0x00, 0x23, 0x8c, 0xb0, 0x0d, 0x46, 0x01, 0x21, + 0x0b, 0x93, 0x06, 0x46, 0x08, 0x93, 0x17, 0x46, 0x05, 0x93, 0x02, 0x93, + 0xcd, 0xe9, 0x09, 0x13, 0xcd, 0xe9, 0x06, 0x13, 0xcd, 0xe9, 0x03, 0x13, + 0xcd, 0xe9, 0x00, 0x13, 0x83, 0x69, 0x00, 0x2b, 0x40, 0xf0, 0xdd, 0x80, + 0x02, 0xf1, 0x18, 0x03, 0x06, 0xa9, 0x1a, 0x46, 0xff, 0xf7, 0x32, 0xfe, + 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xc3, 0x80, 0x06, 0xab, 0x3a, 0x46, + 0x03, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x50, 0xfc, 0x04, 0x46, 0x00, 0x28, + 0x40, 0xf0, 0xb9, 0x80, 0x06, 0xab, 0x3a, 0x46, 0x69, 0x46, 0x30, 0x46, + 0xff, 0xf7, 0x56, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xaf, 0x80, + 0x6b, 0x46, 0x03, 0xaa, 0x06, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x14, 0xfe, + 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xa5, 0x80, 0x03, 0x22, 0x06, 0xa9, + 0x09, 0xa8, 0xff, 0xf7, 0x55, 0xf8, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, + 0x9c, 0x80, 0x06, 0xf1, 0x04, 0x08, 0x41, 0x46, 0x09, 0xa8, 0xfe, 0xf7, + 0xd7, 0xfa, 0x00, 0x28, 0x80, 0xf2, 0x8a, 0x80, 0x07, 0xf1, 0x0c, 0x08, + 0x03, 0xa9, 0x30, 0x46, 0x43, 0x46, 0x42, 0x46, 0xff, 0xf7, 0xf6, 0xfd, + 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x87, 0x80, 0x03, 0xa9, 0x30, 0x46, + 0xef, 0xf7, 0x24, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xd1, 0x03, 0xab, + 0x3a, 0x46, 0x06, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0xe5, 0xfd, 0x04, 0x46, + 0x00, 0x28, 0x76, 0xd1, 0x06, 0xa9, 0x30, 0x46, 0xef, 0xf7, 0x14, 0xfd, + 0x04, 0x46, 0x00, 0x28, 0x6f, 0xd1, 0x03, 0xab, 0x69, 0x46, 0x30, 0x46, + 0x1a, 0x46, 0xff, 0xf7, 0xd5, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x66, 0xd1, + 0x69, 0x46, 0x30, 0x46, 0xef, 0xf7, 0x04, 0xfd, 0x04, 0x46, 0x00, 0x28, + 0x5f, 0xd1, 0x09, 0xab, 0x03, 0xa9, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, + 0xc5, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x56, 0xd1, 0x03, 0xaa, 0x06, 0xab, + 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0xf4, 0xfb, 0x04, 0x46, 0x00, 0x28, + 0x4d, 0xd1, 0x03, 0xaa, 0x06, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, + 0xeb, 0xfb, 0x04, 0x46, 0x00, 0x28, 0x44, 0xd1, 0x06, 0xaa, 0x03, 0xab, + 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0xe2, 0xfb, 0x04, 0x46, 0x00, 0x28, + 0x3b, 0xd1, 0x06, 0xaa, 0x09, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, + 0xa1, 0xfd, 0x04, 0x46, 0x98, 0xbb, 0x06, 0xaa, 0x6b, 0x46, 0x30, 0x46, + 0x11, 0x46, 0xff, 0xf7, 0xd1, 0xfb, 0x04, 0x46, 0x58, 0xbb, 0x07, 0xf1, + 0x18, 0x03, 0x42, 0x46, 0x69, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x90, 0xfd, + 0x04, 0x46, 0x10, 0xbb, 0x69, 0x46, 0x30, 0x46, 0xef, 0xf7, 0xc0, 0xfc, + 0x04, 0x46, 0xe0, 0xb9, 0x03, 0xa9, 0x28, 0x46, 0xfe, 0xf7, 0x52, 0xfe, + 0x04, 0x46, 0xb0, 0xb9, 0x06, 0xa9, 0x05, 0xf1, 0x0c, 0x00, 0xfe, 0xf7, + 0x4b, 0xfe, 0x04, 0x46, 0x78, 0xb9, 0x69, 0x46, 0x05, 0xf1, 0x18, 0x00, + 0xfe, 0xf7, 0x44, 0xfe, 0x04, 0x46, 0x08, 0xe0, 0x09, 0xa9, 0x42, 0x46, + 0x08, 0x46, 0xfe, 0xf7, 0xc6, 0xff, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, + 0x66, 0xaf, 0x09, 0xa8, 0xfe, 0xf7, 0xce, 0xfc, 0x06, 0xa8, 0xfe, 0xf7, + 0xcb, 0xfc, 0x03, 0xa8, 0xfe, 0xf7, 0xc8, 0xfc, 0x68, 0x46, 0xfe, 0xf7, + 0xc5, 0xfc, 0x20, 0x46, 0x0c, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, 0x13, 0x46, + 0x06, 0xa9, 0xff, 0xf7, 0x57, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xe8, 0xd1, + 0x03, 0x22, 0x06, 0xa9, 0x09, 0xa8, 0xfe, 0xf7, 0x99, 0xff, 0x04, 0x46, + 0x00, 0x28, 0xe0, 0xd1, 0x06, 0xf1, 0x04, 0x08, 0x41, 0x46, 0x09, 0xa8, + 0xfe, 0xf7, 0x1c, 0xfa, 0x00, 0x28, 0x2f, 0xda, 0x06, 0xf1, 0x10, 0x08, + 0x00, 0x21, 0x40, 0x46, 0xfe, 0xf7, 0x57, 0xfa, 0x00, 0x28, 0x3f, 0xf4, + 0x3d, 0xaf, 0x07, 0xf1, 0x18, 0x03, 0x06, 0xa9, 0x30, 0x46, 0x1a, 0x46, + 0xff, 0xf7, 0x34, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xc5, 0xd1, 0x06, 0xab, + 0x03, 0xa9, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, 0x2b, 0xfd, 0x04, 0x46, + 0x00, 0x28, 0xbc, 0xd1, 0x43, 0x46, 0x03, 0xaa, 0x06, 0xa9, 0x30, 0x46, + 0xff, 0xf7, 0x22, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xb3, 0xd1, 0x09, 0xaa, + 0x06, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x41, 0xfb, 0x04, 0x46, + 0x00, 0x28, 0x3f, 0xf4, 0x17, 0xaf, 0xa8, 0xe7, 0x09, 0xa9, 0x42, 0x46, + 0x08, 0x46, 0xfe, 0xf7, 0x66, 0xff, 0x04, 0x46, 0x00, 0x28, 0xc1, 0xd0, + 0x9f, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0xf0, 0x43, 0x02, 0xf1, 0x18, 0x09, + 0x97, 0xb0, 0x06, 0x46, 0x0d, 0x46, 0x48, 0x46, 0x00, 0x21, 0x90, 0x46, + 0x1f, 0x46, 0xfe, 0xf7, 0x16, 0xfa, 0x40, 0xb9, 0x39, 0x46, 0x28, 0x46, + 0xfe, 0xf7, 0xf2, 0xfd, 0x04, 0x46, 0x20, 0x46, 0x17, 0xb0, 0xbd, 0xe8, + 0xf0, 0x83, 0x3b, 0x6a, 0x7b, 0xb1, 0x07, 0xf1, 0x18, 0x04, 0x00, 0x21, + 0x20, 0x46, 0xfe, 0xf7, 0x04, 0xfa, 0x08, 0xb9, 0x41, 0x46, 0xec, 0xe7, + 0x01, 0x21, 0x20, 0x46, 0xfe, 0xf7, 0xfd, 0xf9, 0x00, 0x28, 0x40, 0xf0, + 0xff, 0x80, 0x00, 0x23, 0x01, 0x22, 0x13, 0xa9, 0x30, 0x46, 0x15, 0x93, + 0x12, 0x93, 0x0f, 0x93, 0x0c, 0x93, 0x09, 0x93, 0x06, 0x93, 0x03, 0x93, + 0xcd, 0xe9, 0x13, 0x23, 0xcd, 0xe9, 0x10, 0x23, 0xcd, 0xe9, 0x0d, 0x23, + 0xcd, 0xe9, 0x0a, 0x23, 0xcd, 0xe9, 0x07, 0x23, 0xcd, 0xe9, 0x04, 0x23, + 0xcd, 0xe9, 0x01, 0x23, 0x4b, 0x46, 0x4a, 0x46, 0xff, 0xf7, 0xc4, 0xfc, + 0x04, 0x46, 0x00, 0x28, 0x3a, 0xd1, 0x4b, 0x46, 0x13, 0xaa, 0x10, 0xa9, + 0x30, 0x46, 0xff, 0xf7, 0xbb, 0xfc, 0x04, 0x46, 0x90, 0xbb, 0x13, 0xaa, + 0x3b, 0x46, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0xb3, 0xfc, 0x04, 0x46, + 0x50, 0xbb, 0x10, 0xaa, 0x07, 0xf1, 0x0c, 0x03, 0x30, 0x46, 0x11, 0x46, + 0xff, 0xf7, 0xaa, 0xfc, 0x04, 0x46, 0x08, 0xbb, 0x13, 0xaa, 0x43, 0x46, + 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0xda, 0xfa, 0x04, 0x46, 0xc8, 0xb9, + 0x10, 0xaa, 0x08, 0xf1, 0x0c, 0x07, 0x30, 0x46, 0x3b, 0x46, 0x11, 0x46, + 0xff, 0xf7, 0xd0, 0xfa, 0x04, 0x46, 0x78, 0xb9, 0x01, 0x46, 0x13, 0xa8, + 0xfe, 0xf7, 0xab, 0xf9, 0x20, 0xbb, 0x21, 0x46, 0x10, 0xa8, 0xfe, 0xf7, + 0xa6, 0xf9, 0xd8, 0xb9, 0x42, 0x46, 0x29, 0x46, 0x30, 0x46, 0xff, 0xf7, + 0x37, 0xfe, 0x04, 0x46, 0x13, 0xa8, 0xfe, 0xf7, 0xe9, 0xfb, 0x10, 0xa8, + 0xfe, 0xf7, 0xe6, 0xfb, 0x0d, 0xa8, 0xfe, 0xf7, 0xe3, 0xfb, 0x0a, 0xa8, + 0xfe, 0xf7, 0xe0, 0xfb, 0x07, 0xa8, 0xfe, 0xf7, 0xdd, 0xfb, 0x04, 0xa8, + 0xfe, 0xf7, 0xda, 0xfb, 0x01, 0xa8, 0xfe, 0xf7, 0xd7, 0xfb, 0x78, 0xe7, + 0x28, 0x46, 0xfe, 0xf7, 0x11, 0xfb, 0xe4, 0xe7, 0x13, 0xab, 0x4a, 0x46, + 0x01, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x66, 0xfc, 0x04, 0x46, 0x00, 0x28, + 0xdc, 0xd1, 0x13, 0xab, 0x0d, 0xa9, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, + 0x5d, 0xfc, 0x04, 0x46, 0x00, 0x28, 0xd3, 0xd1, 0x13, 0xab, 0x0d, 0xaa, + 0x0a, 0xa9, 0x30, 0x46, 0xff, 0xf7, 0x54, 0xfc, 0x04, 0x46, 0x00, 0x28, + 0xca, 0xd1, 0x0d, 0xaa, 0x43, 0x46, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, + 0x4b, 0xfc, 0x04, 0x46, 0x00, 0x28, 0xc1, 0xd1, 0x0d, 0xa9, 0x13, 0xa8, + 0xfe, 0xf7, 0x12, 0xfd, 0x04, 0x46, 0x00, 0x28, 0xba, 0xd1, 0x13, 0xa9, + 0x30, 0x46, 0xef, 0xf7, 0x73, 0xfb, 0x04, 0x46, 0x00, 0x28, 0xb3, 0xd1, + 0x10, 0xab, 0x07, 0xa9, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, 0x34, 0xfc, + 0x04, 0x46, 0x00, 0x28, 0xaa, 0xd1, 0x07, 0xaa, 0x13, 0xab, 0x30, 0x46, + 0x11, 0x46, 0xff, 0xf7, 0x63, 0xfa, 0x04, 0x46, 0x00, 0x28, 0xa1, 0xd1, + 0x07, 0xaa, 0x0a, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x5a, 0xfa, + 0x04, 0x46, 0x00, 0x28, 0x98, 0xd1, 0x0d, 0xaa, 0x07, 0xab, 0x30, 0x46, + 0x11, 0x46, 0xff, 0xf7, 0x51, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x8f, 0xd1, + 0x0d, 0xaa, 0x10, 0xab, 0x30, 0x46, 0x11, 0x46, 0xff, 0xf7, 0x10, 0xfc, + 0x04, 0x46, 0x00, 0x28, 0x86, 0xd1, 0x0a, 0xaa, 0x3b, 0x46, 0x30, 0x46, + 0x11, 0x46, 0xff, 0xf7, 0x07, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, + 0x7d, 0xaf, 0x0a, 0xab, 0x0d, 0xaa, 0x04, 0xa9, 0x30, 0x46, 0xff, 0xf7, + 0x35, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x73, 0xaf, 0x07, 0xa9, + 0x28, 0x46, 0xfe, 0xf7, 0xc3, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, + 0x6b, 0xaf, 0x04, 0xa9, 0x05, 0xf1, 0x0c, 0x00, 0xfe, 0xf7, 0xba, 0xfc, + 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x62, 0xaf, 0x01, 0xa9, 0x05, 0xf1, + 0x18, 0x00, 0xfe, 0xf7, 0xb1, 0xfc, 0x5a, 0xe7, 0x00, 0x4c, 0xe8, 0xe6, + 0x80, 0xb0, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x43, 0x06, 0x46, 0xa3, 0xb0, + 0x0f, 0x46, 0x10, 0x46, 0x01, 0x21, 0x15, 0x46, 0xfe, 0xf7, 0xed, 0xf8, + 0x00, 0x28, 0x40, 0xf3, 0xc4, 0x81, 0x00, 0x23, 0x4f, 0xf0, 0x01, 0x09, + 0x39, 0x46, 0x1c, 0xa8, 0x18, 0x93, 0x15, 0x93, 0x12, 0x93, 0x0f, 0x93, + 0x1b, 0x93, 0x0c, 0x93, 0x09, 0x93, 0x06, 0x93, 0x03, 0x93, 0xcd, 0xe9, + 0x16, 0x93, 0xcd, 0xe9, 0x13, 0x93, 0xcd, 0xe9, 0x10, 0x93, 0xcd, 0xe9, + 0x0d, 0x93, 0xcd, 0xe9, 0x19, 0x93, 0xcd, 0xe9, 0x0a, 0x93, 0xcd, 0xe9, + 0x07, 0x93, 0xcd, 0xe9, 0x04, 0x93, 0xcd, 0xe9, 0x01, 0x93, 0xcd, 0xe9, + 0x1c, 0x93, 0xcd, 0xe9, 0x1e, 0x39, 0xcd, 0xe9, 0x20, 0x33, 0xfe, 0xf7, + 0x77, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x5a, 0xd1, 0x29, 0x46, 0x1f, 0xa8, + 0xfe, 0xf7, 0x70, 0xfc, 0x04, 0x46, 0x00, 0x28, 0x53, 0xd1, 0x1c, 0xa8, + 0xfb, 0xf7, 0x37, 0xfb, 0x80, 0x46, 0x1f, 0xa8, 0xfb, 0xf7, 0x33, 0xfb, + 0x80, 0x45, 0x28, 0xbf, 0x80, 0x46, 0x1c, 0xa8, 0x41, 0x46, 0xfe, 0xf7, + 0x49, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x42, 0xd1, 0x41, 0x46, 0x1f, 0xa8, + 0xfe, 0xf7, 0x42, 0xfa, 0x04, 0x46, 0x00, 0x28, 0x3b, 0xd1, 0xcd, 0xf8, + 0x7c, 0x90, 0xcd, 0xf8, 0x70, 0x90, 0x00, 0x21, 0x1c, 0xa8, 0xfe, 0xf7, + 0x98, 0xf8, 0x58, 0xb9, 0x41, 0x46, 0x1f, 0xa8, 0xfe, 0xf7, 0x68, 0xf9, + 0x04, 0x46, 0x60, 0xbb, 0x1f, 0xa9, 0x19, 0xa8, 0xfe, 0xf7, 0x42, 0xfc, + 0x04, 0x46, 0x26, 0xe0, 0x1c, 0xa8, 0xfb, 0xf7, 0x0a, 0xfb, 0x01, 0x46, + 0x1c, 0xa8, 0xfe, 0xf7, 0x23, 0xfa, 0x04, 0x46, 0xe8, 0xb9, 0x1f, 0xa8, + 0xfb, 0xf7, 0x01, 0xfb, 0x01, 0x46, 0x1f, 0xa8, 0xfe, 0xf7, 0x1a, 0xfa, + 0x04, 0x46, 0xa0, 0xb9, 0x1f, 0xa9, 0x1c, 0xa8, 0xfe, 0xf7, 0x32, 0xf8, + 0x00, 0x28, 0xc0, 0xf2, 0x9c, 0x80, 0x1c, 0xa9, 0x1f, 0xaa, 0x08, 0x46, + 0xfe, 0xf7, 0xab, 0xfd, 0x04, 0x46, 0x30, 0xb9, 0x01, 0x21, 0x1c, 0xa8, + 0xfe, 0xf7, 0x06, 0xfa, 0x04, 0x46, 0x00, 0x28, 0xc7, 0xd0, 0x1c, 0xa8, + 0xfe, 0xf7, 0xae, 0xfa, 0x1f, 0xa8, 0xfe, 0xf7, 0xab, 0xfa, 0x00, 0x2c, + 0x40, 0xf0, 0xa6, 0x80, 0x01, 0x21, 0x19, 0xa8, 0xfe, 0xf7, 0x57, 0xf8, + 0x00, 0x28, 0x40, 0xf0, 0x2b, 0x81, 0x2a, 0x46, 0x39, 0x46, 0x16, 0xa8, + 0xff, 0xf7, 0x8b, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x96, 0x80, + 0x16, 0xa9, 0x13, 0xa8, 0xfe, 0xf7, 0xfc, 0xfb, 0x04, 0x46, 0x00, 0x28, + 0x40, 0xf0, 0x8e, 0x80, 0x29, 0x46, 0x0a, 0xa8, 0xfe, 0xf7, 0xf4, 0xfb, + 0x04, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x86, 0x80, 0x29, 0x46, 0x07, 0xa8, + 0xfe, 0xf7, 0xec, 0xfb, 0x04, 0x46, 0x00, 0x28, 0x7e, 0xd1, 0x01, 0x21, + 0x10, 0xa8, 0xfe, 0xf7, 0xa7, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x77, 0xd1, + 0x01, 0x46, 0x0d, 0xa8, 0xfe, 0xf7, 0xa0, 0xf9, 0x04, 0x46, 0x00, 0x28, + 0x70, 0xd1, 0x01, 0x46, 0x04, 0xa8, 0xfe, 0xf7, 0x99, 0xf9, 0x04, 0x46, + 0x00, 0x28, 0x69, 0xd1, 0x01, 0x21, 0x01, 0xa8, 0xfe, 0xf7, 0x92, 0xf9, + 0x04, 0x46, 0x00, 0x28, 0x62, 0xd1, 0x15, 0x9b, 0x1b, 0x68, 0xd8, 0x07, + 0x49, 0xd5, 0x09, 0x9b, 0x1b, 0x68, 0xdb, 0x07, 0x40, 0xf1, 0x8f, 0x80, + 0x07, 0xa9, 0x13, 0xa8, 0xfd, 0xf7, 0xc8, 0xff, 0x00, 0x28, 0xc0, 0xf2, + 0xb8, 0x80, 0x13, 0xa9, 0x07, 0xaa, 0x08, 0x46, 0xff, 0xf7, 0x75, 0xf8, + 0x04, 0x46, 0x00, 0x28, 0x4a, 0xd1, 0x10, 0xa9, 0x04, 0xaa, 0x08, 0x46, + 0xff, 0xf7, 0x6d, 0xf8, 0x04, 0x46, 0x00, 0x28, 0x42, 0xd1, 0x01, 0xaa, + 0x0d, 0xa9, 0x08, 0x46, 0xff, 0xf7, 0x65, 0xf8, 0x04, 0x46, 0x00, 0x28, + 0x3a, 0xd1, 0x00, 0x21, 0x13, 0xa8, 0xfd, 0xf7, 0xec, 0xff, 0x00, 0x28, + 0xd1, 0xd1, 0x00, 0x21, 0x04, 0xa8, 0xfd, 0xf7, 0xe6, 0xff, 0x00, 0x28, + 0xc0, 0xf2, 0xa6, 0x80, 0x29, 0x46, 0x04, 0xa8, 0xfd, 0xf7, 0x9c, 0xff, + 0x00, 0x28, 0x80, 0xf2, 0xa9, 0x80, 0x04, 0xa9, 0x30, 0x46, 0xfe, 0xf7, + 0x8d, 0xfb, 0x04, 0x46, 0x20, 0xe0, 0x1f, 0xa9, 0x1c, 0xaa, 0x08, 0x46, + 0xfe, 0xf7, 0x0f, 0xfd, 0x04, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x69, 0xaf, + 0x01, 0x21, 0x1f, 0xa8, 0x60, 0xe7, 0x01, 0x21, 0x13, 0xa8, 0xfe, 0xf7, + 0x65, 0xf9, 0x04, 0x46, 0x70, 0xb9, 0x12, 0x9b, 0x1b, 0x68, 0xdf, 0x07, + 0x29, 0xd4, 0x0f, 0x9b, 0x1b, 0x68, 0xdc, 0x07, 0x25, 0xd4, 0x01, 0x21, + 0x10, 0xa8, 0xfe, 0xf7, 0x57, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x2f, 0xd0, + 0x16, 0xa8, 0xfe, 0xf7, 0xff, 0xf9, 0x13, 0xa8, 0xfe, 0xf7, 0xfc, 0xf9, + 0x10, 0xa8, 0xfe, 0xf7, 0xf9, 0xf9, 0x0d, 0xa8, 0xfe, 0xf7, 0xf6, 0xf9, + 0x19, 0xa8, 0xfe, 0xf7, 0xf3, 0xf9, 0x0a, 0xa8, 0xfe, 0xf7, 0xf0, 0xf9, + 0x07, 0xa8, 0xfe, 0xf7, 0xed, 0xf9, 0x04, 0xa8, 0xfe, 0xf7, 0xea, 0xf9, + 0x01, 0xa8, 0xfe, 0xf7, 0xe7, 0xf9, 0x20, 0x46, 0x23, 0xb0, 0xbd, 0xe8, + 0xf0, 0x83, 0x10, 0xa9, 0x0a, 0xaa, 0x08, 0x46, 0xff, 0xf7, 0x7e, 0xf8, + 0x04, 0x46, 0x00, 0x28, 0xd8, 0xd1, 0x0d, 0xa9, 0x16, 0xaa, 0x08, 0x46, + 0xfe, 0xf7, 0xfb, 0xff, 0x04, 0x46, 0x00, 0x28, 0xc9, 0xd0, 0xcf, 0xe7, + 0x01, 0x21, 0x0d, 0xa8, 0xfe, 0xf7, 0x20, 0xf9, 0x64, 0xe7, 0x01, 0x21, + 0x07, 0xa8, 0xfe, 0xf7, 0x1b, 0xf9, 0x04, 0x46, 0x00, 0x28, 0xc3, 0xd1, + 0x06, 0x9b, 0x1b, 0x68, 0xd9, 0x07, 0x13, 0xd4, 0x03, 0x9b, 0x1b, 0x68, + 0xda, 0x07, 0x0f, 0xd4, 0x01, 0x21, 0x04, 0xa8, 0xfe, 0xf7, 0x0c, 0xf9, + 0x04, 0x46, 0x00, 0x28, 0xb4, 0xd1, 0x01, 0x21, 0x01, 0xa8, 0xfe, 0xf7, + 0x05, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, 0x4e, 0xaf, 0xab, 0xe7, + 0x04, 0xa9, 0x0a, 0xaa, 0x08, 0x46, 0xff, 0xf7, 0x49, 0xf8, 0x04, 0x46, + 0x00, 0x28, 0xa3, 0xd1, 0x01, 0xa9, 0x16, 0xaa, 0x08, 0x46, 0xfe, 0xf7, + 0xc6, 0xff, 0x04, 0x46, 0x00, 0x28, 0xdf, 0xd0, 0x9a, 0xe7, 0x07, 0xa9, + 0x13, 0xaa, 0x08, 0x46, 0xfe, 0xf7, 0xbd, 0xff, 0x04, 0x46, 0x00, 0x28, + 0x92, 0xd1, 0x04, 0xa9, 0x10, 0xaa, 0x08, 0x46, 0xfe, 0xf7, 0xb5, 0xff, + 0x04, 0x46, 0x00, 0x28, 0x8a, 0xd1, 0x0d, 0xaa, 0x01, 0xa9, 0x46, 0xe7, + 0x04, 0xa9, 0x2a, 0x46, 0x08, 0x46, 0xff, 0xf7, 0x25, 0xf8, 0x04, 0x46, + 0x00, 0x28, 0x3f, 0xf4, 0x4a, 0xaf, 0x7d, 0xe7, 0x04, 0xa9, 0x2a, 0x46, + 0x08, 0x46, 0xfe, 0xf7, 0xa0, 0xff, 0x04, 0x46, 0x00, 0x28, 0x3f, 0xf4, + 0x47, 0xaf, 0x73, 0xe7, 0x6f, 0xf0, 0x0d, 0x04, 0x70, 0xe7, 0x6f, 0xf0, + 0x03, 0x04, 0x88, 0xe7, 0x2d, 0xe9, 0xf0, 0x41, 0x01, 0xf1, 0x18, 0x05, + 0x88, 0xb0, 0x07, 0x46, 0x88, 0x46, 0x28, 0x46, 0x00, 0x21, 0xfd, 0xf7, + 0x18, 0xff, 0x04, 0x46, 0x00, 0x28, 0x3b, 0xd0, 0x00, 0x23, 0x01, 0x26, + 0x3a, 0x1d, 0x29, 0x46, 0x05, 0xa8, 0x07, 0x93, 0x04, 0x93, 0xcd, 0xe9, + 0x05, 0x63, 0xcd, 0xe9, 0x02, 0x63, 0xff, 0xf7, 0x11, 0xfe, 0x04, 0x46, + 0x30, 0xbb, 0x05, 0xab, 0x02, 0xa9, 0x38, 0x46, 0x1a, 0x46, 0xff, 0xf7, + 0xe7, 0xf9, 0x04, 0x46, 0xf0, 0xb9, 0x02, 0xab, 0x42, 0x46, 0x41, 0x46, + 0x38, 0x46, 0xff, 0xf7, 0xdf, 0xf9, 0x04, 0x46, 0xb0, 0xb9, 0x08, 0xf1, + 0x0c, 0x02, 0x02, 0xab, 0x38, 0x46, 0x11, 0x46, 0x01, 0x92, 0xff, 0xf7, + 0xd5, 0xf9, 0x04, 0x46, 0x60, 0xb9, 0x01, 0x9a, 0x05, 0xab, 0x38, 0x46, + 0x11, 0x46, 0xff, 0xf7, 0xcd, 0xf9, 0x04, 0x46, 0x20, 0xb9, 0x31, 0x46, + 0x28, 0x46, 0xfe, 0xf7, 0x57, 0xf8, 0x04, 0x46, 0x05, 0xa8, 0xfe, 0xf7, + 0x29, 0xf9, 0x02, 0xa8, 0xfe, 0xf7, 0x26, 0xf9, 0x20, 0x46, 0x08, 0xb0, + 0xbd, 0xe8, 0xf0, 0x81, 0x01, 0x2a, 0x2d, 0xe9, 0xf0, 0x4f, 0x06, 0x46, + 0x8d, 0xb0, 0x0c, 0x46, 0x15, 0x46, 0x07, 0xd8, 0x09, 0x68, 0xff, 0xf7, + 0xa7, 0xff, 0x82, 0x46, 0x50, 0x46, 0x0d, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, + 0x0c, 0x21, 0x10, 0x46, 0x09, 0xf0, 0xca, 0xfc, 0x07, 0x46, 0x00, 0x28, + 0x00, 0xf0, 0xb7, 0x80, 0x4f, 0xf0, 0x0c, 0x08, 0x81, 0x46, 0x02, 0x46, + 0x01, 0x21, 0x08, 0xfb, 0x05, 0xf8, 0x00, 0xeb, 0x08, 0x03, 0x00, 0x93, + 0x00, 0x23, 0x93, 0x60, 0x00, 0x98, 0xc2, 0xe9, 0x00, 0x13, 0x0c, 0x32, + 0x90, 0x42, 0xf8, 0xd1, 0x38, 0x46, 0x0b, 0x93, 0x08, 0x93, 0x05, 0x93, + 0xcd, 0xe9, 0x09, 0x13, 0xcd, 0xe9, 0x06, 0x13, 0xcd, 0xe9, 0x03, 0x13, + 0x21, 0x68, 0x18, 0x31, 0xfe, 0xf7, 0x52, 0xfa, 0x82, 0x46, 0x90, 0xbb, + 0x04, 0xf1, 0x04, 0x0b, 0x07, 0xf1, 0x0c, 0x01, 0x04, 0xeb, 0x85, 0x04, + 0x5b, 0xf8, 0x04, 0x3b, 0xa1, 0xf1, 0x0c, 0x02, 0x30, 0x46, 0x01, 0x91, + 0x18, 0x33, 0xff, 0xf7, 0x73, 0xf9, 0x82, 0x46, 0x08, 0xbb, 0x01, 0x99, + 0x5c, 0x45, 0x01, 0xf1, 0x0c, 0x01, 0xef, 0xd1, 0xa8, 0xf1, 0x0c, 0x01, + 0x32, 0x1d, 0x09, 0xa8, 0x39, 0x44, 0xff, 0xf7, 0x87, 0xfd, 0x82, 0x46, + 0x98, 0xb9, 0x01, 0x3d, 0x4f, 0xf0, 0x0c, 0x08, 0xa7, 0xf1, 0x0c, 0x0b, + 0x15, 0xbb, 0x09, 0xa9, 0x06, 0xa8, 0xfe, 0xf7, 0x27, 0xfa, 0x82, 0x46, + 0x38, 0xb9, 0x06, 0xab, 0x03, 0xa9, 0x30, 0x46, 0x1a, 0x46, 0xff, 0xf7, + 0x51, 0xf9, 0x82, 0x46, 0x38, 0xb3, 0x09, 0xa8, 0xfe, 0xf7, 0xb2, 0xf8, + 0x06, 0xa8, 0xfe, 0xf7, 0xaf, 0xf8, 0x03, 0xa8, 0xfe, 0xf7, 0xac, 0xf8, + 0x48, 0x46, 0x09, 0xf1, 0x0c, 0x09, 0xfe, 0xf7, 0xa7, 0xf8, 0x00, 0x9b, + 0x4b, 0x45, 0xf7, 0xd1, 0x38, 0x46, 0x08, 0xf0, 0x53, 0xf9, 0x89, 0xe7, + 0x08, 0xfb, 0x05, 0xb3, 0x09, 0xaa, 0x06, 0xa9, 0x30, 0x46, 0xff, 0xf7, + 0x33, 0xf9, 0x82, 0x46, 0x00, 0x28, 0xe0, 0xd1, 0x54, 0xf8, 0x04, 0x3c, + 0x09, 0xaa, 0x30, 0x46, 0x18, 0x33, 0x11, 0x46, 0xff, 0xf7, 0x28, 0xf9, + 0xcd, 0xe7, 0x54, 0xf8, 0x04, 0x2c, 0x03, 0xab, 0x30, 0x46, 0x11, 0x46, + 0xff, 0xf7, 0x20, 0xf9, 0x82, 0x46, 0x00, 0x28, 0xcd, 0xd1, 0x54, 0xf8, + 0x04, 0x2c, 0x03, 0xab, 0x30, 0x46, 0x0c, 0x32, 0x11, 0x46, 0xff, 0xf7, + 0x15, 0xf9, 0x82, 0x46, 0x00, 0x28, 0xc2, 0xd1, 0x54, 0xf8, 0x04, 0x2c, + 0x06, 0xab, 0x30, 0x46, 0x0c, 0x32, 0x11, 0x46, 0xff, 0xf7, 0x0a, 0xf9, + 0x82, 0x46, 0x00, 0x28, 0xb7, 0xd1, 0xb1, 0x68, 0x54, 0xf8, 0x04, 0x0c, + 0xfd, 0xf7, 0xfc, 0xfb, 0x82, 0x46, 0x00, 0x28, 0xaf, 0xd1, 0x54, 0xf8, + 0x04, 0x0c, 0xb1, 0x68, 0x0c, 0x30, 0xfd, 0xf7, 0xf3, 0xfb, 0x82, 0x46, + 0x00, 0x28, 0xa6, 0xd1, 0x54, 0xf8, 0x04, 0x0d, 0x18, 0x30, 0xfe, 0xf7, + 0x57, 0xf8, 0x00, 0x2d, 0x9f, 0xd0, 0x01, 0x3d, 0x8e, 0xe7, 0xdf, 0xf8, + 0x04, 0xa0, 0x39, 0xe7, 0x80, 0xb2, 0xff, 0xff, 0x70, 0xb4, 0x04, 0x68, + 0x0e, 0x1b, 0x00, 0x2e, 0x07, 0xdd, 0x26, 0x78, 0x9e, 0x42, 0x08, 0xd1, + 0x01, 0x34, 0x04, 0x60, 0x70, 0xbc, 0xfb, 0xf7, 0x90, 0xb8, 0x6f, 0xf0, + 0x5f, 0x00, 0x70, 0xbc, 0x70, 0x47, 0x6f, 0xf0, 0x61, 0x00, 0xfa, 0xe7, + 0x2d, 0xe9, 0xf7, 0x43, 0x90, 0x46, 0x1f, 0x46, 0x01, 0xaa, 0x30, 0x23, + 0x05, 0x46, 0x89, 0x46, 0xff, 0xf7, 0xe2, 0xff, 0x04, 0x46, 0xf8, 0xb9, + 0x2e, 0x68, 0xa9, 0xeb, 0x06, 0x09, 0xb9, 0xf1, 0x00, 0x0f, 0x35, 0xdd, + 0x01, 0x99, 0x42, 0x46, 0x33, 0x78, 0x28, 0x46, 0x0e, 0x44, 0x42, 0xf8, + 0x04, 0x3b, 0x06, 0x23, 0x31, 0x46, 0xff, 0xf7, 0xcf, 0xff, 0x04, 0x46, + 0x60, 0xb9, 0x2a, 0x68, 0xd8, 0xf8, 0x04, 0x10, 0xc8, 0xf8, 0x08, 0x20, + 0x53, 0x18, 0xb3, 0x42, 0x2b, 0x60, 0x07, 0xd1, 0x0c, 0x21, 0x38, 0x46, + 0xfc, 0xf7, 0xfe, 0xfe, 0x20, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, + 0x51, 0x5c, 0x01, 0x33, 0x3a, 0x46, 0x28, 0x46, 0x42, 0xf8, 0x04, 0x1b, + 0x31, 0x46, 0x2b, 0x60, 0xfb, 0xf7, 0x4f, 0xf8, 0x04, 0x46, 0x00, 0x28, + 0xee, 0xd1, 0x2b, 0x68, 0x7a, 0x68, 0xbb, 0x60, 0x13, 0x44, 0xb3, 0x42, + 0x2b, 0x60, 0x0c, 0xbf, 0x04, 0x46, 0x6f, 0xf0, 0x65, 0x04, 0xe3, 0xe7, + 0x6f, 0xf0, 0x5f, 0x04, 0xe0, 0xe7, 0x37, 0xb5, 0x02, 0x23, 0x15, 0x46, + 0x01, 0xaa, 0x04, 0x46, 0xff, 0xf7, 0x9a, 0xff, 0x40, 0xb9, 0x01, 0x9a, + 0x28, 0x46, 0x21, 0x68, 0xfe, 0xf7, 0x6e, 0xf8, 0x23, 0x68, 0x01, 0x9a, + 0x13, 0x44, 0x23, 0x60, 0x03, 0xb0, 0x30, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, + 0x97, 0xb0, 0x02, 0x93, 0x13, 0x68, 0x20, 0x9c, 0x0f, 0x2b, 0x01, 0x93, + 0xcd, 0xe9, 0x0a, 0x02, 0x00, 0xf2, 0xf1, 0x81, 0x21, 0x9b, 0xb5, 0x4d, + 0x0b, 0x44, 0xb5, 0x4e, 0xb5, 0x4f, 0x0c, 0x93, 0x21, 0x9b, 0x0c, 0x9a, + 0x93, 0x42, 0x07, 0xd1, 0x0b, 0x9b, 0x00, 0x20, 0x1a, 0x46, 0x01, 0x9b, + 0x13, 0x60, 0x17, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x01, 0x9b, 0x83, 0xb1, + 0x01, 0x9b, 0x21, 0x99, 0xe3, 0x5c, 0x11, 0xf8, 0x01, 0x2b, 0x53, 0x40, + 0x22, 0x9a, 0x21, 0x91, 0x02, 0xf8, 0x01, 0x3b, 0x01, 0x9b, 0x22, 0x92, + 0x01, 0x33, 0x03, 0xf0, 0x0f, 0x03, 0x01, 0x93, 0xe0, 0xe7, 0x0a, 0x9b, + 0xdf, 0xf8, 0x98, 0xc2, 0x5a, 0x68, 0x02, 0x9b, 0x19, 0x68, 0x0e, 0x91, + 0x13, 0x68, 0x4b, 0x40, 0x0e, 0x93, 0x02, 0x9b, 0x59, 0x68, 0x0f, 0x91, + 0x53, 0x68, 0x4b, 0x40, 0x0f, 0x93, 0x02, 0x9b, 0x99, 0x68, 0x10, 0x91, + 0x93, 0x68, 0x4b, 0x40, 0x10, 0x93, 0x02, 0x9b, 0xd9, 0x68, 0x02, 0xf1, + 0x10, 0x03, 0x30, 0x32, 0x11, 0x91, 0x0d, 0x93, 0x52, 0xf8, 0x24, 0x3c, + 0x4b, 0x40, 0x11, 0x93, 0x0a, 0x9b, 0x1b, 0x68, 0x5b, 0x10, 0x04, 0x93, + 0x01, 0x3b, 0x05, 0x93, 0x03, 0x93, 0x20, 0x32, 0xdd, 0xe9, 0x0e, 0x9a, + 0xdd, 0xe9, 0x10, 0x83, 0x5f, 0xfa, 0x89, 0xf0, 0x19, 0x0e, 0x55, 0xf8, + 0x20, 0x00, 0x5f, 0xfa, 0x83, 0xfe, 0x56, 0xf8, 0x21, 0x10, 0x5f, 0xfa, + 0x88, 0xfb, 0x55, 0xf8, 0x2e, 0xe0, 0x48, 0x40, 0xca, 0xf3, 0x07, 0x21, + 0x55, 0xf8, 0x2b, 0xb0, 0x57, 0xf8, 0x21, 0x10, 0x48, 0x40, 0xc8, 0xf3, + 0x07, 0x41, 0x5c, 0xf8, 0x21, 0x10, 0x48, 0x40, 0x52, 0xf8, 0x40, 0x1c, + 0x41, 0x40, 0xc8, 0xb2, 0x06, 0x90, 0x08, 0x0e, 0x07, 0x90, 0xc1, 0xf3, + 0x07, 0x40, 0x08, 0x90, 0xc1, 0xf3, 0x07, 0x20, 0x09, 0x90, 0x4f, 0xea, + 0x18, 0x60, 0xc8, 0xf3, 0x07, 0x28, 0x56, 0xf8, 0x20, 0x00, 0x8e, 0xea, + 0x00, 0x0e, 0xc9, 0xf3, 0x07, 0x20, 0x57, 0xf8, 0x20, 0x00, 0x8e, 0xea, + 0x00, 0x0e, 0xca, 0xf3, 0x07, 0x40, 0x5c, 0xf8, 0x20, 0x00, 0x8e, 0xea, + 0x00, 0x0e, 0x4f, 0xea, 0x1a, 0x60, 0x5f, 0xfa, 0x8a, 0xfa, 0x56, 0xf8, + 0x20, 0x00, 0x55, 0xf8, 0x2a, 0xa0, 0x8b, 0xea, 0x00, 0x00, 0xc3, 0xf3, + 0x07, 0x2b, 0xc3, 0xf3, 0x07, 0x43, 0x57, 0xf8, 0x2b, 0xb0, 0x5c, 0xf8, + 0x23, 0x30, 0x80, 0xea, 0x0b, 0x00, 0xc9, 0xf3, 0x07, 0x4b, 0x4f, 0xea, + 0x19, 0x69, 0x5c, 0xf8, 0x2b, 0xb0, 0x56, 0xf8, 0x29, 0x90, 0x80, 0xea, + 0x0b, 0x00, 0x8a, 0xea, 0x09, 0x0a, 0x57, 0xf8, 0x28, 0x90, 0x8a, 0xea, + 0x09, 0x0a, 0x8a, 0xea, 0x03, 0x0a, 0x03, 0x9b, 0x00, 0x2b, 0x00, 0xf3, + 0xbf, 0x80, 0x05, 0x9b, 0x12, 0x91, 0x4f, 0xea, 0x43, 0x1c, 0x04, 0x9b, + 0x00, 0x2b, 0x0d, 0x9b, 0xd8, 0xbf, 0x4f, 0xf0, 0x00, 0x0c, 0x63, 0x44, + 0x5a, 0x68, 0x9c, 0x46, 0x8a, 0xea, 0x02, 0x0a, 0xcd, 0xf8, 0x4c, 0xa0, + 0x99, 0x68, 0x41, 0x40, 0x53, 0x48, 0x14, 0x91, 0xda, 0x68, 0x8e, 0xea, + 0x02, 0x0e, 0x4f, 0xea, 0x1e, 0x62, 0xcd, 0xf8, 0x54, 0xe0, 0x10, 0xf8, + 0x02, 0x90, 0x06, 0x9a, 0x10, 0xf8, 0x02, 0x80, 0x1a, 0x69, 0x88, 0xea, + 0x02, 0x02, 0x82, 0xea, 0x09, 0x68, 0xca, 0xf3, 0x07, 0x22, 0x82, 0x5c, + 0x88, 0xea, 0x02, 0x28, 0xc1, 0xf3, 0x07, 0x42, 0x82, 0x5c, 0x88, 0xea, + 0x02, 0x48, 0x07, 0x9a, 0x10, 0xf8, 0x02, 0xb0, 0x5a, 0x69, 0xcd, 0xf8, + 0x38, 0x80, 0x82, 0xea, 0x0b, 0x6b, 0x5f, 0xfa, 0x8a, 0xf2, 0x82, 0x5c, + 0x8b, 0xea, 0x02, 0x0b, 0xc1, 0xf3, 0x07, 0x22, 0x82, 0x5c, 0x8b, 0xea, + 0x02, 0x2b, 0xce, 0xf3, 0x07, 0x42, 0x82, 0x5c, 0x8b, 0xea, 0x02, 0x4b, + 0x08, 0x9a, 0x10, 0xf8, 0x02, 0x90, 0x9a, 0x69, 0x09, 0x9b, 0x82, 0xea, + 0x09, 0x42, 0xcd, 0xf8, 0x3c, 0xb0, 0x5f, 0xfa, 0x81, 0xf9, 0x09, 0x0e, + 0x10, 0xf8, 0x09, 0x90, 0x82, 0xea, 0x09, 0x02, 0x4f, 0xea, 0x1a, 0x69, + 0x10, 0xf8, 0x09, 0x90, 0x82, 0xea, 0x09, 0x62, 0xce, 0xf3, 0x07, 0x29, + 0x5f, 0xfa, 0x8e, 0xfe, 0x10, 0xf8, 0x09, 0x90, 0x82, 0xea, 0x09, 0x22, + 0x10, 0x92, 0x10, 0xf8, 0x03, 0x90, 0xca, 0xf3, 0x07, 0x43, 0xdc, 0xf8, + 0x1c, 0xc0, 0xc3, 0x5c, 0x8c, 0xea, 0x09, 0x29, 0x10, 0xf8, 0x0e, 0xc0, + 0x89, 0xea, 0x0c, 0x09, 0x10, 0xf8, 0x01, 0xc0, 0x4f, 0xea, 0x18, 0x21, + 0x22, 0x72, 0x89, 0xea, 0x0c, 0x69, 0x84, 0xf8, 0x00, 0x80, 0x61, 0x70, + 0x4f, 0xea, 0x18, 0x41, 0x89, 0xea, 0x03, 0x43, 0x84, 0xf8, 0x04, 0xb0, + 0xa1, 0x70, 0x4f, 0xea, 0x1b, 0x21, 0x4f, 0xea, 0x13, 0x69, 0x23, 0x73, + 0x61, 0x71, 0x4f, 0xea, 0x1b, 0x41, 0x4f, 0xea, 0x18, 0x68, 0x0e, 0xa8, + 0xa1, 0x71, 0x11, 0x0a, 0x4f, 0xea, 0x1b, 0x6b, 0x84, 0xf8, 0x03, 0x80, + 0x61, 0x72, 0x11, 0x0c, 0x12, 0x0e, 0x84, 0xf8, 0x07, 0xb0, 0xa1, 0x72, + 0x20, 0x21, 0xe2, 0x72, 0x1a, 0x0a, 0x84, 0xf8, 0x0f, 0x90, 0x62, 0x73, + 0x1a, 0x0c, 0x11, 0x93, 0xa2, 0x73, 0xfc, 0xf7, 0x63, 0xfd, 0x02, 0x9b, + 0x03, 0xf1, 0x10, 0x02, 0x12, 0xf8, 0x01, 0x3d, 0x01, 0x33, 0xdb, 0xb2, + 0x13, 0x70, 0x00, 0x2b, 0x7f, 0xf4, 0xac, 0xae, 0x02, 0x9b, 0x9a, 0x42, + 0xf4, 0xd1, 0xa7, 0xe6, 0xb8, 0x15, 0x02, 0x24, 0xb8, 0x21, 0x02, 0x24, + 0xb8, 0x19, 0x02, 0x24, 0x1c, 0x04, 0x00, 0x24, 0xb8, 0x1d, 0x02, 0x24, + 0x12, 0x91, 0x52, 0xf8, 0x3c, 0x3c, 0x8a, 0xea, 0x03, 0x09, 0x06, 0x9b, + 0xcd, 0xf8, 0x4c, 0x90, 0x52, 0xf8, 0x38, 0x1c, 0x41, 0x40, 0x14, 0x91, + 0x52, 0xf8, 0x34, 0x0c, 0x8e, 0xea, 0x00, 0x00, 0x55, 0xf8, 0x23, 0xe0, + 0x15, 0x90, 0x4f, 0xea, 0x10, 0x68, 0x52, 0xf8, 0x30, 0x3c, 0x56, 0xf8, + 0x28, 0x80, 0x83, 0xea, 0x0e, 0x0e, 0x07, 0x9b, 0x8e, 0xea, 0x08, 0x0e, + 0xc9, 0xf3, 0x07, 0x28, 0x57, 0xf8, 0x28, 0x80, 0x8e, 0xea, 0x08, 0x0e, + 0xc1, 0xf3, 0x07, 0x48, 0x5c, 0xf8, 0x28, 0x80, 0x8e, 0xea, 0x08, 0x0e, + 0x5f, 0xfa, 0x89, 0xf8, 0xcd, 0xf8, 0x38, 0xe0, 0x56, 0xf8, 0x23, 0xe0, + 0x52, 0xf8, 0x2c, 0x3c, 0x55, 0xf8, 0x28, 0x80, 0x83, 0xea, 0x0e, 0x0e, + 0x08, 0x9b, 0x8e, 0xea, 0x08, 0x0e, 0xc1, 0xf3, 0x07, 0x28, 0x57, 0xf8, + 0x28, 0x80, 0x8e, 0xea, 0x08, 0x0e, 0xc0, 0xf3, 0x07, 0x48, 0x5c, 0xf8, + 0x28, 0x80, 0x8e, 0xea, 0x08, 0x0e, 0x5c, 0xf8, 0x23, 0x80, 0xcd, 0xf8, + 0x3c, 0xe0, 0x5f, 0xfa, 0x81, 0xfe, 0x52, 0xf8, 0x28, 0x3c, 0x09, 0x0e, + 0x55, 0xf8, 0x2e, 0xe0, 0x8e, 0xea, 0x08, 0x0e, 0x4f, 0xea, 0x19, 0x68, + 0x8e, 0xea, 0x03, 0x0e, 0x56, 0xf8, 0x28, 0x80, 0x09, 0x9b, 0x8e, 0xea, + 0x08, 0x0e, 0xc0, 0xf3, 0x07, 0x28, 0xc0, 0xb2, 0x57, 0xf8, 0x28, 0x80, + 0x8e, 0xea, 0x08, 0x0e, 0xcd, 0xf8, 0x40, 0xe0, 0x55, 0xf8, 0x20, 0xe0, + 0x57, 0xf8, 0x23, 0x00, 0xc9, 0xf3, 0x07, 0x43, 0x8e, 0xea, 0x00, 0x0e, + 0x52, 0xf8, 0x24, 0x0c, 0x56, 0xf8, 0x21, 0x10, 0x8e, 0xea, 0x00, 0x00, + 0x48, 0x40, 0x5c, 0xf8, 0x23, 0x10, 0x03, 0x9b, 0x48, 0x40, 0x01, 0x3b, + 0x11, 0x90, 0x03, 0x93, 0x5b, 0xe6, 0x6f, 0xf0, 0x20, 0x00, 0x1a, 0xe6, + 0xf0, 0xb5, 0xad, 0xf6, 0x04, 0x0d, 0x01, 0x23, 0x00, 0x22, 0x0d, 0xf5, + 0x80, 0x60, 0x05, 0x46, 0x13, 0xf0, 0x80, 0x01, 0x4d, 0xf8, 0x23, 0x20, + 0x40, 0xf8, 0x04, 0x3b, 0x02, 0xf1, 0x01, 0x02, 0x18, 0xbf, 0x1b, 0x21, + 0x83, 0xea, 0x43, 0x03, 0xb2, 0xf5, 0x80, 0x7f, 0x83, 0xea, 0x01, 0x03, + 0xdb, 0xb2, 0xed, 0xd1, 0x36, 0x48, 0x01, 0x23, 0x00, 0x22, 0x13, 0xf0, + 0x80, 0x01, 0x02, 0xf1, 0x01, 0x02, 0x40, 0xf8, 0x04, 0x3b, 0x18, 0xbf, + 0x1b, 0x21, 0x0a, 0x2a, 0x81, 0xea, 0x43, 0x03, 0xdb, 0xb2, 0xf2, 0xd1, + 0x63, 0x23, 0x2f, 0x4c, 0x2f, 0x48, 0x01, 0x21, 0x23, 0x70, 0x00, 0x23, + 0x80, 0xf8, 0x63, 0x30, 0x5d, 0xf8, 0x21, 0x30, 0xc3, 0xf1, 0xff, 0x03, + 0x55, 0xf8, 0x23, 0xe0, 0x4f, 0xea, 0xee, 0x12, 0x42, 0xea, 0x4e, 0x02, + 0x5f, 0xfa, 0x82, 0xfc, 0xc2, 0xf3, 0xc0, 0x12, 0x42, 0xea, 0x4c, 0x02, + 0xd7, 0xb2, 0xc2, 0xf3, 0xc0, 0x12, 0x42, 0xea, 0x47, 0x02, 0xd6, 0xb2, + 0xc2, 0xf3, 0xc0, 0x12, 0x42, 0xea, 0x46, 0x02, 0xd3, 0xb2, 0x83, 0xea, + 0x0e, 0x03, 0x83, 0xea, 0x0c, 0x03, 0x7b, 0x40, 0x73, 0x40, 0x83, 0xf0, + 0x63, 0x03, 0x63, 0x54, 0xc1, 0x54, 0x01, 0x31, 0xb1, 0xf5, 0x80, 0x7f, + 0xd6, 0xd1, 0xdf, 0xf8, 0x5c, 0xc0, 0x18, 0x4f, 0x18, 0x4e, 0x19, 0x4d, + 0x19, 0x4c, 0x1c, 0xf8, 0x01, 0x2b, 0x12, 0xf0, 0x80, 0x0f, 0x4f, 0xea, + 0x02, 0x43, 0x14, 0xbf, 0x1b, 0x20, 0x00, 0x20, 0x43, 0xea, 0x02, 0x23, + 0x01, 0x39, 0x80, 0xea, 0x42, 0x00, 0xc0, 0xb2, 0x82, 0xea, 0x00, 0x02, + 0x83, 0xea, 0x00, 0x03, 0x43, 0xea, 0x02, 0x63, 0x4f, 0xea, 0x33, 0x62, + 0x47, 0xf8, 0x04, 0x3b, 0x46, 0xf8, 0x04, 0x2b, 0x4f, 0xea, 0x33, 0x42, + 0x4f, 0xea, 0x33, 0x23, 0x45, 0xf8, 0x04, 0x2b, 0x44, 0xf8, 0x04, 0x3b, + 0xdb, 0xd1, 0x0d, 0xf6, 0x04, 0x0d, 0xf0, 0xbd, 0x1c, 0x05, 0x00, 0x24, + 0x1c, 0x04, 0x00, 0x24, 0xb8, 0x25, 0x02, 0x24, 0xb8, 0x15, 0x02, 0x24, + 0xb8, 0x19, 0x02, 0x24, 0xb8, 0x1d, 0x02, 0x24, 0xb8, 0x21, 0x02, 0x24, + 0x10, 0xb5, 0xfb, 0xf7, 0x8b, 0xf9, 0x01, 0x23, 0x80, 0xf8, 0x3f, 0x30, + 0x83, 0x6b, 0x1b, 0xb1, 0x06, 0x4b, 0x4f, 0xf0, 0x80, 0x62, 0x5a, 0x60, + 0xd0, 0xe9, 0x0a, 0x23, 0xbd, 0xe8, 0x10, 0x40, 0x12, 0xf5, 0x7a, 0x72, + 0x43, 0xf1, 0x00, 0x03, 0xfa, 0xf7, 0xa9, 0xbf, 0x00, 0xed, 0x00, 0xe0, + 0x08, 0xb5, 0xef, 0xf3, 0x05, 0x83, 0x53, 0xb1, 0x12, 0x4b, 0x1b, 0x68, + 0x98, 0x69, 0xfb, 0xf7, 0x1b, 0xf9, 0x4f, 0xf4, 0x7a, 0x72, 0x00, 0x23, + 0x09, 0xf0, 0x60, 0xfb, 0x08, 0xbd, 0xfa, 0xf7, 0xd5, 0xfe, 0xef, 0xf3, + 0x05, 0x83, 0x6b, 0xb1, 0x0b, 0x4b, 0xd8, 0x68, 0x0b, 0x4b, 0x1a, 0x68, + 0x18, 0x60, 0x82, 0x42, 0x81, 0xbf, 0x0a, 0x49, 0x0a, 0x68, 0x01, 0x32, + 0x0a, 0x60, 0xfa, 0xf7, 0xb1, 0xfe, 0xeb, 0xe7, 0x03, 0xf0, 0xd2, 0xfa, + 0x00, 0x28, 0xed, 0xd1, 0xdf, 0xf8, 0x14, 0xc0, 0x00, 0xdf, 0xeb, 0xe7, + 0xd8, 0x27, 0x02, 0x24, 0x1c, 0x01, 0x00, 0x24, 0xe4, 0x27, 0x02, 0x24, + 0xe0, 0x27, 0x02, 0x24, 0xd5, 0x47, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x4f, + 0x85, 0xb0, 0xef, 0xf3, 0x05, 0x83, 0x00, 0x2b, 0x42, 0xd0, 0x00, 0x20, + 0xdf, 0xf8, 0x48, 0xa1, 0xda, 0xf8, 0x00, 0x40, 0xfa, 0xf7, 0xa4, 0xfe, + 0xd4, 0xe9, 0x0c, 0x89, 0xfa, 0xf7, 0x8c, 0xfe, 0xa3, 0x6b, 0xb8, 0xeb, + 0x03, 0x08, 0x69, 0xeb, 0xe3, 0x79, 0x18, 0xeb, 0x00, 0x04, 0x49, 0xf1, + 0x00, 0x05, 0xfb, 0xf7, 0x25, 0xf9, 0x4f, 0xf4, 0x7a, 0x73, 0xa4, 0xfb, + 0x03, 0x67, 0x03, 0xfb, 0x05, 0x77, 0x00, 0x20, 0xfa, 0xf7, 0x6e, 0xfd, + 0x00, 0x28, 0x55, 0xd1, 0xda, 0xf8, 0x00, 0x30, 0x93, 0xf8, 0x3d, 0x30, + 0x00, 0x2b, 0x4f, 0xd1, 0x6f, 0xf0, 0x00, 0x43, 0x4f, 0xf0, 0xff, 0x32, + 0x9d, 0x42, 0x08, 0xbf, 0x94, 0x42, 0xec, 0xd0, 0xda, 0xf8, 0x00, 0xb0, + 0x9b, 0xf8, 0x3c, 0x30, 0x00, 0x2b, 0xe6, 0xd1, 0x59, 0x46, 0x02, 0xa8, + 0xfb, 0xf7, 0xbf, 0xf8, 0xdd, 0xe9, 0x02, 0x23, 0xab, 0x42, 0x08, 0xbf, + 0xa2, 0x42, 0x0b, 0xd3, 0x01, 0x23, 0x8b, 0xf8, 0x3d, 0x30, 0xd8, 0xe7, + 0x03, 0xf0, 0x76, 0xfa, 0x00, 0x28, 0xb8, 0xd1, 0xdf, 0xf8, 0xc0, 0xc0, + 0x00, 0xdf, 0xb5, 0xe7, 0xfa, 0xf7, 0x5e, 0xfe, 0xdb, 0xe9, 0x0c, 0x01, + 0xfa, 0xf7, 0x46, 0xfe, 0x23, 0x1a, 0x4f, 0xf0, 0x01, 0x00, 0x00, 0x93, + 0x65, 0xeb, 0x01, 0x03, 0x9b, 0xf8, 0x40, 0x10, 0x01, 0x93, 0xab, 0xf8, + 0x3c, 0x00, 0xdb, 0xe9, 0x08, 0x23, 0x16, 0xeb, 0x02, 0x0c, 0x47, 0xeb, + 0x03, 0x03, 0x39, 0xb9, 0xdb, 0xf8, 0x18, 0x20, 0x11, 0x68, 0x91, 0xf8, + 0x20, 0x10, 0x69, 0xbb, 0x8b, 0xf8, 0x40, 0x00, 0x4f, 0xf0, 0x00, 0x02, + 0x9b, 0xf8, 0x40, 0x00, 0x8b, 0xf8, 0x3e, 0x20, 0x10, 0xb9, 0x01, 0x20, + 0x8b, 0xf8, 0x40, 0x00, 0x62, 0x46, 0x2b, 0xe0, 0xda, 0xf8, 0x00, 0x40, + 0x20, 0x46, 0xfb, 0xf7, 0xc0, 0xfd, 0x00, 0x23, 0x94, 0xf8, 0x40, 0x20, + 0xa3, 0x87, 0x0a, 0xb1, 0x84, 0xf8, 0x40, 0x30, 0xda, 0xf8, 0x00, 0x10, + 0x02, 0xa8, 0xfb, 0xf7, 0x70, 0xf8, 0x02, 0x9c, 0xef, 0xf3, 0x05, 0x83, + 0x3b, 0xb9, 0x03, 0xf0, 0x2d, 0xfa, 0x20, 0xb9, 0xa4, 0xeb, 0x08, 0x00, + 0xdf, 0xf8, 0x30, 0xc0, 0x00, 0xdf, 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, + 0xdd, 0xe9, 0x00, 0x12, 0x00, 0x2a, 0x08, 0xbf, 0x05, 0x29, 0xcd, 0xd3, + 0xbc, 0xf5, 0x7a, 0x62, 0x8b, 0xf8, 0x3e, 0x00, 0x43, 0xf1, 0xff, 0x33, + 0x58, 0x46, 0xfa, 0xf7, 0xc6, 0xfe, 0x74, 0xe7, 0xd8, 0x27, 0x02, 0x24, + 0x9d, 0x51, 0x01, 0x08, 0x31, 0x4d, 0x01, 0x08, 0x2d, 0xe9, 0xf3, 0x47, + 0x05, 0x46, 0x00, 0x26, 0x67, 0x4f, 0xff, 0xf7, 0x11, 0xff, 0x85, 0xf8, + 0x24, 0x60, 0xfa, 0xf7, 0xf3, 0xfd, 0x6b, 0x68, 0x01, 0xa9, 0x1b, 0x1a, + 0x00, 0x2b, 0x2b, 0x68, 0xd8, 0xbf, 0x68, 0x60, 0x01, 0x93, 0x1b, 0xb1, + 0x5a, 0x69, 0x12, 0x1a, 0x00, 0x2a, 0x3b, 0xdd, 0x2b, 0x60, 0x03, 0xb1, + 0x1d, 0x61, 0x0e, 0x60, 0x01, 0x99, 0x11, 0xb1, 0x2b, 0x89, 0x01, 0x33, + 0x2b, 0x81, 0xfa, 0xf7, 0xc7, 0xfd, 0x01, 0xa8, 0x00, 0x29, 0x31, 0xd1, + 0x01, 0x9c, 0x05, 0xf1, 0x18, 0x09, 0x4f, 0xf0, 0x01, 0x0a, 0x00, 0x2c, + 0x37, 0xd1, 0xff, 0xf7, 0xe9, 0xfe, 0xfa, 0xf7, 0xcd, 0xfd, 0x2b, 0x68, + 0x00, 0x2b, 0x7e, 0xd0, 0x5c, 0x69, 0x24, 0x1a, 0x24, 0xea, 0xe4, 0x74, + 0xfa, 0xf7, 0xb0, 0xfd, 0xd5, 0xf8, 0x30, 0x80, 0xef, 0xf3, 0x05, 0x83, + 0x00, 0x2b, 0x75, 0xd0, 0xb8, 0xf1, 0x00, 0x0f, 0x7d, 0xd1, 0xab, 0x7a, + 0x00, 0x2b, 0x00, 0xf0, 0x8a, 0x80, 0xfa, 0xf7, 0xb5, 0xfd, 0xab, 0x7a, + 0x00, 0x2b, 0x00, 0xf0, 0x82, 0x80, 0x00, 0x23, 0xab, 0x72, 0x02, 0xb0, + 0xbd, 0xe8, 0xf0, 0x47, 0xfa, 0xf7, 0x96, 0xbd, 0x03, 0xf1, 0x08, 0x01, + 0x9b, 0x68, 0xba, 0xe7, 0x8c, 0x68, 0x0b, 0x46, 0x00, 0x22, 0x9a, 0x60, + 0x1a, 0x46, 0xdb, 0x68, 0x00, 0x2b, 0xfa, 0xd1, 0x02, 0x60, 0x01, 0xf1, + 0x08, 0x00, 0x21, 0x46, 0xbe, 0xe7, 0x23, 0x6a, 0xd4, 0xf8, 0x08, 0x80, + 0x13, 0xb1, 0x04, 0xf1, 0x24, 0x00, 0x98, 0x47, 0xa2, 0x69, 0x00, 0x2a, + 0x0b, 0xdb, 0x63, 0x69, 0x13, 0x44, 0x63, 0x61, 0xff, 0xf7, 0xa4, 0xfe, + 0x21, 0x46, 0x02, 0x46, 0x28, 0x46, 0xfb, 0xf7, 0xcf, 0xfc, 0x44, 0x46, + 0xaf, 0xe7, 0xeb, 0x68, 0x73, 0xb1, 0xa3, 0x42, 0x0c, 0xd8, 0x2b, 0x6a, + 0xa3, 0x42, 0x09, 0xd3, 0xa3, 0x79, 0x2a, 0x69, 0x01, 0x33, 0xdb, 0xb2, + 0x13, 0xfa, 0x02, 0xf2, 0x14, 0xbf, 0xa3, 0x71, 0x84, 0xf8, 0x06, 0xa0, + 0xe3, 0x69, 0x13, 0xb1, 0x04, 0xf1, 0x24, 0x00, 0x98, 0x47, 0xeb, 0x68, + 0x23, 0xb1, 0xa3, 0x42, 0x02, 0xd8, 0x2b, 0x6a, 0xa3, 0x42, 0x01, 0xd2, + 0xa6, 0x71, 0xde, 0xe7, 0xfa, 0xf7, 0x62, 0xfd, 0x48, 0x46, 0xab, 0x69, + 0x83, 0xb1, 0x19, 0x68, 0x22, 0x68, 0x91, 0x42, 0x08, 0xd3, 0x0b, 0xd1, + 0xe3, 0x60, 0x03, 0x68, 0x9b, 0x68, 0xa3, 0x60, 0x04, 0x60, 0xfa, 0xf7, + 0x3f, 0xfd, 0xcc, 0xe7, 0x03, 0xf1, 0x08, 0x00, 0x9b, 0x68, 0xed, 0xe7, + 0xe6, 0x60, 0x03, 0x68, 0xf3, 0xe7, 0x4f, 0xf0, 0xff, 0x34, 0x81, 0xe7, + 0x03, 0xf0, 0x56, 0xf9, 0x02, 0x46, 0x00, 0x28, 0x84, 0xd1, 0x40, 0x46, + 0x01, 0x21, 0x23, 0x46, 0xbc, 0x46, 0x00, 0xdf, 0x81, 0xe7, 0x98, 0xf8, + 0x00, 0x30, 0xf3, 0x2b, 0x7f, 0xf4, 0x7d, 0xaf, 0x00, 0x2c, 0x7f, 0xf4, + 0x7a, 0xaf, 0x22, 0x46, 0x01, 0x21, 0x40, 0x46, 0x03, 0xf0, 0xbe, 0xfd, + 0x73, 0xe7, 0xfa, 0xf7, 0x19, 0xfd, 0xff, 0xf7, 0x45, 0xfe, 0x34, 0xe7, + 0x25, 0x77, 0x01, 0x08, 0x01, 0x4b, 0x58, 0x69, 0x70, 0x47, 0x00, 0xbf, + 0x1c, 0x01, 0x00, 0x24, 0x01, 0x23, 0x0a, 0x4a, 0x90, 0xf9, 0x20, 0x10, + 0x43, 0x70, 0x1c, 0x32, 0x93, 0x68, 0x10, 0xb5, 0x1b, 0xb1, 0x93, 0xf9, + 0x20, 0x40, 0x8c, 0x42, 0x05, 0xdc, 0xc0, 0xe9, 0x02, 0x32, 0x90, 0x60, + 0x03, 0xb1, 0xd8, 0x60, 0x10, 0xbd, 0x1a, 0x46, 0x9b, 0x68, 0xf1, 0xe7, + 0x1c, 0x01, 0x00, 0x24, 0x90, 0xf8, 0x22, 0x30, 0x82, 0x6b, 0x13, 0xf0, + 0x10, 0x0f, 0x0c, 0xbf, 0x60, 0x20, 0x20, 0x20, 0x10, 0x44, 0x70, 0x47, + 0x10, 0xb5, 0xc4, 0x69, 0x62, 0x1c, 0xd0, 0xe9, 0x04, 0x31, 0x0c, 0xd1, + 0x03, 0xb1, 0x59, 0x61, 0x42, 0x69, 0x1a, 0xb1, 0x13, 0x61, 0x00, 0x23, + 0x43, 0x61, 0x01, 0xe0, 0x07, 0x4a, 0x13, 0x63, 0x00, 0x23, 0xc3, 0x61, + 0x10, 0xbd, 0x1b, 0xb1, 0xda, 0x69, 0x59, 0x61, 0x22, 0x44, 0xda, 0x61, + 0x42, 0x69, 0x00, 0x2a, 0xee, 0xd1, 0x01, 0x4a, 0xd3, 0x62, 0xf1, 0xe7, + 0x1c, 0x01, 0x00, 0x24, 0xc2, 0x68, 0x2a, 0xb1, 0x83, 0x68, 0x93, 0x60, + 0x03, 0xb1, 0xda, 0x60, 0x00, 0x23, 0xc3, 0x60, 0x70, 0x47, 0x03, 0x78, + 0xf1, 0x2b, 0x00, 0xd0, 0x70, 0x47, 0xc0, 0x68, 0xf9, 0xe7, 0x83, 0x68, + 0x9a, 0x68, 0x82, 0x60, 0x02, 0xb1, 0xd0, 0x60, 0x00, 0x22, 0x18, 0x46, + 0xda, 0x60, 0x70, 0x47, 0x38, 0xb5, 0x1f, 0x4c, 0x23, 0x7a, 0x02, 0x2b, + 0x35, 0xd1, 0x63, 0x6a, 0x00, 0x2b, 0x34, 0xd0, 0x63, 0x69, 0x4a, 0x1c, + 0x58, 0x70, 0x16, 0xd1, 0x22, 0x6b, 0x00, 0x21, 0x72, 0xb9, 0x4f, 0xf0, + 0xff, 0x30, 0xc3, 0xe9, 0x04, 0x21, 0xd8, 0x61, 0x59, 0xb1, 0x0b, 0x61, + 0x15, 0x48, 0xff, 0xf7, 0xde, 0xff, 0x02, 0x23, 0x43, 0x70, 0xa0, 0x61, + 0x01, 0x20, 0x38, 0xbd, 0x11, 0x46, 0x12, 0x69, 0xec, 0xe7, 0x23, 0x63, + 0xf2, 0xe7, 0xe2, 0x6a, 0x00, 0x20, 0x12, 0xb1, 0xd5, 0x69, 0xa9, 0x42, + 0x0b, 0xd2, 0xd9, 0x61, 0xc3, 0xe9, 0x04, 0x20, 0x58, 0xb1, 0x03, 0x61, + 0x00, 0x2a, 0xe5, 0xd0, 0xd0, 0x69, 0x53, 0x61, 0x41, 0x1a, 0xd1, 0x61, + 0xe0, 0xe7, 0x10, 0x46, 0x49, 0x1b, 0x12, 0x69, 0xeb, 0xe7, 0xe3, 0x62, + 0xf2, 0xe7, 0x00, 0x20, 0xdf, 0xe7, 0x18, 0x46, 0xdd, 0xe7, 0x00, 0xbf, + 0x1c, 0x01, 0x00, 0x24, 0x38, 0x01, 0x00, 0x24, 0x91, 0xf9, 0x20, 0x20, + 0x83, 0x68, 0x10, 0xb5, 0x1b, 0xb1, 0x93, 0xf9, 0x20, 0x40, 0x94, 0x42, + 0x05, 0xda, 0xc1, 0xe9, 0x02, 0x30, 0x81, 0x60, 0x03, 0xb1, 0xd9, 0x60, + 0x10, 0xbd, 0x18, 0x46, 0x9b, 0x68, 0xf1, 0xe7, 0x01, 0x23, 0x01, 0x46, + 0x43, 0x70, 0x01, 0x48, 0xff, 0xf7, 0xe8, 0xbf, 0x38, 0x01, 0x00, 0x24, + 0x70, 0xb5, 0x12, 0x4d, 0x04, 0x46, 0x2e, 0x7a, 0x69, 0x69, 0x90, 0xb9, + 0x02, 0x2e, 0x0f, 0xd1, 0x6c, 0x6a, 0x6c, 0xb1, 0x94, 0xf9, 0x20, 0x20, + 0x91, 0xf9, 0x20, 0x30, 0x9a, 0x42, 0x07, 0xdd, 0x20, 0x46, 0xff, 0xf7, + 0x77, 0xff, 0x08, 0x46, 0xff, 0xf7, 0x32, 0xff, 0x66, 0x70, 0xac, 0x61, + 0x70, 0xbd, 0x02, 0x2e, 0x05, 0xd1, 0x90, 0xf9, 0x20, 0x20, 0x91, 0xf9, + 0x20, 0x30, 0x9a, 0x42, 0xf1, 0xdc, 0x20, 0x46, 0xbd, 0xe8, 0x70, 0x40, + 0xff, 0xf7, 0xd2, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0x38, 0xb5, 0x04, 0x46, + 0x15, 0x46, 0xff, 0xf7, 0x33, 0xff, 0x01, 0x60, 0x20, 0x46, 0xff, 0xf7, + 0x39, 0xff, 0x1d, 0xb1, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0xca, 0xbf, + 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0xbe, 0xbf, 0x10, 0xb5, 0x04, 0x46, + 0x80, 0x69, 0x18, 0xb1, 0x00, 0x22, 0x11, 0x46, 0xff, 0xf7, 0xe6, 0xff, + 0x63, 0x78, 0x23, 0x2b, 0x02, 0xbf, 0xa3, 0x68, 0x00, 0x22, 0x9a, 0x61, + 0x10, 0xbd, 0x10, 0xb5, 0x01, 0x46, 0x04, 0x46, 0x64, 0xb1, 0x23, 0x78, + 0xf1, 0x2b, 0x07, 0xd0, 0x08, 0x46, 0xff, 0xf7, 0x37, 0xff, 0x20, 0x46, + 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x8e, 0xbf, 0xe4, 0x68, 0xf1, 0xe7, + 0x10, 0xbd, 0x00, 0x00, 0x38, 0xb5, 0x25, 0x4d, 0xec, 0x6a, 0x00, 0x2c, + 0x45, 0xd0, 0xe3, 0x69, 0x01, 0x3b, 0xe3, 0x61, 0x00, 0x2b, 0x40, 0xd1, + 0x63, 0x78, 0x73, 0x2b, 0x06, 0xd0, 0x09, 0xd8, 0x53, 0x2b, 0x0b, 0xd0, + 0x03, 0xf0, 0xdf, 0x03, 0x43, 0x2b, 0x29, 0xd1, 0x20, 0x46, 0xff, 0xf7, + 0x20, 0xff, 0x25, 0xe0, 0x03, 0xf0, 0xef, 0x03, 0x83, 0x2b, 0xf6, 0xe7, + 0x20, 0x46, 0xff, 0xf7, 0x18, 0xff, 0xc3, 0x78, 0x9b, 0x07, 0x1b, 0xd5, + 0xc0, 0x68, 0x90, 0xf9, 0x21, 0x20, 0xc3, 0x6a, 0xd9, 0x78, 0x89, 0x07, + 0x09, 0xd5, 0x99, 0x68, 0x8c, 0x42, 0x08, 0xbf, 0xa1, 0x68, 0x21, 0xb1, + 0x91, 0xf9, 0x20, 0x10, 0x8a, 0x42, 0xb8, 0xbf, 0x0a, 0x46, 0x5b, 0x69, + 0x00, 0x2b, 0xef, 0xd1, 0x90, 0xf9, 0x20, 0x30, 0x93, 0x42, 0x03, 0xd0, + 0x80, 0xf8, 0x20, 0x20, 0xff, 0xf7, 0xaf, 0xff, 0x20, 0x46, 0xff, 0xf7, + 0xed, 0xfe, 0xff, 0xf7, 0x59, 0xff, 0x24, 0x69, 0x24, 0xb1, 0xe3, 0x69, + 0x00, 0x2b, 0xc1, 0xd0, 0x00, 0x23, 0x63, 0x61, 0xec, 0x62, 0x38, 0xbd, + 0x1c, 0x01, 0x00, 0x24, 0x10, 0xb5, 0x03, 0x46, 0x53, 0xe8, 0x00, 0x0f, + 0x08, 0x42, 0x03, 0xd1, 0xbf, 0xf3, 0x2f, 0x8f, 0x00, 0x20, 0x05, 0xe0, + 0x20, 0xea, 0x01, 0x02, 0x43, 0xe8, 0x00, 0x24, 0x04, 0xb1, 0xf1, 0xe7, + 0x10, 0xbd, 0x10, 0xb5, 0x03, 0x46, 0x53, 0xe8, 0x00, 0x0f, 0x00, 0xea, + 0x01, 0x02, 0x8a, 0x42, 0x03, 0xd0, 0xbf, 0xf3, 0x2f, 0x8f, 0x00, 0x20, + 0x05, 0xe0, 0x20, 0xea, 0x01, 0x02, 0x43, 0xe8, 0x00, 0x24, 0x04, 0xb1, + 0xef, 0xe7, 0x10, 0xbd, 0x10, 0xb5, 0x43, 0x78, 0x04, 0x46, 0x33, 0x2b, + 0x15, 0xd1, 0x90, 0xf8, 0x23, 0x30, 0x41, 0x6a, 0x03, 0xf0, 0x01, 0x02, + 0x9b, 0x07, 0x08, 0xd4, 0x28, 0x30, 0x1a, 0xb1, 0xff, 0xf7, 0xdd, 0xff, + 0x48, 0xb1, 0x0b, 0xe0, 0xff, 0xf7, 0xc8, 0xff, 0xfa, 0xe7, 0x80, 0x6a, + 0x01, 0xea, 0x00, 0x03, 0x12, 0xb1, 0x99, 0x42, 0xf4, 0xd0, 0x10, 0xbd, + 0x00, 0x2b, 0xfc, 0xd0, 0x01, 0x46, 0x00, 0x22, 0x20, 0x46, 0xbd, 0xe8, + 0x10, 0x40, 0xff, 0xf7, 0x35, 0xbf, 0xd0, 0xe8, 0x5f, 0x3f, 0x13, 0xb9, + 0xbf, 0xf3, 0x2f, 0x8f, 0x04, 0xe0, 0x5a, 0x1e, 0xc0, 0xe8, 0x51, 0x2f, + 0x01, 0xb1, 0xf4, 0xe7, 0x98, 0xb2, 0x70, 0x47, 0x10, 0xb5, 0xd0, 0xe8, + 0x5f, 0x3f, 0x5a, 0x1c, 0x91, 0x42, 0x00, 0xd8, 0x00, 0x22, 0xc0, 0xe8, + 0x54, 0x2f, 0x04, 0xb1, 0xf5, 0xe7, 0x98, 0xb2, 0x10, 0xbd, 0x10, 0xb5, + 0xd0, 0xe8, 0x5f, 0x3f, 0x99, 0x42, 0x02, 0xd8, 0xbf, 0xf3, 0x2f, 0x8f, + 0x04, 0xe0, 0x5a, 0x1c, 0xc0, 0xe8, 0x54, 0x2f, 0x04, 0xb1, 0xf3, 0xe7, + 0x98, 0xb2, 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, 0xb8, 0xb1, 0x03, 0x78, + 0xf6, 0x2b, 0x14, 0xd1, 0x83, 0x68, 0x3b, 0xb1, 0xff, 0xf7, 0x73, 0xfe, + 0x01, 0x22, 0x00, 0x21, 0xff, 0xf7, 0xfe, 0xfe, 0x00, 0x20, 0x10, 0xbd, + 0xc1, 0x89, 0x0c, 0x30, 0xff, 0xf7, 0xdd, 0xff, 0xe3, 0x89, 0x83, 0x42, + 0x8c, 0xbf, 0x00, 0x20, 0x6f, 0xf0, 0x02, 0x00, 0xf3, 0xe7, 0x6f, 0xf0, + 0x03, 0x00, 0xf0, 0xe7, 0x83, 0x68, 0x10, 0xb5, 0x04, 0x46, 0x63, 0xb1, + 0x0c, 0x30, 0xff, 0xf7, 0xb2, 0xff, 0x40, 0xb1, 0x20, 0x46, 0xff, 0xf7, + 0x54, 0xfe, 0x00, 0x22, 0xbd, 0xe8, 0x10, 0x40, 0x11, 0x46, 0xff, 0xf7, + 0xdd, 0xbe, 0x10, 0xbd, 0x28, 0x4b, 0x5a, 0x69, 0x70, 0xb5, 0x04, 0x46, + 0x00, 0x2a, 0x41, 0xd0, 0x00, 0x28, 0x42, 0xd0, 0x03, 0x78, 0xf5, 0x2b, + 0x3f, 0xd1, 0x03, 0x7e, 0x00, 0x2b, 0x3f, 0xd0, 0xc1, 0x68, 0x91, 0x42, + 0x3c, 0xd1, 0x01, 0x3b, 0xdb, 0xb2, 0x03, 0x76, 0x13, 0xbb, 0x43, 0x69, + 0x0b, 0xb1, 0x01, 0x69, 0x19, 0x61, 0x21, 0x69, 0xf1, 0xb1, 0x4b, 0x61, + 0x92, 0xf9, 0x21, 0x30, 0xd5, 0x6a, 0xdd, 0xb9, 0x82, 0xf8, 0x20, 0x30, + 0xa3, 0x68, 0x83, 0xb1, 0x20, 0x46, 0xff, 0xf7, 0x26, 0xfe, 0x06, 0x46, + 0x2a, 0x46, 0x29, 0x46, 0xff, 0xf7, 0xb0, 0xfe, 0xf3, 0x6a, 0xc4, 0xe9, + 0x03, 0x65, 0x63, 0x61, 0x03, 0xb1, 0x1c, 0x61, 0x01, 0x23, 0xf4, 0x62, + 0x23, 0x76, 0x00, 0x20, 0xff, 0xf7, 0x7c, 0xfe, 0x00, 0x20, 0x0f, 0xe0, + 0xd3, 0x62, 0xdf, 0xe7, 0xe9, 0x78, 0x89, 0x07, 0x06, 0xd5, 0xa9, 0x68, + 0x21, 0xb1, 0x91, 0xf9, 0x20, 0x10, 0x8b, 0x42, 0xb8, 0xbf, 0x0b, 0x46, + 0x6d, 0x69, 0xd6, 0xe7, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0xbd, 0x6f, 0xf0, + 0x03, 0x00, 0xfb, 0xe7, 0x6f, 0xf0, 0x02, 0x00, 0xf8, 0xe7, 0x00, 0xbf, + 0x1c, 0x01, 0x00, 0x24, 0x22, 0x4b, 0x70, 0xb5, 0x5d, 0x69, 0x04, 0x46, + 0x0e, 0x46, 0x00, 0x2d, 0x35, 0xd0, 0x00, 0x28, 0x36, 0xd0, 0x03, 0x78, + 0xf5, 0x2b, 0x33, 0xd1, 0x03, 0x7e, 0x53, 0xb9, 0xc0, 0xe9, 0x03, 0x53, + 0xeb, 0x6a, 0x43, 0x61, 0x03, 0xb1, 0x18, 0x61, 0x01, 0x23, 0xec, 0x62, + 0x00, 0x20, 0x23, 0x76, 0x70, 0xbd, 0xc2, 0x78, 0xd1, 0x07, 0x06, 0xd5, + 0xc1, 0x68, 0xa9, 0x42, 0x03, 0xd1, 0xff, 0x2b, 0x21, 0xd0, 0x01, 0x33, + 0xf2, 0xe7, 0xf6, 0xb1, 0x93, 0x07, 0x0a, 0xd5, 0xe0, 0x68, 0x95, 0xf9, + 0x20, 0x30, 0x90, 0xf9, 0x20, 0x20, 0x9a, 0x42, 0x03, 0xda, 0x80, 0xf8, + 0x20, 0x30, 0xff, 0xf7, 0x78, 0xfe, 0x31, 0x46, 0x53, 0x20, 0xff, 0xf7, + 0xcd, 0xfd, 0x18, 0xb1, 0x29, 0x46, 0x20, 0x46, 0xff, 0xf7, 0x0c, 0xfe, + 0x6f, 0xf0, 0x01, 0x00, 0xda, 0xe7, 0x4f, 0xf0, 0xff, 0x30, 0xd7, 0xe7, + 0x6f, 0xf0, 0x03, 0x00, 0xd4, 0xe7, 0x6f, 0xf0, 0x02, 0x00, 0xd1, 0xe7, + 0x1c, 0x01, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x41, 0x04, 0x46, 0x00, 0x26, + 0x01, 0x27, 0x0c, 0xb9, 0xbd, 0xe8, 0xf0, 0x81, 0xe3, 0x78, 0xd4, 0xf8, + 0x14, 0x80, 0x1b, 0x07, 0x12, 0xd5, 0xa3, 0x68, 0x26, 0x76, 0x7b, 0xb1, + 0x20, 0x46, 0xff, 0xf7, 0x9e, 0xfd, 0x00, 0x22, 0x05, 0x46, 0x11, 0x46, + 0xff, 0xf7, 0x28, 0xfe, 0xeb, 0x6a, 0xc4, 0xe9, 0x03, 0x56, 0x63, 0x61, + 0x03, 0xb1, 0x1c, 0x61, 0xec, 0x62, 0x27, 0x76, 0x44, 0x46, 0xe2, 0xe7, + 0x03, 0x46, 0x53, 0xe8, 0x00, 0x0f, 0x42, 0x1c, 0x43, 0xe8, 0x00, 0x21, + 0x01, 0xb1, 0xf8, 0xe7, 0x70, 0x47, 0x03, 0x6b, 0x30, 0xb4, 0xbb, 0xb1, + 0xcd, 0x78, 0x00, 0x24, 0xda, 0x78, 0xaa, 0x42, 0x0a, 0xd3, 0x1a, 0x46, + 0xc1, 0xe9, 0x01, 0x24, 0x62, 0xb1, 0x91, 0x60, 0x7c, 0xb1, 0x61, 0x60, + 0x28, 0x30, 0x30, 0xbc, 0xff, 0xf7, 0xe4, 0xbf, 0x5a, 0x68, 0x1c, 0x46, + 0x00, 0x2a, 0xf1, 0xd0, 0x13, 0x46, 0xeb, 0xe7, 0xc1, 0x62, 0xf1, 0xe7, + 0xc1, 0xe9, 0x01, 0x33, 0xc1, 0x62, 0x01, 0x63, 0xee, 0xe7, 0x30, 0xb5, + 0xf0, 0xb1, 0xc3, 0x68, 0x8b, 0x42, 0x1b, 0xd8, 0x03, 0x69, 0x8b, 0x42, + 0x18, 0xd9, 0x00, 0xf1, 0x14, 0x03, 0x1a, 0x68, 0x0a, 0x60, 0xbf, 0xf3, + 0x5f, 0x8f, 0x53, 0xe8, 0x00, 0x2f, 0x0c, 0x68, 0x94, 0x42, 0xf6, 0xd1, + 0x43, 0xe8, 0x00, 0x15, 0x05, 0xb1, 0xf2, 0xe7, 0x04, 0x30, 0x50, 0xe8, + 0x00, 0x3f, 0x5a, 0x1e, 0x40, 0xe8, 0x00, 0x21, 0x01, 0xb1, 0xf8, 0xe7, + 0x00, 0x20, 0x30, 0xbd, 0x6f, 0xf0, 0x03, 0x00, 0xfb, 0xe7, 0x10, 0xb5, + 0x90, 0xb1, 0x00, 0xf1, 0x14, 0x03, 0x53, 0xe8, 0x00, 0x4f, 0x14, 0xb9, + 0xbf, 0xf3, 0x2f, 0x8f, 0x04, 0xe0, 0x22, 0x68, 0x43, 0xe8, 0x00, 0x21, + 0x01, 0xb1, 0xf4, 0xe7, 0x14, 0xb1, 0x04, 0x30, 0xff, 0xf7, 0xa0, 0xff, + 0x20, 0x46, 0x10, 0xbd, 0x04, 0x46, 0xfb, 0xe7, 0x30, 0xb5, 0xc0, 0xb1, + 0x89, 0xb1, 0xc2, 0xb1, 0xcb, 0xb1, 0x00, 0x24, 0x01, 0x60, 0xc3, 0x60, + 0x43, 0x61, 0xc0, 0xe9, 0x01, 0x42, 0x02, 0xfb, 0x01, 0xf4, 0x1d, 0x19, + 0x05, 0x61, 0x18, 0x46, 0x01, 0x39, 0x04, 0xd1, 0xa2, 0x1a, 0x99, 0x50, + 0x01, 0x21, 0x08, 0x46, 0x30, 0xbd, 0x85, 0x18, 0x05, 0x60, 0x28, 0x46, + 0xf4, 0xe7, 0x01, 0x46, 0xf7, 0xe7, 0x11, 0x46, 0xf5, 0xe7, 0x19, 0x46, + 0xf3, 0xe7, 0x30, 0xb5, 0x80, 0xb1, 0xc9, 0xb1, 0xa1, 0xf1, 0x08, 0x05, + 0x00, 0xf1, 0x08, 0x04, 0x00, 0x22, 0xa5, 0x42, 0x09, 0xd1, 0x6b, 0x68, + 0x23, 0xf0, 0x03, 0x04, 0x43, 0x68, 0x1b, 0x1b, 0x43, 0x60, 0x3a, 0xb9, + 0x6a, 0x60, 0x01, 0x20, 0x30, 0xbd, 0x23, 0x68, 0x22, 0x46, 0x3b, 0xb1, + 0x1c, 0x46, 0xee, 0xe7, 0x51, 0xf8, 0x08, 0x3c, 0x13, 0x60, 0xf4, 0xe7, + 0x08, 0x46, 0xf3, 0xe7, 0x18, 0x46, 0xf1, 0xe7, 0x10, 0xb5, 0xc3, 0x78, + 0x04, 0x46, 0x13, 0xf0, 0x01, 0x03, 0x22, 0xd1, 0x03, 0x80, 0x83, 0x78, + 0x9a, 0x07, 0x08, 0xd5, 0x13, 0xf0, 0x10, 0x0f, 0x01, 0x6b, 0x13, 0x4b, + 0x0f, 0xd0, 0xd3, 0xf8, 0x84, 0x00, 0xff, 0xf7, 0x70, 0xff, 0xa3, 0x78, + 0xdb, 0x07, 0x1c, 0xd5, 0x0e, 0x4b, 0x21, 0x46, 0xd3, 0xf8, 0x88, 0x00, + 0x38, 0xb1, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0x64, 0xbf, 0x58, 0x6f, + 0xff, 0xf7, 0xbd, 0xff, 0xef, 0xe7, 0xd3, 0xf8, 0x80, 0x00, 0xbd, 0xe8, + 0x10, 0x40, 0xff, 0xf7, 0xb6, 0xbf, 0x04, 0x23, 0x43, 0x70, 0x00, 0x23, + 0xc3, 0x60, 0x03, 0x4b, 0x5a, 0x6b, 0x82, 0x60, 0x02, 0xb1, 0xd0, 0x60, + 0x5c, 0x63, 0x10, 0xbd, 0x1c, 0x01, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, + 0x00, 0x28, 0x3a, 0xd0, 0x03, 0x78, 0xf1, 0x2b, 0x37, 0xd1, 0x43, 0x78, + 0x03, 0xf0, 0x0f, 0x03, 0x02, 0x2b, 0x06, 0xd0, 0x03, 0x2b, 0x27, 0xd0, + 0x01, 0x2b, 0x22, 0xd0, 0x6f, 0xf0, 0x02, 0x00, 0x1e, 0xe0, 0x17, 0x4b, + 0x1a, 0x7a, 0x02, 0x2a, 0xf8, 0xd1, 0x5b, 0x6a, 0x00, 0x2b, 0xf5, 0xd0, + 0xe0, 0x6a, 0xff, 0xf7, 0xe5, 0xfe, 0x20, 0x46, 0xff, 0xf7, 0x34, 0xfd, + 0x61, 0x78, 0x02, 0x29, 0x17, 0xd1, 0x10, 0x48, 0xff, 0xf7, 0x8d, 0xfc, + 0x0d, 0x4b, 0x41, 0x70, 0x98, 0x61, 0xef, 0xf3, 0x09, 0x82, 0xa2, 0x63, + 0x00, 0x22, 0x5a, 0x61, 0x20, 0x46, 0xff, 0xf7, 0x99, 0xff, 0x00, 0x20, + 0x10, 0xbd, 0xff, 0xf7, 0x6f, 0xfc, 0xe3, 0xe7, 0xff, 0xf7, 0x6c, 0xfc, + 0xff, 0xf7, 0x4a, 0xfc, 0xde, 0xe7, 0x00, 0x20, 0xff, 0xf7, 0xdc, 0xfc, + 0xee, 0xe7, 0x6f, 0xf0, 0x03, 0x00, 0xef, 0xe7, 0x1c, 0x01, 0x00, 0x24, + 0x38, 0x01, 0x00, 0x24, 0x70, 0xb5, 0x0f, 0x4c, 0x26, 0x7a, 0x02, 0x2e, + 0x18, 0xd1, 0x63, 0x6a, 0xb3, 0xb1, 0x65, 0x69, 0xe8, 0x6a, 0xff, 0xf7, + 0xb1, 0xfe, 0x28, 0x46, 0xff, 0xf7, 0x00, 0xfd, 0x04, 0xf1, 0x1c, 0x00, + 0xff, 0xf7, 0x5b, 0xfc, 0x46, 0x70, 0xa0, 0x61, 0xef, 0xf3, 0x09, 0x83, + 0xab, 0x63, 0x00, 0x23, 0x28, 0x46, 0x63, 0x61, 0xbd, 0xe8, 0x70, 0x40, + 0xff, 0xf7, 0x66, 0xbf, 0x70, 0xbd, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, + 0x70, 0xb5, 0x05, 0x46, 0x38, 0xb3, 0x03, 0x78, 0xf6, 0x2b, 0x24, 0xd1, + 0x83, 0x68, 0x63, 0xb1, 0x28, 0x46, 0xff, 0xf7, 0x40, 0xfc, 0x00, 0x22, + 0x6f, 0xf0, 0x02, 0x01, 0xff, 0xf7, 0xca, 0xfc, 0xa8, 0x68, 0x00, 0x28, + 0xf4, 0xd1, 0xff, 0xf7, 0x9d, 0xfc, 0xab, 0x78, 0x00, 0x26, 0x13, 0xf0, + 0x01, 0x03, 0x2e, 0x70, 0x12, 0xd0, 0x0a, 0x4b, 0x29, 0x46, 0xd3, 0xf8, + 0x98, 0x40, 0x24, 0xb1, 0x20, 0x46, 0xff, 0xf7, 0xc2, 0xfe, 0x30, 0x46, + 0x70, 0xbd, 0xd3, 0xf8, 0x80, 0x00, 0xff, 0xf7, 0x18, 0xff, 0x20, 0x46, + 0xf8, 0xe7, 0x6f, 0xf0, 0x03, 0x00, 0xf5, 0xe7, 0x18, 0x46, 0xf3, 0xe7, + 0x1c, 0x01, 0x00, 0x24, 0x70, 0xb5, 0x04, 0x46, 0x00, 0x28, 0x49, 0xd0, + 0x03, 0x78, 0xf5, 0x2b, 0x46, 0xd1, 0x03, 0x7e, 0xbb, 0xb1, 0x63, 0x69, + 0xc0, 0x68, 0x0b, 0xb1, 0x22, 0x69, 0x1a, 0x61, 0x22, 0x69, 0x02, 0xb3, + 0x53, 0x61, 0x90, 0xf9, 0x21, 0x20, 0xc3, 0x6a, 0xeb, 0xb9, 0x90, 0xf9, + 0x20, 0x30, 0x93, 0x42, 0x03, 0xd0, 0x80, 0xf8, 0x20, 0x20, 0xff, 0xf7, + 0xac, 0xfc, 0xa0, 0x68, 0xf8, 0xb9, 0xff, 0xf7, 0x5f, 0xfc, 0xa0, 0x78, + 0x00, 0x26, 0x10, 0xf0, 0x01, 0x00, 0x26, 0x70, 0x08, 0xd0, 0x15, 0x4b, + 0x21, 0x46, 0xd3, 0xf8, 0x94, 0x50, 0xdd, 0xb1, 0x28, 0x46, 0xff, 0xf7, + 0x84, 0xfe, 0x30, 0x46, 0x70, 0xbd, 0xc3, 0x62, 0xdd, 0xe7, 0xd9, 0x78, + 0x89, 0x07, 0x06, 0xd5, 0x99, 0x68, 0x21, 0xb1, 0x91, 0xf9, 0x20, 0x10, + 0x8a, 0x42, 0xb8, 0xbf, 0x0a, 0x46, 0x5b, 0x69, 0xd4, 0xe7, 0x20, 0x46, + 0xff, 0xf7, 0xd7, 0xfb, 0x00, 0x22, 0x6f, 0xf0, 0x02, 0x01, 0xff, 0xf7, + 0x61, 0xfc, 0xd4, 0xe7, 0xd3, 0xf8, 0x80, 0x00, 0xff, 0xf7, 0xc3, 0xfe, + 0x28, 0x46, 0xe1, 0xe7, 0x6f, 0xf0, 0x03, 0x00, 0xde, 0xe7, 0x00, 0xbf, + 0x1c, 0x01, 0x00, 0x24, 0xf0, 0xb5, 0x68, 0xb3, 0x81, 0xb1, 0x0f, 0x31, + 0x00, 0xf1, 0x08, 0x06, 0x21, 0xf0, 0x07, 0x07, 0x33, 0x46, 0x36, 0x68, + 0x5c, 0x68, 0xf1, 0x1a, 0x24, 0xf0, 0x03, 0x04, 0x09, 0x1b, 0x8f, 0x42, + 0x04, 0xd9, 0x31, 0x68, 0x00, 0x29, 0xf3, 0xd1, 0x08, 0x46, 0xf0, 0xbd, + 0x45, 0x68, 0x3a, 0x43, 0x04, 0x68, 0x3d, 0x44, 0x45, 0x60, 0x20, 0x44, + 0x50, 0xf8, 0x04, 0x1c, 0x08, 0x38, 0x8d, 0x42, 0x88, 0xbf, 0x45, 0x60, + 0x58, 0x68, 0x18, 0xb9, 0x03, 0xf1, 0x08, 0x01, 0x5a, 0x60, 0xeb, 0xe7, + 0x20, 0xf0, 0x03, 0x00, 0x19, 0x18, 0x1e, 0x50, 0x4a, 0x60, 0x19, 0x60, + 0x08, 0x31, 0xe3, 0xe7, 0x01, 0x46, 0xe1, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, + 0x85, 0xb0, 0x81, 0x46, 0x02, 0x91, 0x20, 0xb9, 0x00, 0x24, 0x20, 0x46, + 0x05, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x00, 0x2a, 0x00, 0xf0, 0x86, 0x80, + 0x94, 0x68, 0xb4, 0xb1, 0xa0, 0x07, 0xf3, 0xd1, 0xd3, 0x68, 0x43, 0x2b, + 0xf0, 0xd9, 0x97, 0x69, 0xd2, 0xe9, 0x04, 0x65, 0x8e, 0xb1, 0x71, 0x07, + 0xea, 0xd1, 0x00, 0x2d, 0xe8, 0xd0, 0x77, 0xb9, 0x18, 0x27, 0x6b, 0x07, + 0xe4, 0xd1, 0xa5, 0xf1, 0x48, 0x01, 0x57, 0x4b, 0x99, 0x42, 0x0b, 0xd9, + 0xde, 0xe7, 0xd3, 0x68, 0x00, 0x2b, 0xea, 0xd0, 0xda, 0xe7, 0x00, 0x2f, + 0x64, 0xd0, 0x7b, 0x1e, 0x37, 0x2b, 0xd5, 0xd8, 0x00, 0x2d, 0xec, 0xd1, + 0xd2, 0xe9, 0x00, 0xa3, 0x01, 0x93, 0x00, 0x2c, 0x69, 0xd1, 0x4e, 0x4b, + 0xd3, 0xf8, 0x88, 0x00, 0x00, 0x28, 0x5d, 0xd0, 0xff, 0xf7, 0x13, 0xfe, + 0x04, 0x46, 0x00, 0x28, 0xc4, 0xd0, 0x4f, 0xf0, 0x01, 0x08, 0xa6, 0xb9, + 0xdf, 0xf8, 0x1c, 0xb1, 0x00, 0x2d, 0x71, 0xd1, 0xdb, 0xf8, 0x84, 0x00, + 0x00, 0x28, 0x57, 0xd0, 0xff, 0xf7, 0x03, 0xfe, 0x00, 0x28, 0x70, 0xd0, + 0x48, 0xf0, 0x10, 0x08, 0x06, 0x46, 0x4f, 0xf4, 0x80, 0x55, 0x48, 0xf0, + 0x02, 0x08, 0x00, 0x2c, 0xac, 0xd0, 0x40, 0xf2, 0xf1, 0x13, 0xfd, 0x22, + 0x65, 0x63, 0x40, 0x3d, 0x23, 0x80, 0x7f, 0xb2, 0x01, 0x9b, 0x35, 0x44, + 0x62, 0x84, 0xe3, 0x70, 0x00, 0x23, 0x38, 0x4a, 0x84, 0xf8, 0x02, 0x80, + 0xc4, 0xf8, 0x04, 0xa0, 0x84, 0xf8, 0x20, 0x70, 0x84, 0xf8, 0x21, 0x70, + 0xc4, 0xe9, 0x0e, 0x59, 0xc4, 0xe9, 0x02, 0x33, 0xc4, 0xe9, 0x04, 0x33, + 0xc4, 0xe9, 0x06, 0x33, 0xc4, 0xe9, 0x09, 0x33, 0xc4, 0xe9, 0x0b, 0x36, + 0x32, 0x60, 0xa2, 0x6b, 0x11, 0x46, 0x02, 0xf1, 0x34, 0x00, 0x42, 0xf8, + 0x04, 0x3b, 0x82, 0x42, 0xfb, 0xd1, 0x2a, 0x4b, 0x20, 0x46, 0x2a, 0x4a, + 0xc1, 0xe9, 0x0d, 0x39, 0x4f, 0xf0, 0x80, 0x73, 0xcb, 0x63, 0x02, 0x9b, + 0x0b, 0x62, 0x23, 0x4b, 0x1a, 0x66, 0xff, 0xf7, 0x69, 0xfb, 0x74, 0xe7, + 0x18, 0x27, 0x9b, 0xe7, 0x92, 0x46, 0x16, 0x46, 0x18, 0x27, 0x15, 0x46, + 0x01, 0x92, 0x9c, 0xe7, 0x01, 0x22, 0x44, 0x21, 0xd3, 0xf8, 0x80, 0x00, + 0xff, 0xf7, 0x2e, 0xff, 0x9c, 0xe7, 0x4f, 0xf0, 0x00, 0x08, 0x9e, 0xe7, + 0x2a, 0x46, 0x4f, 0xf4, 0x80, 0x55, 0x4f, 0xf4, 0x80, 0x51, 0xdb, 0xf8, + 0x74, 0x00, 0xff, 0xf7, 0x21, 0xff, 0xf8, 0xb9, 0xb8, 0xf1, 0x00, 0x0f, + 0x1e, 0xd0, 0xdb, 0xf8, 0x88, 0x20, 0x7a, 0xb1, 0x21, 0x46, 0x10, 0x46, + 0x00, 0x24, 0xff, 0xf7, 0x74, 0xfd, 0x9a, 0xe7, 0x32, 0x46, 0x29, 0x46, + 0xdb, 0xf8, 0x74, 0x00, 0xff, 0xf7, 0x0e, 0xff, 0xeb, 0xe7, 0x4f, 0xf4, + 0x80, 0x55, 0xe9, 0xe7, 0x21, 0x46, 0xdb, 0xf8, 0x80, 0x00, 0x03, 0x92, + 0xff, 0xf7, 0xbf, 0xfd, 0x03, 0x9a, 0x14, 0x46, 0x16, 0x46, 0x86, 0xe7, + 0x06, 0x46, 0x84, 0xe7, 0x44, 0x46, 0x82, 0xe7, 0xb7, 0xff, 0xff, 0x7f, + 0x1c, 0x01, 0x00, 0x24, 0xa5, 0x2e, 0x5a, 0xe2, 0x05, 0x6e, 0x01, 0x08, + 0x95, 0x3e, 0x01, 0x08, 0x70, 0xb5, 0x4f, 0xf6, 0xfe, 0x73, 0x14, 0x46, + 0x42, 0x1e, 0x05, 0x46, 0x0e, 0x46, 0x9a, 0x42, 0x01, 0xd9, 0x00, 0x20, + 0x70, 0xbd, 0x88, 0x42, 0xfb, 0xd3, 0xcc, 0xb1, 0xa0, 0x68, 0x22, 0x68, + 0x90, 0xb1, 0x10, 0xf0, 0x03, 0x03, 0xf4, 0xd1, 0xe1, 0x68, 0x0f, 0x29, + 0xf1, 0xd9, 0x14, 0x46, 0xf6, 0x22, 0x83, 0x70, 0x00, 0x23, 0x44, 0x60, + 0x02, 0x70, 0x83, 0x60, 0x0d, 0x4a, 0x0e, 0x4b, 0x86, 0x81, 0xc5, 0x81, + 0x9a, 0x66, 0xe5, 0xe7, 0xe3, 0x68, 0x00, 0x2b, 0xe1, 0xd1, 0x14, 0x46, + 0x09, 0x4b, 0xd3, 0xf8, 0x98, 0x00, 0x28, 0xb1, 0xff, 0xf7, 0x47, 0xfd, + 0x00, 0x28, 0xd8, 0xd0, 0x01, 0x23, 0xe5, 0xe7, 0x01, 0x22, 0x10, 0x21, + 0xd3, 0xf8, 0x80, 0x00, 0xff, 0xf7, 0xba, 0xfe, 0xf4, 0xe7, 0x00, 0xbf, + 0x6d, 0x3f, 0x01, 0x08, 0x1c, 0x01, 0x00, 0x24, 0x38, 0xb5, 0x03, 0x46, + 0x60, 0xb3, 0xd0, 0xe9, 0x00, 0x45, 0x80, 0x68, 0xa0, 0xb1, 0x10, 0xf0, + 0x03, 0x02, 0x01, 0xd0, 0x00, 0x20, 0x38, 0xbd, 0xdb, 0x68, 0x1b, 0x2b, + 0xfa, 0xd9, 0x13, 0x46, 0xf5, 0x22, 0x83, 0x70, 0x00, 0x23, 0xc5, 0x70, + 0x02, 0x70, 0x44, 0x60, 0x03, 0x76, 0xc0, 0xe9, 0x02, 0x33, 0xc0, 0xe9, + 0x04, 0x33, 0xee, 0xe7, 0xdb, 0x68, 0x00, 0x2b, 0xea, 0xd1, 0x0a, 0x4b, + 0xd3, 0xf8, 0x94, 0x00, 0x30, 0xb9, 0x01, 0x22, 0x1c, 0x21, 0xd3, 0xf8, + 0x80, 0x00, 0xff, 0xf7, 0x8b, 0xfe, 0x01, 0xe0, 0xff, 0xf7, 0x0b, 0xfd, + 0x00, 0x28, 0xdb, 0xd0, 0x01, 0x23, 0xdf, 0xe7, 0x04, 0x46, 0x05, 0x46, + 0xeb, 0xe7, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0x10, 0xb5, 0x98, 0xb1, + 0x40, 0xea, 0x01, 0x03, 0x13, 0xf0, 0x07, 0x03, 0x0e, 0xd1, 0x17, 0x29, + 0x0a, 0xd9, 0x01, 0x60, 0x08, 0x39, 0x10, 0x22, 0x0c, 0x18, 0x42, 0x60, + 0x84, 0x60, 0x0b, 0x50, 0x81, 0x68, 0x4a, 0x60, 0xc3, 0x60, 0x01, 0x23, + 0x18, 0x46, 0x10, 0xbd, 0x00, 0x23, 0xfb, 0xe7, 0x01, 0x4b, 0xd8, 0x68, + 0x70, 0x47, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0x38, 0xb5, 0x1c, 0x4c, + 0x25, 0x7a, 0x01, 0x2d, 0x28, 0xd0, 0x7d, 0xbb, 0x1a, 0x4b, 0x29, 0x46, + 0x28, 0x46, 0xe3, 0x65, 0x10, 0x23, 0xa4, 0xf8, 0x54, 0x30, 0x05, 0x23, + 0x23, 0x64, 0xff, 0xf7, 0xd1, 0xff, 0x08, 0xb1, 0xc4, 0xf8, 0x80, 0x50, + 0x00, 0x21, 0x08, 0x46, 0xff, 0xf7, 0xca, 0xff, 0xb0, 0xb9, 0xd4, 0xf8, + 0x80, 0x30, 0x00, 0x21, 0x63, 0x67, 0x08, 0x46, 0xff, 0xf7, 0xc2, 0xff, + 0x80, 0xb9, 0xd4, 0xf8, 0x80, 0x30, 0x00, 0x21, 0xa3, 0x67, 0x08, 0x46, + 0xff, 0xf7, 0xba, 0xff, 0x50, 0xb9, 0xd4, 0xf8, 0x80, 0x30, 0xe3, 0x67, + 0x01, 0x23, 0x23, 0x72, 0x00, 0x20, 0x38, 0xbd, 0x00, 0x23, 0xe8, 0xe7, + 0x00, 0x23, 0xee, 0xe7, 0x00, 0x23, 0xf4, 0xe7, 0x4f, 0xf0, 0xff, 0x30, + 0xf5, 0xe7, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0xf0, 0x43, 0x02, 0x24, + 0x06, 0x4b, 0xda, 0x6a, 0x3a, 0xb1, 0xd0, 0x69, 0x5b, 0x6c, 0x1b, 0xb1, + 0x1b, 0x69, 0x98, 0x42, 0x28, 0xbf, 0x18, 0x46, 0x70, 0x47, 0x4f, 0xf0, + 0xff, 0x30, 0xf5, 0xe7, 0x1c, 0x01, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, + 0xd0, 0xb1, 0x02, 0x68, 0x80, 0x68, 0x98, 0xb1, 0x10, 0xf0, 0x03, 0x03, + 0x01, 0xd0, 0x00, 0x20, 0x10, 0xbd, 0xe1, 0x68, 0x0f, 0x29, 0xfa, 0xd9, + 0x14, 0x46, 0xf3, 0x22, 0x83, 0x70, 0x00, 0x23, 0x44, 0x60, 0x02, 0x70, + 0x0d, 0x4a, 0xc0, 0xe9, 0x02, 0x33, 0x0d, 0x4b, 0x5a, 0x66, 0xef, 0xe7, + 0xe3, 0x68, 0x00, 0x2b, 0xeb, 0xd1, 0x14, 0x46, 0x09, 0x4b, 0xd3, 0xf8, + 0x90, 0x00, 0x28, 0xb1, 0xff, 0xf7, 0x71, 0xfc, 0x00, 0x28, 0xe2, 0xd0, + 0x01, 0x23, 0xe6, 0xe7, 0x01, 0x22, 0x10, 0x21, 0xd3, 0xf8, 0x80, 0x00, + 0xff, 0xf7, 0xe4, 0xfd, 0xf4, 0xe7, 0x00, 0xbf, 0xdf, 0x77, 0x01, 0x08, + 0x1c, 0x01, 0x00, 0x24, 0x01, 0x46, 0x08, 0xb5, 0x38, 0xb1, 0x13, 0x20, + 0xff, 0xf7, 0xa6, 0xf9, 0x80, 0xf0, 0x01, 0x00, 0xc0, 0xb2, 0x40, 0x42, + 0x08, 0xbd, 0x6f, 0xf0, 0x03, 0x00, 0xfb, 0xe7, 0x00, 0x48, 0x70, 0x47, + 0x14, 0xe2, 0x01, 0x08, 0xd0, 0xe9, 0x09, 0x31, 0xc2, 0x6a, 0x00, 0x6a, + 0x42, 0x43, 0x01, 0xfb, 0x03, 0x23, 0xa0, 0xfb, 0x01, 0x01, 0x19, 0x44, + 0x70, 0x47, 0xd0, 0xe9, 0x06, 0x01, 0x70, 0x47, 0xd0, 0xe9, 0x04, 0x01, + 0x70, 0x47, 0xd0, 0xe9, 0x02, 0x01, 0x70, 0x47, 0x01, 0x68, 0x2d, 0xe9, + 0xf0, 0x47, 0x17, 0x46, 0x98, 0x46, 0x09, 0x6b, 0x06, 0x46, 0xdd, 0xe9, + 0x08, 0x9a, 0x88, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x38, 0x46, 0x41, 0x46, + 0x08, 0xf0, 0x7a, 0xfc, 0x13, 0x43, 0x02, 0xd0, 0x00, 0x20, 0xbd, 0xe8, + 0xf0, 0x87, 0x17, 0xeb, 0x09, 0x04, 0x33, 0x68, 0x30, 0x46, 0x48, 0xeb, + 0x0a, 0x05, 0x14, 0xf1, 0xff, 0x32, 0x19, 0x6b, 0x45, 0xf1, 0xff, 0x33, + 0x88, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x20, 0x46, 0x29, 0x46, 0x08, 0xf0, + 0x63, 0xfc, 0x13, 0x43, 0xe8, 0xd1, 0x33, 0x68, 0x30, 0x46, 0x9b, 0x6b, + 0x98, 0x47, 0xa9, 0x42, 0x08, 0xbf, 0xa0, 0x42, 0x2c, 0xbf, 0x01, 0x20, + 0x00, 0x20, 0xde, 0xe7, 0x2d, 0xe9, 0xf0, 0x47, 0x1e, 0x46, 0x03, 0x68, + 0x15, 0x46, 0x04, 0x46, 0x9b, 0x6a, 0xdd, 0xe9, 0x08, 0x7a, 0x98, 0x47, + 0x02, 0x46, 0x0b, 0x46, 0x28, 0x46, 0x31, 0x46, 0x08, 0xf0, 0x46, 0xfc, + 0x13, 0x43, 0x02, 0xd0, 0x00, 0x20, 0xbd, 0xe8, 0xf0, 0x87, 0x23, 0x68, + 0x20, 0x46, 0x9b, 0x6a, 0x98, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x38, 0x46, + 0x51, 0x46, 0x08, 0xf0, 0x37, 0xfc, 0x13, 0x43, 0xf0, 0xd1, 0x15, 0xeb, + 0x07, 0x08, 0x23, 0x68, 0x20, 0x46, 0x46, 0xeb, 0x0a, 0x09, 0x9b, 0x6b, + 0x98, 0x47, 0x49, 0x45, 0x08, 0xbf, 0x40, 0x45, 0x2c, 0xbf, 0x01, 0x20, + 0x00, 0x20, 0xe2, 0xe7, 0x2d, 0xe9, 0xf0, 0x47, 0x1e, 0x46, 0x03, 0x68, + 0x15, 0x46, 0x04, 0x46, 0x5b, 0x6a, 0xdd, 0xe9, 0x08, 0x7a, 0x98, 0x47, + 0x02, 0x46, 0x0b, 0x46, 0x28, 0x46, 0x31, 0x46, 0x08, 0xf0, 0x16, 0xfc, + 0x13, 0x43, 0x02, 0xd0, 0x00, 0x20, 0xbd, 0xe8, 0xf0, 0x87, 0x23, 0x68, + 0x20, 0x46, 0x5b, 0x6a, 0x98, 0x47, 0x02, 0x46, 0x0b, 0x46, 0x38, 0x46, + 0x51, 0x46, 0x08, 0xf0, 0x07, 0xfc, 0x13, 0x43, 0xf0, 0xd1, 0x15, 0xeb, + 0x07, 0x08, 0x23, 0x68, 0x20, 0x46, 0x46, 0xeb, 0x0a, 0x09, 0x9b, 0x6b, + 0x98, 0x47, 0x49, 0x45, 0x08, 0xbf, 0x40, 0x45, 0x2c, 0xbf, 0x01, 0x20, + 0x00, 0x20, 0xe2, 0xe7, 0x70, 0x47, 0x00, 0x00, 0x00, 0xf0, 0x7b, 0x43, + 0xb3, 0xf1, 0x00, 0x5f, 0x0e, 0xd0, 0x00, 0xf0, 0x77, 0x43, 0xb3, 0xf1, + 0x40, 0x5f, 0x09, 0xd0, 0x00, 0xf0, 0x7f, 0x40, 0xb0, 0xf1, 0x80, 0x5f, + 0x14, 0xbf, 0x4f, 0xf0, 0xff, 0x30, 0x4f, 0xf0, 0x01, 0x60, 0x70, 0x47, + 0x00, 0x48, 0x70, 0x47, 0x00, 0x00, 0x04, 0x08, 0xbf, 0xf3, 0x4f, 0x8f, + 0x05, 0x49, 0x06, 0x4b, 0xca, 0x68, 0x02, 0xf4, 0xe0, 0x62, 0x13, 0x43, + 0xcb, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, 0x00, 0xbf, 0xfd, 0xe7, 0x00, 0xbf, + 0x00, 0xed, 0x00, 0xe0, 0x04, 0x00, 0xfa, 0x05, 0x03, 0x68, 0x18, 0x47, + 0x00, 0x48, 0x70, 0x47, 0x1b, 0xe2, 0x01, 0x08, 0xd0, 0xe9, 0x04, 0x01, + 0x70, 0x47, 0xd0, 0xe9, 0x0a, 0x01, 0x70, 0x47, 0xd0, 0xe9, 0x0a, 0x01, + 0x70, 0x47, 0xd0, 0xe9, 0x08, 0x01, 0x70, 0x47, 0xd0, 0xe9, 0x06, 0x01, + 0x70, 0x47, 0x30, 0xb5, 0x03, 0x99, 0x54, 0x18, 0x04, 0x9a, 0x43, 0xeb, + 0x02, 0x05, 0xd0, 0xe9, 0x04, 0x23, 0xab, 0x42, 0x08, 0xbf, 0xa2, 0x42, + 0x2c, 0xbf, 0x01, 0x20, 0x00, 0x20, 0x30, 0xbd, 0x00, 0x20, 0x70, 0x47, + 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0xd0, 0xe9, 0x00, 0x30, 0x18, 0x47, + 0xd0, 0xe9, 0x01, 0x32, 0x01, 0x68, 0x10, 0xb4, 0x01, 0xeb, 0x62, 0x00, + 0x54, 0x10, 0xd2, 0x07, 0x48, 0xbf, 0x0a, 0x59, 0x5d, 0xf8, 0x04, 0x4b, + 0x48, 0xbf, 0xd3, 0x58, 0x18, 0x47, 0x70, 0x47, 0x00, 0x20, 0x50, 0x70, + 0x90, 0x70, 0xd0, 0x70, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xf1, 0x20, 0x4f, + 0x73, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0x0d, 0xd3, 0x11, 0x4b, 0x18, 0x68, + 0x38, 0xb1, 0x06, 0x68, 0x00, 0x23, 0xcd, 0xe9, 0x00, 0x23, 0x04, 0xf1, + 0xc0, 0x42, 0x76, 0x69, 0xb0, 0x47, 0x28, 0x46, 0x02, 0xb0, 0x70, 0xbd, + 0xb0, 0xf1, 0x10, 0x4f, 0x08, 0xd2, 0x4b, 0x1e, 0x02, 0x44, 0x94, 0x42, + 0xf5, 0xd0, 0x14, 0xf8, 0x01, 0x1b, 0x03, 0xf8, 0x01, 0x1f, 0xf8, 0xe7, + 0x05, 0x4b, 0x18, 0x68, 0x00, 0x23, 0x06, 0x68, 0xcd, 0xe9, 0x00, 0x23, + 0x04, 0xf1, 0xe0, 0x42, 0x76, 0x69, 0xe5, 0xe7, 0x0c, 0x0b, 0x02, 0x24, + 0xa4, 0x0b, 0x02, 0x24, 0x4f, 0xf0, 0xff, 0x30, 0x70, 0x47, 0x03, 0x68, + 0xdb, 0x6a, 0x18, 0x47, 0x30, 0xb5, 0xa1, 0xf1, 0x10, 0x04, 0x00, 0x25, + 0x00, 0xf0, 0x0f, 0x02, 0xcd, 0x73, 0x02, 0x39, 0x00, 0x09, 0xd3, 0xb2, + 0x09, 0x2a, 0xcc, 0xbf, 0x37, 0x33, 0x30, 0x33, 0x0b, 0x74, 0x8c, 0x42, + 0xf2, 0xd1, 0x30, 0xbd, 0x32, 0x23, 0x10, 0xb5, 0x0a, 0x4c, 0x0b, 0x80, + 0x0a, 0x4b, 0xa1, 0x1c, 0x18, 0x68, 0xff, 0xf7, 0xe5, 0xff, 0x09, 0x4b, + 0x04, 0xf1, 0x12, 0x01, 0x18, 0x68, 0xff, 0xf7, 0xdf, 0xff, 0x07, 0x4b, + 0x04, 0xf1, 0x22, 0x01, 0x18, 0x68, 0xff, 0xf7, 0xd9, 0xff, 0x20, 0x46, 0x10, 0xbd, 0x00, 0xbf, 0x58, 0x02, 0x00, 0x24, 0x00, 0xe8, 0xf1, 0x1f, 0x04, 0xe8, 0xf1, 0x1f, 0x08, 0xe8, 0xf1, 0x1f, 0x04, 0x23, 0x01, 0x48, 0x0b, 0x80, 0x70, 0x47, 0x54, 0x02, 0x00, 0x24, 0x12, 0x23, 0x01, 0x48, @@ -7348,39 +7089,39 @@ const unsigned char mcuboot_bin[] = { 0x4b, 0x70, 0x02, 0x23, 0x10, 0xf8, 0x01, 0x5f, 0x05, 0xb9, 0x30, 0xbd, 0x5a, 0x1c, 0xcd, 0x54, 0x02, 0x33, 0xd2, 0xb2, 0xdb, 0xb2, 0x8c, 0x54, 0xf4, 0xe7, 0x00, 0x00, 0x0a, 0x46, 0x03, 0x49, 0x03, 0x48, 0x08, 0xb5, - 0xff, 0xf7, 0xde, 0xff, 0x08, 0x46, 0x08, 0xbd, 0xe8, 0x89, 0x00, 0x24, - 0xbe, 0xe7, 0x01, 0x08, 0x0a, 0x46, 0x03, 0x49, 0x03, 0x48, 0x08, 0xb5, - 0xff, 0xf7, 0xd2, 0xff, 0x08, 0x46, 0x08, 0xbd, 0xe8, 0x89, 0x00, 0x24, - 0xcc, 0xe7, 0x01, 0x08, 0x0a, 0x46, 0x03, 0x49, 0x03, 0x48, 0x08, 0xb5, - 0xff, 0xf7, 0xc6, 0xff, 0x08, 0x46, 0x08, 0xbd, 0xe8, 0x89, 0x00, 0x24, - 0xd7, 0xe7, 0x01, 0x08, 0x0a, 0x46, 0x03, 0x49, 0x03, 0x48, 0x08, 0xb5, - 0xff, 0xf7, 0xba, 0xff, 0x08, 0x46, 0x08, 0xbd, 0xe8, 0x89, 0x00, 0x24, - 0xe2, 0xe7, 0x01, 0x08, 0x08, 0xb5, 0xd0, 0xf8, 0xb4, 0x32, 0x5b, 0x68, + 0xff, 0xf7, 0xde, 0xff, 0x08, 0x46, 0x08, 0xbd, 0x38, 0x2b, 0x02, 0x24, + 0x22, 0xe2, 0x01, 0x08, 0x0a, 0x46, 0x03, 0x49, 0x03, 0x48, 0x08, 0xb5, + 0xff, 0xf7, 0xd2, 0xff, 0x08, 0x46, 0x08, 0xbd, 0x38, 0x2b, 0x02, 0x24, + 0x30, 0xe2, 0x01, 0x08, 0x0a, 0x46, 0x03, 0x49, 0x03, 0x48, 0x08, 0xb5, + 0xff, 0xf7, 0xc6, 0xff, 0x08, 0x46, 0x08, 0xbd, 0x38, 0x2b, 0x02, 0x24, + 0x3b, 0xe2, 0x01, 0x08, 0x0a, 0x46, 0x03, 0x49, 0x03, 0x48, 0x08, 0xb5, + 0xff, 0xf7, 0xba, 0xff, 0x08, 0x46, 0x08, 0xbd, 0x38, 0x2b, 0x02, 0x24, + 0x46, 0xe2, 0x01, 0x08, 0x08, 0xb5, 0xd0, 0xf8, 0xb4, 0x32, 0x5b, 0x68, 0x98, 0x47, 0x00, 0x20, 0x08, 0xbd, 0x08, 0xb5, 0xd0, 0xf8, 0xb4, 0x32, 0x0b, 0xb9, 0x02, 0x20, 0x08, 0xbd, 0x1b, 0x68, 0x98, 0x47, 0x00, 0x28, 0xfa, 0xd0, 0xf8, 0xe7, 0xd0, 0xe9, 0x00, 0x30, 0x18, 0x47, 0x00, 0x00, 0x09, 0x29, 0x08, 0xb5, 0x0a, 0xd8, 0xd0, 0xf8, 0xbc, 0x32, 0x06, 0x39, 0x53, 0xf8, 0x21, 0x00, 0x10, 0xb1, 0x03, 0x49, 0xff, 0xf7, 0x92, 0xff, - 0x01, 0x48, 0x00, 0xe0, 0x00, 0x20, 0x08, 0xbd, 0xf0, 0x8a, 0x00, 0x24, + 0x01, 0x48, 0x00, 0xe0, 0x00, 0x20, 0x08, 0xbd, 0x44, 0x2c, 0x02, 0x24, 0x0a, 0x23, 0x03, 0x80, 0x00, 0x48, 0x70, 0x47, 0x04, 0x03, 0x00, 0x24, 0x00, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x78, 0x23, 0x03, 0x80, 0x00, 0x48, 0x70, 0x47, 0x8c, 0x02, 0x00, 0x24, 0x38, 0xb5, 0x1e, 0x4c, 0x05, 0x46, 0x23, 0x7a, 0x04, 0x2b, 0x35, 0xd1, - 0xff, 0xf7, 0xe6, 0xfd, 0xe2, 0x6a, 0xa8, 0x42, 0x03, 0x46, 0x94, 0xbf, + 0xff, 0xf7, 0x8e, 0xfd, 0xe2, 0x6a, 0xa8, 0x42, 0x03, 0x46, 0x94, 0xbf, 0x00, 0xf1, 0xff, 0x33, 0x2b, 0x46, 0x12, 0xb1, 0xd0, 0x69, 0xc0, 0x1a, 0xd0, 0x61, 0x62, 0x6c, 0x12, 0xb1, 0x10, 0x69, 0xc0, 0x1a, 0x10, 0x61, 0xe0, 0x68, 0x03, 0x44, 0x05, 0x44, 0xe3, 0x60, 0xe3, 0x68, 0xab, 0x42, - 0x13, 0xd1, 0x02, 0x23, 0x00, 0x20, 0x23, 0x72, 0xff, 0xf7, 0x18, 0xf8, + 0x13, 0xd1, 0x02, 0x23, 0x00, 0x20, 0x23, 0x72, 0xfe, 0xf7, 0xc0, 0xff, 0x00, 0x23, 0x63, 0x72, 0xbf, 0xf3, 0x4f, 0x8f, 0xa2, 0x7a, 0x22, 0xb1, 0xa3, 0x72, 0x4f, 0xf0, 0x80, 0x52, 0x09, 0x4b, 0x5a, 0x60, 0xbd, 0xe8, - 0x38, 0x40, 0xfe, 0xf7, 0x75, 0xbd, 0x01, 0x33, 0xe3, 0x60, 0xff, 0xf7, - 0x61, 0xf8, 0x23, 0x6d, 0x00, 0x2b, 0xe1, 0xd0, 0x98, 0x47, 0xdf, 0xe7, + 0x38, 0x40, 0xfe, 0xf7, 0x1d, 0xbd, 0x01, 0x33, 0xe3, 0x60, 0xff, 0xf7, + 0x09, 0xf8, 0x23, 0x6d, 0x00, 0x2b, 0xe1, 0xd0, 0x98, 0x47, 0xdf, 0xe7, 0x38, 0xbd, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0x00, 0xed, 0x00, 0xe0, 0x38, 0xb5, 0x0f, 0x4c, 0x05, 0x46, 0xb4, 0xf8, 0x54, 0x10, 0x04, 0xf1, - 0x56, 0x00, 0xff, 0xf7, 0xfe, 0xf8, 0x81, 0x42, 0x03, 0xd8, 0x02, 0x21, - 0x0a, 0x48, 0xec, 0xf7, 0xe3, 0xff, 0x04, 0xf1, 0x58, 0x00, 0xff, 0xf7, - 0xe7, 0xf8, 0xe3, 0x6d, 0x43, 0xf8, 0x20, 0x50, 0x63, 0x7a, 0x23, 0xb9, + 0x56, 0x00, 0xff, 0xf7, 0xa6, 0xf8, 0x81, 0x42, 0x03, 0xd8, 0x02, 0x21, + 0x0a, 0x48, 0xed, 0xf7, 0xff, 0xf8, 0x04, 0xf1, 0x58, 0x00, 0xff, 0xf7, + 0x8f, 0xf8, 0xe3, 0x6d, 0x43, 0xf8, 0x20, 0x50, 0x63, 0x7a, 0x23, 0xb9, 0x05, 0x4b, 0x4f, 0xf0, 0x80, 0x52, 0x5a, 0x60, 0x38, 0xbd, 0x01, 0x23, 0xa3, 0x72, 0xfb, 0xe7, 0x1c, 0x01, 0x00, 0x24, 0x26, 0x01, 0x02, 0x80, 0x00, 0xed, 0x00, 0xe0, 0xf8, 0xb5, 0x9c, 0x46, 0x0d, 0x46, 0x17, 0x46, @@ -7389,2606 +7130,2832 @@ const unsigned char mcuboot_bin[] = { 0x11, 0xb9, 0xbf, 0xf3, 0x2f, 0x8f, 0x04, 0xe0, 0x48, 0x1e, 0x42, 0xe8, 0x00, 0x06, 0x06, 0xb1, 0xf4, 0xe7, 0x11, 0xb1, 0xe6, 0x6a, 0x01, 0x22, 0x9e, 0xb9, 0xbc, 0xf1, 0x00, 0x0f, 0x5c, 0xd0, 0x61, 0x46, 0x83, 0x20, - 0xfe, 0xf7, 0x52, 0xff, 0x40, 0xb1, 0x30, 0x4b, 0x20, 0x46, 0x59, 0x69, - 0xfe, 0xf7, 0x90, 0xff, 0xef, 0xf3, 0x09, 0x83, 0xc3, 0xe9, 0x02, 0x57, + 0xfe, 0xf7, 0xfa, 0xfe, 0x40, 0xb1, 0x30, 0x4b, 0x20, 0x46, 0x59, 0x69, + 0xfe, 0xf7, 0x38, 0xff, 0xef, 0xf3, 0x09, 0x83, 0xc3, 0xe9, 0x02, 0x57, 0x6f, 0xf0, 0x01, 0x00, 0x23, 0xe0, 0xb1, 0x1c, 0xd1, 0xe8, 0x4f, 0x0f, 0xc1, 0xe8, 0x43, 0x2f, 0x03, 0xb1, 0xf9, 0xe7, 0x10, 0xf0, 0xff, 0x0f, 0x44, 0xd0, 0xb6, 0x68, 0xde, 0xe7, 0x9a, 0x60, 0xb2, 0x68, 0xaa, 0xb1, - 0x53, 0x60, 0x62, 0x6a, 0x06, 0xf1, 0x0c, 0x01, 0x28, 0x46, 0x05, 0xf0, - 0x8f, 0xfc, 0x0f, 0xb1, 0xf3, 0x78, 0x3b, 0x70, 0x00, 0x25, 0x04, 0xf1, - 0x0c, 0x07, 0x31, 0x46, 0x38, 0x46, 0x35, 0x70, 0xff, 0xf7, 0xb5, 0xf9, + 0x53, 0x60, 0x62, 0x6a, 0x06, 0xf1, 0x0c, 0x01, 0x28, 0x46, 0x06, 0xf0, + 0xf1, 0xfa, 0x0f, 0xb1, 0xf3, 0x78, 0x3b, 0x70, 0x00, 0x25, 0x04, 0xf1, + 0x0c, 0x07, 0x31, 0x46, 0x38, 0x46, 0x35, 0x70, 0xff, 0xf7, 0x5d, 0xf9, 0xa3, 0x68, 0x1b, 0xb9, 0x00, 0x20, 0xf8, 0xbd, 0x23, 0x63, 0xe8, 0xe7, - 0x38, 0x46, 0xff, 0xf7, 0xd0, 0xf9, 0x06, 0x46, 0x00, 0x28, 0xf5, 0xd0, - 0x20, 0x46, 0xfe, 0xf7, 0x0c, 0xff, 0x07, 0x46, 0x29, 0x46, 0x01, 0x22, - 0xfe, 0xf7, 0x96, 0xff, 0x38, 0x46, 0xfe, 0xf7, 0xcb, 0xfe, 0x62, 0x6a, - 0x07, 0x46, 0x81, 0x68, 0x06, 0xf1, 0x0c, 0x00, 0x05, 0xf0, 0x66, 0xfc, + 0x38, 0x46, 0xff, 0xf7, 0x78, 0xf9, 0x06, 0x46, 0x00, 0x28, 0xf5, 0xd0, + 0x20, 0x46, 0xfe, 0xf7, 0xb4, 0xfe, 0x07, 0x46, 0x29, 0x46, 0x01, 0x22, + 0xfe, 0xf7, 0x3e, 0xff, 0x38, 0x46, 0xfe, 0xf7, 0x73, 0xfe, 0x62, 0x6a, + 0x07, 0x46, 0x81, 0x68, 0x06, 0xf1, 0x0c, 0x00, 0x06, 0xf0, 0xc8, 0xfa, 0xf9, 0x23, 0xb5, 0x70, 0x31, 0x46, 0x33, 0x70, 0x20, 0x46, 0xfb, 0x68, - 0xf3, 0x70, 0xff, 0xf7, 0x6e, 0xf9, 0xd9, 0xe7, 0x6f, 0xf0, 0x03, 0x00, + 0xf3, 0x70, 0xff, 0xf7, 0x16, 0xf9, 0xd9, 0xe7, 0x6f, 0xf0, 0x03, 0x00, 0xd7, 0xe7, 0x6f, 0xf0, 0x02, 0x00, 0xd4, 0xe7, 0xd6, 0xe9, 0x01, 0x32, 0x00, 0x2b, 0xb8, 0xd1, 0xe2, 0x62, 0xb7, 0xe7, 0x1c, 0x01, 0x00, 0x24, 0xf8, 0xb5, 0x81, 0x78, 0x04, 0x46, 0x85, 0x68, 0x00, 0x29, 0x38, 0xd0, 0x43, 0x68, 0xc6, 0x68, 0x8b, 0xb3, 0x9d, 0x60, 0xa2, 0x68, 0x82, 0xb3, 0x53, 0x60, 0x00, 0x27, 0x06, 0xf1, 0x0c, 0x05, 0x21, 0x46, 0x28, 0x46, - 0x27, 0x70, 0xff, 0xf7, 0x6a, 0xf9, 0xb3, 0x68, 0x00, 0x2b, 0x4c, 0xd0, - 0x28, 0x46, 0xff, 0xf7, 0x88, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x46, 0xd0, - 0x30, 0x46, 0xfe, 0xf7, 0xc4, 0xfe, 0x05, 0x46, 0x3a, 0x46, 0x39, 0x46, - 0xfe, 0xf7, 0x4e, 0xff, 0x28, 0x46, 0xfe, 0xf7, 0x83, 0xfe, 0x72, 0x6a, - 0x81, 0x68, 0x05, 0x46, 0x04, 0xf1, 0x0c, 0x00, 0x05, 0xf0, 0x1e, 0xfc, + 0x27, 0x70, 0xff, 0xf7, 0x12, 0xf9, 0xb3, 0x68, 0x00, 0x2b, 0x4c, 0xd0, + 0x28, 0x46, 0xff, 0xf7, 0x30, 0xf9, 0x04, 0x46, 0x00, 0x28, 0x46, 0xd0, + 0x30, 0x46, 0xfe, 0xf7, 0x6c, 0xfe, 0x05, 0x46, 0x3a, 0x46, 0x39, 0x46, + 0xfe, 0xf7, 0xf6, 0xfe, 0x28, 0x46, 0xfe, 0xf7, 0x2b, 0xfe, 0x72, 0x6a, + 0x81, 0x68, 0x05, 0x46, 0x04, 0xf1, 0x0c, 0x00, 0x06, 0xf0, 0x80, 0xfa, 0xf9, 0x23, 0xa7, 0x70, 0x21, 0x46, 0x23, 0x70, 0x30, 0x46, 0xeb, 0x68, - 0xe3, 0x70, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, 0x24, 0xb9, 0xf5, 0x62, + 0xe3, 0x70, 0xbd, 0xe8, 0xf8, 0x40, 0xff, 0xf7, 0xcc, 0xb8, 0xf5, 0x62, 0xcc, 0xe7, 0x33, 0x63, 0xcd, 0xe7, 0xab, 0x68, 0x03, 0xb3, 0x5b, 0x78, - 0x83, 0x2b, 0x1d, 0xd1, 0x28, 0x46, 0xfe, 0xf7, 0x9e, 0xfe, 0x06, 0x46, - 0x0a, 0x46, 0xfe, 0xf7, 0x29, 0xff, 0x30, 0x46, 0xfe, 0xf7, 0x5e, 0xfe, - 0x06, 0x46, 0x6a, 0x6a, 0x04, 0xf1, 0x0c, 0x01, 0x80, 0x68, 0x05, 0xf0, - 0xf9, 0xfb, 0xf3, 0x68, 0x0b, 0xb1, 0xe2, 0x78, 0x1a, 0x70, 0x00, 0x23, + 0x83, 0x2b, 0x1d, 0xd1, 0x28, 0x46, 0xfe, 0xf7, 0x46, 0xfe, 0x06, 0x46, + 0x0a, 0x46, 0xfe, 0xf7, 0xd1, 0xfe, 0x30, 0x46, 0xfe, 0xf7, 0x06, 0xfe, + 0x06, 0x46, 0x6a, 0x6a, 0x04, 0xf1, 0x0c, 0x01, 0x80, 0x68, 0x06, 0xf0, + 0x5b, 0xfa, 0xf3, 0x68, 0x0b, 0xb1, 0xe2, 0x78, 0x1a, 0x70, 0x00, 0x23, 0x21, 0x46, 0x05, 0xf1, 0x0c, 0x00, 0x23, 0x70, 0xbd, 0xe8, 0xf8, 0x40, - 0xff, 0xf7, 0x1d, 0xb9, 0x21, 0x46, 0x28, 0x46, 0xd1, 0xe7, 0xf8, 0xbd, + 0xff, 0xf7, 0xc5, 0xb8, 0x21, 0x46, 0x28, 0x46, 0xd1, 0xe7, 0xf8, 0xbd, 0x2d, 0xe9, 0xf0, 0x41, 0x0c, 0x46, 0x17, 0x46, 0x98, 0x46, 0x05, 0x46, 0x00, 0x28, 0x48, 0xd0, 0x03, 0x78, 0xfa, 0x2b, 0x45, 0xd1, 0x00, 0x29, 0x43, 0xd0, 0x83, 0x68, 0xc3, 0xb1, 0x5b, 0x78, 0x83, 0x2b, 0x15, 0xd1, - 0xfe, 0xf7, 0x6b, 0xfe, 0x06, 0x46, 0x01, 0x22, 0x00, 0x21, 0xfe, 0xf7, - 0xf5, 0xfe, 0x30, 0x46, 0xfe, 0xf7, 0x2a, 0xfe, 0x06, 0x46, 0x6a, 0x6a, - 0x21, 0x46, 0x80, 0x68, 0x05, 0xf0, 0xc6, 0xfb, 0xf0, 0x68, 0x08, 0xb1, + 0xfe, 0xf7, 0x13, 0xfe, 0x06, 0x46, 0x01, 0x22, 0x00, 0x21, 0xfe, 0xf7, + 0x9d, 0xfe, 0x30, 0x46, 0xfe, 0xf7, 0xd2, 0xfd, 0x06, 0x46, 0x6a, 0x6a, + 0x21, 0x46, 0x80, 0x68, 0x06, 0xf0, 0x28, 0xfa, 0xf0, 0x68, 0x08, 0xb1, 0x07, 0x70, 0x00, 0x20, 0xbd, 0xe8, 0xf0, 0x81, 0x05, 0xf1, 0x0c, 0x00, - 0xff, 0xf7, 0x11, 0xf9, 0x06, 0x46, 0x70, 0xb1, 0x21, 0x46, 0x6a, 0x6a, - 0x0c, 0x30, 0x00, 0x24, 0x05, 0xf0, 0xb4, 0xfb, 0xf9, 0x23, 0x31, 0x46, - 0x28, 0x46, 0x33, 0x70, 0xb4, 0x70, 0xf7, 0x70, 0xff, 0xf7, 0xbd, 0xf8, + 0xff, 0xf7, 0xb9, 0xf8, 0x06, 0x46, 0x70, 0xb1, 0x21, 0x46, 0x6a, 0x6a, + 0x0c, 0x30, 0x00, 0x24, 0x06, 0xf0, 0x16, 0xfa, 0xf9, 0x23, 0x31, 0x46, + 0x28, 0x46, 0x33, 0x70, 0xb4, 0x70, 0xf7, 0x70, 0xff, 0xf7, 0x65, 0xf8, 0xe7, 0xe7, 0xb8, 0xf1, 0x00, 0x0f, 0x13, 0xd0, 0x41, 0x46, 0x93, 0x20, - 0xfe, 0xf7, 0x44, 0xfe, 0x40, 0xb1, 0x09, 0x4b, 0x28, 0x46, 0x59, 0x69, - 0xfe, 0xf7, 0x82, 0xfe, 0xef, 0xf3, 0x09, 0x83, 0xc3, 0xe9, 0x02, 0x47, + 0xfe, 0xf7, 0xec, 0xfd, 0x40, 0xb1, 0x09, 0x4b, 0x28, 0x46, 0x59, 0x69, + 0xfe, 0xf7, 0x2a, 0xfe, 0xef, 0xf3, 0x09, 0x83, 0xc3, 0xe9, 0x02, 0x47, 0x6f, 0xf0, 0x01, 0x00, 0xd4, 0xe7, 0x6f, 0xf0, 0x03, 0x00, 0xd1, 0xe7, 0x6f, 0xf0, 0x02, 0x00, 0xce, 0xe7, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0x38, 0xb5, 0x27, 0x4c, 0x23, 0x7a, 0x01, 0x2b, 0x03, 0xd0, 0x4f, 0xf0, 0xff, 0x35, 0x28, 0x46, 0x38, 0xbd, 0x24, 0x4a, 0x00, 0x21, 0x24, 0x48, - 0xff, 0xf7, 0x84, 0xfa, 0xa0, 0x62, 0x00, 0xf0, 0x4f, 0xf8, 0x05, 0x46, + 0xff, 0xf7, 0x2c, 0xfa, 0xa0, 0x62, 0x00, 0xf0, 0x4f, 0xf8, 0x05, 0x46, 0x00, 0x28, 0xf0, 0xd1, 0x20, 0x4a, 0xe1, 0x6c, 0x20, 0x48, 0xff, 0xf7, - 0x79, 0xfa, 0xa0, 0x64, 0x00, 0x28, 0xe8, 0xd0, 0x1e, 0x4a, 0xff, 0x23, + 0x21, 0xfa, 0xa0, 0x64, 0x00, 0x28, 0xe8, 0xd0, 0x1e, 0x4a, 0xff, 0x23, 0x82, 0xf8, 0x22, 0x30, 0x92, 0xf8, 0x22, 0x30, 0xd2, 0x68, 0x63, 0xf0, 0xff, 0x03, 0xc2, 0xf3, 0x02, 0x22, 0xdb, 0x43, 0x14, 0xbf, 0xb3, 0xfa, 0x83, 0xf3, 0x20, 0x23, 0xc3, 0xf1, 0x20, 0x03, 0x93, 0x42, 0x98, 0xbf, 0x53, 0x1c, 0xfe, 0x22, 0x02, 0xfa, 0x03, 0xf3, 0x12, 0x4a, 0xdb, 0xb2, 0xd3, 0x77, 0xf0, 0x23, 0x82, 0xf8, 0x23, 0x30, 0x93, 0x68, 0x10, 0x4a, 0xda, 0x63, 0xbf, 0xf3, 0x4f, 0x8f, 0x4f, 0xf0, 0xff, 0x33, 0x23, 0x61, - 0xfe, 0xf7, 0xb4, 0xfb, 0x0c, 0x48, 0xfe, 0xf7, 0xde, 0xfd, 0x02, 0x23, + 0xfe, 0xf7, 0x5c, 0xfb, 0x0c, 0x48, 0xfe, 0xf7, 0x86, 0xfd, 0x02, 0x23, 0x43, 0x70, 0xa0, 0x61, 0x83, 0xf3, 0x14, 0x88, 0xbf, 0xf3, 0x6f, 0x8f, - 0x23, 0x72, 0xb6, 0xe7, 0x1c, 0x01, 0x00, 0x24, 0xb8, 0xed, 0x01, 0x08, - 0x4d, 0xec, 0x00, 0x08, 0xf4, 0xed, 0x01, 0x08, 0x0d, 0x79, 0x01, 0x08, + 0x23, 0x72, 0xb6, 0xe7, 0x1c, 0x01, 0x00, 0x24, 0xac, 0xec, 0x01, 0x08, + 0xa1, 0xe3, 0x00, 0x08, 0xe8, 0xec, 0x01, 0x08, 0x41, 0x6e, 0x01, 0x08, 0x00, 0xed, 0x00, 0xe0, 0x5f, 0x06, 0x00, 0x08, 0x38, 0x01, 0x00, 0x24, 0x38, 0xb5, 0x0d, 0x4c, 0xfa, 0x23, 0x00, 0x25, 0x14, 0x22, 0x23, 0x70, 0x08, 0x23, 0x04, 0x21, 0x04, 0xf1, 0x0c, 0x00, 0xa5, 0x70, 0xc4, 0xe9, 0x09, 0x35, 0x08, 0x4b, 0xc4, 0xe9, 0x01, 0x55, 0xc4, 0xe9, 0x0b, 0x55, - 0xff, 0xf7, 0x86, 0xf8, 0x05, 0x4b, 0x06, 0x4a, 0x28, 0x46, 0xdc, 0x64, - 0x1a, 0x67, 0x05, 0x4a, 0x1a, 0x65, 0x38, 0xbd, 0xd0, 0xa0, 0x00, 0x24, - 0x04, 0xa1, 0x00, 0x24, 0x1c, 0x01, 0x00, 0x24, 0x35, 0x5b, 0x01, 0x08, - 0x41, 0x79, 0x01, 0x08, 0x38, 0xb5, 0x11, 0x4c, 0x23, 0x7a, 0x02, 0x2b, - 0x1c, 0xd1, 0x10, 0x4b, 0x1d, 0x68, 0x28, 0x46, 0xfa, 0xf7, 0x33, 0xfa, + 0xff, 0xf7, 0x2e, 0xf8, 0x05, 0x4b, 0x06, 0x4a, 0x28, 0x46, 0xdc, 0x64, + 0x1a, 0x67, 0x05, 0x4a, 0x1a, 0x65, 0x38, 0xbd, 0x30, 0x44, 0x02, 0x24, + 0x64, 0x44, 0x02, 0x24, 0x1c, 0x01, 0x00, 0x24, 0x11, 0x4f, 0x01, 0x08, + 0x75, 0x6e, 0x01, 0x08, 0x38, 0xb5, 0x11, 0x4c, 0x23, 0x7a, 0x02, 0x2b, + 0x1c, 0xd1, 0x10, 0x4b, 0x1d, 0x68, 0x28, 0x46, 0xfa, 0xf7, 0x9f, 0xf9, 0x00, 0x23, 0x4f, 0xf0, 0x00, 0x72, 0x85, 0xf8, 0x3f, 0x30, 0x0c, 0x4b, 0x5a, 0x60, 0x01, 0x22, 0x62, 0x72, 0xbf, 0xf3, 0x4f, 0x8f, 0x59, 0x68, 0xc9, 0x00, 0x03, 0xd5, 0x4f, 0xf0, 0x00, 0x61, 0x59, 0x60, 0xa2, 0x72, - 0x04, 0x23, 0x23, 0x72, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0x96, 0xbb, - 0x00, 0x20, 0x38, 0xbd, 0x1c, 0x01, 0x00, 0x24, 0x88, 0x86, 0x00, 0x24, - 0x00, 0xed, 0x00, 0xe0, 0x10, 0xb5, 0x0b, 0x4c, 0x20, 0x46, 0xfa, 0xf7, - 0x89, 0xfa, 0xb0, 0xfa, 0x80, 0xf1, 0x20, 0x46, 0x08, 0x4c, 0x49, 0x09, - 0xfa, 0xf7, 0x8a, 0xfa, 0x20, 0x46, 0xfa, 0xf7, 0x7f, 0xfa, 0xb0, 0xfa, - 0x80, 0xf1, 0x20, 0x46, 0x49, 0x09, 0xbd, 0xe8, 0x10, 0x40, 0xfa, 0xf7, - 0x7f, 0xba, 0x00, 0xbf, 0xf8, 0x06, 0x00, 0x24, 0x80, 0x2e, 0x00, 0x24, - 0x10, 0xb5, 0x02, 0x24, 0xc0, 0xe9, 0x07, 0x22, 0xc0, 0xf8, 0x94, 0x42, - 0xd0, 0xf8, 0xc0, 0x02, 0xec, 0xf7, 0x51, 0xfd, 0x00, 0x20, 0x10, 0xbd, - 0x08, 0xb5, 0x00, 0x22, 0x04, 0x23, 0x11, 0x46, 0xc0, 0xf8, 0x94, 0x32, - 0xd0, 0xf8, 0xc0, 0x02, 0xec, 0xf7, 0x45, 0xfd, 0x00, 0x20, 0x08, 0xbd, - 0x38, 0xb5, 0x03, 0x68, 0x04, 0x46, 0x00, 0x25, 0xdb, 0x6c, 0x98, 0x47, - 0x10, 0x4b, 0x03, 0x22, 0x7c, 0x20, 0x83, 0xf8, 0x30, 0x20, 0x0f, 0x4a, - 0x11, 0x68, 0x21, 0xf0, 0x03, 0x01, 0x11, 0x60, 0x5d, 0x63, 0x1a, 0x60, - 0x83, 0xf8, 0x30, 0x50, 0xf3, 0xf7, 0x2c, 0xfb, 0x0a, 0x4a, 0x20, 0x46, - 0xd2, 0xf8, 0xdc, 0x30, 0x23, 0xf4, 0x00, 0x73, 0xc2, 0xf8, 0xdc, 0x30, - 0x23, 0x68, 0x84, 0xf8, 0x54, 0x50, 0x84, 0xf8, 0x80, 0x50, 0x1b, 0x6d, - 0x98, 0x47, 0x28, 0x46, 0x38, 0xbd, 0x00, 0xbf, 0x04, 0x6c, 0x00, 0x24, - 0x00, 0x24, 0x02, 0x48, 0x00, 0x44, 0x02, 0x58, 0x38, 0xb5, 0xd0, 0xf8, - 0xb4, 0x32, 0x04, 0x46, 0x01, 0x79, 0x5b, 0x68, 0x98, 0x47, 0xd4, 0xf8, - 0xc0, 0x42, 0x94, 0xf8, 0xbc, 0x33, 0x01, 0x2b, 0x21, 0xd0, 0x25, 0x68, - 0x01, 0x23, 0x84, 0xf8, 0xbc, 0x33, 0x28, 0x46, 0xab, 0x68, 0x23, 0xf0, - 0x01, 0x03, 0xab, 0x60, 0xef, 0xf7, 0x0a, 0xfd, 0x4f, 0xf4, 0x84, 0x63, - 0x22, 0x68, 0x13, 0x61, 0x0a, 0x4b, 0x01, 0x3b, 0x02, 0xd0, 0x11, 0x69, - 0x89, 0x06, 0xfa, 0xd4, 0xa3, 0x6a, 0x01, 0x2b, 0x06, 0xd1, 0xa3, 0x69, - 0x01, 0x2b, 0x03, 0xd0, 0xab, 0x6b, 0x23, 0xf4, 0x80, 0x33, 0xab, 0x63, - 0x00, 0x23, 0x84, 0xf8, 0xbc, 0x33, 0x00, 0x20, 0x38, 0xbd, 0x00, 0xbf, - 0x41, 0x0d, 0x03, 0x00, 0x08, 0xb5, 0xff, 0xf7, 0xc9, 0xff, 0xbf, 0xf3, - 0x4f, 0x8f, 0x05, 0x49, 0x05, 0x4b, 0xca, 0x68, 0x02, 0xf4, 0xe0, 0x62, - 0x13, 0x43, 0xcb, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, 0x00, 0xbf, 0xfd, 0xe7, - 0x00, 0xed, 0x00, 0xe0, 0x04, 0x00, 0xfa, 0x05, 0x2d, 0xe9, 0xf7, 0x43, - 0x0d, 0x78, 0x00, 0x23, 0x06, 0x46, 0xd0, 0xf8, 0xb8, 0x42, 0x15, 0xf0, - 0x60, 0x05, 0xad, 0xf8, 0x06, 0x30, 0x00, 0xf0, 0x7c, 0x81, 0x20, 0x2d, - 0x40, 0xf0, 0x8f, 0x81, 0x91, 0xf8, 0x01, 0x80, 0xb8, 0xf1, 0x06, 0x0f, - 0x00, 0xf2, 0x89, 0x81, 0xdf, 0xe8, 0x18, 0xf0, 0x44, 0x01, 0x07, 0x00, - 0x43, 0x00, 0xb4, 0x00, 0x0b, 0x01, 0x22, 0x01, 0x27, 0x01, 0x41, 0xf2, - 0x18, 0x03, 0xca, 0x88, 0xe0, 0x5c, 0x02, 0xb3, 0x02, 0x28, 0x01, 0xd0, - 0x05, 0x28, 0x18, 0xd1, 0x49, 0x88, 0x04, 0xf5, 0x80, 0x53, 0x19, 0x60, - 0x41, 0xf2, 0x04, 0x03, 0x41, 0xf2, 0x18, 0x01, 0xe2, 0x50, 0x03, 0x23, - 0x63, 0x54, 0x41, 0xf2, 0x14, 0x01, 0x63, 0x54, 0x21, 0x46, 0xd6, 0xf8, - 0xc0, 0x02, 0xc6, 0xf8, 0x94, 0x32, 0xc6, 0xe9, 0x57, 0x22, 0xec, 0xf7, - 0xa3, 0xfc, 0x00, 0x25, 0x15, 0xe0, 0x30, 0x46, 0xec, 0xf7, 0x7e, 0xfc, - 0xf9, 0xe7, 0x05, 0x28, 0x01, 0xd0, 0x02, 0x28, 0xf7, 0xd1, 0x4f, 0xf4, - 0x83, 0x72, 0x00, 0x25, 0xe2, 0x52, 0x41, 0xf2, 0x11, 0x03, 0x06, 0x22, - 0xe5, 0x54, 0x41, 0xf2, 0x12, 0x03, 0xe5, 0x52, 0x41, 0xf2, 0x14, 0x03, - 0xe2, 0x54, 0x28, 0x46, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0xca, 0x88, - 0x41, 0xf2, 0x18, 0x00, 0x00, 0x2a, 0x5f, 0xd0, 0x20, 0x5c, 0x04, 0xf5, - 0x80, 0x53, 0x02, 0x28, 0x01, 0xd0, 0x09, 0x28, 0x52, 0xd1, 0x4f, 0x88, - 0x41, 0xf2, 0x04, 0x09, 0x1f, 0x60, 0x41, 0xf2, 0x18, 0x03, 0x44, 0xf8, - 0x09, 0x20, 0xdf, 0xb9, 0x03, 0x2a, 0x21, 0x46, 0x4f, 0xf0, 0x03, 0x02, - 0x98, 0xbf, 0x4f, 0xf0, 0x09, 0x08, 0x04, 0xf8, 0x03, 0x80, 0x41, 0xf2, - 0x11, 0x03, 0xe7, 0x54, 0x41, 0xf2, 0x12, 0x03, 0xe7, 0x52, 0x41, 0xf2, - 0x14, 0x03, 0x04, 0xf8, 0x03, 0x80, 0x4f, 0xf4, 0x04, 0x53, 0x23, 0x80, - 0x41, 0x23, 0xa3, 0x70, 0x30, 0x46, 0xff, 0xf7, 0xe7, 0xfe, 0xb2, 0xe7, - 0x01, 0x2f, 0x41, 0xf2, 0x11, 0x01, 0x1b, 0xd0, 0x09, 0x20, 0x00, 0x25, - 0x02, 0x3f, 0xe0, 0x54, 0x41, 0xf2, 0x12, 0x03, 0x65, 0x54, 0x21, 0x46, - 0xe5, 0x52, 0x41, 0xf2, 0x14, 0x03, 0xe0, 0x54, 0x41, 0xf2, 0x08, 0x03, - 0xe0, 0x58, 0xd6, 0xf8, 0xbc, 0x32, 0x00, 0xeb, 0x07, 0x30, 0x1b, 0x6a, - 0x98, 0x47, 0x34, 0xf8, 0x09, 0x20, 0x01, 0x46, 0x30, 0x46, 0xff, 0xf7, - 0xc7, 0xfe, 0xaa, 0xe7, 0x0f, 0x22, 0x00, 0x25, 0xe2, 0x54, 0x41, 0xf2, - 0x12, 0x03, 0x65, 0x54, 0xe5, 0x52, 0x41, 0xf2, 0x14, 0x03, 0xe2, 0x54, - 0x30, 0x46, 0xec, 0xf7, 0x09, 0xfc, 0x9c, 0xe7, 0x00, 0x25, 0x41, 0xf2, - 0x04, 0x02, 0xa5, 0x50, 0x1d, 0x60, 0xf5, 0xe7, 0x02, 0x23, 0x41, 0xf2, - 0x11, 0x01, 0x23, 0x54, 0x62, 0x54, 0x41, 0xf2, 0x12, 0x01, 0x62, 0x52, - 0x41, 0xf2, 0x14, 0x01, 0x63, 0x54, 0x72, 0xe7, 0x41, 0xf2, 0x18, 0x02, - 0x04, 0xf5, 0x80, 0x55, 0xa3, 0x5c, 0x10, 0x35, 0x03, 0x2b, 0x04, 0xd0, - 0x06, 0x2b, 0x2d, 0xd0, 0x06, 0x22, 0x29, 0x46, 0xae, 0xe7, 0x41, 0xf2, - 0x04, 0x03, 0x41, 0xf2, 0x11, 0x00, 0xe3, 0x58, 0xeb, 0xb1, 0x04, 0x23, - 0x41, 0xf2, 0x12, 0x01, 0xa3, 0x54, 0x00, 0x22, 0x22, 0x54, 0x62, 0x52, - 0x41, 0xf2, 0x14, 0x02, 0xa3, 0x54, 0x41, 0xf2, 0x08, 0x03, 0xe0, 0x58, - 0x04, 0xf5, 0x80, 0x53, 0x19, 0x68, 0xd6, 0xf8, 0xbc, 0x32, 0x31, 0xb9, - 0x22, 0x78, 0x41, 0x2a, 0x03, 0xd1, 0x5b, 0x6a, 0x2a, 0x46, 0x98, 0x47, - 0xdc, 0xe7, 0x5b, 0x6a, 0x2a, 0x46, 0x01, 0x21, 0xf9, 0xe7, 0x05, 0x21, - 0xa1, 0x54, 0x23, 0x54, 0x41, 0xf2, 0x12, 0x02, 0xa3, 0x52, 0x0d, 0xe0, - 0x41, 0xf2, 0x19, 0x03, 0xe3, 0x5c, 0x01, 0x2b, 0x0c, 0xd1, 0x07, 0x21, - 0xa1, 0x54, 0x41, 0xf2, 0x11, 0x02, 0xa3, 0x54, 0x41, 0xf2, 0x12, 0x03, - 0x00, 0x22, 0xe2, 0x52, 0x41, 0xf2, 0x14, 0x03, 0xe1, 0x54, 0xbf, 0xe7, - 0x00, 0x2b, 0xbd, 0xd1, 0x56, 0x49, 0x91, 0xf8, 0x2f, 0x10, 0x49, 0x07, - 0xb8, 0xd5, 0x02, 0x21, 0xa1, 0x54, 0x41, 0xf2, 0x11, 0x02, 0xa3, 0x54, - 0xdc, 0xe7, 0x41, 0xf2, 0x18, 0x03, 0x41, 0xf2, 0x10, 0x01, 0xe2, 0x5c, - 0x0a, 0x2a, 0x07, 0xd1, 0x02, 0x22, 0x00, 0x25, 0xe2, 0x54, 0x41, 0xf2, - 0x14, 0x03, 0x65, 0x50, 0xe2, 0x52, 0x24, 0xe7, 0x0a, 0x22, 0xe2, 0x54, - 0x0e, 0x23, 0x63, 0x50, 0x41, 0xf2, 0x14, 0x03, 0xe2, 0x52, 0x04, 0xe7, - 0x04, 0xf5, 0x80, 0x51, 0x01, 0x22, 0x18, 0x31, 0x48, 0xe7, 0x41, 0xf2, - 0x18, 0x02, 0xa3, 0x5c, 0x09, 0x2b, 0x3f, 0xf6, 0xfa, 0xae, 0x4f, 0xf4, - 0x1b, 0x75, 0xdd, 0x40, 0xed, 0x43, 0x15, 0xf0, 0x01, 0x05, 0x7f, 0xf4, - 0xf2, 0xae, 0x02, 0x23, 0xa3, 0x54, 0x41, 0xf2, 0x10, 0x02, 0xa5, 0x50, - 0x41, 0xf2, 0x14, 0x02, 0xa3, 0x52, 0x04, 0xf5, 0x80, 0x53, 0x1d, 0x60, - 0x41, 0xf2, 0x04, 0x03, 0xe5, 0x50, 0xfa, 0xe6, 0x41, 0xf2, 0x18, 0x00, - 0x22, 0x5c, 0x09, 0x2a, 0x14, 0xd8, 0x4f, 0xf4, 0x1b, 0x73, 0xd3, 0x40, - 0xdb, 0x43, 0x13, 0xf0, 0x01, 0x03, 0x0d, 0xd1, 0x02, 0x22, 0x22, 0x54, - 0x41, 0xf2, 0x10, 0x00, 0x23, 0x50, 0x41, 0xf2, 0x14, 0x00, 0x22, 0x52, - 0x04, 0xf5, 0x80, 0x52, 0x13, 0x60, 0x41, 0xf2, 0x04, 0x02, 0xa3, 0x50, - 0x27, 0x4b, 0x93, 0xf8, 0x30, 0x50, 0x15, 0xf0, 0x10, 0x05, 0x08, 0xd0, - 0x30, 0x46, 0x45, 0x46, 0xff, 0xf7, 0x38, 0xfe, 0xd6, 0xf8, 0xc0, 0x02, - 0xf1, 0xf7, 0x62, 0xf8, 0xd1, 0xe6, 0x48, 0x88, 0xf3, 0xf7, 0x58, 0xf9, - 0xcd, 0xe6, 0x4f, 0x78, 0x0b, 0x2f, 0x12, 0xd8, 0xdf, 0xe8, 0x07, 0xf0, - 0x06, 0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x11, 0x11, 0x11, 0x23, 0x2c, - 0x90, 0xf8, 0x9c, 0x32, 0x03, 0x2b, 0x06, 0xd1, 0x02, 0x22, 0x0d, 0xf1, - 0x06, 0x01, 0x3d, 0x46, 0xff, 0xf7, 0xd4, 0xfd, 0xb7, 0xe6, 0x30, 0x46, - 0x02, 0x25, 0xec, 0xf7, 0x1f, 0xfb, 0xb2, 0xe6, 0x4b, 0x88, 0x1b, 0x12, - 0x21, 0x2b, 0x05, 0xd1, 0xca, 0x88, 0x0f, 0x49, 0x09, 0x2a, 0x28, 0xbf, - 0x09, 0x22, 0xf9, 0xe6, 0x00, 0x22, 0x11, 0x46, 0xf6, 0xe6, 0x90, 0xf8, - 0x9c, 0x32, 0x03, 0x2b, 0xe9, 0xd1, 0x04, 0xf5, 0x80, 0x51, 0x01, 0x22, - 0x0c, 0x31, 0xed, 0xe6, 0x8b, 0x78, 0x03, 0x2b, 0xe1, 0xd8, 0x90, 0xf8, - 0x9c, 0x22, 0x03, 0x2a, 0xdd, 0xd1, 0x41, 0xf2, 0x0c, 0x02, 0xa3, 0x50, - 0x91, 0xe6, 0x00, 0xbf, 0x8c, 0x02, 0x00, 0x24, 0xb9, 0x02, 0x00, 0x24, - 0xf0, 0xb5, 0x41, 0xf2, 0x18, 0x02, 0xd0, 0xf8, 0xb8, 0x42, 0x89, 0xb0, - 0x07, 0x46, 0xa3, 0x5c, 0x04, 0x2b, 0x65, 0xd1, 0x04, 0xf5, 0x80, 0x56, - 0x41, 0xf2, 0x04, 0x03, 0x31, 0x68, 0x00, 0x29, 0x4f, 0xd1, 0x22, 0x78, - 0xaa, 0xb9, 0xe3, 0x58, 0x01, 0x2b, 0x41, 0xd1, 0x00, 0x25, 0x41, 0xf2, - 0x04, 0x03, 0x41, 0xf2, 0x18, 0x02, 0xe5, 0x50, 0x03, 0x23, 0x35, 0x60, - 0xa3, 0x54, 0x41, 0xf2, 0x11, 0x02, 0xa5, 0x54, 0x41, 0xf2, 0x12, 0x02, - 0xa5, 0x52, 0x41, 0xf2, 0x14, 0x02, 0xa3, 0x54, 0x2b, 0xe0, 0x21, 0x2a, - 0x10, 0xd1, 0xe3, 0x58, 0x05, 0x2b, 0x29, 0xd1, 0xe3, 0x78, 0xa2, 0x78, - 0x1b, 0x04, 0x03, 0xeb, 0x02, 0x23, 0x62, 0x78, 0x13, 0x44, 0x22, 0x79, - 0x03, 0xeb, 0x02, 0x63, 0x41, 0xf2, 0x08, 0x02, 0xa3, 0x50, 0xd9, 0xe7, - 0x41, 0x2a, 0x19, 0xd1, 0xe3, 0x58, 0x05, 0x2b, 0x16, 0xd1, 0xe3, 0x78, - 0xa0, 0x78, 0x1b, 0x04, 0x03, 0xeb, 0x00, 0x23, 0x60, 0x78, 0x03, 0x44, - 0x20, 0x79, 0x03, 0xeb, 0x00, 0x60, 0x41, 0xf2, 0x08, 0x03, 0xe0, 0x50, - 0xd7, 0xf8, 0xbc, 0x32, 0x9b, 0x69, 0x98, 0x47, 0x00, 0x28, 0xc1, 0xd0, - 0x02, 0x25, 0x28, 0x46, 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0x23, 0x41, 0xf2, - 0x04, 0x02, 0x38, 0x46, 0xa3, 0x50, 0x33, 0x60, 0xec, 0xf7, 0x98, 0xfa, - 0xb4, 0xe7, 0x01, 0x29, 0xb2, 0xd9, 0x41, 0xf2, 0x08, 0x02, 0x02, 0x39, - 0xa0, 0x58, 0xd7, 0xf8, 0xbc, 0x22, 0x00, 0xeb, 0x01, 0x31, 0x20, 0x46, - 0xd5, 0x69, 0xe2, 0x58, 0xa8, 0x47, 0xe1, 0xe7, 0x07, 0x2b, 0x4f, 0xf0, - 0x00, 0x03, 0x13, 0xd1, 0x41, 0xf2, 0x19, 0x01, 0x63, 0x54, 0x18, 0x49, - 0x91, 0xf8, 0x2f, 0x50, 0x41, 0xf2, 0x11, 0x01, 0x15, 0xf0, 0x04, 0x05, - 0x0a, 0xd0, 0x06, 0x20, 0xa0, 0x54, 0x41, 0xf2, 0x12, 0x02, 0x63, 0x54, - 0xa3, 0x52, 0x41, 0xf2, 0x14, 0x02, 0xa0, 0x54, 0x1d, 0x46, 0xca, 0xe7, - 0x08, 0x23, 0xa3, 0x54, 0x41, 0xf2, 0x12, 0x02, 0x65, 0x54, 0xa5, 0x52, - 0x41, 0xf2, 0x14, 0x02, 0xa3, 0x54, 0xd0, 0xf8, 0xbc, 0x32, 0x5b, 0x69, - 0x98, 0x47, 0x09, 0x4b, 0x09, 0x4a, 0x00, 0x21, 0x09, 0x48, 0x07, 0x92, - 0x06, 0x95, 0x00, 0x92, 0xcd, 0xe9, 0x04, 0x37, 0x04, 0xab, 0xcd, 0xe9, - 0x02, 0x01, 0x06, 0x48, 0x0e, 0xcb, 0xf9, 0xf7, 0x14, 0xff, 0xac, 0xe7, - 0x8c, 0x02, 0x00, 0x24, 0x41, 0x5f, 0x01, 0x08, 0xf9, 0x58, 0x01, 0x08, - 0x40, 0x0d, 0x03, 0x00, 0x28, 0x06, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, - 0x04, 0xf0, 0x5a, 0xff, 0x20, 0x46, 0x10, 0xbd, 0x10, 0xb5, 0x04, 0x46, - 0x04, 0xf0, 0x54, 0xff, 0x20, 0x46, 0x10, 0xbd, 0x38, 0xb5, 0xd0, 0xf8, - 0xb8, 0x32, 0x00, 0x25, 0x41, 0xf2, 0x18, 0x01, 0x04, 0x46, 0x03, 0xf5, - 0x80, 0x52, 0x15, 0x60, 0x41, 0xf2, 0x04, 0x02, 0x9d, 0x50, 0x02, 0x22, - 0x5a, 0x54, 0x41, 0xf2, 0x10, 0x01, 0x5d, 0x54, 0x41, 0xf2, 0x14, 0x01, - 0x5a, 0x54, 0xd0, 0xf8, 0xb8, 0x02, 0x18, 0xb1, 0x04, 0xf0, 0x38, 0xff, - 0xc4, 0xf8, 0xb8, 0x52, 0x00, 0x20, 0x38, 0xbd, 0x2d, 0xe9, 0xf0, 0x4f, - 0x8b, 0xb0, 0x01, 0x68, 0x06, 0x46, 0x93, 0x46, 0x14, 0x9f, 0x15, 0x9c, - 0x00, 0x97, 0x01, 0x94, 0x49, 0x6c, 0x88, 0x47, 0x00, 0x28, 0x00, 0xf0, - 0xbf, 0x80, 0x33, 0x68, 0x30, 0x46, 0xdb, 0x6c, 0x98, 0x47, 0x96, 0xf8, - 0x80, 0x30, 0x43, 0xb9, 0x33, 0x68, 0x30, 0x46, 0x5b, 0x4c, 0x1b, 0x6d, - 0x98, 0x47, 0x20, 0x46, 0x0b, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x59, 0x4c, - 0x94, 0xf8, 0x30, 0x30, 0x25, 0x46, 0x01, 0x2b, 0x5f, 0xfa, 0x83, 0xfa, - 0x1a, 0xd1, 0x4f, 0xf0, 0x00, 0x09, 0x58, 0x46, 0xd6, 0xe9, 0x08, 0x23, - 0x49, 0x46, 0xcd, 0xe9, 0x02, 0x32, 0x06, 0xf0, 0x47, 0xfe, 0x03, 0x9a, - 0x80, 0x46, 0x02, 0x9b, 0xb8, 0x1a, 0x49, 0x46, 0x58, 0x44, 0x06, 0xf0, - 0x3f, 0xfe, 0x80, 0x45, 0x07, 0x46, 0xc4, 0xf8, 0x34, 0x90, 0x05, 0xd9, - 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x63, 0x63, 0x63, 0x48, 0x4c, 0x80, 0xe0, - 0x23, 0x6d, 0x98, 0x42, 0x03, 0xd9, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x73, - 0xf5, 0xe7, 0x03, 0x23, 0xd4, 0xf8, 0x00, 0x90, 0x84, 0xf8, 0x30, 0x30, - 0x23, 0x6c, 0x9a, 0x06, 0x09, 0xd4, 0x41, 0x4b, 0xc9, 0xf8, 0x38, 0x30, - 0x63, 0x6b, 0x43, 0xf0, 0x80, 0x63, 0x63, 0x63, 0x84, 0xf8, 0x30, 0xa0, - 0xe4, 0xe7, 0xd9, 0xf8, 0x14, 0x30, 0x9b, 0x01, 0x06, 0xd5, 0x3a, 0x4b, - 0xc9, 0xf8, 0x38, 0x30, 0x63, 0x6b, 0x43, 0xf4, 0x00, 0x63, 0xf0, 0xe7, - 0xa3, 0x6b, 0x01, 0x2b, 0x04, 0xd0, 0x03, 0x2b, 0x36, 0xd0, 0x4f, 0xea, - 0x48, 0x28, 0x47, 0x02, 0x20, 0x24, 0x00, 0x23, 0xcd, 0xf8, 0x14, 0x80, - 0x4f, 0xf4, 0x80, 0x7a, 0x4f, 0xf4, 0x80, 0x58, 0x05, 0xa9, 0x48, 0x46, - 0xcd, 0xe9, 0x06, 0x4a, 0xcd, 0xe9, 0x08, 0x38, 0xec, 0xf7, 0x82, 0xfb, - 0x41, 0xf2, 0x88, 0x32, 0x21, 0x46, 0x48, 0x46, 0xef, 0xf7, 0x3e, 0xfa, - 0x48, 0xb1, 0x2b, 0x68, 0x26, 0x4a, 0x9a, 0x63, 0x6b, 0x6b, 0x18, 0x43, - 0x01, 0x23, 0x68, 0x63, 0x85, 0xf8, 0x30, 0x30, 0xb0, 0xe7, 0x2c, 0x68, - 0x05, 0xa9, 0x05, 0x97, 0x21, 0x27, 0xcd, 0xe9, 0x08, 0x08, 0x20, 0x46, - 0xcd, 0xe9, 0x06, 0x7a, 0xec, 0xf7, 0x66, 0xfb, 0x41, 0xf2, 0x88, 0x32, - 0x39, 0x46, 0x20, 0x46, 0xef, 0xf7, 0x22, 0xfa, 0x00, 0x28, 0xe2, 0xd1, - 0x00, 0x23, 0x4f, 0xf4, 0x80, 0x72, 0x26, 0x27, 0x2c, 0x68, 0x05, 0xa9, - 0x20, 0x46, 0xcd, 0xe9, 0x07, 0x23, 0xcd, 0xe9, 0x05, 0x37, 0x4f, 0xf4, - 0x80, 0x53, 0x09, 0x93, 0xec, 0xf7, 0x4e, 0xfb, 0x4f, 0xf2, 0x18, 0x62, - 0x39, 0x46, 0x20, 0x46, 0xef, 0xf7, 0x0a, 0xfa, 0x28, 0xb1, 0x2b, 0x68, - 0x0c, 0x4a, 0x9a, 0x63, 0x6c, 0x6b, 0x20, 0x43, 0xca, 0xe7, 0x01, 0x23, - 0x04, 0x46, 0x85, 0xf8, 0x30, 0x30, 0xef, 0xf7, 0x91, 0xfa, 0x04, 0x28, - 0xfb, 0xd1, 0x33, 0x68, 0x30, 0x46, 0x1b, 0x6d, 0x98, 0x47, 0x4c, 0xe7, - 0x04, 0x4c, 0x4a, 0xe7, 0x74, 0xec, 0xff, 0xff, 0x04, 0x6c, 0x00, 0x24, - 0x6e, 0xec, 0xff, 0xff, 0xff, 0x0f, 0xe0, 0x1f, 0x75, 0xec, 0xff, 0xff, - 0x2d, 0xe9, 0xf0, 0x4f, 0x8b, 0xb0, 0x0e, 0x46, 0x01, 0x68, 0x05, 0x46, - 0x93, 0x46, 0x9a, 0x46, 0xdd, 0xe9, 0x14, 0x78, 0xcd, 0xe9, 0x00, 0x78, - 0x09, 0x6c, 0x88, 0x47, 0x00, 0x28, 0x00, 0xf0, 0xfe, 0x80, 0x2b, 0x68, - 0x28, 0x46, 0xdb, 0x6c, 0x98, 0x47, 0x95, 0xf8, 0x80, 0x30, 0x43, 0xb9, - 0x2b, 0x68, 0x28, 0x46, 0x7b, 0x4c, 0x1b, 0x6d, 0x98, 0x47, 0x20, 0x46, - 0x0b, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xab, 0x6d, 0x78, 0x4c, 0x03, 0x93, - 0xd5, 0xe9, 0x08, 0x89, 0xee, 0xf7, 0xae, 0xf9, 0x07, 0x46, 0x26, 0xb9, - 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x63, 0x63, 0x63, 0x68, 0xe0, 0x94, 0xf8, - 0x30, 0x30, 0x01, 0x2b, 0x40, 0xf0, 0xd7, 0x80, 0x42, 0x46, 0x4b, 0x46, - 0x51, 0x46, 0x58, 0x46, 0x06, 0xf0, 0x64, 0xfd, 0x82, 0x46, 0x42, 0x46, - 0x4b, 0x46, 0xdd, 0xe9, 0x14, 0x01, 0x06, 0xf0, 0x5d, 0xfd, 0x22, 0x6d, - 0x0a, 0xeb, 0x00, 0x01, 0x00, 0x23, 0x80, 0x46, 0x91, 0x42, 0x63, 0x63, - 0x03, 0xd9, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x73, 0xdf, 0xe7, 0xd4, 0xf8, - 0x00, 0xb0, 0x03, 0x22, 0x4f, 0xea, 0x48, 0x29, 0x84, 0xf8, 0x30, 0x20, - 0xcb, 0xf8, 0x2c, 0x30, 0xa3, 0x6b, 0x01, 0x2b, 0x4f, 0xf0, 0xff, 0x33, - 0xcb, 0xf8, 0x24, 0x30, 0x18, 0xbf, 0x4f, 0xea, 0x4a, 0x2a, 0xcb, 0xf8, - 0x28, 0x90, 0xb8, 0xf1, 0x01, 0x0f, 0xdb, 0xf8, 0x2c, 0x30, 0x23, 0xf0, - 0xff, 0x03, 0x43, 0xf0, 0x90, 0x03, 0xcb, 0xf8, 0x2c, 0x30, 0xdb, 0xf8, - 0x0c, 0x30, 0x43, 0xf0, 0x40, 0x03, 0xcb, 0xf8, 0x0c, 0x30, 0x27, 0xd9, - 0x20, 0x23, 0xcd, 0xf8, 0x14, 0xa0, 0x4f, 0xf0, 0x19, 0x0a, 0xe3, 0x62, - 0x4f, 0xf4, 0x80, 0x71, 0x00, 0x23, 0x58, 0x46, 0xcd, 0xf8, 0x18, 0xa0, - 0xcd, 0xe9, 0x07, 0x13, 0x4f, 0xf4, 0x80, 0x53, 0x05, 0xa9, 0x09, 0x93, - 0xec, 0xf7, 0xa2, 0xfa, 0x41, 0xf2, 0x88, 0x32, 0x51, 0x46, 0x58, 0x46, - 0xef, 0xf7, 0x5e, 0xf9, 0x78, 0xb3, 0x23, 0x68, 0x43, 0x4a, 0x9a, 0x63, - 0x63, 0x6b, 0x18, 0x43, 0x60, 0x63, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, - 0x00, 0x23, 0xe3, 0x62, 0x3f, 0x4c, 0x67, 0xe0, 0x10, 0x23, 0xcd, 0xf8, - 0x14, 0xa0, 0x4f, 0xf0, 0x18, 0x0a, 0xe3, 0x62, 0xd6, 0xe7, 0x43, 0x6b, - 0x5a, 0x04, 0x0c, 0xd5, 0xb9, 0xf1, 0x1f, 0x0f, 0x09, 0xd9, 0x06, 0xf1, - 0x20, 0x03, 0x56, 0xf8, 0x04, 0x2b, 0xb3, 0x42, 0xc0, 0xf8, 0x80, 0x20, - 0xf9, 0xd1, 0xa9, 0xf1, 0x20, 0x09, 0xee, 0xf7, 0x23, 0xf9, 0x03, 0x9b, - 0xc0, 0x1b, 0x83, 0x42, 0x05, 0xd8, 0x23, 0x68, 0x2e, 0x4a, 0x9a, 0x63, - 0x63, 0x6b, 0x63, 0x63, 0xd5, 0xe7, 0x20, 0x68, 0x43, 0x6b, 0x13, 0xf4, - 0x8d, 0x7f, 0xde, 0xd0, 0xc3, 0x68, 0x23, 0xf0, 0x40, 0x03, 0xc3, 0x60, - 0x43, 0x6b, 0xdb, 0x05, 0x09, 0xd5, 0xb8, 0xf1, 0x01, 0x0f, 0x06, 0xd9, - 0xa3, 0x6b, 0x03, 0x2b, 0x03, 0xd0, 0xef, 0xf7, 0x2f, 0xfa, 0x00, 0x28, - 0xb9, 0xd1, 0x22, 0x68, 0x50, 0x6b, 0x10, 0xf0, 0x08, 0x00, 0x05, 0xd0, - 0x1e, 0x4b, 0x93, 0x63, 0x63, 0x6b, 0x43, 0xf0, 0x08, 0x03, 0xdc, 0xe7, - 0x51, 0x6b, 0x11, 0xf0, 0x02, 0x01, 0x0a, 0xd0, 0x19, 0x4b, 0x93, 0x63, - 0x63, 0x6b, 0x43, 0xf0, 0x02, 0x03, 0x63, 0x63, 0x01, 0x23, 0x84, 0xf8, - 0x30, 0x30, 0xe0, 0x62, 0xaa, 0xe7, 0x53, 0x6b, 0x13, 0xf0, 0x10, 0x03, - 0x0a, 0xd0, 0x12, 0x4b, 0x93, 0x63, 0x63, 0x6b, 0x43, 0xf0, 0x10, 0x03, - 0x63, 0x63, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0xe1, 0x62, 0x9b, 0xe7, - 0x0e, 0x49, 0x91, 0x63, 0x01, 0x22, 0x84, 0xf8, 0x30, 0x20, 0x1c, 0x46, - 0xef, 0xf7, 0x7a, 0xf9, 0x04, 0x28, 0xfb, 0xd1, 0x2b, 0x68, 0x28, 0x46, - 0x1b, 0x6d, 0x98, 0x47, 0x11, 0xe7, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x53, - 0x1d, 0xe7, 0x06, 0x4c, 0x0b, 0xe7, 0x00, 0xbf, 0x74, 0xec, 0xff, 0xff, - 0x04, 0x6c, 0x00, 0x24, 0xff, 0x0f, 0xe0, 0x1f, 0x6c, 0xec, 0xff, 0xff, - 0x3a, 0x0f, 0x00, 0x18, 0x75, 0xec, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x4f, + 0x04, 0x23, 0x23, 0x72, 0xbd, 0xe8, 0x38, 0x40, 0xff, 0xf7, 0x3e, 0xbb, + 0x00, 0x20, 0x38, 0xbd, 0x1c, 0x01, 0x00, 0x24, 0xd8, 0x27, 0x02, 0x24, + 0x00, 0xed, 0x00, 0xe0, 0x2d, 0xe9, 0xf0, 0x4f, 0x8b, 0xb0, 0x01, 0x68, + 0x06, 0x46, 0x93, 0x46, 0x14, 0x9f, 0x15, 0x9c, 0x00, 0x97, 0x01, 0x94, + 0x49, 0x6c, 0x88, 0x47, 0x00, 0x28, 0x00, 0xf0, 0xbf, 0x80, 0x33, 0x68, + 0x30, 0x46, 0xdb, 0x6c, 0x98, 0x47, 0x96, 0xf8, 0x80, 0x30, 0x43, 0xb9, + 0x33, 0x68, 0x30, 0x46, 0x5b, 0x4c, 0x1b, 0x6d, 0x98, 0x47, 0x20, 0x46, + 0x0b, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x59, 0x4c, 0x94, 0xf8, 0x30, 0x30, + 0x25, 0x46, 0x01, 0x2b, 0x5f, 0xfa, 0x83, 0xfa, 0x1a, 0xd1, 0x4f, 0xf0, + 0x00, 0x09, 0x58, 0x46, 0xd6, 0xe9, 0x08, 0x23, 0x49, 0x46, 0xcd, 0xe9, + 0x02, 0x32, 0x07, 0xf0, 0xf9, 0xff, 0x03, 0x9a, 0x80, 0x46, 0x02, 0x9b, + 0xb8, 0x1a, 0x49, 0x46, 0x58, 0x44, 0x07, 0xf0, 0xf1, 0xff, 0x80, 0x45, + 0x07, 0x46, 0xc4, 0xf8, 0x34, 0x90, 0x05, 0xd9, 0x63, 0x6b, 0x43, 0xf0, + 0x00, 0x63, 0x63, 0x63, 0x48, 0x4c, 0x80, 0xe0, 0x23, 0x6d, 0x98, 0x42, + 0x03, 0xd9, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x73, 0xf5, 0xe7, 0x03, 0x23, + 0xd4, 0xf8, 0x00, 0x90, 0x84, 0xf8, 0x30, 0x30, 0x23, 0x6c, 0x9a, 0x06, + 0x09, 0xd4, 0x41, 0x4b, 0xc9, 0xf8, 0x38, 0x30, 0x63, 0x6b, 0x43, 0xf0, + 0x80, 0x63, 0x63, 0x63, 0x84, 0xf8, 0x30, 0xa0, 0xe4, 0xe7, 0xd9, 0xf8, + 0x14, 0x30, 0x9b, 0x01, 0x06, 0xd5, 0x3a, 0x4b, 0xc9, 0xf8, 0x38, 0x30, + 0x63, 0x6b, 0x43, 0xf4, 0x00, 0x63, 0xf0, 0xe7, 0xa3, 0x6b, 0x01, 0x2b, + 0x04, 0xd0, 0x03, 0x2b, 0x36, 0xd0, 0x4f, 0xea, 0x48, 0x28, 0x47, 0x02, + 0x20, 0x24, 0x00, 0x23, 0xcd, 0xf8, 0x14, 0x80, 0x4f, 0xf4, 0x80, 0x7a, + 0x4f, 0xf4, 0x80, 0x58, 0x05, 0xa9, 0x48, 0x46, 0xcd, 0xe9, 0x06, 0x4a, + 0xcd, 0xe9, 0x08, 0x38, 0xec, 0xf7, 0xd4, 0xff, 0x41, 0xf2, 0x88, 0x32, + 0x21, 0x46, 0x48, 0x46, 0xef, 0xf7, 0xe2, 0xff, 0x48, 0xb1, 0x2b, 0x68, + 0x26, 0x4a, 0x9a, 0x63, 0x6b, 0x6b, 0x18, 0x43, 0x01, 0x23, 0x68, 0x63, + 0x85, 0xf8, 0x30, 0x30, 0xb0, 0xe7, 0x2c, 0x68, 0x05, 0xa9, 0x05, 0x97, + 0x21, 0x27, 0xcd, 0xe9, 0x08, 0x08, 0x20, 0x46, 0xcd, 0xe9, 0x06, 0x7a, + 0xec, 0xf7, 0xb8, 0xff, 0x41, 0xf2, 0x88, 0x32, 0x39, 0x46, 0x20, 0x46, + 0xef, 0xf7, 0xc6, 0xff, 0x00, 0x28, 0xe2, 0xd1, 0x00, 0x23, 0x4f, 0xf4, + 0x80, 0x72, 0x26, 0x27, 0x2c, 0x68, 0x05, 0xa9, 0x20, 0x46, 0xcd, 0xe9, + 0x07, 0x23, 0xcd, 0xe9, 0x05, 0x37, 0x4f, 0xf4, 0x80, 0x53, 0x09, 0x93, + 0xec, 0xf7, 0xa0, 0xff, 0x4f, 0xf2, 0x18, 0x62, 0x39, 0x46, 0x20, 0x46, + 0xef, 0xf7, 0xae, 0xff, 0x28, 0xb1, 0x2b, 0x68, 0x0c, 0x4a, 0x9a, 0x63, + 0x6c, 0x6b, 0x20, 0x43, 0xca, 0xe7, 0x01, 0x23, 0x04, 0x46, 0x85, 0xf8, + 0x30, 0x30, 0xf0, 0xf7, 0x35, 0xf8, 0x04, 0x28, 0xfb, 0xd1, 0x33, 0x68, + 0x30, 0x46, 0x1b, 0x6d, 0x98, 0x47, 0x4c, 0xe7, 0x04, 0x4c, 0x4a, 0xe7, + 0x74, 0xec, 0xff, 0xff, 0x2c, 0x0d, 0x02, 0x24, 0x6e, 0xec, 0xff, 0xff, + 0xff, 0x0f, 0xe0, 0x1f, 0x75, 0xec, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x4f, 0x8b, 0xb0, 0x0e, 0x46, 0x01, 0x68, 0x05, 0x46, 0x93, 0x46, 0x9a, 0x46, - 0xdd, 0xe9, 0x14, 0x78, 0xcd, 0xe9, 0x00, 0x78, 0xc9, 0x6b, 0x88, 0x47, - 0x00, 0x28, 0x00, 0xf0, 0x0e, 0x81, 0x2b, 0x68, 0x28, 0x46, 0xdb, 0x6c, + 0xdd, 0xe9, 0x14, 0x78, 0xcd, 0xe9, 0x00, 0x78, 0x09, 0x6c, 0x88, 0x47, + 0x00, 0x28, 0x00, 0xf0, 0xfe, 0x80, 0x2b, 0x68, 0x28, 0x46, 0xdb, 0x6c, 0x98, 0x47, 0x95, 0xf8, 0x80, 0x30, 0x43, 0xb9, 0x2b, 0x68, 0x28, 0x46, - 0x83, 0x4c, 0x1b, 0x6d, 0x98, 0x47, 0x20, 0x46, 0x0b, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0xab, 0x6d, 0x80, 0x4c, 0x03, 0x93, 0xd5, 0xe9, 0x08, 0x89, - 0xee, 0xf7, 0x90, 0xf8, 0x07, 0x46, 0x26, 0xb9, 0x63, 0x6b, 0x43, 0xf0, - 0x00, 0x63, 0x63, 0x63, 0x69, 0xe0, 0x94, 0xf8, 0x30, 0x30, 0x01, 0x2b, - 0x40, 0xf0, 0xe7, 0x80, 0x42, 0x46, 0x4b, 0x46, 0x51, 0x46, 0x58, 0x46, - 0x06, 0xf0, 0x46, 0xfc, 0x82, 0x46, 0x42, 0x46, 0x4b, 0x46, 0xdd, 0xe9, - 0x14, 0x01, 0x06, 0xf0, 0x3f, 0xfc, 0x22, 0x6d, 0x0a, 0xeb, 0x00, 0x01, + 0x7b, 0x4c, 0x1b, 0x6d, 0x98, 0x47, 0x20, 0x46, 0x0b, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0xab, 0x6d, 0x78, 0x4c, 0x03, 0x93, 0xd5, 0xe9, 0x08, 0x89, + 0xee, 0xf7, 0x52, 0xff, 0x07, 0x46, 0x26, 0xb9, 0x63, 0x6b, 0x43, 0xf0, + 0x00, 0x63, 0x63, 0x63, 0x68, 0xe0, 0x94, 0xf8, 0x30, 0x30, 0x01, 0x2b, + 0x40, 0xf0, 0xd7, 0x80, 0x42, 0x46, 0x4b, 0x46, 0x51, 0x46, 0x58, 0x46, + 0x07, 0xf0, 0x16, 0xff, 0x82, 0x46, 0x42, 0x46, 0x4b, 0x46, 0xdd, 0xe9, + 0x14, 0x01, 0x07, 0xf0, 0x0f, 0xff, 0x22, 0x6d, 0x0a, 0xeb, 0x00, 0x01, 0x00, 0x23, 0x80, 0x46, 0x91, 0x42, 0x63, 0x63, 0x03, 0xd9, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x73, 0xdf, 0xe7, 0xd4, 0xf8, 0x00, 0xb0, 0x03, 0x22, 0x4f, 0xea, 0x48, 0x29, 0x84, 0xf8, 0x30, 0x20, 0xcb, 0xf8, 0x2c, 0x30, 0xa3, 0x6b, 0x01, 0x2b, 0x4f, 0xf0, 0xff, 0x33, 0xcb, 0xf8, 0x24, 0x30, 0x18, 0xbf, 0x4f, 0xea, 0x4a, 0x2a, 0xcb, 0xf8, 0x28, 0x90, 0xb8, 0xf1, 0x01, 0x0f, 0xdb, 0xf8, 0x2c, 0x30, 0x23, 0xf0, 0xff, 0x03, 0x43, 0xf0, - 0x92, 0x03, 0xcb, 0xf8, 0x2c, 0x30, 0xdb, 0xf8, 0x0c, 0x30, 0x43, 0xf0, - 0x40, 0x03, 0xcb, 0xf8, 0x0c, 0x30, 0x28, 0xd9, 0x02, 0x23, 0xcd, 0xf8, - 0x14, 0xa0, 0x4f, 0xf0, 0x12, 0x0a, 0xe3, 0x62, 0x4f, 0xf4, 0x80, 0x71, + 0x90, 0x03, 0xcb, 0xf8, 0x2c, 0x30, 0xdb, 0xf8, 0x0c, 0x30, 0x43, 0xf0, + 0x40, 0x03, 0xcb, 0xf8, 0x0c, 0x30, 0x27, 0xd9, 0x20, 0x23, 0xcd, 0xf8, + 0x14, 0xa0, 0x4f, 0xf0, 0x19, 0x0a, 0xe3, 0x62, 0x4f, 0xf4, 0x80, 0x71, 0x00, 0x23, 0x58, 0x46, 0xcd, 0xf8, 0x18, 0xa0, 0xcd, 0xe9, 0x07, 0x13, - 0x4f, 0xf4, 0x80, 0x53, 0x05, 0xa9, 0x09, 0x93, 0xec, 0xf7, 0x84, 0xf9, - 0x41, 0xf2, 0x88, 0x32, 0x51, 0x46, 0x58, 0x46, 0xef, 0xf7, 0x40, 0xf8, - 0x00, 0x28, 0x3e, 0xd0, 0x23, 0x68, 0x4b, 0x4a, 0x9a, 0x63, 0x63, 0x6b, - 0x18, 0x43, 0x60, 0x63, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0x00, 0x23, - 0xe3, 0x62, 0x47, 0x4c, 0x76, 0xe0, 0x01, 0x23, 0xcd, 0xf8, 0x14, 0xa0, - 0x4f, 0xf0, 0x11, 0x0a, 0xe3, 0x62, 0xd5, 0xe7, 0x43, 0x6b, 0x1a, 0x04, - 0x19, 0xd5, 0xb9, 0xf1, 0x1f, 0x0f, 0x16, 0xd9, 0x33, 0x1d, 0x06, 0xf1, - 0x24, 0x01, 0x22, 0x68, 0x04, 0x33, 0xd2, 0xf8, 0x80, 0x20, 0x10, 0x0a, - 0x03, 0xf8, 0x08, 0x2c, 0x03, 0xf8, 0x07, 0x0c, 0x10, 0x0c, 0x12, 0x0e, - 0x03, 0xf8, 0x06, 0x0c, 0x03, 0xf8, 0x05, 0x2c, 0x8b, 0x42, 0xee, 0xd1, - 0x20, 0x36, 0xa9, 0xf1, 0x20, 0x09, 0xed, 0xf7, 0xf7, 0xff, 0x03, 0x9b, - 0xc0, 0x1b, 0x83, 0x42, 0x07, 0xd8, 0x23, 0x68, 0x2f, 0x4a, 0x9a, 0x63, - 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x43, 0x63, 0x63, 0xc6, 0xe7, 0x20, 0x68, - 0x43, 0x6b, 0x13, 0xf4, 0x95, 0x7f, 0xcf, 0xd0, 0xc3, 0x68, 0x23, 0xf0, - 0x40, 0x03, 0xc3, 0x60, 0x43, 0x6b, 0xdb, 0x05, 0x09, 0xd5, 0xb8, 0xf1, - 0x01, 0x0f, 0x06, 0xd9, 0xa3, 0x6b, 0x03, 0x2b, 0x03, 0xd0, 0xef, 0xf7, - 0x01, 0xf9, 0x00, 0x28, 0xaa, 0xd1, 0x22, 0x68, 0x50, 0x6b, 0x10, 0xf0, - 0x08, 0x00, 0x05, 0xd0, 0x1e, 0x4b, 0x93, 0x63, 0x63, 0x6b, 0x43, 0xf0, - 0x08, 0x03, 0xdc, 0xe7, 0x51, 0x6b, 0x11, 0xf0, 0x02, 0x01, 0x0a, 0xd0, - 0x19, 0x4b, 0x93, 0x63, 0x63, 0x6b, 0x43, 0xf0, 0x02, 0x03, 0x63, 0x63, - 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0xe0, 0x62, 0x9b, 0xe7, 0x53, 0x6b, - 0x13, 0xf0, 0x20, 0x03, 0x0a, 0xd0, 0x12, 0x4b, 0x93, 0x63, 0x63, 0x6b, - 0x43, 0xf0, 0x20, 0x03, 0x63, 0x63, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, - 0xe1, 0x62, 0x8c, 0xe7, 0x0e, 0x49, 0x91, 0x63, 0x01, 0x22, 0x84, 0xf8, - 0x30, 0x20, 0x1c, 0x46, 0xef, 0xf7, 0x4c, 0xf8, 0x04, 0x28, 0xfb, 0xd1, - 0x2b, 0x68, 0x28, 0x46, 0x1b, 0x6d, 0x98, 0x47, 0x01, 0xe7, 0x63, 0x6b, - 0x43, 0xf0, 0x00, 0x53, 0x0d, 0xe7, 0x06, 0x4c, 0xfb, 0xe6, 0x00, 0xbf, - 0x74, 0xec, 0xff, 0xff, 0x04, 0x6c, 0x00, 0x24, 0xff, 0x0f, 0xe0, 0x1f, - 0x6d, 0xec, 0xff, 0xff, 0x3a, 0x0f, 0x00, 0x18, 0x75, 0xec, 0xff, 0xff, - 0x03, 0x68, 0x2d, 0xe9, 0xf0, 0x4f, 0xdb, 0x6c, 0x9f, 0xb0, 0xb8, 0x4c, - 0x05, 0x46, 0x98, 0x47, 0xb7, 0x4b, 0xb8, 0x4e, 0x4f, 0xf4, 0x80, 0x42, - 0x23, 0x60, 0x04, 0x23, 0xe2, 0x60, 0x4f, 0xf0, 0x01, 0x08, 0x63, 0x61, - 0x00, 0x23, 0xb4, 0x4f, 0x4f, 0xf0, 0x03, 0x09, 0x23, 0x61, 0x0e, 0xa9, - 0x38, 0x46, 0xc4, 0xe9, 0x01, 0x33, 0xd6, 0xf8, 0xe0, 0x20, 0x42, 0xf0, - 0x40, 0x02, 0xc6, 0xf8, 0xe0, 0x20, 0xd6, 0xf8, 0xe0, 0x20, 0x10, 0x93, - 0x02, 0xf0, 0x40, 0x02, 0xcd, 0xf8, 0x44, 0x90, 0x07, 0x92, 0x07, 0x9a, - 0x08, 0x22, 0xcd, 0xe9, 0x0e, 0x28, 0xf2, 0xf7, 0x03, 0xfb, 0x4f, 0xf4, - 0x00, 0x23, 0x0e, 0xa9, 0xa5, 0x48, 0xbb, 0x61, 0x02, 0x27, 0xd6, 0xf8, - 0xdc, 0x30, 0x43, 0xf4, 0x00, 0x73, 0xc6, 0xf8, 0xdc, 0x30, 0xd6, 0xf8, - 0xdc, 0x30, 0x03, 0xf4, 0x00, 0x73, 0x06, 0x93, 0x06, 0x9b, 0xd6, 0xf8, - 0xe0, 0x30, 0x43, 0xf0, 0x02, 0x03, 0xc6, 0xf8, 0xe0, 0x30, 0xd6, 0xf8, - 0xe0, 0x30, 0x03, 0xf0, 0x02, 0x03, 0x05, 0x93, 0x05, 0x9b, 0xd6, 0xf8, - 0xe0, 0x30, 0x43, 0xf0, 0x08, 0x03, 0xc6, 0xf8, 0xe0, 0x30, 0xd6, 0xf8, - 0xe0, 0x30, 0xcd, 0xf8, 0x44, 0x90, 0x03, 0xf0, 0x08, 0x03, 0x04, 0x93, - 0x04, 0x9b, 0x09, 0x23, 0x12, 0x93, 0x4c, 0xf2, 0x18, 0x03, 0xcd, 0xe9, - 0x0f, 0x78, 0x0e, 0x93, 0xf2, 0xf7, 0xce, 0xfa, 0xc0, 0x23, 0x0e, 0xa9, - 0x8c, 0x48, 0x0e, 0x93, 0x0b, 0x23, 0x12, 0x93, 0xf2, 0xf7, 0xc6, 0xfa, - 0x05, 0x21, 0x7c, 0x20, 0xeb, 0xf7, 0xbe, 0xfe, 0x88, 0x4b, 0x4f, 0xf0, - 0x80, 0x52, 0xda, 0x60, 0x8d, 0xf8, 0x0f, 0x80, 0x9d, 0xf8, 0x0f, 0x30, - 0x01, 0x2b, 0x5f, 0xfa, 0x83, 0xf8, 0x12, 0xd0, 0x7c, 0x20, 0xf2, 0xf7, - 0x81, 0xfc, 0xd6, 0xf8, 0xdc, 0x30, 0x28, 0x46, 0x23, 0xf4, 0x00, 0x73, - 0xc6, 0xf8, 0xdc, 0x30, 0x2b, 0x68, 0x85, 0xf8, 0x54, 0x70, 0x1b, 0x6d, - 0x98, 0x47, 0x7c, 0x48, 0x1f, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x94, 0xf8, - 0x30, 0x30, 0x03, 0xf0, 0xff, 0x02, 0x03, 0xb9, 0x22, 0x76, 0x03, 0x23, - 0x84, 0xf8, 0x30, 0x30, 0xec, 0xf7, 0x52, 0xf8, 0x70, 0xb9, 0x01, 0x23, - 0x84, 0xf8, 0x30, 0x30, 0x4f, 0xf0, 0x00, 0x63, 0x63, 0x63, 0x01, 0x23, - 0x28, 0x46, 0x85, 0xf8, 0x54, 0x30, 0x2b, 0x68, 0x1b, 0x6d, 0x98, 0x47, - 0x6e, 0x48, 0xe1, 0xe7, 0x21, 0x68, 0x6e, 0x4b, 0x4a, 0x68, 0x6e, 0x4f, - 0xb0, 0xfb, 0xf3, 0xf3, 0x3a, 0x40, 0x1a, 0x43, 0x5b, 0x00, 0xb0, 0xfb, - 0xf3, 0xf0, 0x6b, 0x4b, 0x4a, 0x60, 0x0a, 0x68, 0xb3, 0xfb, 0xf0, 0xf0, - 0x42, 0xf0, 0x03, 0x02, 0x01, 0x30, 0x0a, 0x60, 0xf2, 0xf7, 0x54, 0xfc, - 0x00, 0x23, 0x20, 0x68, 0x08, 0x93, 0xee, 0xf7, 0xc7, 0xff, 0x83, 0x46, - 0x88, 0xbb, 0x4f, 0xf4, 0xd5, 0x70, 0x08, 0x22, 0xd4, 0xf8, 0x00, 0x90, - 0x0e, 0xa9, 0x60, 0x4e, 0xcd, 0xe9, 0x0e, 0x02, 0x4f, 0xf4, 0x80, 0x72, - 0x48, 0x46, 0xcd, 0xe9, 0x10, 0x2b, 0x4f, 0xf4, 0x80, 0x52, 0x12, 0x92, - 0xec, 0xf7, 0x02, 0xf8, 0x32, 0x68, 0x4f, 0xf4, 0xfa, 0x51, 0xb2, 0xfb, - 0xf1, 0xf1, 0x41, 0xf2, 0x88, 0x32, 0x4a, 0x43, 0x01, 0x3a, 0x0d, 0xd3, - 0xd9, 0xf8, 0x34, 0x10, 0x11, 0xf0, 0x45, 0x0f, 0xf8, 0xd0, 0x89, 0x04, - 0xf6, 0xd4, 0xd9, 0xf8, 0x34, 0x20, 0x52, 0x07, 0x10, 0xd5, 0x04, 0x22, - 0xc9, 0xf8, 0x38, 0x20, 0x00, 0x22, 0x20, 0x68, 0xe2, 0x63, 0xee, 0xf7, - 0x95, 0xff, 0xf0, 0xb1, 0x83, 0x46, 0x01, 0x22, 0x84, 0xf8, 0x30, 0x20, - 0x63, 0x6b, 0x43, 0xea, 0x0b, 0x03, 0x9f, 0xe7, 0xd9, 0xf8, 0x34, 0x20, - 0xd3, 0x07, 0x01, 0xd5, 0x01, 0x22, 0xe9, 0xe7, 0xd9, 0xf8, 0x34, 0x20, - 0x50, 0x06, 0x02, 0xd5, 0x40, 0x22, 0xc9, 0xf8, 0x38, 0x20, 0x01, 0x22, - 0xe2, 0x63, 0x00, 0x21, 0x20, 0x68, 0xee, 0xf7, 0x60, 0xff, 0x28, 0xb1, - 0x4f, 0xf0, 0x80, 0x5b, 0xe1, 0xe7, 0xe2, 0x6b, 0x01, 0x2a, 0xf4, 0xd0, - 0x4f, 0xf6, 0xfe, 0x79, 0x00, 0x21, 0xca, 0x46, 0x37, 0xe0, 0x20, 0x68, - 0xee, 0xf7, 0x51, 0xff, 0x83, 0x46, 0x00, 0x28, 0xd3, 0xd1, 0x35, 0x4b, - 0x29, 0x21, 0x22, 0x68, 0xcd, 0xe9, 0x0e, 0x31, 0x4f, 0xf4, 0x80, 0x71, - 0x4f, 0xf4, 0x80, 0x53, 0x01, 0x92, 0x12, 0x93, 0xcd, 0xe9, 0x10, 0x10, - 0x0e, 0xa9, 0x10, 0x46, 0xeb, 0xf7, 0xa6, 0xff, 0x33, 0x68, 0x4f, 0xf4, - 0xfa, 0x51, 0x01, 0x9a, 0xb3, 0xfb, 0xf1, 0xf1, 0x41, 0xf2, 0x88, 0x33, - 0x4b, 0x43, 0x01, 0x3b, 0xd2, 0xd3, 0x51, 0x6b, 0x11, 0xf0, 0x45, 0x0f, - 0xf9, 0xd0, 0x89, 0x04, 0xf7, 0xd4, 0x53, 0x6b, 0x5b, 0x07, 0x02, 0xd5, - 0x04, 0x23, 0x93, 0x63, 0xc6, 0xe7, 0x22, 0x4b, 0x93, 0x63, 0x23, 0x68, - 0xd3, 0xf8, 0x14, 0xb0, 0x08, 0x9a, 0x4f, 0xea, 0xdb, 0x71, 0x01, 0x32, - 0x08, 0x92, 0x08, 0x9a, 0x4a, 0x45, 0x01, 0xd8, 0x00, 0x29, 0xc2, 0xd0, - 0x08, 0x9a, 0x52, 0x45, 0x13, 0xd8, 0x1b, 0xf0, 0x80, 0x4f, 0x01, 0xd0, - 0x01, 0x23, 0xa3, 0x63, 0xd4, 0xf8, 0x00, 0x90, 0xd9, 0xf8, 0x00, 0x30, - 0x98, 0x07, 0x29, 0xd1, 0x4f, 0xf0, 0x80, 0x60, 0x01, 0x23, 0x84, 0xf8, - 0x30, 0x30, 0x63, 0x6b, 0x18, 0x43, 0x60, 0x63, 0x2d, 0xe7, 0x4f, 0xf0, - 0x80, 0x7b, 0x82, 0xe7, 0x04, 0x6c, 0x00, 0x24, 0x00, 0x24, 0x02, 0x48, - 0x00, 0x44, 0x02, 0x58, 0x00, 0x18, 0x02, 0x58, 0x00, 0x04, 0x02, 0x58, - 0x00, 0x0c, 0x02, 0x58, 0x00, 0xe1, 0x00, 0xe0, 0x73, 0xec, 0xff, 0xff, - 0x74, 0xec, 0xff, 0xff, 0x00, 0x35, 0x0c, 0x00, 0x00, 0x2c, 0xc0, 0xff, - 0x10, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x10, 0xc1, - 0xc5, 0x00, 0x20, 0x00, 0xa3, 0x6b, 0x03, 0x2b, 0x69, 0xd0, 0x00, 0x23, - 0x02, 0x22, 0x4f, 0xf4, 0x80, 0x5a, 0x0e, 0xa9, 0x48, 0x46, 0xcd, 0xf8, - 0x48, 0xa0, 0xcd, 0xe9, 0x0e, 0x32, 0x4f, 0xf4, 0x40, 0x72, 0xcd, 0xe9, - 0x10, 0x23, 0xeb, 0xf7, 0x35, 0xff, 0x48, 0x46, 0xee, 0xf7, 0xcc, 0xfd, - 0x00, 0x28, 0xbf, 0xd1, 0xd4, 0xf8, 0x00, 0x90, 0xd9, 0xf8, 0x14, 0x30, - 0xe3, 0x66, 0xd9, 0xf8, 0x18, 0x30, 0x23, 0x67, 0xd9, 0xf8, 0x1c, 0x30, - 0x63, 0x67, 0xd9, 0xf8, 0x20, 0x30, 0xa3, 0x67, 0xa3, 0x6b, 0x03, 0x2b, - 0x43, 0xd0, 0x4f, 0xf4, 0x80, 0x73, 0x03, 0x21, 0x0e, 0x90, 0xcd, 0xe9, - 0x0f, 0x13, 0xcd, 0xe9, 0x11, 0x0a, 0x0e, 0xa9, 0x48, 0x46, 0xeb, 0xf7, - 0x13, 0xff, 0x33, 0x68, 0x4f, 0xf4, 0xfa, 0x52, 0xb3, 0xfb, 0xf2, 0xf2, - 0x41, 0xf2, 0x88, 0x33, 0x53, 0x43, 0x01, 0x3b, 0xc0, 0xf0, 0x1c, 0x81, - 0xd9, 0xf8, 0x34, 0x20, 0x12, 0xf0, 0x45, 0x0f, 0xf7, 0xd0, 0x92, 0x04, - 0xf5, 0xd4, 0xd9, 0xf8, 0x34, 0x30, 0x5b, 0x07, 0x03, 0xd5, 0x04, 0x20, - 0xc9, 0xf8, 0x38, 0x00, 0x88, 0xe7, 0xd9, 0xf8, 0x34, 0x00, 0x10, 0xf0, - 0x01, 0x00, 0x03, 0xd0, 0x01, 0x23, 0xc9, 0xf8, 0x38, 0x30, 0x7f, 0xe7, - 0xd9, 0xf8, 0x10, 0x30, 0xdb, 0xb2, 0x03, 0x2b, 0x40, 0xf0, 0xfc, 0x80, - 0xc9, 0x4b, 0xc9, 0xf8, 0x38, 0x30, 0xd9, 0xf8, 0x14, 0x30, 0x13, 0xf4, - 0x60, 0x42, 0x40, 0xf0, 0xe6, 0x80, 0xa1, 0x6b, 0x1b, 0x0c, 0x26, 0x68, - 0x03, 0x29, 0x40, 0xf0, 0xf2, 0x80, 0xd4, 0xf8, 0x00, 0xb0, 0xdb, 0xf8, - 0x18, 0x30, 0x1b, 0x0d, 0x23, 0x64, 0xe3, 0x6d, 0x9a, 0x0f, 0x8d, 0xf8, - 0x38, 0x20, 0xc3, 0xf3, 0x83, 0x62, 0x8d, 0xf8, 0x39, 0x20, 0xc3, 0xf3, - 0x01, 0x62, 0x8d, 0xf8, 0x3a, 0x20, 0xc3, 0xf3, 0x07, 0x42, 0x8d, 0xf8, - 0x3b, 0x20, 0xc3, 0xf3, 0x07, 0x22, 0xdb, 0xb2, 0x8d, 0xf8, 0x3c, 0x20, - 0x8d, 0xf8, 0x3d, 0x30, 0x23, 0x6e, 0x1a, 0x0d, 0xad, 0xf8, 0x3e, 0x20, - 0xc3, 0xf3, 0x03, 0x42, 0x8d, 0xf8, 0x40, 0x20, 0xc3, 0xf3, 0xc0, 0x32, - 0x8d, 0xf8, 0x41, 0x20, 0xc3, 0xf3, 0x80, 0x32, 0x8d, 0xf8, 0x42, 0x20, - 0xc3, 0xf3, 0x40, 0x32, 0x8d, 0xf8, 0x43, 0x20, 0xc3, 0xf3, 0x00, 0x32, - 0x8d, 0xf8, 0x44, 0x20, 0x00, 0x22, 0x8d, 0xf8, 0x45, 0x20, 0xa2, 0x6b, - 0x00, 0x2a, 0x40, 0xf0, 0xd6, 0x80, 0x40, 0xf6, 0xfc, 0x71, 0x62, 0x6e, - 0x01, 0xea, 0x83, 0x03, 0x43, 0xea, 0x92, 0x73, 0x12, 0x93, 0xc2, 0xf3, - 0xc2, 0x63, 0x8d, 0xf8, 0x4c, 0x30, 0xc2, 0xf3, 0x02, 0x63, 0x8d, 0xf8, - 0x4d, 0x30, 0xc2, 0xf3, 0x42, 0x53, 0x8d, 0xf8, 0x4e, 0x30, 0xc2, 0xf3, - 0x82, 0x43, 0xc2, 0xf3, 0xc2, 0x32, 0x8d, 0xf8, 0x4f, 0x30, 0x8d, 0xf8, - 0x50, 0x20, 0x12, 0x9b, 0x9d, 0xf8, 0x50, 0x20, 0x01, 0x33, 0x02, 0xf0, - 0x07, 0x02, 0x02, 0x32, 0x93, 0x40, 0x9d, 0xf8, 0x40, 0x20, 0x02, 0xf0, - 0x0f, 0x01, 0x01, 0x22, 0xa3, 0x64, 0x8a, 0x40, 0xe2, 0x64, 0x52, 0x0a, - 0x53, 0x43, 0x23, 0x65, 0x4f, 0xf4, 0x00, 0x73, 0x63, 0x65, 0x4f, 0xf0, - 0x01, 0x0a, 0x63, 0x6e, 0x4f, 0xf4, 0x80, 0x79, 0x4f, 0xf4, 0x80, 0x56, - 0x58, 0x46, 0xc3, 0xf3, 0x80, 0x32, 0x0d, 0x96, 0x8d, 0xf8, 0x51, 0x20, - 0xc3, 0xf3, 0xc6, 0x12, 0x03, 0xf0, 0x7f, 0x03, 0x8d, 0xf8, 0x52, 0x20, - 0x8d, 0xf8, 0x53, 0x30, 0xa3, 0x6e, 0xda, 0x0f, 0xc3, 0xf3, 0x00, 0x41, - 0x8d, 0xf8, 0x54, 0x20, 0xc3, 0xf3, 0x41, 0x72, 0x8d, 0xf8, 0x55, 0x20, - 0xc3, 0xf3, 0x82, 0x62, 0x8d, 0xf8, 0x56, 0x20, 0xc3, 0xf3, 0x83, 0x52, - 0x8d, 0xf8, 0x57, 0x20, 0xc3, 0xf3, 0x40, 0x52, 0x8d, 0xf8, 0x58, 0x20, - 0x00, 0x22, 0x8d, 0xf8, 0x59, 0x20, 0x8d, 0xf8, 0x5a, 0x10, 0xc3, 0xf3, - 0xc0, 0x31, 0x0c, 0x92, 0x8d, 0xf8, 0x5b, 0x10, 0xc3, 0xf3, 0x80, 0x31, - 0x8d, 0xf8, 0x5c, 0x10, 0xc3, 0xf3, 0x40, 0x31, 0x8d, 0xf8, 0x5d, 0x10, - 0xc3, 0xf3, 0x00, 0x31, 0x8d, 0xf8, 0x5e, 0x10, 0xc3, 0xf3, 0x81, 0x21, - 0x8d, 0xf8, 0x5f, 0x10, 0xc3, 0xf3, 0x01, 0x21, 0xc3, 0xf3, 0x46, 0x03, - 0x8d, 0xf8, 0x60, 0x10, 0x09, 0xa9, 0x8d, 0xf8, 0x61, 0x30, 0x63, 0x6c, - 0x8d, 0xf8, 0x62, 0xa0, 0x1b, 0x04, 0x09, 0x93, 0x07, 0x23, 0xcd, 0xe9, - 0x0a, 0x39, 0xeb, 0xf7, 0x15, 0xfe, 0x07, 0x23, 0x41, 0xf2, 0x88, 0x32, - 0x58, 0x46, 0x19, 0x46, 0xee, 0xf7, 0xd0, 0xfc, 0x00, 0x28, 0x7f, 0xf4, - 0x9b, 0xae, 0x4f, 0xf4, 0x00, 0x71, 0x20, 0x68, 0xee, 0xf7, 0x08, 0xfe, - 0x00, 0x28, 0x59, 0xd0, 0x23, 0x68, 0x57, 0x4a, 0x9a, 0x63, 0x63, 0x6b, - 0x18, 0x43, 0x60, 0x63, 0x84, 0xf8, 0x30, 0xa0, 0xbf, 0xe5, 0x5e, 0x04, - 0x07, 0xd4, 0x13, 0xf4, 0x00, 0x4f, 0x0c, 0xbf, 0x4f, 0xf4, 0x80, 0x30, - 0x4f, 0xf4, 0x80, 0x50, 0x80, 0xe6, 0x4f, 0xf4, 0x00, 0x50, 0x7d, 0xe6, - 0x01, 0x20, 0x7b, 0xe6, 0x4f, 0xf0, 0x00, 0x40, 0x78, 0xe6, 0x63, 0x64, - 0x1b, 0x04, 0x09, 0x21, 0x30, 0x46, 0x0e, 0x93, 0x4f, 0xf4, 0x40, 0x73, - 0x11, 0x92, 0xcd, 0xe9, 0x0f, 0x13, 0x4f, 0xf4, 0x80, 0x53, 0x0e, 0xa9, - 0x12, 0x93, 0xeb, 0xf7, 0xd9, 0xfd, 0x30, 0x46, 0xee, 0xf7, 0x70, 0xfc, - 0x00, 0x28, 0x7f, 0xf4, 0x63, 0xae, 0x23, 0x68, 0x5a, 0x69, 0xe2, 0x65, - 0x9a, 0x69, 0x22, 0x66, 0xda, 0x69, 0x62, 0x66, 0x1b, 0x6a, 0xa3, 0x66, - 0xed, 0xe6, 0x01, 0x2a, 0x0f, 0xd1, 0x1b, 0x04, 0xb4, 0xf8, 0x66, 0x20, - 0x03, 0xf4, 0x7c, 0x13, 0x13, 0x43, 0x12, 0x93, 0x12, 0x9b, 0x01, 0x33, - 0x9b, 0x02, 0xa3, 0x64, 0x23, 0x65, 0x4f, 0xf4, 0x00, 0x73, 0xe3, 0x64, - 0x48, 0xe7, 0x31, 0x4b, 0x4f, 0xf0, 0x80, 0x50, 0xcb, 0xf8, 0x38, 0x30, - 0x63, 0x6b, 0x43, 0xf0, 0x80, 0x53, 0x63, 0x63, 0x01, 0x23, 0x84, 0xf8, - 0x30, 0x30, 0x39, 0xe6, 0xed, 0xf7, 0x56, 0xfc, 0x82, 0x46, 0x20, 0x68, - 0x43, 0x69, 0x9b, 0x01, 0x00, 0xf1, 0xc3, 0x80, 0x40, 0x21, 0xee, 0xf7, - 0xa1, 0xfd, 0x58, 0xb1, 0x63, 0x6b, 0x63, 0x63, 0x23, 0x68, 0x23, 0x4a, - 0x9a, 0x63, 0x63, 0x6b, 0x18, 0x43, 0x01, 0x23, 0x60, 0x63, 0x84, 0xf8, - 0x30, 0x30, 0x9f, 0xe0, 0x61, 0x6c, 0x20, 0x68, 0x09, 0x04, 0xee, 0xf7, - 0x24, 0xfd, 0x00, 0x28, 0xec, 0xd1, 0xd4, 0xf8, 0x00, 0xb0, 0x4f, 0xf0, - 0xff, 0x33, 0x0e, 0xa9, 0xcb, 0xf8, 0x24, 0x30, 0x40, 0x23, 0xcb, 0xf8, - 0x28, 0x30, 0xdb, 0xf8, 0x2c, 0x30, 0x23, 0xf0, 0xff, 0x03, 0x43, 0xf0, - 0x63, 0x03, 0xcb, 0xf8, 0x2c, 0x30, 0x0d, 0x23, 0x0e, 0x90, 0xcd, 0xe9, - 0x11, 0x06, 0x58, 0x46, 0xcd, 0xe9, 0x0f, 0x39, 0xeb, 0xf7, 0x70, 0xfd, - 0x0d, 0x23, 0x41, 0xf2, 0x88, 0x32, 0x58, 0x46, 0x19, 0x46, 0xee, 0xf7, - 0x2b, 0xfc, 0x00, 0x28, 0xc8, 0xd1, 0x0e, 0xae, 0x23, 0x68, 0x5a, 0x6b, - 0x12, 0xf4, 0x95, 0x7f, 0x5a, 0x6b, 0x0d, 0xd0, 0x11, 0x07, 0x7c, 0xd4, - 0x5a, 0x6b, 0x92, 0x07, 0x77, 0xd4, 0x5b, 0x6b, 0x9b, 0x06, 0x22, 0xd5, - 0x20, 0x20, 0xb9, 0xe7, 0xc5, 0x00, 0x20, 0x00, 0xff, 0x0f, 0xe0, 0x1f, - 0x10, 0x04, 0x07, 0xd5, 0x06, 0xf1, 0x20, 0x02, 0xd3, 0xf8, 0x80, 0x10, - 0x46, 0xf8, 0x04, 0x1b, 0x96, 0x42, 0xf9, 0xd1, 0xed, 0xf7, 0xf4, 0xfb, - 0xa0, 0xeb, 0x0a, 0x00, 0x01, 0x30, 0xdb, 0xd1, 0x4f, 0xf0, 0x00, 0x40, - 0xa2, 0xe7, 0xd2, 0xf8, 0x80, 0x30, 0x46, 0xf8, 0x04, 0x3b, 0xed, 0xf7, - 0xe7, 0xfb, 0xa0, 0xeb, 0x0a, 0x00, 0x01, 0x30, 0xf2, 0xd0, 0x22, 0x68, - 0x53, 0x6b, 0x13, 0xf4, 0x80, 0x53, 0xf0, 0xd1, 0xa8, 0x49, 0x91, 0x63, - 0x0e, 0x99, 0xc1, 0xf3, 0x81, 0x12, 0x8d, 0xf8, 0x24, 0x20, 0xc1, 0xf3, - 0x40, 0x12, 0x8d, 0xf8, 0x25, 0x20, 0x0a, 0x0a, 0x22, 0xf0, 0xff, 0x02, - 0x42, 0xea, 0x11, 0x62, 0x92, 0xb2, 0xad, 0xf8, 0x26, 0x20, 0x0f, 0x9a, - 0x12, 0xba, 0x0a, 0x92, 0x10, 0x9a, 0xd1, 0xb2, 0x8d, 0xf8, 0x2c, 0x10, - 0xc2, 0xf3, 0x07, 0x21, 0x8d, 0xf8, 0x2d, 0x10, 0xc2, 0xf3, 0x03, 0x51, - 0x12, 0x0c, 0x8d, 0xf8, 0x2e, 0x10, 0x11, 0x99, 0x22, 0xf0, 0xff, 0x02, - 0xc8, 0xb2, 0x02, 0x43, 0xad, 0xf8, 0x30, 0x20, 0xc1, 0xf3, 0x85, 0x22, - 0x8d, 0xf8, 0x32, 0x20, 0xc1, 0xf3, 0x01, 0x22, 0x8d, 0xf8, 0x33, 0x20, - 0xc1, 0xf3, 0x03, 0x12, 0x01, 0xf0, 0x0f, 0x01, 0x8d, 0xf8, 0x34, 0x20, - 0x9d, 0xf8, 0x4b, 0x20, 0x8d, 0xf8, 0x35, 0x10, 0x8d, 0xf8, 0x36, 0x20, - 0x4f, 0xf4, 0x00, 0x71, 0x20, 0x68, 0x1e, 0x46, 0xee, 0xf7, 0xee, 0xfc, - 0x70, 0xb1, 0x23, 0x68, 0x86, 0x4a, 0x9a, 0x63, 0x60, 0x63, 0x01, 0x23, - 0x84, 0xf8, 0x30, 0x30, 0xa7, 0xe4, 0x02, 0x20, 0x44, 0xe7, 0x08, 0x20, - 0x42, 0xe7, 0x4f, 0xf4, 0x00, 0x60, 0x3f, 0xe7, 0x00, 0x2e, 0x7f, 0xf4, - 0x9e, 0xac, 0xa1, 0x6b, 0x9d, 0xf8, 0x34, 0x20, 0x01, 0x29, 0x9d, 0xf8, - 0x35, 0x30, 0xd2, 0xb2, 0xdb, 0xb2, 0x13, 0xd1, 0x13, 0x43, 0x14, 0xbf, - 0x4f, 0xf4, 0x00, 0x73, 0x4f, 0xf4, 0x80, 0x73, 0xa3, 0x65, 0x03, 0x23, - 0xe6, 0x68, 0x99, 0x42, 0x84, 0xf8, 0x30, 0x30, 0x02, 0xd0, 0xb6, 0xf5, - 0x00, 0x4f, 0x05, 0xd1, 0x63, 0x6b, 0x43, 0xf0, 0x80, 0x53, 0x5c, 0xe0, - 0xa6, 0x65, 0xf0, 0xe7, 0xb6, 0xf5, 0x80, 0x4f, 0x33, 0xd1, 0x00, 0x23, - 0xcd, 0xe9, 0x0e, 0x33, 0x23, 0x68, 0x5b, 0x69, 0x98, 0x01, 0x26, 0xd4, - 0x0e, 0xa8, 0xee, 0xf7, 0xc9, 0xfc, 0x60, 0xb9, 0x0f, 0x9b, 0x59, 0x03, - 0x22, 0xd5, 0x61, 0x6c, 0x20, 0x68, 0x09, 0x04, 0xee, 0xf7, 0x3b, 0xfc, - 0x18, 0xb9, 0x02, 0x21, 0x20, 0x68, 0xee, 0xf7, 0x1d, 0xfc, 0x63, 0x6b, - 0x18, 0x43, 0x60, 0x63, 0x63, 0x6b, 0x00, 0x2b, 0x3b, 0xd0, 0x23, 0x68, - 0x5d, 0x4a, 0x9a, 0x63, 0x4f, 0xf4, 0x00, 0x71, 0x20, 0x68, 0xee, 0xf7, - 0x93, 0xfc, 0x00, 0x28, 0x6d, 0xd0, 0x23, 0x68, 0x58, 0x4a, 0x9a, 0x63, - 0x63, 0x6b, 0x18, 0x43, 0xa0, 0xe7, 0x4f, 0xf4, 0x00, 0x60, 0xe6, 0xe7, - 0x4f, 0xf0, 0x80, 0x60, 0xe3, 0xe7, 0xfe, 0xb9, 0x23, 0x68, 0xcd, 0xe9, - 0x0e, 0x66, 0x5b, 0x69, 0x9a, 0x01, 0x13, 0xd4, 0x0e, 0xa8, 0xee, 0xf7, - 0x95, 0xfc, 0x60, 0xb9, 0x0f, 0x9b, 0xdb, 0x03, 0x0f, 0xd5, 0x61, 0x6c, - 0x20, 0x68, 0x09, 0x04, 0xee, 0xf7, 0x07, 0xfc, 0x18, 0xb9, 0x01, 0x46, - 0x20, 0x68, 0xee, 0xf7, 0xe9, 0xfb, 0x61, 0x6b, 0x08, 0x43, 0xca, 0xe7, - 0x4f, 0xf4, 0x00, 0x60, 0xf9, 0xe7, 0x4f, 0xf0, 0x80, 0x60, 0xf6, 0xe7, - 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x63, 0x63, 0x63, 0xc0, 0xe7, 0xeb, 0xf7, - 0x6b, 0xfc, 0x98, 0xb3, 0x3f, 0x4a, 0xb0, 0xfb, 0xf2, 0xf9, 0xd4, 0xe9, - 0x04, 0xc3, 0xd4, 0xe9, 0x01, 0x8e, 0x4b, 0x45, 0x0c, 0xd2, 0xa1, 0x6d, - 0xb1, 0xf5, 0x00, 0x7f, 0x08, 0xd0, 0xb1, 0xf5, 0x80, 0x7f, 0x19, 0xd1, - 0x9b, 0xb9, 0x90, 0x42, 0x02, 0xd9, 0x37, 0x4b, 0xb0, 0xfb, 0xf3, 0xf3, - 0x21, 0x68, 0x46, 0xea, 0x08, 0x06, 0x4f, 0xf0, 0x00, 0x08, 0x4a, 0x68, - 0x46, 0xea, 0x0e, 0x06, 0x17, 0x40, 0x46, 0xea, 0x0c, 0x06, 0x37, 0x43, - 0x1f, 0x43, 0x4f, 0x60, 0x9e, 0xe7, 0x59, 0x00, 0xb0, 0xfb, 0xf1, 0xf1, - 0x91, 0x42, 0xe7, 0xe7, 0x2c, 0x4a, 0x1b, 0xb9, 0x90, 0x42, 0x88, 0xbf, - 0x4b, 0x46, 0xe5, 0xe7, 0x59, 0x00, 0xb0, 0xfb, 0xf1, 0xf0, 0xf7, 0xe7, - 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x63, 0x63, 0x63, 0x8a, 0xe7, 0x01, 0x23, - 0x84, 0xf8, 0x30, 0x30, 0xb8, 0xf1, 0x00, 0x0f, 0x7f, 0xf4, 0xdf, 0xab, - 0xed, 0xf7, 0xc6, 0xfa, 0x06, 0x46, 0xee, 0xf7, 0x6b, 0xfb, 0x04, 0x28, - 0x2b, 0xd1, 0xe3, 0x6b, 0x00, 0x26, 0xa0, 0x6b, 0x01, 0x22, 0x66, 0x63, - 0x6b, 0x63, 0x23, 0x6c, 0xa1, 0x6c, 0xab, 0x63, 0x63, 0x6c, 0x27, 0x6d, - 0xe6, 0x62, 0x85, 0xf8, 0x54, 0x60, 0x84, 0xf8, 0x30, 0x20, 0xeb, 0x63, - 0xe3, 0x6c, 0x64, 0x6d, 0x28, 0x63, 0x29, 0x64, 0x28, 0x71, 0x28, 0x46, - 0x85, 0xf8, 0x80, 0x20, 0x6b, 0x64, 0xaf, 0x64, 0xec, 0x64, 0xc5, 0xe9, - 0x0a, 0x16, 0xc5, 0xe9, 0x02, 0x36, 0xc5, 0xe9, 0x04, 0x36, 0xc5, 0xe9, - 0x06, 0x36, 0xc5, 0xe9, 0x08, 0x36, 0x2b, 0x68, 0x1b, 0x6d, 0x98, 0x47, - 0x30, 0x46, 0xff, 0xf7, 0x97, 0xbb, 0xed, 0xf7, 0x93, 0xfa, 0x80, 0x1b, - 0x01, 0x30, 0xca, 0xd1, 0x4f, 0xf0, 0x00, 0x43, 0x63, 0x63, 0xf6, 0xe6, - 0x3a, 0x0f, 0x00, 0x18, 0xff, 0x0f, 0xe0, 0x1f, 0x80, 0xf0, 0xfa, 0x02, - 0x00, 0xe1, 0xf5, 0x05, 0x40, 0x78, 0x7d, 0x01, 0x0d, 0x4b, 0x4f, 0xf4, - 0x00, 0x72, 0x10, 0xb5, 0x03, 0x60, 0x00, 0x23, 0x04, 0x46, 0x5c, 0x30, - 0x40, 0xe9, 0x15, 0x23, 0x40, 0xe9, 0x13, 0x23, 0x40, 0xe9, 0x11, 0x23, - 0x40, 0xe9, 0x0f, 0x23, 0x00, 0x22, 0x00, 0x23, 0x40, 0xe9, 0x0d, 0x23, - 0xeb, 0xf7, 0x52, 0xfa, 0x4f, 0xf4, 0x7a, 0x73, 0x20, 0x46, 0xa3, 0x65, - 0x10, 0xbd, 0x00, 0xbf, 0x90, 0xec, 0x01, 0x08, 0x5c, 0x30, 0xf4, 0xf7, - 0x51, 0xba, 0x5c, 0x30, 0xf4, 0xf7, 0x6e, 0xba, 0x43, 0x68, 0x2d, 0xe9, - 0xf3, 0x47, 0xdd, 0xe9, 0x0a, 0x45, 0x80, 0x46, 0x91, 0x46, 0x3b, 0xb9, - 0x19, 0x48, 0x05, 0xf0, 0x5d, 0xfb, 0x6f, 0xf4, 0x7a, 0x60, 0x02, 0xb0, - 0xbd, 0xe8, 0xf0, 0x87, 0x00, 0x26, 0x00, 0x27, 0x4f, 0xf0, 0xff, 0x0a, - 0xbd, 0x42, 0x08, 0xbf, 0xb4, 0x42, 0x20, 0xd0, 0x00, 0x22, 0x09, 0xeb, - 0x06, 0x01, 0xd8, 0xf8, 0x04, 0x00, 0x03, 0xf0, 0xaf, 0xfb, 0x08, 0xb1, - 0x0e, 0x48, 0xe6, 0xe7, 0x01, 0x22, 0xd8, 0xf8, 0x04, 0x30, 0x0d, 0xf1, - 0x07, 0x00, 0x8d, 0xf8, 0x07, 0xa0, 0x11, 0x46, 0x05, 0xf0, 0x6a, 0xfa, - 0x01, 0x28, 0x02, 0x46, 0x05, 0xd0, 0xd8, 0xf8, 0x04, 0x10, 0x07, 0x48, - 0xf7, 0xf7, 0x24, 0xfe, 0xd5, 0xe7, 0x01, 0x36, 0x47, 0xf1, 0x00, 0x07, - 0xda, 0xe7, 0x00, 0x20, 0xd1, 0xe7, 0x00, 0xbf, 0xf3, 0xe7, 0x01, 0x08, - 0x0a, 0xe8, 0x01, 0x08, 0x18, 0xe8, 0x01, 0x08, 0xf8, 0xb5, 0x05, 0x46, - 0x40, 0x68, 0x0e, 0x46, 0x06, 0x9f, 0x11, 0x46, 0x30, 0xb9, 0x0e, 0x48, - 0x05, 0xf0, 0x1c, 0xfb, 0x6f, 0xf4, 0x7a, 0x64, 0x20, 0x46, 0xf8, 0xbd, - 0x00, 0x22, 0x03, 0xf0, 0x7b, 0xfb, 0x04, 0x46, 0x08, 0xb1, 0x09, 0x48, - 0xf2, 0xe7, 0x01, 0x22, 0x6b, 0x68, 0x39, 0x46, 0x30, 0x46, 0x05, 0xf0, - 0x39, 0xfa, 0x01, 0x28, 0x02, 0x46, 0xed, 0xd0, 0x69, 0x68, 0x04, 0x48, - 0xf7, 0xf7, 0xf4, 0xfd, 0xe6, 0xe7, 0x00, 0xbf, 0x37, 0xe8, 0x01, 0x08, - 0x50, 0xe8, 0x01, 0x08, 0x60, 0xe8, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x41, - 0x05, 0x46, 0x40, 0x68, 0x88, 0x46, 0x11, 0x46, 0xdd, 0xe9, 0x06, 0x67, - 0x38, 0xb9, 0x10, 0x48, 0x05, 0xf0, 0xf0, 0xfa, 0x6f, 0xf4, 0x7a, 0x64, - 0x20, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0x22, 0x03, 0xf0, 0x4e, 0xfb, - 0x04, 0x46, 0x08, 0xb1, 0x0a, 0x48, 0xf1, 0xe7, 0x6b, 0x68, 0x32, 0x46, - 0x01, 0x21, 0x40, 0x46, 0x03, 0xf0, 0x34, 0xfb, 0x00, 0x23, 0x02, 0x46, - 0xbb, 0x42, 0x08, 0xbf, 0xb0, 0x42, 0xe9, 0xd0, 0x69, 0x68, 0x04, 0x48, - 0xf7, 0xf7, 0xc4, 0xfd, 0xe2, 0xe7, 0x00, 0xbf, 0x81, 0xe8, 0x01, 0x08, - 0x97, 0xe8, 0x01, 0x08, 0xa4, 0xe8, 0x01, 0x08, 0x08, 0xb5, 0x40, 0x68, - 0x03, 0xf0, 0x9c, 0xf8, 0x00, 0x20, 0x08, 0xbd, 0xf7, 0xb5, 0x04, 0x46, - 0xd0, 0xe9, 0x02, 0x01, 0x03, 0xf0, 0x9a, 0xfa, 0x60, 0x60, 0x48, 0xb9, - 0xd4, 0xe9, 0x02, 0x12, 0x13, 0x48, 0xf7, 0xf7, 0xa9, 0xfd, 0x6f, 0xf4, - 0x7a, 0x65, 0x28, 0x46, 0x03, 0xb0, 0xf0, 0xbd, 0x02, 0x22, 0x00, 0x21, - 0x03, 0xf0, 0x16, 0xfb, 0x05, 0x46, 0x18, 0xb1, 0x0d, 0x48, 0x05, 0xf0, - 0xab, 0xfa, 0xf0, 0xe7, 0x60, 0x68, 0x00, 0x27, 0x03, 0xf0, 0xca, 0xfb, - 0xd4, 0xe9, 0x04, 0x23, 0x9f, 0x42, 0x08, 0xbf, 0x90, 0x42, 0x06, 0xd0, - 0xa1, 0x68, 0xcd, 0xe9, 0x00, 0x23, 0x02, 0x46, 0x05, 0x48, 0xf7, 0xf7, - 0x89, 0xfd, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0xdd, 0xe7, 0x00, 0xbf, - 0xc2, 0xe8, 0x01, 0x08, 0xe9, 0xe8, 0x01, 0x08, 0xf6, 0xe8, 0x01, 0x08, - 0xb0, 0xf1, 0x20, 0x4f, 0x73, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0x0c, 0xd3, - 0x10, 0x4b, 0x18, 0x68, 0x00, 0x23, 0x06, 0x68, 0xcd, 0xe9, 0x00, 0x23, - 0x04, 0xf1, 0xc0, 0x42, 0x76, 0x69, 0xb0, 0x47, 0x28, 0x46, 0x02, 0xb0, - 0x70, 0xbd, 0xb0, 0xf1, 0x10, 0x4f, 0x08, 0xd2, 0x4b, 0x1e, 0x02, 0x44, - 0x94, 0x42, 0xf5, 0xd0, 0x14, 0xf8, 0x01, 0x1b, 0x03, 0xf8, 0x01, 0x1f, - 0xf8, 0xe7, 0x00, 0x23, 0xcd, 0xe9, 0x00, 0x23, 0x00, 0xf1, 0xe0, 0x42, - 0x02, 0x48, 0xf6, 0xf7, 0x8d, 0xf8, 0xe7, 0xe7, 0xdc, 0x0d, 0x00, 0x24, - 0x78, 0x2c, 0x00, 0x24, 0x38, 0xb5, 0x04, 0x46, 0x41, 0xf2, 0x1c, 0x00, - 0x03, 0xf0, 0xce, 0xfd, 0xc4, 0xf8, 0xb8, 0x02, 0xe0, 0xb1, 0x02, 0x22, - 0x41, 0xf2, 0x18, 0x03, 0x00, 0xf5, 0x80, 0x51, 0x0c, 0x4d, 0xc2, 0x52, - 0x00, 0x23, 0x0b, 0x60, 0x41, 0xf2, 0x04, 0x01, 0x43, 0x50, 0x41, 0xf2, - 0x08, 0x01, 0x45, 0x50, 0x41, 0xf2, 0x0c, 0x01, 0x43, 0x50, 0x41, 0xf2, - 0x10, 0x01, 0x43, 0x50, 0x41, 0xf2, 0x14, 0x03, 0xc2, 0x52, 0xd4, 0xf8, - 0xbc, 0x32, 0x1b, 0x69, 0x98, 0x47, 0x00, 0xb1, 0x02, 0x20, 0x38, 0xbd, - 0x00, 0x00, 0x04, 0x08, 0x10, 0xb5, 0x04, 0x46, 0x01, 0x68, 0xd0, 0xe9, - 0x01, 0x23, 0x05, 0x48, 0xf9, 0xf7, 0x14, 0xf9, 0x20, 0x68, 0x03, 0xf0, - 0xa7, 0xfd, 0x20, 0x46, 0xbd, 0xe8, 0x10, 0x40, 0x03, 0xf0, 0xa2, 0xbd, - 0x50, 0x9c, 0x00, 0x24, 0xb0, 0xf1, 0x20, 0x4f, 0x7f, 0xb5, 0x04, 0x46, - 0x13, 0xd3, 0x17, 0x4b, 0x00, 0xf1, 0xc0, 0x42, 0x1d, 0x68, 0x03, 0x92, - 0x2b, 0x68, 0x28, 0x46, 0xde, 0x69, 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, - 0x03, 0x9a, 0x00, 0x23, 0xcd, 0xe9, 0x00, 0x01, 0x28, 0x46, 0xb0, 0x47, - 0x80, 0xb2, 0x04, 0xb0, 0x70, 0xbd, 0xb0, 0xf1, 0x10, 0x4f, 0x0e, 0xd3, - 0x00, 0xf1, 0xe0, 0x42, 0x00, 0x23, 0x0b, 0x48, 0x03, 0x92, 0xf1, 0xf7, - 0x4f, 0xf8, 0x03, 0x9a, 0x00, 0x23, 0xcd, 0xe9, 0x00, 0x01, 0x07, 0x48, - 0xf6, 0xf7, 0x76, 0xf8, 0xea, 0xe7, 0xeb, 0xf7, 0xe9, 0xf8, 0x21, 0x46, - 0x02, 0x46, 0x04, 0x48, 0xf8, 0xf7, 0x8c, 0xff, 0xe2, 0xe7, 0x00, 0xbf, - 0xdc, 0x0d, 0x00, 0x24, 0x78, 0x2c, 0x00, 0x24, 0x50, 0x9c, 0x00, 0x24, - 0x1f, 0xb5, 0x16, 0x48, 0xf9, 0xf7, 0x10, 0xfa, 0x15, 0x4b, 0x18, 0x68, - 0x03, 0x68, 0xdb, 0x68, 0x98, 0x47, 0x01, 0xa9, 0x01, 0x20, 0xeb, 0xf7, - 0xa3, 0xfe, 0xb0, 0xb9, 0x02, 0xa9, 0x01, 0x98, 0xec, 0xf7, 0xc2, 0xf8, - 0x01, 0x46, 0x68, 0xb9, 0x9d, 0xf8, 0x08, 0x30, 0x01, 0x98, 0x02, 0x2b, - 0x0f, 0xd0, 0x03, 0x2b, 0x06, 0xd1, 0xec, 0xf7, 0x95, 0xf8, 0x18, 0xb9, - 0x02, 0x21, 0x01, 0x98, 0xeb, 0xf7, 0x86, 0xf8, 0x01, 0x98, 0xeb, 0xf7, - 0x77, 0xfe, 0x00, 0x20, 0x05, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x82, 0x68, - 0xeb, 0xf7, 0x34, 0xfe, 0xf4, 0xe7, 0x00, 0xbf, 0x50, 0x9c, 0x00, 0x24, - 0xdc, 0x0d, 0x00, 0x24, 0xec, 0xf7, 0x5a, 0xbb, 0xef, 0xf3, 0x10, 0x83, - 0x2b, 0xb9, 0xef, 0xf3, 0x11, 0x80, 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, - 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0x08, 0xb5, 0xef, 0xf3, - 0x05, 0x83, 0x4b, 0xb1, 0x08, 0x4b, 0x58, 0x69, 0x08, 0x4b, 0x1b, 0x68, - 0x03, 0xb1, 0x98, 0x47, 0xdf, 0xf8, 0x1c, 0xc0, 0x00, 0xdf, 0xfe, 0xe7, - 0xff, 0xf7, 0xe4, 0xff, 0x00, 0x28, 0xf1, 0xd1, 0xdf, 0xf8, 0x10, 0xc0, - 0x00, 0xdf, 0xef, 0xe7, 0x1c, 0x01, 0x00, 0x24, 0xac, 0xe1, 0x01, 0x08, - 0x25, 0x50, 0x01, 0x08, 0x51, 0x48, 0x01, 0x08, 0x04, 0x46, 0x0b, 0x4d, - 0x07, 0xb5, 0xef, 0xf3, 0x05, 0x83, 0x00, 0x2b, 0xfb, 0xd1, 0xff, 0xf7, - 0xcd, 0xff, 0x02, 0x46, 0x00, 0x28, 0xf6, 0xd1, 0x20, 0x46, 0x69, 0x46, - 0x4f, 0xf0, 0xff, 0x33, 0xac, 0x46, 0x00, 0xdf, 0x00, 0x28, 0xee, 0xd1, - 0xdd, 0xe9, 0x00, 0x30, 0x98, 0x47, 0xea, 0xe7, 0x25, 0x5a, 0x01, 0x08, - 0x2d, 0xe9, 0xf7, 0x4f, 0x39, 0x4d, 0x6c, 0x6c, 0x00, 0x2c, 0x63, 0xd0, - 0x23, 0x69, 0x4f, 0xf0, 0x00, 0x08, 0xdf, 0xf8, 0xe0, 0x90, 0x4f, 0xf0, - 0xf9, 0x0a, 0x01, 0x3b, 0x6f, 0x69, 0x23, 0x61, 0x23, 0x69, 0x00, 0x2b, - 0x55, 0xd1, 0xe3, 0x68, 0x0b, 0xb1, 0xa2, 0x68, 0x9a, 0x60, 0xd5, 0xf8, - 0x4c, 0xb0, 0x04, 0xf1, 0x18, 0x01, 0x6b, 0x64, 0xef, 0xf3, 0x05, 0x83, - 0x43, 0xb1, 0xbb, 0xf1, 0x00, 0x0f, 0x13, 0xd1, 0xab, 0x69, 0x03, 0x21, - 0x29, 0x48, 0x6b, 0x61, 0xeb, 0xf7, 0x16, 0xf8, 0x01, 0x91, 0xff, 0xf7, - 0x91, 0xff, 0x01, 0x99, 0x02, 0x46, 0x00, 0x28, 0xef, 0xd1, 0x58, 0x46, - 0x13, 0x46, 0xcc, 0x46, 0x00, 0xdf, 0x00, 0x28, 0xec, 0xd1, 0x1b, 0xe0, - 0x9b, 0xf8, 0x00, 0x30, 0x01, 0x91, 0xfa, 0x2b, 0xe6, 0xd1, 0x0b, 0xf1, - 0x0c, 0x00, 0xfd, 0xf7, 0x5e, 0xfa, 0x06, 0x46, 0x00, 0x28, 0xdf, 0xd0, - 0x01, 0x99, 0x0c, 0x30, 0xdb, 0xf8, 0x24, 0x20, 0x03, 0xf0, 0x00, 0xfd, - 0x01, 0x99, 0x30, 0x46, 0x86, 0xf8, 0x00, 0xa0, 0xa6, 0xf8, 0x02, 0x80, - 0xc6, 0xe9, 0x01, 0x1b, 0xfd, 0xf7, 0xfa, 0xff, 0xe3, 0x78, 0x01, 0x2b, - 0x1d, 0xd1, 0x6b, 0x6c, 0x00, 0x21, 0x62, 0x69, 0x13, 0xb1, 0x18, 0x69, - 0x82, 0x42, 0x10, 0xd2, 0x22, 0x61, 0xc4, 0xe9, 0x02, 0x13, 0x1b, 0xb1, - 0x18, 0x69, 0x9c, 0x60, 0x82, 0x1a, 0x1a, 0x61, 0x59, 0xb1, 0xcc, 0x60, - 0x6c, 0x6c, 0x00, 0x2c, 0xa6, 0xd1, 0x6f, 0x61, 0x03, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0x19, 0x46, 0x12, 0x1a, 0xdb, 0x68, 0xe6, 0xe7, 0x6c, 0x64, - 0xf2, 0xe7, 0x01, 0x23, 0x63, 0x70, 0xef, 0xe7, 0x1c, 0x01, 0x00, 0x24, - 0x27, 0x01, 0x02, 0x80, 0x01, 0x5c, 0x01, 0x08, 0x07, 0xb5, 0xbf, 0xf3, - 0x5f, 0x8f, 0x78, 0x4b, 0x00, 0x22, 0x19, 0x68, 0x10, 0x46, 0x5a, 0x60, - 0xc1, 0xf3, 0x07, 0x21, 0x91, 0x42, 0x40, 0xf0, 0xaa, 0x80, 0x10, 0x22, - 0xda, 0x60, 0x73, 0x4a, 0x1a, 0x61, 0x13, 0x22, 0xda, 0x60, 0x72, 0x4a, - 0x1a, 0x61, 0x11, 0x22, 0xda, 0x60, 0x71, 0x4a, 0x1a, 0x61, 0x71, 0x4a, - 0xda, 0x60, 0x71, 0x4a, 0x1a, 0x61, 0x07, 0x22, 0x5a, 0x60, 0xbf, 0xf3, - 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x6e, 0x4b, 0x6e, 0x49, 0x98, 0x68, - 0x4f, 0xf0, 0x00, 0x53, 0x1a, 0x18, 0x02, 0xf1, 0x60, 0x42, 0x12, 0x68, - 0x43, 0xf8, 0x04, 0x2b, 0x8b, 0x42, 0xf7, 0xd1, 0x67, 0x4b, 0x4f, 0xf0, - 0x00, 0x52, 0x9a, 0x60, 0x5a, 0x69, 0x95, 0x03, 0x15, 0xd4, 0x5a, 0x69, - 0x12, 0xf4, 0x00, 0x32, 0x11, 0xd1, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, - 0x6f, 0x8f, 0xc3, 0xf8, 0x50, 0x22, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, - 0x6f, 0x8f, 0x5a, 0x69, 0x42, 0xf4, 0x00, 0x32, 0x5a, 0x61, 0xbf, 0xf3, - 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x59, 0x4b, 0x5a, 0x69, 0xd4, 0x03, - 0x27, 0xd4, 0x5a, 0x69, 0x12, 0xf4, 0x80, 0x32, 0x23, 0xd1, 0xc3, 0xf8, - 0x84, 0x20, 0xbf, 0xf3, 0x4f, 0x8f, 0xd3, 0xf8, 0x80, 0x20, 0x43, 0xf6, - 0xe0, 0x74, 0xc2, 0xf3, 0xc9, 0x00, 0xc2, 0xf3, 0x4e, 0x32, 0x52, 0x01, - 0x02, 0xea, 0x04, 0x06, 0x01, 0x46, 0x46, 0xea, 0x81, 0x75, 0x01, 0x39, - 0xc3, 0xf8, 0x60, 0x52, 0xf9, 0xd2, 0x20, 0x3a, 0x12, 0xf1, 0x20, 0x0f, - 0xf2, 0xd1, 0xbf, 0xf3, 0x4f, 0x8f, 0x5a, 0x69, 0x42, 0xf4, 0x80, 0x32, - 0x5a, 0x61, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x45, 0x4c, - 0xd4, 0xf8, 0xe0, 0x30, 0x43, 0xf0, 0x00, 0x73, 0xc4, 0xf8, 0xe0, 0x30, - 0xd4, 0xf8, 0xe0, 0x30, 0x03, 0xf0, 0x00, 0x73, 0x01, 0x93, 0x01, 0x9b, - 0xed, 0xf7, 0xa2, 0xfd, 0x3b, 0x49, 0x3e, 0x4b, 0xca, 0x68, 0x22, 0xf4, - 0xe0, 0x62, 0x12, 0x04, 0x12, 0x0c, 0x13, 0x43, 0xcb, 0x60, 0xee, 0xf7, - 0x19, 0xfb, 0xa3, 0x69, 0xa2, 0x69, 0xc3, 0xf3, 0x03, 0x23, 0x38, 0x4a, - 0xd3, 0x5c, 0x03, 0xf0, 0x1f, 0x03, 0xd8, 0x40, 0x36, 0x4b, 0x18, 0x60, - 0xee, 0xf7, 0x10, 0xff, 0x23, 0x6f, 0x98, 0x07, 0x0a, 0xd4, 0x34, 0x4a, - 0x13, 0x68, 0x43, 0xf4, 0x80, 0x73, 0x13, 0x60, 0x32, 0x4b, 0x1b, 0x68, - 0x23, 0x6f, 0x23, 0xf0, 0x18, 0x03, 0x23, 0x67, 0xec, 0xf7, 0xe8, 0xff, - 0x01, 0x20, 0xef, 0xf7, 0x09, 0xfb, 0x30, 0xb9, 0x2d, 0x48, 0xf8, 0xf7, - 0x5f, 0xf8, 0x9a, 0x60, 0x01, 0x32, 0x18, 0x61, 0x4e, 0xe7, 0xed, 0xf7, - 0x6d, 0xfd, 0xe8, 0xf7, 0xb1, 0xfe, 0xef, 0xf3, 0x05, 0x83, 0x2b, 0xb9, - 0xff, 0xf7, 0x7c, 0xfe, 0x10, 0xb9, 0xdf, 0xf8, 0xb0, 0xc0, 0x00, 0xdf, - 0x24, 0x4a, 0x25, 0x4b, 0x13, 0x61, 0x4f, 0xf4, 0x80, 0x53, 0x53, 0x61, - 0x44, 0x23, 0xd3, 0x60, 0x22, 0x4b, 0x93, 0x60, 0x18, 0x23, 0x93, 0x61, - 0x21, 0x4b, 0x13, 0x60, 0xef, 0xf3, 0x05, 0x83, 0x1b, 0xb1, 0x1c, 0x49, - 0x1f, 0x48, 0xea, 0xf7, 0xe5, 0xfe, 0xff, 0xf7, 0x61, 0xfe, 0x01, 0x46, - 0x00, 0x28, 0xf6, 0xd1, 0x1c, 0x48, 0xdf, 0xf8, 0x78, 0xc0, 0x00, 0xdf, - 0x00, 0x28, 0xf0, 0xd0, 0xef, 0xf3, 0x05, 0x83, 0x2b, 0xb9, 0xff, 0xf7, - 0x53, 0xfe, 0x10, 0xb9, 0xdf, 0xf8, 0x64, 0xc0, 0x00, 0xdf, 0x00, 0x21, - 0xe6, 0xe7, 0x00, 0xbf, 0x90, 0xed, 0x00, 0xe0, 0x39, 0xf0, 0x02, 0x06, - 0x39, 0x07, 0x02, 0x13, 0x3f, 0xf5, 0x0b, 0x13, 0x12, 0x00, 0x00, 0x80, - 0x39, 0x00, 0x02, 0x13, 0x00, 0xed, 0x00, 0xe0, 0x98, 0x02, 0x00, 0x20, - 0x00, 0x44, 0x02, 0x58, 0x00, 0x03, 0xfa, 0x05, 0x54, 0xda, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x24, 0x00, 0x48, 0x02, 0x58, 0x00, 0x10, 0x00, 0x5c, - 0x44, 0xe9, 0x01, 0x08, 0xf8, 0x9b, 0x00, 0x24, 0xf8, 0x8b, 0x00, 0x24, - 0x54, 0xa1, 0x00, 0x24, 0x58, 0xe9, 0x01, 0x08, 0x1d, 0x01, 0x01, 0x80, - 0x31, 0xa0, 0x01, 0x08, 0xa9, 0x54, 0x01, 0x08, 0xd9, 0x51, 0x01, 0x08, - 0xb5, 0x5c, 0x01, 0x08, 0xb1, 0xf1, 0x20, 0x4f, 0x2d, 0xe9, 0xf0, 0x43, - 0x06, 0x46, 0x8b, 0xb0, 0x0d, 0x46, 0x14, 0x46, 0x49, 0xd3, 0x72, 0x4f, - 0x4f, 0xf0, 0x00, 0x09, 0x90, 0x46, 0x00, 0x22, 0x38, 0x68, 0x05, 0xf1, - 0xc0, 0x45, 0x03, 0x68, 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, 0x89, 0x45, - 0x08, 0xbf, 0x84, 0x42, 0x38, 0x68, 0x03, 0x68, 0x2f, 0xd2, 0x00, 0x22, - 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, 0x03, 0xf0, 0x25, 0xfb, 0x22, 0x46, - 0x31, 0x46, 0x80, 0x46, 0x03, 0xf0, 0x82, 0xfb, 0x38, 0x68, 0x08, 0xeb, - 0x04, 0x09, 0x03, 0x68, 0x5b, 0x6b, 0x98, 0x47, 0x06, 0x46, 0x38, 0x68, - 0x00, 0x22, 0x03, 0x68, 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, 0x31, 0x46, - 0x02, 0x1b, 0x48, 0x46, 0x03, 0xf0, 0x7e, 0xfb, 0x3c, 0x68, 0x00, 0x22, - 0x23, 0x68, 0x20, 0x46, 0x9e, 0x69, 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, - 0x2a, 0x46, 0x00, 0x23, 0xcd, 0xe9, 0x00, 0x01, 0x41, 0x46, 0x20, 0x46, - 0xb0, 0x47, 0x80, 0xb2, 0x0b, 0xb0, 0xbd, 0xe8, 0xf0, 0x83, 0xcd, 0xe9, - 0x00, 0x89, 0x2a, 0x46, 0x9c, 0x69, 0x31, 0x46, 0x00, 0x23, 0xa0, 0x47, - 0xf3, 0xe7, 0xb1, 0xf1, 0x10, 0x4f, 0x18, 0xd3, 0x00, 0x22, 0x00, 0x23, - 0x4b, 0x48, 0x01, 0xf1, 0xe0, 0x45, 0xf0, 0xf7, 0xc3, 0xfd, 0x0b, 0x46, - 0x00, 0x21, 0x02, 0x46, 0x47, 0x48, 0x99, 0x42, 0x4f, 0xf0, 0x00, 0x03, - 0x31, 0x46, 0x08, 0xbf, 0x94, 0x42, 0x38, 0xbf, 0x14, 0x46, 0x2a, 0x46, - 0xcd, 0xe9, 0x00, 0x43, 0xf5, 0xf7, 0xda, 0xfe, 0xd7, 0xe7, 0x10, 0x46, - 0x03, 0xf0, 0xd4, 0xfa, 0x22, 0x46, 0x31, 0x46, 0x07, 0x46, 0x03, 0xf0, - 0x31, 0xfb, 0x0c, 0x20, 0x03, 0xf0, 0xcc, 0xfa, 0x3b, 0x4b, 0x00, 0x22, - 0x84, 0x60, 0x05, 0x93, 0x06, 0xae, 0x3a, 0x4b, 0x04, 0x92, 0xcd, 0xe9, - 0x02, 0x30, 0x02, 0xab, 0xc0, 0xe9, 0x00, 0x75, 0x0f, 0xcb, 0x37, 0x4d, - 0x86, 0xe8, 0x0f, 0x00, 0xf7, 0xf7, 0xca, 0xfa, 0x2b, 0x46, 0x53, 0xf8, - 0x18, 0x4f, 0x6c, 0xb9, 0xeb, 0x69, 0x33, 0x2b, 0x4f, 0xd9, 0x2c, 0x6a, - 0x34, 0x3b, 0x04, 0xf1, 0x34, 0x02, 0xeb, 0x61, 0x34, 0x23, 0x2a, 0x62, - 0x23, 0x60, 0x01, 0x23, 0xa3, 0x71, 0x08, 0xe0, 0x22, 0x68, 0x33, 0x2a, - 0x3d, 0xd9, 0xe2, 0x68, 0x00, 0x2a, 0x37, 0xd0, 0x1a, 0x60, 0xa3, 0x68, - 0x93, 0x60, 0xf7, 0xf7, 0x99, 0xfa, 0x00, 0x22, 0x4f, 0xf0, 0xff, 0x33, - 0x04, 0xf1, 0x24, 0x07, 0xc4, 0xe9, 0x05, 0x23, 0x96, 0xe8, 0x0f, 0x00, - 0x87, 0xe8, 0x0f, 0x00, 0x21, 0x4b, 0xe3, 0x61, 0xfc, 0xf7, 0x72, 0xfb, - 0x20, 0x4b, 0x02, 0x46, 0x21, 0x46, 0x23, 0x62, 0x63, 0x69, 0x03, 0x44, - 0x1b, 0x48, 0x63, 0x61, 0xf8, 0xf7, 0xd4, 0xf9, 0x2a, 0x6b, 0xef, 0xf3, - 0x05, 0x83, 0x13, 0xb9, 0xff, 0xf7, 0x54, 0xfd, 0xe8, 0xb1, 0xd2, 0xb1, - 0x13, 0x78, 0xf3, 0x2b, 0x17, 0xd1, 0x02, 0xf1, 0x0c, 0x03, 0x01, 0x21, - 0x53, 0xe8, 0x00, 0x4f, 0x44, 0xea, 0x01, 0x00, 0x43, 0xe8, 0x00, 0x05, - 0x05, 0xb1, 0xf7, 0xe7, 0x10, 0x46, 0xfd, 0xf7, 0xd1, 0xfd, 0x08, 0xe0, - 0xa2, 0x68, 0x1a, 0x60, 0xc7, 0xe7, 0x04, 0xf1, 0x08, 0x03, 0xa4, 0x68, - 0xab, 0xe7, 0xf7, 0xf7, 0x5d, 0xfa, 0x00, 0x20, 0x60, 0xe7, 0x10, 0x46, - 0x01, 0x21, 0xdf, 0xf8, 0x24, 0xc0, 0x00, 0xdf, 0xf7, 0xe7, 0x00, 0xbf, - 0xdc, 0x0d, 0x00, 0x24, 0x78, 0x2c, 0x00, 0x24, 0x83, 0x57, 0x01, 0x08, - 0xb9, 0x77, 0x01, 0x08, 0xb0, 0x72, 0x00, 0x24, 0xa7, 0x57, 0x01, 0x08, - 0x01, 0x8b, 0x01, 0x08, 0xed, 0x81, 0x01, 0x08, 0x73, 0xb5, 0x1f, 0x4c, + 0x4f, 0xf4, 0x80, 0x53, 0x05, 0xa9, 0x09, 0x93, 0xec, 0xf7, 0xf4, 0xfe, + 0x41, 0xf2, 0x88, 0x32, 0x51, 0x46, 0x58, 0x46, 0xef, 0xf7, 0x02, 0xff, + 0x78, 0xb3, 0x23, 0x68, 0x43, 0x4a, 0x9a, 0x63, 0x63, 0x6b, 0x18, 0x43, + 0x60, 0x63, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0x00, 0x23, 0xe3, 0x62, + 0x3f, 0x4c, 0x67, 0xe0, 0x10, 0x23, 0xcd, 0xf8, 0x14, 0xa0, 0x4f, 0xf0, + 0x18, 0x0a, 0xe3, 0x62, 0xd6, 0xe7, 0x43, 0x6b, 0x5a, 0x04, 0x0c, 0xd5, + 0xb9, 0xf1, 0x1f, 0x0f, 0x09, 0xd9, 0x06, 0xf1, 0x20, 0x03, 0x56, 0xf8, + 0x04, 0x2b, 0xb3, 0x42, 0xc0, 0xf8, 0x80, 0x20, 0xf9, 0xd1, 0xa9, 0xf1, + 0x20, 0x09, 0xee, 0xf7, 0xc7, 0xfe, 0x03, 0x9b, 0xc0, 0x1b, 0x83, 0x42, + 0x05, 0xd8, 0x23, 0x68, 0x2e, 0x4a, 0x9a, 0x63, 0x63, 0x6b, 0x63, 0x63, + 0xd5, 0xe7, 0x20, 0x68, 0x43, 0x6b, 0x13, 0xf4, 0x8d, 0x7f, 0xde, 0xd0, + 0xc3, 0x68, 0x23, 0xf0, 0x40, 0x03, 0xc3, 0x60, 0x43, 0x6b, 0xdb, 0x05, + 0x09, 0xd5, 0xb8, 0xf1, 0x01, 0x0f, 0x06, 0xd9, 0xa3, 0x6b, 0x03, 0x2b, + 0x03, 0xd0, 0xef, 0xf7, 0xd3, 0xff, 0x00, 0x28, 0xb9, 0xd1, 0x22, 0x68, + 0x50, 0x6b, 0x10, 0xf0, 0x08, 0x00, 0x05, 0xd0, 0x1e, 0x4b, 0x93, 0x63, + 0x63, 0x6b, 0x43, 0xf0, 0x08, 0x03, 0xdc, 0xe7, 0x51, 0x6b, 0x11, 0xf0, + 0x02, 0x01, 0x0a, 0xd0, 0x19, 0x4b, 0x93, 0x63, 0x63, 0x6b, 0x43, 0xf0, + 0x02, 0x03, 0x63, 0x63, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0xe0, 0x62, + 0xaa, 0xe7, 0x53, 0x6b, 0x13, 0xf0, 0x10, 0x03, 0x0a, 0xd0, 0x12, 0x4b, + 0x93, 0x63, 0x63, 0x6b, 0x43, 0xf0, 0x10, 0x03, 0x63, 0x63, 0x01, 0x23, + 0x84, 0xf8, 0x30, 0x30, 0xe1, 0x62, 0x9b, 0xe7, 0x0e, 0x49, 0x91, 0x63, + 0x01, 0x22, 0x84, 0xf8, 0x30, 0x20, 0x1c, 0x46, 0xef, 0xf7, 0x1e, 0xff, + 0x04, 0x28, 0xfb, 0xd1, 0x2b, 0x68, 0x28, 0x46, 0x1b, 0x6d, 0x98, 0x47, + 0x11, 0xe7, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x53, 0x1d, 0xe7, 0x06, 0x4c, + 0x0b, 0xe7, 0x00, 0xbf, 0x74, 0xec, 0xff, 0xff, 0x2c, 0x0d, 0x02, 0x24, + 0xff, 0x0f, 0xe0, 0x1f, 0x6c, 0xec, 0xff, 0xff, 0x3a, 0x0f, 0x00, 0x18, + 0x75, 0xec, 0xff, 0xff, 0x2d, 0xe9, 0xf0, 0x4f, 0x8b, 0xb0, 0x0e, 0x46, + 0x01, 0x68, 0x05, 0x46, 0x93, 0x46, 0x9a, 0x46, 0xdd, 0xe9, 0x14, 0x78, + 0xcd, 0xe9, 0x00, 0x78, 0xc9, 0x6b, 0x88, 0x47, 0x00, 0x28, 0x00, 0xf0, + 0x0e, 0x81, 0x2b, 0x68, 0x28, 0x46, 0xdb, 0x6c, 0x98, 0x47, 0x95, 0xf8, + 0x80, 0x30, 0x43, 0xb9, 0x2b, 0x68, 0x28, 0x46, 0x83, 0x4c, 0x1b, 0x6d, + 0x98, 0x47, 0x20, 0x46, 0x0b, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0xab, 0x6d, + 0x80, 0x4c, 0x03, 0x93, 0xd5, 0xe9, 0x08, 0x89, 0xee, 0xf7, 0x34, 0xfe, + 0x07, 0x46, 0x26, 0xb9, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x63, 0x63, 0x63, + 0x69, 0xe0, 0x94, 0xf8, 0x30, 0x30, 0x01, 0x2b, 0x40, 0xf0, 0xe7, 0x80, + 0x42, 0x46, 0x4b, 0x46, 0x51, 0x46, 0x58, 0x46, 0x07, 0xf0, 0xf8, 0xfd, + 0x82, 0x46, 0x42, 0x46, 0x4b, 0x46, 0xdd, 0xe9, 0x14, 0x01, 0x07, 0xf0, + 0xf1, 0xfd, 0x22, 0x6d, 0x0a, 0xeb, 0x00, 0x01, 0x00, 0x23, 0x80, 0x46, + 0x91, 0x42, 0x63, 0x63, 0x03, 0xd9, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x73, + 0xdf, 0xe7, 0xd4, 0xf8, 0x00, 0xb0, 0x03, 0x22, 0x4f, 0xea, 0x48, 0x29, + 0x84, 0xf8, 0x30, 0x20, 0xcb, 0xf8, 0x2c, 0x30, 0xa3, 0x6b, 0x01, 0x2b, + 0x4f, 0xf0, 0xff, 0x33, 0xcb, 0xf8, 0x24, 0x30, 0x18, 0xbf, 0x4f, 0xea, + 0x4a, 0x2a, 0xcb, 0xf8, 0x28, 0x90, 0xb8, 0xf1, 0x01, 0x0f, 0xdb, 0xf8, + 0x2c, 0x30, 0x23, 0xf0, 0xff, 0x03, 0x43, 0xf0, 0x92, 0x03, 0xcb, 0xf8, + 0x2c, 0x30, 0xdb, 0xf8, 0x0c, 0x30, 0x43, 0xf0, 0x40, 0x03, 0xcb, 0xf8, + 0x0c, 0x30, 0x28, 0xd9, 0x02, 0x23, 0xcd, 0xf8, 0x14, 0xa0, 0x4f, 0xf0, + 0x12, 0x0a, 0xe3, 0x62, 0x4f, 0xf4, 0x80, 0x71, 0x00, 0x23, 0x58, 0x46, + 0xcd, 0xf8, 0x18, 0xa0, 0xcd, 0xe9, 0x07, 0x13, 0x4f, 0xf4, 0x80, 0x53, + 0x05, 0xa9, 0x09, 0x93, 0xec, 0xf7, 0xd6, 0xfd, 0x41, 0xf2, 0x88, 0x32, + 0x51, 0x46, 0x58, 0x46, 0xef, 0xf7, 0xe4, 0xfd, 0x00, 0x28, 0x3e, 0xd0, + 0x23, 0x68, 0x4b, 0x4a, 0x9a, 0x63, 0x63, 0x6b, 0x18, 0x43, 0x60, 0x63, + 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0x00, 0x23, 0xe3, 0x62, 0x47, 0x4c, + 0x76, 0xe0, 0x01, 0x23, 0xcd, 0xf8, 0x14, 0xa0, 0x4f, 0xf0, 0x11, 0x0a, + 0xe3, 0x62, 0xd5, 0xe7, 0x43, 0x6b, 0x1a, 0x04, 0x19, 0xd5, 0xb9, 0xf1, + 0x1f, 0x0f, 0x16, 0xd9, 0x33, 0x1d, 0x06, 0xf1, 0x24, 0x01, 0x22, 0x68, + 0x04, 0x33, 0xd2, 0xf8, 0x80, 0x20, 0x10, 0x0a, 0x03, 0xf8, 0x08, 0x2c, + 0x03, 0xf8, 0x07, 0x0c, 0x10, 0x0c, 0x12, 0x0e, 0x03, 0xf8, 0x06, 0x0c, + 0x03, 0xf8, 0x05, 0x2c, 0x8b, 0x42, 0xee, 0xd1, 0x20, 0x36, 0xa9, 0xf1, + 0x20, 0x09, 0xee, 0xf7, 0x9b, 0xfd, 0x03, 0x9b, 0xc0, 0x1b, 0x83, 0x42, + 0x07, 0xd8, 0x23, 0x68, 0x2f, 0x4a, 0x9a, 0x63, 0x63, 0x6b, 0x43, 0xf0, + 0x00, 0x43, 0x63, 0x63, 0xc6, 0xe7, 0x20, 0x68, 0x43, 0x6b, 0x13, 0xf4, + 0x95, 0x7f, 0xcf, 0xd0, 0xc3, 0x68, 0x23, 0xf0, 0x40, 0x03, 0xc3, 0x60, + 0x43, 0x6b, 0xdb, 0x05, 0x09, 0xd5, 0xb8, 0xf1, 0x01, 0x0f, 0x06, 0xd9, + 0xa3, 0x6b, 0x03, 0x2b, 0x03, 0xd0, 0xef, 0xf7, 0xa5, 0xfe, 0x00, 0x28, + 0xaa, 0xd1, 0x22, 0x68, 0x50, 0x6b, 0x10, 0xf0, 0x08, 0x00, 0x05, 0xd0, + 0x1e, 0x4b, 0x93, 0x63, 0x63, 0x6b, 0x43, 0xf0, 0x08, 0x03, 0xdc, 0xe7, + 0x51, 0x6b, 0x11, 0xf0, 0x02, 0x01, 0x0a, 0xd0, 0x19, 0x4b, 0x93, 0x63, + 0x63, 0x6b, 0x43, 0xf0, 0x02, 0x03, 0x63, 0x63, 0x01, 0x23, 0x84, 0xf8, + 0x30, 0x30, 0xe0, 0x62, 0x9b, 0xe7, 0x53, 0x6b, 0x13, 0xf0, 0x20, 0x03, + 0x0a, 0xd0, 0x12, 0x4b, 0x93, 0x63, 0x63, 0x6b, 0x43, 0xf0, 0x20, 0x03, + 0x63, 0x63, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0xe1, 0x62, 0x8c, 0xe7, + 0x0e, 0x49, 0x91, 0x63, 0x01, 0x22, 0x84, 0xf8, 0x30, 0x20, 0x1c, 0x46, + 0xef, 0xf7, 0xf0, 0xfd, 0x04, 0x28, 0xfb, 0xd1, 0x2b, 0x68, 0x28, 0x46, + 0x1b, 0x6d, 0x98, 0x47, 0x01, 0xe7, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x53, + 0x0d, 0xe7, 0x06, 0x4c, 0xfb, 0xe6, 0x00, 0xbf, 0x74, 0xec, 0xff, 0xff, + 0x2c, 0x0d, 0x02, 0x24, 0xff, 0x0f, 0xe0, 0x1f, 0x6d, 0xec, 0xff, 0xff, + 0x3a, 0x0f, 0x00, 0x18, 0x75, 0xec, 0xff, 0xff, 0x38, 0xb5, 0x03, 0x68, + 0x04, 0x46, 0x00, 0x25, 0xdb, 0x6c, 0x98, 0x47, 0x10, 0x4b, 0x03, 0x22, + 0x7c, 0x20, 0x83, 0xf8, 0x30, 0x20, 0x0f, 0x4a, 0x11, 0x68, 0x21, 0xf0, + 0x03, 0x01, 0x11, 0x60, 0x5d, 0x63, 0x1a, 0x60, 0x83, 0xf8, 0x30, 0x50, + 0xf3, 0xf7, 0xa4, 0xfb, 0x0a, 0x4a, 0x20, 0x46, 0xd2, 0xf8, 0xdc, 0x30, + 0x23, 0xf4, 0x00, 0x73, 0xc2, 0xf8, 0xdc, 0x30, 0x23, 0x68, 0x84, 0xf8, + 0x54, 0x50, 0x84, 0xf8, 0x80, 0x50, 0x1b, 0x6d, 0x98, 0x47, 0x28, 0x46, + 0x38, 0xbd, 0x00, 0xbf, 0x2c, 0x0d, 0x02, 0x24, 0x00, 0x24, 0x02, 0x48, + 0x00, 0x44, 0x02, 0x58, 0x03, 0x68, 0x2d, 0xe9, 0xf0, 0x4f, 0xdb, 0x6c, + 0x9f, 0xb0, 0xb8, 0x4c, 0x05, 0x46, 0x98, 0x47, 0xb7, 0x4b, 0xb8, 0x4e, + 0x4f, 0xf4, 0x80, 0x42, 0x23, 0x60, 0x04, 0x23, 0xe2, 0x60, 0x4f, 0xf0, + 0x01, 0x08, 0x63, 0x61, 0x00, 0x23, 0xb4, 0x4f, 0x4f, 0xf0, 0x03, 0x09, + 0x23, 0x61, 0x0e, 0xa9, 0x38, 0x46, 0xc4, 0xe9, 0x01, 0x33, 0xd6, 0xf8, + 0xe0, 0x20, 0x42, 0xf0, 0x40, 0x02, 0xc6, 0xf8, 0xe0, 0x20, 0xd6, 0xf8, + 0xe0, 0x20, 0x10, 0x93, 0x02, 0xf0, 0x40, 0x02, 0xcd, 0xf8, 0x44, 0x90, + 0x07, 0x92, 0x07, 0x9a, 0x08, 0x22, 0xcd, 0xe9, 0x0e, 0x28, 0xf1, 0xf7, + 0x65, 0xfe, 0x4f, 0xf4, 0x00, 0x23, 0x0e, 0xa9, 0xa5, 0x48, 0xbb, 0x61, + 0x02, 0x27, 0xd6, 0xf8, 0xdc, 0x30, 0x43, 0xf4, 0x00, 0x73, 0xc6, 0xf8, + 0xdc, 0x30, 0xd6, 0xf8, 0xdc, 0x30, 0x03, 0xf4, 0x00, 0x73, 0x06, 0x93, + 0x06, 0x9b, 0xd6, 0xf8, 0xe0, 0x30, 0x43, 0xf0, 0x02, 0x03, 0xc6, 0xf8, + 0xe0, 0x30, 0xd6, 0xf8, 0xe0, 0x30, 0x03, 0xf0, 0x02, 0x03, 0x05, 0x93, + 0x05, 0x9b, 0xd6, 0xf8, 0xe0, 0x30, 0x43, 0xf0, 0x08, 0x03, 0xc6, 0xf8, + 0xe0, 0x30, 0xd6, 0xf8, 0xe0, 0x30, 0xcd, 0xf8, 0x44, 0x90, 0x03, 0xf0, + 0x08, 0x03, 0x04, 0x93, 0x04, 0x9b, 0x09, 0x23, 0x12, 0x93, 0x4c, 0xf2, + 0x18, 0x03, 0xcd, 0xe9, 0x0f, 0x78, 0x0e, 0x93, 0xf1, 0xf7, 0x30, 0xfe, + 0xc0, 0x23, 0x0e, 0xa9, 0x8c, 0x48, 0x0e, 0x93, 0x0b, 0x23, 0x12, 0x93, + 0xf1, 0xf7, 0x28, 0xfe, 0x05, 0x21, 0x7c, 0x20, 0xec, 0xf7, 0xd4, 0xfb, + 0x88, 0x4b, 0x4f, 0xf0, 0x80, 0x52, 0xda, 0x60, 0x8d, 0xf8, 0x0f, 0x80, + 0x9d, 0xf8, 0x0f, 0x30, 0x01, 0x2b, 0x5f, 0xfa, 0x83, 0xf8, 0x12, 0xd0, + 0x7c, 0x20, 0xf3, 0xf7, 0x0d, 0xfb, 0xd6, 0xf8, 0xdc, 0x30, 0x28, 0x46, + 0x23, 0xf4, 0x00, 0x73, 0xc6, 0xf8, 0xdc, 0x30, 0x2b, 0x68, 0x85, 0xf8, + 0x54, 0x70, 0x1b, 0x6d, 0x98, 0x47, 0x7c, 0x48, 0x1f, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0x94, 0xf8, 0x30, 0x30, 0x03, 0xf0, 0xff, 0x02, 0x03, 0xb9, + 0x22, 0x76, 0x03, 0x23, 0x84, 0xf8, 0x30, 0x30, 0xec, 0xf7, 0x76, 0xfc, + 0x70, 0xb9, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0x4f, 0xf0, 0x00, 0x63, + 0x63, 0x63, 0x01, 0x23, 0x28, 0x46, 0x85, 0xf8, 0x54, 0x30, 0x2b, 0x68, + 0x1b, 0x6d, 0x98, 0x47, 0x6e, 0x48, 0xe1, 0xe7, 0x21, 0x68, 0x6e, 0x4b, + 0x4a, 0x68, 0x6e, 0x4f, 0xb0, 0xfb, 0xf3, 0xf3, 0x3a, 0x40, 0x1a, 0x43, + 0x5b, 0x00, 0xb0, 0xfb, 0xf3, 0xf0, 0x6b, 0x4b, 0x4a, 0x60, 0x0a, 0x68, + 0xb3, 0xfb, 0xf0, 0xf0, 0x42, 0xf0, 0x03, 0x02, 0x01, 0x30, 0x0a, 0x60, + 0xf3, 0xf7, 0xe0, 0xfa, 0x00, 0x23, 0x20, 0x68, 0x08, 0x93, 0xef, 0xf7, + 0x3d, 0xfd, 0x83, 0x46, 0x88, 0xbb, 0x4f, 0xf4, 0xd5, 0x70, 0x08, 0x22, + 0xd4, 0xf8, 0x00, 0x90, 0x0e, 0xa9, 0x60, 0x4e, 0xcd, 0xe9, 0x0e, 0x02, + 0x4f, 0xf4, 0x80, 0x72, 0x48, 0x46, 0xcd, 0xe9, 0x10, 0x2b, 0x4f, 0xf4, + 0x80, 0x52, 0x12, 0x92, 0xec, 0xf7, 0x26, 0xfc, 0x32, 0x68, 0x4f, 0xf4, + 0xfa, 0x51, 0xb2, 0xfb, 0xf1, 0xf1, 0x41, 0xf2, 0x88, 0x32, 0x4a, 0x43, + 0x01, 0x3a, 0x0d, 0xd3, 0xd9, 0xf8, 0x34, 0x10, 0x11, 0xf0, 0x45, 0x0f, + 0xf8, 0xd0, 0x89, 0x04, 0xf6, 0xd4, 0xd9, 0xf8, 0x34, 0x20, 0x52, 0x07, + 0x10, 0xd5, 0x04, 0x22, 0xc9, 0xf8, 0x38, 0x20, 0x00, 0x22, 0x20, 0x68, + 0xe2, 0x63, 0xef, 0xf7, 0x0b, 0xfd, 0xf0, 0xb1, 0x83, 0x46, 0x01, 0x22, + 0x84, 0xf8, 0x30, 0x20, 0x63, 0x6b, 0x43, 0xea, 0x0b, 0x03, 0x9f, 0xe7, + 0xd9, 0xf8, 0x34, 0x20, 0xd3, 0x07, 0x01, 0xd5, 0x01, 0x22, 0xe9, 0xe7, + 0xd9, 0xf8, 0x34, 0x20, 0x50, 0x06, 0x02, 0xd5, 0x40, 0x22, 0xc9, 0xf8, + 0x38, 0x20, 0x01, 0x22, 0xe2, 0x63, 0x00, 0x21, 0x20, 0x68, 0xef, 0xf7, + 0xd6, 0xfc, 0x28, 0xb1, 0x4f, 0xf0, 0x80, 0x5b, 0xe1, 0xe7, 0xe2, 0x6b, + 0x01, 0x2a, 0xf4, 0xd0, 0x4f, 0xf6, 0xfe, 0x79, 0x00, 0x21, 0xca, 0x46, + 0x37, 0xe0, 0x20, 0x68, 0xef, 0xf7, 0xc7, 0xfc, 0x83, 0x46, 0x00, 0x28, + 0xd3, 0xd1, 0x35, 0x4b, 0x29, 0x21, 0x22, 0x68, 0xcd, 0xe9, 0x0e, 0x31, + 0x4f, 0xf4, 0x80, 0x71, 0x4f, 0xf4, 0x80, 0x53, 0x01, 0x92, 0x12, 0x93, + 0xcd, 0xe9, 0x10, 0x10, 0x0e, 0xa9, 0x10, 0x46, 0xec, 0xf7, 0xca, 0xfb, + 0x33, 0x68, 0x4f, 0xf4, 0xfa, 0x51, 0x01, 0x9a, 0xb3, 0xfb, 0xf1, 0xf1, + 0x41, 0xf2, 0x88, 0x33, 0x4b, 0x43, 0x01, 0x3b, 0xd2, 0xd3, 0x51, 0x6b, + 0x11, 0xf0, 0x45, 0x0f, 0xf9, 0xd0, 0x89, 0x04, 0xf7, 0xd4, 0x53, 0x6b, + 0x5b, 0x07, 0x02, 0xd5, 0x04, 0x23, 0x93, 0x63, 0xc6, 0xe7, 0x22, 0x4b, + 0x93, 0x63, 0x23, 0x68, 0xd3, 0xf8, 0x14, 0xb0, 0x08, 0x9a, 0x4f, 0xea, + 0xdb, 0x71, 0x01, 0x32, 0x08, 0x92, 0x08, 0x9a, 0x4a, 0x45, 0x01, 0xd8, + 0x00, 0x29, 0xc2, 0xd0, 0x08, 0x9a, 0x52, 0x45, 0x13, 0xd8, 0x1b, 0xf0, + 0x80, 0x4f, 0x01, 0xd0, 0x01, 0x23, 0xa3, 0x63, 0xd4, 0xf8, 0x00, 0x90, + 0xd9, 0xf8, 0x00, 0x30, 0x98, 0x07, 0x29, 0xd1, 0x4f, 0xf0, 0x80, 0x60, + 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0x63, 0x6b, 0x18, 0x43, 0x60, 0x63, + 0x2d, 0xe7, 0x4f, 0xf0, 0x80, 0x7b, 0x82, 0xe7, 0x2c, 0x0d, 0x02, 0x24, + 0x00, 0x24, 0x02, 0x48, 0x00, 0x44, 0x02, 0x58, 0x00, 0x18, 0x02, 0x58, + 0x00, 0x04, 0x02, 0x58, 0x00, 0x0c, 0x02, 0x58, 0x00, 0xe1, 0x00, 0xe0, + 0x73, 0xec, 0xff, 0xff, 0x74, 0xec, 0xff, 0xff, 0x00, 0x35, 0x0c, 0x00, + 0x00, 0x2c, 0xc0, 0xff, 0x10, 0x21, 0x01, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x00, 0x00, 0x10, 0xc1, 0xc5, 0x00, 0x20, 0x00, 0xa3, 0x6b, 0x03, 0x2b, + 0x69, 0xd0, 0x00, 0x23, 0x02, 0x22, 0x4f, 0xf4, 0x80, 0x5a, 0x0e, 0xa9, + 0x48, 0x46, 0xcd, 0xf8, 0x48, 0xa0, 0xcd, 0xe9, 0x0e, 0x32, 0x4f, 0xf4, + 0x40, 0x72, 0xcd, 0xe9, 0x10, 0x23, 0xec, 0xf7, 0x59, 0xfb, 0x48, 0x46, + 0xef, 0xf7, 0x42, 0xfb, 0x00, 0x28, 0xbf, 0xd1, 0xd4, 0xf8, 0x00, 0x90, + 0xd9, 0xf8, 0x14, 0x30, 0xe3, 0x66, 0xd9, 0xf8, 0x18, 0x30, 0x23, 0x67, + 0xd9, 0xf8, 0x1c, 0x30, 0x63, 0x67, 0xd9, 0xf8, 0x20, 0x30, 0xa3, 0x67, + 0xa3, 0x6b, 0x03, 0x2b, 0x43, 0xd0, 0x4f, 0xf4, 0x80, 0x73, 0x03, 0x21, + 0x0e, 0x90, 0xcd, 0xe9, 0x0f, 0x13, 0xcd, 0xe9, 0x11, 0x0a, 0x0e, 0xa9, + 0x48, 0x46, 0xec, 0xf7, 0x37, 0xfb, 0x33, 0x68, 0x4f, 0xf4, 0xfa, 0x52, + 0xb3, 0xfb, 0xf2, 0xf2, 0x41, 0xf2, 0x88, 0x33, 0x53, 0x43, 0x01, 0x3b, + 0xc0, 0xf0, 0x1c, 0x81, 0xd9, 0xf8, 0x34, 0x20, 0x12, 0xf0, 0x45, 0x0f, + 0xf7, 0xd0, 0x92, 0x04, 0xf5, 0xd4, 0xd9, 0xf8, 0x34, 0x30, 0x5b, 0x07, + 0x03, 0xd5, 0x04, 0x20, 0xc9, 0xf8, 0x38, 0x00, 0x88, 0xe7, 0xd9, 0xf8, + 0x34, 0x00, 0x10, 0xf0, 0x01, 0x00, 0x03, 0xd0, 0x01, 0x23, 0xc9, 0xf8, + 0x38, 0x30, 0x7f, 0xe7, 0xd9, 0xf8, 0x10, 0x30, 0xdb, 0xb2, 0x03, 0x2b, + 0x40, 0xf0, 0xfc, 0x80, 0xc9, 0x4b, 0xc9, 0xf8, 0x38, 0x30, 0xd9, 0xf8, + 0x14, 0x30, 0x13, 0xf4, 0x60, 0x42, 0x40, 0xf0, 0xe6, 0x80, 0xa1, 0x6b, + 0x1b, 0x0c, 0x26, 0x68, 0x03, 0x29, 0x40, 0xf0, 0xf2, 0x80, 0xd4, 0xf8, + 0x00, 0xb0, 0xdb, 0xf8, 0x18, 0x30, 0x1b, 0x0d, 0x23, 0x64, 0xe3, 0x6d, + 0x9a, 0x0f, 0x8d, 0xf8, 0x38, 0x20, 0xc3, 0xf3, 0x83, 0x62, 0x8d, 0xf8, + 0x39, 0x20, 0xc3, 0xf3, 0x01, 0x62, 0x8d, 0xf8, 0x3a, 0x20, 0xc3, 0xf3, + 0x07, 0x42, 0x8d, 0xf8, 0x3b, 0x20, 0xc3, 0xf3, 0x07, 0x22, 0xdb, 0xb2, + 0x8d, 0xf8, 0x3c, 0x20, 0x8d, 0xf8, 0x3d, 0x30, 0x23, 0x6e, 0x1a, 0x0d, + 0xad, 0xf8, 0x3e, 0x20, 0xc3, 0xf3, 0x03, 0x42, 0x8d, 0xf8, 0x40, 0x20, + 0xc3, 0xf3, 0xc0, 0x32, 0x8d, 0xf8, 0x41, 0x20, 0xc3, 0xf3, 0x80, 0x32, + 0x8d, 0xf8, 0x42, 0x20, 0xc3, 0xf3, 0x40, 0x32, 0x8d, 0xf8, 0x43, 0x20, + 0xc3, 0xf3, 0x00, 0x32, 0x8d, 0xf8, 0x44, 0x20, 0x00, 0x22, 0x8d, 0xf8, + 0x45, 0x20, 0xa2, 0x6b, 0x00, 0x2a, 0x40, 0xf0, 0xd6, 0x80, 0x40, 0xf6, + 0xfc, 0x71, 0x62, 0x6e, 0x01, 0xea, 0x83, 0x03, 0x43, 0xea, 0x92, 0x73, + 0x12, 0x93, 0xc2, 0xf3, 0xc2, 0x63, 0x8d, 0xf8, 0x4c, 0x30, 0xc2, 0xf3, + 0x02, 0x63, 0x8d, 0xf8, 0x4d, 0x30, 0xc2, 0xf3, 0x42, 0x53, 0x8d, 0xf8, + 0x4e, 0x30, 0xc2, 0xf3, 0x82, 0x43, 0xc2, 0xf3, 0xc2, 0x32, 0x8d, 0xf8, + 0x4f, 0x30, 0x8d, 0xf8, 0x50, 0x20, 0x12, 0x9b, 0x9d, 0xf8, 0x50, 0x20, + 0x01, 0x33, 0x02, 0xf0, 0x07, 0x02, 0x02, 0x32, 0x93, 0x40, 0x9d, 0xf8, + 0x40, 0x20, 0x02, 0xf0, 0x0f, 0x01, 0x01, 0x22, 0xa3, 0x64, 0x8a, 0x40, + 0xe2, 0x64, 0x52, 0x0a, 0x53, 0x43, 0x23, 0x65, 0x4f, 0xf4, 0x00, 0x73, + 0x63, 0x65, 0x4f, 0xf0, 0x01, 0x0a, 0x63, 0x6e, 0x4f, 0xf4, 0x80, 0x79, + 0x4f, 0xf4, 0x80, 0x56, 0x58, 0x46, 0xc3, 0xf3, 0x80, 0x32, 0x0d, 0x96, + 0x8d, 0xf8, 0x51, 0x20, 0xc3, 0xf3, 0xc6, 0x12, 0x03, 0xf0, 0x7f, 0x03, + 0x8d, 0xf8, 0x52, 0x20, 0x8d, 0xf8, 0x53, 0x30, 0xa3, 0x6e, 0xda, 0x0f, + 0xc3, 0xf3, 0x00, 0x41, 0x8d, 0xf8, 0x54, 0x20, 0xc3, 0xf3, 0x41, 0x72, + 0x8d, 0xf8, 0x55, 0x20, 0xc3, 0xf3, 0x82, 0x62, 0x8d, 0xf8, 0x56, 0x20, + 0xc3, 0xf3, 0x83, 0x52, 0x8d, 0xf8, 0x57, 0x20, 0xc3, 0xf3, 0x40, 0x52, + 0x8d, 0xf8, 0x58, 0x20, 0x00, 0x22, 0x8d, 0xf8, 0x59, 0x20, 0x8d, 0xf8, + 0x5a, 0x10, 0xc3, 0xf3, 0xc0, 0x31, 0x0c, 0x92, 0x8d, 0xf8, 0x5b, 0x10, + 0xc3, 0xf3, 0x80, 0x31, 0x8d, 0xf8, 0x5c, 0x10, 0xc3, 0xf3, 0x40, 0x31, + 0x8d, 0xf8, 0x5d, 0x10, 0xc3, 0xf3, 0x00, 0x31, 0x8d, 0xf8, 0x5e, 0x10, + 0xc3, 0xf3, 0x81, 0x21, 0x8d, 0xf8, 0x5f, 0x10, 0xc3, 0xf3, 0x01, 0x21, + 0xc3, 0xf3, 0x46, 0x03, 0x8d, 0xf8, 0x60, 0x10, 0x09, 0xa9, 0x8d, 0xf8, + 0x61, 0x30, 0x63, 0x6c, 0x8d, 0xf8, 0x62, 0xa0, 0x1b, 0x04, 0x09, 0x93, + 0x07, 0x23, 0xcd, 0xe9, 0x0a, 0x39, 0xec, 0xf7, 0x39, 0xfa, 0x07, 0x23, + 0x41, 0xf2, 0x88, 0x32, 0x58, 0x46, 0x19, 0x46, 0xef, 0xf7, 0x46, 0xfa, + 0x00, 0x28, 0x7f, 0xf4, 0x9b, 0xae, 0x4f, 0xf4, 0x00, 0x71, 0x20, 0x68, + 0xef, 0xf7, 0x7e, 0xfb, 0x00, 0x28, 0x59, 0xd0, 0x23, 0x68, 0x57, 0x4a, + 0x9a, 0x63, 0x63, 0x6b, 0x18, 0x43, 0x60, 0x63, 0x84, 0xf8, 0x30, 0xa0, + 0xbf, 0xe5, 0x5e, 0x04, 0x07, 0xd4, 0x13, 0xf4, 0x00, 0x4f, 0x0c, 0xbf, + 0x4f, 0xf4, 0x80, 0x30, 0x4f, 0xf4, 0x80, 0x50, 0x80, 0xe6, 0x4f, 0xf4, + 0x00, 0x50, 0x7d, 0xe6, 0x01, 0x20, 0x7b, 0xe6, 0x4f, 0xf0, 0x00, 0x40, + 0x78, 0xe6, 0x63, 0x64, 0x1b, 0x04, 0x09, 0x21, 0x30, 0x46, 0x0e, 0x93, + 0x4f, 0xf4, 0x40, 0x73, 0x11, 0x92, 0xcd, 0xe9, 0x0f, 0x13, 0x4f, 0xf4, + 0x80, 0x53, 0x0e, 0xa9, 0x12, 0x93, 0xec, 0xf7, 0xfd, 0xf9, 0x30, 0x46, + 0xef, 0xf7, 0xe6, 0xf9, 0x00, 0x28, 0x7f, 0xf4, 0x63, 0xae, 0x23, 0x68, + 0x5a, 0x69, 0xe2, 0x65, 0x9a, 0x69, 0x22, 0x66, 0xda, 0x69, 0x62, 0x66, + 0x1b, 0x6a, 0xa3, 0x66, 0xed, 0xe6, 0x01, 0x2a, 0x0f, 0xd1, 0x1b, 0x04, + 0xb4, 0xf8, 0x66, 0x20, 0x03, 0xf4, 0x7c, 0x13, 0x13, 0x43, 0x12, 0x93, + 0x12, 0x9b, 0x01, 0x33, 0x9b, 0x02, 0xa3, 0x64, 0x23, 0x65, 0x4f, 0xf4, + 0x00, 0x73, 0xe3, 0x64, 0x48, 0xe7, 0x31, 0x4b, 0x4f, 0xf0, 0x80, 0x50, + 0xcb, 0xf8, 0x38, 0x30, 0x63, 0x6b, 0x43, 0xf0, 0x80, 0x53, 0x63, 0x63, + 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0x39, 0xe6, 0xee, 0xf7, 0xcc, 0xf9, + 0x82, 0x46, 0x20, 0x68, 0x43, 0x69, 0x9b, 0x01, 0x00, 0xf1, 0xc3, 0x80, + 0x40, 0x21, 0xef, 0xf7, 0x17, 0xfb, 0x58, 0xb1, 0x63, 0x6b, 0x63, 0x63, + 0x23, 0x68, 0x23, 0x4a, 0x9a, 0x63, 0x63, 0x6b, 0x18, 0x43, 0x01, 0x23, + 0x60, 0x63, 0x84, 0xf8, 0x30, 0x30, 0x9f, 0xe0, 0x61, 0x6c, 0x20, 0x68, + 0x09, 0x04, 0xef, 0xf7, 0x9a, 0xfa, 0x00, 0x28, 0xec, 0xd1, 0xd4, 0xf8, + 0x00, 0xb0, 0x4f, 0xf0, 0xff, 0x33, 0x0e, 0xa9, 0xcb, 0xf8, 0x24, 0x30, + 0x40, 0x23, 0xcb, 0xf8, 0x28, 0x30, 0xdb, 0xf8, 0x2c, 0x30, 0x23, 0xf0, + 0xff, 0x03, 0x43, 0xf0, 0x63, 0x03, 0xcb, 0xf8, 0x2c, 0x30, 0x0d, 0x23, + 0x0e, 0x90, 0xcd, 0xe9, 0x11, 0x06, 0x58, 0x46, 0xcd, 0xe9, 0x0f, 0x39, + 0xec, 0xf7, 0x94, 0xf9, 0x0d, 0x23, 0x41, 0xf2, 0x88, 0x32, 0x58, 0x46, + 0x19, 0x46, 0xef, 0xf7, 0xa1, 0xf9, 0x00, 0x28, 0xc8, 0xd1, 0x0e, 0xae, + 0x23, 0x68, 0x5a, 0x6b, 0x12, 0xf4, 0x95, 0x7f, 0x5a, 0x6b, 0x0d, 0xd0, + 0x11, 0x07, 0x7c, 0xd4, 0x5a, 0x6b, 0x92, 0x07, 0x77, 0xd4, 0x5b, 0x6b, + 0x9b, 0x06, 0x22, 0xd5, 0x20, 0x20, 0xb9, 0xe7, 0xc5, 0x00, 0x20, 0x00, + 0xff, 0x0f, 0xe0, 0x1f, 0x10, 0x04, 0x07, 0xd5, 0x06, 0xf1, 0x20, 0x02, + 0xd3, 0xf8, 0x80, 0x10, 0x46, 0xf8, 0x04, 0x1b, 0x96, 0x42, 0xf9, 0xd1, + 0xee, 0xf7, 0x6a, 0xf9, 0xa0, 0xeb, 0x0a, 0x00, 0x01, 0x30, 0xdb, 0xd1, + 0x4f, 0xf0, 0x00, 0x40, 0xa2, 0xe7, 0xd2, 0xf8, 0x80, 0x30, 0x46, 0xf8, + 0x04, 0x3b, 0xee, 0xf7, 0x5d, 0xf9, 0xa0, 0xeb, 0x0a, 0x00, 0x01, 0x30, + 0xf2, 0xd0, 0x22, 0x68, 0x53, 0x6b, 0x13, 0xf4, 0x80, 0x53, 0xf0, 0xd1, + 0xa8, 0x49, 0x91, 0x63, 0x0e, 0x99, 0xc1, 0xf3, 0x81, 0x12, 0x8d, 0xf8, + 0x24, 0x20, 0xc1, 0xf3, 0x40, 0x12, 0x8d, 0xf8, 0x25, 0x20, 0x0a, 0x0a, + 0x22, 0xf0, 0xff, 0x02, 0x42, 0xea, 0x11, 0x62, 0x92, 0xb2, 0xad, 0xf8, + 0x26, 0x20, 0x0f, 0x9a, 0x12, 0xba, 0x0a, 0x92, 0x10, 0x9a, 0xd1, 0xb2, + 0x8d, 0xf8, 0x2c, 0x10, 0xc2, 0xf3, 0x07, 0x21, 0x8d, 0xf8, 0x2d, 0x10, + 0xc2, 0xf3, 0x03, 0x51, 0x12, 0x0c, 0x8d, 0xf8, 0x2e, 0x10, 0x11, 0x99, + 0x22, 0xf0, 0xff, 0x02, 0xc8, 0xb2, 0x02, 0x43, 0xad, 0xf8, 0x30, 0x20, + 0xc1, 0xf3, 0x85, 0x22, 0x8d, 0xf8, 0x32, 0x20, 0xc1, 0xf3, 0x01, 0x22, + 0x8d, 0xf8, 0x33, 0x20, 0xc1, 0xf3, 0x03, 0x12, 0x01, 0xf0, 0x0f, 0x01, + 0x8d, 0xf8, 0x34, 0x20, 0x9d, 0xf8, 0x4b, 0x20, 0x8d, 0xf8, 0x35, 0x10, + 0x8d, 0xf8, 0x36, 0x20, 0x4f, 0xf4, 0x00, 0x71, 0x20, 0x68, 0x1e, 0x46, + 0xef, 0xf7, 0x64, 0xfa, 0x70, 0xb1, 0x23, 0x68, 0x86, 0x4a, 0x9a, 0x63, + 0x60, 0x63, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0xa7, 0xe4, 0x02, 0x20, + 0x44, 0xe7, 0x08, 0x20, 0x42, 0xe7, 0x4f, 0xf4, 0x00, 0x60, 0x3f, 0xe7, + 0x00, 0x2e, 0x7f, 0xf4, 0x9e, 0xac, 0xa1, 0x6b, 0x9d, 0xf8, 0x34, 0x20, + 0x01, 0x29, 0x9d, 0xf8, 0x35, 0x30, 0xd2, 0xb2, 0xdb, 0xb2, 0x13, 0xd1, + 0x13, 0x43, 0x14, 0xbf, 0x4f, 0xf4, 0x00, 0x73, 0x4f, 0xf4, 0x80, 0x73, + 0xa3, 0x65, 0x03, 0x23, 0xe6, 0x68, 0x99, 0x42, 0x84, 0xf8, 0x30, 0x30, + 0x02, 0xd0, 0xb6, 0xf5, 0x00, 0x4f, 0x05, 0xd1, 0x63, 0x6b, 0x43, 0xf0, + 0x80, 0x53, 0x5c, 0xe0, 0xa6, 0x65, 0xf0, 0xe7, 0xb6, 0xf5, 0x80, 0x4f, + 0x33, 0xd1, 0x00, 0x23, 0xcd, 0xe9, 0x0e, 0x33, 0x23, 0x68, 0x5b, 0x69, + 0x98, 0x01, 0x26, 0xd4, 0x0e, 0xa8, 0xef, 0xf7, 0x3f, 0xfa, 0x60, 0xb9, + 0x0f, 0x9b, 0x59, 0x03, 0x22, 0xd5, 0x61, 0x6c, 0x20, 0x68, 0x09, 0x04, + 0xef, 0xf7, 0xb1, 0xf9, 0x18, 0xb9, 0x02, 0x21, 0x20, 0x68, 0xef, 0xf7, + 0x93, 0xf9, 0x63, 0x6b, 0x18, 0x43, 0x60, 0x63, 0x63, 0x6b, 0x00, 0x2b, + 0x3b, 0xd0, 0x23, 0x68, 0x5d, 0x4a, 0x9a, 0x63, 0x4f, 0xf4, 0x00, 0x71, + 0x20, 0x68, 0xef, 0xf7, 0x09, 0xfa, 0x00, 0x28, 0x6d, 0xd0, 0x23, 0x68, + 0x58, 0x4a, 0x9a, 0x63, 0x63, 0x6b, 0x18, 0x43, 0xa0, 0xe7, 0x4f, 0xf4, + 0x00, 0x60, 0xe6, 0xe7, 0x4f, 0xf0, 0x80, 0x60, 0xe3, 0xe7, 0xfe, 0xb9, + 0x23, 0x68, 0xcd, 0xe9, 0x0e, 0x66, 0x5b, 0x69, 0x9a, 0x01, 0x13, 0xd4, + 0x0e, 0xa8, 0xef, 0xf7, 0x0b, 0xfa, 0x60, 0xb9, 0x0f, 0x9b, 0xdb, 0x03, + 0x0f, 0xd5, 0x61, 0x6c, 0x20, 0x68, 0x09, 0x04, 0xef, 0xf7, 0x7d, 0xf9, + 0x18, 0xb9, 0x01, 0x46, 0x20, 0x68, 0xef, 0xf7, 0x5f, 0xf9, 0x61, 0x6b, + 0x08, 0x43, 0xca, 0xe7, 0x4f, 0xf4, 0x00, 0x60, 0xf9, 0xe7, 0x4f, 0xf0, + 0x80, 0x60, 0xf6, 0xe7, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x63, 0x63, 0x63, + 0xc0, 0xe7, 0xec, 0xf7, 0x8f, 0xf8, 0x98, 0xb3, 0x3f, 0x4a, 0xb0, 0xfb, + 0xf2, 0xf9, 0xd4, 0xe9, 0x04, 0xc3, 0xd4, 0xe9, 0x01, 0x8e, 0x4b, 0x45, + 0x0c, 0xd2, 0xa1, 0x6d, 0xb1, 0xf5, 0x00, 0x7f, 0x08, 0xd0, 0xb1, 0xf5, + 0x80, 0x7f, 0x19, 0xd1, 0x9b, 0xb9, 0x90, 0x42, 0x02, 0xd9, 0x37, 0x4b, + 0xb0, 0xfb, 0xf3, 0xf3, 0x21, 0x68, 0x46, 0xea, 0x08, 0x06, 0x4f, 0xf0, + 0x00, 0x08, 0x4a, 0x68, 0x46, 0xea, 0x0e, 0x06, 0x17, 0x40, 0x46, 0xea, + 0x0c, 0x06, 0x37, 0x43, 0x1f, 0x43, 0x4f, 0x60, 0x9e, 0xe7, 0x59, 0x00, + 0xb0, 0xfb, 0xf1, 0xf1, 0x91, 0x42, 0xe7, 0xe7, 0x2c, 0x4a, 0x1b, 0xb9, + 0x90, 0x42, 0x88, 0xbf, 0x4b, 0x46, 0xe5, 0xe7, 0x59, 0x00, 0xb0, 0xfb, + 0xf1, 0xf0, 0xf7, 0xe7, 0x63, 0x6b, 0x43, 0xf0, 0x00, 0x63, 0x63, 0x63, + 0x8a, 0xe7, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0xb8, 0xf1, 0x00, 0x0f, + 0x7f, 0xf4, 0xdf, 0xab, 0xee, 0xf7, 0x3c, 0xf8, 0x06, 0x46, 0xef, 0xf7, + 0xe1, 0xf8, 0x04, 0x28, 0x2b, 0xd1, 0xe3, 0x6b, 0x00, 0x26, 0xa0, 0x6b, + 0x01, 0x22, 0x66, 0x63, 0x6b, 0x63, 0x23, 0x6c, 0xa1, 0x6c, 0xab, 0x63, + 0x63, 0x6c, 0x27, 0x6d, 0xe6, 0x62, 0x85, 0xf8, 0x54, 0x60, 0x84, 0xf8, + 0x30, 0x20, 0xeb, 0x63, 0xe3, 0x6c, 0x64, 0x6d, 0x28, 0x63, 0x29, 0x64, + 0x28, 0x71, 0x28, 0x46, 0x85, 0xf8, 0x80, 0x20, 0x6b, 0x64, 0xaf, 0x64, + 0xec, 0x64, 0xc5, 0xe9, 0x0a, 0x16, 0xc5, 0xe9, 0x02, 0x36, 0xc5, 0xe9, + 0x04, 0x36, 0xc5, 0xe9, 0x06, 0x36, 0xc5, 0xe9, 0x08, 0x36, 0x2b, 0x68, + 0x1b, 0x6d, 0x98, 0x47, 0x30, 0x46, 0xff, 0xf7, 0x97, 0xbb, 0xee, 0xf7, + 0x09, 0xf8, 0x80, 0x1b, 0x01, 0x30, 0xca, 0xd1, 0x4f, 0xf0, 0x00, 0x43, + 0x63, 0x63, 0xf6, 0xe6, 0x3a, 0x0f, 0x00, 0x18, 0xff, 0x0f, 0xe0, 0x1f, + 0x80, 0xf0, 0xfa, 0x02, 0x00, 0xe1, 0xf5, 0x05, 0x40, 0x78, 0x7d, 0x01, + 0x10, 0xb5, 0x04, 0x46, 0x05, 0xf0, 0x88, 0xf8, 0x20, 0x46, 0x10, 0xbd, + 0x10, 0xb5, 0x04, 0x46, 0x05, 0xf0, 0x82, 0xf8, 0x20, 0x46, 0x10, 0xbd, + 0x38, 0xb5, 0xd0, 0xf8, 0xb8, 0x32, 0x00, 0x25, 0x41, 0xf2, 0x18, 0x01, + 0x04, 0x46, 0x03, 0xf5, 0x80, 0x52, 0x15, 0x60, 0x41, 0xf2, 0x04, 0x02, + 0x9d, 0x50, 0x02, 0x22, 0x5a, 0x54, 0x41, 0xf2, 0x10, 0x01, 0x5d, 0x54, + 0x41, 0xf2, 0x14, 0x01, 0x5a, 0x54, 0xd0, 0xf8, 0xb8, 0x02, 0x18, 0xb1, + 0x05, 0xf0, 0x66, 0xf8, 0xc4, 0xf8, 0xb8, 0x52, 0x00, 0x20, 0x38, 0xbd, + 0x0d, 0x4b, 0x4f, 0xf4, 0x00, 0x72, 0x10, 0xb5, 0x03, 0x60, 0x00, 0x23, + 0x04, 0x46, 0x5c, 0x30, 0x40, 0xe9, 0x15, 0x23, 0x40, 0xe9, 0x13, 0x23, + 0x40, 0xe9, 0x11, 0x23, 0x40, 0xe9, 0x0f, 0x23, 0x00, 0x22, 0x00, 0x23, + 0x40, 0xe9, 0x0d, 0x23, 0xeb, 0xf7, 0x66, 0xfe, 0x4f, 0xf4, 0x7a, 0x73, + 0x20, 0x46, 0xa3, 0x65, 0x10, 0xbd, 0x00, 0xbf, 0x60, 0xeb, 0x01, 0x08, + 0x5c, 0x30, 0xf5, 0xf7, 0x2f, 0xb8, 0x5c, 0x30, 0xf5, 0xf7, 0x4c, 0xb8, + 0x08, 0xb5, 0x09, 0x4b, 0x1b, 0x68, 0x2b, 0xb1, 0x08, 0x4b, 0x1b, 0x68, + 0x50, 0x33, 0x53, 0xf8, 0x20, 0x00, 0x08, 0xbd, 0x06, 0x4b, 0x1b, 0x78, + 0x13, 0xb1, 0x06, 0x48, 0x06, 0xf0, 0xb2, 0xfc, 0x4f, 0xf0, 0xff, 0x30, + 0xf5, 0xe7, 0x00, 0xbf, 0xc4, 0x0b, 0x02, 0x24, 0x44, 0x05, 0x00, 0x24, + 0x08, 0x0b, 0x02, 0x24, 0x5a, 0xe2, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x41, + 0x49, 0x4e, 0x35, 0x68, 0x00, 0x2d, 0x65, 0xd1, 0xef, 0xf7, 0x22, 0xfb, + 0x47, 0x4c, 0x48, 0x4b, 0x7f, 0x21, 0x25, 0x61, 0xc4, 0xe9, 0x00, 0x35, + 0xff, 0x23, 0xc4, 0xe9, 0x02, 0x13, 0x94, 0xf8, 0x21, 0x30, 0xc4, 0xe9, + 0x06, 0x55, 0x03, 0xf0, 0xff, 0x02, 0x1b, 0xb9, 0x84, 0xf8, 0x20, 0x20, + 0xef, 0xf7, 0x0e, 0xfb, 0x02, 0x23, 0xca, 0x22, 0x84, 0xf8, 0x21, 0x30, + 0x23, 0x68, 0x5a, 0x62, 0x53, 0x22, 0x5a, 0x62, 0xdd, 0x68, 0x15, 0xf0, + 0x40, 0x05, 0x2d, 0xd0, 0x22, 0x68, 0x20, 0x69, 0x93, 0x68, 0x23, 0xf4, + 0xe0, 0x03, 0x23, 0xf0, 0x40, 0x03, 0x93, 0x60, 0x63, 0x68, 0x91, 0x68, + 0x03, 0x43, 0xa0, 0x69, 0x03, 0x43, 0x0b, 0x43, 0x93, 0x60, 0xd4, 0xe9, + 0x02, 0x13, 0x43, 0xea, 0x01, 0x43, 0x13, 0x61, 0x2e, 0x4b, 0xda, 0x68, + 0x22, 0xf0, 0x40, 0x02, 0xda, 0x60, 0x9a, 0x68, 0x92, 0x06, 0x33, 0xd5, + 0x9a, 0x68, 0x22, 0xf0, 0x20, 0x02, 0x9a, 0x60, 0xed, 0xf7, 0x76, 0xff, + 0x05, 0x46, 0x10, 0xb1, 0x03, 0x25, 0x84, 0xf8, 0x21, 0x50, 0x25, 0x4a, + 0x93, 0x68, 0x43, 0xf0, 0x20, 0x03, 0x93, 0x60, 0x75, 0xb9, 0x24, 0xe0, + 0x4f, 0xf0, 0xff, 0x32, 0x4f, 0xf0, 0x03, 0x08, 0xda, 0x60, 0xed, 0xf7, + 0x31, 0xff, 0x07, 0x46, 0x23, 0x68, 0xdb, 0x68, 0x5b, 0x06, 0x0b, 0xd5, + 0x00, 0x2d, 0xc3, 0xd0, 0x23, 0x68, 0xff, 0x22, 0x5a, 0x62, 0x1d, 0xbb, + 0x01, 0x23, 0x84, 0xf8, 0x21, 0x30, 0x33, 0x60, 0xbd, 0xe8, 0xf0, 0x81, + 0xed, 0xf7, 0x1e, 0xff, 0xc0, 0x1b, 0xb0, 0xf5, 0x7a, 0x7f, 0xe9, 0xd9, + 0x03, 0x25, 0x84, 0xf8, 0x21, 0x80, 0xe5, 0xe7, 0xed, 0xf7, 0x46, 0xff, + 0x60, 0xb9, 0x22, 0x68, 0x00, 0x25, 0x60, 0x69, 0xd3, 0x6c, 0x23, 0xf0, + 0x03, 0x03, 0xd3, 0x64, 0xe3, 0x69, 0xd1, 0x6c, 0x03, 0x43, 0x0b, 0x43, + 0xd3, 0x64, 0xdb, 0xe7, 0x03, 0x25, 0x84, 0xf8, 0x21, 0x50, 0xd7, 0xe7, + 0x07, 0x4b, 0x1b, 0x78, 0x00, 0x2b, 0xdb, 0xd0, 0x06, 0x48, 0xbd, 0xe8, + 0xf0, 0x41, 0x06, 0xf0, 0x11, 0xbc, 0x00, 0xbf, 0xc4, 0x0b, 0x02, 0x24, + 0x44, 0x05, 0x00, 0x24, 0x00, 0x40, 0x00, 0x58, 0x08, 0x0b, 0x02, 0x24, + 0x6e, 0xe2, 0x01, 0x08, 0x10, 0xb5, 0x0b, 0x4c, 0x20, 0x46, 0xf9, 0xf7, + 0xba, 0xf8, 0xb0, 0xfa, 0x80, 0xf1, 0x20, 0x46, 0x08, 0x4c, 0x49, 0x09, + 0xf9, 0xf7, 0xbc, 0xf8, 0x20, 0x46, 0xf9, 0xf7, 0xb0, 0xf8, 0xb0, 0xfa, + 0x80, 0xf1, 0x20, 0x46, 0x49, 0x09, 0xbd, 0xe8, 0x10, 0x40, 0xf9, 0xf7, + 0xb1, 0xb8, 0x00, 0xbf, 0x0c, 0x07, 0x00, 0x24, 0xa8, 0x0b, 0x02, 0x24, + 0x10, 0xb5, 0x04, 0x46, 0x01, 0x68, 0xd0, 0xe9, 0x01, 0x23, 0x05, 0x48, + 0xf9, 0xf7, 0x0c, 0xfc, 0x20, 0x68, 0x04, 0xf0, 0x5b, 0xff, 0x20, 0x46, + 0xbd, 0xe8, 0x10, 0x40, 0x04, 0xf0, 0x56, 0xbf, 0xb0, 0x3f, 0x02, 0x24, + 0x38, 0xb5, 0x04, 0x46, 0x41, 0xf2, 0x1c, 0x00, 0x04, 0xf0, 0x46, 0xff, + 0xc4, 0xf8, 0xb8, 0x02, 0xe0, 0xb1, 0x02, 0x22, 0x41, 0xf2, 0x18, 0x03, + 0x00, 0xf5, 0x80, 0x51, 0x0c, 0x4d, 0xc2, 0x52, 0x00, 0x23, 0x0b, 0x60, + 0x41, 0xf2, 0x04, 0x01, 0x43, 0x50, 0x41, 0xf2, 0x08, 0x01, 0x45, 0x50, + 0x41, 0xf2, 0x0c, 0x01, 0x43, 0x50, 0x41, 0xf2, 0x10, 0x01, 0x43, 0x50, + 0x41, 0xf2, 0x14, 0x03, 0xc2, 0x52, 0xd4, 0xf8, 0xbc, 0x32, 0x1b, 0x69, + 0x98, 0x47, 0x00, 0xb1, 0x02, 0x20, 0x38, 0xbd, 0x00, 0x00, 0x04, 0x08, + 0x2d, 0xe9, 0xf0, 0x41, 0x05, 0x46, 0x40, 0x68, 0x88, 0x46, 0x11, 0x46, + 0xdd, 0xe9, 0x06, 0x67, 0x38, 0xb9, 0x10, 0x48, 0x06, 0xf0, 0xa2, 0xfb, + 0x6f, 0xf4, 0x7a, 0x64, 0x20, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0x22, + 0x04, 0xf0, 0x02, 0xfc, 0x04, 0x46, 0x08, 0xb1, 0x0a, 0x48, 0xf1, 0xe7, + 0x6b, 0x68, 0x32, 0x46, 0x01, 0x21, 0x40, 0x46, 0x04, 0xf0, 0xe8, 0xfb, + 0x00, 0x23, 0x02, 0x46, 0xbb, 0x42, 0x08, 0xbf, 0xb0, 0x42, 0xe9, 0xd0, + 0x69, 0x68, 0x04, 0x48, 0xf5, 0xf7, 0x3a, 0xfe, 0xe2, 0xe7, 0x00, 0xbf, + 0x7d, 0xe2, 0x01, 0x08, 0x93, 0xe2, 0x01, 0x08, 0xa0, 0xe2, 0x01, 0x08, + 0xb0, 0xf1, 0x20, 0x4f, 0x7f, 0xb5, 0x04, 0x46, 0x14, 0xd3, 0x15, 0x4b, + 0x1d, 0x68, 0x1d, 0xb3, 0x2b, 0x68, 0x00, 0xf1, 0xc0, 0x42, 0xde, 0x69, + 0x19, 0x6b, 0x28, 0x46, 0x00, 0x23, 0x03, 0x92, 0x88, 0x47, 0x03, 0x9a, + 0x00, 0x23, 0xcd, 0xe9, 0x00, 0x01, 0x28, 0x46, 0xb0, 0x47, 0x80, 0xb2, + 0x04, 0xb0, 0x70, 0xbd, 0xb0, 0xf1, 0x10, 0x4f, 0x06, 0xd3, 0x0a, 0x4b, + 0x00, 0xf1, 0xe0, 0x42, 0x1d, 0x68, 0x2b, 0x68, 0xde, 0x69, 0xe7, 0xe7, + 0xeb, 0xf7, 0xa6, 0xfd, 0x21, 0x46, 0x02, 0x46, 0x05, 0x48, 0xf9, 0xf7, + 0x31, 0xfa, 0xea, 0xe7, 0x4f, 0xf6, 0xff, 0x70, 0xe8, 0xe7, 0x00, 0xbf, + 0x0c, 0x0b, 0x02, 0x24, 0xa4, 0x0b, 0x02, 0x24, 0xb0, 0x3f, 0x02, 0x24, + 0x10, 0xb5, 0x0c, 0x4c, 0xf7, 0xf7, 0xc6, 0xff, 0x20, 0x46, 0xf8, 0xf7, + 0x54, 0xff, 0x00, 0x23, 0x63, 0x63, 0xf7, 0xf7, 0xab, 0xff, 0x01, 0x21, + 0x07, 0x48, 0xf8, 0xf7, 0xfb, 0xff, 0x01, 0x21, 0x06, 0x48, 0xf8, 0xf7, + 0xf7, 0xff, 0x01, 0x21, 0x05, 0x48, 0xbd, 0xe8, 0x10, 0x40, 0xf8, 0xf7, + 0xf1, 0xbf, 0x00, 0xbf, 0xe8, 0x0b, 0x02, 0x24, 0xa8, 0x0b, 0x02, 0x24, + 0x48, 0x0b, 0x02, 0x24, 0x0c, 0x07, 0x00, 0x24, 0x10, 0xb5, 0x02, 0x24, + 0xc0, 0xe9, 0x07, 0x22, 0xc0, 0xf8, 0x94, 0x42, 0xd0, 0xf8, 0xc0, 0x02, + 0xeb, 0xf7, 0x1b, 0xfd, 0x00, 0x20, 0x10, 0xbd, 0x08, 0xb5, 0x00, 0x22, + 0x04, 0x23, 0x11, 0x46, 0xc0, 0xf8, 0x94, 0x32, 0xd0, 0xf8, 0xc0, 0x02, + 0xeb, 0xf7, 0x0f, 0xfd, 0x00, 0x20, 0x08, 0xbd, 0xf0, 0xb5, 0x41, 0xf2, + 0x18, 0x02, 0xd0, 0xf8, 0xb8, 0x42, 0x89, 0xb0, 0x07, 0x46, 0xa3, 0x5c, + 0x04, 0x2b, 0x65, 0xd1, 0x04, 0xf5, 0x80, 0x56, 0x41, 0xf2, 0x04, 0x03, + 0x31, 0x68, 0x00, 0x29, 0x4f, 0xd1, 0x22, 0x78, 0xaa, 0xb9, 0xe3, 0x58, + 0x01, 0x2b, 0x41, 0xd1, 0x00, 0x25, 0x41, 0xf2, 0x04, 0x03, 0x41, 0xf2, + 0x18, 0x02, 0xe5, 0x50, 0x03, 0x23, 0x35, 0x60, 0xa3, 0x54, 0x41, 0xf2, + 0x11, 0x02, 0xa5, 0x54, 0x41, 0xf2, 0x12, 0x02, 0xa5, 0x52, 0x41, 0xf2, + 0x14, 0x02, 0xa3, 0x54, 0x2b, 0xe0, 0x21, 0x2a, 0x10, 0xd1, 0xe3, 0x58, + 0x05, 0x2b, 0x29, 0xd1, 0xe3, 0x78, 0xa2, 0x78, 0x1b, 0x04, 0x03, 0xeb, + 0x02, 0x23, 0x62, 0x78, 0x13, 0x44, 0x22, 0x79, 0x03, 0xeb, 0x02, 0x63, + 0x41, 0xf2, 0x08, 0x02, 0xa3, 0x50, 0xd9, 0xe7, 0x41, 0x2a, 0x19, 0xd1, + 0xe3, 0x58, 0x05, 0x2b, 0x16, 0xd1, 0xe3, 0x78, 0xa0, 0x78, 0x1b, 0x04, + 0x03, 0xeb, 0x00, 0x23, 0x60, 0x78, 0x03, 0x44, 0x20, 0x79, 0x03, 0xeb, + 0x00, 0x60, 0x41, 0xf2, 0x08, 0x03, 0xe0, 0x50, 0xd7, 0xf8, 0xbc, 0x32, + 0x9b, 0x69, 0x98, 0x47, 0x00, 0x28, 0xc1, 0xd0, 0x02, 0x25, 0x28, 0x46, + 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0x23, 0x41, 0xf2, 0x04, 0x02, 0x38, 0x46, + 0xa3, 0x50, 0x33, 0x60, 0xeb, 0xf7, 0xa2, 0xfc, 0xb4, 0xe7, 0x01, 0x29, + 0xb2, 0xd9, 0x41, 0xf2, 0x08, 0x02, 0x02, 0x39, 0xa0, 0x58, 0xd7, 0xf8, + 0xbc, 0x22, 0x00, 0xeb, 0x01, 0x31, 0x20, 0x46, 0xd5, 0x69, 0xe2, 0x58, + 0xa8, 0x47, 0xe1, 0xe7, 0x07, 0x2b, 0x4f, 0xf0, 0x00, 0x03, 0x13, 0xd1, + 0x41, 0xf2, 0x19, 0x01, 0x63, 0x54, 0x18, 0x49, 0x91, 0xf8, 0x2f, 0x50, + 0x41, 0xf2, 0x11, 0x01, 0x15, 0xf0, 0x04, 0x05, 0x0a, 0xd0, 0x06, 0x20, + 0xa0, 0x54, 0x41, 0xf2, 0x12, 0x02, 0x63, 0x54, 0xa3, 0x52, 0x41, 0xf2, + 0x14, 0x02, 0xa0, 0x54, 0x1d, 0x46, 0xca, 0xe7, 0x08, 0x23, 0xa3, 0x54, + 0x41, 0xf2, 0x12, 0x02, 0x65, 0x54, 0xa5, 0x52, 0x41, 0xf2, 0x14, 0x02, + 0xa3, 0x54, 0xd0, 0xf8, 0xbc, 0x32, 0x5b, 0x69, 0x98, 0x47, 0x09, 0x4b, + 0x09, 0x4a, 0x00, 0x21, 0x09, 0x48, 0x07, 0x92, 0x06, 0x95, 0x00, 0x92, + 0xcd, 0xe9, 0x04, 0x37, 0x04, 0xab, 0xcd, 0xe9, 0x02, 0x01, 0x06, 0x48, + 0x0e, 0xcb, 0xf8, 0xf7, 0xc1, 0xfe, 0xac, 0xe7, 0x8c, 0x02, 0x00, 0x24, + 0x79, 0x68, 0x01, 0x08, 0xd5, 0x4c, 0x01, 0x08, 0x40, 0x0d, 0x03, 0x00, + 0x28, 0x06, 0x00, 0x24, 0x38, 0xb5, 0xd0, 0xf8, 0xb4, 0x32, 0x04, 0x46, + 0x01, 0x79, 0x5b, 0x68, 0x98, 0x47, 0xd4, 0xf8, 0xc0, 0x42, 0x94, 0xf8, + 0xbc, 0x33, 0x01, 0x2b, 0x21, 0xd0, 0x25, 0x68, 0x01, 0x23, 0x84, 0xf8, + 0xbc, 0x33, 0x28, 0x46, 0xab, 0x68, 0x23, 0xf0, 0x01, 0x03, 0xab, 0x60, + 0xee, 0xf7, 0xb0, 0xfc, 0x4f, 0xf4, 0x84, 0x63, 0x22, 0x68, 0x13, 0x61, + 0x0a, 0x4b, 0x01, 0x3b, 0x02, 0xd0, 0x11, 0x69, 0x89, 0x06, 0xfa, 0xd4, + 0xa3, 0x6a, 0x01, 0x2b, 0x06, 0xd1, 0xa3, 0x69, 0x01, 0x2b, 0x03, 0xd0, + 0xab, 0x6b, 0x23, 0xf4, 0x80, 0x33, 0xab, 0x63, 0x00, 0x23, 0x84, 0xf8, + 0xbc, 0x33, 0x00, 0x20, 0x38, 0xbd, 0x00, 0xbf, 0x41, 0x0d, 0x03, 0x00, + 0x08, 0xb5, 0xff, 0xf7, 0xc9, 0xff, 0xfe, 0xf7, 0x05, 0xf9, 0x00, 0x00, + 0x2d, 0xe9, 0xf7, 0x43, 0x0d, 0x78, 0x00, 0x23, 0x06, 0x46, 0xd0, 0xf8, + 0xb8, 0x42, 0x15, 0xf0, 0x60, 0x05, 0xad, 0xf8, 0x06, 0x30, 0x00, 0xf0, + 0x7c, 0x81, 0x20, 0x2d, 0x40, 0xf0, 0x8f, 0x81, 0x91, 0xf8, 0x01, 0x80, + 0xb8, 0xf1, 0x06, 0x0f, 0x00, 0xf2, 0x89, 0x81, 0xdf, 0xe8, 0x18, 0xf0, + 0x44, 0x01, 0x07, 0x00, 0x43, 0x00, 0xb4, 0x00, 0x0b, 0x01, 0x22, 0x01, + 0x27, 0x01, 0x41, 0xf2, 0x18, 0x03, 0xca, 0x88, 0xe0, 0x5c, 0x02, 0xb3, + 0x02, 0x28, 0x01, 0xd0, 0x05, 0x28, 0x18, 0xd1, 0x49, 0x88, 0x04, 0xf5, + 0x80, 0x53, 0x19, 0x60, 0x41, 0xf2, 0x04, 0x03, 0x41, 0xf2, 0x18, 0x01, + 0xe2, 0x50, 0x03, 0x23, 0x63, 0x54, 0x41, 0xf2, 0x14, 0x01, 0x63, 0x54, + 0x21, 0x46, 0xd6, 0xf8, 0xc0, 0x02, 0xc6, 0xf8, 0x94, 0x32, 0xc6, 0xe9, + 0x57, 0x22, 0xeb, 0xf7, 0xf7, 0xfb, 0x00, 0x25, 0x15, 0xe0, 0x30, 0x46, + 0xeb, 0xf7, 0xd2, 0xfb, 0xf9, 0xe7, 0x05, 0x28, 0x01, 0xd0, 0x02, 0x28, + 0xf7, 0xd1, 0x4f, 0xf4, 0x83, 0x72, 0x00, 0x25, 0xe2, 0x52, 0x41, 0xf2, + 0x11, 0x03, 0x06, 0x22, 0xe5, 0x54, 0x41, 0xf2, 0x12, 0x03, 0xe5, 0x52, + 0x41, 0xf2, 0x14, 0x03, 0xe2, 0x54, 0x28, 0x46, 0x03, 0xb0, 0xbd, 0xe8, + 0xf0, 0x83, 0xca, 0x88, 0x41, 0xf2, 0x18, 0x00, 0x00, 0x2a, 0x5f, 0xd0, + 0x20, 0x5c, 0x04, 0xf5, 0x80, 0x53, 0x02, 0x28, 0x01, 0xd0, 0x09, 0x28, + 0x52, 0xd1, 0x4f, 0x88, 0x41, 0xf2, 0x04, 0x09, 0x1f, 0x60, 0x41, 0xf2, + 0x18, 0x03, 0x44, 0xf8, 0x09, 0x20, 0xdf, 0xb9, 0x03, 0x2a, 0x21, 0x46, + 0x4f, 0xf0, 0x03, 0x02, 0x98, 0xbf, 0x4f, 0xf0, 0x09, 0x08, 0x04, 0xf8, + 0x03, 0x80, 0x41, 0xf2, 0x11, 0x03, 0xe7, 0x54, 0x41, 0xf2, 0x12, 0x03, + 0xe7, 0x52, 0x41, 0xf2, 0x14, 0x03, 0x04, 0xf8, 0x03, 0x80, 0x4f, 0xf4, + 0x04, 0x53, 0x23, 0x80, 0x41, 0x23, 0xa3, 0x70, 0x30, 0x46, 0xff, 0xf7, + 0x71, 0xfe, 0xb2, 0xe7, 0x01, 0x2f, 0x41, 0xf2, 0x11, 0x01, 0x1b, 0xd0, + 0x09, 0x20, 0x00, 0x25, 0x02, 0x3f, 0xe0, 0x54, 0x41, 0xf2, 0x12, 0x03, + 0x65, 0x54, 0x21, 0x46, 0xe5, 0x52, 0x41, 0xf2, 0x14, 0x03, 0xe0, 0x54, + 0x41, 0xf2, 0x08, 0x03, 0xe0, 0x58, 0xd6, 0xf8, 0xbc, 0x32, 0x00, 0xeb, + 0x07, 0x30, 0x1b, 0x6a, 0x98, 0x47, 0x34, 0xf8, 0x09, 0x20, 0x01, 0x46, + 0x30, 0x46, 0xff, 0xf7, 0x51, 0xfe, 0xaa, 0xe7, 0x0f, 0x22, 0x00, 0x25, + 0xe2, 0x54, 0x41, 0xf2, 0x12, 0x03, 0x65, 0x54, 0xe5, 0x52, 0x41, 0xf2, + 0x14, 0x03, 0xe2, 0x54, 0x30, 0x46, 0xeb, 0xf7, 0x5d, 0xfb, 0x9c, 0xe7, + 0x00, 0x25, 0x41, 0xf2, 0x04, 0x02, 0xa5, 0x50, 0x1d, 0x60, 0xf5, 0xe7, + 0x02, 0x23, 0x41, 0xf2, 0x11, 0x01, 0x23, 0x54, 0x62, 0x54, 0x41, 0xf2, + 0x12, 0x01, 0x62, 0x52, 0x41, 0xf2, 0x14, 0x01, 0x63, 0x54, 0x72, 0xe7, + 0x41, 0xf2, 0x18, 0x02, 0x04, 0xf5, 0x80, 0x55, 0xa3, 0x5c, 0x10, 0x35, + 0x03, 0x2b, 0x04, 0xd0, 0x06, 0x2b, 0x2d, 0xd0, 0x06, 0x22, 0x29, 0x46, + 0xae, 0xe7, 0x41, 0xf2, 0x04, 0x03, 0x41, 0xf2, 0x11, 0x00, 0xe3, 0x58, + 0xeb, 0xb1, 0x04, 0x23, 0x41, 0xf2, 0x12, 0x01, 0xa3, 0x54, 0x00, 0x22, + 0x22, 0x54, 0x62, 0x52, 0x41, 0xf2, 0x14, 0x02, 0xa3, 0x54, 0x41, 0xf2, + 0x08, 0x03, 0xe0, 0x58, 0x04, 0xf5, 0x80, 0x53, 0x19, 0x68, 0xd6, 0xf8, + 0xbc, 0x32, 0x31, 0xb9, 0x22, 0x78, 0x41, 0x2a, 0x03, 0xd1, 0x5b, 0x6a, + 0x2a, 0x46, 0x98, 0x47, 0xdc, 0xe7, 0x5b, 0x6a, 0x2a, 0x46, 0x01, 0x21, + 0xf9, 0xe7, 0x05, 0x21, 0xa1, 0x54, 0x23, 0x54, 0x41, 0xf2, 0x12, 0x02, + 0xa3, 0x52, 0x0d, 0xe0, 0x41, 0xf2, 0x19, 0x03, 0xe3, 0x5c, 0x01, 0x2b, + 0x0c, 0xd1, 0x07, 0x21, 0xa1, 0x54, 0x41, 0xf2, 0x11, 0x02, 0xa3, 0x54, + 0x41, 0xf2, 0x12, 0x03, 0x00, 0x22, 0xe2, 0x52, 0x41, 0xf2, 0x14, 0x03, + 0xe1, 0x54, 0xbf, 0xe7, 0x00, 0x2b, 0xbd, 0xd1, 0x56, 0x49, 0x91, 0xf8, + 0x2f, 0x10, 0x49, 0x07, 0xb8, 0xd5, 0x02, 0x21, 0xa1, 0x54, 0x41, 0xf2, + 0x11, 0x02, 0xa3, 0x54, 0xdc, 0xe7, 0x41, 0xf2, 0x18, 0x03, 0x41, 0xf2, + 0x10, 0x01, 0xe2, 0x5c, 0x0a, 0x2a, 0x07, 0xd1, 0x02, 0x22, 0x00, 0x25, + 0xe2, 0x54, 0x41, 0xf2, 0x14, 0x03, 0x65, 0x50, 0xe2, 0x52, 0x24, 0xe7, + 0x0a, 0x22, 0xe2, 0x54, 0x0e, 0x23, 0x63, 0x50, 0x41, 0xf2, 0x14, 0x03, + 0xe2, 0x52, 0x04, 0xe7, 0x04, 0xf5, 0x80, 0x51, 0x01, 0x22, 0x18, 0x31, + 0x48, 0xe7, 0x41, 0xf2, 0x18, 0x02, 0xa3, 0x5c, 0x09, 0x2b, 0x3f, 0xf6, + 0xfa, 0xae, 0x4f, 0xf4, 0x1b, 0x75, 0xdd, 0x40, 0xed, 0x43, 0x15, 0xf0, + 0x01, 0x05, 0x7f, 0xf4, 0xf2, 0xae, 0x02, 0x23, 0xa3, 0x54, 0x41, 0xf2, + 0x10, 0x02, 0xa5, 0x50, 0x41, 0xf2, 0x14, 0x02, 0xa3, 0x52, 0x04, 0xf5, + 0x80, 0x53, 0x1d, 0x60, 0x41, 0xf2, 0x04, 0x03, 0xe5, 0x50, 0xfa, 0xe6, + 0x41, 0xf2, 0x18, 0x00, 0x22, 0x5c, 0x09, 0x2a, 0x14, 0xd8, 0x4f, 0xf4, + 0x1b, 0x73, 0xd3, 0x40, 0xdb, 0x43, 0x13, 0xf0, 0x01, 0x03, 0x0d, 0xd1, + 0x02, 0x22, 0x22, 0x54, 0x41, 0xf2, 0x10, 0x00, 0x23, 0x50, 0x41, 0xf2, + 0x14, 0x00, 0x22, 0x52, 0x04, 0xf5, 0x80, 0x52, 0x13, 0x60, 0x41, 0xf2, + 0x04, 0x02, 0xa3, 0x50, 0x27, 0x4b, 0x93, 0xf8, 0x30, 0x50, 0x15, 0xf0, + 0x10, 0x05, 0x08, 0xd0, 0x30, 0x46, 0x45, 0x46, 0xff, 0xf7, 0x46, 0xfe, + 0xd6, 0xf8, 0xc0, 0x02, 0xf0, 0xf7, 0xf0, 0xfc, 0xd1, 0xe6, 0x48, 0x88, + 0xf2, 0xf7, 0x22, 0xfa, 0xcd, 0xe6, 0x4f, 0x78, 0x0b, 0x2f, 0x12, 0xd8, + 0xdf, 0xe8, 0x07, 0xf0, 0x06, 0x11, 0x11, 0x11, 0x11, 0x11, 0x16, 0x11, + 0x11, 0x11, 0x23, 0x2c, 0x90, 0xf8, 0x9c, 0x32, 0x03, 0x2b, 0x06, 0xd1, + 0x02, 0x22, 0x0d, 0xf1, 0x06, 0x01, 0x3d, 0x46, 0xff, 0xf7, 0x5e, 0xfd, + 0xb7, 0xe6, 0x30, 0x46, 0x02, 0x25, 0xeb, 0xf7, 0x73, 0xfa, 0xb2, 0xe6, + 0x4b, 0x88, 0x1b, 0x12, 0x21, 0x2b, 0x05, 0xd1, 0xca, 0x88, 0x0f, 0x49, + 0x09, 0x2a, 0x28, 0xbf, 0x09, 0x22, 0xf9, 0xe6, 0x00, 0x22, 0x11, 0x46, + 0xf6, 0xe6, 0x90, 0xf8, 0x9c, 0x32, 0x03, 0x2b, 0xe9, 0xd1, 0x04, 0xf5, + 0x80, 0x51, 0x01, 0x22, 0x0c, 0x31, 0xed, 0xe6, 0x8b, 0x78, 0x03, 0x2b, + 0xe1, 0xd8, 0x90, 0xf8, 0x9c, 0x22, 0x03, 0x2a, 0xdd, 0xd1, 0x41, 0xf2, + 0x0c, 0x02, 0xa3, 0x50, 0x91, 0xe6, 0x00, 0xbf, 0x8c, 0x02, 0x00, 0x24, + 0xb9, 0x02, 0x00, 0x24, 0x43, 0x68, 0x2d, 0xe9, 0xf3, 0x47, 0xdd, 0xe9, + 0x0a, 0x45, 0x80, 0x46, 0x91, 0x46, 0x1b, 0xb9, 0x1b, 0x48, 0x06, 0xf0, + 0x4d, 0xf8, 0x23, 0xe0, 0x00, 0x26, 0x00, 0x27, 0x4f, 0xf0, 0xff, 0x0a, + 0xaf, 0x42, 0xd8, 0xf8, 0x04, 0x00, 0x08, 0xbf, 0xa6, 0x42, 0x22, 0xd0, + 0x00, 0x22, 0x09, 0xeb, 0x06, 0x01, 0x04, 0xf0, 0xa5, 0xf8, 0x08, 0xb1, + 0x12, 0x48, 0xea, 0xe7, 0x01, 0x22, 0xd8, 0xf8, 0x04, 0x30, 0x0d, 0xf1, + 0x07, 0x00, 0x8d, 0xf8, 0x07, 0xa0, 0x11, 0x46, 0x05, 0xf0, 0x5e, 0xff, + 0x01, 0x28, 0x02, 0x46, 0x09, 0xd0, 0xd8, 0xf8, 0x04, 0x10, 0x0b, 0x48, + 0xf5, 0xf7, 0xdc, 0xfa, 0x6f, 0xf4, 0x7a, 0x60, 0x02, 0xb0, 0xbd, 0xe8, + 0xf0, 0x87, 0x01, 0x36, 0x47, 0xf1, 0x00, 0x07, 0xd6, 0xe7, 0x03, 0xf0, + 0xbd, 0xfe, 0x00, 0x28, 0xf4, 0xd0, 0x04, 0x48, 0xc9, 0xe7, 0x00, 0xbf, + 0xbe, 0xe2, 0x01, 0x08, 0xd5, 0xe2, 0x01, 0x08, 0xe3, 0xe2, 0x01, 0x08, + 0x02, 0xe3, 0x01, 0x08, 0x70, 0xb5, 0x04, 0x46, 0x40, 0x68, 0x0d, 0x46, + 0x04, 0x9e, 0x11, 0x46, 0x18, 0xb9, 0x10, 0x48, 0x06, 0xf0, 0x06, 0xf8, + 0x12, 0xe0, 0x00, 0x22, 0x04, 0xf0, 0x6a, 0xf8, 0x08, 0xb1, 0x0d, 0x48, + 0xf6, 0xe7, 0x01, 0x22, 0x63, 0x68, 0x31, 0x46, 0x28, 0x46, 0x05, 0xf0, + 0x27, 0xff, 0x01, 0x28, 0x02, 0x46, 0x06, 0xd0, 0x61, 0x68, 0x08, 0x48, + 0xf5, 0xf7, 0xa6, 0xfa, 0x6f, 0xf4, 0x7a, 0x60, 0x70, 0xbd, 0x60, 0x68, + 0x03, 0xf0, 0x8c, 0xfe, 0x00, 0x28, 0xf9, 0xd0, 0x03, 0x48, 0xdf, 0xe7, + 0x10, 0xe3, 0x01, 0x08, 0x29, 0xe3, 0x01, 0x08, 0x39, 0xe3, 0x01, 0x08, + 0x5a, 0xe3, 0x01, 0x08, 0x08, 0xb5, 0x40, 0x68, 0x03, 0xf0, 0xb2, 0xfd, + 0x00, 0x20, 0x08, 0xbd, 0xf7, 0xb5, 0x04, 0x46, 0xd0, 0xe9, 0x02, 0x01, + 0x03, 0xf0, 0xb0, 0xff, 0x60, 0x60, 0x48, 0xb9, 0xd4, 0xe9, 0x02, 0x12, + 0x13, 0x48, 0xf5, 0xf7, 0x81, 0xfa, 0x6f, 0xf4, 0x7a, 0x65, 0x28, 0x46, + 0x03, 0xb0, 0xf0, 0xbd, 0x02, 0x22, 0x00, 0x21, 0x04, 0xf0, 0x2c, 0xf8, + 0x05, 0x46, 0x18, 0xb1, 0x0d, 0x48, 0x05, 0xf0, 0xbf, 0xff, 0xf0, 0xe7, + 0x60, 0x68, 0x00, 0x27, 0x04, 0xf0, 0xe0, 0xf8, 0xd4, 0xe9, 0x04, 0x23, + 0x9f, 0x42, 0x08, 0xbf, 0x90, 0x42, 0x06, 0xd0, 0xa1, 0x68, 0xcd, 0xe9, + 0x00, 0x23, 0x02, 0x46, 0x05, 0x48, 0xf5, 0xf7, 0x61, 0xfa, 0x01, 0x23, + 0x84, 0xf8, 0x30, 0x30, 0xdd, 0xe7, 0x00, 0xbf, 0x6a, 0xe3, 0x01, 0x08, + 0x91, 0xe3, 0x01, 0x08, 0x9e, 0xe3, 0x01, 0x08, 0x1f, 0xb5, 0x16, 0x48, + 0xf9, 0xf7, 0x0c, 0xf9, 0x15, 0x4b, 0x18, 0x68, 0xf0, 0xb1, 0x03, 0x68, + 0xdb, 0x68, 0x98, 0x47, 0x01, 0xa9, 0x01, 0x20, 0xec, 0xf7, 0x10, 0xfc, + 0xb0, 0xb9, 0x02, 0xa9, 0x01, 0x98, 0xec, 0xf7, 0x37, 0xfe, 0x01, 0x46, + 0x68, 0xb9, 0x9d, 0xf8, 0x08, 0x30, 0x01, 0x98, 0x02, 0x2b, 0x0f, 0xd0, + 0x03, 0x2b, 0x06, 0xd1, 0xec, 0xf7, 0x0a, 0xfe, 0x18, 0xb9, 0x02, 0x21, + 0x01, 0x98, 0xeb, 0xf7, 0x2d, 0xfd, 0x01, 0x98, 0xec, 0xf7, 0xe4, 0xfb, + 0x00, 0x20, 0x05, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x82, 0x68, 0xeb, 0xf7, + 0x3d, 0xfd, 0xf4, 0xe7, 0xb0, 0x3f, 0x02, 0x24, 0x0c, 0x0b, 0x02, 0x24, + 0x02, 0xf0, 0x70, 0xbb, 0xef, 0xf3, 0x10, 0x83, 0x2b, 0xb9, 0xef, 0xf3, + 0x11, 0x80, 0x00, 0x38, 0x18, 0xbf, 0x01, 0x20, 0x70, 0x47, 0x01, 0x20, + 0x70, 0x47, 0x00, 0x00, 0x08, 0xb5, 0xef, 0xf3, 0x05, 0x83, 0x4b, 0xb1, + 0x08, 0x4b, 0x58, 0x69, 0x08, 0x4b, 0x1b, 0x68, 0x03, 0xb1, 0x98, 0x47, + 0xdf, 0xf8, 0x1c, 0xc0, 0x00, 0xdf, 0xfe, 0xe7, 0xff, 0xf7, 0xe4, 0xff, + 0x00, 0x28, 0xf1, 0xd1, 0xdf, 0xf8, 0x10, 0xc0, 0x00, 0xdf, 0xef, 0xe7, + 0x1c, 0x01, 0x00, 0x24, 0x0c, 0xdc, 0x01, 0x08, 0x51, 0x43, 0x01, 0x08, + 0x7d, 0x3b, 0x01, 0x08, 0x04, 0x46, 0x0b, 0x4d, 0x07, 0xb5, 0xef, 0xf3, + 0x05, 0x83, 0x00, 0x2b, 0xfb, 0xd1, 0xff, 0xf7, 0xcd, 0xff, 0x02, 0x46, + 0x00, 0x28, 0xf6, 0xd1, 0x20, 0x46, 0x69, 0x46, 0x4f, 0xf0, 0xff, 0x33, + 0xac, 0x46, 0x00, 0xdf, 0x00, 0x28, 0xee, 0xd1, 0xdd, 0xe9, 0x00, 0x30, + 0x98, 0x47, 0xea, 0xe7, 0x01, 0x4e, 0x01, 0x08, 0x2d, 0xe9, 0xf7, 0x4f, + 0x39, 0x4d, 0x6c, 0x6c, 0x00, 0x2c, 0x63, 0xd0, 0x23, 0x69, 0x4f, 0xf0, + 0x00, 0x08, 0xdf, 0xf8, 0xe0, 0x90, 0x4f, 0xf0, 0xf9, 0x0a, 0x01, 0x3b, + 0x6f, 0x69, 0x23, 0x61, 0x23, 0x69, 0x00, 0x2b, 0x55, 0xd1, 0xe3, 0x68, + 0x0b, 0xb1, 0xa2, 0x68, 0x9a, 0x60, 0xd5, 0xf8, 0x4c, 0xb0, 0x04, 0xf1, + 0x18, 0x01, 0x6b, 0x64, 0xef, 0xf3, 0x05, 0x83, 0x43, 0xb1, 0xbb, 0xf1, + 0x00, 0x0f, 0x13, 0xd1, 0xab, 0x69, 0x03, 0x21, 0x29, 0x48, 0x6b, 0x61, + 0xeb, 0xf7, 0x86, 0xf8, 0x01, 0x91, 0xff, 0xf7, 0x91, 0xff, 0x01, 0x99, + 0x02, 0x46, 0x00, 0x28, 0xef, 0xd1, 0x58, 0x46, 0x13, 0x46, 0xcc, 0x46, + 0x00, 0xdf, 0x00, 0x28, 0xec, 0xd1, 0x1b, 0xe0, 0x9b, 0xf8, 0x00, 0x30, + 0x01, 0x91, 0xfa, 0x2b, 0xe6, 0xd1, 0x0b, 0xf1, 0x0c, 0x00, 0xfd, 0xf7, + 0x5a, 0xf9, 0x06, 0x46, 0x00, 0x28, 0xdf, 0xd0, 0x01, 0x99, 0x0c, 0x30, + 0xdb, 0xf8, 0x24, 0x20, 0x04, 0xf0, 0xb6, 0xfa, 0x01, 0x99, 0x30, 0x46, + 0x86, 0xf8, 0x00, 0xa0, 0xa6, 0xf8, 0x02, 0x80, 0xc6, 0xe9, 0x01, 0x1b, + 0xfd, 0xf7, 0x4e, 0xff, 0xe3, 0x78, 0x01, 0x2b, 0x1d, 0xd1, 0x6b, 0x6c, + 0x00, 0x21, 0x62, 0x69, 0x13, 0xb1, 0x18, 0x69, 0x82, 0x42, 0x10, 0xd2, + 0x22, 0x61, 0xc4, 0xe9, 0x02, 0x13, 0x1b, 0xb1, 0x18, 0x69, 0x9c, 0x60, + 0x82, 0x1a, 0x1a, 0x61, 0x59, 0xb1, 0xcc, 0x60, 0x6c, 0x6c, 0x00, 0x2c, + 0xa6, 0xd1, 0x6f, 0x61, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x19, 0x46, + 0x12, 0x1a, 0xdb, 0x68, 0xe6, 0xe7, 0x6c, 0x64, 0xf2, 0xe7, 0x01, 0x23, + 0x63, 0x70, 0xef, 0xe7, 0x1c, 0x01, 0x00, 0x24, 0x27, 0x01, 0x02, 0x80, + 0xdd, 0x4f, 0x01, 0x08, 0x07, 0xb5, 0xbf, 0xf3, 0x5f, 0x8f, 0x78, 0x4b, + 0x00, 0x22, 0x19, 0x68, 0x10, 0x46, 0x5a, 0x60, 0xc1, 0xf3, 0x07, 0x21, + 0x91, 0x42, 0x40, 0xf0, 0xaa, 0x80, 0x10, 0x22, 0xda, 0x60, 0x73, 0x4a, + 0x1a, 0x61, 0x13, 0x22, 0xda, 0x60, 0x72, 0x4a, 0x1a, 0x61, 0x11, 0x22, + 0xda, 0x60, 0x71, 0x4a, 0x1a, 0x61, 0x71, 0x4a, 0xda, 0x60, 0x71, 0x4a, + 0x1a, 0x61, 0x07, 0x22, 0x5a, 0x60, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, + 0x6f, 0x8f, 0x6e, 0x4b, 0x6e, 0x49, 0x98, 0x68, 0x4f, 0xf0, 0x00, 0x53, + 0x1a, 0x18, 0x02, 0xf1, 0x60, 0x42, 0x12, 0x68, 0x43, 0xf8, 0x04, 0x2b, + 0x8b, 0x42, 0xf7, 0xd1, 0x67, 0x4b, 0x4f, 0xf0, 0x00, 0x52, 0x9a, 0x60, + 0x5a, 0x69, 0x95, 0x03, 0x15, 0xd4, 0x5a, 0x69, 0x12, 0xf4, 0x00, 0x32, + 0x11, 0xd1, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0xc3, 0xf8, + 0x50, 0x22, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x5a, 0x69, + 0x42, 0xf4, 0x00, 0x32, 0x5a, 0x61, 0xbf, 0xf3, 0x4f, 0x8f, 0xbf, 0xf3, + 0x6f, 0x8f, 0x59, 0x4b, 0x5a, 0x69, 0xd4, 0x03, 0x27, 0xd4, 0x5a, 0x69, + 0x12, 0xf4, 0x80, 0x32, 0x23, 0xd1, 0xc3, 0xf8, 0x84, 0x20, 0xbf, 0xf3, + 0x4f, 0x8f, 0xd3, 0xf8, 0x80, 0x20, 0x43, 0xf6, 0xe0, 0x74, 0xc2, 0xf3, + 0xc9, 0x00, 0xc2, 0xf3, 0x4e, 0x32, 0x52, 0x01, 0x02, 0xea, 0x04, 0x06, + 0x01, 0x46, 0x46, 0xea, 0x81, 0x75, 0x01, 0x39, 0xc3, 0xf8, 0x60, 0x52, + 0xf9, 0xd2, 0x20, 0x3a, 0x12, 0xf1, 0x20, 0x0f, 0xf2, 0xd1, 0xbf, 0xf3, + 0x4f, 0x8f, 0x5a, 0x69, 0x42, 0xf4, 0x80, 0x32, 0x5a, 0x61, 0xbf, 0xf3, + 0x4f, 0x8f, 0xbf, 0xf3, 0x6f, 0x8f, 0x45, 0x4c, 0xd4, 0xf8, 0xe0, 0x30, + 0x43, 0xf0, 0x00, 0x73, 0xc4, 0xf8, 0xe0, 0x30, 0xd4, 0xf8, 0xe0, 0x30, + 0x03, 0xf0, 0x00, 0x73, 0x01, 0x93, 0x01, 0x9b, 0xed, 0xf7, 0x4a, 0xff, + 0x3b, 0x49, 0x3e, 0x4b, 0xca, 0x68, 0x22, 0xf4, 0xe0, 0x62, 0x12, 0x04, + 0x12, 0x0c, 0x13, 0x43, 0xcb, 0x60, 0xee, 0xf7, 0xc1, 0xfc, 0xa3, 0x69, + 0xa2, 0x69, 0xc3, 0xf3, 0x03, 0x23, 0x38, 0x4a, 0xd3, 0x5c, 0x03, 0xf0, + 0x1f, 0x03, 0xd8, 0x40, 0x36, 0x4b, 0x18, 0x60, 0xef, 0xf7, 0xb8, 0xf8, + 0x23, 0x6f, 0x98, 0x07, 0x0a, 0xd4, 0x34, 0x4a, 0x13, 0x68, 0x43, 0xf4, + 0x80, 0x73, 0x13, 0x60, 0x32, 0x4b, 0x1b, 0x68, 0x23, 0x6f, 0x23, 0xf0, + 0x18, 0x03, 0x23, 0x67, 0xed, 0xf7, 0x90, 0xf9, 0x01, 0x20, 0xf0, 0xf7, + 0x5d, 0xfb, 0x30, 0xb9, 0x2d, 0x48, 0xf7, 0xf7, 0x1f, 0xff, 0x9a, 0x60, + 0x01, 0x32, 0x18, 0x61, 0x4e, 0xe7, 0xed, 0xf7, 0x15, 0xff, 0xe9, 0xf7, + 0xad, 0xfb, 0xef, 0xf3, 0x05, 0x83, 0x2b, 0xb9, 0xff, 0xf7, 0x7c, 0xfe, + 0x10, 0xb9, 0xdf, 0xf8, 0xb0, 0xc0, 0x00, 0xdf, 0x24, 0x4a, 0x25, 0x4b, + 0x13, 0x61, 0x4f, 0xf4, 0x80, 0x53, 0x53, 0x61, 0x44, 0x23, 0xd3, 0x60, + 0x22, 0x4b, 0x93, 0x60, 0x18, 0x23, 0x93, 0x61, 0x21, 0x4b, 0x13, 0x60, + 0xef, 0xf3, 0x05, 0x83, 0x1b, 0xb1, 0x1c, 0x49, 0x1f, 0x48, 0xea, 0xf7, + 0x55, 0xff, 0xff, 0xf7, 0x61, 0xfe, 0x01, 0x46, 0x00, 0x28, 0xf6, 0xd1, + 0x1c, 0x48, 0xdf, 0xf8, 0x78, 0xc0, 0x00, 0xdf, 0x00, 0x28, 0xf0, 0xd0, + 0xef, 0xf3, 0x05, 0x83, 0x2b, 0xb9, 0xff, 0xf7, 0x53, 0xfe, 0x10, 0xb9, + 0xdf, 0xf8, 0x64, 0xc0, 0x00, 0xdf, 0x00, 0x21, 0xe6, 0xe7, 0x00, 0xbf, + 0x90, 0xed, 0x00, 0xe0, 0x39, 0xf0, 0x02, 0x06, 0x39, 0x07, 0x02, 0x13, + 0x3f, 0xf5, 0x0b, 0x13, 0x12, 0x00, 0x00, 0x80, 0x39, 0x00, 0x02, 0x13, + 0x00, 0xed, 0x00, 0xe0, 0x98, 0x02, 0x00, 0x20, 0x00, 0x44, 0x02, 0x58, + 0x00, 0x03, 0xfa, 0x05, 0x29, 0xd5, 0x01, 0x08, 0x00, 0x00, 0x00, 0x24, + 0x00, 0x48, 0x02, 0x58, 0x00, 0x10, 0x00, 0x5c, 0xec, 0xe3, 0x01, 0x08, + 0x58, 0x3f, 0x02, 0x24, 0x58, 0x2f, 0x02, 0x24, 0xb4, 0x44, 0x02, 0x24, + 0x00, 0xe4, 0x01, 0x08, 0x1d, 0x01, 0x01, 0x80, 0x19, 0xa7, 0x01, 0x08, + 0xe1, 0x47, 0x01, 0x08, 0x05, 0x45, 0x01, 0x08, 0x91, 0x50, 0x01, 0x08, + 0xb1, 0xf1, 0x20, 0x4f, 0x2d, 0xe9, 0xf0, 0x43, 0x06, 0x46, 0x8b, 0xb0, + 0x0d, 0x46, 0x14, 0x46, 0x1c, 0xd3, 0x79, 0x4f, 0x38, 0x68, 0x00, 0x28, + 0x00, 0xf0, 0xea, 0x80, 0x03, 0x68, 0x4f, 0xf0, 0x00, 0x09, 0x90, 0x46, + 0x00, 0x22, 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, 0x89, 0x45, 0x05, 0xf1, + 0xc0, 0x45, 0x08, 0xbf, 0x84, 0x42, 0x3d, 0xd3, 0x38, 0x68, 0x2a, 0x46, + 0x03, 0x68, 0xcd, 0xe9, 0x00, 0x89, 0x9c, 0x69, 0x00, 0x23, 0x31, 0x46, + 0xa0, 0x47, 0x61, 0xe0, 0xb1, 0xf1, 0x10, 0x4f, 0x62, 0xd2, 0x10, 0x46, + 0x04, 0xf0, 0xd2, 0xf8, 0x22, 0x46, 0x31, 0x46, 0x07, 0x46, 0x04, 0xf0, + 0x2d, 0xf9, 0x0c, 0x20, 0x04, 0xf0, 0xca, 0xf8, 0x64, 0x4b, 0x00, 0x22, + 0x84, 0x60, 0x05, 0x93, 0x06, 0xae, 0x63, 0x4b, 0x04, 0x92, 0xcd, 0xe9, + 0x02, 0x30, 0x02, 0xab, 0xc0, 0xe9, 0x00, 0x75, 0x0f, 0xcb, 0x60, 0x4d, + 0x86, 0xe8, 0x0f, 0x00, 0xf7, 0xf7, 0xc6, 0xf9, 0x2b, 0x46, 0x53, 0xf8, + 0x18, 0x4f, 0x00, 0x2c, 0x5d, 0xd1, 0xeb, 0x69, 0x33, 0x2b, 0x40, 0xf2, + 0x9f, 0x80, 0x2c, 0x6a, 0x34, 0x3b, 0x04, 0xf1, 0x34, 0x02, 0xeb, 0x61, + 0x34, 0x23, 0x2a, 0x62, 0x23, 0x60, 0x01, 0x23, 0xa3, 0x71, 0x57, 0xe0, + 0x38, 0x68, 0x00, 0x22, 0x03, 0x68, 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, + 0x04, 0xf0, 0x9c, 0xf8, 0x22, 0x46, 0x31, 0x46, 0x80, 0x46, 0x04, 0xf0, + 0xf7, 0xf8, 0x38, 0x68, 0x08, 0xeb, 0x04, 0x09, 0x03, 0x68, 0x5b, 0x6b, + 0x98, 0x47, 0x06, 0x46, 0x38, 0x68, 0x00, 0x22, 0x03, 0x68, 0x19, 0x6b, + 0x00, 0x23, 0x88, 0x47, 0x31, 0x46, 0x02, 0x1b, 0x48, 0x46, 0x04, 0xf0, + 0xf3, 0xf8, 0x3c, 0x68, 0x00, 0x22, 0x23, 0x68, 0x20, 0x46, 0x9e, 0x69, + 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, 0x2a, 0x46, 0x00, 0x23, 0xcd, 0xe9, + 0x00, 0x01, 0x41, 0x46, 0x20, 0x46, 0xb0, 0x47, 0x80, 0xb2, 0x0b, 0xb0, + 0xbd, 0xe8, 0xf0, 0x83, 0x3b, 0x4f, 0x01, 0xf1, 0xe0, 0x45, 0x00, 0x22, + 0x38, 0x68, 0x03, 0x68, 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, 0x00, 0x23, + 0x8b, 0x42, 0x08, 0xbf, 0x84, 0x42, 0x06, 0xd2, 0x38, 0x68, 0x00, 0x22, + 0x03, 0x68, 0x19, 0x6b, 0x00, 0x23, 0x88, 0x47, 0x04, 0x46, 0x38, 0x68, + 0x00, 0x23, 0x02, 0x68, 0xcd, 0xe9, 0x00, 0x43, 0x94, 0x69, 0x2a, 0x46, + 0x79, 0xe7, 0x22, 0x68, 0x33, 0x2a, 0x3d, 0xd9, 0xe2, 0x68, 0x00, 0x2a, + 0x37, 0xd0, 0x1a, 0x60, 0xa3, 0x68, 0x93, 0x60, 0xf7, 0xf7, 0x44, 0xf9, + 0x00, 0x22, 0x4f, 0xf0, 0xff, 0x33, 0x04, 0xf1, 0x24, 0x07, 0xc4, 0xe9, + 0x05, 0x23, 0x96, 0xe8, 0x0f, 0x00, 0x87, 0xe8, 0x0f, 0x00, 0x23, 0x4b, + 0xe3, 0x61, 0xfc, 0xf7, 0x63, 0xfa, 0x22, 0x4b, 0x02, 0x46, 0x21, 0x46, + 0x23, 0x62, 0x63, 0x69, 0x03, 0x44, 0x1c, 0x48, 0x63, 0x61, 0xf8, 0xf7, + 0x89, 0xf8, 0x2a, 0x6b, 0xef, 0xf3, 0x05, 0x83, 0x13, 0xb9, 0xff, 0xf7, + 0x49, 0xfd, 0xe8, 0xb1, 0xd2, 0xb1, 0x13, 0x78, 0xf3, 0x2b, 0x17, 0xd1, + 0x02, 0xf1, 0x0c, 0x03, 0x01, 0x21, 0x53, 0xe8, 0x00, 0x4f, 0x44, 0xea, + 0x01, 0x00, 0x43, 0xe8, 0x00, 0x05, 0x05, 0xb1, 0xf7, 0xe7, 0x10, 0x46, + 0xfd, 0xf7, 0x1a, 0xfd, 0x08, 0xe0, 0xa2, 0x68, 0x1a, 0x60, 0xc7, 0xe7, + 0x04, 0xf1, 0x08, 0x03, 0xa4, 0x68, 0x5a, 0xe7, 0xf7, 0xf7, 0x08, 0xf9, + 0x00, 0x20, 0x96, 0xe7, 0x10, 0x46, 0x01, 0x21, 0xdf, 0xf8, 0x28, 0xc0, + 0x00, 0xdf, 0xf7, 0xe7, 0x4f, 0xf6, 0xff, 0x70, 0x8d, 0xe7, 0x00, 0xbf, + 0x0c, 0x0b, 0x02, 0x24, 0x03, 0x4b, 0x01, 0x08, 0xf5, 0x64, 0x01, 0x08, + 0xd8, 0x13, 0x02, 0x24, 0xa4, 0x0b, 0x02, 0x24, 0x27, 0x4b, 0x01, 0x08, + 0x2d, 0x78, 0x01, 0x08, 0x75, 0x77, 0x01, 0x08, 0x73, 0xb5, 0x1f, 0x4c, 0x04, 0xf1, 0x56, 0x05, 0x04, 0xf1, 0x5a, 0x06, 0xb4, 0xf8, 0x54, 0x10, - 0x28, 0x46, 0x01, 0x91, 0xfc, 0xf7, 0x8f, 0xfe, 0x58, 0xb3, 0x01, 0x99, - 0x30, 0x46, 0xfc, 0xf7, 0x97, 0xfe, 0xe3, 0x6d, 0x53, 0xf8, 0x20, 0x00, + 0x28, 0x46, 0x01, 0x91, 0xfc, 0xf7, 0x7d, 0xfd, 0x58, 0xb3, 0x01, 0x99, + 0x30, 0x46, 0xfc, 0xf7, 0x85, 0xfd, 0xe3, 0x6d, 0x53, 0xf8, 0x20, 0x00, 0x18, 0xb3, 0x03, 0x78, 0xf1, 0x3b, 0x08, 0x2b, 0xec, 0xd8, 0x01, 0xa2, - 0x52, 0xf8, 0x23, 0xf0, 0xd9, 0x7e, 0x01, 0x08, 0x89, 0x7e, 0x01, 0x08, - 0xdf, 0x7e, 0x01, 0x08, 0x89, 0x7e, 0x01, 0x08, 0x89, 0x7e, 0x01, 0x08, - 0xe3, 0x7e, 0x01, 0x08, 0xe7, 0x7e, 0x01, 0x08, 0x89, 0x7e, 0x01, 0x08, - 0xeb, 0x7e, 0x01, 0x08, 0x23, 0x6e, 0x98, 0x47, 0xd4, 0xe7, 0x63, 0x6e, + 0x52, 0xf8, 0x23, 0xf0, 0x29, 0x74, 0x01, 0x08, 0xd9, 0x73, 0x01, 0x08, + 0x2f, 0x74, 0x01, 0x08, 0xd9, 0x73, 0x01, 0x08, 0xd9, 0x73, 0x01, 0x08, + 0x33, 0x74, 0x01, 0x08, 0x37, 0x74, 0x01, 0x08, 0xd9, 0x73, 0x01, 0x08, + 0x3b, 0x74, 0x01, 0x08, 0x23, 0x6e, 0x98, 0x47, 0xd4, 0xe7, 0x63, 0x6e, 0xfb, 0xe7, 0xa3, 0x6e, 0xf9, 0xe7, 0xe3, 0x6e, 0xf7, 0xe7, 0x23, 0x6f, 0xf5, 0xe7, 0x00, 0x20, 0x02, 0xb0, 0xbd, 0xe8, 0x70, 0x40, 0xfc, 0xf7, - 0x69, 0xbd, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0x1f, 0x4b, 0x18, 0x68, - 0x70, 0xb5, 0x38, 0x30, 0xea, 0xf7, 0x7e, 0xff, 0x18, 0xb1, 0x1d, 0x4b, + 0x57, 0xbc, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0x1f, 0x4b, 0x18, 0x68, + 0x70, 0xb5, 0x38, 0x30, 0xea, 0xf7, 0xc6, 0xff, 0x18, 0xb1, 0x1d, 0x4b, 0x4f, 0xf0, 0x80, 0x62, 0x5a, 0x60, 0x1c, 0x4c, 0xe3, 0x68, 0x01, 0x33, - 0xe3, 0x60, 0xfc, 0xf7, 0xb1, 0xfd, 0x00, 0x20, 0xfc, 0xf7, 0x52, 0xfd, + 0xe3, 0x60, 0xfc, 0xf7, 0x9f, 0xfc, 0x00, 0x20, 0xfc, 0xf7, 0x40, 0xfc, 0x23, 0x6d, 0x03, 0xb1, 0x98, 0x47, 0x22, 0x6c, 0x2a, 0xb3, 0xa3, 0x69, 0xe1, 0x6b, 0x99, 0x42, 0x03, 0xd0, 0xd9, 0x69, 0xe3, 0x63, 0x01, 0xb9, 0xda, 0x61, 0xda, 0x69, 0xba, 0xb9, 0x26, 0x7a, 0x02, 0x2e, 0x18, 0xd1, 0x65, 0x6a, 0xb5, 0xb1, 0xe3, 0x6b, 0x95, 0xf9, 0x20, 0x20, 0x93, 0xf9, - 0x20, 0x30, 0x9a, 0x42, 0x0f, 0xd1, 0x28, 0x46, 0xfc, 0xf7, 0xbe, 0xfc, - 0xe0, 0x6b, 0xfc, 0xf7, 0x29, 0xfd, 0x6e, 0x70, 0x23, 0x6c, 0xe5, 0x63, + 0x20, 0x30, 0x9a, 0x42, 0x0f, 0xd1, 0x28, 0x46, 0xfc, 0xf7, 0xac, 0xfb, + 0xe0, 0x6b, 0xfc, 0xf7, 0x17, 0xfc, 0x6e, 0x70, 0x23, 0x6c, 0xe5, 0x63, 0xa5, 0x61, 0xeb, 0x61, 0x03, 0xe0, 0x01, 0x3a, 0xda, 0x61, 0x00, 0x2a, - 0xe3, 0xd0, 0x70, 0xbd, 0x88, 0x86, 0x00, 0x24, 0x00, 0xed, 0x00, 0xe0, + 0xe3, 0xd0, 0x70, 0xbd, 0xd8, 0x27, 0x02, 0x24, 0x00, 0xed, 0x00, 0xe0, 0x1c, 0x01, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, 0xef, 0xf3, 0x05, 0x83, 0x1b, 0xb1, 0x5c, 0xb9, 0x6f, 0xf0, 0x03, 0x00, 0x17, 0xe0, 0xff, 0xf7, - 0x8b, 0xfc, 0x00, 0x28, 0xf7, 0xd1, 0x20, 0x46, 0xdf, 0xf8, 0x2c, 0xc0, + 0x7d, 0xfc, 0x00, 0x28, 0xf7, 0xd1, 0x20, 0x46, 0xdf, 0xf8, 0x2c, 0xc0, 0x00, 0xdf, 0x0e, 0xe0, 0x23, 0x78, 0xf6, 0x2b, 0xf0, 0xd1, 0xe1, 0x89, - 0x04, 0xf1, 0x0c, 0x00, 0xfc, 0xf7, 0x13, 0xfe, 0xe3, 0x89, 0x83, 0x42, - 0x04, 0xd9, 0x20, 0x46, 0xfd, 0xf7, 0x06, 0xfd, 0x00, 0x20, 0x10, 0xbd, - 0x6f, 0xf0, 0x02, 0x00, 0xfb, 0xe7, 0x00, 0xbf, 0x05, 0x4c, 0x01, 0x08, - 0x10, 0xb5, 0x2c, 0x4c, 0x2c, 0x48, 0xf3, 0xf7, 0x27, 0xfd, 0x63, 0x69, + 0x04, 0xf1, 0x0c, 0x00, 0xfc, 0xf7, 0x01, 0xfd, 0xe3, 0x89, 0x83, 0x42, + 0x04, 0xd9, 0x20, 0x46, 0xfd, 0xf7, 0x4c, 0xfc, 0x00, 0x20, 0x10, 0xbd, + 0x6f, 0xf0, 0x02, 0x00, 0xfb, 0xe7, 0x00, 0xbf, 0x31, 0x3f, 0x01, 0x08, + 0x10, 0xb5, 0x2c, 0x4c, 0x2c, 0x48, 0xf3, 0xf7, 0x53, 0xff, 0x63, 0x69, 0x13, 0xb9, 0x94, 0xf8, 0x3d, 0x30, 0x23, 0xb1, 0x28, 0x48, 0xf3, 0xf7, - 0xff, 0xfc, 0x00, 0x20, 0x10, 0xbd, 0xa3, 0x6a, 0x53, 0xb1, 0xa2, 0x6a, + 0x2b, 0xff, 0x00, 0x20, 0x10, 0xbd, 0xa3, 0x6a, 0x53, 0xb1, 0xa2, 0x6a, 0x00, 0x23, 0x25, 0x49, 0xe0, 0x6a, 0xb3, 0xeb, 0x90, 0x0f, 0x11, 0xd2, 0x42, 0xf8, 0x23, 0x10, 0x01, 0x33, 0xf7, 0xe7, 0xe0, 0x6a, 0x21, 0x4b, 0x98, 0x42, 0x94, 0xbf, 0x20, 0xf0, 0x03, 0x00, 0x4f, 0xf0, 0xff, 0x30, - 0x03, 0xf0, 0x72, 0xf9, 0xa0, 0x62, 0x00, 0x28, 0xe7, 0xd1, 0xdf, 0xe7, + 0x03, 0xf0, 0x1c, 0xff, 0xa0, 0x62, 0x00, 0x28, 0xe7, 0xd1, 0xdf, 0xe7, 0x44, 0x23, 0x1b, 0x4a, 0x63, 0x62, 0x1b, 0x4b, 0x22, 0x62, 0x63, 0x60, 0x1a, 0x4b, 0xa3, 0x60, 0x00, 0x23, 0xe3, 0x60, 0x19, 0x4b, 0x23, 0x61, 0xef, 0xf3, 0x05, 0x83, 0x8b, 0xb1, 0x00, 0x23, 0x63, 0x61, 0x94, 0xf8, - 0x3c, 0x30, 0x2b, 0xb1, 0xa0, 0x6a, 0x08, 0xb1, 0x03, 0xf0, 0x5e, 0xf9, - 0x00, 0x23, 0xa3, 0x62, 0x0b, 0x48, 0xf3, 0xf7, 0xc5, 0xfc, 0x20, 0x6c, - 0xff, 0xf7, 0x8e, 0xff, 0xc1, 0xe7, 0xff, 0xf7, 0x21, 0xfc, 0x00, 0x28, + 0x3c, 0x30, 0x2b, 0xb1, 0xa0, 0x6a, 0x08, 0xb1, 0x03, 0xf0, 0x08, 0xff, + 0x00, 0x23, 0xa3, 0x62, 0x0b, 0x48, 0xf3, 0xf7, 0xf1, 0xfe, 0x20, 0x6c, + 0xff, 0xf7, 0x8e, 0xff, 0xc1, 0xe7, 0xff, 0xf7, 0x13, 0xfc, 0x00, 0x28, 0xe9, 0xd1, 0xa2, 0xf1, 0x78, 0x01, 0x0c, 0x48, 0x60, 0x3a, 0xdf, 0xf8, 0x30, 0xc0, 0x00, 0xdf, 0x60, 0x61, 0x00, 0x28, 0xb0, 0xd1, 0xe0, 0xe7, - 0x0c, 0x73, 0x00, 0x24, 0x60, 0x73, 0x00, 0x24, 0xa5, 0x2e, 0x5a, 0xe2, - 0xfb, 0xff, 0xff, 0x7f, 0x84, 0x73, 0x00, 0x24, 0xb0, 0x72, 0x00, 0x24, - 0xa5, 0x46, 0x01, 0x08, 0x89, 0x57, 0x01, 0x08, 0xe1, 0xca, 0x00, 0x08, - 0xd9, 0x51, 0x01, 0x08, 0x02, 0x46, 0x08, 0xb5, 0xef, 0xf3, 0x05, 0x83, - 0x13, 0xb1, 0x6f, 0xf0, 0x05, 0x00, 0x08, 0xbd, 0xff, 0xf7, 0xf6, 0xfb, + 0x34, 0x14, 0x02, 0x24, 0x88, 0x14, 0x02, 0x24, 0xa5, 0x2e, 0x5a, 0xe2, + 0xfb, 0xff, 0xff, 0x7f, 0xac, 0x14, 0x02, 0x24, 0xd8, 0x13, 0x02, 0x24, + 0xd1, 0x39, 0x01, 0x08, 0x09, 0x4b, 0x01, 0x08, 0x45, 0xc1, 0x00, 0x08, + 0x05, 0x45, 0x01, 0x08, 0x02, 0x46, 0x08, 0xb5, 0xef, 0xf3, 0x05, 0x83, + 0x13, 0xb1, 0x6f, 0xf0, 0x05, 0x00, 0x08, 0xbd, 0xff, 0xf7, 0xe8, 0xfb, 0x00, 0x28, 0xf8, 0xd1, 0x10, 0x46, 0xdf, 0xf8, 0x08, 0xc0, 0x00, 0xdf, - 0xf5, 0xe7, 0x00, 0xbf, 0xcd, 0x50, 0x01, 0x08, 0x06, 0x4b, 0x10, 0xb5, - 0x03, 0x60, 0x04, 0x46, 0x90, 0xf8, 0x80, 0x30, 0x0b, 0xb1, 0xfd, 0xf7, - 0xc5, 0xfe, 0xe0, 0x6d, 0xff, 0xf7, 0xe0, 0xff, 0x20, 0x46, 0x10, 0xbd, - 0x90, 0xec, 0x01, 0x08, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xec, 0xff, - 0x20, 0x46, 0x03, 0xf0, 0x07, 0xf9, 0x20, 0x46, 0x10, 0xbd, 0x00, 0x00, - 0x02, 0x46, 0x08, 0xb5, 0xef, 0xf3, 0x05, 0x83, 0x13, 0xb1, 0x6f, 0xf0, - 0x05, 0x00, 0x08, 0xbd, 0xff, 0xf7, 0xc8, 0xfb, 0x00, 0x28, 0xf8, 0xd1, - 0x10, 0x46, 0xdf, 0xf8, 0x08, 0xc0, 0x00, 0xdf, 0xf5, 0xe7, 0x00, 0xbf, - 0x65, 0x4c, 0x01, 0x08, 0x02, 0x46, 0x08, 0xb5, 0xef, 0xf3, 0x05, 0x83, - 0x0b, 0xb1, 0x00, 0x20, 0x08, 0xbd, 0xff, 0xf7, 0xb5, 0xfb, 0x00, 0x28, - 0xf9, 0xd1, 0x10, 0x46, 0xdf, 0xf8, 0x04, 0xc0, 0x00, 0xdf, 0xf5, 0xe7, - 0x0d, 0x54, 0x01, 0x08, 0x10, 0xb4, 0x02, 0xf0, 0x01, 0x04, 0x92, 0x07, - 0x09, 0xd4, 0x0c, 0x30, 0x1c, 0xb1, 0x5d, 0xf8, 0x04, 0x4b, 0xfc, 0xf7, - 0xe6, 0xbc, 0x5d, 0xf8, 0x04, 0x4b, 0xfc, 0xf7, 0xd1, 0xbc, 0xc0, 0x68, - 0x01, 0xea, 0x00, 0x02, 0x2c, 0xb1, 0x91, 0x42, 0x18, 0xbf, 0x00, 0x20, - 0x5d, 0xf8, 0x04, 0x4b, 0x70, 0x47, 0x00, 0x2a, 0x08, 0xbf, 0x00, 0x20, - 0xf8, 0xe7, 0x00, 0x00, 0xf8, 0xb5, 0x0d, 0x46, 0x17, 0x46, 0x1e, 0x46, - 0x04, 0x46, 0xc0, 0xb1, 0x03, 0x78, 0xf3, 0x2b, 0x15, 0xd1, 0x00, 0x29, - 0x13, 0xdb, 0xff, 0xf7, 0xd5, 0xff, 0x90, 0xb9, 0x96, 0xb1, 0x31, 0x46, - 0x43, 0x20, 0xfc, 0xf7, 0xa7, 0xfb, 0x38, 0xb1, 0x08, 0x4b, 0x20, 0x46, - 0x59, 0x69, 0xfc, 0xf7, 0xe5, 0xfb, 0x4d, 0x62, 0x81, 0xf8, 0x23, 0x70, - 0x6f, 0xf0, 0x01, 0x00, 0x01, 0xe0, 0x6f, 0xf0, 0x03, 0x00, 0xf8, 0xbd, - 0x6f, 0xf0, 0x02, 0x00, 0xfb, 0xe7, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, - 0xf8, 0xb5, 0x06, 0x46, 0x70, 0xb3, 0x03, 0x78, 0xf3, 0x2b, 0x2b, 0xd1, - 0x00, 0x29, 0x29, 0xdb, 0x00, 0xf1, 0x0c, 0x03, 0x53, 0xe8, 0x00, 0x2f, - 0x42, 0xea, 0x01, 0x04, 0x43, 0xe8, 0x00, 0x40, 0x00, 0xb1, 0xf7, 0xe7, - 0xb5, 0x68, 0x25, 0xb9, 0x28, 0x46, 0xfc, 0xf7, 0xd9, 0xfb, 0x20, 0x46, - 0xf8, 0xbd, 0x69, 0x6a, 0x30, 0x46, 0x95, 0xf8, 0x23, 0x20, 0xaf, 0x68, - 0xff, 0xf7, 0x9a, 0xff, 0x01, 0x46, 0x68, 0xb1, 0x95, 0xf8, 0x23, 0x30, - 0x9b, 0x07, 0x56, 0xbf, 0x6c, 0x6a, 0x04, 0x46, 0x20, 0xea, 0x04, 0x04, - 0x28, 0x46, 0xfc, 0xf7, 0x4d, 0xfb, 0x00, 0x22, 0xfc, 0xf7, 0xe8, 0xfb, - 0x3d, 0x46, 0xe0, 0xe7, 0x6f, 0xf0, 0x03, 0x04, 0xe1, 0xe7, 0x70, 0xb5, - 0x05, 0x46, 0x84, 0x68, 0x04, 0xb9, 0x70, 0xbd, 0x61, 0x6a, 0x28, 0x46, - 0x94, 0xf8, 0x23, 0x20, 0xa6, 0x68, 0xff, 0xf7, 0x79, 0xff, 0x01, 0x46, - 0x28, 0xb1, 0x20, 0x46, 0xfc, 0xf7, 0x34, 0xfb, 0x00, 0x22, 0xfc, 0xf7, - 0xcf, 0xfb, 0x34, 0x46, 0xec, 0xe7, 0x00, 0x00, 0x38, 0xb5, 0x0c, 0x4d, - 0x00, 0x24, 0xf7, 0xf7, 0x4f, 0xf8, 0x28, 0x46, 0xf7, 0xf7, 0xd3, 0xff, - 0x6c, 0x63, 0xf7, 0xf7, 0x35, 0xf8, 0x01, 0x21, 0x07, 0x48, 0xf8, 0xf7, - 0x4f, 0xf8, 0x01, 0x21, 0x06, 0x48, 0xf8, 0xf7, 0x4b, 0xf8, 0x01, 0x21, - 0x05, 0x48, 0xf8, 0xf7, 0x47, 0xf8, 0x20, 0x46, 0x38, 0xbd, 0x00, 0xbf, - 0xc0, 0x6a, 0x00, 0x24, 0x80, 0x2e, 0x00, 0x24, 0x18, 0x0e, 0x00, 0x24, - 0xf8, 0x06, 0x00, 0x24, 0x70, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, - 0x00, 0x21, 0x1c, 0x22, 0x03, 0xf0, 0x8a, 0xf8, 0x20, 0x46, 0x32, 0x46, - 0x29, 0x46, 0xf7, 0xf7, 0x55, 0xfc, 0x20, 0x46, 0x70, 0xbd, 0x00, 0x00, - 0x38, 0xb5, 0x67, 0x4c, 0x20, 0x68, 0xe5, 0x6a, 0x43, 0x6b, 0x19, 0x04, - 0x1f, 0xd5, 0x2a, 0x07, 0x1d, 0xd5, 0xa3, 0x6a, 0x1f, 0x2b, 0x19, 0xd9, - 0x61, 0x6a, 0x0b, 0x1d, 0x01, 0xf1, 0x24, 0x00, 0x22, 0x68, 0x04, 0x33, - 0xd2, 0xf8, 0x80, 0x20, 0x15, 0x0a, 0x03, 0xf8, 0x08, 0x2c, 0x03, 0xf8, - 0x07, 0x5c, 0x15, 0x0c, 0x12, 0x0e, 0x03, 0xf8, 0x06, 0x5c, 0x03, 0xf8, - 0x05, 0x2c, 0x83, 0x42, 0xee, 0xd1, 0xa3, 0x6a, 0x20, 0x31, 0x20, 0x3b, - 0x61, 0x62, 0xa3, 0x62, 0x38, 0xbd, 0x43, 0x6b, 0xdb, 0x05, 0x35, 0xd5, - 0x4f, 0xf4, 0x80, 0x73, 0x83, 0x63, 0xc3, 0x6b, 0x23, 0xf4, 0x41, 0x43, - 0x23, 0xf0, 0x3a, 0x03, 0xc3, 0x63, 0xc3, 0x6b, 0x23, 0xf0, 0x80, 0x53, - 0xc3, 0x63, 0xc3, 0x68, 0x23, 0xf0, 0x40, 0x03, 0xc3, 0x60, 0x15, 0xf0, - 0x08, 0x03, 0x11, 0xd0, 0x15, 0xf0, 0x22, 0x0f, 0x05, 0xd0, 0xed, 0xf7, - 0x7d, 0xfc, 0x10, 0xb1, 0x63, 0x6b, 0x18, 0x43, 0x60, 0x63, 0x23, 0x68, - 0x44, 0x4a, 0x9a, 0x63, 0x01, 0x23, 0x84, 0xf8, 0x30, 0x30, 0x00, 0x23, - 0xe3, 0x62, 0xd5, 0xe7, 0x29, 0x06, 0xd3, 0xd5, 0x15, 0xf0, 0x22, 0x0f, - 0x83, 0x62, 0xc3, 0x62, 0x03, 0x65, 0xf1, 0xd0, 0xed, 0xf7, 0x66, 0xfc, - 0x00, 0x28, 0xed, 0xd0, 0x63, 0x6b, 0x18, 0x43, 0x60, 0x63, 0xe9, 0xe7, - 0x43, 0x6b, 0x5a, 0x04, 0x11, 0xd5, 0x2b, 0x07, 0x0f, 0xd5, 0x22, 0x6a, - 0x1f, 0x2a, 0xbd, 0xd9, 0xe3, 0x69, 0x03, 0xf1, 0x20, 0x01, 0x53, 0xf8, - 0x04, 0x5b, 0x8b, 0x42, 0xc0, 0xf8, 0x80, 0x50, 0xf9, 0xd1, 0x20, 0x3a, - 0xe3, 0x61, 0x22, 0x62, 0xb0, 0xe7, 0x43, 0x6b, 0x13, 0xf0, 0x3a, 0x0f, - 0x43, 0x6b, 0x4d, 0xd0, 0x99, 0x07, 0x03, 0xd5, 0x63, 0x6b, 0x43, 0xf0, - 0x02, 0x03, 0x63, 0x63, 0x43, 0x6b, 0x1a, 0x07, 0x03, 0xd5, 0x63, 0x6b, - 0x43, 0xf0, 0x08, 0x03, 0x63, 0x63, 0x43, 0x6b, 0x9b, 0x06, 0x03, 0xd5, - 0x63, 0x6b, 0x43, 0xf0, 0x20, 0x03, 0x63, 0x63, 0x43, 0x6b, 0xd9, 0x06, - 0x03, 0xd5, 0x63, 0x6b, 0x43, 0xf0, 0x10, 0x03, 0x63, 0x63, 0x1e, 0x4b, - 0x83, 0x63, 0xc3, 0x6b, 0x23, 0xf4, 0x9d, 0x73, 0xc3, 0x63, 0xc3, 0x68, - 0x23, 0xf0, 0x40, 0x03, 0xc3, 0x60, 0xc3, 0x6a, 0x43, 0xf4, 0x00, 0x53, - 0xc3, 0x62, 0xc3, 0x68, 0x43, 0xf0, 0x80, 0x03, 0xc3, 0x60, 0xed, 0xf7, - 0x17, 0xfc, 0x63, 0x6b, 0x15, 0xf0, 0x08, 0x01, 0x40, 0xea, 0x03, 0x00, - 0x23, 0x68, 0x60, 0x63, 0xda, 0x68, 0x22, 0xf0, 0x80, 0x02, 0xda, 0x60, - 0x4f, 0xf4, 0x00, 0x62, 0x9a, 0x63, 0x91, 0xd1, 0x2a, 0x06, 0x7f, 0xf5, - 0x6b, 0xaf, 0x62, 0x6b, 0x00, 0x2a, 0x3f, 0xf4, 0x67, 0xaf, 0xda, 0x6b, - 0x22, 0xf0, 0x80, 0x52, 0xda, 0x63, 0x19, 0x65, 0x01, 0x23, 0x84, 0xf8, - 0x30, 0x30, 0x5d, 0xe7, 0xdb, 0x00, 0x7f, 0xf5, 0x5b, 0xaf, 0x4f, 0xf0, - 0x80, 0x53, 0x83, 0x63, 0x03, 0x6d, 0x55, 0xe7, 0x04, 0x6c, 0x00, 0x24, - 0x3a, 0x0f, 0x00, 0x18, 0x08, 0xb5, 0x09, 0x4b, 0x1b, 0x68, 0x2b, 0xb1, - 0x08, 0x4b, 0x1b, 0x68, 0x50, 0x33, 0x53, 0xf8, 0x20, 0x00, 0x08, 0xbd, - 0x06, 0x4b, 0x1b, 0x78, 0x13, 0xb1, 0x06, 0x48, 0x04, 0xf0, 0xbc, 0xfb, - 0x4f, 0xf0, 0xff, 0x30, 0xf5, 0xe7, 0x00, 0xbf, 0x9c, 0x2e, 0x00, 0x24, - 0x44, 0x05, 0x00, 0x24, 0xd8, 0x0d, 0x00, 0x24, 0x5d, 0xe9, 0x01, 0x08, - 0x2d, 0xe9, 0xf0, 0x4f, 0x00, 0x20, 0xe7, 0xb0, 0xff, 0xf7, 0xde, 0xff, - 0x07, 0x46, 0xd5, 0x48, 0xd5, 0x4d, 0x04, 0x78, 0xbf, 0xf3, 0x5b, 0x8f, - 0x14, 0xf0, 0x01, 0x04, 0x30, 0xd1, 0xf6, 0xf7, 0xc5, 0xfe, 0x68, 0xb3, - 0xd1, 0x4b, 0xd3, 0xf8, 0xd0, 0x20, 0x51, 0x00, 0x00, 0xf1, 0x44, 0x82, - 0xd3, 0xf8, 0xd0, 0x20, 0x00, 0x2a, 0xc0, 0xf2, 0x3f, 0x82, 0xd3, 0xf8, - 0xd0, 0x20, 0xd2, 0x00, 0x00, 0xf1, 0x3c, 0x82, 0xd3, 0xf8, 0xd0, 0x20, - 0x56, 0x01, 0x00, 0xf1, 0x37, 0x82, 0xd3, 0xf8, 0xd0, 0x20, 0xd0, 0x01, - 0x00, 0xf1, 0x34, 0x82, 0xd3, 0xf8, 0xd0, 0x20, 0x11, 0x02, 0x0b, 0xd4, - 0xd3, 0xf8, 0xd0, 0x20, 0x92, 0x02, 0x00, 0xf1, 0x2d, 0x82, 0xd3, 0xf8, - 0xd0, 0x30, 0x13, 0xf4, 0x80, 0x0f, 0x0c, 0xbf, 0x0b, 0x24, 0x01, 0x24, - 0xba, 0x48, 0x2c, 0x70, 0xf6, 0xf7, 0x8e, 0xfe, 0xbb, 0x4c, 0x23, 0x78, - 0xbf, 0xf3, 0x5b, 0x8f, 0xdb, 0x07, 0x0b, 0xd4, 0x20, 0x46, 0xf6, 0xf7, - 0x8d, 0xfe, 0x38, 0xb1, 0xb5, 0x4b, 0x20, 0x46, 0xd3, 0xf8, 0xd0, 0x20, - 0xb5, 0x4b, 0x1a, 0x60, 0xf6, 0xf7, 0x7c, 0xfe, 0xb1, 0x4a, 0xd2, 0xf8, - 0xd0, 0x30, 0x43, 0xf4, 0x80, 0x33, 0xc2, 0xf8, 0xd0, 0x30, 0x2b, 0x78, - 0x01, 0x2b, 0x07, 0xd1, 0x4d, 0xf6, 0x59, 0x70, 0xea, 0xf7, 0x7e, 0xfb, - 0x4f, 0xf4, 0xfa, 0x70, 0xf0, 0xf7, 0xcc, 0xff, 0x00, 0x22, 0x94, 0x21, - 0x13, 0xa8, 0x00, 0x24, 0xff, 0xf7, 0x96, 0xfe, 0x00, 0x22, 0x92, 0x21, - 0x0c, 0xa8, 0xff, 0xf7, 0x91, 0xfe, 0x00, 0x22, 0x93, 0x21, 0x05, 0xa8, - 0xff, 0xf7, 0x8c, 0xfe, 0x28, 0xad, 0xf0, 0xf7, 0xd5, 0xfe, 0xa2, 0x4b, - 0x98, 0x22, 0x21, 0x46, 0x28, 0x93, 0x34, 0xa8, 0xa0, 0x4b, 0x24, 0x26, - 0x2c, 0x94, 0x2d, 0x93, 0x2e, 0x95, 0xad, 0xf8, 0xcc, 0x40, 0xcd, 0xe9, - 0x2f, 0x44, 0xcd, 0xe9, 0x31, 0x44, 0x02, 0xf0, 0x09, 0xff, 0x9b, 0x4b, - 0xcd, 0xe9, 0x5a, 0x34, 0x5c, 0xab, 0x01, 0x3e, 0x03, 0xf8, 0x01, 0x4b, - 0xfb, 0xd1, 0x28, 0x46, 0x21, 0xac, 0xf8, 0xf7, 0xaa, 0xf8, 0x96, 0x4b, - 0x1c, 0x22, 0x31, 0x46, 0x1a, 0xa8, 0x65, 0x93, 0x02, 0xf0, 0xf6, 0xfe, - 0x17, 0x21, 0x1a, 0xa8, 0xad, 0xf8, 0x78, 0x10, 0xec, 0xf7, 0xf4, 0xff, - 0x31, 0x46, 0x1a, 0xa8, 0xed, 0xf7, 0x14, 0xf8, 0x31, 0x46, 0xbd, 0xf9, - 0x78, 0x00, 0xec, 0xf7, 0xf7, 0xf8, 0x01, 0x21, 0x1a, 0xa8, 0xf6, 0xf7, - 0xbb, 0xff, 0x1c, 0x22, 0x31, 0x46, 0x20, 0x46, 0x02, 0xf0, 0xde, 0xfe, - 0x16, 0x21, 0x20, 0x46, 0x21, 0x82, 0xec, 0xf7, 0xdd, 0xff, 0x31, 0x46, - 0x20, 0x46, 0xec, 0xf7, 0xfd, 0xff, 0x31, 0x46, 0xb4, 0xf9, 0x10, 0x00, - 0xec, 0xf7, 0xe0, 0xf8, 0x20, 0x46, 0x01, 0x21, 0xf6, 0xf7, 0xa4, 0xff, - 0x20, 0x46, 0xf7, 0xf7, 0x6b, 0xfe, 0x00, 0x28, 0x6e, 0xd0, 0x1a, 0xa8, - 0xf7, 0xf7, 0x66, 0xfe, 0x01, 0x28, 0x69, 0xd0, 0xf6, 0xf7, 0x60, 0xfe, - 0x4f, 0xf0, 0x0a, 0x08, 0x31, 0x46, 0xb4, 0xf9, 0x10, 0x00, 0xec, 0xf7, - 0xc9, 0xf8, 0xf6, 0xf7, 0x43, 0xfe, 0xf6, 0xf7, 0x55, 0xfe, 0x01, 0x21, - 0x20, 0x46, 0xec, 0xf7, 0xd9, 0xff, 0xf6, 0xf7, 0x3b, 0xfe, 0xf6, 0xf7, - 0x4d, 0xfe, 0x00, 0x21, 0xb4, 0xf9, 0x10, 0x00, 0xec, 0xf7, 0xb8, 0xf8, - 0xf6, 0xf7, 0x32, 0xfe, 0x00, 0x21, 0x20, 0x46, 0xf7, 0xf7, 0x4c, 0xfe, - 0x05, 0x20, 0xf6, 0xf7, 0xc3, 0xfd, 0xf6, 0xf7, 0x3d, 0xfe, 0x01, 0x21, - 0xb4, 0xf9, 0x10, 0x00, 0xec, 0xf7, 0xa8, 0xf8, 0xf6, 0xf7, 0x22, 0xfe, - 0x01, 0x21, 0x20, 0x46, 0xf7, 0xf7, 0x3c, 0xfe, 0x05, 0x20, 0xf6, 0xf7, - 0xb3, 0xfd, 0xb8, 0xf1, 0x01, 0x08, 0xdc, 0xd1, 0xf6, 0xf7, 0x2a, 0xfe, - 0x01, 0x21, 0x1a, 0xa8, 0xec, 0xf7, 0xae, 0xff, 0xf6, 0xf7, 0x10, 0xfe, - 0x41, 0x46, 0x1a, 0xa8, 0xf7, 0xf7, 0x2a, 0xfe, 0x05, 0x20, 0xf6, 0xf7, - 0xa1, 0xfd, 0x01, 0x21, 0x20, 0x46, 0xf7, 0xf7, 0x23, 0xfe, 0x05, 0x20, - 0xf6, 0xf7, 0x9a, 0xfd, 0x01, 0x21, 0x1a, 0xa8, 0xf7, 0xf7, 0x1c, 0xfe, - 0x05, 0x20, 0xf6, 0xf7, 0x93, 0xfd, 0xf6, 0xf7, 0x0d, 0xfe, 0x41, 0x46, - 0x1a, 0xa8, 0xec, 0xf7, 0x91, 0xff, 0xf6, 0xf7, 0xf3, 0xfd, 0xf6, 0xf7, - 0x05, 0xfe, 0x20, 0x46, 0x41, 0x46, 0xec, 0xf7, 0x89, 0xff, 0xf6, 0xf7, - 0xeb, 0xfd, 0x20, 0x46, 0xf7, 0xf7, 0xfe, 0xfd, 0x10, 0xb1, 0x1a, 0xa8, - 0xf7, 0xf7, 0xfa, 0xfd, 0xbd, 0xf9, 0x94, 0xa1, 0xbd, 0xf9, 0x96, 0x81, - 0x42, 0x49, 0x50, 0x46, 0xf7, 0xf7, 0xbe, 0xf8, 0x81, 0x46, 0x41, 0x49, - 0x40, 0x46, 0xf7, 0xf7, 0xb9, 0xf8, 0x01, 0x46, 0x48, 0x46, 0xf7, 0xf7, - 0xcb, 0xf8, 0x3c, 0x49, 0x83, 0x46, 0x50, 0x46, 0xf7, 0xf7, 0xa4, 0xf8, - 0x3a, 0x49, 0x81, 0x46, 0x40, 0x46, 0xf7, 0xf7, 0x9f, 0xf8, 0x98, 0x22, - 0x00, 0x21, 0x20, 0x61, 0x34, 0xa8, 0xc4, 0xf8, 0x00, 0xb0, 0xa4, 0xf8, - 0x04, 0xa0, 0xc4, 0xf8, 0x08, 0x90, 0xa4, 0xf8, 0x0c, 0x80, 0x02, 0xf0, - 0x2f, 0xfe, 0x21, 0x46, 0x34, 0xa8, 0xee, 0xf7, 0x9f, 0xf9, 0x28, 0x46, - 0xf7, 0xf7, 0xcd, 0xff, 0x4f, 0x23, 0x1a, 0xa9, 0x28, 0x46, 0xad, 0xf8, - 0x68, 0x30, 0xee, 0xf7, 0x03, 0xfe, 0x4f, 0xf4, 0x75, 0x63, 0x1a, 0xa9, - 0x28, 0x46, 0xad, 0xf8, 0x68, 0x30, 0xee, 0xf7, 0xfb, 0xfd, 0x40, 0xf2, - 0x4c, 0x53, 0x1a, 0xa9, 0x28, 0x46, 0xad, 0xf8, 0x68, 0x30, 0xee, 0xf7, - 0xf3, 0xfd, 0x40, 0xf2, 0x4d, 0x33, 0x1a, 0xa9, 0x28, 0x46, 0xad, 0xf8, - 0x68, 0x30, 0xee, 0xf7, 0xeb, 0xfd, 0x40, 0xf6, 0x52, 0x13, 0x1a, 0xa9, - 0x28, 0x46, 0xad, 0xf8, 0x68, 0x30, 0xee, 0xf7, 0xe3, 0xfd, 0x40, 0xf6, - 0x53, 0x73, 0x1a, 0xa9, 0x28, 0x46, 0xad, 0xf8, 0x68, 0x30, 0xee, 0xf7, - 0xdb, 0xfd, 0x0a, 0x20, 0xf0, 0xf7, 0x94, 0xfe, 0x48, 0xf2, 0x9c, 0x03, - 0x1a, 0xa9, 0x28, 0x46, 0xad, 0xf8, 0x68, 0x30, 0xee, 0xf7, 0xd0, 0xfd, - 0x42, 0xf2, 0x9e, 0x03, 0x1a, 0xa9, 0x28, 0x46, 0xad, 0xf8, 0x68, 0x30, - 0xee, 0xf7, 0xc8, 0xfd, 0x0a, 0x20, 0xf0, 0xf7, 0x81, 0xfe, 0x40, 0xf2, - 0x42, 0x23, 0x15, 0xe0, 0xe8, 0x8a, 0x00, 0x24, 0xef, 0x8b, 0x00, 0x24, - 0x00, 0x44, 0x02, 0x58, 0xec, 0x8a, 0x00, 0x24, 0xf0, 0x8b, 0x00, 0x24, - 0xa4, 0xed, 0x01, 0x08, 0xcf, 0xe9, 0x00, 0x08, 0xa0, 0x86, 0x01, 0x00, - 0x17, 0x00, 0x16, 0x00, 0x28, 0xdb, 0x01, 0x08, 0x8c, 0xda, 0x01, 0x08, - 0x1a, 0xa9, 0x28, 0x46, 0xad, 0xf8, 0x68, 0x30, 0xee, 0xf7, 0xa6, 0xfd, - 0x0a, 0x20, 0xf0, 0xf7, 0x5f, 0xfe, 0x4a, 0xf2, 0x94, 0x03, 0x1a, 0xa9, - 0x28, 0x46, 0xad, 0xf8, 0x68, 0x30, 0xee, 0xf7, 0x9b, 0xfd, 0x40, 0xf6, - 0x3b, 0x73, 0x1a, 0xa9, 0x28, 0x46, 0xad, 0xf8, 0x68, 0x30, 0xee, 0xf7, - 0x93, 0xfd, 0x40, 0xf6, 0x35, 0x73, 0x1a, 0xa9, 0x28, 0x46, 0xad, 0xf8, - 0x68, 0x30, 0xee, 0xf7, 0x8b, 0xfd, 0x0a, 0x20, 0xf0, 0xf7, 0x44, 0xfe, - 0x01, 0x21, 0x13, 0xa8, 0xf7, 0xf7, 0x4c, 0xfd, 0x0a, 0x20, 0xf0, 0xf7, - 0x3d, 0xfe, 0x00, 0x21, 0x13, 0xa8, 0xf7, 0xf7, 0x45, 0xfd, 0x0a, 0x20, - 0xf0, 0xf7, 0x36, 0xfe, 0x01, 0x21, 0x13, 0xa8, 0xf7, 0xf7, 0x3e, 0xfd, - 0x0a, 0x20, 0xf0, 0xf7, 0x2f, 0xfe, 0x4d, 0xf6, 0x59, 0x73, 0x9f, 0x42, - 0x5e, 0xd0, 0x40, 0xf2, 0xaa, 0x73, 0x9f, 0x42, 0x5a, 0xd0, 0x00, 0x20, - 0xea, 0xf7, 0xd2, 0xf9, 0xf0, 0xf7, 0x26, 0xfd, 0x2b, 0x4b, 0x1a, 0x68, - 0x02, 0xf0, 0x7f, 0x42, 0xb2, 0xf1, 0x00, 0x5f, 0x11, 0xd0, 0x1a, 0x68, - 0x02, 0xf0, 0x7f, 0x42, 0xb2, 0xf1, 0x10, 0x5f, 0x0b, 0xd0, 0x1a, 0x68, - 0x02, 0xf0, 0x7f, 0x42, 0xb2, 0xf1, 0x40, 0x5f, 0x05, 0xd0, 0x1b, 0x68, - 0x03, 0xf0, 0x7f, 0x43, 0xb3, 0xf1, 0x60, 0x5f, 0x1f, 0xd1, 0x20, 0x4a, - 0x00, 0x23, 0x12, 0xf8, 0x01, 0x1b, 0xff, 0x29, 0x19, 0xd1, 0x01, 0x33, - 0x8a, 0x2b, 0xf8, 0xd1, 0x1c, 0x4b, 0x13, 0xf8, 0x01, 0x2b, 0xff, 0x2a, - 0x11, 0xd1, 0x01, 0x36, 0x5b, 0x2e, 0xf8, 0xd1, 0x19, 0x4d, 0x2b, 0x78, - 0x43, 0xb1, 0x19, 0x48, 0x04, 0xf0, 0x72, 0xf9, 0x2b, 0x78, 0x1b, 0xb1, - 0x12, 0x49, 0x17, 0x48, 0xf6, 0xf7, 0x5c, 0xfc, 0x10, 0x48, 0xf6, 0xf7, - 0x3b, 0xfe, 0x15, 0x4b, 0x00, 0x25, 0x15, 0x4a, 0x00, 0x21, 0x15, 0x48, - 0xe3, 0x60, 0x22, 0x60, 0x00, 0x93, 0xcd, 0xe9, 0x02, 0x01, 0xcd, 0xe9, - 0x22, 0x55, 0x12, 0x48, 0x94, 0xe8, 0x0e, 0x00, 0xf7, 0xf7, 0x7d, 0xfc, - 0x28, 0x46, 0x67, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x06, 0x24, 0xdd, 0xe5, - 0x04, 0x24, 0xdb, 0xe5, 0x03, 0x24, 0xd9, 0xe5, 0x02, 0x24, 0xd7, 0xe5, - 0x01, 0x20, 0xf2, 0xe7, 0x00, 0x00, 0x04, 0x08, 0x00, 0x04, 0x00, 0x08, - 0x00, 0x03, 0x00, 0x08, 0xd8, 0x0d, 0x00, 0x24, 0x71, 0xe9, 0x01, 0x08, - 0x7a, 0xd9, 0x01, 0x08, 0xd5, 0x55, 0x01, 0x08, 0x15, 0x5e, 0x01, 0x08, - 0x90, 0xd0, 0x03, 0x00, 0xc0, 0x6a, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x41, - 0x49, 0x4e, 0x35, 0x68, 0x00, 0x2d, 0x65, 0xd1, 0xed, 0xf7, 0xc0, 0xfb, - 0x47, 0x4c, 0x48, 0x4b, 0x7f, 0x21, 0x25, 0x61, 0xc4, 0xe9, 0x00, 0x35, - 0xff, 0x23, 0xc4, 0xe9, 0x02, 0x13, 0x94, 0xf8, 0x21, 0x30, 0xc4, 0xe9, - 0x06, 0x55, 0x03, 0xf0, 0xff, 0x02, 0x1b, 0xb9, 0x84, 0xf8, 0x20, 0x20, - 0xed, 0xf7, 0xac, 0xfb, 0x02, 0x23, 0xca, 0x22, 0x84, 0xf8, 0x21, 0x30, - 0x23, 0x68, 0x5a, 0x62, 0x53, 0x22, 0x5a, 0x62, 0xdd, 0x68, 0x15, 0xf0, - 0x40, 0x05, 0x2d, 0xd0, 0x22, 0x68, 0x20, 0x69, 0x93, 0x68, 0x23, 0xf4, - 0xe0, 0x03, 0x23, 0xf0, 0x40, 0x03, 0x93, 0x60, 0x63, 0x68, 0x91, 0x68, - 0x03, 0x43, 0xa0, 0x69, 0x03, 0x43, 0x0b, 0x43, 0x93, 0x60, 0xd4, 0xe9, - 0x02, 0x13, 0x43, 0xea, 0x01, 0x43, 0x13, 0x61, 0x2e, 0x4b, 0xda, 0x68, - 0x22, 0xf0, 0x40, 0x02, 0xda, 0x60, 0x9a, 0x68, 0x92, 0x06, 0x33, 0xd5, - 0x9a, 0x68, 0x22, 0xf0, 0x20, 0x02, 0x9a, 0x60, 0xec, 0xf7, 0x72, 0xf8, - 0x05, 0x46, 0x10, 0xb1, 0x03, 0x25, 0x84, 0xf8, 0x21, 0x50, 0x25, 0x4a, - 0x93, 0x68, 0x43, 0xf0, 0x20, 0x03, 0x93, 0x60, 0x75, 0xb9, 0x24, 0xe0, - 0x4f, 0xf0, 0xff, 0x32, 0x4f, 0xf0, 0x03, 0x08, 0xda, 0x60, 0xeb, 0xf7, - 0xcf, 0xff, 0x07, 0x46, 0x23, 0x68, 0xdb, 0x68, 0x5b, 0x06, 0x0b, 0xd5, - 0x00, 0x2d, 0xc3, 0xd0, 0x23, 0x68, 0xff, 0x22, 0x5a, 0x62, 0x1d, 0xbb, - 0x01, 0x23, 0x84, 0xf8, 0x21, 0x30, 0x33, 0x60, 0xbd, 0xe8, 0xf0, 0x81, - 0xeb, 0xf7, 0xbc, 0xff, 0xc0, 0x1b, 0xb0, 0xf5, 0x7a, 0x7f, 0xe9, 0xd9, - 0x03, 0x25, 0x84, 0xf8, 0x21, 0x80, 0xe5, 0xe7, 0xec, 0xf7, 0x42, 0xf8, - 0x60, 0xb9, 0x22, 0x68, 0x00, 0x25, 0x60, 0x69, 0xd3, 0x6c, 0x23, 0xf0, - 0x03, 0x03, 0xd3, 0x64, 0xe3, 0x69, 0xd1, 0x6c, 0x03, 0x43, 0x0b, 0x43, - 0xd3, 0x64, 0xdb, 0xe7, 0x03, 0x25, 0x84, 0xf8, 0x21, 0x50, 0xd7, 0xe7, - 0x07, 0x4b, 0x1b, 0x78, 0x00, 0x2b, 0xdb, 0xd0, 0x06, 0x48, 0xbd, 0xe8, - 0xf0, 0x41, 0x04, 0xf0, 0xa1, 0xb8, 0x00, 0xbf, 0x9c, 0x2e, 0x00, 0x24, - 0x44, 0x05, 0x00, 0x24, 0x00, 0x40, 0x00, 0x58, 0xd8, 0x0d, 0x00, 0x24, - 0xa2, 0xe9, 0x01, 0x08, 0xc3, 0x68, 0x18, 0x47, 0xff, 0xf7, 0xfc, 0xbf, - 0x07, 0x4b, 0x10, 0xb5, 0x04, 0x46, 0x03, 0x60, 0xf4, 0xf7, 0x4e, 0xfe, - 0xd4, 0xf8, 0xbc, 0x00, 0xff, 0xf7, 0xd0, 0xfa, 0x20, 0x1d, 0xf7, 0xf7, - 0xab, 0xfd, 0x20, 0x46, 0x10, 0xbd, 0x00, 0xbf, 0xe4, 0xdb, 0x01, 0x08, - 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xea, 0xff, 0x20, 0x46, 0x02, 0xf0, - 0xf3, 0xfb, 0x20, 0x46, 0x10, 0xbd, 0x38, 0xb5, 0xd0, 0xf8, 0xc0, 0x42, - 0x01, 0xf0, 0x0f, 0x05, 0x63, 0x68, 0x9d, 0x42, 0x37, 0xd8, 0x11, 0xf0, - 0x80, 0x0f, 0x4f, 0xf0, 0x1c, 0x02, 0x34, 0xd0, 0x02, 0xfb, 0x05, 0x43, - 0x02, 0xfb, 0x05, 0x41, 0x01, 0x22, 0x3c, 0x33, 0x81, 0xf8, 0x3d, 0x20, - 0x01, 0x22, 0x1d, 0x70, 0x9a, 0x70, 0x94, 0xf8, 0xbc, 0x13, 0x91, 0x42, - 0x23, 0xd0, 0x84, 0xf8, 0xbc, 0x23, 0x1a, 0x78, 0x5b, 0x78, 0x20, 0x68, - 0x01, 0x2b, 0x4f, 0xf0, 0x20, 0x03, 0x0c, 0xbf, 0x00, 0xf5, 0x10, 0x61, - 0x00, 0xf5, 0x30, 0x61, 0x13, 0xfb, 0x02, 0x13, 0x19, 0x68, 0x00, 0x29, - 0x04, 0xdb, 0x1a, 0xb1, 0x1a, 0x68, 0x22, 0xf0, 0x80, 0x42, 0x1a, 0x60, - 0x1a, 0x68, 0x42, 0xf4, 0x00, 0x12, 0x1a, 0x60, 0x25, 0xb9, 0x04, 0xf5, - 0x71, 0x72, 0x21, 0x7c, 0xec, 0xf7, 0x8e, 0xfe, 0x00, 0x23, 0x84, 0xf8, - 0xbc, 0x33, 0x00, 0x20, 0x38, 0xbd, 0x02, 0xfb, 0x01, 0x43, 0x02, 0xfb, - 0x01, 0x41, 0x00, 0x22, 0x03, 0xf5, 0xfe, 0x73, 0x81, 0xf8, 0xfd, 0x21, - 0xc8, 0xe7, 0x70, 0xb5, 0x04, 0x46, 0x16, 0x46, 0x0d, 0x46, 0x51, 0xbb, - 0xd0, 0xf8, 0x94, 0x32, 0x03, 0x2b, 0x1f, 0xd1, 0xd0, 0xe9, 0x58, 0x12, - 0x91, 0x42, 0x0e, 0xd9, 0x89, 0x1a, 0x8a, 0x42, 0xc0, 0xf8, 0x60, 0x11, - 0xd0, 0xf8, 0xc0, 0x02, 0x88, 0xbf, 0x8a, 0xb2, 0x31, 0x46, 0x98, 0xbf, - 0x92, 0xb2, 0xe9, 0xf7, 0x93, 0xfe, 0x28, 0x46, 0x70, 0xbd, 0xd0, 0xf8, - 0xb4, 0x32, 0x1b, 0x69, 0x23, 0xb1, 0x90, 0xf8, 0x9c, 0x22, 0x03, 0x2a, - 0x00, 0xd1, 0x98, 0x47, 0x20, 0x46, 0xfd, 0xf7, 0x21, 0xf9, 0xf0, 0xe7, - 0x05, 0x2b, 0xee, 0xd1, 0xc4, 0xf8, 0x94, 0x12, 0xff, 0xf7, 0x85, 0xff, - 0xe9, 0xe7, 0xd0, 0xf8, 0xb4, 0x32, 0x9b, 0x69, 0x33, 0xb1, 0x90, 0xf8, - 0x9c, 0x22, 0x03, 0x2a, 0x02, 0xd1, 0x00, 0x25, 0x98, 0x47, 0xde, 0xe7, - 0x02, 0x25, 0xdc, 0xe7, 0x2d, 0xe9, 0x80, 0x48, 0x00, 0x20, 0x91, 0xb0, - 0xea, 0xf7, 0x16, 0xf8, 0x00, 0x20, 0xee, 0xf7, 0xa9, 0xfa, 0xc3, 0x4e, - 0xec, 0xf7, 0x14, 0xfd, 0xff, 0xf7, 0x0e, 0xfb, 0xc1, 0x48, 0xf8, 0xf7, - 0x21, 0xf8, 0xc1, 0x48, 0xf4, 0xf7, 0xe6, 0xff, 0xc0, 0x4b, 0x18, 0x68, - 0x03, 0x68, 0x9b, 0x68, 0x98, 0x47, 0x04, 0x23, 0xbe, 0x4a, 0x30, 0x21, - 0xbe, 0x48, 0xf6, 0xf7, 0x9f, 0xfa, 0xd6, 0xf8, 0xb4, 0x32, 0x13, 0xb1, - 0x00, 0x23, 0xc6, 0xf8, 0xb4, 0x32, 0xbb, 0x4b, 0x4f, 0xf0, 0x01, 0x0a, - 0xba, 0x4c, 0x06, 0x22, 0xc6, 0xf8, 0xb0, 0x32, 0x00, 0x23, 0xb9, 0x48, - 0x33, 0x70, 0x23, 0x63, 0x23, 0x61, 0xe3, 0x60, 0xe3, 0x62, 0x86, 0xf8, - 0x9c, 0xa2, 0xc4, 0xf8, 0x04, 0x64, 0xc6, 0xf8, 0xc0, 0x42, 0xc4, 0xe9, - 0x08, 0x33, 0xc4, 0xe9, 0x06, 0xa3, 0x94, 0xf8, 0xbd, 0x33, 0xc4, 0xe9, - 0x00, 0x02, 0x03, 0xf0, 0xff, 0x07, 0x00, 0x2b, 0x40, 0xf0, 0xa3, 0x80, - 0xad, 0x4d, 0x4f, 0xf0, 0x02, 0x09, 0x84, 0xf8, 0xbc, 0x73, 0x4f, 0xf0, - 0x0a, 0x08, 0xd5, 0xf8, 0xe0, 0x30, 0x4f, 0xf0, 0x03, 0x0b, 0x0b, 0xa9, - 0xa8, 0x48, 0x43, 0xea, 0x0a, 0x03, 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, - 0xe0, 0x30, 0x03, 0xea, 0x0a, 0x03, 0x0a, 0x93, 0x0a, 0x9b, 0xd5, 0xf8, - 0xe0, 0x30, 0x43, 0xf0, 0x02, 0x03, 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, - 0xe0, 0x30, 0x03, 0xf0, 0x02, 0x03, 0x09, 0x93, 0x09, 0x9b, 0xd5, 0xf8, - 0xe0, 0x30, 0x43, 0xf0, 0x04, 0x03, 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, - 0xe0, 0x30, 0x03, 0xf0, 0x04, 0x03, 0x08, 0x93, 0x08, 0x9b, 0xd5, 0xf8, - 0xe0, 0x30, 0x43, 0xf0, 0x80, 0x03, 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, - 0xe0, 0x30, 0x03, 0xf0, 0x80, 0x03, 0x07, 0x93, 0x07, 0x9b, 0xd5, 0xf8, - 0xe0, 0x30, 0x43, 0xf4, 0x80, 0x73, 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, - 0xe0, 0x30, 0x0d, 0x97, 0x03, 0xf4, 0x80, 0x73, 0x06, 0x93, 0x06, 0x9b, - 0x20, 0x23, 0xcd, 0xe9, 0x0e, 0xb8, 0xcd, 0xe9, 0x0b, 0x39, 0xf0, 0xf7, - 0xf7, 0xf9, 0x08, 0x23, 0x0b, 0xa9, 0x86, 0x48, 0xcd, 0xf8, 0x3c, 0x80, - 0xcd, 0xe9, 0x0b, 0x39, 0xcd, 0xe9, 0x0d, 0x7b, 0xf0, 0xf7, 0xec, 0xf9, - 0x43, 0xf6, 0x23, 0x43, 0x0b, 0xa9, 0x81, 0x48, 0x0d, 0x97, 0xcd, 0xf8, - 0x3c, 0x80, 0xcd, 0xe9, 0x0b, 0x39, 0xf0, 0xf7, 0xe1, 0xf9, 0x0b, 0xa9, - 0x7d, 0x48, 0x0d, 0x97, 0xcd, 0xf8, 0x3c, 0x80, 0xcd, 0xe9, 0x0b, 0xa9, - 0xf0, 0xf7, 0xd8, 0xf9, 0x10, 0x23, 0x0b, 0xa9, 0x79, 0x48, 0x0d, 0x97, - 0xcd, 0xf8, 0x3c, 0x80, 0xcd, 0xe9, 0x0b, 0x39, 0xf0, 0xf7, 0xce, 0xf9, - 0x4f, 0xf4, 0x00, 0x63, 0x0b, 0xa9, 0x75, 0x48, 0x0d, 0x97, 0xcd, 0xf8, - 0x3c, 0x80, 0xcd, 0xe9, 0x0b, 0x39, 0xf0, 0xf7, 0xc3, 0xf9, 0xd5, 0xf8, - 0xd8, 0x30, 0x51, 0x46, 0x4d, 0x20, 0x43, 0xf0, 0x80, 0x63, 0xc5, 0xf8, - 0xd8, 0x30, 0xd5, 0xf8, 0xd8, 0x30, 0x03, 0xf0, 0x80, 0x63, 0x05, 0x93, - 0x05, 0x9b, 0xd5, 0xf8, 0xd8, 0x30, 0x43, 0xf0, 0x00, 0x73, 0xc5, 0xf8, - 0xd8, 0x30, 0xd5, 0xf8, 0xd8, 0x30, 0x03, 0xf0, 0x00, 0x73, 0x04, 0x93, - 0x04, 0x9b, 0xe9, 0xf7, 0xa3, 0xfd, 0x64, 0x4b, 0x4f, 0xf4, 0x00, 0x52, - 0x9a, 0x60, 0x03, 0x23, 0x27, 0x68, 0x84, 0xf8, 0xbd, 0x33, 0x59, 0x4b, - 0xdb, 0x6b, 0x13, 0xf4, 0x80, 0x73, 0x08, 0xbf, 0x23, 0x61, 0xbb, 0x68, - 0xd4, 0xf8, 0x10, 0x80, 0x23, 0xf0, 0x01, 0x03, 0xbb, 0x60, 0xa3, 0x69, - 0x01, 0x2b, 0x40, 0xf0, 0xee, 0x82, 0xbb, 0x6b, 0x62, 0x6b, 0x23, 0xf4, - 0x80, 0x33, 0x01, 0x2a, 0xbb, 0x63, 0xfb, 0x68, 0x23, 0xf4, 0x84, 0x03, - 0x23, 0xf0, 0x40, 0x03, 0xfb, 0x60, 0xfb, 0x68, 0x23, 0xf4, 0x40, 0x13, - 0xfb, 0x60, 0x03, 0xd1, 0xfb, 0x68, 0x43, 0xf4, 0x80, 0x13, 0xfb, 0x60, - 0x38, 0x46, 0xec, 0xf7, 0x15, 0xfd, 0x05, 0x46, 0xb8, 0xf1, 0x01, 0x0f, - 0x10, 0xd1, 0xfb, 0x6d, 0x9b, 0xb2, 0xfb, 0x65, 0xfb, 0x6d, 0x43, 0xf0, - 0x7b, 0x73, 0x43, 0xf4, 0x00, 0x33, 0xfb, 0x65, 0xbb, 0x68, 0x43, 0xf0, - 0x06, 0x03, 0xbb, 0x60, 0xbb, 0x68, 0x43, 0xf0, 0x20, 0x03, 0xbb, 0x60, - 0x00, 0x2d, 0x00, 0xf0, 0xd3, 0x82, 0x02, 0x23, 0x84, 0xf8, 0xbd, 0x33, - 0x23, 0x68, 0x4f, 0xf4, 0x00, 0x72, 0xd6, 0xf8, 0xc0, 0x02, 0x5a, 0x62, - 0x5a, 0x6a, 0x42, 0xf0, 0x00, 0x72, 0x9a, 0x62, 0x3a, 0x4b, 0xc6, 0xf8, - 0xb4, 0x32, 0x3a, 0x4b, 0xc6, 0xf8, 0xbc, 0x32, 0xee, 0xf7, 0x32, 0xfa, - 0x4d, 0x20, 0xf0, 0xf7, 0x15, 0xfb, 0x65, 0x20, 0xf0, 0xf7, 0x12, 0xfb, - 0x2b, 0x4b, 0x5a, 0x69, 0x9b, 0x69, 0x1a, 0x42, 0x00, 0xf0, 0x46, 0x82, - 0x27, 0x4f, 0x3c, 0x68, 0xb9, 0x46, 0x63, 0x69, 0x13, 0xf0, 0x01, 0x03, - 0x03, 0x93, 0x40, 0xf0, 0x3d, 0x82, 0x62, 0x69, 0xa3, 0x69, 0x1a, 0x42, - 0x00, 0xf0, 0x38, 0x82, 0x63, 0x69, 0xa2, 0x69, 0x13, 0x40, 0x9b, 0x07, - 0x03, 0xd5, 0x63, 0x69, 0x03, 0xf0, 0x02, 0x03, 0x63, 0x61, 0x63, 0x69, - 0xa2, 0x69, 0x13, 0x40, 0xde, 0x06, 0x4e, 0xd5, 0xa3, 0x69, 0x23, 0xf0, - 0x10, 0x03, 0xa3, 0x61, 0x26, 0x6a, 0xc6, 0xf3, 0x43, 0x43, 0x06, 0xf0, - 0x0f, 0x05, 0x02, 0x2b, 0x40, 0xf0, 0xbb, 0x83, 0x47, 0xf6, 0xf0, 0x73, - 0x1e, 0x42, 0x39, 0xd0, 0x1c, 0x23, 0xc6, 0xf3, 0x0a, 0x18, 0x20, 0x46, - 0x03, 0xfb, 0x05, 0x95, 0x42, 0x46, 0xd5, 0xf8, 0x08, 0x12, 0xec, 0xf7, - 0xf1, 0xfc, 0xd5, 0xf8, 0x08, 0x32, 0x43, 0x44, 0xc5, 0xf8, 0x08, 0x32, - 0xd5, 0xf8, 0x14, 0x32, 0x43, 0x44, 0xc5, 0xf8, 0x14, 0x32, 0x23, 0xe0, - 0x24, 0x87, 0x00, 0x24, 0x50, 0x9c, 0x00, 0x24, 0x78, 0x2c, 0x00, 0x24, - 0xdc, 0x0d, 0x00, 0x24, 0xb1, 0xe9, 0x01, 0x08, 0xf4, 0x86, 0x00, 0x24, - 0xc0, 0x01, 0x00, 0x24, 0x58, 0x9c, 0x00, 0x24, 0x00, 0x00, 0x04, 0x40, - 0x00, 0x44, 0x02, 0x58, 0x00, 0x00, 0x02, 0x58, 0x00, 0x04, 0x02, 0x58, - 0x00, 0x08, 0x02, 0x58, 0x00, 0x1c, 0x02, 0x58, 0x00, 0x20, 0x02, 0x58, - 0x00, 0xe1, 0x00, 0xe0, 0xdc, 0x01, 0x00, 0x24, 0x18, 0x02, 0x00, 0x24, - 0x3a, 0x68, 0x93, 0x69, 0x43, 0xf0, 0x10, 0x03, 0x93, 0x61, 0x3b, 0x68, - 0x5a, 0x69, 0x99, 0x69, 0x0a, 0x40, 0x15, 0x03, 0x00, 0xf1, 0x84, 0x83, - 0xbe, 0x4e, 0x33, 0x68, 0xb1, 0x46, 0x5a, 0x69, 0x99, 0x69, 0x0a, 0x40, - 0x12, 0xf4, 0x80, 0x2f, 0x10, 0xd0, 0xd3, 0xf8, 0x18, 0x28, 0x03, 0xf5, - 0x00, 0x63, 0x37, 0x46, 0x04, 0xf5, 0x10, 0x6b, 0xdb, 0x69, 0x13, 0x40, - 0x9b, 0xb2, 0x02, 0x93, 0x00, 0x23, 0x01, 0x93, 0x02, 0x9b, 0x00, 0x2b, - 0x40, 0xf0, 0xa8, 0x86, 0x30, 0x68, 0x42, 0x69, 0x83, 0x69, 0x1a, 0x42, - 0x10, 0xd5, 0xd4, 0xf8, 0x04, 0x38, 0x23, 0xf0, 0x01, 0x03, 0xc4, 0xf8, - 0x04, 0x38, 0x96, 0xf8, 0xf4, 0x33, 0x01, 0x2b, 0x04, 0xbf, 0x00, 0x23, - 0x86, 0xf8, 0xf4, 0x33, 0x43, 0x69, 0x03, 0xf0, 0x00, 0x43, 0x43, 0x61, - 0x43, 0x69, 0x82, 0x69, 0x13, 0x40, 0x1a, 0x05, 0x10, 0xd5, 0xd4, 0xf8, - 0x08, 0x38, 0xdb, 0x07, 0x08, 0xd5, 0xd6, 0xf8, 0x04, 0x34, 0x93, 0xf8, - 0x9c, 0x22, 0x83, 0xf8, 0x9d, 0x22, 0x04, 0x22, 0x83, 0xf8, 0x9c, 0x22, - 0x43, 0x69, 0x03, 0xf4, 0x00, 0x63, 0x43, 0x61, 0x43, 0x69, 0x82, 0x69, - 0x13, 0x40, 0x1f, 0x01, 0x11, 0xd5, 0x43, 0x69, 0x03, 0xf0, 0x00, 0x63, - 0x43, 0x61, 0x97, 0x4b, 0x93, 0xf8, 0xf4, 0x23, 0x00, 0x2a, 0x40, 0xf0, - 0x88, 0x87, 0x01, 0x22, 0x83, 0xf8, 0xf4, 0x23, 0x42, 0x6d, 0xc2, 0xf3, - 0x83, 0x02, 0xc3, 0xf8, 0xf8, 0x23, 0x43, 0x69, 0x82, 0x69, 0x13, 0x40, - 0xdd, 0x04, 0x3e, 0xd5, 0xd4, 0xf8, 0x04, 0x38, 0x04, 0xf5, 0x00, 0x62, - 0x23, 0xf0, 0x01, 0x03, 0x53, 0x60, 0x4f, 0xf4, 0x84, 0x63, 0x03, 0x61, - 0x89, 0x4b, 0x01, 0x3b, 0x02, 0xd0, 0x01, 0x69, 0x89, 0x06, 0xfa, 0xd4, - 0x04, 0xf5, 0x10, 0x63, 0xdf, 0xf8, 0x10, 0xc2, 0x4f, 0xf6, 0x7f, 0x37, - 0xdc, 0xf8, 0x04, 0x10, 0x0d, 0x46, 0x03, 0x99, 0xa9, 0x42, 0xc0, 0xf0, - 0x69, 0x87, 0xd3, 0x69, 0x43, 0xf0, 0x01, 0x13, 0xd3, 0x61, 0xdc, 0xf8, - 0x30, 0x30, 0x00, 0x2b, 0x00, 0xf0, 0x81, 0x87, 0xd2, 0xf8, 0x84, 0x30, - 0x43, 0xf0, 0x0b, 0x03, 0xc2, 0xf8, 0x84, 0x30, 0x53, 0x6c, 0x43, 0xf0, - 0x0b, 0x03, 0x53, 0x64, 0xd4, 0xf8, 0x00, 0x38, 0x76, 0x4a, 0x23, 0xf4, - 0xfe, 0x63, 0x31, 0x7c, 0xc4, 0xf8, 0x00, 0x38, 0xec, 0xf7, 0xe6, 0xfb, - 0x32, 0x68, 0x53, 0x69, 0x03, 0xf4, 0x80, 0x53, 0x53, 0x61, 0x34, 0x68, - 0x63, 0x69, 0xa2, 0x69, 0x13, 0x40, 0x9f, 0x04, 0x40, 0xf1, 0xbe, 0x80, - 0xd4, 0xf8, 0x00, 0x39, 0x23, 0xf4, 0xff, 0x63, 0x23, 0xf0, 0x07, 0x03, - 0xc4, 0xf8, 0x00, 0x39, 0xd4, 0xf8, 0x04, 0x28, 0x42, 0xf4, 0x80, 0x72, - 0xc4, 0xf8, 0x04, 0x28, 0xd4, 0xf8, 0x08, 0x28, 0x12, 0xf0, 0x06, 0x03, - 0x04, 0xd0, 0x12, 0xf0, 0x02, 0x0f, 0x14, 0xbf, 0x02, 0x23, 0x0f, 0x23, - 0xf3, 0x60, 0xed, 0xf7, 0xbf, 0xf8, 0xf7, 0x68, 0xfb, 0xb2, 0x02, 0x2b, - 0x40, 0xf0, 0x5f, 0x87, 0x5d, 0x4b, 0x5e, 0x4a, 0x03, 0x44, 0x93, 0x42, - 0x40, 0xf2, 0x47, 0x87, 0x5c, 0x4b, 0x5d, 0x4a, 0x03, 0x44, 0x93, 0x42, - 0x40, 0xf2, 0x44, 0x87, 0xa0, 0xf5, 0x74, 0x03, 0x5a, 0x4a, 0xa3, 0xf5, - 0x10, 0x53, 0x93, 0x42, 0x40, 0xf2, 0x3f, 0x87, 0xa0, 0xf1, 0x83, 0x73, - 0x57, 0x4a, 0xa3, 0xf5, 0xe7, 0x43, 0x93, 0x42, 0xc0, 0xf0, 0x3a, 0x87, - 0x55, 0x4b, 0x56, 0x4a, 0x03, 0x44, 0x93, 0x42, 0x40, 0xf2, 0x37, 0x87, - 0x54, 0x4b, 0x55, 0x4a, 0x03, 0x44, 0x93, 0x42, 0xc0, 0xf0, 0x34, 0x87, - 0x53, 0x4b, 0x54, 0x4a, 0x03, 0x44, 0x93, 0x42, 0xc0, 0xf0, 0x31, 0x87, - 0xa0, 0xf1, 0xb7, 0x73, 0x51, 0x4a, 0xa3, 0xf5, 0x58, 0x53, 0x93, 0x42, - 0xc0, 0xf0, 0x2c, 0x87, 0x4f, 0x4b, 0x50, 0x4a, 0x03, 0x44, 0x93, 0x42, - 0x34, 0xbf, 0x07, 0x23, 0x06, 0x23, 0xe2, 0x68, 0x00, 0x3f, 0x4f, 0xf0, - 0x00, 0x08, 0x22, 0xf4, 0x70, 0x52, 0x18, 0xbf, 0x01, 0x27, 0xe2, 0x60, - 0xe2, 0x68, 0x42, 0xea, 0x83, 0x23, 0xe3, 0x60, 0x40, 0x23, 0xd6, 0xf8, - 0x04, 0x44, 0xd4, 0xf8, 0xc0, 0x52, 0xc5, 0xf8, 0x04, 0x32, 0x05, 0xf5, - 0xfe, 0x71, 0x95, 0xf8, 0xbc, 0x33, 0xa5, 0xf8, 0xfc, 0x81, 0x01, 0x2b, - 0x85, 0xf8, 0xff, 0x81, 0x07, 0xd0, 0x01, 0x23, 0x28, 0x68, 0x85, 0xf8, - 0xbc, 0x33, 0xec, 0xf7, 0xb0, 0xfb, 0x85, 0xf8, 0xbc, 0x83, 0xd4, 0xf8, - 0xc0, 0x52, 0x40, 0x22, 0x01, 0x23, 0x4f, 0xf0, 0x00, 0x08, 0xc4, 0xf8, - 0x64, 0x21, 0x4f, 0xf4, 0x80, 0x70, 0xc4, 0xf8, 0x58, 0x31, 0x05, 0xf1, - 0x3c, 0x01, 0x6a, 0x64, 0x95, 0xf8, 0xbc, 0x23, 0xa8, 0x87, 0x9a, 0x42, - 0x85, 0xf8, 0x3f, 0x80, 0xa5, 0xf8, 0x42, 0x80, 0x06, 0xd0, 0x28, 0x68, - 0x85, 0xf8, 0xbc, 0x33, 0xec, 0xf7, 0x91, 0xfb, 0x85, 0xf8, 0xbc, 0x83, - 0x01, 0x23, 0x00, 0x21, 0x40, 0x22, 0xa3, 0x61, 0x84, 0xf8, 0x9c, 0x32, - 0xd4, 0xf8, 0xb8, 0x32, 0x62, 0x62, 0xc4, 0xf8, 0x94, 0x12, 0x61, 0x60, - 0xc4, 0xf8, 0xa4, 0x12, 0x23, 0xb1, 0xd4, 0xf8, 0xb4, 0x32, 0x20, 0x46, - 0x5b, 0x68, 0x98, 0x47, 0xd6, 0xf8, 0x04, 0x34, 0x32, 0x68, 0x1f, 0x74, - 0x53, 0x69, 0x03, 0xf4, 0x00, 0x53, 0x53, 0x61, 0x32, 0x68, 0x53, 0x69, - 0x92, 0x69, 0x13, 0x40, 0x1d, 0x07, 0x35, 0xd5, 0xd6, 0xf8, 0x04, 0x04, - 0x90, 0xf8, 0x9c, 0x32, 0x03, 0x2b, 0x04, 0xd1, 0xd0, 0xf8, 0xb4, 0x32, - 0xdb, 0x69, 0x03, 0xb1, 0x98, 0x47, 0x32, 0x68, 0x53, 0x69, 0x03, 0xf0, - 0x08, 0x03, 0x53, 0x61, 0x24, 0xe0, 0x00, 0xbf, 0x58, 0x9c, 0x00, 0x24, - 0x41, 0x0d, 0x03, 0x00, 0x1c, 0xa0, 0x00, 0x24, 0x40, 0x53, 0x27, 0xff, - 0xff, 0x34, 0x0c, 0x00, 0x40, 0x1e, 0x1b, 0xff, 0x3f, 0x42, 0x0f, 0x00, - 0x7f, 0x4f, 0x12, 0x00, 0x20, 0xd6, 0x13, 0x00, 0x60, 0xb6, 0xe5, 0xfe, - 0x5f, 0xe3, 0x16, 0x00, 0x00, 0xd3, 0xce, 0xfe, 0x40, 0x77, 0x1b, 0x00, - 0xc0, 0x5b, 0xb3, 0xfe, 0xc0, 0x91, 0x21, 0x00, 0x20, 0x75, 0x38, 0x00, - 0xe0, 0x54, 0x59, 0xfe, 0xe0, 0x9c, 0x41, 0x00, 0x33, 0x68, 0x5a, 0x69, - 0x99, 0x69, 0x0a, 0x40, 0xd4, 0x02, 0x03, 0xd5, 0x5a, 0x69, 0x02, 0xf4, - 0x80, 0x12, 0x5a, 0x61, 0x5a, 0x69, 0x99, 0x69, 0x0a, 0x40, 0x90, 0x02, - 0x03, 0xd5, 0x5a, 0x69, 0x02, 0xf4, 0x00, 0x12, 0x5a, 0x61, 0x5a, 0x69, - 0x99, 0x69, 0x0a, 0x40, 0x51, 0x00, 0x03, 0xd5, 0x5a, 0x69, 0x02, 0xf0, - 0x80, 0x42, 0x5a, 0x61, 0x5a, 0x69, 0x99, 0x69, 0x0a, 0x40, 0x52, 0x07, - 0x10, 0xd5, 0x5c, 0x68, 0x63, 0x07, 0x09, 0xd5, 0xd6, 0xf8, 0x04, 0x04, - 0x01, 0x23, 0x80, 0xf8, 0x9c, 0x32, 0xd0, 0xf8, 0xb4, 0x32, 0x01, 0x79, - 0x5b, 0x68, 0x98, 0x47, 0x33, 0x68, 0x5a, 0x68, 0x14, 0x43, 0x5c, 0x60, - 0xbb, 0x4a, 0x13, 0x68, 0x59, 0x1c, 0x11, 0x60, 0x28, 0x22, 0x93, 0xfb, - 0xf2, 0xf4, 0x02, 0xfb, 0x14, 0x34, 0x00, 0x2c, 0x7f, 0xf4, 0xa8, 0xad, - 0xeb, 0xf7, 0x42, 0xfb, 0xb0, 0xf5, 0xfa, 0x7f, 0x0d, 0xd9, 0xb4, 0x4d, - 0x2b, 0x78, 0x53, 0xb1, 0x20, 0x46, 0xff, 0xf7, 0x77, 0xf8, 0x4d, 0xf6, - 0x59, 0x73, 0x98, 0x42, 0x03, 0xd1, 0x20, 0x46, 0xe9, 0xf7, 0x6a, 0xfc, - 0x2c, 0x70, 0xae, 0x4d, 0xae, 0x4c, 0x2b, 0x78, 0x7b, 0xb9, 0xae, 0x4b, - 0xae, 0x48, 0x1b, 0x78, 0x22, 0x78, 0x42, 0xfa, 0x83, 0xf3, 0xdb, 0xb2, - 0x23, 0x70, 0xf6, 0xf7, 0xb1, 0xff, 0xb0, 0xfa, 0x80, 0xf1, 0xa9, 0x48, - 0x49, 0x09, 0xf6, 0xf7, 0xb3, 0xff, 0x2b, 0x78, 0x01, 0x33, 0xdb, 0xb2, - 0x2b, 0x70, 0x23, 0x78, 0xfa, 0x2b, 0x02, 0xd8, 0x23, 0x78, 0x09, 0x2b, - 0x0a, 0xd8, 0xa1, 0x4a, 0x13, 0x78, 0x5b, 0x42, 0x5b, 0xb2, 0x13, 0x70, - 0x13, 0x78, 0x22, 0x78, 0x42, 0xfa, 0x83, 0xf3, 0xdb, 0xb2, 0x23, 0x70, - 0x2a, 0x78, 0x23, 0x78, 0x9a, 0x42, 0x7f, 0xf4, 0x67, 0xad, 0x9a, 0x48, - 0xf6, 0xf7, 0x8e, 0xff, 0xb0, 0xfa, 0x80, 0xf1, 0x97, 0x48, 0x49, 0x09, - 0xf6, 0xf7, 0x90, 0xff, 0x5c, 0xe5, 0xfb, 0x68, 0x38, 0x46, 0xd4, 0xf8, - 0x28, 0x90, 0x43, 0xf0, 0x40, 0x03, 0xfb, 0x60, 0xec, 0xf7, 0x36, 0xfa, - 0xbb, 0x6b, 0x05, 0x46, 0xb9, 0xf1, 0x00, 0x0f, 0x03, 0xd1, 0x43, 0xf4, - 0x80, 0x33, 0xbb, 0x63, 0x18, 0xe5, 0x23, 0xf4, 0x80, 0x33, 0xfa, 0xe7, - 0x23, 0x68, 0x32, 0x20, 0xda, 0x68, 0x22, 0xf0, 0xc0, 0x42, 0xda, 0x60, - 0xda, 0x68, 0x42, 0xf0, 0x80, 0x42, 0xda, 0x60, 0xf0, 0xf7, 0x62, 0xf8, - 0x67, 0x68, 0x2b, 0x46, 0x4f, 0xf0, 0x1c, 0x0c, 0x4f, 0xf0, 0x01, 0x0e, - 0x28, 0x46, 0xd9, 0xb2, 0x5a, 0x1c, 0x8f, 0x42, 0x00, 0xf2, 0xb3, 0x80, - 0x00, 0x23, 0x4f, 0xf0, 0x1c, 0x0c, 0x19, 0x46, 0xd8, 0xb2, 0x01, 0x33, - 0x87, 0x42, 0x00, 0xf2, 0xb9, 0x80, 0x23, 0x68, 0xd4, 0xf8, 0x2c, 0xc0, - 0xd4, 0xe9, 0x03, 0x12, 0x02, 0x92, 0xd4, 0xe9, 0x06, 0xe2, 0x01, 0x92, - 0x00, 0x22, 0x90, 0x46, 0x02, 0xf1, 0x40, 0x00, 0x01, 0x32, 0x03, 0xeb, - 0x80, 0x00, 0x0f, 0x2a, 0xc0, 0xf8, 0x04, 0x80, 0xf6, 0xd1, 0x03, 0xf5, - 0x00, 0x60, 0xbc, 0xf1, 0x00, 0x0f, 0x40, 0xf0, 0xac, 0x80, 0x42, 0x68, - 0x42, 0xf0, 0x02, 0x02, 0x42, 0x60, 0x9a, 0x6b, 0x22, 0xf4, 0x00, 0x12, - 0x9a, 0x63, 0x1a, 0x68, 0x42, 0xf0, 0x40, 0x02, 0x1a, 0x60, 0x1a, 0x68, - 0x42, 0xf0, 0x80, 0x02, 0x1a, 0x60, 0x00, 0x22, 0xbe, 0xf1, 0x01, 0x0f, - 0xc3, 0xf8, 0x00, 0x2e, 0xd3, 0xf8, 0x00, 0x28, 0xc3, 0xf8, 0x00, 0x28, - 0xd3, 0xf8, 0x00, 0x28, 0x40, 0xf0, 0x97, 0x80, 0x00, 0x29, 0x40, 0xf0, - 0x91, 0x80, 0xc3, 0xf8, 0x00, 0x28, 0x4f, 0xf4, 0x84, 0x62, 0x1a, 0x61, - 0x5b, 0x4a, 0x01, 0x3a, 0x00, 0xf0, 0x8e, 0x80, 0x19, 0x69, 0x89, 0x06, - 0xf9, 0xd4, 0x10, 0x22, 0x1a, 0x61, 0x57, 0x4a, 0x01, 0x3a, 0x00, 0xf0, - 0x87, 0x80, 0x19, 0x69, 0xc9, 0x06, 0xf9, 0xd4, 0x00, 0x22, 0x03, 0xf5, - 0x10, 0x61, 0x4f, 0xf0, 0x90, 0x48, 0x4f, 0xf0, 0x00, 0x69, 0x96, 0x46, - 0x4f, 0xf6, 0x7f, 0x3a, 0x02, 0x61, 0x42, 0x61, 0xc2, 0x61, 0x97, 0x42, - 0x76, 0xd1, 0x00, 0x27, 0x03, 0xf5, 0x30, 0x61, 0x4f, 0xf0, 0x90, 0x48, - 0x4f, 0xf0, 0x00, 0x69, 0xbe, 0x46, 0x4f, 0xf6, 0x7f, 0x3a, 0xba, 0x42, - 0x40, 0xf0, 0x90, 0x80, 0x02, 0x69, 0x22, 0xf4, 0x80, 0x72, 0x02, 0x61, + 0xf5, 0xe7, 0x00, 0xbf, 0xf9, 0x43, 0x01, 0x08, 0x06, 0x4b, 0x10, 0xb5, + 0x03, 0x60, 0x04, 0x46, 0x90, 0xf8, 0x80, 0x30, 0x0b, 0xb1, 0xfe, 0xf7, + 0xfd, 0xf8, 0xe0, 0x6d, 0xff, 0xf7, 0xe0, 0xff, 0x20, 0x46, 0x10, 0xbd, + 0x60, 0xeb, 0x01, 0x08, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xec, 0xff, + 0x20, 0x46, 0x03, 0xf0, 0xb1, 0xfe, 0x20, 0x46, 0x10, 0xbd, 0x00, 0x00, + 0x07, 0x4b, 0x10, 0xb5, 0x04, 0x46, 0x03, 0x60, 0xf5, 0xf7, 0x48, 0xfc, + 0xd4, 0xf8, 0xbc, 0x00, 0xff, 0xf7, 0xc8, 0xff, 0x20, 0x1d, 0xf8, 0xf7, + 0x91, 0xf9, 0x20, 0x46, 0x10, 0xbd, 0x00, 0xbf, 0x0c, 0xeb, 0x01, 0x08, + 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xea, 0xff, 0x20, 0x46, 0x03, 0xf0, + 0x95, 0xfe, 0x20, 0x46, 0x10, 0xbd, 0x00, 0x00, 0x02, 0x46, 0x08, 0xb5, + 0xef, 0xf3, 0x05, 0x83, 0x13, 0xb1, 0x6f, 0xf0, 0x05, 0x00, 0x08, 0xbd, + 0xff, 0xf7, 0x9e, 0xfb, 0x00, 0x28, 0xf8, 0xd1, 0x10, 0x46, 0xdf, 0xf8, + 0x08, 0xc0, 0x00, 0xdf, 0xf5, 0xe7, 0x00, 0xbf, 0x91, 0x3f, 0x01, 0x08, + 0x02, 0x46, 0x08, 0xb5, 0xef, 0xf3, 0x05, 0x83, 0x0b, 0xb1, 0x00, 0x20, + 0x08, 0xbd, 0xff, 0xf7, 0x8b, 0xfb, 0x00, 0x28, 0xf9, 0xd1, 0x10, 0x46, + 0xdf, 0xf8, 0x04, 0xc0, 0x00, 0xdf, 0xf5, 0xe7, 0x39, 0x47, 0x01, 0x08, + 0x10, 0xb4, 0x02, 0xf0, 0x01, 0x04, 0x92, 0x07, 0x09, 0xd4, 0x0c, 0x30, + 0x1c, 0xb1, 0x5d, 0xf8, 0x04, 0x4b, 0xfc, 0xf7, 0xb8, 0xbb, 0x5d, 0xf8, + 0x04, 0x4b, 0xfc, 0xf7, 0xa3, 0xbb, 0xc0, 0x68, 0x01, 0xea, 0x00, 0x02, + 0x2c, 0xb1, 0x91, 0x42, 0x18, 0xbf, 0x00, 0x20, 0x5d, 0xf8, 0x04, 0x4b, + 0x70, 0x47, 0x00, 0x2a, 0x08, 0xbf, 0x00, 0x20, 0xf8, 0xe7, 0x00, 0x00, + 0xf8, 0xb5, 0x0d, 0x46, 0x17, 0x46, 0x1e, 0x46, 0x04, 0x46, 0xc0, 0xb1, + 0x03, 0x78, 0xf3, 0x2b, 0x15, 0xd1, 0x00, 0x29, 0x13, 0xdb, 0xff, 0xf7, + 0xd5, 0xff, 0x90, 0xb9, 0x96, 0xb1, 0x31, 0x46, 0x43, 0x20, 0xfc, 0xf7, + 0x79, 0xfa, 0x38, 0xb1, 0x08, 0x4b, 0x20, 0x46, 0x59, 0x69, 0xfc, 0xf7, + 0xb7, 0xfa, 0x4d, 0x62, 0x81, 0xf8, 0x23, 0x70, 0x6f, 0xf0, 0x01, 0x00, + 0x01, 0xe0, 0x6f, 0xf0, 0x03, 0x00, 0xf8, 0xbd, 0x6f, 0xf0, 0x02, 0x00, + 0xfb, 0xe7, 0x00, 0xbf, 0x1c, 0x01, 0x00, 0x24, 0xf8, 0xb5, 0x06, 0x46, + 0x70, 0xb3, 0x03, 0x78, 0xf3, 0x2b, 0x2b, 0xd1, 0x00, 0x29, 0x29, 0xdb, + 0x00, 0xf1, 0x0c, 0x03, 0x53, 0xe8, 0x00, 0x2f, 0x42, 0xea, 0x01, 0x04, + 0x43, 0xe8, 0x00, 0x40, 0x00, 0xb1, 0xf7, 0xe7, 0xb5, 0x68, 0x25, 0xb9, + 0x28, 0x46, 0xfc, 0xf7, 0xab, 0xfa, 0x20, 0x46, 0xf8, 0xbd, 0x69, 0x6a, + 0x30, 0x46, 0x95, 0xf8, 0x23, 0x20, 0xaf, 0x68, 0xff, 0xf7, 0x9a, 0xff, + 0x01, 0x46, 0x68, 0xb1, 0x95, 0xf8, 0x23, 0x30, 0x9b, 0x07, 0x56, 0xbf, + 0x6c, 0x6a, 0x04, 0x46, 0x20, 0xea, 0x04, 0x04, 0x28, 0x46, 0xfc, 0xf7, + 0x1f, 0xfa, 0x00, 0x22, 0xfc, 0xf7, 0xba, 0xfa, 0x3d, 0x46, 0xe0, 0xe7, + 0x6f, 0xf0, 0x03, 0x04, 0xe1, 0xe7, 0x70, 0xb5, 0x05, 0x46, 0x84, 0x68, + 0x04, 0xb9, 0x70, 0xbd, 0x61, 0x6a, 0x28, 0x46, 0x94, 0xf8, 0x23, 0x20, + 0xa6, 0x68, 0xff, 0xf7, 0x79, 0xff, 0x01, 0x46, 0x28, 0xb1, 0x20, 0x46, + 0xfc, 0xf7, 0x06, 0xfa, 0x00, 0x22, 0xfc, 0xf7, 0xa1, 0xfa, 0x34, 0x46, + 0xec, 0xe7, 0x70, 0xb5, 0x04, 0x46, 0x0d, 0x46, 0x16, 0x46, 0x00, 0x21, + 0x1c, 0x22, 0x03, 0xf0, 0x39, 0xfe, 0x20, 0x46, 0x32, 0x46, 0x29, 0x46, + 0xf7, 0xf7, 0x0e, 0xfb, 0x20, 0x46, 0x70, 0xbd, 0xc3, 0x68, 0x18, 0x47, + 0xff, 0xf7, 0xfc, 0xbf, 0x38, 0xb5, 0xd0, 0xf8, 0xc0, 0x42, 0x01, 0xf0, + 0x0f, 0x05, 0x63, 0x68, 0x9d, 0x42, 0x37, 0xd8, 0x11, 0xf0, 0x80, 0x0f, + 0x4f, 0xf0, 0x1c, 0x02, 0x34, 0xd0, 0x02, 0xfb, 0x05, 0x43, 0x02, 0xfb, + 0x05, 0x41, 0x01, 0x22, 0x3c, 0x33, 0x81, 0xf8, 0x3d, 0x20, 0x01, 0x22, + 0x1d, 0x70, 0x9a, 0x70, 0x94, 0xf8, 0xbc, 0x13, 0x91, 0x42, 0x23, 0xd0, + 0x84, 0xf8, 0xbc, 0x23, 0x1a, 0x78, 0x5b, 0x78, 0x20, 0x68, 0x01, 0x2b, + 0x4f, 0xf0, 0x20, 0x03, 0x0c, 0xbf, 0x00, 0xf5, 0x10, 0x61, 0x00, 0xf5, + 0x30, 0x61, 0x13, 0xfb, 0x02, 0x13, 0x19, 0x68, 0x00, 0x29, 0x04, 0xdb, + 0x1a, 0xb1, 0x1a, 0x68, 0x22, 0xf0, 0x80, 0x42, 0x1a, 0x60, 0x1a, 0x68, + 0x42, 0xf4, 0x00, 0x12, 0x1a, 0x60, 0x25, 0xb9, 0x04, 0xf5, 0x71, 0x72, + 0x21, 0x7c, 0xed, 0xf7, 0x55, 0xfc, 0x00, 0x23, 0x84, 0xf8, 0xbc, 0x33, + 0x00, 0x20, 0x38, 0xbd, 0x02, 0xfb, 0x01, 0x43, 0x02, 0xfb, 0x01, 0x41, + 0x00, 0x22, 0x03, 0xf5, 0xfe, 0x73, 0x81, 0xf8, 0xfd, 0x21, 0xc8, 0xe7, + 0x70, 0xb5, 0x04, 0x46, 0x16, 0x46, 0x0d, 0x46, 0x51, 0xbb, 0xd0, 0xf8, + 0x94, 0x32, 0x03, 0x2b, 0x1f, 0xd1, 0xd0, 0xe9, 0x58, 0x12, 0x91, 0x42, + 0x0e, 0xd9, 0x89, 0x1a, 0x8a, 0x42, 0xc0, 0xf8, 0x60, 0x11, 0xd0, 0xf8, + 0xc0, 0x02, 0x88, 0xbf, 0x8a, 0xb2, 0x31, 0x46, 0x98, 0xbf, 0x92, 0xb2, + 0xea, 0xf7, 0xfa, 0xfb, 0x28, 0x46, 0x70, 0xbd, 0xd0, 0xf8, 0xb4, 0x32, + 0x1b, 0x69, 0x23, 0xb1, 0x90, 0xf8, 0x9c, 0x22, 0x03, 0x2a, 0x00, 0xd1, + 0x98, 0x47, 0x20, 0x46, 0xfe, 0xf7, 0xbe, 0xfe, 0xf0, 0xe7, 0x05, 0x2b, + 0xee, 0xd1, 0xc4, 0xf8, 0x94, 0x12, 0xff, 0xf7, 0x85, 0xff, 0xe9, 0xe7, + 0xd0, 0xf8, 0xb4, 0x32, 0x9b, 0x69, 0x33, 0xb1, 0x90, 0xf8, 0x9c, 0x22, + 0x03, 0x2a, 0x02, 0xd1, 0x00, 0x25, 0x98, 0x47, 0xde, 0xe7, 0x02, 0x25, + 0xdc, 0xe7, 0x00, 0x00, 0x2d, 0xe9, 0x80, 0x48, 0x00, 0x20, 0x91, 0xb0, + 0xea, 0xf7, 0x3c, 0xfc, 0x00, 0x20, 0xef, 0xf7, 0x1b, 0xff, 0xed, 0xf7, + 0xdb, 0xfa, 0xfe, 0xf7, 0x6d, 0xfe, 0xae, 0x48, 0xf8, 0xf7, 0x3c, 0xfb, + 0xad, 0x4b, 0x18, 0x68, 0x03, 0x68, 0x9b, 0x68, 0x98, 0x47, 0xac, 0x4b, + 0x18, 0x68, 0x10, 0xb1, 0x03, 0x68, 0x9b, 0x68, 0x98, 0x47, 0xaa, 0x4e, + 0x06, 0x23, 0xaa, 0x4a, 0x30, 0x21, 0xaa, 0x48, 0xf4, 0xf7, 0x34, 0xfc, + 0xd6, 0xf8, 0xb4, 0x32, 0x13, 0xb1, 0x00, 0x23, 0xc6, 0xf8, 0xb4, 0x32, + 0xa6, 0x4b, 0x4f, 0xf0, 0x01, 0x0a, 0xa6, 0x4c, 0x06, 0x22, 0xc6, 0xf8, + 0xb0, 0x32, 0x00, 0x23, 0xa4, 0x48, 0x33, 0x70, 0x23, 0x63, 0x23, 0x61, + 0xe3, 0x60, 0xe3, 0x62, 0x86, 0xf8, 0x9c, 0xa2, 0xc4, 0xf8, 0x04, 0x64, + 0xc6, 0xf8, 0xc0, 0x42, 0xc4, 0xe9, 0x08, 0x33, 0xc4, 0xe9, 0x06, 0xa3, + 0x94, 0xf8, 0xbd, 0x33, 0xc4, 0xe9, 0x00, 0x02, 0x03, 0xf0, 0xff, 0x07, + 0x00, 0x2b, 0x40, 0xf0, 0xa3, 0x80, 0x99, 0x4d, 0x4f, 0xf0, 0x02, 0x09, + 0x84, 0xf8, 0xbc, 0x73, 0x4f, 0xf0, 0x0a, 0x08, 0xd5, 0xf8, 0xe0, 0x30, + 0x4f, 0xf0, 0x03, 0x0b, 0x0b, 0xa9, 0x94, 0x48, 0x43, 0xea, 0x0a, 0x03, + 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, 0xe0, 0x30, 0x03, 0xea, 0x0a, 0x03, + 0x0a, 0x93, 0x0a, 0x9b, 0xd5, 0xf8, 0xe0, 0x30, 0x43, 0xf0, 0x02, 0x03, + 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, 0xe0, 0x30, 0x03, 0xf0, 0x02, 0x03, + 0x09, 0x93, 0x09, 0x9b, 0xd5, 0xf8, 0xe0, 0x30, 0x43, 0xf0, 0x04, 0x03, + 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, 0xe0, 0x30, 0x03, 0xf0, 0x04, 0x03, + 0x08, 0x93, 0x08, 0x9b, 0xd5, 0xf8, 0xe0, 0x30, 0x43, 0xf0, 0x80, 0x03, + 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, 0xe0, 0x30, 0x03, 0xf0, 0x80, 0x03, + 0x07, 0x93, 0x07, 0x9b, 0xd5, 0xf8, 0xe0, 0x30, 0x43, 0xf4, 0x80, 0x73, + 0xc5, 0xf8, 0xe0, 0x30, 0xd5, 0xf8, 0xe0, 0x30, 0x0d, 0x97, 0x03, 0xf4, + 0x80, 0x73, 0x06, 0x93, 0x06, 0x9b, 0x20, 0x23, 0xcd, 0xe9, 0x0e, 0xb8, + 0xcd, 0xe9, 0x0b, 0x39, 0xef, 0xf7, 0xa6, 0xfd, 0x08, 0x23, 0x0b, 0xa9, + 0x71, 0x48, 0xcd, 0xf8, 0x3c, 0x80, 0xcd, 0xe9, 0x0b, 0x39, 0xcd, 0xe9, + 0x0d, 0x7b, 0xef, 0xf7, 0x9b, 0xfd, 0x43, 0xf6, 0x23, 0x43, 0x0b, 0xa9, + 0x6c, 0x48, 0x0d, 0x97, 0xcd, 0xf8, 0x3c, 0x80, 0xcd, 0xe9, 0x0b, 0x39, + 0xef, 0xf7, 0x90, 0xfd, 0x0b, 0xa9, 0x69, 0x48, 0x0d, 0x97, 0xcd, 0xf8, + 0x3c, 0x80, 0xcd, 0xe9, 0x0b, 0xa9, 0xef, 0xf7, 0x87, 0xfd, 0x10, 0x23, + 0x0b, 0xa9, 0x65, 0x48, 0x0d, 0x97, 0xcd, 0xf8, 0x3c, 0x80, 0xcd, 0xe9, + 0x0b, 0x39, 0xef, 0xf7, 0x7d, 0xfd, 0x4f, 0xf4, 0x00, 0x63, 0x0b, 0xa9, + 0x60, 0x48, 0x0d, 0x97, 0xcd, 0xf8, 0x3c, 0x80, 0xcd, 0xe9, 0x0b, 0x39, + 0xef, 0xf7, 0x72, 0xfd, 0xd5, 0xf8, 0xd8, 0x30, 0x51, 0x46, 0x4d, 0x20, + 0x43, 0xf0, 0x80, 0x63, 0xc5, 0xf8, 0xd8, 0x30, 0xd5, 0xf8, 0xd8, 0x30, + 0x03, 0xf0, 0x80, 0x63, 0x05, 0x93, 0x05, 0x9b, 0xd5, 0xf8, 0xd8, 0x30, + 0x43, 0xf0, 0x00, 0x73, 0xc5, 0xf8, 0xd8, 0x30, 0xd5, 0xf8, 0xd8, 0x30, + 0x03, 0xf0, 0x00, 0x73, 0x04, 0x93, 0x04, 0x9b, 0xea, 0xf7, 0x06, 0xfb, + 0x4f, 0x4b, 0x4f, 0xf4, 0x00, 0x52, 0x9a, 0x60, 0x03, 0x23, 0x27, 0x68, + 0x84, 0xf8, 0xbd, 0x33, 0x44, 0x4b, 0xdb, 0x6b, 0x13, 0xf4, 0x80, 0x73, + 0x08, 0xbf, 0x23, 0x61, 0xbb, 0x68, 0xd4, 0xf8, 0x10, 0x80, 0x23, 0xf0, + 0x01, 0x03, 0xbb, 0x60, 0xa3, 0x69, 0x01, 0x2b, 0x40, 0xf0, 0xd4, 0x82, + 0xbb, 0x6b, 0x62, 0x6b, 0x23, 0xf4, 0x80, 0x33, 0x01, 0x2a, 0xbb, 0x63, + 0xfb, 0x68, 0x23, 0xf4, 0x84, 0x03, 0x23, 0xf0, 0x40, 0x03, 0xfb, 0x60, + 0xfb, 0x68, 0x23, 0xf4, 0x40, 0x13, 0xfb, 0x60, 0x03, 0xd1, 0xfb, 0x68, + 0x43, 0xf4, 0x80, 0x13, 0xfb, 0x60, 0x38, 0x46, 0xed, 0xf7, 0xd8, 0xfa, + 0x05, 0x46, 0xb8, 0xf1, 0x01, 0x0f, 0x10, 0xd1, 0xfb, 0x6d, 0x9b, 0xb2, + 0xfb, 0x65, 0xfb, 0x6d, 0x43, 0xf0, 0x7b, 0x73, 0x43, 0xf4, 0x00, 0x33, + 0xfb, 0x65, 0xbb, 0x68, 0x43, 0xf0, 0x06, 0x03, 0xbb, 0x60, 0xbb, 0x68, + 0x43, 0xf0, 0x20, 0x03, 0xbb, 0x60, 0x00, 0x2d, 0x00, 0xf0, 0xb9, 0x82, + 0x02, 0x23, 0x84, 0xf8, 0xbd, 0x33, 0x23, 0x68, 0x4f, 0xf4, 0x00, 0x72, + 0xd6, 0xf8, 0xc0, 0x02, 0x5a, 0x62, 0x5a, 0x6a, 0x42, 0xf0, 0x00, 0x72, + 0x9a, 0x62, 0x26, 0x4b, 0xc6, 0xf8, 0xb4, 0x32, 0x25, 0x4b, 0xc6, 0xf8, + 0xbc, 0x32, 0xef, 0xf7, 0xcf, 0xfc, 0x4d, 0x20, 0xf1, 0xf7, 0xee, 0xf9, + 0x65, 0x20, 0xf1, 0xf7, 0xeb, 0xf9, 0x17, 0x4b, 0x5a, 0x69, 0x9b, 0x69, + 0x1a, 0x42, 0x00, 0xf0, 0x47, 0x82, 0x13, 0x4f, 0x3c, 0x68, 0xb9, 0x46, + 0x63, 0x69, 0x13, 0xf0, 0x01, 0x03, 0x03, 0x93, 0x40, 0xf0, 0x3e, 0x82, + 0x62, 0x69, 0xa3, 0x69, 0x1a, 0x42, 0x00, 0xf0, 0x39, 0x82, 0x63, 0x69, + 0xa2, 0x69, 0x13, 0x40, 0x9b, 0x07, 0x29, 0xd5, 0x63, 0x69, 0x03, 0xf0, + 0x02, 0x03, 0x63, 0x61, 0x24, 0xe0, 0x00, 0xbf, 0xb0, 0x3f, 0x02, 0x24, + 0xa4, 0x0b, 0x02, 0x24, 0x0c, 0x0b, 0x02, 0x24, 0x74, 0x28, 0x02, 0x24, + 0x05, 0xe4, 0x01, 0x08, 0x44, 0x28, 0x02, 0x24, 0xc0, 0x01, 0x00, 0x24, + 0xbc, 0x3f, 0x02, 0x24, 0x00, 0x00, 0x04, 0x40, 0x00, 0x44, 0x02, 0x58, + 0x00, 0x00, 0x02, 0x58, 0x00, 0x04, 0x02, 0x58, 0x00, 0x08, 0x02, 0x58, + 0x00, 0x1c, 0x02, 0x58, 0x00, 0x20, 0x02, 0x58, 0x00, 0xe1, 0x00, 0xe0, + 0xdc, 0x01, 0x00, 0x24, 0x18, 0x02, 0x00, 0x24, 0x63, 0x69, 0xa2, 0x69, + 0x13, 0x40, 0xde, 0x06, 0x29, 0xd5, 0xa3, 0x69, 0x23, 0xf0, 0x10, 0x03, + 0xa3, 0x61, 0x26, 0x6a, 0xc6, 0xf3, 0x43, 0x43, 0x06, 0xf0, 0x0f, 0x05, + 0x02, 0x2b, 0x40, 0xf0, 0x77, 0x83, 0x47, 0xf6, 0xf0, 0x73, 0x1e, 0x42, + 0x14, 0xd0, 0x1c, 0x23, 0xc6, 0xf3, 0x0a, 0x18, 0x20, 0x46, 0x03, 0xfb, + 0x05, 0x95, 0x42, 0x46, 0xd5, 0xf8, 0x08, 0x12, 0xed, 0xf7, 0x8e, 0xfa, + 0xd5, 0xf8, 0x08, 0x32, 0x43, 0x44, 0xc5, 0xf8, 0x08, 0x32, 0xd5, 0xf8, + 0x14, 0x32, 0x43, 0x44, 0xc5, 0xf8, 0x14, 0x32, 0x3a, 0x68, 0x93, 0x69, + 0x43, 0xf0, 0x10, 0x03, 0x93, 0x61, 0x3b, 0x68, 0x5a, 0x69, 0x99, 0x69, + 0x0a, 0x40, 0x15, 0x03, 0x00, 0xf1, 0x65, 0x83, 0xbe, 0x4e, 0x33, 0x68, + 0xb1, 0x46, 0x5a, 0x69, 0x99, 0x69, 0x0a, 0x40, 0x12, 0xf4, 0x80, 0x2f, + 0x10, 0xd0, 0xd3, 0xf8, 0x18, 0x28, 0x03, 0xf5, 0x00, 0x63, 0x37, 0x46, + 0x04, 0xf5, 0x10, 0x6b, 0xdb, 0x69, 0x13, 0x40, 0x9b, 0xb2, 0x02, 0x93, + 0x00, 0x23, 0x01, 0x93, 0x02, 0x9b, 0x00, 0x2b, 0x40, 0xf0, 0x88, 0x86, + 0x30, 0x68, 0x42, 0x69, 0x83, 0x69, 0x1a, 0x42, 0x10, 0xd5, 0xd4, 0xf8, + 0x04, 0x38, 0x23, 0xf0, 0x01, 0x03, 0xc4, 0xf8, 0x04, 0x38, 0x96, 0xf8, + 0xf4, 0x33, 0x01, 0x2b, 0x04, 0xbf, 0x00, 0x23, 0x86, 0xf8, 0xf4, 0x33, + 0x43, 0x69, 0x03, 0xf0, 0x00, 0x43, 0x43, 0x61, 0x43, 0x69, 0x82, 0x69, + 0x13, 0x40, 0x1a, 0x05, 0x10, 0xd5, 0xd4, 0xf8, 0x08, 0x38, 0xdb, 0x07, + 0x08, 0xd5, 0xd6, 0xf8, 0x04, 0x34, 0x93, 0xf8, 0x9c, 0x22, 0x83, 0xf8, + 0x9d, 0x22, 0x04, 0x22, 0x83, 0xf8, 0x9c, 0x22, 0x43, 0x69, 0x03, 0xf4, + 0x00, 0x63, 0x43, 0x61, 0x43, 0x69, 0x82, 0x69, 0x13, 0x40, 0x1f, 0x01, + 0x11, 0xd5, 0x43, 0x69, 0x03, 0xf0, 0x00, 0x63, 0x43, 0x61, 0x97, 0x4b, + 0x93, 0xf8, 0xf4, 0x23, 0x00, 0x2a, 0x40, 0xf0, 0x68, 0x87, 0x01, 0x22, + 0x83, 0xf8, 0xf4, 0x23, 0x42, 0x6d, 0xc2, 0xf3, 0x83, 0x02, 0xc3, 0xf8, + 0xf8, 0x23, 0x43, 0x69, 0x82, 0x69, 0x13, 0x40, 0xdd, 0x04, 0x3e, 0xd5, + 0xd4, 0xf8, 0x04, 0x38, 0x04, 0xf5, 0x00, 0x62, 0x23, 0xf0, 0x01, 0x03, + 0x53, 0x60, 0x4f, 0xf4, 0x84, 0x63, 0x03, 0x61, 0x89, 0x4b, 0x01, 0x3b, + 0x02, 0xd0, 0x01, 0x69, 0x89, 0x06, 0xfa, 0xd4, 0x04, 0xf5, 0x10, 0x63, + 0xdf, 0xf8, 0x10, 0xc2, 0x4f, 0xf6, 0x7f, 0x37, 0xdc, 0xf8, 0x04, 0x10, + 0x0d, 0x46, 0x03, 0x99, 0xa9, 0x42, 0xc0, 0xf0, 0x49, 0x87, 0xd3, 0x69, + 0x43, 0xf0, 0x01, 0x13, 0xd3, 0x61, 0xdc, 0xf8, 0x30, 0x30, 0x00, 0x2b, + 0x00, 0xf0, 0x61, 0x87, 0xd2, 0xf8, 0x84, 0x30, 0x43, 0xf0, 0x0b, 0x03, + 0xc2, 0xf8, 0x84, 0x30, 0x53, 0x6c, 0x43, 0xf0, 0x0b, 0x03, 0x53, 0x64, + 0xd4, 0xf8, 0x00, 0x38, 0x76, 0x4a, 0x23, 0xf4, 0xfe, 0x63, 0x31, 0x7c, + 0xc4, 0xf8, 0x00, 0x38, 0xed, 0xf7, 0xa8, 0xf9, 0x32, 0x68, 0x53, 0x69, + 0x03, 0xf4, 0x80, 0x53, 0x53, 0x61, 0x34, 0x68, 0x63, 0x69, 0xa2, 0x69, + 0x13, 0x40, 0x9f, 0x04, 0x40, 0xf1, 0xbe, 0x80, 0xd4, 0xf8, 0x00, 0x39, + 0x23, 0xf4, 0xff, 0x63, 0x23, 0xf0, 0x07, 0x03, 0xc4, 0xf8, 0x00, 0x39, + 0xd4, 0xf8, 0x04, 0x28, 0x42, 0xf4, 0x80, 0x72, 0xc4, 0xf8, 0x04, 0x28, + 0xd4, 0xf8, 0x08, 0x28, 0x12, 0xf0, 0x06, 0x03, 0x04, 0xd0, 0x12, 0xf0, + 0x02, 0x0f, 0x14, 0xbf, 0x02, 0x23, 0x0f, 0x23, 0xf3, 0x60, 0xed, 0xf7, + 0x81, 0xfe, 0xf7, 0x68, 0xfb, 0xb2, 0x02, 0x2b, 0x40, 0xf0, 0x3f, 0x87, + 0x5d, 0x4b, 0x5e, 0x4a, 0x03, 0x44, 0x93, 0x42, 0x40, 0xf2, 0x27, 0x87, + 0x5c, 0x4b, 0x5d, 0x4a, 0x03, 0x44, 0x93, 0x42, 0x40, 0xf2, 0x24, 0x87, + 0xa0, 0xf5, 0x74, 0x03, 0x5a, 0x4a, 0xa3, 0xf5, 0x10, 0x53, 0x93, 0x42, + 0x40, 0xf2, 0x1f, 0x87, 0xa0, 0xf1, 0x83, 0x73, 0x57, 0x4a, 0xa3, 0xf5, + 0xe7, 0x43, 0x93, 0x42, 0xc0, 0xf0, 0x1a, 0x87, 0x55, 0x4b, 0x56, 0x4a, + 0x03, 0x44, 0x93, 0x42, 0x40, 0xf2, 0x17, 0x87, 0x54, 0x4b, 0x55, 0x4a, + 0x03, 0x44, 0x93, 0x42, 0xc0, 0xf0, 0x14, 0x87, 0x53, 0x4b, 0x54, 0x4a, + 0x03, 0x44, 0x93, 0x42, 0xc0, 0xf0, 0x11, 0x87, 0xa0, 0xf1, 0xb7, 0x73, + 0x51, 0x4a, 0xa3, 0xf5, 0x58, 0x53, 0x93, 0x42, 0xc0, 0xf0, 0x0c, 0x87, + 0x4f, 0x4b, 0x50, 0x4a, 0x03, 0x44, 0x93, 0x42, 0x34, 0xbf, 0x07, 0x23, + 0x06, 0x23, 0xe2, 0x68, 0x00, 0x3f, 0x4f, 0xf0, 0x00, 0x08, 0x22, 0xf4, + 0x70, 0x52, 0x18, 0xbf, 0x01, 0x27, 0xe2, 0x60, 0xe2, 0x68, 0x42, 0xea, + 0x83, 0x23, 0xe3, 0x60, 0x40, 0x23, 0xd6, 0xf8, 0x04, 0x44, 0xd4, 0xf8, + 0xc0, 0x52, 0xc5, 0xf8, 0x04, 0x32, 0x05, 0xf5, 0xfe, 0x71, 0x95, 0xf8, + 0xbc, 0x33, 0xa5, 0xf8, 0xfc, 0x81, 0x01, 0x2b, 0x85, 0xf8, 0xff, 0x81, + 0x07, 0xd0, 0x01, 0x23, 0x28, 0x68, 0x85, 0xf8, 0xbc, 0x33, 0xed, 0xf7, + 0x72, 0xf9, 0x85, 0xf8, 0xbc, 0x83, 0xd4, 0xf8, 0xc0, 0x52, 0x40, 0x22, + 0x01, 0x23, 0x4f, 0xf0, 0x00, 0x08, 0xc4, 0xf8, 0x64, 0x21, 0x4f, 0xf4, + 0x80, 0x70, 0xc4, 0xf8, 0x58, 0x31, 0x05, 0xf1, 0x3c, 0x01, 0x6a, 0x64, + 0x95, 0xf8, 0xbc, 0x23, 0xa8, 0x87, 0x9a, 0x42, 0x85, 0xf8, 0x3f, 0x80, + 0xa5, 0xf8, 0x42, 0x80, 0x06, 0xd0, 0x28, 0x68, 0x85, 0xf8, 0xbc, 0x33, + 0xed, 0xf7, 0x53, 0xf9, 0x85, 0xf8, 0xbc, 0x83, 0x01, 0x23, 0x00, 0x21, + 0x40, 0x22, 0xa3, 0x61, 0x84, 0xf8, 0x9c, 0x32, 0xd4, 0xf8, 0xb8, 0x32, + 0x62, 0x62, 0xc4, 0xf8, 0x94, 0x12, 0x61, 0x60, 0xc4, 0xf8, 0xa4, 0x12, + 0x23, 0xb1, 0xd4, 0xf8, 0xb4, 0x32, 0x20, 0x46, 0x5b, 0x68, 0x98, 0x47, + 0xd6, 0xf8, 0x04, 0x34, 0x32, 0x68, 0x1f, 0x74, 0x53, 0x69, 0x03, 0xf4, + 0x00, 0x53, 0x53, 0x61, 0x32, 0x68, 0x53, 0x69, 0x92, 0x69, 0x13, 0x40, + 0x1d, 0x07, 0x35, 0xd5, 0xd6, 0xf8, 0x04, 0x04, 0x90, 0xf8, 0x9c, 0x32, + 0x03, 0x2b, 0x04, 0xd1, 0xd0, 0xf8, 0xb4, 0x32, 0xdb, 0x69, 0x03, 0xb1, + 0x98, 0x47, 0x32, 0x68, 0x53, 0x69, 0x03, 0xf0, 0x08, 0x03, 0x53, 0x61, + 0x24, 0xe0, 0x00, 0xbf, 0xbc, 0x3f, 0x02, 0x24, 0x41, 0x0d, 0x03, 0x00, + 0x80, 0x43, 0x02, 0x24, 0x40, 0x53, 0x27, 0xff, 0xff, 0x34, 0x0c, 0x00, + 0x40, 0x1e, 0x1b, 0xff, 0x3f, 0x42, 0x0f, 0x00, 0x7f, 0x4f, 0x12, 0x00, + 0x20, 0xd6, 0x13, 0x00, 0x60, 0xb6, 0xe5, 0xfe, 0x5f, 0xe3, 0x16, 0x00, + 0x00, 0xd3, 0xce, 0xfe, 0x40, 0x77, 0x1b, 0x00, 0xc0, 0x5b, 0xb3, 0xfe, + 0xc0, 0x91, 0x21, 0x00, 0x20, 0x75, 0x38, 0x00, 0xe0, 0x54, 0x59, 0xfe, + 0xe0, 0x9c, 0x41, 0x00, 0x33, 0x68, 0x5a, 0x69, 0x99, 0x69, 0x0a, 0x40, + 0xd4, 0x02, 0x03, 0xd5, 0x5a, 0x69, 0x02, 0xf4, 0x80, 0x12, 0x5a, 0x61, + 0x5a, 0x69, 0x99, 0x69, 0x0a, 0x40, 0x90, 0x02, 0x03, 0xd5, 0x5a, 0x69, + 0x02, 0xf4, 0x00, 0x12, 0x5a, 0x61, 0x5a, 0x69, 0x99, 0x69, 0x0a, 0x40, + 0x51, 0x00, 0x03, 0xd5, 0x5a, 0x69, 0x02, 0xf0, 0x80, 0x42, 0x5a, 0x61, + 0x5a, 0x69, 0x99, 0x69, 0x0a, 0x40, 0x52, 0x07, 0x10, 0xd5, 0x5c, 0x68, + 0x63, 0x07, 0x09, 0xd5, 0xd6, 0xf8, 0x04, 0x04, 0x01, 0x23, 0x80, 0xf8, + 0x9c, 0x32, 0xd0, 0xf8, 0xb4, 0x32, 0x01, 0x79, 0x5b, 0x68, 0x98, 0x47, + 0x33, 0x68, 0x5a, 0x68, 0x14, 0x43, 0x5c, 0x60, 0xb7, 0x4b, 0x1a, 0x68, + 0x51, 0x1c, 0x19, 0x60, 0x28, 0x21, 0x92, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, + 0x13, 0x23, 0x00, 0x2b, 0x7f, 0xf4, 0xa7, 0xad, 0xb2, 0x4d, 0xb3, 0x4c, + 0x2b, 0x78, 0x6b, 0xb9, 0xb2, 0x4a, 0x23, 0x78, 0x12, 0x78, 0xb2, 0x48, + 0x13, 0x44, 0x23, 0x70, 0xf7, 0xf7, 0xcb, 0xfa, 0xb0, 0xfa, 0x80, 0xf1, + 0xae, 0x48, 0x49, 0x09, 0xf7, 0xf7, 0xce, 0xfa, 0x22, 0x78, 0x2b, 0x78, + 0xa2, 0xf1, 0x0a, 0x01, 0x01, 0x33, 0xc9, 0xb2, 0xdb, 0xb2, 0xf0, 0x29, + 0x2b, 0x70, 0x05, 0xd9, 0xa6, 0x48, 0x01, 0x78, 0x4d, 0x42, 0x52, 0x1a, + 0x05, 0x70, 0x22, 0x70, 0x22, 0x78, 0x9a, 0x42, 0x7f, 0xf4, 0x81, 0xad, + 0xa2, 0x48, 0xf7, 0xf7, 0xae, 0xfa, 0xb0, 0xfa, 0x80, 0xf1, 0xa0, 0x48, + 0x49, 0x09, 0xf7, 0xf7, 0xb1, 0xfa, 0x76, 0xe5, 0xfb, 0x68, 0x38, 0x46, + 0xd4, 0xf8, 0x28, 0x90, 0x43, 0xf0, 0x40, 0x03, 0xfb, 0x60, 0xed, 0xf7, + 0x13, 0xf8, 0xbb, 0x6b, 0x05, 0x46, 0xb9, 0xf1, 0x00, 0x0f, 0x03, 0xd1, + 0x43, 0xf4, 0x80, 0x33, 0xbb, 0x63, 0x32, 0xe5, 0x23, 0xf4, 0x80, 0x33, + 0xfa, 0xe7, 0x23, 0x68, 0x32, 0x20, 0xda, 0x68, 0x22, 0xf0, 0xc0, 0x42, + 0xda, 0x60, 0xda, 0x68, 0x42, 0xf0, 0x80, 0x42, 0xda, 0x60, 0xf0, 0xf7, + 0x55, 0xff, 0x67, 0x68, 0x2b, 0x46, 0x4f, 0xf0, 0x1c, 0x0c, 0x4f, 0xf0, + 0x01, 0x0e, 0x28, 0x46, 0xd9, 0xb2, 0x5a, 0x1c, 0x8f, 0x42, 0x00, 0xf2, + 0xb2, 0x80, 0x00, 0x23, 0x4f, 0xf0, 0x1c, 0x0c, 0x19, 0x46, 0xd8, 0xb2, + 0x01, 0x33, 0x87, 0x42, 0x00, 0xf2, 0xb8, 0x80, 0x23, 0x68, 0xd4, 0xf8, + 0x2c, 0xc0, 0xd4, 0xe9, 0x03, 0x12, 0x02, 0x92, 0xd4, 0xe9, 0x06, 0xe2, + 0x01, 0x92, 0x00, 0x22, 0x90, 0x46, 0x02, 0xf1, 0x40, 0x00, 0x01, 0x32, + 0x03, 0xeb, 0x80, 0x00, 0x0f, 0x2a, 0xc0, 0xf8, 0x04, 0x80, 0xf6, 0xd1, + 0x03, 0xf5, 0x00, 0x60, 0xbc, 0xf1, 0x00, 0x0f, 0x40, 0xf0, 0xab, 0x80, + 0x42, 0x68, 0x42, 0xf0, 0x02, 0x02, 0x42, 0x60, 0x9a, 0x6b, 0x22, 0xf4, + 0x00, 0x12, 0x9a, 0x63, 0x1a, 0x68, 0x42, 0xf0, 0x40, 0x02, 0x1a, 0x60, + 0x1a, 0x68, 0x42, 0xf0, 0x80, 0x02, 0x1a, 0x60, 0x00, 0x22, 0xbe, 0xf1, + 0x01, 0x0f, 0xc3, 0xf8, 0x00, 0x2e, 0xd3, 0xf8, 0x00, 0x28, 0xc3, 0xf8, + 0x00, 0x28, 0xd3, 0xf8, 0x00, 0x28, 0x40, 0xf0, 0x96, 0x80, 0x00, 0x29, + 0x40, 0xf0, 0x90, 0x80, 0xc3, 0xf8, 0x00, 0x28, 0x4f, 0xf4, 0x84, 0x62, + 0x1a, 0x61, 0x64, 0x4a, 0x01, 0x3a, 0x00, 0xf0, 0x8d, 0x80, 0x19, 0x69, + 0x89, 0x06, 0xf9, 0xd4, 0x10, 0x22, 0x1a, 0x61, 0x5f, 0x4a, 0x01, 0x3a, + 0x00, 0xf0, 0x86, 0x80, 0x19, 0x69, 0xc9, 0x06, 0xf9, 0xd4, 0x00, 0x22, + 0x03, 0xf5, 0x10, 0x61, 0x4f, 0xf0, 0x90, 0x48, 0x4f, 0xf0, 0x00, 0x69, + 0x96, 0x46, 0x4f, 0xf6, 0x7f, 0x3a, 0x02, 0x61, 0x42, 0x61, 0xc2, 0x61, + 0x97, 0x42, 0x75, 0xd1, 0x00, 0x27, 0x03, 0xf5, 0x30, 0x61, 0x4f, 0xf0, + 0x90, 0x48, 0x4f, 0xf0, 0x00, 0x69, 0xbe, 0x46, 0x4f, 0xf6, 0x7f, 0x3a, + 0xba, 0x42, 0x7e, 0xd1, 0x02, 0x69, 0x22, 0xf4, 0x80, 0x72, 0x02, 0x61, 0x00, 0x22, 0x9a, 0x61, 0x6f, 0xf0, 0x80, 0x42, 0x5a, 0x61, 0x02, 0x9a, 0x1a, 0xb9, 0x9a, 0x69, 0x42, 0xf0, 0x10, 0x02, 0x9a, 0x61, 0x99, 0x69, - 0x3e, 0x4a, 0x0a, 0x43, 0x9a, 0x61, 0x01, 0x9a, 0x1a, 0xb1, 0x9a, 0x69, + 0x47, 0x4a, 0x0a, 0x43, 0x9a, 0x61, 0x01, 0x9a, 0x1a, 0xb1, 0x9a, 0x69, 0x42, 0xf0, 0x08, 0x02, 0x9a, 0x61, 0xbc, 0xf1, 0x01, 0x0f, 0x05, 0xd1, 0x9a, 0x69, 0x42, 0xf0, 0x80, 0x42, 0x42, 0xf0, 0x04, 0x02, 0x9a, 0x61, - 0x00, 0x2d, 0x7f, 0xf4, 0x7c, 0xac, 0x01, 0x22, 0x84, 0xf8, 0x38, 0x50, + 0x00, 0x2d, 0x7f, 0xf4, 0x97, 0xac, 0x01, 0x22, 0x84, 0xf8, 0x38, 0x50, 0x84, 0xf8, 0xbd, 0x23, 0x62, 0x6a, 0x01, 0x2a, 0x0d, 0xd1, 0x84, 0xf8, 0xf4, 0x53, 0xc4, 0xf8, 0xfc, 0x23, 0x9a, 0x69, 0x42, 0xf0, 0x00, 0x62, 0x9a, 0x61, 0x5a, 0x6d, 0x42, 0xf0, 0x80, 0x52, 0x42, 0xf0, 0x03, 0x02, - 0x5a, 0x65, 0x18, 0x46, 0xec, 0xf7, 0x9e, 0xf9, 0x64, 0xe4, 0x0c, 0xfb, + 0x5a, 0x65, 0x18, 0x46, 0xec, 0xf7, 0x7c, 0xff, 0x7f, 0xe4, 0x0c, 0xfb, 0x01, 0x43, 0x83, 0xf8, 0x3d, 0xe0, 0x83, 0xf8, 0x3c, 0x10, 0xa3, 0xf8, 0x42, 0x10, 0x83, 0xf8, 0x3f, 0x00, 0x18, 0x65, 0xc3, 0xe9, 0x11, 0x00, - 0x13, 0x46, 0x38, 0xe7, 0x0c, 0xfb, 0x00, 0x42, 0x82, 0xf8, 0xfd, 0x11, + 0x13, 0x46, 0x39, 0xe7, 0x0c, 0xfb, 0x00, 0x42, 0x82, 0xf8, 0xfd, 0x11, 0x82, 0xf8, 0xfc, 0x01, 0x82, 0xf8, 0xff, 0x11, 0xc2, 0xf8, 0x10, 0x12, - 0xc2, 0xe9, 0x81, 0x11, 0x34, 0xe7, 0x9a, 0x6b, 0x42, 0xf4, 0x00, 0x12, - 0x9a, 0x63, 0x5e, 0xe7, 0x42, 0xf0, 0x01, 0x02, 0x6b, 0xe7, 0x42, 0xf0, - 0x03, 0x02, 0x68, 0xe7, 0x01, 0x25, 0x72, 0xe7, 0x01, 0x25, 0x79, 0xe7, + 0xc2, 0xe9, 0x81, 0x11, 0x35, 0xe7, 0x9a, 0x6b, 0x42, 0xf4, 0x00, 0x12, + 0x9a, 0x63, 0x5f, 0xe7, 0x42, 0xf0, 0x01, 0x02, 0x6c, 0xe7, 0x42, 0xf0, + 0x03, 0x02, 0x69, 0xe7, 0x01, 0x25, 0x73, 0xe7, 0x01, 0x25, 0x7a, 0xe7, 0xd1, 0xf8, 0x00, 0xb0, 0xbb, 0xf1, 0x00, 0x0f, 0x0c, 0xda, 0x42, 0xb9, 0xc1, 0xf8, 0x00, 0x90, 0xc1, 0xf8, 0x10, 0xe0, 0x01, 0x32, 0xc1, 0xf8, - 0x08, 0xa0, 0x20, 0x31, 0x77, 0xe7, 0xc1, 0xf8, 0x00, 0x80, 0xf5, 0xe7, - 0xc1, 0xf8, 0x00, 0xe0, 0xf2, 0xe7, 0x00, 0xbf, 0x20, 0x9c, 0x00, 0x24, - 0x8a, 0x02, 0x00, 0x24, 0x60, 0xa0, 0x00, 0x24, 0x0f, 0x03, 0x00, 0x24, - 0x0e, 0x03, 0x00, 0x24, 0x18, 0x0e, 0x00, 0x24, 0x41, 0x0d, 0x03, 0x00, - 0x00, 0x38, 0x3c, 0x80, 0xd1, 0xf8, 0x00, 0xb0, 0xbb, 0xf1, 0x00, 0x0f, - 0x0c, 0xda, 0x47, 0xb9, 0xc1, 0xf8, 0x00, 0x90, 0xc1, 0xf8, 0x10, 0xe0, - 0x01, 0x37, 0xc1, 0xf8, 0x08, 0xa0, 0x20, 0x31, 0x5d, 0xe7, 0xc1, 0xf8, - 0x00, 0x80, 0xf5, 0xe7, 0xc1, 0xf8, 0x00, 0xe0, 0xf2, 0xe7, 0x06, 0x2b, - 0x7f, 0xf4, 0x80, 0xac, 0x08, 0x22, 0xb3, 0x49, 0x20, 0x46, 0xc6, 0xf3, - 0x0a, 0x16, 0xec, 0xf7, 0x3b, 0xf9, 0x1c, 0x23, 0x03, 0xfb, 0x05, 0x95, - 0xd5, 0xf8, 0x14, 0x32, 0x1e, 0x44, 0xc5, 0xf8, 0x14, 0x62, 0x6f, 0xe4, - 0xd3, 0xf8, 0x18, 0x78, 0x03, 0xf5, 0x00, 0x63, 0x04, 0xf5, 0x30, 0x69, - 0xdf, 0xf8, 0xa4, 0xb2, 0xdb, 0x69, 0x4f, 0xf0, 0x00, 0x08, 0x1f, 0x40, - 0x3f, 0x0c, 0x00, 0x2f, 0x3f, 0xf4, 0x6c, 0xac, 0xf8, 0x07, 0x40, 0xf1, - 0x7b, 0x81, 0xa3, 0x4d, 0x5f, 0xfa, 0x88, 0xf6, 0x28, 0x68, 0x00, 0xf5, - 0x30, 0x6c, 0x0c, 0xeb, 0x46, 0x13, 0x9a, 0x68, 0xd0, 0xf8, 0x14, 0x38, - 0x02, 0xea, 0x03, 0x0a, 0x2b, 0x46, 0x1a, 0xf0, 0x01, 0x0f, 0x1b, 0xd0, - 0x29, 0x69, 0x01, 0x22, 0x0c, 0xeb, 0x48, 0x1c, 0x01, 0x29, 0xc9, 0xf8, - 0x08, 0x20, 0xd0, 0xf8, 0x40, 0xe0, 0xdc, 0xf8, 0x08, 0x20, 0x40, 0xf0, - 0x9e, 0x80, 0x11, 0x07, 0x07, 0xd5, 0x94, 0x4b, 0x9e, 0x45, 0x09, 0xd9, - 0x10, 0x04, 0x07, 0xd5, 0x4f, 0xf4, 0x00, 0x43, 0x02, 0xe0, 0x91, 0x06, - 0x70, 0xd5, 0x20, 0x23, 0xcc, 0xf8, 0x08, 0x30, 0x1a, 0xf0, 0x08, 0x0f, - 0x00, 0xf0, 0x37, 0x81, 0x2b, 0x68, 0x08, 0x22, 0xc9, 0xf8, 0x08, 0x20, - 0x1a, 0x6c, 0x03, 0xf5, 0x30, 0x63, 0x01, 0x92, 0x03, 0xeb, 0x48, 0x13, - 0x01, 0x99, 0x9a, 0x68, 0x08, 0x46, 0x85, 0x49, 0x88, 0x42, 0x04, 0xd9, - 0x11, 0x04, 0x02, 0xd5, 0x4f, 0xf4, 0x00, 0x42, 0x9a, 0x60, 0x80, 0x4a, - 0xd2, 0xf8, 0x04, 0x54, 0x92, 0xf8, 0xc4, 0x03, 0x05, 0xf5, 0x2a, 0x71, - 0x85, 0xf8, 0xa8, 0x02, 0x92, 0xf8, 0xc5, 0xc3, 0x85, 0xf8, 0xa9, 0xc2, - 0x92, 0xf8, 0xc7, 0x33, 0x92, 0xf8, 0xc6, 0x63, 0x06, 0xeb, 0x03, 0x26, - 0xb6, 0xb2, 0xa5, 0xf8, 0xaa, 0x62, 0x92, 0xf8, 0xc9, 0xe3, 0x92, 0xf8, - 0xc8, 0x33, 0x03, 0xeb, 0x0e, 0x23, 0x9b, 0xb2, 0xa5, 0xf8, 0xac, 0x32, - 0x92, 0xf8, 0xcb, 0xe3, 0x92, 0xf8, 0xca, 0x23, 0x02, 0xeb, 0x0e, 0x22, - 0x4f, 0xf0, 0x01, 0x0e, 0x92, 0xb2, 0xc5, 0xe9, 0xa5, 0xe2, 0x00, 0xf0, - 0x1f, 0x0e, 0xa5, 0xf8, 0xae, 0x22, 0xbe, 0xf1, 0x01, 0x0f, 0x00, 0xf0, - 0xaf, 0x81, 0xbe, 0xf1, 0x02, 0x0f, 0x00, 0xf0, 0xca, 0x81, 0xbe, 0xf1, - 0x00, 0x0f, 0x40, 0xf0, 0xa8, 0x82, 0x00, 0xf0, 0x60, 0x00, 0x20, 0x28, - 0x00, 0xf0, 0xf7, 0x81, 0x40, 0x28, 0x00, 0xf0, 0xf4, 0x81, 0x00, 0x28, - 0x40, 0xf0, 0x87, 0x80, 0xbc, 0xf1, 0x09, 0x0f, 0x00, 0xf2, 0x83, 0x80, - 0xdf, 0xe8, 0x1c, 0xf0, 0x6f, 0x01, 0x89, 0x01, 0x81, 0x00, 0x83, 0x01, - 0x81, 0x00, 0xf2, 0x00, 0x49, 0x00, 0x81, 0x00, 0x58, 0x01, 0x1e, 0x01, - 0x12, 0xf0, 0x28, 0x0f, 0x8e, 0xd1, 0x55, 0x49, 0x8e, 0x45, 0x01, 0xd9, - 0x12, 0x04, 0x81, 0xd4, 0xdc, 0xf8, 0x10, 0x20, 0xdb, 0xf8, 0x04, 0x12, - 0xc2, 0xf3, 0x12, 0x02, 0x8a, 0x1a, 0xcb, 0xf8, 0x14, 0x22, 0xdb, 0xf8, - 0x08, 0x22, 0x11, 0x44, 0xd5, 0xf8, 0x10, 0x22, 0x58, 0xea, 0x02, 0x02, - 0xcb, 0xf8, 0x08, 0x12, 0x10, 0xd1, 0x47, 0x4a, 0x01, 0x21, 0xec, 0xf7, - 0x31, 0xf8, 0x46, 0x4b, 0x0a, 0xe0, 0x47, 0x49, 0x8e, 0x45, 0x12, 0xd1, - 0x11, 0x04, 0x3f, 0xf5, 0x63, 0xaf, 0x90, 0x06, 0x02, 0xd5, 0x20, 0x22, - 0xcc, 0xf8, 0x08, 0x20, 0x1c, 0x22, 0x31, 0x46, 0xd5, 0xf8, 0x04, 0x04, - 0x02, 0xfb, 0x06, 0x33, 0xd3, 0xf8, 0x08, 0x22, 0xff, 0xf7, 0x9b, 0xf9, - 0x5a, 0xe7, 0xd5, 0xf8, 0x10, 0x12, 0x58, 0xea, 0x01, 0x01, 0xef, 0xd1, - 0x05, 0xf5, 0x71, 0x72, 0xdd, 0xe7, 0x00, 0x23, 0xad, 0xf8, 0x2c, 0x30, - 0x33, 0x0a, 0x01, 0x3b, 0x06, 0x2b, 0x30, 0xd8, 0xdf, 0xe8, 0x03, 0xf0, - 0x04, 0x16, 0x22, 0x2f, 0x2f, 0x4e, 0x57, 0x00, 0xd5, 0xf8, 0xb0, 0x32, - 0x1b, 0x68, 0x0b, 0xa9, 0x28, 0x7c, 0x98, 0x47, 0xbd, 0xf8, 0x2c, 0x20, - 0x00, 0x2a, 0x64, 0xd0, 0xb5, 0xf8, 0xae, 0x32, 0x00, 0x2b, 0x57, 0xd1, - 0x28, 0x46, 0xfc, 0xf7, 0xbd, 0xfa, 0x60, 0xe0, 0x2a, 0x7c, 0xd5, 0xf8, - 0xb4, 0x32, 0x2a, 0xb9, 0x9b, 0x6a, 0x0b, 0xa8, 0x98, 0x47, 0x02, 0x23, - 0x43, 0x70, 0xe9, 0xe7, 0xdb, 0x6a, 0xf8, 0xe7, 0xf1, 0xb2, 0x05, 0x29, - 0x1f, 0xd8, 0xdf, 0xe8, 0x01, 0xf0, 0x03, 0x0a, 0x0e, 0x12, 0x16, 0x1a, - 0xd5, 0xf8, 0xb0, 0x32, 0x5b, 0x68, 0x00, 0x2b, 0xd7, 0xd1, 0x28, 0x46, - 0xbd, 0xe0, 0xd5, 0xf8, 0xb0, 0x32, 0x9b, 0x68, 0xf7, 0xe7, 0xd5, 0xf8, - 0xb0, 0x32, 0xdb, 0x68, 0xf3, 0xe7, 0xd5, 0xf8, 0xb0, 0x32, 0x1b, 0x69, - 0xef, 0xe7, 0xd5, 0xf8, 0xb0, 0x32, 0x5b, 0x69, 0xeb, 0xe7, 0xd5, 0xf8, - 0xb0, 0x32, 0x9b, 0x69, 0xe7, 0xe7, 0xd5, 0xf8, 0xb4, 0x32, 0x9b, 0x6b, - 0x00, 0x2b, 0xe4, 0xd0, 0x0b, 0xaa, 0x28, 0x46, 0x98, 0x47, 0xbb, 0xe7, - 0x2b, 0x7c, 0x00, 0x2b, 0xdd, 0xd1, 0xd5, 0xf8, 0xb4, 0x32, 0x0b, 0xa8, - 0x5b, 0x6b, 0x98, 0x47, 0xb2, 0xe7, 0x2b, 0x7c, 0x00, 0x2b, 0xd4, 0xd1, - 0xd5, 0xf8, 0xb4, 0x32, 0x0b, 0xa8, 0x1b, 0x6b, 0x98, 0x47, 0x07, 0x23, - 0xbc, 0xe7, 0x00, 0xbf, 0x1c, 0xa0, 0x00, 0x24, 0x58, 0x9c, 0x00, 0x24, - 0x0a, 0x30, 0x54, 0x4f, 0x0a, 0x31, 0x54, 0x4f, 0x9a, 0x42, 0x01, 0x46, - 0x28, 0x46, 0x28, 0xbf, 0x1a, 0x46, 0xad, 0xf8, 0x2c, 0x20, 0xfc, 0xf7, - 0x53, 0xfa, 0xb5, 0xf8, 0xae, 0x32, 0x00, 0x2b, 0x9a, 0xd0, 0x01, 0x9b, - 0x1a, 0x46, 0xcc, 0x4b, 0x9a, 0x42, 0x08, 0xd9, 0xcb, 0x4b, 0x19, 0x69, - 0x01, 0x29, 0x04, 0xd1, 0x03, 0xf5, 0x71, 0x72, 0x18, 0x68, 0xeb, 0xf7, - 0x83, 0xff, 0x1a, 0xf0, 0x10, 0x0f, 0x02, 0xd0, 0x10, 0x23, 0xc9, 0xf8, - 0x08, 0x30, 0x1a, 0xf0, 0x20, 0x0f, 0x02, 0xd0, 0x20, 0x23, 0xc9, 0xf8, - 0x08, 0x30, 0x1a, 0xf4, 0x00, 0x5f, 0x03, 0xd0, 0x4f, 0xf4, 0x00, 0x53, - 0xc9, 0xf8, 0x08, 0x30, 0x08, 0xf1, 0x01, 0x08, 0x7f, 0x08, 0x09, 0xf1, - 0x20, 0x09, 0x0b, 0xf1, 0x1c, 0x0b, 0x76, 0xe6, 0x1a, 0x43, 0x8c, 0xd1, - 0x7f, 0x2e, 0x8a, 0xd8, 0x95, 0xf8, 0x9c, 0x32, 0x03, 0x2b, 0x86, 0xd0, - 0xf3, 0xb2, 0xd5, 0xf8, 0xc0, 0x12, 0x85, 0xf8, 0x9e, 0x32, 0x91, 0xf8, - 0xbc, 0x03, 0x01, 0x28, 0x10, 0xd0, 0x08, 0x68, 0x81, 0xf8, 0x38, 0x30, - 0xd0, 0xf8, 0x00, 0x38, 0x23, 0xf4, 0xfe, 0x63, 0xc0, 0xf8, 0x00, 0x38, - 0xd0, 0xf8, 0x00, 0x38, 0x43, 0xea, 0x06, 0x13, 0xc0, 0xf8, 0x00, 0x38, - 0x81, 0xf8, 0xbc, 0x23, 0x28, 0x46, 0xfc, 0xf7, 0x0d, 0xfa, 0x1e, 0xb1, - 0x02, 0x23, 0x85, 0xf8, 0x9c, 0x32, 0xac, 0xe7, 0x01, 0x23, 0xfa, 0xe7, - 0xf1, 0xb2, 0xa4, 0x4e, 0x01, 0x29, 0x31, 0x70, 0x3f, 0xf6, 0x5d, 0xaf, - 0x95, 0xf8, 0x9c, 0x32, 0x02, 0x2b, 0x09, 0xd0, 0x03, 0x2b, 0x19, 0xd0, - 0x28, 0x46, 0xe8, 0xf7, 0x3b, 0xff, 0x31, 0x78, 0x28, 0x46, 0xfb, 0xf7, - 0x2b, 0xff, 0x96, 0xe7, 0x00, 0x29, 0x3f, 0xf4, 0x2f, 0xaf, 0x01, 0x21, - 0x03, 0x23, 0x69, 0x60, 0x85, 0xf8, 0x9c, 0x32, 0x28, 0x46, 0xfb, 0xf7, - 0x26, 0xff, 0x02, 0x28, 0x28, 0x46, 0x7f, 0xf4, 0x24, 0xaf, 0xe8, 0xf7, - 0x25, 0xff, 0x84, 0xe7, 0x39, 0xb9, 0x02, 0x23, 0x28, 0x46, 0x69, 0x60, - 0x85, 0xf8, 0x9c, 0x32, 0xfb, 0xf7, 0x10, 0xff, 0x16, 0xe7, 0x69, 0x68, - 0x01, 0x29, 0x3f, 0xf4, 0x13, 0xaf, 0xc9, 0xb2, 0x28, 0x46, 0xfb, 0xf7, - 0x07, 0xff, 0x31, 0x78, 0x69, 0x60, 0xe1, 0xe7, 0x01, 0x2a, 0x7f, 0xf4, - 0x26, 0xaf, 0x95, 0xf8, 0x9c, 0x32, 0x02, 0x2b, 0x0a, 0xd8, 0x00, 0x2b, - 0x3f, 0xf4, 0x1f, 0xaf, 0x29, 0x46, 0x00, 0x23, 0x41, 0xf8, 0x08, 0x3f, - 0x28, 0x46, 0xfc, 0xf7, 0xaf, 0xf9, 0x5e, 0xe7, 0x03, 0x2b, 0x7f, 0xf4, - 0x14, 0xaf, 0x29, 0x1d, 0xf6, 0xe7, 0x95, 0xf8, 0x9c, 0x32, 0x01, 0x3b, - 0x02, 0x2b, 0x3f, 0xf6, 0x0c, 0xaf, 0x02, 0x2a, 0x7f, 0xf4, 0x09, 0xaf, - 0x01, 0x23, 0xeb, 0x60, 0xd5, 0xf8, 0xa4, 0x32, 0x0b, 0xb1, 0x03, 0x23, - 0xeb, 0x60, 0x02, 0x22, 0x05, 0xf1, 0x0c, 0x01, 0xe2, 0xe7, 0x01, 0x2e, - 0x7f, 0xf4, 0x43, 0xaf, 0xc5, 0xf8, 0xa4, 0x62, 0xda, 0xe6, 0x95, 0xf8, - 0x9c, 0x32, 0x01, 0x3b, 0x02, 0x2b, 0x3f, 0xf6, 0xf2, 0xae, 0x01, 0x2e, - 0x7f, 0xf4, 0x37, 0xaf, 0x00, 0x23, 0xc5, 0xf8, 0xa4, 0x32, 0xcd, 0xe6, - 0x00, 0xf0, 0x60, 0x02, 0x40, 0x2a, 0x02, 0xd0, 0x42, 0x06, 0x3f, 0xf5, - 0xe4, 0xae, 0x95, 0xf8, 0x9c, 0x22, 0x01, 0x3a, 0x02, 0x2a, 0x3f, 0xf6, - 0xde, 0xae, 0xdb, 0xb2, 0x02, 0x2b, 0x3f, 0xf6, 0xda, 0xae, 0xd5, 0xf8, - 0xb4, 0x32, 0x28, 0x46, 0x9b, 0x68, 0x98, 0x47, 0xb5, 0xf8, 0xae, 0x32, - 0x00, 0x2b, 0x7f, 0xf4, 0x18, 0xaf, 0x00, 0x28, 0x7f, 0xf4, 0x15, 0xaf, - 0xae, 0xe6, 0x00, 0xf0, 0x60, 0x00, 0x20, 0x28, 0x31, 0xd0, 0x40, 0x28, - 0x2f, 0xd0, 0x00, 0x28, 0x7f, 0xf4, 0xc3, 0xae, 0xbc, 0xf1, 0x01, 0x0f, - 0xd9, 0xb2, 0x40, 0xd0, 0xbc, 0xf1, 0x03, 0x0f, 0x2b, 0xd0, 0xbc, 0xf1, - 0x00, 0x0f, 0x7f, 0xf4, 0xb8, 0xae, 0x95, 0xf8, 0x9c, 0x22, 0x02, 0x2a, - 0x00, 0xf0, 0x9c, 0x80, 0x03, 0x2a, 0x7f, 0xf4, 0xb0, 0xae, 0x5b, 0xb2, - 0x01, 0xf0, 0x0f, 0x00, 0x14, 0x26, 0x00, 0x2b, 0x06, 0xfb, 0x00, 0x50, - 0x80, 0xf2, 0x9f, 0x80, 0x82, 0x69, 0x00, 0x2a, 0x3f, 0xf4, 0xa3, 0xae, - 0x01, 0xf0, 0x7f, 0x02, 0x02, 0xfb, 0x06, 0x66, 0x2e, 0x44, 0x11, 0xf0, - 0x7f, 0x02, 0x40, 0xf0, 0x9e, 0x80, 0x32, 0x60, 0x02, 0x22, 0x31, 0x46, - 0x7a, 0xe7, 0xd5, 0xf8, 0xb4, 0x32, 0x28, 0x46, 0x9b, 0x68, 0x98, 0x47, - 0xd7, 0xe6, 0x95, 0xf8, 0x9c, 0x32, 0x02, 0x2b, 0x5a, 0xd0, 0x03, 0x2b, - 0x7f, 0xf4, 0x89, 0xae, 0x4b, 0x06, 0x3f, 0xf4, 0x69, 0xae, 0x56, 0xea, - 0x02, 0x03, 0x7f, 0xf4, 0x65, 0xae, 0x28, 0x46, 0xfe, 0xf7, 0x8d, 0xff, - 0x60, 0xe6, 0x95, 0xf8, 0x9c, 0x22, 0x02, 0x2a, 0x48, 0xd0, 0x03, 0x2a, - 0x7f, 0xf4, 0x77, 0xae, 0x00, 0x2e, 0x7f, 0xf4, 0xbc, 0xae, 0x4a, 0x06, - 0x3f, 0xf4, 0x54, 0xae, 0xd5, 0xf8, 0xc0, 0x22, 0x01, 0xf0, 0x0f, 0x01, - 0x50, 0x68, 0x81, 0x42, 0x3f, 0xf6, 0x4c, 0xae, 0xc1, 0xeb, 0xc1, 0x00, - 0x13, 0xf0, 0x80, 0x0f, 0x4f, 0xf0, 0x1c, 0x03, 0x4f, 0xea, 0x80, 0x00, - 0x39, 0xd0, 0x3c, 0x30, 0x03, 0xfb, 0x01, 0x23, 0x01, 0x26, 0x10, 0x44, - 0x83, 0xf8, 0x3d, 0x60, 0x00, 0x23, 0x01, 0x70, 0x83, 0x70, 0x92, 0xf8, - 0xbc, 0x33, 0x01, 0x2b, 0x3f, 0xf4, 0x34, 0xae, 0x01, 0x23, 0x11, 0x68, - 0x4f, 0xf0, 0x20, 0x0c, 0x82, 0xf8, 0xbc, 0x33, 0x43, 0x78, 0x06, 0x78, - 0x01, 0x2b, 0x0c, 0xbf, 0x01, 0xf5, 0x10, 0x63, 0x01, 0xf5, 0x30, 0x63, - 0x1c, 0xfb, 0x06, 0x33, 0x19, 0x68, 0x21, 0xf4, 0x00, 0x11, 0x19, 0x60, - 0xc1, 0x78, 0x02, 0x39, 0x01, 0x29, 0x03, 0xd8, 0x19, 0x68, 0x41, 0xf0, - 0x80, 0x51, 0x19, 0x60, 0x00, 0x23, 0x82, 0xf8, 0xbc, 0x33, 0x13, 0xe6, - 0x4e, 0x06, 0x28, 0x46, 0x3f, 0xf4, 0xed, 0xae, 0xfe, 0xf7, 0x39, 0xff, - 0x80, 0x21, 0x28, 0x46, 0xfe, 0xf7, 0x35, 0xff, 0x6d, 0xe6, 0x00, 0xf5, - 0xfe, 0x70, 0x03, 0xfb, 0x01, 0x23, 0x00, 0x26, 0x10, 0x44, 0x83, 0xf8, - 0xfd, 0x61, 0xc3, 0xe7, 0x0a, 0x30, 0x54, 0x4f, 0x58, 0x9c, 0x00, 0x24, - 0x1c, 0x9c, 0x00, 0x24, 0x4e, 0x06, 0x7f, 0xf4, 0x14, 0xae, 0x18, 0x06, - 0x4f, 0xf0, 0x00, 0x03, 0x4f, 0xf0, 0x02, 0x02, 0x4c, 0xbf, 0x05, 0xf1, - 0x14, 0x01, 0x05, 0xf5, 0xaa, 0x71, 0x0b, 0x60, 0xec, 0xe6, 0xd0, 0xf8, - 0x58, 0x21, 0x00, 0x2a, 0x3f, 0xf4, 0x03, 0xae, 0x01, 0xf0, 0x7f, 0x02, - 0x06, 0xfb, 0x02, 0x56, 0x06, 0xf5, 0xaa, 0x76, 0x5d, 0xe7, 0x00, 0x2b, - 0xd5, 0xf8, 0xc0, 0x02, 0x4f, 0xf0, 0x1c, 0x03, 0xb5, 0xbf, 0x03, 0xfb, - 0x02, 0x01, 0x03, 0xfb, 0x01, 0x03, 0x91, 0xf8, 0x3e, 0x30, 0x93, 0xf8, - 0xfe, 0x31, 0x03, 0xb1, 0x01, 0x23, 0x33, 0x60, 0x50, 0xe7, 0x00, 0xf0, - 0x80, 0x01, 0xbc, 0xe7, 0x02, 0x9b, 0xd9, 0x07, 0x40, 0xf1, 0x0c, 0x81, - 0xd9, 0xf8, 0x00, 0x00, 0x9d, 0xf8, 0x04, 0xa0, 0xd0, 0xf8, 0x10, 0x18, - 0x00, 0xf5, 0x10, 0x62, 0xd0, 0xf8, 0x34, 0x58, 0x0a, 0xf0, 0x0f, 0x08, - 0x02, 0xeb, 0x4a, 0x12, 0x25, 0xfa, 0x08, 0xf8, 0x92, 0x68, 0x4f, 0xea, - 0xc8, 0x18, 0x5f, 0xfa, 0x88, 0xf8, 0x48, 0xea, 0x01, 0x08, 0x08, 0xea, - 0x02, 0x08, 0x18, 0xf0, 0x01, 0x0f, 0x42, 0xd0, 0x01, 0x9b, 0xd4, 0xf8, - 0x34, 0x28, 0x03, 0xf0, 0x0f, 0x01, 0x01, 0x23, 0x03, 0xfa, 0x01, 0xf1, - 0x22, 0xea, 0x01, 0x02, 0xd9, 0xf8, 0x10, 0x10, 0x99, 0x42, 0xc4, 0xf8, - 0x34, 0x28, 0xcb, 0xf8, 0x08, 0x30, 0x0b, 0xd1, 0x01, 0x9b, 0xd7, 0xe9, - 0x11, 0x52, 0x2a, 0x44, 0xba, 0x64, 0xd9, 0xf8, 0x50, 0x20, 0x13, 0x43, - 0x02, 0xd1, 0x98, 0x4a, 0xeb, 0xf7, 0x82, 0xfd, 0x97, 0x4b, 0xd3, 0xf8, - 0x04, 0x54, 0xba, 0xf1, 0x00, 0x0f, 0x40, 0xf0, 0x9b, 0x80, 0xd5, 0xf8, - 0x94, 0x22, 0x02, 0x2a, 0x40, 0xf0, 0x8e, 0x80, 0xd5, 0xe9, 0x08, 0x20, - 0x82, 0x42, 0x60, 0xd9, 0x12, 0x1a, 0x99, 0x6c, 0xd5, 0xf8, 0xc0, 0x02, - 0x2a, 0x62, 0x92, 0xb2, 0xe8, 0xf7, 0x83, 0xfd, 0x52, 0x46, 0x51, 0x46, - 0xd5, 0xf8, 0xc0, 0x02, 0xe8, 0xf7, 0x92, 0xfd, 0x95, 0xf8, 0xa0, 0x22, - 0x01, 0x2a, 0x02, 0xd1, 0x00, 0x22, 0x85, 0xf8, 0xa0, 0x22, 0x18, 0xf0, - 0x08, 0x0f, 0x02, 0xd0, 0x08, 0x22, 0xcb, 0xf8, 0x08, 0x20, 0x18, 0xf0, - 0x10, 0x0f, 0x02, 0xd0, 0x10, 0x22, 0xcb, 0xf8, 0x08, 0x20, 0x18, 0xf0, - 0x40, 0x0f, 0x02, 0xd0, 0x40, 0x22, 0xcb, 0xf8, 0x08, 0x20, 0x18, 0xf0, - 0x02, 0x0f, 0x02, 0xd0, 0x02, 0x22, 0xcb, 0xf8, 0x08, 0x20, 0x18, 0xf0, - 0x80, 0x0f, 0x00, 0xf0, 0x91, 0x80, 0xd7, 0xe9, 0x14, 0x21, 0x91, 0x42, - 0x00, 0xf2, 0x8c, 0x80, 0x52, 0x1a, 0x79, 0x6c, 0xd9, 0xf8, 0x00, 0x50, - 0x8a, 0x42, 0x01, 0x9b, 0x05, 0xf5, 0x10, 0x6c, 0x28, 0xbf, 0x0a, 0x46, - 0x05, 0xf5, 0x80, 0x51, 0x0c, 0xeb, 0x43, 0x1c, 0x03, 0x32, 0x01, 0xeb, - 0x0a, 0x33, 0x92, 0x08, 0xdc, 0xf8, 0x18, 0xe0, 0x1f, 0xfa, 0x8e, 0xfe, - 0x96, 0x45, 0xd7, 0xe9, 0x14, 0x01, 0x6f, 0xd3, 0x88, 0x42, 0x01, 0xd9, - 0x00, 0x28, 0x4c, 0xd1, 0x01, 0x9a, 0x01, 0x21, 0xd5, 0xf8, 0x34, 0x38, - 0x02, 0xf0, 0x0f, 0x02, 0x01, 0xfa, 0x02, 0xf2, 0x23, 0xea, 0x02, 0x03, - 0xc5, 0xf8, 0x34, 0x38, 0x60, 0xe0, 0xe9, 0x69, 0xb1, 0xfb, 0xf0, 0xf2, - 0x00, 0xfb, 0x12, 0x12, 0x72, 0xb9, 0x88, 0x42, 0x0c, 0xd8, 0xd5, 0xf8, - 0x98, 0x22, 0x91, 0x42, 0x08, 0xd2, 0x52, 0x46, 0x51, 0x46, 0xd5, 0xf8, - 0xc0, 0x02, 0xe8, 0xf7, 0x18, 0xfd, 0xc5, 0xf8, 0x98, 0xa2, 0x91, 0xe7, - 0xd5, 0xf8, 0xb4, 0x22, 0xd2, 0x68, 0x2a, 0xb1, 0x95, 0xf8, 0x9c, 0x12, - 0x03, 0x29, 0x01, 0xd1, 0x28, 0x46, 0x90, 0x47, 0x80, 0x21, 0x28, 0x46, - 0xfe, 0xf7, 0x23, 0xfe, 0x05, 0x22, 0xc5, 0xf8, 0x94, 0x22, 0x00, 0x22, - 0x11, 0x46, 0x7f, 0xe7, 0x32, 0xf0, 0x04, 0x03, 0x80, 0xd1, 0x80, 0x21, - 0x28, 0x46, 0xfe, 0xf7, 0x16, 0xfe, 0x7b, 0xe7, 0xd5, 0xf8, 0xb4, 0x22, - 0x52, 0x69, 0x00, 0x2a, 0x3f, 0xf4, 0x7d, 0xaf, 0x95, 0xf8, 0x9c, 0x12, - 0x03, 0x29, 0x7f, 0xf4, 0x78, 0xaf, 0x51, 0x46, 0x28, 0x46, 0x90, 0x47, - 0x73, 0xe7, 0x41, 0x1a, 0x7a, 0x6c, 0x99, 0xf8, 0x10, 0x00, 0x91, 0x42, - 0x28, 0xbf, 0x11, 0x46, 0xca, 0x1c, 0x92, 0x08, 0x30, 0xb1, 0xb8, 0x6c, - 0x08, 0x44, 0xb8, 0x64, 0x78, 0x6d, 0x01, 0x44, 0x79, 0x65, 0x95, 0xe7, - 0x88, 0xb2, 0xd7, 0xf8, 0x48, 0xe0, 0x03, 0x30, 0x80, 0x08, 0x0e, 0xeb, - 0x80, 0x00, 0x70, 0x45, 0xef, 0xd0, 0x5e, 0xf8, 0x04, 0x8b, 0xc3, 0xf8, - 0x00, 0x80, 0xf8, 0xe7, 0x88, 0x42, 0x91, 0xd9, 0x01, 0x9b, 0x1c, 0x37, - 0x0b, 0xf1, 0x20, 0x0b, 0x01, 0x33, 0x01, 0x93, 0x02, 0x9b, 0x5b, 0x08, - 0x02, 0x93, 0xff, 0xf7, 0x39, 0xb8, 0xd3, 0xf8, 0x04, 0x34, 0x93, 0xf8, - 0x9c, 0x22, 0x83, 0xf8, 0x9d, 0x22, 0x04, 0x22, 0x83, 0xf8, 0x9c, 0x22, - 0xff, 0xf7, 0x75, 0xb8, 0x9f, 0x60, 0x20, 0x33, 0x53, 0xf8, 0x20, 0x1c, - 0x21, 0xf4, 0x00, 0x11, 0x43, 0xf8, 0x20, 0x1c, 0x53, 0xf8, 0x20, 0x1c, - 0x41, 0xf0, 0x00, 0x61, 0x43, 0xf8, 0x20, 0x1c, 0xc3, 0xf8, 0xe8, 0x71, - 0xd3, 0xf8, 0xe0, 0x11, 0x21, 0xf4, 0x00, 0x11, 0xc3, 0xf8, 0xe0, 0x11, - 0xd3, 0xf8, 0xe0, 0x11, 0x41, 0xf0, 0x00, 0x61, 0xc3, 0xf8, 0xe0, 0x11, - 0x03, 0x99, 0x01, 0x31, 0x03, 0x91, 0xff, 0xf7, 0x6f, 0xb8, 0x53, 0x69, - 0x43, 0xf4, 0x00, 0x53, 0x43, 0xf0, 0x2b, 0x03, 0x53, 0x61, 0x13, 0x69, - 0x43, 0xf0, 0x0b, 0x03, 0x13, 0x61, 0xff, 0xf7, 0x7d, 0xb8, 0x0f, 0x23, - 0xff, 0xf7, 0xed, 0xb8, 0x0e, 0x23, 0xff, 0xf7, 0xea, 0xb8, 0x0d, 0x23, - 0xff, 0xf7, 0xe7, 0xb8, 0x0c, 0x23, 0xff, 0xf7, 0xe4, 0xb8, 0x0b, 0x23, - 0xff, 0xf7, 0xe1, 0xb8, 0x0a, 0x23, 0xff, 0xf7, 0xde, 0xb8, 0x09, 0x23, - 0xff, 0xf7, 0xdb, 0xb8, 0x08, 0x23, 0xff, 0xf7, 0xd8, 0xb8, 0x00, 0xbf, - 0x1c, 0xa0, 0x00, 0x24, 0x58, 0x9c, 0x00, 0x24, 0x30, 0xb5, 0x14, 0x4b, - 0x85, 0xb0, 0x0b, 0x25, 0x6c, 0x46, 0x0f, 0xcb, 0x84, 0xe8, 0x0f, 0x00, - 0x20, 0x46, 0x1c, 0x24, 0xfe, 0xf7, 0x7a, 0xf8, 0x0f, 0x4b, 0x18, 0x60, - 0x0f, 0x48, 0x10, 0x4b, 0x45, 0x60, 0x03, 0x60, 0x0f, 0x4b, 0xc4, 0x60, - 0x83, 0x60, 0xfe, 0xf7, 0x6f, 0xf8, 0x0e, 0x4b, 0x18, 0x60, 0x0e, 0x48, - 0x0e, 0x4b, 0xc4, 0x60, 0xc0, 0xe9, 0x00, 0x35, 0x0d, 0x4b, 0x83, 0x60, - 0xfe, 0xf7, 0x64, 0xf8, 0x0c, 0x4b, 0x18, 0x60, 0x00, 0xf0, 0xb2, 0xff, - 0xfd, 0xf7, 0x1a, 0xfc, 0x05, 0xb0, 0x30, 0xbd, 0xd0, 0xeb, 0x01, 0x08, - 0xe8, 0x86, 0x00, 0x24, 0x64, 0xa0, 0x00, 0x24, 0xe7, 0xe9, 0x01, 0x08, - 0x74, 0xa0, 0x00, 0x24, 0xe0, 0x86, 0x00, 0x24, 0x24, 0x9c, 0x00, 0x24, - 0xf4, 0xe9, 0x01, 0x08, 0x34, 0x9c, 0x00, 0x24, 0xa0, 0x86, 0x00, 0x24, - 0x2d, 0xe9, 0xf7, 0x4f, 0xfe, 0xf7, 0x84, 0xfc, 0x00, 0x20, 0xfe, 0xf7, - 0xeb, 0xf9, 0x40, 0xf2, 0xaa, 0x73, 0xab, 0x4c, 0x98, 0x42, 0xab, 0x4d, - 0x63, 0xd1, 0x01, 0x20, 0xfe, 0xf7, 0xe2, 0xf9, 0xc0, 0xb2, 0x20, 0x60, - 0x01, 0x20, 0xfe, 0xf7, 0xdd, 0xf9, 0x00, 0xf0, 0x07, 0x00, 0x20, 0x71, - 0x01, 0x20, 0xfe, 0xf7, 0xd7, 0xf9, 0xc0, 0xf3, 0x00, 0x10, 0x60, 0x71, - 0x01, 0x20, 0xfe, 0xf7, 0xd1, 0xf9, 0xc0, 0xf3, 0xc0, 0x10, 0xa0, 0x71, - 0x02, 0x20, 0xfe, 0xf7, 0xcb, 0xf9, 0xa0, 0x60, 0x03, 0x20, 0xfe, 0xf7, - 0xc7, 0xf9, 0xe0, 0x60, 0x04, 0x20, 0xfe, 0xf7, 0xc3, 0xf9, 0xc0, 0xb2, - 0x20, 0x62, 0x04, 0x20, 0xfe, 0xf7, 0xbe, 0xf9, 0x00, 0xf0, 0x07, 0x00, - 0x84, 0xf8, 0x24, 0x00, 0x04, 0x20, 0xfe, 0xf7, 0xb7, 0xf9, 0xc0, 0xf3, - 0x00, 0x10, 0x84, 0xf8, 0x25, 0x00, 0x04, 0x20, 0xfe, 0xf7, 0xb0, 0xf9, - 0xc0, 0xf3, 0xc0, 0x10, 0x84, 0xf8, 0x26, 0x00, 0x05, 0x20, 0xfe, 0xf7, - 0xa9, 0xf9, 0xa0, 0x62, 0x06, 0x20, 0xfe, 0xf7, 0xa5, 0xf9, 0x2b, 0x78, - 0xe0, 0x62, 0x8b, 0xb1, 0x89, 0x48, 0x02, 0xf0, 0x6b, 0xfd, 0x2b, 0x78, - 0x63, 0xb1, 0x22, 0x79, 0x21, 0x68, 0x87, 0x48, 0xf5, 0xf7, 0x54, 0xf8, - 0x2b, 0x78, 0x2b, 0xb1, 0x94, 0xf8, 0x24, 0x20, 0x21, 0x6a, 0x84, 0x48, - 0xf5, 0xf7, 0x4c, 0xf8, 0x23, 0x79, 0x94, 0xf8, 0x24, 0x20, 0x03, 0xf0, - 0x02, 0x01, 0x9a, 0x42, 0x40, 0xf0, 0x1a, 0x81, 0xf9, 0xb1, 0x2b, 0x78, - 0x3b, 0xb3, 0x7e, 0x48, 0x02, 0xf0, 0x4e, 0xfd, 0x23, 0xe0, 0x02, 0x20, + 0x08, 0xa0, 0x20, 0x31, 0x78, 0xe7, 0xc1, 0xf8, 0x00, 0x80, 0xf5, 0xe7, + 0xc1, 0xf8, 0x00, 0xe0, 0xf2, 0xe7, 0xd1, 0xf8, 0x00, 0xb0, 0xbb, 0xf1, + 0x00, 0x0f, 0x0c, 0xda, 0x47, 0xb9, 0xc1, 0xf8, 0x00, 0x90, 0xc1, 0xf8, + 0x10, 0xe0, 0x01, 0x37, 0xc1, 0xf8, 0x08, 0xa0, 0x20, 0x31, 0x6f, 0xe7, + 0xc1, 0xf8, 0x00, 0x80, 0xf5, 0xe7, 0xc1, 0xf8, 0x00, 0xe0, 0xf2, 0xe7, + 0x44, 0x2d, 0x02, 0x24, 0x43, 0x2d, 0x02, 0x24, 0x0f, 0x03, 0x00, 0x24, + 0x0e, 0x03, 0x00, 0x24, 0x48, 0x0b, 0x02, 0x24, 0x41, 0x0d, 0x03, 0x00, + 0x00, 0x38, 0x3c, 0x80, 0x06, 0x2b, 0x7f, 0xf4, 0x9f, 0xac, 0x08, 0x22, + 0xb2, 0x49, 0x20, 0x46, 0xc6, 0xf3, 0x0a, 0x16, 0xec, 0xf7, 0x1c, 0xff, + 0x1c, 0x23, 0x03, 0xfb, 0x05, 0x95, 0xd5, 0xf8, 0x14, 0x32, 0x1e, 0x44, + 0xc5, 0xf8, 0x14, 0x62, 0x8e, 0xe4, 0xd3, 0xf8, 0x18, 0x78, 0x03, 0xf5, + 0x00, 0x63, 0x04, 0xf5, 0x30, 0x69, 0xdf, 0xf8, 0xa4, 0xb2, 0xdb, 0x69, + 0x4f, 0xf0, 0x00, 0x08, 0x1f, 0x40, 0x3f, 0x0c, 0x00, 0x2f, 0x3f, 0xf4, + 0x8b, 0xac, 0xf8, 0x07, 0x40, 0xf1, 0x7a, 0x81, 0xa2, 0x4d, 0x5f, 0xfa, + 0x88, 0xf6, 0x28, 0x68, 0x00, 0xf5, 0x30, 0x6c, 0x0c, 0xeb, 0x46, 0x13, + 0x9a, 0x68, 0xd0, 0xf8, 0x14, 0x38, 0x02, 0xea, 0x03, 0x0a, 0x2b, 0x46, + 0x1a, 0xf0, 0x01, 0x0f, 0x1b, 0xd0, 0x29, 0x69, 0x01, 0x22, 0x0c, 0xeb, + 0x48, 0x1c, 0x01, 0x29, 0xc9, 0xf8, 0x08, 0x20, 0xd0, 0xf8, 0x40, 0xe0, + 0xdc, 0xf8, 0x08, 0x20, 0x40, 0xf0, 0x9e, 0x80, 0x11, 0x07, 0x07, 0xd5, + 0x93, 0x4b, 0x9e, 0x45, 0x09, 0xd9, 0x10, 0x04, 0x07, 0xd5, 0x4f, 0xf4, + 0x00, 0x43, 0x02, 0xe0, 0x91, 0x06, 0x70, 0xd5, 0x20, 0x23, 0xcc, 0xf8, + 0x08, 0x30, 0x1a, 0xf0, 0x08, 0x0f, 0x00, 0xf0, 0x36, 0x81, 0x2b, 0x68, + 0x08, 0x22, 0xc9, 0xf8, 0x08, 0x20, 0x1a, 0x6c, 0x03, 0xf5, 0x30, 0x63, + 0x01, 0x92, 0x03, 0xeb, 0x48, 0x13, 0x01, 0x99, 0x9a, 0x68, 0x08, 0x46, + 0x84, 0x49, 0x88, 0x42, 0x04, 0xd9, 0x11, 0x04, 0x02, 0xd5, 0x4f, 0xf4, + 0x00, 0x42, 0x9a, 0x60, 0x7f, 0x4a, 0xd2, 0xf8, 0x04, 0x54, 0x92, 0xf8, + 0xc4, 0x03, 0x05, 0xf5, 0x2a, 0x71, 0x85, 0xf8, 0xa8, 0x02, 0x92, 0xf8, + 0xc5, 0xc3, 0x85, 0xf8, 0xa9, 0xc2, 0x92, 0xf8, 0xc7, 0x33, 0x92, 0xf8, + 0xc6, 0x63, 0x06, 0xeb, 0x03, 0x26, 0xb6, 0xb2, 0xa5, 0xf8, 0xaa, 0x62, + 0x92, 0xf8, 0xc9, 0xe3, 0x92, 0xf8, 0xc8, 0x33, 0x03, 0xeb, 0x0e, 0x23, + 0x9b, 0xb2, 0xa5, 0xf8, 0xac, 0x32, 0x92, 0xf8, 0xcb, 0xe3, 0x92, 0xf8, + 0xca, 0x23, 0x02, 0xeb, 0x0e, 0x22, 0x4f, 0xf0, 0x01, 0x0e, 0x92, 0xb2, + 0xc5, 0xe9, 0xa5, 0xe2, 0x00, 0xf0, 0x1f, 0x0e, 0xa5, 0xf8, 0xae, 0x22, + 0xbe, 0xf1, 0x01, 0x0f, 0x00, 0xf0, 0xae, 0x81, 0xbe, 0xf1, 0x02, 0x0f, + 0x00, 0xf0, 0xc9, 0x81, 0xbe, 0xf1, 0x00, 0x0f, 0x40, 0xf0, 0xa7, 0x82, + 0x00, 0xf0, 0x60, 0x00, 0x20, 0x28, 0x00, 0xf0, 0xf6, 0x81, 0x40, 0x28, + 0x00, 0xf0, 0xf3, 0x81, 0x00, 0x28, 0x40, 0xf0, 0x87, 0x80, 0xbc, 0xf1, + 0x09, 0x0f, 0x00, 0xf2, 0x83, 0x80, 0xdf, 0xe8, 0x1c, 0xf0, 0x6e, 0x01, + 0x88, 0x01, 0x81, 0x00, 0x82, 0x01, 0x81, 0x00, 0xf1, 0x00, 0x49, 0x00, + 0x81, 0x00, 0x57, 0x01, 0x1d, 0x01, 0x12, 0xf0, 0x28, 0x0f, 0x8e, 0xd1, + 0x54, 0x49, 0x8e, 0x45, 0x01, 0xd9, 0x12, 0x04, 0x81, 0xd4, 0xdc, 0xf8, + 0x10, 0x20, 0xdb, 0xf8, 0x04, 0x12, 0xc2, 0xf3, 0x12, 0x02, 0x8a, 0x1a, + 0xcb, 0xf8, 0x14, 0x22, 0xdb, 0xf8, 0x08, 0x22, 0x11, 0x44, 0xd5, 0xf8, + 0x10, 0x22, 0x58, 0xea, 0x02, 0x02, 0xcb, 0xf8, 0x08, 0x12, 0x10, 0xd1, + 0x46, 0x4a, 0x01, 0x21, 0xec, 0xf7, 0x12, 0xfe, 0x45, 0x4b, 0x0a, 0xe0, + 0x46, 0x49, 0x8e, 0x45, 0x12, 0xd1, 0x11, 0x04, 0x3f, 0xf5, 0x63, 0xaf, + 0x90, 0x06, 0x02, 0xd5, 0x20, 0x22, 0xcc, 0xf8, 0x08, 0x20, 0x1c, 0x22, + 0x31, 0x46, 0xd5, 0xf8, 0x04, 0x04, 0x02, 0xfb, 0x06, 0x33, 0xd3, 0xf8, + 0x08, 0x22, 0xff, 0xf7, 0xb5, 0xf9, 0x5a, 0xe7, 0xd5, 0xf8, 0x10, 0x12, + 0x58, 0xea, 0x01, 0x01, 0xef, 0xd1, 0x05, 0xf5, 0x71, 0x72, 0xdd, 0xe7, + 0x00, 0x23, 0xad, 0xf8, 0x2c, 0x30, 0x33, 0x0a, 0x01, 0x3b, 0x06, 0x2b, + 0x30, 0xd8, 0xdf, 0xe8, 0x03, 0xf0, 0x04, 0x16, 0x22, 0x2f, 0x2f, 0x4e, + 0x57, 0x00, 0xd5, 0xf8, 0xb0, 0x32, 0x1b, 0x68, 0x0b, 0xa9, 0x28, 0x7c, + 0x98, 0x47, 0xbd, 0xf8, 0x2c, 0x30, 0x00, 0x2b, 0x63, 0xd0, 0xb5, 0xf8, + 0xae, 0x22, 0x00, 0x2a, 0x56, 0xd1, 0x28, 0x46, 0xfe, 0xf7, 0x74, 0xf8, + 0x5f, 0xe0, 0x2a, 0x7c, 0xd5, 0xf8, 0xb4, 0x32, 0x2a, 0xb9, 0x9b, 0x6a, + 0x0b, 0xa8, 0x98, 0x47, 0x02, 0x23, 0x43, 0x70, 0xe9, 0xe7, 0xdb, 0x6a, + 0xf8, 0xe7, 0xf1, 0xb2, 0x05, 0x29, 0x1f, 0xd8, 0xdf, 0xe8, 0x01, 0xf0, + 0x03, 0x0a, 0x0e, 0x12, 0x16, 0x1a, 0xd5, 0xf8, 0xb0, 0x32, 0x5b, 0x68, + 0x00, 0x2b, 0xd7, 0xd1, 0x28, 0x46, 0xbc, 0xe0, 0xd5, 0xf8, 0xb0, 0x32, + 0x9b, 0x68, 0xf7, 0xe7, 0xd5, 0xf8, 0xb0, 0x32, 0xdb, 0x68, 0xf3, 0xe7, + 0xd5, 0xf8, 0xb0, 0x32, 0x1b, 0x69, 0xef, 0xe7, 0xd5, 0xf8, 0xb0, 0x32, + 0x5b, 0x69, 0xeb, 0xe7, 0xd5, 0xf8, 0xb0, 0x32, 0x9b, 0x69, 0xe7, 0xe7, + 0xd5, 0xf8, 0xb4, 0x32, 0x9b, 0x6b, 0x00, 0x2b, 0xe4, 0xd0, 0x0b, 0xaa, + 0x28, 0x46, 0x98, 0x47, 0xbb, 0xe7, 0x2b, 0x7c, 0x00, 0x2b, 0xdd, 0xd1, + 0xd5, 0xf8, 0xb4, 0x32, 0x0b, 0xa8, 0x5b, 0x6b, 0x98, 0x47, 0xb2, 0xe7, + 0x2b, 0x7c, 0x00, 0x2b, 0xd4, 0xd1, 0xd5, 0xf8, 0xb4, 0x32, 0x0b, 0xa8, + 0x1b, 0x6b, 0x98, 0x47, 0x07, 0x23, 0xbc, 0xe7, 0x80, 0x43, 0x02, 0x24, + 0xbc, 0x3f, 0x02, 0x24, 0x0a, 0x30, 0x54, 0x4f, 0x0a, 0x31, 0x54, 0x4f, + 0x9a, 0x42, 0x01, 0x46, 0x28, 0x46, 0x28, 0xbf, 0x1a, 0x46, 0xad, 0xf8, + 0x2c, 0x20, 0xfe, 0xf7, 0x0b, 0xf8, 0xb5, 0xf8, 0xae, 0x32, 0x00, 0x2b, + 0x9b, 0xd0, 0x01, 0x9b, 0x1a, 0x46, 0xcc, 0x4b, 0x9a, 0x42, 0x08, 0xd9, + 0xcb, 0x4b, 0x19, 0x69, 0x01, 0x29, 0x04, 0xd1, 0x03, 0xf5, 0x71, 0x72, + 0x18, 0x68, 0xec, 0xf7, 0x65, 0xfd, 0x1a, 0xf0, 0x10, 0x0f, 0x02, 0xd0, + 0x10, 0x23, 0xc9, 0xf8, 0x08, 0x30, 0x1a, 0xf0, 0x20, 0x0f, 0x02, 0xd0, + 0x20, 0x23, 0xc9, 0xf8, 0x08, 0x30, 0x1a, 0xf4, 0x00, 0x5f, 0x03, 0xd0, + 0x4f, 0xf4, 0x00, 0x53, 0xc9, 0xf8, 0x08, 0x30, 0x08, 0xf1, 0x01, 0x08, + 0x7f, 0x08, 0x09, 0xf1, 0x20, 0x09, 0x0b, 0xf1, 0x1c, 0x0b, 0x77, 0xe6, + 0x1a, 0x43, 0x8d, 0xd1, 0x7f, 0x2e, 0x8b, 0xd8, 0x95, 0xf8, 0x9c, 0x32, + 0x03, 0x2b, 0x87, 0xd0, 0xf3, 0xb2, 0xd5, 0xf8, 0xc0, 0x12, 0x85, 0xf8, + 0x9e, 0x32, 0x91, 0xf8, 0xbc, 0x03, 0x01, 0x28, 0x10, 0xd0, 0x08, 0x68, + 0x81, 0xf8, 0x38, 0x30, 0xd0, 0xf8, 0x00, 0x38, 0x23, 0xf4, 0xfe, 0x63, + 0xc0, 0xf8, 0x00, 0x38, 0xd0, 0xf8, 0x00, 0x38, 0x43, 0xea, 0x06, 0x13, + 0xc0, 0xf8, 0x00, 0x38, 0x81, 0xf8, 0xbc, 0x23, 0x28, 0x46, 0xfd, 0xf7, + 0xc5, 0xff, 0x1e, 0xb1, 0x02, 0x23, 0x85, 0xf8, 0x9c, 0x32, 0xac, 0xe7, + 0x01, 0x23, 0xfa, 0xe7, 0xf1, 0xb2, 0xa4, 0x4e, 0x01, 0x29, 0x31, 0x70, + 0x3f, 0xf6, 0x5e, 0xaf, 0x95, 0xf8, 0x9c, 0x32, 0x02, 0x2b, 0x09, 0xd0, + 0x03, 0x2b, 0x19, 0xd0, 0x28, 0x46, 0xe9, 0xf7, 0xbd, 0xfc, 0x31, 0x78, + 0x28, 0x46, 0xfc, 0xf7, 0xb9, 0xfa, 0x96, 0xe7, 0x00, 0x29, 0x3f, 0xf4, + 0x30, 0xaf, 0x01, 0x21, 0x03, 0x23, 0x69, 0x60, 0x85, 0xf8, 0x9c, 0x32, + 0x28, 0x46, 0xfc, 0xf7, 0xb4, 0xfa, 0x02, 0x28, 0x28, 0x46, 0x7f, 0xf4, + 0x25, 0xaf, 0xe9, 0xf7, 0xa7, 0xfc, 0x84, 0xe7, 0x39, 0xb9, 0x02, 0x23, + 0x28, 0x46, 0x69, 0x60, 0x85, 0xf8, 0x9c, 0x32, 0xfc, 0xf7, 0x9e, 0xfa, + 0x17, 0xe7, 0x69, 0x68, 0x01, 0x29, 0x3f, 0xf4, 0x14, 0xaf, 0xc9, 0xb2, + 0x28, 0x46, 0xfc, 0xf7, 0x95, 0xfa, 0x31, 0x78, 0x69, 0x60, 0xe1, 0xe7, + 0x01, 0x2a, 0x7f, 0xf4, 0x27, 0xaf, 0x95, 0xf8, 0x9c, 0x32, 0x02, 0x2b, + 0x0a, 0xd8, 0x00, 0x2b, 0x3f, 0xf4, 0x20, 0xaf, 0x29, 0x46, 0x00, 0x23, + 0x41, 0xf8, 0x08, 0x3f, 0x28, 0x46, 0xfd, 0xf7, 0x67, 0xff, 0x5e, 0xe7, + 0x03, 0x2b, 0x7f, 0xf4, 0x15, 0xaf, 0x29, 0x1d, 0xf6, 0xe7, 0x95, 0xf8, + 0x9c, 0x32, 0x01, 0x3b, 0x02, 0x2b, 0x3f, 0xf6, 0x0d, 0xaf, 0x02, 0x2a, + 0x7f, 0xf4, 0x0a, 0xaf, 0x01, 0x23, 0xeb, 0x60, 0xd5, 0xf8, 0xa4, 0x32, + 0x0b, 0xb1, 0x03, 0x23, 0xeb, 0x60, 0x02, 0x22, 0x05, 0xf1, 0x0c, 0x01, + 0xe2, 0xe7, 0x01, 0x2e, 0x7f, 0xf4, 0x43, 0xaf, 0xc5, 0xf8, 0xa4, 0x62, + 0xdb, 0xe6, 0x95, 0xf8, 0x9c, 0x32, 0x01, 0x3b, 0x02, 0x2b, 0x3f, 0xf6, + 0xf3, 0xae, 0x01, 0x2e, 0x7f, 0xf4, 0x37, 0xaf, 0x00, 0x23, 0xc5, 0xf8, + 0xa4, 0x32, 0xce, 0xe6, 0x00, 0xf0, 0x60, 0x02, 0x40, 0x2a, 0x02, 0xd0, + 0x42, 0x06, 0x3f, 0xf5, 0xe5, 0xae, 0x95, 0xf8, 0x9c, 0x22, 0x01, 0x3a, + 0x02, 0x2a, 0x3f, 0xf6, 0xdf, 0xae, 0xdb, 0xb2, 0x02, 0x2b, 0x3f, 0xf6, + 0xdb, 0xae, 0xd5, 0xf8, 0xb4, 0x32, 0x28, 0x46, 0x9b, 0x68, 0x98, 0x47, + 0xb5, 0xf8, 0xae, 0x32, 0x00, 0x2b, 0x7f, 0xf4, 0x18, 0xaf, 0x00, 0x28, + 0x7f, 0xf4, 0x15, 0xaf, 0xaf, 0xe6, 0x00, 0xf0, 0x60, 0x00, 0x20, 0x28, + 0x31, 0xd0, 0x40, 0x28, 0x2f, 0xd0, 0x00, 0x28, 0x7f, 0xf4, 0xc4, 0xae, + 0xbc, 0xf1, 0x01, 0x0f, 0xd9, 0xb2, 0x40, 0xd0, 0xbc, 0xf1, 0x03, 0x0f, + 0x2b, 0xd0, 0xbc, 0xf1, 0x00, 0x0f, 0x7f, 0xf4, 0xb9, 0xae, 0x95, 0xf8, + 0x9c, 0x22, 0x02, 0x2a, 0x00, 0xf0, 0x9c, 0x80, 0x03, 0x2a, 0x7f, 0xf4, + 0xb1, 0xae, 0x5b, 0xb2, 0x01, 0xf0, 0x0f, 0x00, 0x14, 0x26, 0x00, 0x2b, + 0x06, 0xfb, 0x00, 0x50, 0x80, 0xf2, 0x9f, 0x80, 0x82, 0x69, 0x00, 0x2a, + 0x3f, 0xf4, 0xa4, 0xae, 0x01, 0xf0, 0x7f, 0x02, 0x02, 0xfb, 0x06, 0x66, + 0x2e, 0x44, 0x11, 0xf0, 0x7f, 0x02, 0x40, 0xf0, 0x9e, 0x80, 0x32, 0x60, + 0x02, 0x22, 0x31, 0x46, 0x7a, 0xe7, 0xd5, 0xf8, 0xb4, 0x32, 0x28, 0x46, + 0x9b, 0x68, 0x98, 0x47, 0xd7, 0xe6, 0x95, 0xf8, 0x9c, 0x32, 0x02, 0x2b, + 0x5a, 0xd0, 0x03, 0x2b, 0x7f, 0xf4, 0x8a, 0xae, 0x4b, 0x06, 0x3f, 0xf4, + 0x6a, 0xae, 0x56, 0xea, 0x02, 0x03, 0x7f, 0xf4, 0x66, 0xae, 0x28, 0x46, + 0xfe, 0xf7, 0xa8, 0xff, 0x61, 0xe6, 0x95, 0xf8, 0x9c, 0x22, 0x02, 0x2a, + 0x48, 0xd0, 0x03, 0x2a, 0x7f, 0xf4, 0x78, 0xae, 0x00, 0x2e, 0x7f, 0xf4, + 0xbc, 0xae, 0x4a, 0x06, 0x3f, 0xf4, 0x55, 0xae, 0xd5, 0xf8, 0xc0, 0x22, + 0x01, 0xf0, 0x0f, 0x01, 0x50, 0x68, 0x81, 0x42, 0x3f, 0xf6, 0x4d, 0xae, + 0xc1, 0xeb, 0xc1, 0x00, 0x13, 0xf0, 0x80, 0x0f, 0x4f, 0xf0, 0x1c, 0x03, + 0x4f, 0xea, 0x80, 0x00, 0x39, 0xd0, 0x3c, 0x30, 0x03, 0xfb, 0x01, 0x23, + 0x01, 0x26, 0x10, 0x44, 0x83, 0xf8, 0x3d, 0x60, 0x00, 0x23, 0x01, 0x70, + 0x83, 0x70, 0x92, 0xf8, 0xbc, 0x33, 0x01, 0x2b, 0x3f, 0xf4, 0x35, 0xae, + 0x01, 0x23, 0x11, 0x68, 0x4f, 0xf0, 0x20, 0x0c, 0x82, 0xf8, 0xbc, 0x33, + 0x43, 0x78, 0x06, 0x78, 0x01, 0x2b, 0x0c, 0xbf, 0x01, 0xf5, 0x10, 0x63, + 0x01, 0xf5, 0x30, 0x63, 0x1c, 0xfb, 0x06, 0x33, 0x19, 0x68, 0x21, 0xf4, + 0x00, 0x11, 0x19, 0x60, 0xc1, 0x78, 0x02, 0x39, 0x01, 0x29, 0x03, 0xd8, + 0x19, 0x68, 0x41, 0xf0, 0x80, 0x51, 0x19, 0x60, 0x00, 0x23, 0x82, 0xf8, + 0xbc, 0x33, 0x14, 0xe6, 0x4e, 0x06, 0x28, 0x46, 0x3f, 0xf4, 0xed, 0xae, + 0xfe, 0xf7, 0x54, 0xff, 0x80, 0x21, 0x28, 0x46, 0xfe, 0xf7, 0x50, 0xff, + 0x6d, 0xe6, 0x00, 0xf5, 0xfe, 0x70, 0x03, 0xfb, 0x01, 0x23, 0x00, 0x26, + 0x10, 0x44, 0x83, 0xf8, 0xfd, 0x61, 0xc3, 0xe7, 0x0a, 0x30, 0x54, 0x4f, + 0xbc, 0x3f, 0x02, 0x24, 0x80, 0x3f, 0x02, 0x24, 0x4e, 0x06, 0x7f, 0xf4, + 0x15, 0xae, 0x18, 0x06, 0x4f, 0xf0, 0x00, 0x03, 0x4f, 0xf0, 0x02, 0x02, + 0x4c, 0xbf, 0x05, 0xf1, 0x14, 0x01, 0x05, 0xf5, 0xaa, 0x71, 0x0b, 0x60, + 0xec, 0xe6, 0xd0, 0xf8, 0x58, 0x21, 0x00, 0x2a, 0x3f, 0xf4, 0x04, 0xae, + 0x01, 0xf0, 0x7f, 0x02, 0x06, 0xfb, 0x02, 0x56, 0x06, 0xf5, 0xaa, 0x76, + 0x5d, 0xe7, 0x00, 0x2b, 0xd5, 0xf8, 0xc0, 0x02, 0x4f, 0xf0, 0x1c, 0x03, + 0xb5, 0xbf, 0x03, 0xfb, 0x02, 0x01, 0x03, 0xfb, 0x01, 0x03, 0x91, 0xf8, + 0x3e, 0x30, 0x93, 0xf8, 0xfe, 0x31, 0x03, 0xb1, 0x01, 0x23, 0x33, 0x60, + 0x50, 0xe7, 0x00, 0xf0, 0x80, 0x01, 0xbc, 0xe7, 0x02, 0x9b, 0xd9, 0x07, + 0x40, 0xf1, 0x0c, 0x81, 0xd9, 0xf8, 0x00, 0x00, 0x9d, 0xf8, 0x04, 0xa0, + 0xd0, 0xf8, 0x10, 0x18, 0x00, 0xf5, 0x10, 0x62, 0xd0, 0xf8, 0x34, 0x58, + 0x0a, 0xf0, 0x0f, 0x08, 0x02, 0xeb, 0x4a, 0x12, 0x25, 0xfa, 0x08, 0xf8, + 0x92, 0x68, 0x4f, 0xea, 0xc8, 0x18, 0x5f, 0xfa, 0x88, 0xf8, 0x48, 0xea, + 0x01, 0x08, 0x08, 0xea, 0x02, 0x08, 0x18, 0xf0, 0x01, 0x0f, 0x42, 0xd0, + 0x01, 0x9b, 0xd4, 0xf8, 0x34, 0x28, 0x03, 0xf0, 0x0f, 0x01, 0x01, 0x23, + 0x03, 0xfa, 0x01, 0xf1, 0x22, 0xea, 0x01, 0x02, 0xd9, 0xf8, 0x10, 0x10, + 0x99, 0x42, 0xc4, 0xf8, 0x34, 0x28, 0xcb, 0xf8, 0x08, 0x30, 0x0b, 0xd1, + 0x01, 0x9b, 0xd7, 0xe9, 0x11, 0x52, 0x2a, 0x44, 0xba, 0x64, 0xd9, 0xf8, + 0x50, 0x20, 0x13, 0x43, 0x02, 0xd1, 0x98, 0x4a, 0xec, 0xf7, 0x64, 0xfb, + 0x97, 0x4b, 0xd3, 0xf8, 0x04, 0x54, 0xba, 0xf1, 0x00, 0x0f, 0x40, 0xf0, + 0x9b, 0x80, 0xd5, 0xf8, 0x94, 0x22, 0x02, 0x2a, 0x40, 0xf0, 0x8e, 0x80, + 0xd5, 0xe9, 0x08, 0x20, 0x82, 0x42, 0x60, 0xd9, 0x12, 0x1a, 0x99, 0x6c, + 0xd5, 0xf8, 0xc0, 0x02, 0x2a, 0x62, 0x92, 0xb2, 0xe9, 0xf7, 0x05, 0xfb, + 0x52, 0x46, 0x51, 0x46, 0xd5, 0xf8, 0xc0, 0x02, 0xe9, 0xf7, 0x14, 0xfb, + 0x95, 0xf8, 0xa0, 0x22, 0x01, 0x2a, 0x02, 0xd1, 0x00, 0x22, 0x85, 0xf8, + 0xa0, 0x22, 0x18, 0xf0, 0x08, 0x0f, 0x02, 0xd0, 0x08, 0x22, 0xcb, 0xf8, + 0x08, 0x20, 0x18, 0xf0, 0x10, 0x0f, 0x02, 0xd0, 0x10, 0x22, 0xcb, 0xf8, + 0x08, 0x20, 0x18, 0xf0, 0x40, 0x0f, 0x02, 0xd0, 0x40, 0x22, 0xcb, 0xf8, + 0x08, 0x20, 0x18, 0xf0, 0x02, 0x0f, 0x02, 0xd0, 0x02, 0x22, 0xcb, 0xf8, + 0x08, 0x20, 0x18, 0xf0, 0x80, 0x0f, 0x00, 0xf0, 0x91, 0x80, 0xd7, 0xe9, + 0x14, 0x21, 0x91, 0x42, 0x00, 0xf2, 0x8c, 0x80, 0x52, 0x1a, 0x79, 0x6c, + 0xd9, 0xf8, 0x00, 0x50, 0x8a, 0x42, 0x01, 0x9b, 0x05, 0xf5, 0x10, 0x6c, + 0x28, 0xbf, 0x0a, 0x46, 0x05, 0xf5, 0x80, 0x51, 0x0c, 0xeb, 0x43, 0x1c, + 0x03, 0x32, 0x01, 0xeb, 0x0a, 0x33, 0x92, 0x08, 0xdc, 0xf8, 0x18, 0xe0, + 0x1f, 0xfa, 0x8e, 0xfe, 0x96, 0x45, 0xd7, 0xe9, 0x14, 0x01, 0x6f, 0xd3, + 0x88, 0x42, 0x01, 0xd9, 0x00, 0x28, 0x4c, 0xd1, 0x01, 0x9a, 0x01, 0x21, + 0xd5, 0xf8, 0x34, 0x38, 0x02, 0xf0, 0x0f, 0x02, 0x01, 0xfa, 0x02, 0xf2, + 0x23, 0xea, 0x02, 0x03, 0xc5, 0xf8, 0x34, 0x38, 0x60, 0xe0, 0xe9, 0x69, + 0xb1, 0xfb, 0xf0, 0xf2, 0x00, 0xfb, 0x12, 0x12, 0x72, 0xb9, 0x88, 0x42, + 0x0c, 0xd8, 0xd5, 0xf8, 0x98, 0x22, 0x91, 0x42, 0x08, 0xd2, 0x52, 0x46, + 0x51, 0x46, 0xd5, 0xf8, 0xc0, 0x02, 0xe9, 0xf7, 0x9a, 0xfa, 0xc5, 0xf8, + 0x98, 0xa2, 0x91, 0xe7, 0xd5, 0xf8, 0xb4, 0x22, 0xd2, 0x68, 0x2a, 0xb1, + 0x95, 0xf8, 0x9c, 0x12, 0x03, 0x29, 0x01, 0xd1, 0x28, 0x46, 0x90, 0x47, + 0x80, 0x21, 0x28, 0x46, 0xfe, 0xf7, 0x3e, 0xfe, 0x05, 0x22, 0xc5, 0xf8, + 0x94, 0x22, 0x00, 0x22, 0x11, 0x46, 0x7f, 0xe7, 0x32, 0xf0, 0x04, 0x03, + 0x80, 0xd1, 0x80, 0x21, 0x28, 0x46, 0xfe, 0xf7, 0x31, 0xfe, 0x7b, 0xe7, + 0xd5, 0xf8, 0xb4, 0x22, 0x52, 0x69, 0x00, 0x2a, 0x3f, 0xf4, 0x7d, 0xaf, + 0x95, 0xf8, 0x9c, 0x12, 0x03, 0x29, 0x7f, 0xf4, 0x78, 0xaf, 0x51, 0x46, + 0x28, 0x46, 0x90, 0x47, 0x73, 0xe7, 0x41, 0x1a, 0x7a, 0x6c, 0x99, 0xf8, + 0x10, 0x00, 0x91, 0x42, 0x28, 0xbf, 0x11, 0x46, 0xca, 0x1c, 0x92, 0x08, + 0x30, 0xb1, 0xb8, 0x6c, 0x08, 0x44, 0xb8, 0x64, 0x78, 0x6d, 0x01, 0x44, + 0x79, 0x65, 0x95, 0xe7, 0x88, 0xb2, 0xd7, 0xf8, 0x48, 0xe0, 0x03, 0x30, + 0x80, 0x08, 0x0e, 0xeb, 0x80, 0x00, 0x86, 0x45, 0xef, 0xd0, 0x5e, 0xf8, + 0x04, 0x8b, 0xc3, 0xf8, 0x00, 0x80, 0xf8, 0xe7, 0x88, 0x42, 0x91, 0xd9, + 0x01, 0x9b, 0x1c, 0x37, 0x0b, 0xf1, 0x20, 0x0b, 0x01, 0x33, 0x01, 0x93, + 0x02, 0x9b, 0x5b, 0x08, 0x02, 0x93, 0xff, 0xf7, 0x59, 0xb8, 0xd3, 0xf8, + 0x04, 0x34, 0x93, 0xf8, 0x9c, 0x22, 0x83, 0xf8, 0x9d, 0x22, 0x04, 0x22, + 0x83, 0xf8, 0x9c, 0x22, 0xff, 0xf7, 0x95, 0xb8, 0x9f, 0x60, 0x20, 0x33, + 0x53, 0xf8, 0x20, 0x1c, 0x21, 0xf4, 0x00, 0x11, 0x43, 0xf8, 0x20, 0x1c, + 0x53, 0xf8, 0x20, 0x1c, 0x41, 0xf0, 0x00, 0x61, 0x43, 0xf8, 0x20, 0x1c, + 0xc3, 0xf8, 0xe8, 0x71, 0xd3, 0xf8, 0xe0, 0x11, 0x21, 0xf4, 0x00, 0x11, + 0xc3, 0xf8, 0xe0, 0x11, 0xd3, 0xf8, 0xe0, 0x11, 0x41, 0xf0, 0x00, 0x61, + 0xc3, 0xf8, 0xe0, 0x11, 0x03, 0x99, 0x01, 0x31, 0x03, 0x91, 0xff, 0xf7, + 0x8f, 0xb8, 0x53, 0x69, 0x43, 0xf4, 0x00, 0x53, 0x43, 0xf0, 0x2b, 0x03, + 0x53, 0x61, 0x13, 0x69, 0x43, 0xf0, 0x0b, 0x03, 0x13, 0x61, 0xff, 0xf7, + 0x9d, 0xb8, 0x0f, 0x23, 0xff, 0xf7, 0x0d, 0xb9, 0x0e, 0x23, 0xff, 0xf7, + 0x0a, 0xb9, 0x0d, 0x23, 0xff, 0xf7, 0x07, 0xb9, 0x0c, 0x23, 0xff, 0xf7, + 0x04, 0xb9, 0x0b, 0x23, 0xff, 0xf7, 0x01, 0xb9, 0x0a, 0x23, 0xff, 0xf7, + 0xfe, 0xb8, 0x09, 0x23, 0xff, 0xf7, 0xfb, 0xb8, 0x08, 0x23, 0xff, 0xf7, + 0xf8, 0xb8, 0x00, 0xbf, 0x80, 0x43, 0x02, 0x24, 0xbc, 0x3f, 0x02, 0x24, + 0x52, 0x48, 0xf8, 0xb5, 0x05, 0x78, 0xbf, 0xf3, 0x5b, 0x8f, 0x15, 0xf0, + 0x01, 0x05, 0x40, 0xf0, 0x92, 0x80, 0xf5, 0xf7, 0x07, 0xfc, 0x00, 0x28, + 0x00, 0xf0, 0x8d, 0x80, 0x4c, 0x4c, 0x5c, 0x22, 0x4c, 0x4b, 0x29, 0x46, + 0x04, 0xf1, 0x08, 0x00, 0x4b, 0x4e, 0x23, 0x60, 0x01, 0x27, 0x4b, 0x4b, + 0x63, 0x60, 0x02, 0xf0, 0xb3, 0xfb, 0x3b, 0x23, 0x20, 0x1d, 0xc4, 0xf8, + 0xa8, 0x50, 0xa4, 0xf8, 0x9a, 0x30, 0x47, 0x4b, 0xa4, 0xf8, 0x68, 0x50, + 0xc4, 0xf8, 0x8c, 0x50, 0x84, 0xf8, 0x98, 0x50, 0xc4, 0xe9, 0x27, 0x63, + 0x4f, 0xf4, 0x00, 0x33, 0x66, 0x26, 0x63, 0x66, 0x41, 0x4b, 0xa4, 0xf8, + 0xa4, 0x60, 0xc4, 0xe9, 0x24, 0x37, 0x40, 0x4b, 0xc4, 0xe9, 0x2b, 0x35, + 0xf5, 0xf7, 0x34, 0xff, 0x04, 0xf1, 0xbc, 0x00, 0xa4, 0xf8, 0xb8, 0x60, + 0xe9, 0xf7, 0x44, 0xf9, 0x3b, 0x4b, 0x3c, 0x48, 0xc4, 0xf8, 0xf4, 0x31, + 0xc4, 0xf8, 0x00, 0x52, 0x84, 0xf8, 0x04, 0x52, 0xf6, 0xf7, 0x7e, 0xfc, + 0xf2, 0xf7, 0x2c, 0xfb, 0x37, 0x4a, 0x15, 0x68, 0x09, 0x2d, 0x51, 0xdc, + 0x36, 0x4b, 0x1b, 0x68, 0x98, 0x1e, 0x19, 0x46, 0x03, 0xf1, 0x12, 0x06, + 0x30, 0xf9, 0x02, 0x7f, 0x66, 0x2f, 0x4a, 0xd0, 0xb0, 0x42, 0xf9, 0xd1, + 0x14, 0x33, 0x08, 0x46, 0x02, 0x31, 0xb0, 0xf9, 0x00, 0x60, 0x01, 0x36, + 0x3b, 0xd1, 0x66, 0x23, 0x03, 0x80, 0x01, 0x35, 0x15, 0x60, 0x00, 0x25, + 0x28, 0x48, 0xf6, 0xf7, 0x5d, 0xfc, 0xf2, 0xf7, 0xeb, 0xfa, 0x00, 0x20, + 0x00, 0x21, 0xc4, 0xf8, 0xb4, 0x50, 0x03, 0x25, 0x00, 0x23, 0x4f, 0xf0, + 0xff, 0x32, 0xc4, 0xf8, 0x60, 0x31, 0xc4, 0xf8, 0x18, 0x21, 0x84, 0xf8, + 0x54, 0x31, 0x84, 0xf8, 0xfd, 0x31, 0x84, 0xf8, 0xfe, 0x31, 0xc4, 0xf8, + 0xe8, 0x20, 0xc4, 0xf8, 0xfc, 0x20, 0xa4, 0xf8, 0x00, 0x31, 0xc4, 0xe9, + 0x44, 0x01, 0x4f, 0xf4, 0x00, 0x30, 0x01, 0x21, 0xc4, 0xf8, 0xf8, 0x01, + 0x02, 0x20, 0xc4, 0xf8, 0x28, 0x11, 0x84, 0xf8, 0xf0, 0x10, 0x84, 0xf8, + 0x02, 0x11, 0xc4, 0xe9, 0x38, 0x50, 0x35, 0x20, 0xc4, 0xf8, 0xec, 0x00, + 0x07, 0x48, 0xc4, 0xe9, 0x3d, 0x22, 0xf5, 0xf7, 0x6f, 0xfb, 0x06, 0x48, + 0xf8, 0xbd, 0x99, 0x42, 0xbb, 0xd1, 0xc2, 0xe7, 0x6f, 0xf0, 0x01, 0x05, + 0xc2, 0xe7, 0x4f, 0xf0, 0xff, 0x35, 0xbf, 0xe7, 0x38, 0x2c, 0x02, 0x24, + 0x48, 0x2d, 0x02, 0x24, 0x0c, 0xeb, 0x01, 0x08, 0x3c, 0x00, 0x57, 0x00, + 0x34, 0xe1, 0x01, 0x08, 0x3d, 0x00, 0x5a, 0x00, 0x40, 0x42, 0x0f, 0x00, + 0xc9, 0xeb, 0x00, 0x08, 0x00, 0x5a, 0x62, 0x02, 0x2c, 0x15, 0x02, 0x24, + 0x54, 0x15, 0x02, 0x24, 0xd8, 0x06, 0x00, 0x24, 0x09, 0x4b, 0x0a, 0x4a, + 0x19, 0x78, 0xff, 0x29, 0x0b, 0xd1, 0x01, 0x33, 0x93, 0x42, 0xf9, 0xd1, + 0x07, 0x4a, 0x19, 0x78, 0xff, 0x29, 0x04, 0xd1, 0x01, 0x33, 0x93, 0x42, + 0xf9, 0xd1, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0xbf, + 0x00, 0x03, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0x05, 0x00, 0x08, + 0x2d, 0xe9, 0xf7, 0x4f, 0xfd, 0xf7, 0x6a, 0xfa, 0x00, 0x20, 0xfd, 0xf7, + 0x4b, 0xfa, 0x40, 0xf2, 0xaa, 0x73, 0xa9, 0x4c, 0x98, 0x42, 0xa9, 0x4d, + 0x63, 0xd1, 0x01, 0x20, 0xfd, 0xf7, 0x42, 0xfa, 0xc0, 0xb2, 0x20, 0x60, + 0x01, 0x20, 0xfd, 0xf7, 0x3d, 0xfa, 0x00, 0xf0, 0x07, 0x00, 0x20, 0x71, + 0x01, 0x20, 0xfd, 0xf7, 0x37, 0xfa, 0xc0, 0xf3, 0x00, 0x10, 0x60, 0x71, + 0x01, 0x20, 0xfd, 0xf7, 0x31, 0xfa, 0xc0, 0xf3, 0xc0, 0x10, 0xa0, 0x71, + 0x02, 0x20, 0xfd, 0xf7, 0x2b, 0xfa, 0xa0, 0x60, 0x03, 0x20, 0xfd, 0xf7, + 0x27, 0xfa, 0xe0, 0x60, 0x04, 0x20, 0xfd, 0xf7, 0x23, 0xfa, 0xc0, 0xb2, + 0x20, 0x62, 0x04, 0x20, 0xfd, 0xf7, 0x1e, 0xfa, 0x00, 0xf0, 0x07, 0x00, + 0x84, 0xf8, 0x24, 0x00, 0x04, 0x20, 0xfd, 0xf7, 0x17, 0xfa, 0xc0, 0xf3, + 0x00, 0x10, 0x84, 0xf8, 0x25, 0x00, 0x04, 0x20, 0xfd, 0xf7, 0x10, 0xfa, + 0xc0, 0xf3, 0xc0, 0x10, 0x84, 0xf8, 0x26, 0x00, 0x05, 0x20, 0xfd, 0xf7, + 0x09, 0xfa, 0xa0, 0x62, 0x06, 0x20, 0xfd, 0xf7, 0x05, 0xfa, 0x2b, 0x78, + 0xe0, 0x62, 0x8b, 0xb1, 0x87, 0x48, 0x03, 0xf0, 0xc1, 0xfe, 0x2b, 0x78, + 0x63, 0xb1, 0x22, 0x79, 0x21, 0x68, 0x85, 0x48, 0xf3, 0xf7, 0x6e, 0xf9, + 0x2b, 0x78, 0x2b, 0xb1, 0x94, 0xf8, 0x24, 0x20, 0x21, 0x6a, 0x82, 0x48, + 0xf3, 0xf7, 0x66, 0xf9, 0x23, 0x79, 0x94, 0xf8, 0x24, 0x20, 0x03, 0xf0, + 0x02, 0x01, 0x9a, 0x42, 0x40, 0xf0, 0x16, 0x81, 0xf9, 0xb1, 0x2b, 0x78, + 0x3b, 0xb3, 0x7c, 0x48, 0x03, 0xf0, 0xa4, 0xfe, 0x23, 0xe0, 0x02, 0x20, 0x4f, 0xf4, 0xf0, 0x13, 0xa4, 0x21, 0x04, 0x22, 0xa0, 0x62, 0x21, 0x60, 0xa2, 0x80, 0x21, 0x62, 0xa2, 0x84, 0xc4, 0xe9, 0x02, 0x03, 0x01, 0x23, 0x4f, 0xf4, 0x00, 0x30, 0xa3, 0x71, 0x84, 0xf8, 0x26, 0x30, 0x2b, 0x78, - 0xe0, 0x62, 0x00, 0x2b, 0xda, 0xd0, 0x72, 0x48, 0x02, 0xf0, 0x34, 0xfd, - 0xd6, 0xe7, 0x11, 0x07, 0x14, 0xd5, 0x88, 0x20, 0xf5, 0xf7, 0x3e, 0xf8, - 0x06, 0x46, 0xfd, 0xf7, 0x9f, 0xf9, 0x26, 0x61, 0x26, 0x63, 0x63, 0x79, - 0x00, 0x2b, 0x40, 0xd0, 0x22, 0x79, 0x12, 0xf0, 0x02, 0x08, 0x14, 0xd0, - 0x2b, 0x78, 0x33, 0xb3, 0x65, 0x48, 0x02, 0xf0, 0x1d, 0xfd, 0x1f, 0xe0, - 0x52, 0x07, 0x07, 0xd5, 0x4f, 0xf4, 0x02, 0x70, 0xf5, 0xf7, 0x26, 0xf8, - 0x06, 0x46, 0xe8, 0xf7, 0x7f, 0xfc, 0xe6, 0xe7, 0x2b, 0x78, 0x00, 0x2b, - 0xe5, 0xd0, 0x5f, 0x48, 0xbc, 0xe7, 0x12, 0xf0, 0x08, 0x07, 0x13, 0xd0, - 0x28, 0x20, 0xf5, 0xf7, 0x17, 0xf8, 0xe3, 0x68, 0x06, 0x46, 0xa2, 0x68, - 0xcd, 0xe9, 0x00, 0x38, 0x43, 0x46, 0x21, 0x69, 0xf1, 0xf7, 0xb6, 0xfb, - 0x66, 0x61, 0x66, 0x63, 0x63, 0x79, 0x00, 0x2b, 0x4a, 0xd0, 0x03, 0xb0, - 0xbd, 0xe8, 0xf0, 0x8f, 0x53, 0x07, 0x09, 0xd5, 0x28, 0x20, 0xf5, 0xf7, - 0x01, 0xf8, 0xe3, 0x68, 0x06, 0x46, 0xa2, 0x68, 0xcd, 0xe9, 0x00, 0x37, - 0x3b, 0x46, 0xe8, 0xe7, 0x2b, 0x78, 0x00, 0x2b, 0xed, 0xd0, 0x4b, 0x48, - 0xc5, 0xe7, 0xa3, 0x79, 0x00, 0x2b, 0x30, 0xd0, 0x22, 0x6a, 0x23, 0x68, - 0x9a, 0x42, 0x04, 0xd0, 0x2b, 0x78, 0x13, 0xb1, 0x46, 0x48, 0x02, 0xf0, - 0xd9, 0xfc, 0xa2, 0x68, 0xa3, 0x6a, 0x9a, 0x42, 0x04, 0xd0, 0x2b, 0x78, - 0x13, 0xb1, 0x43, 0x48, 0x02, 0xf0, 0xd0, 0xfc, 0x28, 0x20, 0x42, 0x4e, - 0xf4, 0xf7, 0xdc, 0xff, 0x22, 0x69, 0x00, 0x27, 0xa1, 0x68, 0x60, 0x61, - 0x41, 0x76, 0x60, 0x63, 0xc0, 0xe9, 0x00, 0x62, 0x00, 0x22, 0x00, 0x26, - 0x02, 0x76, 0xc2, 0x61, 0x80, 0xf8, 0x20, 0x20, 0xc0, 0xe9, 0x02, 0x67, - 0xc0, 0xe9, 0x04, 0x67, 0xf3, 0xf7, 0x46, 0xf8, 0x00, 0x28, 0xb9, 0xd0, - 0x2b, 0x78, 0x00, 0x2b, 0xb6, 0xd0, 0x35, 0x48, 0x91, 0xe7, 0x23, 0x69, - 0x63, 0x61, 0x63, 0x63, 0x23, 0x68, 0x5e, 0x06, 0x43, 0xd5, 0xc8, 0x20, - 0xf4, 0xf7, 0xb8, 0xff, 0x30, 0x49, 0x06, 0x46, 0xe8, 0xf7, 0xe2, 0xfb, - 0xe6, 0x61, 0xe0, 0x69, 0x61, 0x69, 0x03, 0x68, 0xe0, 0x63, 0x5b, 0x6a, - 0x98, 0x47, 0x20, 0xb1, 0x2b, 0x78, 0x13, 0xb1, 0x2a, 0x48, 0x02, 0xf0, - 0x97, 0xfc, 0x38, 0x20, 0x01, 0x26, 0xf4, 0xf7, 0xa3, 0xff, 0x00, 0x27, - 0xe3, 0x68, 0x00, 0x25, 0x26, 0x4a, 0x4f, 0xf4, 0x80, 0x58, 0xdf, 0xf8, - 0x9c, 0xb0, 0x4f, 0xf0, 0x00, 0x09, 0xdf, 0xf8, 0x98, 0xa0, 0x82, 0x60, - 0xc0, 0xf8, 0x00, 0xb0, 0x45, 0x61, 0xa0, 0x61, 0xc0, 0xe9, 0x03, 0xa3, - 0xc0, 0xe9, 0x06, 0x67, 0xc0, 0xe9, 0x08, 0x67, 0xc0, 0xe9, 0x0a, 0x89, - 0x38, 0x20, 0xf4, 0xf7, 0x87, 0xff, 0xe3, 0x6a, 0x1a, 0x4a, 0xc0, 0xf8, - 0x00, 0xb0, 0xc0, 0xe9, 0x02, 0x2a, 0xc0, 0xe9, 0x04, 0x35, 0xc0, 0xe9, - 0x06, 0x67, 0xc0, 0xe9, 0x08, 0x67, 0xc0, 0xe9, 0x0a, 0x89, 0xa0, 0x63, - 0x6d, 0xe7, 0x54, 0x20, 0xf4, 0xf7, 0x74, 0xff, 0x0e, 0x49, 0x06, 0x46, - 0xe8, 0xf7, 0x82, 0xfb, 0xba, 0xe7, 0x00, 0xbf, 0xb4, 0x05, 0x00, 0x24, - 0xd8, 0x0d, 0x00, 0x24, 0xfe, 0xe9, 0x01, 0x08, 0x10, 0xea, 0x01, 0x08, - 0x27, 0xea, 0x01, 0x08, 0x4f, 0xea, 0x01, 0x08, 0x3c, 0xea, 0x01, 0x08, - 0x5a, 0xea, 0x01, 0x08, 0x63, 0xea, 0x01, 0x08, 0x6c, 0xea, 0x01, 0x08, - 0xec, 0xec, 0x01, 0x08, 0x76, 0xea, 0x01, 0x08, 0x76, 0xdf, 0x01, 0x08, - 0x7d, 0xea, 0x01, 0x08, 0x85, 0xea, 0x01, 0x08, 0x98, 0xea, 0x01, 0x08, - 0x50, 0xed, 0x01, 0x08, 0x94, 0xea, 0x01, 0x08, 0x29, 0xb1, 0x2b, 0x78, - 0x63, 0xb1, 0xa8, 0x48, 0x02, 0xf0, 0x34, 0xfc, 0x08, 0xe0, 0x18, 0x07, - 0x10, 0xd5, 0x88, 0x20, 0xf4, 0xf7, 0x3e, 0xff, 0x06, 0x46, 0xfd, 0xf7, - 0x9f, 0xf8, 0x26, 0x61, 0x94, 0xf8, 0x24, 0x30, 0x9a, 0x07, 0x14, 0xd5, - 0x2b, 0x78, 0xdb, 0xb1, 0x9f, 0x48, 0x02, 0xf0, 0x21, 0xfc, 0x17, 0xe0, - 0x59, 0x07, 0x07, 0xd5, 0x4f, 0xf4, 0x02, 0x70, 0xf4, 0xf7, 0x2a, 0xff, - 0x06, 0x46, 0xe8, 0xf7, 0x83, 0xfb, 0xea, 0xe7, 0x2b, 0x78, 0x00, 0x2b, - 0xe8, 0xd0, 0x98, 0x48, 0xda, 0xe7, 0x1f, 0x07, 0x13, 0xd5, 0x88, 0x20, - 0xf4, 0xf7, 0x1c, 0xff, 0x06, 0x46, 0xfd, 0xf7, 0x7d, 0xf8, 0x26, 0x63, - 0x66, 0x79, 0x00, 0x2e, 0x4a, 0xd0, 0x22, 0x79, 0x12, 0xf0, 0x02, 0x08, - 0x14, 0xd0, 0x2b, 0x78, 0x13, 0xb3, 0x8c, 0x48, 0x02, 0xf0, 0xfc, 0xfb, - 0x1e, 0xe0, 0x5e, 0x07, 0x07, 0xd5, 0x4f, 0xf4, 0x02, 0x70, 0xf4, 0xf7, - 0x05, 0xff, 0x06, 0x46, 0xe8, 0xf7, 0x5e, 0xfb, 0xe7, 0xe7, 0x2b, 0x78, - 0x00, 0x2b, 0xe5, 0xd0, 0x86, 0x48, 0xc8, 0xe7, 0x12, 0xf0, 0x08, 0x07, - 0x1d, 0xd0, 0x28, 0x20, 0xf4, 0xf7, 0xf6, 0xfe, 0xe3, 0x68, 0x06, 0x46, - 0xa2, 0x68, 0xcd, 0xe9, 0x00, 0x38, 0x43, 0x46, 0x21, 0x69, 0xf1, 0xf7, - 0x95, 0xfa, 0x66, 0x61, 0x94, 0xf8, 0x25, 0x60, 0x00, 0x2e, 0x00, 0xf0, + 0xe0, 0x62, 0x00, 0x2b, 0xda, 0xd0, 0x70, 0x48, 0x03, 0xf0, 0x8a, 0xfe, + 0xd6, 0xe7, 0x11, 0x07, 0x14, 0xd5, 0x88, 0x20, 0xf5, 0xf7, 0x94, 0xfa, + 0x06, 0x46, 0xfd, 0xf7, 0x9b, 0xf9, 0x26, 0x61, 0x26, 0x63, 0x63, 0x79, + 0x00, 0x2b, 0x3d, 0xd0, 0x22, 0x79, 0x12, 0xf0, 0x02, 0x08, 0x11, 0xd0, + 0x2b, 0x78, 0x1b, 0xb3, 0x63, 0x48, 0x03, 0xf0, 0x73, 0xfe, 0x1c, 0xe0, + 0x52, 0x07, 0x04, 0xd5, 0xff, 0xf7, 0x82, 0xfe, 0x20, 0x61, 0x20, 0x63, + 0xeb, 0xe7, 0x2b, 0x78, 0x00, 0x2b, 0xe8, 0xd0, 0x5e, 0x48, 0xbf, 0xe7, + 0x12, 0xf0, 0x08, 0x07, 0x13, 0xd0, 0x28, 0x20, 0xf5, 0xf7, 0x70, 0xfa, + 0xe3, 0x68, 0x06, 0x46, 0xa2, 0x68, 0xcd, 0xe9, 0x00, 0x38, 0x43, 0x46, + 0x21, 0x69, 0xf2, 0xf7, 0x93, 0xf9, 0x66, 0x61, 0x66, 0x63, 0x63, 0x79, + 0x00, 0x2b, 0x4a, 0xd0, 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x53, 0x07, + 0x09, 0xd5, 0x28, 0x20, 0xf5, 0xf7, 0x5a, 0xfa, 0xe3, 0x68, 0x06, 0x46, + 0xa2, 0x68, 0xcd, 0xe9, 0x00, 0x37, 0x3b, 0x46, 0xe8, 0xe7, 0x2b, 0x78, + 0x00, 0x2b, 0xed, 0xd0, 0x4a, 0x48, 0xc8, 0xe7, 0xa3, 0x79, 0x00, 0x2b, + 0x30, 0xd0, 0x22, 0x6a, 0x23, 0x68, 0x9a, 0x42, 0x04, 0xd0, 0x2b, 0x78, + 0x13, 0xb1, 0x46, 0x48, 0x03, 0xf0, 0x32, 0xfe, 0xa2, 0x68, 0xa3, 0x6a, + 0x9a, 0x42, 0x04, 0xd0, 0x2b, 0x78, 0x13, 0xb1, 0x42, 0x48, 0x03, 0xf0, + 0x29, 0xfe, 0x28, 0x20, 0x41, 0x4e, 0xf5, 0xf7, 0x35, 0xfa, 0x22, 0x69, + 0x00, 0x27, 0xa1, 0x68, 0x60, 0x61, 0x41, 0x76, 0x60, 0x63, 0xc0, 0xe9, + 0x00, 0x62, 0x00, 0x22, 0x00, 0x26, 0x02, 0x76, 0xc2, 0x61, 0x80, 0xf8, + 0x20, 0x20, 0xc0, 0xe9, 0x02, 0x67, 0xc0, 0xe9, 0x04, 0x67, 0xf3, 0xf7, + 0xf9, 0xfc, 0x00, 0x28, 0xb9, 0xd0, 0x2b, 0x78, 0x00, 0x2b, 0xb6, 0xd0, + 0x34, 0x48, 0x94, 0xe7, 0x23, 0x69, 0x63, 0x61, 0x63, 0x63, 0x23, 0x68, + 0x5e, 0x06, 0x43, 0xd5, 0xc8, 0x20, 0xf5, 0xf7, 0x11, 0xfa, 0x30, 0x49, + 0x06, 0x46, 0xe8, 0xf7, 0xc3, 0xff, 0xe6, 0x61, 0xe0, 0x69, 0x61, 0x69, + 0x03, 0x68, 0xe0, 0x63, 0x5b, 0x6a, 0x98, 0x47, 0x20, 0xb1, 0x2b, 0x78, + 0x13, 0xb1, 0x2a, 0x48, 0x03, 0xf0, 0xf0, 0xfd, 0x38, 0x20, 0x01, 0x26, + 0xf5, 0xf7, 0xfc, 0xf9, 0x00, 0x27, 0xe3, 0x68, 0x00, 0x25, 0x26, 0x4a, + 0x4f, 0xf4, 0x80, 0x58, 0xdf, 0xf8, 0x98, 0xb0, 0x4f, 0xf0, 0x00, 0x09, + 0xdf, 0xf8, 0x94, 0xa0, 0x82, 0x60, 0xc0, 0xf8, 0x00, 0xb0, 0x45, 0x61, + 0xa0, 0x61, 0xc0, 0xe9, 0x03, 0xa3, 0xc0, 0xe9, 0x06, 0x67, 0xc0, 0xe9, + 0x08, 0x67, 0xc0, 0xe9, 0x0a, 0x89, 0x38, 0x20, 0xf5, 0xf7, 0xe0, 0xf9, + 0xe3, 0x6a, 0x1a, 0x4a, 0xc0, 0xf8, 0x00, 0xb0, 0xc0, 0xe9, 0x02, 0x2a, + 0xc0, 0xe9, 0x04, 0x35, 0xc0, 0xe9, 0x06, 0x67, 0xc0, 0xe9, 0x08, 0x67, + 0xc0, 0xe9, 0x0a, 0x89, 0xa0, 0x63, 0x6d, 0xe7, 0x54, 0x20, 0xf5, 0xf7, + 0xcd, 0xf9, 0x0e, 0x49, 0x06, 0x46, 0xe8, 0xf7, 0x63, 0xff, 0xba, 0xe7, + 0xb4, 0x05, 0x00, 0x24, 0x08, 0x0b, 0x02, 0x24, 0x2b, 0xe4, 0x01, 0x08, + 0x3d, 0xe4, 0x01, 0x08, 0x54, 0xe4, 0x01, 0x08, 0x7c, 0xe4, 0x01, 0x08, + 0x69, 0xe4, 0x01, 0x08, 0x87, 0xe4, 0x01, 0x08, 0x90, 0xe4, 0x01, 0x08, + 0x99, 0xe4, 0x01, 0x08, 0xbc, 0xeb, 0x01, 0x08, 0xa3, 0xe4, 0x01, 0x08, + 0xb6, 0xd9, 0x01, 0x08, 0xaa, 0xe4, 0x01, 0x08, 0xb2, 0xe4, 0x01, 0x08, + 0xc5, 0xe4, 0x01, 0x08, 0x20, 0xec, 0x01, 0x08, 0xc1, 0xe4, 0x01, 0x08, + 0x29, 0xb1, 0x2b, 0x78, 0x63, 0xb1, 0xa4, 0x48, 0x03, 0xf0, 0x8e, 0xfd, + 0x08, 0xe0, 0x18, 0x07, 0x10, 0xd5, 0x88, 0x20, 0xf5, 0xf7, 0x98, 0xf9, + 0x06, 0x46, 0xfd, 0xf7, 0x9f, 0xf8, 0x26, 0x61, 0x94, 0xf8, 0x24, 0x30, + 0x9a, 0x07, 0x10, 0xd5, 0x2b, 0x78, 0xbb, 0xb1, 0x9b, 0x48, 0x03, 0xf0, + 0x7b, 0xfd, 0x13, 0xe0, 0x59, 0x07, 0x03, 0xd5, 0xff, 0xf7, 0x8a, 0xfd, + 0x20, 0x61, 0xef, 0xe7, 0x2b, 0x78, 0x00, 0x2b, 0xec, 0xd0, 0x96, 0x48, + 0xde, 0xe7, 0x1f, 0x07, 0x13, 0xd5, 0x88, 0x20, 0xf5, 0xf7, 0x7a, 0xf9, + 0x06, 0x46, 0xfd, 0xf7, 0x81, 0xf8, 0x26, 0x63, 0x66, 0x79, 0x00, 0x2e, + 0x46, 0xd0, 0x22, 0x79, 0x12, 0xf0, 0x02, 0x08, 0x10, 0xd0, 0x2b, 0x78, + 0xf3, 0xb1, 0x8a, 0x48, 0x03, 0xf0, 0x5a, 0xfd, 0x1a, 0xe0, 0x5e, 0x07, + 0x03, 0xd5, 0xff, 0xf7, 0x69, 0xfd, 0x20, 0x63, 0xec, 0xe7, 0x2b, 0x78, + 0x00, 0x2b, 0xe9, 0xd0, 0x86, 0x48, 0xd0, 0xe7, 0x12, 0xf0, 0x08, 0x07, + 0x1d, 0xd0, 0x28, 0x20, 0xf5, 0xf7, 0x58, 0xf9, 0xe3, 0x68, 0x06, 0x46, + 0xa2, 0x68, 0xcd, 0xe9, 0x00, 0x38, 0x43, 0x46, 0x21, 0x69, 0xf2, 0xf7, + 0x7b, 0xf8, 0x66, 0x61, 0x94, 0xf8, 0x25, 0x60, 0x00, 0x2e, 0x00, 0xf0, 0xca, 0x80, 0x94, 0xf8, 0x24, 0x20, 0x12, 0xf0, 0x02, 0x08, 0x3b, 0xd0, - 0x2b, 0x78, 0x00, 0x2b, 0x48, 0xd0, 0x75, 0x48, 0x02, 0xf0, 0xcc, 0xfb, - 0x44, 0xe0, 0x50, 0x07, 0x09, 0xd5, 0x28, 0x20, 0xf4, 0xf7, 0xd6, 0xfe, + 0x2b, 0x78, 0x00, 0x2b, 0x48, 0xd0, 0x75, 0x48, 0x03, 0xf0, 0x2e, 0xfd, + 0x44, 0xe0, 0x50, 0x07, 0x09, 0xd5, 0x28, 0x20, 0xf5, 0xf7, 0x38, 0xf9, 0xe3, 0x68, 0x06, 0x46, 0xa2, 0x68, 0xcd, 0xe9, 0x00, 0x37, 0x3b, 0x46, - 0xde, 0xe7, 0x2b, 0x78, 0x00, 0x2b, 0xdf, 0xd0, 0x6c, 0x48, 0xbb, 0xe7, - 0xa3, 0x79, 0xf3, 0xb1, 0x28, 0x20, 0x4f, 0xf0, 0x00, 0x08, 0xf4, 0xf7, - 0xc3, 0xfe, 0x4f, 0xf0, 0x00, 0x09, 0x21, 0x69, 0xa2, 0x68, 0x68, 0x4f, + 0xde, 0xe7, 0x2b, 0x78, 0x00, 0x2b, 0xdf, 0xd0, 0x6c, 0x48, 0xbf, 0xe7, + 0xa3, 0x79, 0xf3, 0xb1, 0x28, 0x20, 0x4f, 0xf0, 0x00, 0x08, 0xf5, 0xf7, + 0x25, 0xf9, 0x4f, 0xf0, 0x00, 0x09, 0x21, 0x69, 0xa2, 0x68, 0x68, 0x4f, 0x06, 0x76, 0x42, 0x76, 0xc6, 0x61, 0x80, 0xf8, 0x20, 0x60, 0x60, 0x61, 0xc0, 0xe9, 0x00, 0x71, 0xc0, 0xe9, 0x02, 0x89, 0xc0, 0xe9, 0x04, 0x89, - 0xf2, 0xf7, 0x2e, 0xff, 0x00, 0x28, 0xc1, 0xd0, 0x2b, 0x78, 0x00, 0x2b, - 0xbe, 0xd0, 0x5f, 0x48, 0x9a, 0xe7, 0x23, 0x69, 0x63, 0x61, 0xb9, 0xe7, - 0x12, 0xf0, 0x08, 0x07, 0x74, 0xd0, 0x28, 0x20, 0xf4, 0xf7, 0xa0, 0xfe, + 0xf3, 0xf7, 0xea, 0xfb, 0x00, 0x28, 0xc1, 0xd0, 0x2b, 0x78, 0x00, 0x2b, + 0xbe, 0xd0, 0x5f, 0x48, 0x9e, 0xe7, 0x23, 0x69, 0x63, 0x61, 0xb9, 0xe7, + 0x12, 0xf0, 0x08, 0x07, 0x74, 0xd0, 0x28, 0x20, 0xf5, 0xf7, 0x02, 0xf9, 0xe3, 0x6a, 0x06, 0x46, 0xa2, 0x6a, 0xcd, 0xe9, 0x00, 0x38, 0x43, 0x46, - 0x21, 0x6b, 0xf1, 0xf7, 0x3f, 0xfa, 0x66, 0x63, 0x63, 0x79, 0x00, 0x2b, + 0x21, 0x6b, 0xf2, 0xf7, 0x25, 0xf8, 0x66, 0x63, 0x63, 0x79, 0x00, 0x2b, 0x2f, 0xd1, 0x23, 0x68, 0x5a, 0x06, 0x40, 0xf1, 0xb7, 0x80, 0xc8, 0x20, - 0xf4, 0xf7, 0x8c, 0xfe, 0x50, 0x49, 0x06, 0x46, 0xe8, 0xf7, 0xb6, 0xfa, + 0xf5, 0xf7, 0xee, 0xf8, 0x50, 0x49, 0x06, 0x46, 0xe8, 0xf7, 0xa0, 0xfe, 0xe6, 0x61, 0xe0, 0x69, 0x61, 0x69, 0x03, 0x68, 0x5b, 0x6a, 0x98, 0x47, - 0x20, 0xb1, 0x2b, 0x78, 0x13, 0xb1, 0x4b, 0x48, 0x02, 0xf0, 0x6c, 0xfb, - 0x38, 0x20, 0xf4, 0xf7, 0x79, 0xfe, 0x49, 0x4a, 0xe3, 0x68, 0x02, 0x60, + 0x20, 0xb1, 0x2b, 0x78, 0x13, 0xb1, 0x4b, 0x48, 0x03, 0xf0, 0xce, 0xfc, + 0x38, 0x20, 0xf5, 0xf7, 0xdb, 0xf8, 0x49, 0x4a, 0xe3, 0x68, 0x02, 0x60, 0x48, 0x4a, 0xa0, 0x61, 0x82, 0x60, 0x48, 0x4a, 0xc0, 0xe9, 0x03, 0x23, 0x00, 0x23, 0x01, 0x22, 0x43, 0x61, 0x00, 0x23, 0xc0, 0xe9, 0x06, 0x23, 0xc0, 0xe9, 0x08, 0x23, 0x4f, 0xf4, 0x80, 0x52, 0x00, 0x23, 0xc0, 0xe9, - 0x0a, 0x23, 0x94, 0xf8, 0x25, 0x30, 0x00, 0x2b, 0x7f, 0xf4, 0x55, 0xae, - 0x23, 0x6a, 0x5b, 0x06, 0x40, 0xf1, 0x8a, 0x80, 0xc8, 0x20, 0xf4, 0xf7, - 0x57, 0xfe, 0x3b, 0x49, 0x06, 0x46, 0xe8, 0xf7, 0x81, 0xfa, 0xe6, 0x63, + 0x0a, 0x23, 0x94, 0xf8, 0x25, 0x30, 0x00, 0x2b, 0x7f, 0xf4, 0x5e, 0xae, + 0x23, 0x6a, 0x5b, 0x06, 0x40, 0xf1, 0x8a, 0x80, 0xc8, 0x20, 0xf5, 0xf7, + 0xb9, 0xf8, 0x3b, 0x49, 0x06, 0x46, 0xe8, 0xf7, 0x6b, 0xfe, 0xe6, 0x63, 0xe0, 0x6b, 0x61, 0x6b, 0x03, 0x68, 0x5b, 0x6a, 0x98, 0x47, 0x20, 0xb1, - 0x2b, 0x78, 0x13, 0xb1, 0x35, 0x48, 0x02, 0xf0, 0x37, 0xfb, 0x38, 0x20, - 0xf4, 0xf7, 0x44, 0xfe, 0x2e, 0x4a, 0xe3, 0x6a, 0x02, 0x60, 0x32, 0x4a, + 0x2b, 0x78, 0x13, 0xb1, 0x35, 0x48, 0x03, 0xf0, 0x99, 0xfc, 0x38, 0x20, + 0xf5, 0xf7, 0xa6, 0xf8, 0x2e, 0x4a, 0xe3, 0x6a, 0x02, 0x60, 0x32, 0x4a, 0x82, 0x60, 0x2e, 0x4a, 0xc0, 0xe9, 0x03, 0x23, 0x00, 0x23, 0x01, 0x22, 0x43, 0x61, 0x00, 0x23, 0xc0, 0xe9, 0x06, 0x23, 0xc0, 0xe9, 0x08, 0x23, - 0x4f, 0xf4, 0x80, 0x52, 0x00, 0x23, 0xc0, 0xe9, 0x0a, 0x23, 0xb4, 0xe6, - 0x51, 0x07, 0x09, 0xd5, 0x28, 0x20, 0xf4, 0xf7, 0x29, 0xfe, 0xe3, 0x6a, + 0x4f, 0xf4, 0x80, 0x52, 0x00, 0x23, 0xc0, 0xe9, 0x0a, 0x23, 0xbd, 0xe6, + 0x51, 0x07, 0x09, 0xd5, 0x28, 0x20, 0xf5, 0xf7, 0x8b, 0xf8, 0xe3, 0x6a, 0x06, 0x46, 0xa2, 0x6a, 0xcd, 0xe9, 0x00, 0x37, 0x3b, 0x46, 0x87, 0xe7, 0x2b, 0x78, 0x00, 0x2b, 0x88, 0xd0, 0x17, 0x48, 0x3e, 0xe7, 0x94, 0xf8, - 0x26, 0x30, 0x03, 0xb3, 0x28, 0x20, 0x4f, 0xf0, 0x00, 0x08, 0xf4, 0xf7, - 0x15, 0xfe, 0x4f, 0xf0, 0x00, 0x09, 0x21, 0x6b, 0xa2, 0x6a, 0x11, 0x4f, + 0x26, 0x30, 0x03, 0xb3, 0x28, 0x20, 0x4f, 0xf0, 0x00, 0x08, 0xf5, 0xf7, + 0x77, 0xf8, 0x4f, 0xf0, 0x00, 0x09, 0x21, 0x6b, 0xa2, 0x6a, 0x11, 0x4f, 0x06, 0x76, 0x42, 0x76, 0xc6, 0x61, 0x80, 0xf8, 0x20, 0x60, 0x60, 0x63, 0xc0, 0xe9, 0x00, 0x71, 0xc0, 0xe9, 0x02, 0x89, 0xc0, 0xe9, 0x04, 0x89, - 0xf2, 0xf7, 0x80, 0xfe, 0x00, 0x28, 0x3f, 0xf4, 0x69, 0xaf, 0x2b, 0x78, + 0xf3, 0xf7, 0x3c, 0xfb, 0x00, 0x28, 0x3f, 0xf4, 0x69, 0xaf, 0x2b, 0x78, 0x00, 0x2b, 0x3f, 0xf4, 0x65, 0xaf, 0x10, 0x48, 0x1a, 0xe7, 0x23, 0x6b, - 0x63, 0x63, 0x5f, 0xe7, 0x4f, 0xea, 0x01, 0x08, 0xb3, 0xea, 0x01, 0x08, - 0xa8, 0xea, 0x01, 0x08, 0xbe, 0xea, 0x01, 0x08, 0xec, 0xec, 0x01, 0x08, - 0xc9, 0xea, 0x01, 0x08, 0xe3, 0xea, 0x01, 0x08, 0xe7, 0xea, 0x01, 0x08, - 0x50, 0xed, 0x01, 0x08, 0xf8, 0xea, 0x01, 0x08, 0x94, 0xea, 0x01, 0x08, - 0x08, 0xeb, 0x01, 0x08, 0x0c, 0xeb, 0x01, 0x08, 0x1d, 0xeb, 0x01, 0x08, - 0xd6, 0xea, 0x01, 0x08, 0x54, 0x20, 0xf4, 0xf7, 0xd5, 0xfd, 0x06, 0x49, - 0x06, 0x46, 0xe8, 0xf7, 0xe3, 0xf9, 0x47, 0xe7, 0x54, 0x20, 0xf4, 0xf7, - 0xcd, 0xfd, 0x03, 0x49, 0x06, 0x46, 0xe8, 0xf7, 0xdb, 0xf9, 0x74, 0xe7, - 0xe3, 0xea, 0x01, 0x08, 0x08, 0xeb, 0x01, 0x08, 0x10, 0xb5, 0x08, 0x4c, - 0x23, 0x78, 0x1b, 0xb9, 0xff, 0xf7, 0xf0, 0xfc, 0x01, 0x23, 0x23, 0x70, - 0x05, 0x4b, 0xd3, 0xe9, 0x05, 0x12, 0x58, 0x79, 0x00, 0x28, 0x14, 0xbf, - 0x08, 0x46, 0x10, 0x46, 0x10, 0xbd, 0x00, 0xbf, 0x68, 0x06, 0x00, 0x24, - 0xb4, 0x05, 0x00, 0x24, 0x01, 0x4b, 0x18, 0x68, 0x70, 0x47, 0x00, 0xbf, - 0x10, 0x03, 0x00, 0x24, 0x70, 0xb5, 0x05, 0x46, 0x0c, 0x46, 0x11, 0xb9, - 0x00, 0x26, 0x30, 0x46, 0x70, 0xbd, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, - 0x00, 0xf0, 0x94, 0xf9, 0x2c, 0x4b, 0x9c, 0x42, 0x14, 0xd1, 0x6c, 0x68, - 0x63, 0x6e, 0xd8, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x99, 0x05, 0x02, 0xd4, - 0xa0, 0x6d, 0x00, 0xf0, 0x8a, 0xfd, 0xb4, 0xf9, 0x0c, 0x30, 0x8b, 0xb9, - 0x66, 0x6e, 0x16, 0xf0, 0x01, 0x06, 0xe3, 0xd1, 0xa0, 0x6d, 0x00, 0xf0, - 0x82, 0xfd, 0xe0, 0xe7, 0x21, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, - 0xe6, 0xe7, 0x20, 0x4b, 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xe1, 0xe7, - 0x21, 0x46, 0x28, 0x46, 0x00, 0xf0, 0x42, 0xf8, 0x23, 0x6b, 0x06, 0x46, - 0x33, 0xb1, 0x21, 0x6a, 0x28, 0x46, 0x98, 0x47, 0x00, 0x28, 0xb8, 0xbf, - 0x4f, 0xf0, 0xff, 0x36, 0xa3, 0x89, 0x1a, 0x06, 0x03, 0xd5, 0x21, 0x69, - 0x28, 0x46, 0xf4, 0xf7, 0x83, 0xff, 0x61, 0x6b, 0x41, 0xb1, 0x04, 0xf1, - 0x44, 0x03, 0x99, 0x42, 0x02, 0xd0, 0x28, 0x46, 0xf4, 0xf7, 0x7a, 0xff, - 0x00, 0x23, 0x63, 0x63, 0xa1, 0x6c, 0x21, 0xb1, 0x28, 0x46, 0xf4, 0xf7, - 0x73, 0xff, 0x00, 0x23, 0xa3, 0x64, 0x00, 0xf0, 0x31, 0xf9, 0x00, 0x23, - 0xa3, 0x81, 0x63, 0x6e, 0xdb, 0x07, 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, - 0x46, 0xfd, 0xa0, 0x6d, 0x00, 0xf0, 0x3f, 0xfd, 0x00, 0xf0, 0x2a, 0xf9, - 0x9f, 0xe7, 0x00, 0xbf, 0x34, 0xd2, 0x01, 0x08, 0x54, 0xd2, 0x01, 0x08, - 0x14, 0xd2, 0x01, 0x08, 0x02, 0x4b, 0x01, 0x46, 0x18, 0x68, 0xff, 0xf7, - 0x8f, 0xbf, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, 0x8a, 0x89, 0x2d, 0xe9, - 0xf0, 0x41, 0x05, 0x46, 0x10, 0x07, 0x0c, 0x46, 0x58, 0xd4, 0x4b, 0x68, - 0x00, 0x2b, 0x05, 0xdc, 0x0b, 0x6c, 0x00, 0x2b, 0x02, 0xdc, 0x00, 0x20, - 0xbd, 0xe8, 0xf0, 0x81, 0xe6, 0x6a, 0x00, 0x2e, 0xf9, 0xd0, 0x00, 0x23, - 0x12, 0xf4, 0x80, 0x52, 0x2f, 0x68, 0x2b, 0x60, 0x32, 0xd0, 0x60, 0x6d, - 0xa3, 0x89, 0x5a, 0x07, 0x05, 0xd5, 0x63, 0x68, 0xc0, 0x1a, 0x63, 0x6b, - 0x0b, 0xb1, 0x23, 0x6c, 0xc0, 0x1a, 0x00, 0x23, 0x02, 0x46, 0xe6, 0x6a, - 0x21, 0x6a, 0x28, 0x46, 0xb0, 0x47, 0x43, 0x1c, 0xa3, 0x89, 0x06, 0xd1, - 0x29, 0x68, 0x1d, 0x29, 0x2c, 0xd8, 0x2a, 0x4a, 0xca, 0x40, 0xd6, 0x07, - 0x28, 0xd5, 0x00, 0x22, 0x62, 0x60, 0xd9, 0x04, 0x22, 0x69, 0x22, 0x60, - 0x04, 0xd5, 0x42, 0x1c, 0x01, 0xd1, 0x2b, 0x68, 0x03, 0xb9, 0x60, 0x65, - 0x61, 0x6b, 0x2f, 0x60, 0x00, 0x29, 0xca, 0xd0, 0x04, 0xf1, 0x44, 0x03, - 0x99, 0x42, 0x02, 0xd0, 0x28, 0x46, 0xf4, 0xf7, 0x09, 0xff, 0x00, 0x20, - 0x60, 0x63, 0xc1, 0xe7, 0x21, 0x6a, 0x01, 0x23, 0x28, 0x46, 0xb0, 0x47, - 0x41, 0x1c, 0xc7, 0xd1, 0x2b, 0x68, 0x00, 0x2b, 0xc4, 0xd0, 0x1d, 0x2b, - 0x01, 0xd0, 0x16, 0x2b, 0x01, 0xd1, 0x2f, 0x60, 0xb1, 0xe7, 0xa3, 0x89, - 0x43, 0xf0, 0x40, 0x03, 0xa3, 0x81, 0xad, 0xe7, 0x0f, 0x69, 0x00, 0x2f, - 0xa9, 0xd0, 0x93, 0x07, 0x0e, 0x68, 0x08, 0xbf, 0x4b, 0x69, 0x0f, 0x60, - 0x18, 0xbf, 0x00, 0x23, 0xa6, 0xeb, 0x07, 0x08, 0x8b, 0x60, 0xb8, 0xf1, - 0x00, 0x0f, 0x9c, 0xdd, 0x21, 0x6a, 0xa6, 0x6a, 0x43, 0x46, 0x3a, 0x46, - 0x28, 0x46, 0xb0, 0x47, 0x00, 0x28, 0x06, 0xdc, 0xa3, 0x89, 0x43, 0xf0, - 0x40, 0x03, 0xa3, 0x81, 0x4f, 0xf0, 0xff, 0x30, 0x8e, 0xe7, 0x07, 0x44, - 0xa8, 0xeb, 0x00, 0x08, 0xe9, 0xe7, 0x00, 0xbf, 0x01, 0x00, 0x40, 0x20, - 0x38, 0xb5, 0x0b, 0x69, 0x05, 0x46, 0x0c, 0x46, 0x13, 0xb9, 0x00, 0x25, - 0x28, 0x46, 0x38, 0xbd, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0x00, 0xf0, - 0x99, 0xf8, 0x14, 0x4b, 0x9c, 0x42, 0x1b, 0xd1, 0x6c, 0x68, 0xb4, 0xf9, - 0x0c, 0x30, 0x00, 0x2b, 0xef, 0xd0, 0x62, 0x6e, 0xd0, 0x07, 0x04, 0xd4, - 0x99, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0x8c, 0xfc, 0x28, 0x46, - 0x21, 0x46, 0xff, 0xf7, 0x59, 0xff, 0x63, 0x6e, 0xda, 0x07, 0x05, 0x46, - 0xe0, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0xdd, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, - 0x80, 0xfc, 0xd9, 0xe7, 0x05, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, - 0xdf, 0xe7, 0x04, 0x4b, 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xda, 0xe7, - 0x34, 0xd2, 0x01, 0x08, 0x54, 0xd2, 0x01, 0x08, 0x14, 0xd2, 0x01, 0x08, - 0x01, 0x46, 0x20, 0xb9, 0x04, 0x4b, 0x05, 0x49, 0x18, 0x68, 0x00, 0xf0, - 0x18, 0xbb, 0x04, 0x4b, 0x18, 0x68, 0xff, 0xf7, 0xb9, 0xbf, 0x00, 0xbf, - 0x74, 0xd2, 0x01, 0x08, 0xed, 0xa8, 0x01, 0x08, 0x10, 0x03, 0x00, 0x24, - 0x00, 0x23, 0x10, 0xb5, 0x04, 0x46, 0xc0, 0xe9, 0x00, 0x33, 0xc0, 0xe9, - 0x04, 0x33, 0x83, 0x60, 0x81, 0x81, 0x43, 0x66, 0xc2, 0x81, 0x83, 0x61, - 0x19, 0x46, 0x08, 0x22, 0x5c, 0x30, 0x00, 0xf0, 0x21, 0xfd, 0x05, 0x4b, - 0x63, 0x62, 0x05, 0x4b, 0xa3, 0x62, 0x05, 0x4b, 0xe3, 0x62, 0x05, 0x4b, - 0x24, 0x62, 0x23, 0x63, 0x10, 0xbd, 0x00, 0xbf, 0x29, 0xb7, 0x01, 0x08, - 0x4f, 0xb7, 0x01, 0x08, 0x87, 0xb7, 0x01, 0x08, 0xab, 0xb7, 0x01, 0x08, - 0x01, 0x49, 0x00, 0xf0, 0xe6, 0xba, 0x00, 0xbf, 0xed, 0xa8, 0x01, 0x08, - 0x70, 0xb5, 0x4a, 0x1e, 0x68, 0x25, 0x55, 0x43, 0x0e, 0x46, 0x05, 0xf1, - 0x74, 0x01, 0xf4, 0xf7, 0x4f, 0xfe, 0x04, 0x46, 0x40, 0xb1, 0x00, 0x21, - 0xc0, 0xe9, 0x00, 0x16, 0x0c, 0x30, 0xa0, 0x60, 0x05, 0xf1, 0x68, 0x02, - 0x00, 0xf0, 0xf4, 0xfc, 0x20, 0x46, 0x70, 0xbd, 0x01, 0x48, 0x00, 0xf0, - 0x18, 0xbc, 0x00, 0xbf, 0x70, 0xa8, 0x00, 0x24, 0x01, 0x48, 0x00, 0xf0, - 0x14, 0xbc, 0x00, 0xbf, 0x70, 0xa8, 0x00, 0x24, 0x01, 0x48, 0x00, 0xf0, - 0x0c, 0xbc, 0x00, 0xbf, 0x6f, 0xa8, 0x00, 0x24, 0x01, 0x48, 0x00, 0xf0, - 0x08, 0xbc, 0x00, 0xbf, 0x6f, 0xa8, 0x00, 0x24, 0x10, 0xb5, 0x04, 0x46, - 0xff, 0xf7, 0xf0, 0xff, 0xa3, 0x69, 0x1b, 0xb1, 0xbd, 0xe8, 0x10, 0x40, - 0xff, 0xf7, 0xf0, 0xbf, 0xc4, 0xe9, 0x12, 0x33, 0x23, 0x65, 0x13, 0x4b, - 0x13, 0x4a, 0x1b, 0x68, 0xa2, 0x62, 0xa3, 0x42, 0x04, 0xbf, 0x01, 0x23, - 0xa3, 0x61, 0x20, 0x46, 0x00, 0xf0, 0x20, 0xf8, 0x60, 0x60, 0x20, 0x46, - 0x00, 0xf0, 0x1c, 0xf8, 0xa0, 0x60, 0x20, 0x46, 0x00, 0xf0, 0x18, 0xf8, - 0x00, 0x22, 0xe0, 0x60, 0x04, 0x21, 0x60, 0x68, 0xff, 0xf7, 0x82, 0xff, - 0xa0, 0x68, 0x01, 0x22, 0x09, 0x21, 0xff, 0xf7, 0x7d, 0xff, 0xe0, 0x68, - 0x02, 0x22, 0x12, 0x21, 0xff, 0xf7, 0x78, 0xff, 0x01, 0x23, 0xa3, 0x61, - 0xd2, 0xe7, 0x00, 0xbf, 0x74, 0xd2, 0x01, 0x08, 0xd1, 0xa9, 0x01, 0x08, - 0xf8, 0xb5, 0x07, 0x46, 0xff, 0xf7, 0xac, 0xff, 0x1e, 0x4b, 0x1e, 0x68, - 0xb3, 0x69, 0x13, 0xb9, 0x30, 0x46, 0xff, 0xf7, 0xbd, 0xff, 0x48, 0x36, - 0xd6, 0xe9, 0x01, 0x34, 0x01, 0x3b, 0x03, 0xd5, 0x33, 0x68, 0x0b, 0xb3, - 0x36, 0x68, 0xf7, 0xe7, 0xb4, 0xf9, 0x0c, 0x50, 0xd5, 0xb9, 0x16, 0x4b, - 0xe3, 0x60, 0x04, 0xf1, 0x58, 0x00, 0x65, 0x66, 0x00, 0xf0, 0xaa, 0xfb, - 0xff, 0xf7, 0x96, 0xff, 0xc4, 0xe9, 0x01, 0x55, 0xc4, 0xe9, 0x04, 0x55, - 0x25, 0x60, 0xa5, 0x61, 0x08, 0x22, 0x29, 0x46, 0x04, 0xf1, 0x5c, 0x00, - 0x00, 0xf0, 0x76, 0xfc, 0xc4, 0xe9, 0x0d, 0x55, 0xc4, 0xe9, 0x12, 0x55, - 0x20, 0x46, 0xf8, 0xbd, 0x68, 0x34, 0xd9, 0xe7, 0x04, 0x21, 0x38, 0x46, - 0xff, 0xf7, 0x62, 0xff, 0x04, 0x46, 0x30, 0x60, 0x00, 0x28, 0xd5, 0xd1, - 0xff, 0xf7, 0x78, 0xff, 0x0c, 0x23, 0x3b, 0x60, 0xee, 0xe7, 0x00, 0xbf, - 0x74, 0xd2, 0x01, 0x08, 0x01, 0x00, 0xff, 0xff, 0xf7, 0xb5, 0x0f, 0x46, - 0x11, 0x46, 0x01, 0xaa, 0x05, 0x46, 0x01, 0xf0, 0x91, 0xf8, 0x06, 0x46, - 0x18, 0xb9, 0x00, 0x24, 0x20, 0x46, 0x03, 0xb0, 0xf0, 0xbd, 0x28, 0x46, - 0xff, 0xf7, 0xaa, 0xff, 0x04, 0x46, 0x00, 0x28, 0xf5, 0xd0, 0x39, 0x46, - 0x01, 0x9a, 0x4f, 0xf4, 0xdb, 0x73, 0x28, 0x46, 0x00, 0xf0, 0x2a, 0xfd, - 0x07, 0x1e, 0x09, 0xda, 0x00, 0x25, 0xff, 0xf7, 0x4b, 0xff, 0xa0, 0x6d, - 0xa5, 0x81, 0x00, 0xf0, 0x60, 0xfb, 0xff, 0xf7, 0x4b, 0xff, 0xe2, 0xe7, - 0x63, 0x6e, 0xdb, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x98, 0x05, 0x02, 0xd4, - 0xa0, 0x6d, 0x00, 0xf0, 0x56, 0xfb, 0x0e, 0x4b, 0x63, 0x62, 0x0e, 0x4b, - 0xa3, 0x62, 0x0e, 0x4b, 0xe3, 0x62, 0xf1, 0x05, 0x0d, 0x4b, 0xe7, 0x81, - 0xa6, 0x81, 0x24, 0x62, 0x23, 0x63, 0x05, 0xd5, 0x02, 0x23, 0x00, 0x22, - 0x21, 0x46, 0x28, 0x46, 0x00, 0xf0, 0x9c, 0xf8, 0x63, 0x6e, 0xda, 0x07, - 0xc4, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0xc1, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, - 0x3c, 0xfb, 0xbd, 0xe7, 0x29, 0xb7, 0x01, 0x08, 0x4f, 0xb7, 0x01, 0x08, - 0x87, 0xb7, 0x01, 0x08, 0xab, 0xb7, 0x01, 0x08, 0x02, 0x4b, 0x0a, 0x46, - 0x01, 0x46, 0x18, 0x68, 0xff, 0xf7, 0xa6, 0xbf, 0x10, 0x03, 0x00, 0x24, - 0x2d, 0xe9, 0xf7, 0x4f, 0x1f, 0x46, 0x13, 0x46, 0x7b, 0x43, 0x0c, 0x9c, - 0x06, 0x46, 0x8a, 0x46, 0x91, 0x46, 0x9b, 0x46, 0x5f, 0xd0, 0x18, 0xb1, - 0x83, 0x69, 0x0b, 0xb9, 0xff, 0xf7, 0x16, 0xff, 0x2e, 0x4b, 0x9c, 0x42, - 0x28, 0xd1, 0x74, 0x68, 0x63, 0x6e, 0xdb, 0x07, 0x05, 0xd4, 0xa3, 0x89, - 0x9d, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0x0c, 0xfb, 0x63, 0x68, - 0x00, 0x2b, 0x01, 0xda, 0x00, 0x23, 0x63, 0x60, 0xd8, 0x46, 0xd4, 0xe9, - 0x00, 0x15, 0x45, 0x45, 0x1e, 0xd3, 0x42, 0x46, 0x50, 0x46, 0x00, 0xf0, - 0xc7, 0xfb, 0x60, 0x68, 0x21, 0x68, 0x63, 0x6e, 0xa0, 0xeb, 0x08, 0x00, - 0x41, 0x44, 0xda, 0x07, 0x60, 0x60, 0x21, 0x60, 0x2f, 0xd4, 0xa3, 0x89, - 0x9b, 0x05, 0x2c, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0xf0, 0xfa, 0x28, 0xe0, - 0x19, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xb4, 0x68, 0xd2, 0xe7, 0x18, 0x4b, - 0x9c, 0x42, 0x08, 0xbf, 0xf4, 0x68, 0xcd, 0xe7, 0x2a, 0x46, 0x50, 0x46, - 0x00, 0xf0, 0xa8, 0xfb, 0x23, 0x68, 0x2b, 0x44, 0x23, 0x60, 0x21, 0x46, - 0xa8, 0xeb, 0x05, 0x03, 0x30, 0x46, 0x01, 0x93, 0x00, 0xf0, 0xb0, 0xfc, - 0xaa, 0x44, 0x01, 0x9b, 0x88, 0xb1, 0x63, 0x6e, 0xd8, 0x07, 0x05, 0xd4, - 0xa3, 0x89, 0x99, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0xcb, 0xfa, - 0x5d, 0x44, 0xa5, 0xeb, 0x08, 0x03, 0xb3, 0xfb, 0xf9, 0xf7, 0x38, 0x46, - 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x98, 0x46, 0xb7, 0xe7, 0x1f, 0x46, - 0xf7, 0xe7, 0x00, 0xbf, 0x34, 0xd2, 0x01, 0x08, 0x54, 0xd2, 0x01, 0x08, - 0x14, 0xd2, 0x01, 0x08, 0x07, 0xb5, 0x00, 0x93, 0x13, 0x46, 0x0a, 0x46, - 0x01, 0x46, 0x03, 0x48, 0x00, 0x68, 0xff, 0xf7, 0x83, 0xff, 0x03, 0xb0, - 0x5d, 0xf8, 0x04, 0xfb, 0x10, 0x03, 0x00, 0x24, 0x00, 0xf0, 0x0a, 0xb8, - 0x13, 0x46, 0x0a, 0x46, 0x01, 0x46, 0x02, 0x48, 0x00, 0x68, 0x00, 0xf0, - 0x03, 0xb8, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x41, - 0x0c, 0x46, 0x17, 0x46, 0x1d, 0x46, 0x06, 0x46, 0x18, 0xb1, 0x83, 0x69, - 0x0b, 0xb9, 0xff, 0xf7, 0x8d, 0xfe, 0x51, 0x4b, 0x9c, 0x42, 0x22, 0xd1, - 0x74, 0x68, 0x63, 0x6e, 0xd9, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x9a, 0x05, - 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0x83, 0xfa, 0xa3, 0x89, 0x03, 0xf4, - 0x84, 0x73, 0xb3, 0xf5, 0x84, 0x7f, 0x03, 0xd1, 0x21, 0x46, 0x30, 0x46, - 0xff, 0xf7, 0xd0, 0xfd, 0xd4, 0xf8, 0x2c, 0x80, 0xb8, 0xf1, 0x00, 0x0f, - 0x13, 0xd1, 0x1d, 0x23, 0x33, 0x60, 0x63, 0x6e, 0xd9, 0x07, 0x78, 0xd5, - 0x4f, 0xf0, 0xff, 0x35, 0x28, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0x3f, 0x4b, - 0x9c, 0x42, 0x01, 0xd1, 0xb4, 0x68, 0xd8, 0xe7, 0x3d, 0x4b, 0x9c, 0x42, - 0x08, 0xbf, 0xf4, 0x68, 0xd3, 0xe7, 0x01, 0x2d, 0x36, 0xd0, 0x35, 0xf0, - 0x02, 0x03, 0x62, 0xd1, 0x23, 0x69, 0x1b, 0xb9, 0x21, 0x46, 0x30, 0x46, - 0x00, 0xf0, 0x7c, 0xfa, 0x21, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xa8, 0xfd, - 0x00, 0x28, 0xdc, 0xd1, 0x21, 0x6a, 0x2b, 0x46, 0x3a, 0x46, 0x30, 0x46, - 0xc0, 0x47, 0x01, 0x30, 0xd5, 0xd0, 0x61, 0x6b, 0x41, 0xb1, 0x04, 0xf1, - 0x44, 0x03, 0x99, 0x42, 0x02, 0xd0, 0x30, 0x46, 0xf4, 0xf7, 0x62, 0xfc, - 0x00, 0x23, 0x63, 0x63, 0x23, 0x69, 0x23, 0x60, 0xa3, 0x89, 0x00, 0x26, - 0x23, 0xf4, 0x02, 0x63, 0x66, 0x60, 0xa3, 0x81, 0x08, 0x22, 0x31, 0x46, - 0x04, 0xf1, 0x5c, 0x00, 0x00, 0xf0, 0x06, 0xfb, 0x65, 0x6e, 0x15, 0xf0, - 0x01, 0x05, 0x3b, 0xd1, 0xa3, 0x89, 0x9b, 0x05, 0xba, 0xd4, 0x21, 0xe0, - 0x21, 0x46, 0x30, 0x46, 0xff, 0xf7, 0x7a, 0xfd, 0xa2, 0x89, 0x12, 0xf4, - 0x80, 0x52, 0x0c, 0xd0, 0x65, 0x6d, 0xa3, 0x89, 0x5a, 0x07, 0x19, 0xd5, - 0x63, 0x68, 0xed, 0x1a, 0x63, 0x6b, 0x0b, 0xb1, 0x23, 0x6c, 0xed, 0x1a, - 0x2f, 0x44, 0x00, 0x25, 0xb6, 0xe7, 0x2b, 0x46, 0x21, 0x6a, 0x30, 0x46, - 0xc0, 0x47, 0x43, 0x1c, 0x05, 0x46, 0xec, 0xd1, 0x63, 0x6e, 0xd8, 0x07, - 0x98, 0xd4, 0xa3, 0x89, 0x99, 0x05, 0x95, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, - 0x04, 0xfa, 0x93, 0xe7, 0x18, 0x07, 0xe9, 0xd5, 0x23, 0x68, 0x22, 0x69, - 0x00, 0x2b, 0xe5, 0xd0, 0x9b, 0x1a, 0x1d, 0x44, 0xe2, 0xe7, 0x16, 0x23, - 0x82, 0xe7, 0xa3, 0x89, 0x9a, 0x05, 0x83, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, - 0xf2, 0xf9, 0x7f, 0xe7, 0x35, 0x46, 0x7f, 0xe7, 0x34, 0xd2, 0x01, 0x08, - 0x54, 0xd2, 0x01, 0x08, 0x14, 0xd2, 0x01, 0x08, 0x02, 0x4b, 0x01, 0x46, - 0x18, 0x68, 0x00, 0xf0, 0x03, 0xb8, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, - 0x70, 0xb5, 0x0c, 0x46, 0x05, 0x46, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, - 0xff, 0xf7, 0xd4, 0xfd, 0x32, 0x4b, 0x9c, 0x42, 0x14, 0xd1, 0x6c, 0x68, - 0x63, 0x6e, 0xda, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0x02, 0xd4, - 0xa0, 0x6d, 0x00, 0xf0, 0xca, 0xf9, 0xe6, 0x6a, 0xce, 0xb9, 0x1d, 0x23, - 0x2b, 0x60, 0x63, 0x6e, 0xde, 0x07, 0x0d, 0xd5, 0x4f, 0xf0, 0xff, 0x35, - 0x28, 0x46, 0x70, 0xbd, 0x27, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, - 0xe6, 0xe7, 0x26, 0x4b, 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xe1, 0xe7, - 0xa3, 0x89, 0x9d, 0x05, 0xee, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0xb1, 0xf9, - 0xea, 0xe7, 0xa2, 0x89, 0x02, 0xf0, 0x0c, 0x03, 0x08, 0x2b, 0x19, 0xd1, - 0x23, 0x68, 0xbb, 0xb1, 0x21, 0x69, 0x5b, 0x1a, 0x00, 0x2b, 0x13, 0xdd, - 0xd0, 0x05, 0x11, 0xd5, 0x02, 0x23, 0x00, 0x22, 0x21, 0x6a, 0x28, 0x46, - 0xb0, 0x47, 0x41, 0x1c, 0x05, 0x46, 0x0d, 0xd1, 0x63, 0x6e, 0xda, 0x07, - 0xd2, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0xcf, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, - 0x92, 0xf9, 0xcd, 0xe7, 0x12, 0xf4, 0x80, 0x52, 0x0f, 0xd0, 0x65, 0x6d, - 0xa2, 0x89, 0x56, 0x07, 0x0d, 0xd5, 0x63, 0x68, 0xed, 0x1a, 0x63, 0x6b, - 0x0b, 0xb1, 0x23, 0x6c, 0xed, 0x1a, 0x63, 0x6e, 0xd9, 0x07, 0xbd, 0xd4, - 0x93, 0x05, 0xbb, 0xd4, 0xe8, 0xe7, 0x01, 0x23, 0xda, 0xe7, 0x10, 0x07, - 0xf5, 0xd5, 0x23, 0x68, 0x00, 0x2b, 0xf2, 0xd0, 0x21, 0x69, 0x5b, 0x1a, - 0x1d, 0x44, 0xee, 0xe7, 0x34, 0xd2, 0x01, 0x08, 0x54, 0xd2, 0x01, 0x08, - 0x14, 0xd2, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x41, 0x0f, 0x46, 0x00, 0xf1, - 0x48, 0x04, 0x00, 0x26, 0xd4, 0xe9, 0x01, 0x85, 0xb8, 0xf1, 0x01, 0x08, - 0x05, 0xd5, 0x24, 0x68, 0x00, 0x2c, 0xf7, 0xd1, 0x30, 0x46, 0xbd, 0xe8, - 0xf0, 0x81, 0xab, 0x89, 0x01, 0x2b, 0x06, 0xd9, 0xb5, 0xf9, 0x0e, 0x30, - 0x01, 0x33, 0x02, 0xd0, 0x28, 0x46, 0xb8, 0x47, 0x06, 0x43, 0x68, 0x35, - 0xea, 0xe7, 0x2d, 0xe9, 0xf8, 0x43, 0x06, 0x46, 0x88, 0x46, 0x00, 0xf1, - 0x48, 0x04, 0x00, 0x27, 0xd4, 0xe9, 0x01, 0x95, 0xb9, 0xf1, 0x01, 0x09, - 0x05, 0xd5, 0x24, 0x68, 0x00, 0x2c, 0xf7, 0xd1, 0x38, 0x46, 0xbd, 0xe8, - 0xf8, 0x83, 0xab, 0x89, 0x01, 0x2b, 0x07, 0xd9, 0xb5, 0xf9, 0x0e, 0x30, - 0x01, 0x33, 0x03, 0xd0, 0x29, 0x46, 0x30, 0x46, 0xc0, 0x47, 0x07, 0x43, - 0x68, 0x35, 0xe9, 0xe7, 0x70, 0xb5, 0x0d, 0x4d, 0x0d, 0x4c, 0x64, 0x1b, - 0xa4, 0x10, 0x00, 0x26, 0xa6, 0x42, 0x09, 0xd1, 0x0b, 0x4d, 0x0c, 0x4c, - 0x02, 0xf0, 0x02, 0xf9, 0x64, 0x1b, 0xa4, 0x10, 0x00, 0x26, 0xa6, 0x42, - 0x05, 0xd1, 0x70, 0xbd, 0x55, 0xf8, 0x04, 0x3b, 0x98, 0x47, 0x01, 0x36, - 0xee, 0xe7, 0x55, 0xf8, 0x04, 0x3b, 0x98, 0x47, 0x01, 0x36, 0xf2, 0xe7, - 0xe0, 0x03, 0x00, 0x24, 0xe0, 0x03, 0x00, 0x24, 0xe0, 0x03, 0x00, 0x24, - 0xe8, 0x03, 0x00, 0x24, 0x38, 0xb5, 0x07, 0x4b, 0x1d, 0x68, 0xeb, 0x6b, - 0x04, 0x46, 0x1b, 0xb9, 0x24, 0x20, 0x00, 0xf0, 0x69, 0xf9, 0xe8, 0x63, - 0xe9, 0x6b, 0x20, 0x46, 0xbd, 0xe8, 0x38, 0x40, 0x00, 0xf0, 0x02, 0xb8, - 0x10, 0x03, 0x00, 0x24, 0x2d, 0xe9, 0xf3, 0x41, 0x07, 0x46, 0x01, 0x91, - 0x00, 0xf0, 0x90, 0xfe, 0x01, 0x99, 0x80, 0x46, 0x38, 0x46, 0x00, 0xf0, - 0x8f, 0xfe, 0x43, 0x69, 0x9a, 0x07, 0x04, 0x46, 0x03, 0xf2, 0x6c, 0x76, - 0x05, 0xd1, 0x64, 0x22, 0x96, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x63, - 0x7b, 0xbb, 0x4f, 0xf4, 0xc8, 0x73, 0x96, 0xfb, 0xf3, 0xf5, 0x03, 0xfb, - 0x15, 0x65, 0xb5, 0xfa, 0x85, 0xf5, 0x6d, 0x09, 0x68, 0x4b, 0x30, 0x22, - 0x02, 0xfb, 0x05, 0x35, 0x00, 0xf0, 0x36, 0xfc, 0x00, 0xf0, 0x40, 0xfc, - 0x65, 0x4b, 0x1b, 0x68, 0x53, 0xb3, 0xd8, 0xf8, 0x04, 0x30, 0xb3, 0x42, - 0x19, 0xd1, 0xd8, 0xf8, 0x00, 0x10, 0xd7, 0xe9, 0x00, 0x67, 0xd8, 0xe9, - 0x08, 0x23, 0xd1, 0xb9, 0x96, 0x42, 0x77, 0xeb, 0x03, 0x03, 0x23, 0xda, - 0xd8, 0xe9, 0x12, 0x23, 0x96, 0x42, 0x77, 0xeb, 0x03, 0x03, 0xb4, 0xbf, - 0x01, 0x23, 0x00, 0x23, 0x23, 0x62, 0x1b, 0xdb, 0xd8, 0xf8, 0x28, 0x10, - 0x1a, 0xe0, 0x01, 0x25, 0xd6, 0xe7, 0x30, 0x46, 0x00, 0xf0, 0x68, 0xfb, - 0x00, 0x28, 0xe0, 0xd1, 0x4f, 0xf0, 0xff, 0x33, 0x04, 0xe0, 0x96, 0x42, - 0x77, 0xeb, 0x03, 0x03, 0x02, 0xda, 0x00, 0x23, 0x23, 0x62, 0xeb, 0xe7, - 0xd8, 0xe9, 0x12, 0x23, 0x96, 0x42, 0x77, 0xeb, 0x03, 0x03, 0xf6, 0xda, - 0x01, 0x23, 0x23, 0x62, 0xd8, 0xf8, 0x50, 0x10, 0x4f, 0xf4, 0x61, 0x63, - 0x3c, 0x20, 0x91, 0xfb, 0xf3, 0xf6, 0x03, 0xfb, 0x16, 0x13, 0x61, 0x68, - 0x93, 0xfb, 0xf0, 0xf2, 0x00, 0xfb, 0x12, 0x30, 0x23, 0x68, 0x89, 0x1a, - 0xa2, 0x68, 0x61, 0x60, 0x1b, 0x1a, 0x92, 0x1b, 0x3b, 0x2b, 0x23, 0x60, - 0xa2, 0x60, 0x35, 0xdd, 0x01, 0x31, 0x61, 0x60, 0x3c, 0x3b, 0x23, 0x60, - 0x63, 0x68, 0x3b, 0x2b, 0x34, 0xdd, 0x01, 0x32, 0xa2, 0x60, 0x3c, 0x3b, - 0x63, 0x60, 0xa3, 0x68, 0x17, 0x2b, 0x33, 0xdd, 0xe2, 0x69, 0x01, 0x32, - 0xe2, 0x61, 0xa2, 0x69, 0x01, 0x32, 0x06, 0x2a, 0xc8, 0xbf, 0x00, 0x22, - 0xa2, 0x61, 0xe2, 0x68, 0x18, 0x3b, 0x01, 0x32, 0xa3, 0x60, 0x23, 0x69, - 0xe2, 0x60, 0x55, 0xf8, 0x23, 0x10, 0x8a, 0x42, 0x0e, 0xdd, 0x0b, 0x2b, - 0xa2, 0xeb, 0x01, 0x02, 0xe2, 0x60, 0x03, 0xf1, 0x01, 0x02, 0x09, 0xbf, - 0x63, 0x69, 0x22, 0x61, 0x00, 0x22, 0x01, 0x33, 0x02, 0xbf, 0x22, 0x61, - 0x63, 0x61, 0xe2, 0x61, 0x00, 0xf0, 0xb8, 0xfb, 0x20, 0x46, 0x02, 0xb0, - 0xbd, 0xe8, 0xf0, 0x81, 0x00, 0x2b, 0xcb, 0xda, 0x01, 0x39, 0x61, 0x60, - 0x3c, 0x33, 0xc6, 0xe7, 0x00, 0x2b, 0xcc, 0xda, 0x01, 0x3a, 0xa2, 0x60, - 0x3c, 0x33, 0xc7, 0xe7, 0x00, 0x2b, 0xeb, 0xda, 0xe2, 0x69, 0x01, 0x3a, - 0xe2, 0x61, 0xa2, 0x69, 0x01, 0x3a, 0x48, 0xbf, 0x06, 0x22, 0xa2, 0x61, - 0xe2, 0x68, 0x18, 0x33, 0x01, 0x3a, 0xe2, 0x60, 0xa3, 0x60, 0x00, 0x2a, - 0xdc, 0xd1, 0x23, 0x69, 0x01, 0x3b, 0x05, 0xd4, 0x23, 0x61, 0x23, 0x69, - 0x55, 0xf8, 0x23, 0x30, 0xe3, 0x60, 0xd3, 0xe7, 0x0b, 0x23, 0x23, 0x61, - 0x63, 0x69, 0x5a, 0x1e, 0x62, 0x61, 0x03, 0xf2, 0x6b, 0x72, 0x93, 0x07, - 0x05, 0xd1, 0x64, 0x21, 0x92, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, 0x13, 0x23, - 0x63, 0xb9, 0x4f, 0xf4, 0xc8, 0x71, 0x92, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, - 0x13, 0x23, 0xb3, 0xfa, 0x83, 0xf3, 0x5b, 0x09, 0x03, 0xf5, 0xb6, 0x73, - 0xe3, 0x61, 0xde, 0xe7, 0x01, 0x23, 0xf9, 0xe7, 0x78, 0xd2, 0x01, 0x08, - 0x60, 0xa8, 0x00, 0x24, 0x70, 0x47, 0x70, 0x47, 0x70, 0x47, 0x70, 0x47, - 0x70, 0x47, 0x70, 0x47, 0x70, 0xb5, 0x0e, 0x46, 0xb1, 0xf9, 0x0e, 0x10, - 0x00, 0x29, 0x96, 0xb0, 0x14, 0x46, 0x1d, 0x46, 0x07, 0xda, 0x00, 0x23, - 0x2b, 0x60, 0xb3, 0x89, 0x1a, 0x06, 0x10, 0xd4, 0x4f, 0xf4, 0x80, 0x63, - 0x0e, 0xe0, 0x6a, 0x46, 0x00, 0xf0, 0x32, 0xfd, 0x00, 0x28, 0xf2, 0xdb, - 0x01, 0x9a, 0x02, 0xf4, 0x70, 0x42, 0xa2, 0xf5, 0x00, 0x53, 0x5a, 0x42, - 0x5a, 0x41, 0x2a, 0x60, 0xee, 0xe7, 0x40, 0x23, 0x00, 0x20, 0x23, 0x60, - 0x16, 0xb0, 0x70, 0xbd, 0x8b, 0x89, 0x73, 0xb5, 0x9d, 0x07, 0x06, 0x46, - 0x0c, 0x46, 0x07, 0xd5, 0x04, 0xf1, 0x47, 0x03, 0x23, 0x60, 0x23, 0x61, - 0x01, 0x23, 0x63, 0x61, 0x02, 0xb0, 0x70, 0xbd, 0x01, 0xab, 0x6a, 0x46, - 0xff, 0xf7, 0xca, 0xff, 0x00, 0x99, 0x05, 0x46, 0x30, 0x46, 0xf4, 0xf7, - 0xe9, 0xf9, 0x48, 0xb9, 0xb4, 0xf9, 0x0c, 0x30, 0x9a, 0x05, 0xef, 0xd4, - 0x23, 0xf0, 0x03, 0x03, 0x43, 0xf0, 0x02, 0x03, 0xa3, 0x81, 0xe3, 0xe7, - 0x0d, 0x4b, 0xb3, 0x62, 0xa3, 0x89, 0x20, 0x60, 0x43, 0xf0, 0x80, 0x03, - 0xa3, 0x81, 0x00, 0x9b, 0x63, 0x61, 0x01, 0x9b, 0x20, 0x61, 0x5b, 0xb1, - 0xb4, 0xf9, 0x0e, 0x10, 0x30, 0x46, 0x00, 0xf0, 0xf7, 0xfd, 0x28, 0xb1, - 0xa3, 0x89, 0x23, 0xf0, 0x03, 0x03, 0x43, 0xf0, 0x01, 0x03, 0xa3, 0x81, - 0xa0, 0x89, 0x05, 0x43, 0xa5, 0x81, 0xcd, 0xe7, 0xd1, 0xa9, 0x01, 0x08, - 0x02, 0x4b, 0x01, 0x46, 0x18, 0x68, 0xf4, 0xf7, 0xbb, 0xb9, 0x00, 0xbf, - 0x10, 0x03, 0x00, 0x24, 0x02, 0x4b, 0x01, 0x46, 0x18, 0x68, 0xf4, 0xf7, - 0xaf, 0xb9, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xf0, 0xff, 0x01, 0x10, 0x2a, 0x2b, 0xdb, 0x10, 0xf0, 0x07, 0x0f, - 0x08, 0xd0, 0x10, 0xf8, 0x01, 0x3b, 0x01, 0x3a, 0x8b, 0x42, 0x2d, 0xd0, - 0x10, 0xf0, 0x07, 0x0f, 0x42, 0xb3, 0xf6, 0xd1, 0xf0, 0xb4, 0x41, 0xea, - 0x01, 0x21, 0x41, 0xea, 0x01, 0x41, 0x22, 0xf0, 0x07, 0x04, 0x7f, 0xf0, - 0x00, 0x07, 0x00, 0x23, 0xf0, 0xe8, 0x02, 0x56, 0x08, 0x3c, 0x85, 0xea, - 0x01, 0x05, 0x86, 0xea, 0x01, 0x06, 0x85, 0xfa, 0x47, 0xf5, 0xa3, 0xfa, - 0x87, 0xf5, 0x86, 0xfa, 0x47, 0xf6, 0xa5, 0xfa, 0x87, 0xf6, 0x8e, 0xb9, - 0xee, 0xd1, 0xf0, 0xbc, 0x01, 0xf0, 0xff, 0x01, 0x02, 0xf0, 0x07, 0x02, - 0x32, 0xb1, 0x10, 0xf8, 0x01, 0x3b, 0x01, 0x3a, 0x83, 0xea, 0x01, 0x03, - 0x13, 0xb1, 0xf8, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x01, 0x38, 0x70, 0x47, - 0x00, 0x2d, 0x06, 0xbf, 0x35, 0x46, 0x03, 0x38, 0x07, 0x38, 0x15, 0xf0, - 0x01, 0x0f, 0x07, 0xd1, 0x01, 0x30, 0x15, 0xf4, 0x80, 0x7f, 0x02, 0xbf, - 0x01, 0x30, 0x15, 0xf4, 0xc0, 0x3f, 0x01, 0x30, 0xf0, 0xbc, 0x01, 0x38, - 0x70, 0x47, 0x00, 0xbf, 0x0a, 0x44, 0x91, 0x42, 0x00, 0xf1, 0xff, 0x33, - 0x00, 0xd1, 0x70, 0x47, 0x10, 0xb5, 0x11, 0xf8, 0x01, 0x4b, 0x03, 0xf8, - 0x01, 0x4f, 0x91, 0x42, 0xf9, 0xd1, 0x10, 0xbd, 0x02, 0x44, 0x03, 0x46, - 0x93, 0x42, 0x00, 0xd1, 0x70, 0x47, 0x03, 0xf8, 0x01, 0x1b, 0xf9, 0xe7, - 0x13, 0xb5, 0x4a, 0x43, 0x11, 0x46, 0x01, 0x92, 0xf4, 0xf7, 0x42, 0xf9, - 0x04, 0x46, 0x18, 0xb1, 0x01, 0x9a, 0x00, 0x21, 0xff, 0xf7, 0xec, 0xff, - 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, 0x00, 0x00, 0x37, 0xb5, 0x00, 0x29, - 0x48, 0xd0, 0x51, 0xf8, 0x04, 0x3c, 0x01, 0x90, 0x00, 0x2b, 0xa1, 0xf1, - 0x04, 0x04, 0xb8, 0xbf, 0xe4, 0x18, 0xf3, 0xf7, 0x49, 0xff, 0x20, 0x4a, - 0x01, 0x98, 0x13, 0x68, 0x15, 0x46, 0x33, 0xb9, 0x63, 0x60, 0x14, 0x60, - 0x03, 0xb0, 0xbd, 0xe8, 0x30, 0x40, 0xf3, 0xf7, 0x37, 0xbf, 0xa3, 0x42, - 0x0b, 0xd9, 0x21, 0x68, 0x62, 0x18, 0x93, 0x42, 0x04, 0xbf, 0x1a, 0x68, - 0x5b, 0x68, 0x63, 0x60, 0x04, 0xbf, 0x52, 0x18, 0x22, 0x60, 0x2c, 0x60, - 0xec, 0xe7, 0x1a, 0x46, 0x5b, 0x68, 0x0b, 0xb1, 0xa3, 0x42, 0xfa, 0xd9, - 0x11, 0x68, 0x55, 0x18, 0xa5, 0x42, 0x0b, 0xd1, 0x24, 0x68, 0x21, 0x44, - 0x54, 0x18, 0xa3, 0x42, 0x11, 0x60, 0xdd, 0xd1, 0x1c, 0x68, 0x5b, 0x68, - 0x53, 0x60, 0x21, 0x44, 0x11, 0x60, 0xd7, 0xe7, 0x02, 0xd9, 0x0c, 0x23, - 0x03, 0x60, 0xd3, 0xe7, 0x25, 0x68, 0x61, 0x19, 0x8b, 0x42, 0x04, 0xbf, - 0x19, 0x68, 0x5b, 0x68, 0x63, 0x60, 0x04, 0xbf, 0x49, 0x19, 0x21, 0x60, - 0x54, 0x60, 0xc7, 0xe7, 0x03, 0xb0, 0x30, 0xbd, 0x3c, 0xa8, 0x00, 0x24, - 0xf8, 0xb5, 0xcd, 0x1c, 0x25, 0xf0, 0x03, 0x05, 0x08, 0x35, 0x0c, 0x2d, - 0x38, 0xbf, 0x0c, 0x25, 0x00, 0x2d, 0x06, 0x46, 0x01, 0xdb, 0xa9, 0x42, - 0x03, 0xd9, 0x0c, 0x23, 0x33, 0x60, 0x00, 0x20, 0xf8, 0xbd, 0xf3, 0xf7, - 0xf3, 0xfe, 0x21, 0x49, 0x0a, 0x68, 0x14, 0x46, 0x9c, 0xb9, 0x20, 0x4f, - 0x3b, 0x68, 0x23, 0xb9, 0x21, 0x46, 0x30, 0x46, 0x00, 0xf0, 0x08, 0xf9, - 0x38, 0x60, 0x29, 0x46, 0x30, 0x46, 0x00, 0xf0, 0x03, 0xf9, 0x43, 0x1c, - 0x23, 0xd1, 0x0c, 0x23, 0x33, 0x60, 0x30, 0x46, 0xf3, 0xf7, 0xd6, 0xfe, - 0xe3, 0xe7, 0x23, 0x68, 0x5b, 0x1b, 0x17, 0xd4, 0x0b, 0x2b, 0x03, 0xd9, - 0x23, 0x60, 0x1c, 0x44, 0x25, 0x60, 0x04, 0xe0, 0x63, 0x68, 0xa2, 0x42, - 0x0c, 0xbf, 0x0b, 0x60, 0x53, 0x60, 0x30, 0x46, 0xf3, 0xf7, 0xc4, 0xfe, - 0x04, 0xf1, 0x0b, 0x00, 0x23, 0x1d, 0x20, 0xf0, 0x07, 0x00, 0xc2, 0x1a, - 0xcc, 0xd0, 0x1b, 0x1a, 0xa3, 0x50, 0xc9, 0xe7, 0x22, 0x46, 0x64, 0x68, - 0xcc, 0xe7, 0xc4, 0x1c, 0x24, 0xf0, 0x03, 0x04, 0xa0, 0x42, 0xe3, 0xd0, - 0x21, 0x1a, 0x30, 0x46, 0x00, 0xf0, 0xd4, 0xf8, 0x01, 0x30, 0xdd, 0xd1, - 0xcf, 0xe7, 0x00, 0xbf, 0x3c, 0xa8, 0x00, 0x24, 0x40, 0xa8, 0x00, 0x24, - 0xf8, 0xb5, 0x07, 0x46, 0x14, 0x46, 0x0e, 0x46, 0x21, 0xb9, 0xbd, 0xe8, - 0xf8, 0x40, 0x11, 0x46, 0xf4, 0xf7, 0x84, 0xb8, 0x22, 0xb9, 0xf4, 0xf7, - 0x7d, 0xf8, 0x25, 0x46, 0x28, 0x46, 0xf8, 0xbd, 0x00, 0xf0, 0xc8, 0xfc, - 0xa0, 0x42, 0x0f, 0xd2, 0x21, 0x46, 0x38, 0x46, 0xf4, 0xf7, 0x76, 0xf8, - 0x05, 0x46, 0x00, 0x28, 0xf2, 0xd0, 0x31, 0x46, 0x22, 0x46, 0xff, 0xf7, - 0x11, 0xff, 0x31, 0x46, 0x38, 0x46, 0xf4, 0xf7, 0x67, 0xf8, 0xe9, 0xe7, - 0x35, 0x46, 0xe7, 0xe7, 0x38, 0xb5, 0x07, 0x4d, 0x04, 0x46, 0x08, 0x46, - 0x11, 0x46, 0x00, 0x22, 0x2a, 0x60, 0x1a, 0x46, 0xf4, 0xf7, 0xe2, 0xfe, - 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, 0x38, 0xbd, - 0x78, 0xa8, 0x00, 0x24, 0x83, 0x89, 0x03, 0xf0, 0x09, 0x03, 0x09, 0x2b, - 0x01, 0xd1, 0xff, 0xf7, 0xbb, 0xb9, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0xf8, 0xb5, 0x0c, 0x46, 0x05, 0x46, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, - 0xff, 0xf7, 0x1a, 0xfa, 0x3b, 0x4b, 0x9c, 0x42, 0x0a, 0xd1, 0x6c, 0x68, - 0xb4, 0xf9, 0x0c, 0x20, 0x00, 0x23, 0x63, 0x60, 0xa3, 0x89, 0x9e, 0x06, - 0x0c, 0xd5, 0x4f, 0xf0, 0xff, 0x30, 0x66, 0xe0, 0x35, 0x4b, 0x9c, 0x42, - 0x01, 0xd1, 0xac, 0x68, 0xf0, 0xe7, 0x34, 0x4b, 0x9c, 0x42, 0x08, 0xbf, - 0xec, 0x68, 0xeb, 0xe7, 0x58, 0x07, 0x48, 0xd4, 0xd9, 0x06, 0x05, 0xd4, - 0x09, 0x23, 0x2b, 0x60, 0x42, 0xf0, 0x40, 0x03, 0xa3, 0x81, 0xe8, 0xe7, - 0x1a, 0x07, 0x0b, 0xd5, 0x21, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x4c, 0xf9, - 0x00, 0x28, 0xe0, 0xd1, 0xa3, 0x89, 0xa0, 0x60, 0x23, 0xf0, 0x08, 0x03, - 0xa3, 0x81, 0xa0, 0x61, 0xa3, 0x89, 0x43, 0xf0, 0x04, 0x03, 0xa3, 0x81, - 0x23, 0x69, 0x1b, 0xb9, 0x21, 0x46, 0x28, 0x46, 0xff, 0xf7, 0x0a, 0xfe, - 0xa6, 0x89, 0xb4, 0xf9, 0x0c, 0x70, 0xb3, 0x07, 0x0f, 0xd0, 0x01, 0x23, - 0xa3, 0x81, 0x1e, 0x4b, 0x1e, 0x49, 0x18, 0x68, 0x06, 0xf0, 0x09, 0x06, - 0xff, 0xf7, 0x6a, 0xfc, 0x09, 0x2e, 0xa7, 0x81, 0x03, 0xd1, 0x21, 0x46, - 0x28, 0x46, 0xff, 0xf7, 0x9f, 0xf8, 0x22, 0x69, 0x66, 0x6a, 0x63, 0x69, - 0x21, 0x6a, 0x22, 0x60, 0x28, 0x46, 0xb0, 0x47, 0x00, 0x28, 0x60, 0x60, - 0x1c, 0xdc, 0xb4, 0xf9, 0x0c, 0x30, 0x17, 0xbf, 0x00, 0x22, 0x43, 0xf0, - 0x20, 0x03, 0x62, 0x60, 0x43, 0xf0, 0x40, 0x03, 0xbc, 0xe7, 0x61, 0x6b, - 0x00, 0x29, 0xcd, 0xd0, 0x04, 0xf1, 0x44, 0x03, 0x99, 0x42, 0x02, 0xd0, - 0x28, 0x46, 0xf3, 0xf7, 0xd3, 0xff, 0x23, 0x6c, 0x63, 0x60, 0x00, 0x20, - 0x60, 0x63, 0x00, 0x2b, 0xc0, 0xd0, 0xe3, 0x6b, 0x23, 0x60, 0xf8, 0xbd, - 0x00, 0x20, 0xfc, 0xe7, 0x34, 0xd2, 0x01, 0x08, 0x54, 0xd2, 0x01, 0x08, - 0x14, 0xd2, 0x01, 0x08, 0x74, 0xd2, 0x01, 0x08, 0xe1, 0xb5, 0x01, 0x08, - 0x38, 0xb5, 0x06, 0x4d, 0x00, 0x23, 0x04, 0x46, 0x08, 0x46, 0x2b, 0x60, - 0xf3, 0xf7, 0xe0, 0xfd, 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, - 0x23, 0x60, 0x38, 0xbd, 0x78, 0xa8, 0x00, 0x24, 0x10, 0xb5, 0x0c, 0x46, - 0xb1, 0xf9, 0x0e, 0x10, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0x28, 0xab, 0xbf, - 0x63, 0x6d, 0xa3, 0x89, 0x1b, 0x18, 0x23, 0xf4, 0x80, 0x53, 0xac, 0xbf, - 0x63, 0x65, 0xa3, 0x81, 0x10, 0xbd, 0x00, 0x20, 0x70, 0x47, 0x2d, 0xe9, - 0xf0, 0x41, 0x1f, 0x46, 0x8b, 0x89, 0xdb, 0x05, 0x05, 0x46, 0x0c, 0x46, - 0x16, 0x46, 0x05, 0xd5, 0xb1, 0xf9, 0x0e, 0x10, 0x02, 0x23, 0x00, 0x22, - 0x00, 0xf0, 0xca, 0xfb, 0xa3, 0x89, 0xb4, 0xf9, 0x0e, 0x10, 0x23, 0xf4, - 0x80, 0x53, 0xa3, 0x81, 0x32, 0x46, 0x3b, 0x46, 0x28, 0x46, 0xbd, 0xe8, - 0xf0, 0x41, 0x00, 0xf0, 0x4d, 0xba, 0x10, 0xb5, 0x0c, 0x46, 0xb1, 0xf9, - 0x0e, 0x10, 0x00, 0xf0, 0xb7, 0xfb, 0x43, 0x1c, 0xa3, 0x89, 0x15, 0xbf, - 0x60, 0x65, 0x23, 0xf4, 0x80, 0x53, 0x43, 0xf4, 0x80, 0x53, 0xa3, 0x81, - 0x18, 0xbf, 0xa3, 0x81, 0x10, 0xbd, 0xb1, 0xf9, 0x0e, 0x10, 0x00, 0xf0, - 0x49, 0xba, 0x00, 0x00, 0x2d, 0xe9, 0xf7, 0x4f, 0x80, 0x46, 0x00, 0xf0, - 0xdd, 0xfa, 0x40, 0xf2, 0xb1, 0x73, 0x98, 0x45, 0x40, 0xf3, 0x98, 0x80, - 0x6f, 0xf4, 0xf6, 0x63, 0x43, 0x44, 0x9b, 0x10, 0x40, 0xf2, 0x6d, 0x12, - 0xa8, 0xf2, 0xb2, 0x75, 0x02, 0xfb, 0x05, 0x35, 0x6f, 0xf0, 0x63, 0x02, - 0xa8, 0xf2, 0x6d, 0x73, 0x93, 0xfb, 0xf2, 0xf3, 0x1d, 0x44, 0x4f, 0xf4, - 0xc8, 0x73, 0x6f, 0xf4, 0xc8, 0x62, 0x98, 0xfb, 0xf3, 0xf7, 0x03, 0xfb, - 0x17, 0x87, 0x42, 0x44, 0xb7, 0xfa, 0x87, 0xfc, 0xb2, 0xfb, 0xf3, 0xf2, - 0x08, 0xf0, 0x03, 0x03, 0x15, 0x44, 0x64, 0x22, 0xc0, 0xf8, 0x04, 0x80, - 0x98, 0xfb, 0xf2, 0xf6, 0x4f, 0xea, 0x5c, 0x1c, 0x02, 0xfb, 0x16, 0x86, - 0x04, 0x46, 0x00, 0xf1, 0x50, 0x0b, 0x00, 0x93, 0x4f, 0xf0, 0x07, 0x0e, - 0x22, 0x7a, 0x63, 0x69, 0x4a, 0x2a, 0x28, 0xd1, 0x00, 0x99, 0xea, 0x18, - 0x01, 0xb9, 0x06, 0xb9, 0x0f, 0xbb, 0x3b, 0x2b, 0xd4, 0xbf, 0x00, 0x23, - 0x01, 0x23, 0x13, 0x44, 0x5a, 0x1e, 0xa3, 0x69, 0x2c, 0x49, 0x01, 0xfb, - 0x02, 0x32, 0xa3, 0x6a, 0x13, 0x44, 0x1a, 0x46, 0xdb, 0x17, 0xc4, 0xe9, - 0x08, 0x23, 0x28, 0x34, 0xa3, 0x45, 0xe3, 0xd1, 0xd0, 0xe9, 0x08, 0x45, - 0xd0, 0xe9, 0x12, 0x23, 0x94, 0x42, 0x75, 0xeb, 0x03, 0x03, 0xb4, 0xbf, - 0x01, 0x23, 0x00, 0x23, 0x03, 0x60, 0x01, 0x20, 0x03, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0x00, 0x23, 0xdf, 0xe7, 0x44, 0x2a, 0x01, 0xd1, 0xea, 0x18, - 0xdd, 0xe7, 0x00, 0x9a, 0x72, 0xbb, 0x00, 0x2e, 0x0c, 0xbf, 0xe0, 0x46, - 0x4f, 0xf0, 0x01, 0x08, 0x19, 0x49, 0xe2, 0x68, 0x01, 0x92, 0x4f, 0xf0, - 0x30, 0x0a, 0x0a, 0xfb, 0x08, 0x18, 0x2a, 0x46, 0x4f, 0xf0, 0x00, 0x09, - 0xa8, 0xf1, 0x04, 0x08, 0x01, 0x99, 0x09, 0xf1, 0x01, 0x09, 0x49, 0x45, - 0x58, 0xf8, 0x29, 0xa0, 0x18, 0xdc, 0x02, 0xf1, 0x04, 0x08, 0x98, 0xfb, - 0xfe, 0xf9, 0xc9, 0xeb, 0xc9, 0x09, 0xa8, 0xeb, 0x09, 0x09, 0xb3, 0xeb, - 0x09, 0x09, 0x23, 0x69, 0x03, 0xf1, 0xff, 0x33, 0x48, 0xbf, 0x09, 0xf1, - 0x07, 0x09, 0xc3, 0xeb, 0xc3, 0x03, 0x4b, 0x44, 0x53, 0x45, 0x05, 0xda, - 0x1a, 0x44, 0xac, 0xe7, 0xe0, 0x46, 0xd3, 0xe7, 0x52, 0x44, 0xdd, 0xe7, - 0x07, 0x3b, 0xf5, 0xe7, 0x00, 0x20, 0xbd, 0xe7, 0x80, 0x51, 0x01, 0x00, - 0x78, 0xd2, 0x01, 0x08, 0x01, 0x48, 0xff, 0xf7, 0x99, 0xbc, 0x00, 0xbf, - 0x73, 0xa8, 0x00, 0x24, 0x01, 0x48, 0xff, 0xf7, 0x95, 0xbc, 0x00, 0xbf, - 0x73, 0xa8, 0x00, 0x24, 0x01, 0x4b, 0x18, 0x68, 0x00, 0xf0, 0x02, 0xb8, - 0x10, 0x03, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x4f, 0x8d, 0xb0, 0x07, 0x46, - 0x00, 0xf0, 0x22, 0xfa, 0xae, 0x49, 0xaf, 0x4e, 0x05, 0x46, 0x38, 0x46, - 0x00, 0xf0, 0x14, 0xfa, 0x04, 0x46, 0x70, 0xb9, 0xac, 0x4b, 0xad, 0x4a, - 0x18, 0x60, 0xad, 0x4b, 0x18, 0x60, 0xad, 0x4b, 0x30, 0x68, 0xc3, 0xe9, - 0x00, 0x22, 0xff, 0xf7, 0xe1, 0xfc, 0x34, 0x60, 0x0d, 0xb0, 0xbd, 0xe8, - 0xf0, 0x8f, 0x31, 0x68, 0x00, 0x29, 0x5f, 0xd1, 0x30, 0x68, 0xff, 0xf7, - 0xd7, 0xfc, 0x20, 0x46, 0x00, 0xf0, 0x30, 0xfb, 0x41, 0x1c, 0x38, 0x46, - 0xf3, 0xf7, 0x88, 0xfe, 0x30, 0x60, 0x00, 0x28, 0x57, 0xd1, 0x23, 0x78, - 0xa0, 0x4a, 0xa1, 0x49, 0x3a, 0x2b, 0x08, 0xbf, 0x01, 0x34, 0x0a, 0xae, - 0x33, 0x46, 0x20, 0x46, 0x00, 0xf0, 0xe0, 0xfa, 0x00, 0x28, 0xdf, 0xdd, - 0x0a, 0x9b, 0xe7, 0x18, 0xe3, 0x5c, 0x2d, 0x2b, 0x49, 0xd1, 0x01, 0x37, - 0x4f, 0xf0, 0xff, 0x34, 0x0d, 0xf1, 0x20, 0x0a, 0x0d, 0xf1, 0x1e, 0x0b, - 0x4f, 0xf0, 0x00, 0x08, 0xcd, 0xe9, 0x01, 0x6a, 0x94, 0x49, 0x03, 0x96, - 0xcd, 0xf8, 0x00, 0xb0, 0x33, 0x46, 0x07, 0xaa, 0x38, 0x46, 0xad, 0xf8, - 0x1e, 0x80, 0xad, 0xf8, 0x20, 0x80, 0x00, 0xf0, 0xc1, 0xfa, 0x40, 0x45, - 0xc0, 0xdd, 0xbd, 0xf8, 0x1e, 0x30, 0xbd, 0xf8, 0x20, 0x20, 0xdf, 0xf8, - 0x38, 0x92, 0x3c, 0x21, 0x01, 0xfb, 0x03, 0x22, 0xbd, 0xf8, 0x1c, 0x30, - 0x4f, 0xf4, 0x61, 0x61, 0x01, 0xfb, 0x03, 0x23, 0x5c, 0x43, 0xac, 0x62, - 0x81, 0x4c, 0x82, 0x4b, 0x23, 0x60, 0x0a, 0x9b, 0x81, 0x49, 0x1f, 0x44, - 0x4a, 0x46, 0x33, 0x46, 0x38, 0x46, 0x00, 0xf0, 0xa3, 0xfa, 0x40, 0x45, - 0x16, 0xdc, 0x23, 0x68, 0x63, 0x60, 0x77, 0x4b, 0xaa, 0x6a, 0x1a, 0x60, - 0x77, 0x4b, 0xc3, 0xf8, 0x00, 0x80, 0x99, 0xe7, 0x00, 0xf0, 0xc2, 0xfa, - 0x00, 0x28, 0x9b, 0xd1, 0x94, 0xe7, 0x21, 0x46, 0x00, 0xf0, 0xc6, 0xfa, - 0xa3, 0xe7, 0x2b, 0x2b, 0x08, 0xbf, 0x01, 0x37, 0x01, 0x24, 0xb3, 0xe7, - 0x0a, 0x9b, 0xc4, 0xf8, 0x04, 0x90, 0xfc, 0x18, 0xfb, 0x5c, 0x2d, 0x2b, - 0x40, 0xf0, 0x8b, 0x80, 0x01, 0x34, 0x4f, 0xf0, 0xff, 0x37, 0x00, 0x23, - 0xad, 0xf8, 0x1c, 0x30, 0xad, 0xf8, 0x1e, 0x30, 0xad, 0xf8, 0x20, 0x30, - 0x0a, 0x93, 0xcd, 0xe9, 0x02, 0xa6, 0xcd, 0xe9, 0x00, 0xb6, 0x67, 0x49, - 0x33, 0x46, 0x07, 0xaa, 0x20, 0x46, 0x00, 0xf0, 0x6d, 0xfa, 0x00, 0x28, - 0x78, 0xdc, 0xaf, 0x6a, 0xa7, 0xf5, 0x61, 0x67, 0x0a, 0x9b, 0x2f, 0x65, - 0x1c, 0x44, 0x2f, 0x46, 0x4f, 0xf0, 0x00, 0x09, 0x23, 0x78, 0x2c, 0x2b, - 0x08, 0xbf, 0x01, 0x34, 0x94, 0xf8, 0x00, 0x80, 0xb8, 0xf1, 0x4d, 0x0f, - 0x78, 0xd1, 0x0d, 0xf1, 0x26, 0x03, 0xcd, 0xe9, 0x01, 0x63, 0x09, 0xab, - 0x00, 0x93, 0x58, 0x49, 0x03, 0x96, 0x33, 0x46, 0x0d, 0xf1, 0x22, 0x02, - 0x20, 0x46, 0x00, 0xf0, 0x4b, 0xfa, 0x03, 0x28, 0x7f, 0xf4, 0x4a, 0xaf, - 0xbd, 0xf8, 0x22, 0x10, 0x4b, 0x1e, 0x0b, 0x2b, 0x3f, 0xf6, 0x44, 0xaf, - 0xbd, 0xf8, 0x24, 0x20, 0x53, 0x1e, 0x04, 0x2b, 0x3f, 0xf6, 0x3e, 0xaf, - 0xbd, 0xf8, 0x26, 0x30, 0x06, 0x2b, 0x3f, 0xf6, 0x39, 0xaf, 0xc7, 0xe9, - 0x03, 0x12, 0x87, 0xf8, 0x08, 0x80, 0x7b, 0x61, 0x0a, 0x9b, 0x04, 0xeb, - 0x03, 0x08, 0x02, 0x23, 0xad, 0xf8, 0x1c, 0x30, 0x00, 0x23, 0xad, 0xf8, - 0x1e, 0x30, 0xad, 0xf8, 0x20, 0x30, 0x0a, 0x93, 0x98, 0xf8, 0x00, 0x30, - 0x2f, 0x2b, 0x09, 0xd1, 0xcd, 0xe9, 0x02, 0xa6, 0xcd, 0xe9, 0x00, 0xb6, - 0x3e, 0x49, 0x33, 0x46, 0x07, 0xaa, 0x40, 0x46, 0x00, 0xf0, 0x18, 0xfa, - 0xbd, 0xf8, 0x1e, 0x30, 0xbd, 0xf8, 0x20, 0x20, 0x3c, 0x21, 0x01, 0xfb, - 0x03, 0x22, 0xbd, 0xf8, 0x1c, 0x30, 0x4f, 0xf4, 0x61, 0x61, 0x01, 0xfb, - 0x03, 0x23, 0xbb, 0x61, 0x0a, 0x9c, 0x28, 0x37, 0x44, 0x44, 0xb9, 0xf1, - 0x00, 0x0f, 0x20, 0xd0, 0x68, 0x68, 0xff, 0xf7, 0x2f, 0xfe, 0x28, 0x4b, - 0xaa, 0x6a, 0x1a, 0x60, 0x2b, 0x6d, 0x9b, 0x1a, 0x27, 0x4a, 0x18, 0xbf, - 0x01, 0x23, 0x13, 0x60, 0xf8, 0xe6, 0x2b, 0x2b, 0x08, 0xbf, 0x01, 0x34, - 0x01, 0x27, 0x72, 0xe7, 0xbd, 0xf8, 0x1e, 0x30, 0xbd, 0xf8, 0x20, 0x20, - 0x3c, 0x21, 0x01, 0xfb, 0x03, 0x22, 0xbd, 0xf8, 0x1c, 0x30, 0x4f, 0xf4, - 0x61, 0x61, 0x01, 0xfb, 0x03, 0x23, 0x5f, 0x43, 0x7a, 0xe7, 0x4f, 0xf0, - 0x01, 0x09, 0x7d, 0xe7, 0xb8, 0xf1, 0x4a, 0x0f, 0x06, 0xbf, 0x01, 0x34, - 0x43, 0x46, 0x44, 0x23, 0x0a, 0x22, 0x0b, 0xa9, 0x20, 0x46, 0x05, 0x93, - 0x00, 0xf0, 0xaa, 0xfa, 0xdd, 0xf8, 0x2c, 0x80, 0x05, 0x9b, 0xad, 0xf8, - 0x26, 0x00, 0xa0, 0x45, 0x14, 0xd1, 0x4d, 0x23, 0xb9, 0xf1, 0x00, 0x0f, - 0x07, 0xd1, 0x2b, 0x72, 0x03, 0x21, 0x02, 0x23, 0xc5, 0xe9, 0x03, 0x13, - 0xc5, 0xf8, 0x14, 0x90, 0x91, 0xe7, 0x85, 0xf8, 0x30, 0x30, 0x0b, 0x22, - 0x01, 0x23, 0xc5, 0xe9, 0x0d, 0x23, 0x00, 0x23, 0xeb, 0x63, 0x88, 0xe7, - 0x80, 0xb2, 0x3b, 0x72, 0x78, 0x61, 0x84, 0xe7, 0xd8, 0xd2, 0x01, 0x08, - 0x5c, 0xa8, 0x00, 0x24, 0x64, 0xa8, 0x00, 0x24, 0xdb, 0xd2, 0x01, 0x08, - 0x60, 0xa8, 0x00, 0x24, 0x74, 0x03, 0x00, 0x24, 0x4f, 0xa8, 0x00, 0x24, - 0xdf, 0xd2, 0x01, 0x08, 0x02, 0xd3, 0x01, 0x08, 0xee, 0xd2, 0x01, 0x08, - 0x01, 0xd3, 0x01, 0x08, 0x44, 0xa8, 0x00, 0x24, 0x38, 0xb5, 0x07, 0x4d, + 0x63, 0x63, 0x5f, 0xe7, 0x7c, 0xe4, 0x01, 0x08, 0xe0, 0xe4, 0x01, 0x08, + 0xd5, 0xe4, 0x01, 0x08, 0xeb, 0xe4, 0x01, 0x08, 0xbc, 0xeb, 0x01, 0x08, + 0xf6, 0xe4, 0x01, 0x08, 0x10, 0xe5, 0x01, 0x08, 0x14, 0xe5, 0x01, 0x08, + 0x20, 0xec, 0x01, 0x08, 0x25, 0xe5, 0x01, 0x08, 0xc1, 0xe4, 0x01, 0x08, + 0x35, 0xe5, 0x01, 0x08, 0x39, 0xe5, 0x01, 0x08, 0x4a, 0xe5, 0x01, 0x08, + 0x03, 0xe5, 0x01, 0x08, 0x54, 0x20, 0xf5, 0xf7, 0x37, 0xf8, 0x06, 0x49, + 0x06, 0x46, 0xe8, 0xf7, 0xcd, 0xfd, 0x47, 0xe7, 0x54, 0x20, 0xf5, 0xf7, + 0x2f, 0xf8, 0x03, 0x49, 0x06, 0x46, 0xe8, 0xf7, 0xc5, 0xfd, 0x74, 0xe7, + 0x10, 0xe5, 0x01, 0x08, 0x35, 0xe5, 0x01, 0x08, 0x10, 0xb5, 0xff, 0xf7, + 0xe5, 0xfc, 0x68, 0xb9, 0x07, 0x4c, 0x23, 0x78, 0x1b, 0xb9, 0xff, 0xf7, + 0xf9, 0xfc, 0x01, 0x23, 0x23, 0x70, 0x05, 0x4b, 0x5a, 0x79, 0x0a, 0xb1, + 0x58, 0x69, 0x10, 0xbd, 0x98, 0x69, 0xfc, 0xe7, 0x00, 0x20, 0xfa, 0xe7, + 0xa8, 0x06, 0x00, 0x24, 0xb4, 0x05, 0x00, 0x24, 0x2d, 0xe9, 0x80, 0x48, + 0xed, 0xb0, 0x04, 0xaf, 0xfc, 0xf7, 0x52, 0xff, 0x07, 0x20, 0xfc, 0xf7, + 0x33, 0xff, 0xc0, 0x07, 0x40, 0xf1, 0x91, 0x82, 0x01, 0x23, 0xe0, 0x4a, + 0xe0, 0x48, 0x13, 0x70, 0x03, 0xf0, 0xec, 0xfb, 0x00, 0x20, 0xdf, 0x4d, + 0xfc, 0xf7, 0x26, 0xff, 0x06, 0x46, 0xde, 0x48, 0x04, 0x78, 0xbf, 0xf3, + 0x5b, 0x8f, 0x14, 0xf0, 0x01, 0x04, 0x30, 0xd1, 0xf5, 0xf7, 0x04, 0xf8, + 0x68, 0xb3, 0xda, 0x4b, 0xd3, 0xf8, 0xd0, 0x20, 0x51, 0x00, 0x00, 0xf1, + 0x7f, 0x82, 0xd3, 0xf8, 0xd0, 0x20, 0x00, 0x2a, 0xc0, 0xf2, 0x7a, 0x82, + 0xd3, 0xf8, 0xd0, 0x20, 0xd2, 0x00, 0x00, 0xf1, 0x77, 0x82, 0xd3, 0xf8, + 0xd0, 0x20, 0x50, 0x01, 0x00, 0xf1, 0x72, 0x82, 0xd3, 0xf8, 0xd0, 0x20, + 0xd1, 0x01, 0x00, 0xf1, 0x6f, 0x82, 0xd3, 0xf8, 0xd0, 0x20, 0x12, 0x02, + 0x0b, 0xd4, 0xd3, 0xf8, 0xd0, 0x20, 0x90, 0x02, 0x00, 0xf1, 0x68, 0x82, + 0xd3, 0xf8, 0xd0, 0x30, 0x13, 0xf4, 0x80, 0x0f, 0x0c, 0xbf, 0x0b, 0x24, + 0x01, 0x24, 0xc4, 0x48, 0x2c, 0x70, 0xf4, 0xf7, 0xcd, 0xff, 0xc4, 0x4c, + 0x23, 0x78, 0xbf, 0xf3, 0x5b, 0x8f, 0xd9, 0x07, 0x0b, 0xd4, 0x20, 0x46, + 0xf4, 0xf7, 0xcc, 0xff, 0x38, 0xb1, 0xbe, 0x4b, 0x20, 0x46, 0xd3, 0xf8, + 0xd0, 0x20, 0xbe, 0x4b, 0x1a, 0x60, 0xf4, 0xf7, 0xbb, 0xff, 0xba, 0x4a, + 0xd2, 0xf8, 0xd0, 0x30, 0x43, 0xf4, 0x80, 0x33, 0xc2, 0xf8, 0xd0, 0x30, + 0x2b, 0x78, 0x01, 0x2b, 0x07, 0xd1, 0x4d, 0xf6, 0x59, 0x70, 0xe8, 0xf7, + 0x0f, 0xfe, 0x4f, 0xf4, 0xfa, 0x70, 0xef, 0xf7, 0x13, 0xfd, 0x00, 0x22, + 0x94, 0x21, 0x07, 0xf1, 0x54, 0x00, 0x00, 0x25, 0xfe, 0xf7, 0x25, 0xf9, + 0x00, 0x22, 0x92, 0x21, 0x07, 0xf1, 0x38, 0x00, 0xfe, 0xf7, 0x1f, 0xf9, + 0x00, 0x22, 0x93, 0x21, 0x07, 0xf1, 0x1c, 0x00, 0xfe, 0xf7, 0x19, 0xf9, + 0x07, 0xf1, 0xa8, 0x04, 0xef, 0xf7, 0x18, 0xfc, 0xa8, 0x4b, 0x98, 0x22, + 0x29, 0x46, 0xc7, 0xf8, 0xa8, 0x30, 0x07, 0xf1, 0xd8, 0x00, 0xa6, 0x4b, + 0xc7, 0xf8, 0xb8, 0x50, 0xc7, 0xf8, 0xbc, 0x30, 0xc7, 0xf8, 0xc0, 0x40, + 0xa7, 0xf8, 0xd4, 0x50, 0xc7, 0xe9, 0x31, 0x55, 0xc7, 0xe9, 0x33, 0x55, + 0x01, 0xf0, 0x40, 0xff, 0x9f, 0x4b, 0xc7, 0xe9, 0x5c, 0x35, 0x24, 0x23, + 0x7b, 0x61, 0x07, 0xf5, 0xbc, 0x73, 0x7a, 0x69, 0x03, 0xf8, 0x01, 0x5b, + 0x01, 0x3a, 0x7a, 0x61, 0xf9, 0xd1, 0x20, 0x46, 0xf6, 0xf7, 0x23, 0xfa, + 0x98, 0x4b, 0x1c, 0x22, 0x79, 0x69, 0x07, 0xf1, 0x70, 0x00, 0xc7, 0xf8, + 0x9c, 0x31, 0x01, 0xf0, 0x27, 0xff, 0x17, 0x21, 0x07, 0xf1, 0x70, 0x00, + 0xa7, 0xf8, 0x80, 0x10, 0xeb, 0xf7, 0x16, 0xfc, 0x79, 0x69, 0x07, 0xf1, + 0x70, 0x00, 0xeb, 0xf7, 0x35, 0xfc, 0x79, 0x69, 0xb7, 0xf9, 0x80, 0x00, + 0xea, 0xf7, 0x18, 0xfd, 0x01, 0x21, 0x07, 0xf1, 0x70, 0x00, 0xf5, 0xf7, + 0xe9, 0xf8, 0x1c, 0x22, 0x79, 0x69, 0x07, 0xf1, 0x8c, 0x00, 0x01, 0xf0, + 0x0b, 0xff, 0x16, 0x21, 0x07, 0xf1, 0x8c, 0x00, 0xa7, 0xf8, 0x9c, 0x10, + 0xeb, 0xf7, 0xfa, 0xfb, 0x79, 0x69, 0x07, 0xf1, 0x8c, 0x00, 0xeb, 0xf7, + 0x19, 0xfc, 0x79, 0x69, 0xb7, 0xf9, 0x9c, 0x00, 0xea, 0xf7, 0xfc, 0xfc, + 0x07, 0xf1, 0x8c, 0x00, 0x01, 0x21, 0xf5, 0xf7, 0xcd, 0xf8, 0x07, 0xf1, + 0x8c, 0x00, 0xf5, 0xf7, 0xc8, 0xff, 0x00, 0x28, 0x78, 0xd0, 0x07, 0xf1, + 0x70, 0x00, 0xf5, 0xf7, 0xc2, 0xff, 0x01, 0x28, 0x72, 0xd0, 0xf4, 0xf7, + 0x87, 0xff, 0x0a, 0x25, 0x79, 0x69, 0xb7, 0xf9, 0x9c, 0x00, 0xea, 0xf7, + 0xe3, 0xfc, 0xf4, 0xf7, 0x6b, 0xff, 0xf4, 0xf7, 0x7d, 0xff, 0x01, 0x21, + 0x07, 0xf1, 0x8c, 0x00, 0xeb, 0xf7, 0xf2, 0xfb, 0xf4, 0xf7, 0x62, 0xff, + 0xf4, 0xf7, 0x74, 0xff, 0x00, 0x21, 0xb7, 0xf9, 0x9c, 0x00, 0xea, 0xf7, + 0xd1, 0xfc, 0xf4, 0xf7, 0x59, 0xff, 0x00, 0x21, 0x07, 0xf1, 0x8c, 0x00, + 0xf5, 0xf7, 0xa8, 0xff, 0x05, 0x20, 0xf4, 0xf7, 0xe9, 0xfe, 0xf4, 0xf7, + 0x63, 0xff, 0x01, 0x21, 0xb7, 0xf9, 0x9c, 0x00, 0xea, 0xf7, 0xc0, 0xfc, + 0xf4, 0xf7, 0x48, 0xff, 0x01, 0x21, 0x07, 0xf1, 0x8c, 0x00, 0xf5, 0xf7, + 0x97, 0xff, 0x05, 0x20, 0xf4, 0xf7, 0xd8, 0xfe, 0x01, 0x3d, 0xdb, 0xd1, + 0xf4, 0xf7, 0x50, 0xff, 0x01, 0x21, 0x07, 0xf1, 0x70, 0x00, 0xeb, 0xf7, + 0xc5, 0xfb, 0xf4, 0xf7, 0x35, 0xff, 0x29, 0x46, 0x07, 0xf1, 0x70, 0x00, + 0xf5, 0xf7, 0x84, 0xff, 0x05, 0x20, 0xf4, 0xf7, 0xc5, 0xfe, 0x01, 0x21, + 0x07, 0xf1, 0x8c, 0x00, 0xf5, 0xf7, 0x7c, 0xff, 0x05, 0x20, 0xf4, 0xf7, + 0xbd, 0xfe, 0x01, 0x21, 0x07, 0xf1, 0x70, 0x00, 0xf5, 0xf7, 0x74, 0xff, + 0x05, 0x20, 0xf4, 0xf7, 0xb5, 0xfe, 0xf4, 0xf7, 0x2f, 0xff, 0x29, 0x46, + 0x07, 0xf1, 0x70, 0x00, 0xeb, 0xf7, 0xa4, 0xfb, 0xf4, 0xf7, 0x14, 0xff, + 0xf4, 0xf7, 0x26, 0xff, 0x07, 0xf1, 0x8c, 0x00, 0x29, 0x46, 0xeb, 0xf7, + 0x9b, 0xfb, 0xf4, 0xf7, 0x0b, 0xff, 0x07, 0xf1, 0x8c, 0x00, 0xf5, 0xf7, + 0x52, 0xff, 0x18, 0xb1, 0x07, 0xf1, 0x70, 0x00, 0xf5, 0xf7, 0x4d, 0xff, + 0xb7, 0xf9, 0x9c, 0x91, 0xb7, 0xf9, 0x9e, 0x51, 0x3a, 0x49, 0x48, 0x46, + 0xf5, 0xf7, 0xe6, 0xf9, 0x80, 0x46, 0x39, 0x49, 0x28, 0x46, 0xf5, 0xf7, + 0xe1, 0xf9, 0x01, 0x46, 0x40, 0x46, 0xf5, 0xf7, 0xf3, 0xf9, 0x34, 0x49, + 0x82, 0x46, 0x48, 0x46, 0xf5, 0xf7, 0xcc, 0xf9, 0x32, 0x49, 0x80, 0x46, + 0x28, 0x46, 0xf5, 0xf7, 0xc7, 0xf9, 0x98, 0x22, 0x00, 0x21, 0xc7, 0xf8, + 0x9c, 0x00, 0x07, 0xf1, 0xd8, 0x00, 0xc7, 0xf8, 0x8c, 0xa0, 0xa7, 0xf8, + 0x90, 0x90, 0xc7, 0xf8, 0x94, 0x80, 0xa7, 0xf8, 0x98, 0x50, 0x01, 0xf0, + 0x4b, 0xfe, 0x07, 0xf1, 0x8c, 0x01, 0x07, 0xf1, 0xd8, 0x00, 0xec, 0xf7, + 0xab, 0xfd, 0x20, 0x46, 0xf6, 0xf7, 0x2d, 0xf9, 0x4f, 0x23, 0x07, 0xf1, + 0x8c, 0x01, 0x20, 0x46, 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, 0xc0, 0xff, + 0x4f, 0xf4, 0x75, 0x63, 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, 0xa7, 0xf8, + 0x8c, 0x30, 0xec, 0xf7, 0xb7, 0xff, 0x40, 0xf2, 0x4c, 0x53, 0x07, 0xf1, + 0x8c, 0x01, 0x20, 0x46, 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, 0xae, 0xff, + 0x40, 0xf2, 0x4d, 0x33, 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, 0xa7, 0xf8, + 0x8c, 0x30, 0xec, 0xf7, 0xa5, 0xff, 0x40, 0xf6, 0x52, 0x13, 0x07, 0xf1, + 0x8c, 0x01, 0x20, 0x46, 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, 0x9c, 0xff, + 0x40, 0xf6, 0x53, 0x73, 0x1a, 0xe0, 0x00, 0xbf, 0x08, 0x0b, 0x02, 0x24, + 0x8d, 0xe5, 0x01, 0x08, 0x50, 0x2f, 0x02, 0x24, 0x3c, 0x2c, 0x02, 0x24, + 0x00, 0x44, 0x02, 0x58, 0x40, 0x2c, 0x02, 0x24, 0x54, 0x2f, 0x02, 0x24, + 0x74, 0xec, 0x01, 0x08, 0x23, 0xe1, 0x00, 0x08, 0xa0, 0x86, 0x01, 0x00, + 0x17, 0x00, 0x16, 0x00, 0x00, 0xd6, 0x01, 0x08, 0x64, 0xd5, 0x01, 0x08, + 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, + 0x77, 0xff, 0x0a, 0x20, 0xef, 0xf7, 0x94, 0xfb, 0x48, 0xf2, 0x9c, 0x03, + 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, + 0x6b, 0xff, 0x42, 0xf2, 0x9e, 0x03, 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, + 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, 0x62, 0xff, 0x0a, 0x20, 0xef, 0xf7, + 0x7f, 0xfb, 0x40, 0xf2, 0x42, 0x23, 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, + 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, 0x56, 0xff, 0x0a, 0x20, 0xef, 0xf7, + 0x73, 0xfb, 0x4a, 0xf2, 0x94, 0x03, 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, + 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, 0x4a, 0xff, 0x40, 0xf6, 0x3b, 0x73, + 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, + 0x41, 0xff, 0x40, 0xf6, 0x35, 0x73, 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, + 0xa7, 0xf8, 0x8c, 0x30, 0xec, 0xf7, 0x38, 0xff, 0x0a, 0x20, 0xef, 0xf7, + 0x55, 0xfb, 0x01, 0x21, 0x07, 0xf1, 0x54, 0x00, 0xf5, 0xf7, 0x8a, 0xfe, + 0x0a, 0x20, 0xef, 0xf7, 0x4d, 0xfb, 0x00, 0x21, 0x07, 0xf1, 0x54, 0x00, + 0xf5, 0xf7, 0x82, 0xfe, 0x0a, 0x20, 0xef, 0xf7, 0x45, 0xfb, 0x01, 0x21, + 0x07, 0xf1, 0x54, 0x00, 0xf5, 0xf7, 0x7a, 0xfe, 0x0a, 0x20, 0xef, 0xf7, + 0x3d, 0xfb, 0x4d, 0xf6, 0x59, 0x73, 0x9e, 0x42, 0x00, 0xf0, 0x2b, 0x82, + 0xff, 0xf7, 0x80, 0xfa, 0x05, 0x46, 0x00, 0x28, 0x00, 0xf0, 0x27, 0x82, + 0xb1, 0x4b, 0x1b, 0x78, 0x13, 0xb1, 0xb1, 0x48, 0x03, 0xf0, 0xa4, 0xf9, + 0x40, 0xf2, 0xaa, 0x73, 0x9e, 0x42, 0x40, 0xf0, 0x30, 0x81, 0x01, 0x20, + 0xfc, 0xf7, 0xda, 0xfc, 0x81, 0x46, 0x5f, 0xfa, 0x80, 0xf8, 0x02, 0x20, + 0xfc, 0xf7, 0xd4, 0xfc, 0x06, 0x46, 0x03, 0x20, 0xfc, 0xf7, 0xd0, 0xfc, + 0xa5, 0x4b, 0x38, 0x61, 0x1b, 0x78, 0x2b, 0xb1, 0x03, 0x46, 0x32, 0x46, + 0x41, 0x46, 0xa4, 0x48, 0xf2, 0xf7, 0x3c, 0xfc, 0xa3, 0x48, 0xf6, 0xf7, + 0x0f, 0xfb, 0x18, 0xf0, 0x02, 0x0f, 0xa2, 0x4d, 0x45, 0xd0, 0x18, 0xf0, + 0x60, 0x0b, 0x4f, 0xf0, 0x28, 0x00, 0xdf, 0xf8, 0xa0, 0xa2, 0x29, 0xd0, + 0xf4, 0xf7, 0x88, 0xfd, 0x00, 0x23, 0x06, 0xf1, 0x00, 0x62, 0xc6, 0xf5, + 0x00, 0x11, 0xc0, 0xf8, 0x00, 0xa0, 0x80, 0xf8, 0x20, 0x30, 0x43, 0x62, + 0xc0, 0xe9, 0x04, 0x23, 0x01, 0x32, 0xc0, 0xe9, 0x01, 0x33, 0xc0, 0xe9, + 0x06, 0x13, 0x00, 0xd0, 0x41, 0xbb, 0x00, 0x21, 0x93, 0x48, 0xe8, 0xf7, + 0xe5, 0xfa, 0x93, 0x48, 0xf5, 0xf7, 0x17, 0xfe, 0x00, 0x28, 0x7f, 0xf4, + 0x69, 0xad, 0x8a, 0x4b, 0x18, 0x70, 0x6b, 0xe5, 0x06, 0x24, 0xa2, 0xe5, + 0x04, 0x24, 0xa0, 0xe5, 0x03, 0x24, 0x9e, 0xe5, 0x02, 0x24, 0x9c, 0xe5, + 0xf4, 0xf7, 0x5e, 0xfd, 0x4f, 0xf0, 0x00, 0x62, 0x00, 0x23, 0xc0, 0xf8, + 0x08, 0xb0, 0x80, 0xf8, 0x20, 0xb0, 0xc0, 0xf8, 0x24, 0xb0, 0xc0, 0xe9, + 0x04, 0x23, 0x4f, 0xf4, 0x00, 0x12, 0x00, 0x23, 0xc0, 0xe9, 0x00, 0xab, + 0xc0, 0xe9, 0x06, 0x23, 0x28, 0x60, 0x18, 0xf0, 0x04, 0x0f, 0x02, 0xd0, + 0xff, 0xf7, 0x4a, 0xf9, 0x28, 0x60, 0x18, 0xf0, 0x08, 0x0f, 0x07, 0xd0, + 0x88, 0x20, 0xf4, 0xf7, 0x3f, 0xfd, 0x82, 0x46, 0xfc, 0xf7, 0x46, 0xfc, + 0xc5, 0xf8, 0x00, 0xa0, 0x19, 0xf0, 0x80, 0x0f, 0x14, 0xd0, 0x28, 0x20, + 0xd5, 0xf8, 0x00, 0x90, 0xf4, 0xf7, 0x32, 0xfd, 0x74, 0x4b, 0x00, 0x22, + 0x46, 0x76, 0x28, 0x60, 0xc0, 0xe9, 0x00, 0x39, 0x00, 0x23, 0xc0, 0xe9, + 0x02, 0x23, 0xc0, 0xe9, 0x04, 0x23, 0x00, 0x23, 0x03, 0x76, 0xc3, 0x61, + 0x80, 0xf8, 0x20, 0x30, 0x18, 0xf0, 0x40, 0x0f, 0xdf, 0xf8, 0xc8, 0x91, + 0x08, 0xd0, 0xc8, 0x20, 0xf4, 0xf7, 0x1a, 0xfd, 0x82, 0x46, 0x69, 0x49, + 0xe8, 0xf7, 0xcc, 0xfa, 0xc9, 0xf8, 0x00, 0xa0, 0x18, 0xf0, 0x20, 0x0f, + 0x08, 0xd0, 0x54, 0x20, 0xf4, 0xf7, 0x0e, 0xfd, 0x80, 0x46, 0x63, 0x49, + 0xe8, 0xf7, 0xa4, 0xfa, 0xc9, 0xf8, 0x00, 0x80, 0xd9, 0xf8, 0x00, 0x00, + 0x29, 0x68, 0x00, 0x28, 0x00, 0xf0, 0xca, 0x80, 0x03, 0x68, 0x5b, 0x6a, + 0x98, 0x47, 0x06, 0x46, 0x00, 0x28, 0x40, 0xf0, 0xa2, 0x80, 0x5b, 0x49, + 0x5b, 0x48, 0x01, 0xf0, 0xc3, 0xf8, 0x81, 0x46, 0x00, 0x28, 0x70, 0xd0, + 0x03, 0x46, 0x04, 0x22, 0x01, 0x21, 0x07, 0xf1, 0x8c, 0x00, 0x01, 0xf0, + 0x35, 0xf9, 0x32, 0x46, 0x31, 0x46, 0x48, 0x46, 0x01, 0xf0, 0x40, 0xf9, + 0xd7, 0xf8, 0x8c, 0x00, 0xfa, 0xf7, 0x9e, 0xff, 0x42, 0x1c, 0x05, 0x46, + 0x00, 0xf0, 0x3b, 0x81, 0x4e, 0x49, 0x07, 0xf1, 0x70, 0x00, 0xf5, 0xf7, + 0xb7, 0xfd, 0x07, 0xf1, 0x70, 0x00, 0xf4, 0xf7, 0xfb, 0xfe, 0x80, 0x46, + 0x00, 0x28, 0x3f, 0xd1, 0x00, 0xf0, 0x26, 0xfe, 0x46, 0x46, 0x13, 0x23, + 0x03, 0x60, 0x28, 0x46, 0xdf, 0xf8, 0xf8, 0xb0, 0xe8, 0xf7, 0x08, 0xfb, + 0xb0, 0xf5, 0x80, 0x4f, 0x28, 0xbf, 0x4f, 0xf4, 0x80, 0x40, 0x80, 0x46, + 0x01, 0xf0, 0x26, 0xfc, 0x82, 0x46, 0x7b, 0x69, 0xb3, 0x42, 0x80, 0xf0, + 0xf3, 0x80, 0x42, 0x46, 0x4b, 0x46, 0x01, 0x21, 0x50, 0x46, 0x01, 0xf0, + 0xff, 0xf8, 0x7b, 0x69, 0x28, 0x46, 0xe9, 0x18, 0x39, 0x61, 0xe8, 0xf7, + 0xef, 0xfa, 0x39, 0x69, 0x02, 0x46, 0xb1, 0xfb, 0xf0, 0xf3, 0x00, 0xfb, + 0x13, 0x13, 0x3b, 0xb9, 0x58, 0x46, 0xf5, 0xf7, 0x75, 0xff, 0x42, 0xf2, + 0x10, 0x70, 0xf4, 0xf7, 0x99, 0xfc, 0x39, 0x69, 0x43, 0x46, 0x0a, 0x46, + 0x58, 0x46, 0x51, 0x46, 0xf6, 0xf7, 0xb6, 0xf8, 0x4f, 0xf4, 0x7a, 0x70, + 0xf4, 0xf7, 0x8e, 0xfc, 0x7b, 0x69, 0x43, 0x44, 0x7b, 0x61, 0xd2, 0xe7, + 0x03, 0x68, 0x22, 0x46, 0x39, 0x6f, 0x9b, 0x69, 0x98, 0x47, 0xb0, 0xf1, + 0x00, 0x08, 0x05, 0xda, 0x00, 0xf0, 0xde, 0xfd, 0xc8, 0xf1, 0x00, 0x03, + 0x03, 0x60, 0xb6, 0xe7, 0xd7, 0xf8, 0xb8, 0x60, 0xb3, 0xe7, 0x6f, 0xf0, + 0x02, 0x00, 0xe8, 0xf7, 0xef, 0xfa, 0x1f, 0x4b, 0x13, 0x49, 0x1a, 0x68, + 0x09, 0x78, 0x02, 0xf0, 0x7f, 0x42, 0xb2, 0xf1, 0x00, 0x5f, 0x00, 0xf0, + 0xd5, 0x80, 0x1a, 0x68, 0x02, 0xf0, 0x7f, 0x42, 0xb2, 0xf1, 0x10, 0x5f, + 0x00, 0xf0, 0xce, 0x80, 0x1a, 0x68, 0x02, 0xf0, 0x7f, 0x42, 0xb2, 0xf1, + 0x40, 0x5f, 0x00, 0xf0, 0xc7, 0x80, 0x1b, 0x68, 0x03, 0xf0, 0x7f, 0x43, + 0xb3, 0xf1, 0x60, 0x5f, 0x00, 0xf0, 0xc0, 0x80, 0x00, 0x29, 0x00, 0xf0, + 0xc8, 0x80, 0x0f, 0x48, 0x03, 0xf0, 0x4a, 0xf8, 0xc3, 0xe0, 0x6f, 0xf0, + 0x01, 0x00, 0xd4, 0xe7, 0x08, 0x0b, 0x02, 0x24, 0xab, 0xe5, 0x01, 0x08, + 0xc8, 0xe5, 0x01, 0x08, 0xb0, 0x3f, 0x02, 0x24, 0x7c, 0x3f, 0x02, 0x24, + 0x01, 0x01, 0xff, 0x80, 0xe8, 0x0a, 0x00, 0x24, 0xbc, 0xeb, 0x01, 0x08, + 0xb6, 0xd9, 0x01, 0x08, 0xe4, 0xe5, 0x01, 0x08, 0xe7, 0xe5, 0x01, 0x08, + 0x00, 0x00, 0x04, 0x08, 0x22, 0xe6, 0x01, 0x08, 0xbc, 0xd6, 0x01, 0x08, + 0xb8, 0x3f, 0x02, 0x24, 0x00, 0x29, 0x6b, 0xd0, 0x0b, 0x68, 0x08, 0x46, + 0xea, 0x46, 0x9b, 0x68, 0x98, 0x47, 0x80, 0x46, 0x00, 0x28, 0x40, 0xf0, + 0x8a, 0x80, 0x28, 0x68, 0x03, 0x68, 0x9b, 0x6a, 0x98, 0x47, 0x10, 0x28, + 0x02, 0x46, 0x28, 0x68, 0xb8, 0xbf, 0x10, 0x22, 0x01, 0x68, 0x93, 0x00, + 0x07, 0x33, 0x23, 0xf0, 0x07, 0x03, 0xad, 0xeb, 0x03, 0x0d, 0xd3, 0x17, + 0x0d, 0xf1, 0x10, 0x09, 0xcd, 0xe9, 0x00, 0x23, 0x43, 0x46, 0x4d, 0x69, + 0x32, 0x46, 0x49, 0x46, 0xa8, 0x47, 0xd9, 0xf8, 0x00, 0x00, 0xfa, 0xf7, + 0xc9, 0xfe, 0x43, 0x1c, 0x05, 0x46, 0x65, 0xd0, 0xe8, 0xf7, 0x48, 0xfa, + 0xb0, 0xf5, 0x80, 0x4f, 0x28, 0xbf, 0x4f, 0xf4, 0x80, 0x40, 0x81, 0x46, + 0x01, 0xf0, 0x66, 0xfb, 0x83, 0x46, 0xc7, 0xf8, 0x0c, 0x80, 0xd7, 0xe9, + 0x04, 0x32, 0x93, 0x42, 0x2f, 0xd9, 0xb1, 0x4b, 0x59, 0x46, 0x18, 0x68, + 0x03, 0x68, 0xcd, 0xf8, 0x00, 0x90, 0xfa, 0x68, 0x01, 0x92, 0xd3, 0xf8, + 0x14, 0x80, 0x7b, 0x69, 0xf2, 0x18, 0x00, 0x23, 0xc0, 0x47, 0x7b, 0x69, + 0x28, 0x46, 0x05, 0xeb, 0x03, 0x08, 0xe8, 0xf7, 0x25, 0xfa, 0x02, 0x46, + 0xb8, 0xfb, 0xf0, 0xf3, 0x00, 0xfb, 0x13, 0x83, 0x3b, 0xb9, 0x41, 0x46, + 0xa4, 0x48, 0xf5, 0xf7, 0xab, 0xfe, 0x42, 0xf2, 0x10, 0x70, 0xf4, 0xf7, + 0xcf, 0xfb, 0x4b, 0x46, 0x42, 0x46, 0x59, 0x46, 0x9f, 0x48, 0xf5, 0xf7, + 0xed, 0xff, 0x4f, 0xf4, 0x7a, 0x70, 0xf4, 0xf7, 0xc5, 0xfb, 0x7b, 0x69, + 0x4b, 0x44, 0x7b, 0x61, 0xcb, 0xe7, 0xd5, 0x46, 0x99, 0x48, 0xf6, 0xf7, + 0x25, 0xf9, 0x99, 0x4b, 0x99, 0x4a, 0xc7, 0xf8, 0xb4, 0x30, 0x99, 0x4b, + 0x99, 0x48, 0xc7, 0xf8, 0xa8, 0x30, 0x00, 0x23, 0xc7, 0xe9, 0x2b, 0x33, + 0x00, 0x23, 0xcd, 0xe9, 0x02, 0x23, 0xd7, 0xf8, 0xb4, 0x30, 0x00, 0x93, + 0x94, 0xe8, 0x0e, 0x00, 0xf5, 0xf7, 0xfc, 0xfb, 0x92, 0x4b, 0x1b, 0x78, + 0x13, 0xb1, 0x92, 0x48, 0x02, 0xf0, 0x9c, 0xff, 0x00, 0x20, 0xe8, 0xf7, + 0x19, 0xfa, 0xef, 0xf7, 0x23, 0xf8, 0xfe, 0xe7, 0xd5, 0x46, 0x28, 0x46, + 0x21, 0xe7, 0x6f, 0xf0, 0x03, 0x00, 0x1e, 0xe7, 0x19, 0xb1, 0x8b, 0x49, + 0x8b, 0x48, 0xf2, 0xf7, 0x3f, 0xfa, 0x00, 0x20, 0xe8, 0xf7, 0x08, 0xfa, + 0x87, 0x48, 0xf4, 0xf7, 0x57, 0xfd, 0xfd, 0xf7, 0xc1, 0xfd, 0x7f, 0x4b, + 0x86, 0x4a, 0xc7, 0xf8, 0xb4, 0x30, 0x86, 0x4b, 0xc7, 0xf8, 0xb0, 0x00, + 0xc7, 0xe9, 0x2a, 0x30, 0x00, 0x23, 0x84, 0x48, 0xcd, 0xe9, 0x02, 0x23, + 0xd7, 0xf8, 0xb4, 0x30, 0x00, 0x93, 0x94, 0xe8, 0x0e, 0x00, 0xf5, 0xf7, + 0xc9, 0xfb, 0x28, 0x46, 0xe8, 0xf7, 0xec, 0xf9, 0x77, 0x4b, 0x1b, 0x78, + 0x13, 0xb1, 0x7d, 0x48, 0x02, 0xf0, 0x66, 0xff, 0x7c, 0x4d, 0x4f, 0xf4, + 0x70, 0x76, 0x00, 0x21, 0x32, 0x46, 0x28, 0x46, 0x01, 0xf0, 0x40, 0xfb, + 0x79, 0x4b, 0x05, 0xf1, 0x20, 0x01, 0x00, 0x20, 0x6b, 0x62, 0x78, 0x4b, + 0x2b, 0x65, 0x78, 0x4b, 0xeb, 0x65, 0xe9, 0xf7, 0xcf, 0xfb, 0x05, 0xf1, + 0x4c, 0x01, 0x01, 0x20, 0xe9, 0xf7, 0xca, 0xfb, 0x05, 0xf1, 0x58, 0x01, + 0x02, 0x20, 0xe9, 0xf7, 0xc5, 0xfb, 0x6a, 0x6a, 0x82, 0x46, 0x21, 0x46, + 0x00, 0x20, 0xc7, 0xf8, 0xa8, 0x60, 0xe8, 0xf7, 0x81, 0xfc, 0xa8, 0xbb, + 0xd7, 0xf8, 0xa8, 0x30, 0x21, 0x46, 0x2a, 0x6d, 0x01, 0x20, 0xab, 0x62, + 0xc7, 0xf8, 0xa8, 0x60, 0xe8, 0xf7, 0x76, 0xfc, 0xf8, 0xb1, 0x09, 0x24, + 0x5b, 0x4b, 0x1b, 0x78, 0x23, 0xb1, 0x4f, 0xf4, 0x70, 0x71, 0x65, 0x48, + 0xf2, 0xf7, 0xe0, 0xf9, 0x01, 0x23, 0x9c, 0x42, 0x85, 0xf8, 0x64, 0x30, + 0x2c, 0xd1, 0x5d, 0x4c, 0x54, 0x4e, 0x94, 0xf8, 0x64, 0x30, 0x04, 0x2b, + 0x87, 0xf8, 0xaf, 0x30, 0x00, 0xf2, 0x37, 0x83, 0x01, 0x2b, 0x00, 0xf2, + 0x3a, 0x83, 0x00, 0xf0, 0xd3, 0x83, 0xff, 0x23, 0x84, 0xf8, 0x64, 0x30, + 0xce, 0xe3, 0xd7, 0xf8, 0xa8, 0x30, 0x21, 0x46, 0xea, 0x6d, 0x02, 0x20, + 0x6b, 0x65, 0xc7, 0xf8, 0xa8, 0x60, 0xe8, 0xf7, 0x4b, 0xfc, 0x08, 0xb1, + 0x01, 0x24, 0xd3, 0xe7, 0xd7, 0xf8, 0xa8, 0x30, 0x28, 0x6a, 0x2b, 0x66, + 0xe8, 0xf7, 0x76, 0xfc, 0x04, 0x46, 0xa8, 0x6d, 0xe8, 0xf7, 0x72, 0xfc, + 0xa0, 0x42, 0x2c, 0xbf, 0xa8, 0x66, 0xac, 0x66, 0x00, 0x20, 0xe9, 0xf7, + 0xe9, 0xfb, 0x83, 0x46, 0x58, 0xb1, 0x3c, 0x4b, 0x1b, 0x78, 0x1b, 0xb1, + 0x00, 0x21, 0x47, 0x48, 0xf2, 0xf7, 0xa2, 0xf9, 0x40, 0x4b, 0x01, 0x22, + 0x83, 0xf8, 0x64, 0x20, 0xc1, 0xe7, 0xd5, 0xf8, 0x28, 0xe0, 0xbe, 0xf5, + 0x70, 0x7f, 0x04, 0xd8, 0xd5, 0xf8, 0x54, 0xc0, 0xbc, 0xf5, 0x70, 0x7f, + 0x07, 0xd9, 0x31, 0x4b, 0x1b, 0x78, 0x00, 0x2b, 0xec, 0xd0, 0x3d, 0x48, + 0x02, 0xf0, 0xd8, 0xfe, 0xe8, 0xe7, 0xab, 0x6d, 0x01, 0x46, 0x81, 0x46, + 0x02, 0x46, 0x9b, 0x68, 0x04, 0x46, 0x38, 0x61, 0x7b, 0x60, 0x2b, 0x6d, + 0xbb, 0x60, 0x6b, 0x6a, 0xfb, 0x60, 0x03, 0x46, 0x86, 0x45, 0x0e, 0xd8, + 0x8c, 0x45, 0x0c, 0xd8, 0x86, 0x45, 0x24, 0x4c, 0x04, 0xd1, 0x8c, 0x45, + 0x02, 0xd1, 0x3b, 0x69, 0x4b, 0x45, 0x74, 0xd0, 0x23, 0x78, 0x00, 0x2b, + 0xcc, 0xd0, 0x2e, 0x48, 0xde, 0xe7, 0x93, 0x42, 0x1c, 0xd1, 0xfe, 0x68, + 0x06, 0xeb, 0xc0, 0x08, 0xbe, 0x68, 0x01, 0x30, 0xd8, 0xf8, 0x04, 0x80, + 0x43, 0x44, 0x06, 0xeb, 0xc1, 0x08, 0x01, 0x31, 0xd8, 0xf8, 0x04, 0x80, + 0x42, 0x44, 0x93, 0x42, 0xdc, 0xd1, 0x3a, 0x69, 0x99, 0x44, 0x1a, 0x44, + 0x3a, 0x61, 0x7a, 0x68, 0x9a, 0x42, 0x52, 0xd2, 0x11, 0x4b, 0x1b, 0x78, + 0x00, 0x2b, 0xad, 0xd0, 0x1f, 0x48, 0xbf, 0xe7, 0x40, 0xd2, 0xfe, 0x68, + 0x02, 0x2c, 0x06, 0xeb, 0xc0, 0x08, 0xd8, 0xf8, 0x04, 0x80, 0x43, 0x44, + 0x05, 0xd1, 0x0a, 0x4b, 0x1b, 0x78, 0x00, 0x2b, 0x9e, 0xd0, 0x19, 0x48, + 0xb0, 0xe7, 0x01, 0x30, 0x01, 0x24, 0xde, 0xe7, 0x7c, 0x3f, 0x02, 0x24, + 0xb0, 0x3f, 0x02, 0x24, 0xb1, 0x4a, 0x01, 0x08, 0x40, 0x0d, 0x03, 0x00, + 0x8d, 0x4a, 0x01, 0x08, 0x68, 0x06, 0x00, 0x24, 0x08, 0x0b, 0x02, 0x24, + 0xf6, 0xe5, 0x01, 0x08, 0x00, 0x00, 0x04, 0x08, 0x07, 0xe6, 0x01, 0x08, + 0x90, 0xd0, 0x03, 0x00, 0xbd, 0x64, 0x01, 0x08, 0xe8, 0x0b, 0x02, 0x24, + 0x34, 0xe6, 0x01, 0x08, 0x28, 0x07, 0x00, 0x24, 0x80, 0x4b, 0x02, 0x24, + 0x80, 0x87, 0x02, 0x24, 0x80, 0x69, 0x02, 0x24, 0x47, 0xe6, 0x01, 0x08, + 0x87, 0xe6, 0x01, 0x08, 0xb1, 0xe6, 0x01, 0x08, 0x46, 0xe7, 0x01, 0x08, + 0x11, 0xe7, 0x01, 0x08, 0xdd, 0xe6, 0x01, 0x08, 0xbe, 0x68, 0x01, 0x2c, + 0x06, 0xeb, 0xc1, 0x08, 0xd8, 0xf8, 0x04, 0x80, 0x42, 0x44, 0xbe, 0xd0, + 0x01, 0x31, 0x02, 0x24, 0xa3, 0xe7, 0x00, 0x22, 0x13, 0x46, 0x14, 0x46, + 0x7e, 0xe7, 0x20, 0x22, 0xff, 0x21, 0x07, 0xf1, 0xb4, 0x00, 0x01, 0xf0, + 0x25, 0xfa, 0x01, 0x23, 0x00, 0x20, 0x07, 0xf1, 0x8c, 0x01, 0xc7, 0xf8, + 0xa8, 0x30, 0x03, 0xf1, 0x01, 0x23, 0xc7, 0xf8, 0xd4, 0x00, 0xc7, 0xe9, + 0x2b, 0x30, 0xe9, 0xf7, 0x53, 0xfd, 0x07, 0xf1, 0x70, 0x01, 0x02, 0x20, + 0xe9, 0xf7, 0x4e, 0xfd, 0x23, 0x78, 0x6b, 0xb3, 0x97, 0xf8, 0x8c, 0x30, + 0x01, 0x2b, 0x00, 0xf0, 0xff, 0x80, 0xb3, 0x4a, 0xb3, 0x49, 0x03, 0x2b, + 0x18, 0xbf, 0x0a, 0x46, 0x97, 0xf8, 0x8f, 0x10, 0x97, 0xf8, 0x8d, 0x30, + 0x01, 0x91, 0x97, 0xf8, 0x8e, 0x10, 0xaf, 0x48, 0x00, 0x91, 0xaf, 0x49, + 0xf2, 0xf7, 0xcc, 0xf8, 0x23, 0x78, 0xab, 0xb1, 0x97, 0xf8, 0x70, 0x30, + 0x01, 0x2b, 0x00, 0xf0, 0xe9, 0x80, 0xa7, 0x4a, 0xa7, 0x49, 0x03, 0x2b, + 0x18, 0xbf, 0x0a, 0x46, 0x97, 0xf8, 0x73, 0x10, 0x97, 0xf8, 0x71, 0x30, + 0x01, 0x91, 0x97, 0xf8, 0x72, 0x10, 0xa3, 0x48, 0x00, 0x91, 0xa4, 0x49, + 0xf2, 0xf7, 0xb4, 0xf8, 0x97, 0xf8, 0x8c, 0x30, 0x4f, 0xf0, 0x00, 0x09, + 0x97, 0xf8, 0x70, 0x80, 0x08, 0xee, 0x10, 0x3a, 0x9f, 0x4e, 0x97, 0xf8, + 0x8e, 0x30, 0x3b, 0x61, 0x18, 0xee, 0x10, 0x1a, 0x30, 0x78, 0xe9, 0xf7, + 0x50, 0xfd, 0x00, 0x28, 0x00, 0xf0, 0xca, 0x80, 0x41, 0x46, 0x70, 0x78, + 0xe9, 0xf7, 0x49, 0xfd, 0x00, 0x28, 0x00, 0xf0, 0xc3, 0x80, 0xb1, 0x78, + 0x04, 0x29, 0x03, 0xd0, 0x3b, 0x69, 0x99, 0x42, 0x40, 0xf0, 0xbc, 0x80, + 0x92, 0x4b, 0x03, 0xeb, 0x89, 0x03, 0xde, 0x78, 0x23, 0x78, 0x6b, 0xb1, + 0x00, 0x2e, 0x00, 0xf0, 0xaf, 0x80, 0x01, 0x2e, 0x00, 0xf0, 0xae, 0x80, + 0x8d, 0x49, 0x8e, 0x4b, 0x02, 0x2e, 0x18, 0xbf, 0x19, 0x46, 0x8d, 0x48, + 0xf2, 0xf7, 0x7e, 0xf8, 0x01, 0x2e, 0xc7, 0xf8, 0xd4, 0x60, 0x00, 0xf0, + 0xb3, 0x80, 0x02, 0x2e, 0x00, 0xf0, 0xb2, 0x80, 0x00, 0x2e, 0x40, 0xf0, + 0xcb, 0x80, 0x97, 0xf8, 0xad, 0x30, 0x01, 0x2b, 0x40, 0xf0, 0x57, 0x81, + 0xd7, 0xf8, 0xa8, 0x30, 0x01, 0x2b, 0x40, 0xf0, 0x52, 0x81, 0x97, 0xf8, + 0xac, 0x00, 0x01, 0x28, 0x40, 0xf0, 0x4d, 0x81, 0x97, 0xf8, 0xaf, 0x40, + 0x01, 0x2c, 0x40, 0xf0, 0xb7, 0x81, 0x07, 0xf1, 0x70, 0x01, 0x00, 0x20, + 0xe9, 0xf7, 0xc4, 0xfc, 0x06, 0x46, 0x00, 0x28, 0x40, 0xf0, 0x72, 0x81, + 0x07, 0xf1, 0x8c, 0x01, 0x20, 0x46, 0xe9, 0xf7, 0xbb, 0xfc, 0x01, 0x28, + 0x40, 0xf0, 0x67, 0x81, 0x74, 0x4b, 0x1b, 0x78, 0x1b, 0xb1, 0x31, 0x46, + 0x73, 0x48, 0xf2, 0xf7, 0x47, 0xf8, 0x73, 0x4b, 0xc7, 0xf8, 0x8c, 0x30, + 0x00, 0x23, 0x87, 0xf8, 0x90, 0x30, 0x97, 0xf8, 0x73, 0x30, 0x4f, 0xf0, + 0x00, 0x08, 0x97, 0xf8, 0x70, 0x40, 0x3b, 0x61, 0x97, 0xf8, 0x8c, 0x60, + 0x97, 0xf8, 0x72, 0x30, 0x97, 0xf8, 0x8f, 0x90, 0xdf, 0xf8, 0xc4, 0xb1, + 0xfb, 0x60, 0x21, 0x46, 0x9b, 0xf8, 0x00, 0x00, 0xe9, 0xf7, 0xd9, 0xfc, + 0x00, 0x28, 0x00, 0xf0, 0x4b, 0x81, 0x31, 0x46, 0x9b, 0xf8, 0x01, 0x00, + 0xe9, 0xf7, 0xd1, 0xfc, 0x00, 0x28, 0x00, 0xf0, 0x43, 0x81, 0x9b, 0xf8, + 0x02, 0x20, 0x04, 0x2a, 0x03, 0xd0, 0x3b, 0x69, 0x9a, 0x42, 0x40, 0xf0, + 0x3b, 0x81, 0x9b, 0xf8, 0x03, 0x20, 0x04, 0x2a, 0x02, 0xd0, 0x4a, 0x45, + 0x40, 0xf0, 0x34, 0x81, 0x9b, 0xf8, 0x04, 0x20, 0x04, 0x2a, 0x03, 0xd0, + 0xfb, 0x68, 0x9a, 0x42, 0x40, 0xf0, 0x2c, 0x81, 0x52, 0x4b, 0x1b, 0x78, + 0x7b, 0xb1, 0x9b, 0xf8, 0x05, 0x30, 0x02, 0x2b, 0x00, 0xf0, 0x20, 0x81, + 0x03, 0x2b, 0x00, 0xf0, 0x1f, 0x81, 0x50, 0x49, 0x4a, 0x4a, 0x04, 0x2b, + 0x18, 0xbf, 0x11, 0x46, 0x4e, 0x48, 0xf1, 0xf7, 0xf7, 0xff, 0x9b, 0xf8, + 0x05, 0x40, 0xa3, 0x1e, 0x02, 0x2b, 0x00, 0xf2, 0x0d, 0x81, 0x02, 0x2c, + 0x03, 0xd0, 0x04, 0x2c, 0x0c, 0xbf, 0x04, 0x24, 0x03, 0x24, 0x01, 0x20, + 0x07, 0xf1, 0xa8, 0x01, 0xe9, 0xf7, 0x0a, 0xfb, 0x00, 0x28, 0x00, 0xf0, + 0x14, 0x81, 0x01, 0x28, 0x0c, 0xbf, 0x01, 0x24, 0x05, 0x24, 0x0e, 0xe1, + 0x41, 0x4a, 0x03, 0xe7, 0x40, 0x4a, 0x19, 0xe7, 0x40, 0x49, 0x56, 0xe7, + 0x40, 0x49, 0x54, 0xe7, 0x09, 0xf1, 0x01, 0x09, 0x04, 0x36, 0xb9, 0xf1, + 0x04, 0x0f, 0x7f, 0xf4, 0x27, 0xaf, 0x23, 0x78, 0x1b, 0xb1, 0x3c, 0x48, + 0x02, 0xf0, 0x16, 0xfd, 0x00, 0x23, 0xc7, 0xf8, 0xd4, 0x30, 0x52, 0xe7, + 0x4f, 0xf0, 0x02, 0x0b, 0x07, 0xf1, 0x8c, 0x01, 0x5f, 0xfa, 0x8b, 0xf0, + 0xe9, 0xf7, 0x86, 0xf9, 0x06, 0x46, 0x98, 0xb9, 0xd7, 0xf8, 0x8c, 0x90, + 0x48, 0x46, 0xe9, 0xf7, 0x72, 0xfc, 0x99, 0xf8, 0x00, 0x30, 0x38, 0x61, + 0x02, 0x2b, 0x11, 0xd0, 0x01, 0x2b, 0x35, 0xd9, 0x07, 0x24, 0xd7, 0xf8, + 0x8c, 0x00, 0xe9, 0xf7, 0x5f, 0xf9, 0x00, 0x2c, 0x3f, 0xf4, 0x35, 0xaf, + 0x21, 0x4b, 0x1b, 0x78, 0x00, 0x2b, 0x3f, 0xf4, 0x01, 0xae, 0x00, 0x21, + 0x27, 0x48, 0xfb, 0xe5, 0x4f, 0xf0, 0x03, 0x0b, 0x00, 0x24, 0xa0, 0x46, + 0x38, 0x69, 0x01, 0x23, 0xa9, 0x6e, 0x07, 0xf1, 0x70, 0x02, 0x01, 0xfb, + 0x08, 0x01, 0x48, 0x46, 0xe8, 0xf7, 0xe2, 0xfa, 0x00, 0x28, 0x76, 0xdb, + 0x01, 0x22, 0x07, 0xf1, 0x70, 0x01, 0x48, 0x46, 0xe9, 0xf7, 0x2e, 0xfb, + 0x00, 0x28, 0x39, 0xd0, 0x16, 0xb1, 0x00, 0x2c, 0x08, 0xbf, 0x44, 0x46, + 0x08, 0xf1, 0x01, 0x08, 0xc3, 0x45, 0xe3, 0xd1, 0x00, 0x2e, 0x44, 0xd0, + 0x00, 0x2c, 0x08, 0xbf, 0x5c, 0x46, 0x34, 0xe0, 0x4f, 0xf4, 0x34, 0x6b, + 0xd8, 0xe7, 0x00, 0xbf, 0x60, 0xe5, 0x01, 0x08, 0x66, 0xe5, 0x01, 0x08, + 0x7f, 0xe7, 0x01, 0x08, 0x71, 0xe7, 0x01, 0x08, 0xbe, 0xe7, 0x01, 0x08, + 0x84, 0xec, 0x01, 0x08, 0xcc, 0xe8, 0x01, 0x08, 0x6a, 0xe5, 0x01, 0x08, + 0xc6, 0xe7, 0x01, 0x08, 0x08, 0x0b, 0x02, 0x24, 0x3e, 0xe8, 0x01, 0x08, + 0x03, 0x01, 0x03, 0x03, 0x7c, 0xe5, 0x01, 0x08, 0x87, 0xe8, 0x01, 0x08, + 0x5b, 0xe5, 0x01, 0x08, 0xe8, 0xe7, 0x01, 0x08, 0x3e, 0xe7, 0x01, 0x08, + 0xd9, 0xe7, 0x01, 0x08, 0x0d, 0xe8, 0x01, 0x08, 0x94, 0xec, 0x01, 0x08, + 0x8e, 0xb3, 0x00, 0x2c, 0xc6, 0xd0, 0xb0, 0x4b, 0x1b, 0x78, 0x13, 0xb1, + 0xaf, 0x48, 0x02, 0xf0, 0x91, 0xfc, 0x03, 0x23, 0xb4, 0xfb, 0xf3, 0xf3, + 0x5a, 0x1c, 0x03, 0xeb, 0x43, 0x03, 0xe4, 0x1a, 0xc7, 0xf8, 0xa8, 0x20, + 0x01, 0x34, 0x87, 0xf8, 0xac, 0x40, 0xd7, 0xf8, 0x8c, 0x00, 0x01, 0x23, + 0x07, 0xf1, 0x70, 0x02, 0x81, 0x68, 0x80, 0x39, 0xe8, 0xf7, 0x80, 0xfa, + 0x04, 0x46, 0x00, 0x28, 0x84, 0xd1, 0x01, 0x22, 0x07, 0xf1, 0x70, 0x01, + 0xd7, 0xf8, 0x8c, 0x00, 0xe9, 0xf7, 0xca, 0xfa, 0x10, 0xb1, 0x01, 0x23, + 0x87, 0xf8, 0x70, 0x30, 0x97, 0xf8, 0x70, 0x30, 0x03, 0xf0, 0x0f, 0x03, + 0x87, 0xf8, 0xaf, 0x30, 0x6b, 0xe7, 0x01, 0x26, 0x94, 0xe7, 0x01, 0x24, + 0x67, 0xe7, 0x07, 0xf1, 0xa8, 0x00, 0x97, 0x4c, 0xe9, 0xf7, 0x16, 0xfc, + 0x97, 0xf8, 0xaf, 0x30, 0x84, 0xf8, 0x64, 0x30, 0x03, 0x3b, 0x01, 0x2b, + 0x05, 0xd8, 0xe9, 0xf7, 0x55, 0xfb, 0x10, 0xb1, 0xff, 0x23, 0x84, 0xf8, + 0x64, 0x30, 0x97, 0xf8, 0xaf, 0x30, 0x02, 0x3b, 0x02, 0x2b, 0x0c, 0xd8, + 0xe9, 0xf7, 0x70, 0xf9, 0x48, 0xb1, 0xff, 0x23, 0x84, 0xf8, 0x64, 0x30, + 0x87, 0x4b, 0x1b, 0x78, 0x3b, 0xb1, 0x89, 0x48, 0x02, 0xf0, 0x40, 0xfc, + 0x03, 0xe0, 0x94, 0xf8, 0x64, 0x30, 0xff, 0x2b, 0xf4, 0xd0, 0x07, 0xf1, + 0xa8, 0x00, 0xe9, 0xf7, 0x29, 0xf9, 0x01, 0x23, 0x84, 0xf8, 0x64, 0x30, + 0x0b, 0xe5, 0x00, 0x28, 0x3f, 0xf4, 0xa3, 0xae, 0xff, 0x24, 0x12, 0xe0, + 0x7f, 0x49, 0xe5, 0xe6, 0x7f, 0x49, 0xe3, 0xe6, 0x08, 0xf1, 0x01, 0x08, + 0x0b, 0xf1, 0x06, 0x0b, 0xb8, 0xf1, 0x03, 0x0f, 0x7f, 0xf4, 0xa5, 0xae, + 0x75, 0x4b, 0x1b, 0x78, 0x13, 0xb1, 0x7a, 0x48, 0x02, 0xf0, 0x1c, 0xfc, + 0x01, 0x24, 0x74, 0x4b, 0x83, 0xf8, 0x64, 0x40, 0x72, 0x4b, 0x93, 0xf8, + 0x64, 0x30, 0x01, 0x2b, 0x7f, 0xf4, 0xeb, 0xac, 0x00, 0x20, 0xe9, 0xf7, + 0xdd, 0xf8, 0x04, 0x46, 0x00, 0x20, 0x07, 0xf1, 0xa8, 0x01, 0xe9, 0xf7, + 0xe1, 0xf9, 0x14, 0xb1, 0x00, 0x28, 0x3f, 0xf4, 0xde, 0xac, 0xec, 0x6a, + 0x01, 0x20, 0x07, 0xf1, 0xa8, 0x01, 0xe9, 0xf7, 0xd7, 0xf9, 0x6b, 0x4b, + 0x9c, 0x42, 0x7f, 0xf4, 0xd4, 0xac, 0x00, 0x28, 0x7f, 0xf4, 0xd1, 0xac, + 0x04, 0x23, 0x85, 0xf8, 0x64, 0x30, 0xcc, 0xe4, 0x07, 0xf1, 0xa8, 0x01, + 0xe9, 0xf7, 0xc8, 0xf9, 0x5e, 0x4b, 0x08, 0xb1, 0x05, 0x22, 0xff, 0xe4, + 0x97, 0xf8, 0xaf, 0x20, 0x83, 0xf8, 0x64, 0x20, 0xce, 0xe7, 0x05, 0x2b, + 0x7f, 0xf4, 0xcb, 0xac, 0xe9, 0xf7, 0xe2, 0xfa, 0x85, 0xe0, 0x00, 0x20, + 0xe9, 0xf7, 0xac, 0xf8, 0x80, 0x46, 0x00, 0x20, 0x07, 0xf1, 0xa8, 0x01, + 0xe9, 0xf7, 0xb0, 0xf9, 0xb8, 0xf1, 0x00, 0x0f, 0x02, 0xd0, 0x00, 0x28, + 0x00, 0xf0, 0x84, 0x80, 0x33, 0x78, 0x3b, 0xb1, 0x54, 0x48, 0x02, 0xf0, + 0xcd, 0xfb, 0x33, 0x78, 0x13, 0xb1, 0x53, 0x48, 0x02, 0xf0, 0xc8, 0xfb, + 0x07, 0xf1, 0x70, 0x01, 0x00, 0x20, 0xe9, 0xf7, 0x3f, 0xf8, 0x07, 0xf1, + 0x8c, 0x01, 0x01, 0x20, 0x4f, 0xf0, 0x00, 0x08, 0xe9, 0xf7, 0x38, 0xf8, + 0xd4, 0xf8, 0x28, 0x90, 0xc1, 0x45, 0x32, 0xd1, 0x23, 0x6c, 0x13, 0xf0, + 0x0c, 0x0f, 0x3e, 0xd1, 0x33, 0x78, 0x1b, 0xb1, 0x79, 0x69, 0x47, 0x48, + 0xf1, 0xf7, 0x62, 0xfe, 0x7b, 0x69, 0x00, 0x93, 0x00, 0x23, 0x39, 0x6f, + 0x1a, 0x46, 0xd7, 0xf8, 0x8c, 0x00, 0xe8, 0xf7, 0x37, 0xfa, 0x82, 0x46, + 0x00, 0x28, 0x39, 0xd1, 0x2b, 0x6d, 0x01, 0x46, 0xd7, 0xf8, 0x8c, 0x00, + 0x5a, 0x68, 0xe8, 0xf7, 0x63, 0xf9, 0xd5, 0xe9, 0x14, 0x23, 0x01, 0x3b, + 0x52, 0xf8, 0x33, 0x10, 0x02, 0xeb, 0xc3, 0x00, 0x13, 0x68, 0x42, 0x68, + 0xc9, 0x1a, 0xd7, 0xf8, 0x8c, 0x00, 0xe8, 0xf7, 0x55, 0xf9, 0x38, 0x6f, + 0xe8, 0xf7, 0xf2, 0xff, 0xd7, 0xf8, 0x8c, 0x00, 0xe8, 0xf7, 0xee, 0xff, + 0x1c, 0xe0, 0x6b, 0x6a, 0x79, 0x69, 0x03, 0xeb, 0xc8, 0x03, 0x38, 0x6f, + 0x08, 0xf1, 0x01, 0x08, 0xd3, 0xf8, 0x04, 0xa0, 0x52, 0x46, 0xe8, 0xf7, + 0x41, 0xf9, 0x7b, 0x69, 0x53, 0x44, 0x7b, 0x61, 0xba, 0xe7, 0x2a, 0x49, + 0x07, 0xf1, 0xa8, 0x03, 0xd7, 0xf8, 0x8c, 0x20, 0x01, 0xf1, 0x40, 0x00, + 0xe8, 0xf7, 0xe0, 0xfa, 0x00, 0x28, 0x11, 0xda, 0x4f, 0xf0, 0x03, 0x0a, + 0x94, 0xf8, 0x64, 0x30, 0xda, 0x1e, 0x01, 0x2a, 0x1a, 0xd8, 0xe9, 0xf7, + 0x61, 0xfa, 0x82, 0x46, 0x00, 0x28, 0x7f, 0xf4, 0x44, 0xac, 0xe9, 0xf7, + 0x81, 0xf8, 0x82, 0x46, 0x90, 0xb1, 0x3e, 0xe4, 0xa2, 0xd1, 0x07, 0xf1, + 0xa8, 0x02, 0x01, 0x21, 0x1a, 0x48, 0xe9, 0xf7, 0x11, 0xf9, 0x00, 0x28, + 0x9a, 0xd0, 0xe3, 0xe7, 0x07, 0xf1, 0xa8, 0x00, 0xe9, 0xf7, 0x02, 0xfb, + 0x82, 0x46, 0xdf, 0xe7, 0x02, 0x2b, 0xe8, 0xd0, 0x94, 0xf8, 0x64, 0x30, + 0xff, 0x2b, 0x28, 0xd1, 0x33, 0x78, 0x1b, 0xbb, 0x07, 0xf1, 0xa8, 0x00, + 0xe9, 0xf7, 0x2e, 0xf8, 0x82, 0x46, 0x20, 0xb3, 0x4f, 0xf0, 0xff, 0x35, + 0x31, 0xe0, 0x00, 0xbf, 0x08, 0x0b, 0x02, 0x24, 0xed, 0xe7, 0x01, 0x08, + 0x28, 0x07, 0x00, 0x24, 0x35, 0xe8, 0x01, 0x08, 0x83, 0xe5, 0x01, 0x08, + 0x88, 0xe5, 0x01, 0x08, 0x98, 0xe8, 0x01, 0x08, 0x3d, 0xb8, 0xf3, 0x96, + 0xaa, 0xe8, 0x01, 0x08, 0xd9, 0xe8, 0x01, 0x08, 0xf4, 0xe8, 0x01, 0x08, + 0x54, 0x07, 0x00, 0x24, 0x94, 0x07, 0x00, 0x24, 0x1e, 0x48, 0x02, 0xf0, + 0x19, 0xfb, 0x94, 0xf8, 0x64, 0x30, 0x01, 0x2b, 0xd4, 0xd1, 0x00, 0x21, + 0x08, 0x46, 0xe9, 0xf7, 0xe9, 0xf8, 0x05, 0x46, 0x48, 0xb9, 0x01, 0x46, + 0x30, 0x22, 0x07, 0xf1, 0xa8, 0x00, 0xaa, 0x46, 0x00, 0xf0, 0xea, 0xfe, + 0x23, 0x6a, 0x5b, 0x68, 0x3b, 0x60, 0xa0, 0x6d, 0xba, 0xf1, 0x00, 0x0f, + 0x18, 0xbf, 0x55, 0x46, 0xe8, 0xf7, 0x66, 0xff, 0xe0, 0x6c, 0xe8, 0xf7, + 0x63, 0xff, 0x20, 0x6a, 0xe8, 0xf7, 0x60, 0xff, 0x4d, 0xb1, 0x33, 0x78, + 0x00, 0x2b, 0x3f, 0xf4, 0x6e, 0xab, 0x29, 0x46, 0x0a, 0x48, 0xf1, 0xf7, + 0xa3, 0xfd, 0xff, 0xf7, 0x68, 0xbb, 0xfb, 0xf7, 0xa3, 0xff, 0xa4, 0x68, + 0x3b, 0x68, 0x23, 0x44, 0x1c, 0x46, 0x33, 0x78, 0x1b, 0xb1, 0x21, 0x46, + 0x04, 0x48, 0xf1, 0xf7, 0x95, 0xfd, 0x20, 0x46, 0xf4, 0xf7, 0xb0, 0xf8, + 0x35, 0xe8, 0x01, 0x08, 0x33, 0xe9, 0x01, 0x08, 0x62, 0xe9, 0x01, 0x08, + 0x1f, 0xb5, 0x13, 0x4b, 0x6c, 0x46, 0x0b, 0x25, 0x0f, 0xcb, 0x84, 0xe8, + 0x0f, 0x00, 0x20, 0x46, 0x1c, 0x24, 0xfc, 0xf7, 0xcb, 0xff, 0x0f, 0x4b, + 0x18, 0x60, 0x0f, 0x48, 0x0f, 0x4b, 0x45, 0x60, 0x03, 0x60, 0x0f, 0x4b, + 0xc4, 0x60, 0x83, 0x60, 0xfc, 0xf7, 0xc0, 0xff, 0x0d, 0x4b, 0x18, 0x60, + 0x0d, 0x48, 0x0e, 0x4b, 0xc4, 0x60, 0xc0, 0xe9, 0x00, 0x35, 0x0d, 0x4b, + 0x83, 0x60, 0xfc, 0xf7, 0xb5, 0xff, 0x0c, 0x4b, 0x18, 0x60, 0x00, 0xf0, + 0x91, 0xfc, 0xfe, 0xf7, 0xb3, 0xfe, 0x00, 0xbf, 0x4c, 0xea, 0x01, 0x08, + 0x38, 0x28, 0x02, 0x24, 0xc4, 0x43, 0x02, 0x24, 0x95, 0xe9, 0x01, 0x08, + 0xd4, 0x43, 0x02, 0x24, 0x30, 0x28, 0x02, 0x24, 0x84, 0x3f, 0x02, 0x24, + 0xa2, 0xe9, 0x01, 0x08, 0x94, 0x3f, 0x02, 0x24, 0xf0, 0x27, 0x02, 0x24, + 0x01, 0x4b, 0x18, 0x68, 0x70, 0x47, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, + 0x70, 0xb5, 0x05, 0x46, 0x0c, 0x46, 0x11, 0xb9, 0x00, 0x26, 0x30, 0x46, + 0x70, 0xbd, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0x00, 0xf0, 0x94, 0xf9, + 0x2c, 0x4b, 0x9c, 0x42, 0x14, 0xd1, 0x6c, 0x68, 0x63, 0x6e, 0xd8, 0x07, + 0x05, 0xd4, 0xa3, 0x89, 0x99, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, + 0x8a, 0xfd, 0xb4, 0xf9, 0x0c, 0x30, 0x8b, 0xb9, 0x66, 0x6e, 0x16, 0xf0, + 0x01, 0x06, 0xe3, 0xd1, 0xa0, 0x6d, 0x00, 0xf0, 0x82, 0xfd, 0xe0, 0xe7, + 0x21, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, 0xe6, 0xe7, 0x20, 0x4b, + 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xe1, 0xe7, 0x21, 0x46, 0x28, 0x46, + 0x00, 0xf0, 0x42, 0xf8, 0x23, 0x6b, 0x06, 0x46, 0x33, 0xb1, 0x21, 0x6a, + 0x28, 0x46, 0x98, 0x47, 0x00, 0x28, 0xb8, 0xbf, 0x4f, 0xf0, 0xff, 0x36, + 0xa3, 0x89, 0x1a, 0x06, 0x03, 0xd5, 0x21, 0x69, 0x28, 0x46, 0xf4, 0xf7, + 0x81, 0xf8, 0x61, 0x6b, 0x41, 0xb1, 0x04, 0xf1, 0x44, 0x03, 0x99, 0x42, + 0x02, 0xd0, 0x28, 0x46, 0xf4, 0xf7, 0x78, 0xf8, 0x00, 0x23, 0x63, 0x63, + 0xa1, 0x6c, 0x21, 0xb1, 0x28, 0x46, 0xf4, 0xf7, 0x71, 0xf8, 0x00, 0x23, + 0xa3, 0x64, 0x00, 0xf0, 0x31, 0xf9, 0x00, 0x23, 0xa3, 0x81, 0x63, 0x6e, + 0xdb, 0x07, 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0x46, 0xfd, 0xa0, 0x6d, + 0x00, 0xf0, 0x3f, 0xfd, 0x00, 0xf0, 0x2a, 0xf9, 0x9f, 0xe7, 0x00, 0xbf, + 0x2c, 0xf0, 0x01, 0x08, 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, + 0x02, 0x4b, 0x01, 0x46, 0x18, 0x68, 0xff, 0xf7, 0x8f, 0xbf, 0x00, 0xbf, + 0x10, 0x03, 0x00, 0x24, 0x8a, 0x89, 0x2d, 0xe9, 0xf0, 0x41, 0x05, 0x46, + 0x10, 0x07, 0x0c, 0x46, 0x58, 0xd4, 0x4b, 0x68, 0x00, 0x2b, 0x05, 0xdc, + 0x0b, 0x6c, 0x00, 0x2b, 0x02, 0xdc, 0x00, 0x20, 0xbd, 0xe8, 0xf0, 0x81, + 0xe6, 0x6a, 0x00, 0x2e, 0xf9, 0xd0, 0x00, 0x23, 0x12, 0xf4, 0x80, 0x52, + 0x2f, 0x68, 0x2b, 0x60, 0x32, 0xd0, 0x60, 0x6d, 0xa3, 0x89, 0x5a, 0x07, + 0x05, 0xd5, 0x63, 0x68, 0xc0, 0x1a, 0x63, 0x6b, 0x0b, 0xb1, 0x23, 0x6c, + 0xc0, 0x1a, 0x00, 0x23, 0x02, 0x46, 0xe6, 0x6a, 0x21, 0x6a, 0x28, 0x46, + 0xb0, 0x47, 0x43, 0x1c, 0xa3, 0x89, 0x06, 0xd1, 0x29, 0x68, 0x1d, 0x29, + 0x2c, 0xd8, 0x2a, 0x4a, 0xca, 0x40, 0xd6, 0x07, 0x28, 0xd5, 0x00, 0x22, + 0x62, 0x60, 0xd9, 0x04, 0x22, 0x69, 0x22, 0x60, 0x04, 0xd5, 0x42, 0x1c, + 0x01, 0xd1, 0x2b, 0x68, 0x03, 0xb9, 0x60, 0x65, 0x61, 0x6b, 0x2f, 0x60, + 0x00, 0x29, 0xca, 0xd0, 0x04, 0xf1, 0x44, 0x03, 0x99, 0x42, 0x02, 0xd0, + 0x28, 0x46, 0xf4, 0xf7, 0x07, 0xf8, 0x00, 0x20, 0x60, 0x63, 0xc1, 0xe7, + 0x21, 0x6a, 0x01, 0x23, 0x28, 0x46, 0xb0, 0x47, 0x41, 0x1c, 0xc7, 0xd1, + 0x2b, 0x68, 0x00, 0x2b, 0xc4, 0xd0, 0x1d, 0x2b, 0x01, 0xd0, 0x16, 0x2b, + 0x01, 0xd1, 0x2f, 0x60, 0xb1, 0xe7, 0xa3, 0x89, 0x43, 0xf0, 0x40, 0x03, + 0xa3, 0x81, 0xad, 0xe7, 0x0f, 0x69, 0x00, 0x2f, 0xa9, 0xd0, 0x93, 0x07, + 0x0e, 0x68, 0x08, 0xbf, 0x4b, 0x69, 0x0f, 0x60, 0x18, 0xbf, 0x00, 0x23, + 0xa6, 0xeb, 0x07, 0x08, 0x8b, 0x60, 0xb8, 0xf1, 0x00, 0x0f, 0x9c, 0xdd, + 0x21, 0x6a, 0xa6, 0x6a, 0x43, 0x46, 0x3a, 0x46, 0x28, 0x46, 0xb0, 0x47, + 0x00, 0x28, 0x06, 0xdc, 0xa3, 0x89, 0x43, 0xf0, 0x40, 0x03, 0xa3, 0x81, + 0x4f, 0xf0, 0xff, 0x30, 0x8e, 0xe7, 0x07, 0x44, 0xa8, 0xeb, 0x00, 0x08, + 0xe9, 0xe7, 0x00, 0xbf, 0x01, 0x00, 0x40, 0x20, 0x38, 0xb5, 0x0b, 0x69, + 0x05, 0x46, 0x0c, 0x46, 0x13, 0xb9, 0x00, 0x25, 0x28, 0x46, 0x38, 0xbd, + 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0x00, 0xf0, 0x99, 0xf8, 0x14, 0x4b, + 0x9c, 0x42, 0x1b, 0xd1, 0x6c, 0x68, 0xb4, 0xf9, 0x0c, 0x30, 0x00, 0x2b, + 0xef, 0xd0, 0x62, 0x6e, 0xd0, 0x07, 0x04, 0xd4, 0x99, 0x05, 0x02, 0xd4, + 0xa0, 0x6d, 0x00, 0xf0, 0x8c, 0xfc, 0x28, 0x46, 0x21, 0x46, 0xff, 0xf7, + 0x59, 0xff, 0x63, 0x6e, 0xda, 0x07, 0x05, 0x46, 0xe0, 0xd4, 0xa3, 0x89, + 0x9b, 0x05, 0xdd, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0x80, 0xfc, 0xd9, 0xe7, + 0x05, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, 0xdf, 0xe7, 0x04, 0x4b, + 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xda, 0xe7, 0x2c, 0xf0, 0x01, 0x08, + 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, 0x01, 0x46, 0x20, 0xb9, + 0x04, 0x4b, 0x05, 0x49, 0x18, 0x68, 0x00, 0xf0, 0x18, 0xbb, 0x04, 0x4b, + 0x18, 0x68, 0xff, 0xf7, 0xb9, 0xbf, 0x00, 0xbf, 0x6c, 0xf0, 0x01, 0x08, + 0x91, 0xa9, 0x01, 0x08, 0x10, 0x03, 0x00, 0x24, 0x00, 0x23, 0x10, 0xb5, + 0x04, 0x46, 0xc0, 0xe9, 0x00, 0x33, 0xc0, 0xe9, 0x04, 0x33, 0x83, 0x60, + 0x81, 0x81, 0x43, 0x66, 0xc2, 0x81, 0x83, 0x61, 0x19, 0x46, 0x08, 0x22, + 0x5c, 0x30, 0x00, 0xf0, 0x1f, 0xfd, 0x05, 0x4b, 0x63, 0x62, 0x05, 0x4b, + 0xa3, 0x62, 0x05, 0x4b, 0xe3, 0x62, 0x05, 0x4b, 0x24, 0x62, 0x23, 0x63, + 0x10, 0xbd, 0x00, 0xbf, 0xc9, 0xb7, 0x01, 0x08, 0xef, 0xb7, 0x01, 0x08, + 0x27, 0xb8, 0x01, 0x08, 0x4b, 0xb8, 0x01, 0x08, 0x01, 0x49, 0x00, 0xf0, + 0xe6, 0xba, 0x00, 0xbf, 0x91, 0xa9, 0x01, 0x08, 0x70, 0xb5, 0x4a, 0x1e, + 0x68, 0x25, 0x55, 0x43, 0x0e, 0x46, 0x05, 0xf1, 0x74, 0x01, 0xf3, 0xf7, + 0x4d, 0xff, 0x04, 0x46, 0x40, 0xb1, 0x00, 0x21, 0xc0, 0xe9, 0x00, 0x16, + 0x0c, 0x30, 0xa0, 0x60, 0x05, 0xf1, 0x68, 0x02, 0x00, 0xf0, 0xf2, 0xfc, + 0x20, 0x46, 0x70, 0xbd, 0x01, 0x48, 0x00, 0xf0, 0x18, 0xbc, 0x00, 0xbf, + 0xd0, 0xa5, 0x02, 0x24, 0x01, 0x48, 0x00, 0xf0, 0x14, 0xbc, 0x00, 0xbf, + 0xd0, 0xa5, 0x02, 0x24, 0x01, 0x48, 0x00, 0xf0, 0x0c, 0xbc, 0x00, 0xbf, + 0xcf, 0xa5, 0x02, 0x24, 0x01, 0x48, 0x00, 0xf0, 0x08, 0xbc, 0x00, 0xbf, + 0xcf, 0xa5, 0x02, 0x24, 0x10, 0xb5, 0x04, 0x46, 0xff, 0xf7, 0xf0, 0xff, + 0xa3, 0x69, 0x1b, 0xb1, 0xbd, 0xe8, 0x10, 0x40, 0xff, 0xf7, 0xf0, 0xbf, + 0xc4, 0xe9, 0x12, 0x33, 0x23, 0x65, 0x13, 0x4b, 0x13, 0x4a, 0x1b, 0x68, + 0xa2, 0x62, 0xa3, 0x42, 0x04, 0xbf, 0x01, 0x23, 0xa3, 0x61, 0x20, 0x46, + 0x00, 0xf0, 0x20, 0xf8, 0x60, 0x60, 0x20, 0x46, 0x00, 0xf0, 0x1c, 0xf8, + 0xa0, 0x60, 0x20, 0x46, 0x00, 0xf0, 0x18, 0xf8, 0x00, 0x22, 0xe0, 0x60, + 0x04, 0x21, 0x60, 0x68, 0xff, 0xf7, 0x82, 0xff, 0xa0, 0x68, 0x01, 0x22, + 0x09, 0x21, 0xff, 0xf7, 0x7d, 0xff, 0xe0, 0x68, 0x02, 0x22, 0x12, 0x21, + 0xff, 0xf7, 0x78, 0xff, 0x01, 0x23, 0xa3, 0x61, 0xd2, 0xe7, 0x00, 0xbf, + 0x6c, 0xf0, 0x01, 0x08, 0x75, 0xaa, 0x01, 0x08, 0xf8, 0xb5, 0x07, 0x46, + 0xff, 0xf7, 0xac, 0xff, 0x1e, 0x4b, 0x1e, 0x68, 0xb3, 0x69, 0x13, 0xb9, + 0x30, 0x46, 0xff, 0xf7, 0xbd, 0xff, 0x48, 0x36, 0xd6, 0xe9, 0x01, 0x34, + 0x01, 0x3b, 0x03, 0xd5, 0x33, 0x68, 0x0b, 0xb3, 0x36, 0x68, 0xf7, 0xe7, + 0xb4, 0xf9, 0x0c, 0x50, 0xd5, 0xb9, 0x16, 0x4b, 0xe3, 0x60, 0x04, 0xf1, + 0x58, 0x00, 0x65, 0x66, 0x00, 0xf0, 0xaa, 0xfb, 0xff, 0xf7, 0x96, 0xff, + 0xc4, 0xe9, 0x01, 0x55, 0xc4, 0xe9, 0x04, 0x55, 0x25, 0x60, 0xa5, 0x61, + 0x08, 0x22, 0x29, 0x46, 0x04, 0xf1, 0x5c, 0x00, 0x00, 0xf0, 0x74, 0xfc, + 0xc4, 0xe9, 0x0d, 0x55, 0xc4, 0xe9, 0x12, 0x55, 0x20, 0x46, 0xf8, 0xbd, + 0x68, 0x34, 0xd9, 0xe7, 0x04, 0x21, 0x38, 0x46, 0xff, 0xf7, 0x62, 0xff, + 0x04, 0x46, 0x30, 0x60, 0x00, 0x28, 0xd5, 0xd1, 0xff, 0xf7, 0x78, 0xff, + 0x0c, 0x23, 0x3b, 0x60, 0xee, 0xe7, 0x00, 0xbf, 0x6c, 0xf0, 0x01, 0x08, + 0x01, 0x00, 0xff, 0xff, 0xf7, 0xb5, 0x0f, 0x46, 0x11, 0x46, 0x01, 0xaa, + 0x05, 0x46, 0x01, 0xf0, 0x8f, 0xf8, 0x06, 0x46, 0x18, 0xb9, 0x00, 0x24, + 0x20, 0x46, 0x03, 0xb0, 0xf0, 0xbd, 0x28, 0x46, 0xff, 0xf7, 0xaa, 0xff, + 0x04, 0x46, 0x00, 0x28, 0xf5, 0xd0, 0x39, 0x46, 0x01, 0x9a, 0x4f, 0xf4, + 0xdb, 0x73, 0x28, 0x46, 0x00, 0xf0, 0x28, 0xfd, 0x07, 0x1e, 0x09, 0xda, + 0x00, 0x25, 0xff, 0xf7, 0x4b, 0xff, 0xa0, 0x6d, 0xa5, 0x81, 0x00, 0xf0, + 0x60, 0xfb, 0xff, 0xf7, 0x4b, 0xff, 0xe2, 0xe7, 0x63, 0x6e, 0xdb, 0x07, + 0x05, 0xd4, 0xa3, 0x89, 0x98, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, + 0x56, 0xfb, 0x0e, 0x4b, 0x63, 0x62, 0x0e, 0x4b, 0xa3, 0x62, 0x0e, 0x4b, + 0xe3, 0x62, 0xf1, 0x05, 0x0d, 0x4b, 0xe7, 0x81, 0xa6, 0x81, 0x24, 0x62, + 0x23, 0x63, 0x05, 0xd5, 0x02, 0x23, 0x00, 0x22, 0x21, 0x46, 0x28, 0x46, + 0x00, 0xf0, 0x9c, 0xf8, 0x63, 0x6e, 0xda, 0x07, 0xc4, 0xd4, 0xa3, 0x89, + 0x9b, 0x05, 0xc1, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0x3c, 0xfb, 0xbd, 0xe7, + 0xc9, 0xb7, 0x01, 0x08, 0xef, 0xb7, 0x01, 0x08, 0x27, 0xb8, 0x01, 0x08, + 0x4b, 0xb8, 0x01, 0x08, 0x02, 0x4b, 0x0a, 0x46, 0x01, 0x46, 0x18, 0x68, + 0xff, 0xf7, 0xa6, 0xbf, 0x10, 0x03, 0x00, 0x24, 0x2d, 0xe9, 0xf7, 0x4f, + 0x1f, 0x46, 0x13, 0x46, 0x7b, 0x43, 0x0c, 0x9c, 0x06, 0x46, 0x8a, 0x46, + 0x91, 0x46, 0x9b, 0x46, 0x5f, 0xd0, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, + 0xff, 0xf7, 0x16, 0xff, 0x2e, 0x4b, 0x9c, 0x42, 0x28, 0xd1, 0x74, 0x68, + 0x63, 0x6e, 0xdb, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x9d, 0x05, 0x02, 0xd4, + 0xa0, 0x6d, 0x00, 0xf0, 0x0c, 0xfb, 0x63, 0x68, 0x00, 0x2b, 0x01, 0xda, + 0x00, 0x23, 0x63, 0x60, 0xd8, 0x46, 0xd4, 0xe9, 0x00, 0x15, 0x45, 0x45, + 0x1e, 0xd3, 0x42, 0x46, 0x50, 0x46, 0x00, 0xf0, 0xc5, 0xfb, 0x60, 0x68, + 0x21, 0x68, 0x63, 0x6e, 0xa0, 0xeb, 0x08, 0x00, 0x41, 0x44, 0xda, 0x07, + 0x60, 0x60, 0x21, 0x60, 0x2f, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0x2c, 0xd4, + 0xa0, 0x6d, 0x00, 0xf0, 0xf0, 0xfa, 0x28, 0xe0, 0x19, 0x4b, 0x9c, 0x42, + 0x01, 0xd1, 0xb4, 0x68, 0xd2, 0xe7, 0x18, 0x4b, 0x9c, 0x42, 0x08, 0xbf, + 0xf4, 0x68, 0xcd, 0xe7, 0x2a, 0x46, 0x50, 0x46, 0x00, 0xf0, 0xa6, 0xfb, + 0x23, 0x68, 0x2b, 0x44, 0x23, 0x60, 0x21, 0x46, 0xa8, 0xeb, 0x05, 0x03, + 0x30, 0x46, 0x01, 0x93, 0x00, 0xf0, 0xae, 0xfc, 0xaa, 0x44, 0x01, 0x9b, + 0x88, 0xb1, 0x63, 0x6e, 0xd8, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x99, 0x05, + 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0xcb, 0xfa, 0x5d, 0x44, 0xa5, 0xeb, + 0x08, 0x03, 0xb3, 0xfb, 0xf9, 0xf7, 0x38, 0x46, 0x03, 0xb0, 0xbd, 0xe8, + 0xf0, 0x8f, 0x98, 0x46, 0xb7, 0xe7, 0x1f, 0x46, 0xf7, 0xe7, 0x00, 0xbf, + 0x2c, 0xf0, 0x01, 0x08, 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, + 0x07, 0xb5, 0x00, 0x93, 0x13, 0x46, 0x0a, 0x46, 0x01, 0x46, 0x03, 0x48, + 0x00, 0x68, 0xff, 0xf7, 0x83, 0xff, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, + 0x10, 0x03, 0x00, 0x24, 0x00, 0xf0, 0x0a, 0xb8, 0x13, 0x46, 0x0a, 0x46, + 0x01, 0x46, 0x02, 0x48, 0x00, 0x68, 0x00, 0xf0, 0x03, 0xb8, 0x00, 0xbf, + 0x10, 0x03, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x41, 0x0c, 0x46, 0x17, 0x46, + 0x1d, 0x46, 0x06, 0x46, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0xff, 0xf7, + 0x8d, 0xfe, 0x51, 0x4b, 0x9c, 0x42, 0x22, 0xd1, 0x74, 0x68, 0x63, 0x6e, + 0xd9, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x9a, 0x05, 0x02, 0xd4, 0xa0, 0x6d, + 0x00, 0xf0, 0x83, 0xfa, 0xa3, 0x89, 0x03, 0xf4, 0x84, 0x73, 0xb3, 0xf5, + 0x84, 0x7f, 0x03, 0xd1, 0x21, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xd0, 0xfd, + 0xd4, 0xf8, 0x2c, 0x80, 0xb8, 0xf1, 0x00, 0x0f, 0x13, 0xd1, 0x1d, 0x23, + 0x33, 0x60, 0x63, 0x6e, 0xd9, 0x07, 0x78, 0xd5, 0x4f, 0xf0, 0xff, 0x35, + 0x28, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0x3f, 0x4b, 0x9c, 0x42, 0x01, 0xd1, + 0xb4, 0x68, 0xd8, 0xe7, 0x3d, 0x4b, 0x9c, 0x42, 0x08, 0xbf, 0xf4, 0x68, + 0xd3, 0xe7, 0x01, 0x2d, 0x36, 0xd0, 0x35, 0xf0, 0x02, 0x03, 0x62, 0xd1, + 0x23, 0x69, 0x1b, 0xb9, 0x21, 0x46, 0x30, 0x46, 0x00, 0xf0, 0x7c, 0xfa, + 0x21, 0x46, 0x30, 0x46, 0xff, 0xf7, 0xa8, 0xfd, 0x00, 0x28, 0xdc, 0xd1, + 0x21, 0x6a, 0x2b, 0x46, 0x3a, 0x46, 0x30, 0x46, 0xc0, 0x47, 0x01, 0x30, + 0xd5, 0xd0, 0x61, 0x6b, 0x41, 0xb1, 0x04, 0xf1, 0x44, 0x03, 0x99, 0x42, + 0x02, 0xd0, 0x30, 0x46, 0xf3, 0xf7, 0x60, 0xfd, 0x00, 0x23, 0x63, 0x63, + 0x23, 0x69, 0x23, 0x60, 0xa3, 0x89, 0x00, 0x26, 0x23, 0xf4, 0x02, 0x63, + 0x66, 0x60, 0xa3, 0x81, 0x08, 0x22, 0x31, 0x46, 0x04, 0xf1, 0x5c, 0x00, + 0x00, 0xf0, 0x04, 0xfb, 0x65, 0x6e, 0x15, 0xf0, 0x01, 0x05, 0x3b, 0xd1, + 0xa3, 0x89, 0x9b, 0x05, 0xba, 0xd4, 0x21, 0xe0, 0x21, 0x46, 0x30, 0x46, + 0xff, 0xf7, 0x7a, 0xfd, 0xa2, 0x89, 0x12, 0xf4, 0x80, 0x52, 0x0c, 0xd0, + 0x65, 0x6d, 0xa3, 0x89, 0x5a, 0x07, 0x19, 0xd5, 0x63, 0x68, 0xed, 0x1a, + 0x63, 0x6b, 0x0b, 0xb1, 0x23, 0x6c, 0xed, 0x1a, 0x2f, 0x44, 0x00, 0x25, + 0xb6, 0xe7, 0x2b, 0x46, 0x21, 0x6a, 0x30, 0x46, 0xc0, 0x47, 0x43, 0x1c, + 0x05, 0x46, 0xec, 0xd1, 0x63, 0x6e, 0xd8, 0x07, 0x98, 0xd4, 0xa3, 0x89, + 0x99, 0x05, 0x95, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0x04, 0xfa, 0x93, 0xe7, + 0x18, 0x07, 0xe9, 0xd5, 0x23, 0x68, 0x22, 0x69, 0x00, 0x2b, 0xe5, 0xd0, + 0x9b, 0x1a, 0x1d, 0x44, 0xe2, 0xe7, 0x16, 0x23, 0x82, 0xe7, 0xa3, 0x89, + 0x9a, 0x05, 0x83, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0xf2, 0xf9, 0x7f, 0xe7, + 0x35, 0x46, 0x7f, 0xe7, 0x2c, 0xf0, 0x01, 0x08, 0x4c, 0xf0, 0x01, 0x08, + 0x0c, 0xf0, 0x01, 0x08, 0x02, 0x4b, 0x01, 0x46, 0x18, 0x68, 0x00, 0xf0, + 0x03, 0xb8, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, 0x70, 0xb5, 0x0c, 0x46, + 0x05, 0x46, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0xff, 0xf7, 0xd4, 0xfd, + 0x32, 0x4b, 0x9c, 0x42, 0x14, 0xd1, 0x6c, 0x68, 0x63, 0x6e, 0xda, 0x07, + 0x05, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, + 0xca, 0xf9, 0xe6, 0x6a, 0xce, 0xb9, 0x1d, 0x23, 0x2b, 0x60, 0x63, 0x6e, + 0xde, 0x07, 0x0d, 0xd5, 0x4f, 0xf0, 0xff, 0x35, 0x28, 0x46, 0x70, 0xbd, + 0x27, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, 0xe6, 0xe7, 0x26, 0x4b, + 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xe1, 0xe7, 0xa3, 0x89, 0x9d, 0x05, + 0xee, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0xb1, 0xf9, 0xea, 0xe7, 0xa2, 0x89, + 0x02, 0xf0, 0x0c, 0x03, 0x08, 0x2b, 0x19, 0xd1, 0x23, 0x68, 0xbb, 0xb1, + 0x21, 0x69, 0x5b, 0x1a, 0x00, 0x2b, 0x13, 0xdd, 0xd0, 0x05, 0x11, 0xd5, + 0x02, 0x23, 0x00, 0x22, 0x21, 0x6a, 0x28, 0x46, 0xb0, 0x47, 0x41, 0x1c, + 0x05, 0x46, 0x0d, 0xd1, 0x63, 0x6e, 0xda, 0x07, 0xd2, 0xd4, 0xa3, 0x89, + 0x9b, 0x05, 0xcf, 0xd4, 0xa0, 0x6d, 0x00, 0xf0, 0x92, 0xf9, 0xcd, 0xe7, + 0x12, 0xf4, 0x80, 0x52, 0x0f, 0xd0, 0x65, 0x6d, 0xa2, 0x89, 0x56, 0x07, + 0x0d, 0xd5, 0x63, 0x68, 0xed, 0x1a, 0x63, 0x6b, 0x0b, 0xb1, 0x23, 0x6c, + 0xed, 0x1a, 0x63, 0x6e, 0xd9, 0x07, 0xbd, 0xd4, 0x93, 0x05, 0xbb, 0xd4, + 0xe8, 0xe7, 0x01, 0x23, 0xda, 0xe7, 0x10, 0x07, 0xf5, 0xd5, 0x23, 0x68, + 0x00, 0x2b, 0xf2, 0xd0, 0x21, 0x69, 0x5b, 0x1a, 0x1d, 0x44, 0xee, 0xe7, + 0x2c, 0xf0, 0x01, 0x08, 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, + 0x2d, 0xe9, 0xf0, 0x41, 0x0f, 0x46, 0x00, 0xf1, 0x48, 0x04, 0x00, 0x26, + 0xd4, 0xe9, 0x01, 0x85, 0xb8, 0xf1, 0x01, 0x08, 0x05, 0xd5, 0x24, 0x68, + 0x00, 0x2c, 0xf7, 0xd1, 0x30, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0xab, 0x89, + 0x01, 0x2b, 0x06, 0xd9, 0xb5, 0xf9, 0x0e, 0x30, 0x01, 0x33, 0x02, 0xd0, + 0x28, 0x46, 0xb8, 0x47, 0x06, 0x43, 0x68, 0x35, 0xea, 0xe7, 0x2d, 0xe9, + 0xf8, 0x43, 0x06, 0x46, 0x88, 0x46, 0x00, 0xf1, 0x48, 0x04, 0x00, 0x27, + 0xd4, 0xe9, 0x01, 0x95, 0xb9, 0xf1, 0x01, 0x09, 0x05, 0xd5, 0x24, 0x68, + 0x00, 0x2c, 0xf7, 0xd1, 0x38, 0x46, 0xbd, 0xe8, 0xf8, 0x83, 0xab, 0x89, + 0x01, 0x2b, 0x07, 0xd9, 0xb5, 0xf9, 0x0e, 0x30, 0x01, 0x33, 0x03, 0xd0, + 0x29, 0x46, 0x30, 0x46, 0xc0, 0x47, 0x07, 0x43, 0x68, 0x35, 0xe9, 0xe7, + 0x70, 0xb5, 0x0d, 0x4d, 0x0d, 0x4c, 0x64, 0x1b, 0xa4, 0x10, 0x00, 0x26, + 0xa6, 0x42, 0x09, 0xd1, 0x0b, 0x4d, 0x0c, 0x4c, 0x02, 0xf0, 0x00, 0xf9, + 0x64, 0x1b, 0xa4, 0x10, 0x00, 0x26, 0xa6, 0x42, 0x05, 0xd1, 0x70, 0xbd, + 0x55, 0xf8, 0x04, 0x3b, 0x98, 0x47, 0x01, 0x36, 0xee, 0xe7, 0x55, 0xf8, + 0x04, 0x3b, 0x98, 0x47, 0x01, 0x36, 0xf2, 0xe7, 0xe0, 0x03, 0x00, 0x24, + 0xe0, 0x03, 0x00, 0x24, 0xe0, 0x03, 0x00, 0x24, 0xe8, 0x03, 0x00, 0x24, + 0x38, 0xb5, 0x07, 0x4b, 0x1d, 0x68, 0xeb, 0x6b, 0x04, 0x46, 0x1b, 0xb9, + 0x24, 0x20, 0x00, 0xf0, 0x69, 0xf9, 0xe8, 0x63, 0xe9, 0x6b, 0x20, 0x46, + 0xbd, 0xe8, 0x38, 0x40, 0x00, 0xf0, 0x02, 0xb8, 0x10, 0x03, 0x00, 0x24, + 0x2d, 0xe9, 0xf3, 0x41, 0x07, 0x46, 0x01, 0x91, 0x00, 0xf0, 0x8e, 0xfe, + 0x01, 0x99, 0x80, 0x46, 0x38, 0x46, 0x00, 0xf0, 0x8d, 0xfe, 0x43, 0x69, + 0x9a, 0x07, 0x04, 0x46, 0x03, 0xf2, 0x6c, 0x76, 0x05, 0xd1, 0x64, 0x22, + 0x96, 0xfb, 0xf2, 0xf3, 0x02, 0xfb, 0x13, 0x63, 0x7b, 0xbb, 0x4f, 0xf4, + 0xc8, 0x73, 0x96, 0xfb, 0xf3, 0xf5, 0x03, 0xfb, 0x15, 0x65, 0xb5, 0xfa, + 0x85, 0xf5, 0x6d, 0x09, 0x68, 0x4b, 0x30, 0x22, 0x02, 0xfb, 0x05, 0x35, + 0x00, 0xf0, 0x34, 0xfc, 0x00, 0xf0, 0x3e, 0xfc, 0x65, 0x4b, 0x1b, 0x68, + 0x53, 0xb3, 0xd8, 0xf8, 0x04, 0x30, 0xb3, 0x42, 0x19, 0xd1, 0xd8, 0xf8, + 0x00, 0x10, 0xd7, 0xe9, 0x00, 0x67, 0xd8, 0xe9, 0x08, 0x23, 0xd1, 0xb9, + 0x96, 0x42, 0x77, 0xeb, 0x03, 0x03, 0x23, 0xda, 0xd8, 0xe9, 0x12, 0x23, + 0x96, 0x42, 0x77, 0xeb, 0x03, 0x03, 0xb4, 0xbf, 0x01, 0x23, 0x00, 0x23, + 0x23, 0x62, 0x1b, 0xdb, 0xd8, 0xf8, 0x28, 0x10, 0x1a, 0xe0, 0x01, 0x25, + 0xd6, 0xe7, 0x30, 0x46, 0x00, 0xf0, 0x66, 0xfb, 0x00, 0x28, 0xe0, 0xd1, + 0x4f, 0xf0, 0xff, 0x33, 0x04, 0xe0, 0x96, 0x42, 0x77, 0xeb, 0x03, 0x03, + 0x02, 0xda, 0x00, 0x23, 0x23, 0x62, 0xeb, 0xe7, 0xd8, 0xe9, 0x12, 0x23, + 0x96, 0x42, 0x77, 0xeb, 0x03, 0x03, 0xf6, 0xda, 0x01, 0x23, 0x23, 0x62, + 0xd8, 0xf8, 0x50, 0x10, 0x4f, 0xf4, 0x61, 0x63, 0x3c, 0x20, 0x91, 0xfb, + 0xf3, 0xf6, 0x03, 0xfb, 0x16, 0x13, 0x61, 0x68, 0x93, 0xfb, 0xf0, 0xf2, + 0x00, 0xfb, 0x12, 0x30, 0x23, 0x68, 0x89, 0x1a, 0xa2, 0x68, 0x61, 0x60, + 0x1b, 0x1a, 0x92, 0x1b, 0x3b, 0x2b, 0x23, 0x60, 0xa2, 0x60, 0x35, 0xdd, + 0x01, 0x31, 0x61, 0x60, 0x3c, 0x3b, 0x23, 0x60, 0x63, 0x68, 0x3b, 0x2b, + 0x34, 0xdd, 0x01, 0x32, 0xa2, 0x60, 0x3c, 0x3b, 0x63, 0x60, 0xa3, 0x68, + 0x17, 0x2b, 0x33, 0xdd, 0xe2, 0x69, 0x01, 0x32, 0xe2, 0x61, 0xa2, 0x69, + 0x01, 0x32, 0x06, 0x2a, 0xc8, 0xbf, 0x00, 0x22, 0xa2, 0x61, 0xe2, 0x68, + 0x18, 0x3b, 0x01, 0x32, 0xa3, 0x60, 0x23, 0x69, 0xe2, 0x60, 0x55, 0xf8, + 0x23, 0x10, 0x8a, 0x42, 0x0e, 0xdd, 0x0b, 0x2b, 0xa2, 0xeb, 0x01, 0x02, + 0xe2, 0x60, 0x03, 0xf1, 0x01, 0x02, 0x09, 0xbf, 0x63, 0x69, 0x22, 0x61, + 0x00, 0x22, 0x01, 0x33, 0x02, 0xbf, 0x22, 0x61, 0x63, 0x61, 0xe2, 0x61, + 0x00, 0xf0, 0xb6, 0xfb, 0x20, 0x46, 0x02, 0xb0, 0xbd, 0xe8, 0xf0, 0x81, + 0x00, 0x2b, 0xcb, 0xda, 0x01, 0x39, 0x61, 0x60, 0x3c, 0x33, 0xc6, 0xe7, + 0x00, 0x2b, 0xcc, 0xda, 0x01, 0x3a, 0xa2, 0x60, 0x3c, 0x33, 0xc7, 0xe7, + 0x00, 0x2b, 0xeb, 0xda, 0xe2, 0x69, 0x01, 0x3a, 0xe2, 0x61, 0xa2, 0x69, + 0x01, 0x3a, 0x48, 0xbf, 0x06, 0x22, 0xa2, 0x61, 0xe2, 0x68, 0x18, 0x33, + 0x01, 0x3a, 0xe2, 0x60, 0xa3, 0x60, 0x00, 0x2a, 0xdc, 0xd1, 0x23, 0x69, + 0x01, 0x3b, 0x05, 0xd4, 0x23, 0x61, 0x23, 0x69, 0x55, 0xf8, 0x23, 0x30, + 0xe3, 0x60, 0xd3, 0xe7, 0x0b, 0x23, 0x23, 0x61, 0x63, 0x69, 0x5a, 0x1e, + 0x62, 0x61, 0x03, 0xf2, 0x6b, 0x72, 0x93, 0x07, 0x05, 0xd1, 0x64, 0x21, + 0x92, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, 0x13, 0x23, 0x63, 0xb9, 0x4f, 0xf4, + 0xc8, 0x71, 0x92, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, 0x13, 0x23, 0xb3, 0xfa, + 0x83, 0xf3, 0x5b, 0x09, 0x03, 0xf5, 0xb6, 0x73, 0xe3, 0x61, 0xde, 0xe7, + 0x01, 0x23, 0xf9, 0xe7, 0x70, 0xf0, 0x01, 0x08, 0xc0, 0xa5, 0x02, 0x24, + 0x70, 0x47, 0x70, 0x47, 0x70, 0x47, 0x70, 0x47, 0x70, 0x47, 0x70, 0x47, + 0x70, 0xb5, 0x0e, 0x46, 0xb1, 0xf9, 0x0e, 0x10, 0x00, 0x29, 0x96, 0xb0, + 0x14, 0x46, 0x1d, 0x46, 0x07, 0xda, 0x00, 0x23, 0x2b, 0x60, 0xb3, 0x89, + 0x1a, 0x06, 0x10, 0xd4, 0x4f, 0xf4, 0x80, 0x63, 0x0e, 0xe0, 0x6a, 0x46, + 0x00, 0xf0, 0x30, 0xfd, 0x00, 0x28, 0xf2, 0xdb, 0x01, 0x9a, 0x02, 0xf4, + 0x70, 0x42, 0xa2, 0xf5, 0x00, 0x53, 0x5a, 0x42, 0x5a, 0x41, 0x2a, 0x60, + 0xee, 0xe7, 0x40, 0x23, 0x00, 0x20, 0x23, 0x60, 0x16, 0xb0, 0x70, 0xbd, + 0x8b, 0x89, 0x73, 0xb5, 0x9d, 0x07, 0x06, 0x46, 0x0c, 0x46, 0x07, 0xd5, + 0x04, 0xf1, 0x47, 0x03, 0x23, 0x60, 0x23, 0x61, 0x01, 0x23, 0x63, 0x61, + 0x02, 0xb0, 0x70, 0xbd, 0x01, 0xab, 0x6a, 0x46, 0xff, 0xf7, 0xca, 0xff, + 0x00, 0x99, 0x05, 0x46, 0x30, 0x46, 0xf3, 0xf7, 0xe7, 0xfa, 0x48, 0xb9, + 0xb4, 0xf9, 0x0c, 0x30, 0x9a, 0x05, 0xef, 0xd4, 0x23, 0xf0, 0x03, 0x03, + 0x43, 0xf0, 0x02, 0x03, 0xa3, 0x81, 0xe3, 0xe7, 0x0d, 0x4b, 0xb3, 0x62, + 0xa3, 0x89, 0x20, 0x60, 0x43, 0xf0, 0x80, 0x03, 0xa3, 0x81, 0x00, 0x9b, + 0x63, 0x61, 0x01, 0x9b, 0x20, 0x61, 0x5b, 0xb1, 0xb4, 0xf9, 0x0e, 0x10, + 0x30, 0x46, 0x00, 0xf0, 0xf5, 0xfd, 0x28, 0xb1, 0xa3, 0x89, 0x23, 0xf0, + 0x03, 0x03, 0x43, 0xf0, 0x01, 0x03, 0xa3, 0x81, 0xa0, 0x89, 0x05, 0x43, + 0xa5, 0x81, 0xcd, 0xe7, 0x75, 0xaa, 0x01, 0x08, 0x02, 0x4b, 0x01, 0x46, + 0x18, 0x68, 0xf3, 0xf7, 0xb9, 0xba, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, + 0x02, 0x4b, 0x01, 0x46, 0x18, 0x68, 0xf3, 0xf7, 0xad, 0xba, 0x00, 0xbf, + 0x10, 0x03, 0x00, 0x24, 0x01, 0xf0, 0xff, 0x01, 0x10, 0x2a, 0x2b, 0xdb, + 0x10, 0xf0, 0x07, 0x0f, 0x08, 0xd0, 0x10, 0xf8, 0x01, 0x3b, 0x01, 0x3a, + 0x8b, 0x42, 0x2d, 0xd0, 0x10, 0xf0, 0x07, 0x0f, 0x42, 0xb3, 0xf6, 0xd1, + 0xf0, 0xb4, 0x41, 0xea, 0x01, 0x21, 0x41, 0xea, 0x01, 0x41, 0x22, 0xf0, + 0x07, 0x04, 0x7f, 0xf0, 0x00, 0x07, 0x00, 0x23, 0xf0, 0xe8, 0x02, 0x56, + 0x08, 0x3c, 0x85, 0xea, 0x01, 0x05, 0x86, 0xea, 0x01, 0x06, 0x85, 0xfa, + 0x47, 0xf5, 0xa3, 0xfa, 0x87, 0xf5, 0x86, 0xfa, 0x47, 0xf6, 0xa5, 0xfa, + 0x87, 0xf6, 0x8e, 0xb9, 0xee, 0xd1, 0xf0, 0xbc, 0x01, 0xf0, 0xff, 0x01, + 0x02, 0xf0, 0x07, 0x02, 0x32, 0xb1, 0x10, 0xf8, 0x01, 0x3b, 0x01, 0x3a, + 0x83, 0xea, 0x01, 0x03, 0x13, 0xb1, 0xf8, 0xd1, 0x00, 0x20, 0x70, 0x47, + 0x01, 0x38, 0x70, 0x47, 0x00, 0x2d, 0x06, 0xbf, 0x35, 0x46, 0x03, 0x38, + 0x07, 0x38, 0x15, 0xf0, 0x01, 0x0f, 0x07, 0xd1, 0x01, 0x30, 0x15, 0xf4, + 0x80, 0x7f, 0x02, 0xbf, 0x01, 0x30, 0x15, 0xf4, 0xc0, 0x3f, 0x01, 0x30, + 0xf0, 0xbc, 0x01, 0x38, 0x70, 0x47, 0x00, 0xbf, 0x0a, 0x44, 0x91, 0x42, + 0x00, 0xf1, 0xff, 0x33, 0x00, 0xd1, 0x70, 0x47, 0x10, 0xb5, 0x11, 0xf8, + 0x01, 0x4b, 0x03, 0xf8, 0x01, 0x4f, 0x91, 0x42, 0xf9, 0xd1, 0x10, 0xbd, + 0x02, 0x44, 0x03, 0x46, 0x93, 0x42, 0x00, 0xd1, 0x70, 0x47, 0x03, 0xf8, + 0x01, 0x1b, 0xf9, 0xe7, 0x13, 0xb5, 0x4a, 0x43, 0x11, 0x46, 0x01, 0x92, + 0xf3, 0xf7, 0x42, 0xfa, 0x04, 0x46, 0x18, 0xb1, 0x01, 0x9a, 0x00, 0x21, + 0xff, 0xf7, 0xec, 0xff, 0x20, 0x46, 0x02, 0xb0, 0x10, 0xbd, 0x00, 0x00, + 0x37, 0xb5, 0x00, 0x29, 0x48, 0xd0, 0x51, 0xf8, 0x04, 0x3c, 0x01, 0x90, + 0x00, 0x2b, 0xa1, 0xf1, 0x04, 0x04, 0xb8, 0xbf, 0xe4, 0x18, 0xf3, 0xf7, + 0x49, 0xf8, 0x20, 0x4a, 0x01, 0x98, 0x13, 0x68, 0x15, 0x46, 0x33, 0xb9, + 0x63, 0x60, 0x14, 0x60, 0x03, 0xb0, 0xbd, 0xe8, 0x30, 0x40, 0xf3, 0xf7, + 0x37, 0xb8, 0xa3, 0x42, 0x0b, 0xd9, 0x21, 0x68, 0x62, 0x18, 0x93, 0x42, + 0x04, 0xbf, 0x1a, 0x68, 0x5b, 0x68, 0x63, 0x60, 0x04, 0xbf, 0x52, 0x18, + 0x22, 0x60, 0x2c, 0x60, 0xec, 0xe7, 0x1a, 0x46, 0x5b, 0x68, 0x0b, 0xb1, + 0xa3, 0x42, 0xfa, 0xd9, 0x11, 0x68, 0x55, 0x18, 0xa5, 0x42, 0x0b, 0xd1, + 0x24, 0x68, 0x21, 0x44, 0x54, 0x18, 0xa3, 0x42, 0x11, 0x60, 0xdd, 0xd1, + 0x1c, 0x68, 0x5b, 0x68, 0x53, 0x60, 0x21, 0x44, 0x11, 0x60, 0xd7, 0xe7, + 0x02, 0xd9, 0x0c, 0x23, 0x03, 0x60, 0xd3, 0xe7, 0x25, 0x68, 0x61, 0x19, + 0x8b, 0x42, 0x04, 0xbf, 0x19, 0x68, 0x5b, 0x68, 0x63, 0x60, 0x04, 0xbf, + 0x49, 0x19, 0x21, 0x60, 0x54, 0x60, 0xc7, 0xe7, 0x03, 0xb0, 0x30, 0xbd, + 0x9c, 0xa5, 0x02, 0x24, 0xf8, 0xb5, 0xcd, 0x1c, 0x25, 0xf0, 0x03, 0x05, + 0x08, 0x35, 0x0c, 0x2d, 0x38, 0xbf, 0x0c, 0x25, 0x00, 0x2d, 0x06, 0x46, + 0x01, 0xdb, 0xa9, 0x42, 0x03, 0xd9, 0x0c, 0x23, 0x33, 0x60, 0x00, 0x20, + 0xf8, 0xbd, 0xf2, 0xf7, 0xf3, 0xff, 0x21, 0x49, 0x0a, 0x68, 0x14, 0x46, + 0x9c, 0xb9, 0x20, 0x4f, 0x3b, 0x68, 0x23, 0xb9, 0x21, 0x46, 0x30, 0x46, + 0x00, 0xf0, 0x08, 0xf9, 0x38, 0x60, 0x29, 0x46, 0x30, 0x46, 0x00, 0xf0, + 0x03, 0xf9, 0x43, 0x1c, 0x23, 0xd1, 0x0c, 0x23, 0x33, 0x60, 0x30, 0x46, + 0xf2, 0xf7, 0xd6, 0xff, 0xe3, 0xe7, 0x23, 0x68, 0x5b, 0x1b, 0x17, 0xd4, + 0x0b, 0x2b, 0x03, 0xd9, 0x23, 0x60, 0x1c, 0x44, 0x25, 0x60, 0x04, 0xe0, + 0x63, 0x68, 0xa2, 0x42, 0x0c, 0xbf, 0x0b, 0x60, 0x53, 0x60, 0x30, 0x46, + 0xf2, 0xf7, 0xc4, 0xff, 0x04, 0xf1, 0x0b, 0x00, 0x23, 0x1d, 0x20, 0xf0, + 0x07, 0x00, 0xc2, 0x1a, 0xcc, 0xd0, 0x1b, 0x1a, 0xa3, 0x50, 0xc9, 0xe7, + 0x22, 0x46, 0x64, 0x68, 0xcc, 0xe7, 0xc4, 0x1c, 0x24, 0xf0, 0x03, 0x04, + 0xa0, 0x42, 0xe3, 0xd0, 0x21, 0x1a, 0x30, 0x46, 0x00, 0xf0, 0xd4, 0xf8, + 0x01, 0x30, 0xdd, 0xd1, 0xcf, 0xe7, 0x00, 0xbf, 0x9c, 0xa5, 0x02, 0x24, + 0xa0, 0xa5, 0x02, 0x24, 0xf8, 0xb5, 0x07, 0x46, 0x14, 0x46, 0x0e, 0x46, + 0x21, 0xb9, 0xbd, 0xe8, 0xf8, 0x40, 0x11, 0x46, 0xf3, 0xf7, 0x84, 0xb9, + 0x22, 0xb9, 0xf3, 0xf7, 0x7d, 0xf9, 0x25, 0x46, 0x28, 0x46, 0xf8, 0xbd, + 0x00, 0xf0, 0xc8, 0xfc, 0xa0, 0x42, 0x0f, 0xd2, 0x21, 0x46, 0x38, 0x46, + 0xf3, 0xf7, 0x76, 0xf9, 0x05, 0x46, 0x00, 0x28, 0xf2, 0xd0, 0x31, 0x46, + 0x22, 0x46, 0xff, 0xf7, 0x11, 0xff, 0x31, 0x46, 0x38, 0x46, 0xf3, 0xf7, + 0x67, 0xf9, 0xe9, 0xe7, 0x35, 0x46, 0xe7, 0xe7, 0x38, 0xb5, 0x07, 0x4d, 0x04, 0x46, 0x08, 0x46, 0x11, 0x46, 0x00, 0x22, 0x2a, 0x60, 0x1a, 0x46, - 0xf4, 0xf7, 0x46, 0xfa, 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, - 0x23, 0x60, 0x38, 0xbd, 0x78, 0xa8, 0x00, 0x24, 0x38, 0xb5, 0x06, 0x4d, - 0x00, 0x23, 0x04, 0x46, 0x08, 0x46, 0x2b, 0x60, 0xf4, 0xf7, 0x8e, 0xfa, - 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, 0x38, 0xbd, - 0x78, 0xa8, 0x00, 0x24, 0x0b, 0x78, 0x72, 0x2b, 0x30, 0xb5, 0x22, 0xd0, - 0x77, 0x2b, 0x24, 0xd0, 0x61, 0x2b, 0x27, 0xd0, 0x16, 0x23, 0x03, 0x60, - 0x00, 0x20, 0x30, 0xbd, 0x62, 0x2d, 0x12, 0xd0, 0x78, 0x2d, 0x13, 0xd0, - 0x2b, 0x2d, 0x07, 0xd1, 0x20, 0xf0, 0x1c, 0x00, 0x23, 0xf0, 0x03, 0x03, - 0x40, 0xf0, 0x10, 0x00, 0x43, 0xf0, 0x02, 0x03, 0x11, 0xf8, 0x01, 0x5f, - 0x00, 0x2d, 0xed, 0xd1, 0x23, 0x43, 0x13, 0x60, 0xe9, 0xe7, 0x43, 0xf4, - 0x80, 0x33, 0xf5, 0xe7, 0x43, 0xf4, 0x00, 0x63, 0xf2, 0xe7, 0x00, 0x24, - 0x23, 0x46, 0x04, 0x20, 0xee, 0xe7, 0x4f, 0xf4, 0xc0, 0x64, 0x01, 0x23, - 0x08, 0x20, 0xe9, 0xe7, 0x4f, 0xf4, 0x02, 0x74, 0x01, 0x23, 0x4f, 0xf4, - 0x84, 0x70, 0xe3, 0xe7, 0x38, 0xb5, 0x07, 0x4d, 0x00, 0x23, 0x04, 0x46, - 0x08, 0x46, 0x11, 0x46, 0x2b, 0x60, 0xf4, 0xf7, 0x31, 0xf9, 0x43, 0x1c, - 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, 0x38, 0xbd, 0x00, 0xbf, - 0x78, 0xa8, 0x00, 0x24, 0x2d, 0xe9, 0xf8, 0x4f, 0x07, 0x46, 0x89, 0x46, - 0x16, 0x46, 0xf3, 0xf7, 0xd7, 0xfa, 0x18, 0x4b, 0x1c, 0x68, 0x9a, 0x46, - 0x34, 0xb1, 0x4b, 0x46, 0x98, 0x46, 0x13, 0xf8, 0x01, 0x1b, 0x39, 0xb1, - 0x3d, 0x29, 0xf9, 0xd1, 0x38, 0x46, 0xf3, 0xf7, 0xc3, 0xfa, 0x00, 0x20, - 0xbd, 0xe8, 0xf8, 0x8f, 0xa8, 0xeb, 0x09, 0x08, 0xa3, 0x46, 0x54, 0xf8, - 0x04, 0x0b, 0x00, 0x28, 0xf2, 0xd0, 0x42, 0x46, 0x49, 0x46, 0x00, 0xf0, - 0x55, 0xf9, 0x00, 0x28, 0xf4, 0xd1, 0x54, 0xf8, 0x04, 0x3c, 0x03, 0xeb, - 0x08, 0x05, 0x13, 0xf8, 0x08, 0x30, 0x3d, 0x2b, 0xec, 0xd1, 0xda, 0xf8, - 0x00, 0x30, 0xab, 0xeb, 0x03, 0x03, 0x9b, 0x10, 0x38, 0x46, 0x33, 0x60, - 0xf3, 0xf7, 0xa2, 0xfa, 0x68, 0x1c, 0xdd, 0xe7, 0xd8, 0x03, 0x00, 0x24, - 0x07, 0xb5, 0x01, 0xaa, 0xff, 0xf7, 0xc2, 0xff, 0x03, 0xb0, 0x5d, 0xf8, - 0x04, 0xfb, 0x00, 0x00, 0x00, 0x48, 0x70, 0x47, 0x80, 0x03, 0x00, 0x24, - 0x2d, 0xe9, 0xf0, 0x41, 0xd0, 0xe9, 0x00, 0x67, 0x0c, 0x46, 0x51, 0x4a, - 0x00, 0x23, 0x30, 0x46, 0x39, 0x46, 0x01, 0xf0, 0x53, 0xf8, 0x39, 0x46, - 0x05, 0x46, 0x4d, 0x4a, 0x30, 0x46, 0x00, 0x23, 0x01, 0xf0, 0x4c, 0xf8, - 0x00, 0x2a, 0xbc, 0xbf, 0x02, 0xf5, 0xa8, 0x32, 0x02, 0xf5, 0xc0, 0x72, - 0x4f, 0xf4, 0x61, 0x61, 0x05, 0xf5, 0x2f, 0x20, 0xb2, 0xfb, 0xf1, 0xf3, - 0x01, 0xfb, 0x13, 0x22, 0x4f, 0xf0, 0x3c, 0x01, 0xac, 0xbf, 0x00, 0xf6, - 0x6c, 0x20, 0x00, 0xf6, 0x6b, 0x20, 0xa3, 0x60, 0xb2, 0xfb, 0xf1, 0xf3, - 0x01, 0xfb, 0x13, 0x22, 0x63, 0x60, 0x22, 0x60, 0xc3, 0x1c, 0x07, 0x22, - 0x93, 0xfb, 0xf2, 0xf2, 0xc2, 0xeb, 0xc2, 0x02, 0x9b, 0x1a, 0x48, 0xbf, - 0x07, 0x33, 0x00, 0x28, 0xa3, 0x61, 0xb8, 0xbf, 0xa0, 0xf5, 0x0e, 0x33, - 0x36, 0x49, 0xae, 0xbf, 0x90, 0xfb, 0xf1, 0xf1, 0xa3, 0xf5, 0x2c, 0x73, - 0x93, 0xfb, 0xf1, 0xf1, 0x33, 0x4b, 0x03, 0xfb, 0x01, 0x00, 0x48, 0xf6, - 0xac, 0x62, 0xb0, 0xfb, 0xf2, 0xf2, 0x02, 0x44, 0x40, 0xf2, 0xb4, 0x5c, - 0xb0, 0xfb, 0xfc, 0xf3, 0xd2, 0x1a, 0x40, 0xf2, 0x6d, 0x17, 0x2d, 0x4b, - 0xb0, 0xfb, 0xf3, 0xf3, 0x64, 0x26, 0xd3, 0x1a, 0xb3, 0xfb, 0xf7, 0xf5, - 0xb3, 0xfb, 0xfc, 0xf3, 0xb5, 0xfb, 0xf6, 0xf2, 0xd3, 0x1a, 0x03, 0x44, - 0x07, 0xfb, 0x15, 0x33, 0x99, 0x20, 0x03, 0xeb, 0x83, 0x0c, 0x0c, 0xf1, - 0x02, 0x0c, 0x03, 0xf1, 0x01, 0x0e, 0xbc, 0xfb, 0xf0, 0xf7, 0x78, 0x43, - 0x02, 0x30, 0x4f, 0xf0, 0x05, 0x08, 0xb0, 0xfb, 0xf8, 0xf0, 0xae, 0xeb, - 0x00, 0x00, 0x40, 0xf2, 0xf9, 0x5e, 0xf4, 0x45, 0x94, 0xbf, 0x4f, 0xf0, - 0x02, 0x0c, 0x6f, 0xf0, 0x09, 0x0c, 0x67, 0x44, 0x4f, 0xf4, 0xc8, 0x7c, - 0x0c, 0xfb, 0x01, 0x51, 0x01, 0x2f, 0x98, 0xbf, 0x01, 0x31, 0xb3, 0xf5, - 0x99, 0x7f, 0x0c, 0xd3, 0xa3, 0xf5, 0x99, 0x73, 0xe3, 0x61, 0xa1, 0xf2, - 0x6c, 0x71, 0x00, 0x23, 0xe0, 0x60, 0xc4, 0xe9, 0x04, 0x71, 0x23, 0x62, - 0x20, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0x15, 0xf0, 0x03, 0x0f, 0x02, 0xd1, - 0x06, 0xfb, 0x12, 0x52, 0x5a, 0xb9, 0x4f, 0xf4, 0xc8, 0x76, 0xb5, 0xfb, - 0xf6, 0xf2, 0x06, 0xfb, 0x12, 0x52, 0xb2, 0xfa, 0x82, 0xf2, 0x52, 0x09, - 0x3b, 0x33, 0x13, 0x44, 0xe2, 0xe7, 0x01, 0x22, 0xfa, 0xe7, 0x00, 0xbf, - 0x80, 0x51, 0x01, 0x00, 0xb1, 0x3a, 0x02, 0x00, 0x4f, 0xc5, 0xfd, 0xff, - 0xb0, 0x3a, 0x02, 0x00, 0x38, 0xb5, 0x06, 0x4d, 0x00, 0x23, 0x04, 0x46, - 0x08, 0x46, 0x2b, 0x60, 0xf4, 0xf7, 0x79, 0xf8, 0x43, 0x1c, 0x02, 0xd1, - 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, 0x38, 0xbd, 0x78, 0xa8, 0x00, 0x24, + 0xf4, 0xf7, 0x6e, 0xf8, 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, + 0x23, 0x60, 0x38, 0xbd, 0xd8, 0xa5, 0x02, 0x24, 0x83, 0x89, 0x03, 0xf0, + 0x09, 0x03, 0x09, 0x2b, 0x01, 0xd1, 0xff, 0xf7, 0xbd, 0xb9, 0x00, 0x20, + 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x0c, 0x46, 0x05, 0x46, 0x18, 0xb1, + 0x83, 0x69, 0x0b, 0xb9, 0xff, 0xf7, 0x1c, 0xfa, 0x3b, 0x4b, 0x9c, 0x42, + 0x0a, 0xd1, 0x6c, 0x68, 0xb4, 0xf9, 0x0c, 0x20, 0x00, 0x23, 0x63, 0x60, + 0xa3, 0x89, 0x9e, 0x06, 0x0c, 0xd5, 0x4f, 0xf0, 0xff, 0x30, 0x66, 0xe0, + 0x35, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, 0xf0, 0xe7, 0x34, 0x4b, + 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xeb, 0xe7, 0x58, 0x07, 0x48, 0xd4, + 0xd9, 0x06, 0x05, 0xd4, 0x09, 0x23, 0x2b, 0x60, 0x42, 0xf0, 0x40, 0x03, + 0xa3, 0x81, 0xe8, 0xe7, 0x1a, 0x07, 0x0b, 0xd5, 0x21, 0x46, 0x28, 0x46, + 0xff, 0xf7, 0x4e, 0xf9, 0x00, 0x28, 0xe0, 0xd1, 0xa3, 0x89, 0xa0, 0x60, + 0x23, 0xf0, 0x08, 0x03, 0xa3, 0x81, 0xa0, 0x61, 0xa3, 0x89, 0x43, 0xf0, + 0x04, 0x03, 0xa3, 0x81, 0x23, 0x69, 0x1b, 0xb9, 0x21, 0x46, 0x28, 0x46, + 0xff, 0xf7, 0x0c, 0xfe, 0xa6, 0x89, 0xb4, 0xf9, 0x0c, 0x70, 0xb3, 0x07, + 0x0f, 0xd0, 0x01, 0x23, 0xa3, 0x81, 0x1e, 0x4b, 0x1e, 0x49, 0x18, 0x68, + 0x06, 0xf0, 0x09, 0x06, 0xff, 0xf7, 0x6c, 0xfc, 0x09, 0x2e, 0xa7, 0x81, + 0x03, 0xd1, 0x21, 0x46, 0x28, 0x46, 0xff, 0xf7, 0xa1, 0xf8, 0x22, 0x69, + 0x66, 0x6a, 0x63, 0x69, 0x21, 0x6a, 0x22, 0x60, 0x28, 0x46, 0xb0, 0x47, + 0x00, 0x28, 0x60, 0x60, 0x1c, 0xdc, 0xb4, 0xf9, 0x0c, 0x30, 0x17, 0xbf, + 0x00, 0x22, 0x43, 0xf0, 0x20, 0x03, 0x62, 0x60, 0x43, 0xf0, 0x40, 0x03, + 0xbc, 0xe7, 0x61, 0x6b, 0x00, 0x29, 0xcd, 0xd0, 0x04, 0xf1, 0x44, 0x03, + 0x99, 0x42, 0x02, 0xd0, 0x28, 0x46, 0xf3, 0xf7, 0xd3, 0xf8, 0x23, 0x6c, + 0x63, 0x60, 0x00, 0x20, 0x60, 0x63, 0x00, 0x2b, 0xc0, 0xd0, 0xe3, 0x6b, + 0x23, 0x60, 0xf8, 0xbd, 0x00, 0x20, 0xfc, 0xe7, 0x2c, 0xf0, 0x01, 0x08, + 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, 0x6c, 0xf0, 0x01, 0x08, + 0x81, 0xb6, 0x01, 0x08, 0x38, 0xb5, 0x06, 0x4d, 0x00, 0x23, 0x04, 0x46, + 0x08, 0x46, 0x2b, 0x60, 0xf2, 0xf7, 0xe0, 0xfe, 0x43, 0x1c, 0x02, 0xd1, + 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, 0x38, 0xbd, 0xd8, 0xa5, 0x02, 0x24, + 0x10, 0xb5, 0x0c, 0x46, 0xb1, 0xf9, 0x0e, 0x10, 0x00, 0xf0, 0x00, 0xfc, + 0x00, 0x28, 0xab, 0xbf, 0x63, 0x6d, 0xa3, 0x89, 0x1b, 0x18, 0x23, 0xf4, + 0x80, 0x53, 0xac, 0xbf, 0x63, 0x65, 0xa3, 0x81, 0x10, 0xbd, 0x00, 0x20, + 0x70, 0x47, 0x2d, 0xe9, 0xf0, 0x41, 0x1f, 0x46, 0x8b, 0x89, 0xdb, 0x05, + 0x05, 0x46, 0x0c, 0x46, 0x16, 0x46, 0x05, 0xd5, 0xb1, 0xf9, 0x0e, 0x10, + 0x02, 0x23, 0x00, 0x22, 0x00, 0xf0, 0xca, 0xfb, 0xa3, 0x89, 0xb4, 0xf9, + 0x0e, 0x10, 0x23, 0xf4, 0x80, 0x53, 0xa3, 0x81, 0x32, 0x46, 0x3b, 0x46, + 0x28, 0x46, 0xbd, 0xe8, 0xf0, 0x41, 0x00, 0xf0, 0x4d, 0xba, 0x10, 0xb5, + 0x0c, 0x46, 0xb1, 0xf9, 0x0e, 0x10, 0x00, 0xf0, 0xb7, 0xfb, 0x43, 0x1c, + 0xa3, 0x89, 0x15, 0xbf, 0x60, 0x65, 0x23, 0xf4, 0x80, 0x53, 0x43, 0xf4, + 0x80, 0x53, 0xa3, 0x81, 0x18, 0xbf, 0xa3, 0x81, 0x10, 0xbd, 0xb1, 0xf9, + 0x0e, 0x10, 0x00, 0xf0, 0x49, 0xba, 0x00, 0x00, 0x2d, 0xe9, 0xf7, 0x4f, + 0x80, 0x46, 0x00, 0xf0, 0xdd, 0xfa, 0x40, 0xf2, 0xb1, 0x73, 0x98, 0x45, + 0x40, 0xf3, 0x98, 0x80, 0x6f, 0xf4, 0xf6, 0x63, 0x43, 0x44, 0x9b, 0x10, + 0x40, 0xf2, 0x6d, 0x12, 0xa8, 0xf2, 0xb2, 0x75, 0x02, 0xfb, 0x05, 0x35, + 0x6f, 0xf0, 0x63, 0x02, 0xa8, 0xf2, 0x6d, 0x73, 0x93, 0xfb, 0xf2, 0xf3, + 0x1d, 0x44, 0x4f, 0xf4, 0xc8, 0x73, 0x6f, 0xf4, 0xc8, 0x62, 0x98, 0xfb, + 0xf3, 0xf7, 0x03, 0xfb, 0x17, 0x87, 0x42, 0x44, 0xb7, 0xfa, 0x87, 0xfc, + 0xb2, 0xfb, 0xf3, 0xf2, 0x08, 0xf0, 0x03, 0x03, 0x15, 0x44, 0x64, 0x22, + 0xc0, 0xf8, 0x04, 0x80, 0x98, 0xfb, 0xf2, 0xf6, 0x4f, 0xea, 0x5c, 0x1c, + 0x02, 0xfb, 0x16, 0x86, 0x04, 0x46, 0x00, 0xf1, 0x50, 0x0b, 0x00, 0x93, + 0x4f, 0xf0, 0x07, 0x0e, 0x22, 0x7a, 0x63, 0x69, 0x4a, 0x2a, 0x28, 0xd1, + 0x00, 0x99, 0xea, 0x18, 0x01, 0xb9, 0x06, 0xb9, 0x0f, 0xbb, 0x3b, 0x2b, + 0xd4, 0xbf, 0x00, 0x23, 0x01, 0x23, 0x13, 0x44, 0x5a, 0x1e, 0xa3, 0x69, + 0x2c, 0x49, 0x01, 0xfb, 0x02, 0x32, 0xa3, 0x6a, 0x13, 0x44, 0x1a, 0x46, + 0xdb, 0x17, 0xc4, 0xe9, 0x08, 0x23, 0x28, 0x34, 0xa3, 0x45, 0xe3, 0xd1, + 0xd0, 0xe9, 0x08, 0x45, 0xd0, 0xe9, 0x12, 0x23, 0x94, 0x42, 0x75, 0xeb, + 0x03, 0x03, 0xb4, 0xbf, 0x01, 0x23, 0x00, 0x23, 0x03, 0x60, 0x01, 0x20, + 0x03, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x00, 0x23, 0xdf, 0xe7, 0x44, 0x2a, + 0x01, 0xd1, 0xea, 0x18, 0xdd, 0xe7, 0x00, 0x9a, 0x72, 0xbb, 0x00, 0x2e, + 0x0c, 0xbf, 0xe0, 0x46, 0x4f, 0xf0, 0x01, 0x08, 0x19, 0x49, 0xe2, 0x68, + 0x01, 0x92, 0x4f, 0xf0, 0x30, 0x0a, 0x0a, 0xfb, 0x08, 0x18, 0x2a, 0x46, + 0x4f, 0xf0, 0x00, 0x09, 0xa8, 0xf1, 0x04, 0x08, 0x01, 0x99, 0x09, 0xf1, + 0x01, 0x09, 0x49, 0x45, 0x58, 0xf8, 0x29, 0xa0, 0x18, 0xdc, 0x02, 0xf1, + 0x04, 0x08, 0x98, 0xfb, 0xfe, 0xf9, 0xc9, 0xeb, 0xc9, 0x09, 0xa8, 0xeb, + 0x09, 0x09, 0xb3, 0xeb, 0x09, 0x09, 0x23, 0x69, 0x03, 0xf1, 0xff, 0x33, + 0x48, 0xbf, 0x09, 0xf1, 0x07, 0x09, 0xc3, 0xeb, 0xc3, 0x03, 0x4b, 0x44, + 0x53, 0x45, 0x05, 0xda, 0x1a, 0x44, 0xac, 0xe7, 0xe0, 0x46, 0xd3, 0xe7, + 0x52, 0x44, 0xdd, 0xe7, 0x07, 0x3b, 0xf5, 0xe7, 0x00, 0x20, 0xbd, 0xe7, + 0x80, 0x51, 0x01, 0x00, 0x70, 0xf0, 0x01, 0x08, 0x01, 0x48, 0xff, 0xf7, + 0x9b, 0xbc, 0x00, 0xbf, 0xd3, 0xa5, 0x02, 0x24, 0x01, 0x48, 0xff, 0xf7, + 0x97, 0xbc, 0x00, 0xbf, 0xd3, 0xa5, 0x02, 0x24, 0x01, 0x4b, 0x18, 0x68, + 0x00, 0xf0, 0x02, 0xb8, 0x10, 0x03, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x4f, + 0x8d, 0xb0, 0x07, 0x46, 0x00, 0xf0, 0x22, 0xfa, 0xae, 0x49, 0xaf, 0x4e, + 0x05, 0x46, 0x38, 0x46, 0x00, 0xf0, 0x14, 0xfa, 0x04, 0x46, 0x70, 0xb9, + 0xac, 0x4b, 0xad, 0x4a, 0x18, 0x60, 0xad, 0x4b, 0x18, 0x60, 0xad, 0x4b, + 0x30, 0x68, 0xc3, 0xe9, 0x00, 0x22, 0xff, 0xf7, 0xe3, 0xfc, 0x34, 0x60, + 0x0d, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x31, 0x68, 0x00, 0x29, 0x5f, 0xd1, + 0x30, 0x68, 0xff, 0xf7, 0xd9, 0xfc, 0x20, 0x46, 0x00, 0xf0, 0x30, 0xfb, + 0x41, 0x1c, 0x38, 0x46, 0xf2, 0xf7, 0x88, 0xff, 0x30, 0x60, 0x00, 0x28, + 0x57, 0xd1, 0x23, 0x78, 0xa0, 0x4a, 0xa1, 0x49, 0x3a, 0x2b, 0x08, 0xbf, + 0x01, 0x34, 0x0a, 0xae, 0x33, 0x46, 0x20, 0x46, 0x00, 0xf0, 0xe0, 0xfa, + 0x00, 0x28, 0xdf, 0xdd, 0x0a, 0x9b, 0xe7, 0x18, 0xe3, 0x5c, 0x2d, 0x2b, + 0x49, 0xd1, 0x01, 0x37, 0x4f, 0xf0, 0xff, 0x34, 0x0d, 0xf1, 0x20, 0x0a, + 0x0d, 0xf1, 0x1e, 0x0b, 0x4f, 0xf0, 0x00, 0x08, 0xcd, 0xe9, 0x01, 0x6a, + 0x94, 0x49, 0x03, 0x96, 0xcd, 0xf8, 0x00, 0xb0, 0x33, 0x46, 0x07, 0xaa, + 0x38, 0x46, 0xad, 0xf8, 0x1e, 0x80, 0xad, 0xf8, 0x20, 0x80, 0x00, 0xf0, + 0xc1, 0xfa, 0x40, 0x45, 0xc0, 0xdd, 0xbd, 0xf8, 0x1e, 0x30, 0xbd, 0xf8, + 0x20, 0x20, 0xdf, 0xf8, 0x38, 0x92, 0x3c, 0x21, 0x01, 0xfb, 0x03, 0x22, + 0xbd, 0xf8, 0x1c, 0x30, 0x4f, 0xf4, 0x61, 0x61, 0x01, 0xfb, 0x03, 0x23, + 0x5c, 0x43, 0xac, 0x62, 0x81, 0x4c, 0x82, 0x4b, 0x23, 0x60, 0x0a, 0x9b, + 0x81, 0x49, 0x1f, 0x44, 0x4a, 0x46, 0x33, 0x46, 0x38, 0x46, 0x00, 0xf0, + 0xa3, 0xfa, 0x40, 0x45, 0x16, 0xdc, 0x23, 0x68, 0x63, 0x60, 0x77, 0x4b, + 0xaa, 0x6a, 0x1a, 0x60, 0x77, 0x4b, 0xc3, 0xf8, 0x00, 0x80, 0x99, 0xe7, + 0x00, 0xf0, 0xc2, 0xfa, 0x00, 0x28, 0x9b, 0xd1, 0x94, 0xe7, 0x21, 0x46, + 0x00, 0xf0, 0xc6, 0xfa, 0xa3, 0xe7, 0x2b, 0x2b, 0x08, 0xbf, 0x01, 0x37, + 0x01, 0x24, 0xb3, 0xe7, 0x0a, 0x9b, 0xc4, 0xf8, 0x04, 0x90, 0xfc, 0x18, + 0xfb, 0x5c, 0x2d, 0x2b, 0x40, 0xf0, 0x8b, 0x80, 0x01, 0x34, 0x4f, 0xf0, + 0xff, 0x37, 0x00, 0x23, 0xad, 0xf8, 0x1c, 0x30, 0xad, 0xf8, 0x1e, 0x30, + 0xad, 0xf8, 0x20, 0x30, 0x0a, 0x93, 0xcd, 0xe9, 0x02, 0xa6, 0xcd, 0xe9, + 0x00, 0xb6, 0x67, 0x49, 0x33, 0x46, 0x07, 0xaa, 0x20, 0x46, 0x00, 0xf0, + 0x6d, 0xfa, 0x00, 0x28, 0x78, 0xdc, 0xaf, 0x6a, 0xa7, 0xf5, 0x61, 0x67, + 0x0a, 0x9b, 0x2f, 0x65, 0x1c, 0x44, 0x2f, 0x46, 0x4f, 0xf0, 0x00, 0x09, + 0x23, 0x78, 0x2c, 0x2b, 0x08, 0xbf, 0x01, 0x34, 0x94, 0xf8, 0x00, 0x80, + 0xb8, 0xf1, 0x4d, 0x0f, 0x78, 0xd1, 0x0d, 0xf1, 0x26, 0x03, 0xcd, 0xe9, + 0x01, 0x63, 0x09, 0xab, 0x00, 0x93, 0x58, 0x49, 0x03, 0x96, 0x33, 0x46, + 0x0d, 0xf1, 0x22, 0x02, 0x20, 0x46, 0x00, 0xf0, 0x4b, 0xfa, 0x03, 0x28, + 0x7f, 0xf4, 0x4a, 0xaf, 0xbd, 0xf8, 0x22, 0x10, 0x4b, 0x1e, 0x0b, 0x2b, + 0x3f, 0xf6, 0x44, 0xaf, 0xbd, 0xf8, 0x24, 0x20, 0x53, 0x1e, 0x04, 0x2b, + 0x3f, 0xf6, 0x3e, 0xaf, 0xbd, 0xf8, 0x26, 0x30, 0x06, 0x2b, 0x3f, 0xf6, + 0x39, 0xaf, 0xc7, 0xe9, 0x03, 0x12, 0x87, 0xf8, 0x08, 0x80, 0x7b, 0x61, + 0x0a, 0x9b, 0x04, 0xeb, 0x03, 0x08, 0x02, 0x23, 0xad, 0xf8, 0x1c, 0x30, + 0x00, 0x23, 0xad, 0xf8, 0x1e, 0x30, 0xad, 0xf8, 0x20, 0x30, 0x0a, 0x93, + 0x98, 0xf8, 0x00, 0x30, 0x2f, 0x2b, 0x09, 0xd1, 0xcd, 0xe9, 0x02, 0xa6, + 0xcd, 0xe9, 0x00, 0xb6, 0x3e, 0x49, 0x33, 0x46, 0x07, 0xaa, 0x40, 0x46, + 0x00, 0xf0, 0x18, 0xfa, 0xbd, 0xf8, 0x1e, 0x30, 0xbd, 0xf8, 0x20, 0x20, + 0x3c, 0x21, 0x01, 0xfb, 0x03, 0x22, 0xbd, 0xf8, 0x1c, 0x30, 0x4f, 0xf4, + 0x61, 0x61, 0x01, 0xfb, 0x03, 0x23, 0xbb, 0x61, 0x0a, 0x9c, 0x28, 0x37, + 0x44, 0x44, 0xb9, 0xf1, 0x00, 0x0f, 0x20, 0xd0, 0x68, 0x68, 0xff, 0xf7, + 0x2f, 0xfe, 0x28, 0x4b, 0xaa, 0x6a, 0x1a, 0x60, 0x2b, 0x6d, 0x9b, 0x1a, + 0x27, 0x4a, 0x18, 0xbf, 0x01, 0x23, 0x13, 0x60, 0xf8, 0xe6, 0x2b, 0x2b, + 0x08, 0xbf, 0x01, 0x34, 0x01, 0x27, 0x72, 0xe7, 0xbd, 0xf8, 0x1e, 0x30, + 0xbd, 0xf8, 0x20, 0x20, 0x3c, 0x21, 0x01, 0xfb, 0x03, 0x22, 0xbd, 0xf8, + 0x1c, 0x30, 0x4f, 0xf4, 0x61, 0x61, 0x01, 0xfb, 0x03, 0x23, 0x5f, 0x43, + 0x7a, 0xe7, 0x4f, 0xf0, 0x01, 0x09, 0x7d, 0xe7, 0xb8, 0xf1, 0x4a, 0x0f, + 0x06, 0xbf, 0x01, 0x34, 0x43, 0x46, 0x44, 0x23, 0x0a, 0x22, 0x0b, 0xa9, + 0x20, 0x46, 0x05, 0x93, 0x00, 0xf0, 0xaa, 0xfa, 0xdd, 0xf8, 0x2c, 0x80, + 0x05, 0x9b, 0xad, 0xf8, 0x26, 0x00, 0xa0, 0x45, 0x14, 0xd1, 0x4d, 0x23, + 0xb9, 0xf1, 0x00, 0x0f, 0x07, 0xd1, 0x2b, 0x72, 0x03, 0x21, 0x02, 0x23, + 0xc5, 0xe9, 0x03, 0x13, 0xc5, 0xf8, 0x14, 0x90, 0x91, 0xe7, 0x85, 0xf8, + 0x30, 0x30, 0x0b, 0x22, 0x01, 0x23, 0xc5, 0xe9, 0x0d, 0x23, 0x00, 0x23, + 0xeb, 0x63, 0x88, 0xe7, 0x80, 0xb2, 0x3b, 0x72, 0x78, 0x61, 0x84, 0xe7, + 0xd0, 0xf0, 0x01, 0x08, 0xbc, 0xa5, 0x02, 0x24, 0xc4, 0xa5, 0x02, 0x24, + 0xd3, 0xf0, 0x01, 0x08, 0xc0, 0xa5, 0x02, 0x24, 0x74, 0x03, 0x00, 0x24, + 0xaf, 0xa5, 0x02, 0x24, 0xd7, 0xf0, 0x01, 0x08, 0xfa, 0xf0, 0x01, 0x08, + 0xe6, 0xf0, 0x01, 0x08, 0xf9, 0xf0, 0x01, 0x08, 0xa4, 0xa5, 0x02, 0x24, 0x38, 0xb5, 0x07, 0x4d, 0x04, 0x46, 0x08, 0x46, 0x11, 0x46, 0x00, 0x22, - 0x2a, 0x60, 0x1a, 0x46, 0xf4, 0xf7, 0x36, 0xf8, 0x43, 0x1c, 0x02, 0xd1, - 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, 0x38, 0xbd, 0x78, 0xa8, 0x00, 0x24, - 0x51, 0xf8, 0x04, 0x3c, 0x18, 0x1f, 0x00, 0x2b, 0xbc, 0xbf, 0x0b, 0x58, - 0xc0, 0x18, 0x70, 0x47, 0x38, 0xb5, 0x07, 0x4d, 0x04, 0x46, 0x08, 0x46, - 0x11, 0x46, 0x00, 0x22, 0x2a, 0x60, 0x1a, 0x46, 0xf4, 0xf7, 0x6a, 0xf8, + 0x2a, 0x60, 0x1a, 0x46, 0xf3, 0xf7, 0x50, 0xfb, 0x43, 0x1c, 0x02, 0xd1, + 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, 0x38, 0xbd, 0xd8, 0xa5, 0x02, 0x24, + 0x38, 0xb5, 0x06, 0x4d, 0x00, 0x23, 0x04, 0x46, 0x08, 0x46, 0x2b, 0x60, + 0xf3, 0xf7, 0x98, 0xfb, 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, + 0x23, 0x60, 0x38, 0xbd, 0xd8, 0xa5, 0x02, 0x24, 0x0b, 0x78, 0x72, 0x2b, + 0x30, 0xb5, 0x22, 0xd0, 0x77, 0x2b, 0x24, 0xd0, 0x61, 0x2b, 0x27, 0xd0, + 0x16, 0x23, 0x03, 0x60, 0x00, 0x20, 0x30, 0xbd, 0x62, 0x2d, 0x12, 0xd0, + 0x78, 0x2d, 0x13, 0xd0, 0x2b, 0x2d, 0x07, 0xd1, 0x20, 0xf0, 0x1c, 0x00, + 0x23, 0xf0, 0x03, 0x03, 0x40, 0xf0, 0x10, 0x00, 0x43, 0xf0, 0x02, 0x03, + 0x11, 0xf8, 0x01, 0x5f, 0x00, 0x2d, 0xed, 0xd1, 0x23, 0x43, 0x13, 0x60, + 0xe9, 0xe7, 0x43, 0xf4, 0x80, 0x33, 0xf5, 0xe7, 0x43, 0xf4, 0x00, 0x63, + 0xf2, 0xe7, 0x00, 0x24, 0x23, 0x46, 0x04, 0x20, 0xee, 0xe7, 0x4f, 0xf4, + 0xc0, 0x64, 0x01, 0x23, 0x08, 0x20, 0xe9, 0xe7, 0x4f, 0xf4, 0x02, 0x74, + 0x01, 0x23, 0x4f, 0xf4, 0x84, 0x70, 0xe3, 0xe7, 0x38, 0xb5, 0x07, 0x4d, + 0x00, 0x23, 0x04, 0x46, 0x08, 0x46, 0x11, 0x46, 0x2b, 0x60, 0xf3, 0xf7, + 0x3b, 0xfa, 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, + 0x38, 0xbd, 0x00, 0xbf, 0xd8, 0xa5, 0x02, 0x24, 0x2d, 0xe9, 0xf8, 0x4f, + 0x07, 0x46, 0x89, 0x46, 0x16, 0x46, 0xf2, 0xf7, 0xd7, 0xfb, 0x18, 0x4b, + 0x1c, 0x68, 0x9a, 0x46, 0x34, 0xb1, 0x4b, 0x46, 0x98, 0x46, 0x13, 0xf8, + 0x01, 0x1b, 0x39, 0xb1, 0x3d, 0x29, 0xf9, 0xd1, 0x38, 0x46, 0xf2, 0xf7, + 0xc3, 0xfb, 0x00, 0x20, 0xbd, 0xe8, 0xf8, 0x8f, 0xa8, 0xeb, 0x09, 0x08, + 0xa3, 0x46, 0x54, 0xf8, 0x04, 0x0b, 0x00, 0x28, 0xf2, 0xd0, 0x42, 0x46, + 0x49, 0x46, 0x00, 0xf0, 0x55, 0xf9, 0x00, 0x28, 0xf4, 0xd1, 0x54, 0xf8, + 0x04, 0x3c, 0x03, 0xeb, 0x08, 0x05, 0x13, 0xf8, 0x08, 0x30, 0x3d, 0x2b, + 0xec, 0xd1, 0xda, 0xf8, 0x00, 0x30, 0xab, 0xeb, 0x03, 0x03, 0x9b, 0x10, + 0x38, 0x46, 0x33, 0x60, 0xf2, 0xf7, 0xa2, 0xfb, 0x68, 0x1c, 0xdd, 0xe7, + 0xd8, 0x03, 0x00, 0x24, 0x07, 0xb5, 0x01, 0xaa, 0xff, 0xf7, 0xc2, 0xff, + 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x00, 0x00, 0x00, 0x48, 0x70, 0x47, + 0x80, 0x03, 0x00, 0x24, 0x2d, 0xe9, 0xf0, 0x41, 0xd0, 0xe9, 0x00, 0x67, + 0x0c, 0x46, 0x51, 0x4a, 0x00, 0x23, 0x30, 0x46, 0x39, 0x46, 0x01, 0xf0, + 0x53, 0xf8, 0x39, 0x46, 0x05, 0x46, 0x4d, 0x4a, 0x30, 0x46, 0x00, 0x23, + 0x01, 0xf0, 0x4c, 0xf8, 0x00, 0x2a, 0xbc, 0xbf, 0x02, 0xf5, 0xa8, 0x32, + 0x02, 0xf5, 0xc0, 0x72, 0x4f, 0xf4, 0x61, 0x61, 0x05, 0xf5, 0x2f, 0x20, + 0xb2, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, 0x13, 0x22, 0x4f, 0xf0, 0x3c, 0x01, + 0xac, 0xbf, 0x00, 0xf6, 0x6c, 0x20, 0x00, 0xf6, 0x6b, 0x20, 0xa3, 0x60, + 0xb2, 0xfb, 0xf1, 0xf3, 0x01, 0xfb, 0x13, 0x22, 0x63, 0x60, 0x22, 0x60, + 0xc3, 0x1c, 0x07, 0x22, 0x93, 0xfb, 0xf2, 0xf2, 0xc2, 0xeb, 0xc2, 0x02, + 0x9b, 0x1a, 0x48, 0xbf, 0x07, 0x33, 0x00, 0x28, 0xa3, 0x61, 0xb8, 0xbf, + 0xa0, 0xf5, 0x0e, 0x33, 0x36, 0x49, 0xae, 0xbf, 0x90, 0xfb, 0xf1, 0xf1, + 0xa3, 0xf5, 0x2c, 0x73, 0x93, 0xfb, 0xf1, 0xf1, 0x33, 0x4b, 0x03, 0xfb, + 0x01, 0x00, 0x48, 0xf6, 0xac, 0x62, 0xb0, 0xfb, 0xf2, 0xf2, 0x02, 0x44, + 0x40, 0xf2, 0xb4, 0x5c, 0xb0, 0xfb, 0xfc, 0xf3, 0xd2, 0x1a, 0x40, 0xf2, + 0x6d, 0x17, 0x2d, 0x4b, 0xb0, 0xfb, 0xf3, 0xf3, 0x64, 0x26, 0xd3, 0x1a, + 0xb3, 0xfb, 0xf7, 0xf5, 0xb3, 0xfb, 0xfc, 0xf3, 0xb5, 0xfb, 0xf6, 0xf2, + 0xd3, 0x1a, 0x03, 0x44, 0x07, 0xfb, 0x15, 0x33, 0x99, 0x20, 0x03, 0xeb, + 0x83, 0x0c, 0x0c, 0xf1, 0x02, 0x0c, 0x03, 0xf1, 0x01, 0x0e, 0xbc, 0xfb, + 0xf0, 0xf7, 0x78, 0x43, 0x02, 0x30, 0x4f, 0xf0, 0x05, 0x08, 0xb0, 0xfb, + 0xf8, 0xf0, 0xae, 0xeb, 0x00, 0x00, 0x40, 0xf2, 0xf9, 0x5e, 0xf4, 0x45, + 0x94, 0xbf, 0x4f, 0xf0, 0x02, 0x0c, 0x6f, 0xf0, 0x09, 0x0c, 0x67, 0x44, + 0x4f, 0xf4, 0xc8, 0x7c, 0x0c, 0xfb, 0x01, 0x51, 0x01, 0x2f, 0x98, 0xbf, + 0x01, 0x31, 0xb3, 0xf5, 0x99, 0x7f, 0x0c, 0xd3, 0xa3, 0xf5, 0x99, 0x73, + 0xe3, 0x61, 0xa1, 0xf2, 0x6c, 0x71, 0x00, 0x23, 0xe0, 0x60, 0xc4, 0xe9, + 0x04, 0x71, 0x23, 0x62, 0x20, 0x46, 0xbd, 0xe8, 0xf0, 0x81, 0x15, 0xf0, + 0x03, 0x0f, 0x02, 0xd1, 0x06, 0xfb, 0x12, 0x52, 0x5a, 0xb9, 0x4f, 0xf4, + 0xc8, 0x76, 0xb5, 0xfb, 0xf6, 0xf2, 0x06, 0xfb, 0x12, 0x52, 0xb2, 0xfa, + 0x82, 0xf2, 0x52, 0x09, 0x3b, 0x33, 0x13, 0x44, 0xe2, 0xe7, 0x01, 0x22, + 0xfa, 0xe7, 0x00, 0xbf, 0x80, 0x51, 0x01, 0x00, 0xb1, 0x3a, 0x02, 0x00, + 0x4f, 0xc5, 0xfd, 0xff, 0xb0, 0x3a, 0x02, 0x00, 0x38, 0xb5, 0x06, 0x4d, + 0x00, 0x23, 0x04, 0x46, 0x08, 0x46, 0x2b, 0x60, 0xf3, 0xf7, 0x83, 0xf9, + 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, 0x38, 0xbd, + 0xd8, 0xa5, 0x02, 0x24, 0x38, 0xb5, 0x07, 0x4d, 0x04, 0x46, 0x08, 0x46, + 0x11, 0x46, 0x00, 0x22, 0x2a, 0x60, 0x1a, 0x46, 0xf3, 0xf7, 0x40, 0xf9, 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, 0x23, 0x60, 0x38, 0xbd, - 0x78, 0xa8, 0x00, 0x24, 0x0e, 0xb4, 0x10, 0xb5, 0x9f, 0xb0, 0x21, 0xac, - 0x4f, 0xf4, 0x01, 0x71, 0x54, 0xf8, 0x04, 0x2b, 0x01, 0x92, 0xad, 0xf8, - 0x1c, 0x10, 0x04, 0x90, 0x08, 0x90, 0x00, 0xf0, 0x2f, 0xf8, 0x0c, 0x4b, - 0x05, 0x90, 0x09, 0x90, 0x0d, 0x93, 0x0b, 0x48, 0x01, 0x9a, 0x00, 0x68, - 0x03, 0x94, 0x00, 0x23, 0x11, 0x93, 0x16, 0x93, 0x4f, 0xf6, 0xff, 0x73, - 0xad, 0xf8, 0x1e, 0x30, 0x04, 0xa9, 0x23, 0x46, 0x00, 0xf0, 0x18, 0xf9, - 0x1f, 0xb0, 0xbd, 0xe8, 0x10, 0x40, 0x03, 0xb0, 0x70, 0x47, 0x00, 0xbf, - 0x4b, 0xb7, 0x01, 0x08, 0x10, 0x03, 0x00, 0x24, 0x10, 0xf8, 0x01, 0x2b, - 0x11, 0xf8, 0x01, 0x3b, 0x01, 0x2a, 0x28, 0xbf, 0x9a, 0x42, 0xf7, 0xd0, - 0xd0, 0x1a, 0x70, 0x47, 0x03, 0x46, 0x11, 0xf8, 0x01, 0x2b, 0x03, 0xf8, - 0x01, 0x2b, 0x00, 0x2a, 0xf9, 0xd1, 0x70, 0x47, 0x03, 0x46, 0x13, 0xf8, - 0x01, 0x2b, 0x00, 0x2a, 0xfb, 0xd1, 0x18, 0x1a, 0x01, 0x38, 0x70, 0x47, - 0x10, 0xb5, 0x6a, 0xb1, 0x01, 0x39, 0x84, 0x18, 0x10, 0xf8, 0x01, 0x3b, - 0x11, 0xf8, 0x01, 0x2f, 0x93, 0x42, 0x03, 0xd1, 0xa0, 0x42, 0x01, 0xd0, - 0x00, 0x2b, 0xf5, 0xd1, 0x98, 0x1a, 0x10, 0xbd, 0x10, 0x46, 0xfc, 0xe7, - 0x2d, 0xe9, 0xf0, 0x43, 0x3b, 0x4e, 0x86, 0x46, 0x8c, 0x46, 0x60, 0x46, - 0x1c, 0xf8, 0x01, 0x4b, 0xa5, 0x5d, 0x15, 0xf0, 0x08, 0x05, 0xf8, 0xd1, - 0x2d, 0x2c, 0x34, 0xd1, 0x9c, 0xf8, 0x00, 0x40, 0x4f, 0xf0, 0x01, 0x08, - 0x00, 0xf1, 0x02, 0x0c, 0x00, 0x2b, 0x5e, 0xd0, 0x10, 0x2b, 0x0c, 0xd1, - 0x30, 0x2c, 0x0a, 0xd1, 0x9c, 0xf8, 0x00, 0x00, 0x00, 0xf0, 0xdf, 0x00, - 0x58, 0x28, 0x4f, 0xd1, 0x9c, 0xf8, 0x01, 0x40, 0x10, 0x23, 0x0c, 0xf1, - 0x02, 0x0c, 0x4f, 0xf0, 0xff, 0x37, 0x00, 0x25, 0xb7, 0xfb, 0xf3, 0xf7, - 0x03, 0xfb, 0x07, 0xf9, 0x6f, 0xea, 0x09, 0x09, 0x28, 0x46, 0xa4, 0xf1, - 0x30, 0x06, 0x09, 0x2e, 0x18, 0xd8, 0x34, 0x46, 0xa3, 0x42, 0x24, 0xdd, - 0x00, 0x2d, 0x1f, 0xdb, 0x87, 0x42, 0x1d, 0xd3, 0x01, 0xd1, 0xa1, 0x45, - 0x1a, 0xdb, 0x00, 0xfb, 0x03, 0x40, 0x01, 0x25, 0x1c, 0xf8, 0x01, 0x4b, - 0xeb, 0xe7, 0x2b, 0x2c, 0x08, 0xbf, 0x9c, 0xf8, 0x00, 0x40, 0xa8, 0x46, - 0x08, 0xbf, 0x00, 0xf1, 0x02, 0x0c, 0xc7, 0xe7, 0xa4, 0xf1, 0x41, 0x06, - 0x19, 0x2e, 0x01, 0xd8, 0x37, 0x3c, 0xe1, 0xe7, 0xa4, 0xf1, 0x61, 0x06, - 0x19, 0x2e, 0x04, 0xd8, 0x57, 0x3c, 0xdb, 0xe7, 0x4f, 0xf0, 0xff, 0x35, - 0xe4, 0xe7, 0x00, 0x2d, 0x07, 0xda, 0x22, 0x23, 0xce, 0xf8, 0x00, 0x30, - 0x4f, 0xf0, 0xff, 0x30, 0x42, 0xb9, 0xbd, 0xe8, 0xf0, 0x83, 0xb8, 0xf1, - 0x00, 0x0f, 0x00, 0xd0, 0x40, 0x42, 0x00, 0x2a, 0xf7, 0xd0, 0x0d, 0xb1, - 0x0c, 0xf1, 0xff, 0x31, 0x11, 0x60, 0xf2, 0xe7, 0x30, 0x24, 0x00, 0x2b, - 0xb1, 0xd1, 0x08, 0x23, 0xaf, 0xe7, 0x30, 0x2c, 0xa2, 0xd0, 0x0a, 0x23, - 0xab, 0xe7, 0x00, 0xbf, 0x15, 0xd3, 0x01, 0x08, 0xff, 0xf7, 0x82, 0xbf, - 0x13, 0x46, 0x0a, 0x46, 0x01, 0x46, 0x02, 0x48, 0x00, 0x68, 0xff, 0xf7, - 0x7b, 0xbf, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, 0x38, 0xb5, 0x4b, 0x1c, - 0x14, 0x46, 0x03, 0xd1, 0x4f, 0xf0, 0xff, 0x35, 0x28, 0x46, 0x38, 0xbd, - 0x93, 0x89, 0x23, 0xf0, 0x20, 0x03, 0x93, 0x81, 0x63, 0x6b, 0x52, 0x68, - 0xcd, 0xb2, 0x8b, 0xb1, 0xa3, 0x6b, 0x93, 0x42, 0x08, 0xdd, 0x23, 0x68, - 0x5a, 0x1e, 0x22, 0x60, 0x03, 0xf8, 0x01, 0x5c, 0x63, 0x68, 0x01, 0x33, - 0x63, 0x60, 0xe9, 0xe7, 0x21, 0x46, 0x00, 0xf0, 0xb5, 0xfb, 0x00, 0x28, - 0xf1, 0xd0, 0xe1, 0xe7, 0x21, 0x69, 0x23, 0x68, 0x51, 0xb1, 0x99, 0x42, - 0x08, 0xd2, 0x13, 0xf8, 0x01, 0x1c, 0xa9, 0x42, 0x04, 0xd1, 0x01, 0x3b, - 0x01, 0x32, 0x23, 0x60, 0x62, 0x60, 0xd5, 0xe7, 0xc4, 0xe9, 0x0f, 0x32, - 0x04, 0xf1, 0x44, 0x03, 0x63, 0x63, 0x03, 0x23, 0xa3, 0x63, 0x23, 0x46, - 0x03, 0xf8, 0x46, 0x5f, 0x23, 0x60, 0x01, 0x23, 0xdc, 0xe7, 0x10, 0xb5, - 0x0c, 0x46, 0x49, 0x6b, 0x69, 0xb1, 0x04, 0xf1, 0x44, 0x03, 0x99, 0x42, - 0x01, 0xd0, 0xf3, 0xf7, 0x6f, 0xfa, 0x23, 0x6c, 0x63, 0x60, 0x00, 0x20, - 0x60, 0x63, 0x13, 0xb1, 0xe3, 0x6b, 0x23, 0x60, 0x10, 0xbd, 0x23, 0x69, - 0x23, 0x60, 0x00, 0x23, 0x63, 0x60, 0xa3, 0x89, 0x43, 0xf0, 0x20, 0x03, - 0xa3, 0x81, 0x4f, 0xf0, 0xff, 0x30, 0xf3, 0xe7, 0x2d, 0xe9, 0xf0, 0x4f, - 0x0c, 0x46, 0xad, 0xf5, 0x23, 0x7d, 0x00, 0x21, 0xcd, 0xe9, 0x44, 0x11, - 0xb2, 0x49, 0xa0, 0x91, 0x0d, 0xf1, 0x04, 0x08, 0xb1, 0x49, 0xb2, 0x4f, - 0xdf, 0xf8, 0xc8, 0x92, 0xcd, 0xf8, 0x18, 0x81, 0x06, 0x46, 0xa1, 0x91, - 0x00, 0x93, 0x92, 0xf8, 0x00, 0xa0, 0xba, 0xf1, 0x00, 0x0f, 0x00, 0xf0, - 0x51, 0x81, 0x1a, 0xf8, 0x07, 0x30, 0x13, 0xf0, 0x08, 0x03, 0x02, 0xf1, - 0x01, 0x05, 0x19, 0xd0, 0x63, 0x68, 0x00, 0x2b, 0x0f, 0xdd, 0x23, 0x68, - 0x1a, 0x78, 0xba, 0x5c, 0x12, 0x07, 0x01, 0xd4, 0x2a, 0x46, 0xe8, 0xe7, - 0x45, 0x9a, 0x01, 0x32, 0x45, 0x92, 0x62, 0x68, 0x01, 0x33, 0x01, 0x3a, - 0x62, 0x60, 0x23, 0x60, 0xec, 0xe7, 0xa1, 0x9b, 0x21, 0x46, 0x30, 0x46, - 0x98, 0x47, 0x00, 0x28, 0xe9, 0xd0, 0xed, 0xe7, 0xba, 0xf1, 0x25, 0x0f, - 0x40, 0xf0, 0x83, 0x80, 0x41, 0x93, 0x43, 0x93, 0x53, 0x78, 0x2a, 0x2b, - 0x02, 0xbf, 0x10, 0x23, 0x95, 0x1c, 0x41, 0x93, 0x0a, 0x22, 0xab, 0x46, - 0x1b, 0xf8, 0x01, 0x1b, 0xa1, 0xf1, 0x30, 0x03, 0x09, 0x2b, 0x1d, 0xd9, - 0x91, 0x48, 0x03, 0x22, 0xff, 0xf7, 0x5e, 0xf8, 0x40, 0xb1, 0x01, 0x23, - 0xa0, 0xeb, 0x09, 0x00, 0x03, 0xfa, 0x00, 0xf0, 0x41, 0x9b, 0x18, 0x43, - 0x41, 0x90, 0x5d, 0x46, 0x15, 0xf8, 0x01, 0x3b, 0x78, 0x2b, 0x06, 0xd8, - 0x57, 0x2b, 0x10, 0xd8, 0x25, 0x2b, 0x5c, 0xd0, 0x56, 0xd8, 0x00, 0x2b, - 0x74, 0xd0, 0x03, 0x23, 0x47, 0x93, 0x0a, 0x23, 0x42, 0x93, 0x81, 0xe0, - 0x43, 0x9b, 0x02, 0xfb, 0x03, 0x13, 0x30, 0x3b, 0x43, 0x93, 0x5d, 0x46, - 0xd3, 0xe7, 0xa3, 0xf1, 0x58, 0x02, 0x20, 0x2a, 0xef, 0xd8, 0x01, 0xa1, - 0x51, 0xf8, 0x22, 0xf0, 0x97, 0xc3, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, - 0x9f, 0xc2, 0x01, 0x08, 0xf5, 0xc3, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, - 0x9f, 0xc2, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, - 0x9f, 0xc2, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, - 0x0b, 0xc4, 0x01, 0x08, 0xe1, 0xc3, 0x01, 0x08, 0x4f, 0xc3, 0x01, 0x08, - 0x4f, 0xc3, 0x01, 0x08, 0x4f, 0xc3, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, - 0xe5, 0xc3, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, - 0x9f, 0xc2, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, 0x1b, 0xc4, 0x01, 0x08, - 0xed, 0xc3, 0x01, 0x08, 0x8f, 0xc3, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, - 0x9f, 0xc2, 0x01, 0x08, 0x17, 0xc4, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, - 0xe1, 0xc3, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, 0x9f, 0xc2, 0x01, 0x08, - 0x97, 0xc3, 0x01, 0x08, 0x45, 0x3b, 0x02, 0x2b, 0xa7, 0xd8, 0x05, 0x23, - 0x2b, 0xe0, 0x63, 0x68, 0x00, 0x2b, 0x0d, 0xdd, 0x23, 0x68, 0x1a, 0x78, - 0x52, 0x45, 0x40, 0xf0, 0xa1, 0x80, 0x01, 0x33, 0x62, 0x68, 0x23, 0x60, - 0x45, 0x9b, 0x01, 0x3a, 0x01, 0x33, 0x62, 0x60, 0x45, 0x93, 0x55, 0xe7, - 0xa1, 0x9b, 0x21, 0x46, 0x30, 0x46, 0x98, 0x47, 0x00, 0x28, 0xeb, 0xd0, - 0x44, 0x98, 0x00, 0x28, 0x40, 0xf0, 0x84, 0x80, 0x4f, 0xf0, 0xff, 0x30, - 0x86, 0xe0, 0x41, 0x9a, 0x42, 0xf0, 0x20, 0x02, 0x41, 0x92, 0x41, 0x9a, - 0x42, 0xf4, 0x00, 0x72, 0x41, 0x92, 0x10, 0x22, 0x6f, 0x2b, 0x42, 0x92, - 0x34, 0xbf, 0x03, 0x23, 0x04, 0x23, 0x47, 0x93, 0x63, 0x68, 0x00, 0x2b, - 0x41, 0xdd, 0x41, 0x9b, 0x59, 0x06, 0x04, 0xd4, 0x23, 0x68, 0x1a, 0x78, - 0xba, 0x5c, 0x12, 0x07, 0x40, 0xd4, 0x47, 0x9b, 0x02, 0x2b, 0x4f, 0xdc, - 0x6b, 0x46, 0x22, 0x46, 0x41, 0xa9, 0x30, 0x46, 0x00, 0xf0, 0x74, 0xf8, - 0x01, 0x28, 0x65, 0xd0, 0x02, 0x28, 0x7f, 0xf4, 0x21, 0xaf, 0xcf, 0xe7, - 0x0a, 0x22, 0xdd, 0xe7, 0x00, 0x23, 0x42, 0x93, 0x03, 0x23, 0xde, 0xe7, - 0x08, 0x23, 0x42, 0x93, 0x04, 0x23, 0xda, 0xe7, 0x29, 0x46, 0x40, 0x46, - 0x00, 0xf0, 0xac, 0xf9, 0x41, 0x9b, 0x43, 0xf0, 0x40, 0x03, 0x41, 0x93, - 0x05, 0x46, 0x01, 0x23, 0xcf, 0xe7, 0x41, 0x9b, 0x43, 0xf0, 0x40, 0x03, - 0x41, 0x93, 0x00, 0x23, 0xc9, 0xe7, 0x02, 0x23, 0xc7, 0xe7, 0x41, 0x98, - 0xc3, 0x06, 0x3f, 0xf5, 0xff, 0xae, 0x00, 0x9b, 0x45, 0x9a, 0x19, 0x1d, - 0x00, 0x91, 0x1b, 0x68, 0xc0, 0x07, 0x4c, 0xbf, 0x1a, 0x80, 0x1a, 0x60, - 0xf4, 0xe6, 0xa1, 0x9b, 0x21, 0x46, 0x30, 0x46, 0x98, 0x47, 0x00, 0x28, - 0xb7, 0xd0, 0x9d, 0xe7, 0x45, 0x9a, 0x01, 0x32, 0x45, 0x92, 0x62, 0x68, - 0x01, 0x3a, 0x00, 0x2a, 0x62, 0x60, 0x02, 0xdd, 0x01, 0x33, 0x23, 0x60, - 0xae, 0xe7, 0xa1, 0x9b, 0x21, 0x46, 0x30, 0x46, 0x98, 0x47, 0x00, 0x28, - 0xa8, 0xd0, 0x8b, 0xe7, 0x04, 0x2b, 0x06, 0xdc, 0x6b, 0x46, 0x22, 0x46, - 0x41, 0xa9, 0x30, 0x46, 0x00, 0xf0, 0x7a, 0xf8, 0xac, 0xe7, 0x0f, 0x4b, - 0x00, 0x2b, 0x3f, 0xf4, 0xcf, 0xae, 0x6b, 0x46, 0x22, 0x46, 0x41, 0xa9, - 0x30, 0x46, 0xaf, 0xf3, 0x00, 0x80, 0xa1, 0xe7, 0xa3, 0x89, 0x13, 0xf0, - 0x40, 0x0f, 0x18, 0xbf, 0x4f, 0xf0, 0xff, 0x30, 0x0d, 0xf5, 0x23, 0x7d, - 0xbd, 0xe8, 0xf0, 0x8f, 0x44, 0x98, 0xf9, 0xe7, 0x19, 0xc1, 0x01, 0x08, - 0x93, 0xc1, 0x01, 0x08, 0x15, 0xd3, 0x01, 0x08, 0x15, 0xd4, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x2d, 0xe9, 0xf8, 0x43, 0x15, 0x46, 0x8a, 0x68, - 0x80, 0x46, 0x0c, 0x46, 0x32, 0xb9, 0x8a, 0x69, 0x00, 0x2a, 0x0c, 0xbf, - 0x01, 0x22, 0x4f, 0xf0, 0xff, 0x32, 0x8a, 0x60, 0x22, 0x68, 0xdf, 0xf8, - 0x8c, 0x90, 0xd1, 0x06, 0x5f, 0xbf, 0x1a, 0x68, 0x11, 0x1d, 0x19, 0x60, - 0x16, 0x68, 0x00, 0x27, 0xa0, 0x69, 0x88, 0xb1, 0x01, 0x28, 0x07, 0xd1, - 0x2b, 0x68, 0x1a, 0x78, 0x63, 0x69, 0x9b, 0x5c, 0x53, 0xb9, 0x27, 0xbb, - 0xbd, 0xe8, 0xf8, 0x83, 0x02, 0x28, 0x20, 0xd1, 0x2b, 0x68, 0x1b, 0x78, - 0x13, 0xf8, 0x09, 0x30, 0x1b, 0x07, 0x1a, 0xd4, 0x23, 0x68, 0xda, 0x06, - 0x5e, 0xbf, 0x2b, 0x68, 0x1b, 0x78, 0x06, 0xf8, 0x01, 0x3b, 0x2a, 0x68, - 0x6b, 0x68, 0x01, 0x32, 0x2a, 0x60, 0xa2, 0x68, 0x01, 0x3b, 0x01, 0x3a, - 0x6b, 0x60, 0x01, 0x37, 0xa2, 0x60, 0x42, 0xb1, 0x00, 0x2b, 0xd7, 0xdc, - 0xd4, 0xf8, 0x80, 0x31, 0x29, 0x46, 0x40, 0x46, 0x98, 0x47, 0x00, 0x28, - 0xd0, 0xd0, 0x23, 0x68, 0x13, 0xf0, 0x10, 0x03, 0x05, 0xd1, 0xe2, 0x68, - 0x01, 0x32, 0xe2, 0x60, 0xa2, 0x69, 0x02, 0xb1, 0x33, 0x70, 0x23, 0x69, - 0x1f, 0x44, 0x27, 0x61, 0x00, 0x20, 0xcb, 0xe7, 0x15, 0xd3, 0x01, 0x08, - 0x2d, 0xe9, 0xf0, 0x4f, 0x98, 0x46, 0x74, 0x4b, 0x0c, 0x46, 0x82, 0x46, - 0x16, 0x46, 0x93, 0xe8, 0x07, 0x00, 0x87, 0xb0, 0x03, 0xab, 0x83, 0xe8, - 0x07, 0x00, 0x70, 0x4b, 0xa1, 0x69, 0x70, 0x4a, 0x03, 0x29, 0x18, 0xbf, - 0x1a, 0x46, 0xa3, 0x68, 0x01, 0x92, 0x5a, 0x1e, 0xb2, 0xf5, 0xae, 0x7f, - 0x88, 0xbf, 0x6f, 0xf4, 0xae, 0x75, 0x27, 0x46, 0x82, 0xbf, 0x03, 0xeb, - 0x05, 0x09, 0x40, 0xf2, 0x5d, 0x13, 0xa3, 0x60, 0x57, 0xf8, 0x1c, 0x3b, - 0x43, 0xf4, 0x50, 0x63, 0x98, 0xbf, 0x4f, 0xf0, 0x00, 0x09, 0x23, 0x60, - 0x3d, 0x46, 0x4f, 0xf0, 0x00, 0x0b, 0x31, 0x68, 0x03, 0xab, 0x09, 0x78, - 0x53, 0xf8, 0x2b, 0x00, 0x02, 0x22, 0xfe, 0xf7, 0xad, 0xfe, 0x28, 0xb3, - 0xbb, 0xf1, 0x01, 0x0f, 0x59, 0xd1, 0x62, 0x68, 0x2a, 0xb9, 0x22, 0x68, - 0x08, 0x23, 0x42, 0xf4, 0x00, 0x72, 0x63, 0x60, 0x22, 0x60, 0x22, 0x68, - 0x22, 0xf4, 0xa0, 0x62, 0x22, 0x60, 0xa2, 0x68, 0x51, 0x1e, 0xa1, 0x60, - 0x92, 0xb1, 0x32, 0x68, 0x51, 0x1c, 0x31, 0x60, 0x12, 0x78, 0x05, 0xf8, - 0x01, 0x2b, 0x72, 0x68, 0x01, 0x3a, 0x00, 0x2a, 0x72, 0x60, 0x07, 0xdc, - 0xd4, 0xf8, 0x80, 0x21, 0x31, 0x46, 0x50, 0x46, 0x90, 0x47, 0x00, 0x28, - 0x40, 0xf0, 0x85, 0x80, 0x0b, 0xf1, 0x01, 0x0b, 0xbb, 0xf1, 0x03, 0x0f, - 0xcb, 0xd1, 0x63, 0x68, 0x0b, 0xb9, 0x0a, 0x23, 0x63, 0x60, 0x63, 0x68, - 0x45, 0x49, 0x60, 0x69, 0xc9, 0x1a, 0x00, 0xf0, 0x89, 0xf8, 0x4f, 0xf0, - 0x00, 0x0b, 0xa3, 0x68, 0x22, 0x68, 0x00, 0x2b, 0x3d, 0xd0, 0x31, 0x68, - 0x60, 0x69, 0x91, 0xf8, 0x00, 0xc0, 0x10, 0xf8, 0x0c, 0x00, 0x00, 0x28, - 0x35, 0xd0, 0xbc, 0xf1, 0x30, 0x0f, 0x24, 0xd1, 0x10, 0x05, 0x22, 0xd5, - 0x0b, 0xf1, 0x01, 0x0b, 0xb9, 0xf1, 0x00, 0x0f, 0x03, 0xd0, 0x01, 0x33, - 0x09, 0xf1, 0xff, 0x39, 0xa3, 0x60, 0x73, 0x68, 0x01, 0x3b, 0x00, 0x2b, - 0x73, 0x60, 0x1b, 0xdd, 0x33, 0x68, 0x01, 0x33, 0x33, 0x60, 0xa3, 0x68, - 0x01, 0x3b, 0xa3, 0x60, 0xd9, 0xe7, 0xbb, 0xf1, 0x02, 0x0f, 0xae, 0xd1, - 0x22, 0x68, 0x02, 0xf4, 0xc0, 0x61, 0xb1, 0xf5, 0x00, 0x7f, 0xbf, 0xd1, - 0x10, 0x23, 0x63, 0x60, 0x42, 0xf4, 0x80, 0x72, 0xa2, 0xe7, 0x22, 0xf4, - 0x10, 0x62, 0x22, 0x60, 0x0b, 0x78, 0x05, 0xf8, 0x01, 0x3b, 0xde, 0xe7, - 0xd4, 0xf8, 0x80, 0x31, 0x31, 0x46, 0x50, 0x46, 0x98, 0x47, 0x00, 0x28, - 0xdf, 0xd0, 0x23, 0x68, 0xd9, 0x05, 0x0d, 0xd5, 0xbd, 0x42, 0x09, 0xd9, - 0x15, 0xf8, 0x01, 0x1c, 0xd4, 0xf8, 0x7c, 0x31, 0x32, 0x46, 0x50, 0x46, - 0x98, 0x47, 0x05, 0xf1, 0xff, 0x39, 0x4d, 0x46, 0xbd, 0x42, 0x28, 0xd0, - 0x22, 0x68, 0x12, 0xf0, 0x10, 0x02, 0x13, 0xd1, 0x2a, 0x70, 0x63, 0x68, - 0x01, 0x9e, 0x39, 0x46, 0x50, 0x46, 0xb0, 0x47, 0xd8, 0xf8, 0x00, 0x30, - 0x21, 0x68, 0x1a, 0x1d, 0xc8, 0xf8, 0x00, 0x20, 0x11, 0xf0, 0x20, 0x0f, - 0x1b, 0x68, 0x0f, 0xd0, 0x18, 0x60, 0xe3, 0x68, 0x01, 0x33, 0xe3, 0x60, - 0xed, 0x1b, 0xab, 0x44, 0x25, 0x69, 0x5d, 0x44, 0x25, 0x61, 0x00, 0x20, - 0x07, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x4f, 0xf0, 0x00, 0x0b, 0xca, 0xe7, - 0xca, 0x07, 0x4c, 0xbf, 0x18, 0x80, 0x18, 0x60, 0xeb, 0xe7, 0x01, 0x20, - 0xf2, 0xe7, 0x00, 0xbf, 0x34, 0xd4, 0x01, 0x08, 0x01, 0xc1, 0x01, 0x08, - 0xbd, 0xc8, 0x01, 0x08, 0x32, 0xd4, 0x01, 0x08, 0x70, 0xb5, 0x0b, 0x78, - 0x04, 0x46, 0x5e, 0x2b, 0x0b, 0xbf, 0x4b, 0x78, 0x48, 0x1c, 0x88, 0x1c, - 0x00, 0x22, 0x08, 0xbf, 0x01, 0x22, 0x61, 0x1e, 0x04, 0xf1, 0xff, 0x05, - 0x01, 0xf8, 0x01, 0x2f, 0xa9, 0x42, 0xfb, 0xd1, 0x0b, 0xb9, 0x01, 0x38, - 0x70, 0xbd, 0x82, 0xf0, 0x01, 0x01, 0xe1, 0x54, 0x42, 0x1c, 0x12, 0xf8, - 0x01, 0x5c, 0x2d, 0x2d, 0x02, 0xf1, 0xff, 0x36, 0x10, 0x46, 0x06, 0xd0, - 0x5d, 0x2d, 0xf1, 0xd0, 0x0d, 0xb9, 0x30, 0x46, 0xee, 0xe7, 0x2b, 0x46, - 0xef, 0xe7, 0x16, 0x78, 0x5d, 0x2e, 0xfa, 0xd0, 0xb3, 0x42, 0xf8, 0xdc, - 0x18, 0x46, 0x01, 0x30, 0x86, 0x42, 0x21, 0x54, 0xfb, 0xdc, 0xd8, 0x43, - 0x30, 0x44, 0x5d, 0x1c, 0xb3, 0x42, 0xa8, 0xbf, 0x00, 0x20, 0x2b, 0x18, - 0x02, 0x32, 0xde, 0xe7, 0x2d, 0xe9, 0xf0, 0x47, 0x3a, 0x4e, 0x86, 0x46, + 0xd8, 0xa5, 0x02, 0x24, 0x51, 0xf8, 0x04, 0x3c, 0x18, 0x1f, 0x00, 0x2b, + 0xbc, 0xbf, 0x0b, 0x58, 0xc0, 0x18, 0x70, 0x47, 0x38, 0xb5, 0x07, 0x4d, + 0x04, 0x46, 0x08, 0x46, 0x11, 0x46, 0x00, 0x22, 0x2a, 0x60, 0x1a, 0x46, + 0xf3, 0xf7, 0x74, 0xf9, 0x43, 0x1c, 0x02, 0xd1, 0x2b, 0x68, 0x03, 0xb1, + 0x23, 0x60, 0x38, 0xbd, 0xd8, 0xa5, 0x02, 0x24, 0x0e, 0xb4, 0x10, 0xb5, + 0x9f, 0xb0, 0x21, 0xac, 0x4f, 0xf4, 0x01, 0x71, 0x54, 0xf8, 0x04, 0x2b, + 0x01, 0x92, 0xad, 0xf8, 0x1c, 0x10, 0x04, 0x90, 0x08, 0x90, 0x00, 0xf0, + 0x2f, 0xf8, 0x0c, 0x4b, 0x05, 0x90, 0x09, 0x90, 0x0d, 0x93, 0x0b, 0x48, + 0x01, 0x9a, 0x00, 0x68, 0x03, 0x94, 0x00, 0x23, 0x11, 0x93, 0x16, 0x93, + 0x4f, 0xf6, 0xff, 0x73, 0xad, 0xf8, 0x1e, 0x30, 0x04, 0xa9, 0x23, 0x46, + 0x00, 0xf0, 0x18, 0xf9, 0x1f, 0xb0, 0xbd, 0xe8, 0x10, 0x40, 0x03, 0xb0, + 0x70, 0x47, 0x00, 0xbf, 0xeb, 0xb7, 0x01, 0x08, 0x10, 0x03, 0x00, 0x24, + 0x10, 0xf8, 0x01, 0x2b, 0x11, 0xf8, 0x01, 0x3b, 0x01, 0x2a, 0x28, 0xbf, + 0x9a, 0x42, 0xf7, 0xd0, 0xd0, 0x1a, 0x70, 0x47, 0x03, 0x46, 0x11, 0xf8, + 0x01, 0x2b, 0x03, 0xf8, 0x01, 0x2b, 0x00, 0x2a, 0xf9, 0xd1, 0x70, 0x47, + 0x03, 0x46, 0x13, 0xf8, 0x01, 0x2b, 0x00, 0x2a, 0xfb, 0xd1, 0x18, 0x1a, + 0x01, 0x38, 0x70, 0x47, 0x10, 0xb5, 0x6a, 0xb1, 0x01, 0x39, 0x84, 0x18, + 0x10, 0xf8, 0x01, 0x3b, 0x11, 0xf8, 0x01, 0x2f, 0x93, 0x42, 0x03, 0xd1, + 0xa0, 0x42, 0x01, 0xd0, 0x00, 0x2b, 0xf5, 0xd1, 0x98, 0x1a, 0x10, 0xbd, + 0x10, 0x46, 0xfc, 0xe7, 0x2d, 0xe9, 0xf0, 0x43, 0x3b, 0x4e, 0x86, 0x46, 0x8c, 0x46, 0x60, 0x46, 0x1c, 0xf8, 0x01, 0x4b, 0xa5, 0x5d, 0x15, 0xf0, - 0x08, 0x05, 0xf8, 0xd1, 0x2d, 0x2c, 0x33, 0xd1, 0x9c, 0xf8, 0x00, 0x40, - 0x4f, 0xf0, 0x01, 0x08, 0x00, 0xf1, 0x02, 0x0c, 0x00, 0x2b, 0x5c, 0xd0, + 0x08, 0x05, 0xf8, 0xd1, 0x2d, 0x2c, 0x34, 0xd1, 0x9c, 0xf8, 0x00, 0x40, + 0x4f, 0xf0, 0x01, 0x08, 0x00, 0xf1, 0x02, 0x0c, 0x00, 0x2b, 0x5e, 0xd0, 0x10, 0x2b, 0x0c, 0xd1, 0x30, 0x2c, 0x0a, 0xd1, 0x9c, 0xf8, 0x00, 0x00, - 0x00, 0xf0, 0xdf, 0x00, 0x58, 0x28, 0x4d, 0xd1, 0x9c, 0xf8, 0x01, 0x40, - 0x10, 0x23, 0x0c, 0xf1, 0x02, 0x0c, 0x08, 0xf1, 0x00, 0x47, 0x01, 0x3f, - 0x00, 0x26, 0xb7, 0xfb, 0xf3, 0xf9, 0x30, 0x46, 0x03, 0xfb, 0x19, 0x7a, - 0xa4, 0xf1, 0x30, 0x05, 0x09, 0x2d, 0x18, 0xd8, 0x2c, 0x46, 0xa3, 0x42, - 0x24, 0xdd, 0x75, 0x1c, 0x07, 0xd0, 0x81, 0x45, 0x1d, 0xd3, 0x01, 0xd1, - 0xa2, 0x45, 0x1a, 0xdb, 0x00, 0xfb, 0x03, 0x40, 0x01, 0x26, 0x1c, 0xf8, - 0x01, 0x4b, 0xeb, 0xe7, 0x2b, 0x2c, 0x08, 0xbf, 0x9c, 0xf8, 0x00, 0x40, - 0xa8, 0x46, 0x08, 0xbf, 0x00, 0xf1, 0x02, 0x0c, 0xc8, 0xe7, 0xa4, 0xf1, - 0x41, 0x05, 0x19, 0x2d, 0x01, 0xd8, 0x37, 0x3c, 0xe1, 0xe7, 0xa4, 0xf1, - 0x61, 0x05, 0x19, 0x2d, 0x04, 0xd8, 0x57, 0x3c, 0xdb, 0xe7, 0x4f, 0xf0, - 0xff, 0x36, 0xe4, 0xe7, 0x73, 0x1c, 0x06, 0xd1, 0x22, 0x23, 0xce, 0xf8, - 0x00, 0x30, 0x38, 0x46, 0x42, 0xb9, 0xbd, 0xe8, 0xf0, 0x87, 0xb8, 0xf1, - 0x00, 0x0f, 0x00, 0xd0, 0x40, 0x42, 0x00, 0x2a, 0xf7, 0xd0, 0x0e, 0xb1, - 0x0c, 0xf1, 0xff, 0x31, 0x11, 0x60, 0xf2, 0xe7, 0x30, 0x24, 0x00, 0x2b, - 0xb3, 0xd1, 0x08, 0x23, 0xb1, 0xe7, 0x30, 0x2c, 0xa4, 0xd0, 0x0a, 0x23, - 0xad, 0xe7, 0x00, 0xbf, 0x15, 0xd3, 0x01, 0x08, 0xff, 0xf7, 0x84, 0xbf, - 0x2d, 0xe9, 0xf0, 0x41, 0x0c, 0x46, 0x49, 0x6b, 0x04, 0xf1, 0x44, 0x03, - 0x99, 0x42, 0x1d, 0xd1, 0x4f, 0xf4, 0x80, 0x61, 0xf2, 0xf7, 0xda, 0xfe, - 0x18, 0xb9, 0x4f, 0xf0, 0xff, 0x30, 0xbd, 0xe8, 0xf0, 0x81, 0x4f, 0xf4, - 0x80, 0x63, 0xa3, 0x63, 0x94, 0xf8, 0x46, 0x30, 0x60, 0x63, 0x80, 0xf8, - 0xff, 0x33, 0x94, 0xf8, 0x45, 0x30, 0x80, 0xf8, 0xfe, 0x33, 0x94, 0xf8, - 0x44, 0x30, 0x80, 0xf8, 0xfd, 0x33, 0x00, 0xf2, 0xfd, 0x30, 0x20, 0x60, - 0x00, 0x20, 0xe8, 0xe7, 0xa6, 0x6b, 0x77, 0x00, 0x3a, 0x46, 0xf2, 0xf7, - 0xb9, 0xfe, 0x05, 0x46, 0x00, 0x28, 0xde, 0xd0, 0x00, 0xeb, 0x06, 0x08, - 0x01, 0x46, 0x32, 0x46, 0x40, 0x46, 0xfe, 0xf7, 0x53, 0xfd, 0xc4, 0xe9, - 0x0d, 0x57, 0xc4, 0xf8, 0x00, 0x80, 0xe9, 0xe7, 0x02, 0x4b, 0x0a, 0x46, - 0x01, 0x46, 0x18, 0x68, 0xf2, 0xf7, 0xa0, 0xbe, 0x10, 0x03, 0x00, 0x24, - 0x70, 0xb5, 0x0e, 0x46, 0x14, 0x46, 0x05, 0x46, 0x18, 0xb1, 0x83, 0x69, - 0x0b, 0xb9, 0xfe, 0xf7, 0x71, 0xf8, 0x14, 0x4b, 0x9c, 0x42, 0x1a, 0xd1, - 0x6c, 0x68, 0x63, 0x6e, 0xd8, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x99, 0x05, - 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, 0x67, 0xfc, 0x22, 0x46, 0x28, 0x46, - 0x31, 0x46, 0x00, 0xf0, 0xa1, 0xf8, 0x63, 0x6e, 0xda, 0x07, 0x05, 0x46, - 0x05, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, - 0x5a, 0xfc, 0x28, 0x46, 0x70, 0xbd, 0x06, 0x4b, 0x9c, 0x42, 0x01, 0xd1, - 0xac, 0x68, 0xe0, 0xe7, 0x04, 0x4b, 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, - 0xdb, 0xe7, 0x00, 0xbf, 0x34, 0xd2, 0x01, 0x08, 0x54, 0xd2, 0x01, 0x08, - 0x14, 0xd2, 0x01, 0x08, 0x02, 0x4b, 0x0a, 0x46, 0x01, 0x46, 0x18, 0x68, - 0xff, 0xf7, 0xc2, 0xbf, 0x10, 0x03, 0x00, 0x24, 0x2d, 0xe9, 0xf8, 0x43, - 0x08, 0x9c, 0x89, 0x46, 0x17, 0x46, 0x02, 0xfb, 0x03, 0xf8, 0x05, 0x46, - 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0xfe, 0xf7, 0x2d, 0xf8, 0x26, 0x4b, - 0x9c, 0x42, 0x23, 0xd1, 0x6c, 0x68, 0x63, 0x6e, 0xde, 0x07, 0x05, 0xd4, - 0xa3, 0x89, 0x98, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, 0x23, 0xfc, - 0xa3, 0x89, 0x19, 0x07, 0x20, 0xd5, 0x23, 0x69, 0xf3, 0xb1, 0x00, 0x26, - 0x46, 0x45, 0x29, 0xd0, 0xa0, 0x68, 0x19, 0xf8, 0x06, 0x10, 0x01, 0x38, - 0x00, 0x28, 0xa0, 0x60, 0x04, 0xda, 0xa3, 0x69, 0x98, 0x42, 0x19, 0xdb, - 0x0a, 0x29, 0x17, 0xd0, 0x23, 0x68, 0x5a, 0x1c, 0x22, 0x60, 0x19, 0x70, - 0x01, 0x36, 0xeb, 0xe7, 0x13, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, - 0xd7, 0xe7, 0x12, 0x4b, 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xd2, 0xe7, - 0x21, 0x46, 0x28, 0x46, 0x00, 0xf0, 0x8c, 0xf9, 0x00, 0x28, 0xda, 0xd0, - 0x00, 0x26, 0x05, 0xe0, 0x22, 0x46, 0x28, 0x46, 0x00, 0xf0, 0x32, 0xf9, - 0x01, 0x30, 0xe5, 0xd1, 0x63, 0x6e, 0xda, 0x07, 0x05, 0xd4, 0xa3, 0x89, - 0x9b, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, 0xea, 0xfb, 0xb6, 0xfb, - 0xf7, 0xf0, 0xbd, 0xe8, 0xf8, 0x83, 0x00, 0xbf, 0x34, 0xd2, 0x01, 0x08, - 0x54, 0xd2, 0x01, 0x08, 0x14, 0xd2, 0x01, 0x08, 0x07, 0xb5, 0x00, 0x93, - 0x13, 0x46, 0x0a, 0x46, 0x01, 0x46, 0x03, 0x48, 0x00, 0x68, 0xff, 0xf7, - 0x97, 0xff, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, 0x10, 0x03, 0x00, 0x24, - 0x30, 0xb5, 0x01, 0x39, 0x00, 0x24, 0xa2, 0x42, 0x01, 0xd1, 0x00, 0x20, - 0x05, 0xe0, 0x03, 0x5d, 0x01, 0x34, 0x0d, 0x5d, 0xab, 0x42, 0xf6, 0xd0, - 0x58, 0x1b, 0x30, 0xbd, 0x70, 0xb5, 0x0d, 0x46, 0x14, 0x46, 0x06, 0x46, - 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0xfd, 0xf7, 0xb5, 0xff, 0x1c, 0x4b, - 0x9c, 0x42, 0x24, 0xd1, 0x74, 0x68, 0x63, 0x6e, 0xd8, 0x07, 0x05, 0xd4, - 0xa3, 0x89, 0x99, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, 0xab, 0xfb, - 0xa3, 0x68, 0x01, 0x3b, 0x00, 0x2b, 0xa3, 0x60, 0x05, 0xda, 0xa2, 0x69, - 0x93, 0x42, 0x1c, 0xdb, 0xeb, 0xb2, 0x0a, 0x2b, 0x19, 0xd0, 0x23, 0x68, - 0x5a, 0x1c, 0x22, 0x60, 0x1d, 0x70, 0xed, 0xb2, 0x63, 0x6e, 0xda, 0x07, - 0x05, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, - 0x94, 0xfb, 0x28, 0x46, 0x70, 0xbd, 0x09, 0x4b, 0x9c, 0x42, 0x01, 0xd1, - 0xb4, 0x68, 0xd6, 0xe7, 0x07, 0x4b, 0x9c, 0x42, 0x08, 0xbf, 0xf4, 0x68, - 0xd1, 0xe7, 0x29, 0x46, 0x22, 0x46, 0x30, 0x46, 0x00, 0xf0, 0xc0, 0xf8, - 0x05, 0x46, 0xe3, 0xe7, 0x34, 0xd2, 0x01, 0x08, 0x54, 0xd2, 0x01, 0x08, - 0x14, 0xd2, 0x01, 0x08, 0x70, 0xb5, 0x0e, 0x46, 0x05, 0x46, 0x18, 0xb1, - 0x83, 0x69, 0x0b, 0xb9, 0xfd, 0xf7, 0x6e, 0xff, 0xab, 0x69, 0xac, 0x68, - 0x13, 0xb9, 0x28, 0x46, 0xfd, 0xf7, 0x68, 0xff, 0x2c, 0x4b, 0x9c, 0x42, - 0x20, 0xd1, 0x6c, 0x68, 0x63, 0x6e, 0xdb, 0x07, 0x05, 0xd4, 0xa3, 0x89, - 0x98, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, 0x5e, 0xfb, 0xa3, 0x89, - 0x19, 0x07, 0x1d, 0xd5, 0x23, 0x69, 0xdb, 0xb1, 0x01, 0x3e, 0xa3, 0x68, - 0x16, 0xf8, 0x01, 0x1f, 0x01, 0x3b, 0xa3, 0x60, 0x39, 0xbb, 0x00, 0x2b, - 0x38, 0xda, 0x22, 0x46, 0x0a, 0x21, 0x28, 0x46, 0x00, 0xf0, 0x8a, 0xf8, - 0x01, 0x30, 0x11, 0xd0, 0x0a, 0x25, 0x11, 0xe0, 0x1b, 0x4b, 0x9c, 0x42, - 0x01, 0xd1, 0xac, 0x68, 0xda, 0xe7, 0x1a, 0x4b, 0x9c, 0x42, 0x08, 0xbf, - 0xec, 0x68, 0xd5, 0xe7, 0x21, 0x46, 0x28, 0x46, 0x00, 0xf0, 0xca, 0xf8, - 0x00, 0x28, 0xdd, 0xd0, 0x4f, 0xf0, 0xff, 0x35, 0x63, 0x6e, 0xda, 0x07, + 0x00, 0xf0, 0xdf, 0x00, 0x58, 0x28, 0x4f, 0xd1, 0x9c, 0xf8, 0x01, 0x40, + 0x10, 0x23, 0x0c, 0xf1, 0x02, 0x0c, 0x4f, 0xf0, 0xff, 0x37, 0x00, 0x25, + 0xb7, 0xfb, 0xf3, 0xf7, 0x03, 0xfb, 0x07, 0xf9, 0x6f, 0xea, 0x09, 0x09, + 0x28, 0x46, 0xa4, 0xf1, 0x30, 0x06, 0x09, 0x2e, 0x18, 0xd8, 0x34, 0x46, + 0xa3, 0x42, 0x24, 0xdd, 0x00, 0x2d, 0x1f, 0xdb, 0x87, 0x42, 0x1d, 0xd3, + 0x01, 0xd1, 0xa1, 0x45, 0x1a, 0xdb, 0x00, 0xfb, 0x03, 0x40, 0x01, 0x25, + 0x1c, 0xf8, 0x01, 0x4b, 0xeb, 0xe7, 0x2b, 0x2c, 0x08, 0xbf, 0x9c, 0xf8, + 0x00, 0x40, 0xa8, 0x46, 0x08, 0xbf, 0x00, 0xf1, 0x02, 0x0c, 0xc7, 0xe7, + 0xa4, 0xf1, 0x41, 0x06, 0x19, 0x2e, 0x01, 0xd8, 0x37, 0x3c, 0xe1, 0xe7, + 0xa4, 0xf1, 0x61, 0x06, 0x19, 0x2e, 0x04, 0xd8, 0x57, 0x3c, 0xdb, 0xe7, + 0x4f, 0xf0, 0xff, 0x35, 0xe4, 0xe7, 0x00, 0x2d, 0x07, 0xda, 0x22, 0x23, + 0xce, 0xf8, 0x00, 0x30, 0x4f, 0xf0, 0xff, 0x30, 0x42, 0xb9, 0xbd, 0xe8, + 0xf0, 0x83, 0xb8, 0xf1, 0x00, 0x0f, 0x00, 0xd0, 0x40, 0x42, 0x00, 0x2a, + 0xf7, 0xd0, 0x0d, 0xb1, 0x0c, 0xf1, 0xff, 0x31, 0x11, 0x60, 0xf2, 0xe7, + 0x30, 0x24, 0x00, 0x2b, 0xb1, 0xd1, 0x08, 0x23, 0xaf, 0xe7, 0x30, 0x2c, + 0xa2, 0xd0, 0x0a, 0x23, 0xab, 0xe7, 0x00, 0xbf, 0x0d, 0xf1, 0x01, 0x08, + 0xff, 0xf7, 0x82, 0xbf, 0x13, 0x46, 0x0a, 0x46, 0x01, 0x46, 0x02, 0x48, + 0x00, 0x68, 0xff, 0xf7, 0x7b, 0xbf, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, + 0x38, 0xb5, 0x4b, 0x1c, 0x14, 0x46, 0x03, 0xd1, 0x4f, 0xf0, 0xff, 0x35, + 0x28, 0x46, 0x38, 0xbd, 0x93, 0x89, 0x23, 0xf0, 0x20, 0x03, 0x93, 0x81, + 0x63, 0x6b, 0x52, 0x68, 0xcd, 0xb2, 0x8b, 0xb1, 0xa3, 0x6b, 0x93, 0x42, + 0x08, 0xdd, 0x23, 0x68, 0x5a, 0x1e, 0x22, 0x60, 0x03, 0xf8, 0x01, 0x5c, + 0x63, 0x68, 0x01, 0x33, 0x63, 0x60, 0xe9, 0xe7, 0x21, 0x46, 0x00, 0xf0, + 0xb5, 0xfb, 0x00, 0x28, 0xf1, 0xd0, 0xe1, 0xe7, 0x21, 0x69, 0x23, 0x68, + 0x51, 0xb1, 0x99, 0x42, 0x08, 0xd2, 0x13, 0xf8, 0x01, 0x1c, 0xa9, 0x42, + 0x04, 0xd1, 0x01, 0x3b, 0x01, 0x32, 0x23, 0x60, 0x62, 0x60, 0xd5, 0xe7, + 0xc4, 0xe9, 0x0f, 0x32, 0x04, 0xf1, 0x44, 0x03, 0x63, 0x63, 0x03, 0x23, + 0xa3, 0x63, 0x23, 0x46, 0x03, 0xf8, 0x46, 0x5f, 0x23, 0x60, 0x01, 0x23, + 0xdc, 0xe7, 0x10, 0xb5, 0x0c, 0x46, 0x49, 0x6b, 0x69, 0xb1, 0x04, 0xf1, + 0x44, 0x03, 0x99, 0x42, 0x01, 0xd0, 0xf2, 0xf7, 0x6f, 0xfb, 0x23, 0x6c, + 0x63, 0x60, 0x00, 0x20, 0x60, 0x63, 0x13, 0xb1, 0xe3, 0x6b, 0x23, 0x60, + 0x10, 0xbd, 0x23, 0x69, 0x23, 0x60, 0x00, 0x23, 0x63, 0x60, 0xa3, 0x89, + 0x43, 0xf0, 0x20, 0x03, 0xa3, 0x81, 0x4f, 0xf0, 0xff, 0x30, 0xf3, 0xe7, + 0x2d, 0xe9, 0xf0, 0x4f, 0x0c, 0x46, 0xad, 0xf5, 0x23, 0x7d, 0x00, 0x21, + 0xcd, 0xe9, 0x44, 0x11, 0xb2, 0x49, 0xa0, 0x91, 0x0d, 0xf1, 0x04, 0x08, + 0xb1, 0x49, 0xb2, 0x4f, 0xdf, 0xf8, 0xc8, 0x92, 0xcd, 0xf8, 0x18, 0x81, + 0x06, 0x46, 0xa1, 0x91, 0x00, 0x93, 0x92, 0xf8, 0x00, 0xa0, 0xba, 0xf1, + 0x00, 0x0f, 0x00, 0xf0, 0x51, 0x81, 0x1a, 0xf8, 0x07, 0x30, 0x13, 0xf0, + 0x08, 0x03, 0x02, 0xf1, 0x01, 0x05, 0x19, 0xd0, 0x63, 0x68, 0x00, 0x2b, + 0x0f, 0xdd, 0x23, 0x68, 0x1a, 0x78, 0xba, 0x5c, 0x12, 0x07, 0x01, 0xd4, + 0x2a, 0x46, 0xe8, 0xe7, 0x45, 0x9a, 0x01, 0x32, 0x45, 0x92, 0x62, 0x68, + 0x01, 0x33, 0x01, 0x3a, 0x62, 0x60, 0x23, 0x60, 0xec, 0xe7, 0xa1, 0x9b, + 0x21, 0x46, 0x30, 0x46, 0x98, 0x47, 0x00, 0x28, 0xe9, 0xd0, 0xed, 0xe7, + 0xba, 0xf1, 0x25, 0x0f, 0x40, 0xf0, 0x83, 0x80, 0x41, 0x93, 0x43, 0x93, + 0x53, 0x78, 0x2a, 0x2b, 0x02, 0xbf, 0x10, 0x23, 0x95, 0x1c, 0x41, 0x93, + 0x0a, 0x22, 0xab, 0x46, 0x1b, 0xf8, 0x01, 0x1b, 0xa1, 0xf1, 0x30, 0x03, + 0x09, 0x2b, 0x1d, 0xd9, 0x91, 0x48, 0x03, 0x22, 0xff, 0xf7, 0x5e, 0xf8, + 0x40, 0xb1, 0x01, 0x23, 0xa0, 0xeb, 0x09, 0x00, 0x03, 0xfa, 0x00, 0xf0, + 0x41, 0x9b, 0x18, 0x43, 0x41, 0x90, 0x5d, 0x46, 0x15, 0xf8, 0x01, 0x3b, + 0x78, 0x2b, 0x06, 0xd8, 0x57, 0x2b, 0x10, 0xd8, 0x25, 0x2b, 0x5c, 0xd0, + 0x56, 0xd8, 0x00, 0x2b, 0x74, 0xd0, 0x03, 0x23, 0x47, 0x93, 0x0a, 0x23, + 0x42, 0x93, 0x81, 0xe0, 0x43, 0x9b, 0x02, 0xfb, 0x03, 0x13, 0x30, 0x3b, + 0x43, 0x93, 0x5d, 0x46, 0xd3, 0xe7, 0xa3, 0xf1, 0x58, 0x02, 0x20, 0x2a, + 0xef, 0xd8, 0x01, 0xa1, 0x51, 0xf8, 0x22, 0xf0, 0x37, 0xc4, 0x01, 0x08, + 0x3f, 0xc3, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, 0x95, 0xc4, 0x01, 0x08, + 0x3f, 0xc3, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, + 0x3f, 0xc3, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, + 0x3f, 0xc3, 0x01, 0x08, 0xab, 0xc4, 0x01, 0x08, 0x81, 0xc4, 0x01, 0x08, + 0xef, 0xc3, 0x01, 0x08, 0xef, 0xc3, 0x01, 0x08, 0xef, 0xc3, 0x01, 0x08, + 0x3f, 0xc3, 0x01, 0x08, 0x85, 0xc4, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, + 0x3f, 0xc3, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, + 0xbb, 0xc4, 0x01, 0x08, 0x8d, 0xc4, 0x01, 0x08, 0x2f, 0xc4, 0x01, 0x08, + 0x3f, 0xc3, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, 0xb7, 0xc4, 0x01, 0x08, + 0x3f, 0xc3, 0x01, 0x08, 0x81, 0xc4, 0x01, 0x08, 0x3f, 0xc3, 0x01, 0x08, + 0x3f, 0xc3, 0x01, 0x08, 0x37, 0xc4, 0x01, 0x08, 0x45, 0x3b, 0x02, 0x2b, + 0xa7, 0xd8, 0x05, 0x23, 0x2b, 0xe0, 0x63, 0x68, 0x00, 0x2b, 0x0d, 0xdd, + 0x23, 0x68, 0x1a, 0x78, 0x52, 0x45, 0x40, 0xf0, 0xa1, 0x80, 0x01, 0x33, + 0x62, 0x68, 0x23, 0x60, 0x45, 0x9b, 0x01, 0x3a, 0x01, 0x33, 0x62, 0x60, + 0x45, 0x93, 0x55, 0xe7, 0xa1, 0x9b, 0x21, 0x46, 0x30, 0x46, 0x98, 0x47, + 0x00, 0x28, 0xeb, 0xd0, 0x44, 0x98, 0x00, 0x28, 0x40, 0xf0, 0x84, 0x80, + 0x4f, 0xf0, 0xff, 0x30, 0x86, 0xe0, 0x41, 0x9a, 0x42, 0xf0, 0x20, 0x02, + 0x41, 0x92, 0x41, 0x9a, 0x42, 0xf4, 0x00, 0x72, 0x41, 0x92, 0x10, 0x22, + 0x6f, 0x2b, 0x42, 0x92, 0x34, 0xbf, 0x03, 0x23, 0x04, 0x23, 0x47, 0x93, + 0x63, 0x68, 0x00, 0x2b, 0x41, 0xdd, 0x41, 0x9b, 0x59, 0x06, 0x04, 0xd4, + 0x23, 0x68, 0x1a, 0x78, 0xba, 0x5c, 0x12, 0x07, 0x40, 0xd4, 0x47, 0x9b, + 0x02, 0x2b, 0x4f, 0xdc, 0x6b, 0x46, 0x22, 0x46, 0x41, 0xa9, 0x30, 0x46, + 0x00, 0xf0, 0x74, 0xf8, 0x01, 0x28, 0x65, 0xd0, 0x02, 0x28, 0x7f, 0xf4, + 0x21, 0xaf, 0xcf, 0xe7, 0x0a, 0x22, 0xdd, 0xe7, 0x00, 0x23, 0x42, 0x93, + 0x03, 0x23, 0xde, 0xe7, 0x08, 0x23, 0x42, 0x93, 0x04, 0x23, 0xda, 0xe7, + 0x29, 0x46, 0x40, 0x46, 0x00, 0xf0, 0xac, 0xf9, 0x41, 0x9b, 0x43, 0xf0, + 0x40, 0x03, 0x41, 0x93, 0x05, 0x46, 0x01, 0x23, 0xcf, 0xe7, 0x41, 0x9b, + 0x43, 0xf0, 0x40, 0x03, 0x41, 0x93, 0x00, 0x23, 0xc9, 0xe7, 0x02, 0x23, + 0xc7, 0xe7, 0x41, 0x98, 0xc3, 0x06, 0x3f, 0xf5, 0xff, 0xae, 0x00, 0x9b, + 0x45, 0x9a, 0x19, 0x1d, 0x00, 0x91, 0x1b, 0x68, 0xc0, 0x07, 0x4c, 0xbf, + 0x1a, 0x80, 0x1a, 0x60, 0xf4, 0xe6, 0xa1, 0x9b, 0x21, 0x46, 0x30, 0x46, + 0x98, 0x47, 0x00, 0x28, 0xb7, 0xd0, 0x9d, 0xe7, 0x45, 0x9a, 0x01, 0x32, + 0x45, 0x92, 0x62, 0x68, 0x01, 0x3a, 0x00, 0x2a, 0x62, 0x60, 0x02, 0xdd, + 0x01, 0x33, 0x23, 0x60, 0xae, 0xe7, 0xa1, 0x9b, 0x21, 0x46, 0x30, 0x46, + 0x98, 0x47, 0x00, 0x28, 0xa8, 0xd0, 0x8b, 0xe7, 0x04, 0x2b, 0x06, 0xdc, + 0x6b, 0x46, 0x22, 0x46, 0x41, 0xa9, 0x30, 0x46, 0x00, 0xf0, 0x7a, 0xf8, + 0xac, 0xe7, 0x0f, 0x4b, 0x00, 0x2b, 0x3f, 0xf4, 0xcf, 0xae, 0x6b, 0x46, + 0x22, 0x46, 0x41, 0xa9, 0x30, 0x46, 0xaf, 0xf3, 0x00, 0x80, 0xa1, 0xe7, + 0xa3, 0x89, 0x13, 0xf0, 0x40, 0x0f, 0x18, 0xbf, 0x4f, 0xf0, 0xff, 0x30, + 0x0d, 0xf5, 0x23, 0x7d, 0xbd, 0xe8, 0xf0, 0x8f, 0x44, 0x98, 0xf9, 0xe7, + 0xb9, 0xc1, 0x01, 0x08, 0x33, 0xc2, 0x01, 0x08, 0x0d, 0xf1, 0x01, 0x08, + 0x0d, 0xf2, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x2d, 0xe9, 0xf8, 0x43, + 0x15, 0x46, 0x8a, 0x68, 0x80, 0x46, 0x0c, 0x46, 0x32, 0xb9, 0x8a, 0x69, + 0x00, 0x2a, 0x0c, 0xbf, 0x01, 0x22, 0x4f, 0xf0, 0xff, 0x32, 0x8a, 0x60, + 0x22, 0x68, 0xdf, 0xf8, 0x8c, 0x90, 0xd1, 0x06, 0x5f, 0xbf, 0x1a, 0x68, + 0x11, 0x1d, 0x19, 0x60, 0x16, 0x68, 0x00, 0x27, 0xa0, 0x69, 0x88, 0xb1, + 0x01, 0x28, 0x07, 0xd1, 0x2b, 0x68, 0x1a, 0x78, 0x63, 0x69, 0x9b, 0x5c, + 0x53, 0xb9, 0x27, 0xbb, 0xbd, 0xe8, 0xf8, 0x83, 0x02, 0x28, 0x20, 0xd1, + 0x2b, 0x68, 0x1b, 0x78, 0x13, 0xf8, 0x09, 0x30, 0x1b, 0x07, 0x1a, 0xd4, + 0x23, 0x68, 0xda, 0x06, 0x5e, 0xbf, 0x2b, 0x68, 0x1b, 0x78, 0x06, 0xf8, + 0x01, 0x3b, 0x2a, 0x68, 0x6b, 0x68, 0x01, 0x32, 0x2a, 0x60, 0xa2, 0x68, + 0x01, 0x3b, 0x01, 0x3a, 0x6b, 0x60, 0x01, 0x37, 0xa2, 0x60, 0x42, 0xb1, + 0x00, 0x2b, 0xd7, 0xdc, 0xd4, 0xf8, 0x80, 0x31, 0x29, 0x46, 0x40, 0x46, + 0x98, 0x47, 0x00, 0x28, 0xd0, 0xd0, 0x23, 0x68, 0x13, 0xf0, 0x10, 0x03, + 0x05, 0xd1, 0xe2, 0x68, 0x01, 0x32, 0xe2, 0x60, 0xa2, 0x69, 0x02, 0xb1, + 0x33, 0x70, 0x23, 0x69, 0x1f, 0x44, 0x27, 0x61, 0x00, 0x20, 0xcb, 0xe7, + 0x0d, 0xf1, 0x01, 0x08, 0x2d, 0xe9, 0xf0, 0x4f, 0x98, 0x46, 0x74, 0x4b, + 0x0c, 0x46, 0x82, 0x46, 0x16, 0x46, 0x93, 0xe8, 0x07, 0x00, 0x87, 0xb0, + 0x03, 0xab, 0x83, 0xe8, 0x07, 0x00, 0x70, 0x4b, 0xa1, 0x69, 0x70, 0x4a, + 0x03, 0x29, 0x18, 0xbf, 0x1a, 0x46, 0xa3, 0x68, 0x01, 0x92, 0x5a, 0x1e, + 0xb2, 0xf5, 0xae, 0x7f, 0x88, 0xbf, 0x6f, 0xf4, 0xae, 0x75, 0x27, 0x46, + 0x82, 0xbf, 0x03, 0xeb, 0x05, 0x09, 0x40, 0xf2, 0x5d, 0x13, 0xa3, 0x60, + 0x57, 0xf8, 0x1c, 0x3b, 0x43, 0xf4, 0x50, 0x63, 0x98, 0xbf, 0x4f, 0xf0, + 0x00, 0x09, 0x23, 0x60, 0x3d, 0x46, 0x4f, 0xf0, 0x00, 0x0b, 0x31, 0x68, + 0x03, 0xab, 0x09, 0x78, 0x53, 0xf8, 0x2b, 0x00, 0x02, 0x22, 0xfe, 0xf7, + 0xad, 0xfe, 0x28, 0xb3, 0xbb, 0xf1, 0x01, 0x0f, 0x59, 0xd1, 0x62, 0x68, + 0x2a, 0xb9, 0x22, 0x68, 0x08, 0x23, 0x42, 0xf4, 0x00, 0x72, 0x63, 0x60, + 0x22, 0x60, 0x22, 0x68, 0x22, 0xf4, 0xa0, 0x62, 0x22, 0x60, 0xa2, 0x68, + 0x51, 0x1e, 0xa1, 0x60, 0x92, 0xb1, 0x32, 0x68, 0x51, 0x1c, 0x31, 0x60, + 0x12, 0x78, 0x05, 0xf8, 0x01, 0x2b, 0x72, 0x68, 0x01, 0x3a, 0x00, 0x2a, + 0x72, 0x60, 0x07, 0xdc, 0xd4, 0xf8, 0x80, 0x21, 0x31, 0x46, 0x50, 0x46, + 0x90, 0x47, 0x00, 0x28, 0x40, 0xf0, 0x85, 0x80, 0x0b, 0xf1, 0x01, 0x0b, + 0xbb, 0xf1, 0x03, 0x0f, 0xcb, 0xd1, 0x63, 0x68, 0x0b, 0xb9, 0x0a, 0x23, + 0x63, 0x60, 0x63, 0x68, 0x45, 0x49, 0x60, 0x69, 0xc9, 0x1a, 0x00, 0xf0, + 0x89, 0xf8, 0x4f, 0xf0, 0x00, 0x0b, 0xa3, 0x68, 0x22, 0x68, 0x00, 0x2b, + 0x3d, 0xd0, 0x31, 0x68, 0x60, 0x69, 0x91, 0xf8, 0x00, 0xc0, 0x10, 0xf8, + 0x0c, 0x00, 0x00, 0x28, 0x35, 0xd0, 0xbc, 0xf1, 0x30, 0x0f, 0x24, 0xd1, + 0x10, 0x05, 0x22, 0xd5, 0x0b, 0xf1, 0x01, 0x0b, 0xb9, 0xf1, 0x00, 0x0f, + 0x03, 0xd0, 0x01, 0x33, 0x09, 0xf1, 0xff, 0x39, 0xa3, 0x60, 0x73, 0x68, + 0x01, 0x3b, 0x00, 0x2b, 0x73, 0x60, 0x1b, 0xdd, 0x33, 0x68, 0x01, 0x33, + 0x33, 0x60, 0xa3, 0x68, 0x01, 0x3b, 0xa3, 0x60, 0xd9, 0xe7, 0xbb, 0xf1, + 0x02, 0x0f, 0xae, 0xd1, 0x22, 0x68, 0x02, 0xf4, 0xc0, 0x61, 0xb1, 0xf5, + 0x00, 0x7f, 0xbf, 0xd1, 0x10, 0x23, 0x63, 0x60, 0x42, 0xf4, 0x80, 0x72, + 0xa2, 0xe7, 0x22, 0xf4, 0x10, 0x62, 0x22, 0x60, 0x0b, 0x78, 0x05, 0xf8, + 0x01, 0x3b, 0xde, 0xe7, 0xd4, 0xf8, 0x80, 0x31, 0x31, 0x46, 0x50, 0x46, + 0x98, 0x47, 0x00, 0x28, 0xdf, 0xd0, 0x23, 0x68, 0xd9, 0x05, 0x0d, 0xd5, + 0xbd, 0x42, 0x09, 0xd9, 0x15, 0xf8, 0x01, 0x1c, 0xd4, 0xf8, 0x7c, 0x31, + 0x32, 0x46, 0x50, 0x46, 0x98, 0x47, 0x05, 0xf1, 0xff, 0x39, 0x4d, 0x46, + 0xbd, 0x42, 0x28, 0xd0, 0x22, 0x68, 0x12, 0xf0, 0x10, 0x02, 0x13, 0xd1, + 0x2a, 0x70, 0x63, 0x68, 0x01, 0x9e, 0x39, 0x46, 0x50, 0x46, 0xb0, 0x47, + 0xd8, 0xf8, 0x00, 0x30, 0x21, 0x68, 0x1a, 0x1d, 0xc8, 0xf8, 0x00, 0x20, + 0x11, 0xf0, 0x20, 0x0f, 0x1b, 0x68, 0x0f, 0xd0, 0x18, 0x60, 0xe3, 0x68, + 0x01, 0x33, 0xe3, 0x60, 0xed, 0x1b, 0xab, 0x44, 0x25, 0x69, 0x5d, 0x44, + 0x25, 0x61, 0x00, 0x20, 0x07, 0xb0, 0xbd, 0xe8, 0xf0, 0x8f, 0x4f, 0xf0, + 0x00, 0x0b, 0xca, 0xe7, 0xca, 0x07, 0x4c, 0xbf, 0x18, 0x80, 0x18, 0x60, + 0xeb, 0xe7, 0x01, 0x20, 0xf2, 0xe7, 0x00, 0xbf, 0x2c, 0xf2, 0x01, 0x08, + 0xa1, 0xc1, 0x01, 0x08, 0x5d, 0xc9, 0x01, 0x08, 0x2a, 0xf2, 0x01, 0x08, + 0x70, 0xb5, 0x0b, 0x78, 0x04, 0x46, 0x5e, 0x2b, 0x0b, 0xbf, 0x4b, 0x78, + 0x48, 0x1c, 0x88, 0x1c, 0x00, 0x22, 0x08, 0xbf, 0x01, 0x22, 0x61, 0x1e, + 0x04, 0xf1, 0xff, 0x05, 0x01, 0xf8, 0x01, 0x2f, 0xa9, 0x42, 0xfb, 0xd1, + 0x0b, 0xb9, 0x01, 0x38, 0x70, 0xbd, 0x82, 0xf0, 0x01, 0x01, 0xe1, 0x54, + 0x42, 0x1c, 0x12, 0xf8, 0x01, 0x5c, 0x2d, 0x2d, 0x02, 0xf1, 0xff, 0x36, + 0x10, 0x46, 0x06, 0xd0, 0x5d, 0x2d, 0xf1, 0xd0, 0x0d, 0xb9, 0x30, 0x46, + 0xee, 0xe7, 0x2b, 0x46, 0xef, 0xe7, 0x16, 0x78, 0x5d, 0x2e, 0xfa, 0xd0, + 0xb3, 0x42, 0xf8, 0xdc, 0x18, 0x46, 0x01, 0x30, 0x86, 0x42, 0x21, 0x54, + 0xfb, 0xdc, 0xd8, 0x43, 0x30, 0x44, 0x5d, 0x1c, 0xb3, 0x42, 0xa8, 0xbf, + 0x00, 0x20, 0x2b, 0x18, 0x02, 0x32, 0xde, 0xe7, 0x2d, 0xe9, 0xf0, 0x47, + 0x3a, 0x4e, 0x86, 0x46, 0x8c, 0x46, 0x60, 0x46, 0x1c, 0xf8, 0x01, 0x4b, + 0xa5, 0x5d, 0x15, 0xf0, 0x08, 0x05, 0xf8, 0xd1, 0x2d, 0x2c, 0x33, 0xd1, + 0x9c, 0xf8, 0x00, 0x40, 0x4f, 0xf0, 0x01, 0x08, 0x00, 0xf1, 0x02, 0x0c, + 0x00, 0x2b, 0x5c, 0xd0, 0x10, 0x2b, 0x0c, 0xd1, 0x30, 0x2c, 0x0a, 0xd1, + 0x9c, 0xf8, 0x00, 0x00, 0x00, 0xf0, 0xdf, 0x00, 0x58, 0x28, 0x4d, 0xd1, + 0x9c, 0xf8, 0x01, 0x40, 0x10, 0x23, 0x0c, 0xf1, 0x02, 0x0c, 0x08, 0xf1, + 0x00, 0x47, 0x01, 0x3f, 0x00, 0x26, 0xb7, 0xfb, 0xf3, 0xf9, 0x30, 0x46, + 0x03, 0xfb, 0x19, 0x7a, 0xa4, 0xf1, 0x30, 0x05, 0x09, 0x2d, 0x18, 0xd8, + 0x2c, 0x46, 0xa3, 0x42, 0x24, 0xdd, 0x75, 0x1c, 0x07, 0xd0, 0x81, 0x45, + 0x1d, 0xd3, 0x01, 0xd1, 0xa2, 0x45, 0x1a, 0xdb, 0x00, 0xfb, 0x03, 0x40, + 0x01, 0x26, 0x1c, 0xf8, 0x01, 0x4b, 0xeb, 0xe7, 0x2b, 0x2c, 0x08, 0xbf, + 0x9c, 0xf8, 0x00, 0x40, 0xa8, 0x46, 0x08, 0xbf, 0x00, 0xf1, 0x02, 0x0c, + 0xc8, 0xe7, 0xa4, 0xf1, 0x41, 0x05, 0x19, 0x2d, 0x01, 0xd8, 0x37, 0x3c, + 0xe1, 0xe7, 0xa4, 0xf1, 0x61, 0x05, 0x19, 0x2d, 0x04, 0xd8, 0x57, 0x3c, + 0xdb, 0xe7, 0x4f, 0xf0, 0xff, 0x36, 0xe4, 0xe7, 0x73, 0x1c, 0x06, 0xd1, + 0x22, 0x23, 0xce, 0xf8, 0x00, 0x30, 0x38, 0x46, 0x42, 0xb9, 0xbd, 0xe8, + 0xf0, 0x87, 0xb8, 0xf1, 0x00, 0x0f, 0x00, 0xd0, 0x40, 0x42, 0x00, 0x2a, + 0xf7, 0xd0, 0x0e, 0xb1, 0x0c, 0xf1, 0xff, 0x31, 0x11, 0x60, 0xf2, 0xe7, + 0x30, 0x24, 0x00, 0x2b, 0xb3, 0xd1, 0x08, 0x23, 0xb1, 0xe7, 0x30, 0x2c, + 0xa4, 0xd0, 0x0a, 0x23, 0xad, 0xe7, 0x00, 0xbf, 0x0d, 0xf1, 0x01, 0x08, + 0xff, 0xf7, 0x84, 0xbf, 0x2d, 0xe9, 0xf0, 0x41, 0x0c, 0x46, 0x49, 0x6b, + 0x04, 0xf1, 0x44, 0x03, 0x99, 0x42, 0x1d, 0xd1, 0x4f, 0xf4, 0x80, 0x61, + 0xf1, 0xf7, 0xda, 0xff, 0x18, 0xb9, 0x4f, 0xf0, 0xff, 0x30, 0xbd, 0xe8, + 0xf0, 0x81, 0x4f, 0xf4, 0x80, 0x63, 0xa3, 0x63, 0x94, 0xf8, 0x46, 0x30, + 0x60, 0x63, 0x80, 0xf8, 0xff, 0x33, 0x94, 0xf8, 0x45, 0x30, 0x80, 0xf8, + 0xfe, 0x33, 0x94, 0xf8, 0x44, 0x30, 0x80, 0xf8, 0xfd, 0x33, 0x00, 0xf2, + 0xfd, 0x30, 0x20, 0x60, 0x00, 0x20, 0xe8, 0xe7, 0xa6, 0x6b, 0x77, 0x00, + 0x3a, 0x46, 0xf1, 0xf7, 0xb9, 0xff, 0x05, 0x46, 0x00, 0x28, 0xde, 0xd0, + 0x00, 0xeb, 0x06, 0x08, 0x01, 0x46, 0x32, 0x46, 0x40, 0x46, 0xfe, 0xf7, + 0x53, 0xfd, 0xc4, 0xe9, 0x0d, 0x57, 0xc4, 0xf8, 0x00, 0x80, 0xe9, 0xe7, + 0x02, 0x4b, 0x0a, 0x46, 0x01, 0x46, 0x18, 0x68, 0xf1, 0xf7, 0xa0, 0xbf, + 0x10, 0x03, 0x00, 0x24, 0x70, 0xb5, 0x0e, 0x46, 0x14, 0x46, 0x05, 0x46, + 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0xfe, 0xf7, 0x73, 0xf8, 0x14, 0x4b, + 0x9c, 0x42, 0x1a, 0xd1, 0x6c, 0x68, 0x63, 0x6e, 0xd8, 0x07, 0x05, 0xd4, + 0xa3, 0x89, 0x99, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, 0x69, 0xfc, + 0x22, 0x46, 0x28, 0x46, 0x31, 0x46, 0x00, 0xf0, 0xa1, 0xf8, 0x63, 0x6e, + 0xda, 0x07, 0x05, 0x46, 0x05, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0x02, 0xd4, + 0xa0, 0x6d, 0xfe, 0xf7, 0x5c, 0xfc, 0x28, 0x46, 0x70, 0xbd, 0x06, 0x4b, + 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, 0xe0, 0xe7, 0x04, 0x4b, 0x9c, 0x42, + 0x08, 0xbf, 0xec, 0x68, 0xdb, 0xe7, 0x00, 0xbf, 0x2c, 0xf0, 0x01, 0x08, + 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, 0x02, 0x4b, 0x0a, 0x46, + 0x01, 0x46, 0x18, 0x68, 0xff, 0xf7, 0xc2, 0xbf, 0x10, 0x03, 0x00, 0x24, + 0x2d, 0xe9, 0xf8, 0x43, 0x08, 0x9c, 0x89, 0x46, 0x17, 0x46, 0x02, 0xfb, + 0x03, 0xf8, 0x05, 0x46, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0xfe, 0xf7, + 0x2f, 0xf8, 0x26, 0x4b, 0x9c, 0x42, 0x23, 0xd1, 0x6c, 0x68, 0x63, 0x6e, + 0xde, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x98, 0x05, 0x02, 0xd4, 0xa0, 0x6d, + 0xfe, 0xf7, 0x25, 0xfc, 0xa3, 0x89, 0x19, 0x07, 0x20, 0xd5, 0x23, 0x69, + 0xf3, 0xb1, 0x00, 0x26, 0x46, 0x45, 0x29, 0xd0, 0xa0, 0x68, 0x19, 0xf8, + 0x06, 0x10, 0x01, 0x38, 0x00, 0x28, 0xa0, 0x60, 0x04, 0xda, 0xa3, 0x69, + 0x98, 0x42, 0x19, 0xdb, 0x0a, 0x29, 0x17, 0xd0, 0x23, 0x68, 0x5a, 0x1c, + 0x22, 0x60, 0x19, 0x70, 0x01, 0x36, 0xeb, 0xe7, 0x13, 0x4b, 0x9c, 0x42, + 0x01, 0xd1, 0xac, 0x68, 0xd7, 0xe7, 0x12, 0x4b, 0x9c, 0x42, 0x08, 0xbf, + 0xec, 0x68, 0xd2, 0xe7, 0x21, 0x46, 0x28, 0x46, 0x00, 0xf0, 0x8c, 0xf9, + 0x00, 0x28, 0xda, 0xd0, 0x00, 0x26, 0x05, 0xe0, 0x22, 0x46, 0x28, 0x46, + 0x00, 0xf0, 0x32, 0xf9, 0x01, 0x30, 0xe5, 0xd1, 0x63, 0x6e, 0xda, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, - 0x2e, 0xfb, 0x28, 0x46, 0x70, 0xbd, 0x00, 0x2b, 0x04, 0xda, 0xa2, 0x69, - 0x9a, 0x42, 0x06, 0xdc, 0x0a, 0x29, 0x04, 0xd0, 0x23, 0x68, 0x5a, 0x1c, - 0x22, 0x60, 0x19, 0x70, 0xc5, 0xe7, 0x22, 0x46, 0x28, 0x46, 0x00, 0xf0, - 0x59, 0xf8, 0x01, 0x30, 0xbf, 0xd1, 0xdf, 0xe7, 0x23, 0x68, 0x0a, 0x25, - 0x5a, 0x1c, 0x22, 0x60, 0x1d, 0x70, 0xdb, 0xe7, 0x34, 0xd2, 0x01, 0x08, - 0x54, 0xd2, 0x01, 0x08, 0x14, 0xd2, 0x01, 0x08, 0x02, 0x4b, 0x01, 0x46, - 0x18, 0x68, 0xff, 0xf7, 0x8d, 0xbf, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, - 0xc9, 0xb2, 0x03, 0x46, 0x10, 0xf8, 0x01, 0x2b, 0x1a, 0xb1, 0x8a, 0x42, - 0xf9, 0xd1, 0x18, 0x46, 0x70, 0x47, 0x00, 0x29, 0x18, 0xbf, 0x00, 0x23, - 0xf9, 0xe7, 0x70, 0xb5, 0x03, 0x46, 0x1e, 0x46, 0x13, 0xf8, 0x01, 0x4b, - 0x44, 0xb1, 0x4a, 0x1e, 0x01, 0xe0, 0xa5, 0x42, 0x04, 0xd0, 0x12, 0xf8, - 0x01, 0x5f, 0x00, 0x2d, 0xf9, 0xd1, 0xf2, 0xe7, 0x30, 0x1a, 0x70, 0xbd, - 0x10, 0xb5, 0x01, 0x39, 0x03, 0x46, 0x32, 0xb1, 0x11, 0xf8, 0x01, 0x4f, - 0x03, 0xf8, 0x01, 0x4b, 0x01, 0x3a, 0x00, 0x2c, 0xf7, 0xd1, 0x1a, 0x44, - 0x00, 0x21, 0x93, 0x42, 0x00, 0xd1, 0x10, 0xbd, 0x03, 0xf8, 0x01, 0x1b, - 0xf9, 0xe7, 0x70, 0xb5, 0x03, 0x46, 0x1e, 0x46, 0x13, 0xf8, 0x01, 0x4b, - 0x3c, 0xb1, 0x4a, 0x1e, 0x01, 0xe0, 0xa5, 0x42, 0xf7, 0xd0, 0x12, 0xf8, - 0x01, 0x5f, 0x00, 0x2d, 0xf9, 0xd1, 0x30, 0x1a, 0x70, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x0e, 0x46, 0x14, 0x46, 0x05, 0x46, 0x18, 0xb1, 0x83, 0x69, - 0x0b, 0xb9, 0xfd, 0xf7, 0xb5, 0xfe, 0x21, 0x4b, 0x9c, 0x42, 0x2b, 0xd1, - 0x6c, 0x68, 0xa3, 0x69, 0xa3, 0x60, 0xa3, 0x89, 0x1a, 0x07, 0x2f, 0xd5, - 0x23, 0x69, 0x6b, 0xb3, 0x23, 0x69, 0x20, 0x68, 0xc0, 0x1a, 0x63, 0x69, - 0xf6, 0xb2, 0x83, 0x42, 0x37, 0x46, 0x04, 0xdc, 0x21, 0x46, 0x28, 0x46, - 0xfd, 0xf7, 0xf8, 0xfd, 0x30, 0xbb, 0xa3, 0x68, 0x01, 0x3b, 0xa3, 0x60, - 0x23, 0x68, 0x5a, 0x1c, 0x22, 0x60, 0x1e, 0x70, 0x63, 0x69, 0x01, 0x30, - 0x83, 0x42, 0x04, 0xd0, 0xa3, 0x89, 0xdb, 0x07, 0x06, 0xd5, 0x0a, 0x2e, - 0x04, 0xd1, 0x21, 0x46, 0x28, 0x46, 0xfd, 0xf7, 0xe3, 0xfd, 0x88, 0xb9, - 0x38, 0x46, 0xf8, 0xbd, 0x0a, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, - 0xcf, 0xe7, 0x09, 0x4b, 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xca, 0xe7, - 0x21, 0x46, 0x28, 0x46, 0x00, 0xf0, 0x0c, 0xf8, 0x00, 0x28, 0xcb, 0xd0, - 0x4f, 0xf0, 0xff, 0x37, 0xea, 0xe7, 0x00, 0xbf, 0x34, 0xd2, 0x01, 0x08, - 0x54, 0xd2, 0x01, 0x08, 0x14, 0xd2, 0x01, 0x08, 0x32, 0x4b, 0x70, 0xb5, - 0x1d, 0x68, 0x06, 0x46, 0x0c, 0x46, 0x25, 0xb1, 0xab, 0x69, 0x13, 0xb9, - 0x28, 0x46, 0xfd, 0xf7, 0x61, 0xfe, 0x2e, 0x4b, 0x9c, 0x42, 0x0f, 0xd1, - 0x6c, 0x68, 0xa3, 0x89, 0xb4, 0xf9, 0x0c, 0x20, 0x19, 0x07, 0x2c, 0xd4, - 0xdd, 0x06, 0x11, 0xd4, 0x09, 0x23, 0x33, 0x60, 0x42, 0xf0, 0x40, 0x03, - 0xa3, 0x81, 0x4f, 0xf0, 0xff, 0x30, 0x3e, 0xe0, 0x25, 0x4b, 0x9c, 0x42, - 0x01, 0xd1, 0xac, 0x68, 0xeb, 0xe7, 0x24, 0x4b, 0x9c, 0x42, 0x08, 0xbf, - 0xec, 0x68, 0xe6, 0xe7, 0x58, 0x07, 0x12, 0xd5, 0x61, 0x6b, 0x41, 0xb1, - 0x04, 0xf1, 0x44, 0x03, 0x99, 0x42, 0x02, 0xd0, 0x30, 0x46, 0xf2, 0xf7, - 0x5f, 0xfc, 0x00, 0x23, 0x63, 0x63, 0xa3, 0x89, 0x23, 0xf0, 0x24, 0x03, - 0xa3, 0x81, 0x00, 0x23, 0x63, 0x60, 0x23, 0x69, 0x23, 0x60, 0xa3, 0x89, - 0x43, 0xf0, 0x08, 0x03, 0xa3, 0x81, 0x23, 0x69, 0x4b, 0xb9, 0xa3, 0x89, - 0x03, 0xf4, 0x20, 0x73, 0xb3, 0xf5, 0x00, 0x7f, 0x03, 0xd0, 0x21, 0x46, - 0x30, 0x46, 0xfe, 0xf7, 0x49, 0xfa, 0xa0, 0x89, 0xb4, 0xf9, 0x0c, 0x20, - 0x10, 0xf0, 0x01, 0x03, 0x0a, 0xd0, 0x00, 0x23, 0xa3, 0x60, 0x63, 0x69, - 0x5b, 0x42, 0xa3, 0x61, 0x23, 0x69, 0x43, 0xb9, 0x10, 0xf0, 0x80, 0x00, - 0xba, 0xd1, 0x70, 0xbd, 0x81, 0x07, 0x58, 0xbf, 0x63, 0x69, 0xa3, 0x60, - 0xf4, 0xe7, 0x00, 0x20, 0xf7, 0xe7, 0x00, 0xbf, 0x10, 0x03, 0x00, 0x24, - 0x34, 0xd2, 0x01, 0x08, 0x54, 0xd2, 0x01, 0x08, 0x14, 0xd2, 0x01, 0x08, - 0x7b, 0xb9, 0x72, 0xb9, 0x00, 0x29, 0xbe, 0xbf, 0x00, 0x20, 0x4f, 0xf0, - 0x00, 0x41, 0x06, 0xe0, 0x08, 0xbf, 0x00, 0x28, 0x1c, 0xbf, 0x6f, 0xf0, - 0x00, 0x41, 0x4f, 0xf0, 0xff, 0x30, 0x00, 0xf0, 0xa1, 0xb9, 0xad, 0xf1, - 0x08, 0x0c, 0x6d, 0xe9, 0x04, 0xce, 0x00, 0x29, 0x09, 0xdb, 0x00, 0x2b, - 0x1a, 0xdb, 0x00, 0xf0, 0x35, 0xf8, 0xdd, 0xf8, 0x04, 0xe0, 0xdd, 0xe9, - 0x02, 0x23, 0x04, 0xb0, 0x70, 0x47, 0x40, 0x42, 0x61, 0xeb, 0x41, 0x01, - 0x00, 0x2b, 0x1b, 0xdb, 0x00, 0xf0, 0x28, 0xf8, 0xdd, 0xf8, 0x04, 0xe0, - 0xdd, 0xe9, 0x02, 0x23, 0x04, 0xb0, 0x40, 0x42, 0x61, 0xeb, 0x41, 0x01, - 0x52, 0x42, 0x63, 0xeb, 0x43, 0x03, 0x70, 0x47, 0x52, 0x42, 0x63, 0xeb, - 0x43, 0x03, 0x00, 0xf0, 0x17, 0xf8, 0xdd, 0xf8, 0x04, 0xe0, 0xdd, 0xe9, - 0x02, 0x23, 0x04, 0xb0, 0x40, 0x42, 0x61, 0xeb, 0x41, 0x01, 0x70, 0x47, - 0x52, 0x42, 0x63, 0xeb, 0x43, 0x03, 0x00, 0xf0, 0x09, 0xf8, 0xdd, 0xf8, - 0x04, 0xe0, 0xdd, 0xe9, 0x02, 0x23, 0x04, 0xb0, 0x52, 0x42, 0x63, 0xeb, - 0x43, 0x03, 0x70, 0x47, 0x2d, 0xe9, 0xf0, 0x47, 0x08, 0x9d, 0x04, 0x46, - 0x8c, 0x46, 0x00, 0x2b, 0x40, 0xf0, 0x83, 0x80, 0x8a, 0x42, 0x17, 0x46, - 0x47, 0xd9, 0xb2, 0xfa, 0x82, 0xf2, 0x42, 0xb1, 0xc2, 0xf1, 0x20, 0x00, - 0x24, 0xfa, 0x00, 0xf0, 0x91, 0x40, 0x97, 0x40, 0x40, 0xea, 0x01, 0x0c, - 0x94, 0x40, 0x4f, 0xea, 0x17, 0x48, 0x23, 0x0c, 0xbc, 0xfb, 0xf8, 0xf6, - 0x1f, 0xfa, 0x87, 0xfe, 0x08, 0xfb, 0x16, 0xc1, 0x43, 0xea, 0x01, 0x43, - 0x06, 0xfb, 0x0e, 0xf1, 0x99, 0x42, 0x09, 0xd9, 0xfb, 0x18, 0x06, 0xf1, - 0xff, 0x30, 0x80, 0xf0, 0x19, 0x81, 0x99, 0x42, 0x40, 0xf2, 0x16, 0x81, - 0x02, 0x3e, 0x3b, 0x44, 0x5b, 0x1a, 0xa4, 0xb2, 0xb3, 0xfb, 0xf8, 0xf0, - 0x08, 0xfb, 0x10, 0x33, 0x44, 0xea, 0x03, 0x44, 0x00, 0xfb, 0x0e, 0xfe, - 0xa6, 0x45, 0x09, 0xd9, 0x3c, 0x19, 0x00, 0xf1, 0xff, 0x33, 0x80, 0xf0, - 0x05, 0x81, 0xa6, 0x45, 0x40, 0xf2, 0x02, 0x81, 0x02, 0x38, 0x3c, 0x44, - 0x40, 0xea, 0x06, 0x40, 0xa4, 0xeb, 0x0e, 0x04, 0x00, 0x26, 0x1d, 0xb1, - 0xd4, 0x40, 0x00, 0x23, 0xc5, 0xe9, 0x00, 0x43, 0x31, 0x46, 0xbd, 0xe8, - 0xf0, 0x87, 0x02, 0xb9, 0xff, 0xde, 0xb2, 0xfa, 0x82, 0xf2, 0x00, 0x2a, - 0x50, 0xd1, 0xcb, 0x1b, 0x4f, 0xea, 0x17, 0x4e, 0x1f, 0xfa, 0x87, 0xf8, - 0x01, 0x26, 0xb3, 0xfb, 0xfe, 0xfc, 0x21, 0x0c, 0x0e, 0xfb, 0x1c, 0x33, - 0x41, 0xea, 0x03, 0x41, 0x08, 0xfb, 0x0c, 0xf3, 0x8b, 0x42, 0x07, 0xd9, - 0x79, 0x18, 0x0c, 0xf1, 0xff, 0x30, 0x02, 0xd2, 0x8b, 0x42, 0x00, 0xf2, - 0xe9, 0x80, 0x84, 0x46, 0xc9, 0x1a, 0xa3, 0xb2, 0xb1, 0xfb, 0xfe, 0xf0, - 0x0e, 0xfb, 0x10, 0x11, 0x43, 0xea, 0x01, 0x44, 0x08, 0xfb, 0x00, 0xf8, - 0xa0, 0x45, 0x07, 0xd9, 0x3c, 0x19, 0x00, 0xf1, 0xff, 0x33, 0x02, 0xd2, - 0xa0, 0x45, 0x00, 0xf2, 0xd9, 0x80, 0x18, 0x46, 0xa4, 0xeb, 0x08, 0x04, - 0x40, 0xea, 0x0c, 0x40, 0xbf, 0xe7, 0x8b, 0x42, 0x09, 0xd9, 0x00, 0x2d, - 0x00, 0xf0, 0xb1, 0x80, 0x00, 0x26, 0xc5, 0xe9, 0x00, 0x01, 0x30, 0x46, - 0x31, 0x46, 0xbd, 0xe8, 0xf0, 0x87, 0xb3, 0xfa, 0x83, 0xf6, 0x00, 0x2e, - 0x4a, 0xd1, 0x8b, 0x42, 0x02, 0xd3, 0x82, 0x42, 0x00, 0xf2, 0xb8, 0x80, - 0x84, 0x1a, 0x61, 0xeb, 0x03, 0x01, 0x01, 0x20, 0x8c, 0x46, 0x00, 0x2d, - 0xa8, 0xd0, 0xc5, 0xe9, 0x00, 0x4c, 0xa5, 0xe7, 0xc2, 0xf1, 0x20, 0x03, - 0x20, 0xfa, 0x03, 0xf6, 0x97, 0x40, 0x01, 0xfa, 0x02, 0xf0, 0x4f, 0xea, - 0x17, 0x4e, 0xd9, 0x40, 0x30, 0x43, 0x03, 0x0c, 0xb1, 0xfb, 0xfe, 0xf6, - 0x1f, 0xfa, 0x87, 0xf8, 0x0e, 0xfb, 0x16, 0x11, 0x43, 0xea, 0x01, 0x43, - 0x06, 0xfb, 0x08, 0xf1, 0x99, 0x42, 0x04, 0xfa, 0x02, 0xf4, 0x09, 0xd9, - 0xfb, 0x18, 0x06, 0xf1, 0xff, 0x3c, 0x80, 0xf0, 0x8d, 0x80, 0x99, 0x42, - 0x40, 0xf2, 0x8a, 0x80, 0x02, 0x3e, 0x3b, 0x44, 0x5b, 0x1a, 0x81, 0xb2, - 0xb3, 0xfb, 0xfe, 0xf0, 0x0e, 0xfb, 0x10, 0x33, 0x41, 0xea, 0x03, 0x41, - 0x00, 0xfb, 0x08, 0xf3, 0x8b, 0x42, 0x07, 0xd9, 0x79, 0x18, 0x00, 0xf1, - 0xff, 0x3c, 0x73, 0xd2, 0x8b, 0x42, 0x71, 0xd9, 0x02, 0x38, 0x39, 0x44, - 0xcb, 0x1a, 0x40, 0xea, 0x06, 0x46, 0x78, 0xe7, 0xc6, 0xf1, 0x20, 0x0c, - 0x03, 0xfa, 0x06, 0xf4, 0x22, 0xfa, 0x0c, 0xf3, 0x1c, 0x43, 0x20, 0xfa, - 0x0c, 0xf7, 0x01, 0xfa, 0x06, 0xf3, 0x4f, 0xea, 0x14, 0x4e, 0x21, 0xfa, - 0x0c, 0xf1, 0x1f, 0x43, 0x3b, 0x0c, 0xb1, 0xfb, 0xfe, 0xf9, 0x1f, 0xfa, - 0x84, 0xf8, 0x0e, 0xfb, 0x19, 0x11, 0x43, 0xea, 0x01, 0x41, 0x09, 0xfb, - 0x08, 0xfa, 0x8a, 0x45, 0x02, 0xfa, 0x06, 0xf2, 0x00, 0xfa, 0x06, 0xf3, - 0x08, 0xd9, 0x61, 0x18, 0x09, 0xf1, 0xff, 0x30, 0x48, 0xd2, 0x8a, 0x45, - 0x46, 0xd9, 0xa9, 0xf1, 0x02, 0x09, 0x21, 0x44, 0xa1, 0xeb, 0x0a, 0x01, - 0xbf, 0xb2, 0xb1, 0xfb, 0xfe, 0xf0, 0x0e, 0xfb, 0x10, 0x11, 0x47, 0xea, - 0x01, 0x47, 0x00, 0xfb, 0x08, 0xf8, 0xb8, 0x45, 0x07, 0xd9, 0xe7, 0x19, - 0x00, 0xf1, 0xff, 0x31, 0x2e, 0xd2, 0xb8, 0x45, 0x2c, 0xd9, 0x02, 0x38, - 0x27, 0x44, 0x40, 0xea, 0x09, 0x40, 0xa7, 0xeb, 0x08, 0x07, 0xa0, 0xfb, - 0x02, 0x89, 0x4f, 0x45, 0xc6, 0x46, 0x49, 0x46, 0x1a, 0xd3, 0x17, 0xd0, - 0x5d, 0xb1, 0xb3, 0xeb, 0x0e, 0x02, 0x67, 0xeb, 0x01, 0x07, 0x07, 0xfa, - 0x0c, 0xfc, 0xf2, 0x40, 0x4c, 0xea, 0x02, 0x02, 0xf7, 0x40, 0xc5, 0xe9, - 0x00, 0x27, 0x00, 0x26, 0x31, 0x46, 0xbd, 0xe8, 0xf0, 0x87, 0x2e, 0x46, - 0x28, 0x46, 0x0b, 0xe7, 0x06, 0x46, 0xe9, 0xe6, 0x18, 0x46, 0xfd, 0xe6, - 0x43, 0x45, 0xe5, 0xd2, 0xb8, 0xeb, 0x02, 0x0e, 0x69, 0xeb, 0x04, 0x01, - 0x01, 0x38, 0xdf, 0xe7, 0x08, 0x46, 0xd2, 0xe7, 0x60, 0x46, 0x8d, 0xe7, - 0x81, 0x46, 0xb9, 0xe7, 0x66, 0x46, 0x75, 0xe7, 0x30, 0x46, 0x4a, 0xe7, - 0xac, 0xf1, 0x02, 0x0c, 0x39, 0x44, 0x13, 0xe7, 0x02, 0x38, 0x3c, 0x44, - 0x24, 0xe7, 0x00, 0xbf, 0x70, 0x47, 0x00, 0xbf, 0x53, 0xb9, 0x4a, 0xb9, - 0x00, 0x29, 0x08, 0xbf, 0x00, 0x28, 0x1c, 0xbf, 0x4f, 0xf0, 0xff, 0x31, - 0x4f, 0xf0, 0xff, 0x30, 0xff, 0xf7, 0xf2, 0xbf, 0xad, 0xf1, 0x08, 0x0c, - 0x6d, 0xe9, 0x04, 0xce, 0xff, 0xf7, 0x8a, 0xfe, 0xdd, 0xf8, 0x04, 0xe0, - 0xdd, 0xe9, 0x02, 0x23, 0x04, 0xb0, 0x70, 0x47, 0x43, 0x08, 0x03, 0xf0, - 0x55, 0x33, 0xc0, 0x1a, 0x83, 0x08, 0x03, 0xf0, 0x33, 0x33, 0x00, 0xf0, - 0x33, 0x30, 0x18, 0x44, 0x00, 0xeb, 0x10, 0x10, 0x00, 0xf0, 0x0f, 0x30, - 0x00, 0xeb, 0x00, 0x20, 0x00, 0xeb, 0x00, 0x40, 0x00, 0x0e, 0x70, 0x47, - 0xf8, 0xb5, 0x00, 0xbf, 0xf8, 0xbc, 0x08, 0xbc, 0x9e, 0x46, 0x70, 0x47, - 0xf8, 0xb5, 0x00, 0xbf, 0xf8, 0xbc, 0x08, 0xbc, 0x9e, 0x46, 0x70, 0x47, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x14, 0x03, 0x00, 0x24, 0x1f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x54, 0x5a, 0x00, 0x47, 0x4d, 0x54, 0x00, 0x25, - 0x31, 0x30, 0x5b, 0x5e, 0x30, 0x2d, 0x39, 0x2c, 0x2b, 0x2d, 0x5d, 0x25, - 0x6e, 0x00, 0x4d, 0x25, 0x68, 0x75, 0x25, 0x6e, 0x2e, 0x25, 0x68, 0x75, - 0x25, 0x6e, 0x2e, 0x25, 0x68, 0x75, 0x25, 0x6e, 0x00, 0x2f, 0x25, 0x68, - 0x75, 0x25, 0x6e, 0x3a, 0x25, 0x68, 0x75, 0x25, 0x6e, 0x3a, 0x25, 0x68, - 0x75, 0x25, 0x6e, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x88, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x04, 0x04, 0x04, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x10, 0x10, 0x10, 0x10, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x6c, 0x4c, - 0x00, 0x2b, 0x2d, 0x00, 0x30, 0x30, 0x00, 0x78, 0x58, 0x00, 0x41, 0x2d, - 0x46, 0x61, 0x2d, 0x66, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, - 0x36, 0x37, 0x5d, 0x00, 0x19, 0xd4, 0x01, 0x08, 0x1c, 0xd4, 0x01, 0x08, - 0x1f, 0xd4, 0x01, 0x08, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, + 0xec, 0xfb, 0xb6, 0xfb, 0xf7, 0xf0, 0xbd, 0xe8, 0xf8, 0x83, 0x00, 0xbf, + 0x2c, 0xf0, 0x01, 0x08, 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, + 0x07, 0xb5, 0x00, 0x93, 0x13, 0x46, 0x0a, 0x46, 0x01, 0x46, 0x03, 0x48, + 0x00, 0x68, 0xff, 0xf7, 0x97, 0xff, 0x03, 0xb0, 0x5d, 0xf8, 0x04, 0xfb, + 0x10, 0x03, 0x00, 0x24, 0x30, 0xb5, 0x01, 0x39, 0x00, 0x24, 0xa2, 0x42, + 0x01, 0xd1, 0x00, 0x20, 0x05, 0xe0, 0x03, 0x5d, 0x01, 0x34, 0x0d, 0x5d, + 0xab, 0x42, 0xf6, 0xd0, 0x58, 0x1b, 0x30, 0xbd, 0x70, 0xb5, 0x0d, 0x46, + 0x14, 0x46, 0x06, 0x46, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0xfd, 0xf7, + 0xb7, 0xff, 0x1c, 0x4b, 0x9c, 0x42, 0x24, 0xd1, 0x74, 0x68, 0x63, 0x6e, + 0xd8, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x99, 0x05, 0x02, 0xd4, 0xa0, 0x6d, + 0xfe, 0xf7, 0xad, 0xfb, 0xa3, 0x68, 0x01, 0x3b, 0x00, 0x2b, 0xa3, 0x60, + 0x05, 0xda, 0xa2, 0x69, 0x93, 0x42, 0x1c, 0xdb, 0xeb, 0xb2, 0x0a, 0x2b, + 0x19, 0xd0, 0x23, 0x68, 0x5a, 0x1c, 0x22, 0x60, 0x1d, 0x70, 0xed, 0xb2, + 0x63, 0x6e, 0xda, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0x02, 0xd4, + 0xa0, 0x6d, 0xfe, 0xf7, 0x96, 0xfb, 0x28, 0x46, 0x70, 0xbd, 0x09, 0x4b, + 0x9c, 0x42, 0x01, 0xd1, 0xb4, 0x68, 0xd6, 0xe7, 0x07, 0x4b, 0x9c, 0x42, + 0x08, 0xbf, 0xf4, 0x68, 0xd1, 0xe7, 0x29, 0x46, 0x22, 0x46, 0x30, 0x46, + 0x00, 0xf0, 0xc0, 0xf8, 0x05, 0x46, 0xe3, 0xe7, 0x2c, 0xf0, 0x01, 0x08, + 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, 0x70, 0xb5, 0x0e, 0x46, + 0x05, 0x46, 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0xfd, 0xf7, 0x70, 0xff, + 0xab, 0x69, 0xac, 0x68, 0x13, 0xb9, 0x28, 0x46, 0xfd, 0xf7, 0x6a, 0xff, + 0x2c, 0x4b, 0x9c, 0x42, 0x20, 0xd1, 0x6c, 0x68, 0x63, 0x6e, 0xdb, 0x07, + 0x05, 0xd4, 0xa3, 0x89, 0x98, 0x05, 0x02, 0xd4, 0xa0, 0x6d, 0xfe, 0xf7, + 0x60, 0xfb, 0xa3, 0x89, 0x19, 0x07, 0x1d, 0xd5, 0x23, 0x69, 0xdb, 0xb1, + 0x01, 0x3e, 0xa3, 0x68, 0x16, 0xf8, 0x01, 0x1f, 0x01, 0x3b, 0xa3, 0x60, + 0x39, 0xbb, 0x00, 0x2b, 0x38, 0xda, 0x22, 0x46, 0x0a, 0x21, 0x28, 0x46, + 0x00, 0xf0, 0x8a, 0xf8, 0x01, 0x30, 0x11, 0xd0, 0x0a, 0x25, 0x11, 0xe0, + 0x1b, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, 0xda, 0xe7, 0x1a, 0x4b, + 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xd5, 0xe7, 0x21, 0x46, 0x28, 0x46, + 0x00, 0xf0, 0xca, 0xf8, 0x00, 0x28, 0xdd, 0xd0, 0x4f, 0xf0, 0xff, 0x35, + 0x63, 0x6e, 0xda, 0x07, 0x05, 0xd4, 0xa3, 0x89, 0x9b, 0x05, 0x02, 0xd4, + 0xa0, 0x6d, 0xfe, 0xf7, 0x30, 0xfb, 0x28, 0x46, 0x70, 0xbd, 0x00, 0x2b, + 0x04, 0xda, 0xa2, 0x69, 0x9a, 0x42, 0x06, 0xdc, 0x0a, 0x29, 0x04, 0xd0, + 0x23, 0x68, 0x5a, 0x1c, 0x22, 0x60, 0x19, 0x70, 0xc5, 0xe7, 0x22, 0x46, + 0x28, 0x46, 0x00, 0xf0, 0x59, 0xf8, 0x01, 0x30, 0xbf, 0xd1, 0xdf, 0xe7, + 0x23, 0x68, 0x0a, 0x25, 0x5a, 0x1c, 0x22, 0x60, 0x1d, 0x70, 0xdb, 0xe7, + 0x2c, 0xf0, 0x01, 0x08, 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, + 0x02, 0x4b, 0x01, 0x46, 0x18, 0x68, 0xff, 0xf7, 0x8d, 0xbf, 0x00, 0xbf, + 0x10, 0x03, 0x00, 0x24, 0xc9, 0xb2, 0x03, 0x46, 0x10, 0xf8, 0x01, 0x2b, + 0x1a, 0xb1, 0x8a, 0x42, 0xf9, 0xd1, 0x18, 0x46, 0x70, 0x47, 0x00, 0x29, + 0x18, 0xbf, 0x00, 0x23, 0xf9, 0xe7, 0x70, 0xb5, 0x03, 0x46, 0x1e, 0x46, + 0x13, 0xf8, 0x01, 0x4b, 0x44, 0xb1, 0x4a, 0x1e, 0x01, 0xe0, 0xa5, 0x42, + 0x04, 0xd0, 0x12, 0xf8, 0x01, 0x5f, 0x00, 0x2d, 0xf9, 0xd1, 0xf2, 0xe7, + 0x30, 0x1a, 0x70, 0xbd, 0x10, 0xb5, 0x01, 0x39, 0x03, 0x46, 0x32, 0xb1, + 0x11, 0xf8, 0x01, 0x4f, 0x03, 0xf8, 0x01, 0x4b, 0x01, 0x3a, 0x00, 0x2c, + 0xf7, 0xd1, 0x1a, 0x44, 0x00, 0x21, 0x93, 0x42, 0x00, 0xd1, 0x10, 0xbd, + 0x03, 0xf8, 0x01, 0x1b, 0xf9, 0xe7, 0x70, 0xb5, 0x03, 0x46, 0x1e, 0x46, + 0x13, 0xf8, 0x01, 0x4b, 0x3c, 0xb1, 0x4a, 0x1e, 0x01, 0xe0, 0xa5, 0x42, + 0xf7, 0xd0, 0x12, 0xf8, 0x01, 0x5f, 0x00, 0x2d, 0xf9, 0xd1, 0x30, 0x1a, + 0x70, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x0e, 0x46, 0x14, 0x46, 0x05, 0x46, + 0x18, 0xb1, 0x83, 0x69, 0x0b, 0xb9, 0xfd, 0xf7, 0xb7, 0xfe, 0x21, 0x4b, + 0x9c, 0x42, 0x2b, 0xd1, 0x6c, 0x68, 0xa3, 0x69, 0xa3, 0x60, 0xa3, 0x89, + 0x1a, 0x07, 0x2f, 0xd5, 0x23, 0x69, 0x6b, 0xb3, 0x23, 0x69, 0x20, 0x68, + 0xc0, 0x1a, 0x63, 0x69, 0xf6, 0xb2, 0x83, 0x42, 0x37, 0x46, 0x04, 0xdc, + 0x21, 0x46, 0x28, 0x46, 0xfd, 0xf7, 0xfa, 0xfd, 0x30, 0xbb, 0xa3, 0x68, + 0x01, 0x3b, 0xa3, 0x60, 0x23, 0x68, 0x5a, 0x1c, 0x22, 0x60, 0x1e, 0x70, + 0x63, 0x69, 0x01, 0x30, 0x83, 0x42, 0x04, 0xd0, 0xa3, 0x89, 0xdb, 0x07, + 0x06, 0xd5, 0x0a, 0x2e, 0x04, 0xd1, 0x21, 0x46, 0x28, 0x46, 0xfd, 0xf7, + 0xe5, 0xfd, 0x88, 0xb9, 0x38, 0x46, 0xf8, 0xbd, 0x0a, 0x4b, 0x9c, 0x42, + 0x01, 0xd1, 0xac, 0x68, 0xcf, 0xe7, 0x09, 0x4b, 0x9c, 0x42, 0x08, 0xbf, + 0xec, 0x68, 0xca, 0xe7, 0x21, 0x46, 0x28, 0x46, 0x00, 0xf0, 0x0c, 0xf8, + 0x00, 0x28, 0xcb, 0xd0, 0x4f, 0xf0, 0xff, 0x37, 0xea, 0xe7, 0x00, 0xbf, + 0x2c, 0xf0, 0x01, 0x08, 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, + 0x32, 0x4b, 0x70, 0xb5, 0x1d, 0x68, 0x06, 0x46, 0x0c, 0x46, 0x25, 0xb1, + 0xab, 0x69, 0x13, 0xb9, 0x28, 0x46, 0xfd, 0xf7, 0x63, 0xfe, 0x2e, 0x4b, + 0x9c, 0x42, 0x0f, 0xd1, 0x6c, 0x68, 0xa3, 0x89, 0xb4, 0xf9, 0x0c, 0x20, + 0x19, 0x07, 0x2c, 0xd4, 0xdd, 0x06, 0x11, 0xd4, 0x09, 0x23, 0x33, 0x60, + 0x42, 0xf0, 0x40, 0x03, 0xa3, 0x81, 0x4f, 0xf0, 0xff, 0x30, 0x3e, 0xe0, + 0x25, 0x4b, 0x9c, 0x42, 0x01, 0xd1, 0xac, 0x68, 0xeb, 0xe7, 0x24, 0x4b, + 0x9c, 0x42, 0x08, 0xbf, 0xec, 0x68, 0xe6, 0xe7, 0x58, 0x07, 0x12, 0xd5, + 0x61, 0x6b, 0x41, 0xb1, 0x04, 0xf1, 0x44, 0x03, 0x99, 0x42, 0x02, 0xd0, + 0x30, 0x46, 0xf1, 0xf7, 0x5f, 0xfd, 0x00, 0x23, 0x63, 0x63, 0xa3, 0x89, + 0x23, 0xf0, 0x24, 0x03, 0xa3, 0x81, 0x00, 0x23, 0x63, 0x60, 0x23, 0x69, + 0x23, 0x60, 0xa3, 0x89, 0x43, 0xf0, 0x08, 0x03, 0xa3, 0x81, 0x23, 0x69, + 0x4b, 0xb9, 0xa3, 0x89, 0x03, 0xf4, 0x20, 0x73, 0xb3, 0xf5, 0x00, 0x7f, + 0x03, 0xd0, 0x21, 0x46, 0x30, 0x46, 0xfe, 0xf7, 0x4b, 0xfa, 0xa0, 0x89, + 0xb4, 0xf9, 0x0c, 0x20, 0x10, 0xf0, 0x01, 0x03, 0x0a, 0xd0, 0x00, 0x23, + 0xa3, 0x60, 0x63, 0x69, 0x5b, 0x42, 0xa3, 0x61, 0x23, 0x69, 0x43, 0xb9, + 0x10, 0xf0, 0x80, 0x00, 0xba, 0xd1, 0x70, 0xbd, 0x81, 0x07, 0x58, 0xbf, + 0x63, 0x69, 0xa3, 0x60, 0xf4, 0xe7, 0x00, 0x20, 0xf7, 0xe7, 0x00, 0xbf, + 0x10, 0x03, 0x00, 0x24, 0x2c, 0xf0, 0x01, 0x08, 0x4c, 0xf0, 0x01, 0x08, + 0x0c, 0xf0, 0x01, 0x08, 0x7b, 0xb9, 0x72, 0xb9, 0x00, 0x29, 0xbe, 0xbf, + 0x00, 0x20, 0x4f, 0xf0, 0x00, 0x41, 0x06, 0xe0, 0x08, 0xbf, 0x00, 0x28, + 0x1c, 0xbf, 0x6f, 0xf0, 0x00, 0x41, 0x4f, 0xf0, 0xff, 0x30, 0x00, 0xf0, + 0xa1, 0xb9, 0xad, 0xf1, 0x08, 0x0c, 0x6d, 0xe9, 0x04, 0xce, 0x00, 0x29, + 0x09, 0xdb, 0x00, 0x2b, 0x1a, 0xdb, 0x00, 0xf0, 0x35, 0xf8, 0xdd, 0xf8, + 0x04, 0xe0, 0xdd, 0xe9, 0x02, 0x23, 0x04, 0xb0, 0x70, 0x47, 0x40, 0x42, + 0x61, 0xeb, 0x41, 0x01, 0x00, 0x2b, 0x1b, 0xdb, 0x00, 0xf0, 0x28, 0xf8, + 0xdd, 0xf8, 0x04, 0xe0, 0xdd, 0xe9, 0x02, 0x23, 0x04, 0xb0, 0x40, 0x42, + 0x61, 0xeb, 0x41, 0x01, 0x52, 0x42, 0x63, 0xeb, 0x43, 0x03, 0x70, 0x47, + 0x52, 0x42, 0x63, 0xeb, 0x43, 0x03, 0x00, 0xf0, 0x17, 0xf8, 0xdd, 0xf8, + 0x04, 0xe0, 0xdd, 0xe9, 0x02, 0x23, 0x04, 0xb0, 0x40, 0x42, 0x61, 0xeb, + 0x41, 0x01, 0x70, 0x47, 0x52, 0x42, 0x63, 0xeb, 0x43, 0x03, 0x00, 0xf0, + 0x09, 0xf8, 0xdd, 0xf8, 0x04, 0xe0, 0xdd, 0xe9, 0x02, 0x23, 0x04, 0xb0, + 0x52, 0x42, 0x63, 0xeb, 0x43, 0x03, 0x70, 0x47, 0x2d, 0xe9, 0xf0, 0x47, + 0x08, 0x9d, 0x04, 0x46, 0x8c, 0x46, 0x00, 0x2b, 0x40, 0xf0, 0x83, 0x80, + 0x8a, 0x42, 0x17, 0x46, 0x47, 0xd9, 0xb2, 0xfa, 0x82, 0xf2, 0x42, 0xb1, + 0xc2, 0xf1, 0x20, 0x00, 0x24, 0xfa, 0x00, 0xf0, 0x91, 0x40, 0x97, 0x40, + 0x40, 0xea, 0x01, 0x0c, 0x94, 0x40, 0x4f, 0xea, 0x17, 0x48, 0x23, 0x0c, + 0xbc, 0xfb, 0xf8, 0xf6, 0x1f, 0xfa, 0x87, 0xfe, 0x08, 0xfb, 0x16, 0xc1, + 0x43, 0xea, 0x01, 0x43, 0x06, 0xfb, 0x0e, 0xf1, 0x99, 0x42, 0x09, 0xd9, + 0xfb, 0x18, 0x06, 0xf1, 0xff, 0x30, 0x80, 0xf0, 0x19, 0x81, 0x99, 0x42, + 0x40, 0xf2, 0x16, 0x81, 0x02, 0x3e, 0x3b, 0x44, 0x5b, 0x1a, 0xa4, 0xb2, + 0xb3, 0xfb, 0xf8, 0xf0, 0x08, 0xfb, 0x10, 0x33, 0x44, 0xea, 0x03, 0x44, + 0x00, 0xfb, 0x0e, 0xfe, 0xa6, 0x45, 0x09, 0xd9, 0x3c, 0x19, 0x00, 0xf1, + 0xff, 0x33, 0x80, 0xf0, 0x05, 0x81, 0xa6, 0x45, 0x40, 0xf2, 0x02, 0x81, + 0x02, 0x38, 0x3c, 0x44, 0x40, 0xea, 0x06, 0x40, 0xa4, 0xeb, 0x0e, 0x04, + 0x00, 0x26, 0x1d, 0xb1, 0xd4, 0x40, 0x00, 0x23, 0xc5, 0xe9, 0x00, 0x43, + 0x31, 0x46, 0xbd, 0xe8, 0xf0, 0x87, 0x02, 0xb9, 0xff, 0xde, 0xb2, 0xfa, + 0x82, 0xf2, 0x00, 0x2a, 0x50, 0xd1, 0xcb, 0x1b, 0x4f, 0xea, 0x17, 0x4e, + 0x1f, 0xfa, 0x87, 0xf8, 0x01, 0x26, 0xb3, 0xfb, 0xfe, 0xfc, 0x21, 0x0c, + 0x0e, 0xfb, 0x1c, 0x33, 0x41, 0xea, 0x03, 0x41, 0x08, 0xfb, 0x0c, 0xf3, + 0x8b, 0x42, 0x07, 0xd9, 0x79, 0x18, 0x0c, 0xf1, 0xff, 0x30, 0x02, 0xd2, + 0x8b, 0x42, 0x00, 0xf2, 0xe9, 0x80, 0x84, 0x46, 0xc9, 0x1a, 0xa3, 0xb2, + 0xb1, 0xfb, 0xfe, 0xf0, 0x0e, 0xfb, 0x10, 0x11, 0x43, 0xea, 0x01, 0x44, + 0x08, 0xfb, 0x00, 0xf8, 0xa0, 0x45, 0x07, 0xd9, 0x3c, 0x19, 0x00, 0xf1, + 0xff, 0x33, 0x02, 0xd2, 0xa0, 0x45, 0x00, 0xf2, 0xd9, 0x80, 0x18, 0x46, + 0xa4, 0xeb, 0x08, 0x04, 0x40, 0xea, 0x0c, 0x40, 0xbf, 0xe7, 0x8b, 0x42, + 0x09, 0xd9, 0x00, 0x2d, 0x00, 0xf0, 0xb1, 0x80, 0x00, 0x26, 0xc5, 0xe9, + 0x00, 0x01, 0x30, 0x46, 0x31, 0x46, 0xbd, 0xe8, 0xf0, 0x87, 0xb3, 0xfa, + 0x83, 0xf6, 0x00, 0x2e, 0x4a, 0xd1, 0x8b, 0x42, 0x02, 0xd3, 0x82, 0x42, + 0x00, 0xf2, 0xb8, 0x80, 0x84, 0x1a, 0x61, 0xeb, 0x03, 0x01, 0x01, 0x20, + 0x8c, 0x46, 0x00, 0x2d, 0xa8, 0xd0, 0xc5, 0xe9, 0x00, 0x4c, 0xa5, 0xe7, + 0xc2, 0xf1, 0x20, 0x03, 0x20, 0xfa, 0x03, 0xf6, 0x97, 0x40, 0x01, 0xfa, + 0x02, 0xf0, 0x4f, 0xea, 0x17, 0x4e, 0xd9, 0x40, 0x30, 0x43, 0x03, 0x0c, + 0xb1, 0xfb, 0xfe, 0xf6, 0x1f, 0xfa, 0x87, 0xf8, 0x0e, 0xfb, 0x16, 0x11, + 0x43, 0xea, 0x01, 0x43, 0x06, 0xfb, 0x08, 0xf1, 0x99, 0x42, 0x04, 0xfa, + 0x02, 0xf4, 0x09, 0xd9, 0xfb, 0x18, 0x06, 0xf1, 0xff, 0x3c, 0x80, 0xf0, + 0x8d, 0x80, 0x99, 0x42, 0x40, 0xf2, 0x8a, 0x80, 0x02, 0x3e, 0x3b, 0x44, + 0x5b, 0x1a, 0x81, 0xb2, 0xb3, 0xfb, 0xfe, 0xf0, 0x0e, 0xfb, 0x10, 0x33, + 0x41, 0xea, 0x03, 0x41, 0x00, 0xfb, 0x08, 0xf3, 0x8b, 0x42, 0x07, 0xd9, + 0x79, 0x18, 0x00, 0xf1, 0xff, 0x3c, 0x73, 0xd2, 0x8b, 0x42, 0x71, 0xd9, + 0x02, 0x38, 0x39, 0x44, 0xcb, 0x1a, 0x40, 0xea, 0x06, 0x46, 0x78, 0xe7, + 0xc6, 0xf1, 0x20, 0x0c, 0x03, 0xfa, 0x06, 0xf4, 0x22, 0xfa, 0x0c, 0xf3, + 0x1c, 0x43, 0x20, 0xfa, 0x0c, 0xf7, 0x01, 0xfa, 0x06, 0xf3, 0x4f, 0xea, + 0x14, 0x4e, 0x21, 0xfa, 0x0c, 0xf1, 0x1f, 0x43, 0x3b, 0x0c, 0xb1, 0xfb, + 0xfe, 0xf9, 0x1f, 0xfa, 0x84, 0xf8, 0x0e, 0xfb, 0x19, 0x11, 0x43, 0xea, + 0x01, 0x41, 0x09, 0xfb, 0x08, 0xfa, 0x8a, 0x45, 0x02, 0xfa, 0x06, 0xf2, + 0x00, 0xfa, 0x06, 0xf3, 0x08, 0xd9, 0x61, 0x18, 0x09, 0xf1, 0xff, 0x30, + 0x48, 0xd2, 0x8a, 0x45, 0x46, 0xd9, 0xa9, 0xf1, 0x02, 0x09, 0x21, 0x44, + 0xa1, 0xeb, 0x0a, 0x01, 0xbf, 0xb2, 0xb1, 0xfb, 0xfe, 0xf0, 0x0e, 0xfb, + 0x10, 0x11, 0x47, 0xea, 0x01, 0x47, 0x00, 0xfb, 0x08, 0xf8, 0xb8, 0x45, + 0x07, 0xd9, 0xe7, 0x19, 0x00, 0xf1, 0xff, 0x31, 0x2e, 0xd2, 0xb8, 0x45, + 0x2c, 0xd9, 0x02, 0x38, 0x27, 0x44, 0x40, 0xea, 0x09, 0x40, 0xa7, 0xeb, + 0x08, 0x07, 0xa0, 0xfb, 0x02, 0x89, 0x4f, 0x45, 0xc6, 0x46, 0x49, 0x46, + 0x1a, 0xd3, 0x17, 0xd0, 0x5d, 0xb1, 0xb3, 0xeb, 0x0e, 0x02, 0x67, 0xeb, + 0x01, 0x07, 0x07, 0xfa, 0x0c, 0xfc, 0xf2, 0x40, 0x4c, 0xea, 0x02, 0x02, + 0xf7, 0x40, 0xc5, 0xe9, 0x00, 0x27, 0x00, 0x26, 0x31, 0x46, 0xbd, 0xe8, + 0xf0, 0x87, 0x2e, 0x46, 0x28, 0x46, 0x0b, 0xe7, 0x06, 0x46, 0xe9, 0xe6, + 0x18, 0x46, 0xfd, 0xe6, 0x43, 0x45, 0xe5, 0xd2, 0xb8, 0xeb, 0x02, 0x0e, + 0x69, 0xeb, 0x04, 0x01, 0x01, 0x38, 0xdf, 0xe7, 0x08, 0x46, 0xd2, 0xe7, + 0x60, 0x46, 0x8d, 0xe7, 0x81, 0x46, 0xb9, 0xe7, 0x66, 0x46, 0x75, 0xe7, + 0x30, 0x46, 0x4a, 0xe7, 0xac, 0xf1, 0x02, 0x0c, 0x39, 0x44, 0x13, 0xe7, + 0x02, 0x38, 0x3c, 0x44, 0x24, 0xe7, 0x00, 0xbf, 0x70, 0x47, 0x00, 0xbf, + 0x53, 0xb9, 0x4a, 0xb9, 0x00, 0x29, 0x08, 0xbf, 0x00, 0x28, 0x1c, 0xbf, + 0x4f, 0xf0, 0xff, 0x31, 0x4f, 0xf0, 0xff, 0x30, 0xff, 0xf7, 0xf2, 0xbf, + 0xad, 0xf1, 0x08, 0x0c, 0x6d, 0xe9, 0x04, 0xce, 0xff, 0xf7, 0x8a, 0xfe, + 0xdd, 0xf8, 0x04, 0xe0, 0xdd, 0xe9, 0x02, 0x23, 0x04, 0xb0, 0x70, 0x47, + 0x43, 0x08, 0x03, 0xf0, 0x55, 0x33, 0xc0, 0x1a, 0x83, 0x08, 0x03, 0xf0, + 0x33, 0x33, 0x00, 0xf0, 0x33, 0x30, 0x18, 0x44, 0x00, 0xeb, 0x10, 0x10, + 0x00, 0xf0, 0x0f, 0x30, 0x00, 0xeb, 0x00, 0x20, 0x00, 0xeb, 0x00, 0x40, + 0x00, 0x0e, 0x70, 0x47, 0xf8, 0xb5, 0x00, 0xbf, 0xf8, 0xbc, 0x08, 0xbc, + 0x9e, 0x46, 0x70, 0x47, 0xf8, 0xb5, 0x00, 0xbf, 0xf8, 0xbc, 0x08, 0xbc, + 0x9e, 0x46, 0x70, 0x47, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x0a, 0x00, 0x49, 0x6e, 0x76, @@ -9996,21 +9963,21 @@ const unsigned char mcuboot_bin[] = { 0x65, 0x73, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x00, 0x50, 0x69, 0x6e, 0x6d, 0x61, 0x70, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x2e, 0x00, 0x45, 0x2d, 0x49, 0x6e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x20, 0x66, 0x61, 0x5f, - 0x69, 0x64, 0x20, 0x25, 0x64, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, 0x6c, 0x65, 0x6e, 0x20, 0x30, 0x78, - 0x25, 0x78, 0x0a, 0x00, 0x45, 0x2d, 0x52, 0x65, 0x61, 0x64, 0x20, 0x66, - 0x61, 0x69, 0x6c, 0x65, 0x64, 0x3a, 0x20, 0x66, 0x61, 0x5f, 0x69, 0x64, - 0x20, 0x25, 0x64, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x30, - 0x78, 0x25, 0x78, 0x20, 0x6c, 0x65, 0x6e, 0x20, 0x30, 0x78, 0x25, 0x78, - 0x0a, 0x00, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x61, 0x64, 0x00, 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x00, - 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x75, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x6d, 0x75, 0x74, 0x65, - 0x78, 0x00, 0x45, 0x2d, 0x52, 0x54, 0x43, 0x53, 0x65, 0x74, 0x42, 0x4b, - 0x50, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, 0x4d, 0x43, + 0x62, 0x65, 0x72, 0x2e, 0x00, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x65, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x00, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x75, 0x6e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x6d, + 0x75, 0x74, 0x65, 0x78, 0x00, 0x45, 0x2d, 0x52, 0x54, 0x43, 0x53, 0x65, + 0x74, 0x42, 0x4b, 0x50, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x00, 0x45, 0x2d, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x72, + 0x65, 0x61, 0x64, 0x3a, 0x20, 0x66, 0x61, 0x5f, 0x69, 0x64, 0x20, 0x25, + 0x64, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x30, 0x78, 0x25, + 0x78, 0x20, 0x6c, 0x65, 0x6e, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, + 0x45, 0x2d, 0x52, 0x65, 0x61, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x3a, 0x20, 0x66, 0x61, 0x5f, 0x69, 0x64, 0x20, 0x25, 0x64, 0x20, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20, + 0x6c, 0x65, 0x6e, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0x4d, 0x43, 0x55, 0x42, 0x6f, 0x6f, 0x74, 0x5f, 0x45, 0x43, 0x49, 0x45, 0x53, 0x5f, 0x76, 0x31, 0x00, 0x45, 0x2d, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x2c, 0x20, 0x75, 0x6e, @@ -10025,101 +9992,24 @@ const unsigned char mcuboot_bin[] = { 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x73, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x73, 0x77, 0x61, 0x70, 0x0a, 0x00, 0x67, 0x6f, 0x6f, 0x64, 0x00, 0x75, - 0x6e, 0x73, 0x65, 0x74, 0x00, 0x62, 0x61, 0x64, 0x00, 0x42, 0x55, 0x47, - 0x3b, 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x68, 0x61, 0x70, 0x70, - 0x65, 0x6e, 0x00, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x00, 0x74, 0x65, - 0x73, 0x74, 0x00, 0x70, 0x65, 0x72, 0x6d, 0x00, 0x49, 0x2d, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x4d, 0x43, 0x55, 0x62, 0x6f, - 0x6f, 0x74, 0x00, 0x42, 0x6f, 0x6f, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x0a, - 0x00, 0x49, 0x2d, 0x25, 0x73, 0x0a, 0x00, 0x57, 0x2d, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, - 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x20, 0x42, 0x4f, 0x4f, - 0x54, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4d, 0x47, 0x5f, 0x53, 0x45, - 0x43, 0x54, 0x4f, 0x52, 0x53, 0x3d, 0x25, 0x64, 0x20, 0x2d, 0x20, 0x74, - 0x6f, 0x6f, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x3f, 0x0a, 0x00, 0x57, - 0x2d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, - 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x73, 0x3b, 0x20, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x3d, 0x25, 0x75, 0x0a, 0x00, 0x57, 0x2d, 0x43, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x3a, 0x20, 0x6d, - 0x6f, 0x72, 0x65, 0x20, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x20, - 0x74, 0x68, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, - 0x00, 0x57, 0x2d, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x75, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x3a, 0x20, 0x73, 0x6c, 0x6f, 0x74, 0x73, - 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x63, 0x6f, - 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x00, 0x57, 0x2d, 0x43, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x3a, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x20, 0x66, 0x69, 0x74, 0x20, 0x69, 0x6e, 0x73, 0x69, 0x64, - 0x65, 0x20, 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x00, 0x57, 0x2d, - 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x3a, 0x20, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x20, 0x61, 0x72, - 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, - 0x69, 0x62, 0x6c, 0x65, 0x00, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x00, 0x49, 0x2d, 0x25, 0x73, 0x3a, - 0x20, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x3d, 0x25, 0x73, 0x2c, 0x20, 0x73, - 0x77, 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x30, 0x78, 0x25, - 0x78, 0x2c, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x64, 0x6f, 0x6e, 0x65, - 0x3d, 0x30, 0x78, 0x25, 0x78, 0x2c, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, - 0x5f, 0x6f, 0x6b, 0x3d, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0x53, 0x63, - 0x72, 0x61, 0x74, 0x63, 0x68, 0x00, 0x49, 0x2d, 0x42, 0x6f, 0x6f, 0x74, - 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x20, 0x25, 0x73, 0x0a, - 0x00, 0x49, 0x2d, 0x42, 0x6f, 0x6f, 0x74, 0x20, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x00, 0x45, 0x2d, 0x44, - 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x63, 0x6f, - 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x21, 0x00, 0x57, 0x2d, 0x46, 0x61, 0x69, 0x6c, 0x65, - 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x6f, - 0x6f, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3b, 0x20, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x3d, 0x25, 0x75, 0x0a, 0x00, 0x45, 0x2d, 0x70, - 0x61, 0x6e, 0x69, 0x63, 0x21, 0x00, 0x49, 0x2d, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x61, 0x72, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, - 0x6f, 0x66, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x70, 0x61, 0x69, - 0x72, 0x20, 0x28, 0x25, 0x64, 0x2e, 0x29, 0x20, 0x69, 0x73, 0x20, 0x75, - 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x20, - 0x54, 0x72, 0x65, 0x61, 0x74, 0x20, 0x69, 0x74, 0x20, 0x61, 0x73, 0x20, - 0x65, 0x6d, 0x70, 0x74, 0x79, 0x0a, 0x00, 0x49, 0x2d, 0x53, 0x77, 0x61, - 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x25, 0x73, 0x0a, 0x00, - 0x49, 0x2d, 0x53, 0x77, 0x61, 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, - 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x00, 0x49, 0x2d, 0x49, 0x6d, 0x61, 0x67, - 0x65, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x20, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x20, 0x73, 0x6c, 0x6f, 0x74, - 0x20, 0x2d, 0x3e, 0x20, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, - 0x73, 0x6c, 0x6f, 0x74, 0x00, 0x49, 0x2d, 0x45, 0x72, 0x61, 0x73, 0x69, - 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6d, 0x61, - 0x72, 0x79, 0x20, 0x73, 0x6c, 0x6f, 0x74, 0x00, 0x49, 0x2d, 0x43, 0x6f, - 0x70, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x20, 0x73, 0x6c, 0x6f, 0x74, - 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x20, 0x73, 0x6c, 0x6f, 0x74, 0x3a, 0x20, 0x30, 0x78, - 0x25, 0x7a, 0x78, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0a, 0x00, 0x45, - 0x2d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x25, 0x64, 0x0a, 0x0a, 0x00, 0x49, 0x2d, - 0x42, 0x6f, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x61, - 0x74, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x0a, 0x00, 0x49, 0x32, 0x43, - 0x31, 0x32, 0x33, 0x3a, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x73, 0x77, 0x61, 0x70, 0x0a, 0x00, 0x49, 0x32, 0x43, 0x31, 0x32, 0x33, + 0x3a, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x63, 0x6c, + 0x6f, 0x63, 0x6b, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x00, 0x49, + 0x32, 0x43, 0x34, 0x3a, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x00, 0x49, 0x32, 0x43, 0x34, 0x3a, 0x20, 0x49, 0x6e, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x20, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x00, 0x49, 0x32, 0x43, 0x3a, 0x20, 0x75, 0x6e, - 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x00, 0x49, 0x32, 0x43, 0x3a, 0x20, 0x61, 0x62, 0x6e, 0x6f, - 0x72, 0x6d, 0x61, 0x6c, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x73, 0x68, - 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x70, - 0x70, 0x65, 0x6e, 0x64, 0x00, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x00, - 0x53, 0x48, 0x41, 0x32, 0x32, 0x34, 0x00, 0x01, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x04, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x08, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x10, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x20, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, - 0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, - 0x06, 0x07, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x65, 0x00, 0x49, 0x32, 0x43, 0x3a, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x00, + 0x49, 0x32, 0x43, 0x3a, 0x20, 0x61, 0x62, 0x6e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, + 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6e, + 0x64, 0x00, 0x53, 0x48, 0x41, 0x32, 0x35, 0x36, 0x00, 0x53, 0x48, 0x41, + 0x32, 0x32, 0x34, 0x00, 0x01, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x04, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x08, 0x80, 0x80, 0x80, + 0x80, 0x80, 0x80, 0x80, 0x10, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x20, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x00, 0x04, 0x08, + 0x10, 0x20, 0x40, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08, + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, @@ -10151,130 +10041,120 @@ const unsigned char mcuboot_bin[] = { 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x06, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x8b, 0x01, 0x08, 0x29, 0x8b, 0x01, 0x08, - 0x41, 0xdc, 0x00, 0x08, 0xad, 0xd7, 0x00, 0x08, 0xb9, 0xe7, 0x00, 0x08, - 0x75, 0xd8, 0x00, 0x08, 0x11, 0xdb, 0x00, 0x08, 0x1d, 0xd9, 0x00, 0x08, - 0x7f, 0x57, 0x01, 0x08, 0x45, 0x89, 0x00, 0x08, 0x45, 0x89, 0x00, 0x08, - 0x3d, 0x89, 0x00, 0x08, 0xc1, 0x88, 0x00, 0x08, 0xb7, 0x88, 0x00, 0x08, - 0xbb, 0x88, 0x00, 0x08, 0xd5, 0x56, 0x01, 0x08, 0x75, 0x56, 0x01, 0x08, - 0x0d, 0x56, 0x01, 0x08, 0x35, 0x89, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xcd, 0xb9, 0x00, 0x08, 0xe1, 0xb9, 0x00, 0x08, - 0x45, 0x90, 0x00, 0x08, 0x1d, 0x90, 0x00, 0x08, 0xb9, 0xe7, 0x00, 0x08, - 0x79, 0xca, 0x00, 0x08, 0xe1, 0x8f, 0x00, 0x08, 0xab, 0x8f, 0x00, 0x08, - 0x7f, 0x57, 0x01, 0x08, 0x45, 0x89, 0x00, 0x08, 0xf7, 0x89, 0x00, 0x08, - 0x7d, 0x8f, 0x00, 0x08, 0x93, 0x8f, 0x00, 0x08, 0xe7, 0x89, 0x00, 0x08, - 0xe1, 0x89, 0x00, 0x08, 0xd5, 0x56, 0x01, 0x08, 0x75, 0x56, 0x01, 0x08, - 0x4b, 0x89, 0x00, 0x08, 0xd9, 0x89, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x45, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x49, 0xb0, 0x00, 0x08, 0x7d, 0xb0, 0x00, 0x08, - 0x45, 0xcb, 0x00, 0x08, 0x09, 0xcb, 0x00, 0x08, 0x63, 0xd2, 0x00, 0x08, - 0x75, 0x7e, 0x00, 0x08, 0xb3, 0xd1, 0x00, 0x08, 0x93, 0x7e, 0x00, 0x08, - 0x65, 0xae, 0x00, 0x08, 0x19, 0x82, 0x00, 0x08, 0xdd, 0xaf, 0x00, 0x08, - 0x7b, 0x7e, 0x00, 0x08, 0x43, 0xcf, 0x00, 0x08, 0x37, 0xca, 0x00, 0x08, - 0x29, 0xa9, 0x00, 0x08, 0x53, 0xc8, 0x00, 0x08, 0x2d, 0xc8, 0x00, 0x08, - 0x71, 0x7e, 0x00, 0x08, 0x31, 0xb4, 0x00, 0x08, 0xff, 0x81, 0x00, 0x08, - 0x81, 0x7e, 0x00, 0x08, 0xe5, 0x81, 0x00, 0x08, 0xc9, 0xb8, 0x00, 0x08, - 0x8d, 0xce, 0x00, 0x08, 0x9f, 0x8b, 0x00, 0x08, 0x13, 0xb6, 0x00, 0x08, - 0xcd, 0xb5, 0x00, 0x08, 0xcb, 0x81, 0x00, 0x08, 0xad, 0xb5, 0x00, 0x08, - 0x85, 0xcb, 0x00, 0x08, 0x45, 0xc7, 0x00, 0x08, 0x21, 0xba, 0x00, 0x08, - 0x99, 0xb0, 0x00, 0x08, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x75, 0xb0, 0x00, 0x08, 0x8f, 0xb0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0xf0, 0x00, 0x08, 0x75, 0x7e, 0x00, 0x08, 0x7b, 0x7e, 0x00, 0x08, - 0x75, 0x7e, 0x00, 0x08, 0x75, 0x7e, 0x00, 0x08, 0x93, 0x7e, 0x00, 0x08, - 0x75, 0x7e, 0x00, 0x08, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0xf0, 0x00, 0x08, 0x75, 0x7e, 0x00, 0x08, 0x7b, 0x7e, 0x00, 0x08, - 0x75, 0x7e, 0x00, 0x08, 0x75, 0x7e, 0x00, 0x08, 0x93, 0x7e, 0x00, 0x08, - 0x75, 0x7e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8d, 0xc5, 0x00, 0x08, 0xc9, 0xc5, 0x00, 0x08, 0x45, 0xcb, 0x00, 0x08, - 0x09, 0xcb, 0x00, 0x08, 0x7b, 0xc2, 0x00, 0x08, 0xf1, 0xc0, 0x00, 0x08, - 0x69, 0xbf, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x08, 0xfd, 0xbe, 0x00, 0x08, - 0xe5, 0xc5, 0x00, 0x08, 0x55, 0xc5, 0x00, 0x08, 0x2d, 0xc3, 0x00, 0x08, - 0x63, 0xcc, 0x00, 0x08, 0xa1, 0xbe, 0x00, 0x08, 0x69, 0xbe, 0x00, 0x08, - 0x31, 0xbe, 0x00, 0x08, 0x03, 0xbe, 0x00, 0x08, 0x71, 0x7e, 0x00, 0x08, - 0xad, 0xbd, 0x00, 0x08, 0x8d, 0xbd, 0x00, 0x08, 0x81, 0x7e, 0x00, 0x08, - 0x5d, 0xbd, 0x00, 0x08, 0x73, 0xbc, 0x00, 0x08, 0xd7, 0xcb, 0x00, 0x08, - 0x35, 0xbc, 0x00, 0x08, 0x25, 0xbb, 0x00, 0x08, 0xbf, 0xba, 0x00, 0x08, - 0x9f, 0xba, 0x00, 0x08, 0x65, 0xba, 0x00, 0x08, 0x85, 0xcb, 0x00, 0x08, - 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc5, 0x00, 0x08, - 0xdb, 0xc5, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x75, 0x06, 0x01, 0x08, 0x25, 0x07, 0x01, 0x08, 0xf9, 0x05, 0x01, 0x08, - 0xe5, 0x05, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x75, 0xf5, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf9, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x05, 0x01, 0x08, 0xd1, 0x05, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x85, 0xd4, 0x00, 0x08, 0x09, 0xd5, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x75, 0xb3, 0x00, 0x08, 0x89, 0xb3, 0x00, 0x08, + 0x69, 0x89, 0x00, 0x08, 0x41, 0x89, 0x00, 0x08, 0x0d, 0xdf, 0x00, 0x08, + 0xdd, 0xc0, 0x00, 0x08, 0x05, 0x89, 0x00, 0x08, 0xcf, 0x88, 0x00, 0x08, + 0xff, 0x4a, 0x01, 0x08, 0x01, 0x84, 0x00, 0x08, 0xb3, 0x84, 0x00, 0x08, + 0xb9, 0x88, 0x00, 0x08, 0xa1, 0x88, 0x00, 0x08, 0xa3, 0x84, 0x00, 0x08, + 0x9d, 0x84, 0x00, 0x08, 0xf9, 0x49, 0x01, 0x08, 0x99, 0x49, 0x01, 0x08, + 0x07, 0x84, 0x00, 0x08, 0x95, 0x84, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd5, 0xe3, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf1, 0xa9, 0x00, 0x08, 0x25, 0xaa, 0x00, 0x08, + 0x99, 0xc2, 0x00, 0x08, 0x5d, 0xc2, 0x00, 0x08, 0xb7, 0xc9, 0x00, 0x08, + 0x41, 0x79, 0x00, 0x08, 0x07, 0xc9, 0x00, 0x08, 0x5f, 0x79, 0x00, 0x08, + 0x0d, 0xa8, 0x00, 0x08, 0xd7, 0x7c, 0x00, 0x08, 0x85, 0xa9, 0x00, 0x08, + 0x47, 0x79, 0x00, 0x08, 0x97, 0xc6, 0x00, 0x08, 0x9b, 0xc0, 0x00, 0x08, + 0xd3, 0xa2, 0x00, 0x08, 0xb7, 0xbe, 0x00, 0x08, 0x91, 0xbe, 0x00, 0x08, + 0x3d, 0x79, 0x00, 0x08, 0xd9, 0xad, 0x00, 0x08, 0xbd, 0x7c, 0x00, 0x08, + 0x4d, 0x79, 0x00, 0x08, 0xa3, 0x7c, 0x00, 0x08, 0x71, 0xb2, 0x00, 0x08, + 0xe1, 0xc5, 0x00, 0x08, 0x39, 0x85, 0x00, 0x08, 0xbb, 0xaf, 0x00, 0x08, + 0x75, 0xaf, 0x00, 0x08, 0x89, 0x7c, 0x00, 0x08, 0x55, 0xaf, 0x00, 0x08, + 0xd9, 0xc2, 0x00, 0x08, 0xa9, 0xbd, 0x00, 0x08, 0xc9, 0xb3, 0x00, 0x08, + 0x41, 0xaa, 0x00, 0x08, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x1d, 0xaa, 0x00, 0x08, 0x37, 0xaa, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd5, 0xe3, 0x00, 0x08, 0x41, 0x79, 0x00, 0x08, 0x47, 0x79, 0x00, 0x08, + 0x41, 0x79, 0x00, 0x08, 0x41, 0x79, 0x00, 0x08, 0x5f, 0x79, 0x00, 0x08, + 0x41, 0x79, 0x00, 0x08, 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd5, 0xe3, 0x00, 0x08, 0x41, 0x79, 0x00, 0x08, 0x47, 0x79, 0x00, 0x08, + 0x41, 0x79, 0x00, 0x08, 0x41, 0x79, 0x00, 0x08, 0x5f, 0x79, 0x00, 0x08, + 0x41, 0x79, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x81, 0xbb, 0x00, 0x08, 0xbd, 0xbb, 0x00, 0x08, 0x99, 0xc2, 0x00, 0x08, + 0x5d, 0xc2, 0x00, 0x08, 0x99, 0xba, 0x00, 0x08, 0x41, 0x79, 0x00, 0x08, + 0x11, 0xb9, 0x00, 0x08, 0xc9, 0xb9, 0x00, 0x08, 0xa5, 0xb8, 0x00, 0x08, + 0xd9, 0xbb, 0x00, 0x08, 0x49, 0xbb, 0x00, 0x08, 0x47, 0x79, 0x00, 0x08, + 0xb7, 0xc3, 0x00, 0x08, 0x49, 0xb8, 0x00, 0x08, 0x11, 0xb8, 0x00, 0x08, + 0xd9, 0xb7, 0x00, 0x08, 0xab, 0xb7, 0x00, 0x08, 0x3d, 0x79, 0x00, 0x08, + 0x55, 0xb7, 0x00, 0x08, 0x35, 0xb7, 0x00, 0x08, 0x4d, 0x79, 0x00, 0x08, + 0x05, 0xb7, 0x00, 0x08, 0x1b, 0xb6, 0x00, 0x08, 0x2b, 0xc3, 0x00, 0x08, + 0xdd, 0xb5, 0x00, 0x08, 0xcd, 0xb4, 0x00, 0x08, 0x67, 0xb4, 0x00, 0x08, + 0x47, 0xb4, 0x00, 0x08, 0x0d, 0xb4, 0x00, 0x08, 0xd9, 0xc2, 0x00, 0x08, + 0xfc, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xbb, 0x00, 0x08, + 0xcf, 0xbb, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x15, 0xe8, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6d, 0xf8, 0x00, 0x08, 0xfd, 0xf8, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd9, 0xcb, 0x00, 0x08, 0x5d, 0xcc, 0x00, 0x08, 0x77, 0xc2, 0x95, 0xf3, 0x60, 0xd2, 0xef, 0x7f, 0x35, 0x52, 0x50, 0x0f, - 0x2c, 0xb6, 0x79, 0x80, 0x01, 0x05, 0x01, 0x00, 0x01, 0x05, 0x03, 0x02, - 0x04, 0x01, 0x04, 0x01, 0x03, 0x04, 0x03, 0x02, 0x04, 0x01, 0x04, 0x03, - 0x04, 0x02, 0x04, 0x01, 0x04, 0x01, 0x04, 0x03, 0x01, 0x03, 0x03, 0x04, - 0x01, 0x04, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x00, 0x2a, 0x86, - 0x48, 0xce, 0x3d, 0x02, 0x01, 0x00, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, - 0x01, 0x07, 0x00, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x00, - 0x40, 0x42, 0x0f, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x11, 0xda, 0x01, 0x08, 0x06, 0x20, 0x40, 0x00, 0x20, 0xdf, 0x01, 0x08, - 0xe0, 0x0d, 0x00, 0x24, 0x19, 0x09, 0x00, 0x08, 0x0d, 0x09, 0x00, 0x08, - 0xbd, 0x08, 0x00, 0x08, 0xad, 0x08, 0x00, 0x08, 0xf1, 0x08, 0x00, 0x08, - 0xd1, 0x08, 0x00, 0x08, 0x2d, 0xe8, 0x00, 0x08, 0x65, 0x09, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x51, 0x53, 0x50, 0x49, 0x46, 0x00, 0x46, 0x4c, - 0x41, 0x53, 0x48, 0x49, 0x41, 0x50, 0x00, 0x2f, 0x00, 0x2e, 0x2e, 0x00, - 0x46, 0x41, 0x54, 0x33, 0x32, 0x20, 0x20, 0x20, 0x00, 0x2a, 0x2b, 0x2c, - 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x5b, 0x5d, 0x7c, 0x22, 0x3f, 0x7f, 0x00, - 0x6c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x73, 0x00, 0x53, 0x46, 0x44, - 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xfb, 0xfe, 0xec, 0xea, - 0xf3, 0xef, 0xf7, 0xf3, 0xed, 0xed, 0xea, 0xfb, 0x8c, 0xf0, 0xf4, 0xe9, - 0xea, 0x80, 0x9a, 0x45, 0x41, 0x8e, 0x41, 0x8f, 0x80, 0x45, 0x45, 0x45, - 0x49, 0x49, 0x49, 0x8e, 0x8f, 0x90, 0x92, 0x92, 0x4f, 0x99, 0x4f, 0x55, - 0x55, 0x59, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0x41, 0x49, 0x4f, - 0x55, 0xa5, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, - 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, - 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, - 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, - 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, - 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, - 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x10, 0xb7, 0x1d, 0xc8, 0x20, 0x6e, 0x3b, - 0xac, 0x30, 0xd9, 0x26, 0x90, 0x41, 0xdc, 0x76, 0xf4, 0x51, 0x6b, 0x6b, - 0x58, 0x61, 0xb2, 0x4d, 0x3c, 0x71, 0x05, 0x50, 0x20, 0x83, 0xb8, 0xed, - 0x44, 0x93, 0x0f, 0xf0, 0xe8, 0xa3, 0xd6, 0xd6, 0x8c, 0xb3, 0x61, 0xcb, - 0xb0, 0xc2, 0x64, 0x9b, 0xd4, 0xd2, 0xd3, 0x86, 0x78, 0xe2, 0x0a, 0xa0, - 0x1c, 0xf2, 0xbd, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc5, 0x86, 0x00, 0x08, 0xdd, 0x8b, 0x00, 0x08, 0x57, 0x86, 0x00, 0x08, - 0x4f, 0x86, 0x00, 0x08, 0x47, 0x86, 0x00, 0x08, 0xfd, 0x85, 0x00, 0x08, - 0xb3, 0x85, 0x00, 0x08, 0x73, 0x85, 0x00, 0x08, 0x7f, 0x57, 0x01, 0x08, - 0x81, 0x84, 0x00, 0x08, 0x79, 0x84, 0x00, 0x08, 0x63, 0x84, 0x00, 0x08, - 0x49, 0x84, 0x00, 0x08, 0x41, 0x84, 0x00, 0x08, 0x2f, 0x84, 0x00, 0x08, - 0x25, 0x85, 0x00, 0x08, 0xd7, 0x84, 0x00, 0x08, 0x89, 0x84, 0x00, 0x08, - 0x27, 0x84, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3d, 0x80, 0x00, 0x08, 0x5f, 0x8b, 0x00, 0x08, 0xf5, 0x8b, 0x00, 0x08, - 0xe7, 0x7f, 0x00, 0x08, 0xd1, 0x7f, 0x00, 0x08, 0xc5, 0x7f, 0x00, 0x08, - 0xb9, 0x7f, 0x00, 0x08, 0xad, 0x7f, 0x00, 0x08, 0x19, 0x80, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x7f, 0x00, 0x08, - 0x4d, 0x8b, 0x00, 0x08, 0x17, 0x7f, 0x00, 0x08, 0x01, 0x7f, 0x00, 0x08, - 0xd3, 0x7e, 0x00, 0x08, 0x2d, 0x7f, 0x00, 0x08, 0xf5, 0x7e, 0x00, 0x08, - 0xe9, 0x7e, 0x00, 0x08, 0xc7, 0x7e, 0x00, 0x08, 0xbb, 0x7e, 0x00, 0x08, - 0xaf, 0x7e, 0x00, 0x08, 0x99, 0x7e, 0x00, 0x08, 0xc3, 0xe9, 0x00, 0x08, - 0xbf, 0xe9, 0x00, 0x08, 0xd3, 0xe7, 0x00, 0x08, 0xd3, 0xe7, 0x00, 0x08, - 0xd9, 0xe7, 0x00, 0x08, 0xb3, 0xe9, 0x00, 0x08, 0x5f, 0x7f, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x80, 0x00, 0x08, - 0x3b, 0x8b, 0x00, 0x08, 0xf5, 0x8b, 0x00, 0x08, 0x03, 0x80, 0x00, 0x08, - 0xd1, 0x7f, 0x00, 0x08, 0xc5, 0x7f, 0x00, 0x08, 0xb9, 0x7f, 0x00, 0x08, - 0xad, 0x7f, 0x00, 0x08, 0x19, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x99, 0x7f, 0x00, 0x08, 0x29, 0x8b, 0x00, 0x08, - 0x17, 0x7f, 0x00, 0x08, 0x01, 0x7f, 0x00, 0x08, 0xd3, 0x7e, 0x00, 0x08, - 0x49, 0x7f, 0x00, 0x08, 0xf5, 0x7e, 0x00, 0x08, 0xe9, 0x7e, 0x00, 0x08, - 0xc7, 0x7e, 0x00, 0x08, 0xbb, 0x7e, 0x00, 0x08, 0xaf, 0x7e, 0x00, 0x08, - 0x99, 0x7e, 0x00, 0x08, 0xc3, 0xe9, 0x00, 0x08, 0xbf, 0xe9, 0x00, 0x08, - 0xd3, 0xe7, 0x00, 0x08, 0xd3, 0xe7, 0x00, 0x08, 0xd9, 0xe7, 0x00, 0x08, - 0xb3, 0xe9, 0x00, 0x08, 0x5f, 0x7f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0xb6, 0x79, 0x80, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x00, + 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x00, 0x2a, 0x86, 0x48, 0xce, + 0x3d, 0x03, 0x01, 0x07, 0x00, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, + 0x07, 0x00, 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x80, 0x00, 0x00, 0xe6, 0xd4, 0x01, 0x08, 0x06, 0x20, 0x40, 0x00, + 0x60, 0xd9, 0x01, 0x08, 0x10, 0x0b, 0x02, 0x24, 0x45, 0x08, 0x00, 0x08, + 0x39, 0x08, 0x00, 0x08, 0xe9, 0x07, 0x00, 0x08, 0xd9, 0x07, 0x00, 0x08, + 0x1d, 0x08, 0x00, 0x08, 0xfd, 0x07, 0x00, 0x08, 0x81, 0xdf, 0x00, 0x08, + 0x91, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x51, 0x53, 0x50, 0x49, + 0x46, 0x00, 0x46, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x41, 0x50, 0x00, 0x2f, + 0x00, 0x2e, 0x2e, 0x00, 0x46, 0x41, 0x54, 0x33, 0x32, 0x20, 0x20, 0x20, + 0x00, 0x2a, 0x2b, 0x2c, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x5b, 0x5d, 0x7c, + 0x22, 0x3f, 0x7f, 0x00, 0x6c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x66, 0x73, + 0x00, 0x53, 0x46, 0x44, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, + 0xfb, 0xfe, 0xec, 0xea, 0xf3, 0xef, 0xf7, 0xf3, 0xed, 0xed, 0xea, 0xfb, + 0x8c, 0xf0, 0xf4, 0xe9, 0xea, 0x80, 0x9a, 0x45, 0x41, 0x8e, 0x41, 0x8f, + 0x80, 0x45, 0x45, 0x45, 0x49, 0x49, 0x49, 0x8e, 0x8f, 0x90, 0x92, 0x92, + 0x4f, 0x99, 0x4f, 0x55, 0x55, 0x59, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, + 0x9f, 0x41, 0x49, 0x4f, 0x55, 0xa5, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, + 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, + 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, + 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, + 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, + 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, + 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, + 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x10, 0xb7, 0x1d, + 0xc8, 0x20, 0x6e, 0x3b, 0xac, 0x30, 0xd9, 0x26, 0x90, 0x41, 0xdc, 0x76, + 0xf4, 0x51, 0x6b, 0x6b, 0x58, 0x61, 0xb2, 0x4d, 0x3c, 0x71, 0x05, 0x50, + 0x20, 0x83, 0xb8, 0xed, 0x44, 0x93, 0x0f, 0xf0, 0xe8, 0xa3, 0xd6, 0xd6, + 0x8c, 0xb3, 0x61, 0xcb, 0xb0, 0xc2, 0x64, 0x9b, 0xd4, 0xd2, 0xd3, 0x86, + 0x78, 0xe2, 0x0a, 0xa0, 0x1c, 0xf2, 0xbd, 0xbd, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x00, 0x08, 0x77, 0x85, 0x00, 0x08, + 0x13, 0x81, 0x00, 0x08, 0x0b, 0x81, 0x00, 0x08, 0x03, 0x81, 0x00, 0x08, + 0xb9, 0x80, 0x00, 0x08, 0x6f, 0x80, 0x00, 0x08, 0x2f, 0x80, 0x00, 0x08, + 0xff, 0x4a, 0x01, 0x08, 0x3d, 0x7f, 0x00, 0x08, 0x35, 0x7f, 0x00, 0x08, + 0x1f, 0x7f, 0x00, 0x08, 0x05, 0x7f, 0x00, 0x08, 0xfd, 0x7e, 0x00, 0x08, + 0xeb, 0x7e, 0x00, 0x08, 0xe1, 0x7f, 0x00, 0x08, 0x93, 0x7f, 0x00, 0x08, + 0x45, 0x7f, 0x00, 0x08, 0xe3, 0x7e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x7b, 0x00, 0x08, 0xf9, 0x84, 0x00, 0x08, + 0x8f, 0x85, 0x00, 0x08, 0xb3, 0x7a, 0x00, 0x08, 0x9d, 0x7a, 0x00, 0x08, + 0x91, 0x7a, 0x00, 0x08, 0x85, 0x7a, 0x00, 0x08, 0x79, 0x7a, 0x00, 0x08, + 0xe5, 0x7a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4d, 0x7a, 0x00, 0x08, 0xe7, 0x84, 0x00, 0x08, 0xe3, 0x79, 0x00, 0x08, + 0xcd, 0x79, 0x00, 0x08, 0x9f, 0x79, 0x00, 0x08, 0xf9, 0x79, 0x00, 0x08, + 0xc1, 0x79, 0x00, 0x08, 0xb5, 0x79, 0x00, 0x08, 0x93, 0x79, 0x00, 0x08, + 0x87, 0x79, 0x00, 0x08, 0x7b, 0x79, 0x00, 0x08, 0x65, 0x79, 0x00, 0x08, + 0x17, 0xe1, 0x00, 0x08, 0x13, 0xe1, 0x00, 0x08, 0x27, 0xdf, 0x00, 0x08, + 0x27, 0xdf, 0x00, 0x08, 0x2d, 0xdf, 0x00, 0x08, 0x07, 0xe1, 0x00, 0x08, + 0x2b, 0x7a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x7b, 0x00, 0x08, 0xd5, 0x84, 0x00, 0x08, 0x8f, 0x85, 0x00, 0x08, + 0xcf, 0x7a, 0x00, 0x08, 0x9d, 0x7a, 0x00, 0x08, 0x91, 0x7a, 0x00, 0x08, + 0x85, 0x7a, 0x00, 0x08, 0x79, 0x7a, 0x00, 0x08, 0xe5, 0x7a, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x7a, 0x00, 0x08, + 0xc3, 0x84, 0x00, 0x08, 0xe3, 0x79, 0x00, 0x08, 0xcd, 0x79, 0x00, 0x08, + 0x9f, 0x79, 0x00, 0x08, 0x15, 0x7a, 0x00, 0x08, 0xc1, 0x79, 0x00, 0x08, + 0xb5, 0x79, 0x00, 0x08, 0x93, 0x79, 0x00, 0x08, 0x87, 0x79, 0x00, 0x08, + 0x7b, 0x79, 0x00, 0x08, 0x65, 0x79, 0x00, 0x08, 0x17, 0xe1, 0x00, 0x08, + 0x13, 0xe1, 0x00, 0x08, 0x27, 0xdf, 0x00, 0x08, 0x27, 0xdf, 0x00, 0x08, + 0x2d, 0xdf, 0x00, 0x08, 0x07, 0xe1, 0x00, 0x08, 0x2b, 0x7a, 0x00, 0x08, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, + 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x00, 0x52, 0x54, 0x58, 0x20, 0x56, 0x35, 0x2e, 0x35, 0x2e, 0x33, 0x00, 0x01, 0x02, 0x04, 0x98, 0x2f, 0x8a, 0x42, 0x91, 0x44, 0x37, 0x71, 0xcf, 0xfb, 0xc0, 0xb5, @@ -10378,54 +10258,60 @@ const unsigned char mcuboot_bin[] = { 0xd2, 0x23, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x40, 0xd2, 0x23, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x85, 0xe7, 0x00, 0x08, 0x19, 0xf0, 0x00, 0x08, 0x85, 0xf0, 0x00, 0x08, - 0x89, 0xe7, 0x00, 0x08, 0xc7, 0xe7, 0x00, 0x08, 0xb9, 0xe7, 0x00, 0x08, - 0xb9, 0xe7, 0x00, 0x08, 0xbd, 0xe7, 0x00, 0x08, 0x09, 0xea, 0x00, 0x08, - 0xff, 0xe9, 0x00, 0x08, 0xc1, 0xe7, 0x00, 0x08, 0xf9, 0xe9, 0x00, 0x08, - 0xc3, 0xe9, 0x00, 0x08, 0xbf, 0xe9, 0x00, 0x08, 0xd3, 0xe7, 0x00, 0x08, - 0xd3, 0xe7, 0x00, 0x08, 0x4d, 0xf0, 0x00, 0x08, 0xb3, 0xe9, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xf5, 0x00, 0x08, + 0xd9, 0xde, 0x00, 0x08, 0xa9, 0xe3, 0x00, 0x08, 0x15, 0xe4, 0x00, 0x08, + 0xdd, 0xde, 0x00, 0x08, 0x1b, 0xdf, 0x00, 0x08, 0x0d, 0xdf, 0x00, 0x08, + 0x0d, 0xdf, 0x00, 0x08, 0x11, 0xdf, 0x00, 0x08, 0x5d, 0xe1, 0x00, 0x08, + 0x53, 0xe1, 0x00, 0x08, 0x15, 0xdf, 0x00, 0x08, 0x4d, 0xe1, 0x00, 0x08, + 0x17, 0xe1, 0x00, 0x08, 0x13, 0xe1, 0x00, 0x08, 0x27, 0xdf, 0x00, 0x08, + 0x27, 0xdf, 0x00, 0x08, 0xdd, 0xe3, 0x00, 0x08, 0x07, 0xe1, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xf9, 0x00, 0x08, + 0x51, 0xfa, 0x00, 0x08, 0x25, 0xf9, 0x00, 0x08, 0x11, 0xf9, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xe4, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0xe7, 0x00, 0x08, 0x2f, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x00, 0x2f, 0x73, 0x74, 0x64, - 0x69, 0x6e, 0x00, 0x2f, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x00, 0x30, - 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, - 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, - 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x00, 0x4b, 0x60, 0xd2, 0x27, - 0x3e, 0x3c, 0xce, 0x3b, 0xf6, 0xb0, 0x53, 0xcc, 0xb0, 0x06, 0x1d, 0x65, - 0xbc, 0x86, 0x98, 0x76, 0x55, 0xbd, 0xeb, 0xb3, 0xe7, 0x93, 0x3a, 0xaa, - 0xd8, 0x35, 0xc6, 0x5a, 0x96, 0xc2, 0x98, 0xd8, 0x45, 0x39, 0xa1, 0xf4, - 0xa0, 0x33, 0xeb, 0x2d, 0x81, 0x7d, 0x03, 0x77, 0xf2, 0x40, 0xa4, 0x63, - 0xe5, 0xe6, 0xbc, 0xf8, 0x47, 0x42, 0x2c, 0xe1, 0xf2, 0xd1, 0x17, 0x6b, - 0xf5, 0x51, 0xbf, 0x37, 0x68, 0x40, 0xb6, 0xcb, 0xce, 0x5e, 0x31, 0x6b, - 0x57, 0x33, 0xce, 0x2b, 0x16, 0x9e, 0x0f, 0x7c, 0x4a, 0xeb, 0xe7, 0x8e, - 0x9b, 0x7f, 0x1a, 0xfe, 0xe2, 0x42, 0xe3, 0x4f, 0x51, 0x25, 0x63, 0xfc, - 0xc2, 0xca, 0xb9, 0xf3, 0x84, 0x9e, 0x17, 0xa7, 0xad, 0xfa, 0xe6, 0xbc, + 0x69, 0x6e, 0x00, 0x2f, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x00, 0x00, + 0x4b, 0x60, 0xd2, 0x27, 0x3e, 0x3c, 0xce, 0x3b, 0xf6, 0xb0, 0x53, 0xcc, + 0xb0, 0x06, 0x1d, 0x65, 0xbc, 0x86, 0x98, 0x76, 0x55, 0xbd, 0xeb, 0xb3, + 0xe7, 0x93, 0x3a, 0xaa, 0xd8, 0x35, 0xc6, 0x5a, 0x96, 0xc2, 0x98, 0xd8, + 0x45, 0x39, 0xa1, 0xf4, 0xa0, 0x33, 0xeb, 0x2d, 0x81, 0x7d, 0x03, 0x77, + 0xf2, 0x40, 0xa4, 0x63, 0xe5, 0xe6, 0xbc, 0xf8, 0x47, 0x42, 0x2c, 0xe1, + 0xf2, 0xd1, 0x17, 0x6b, 0xf5, 0x51, 0xbf, 0x37, 0x68, 0x40, 0xb6, 0xcb, + 0xce, 0x5e, 0x31, 0x6b, 0x57, 0x33, 0xce, 0x2b, 0x16, 0x9e, 0x0f, 0x7c, + 0x4a, 0xeb, 0xe7, 0x8e, 0x9b, 0x7f, 0x1a, 0xfe, 0xe2, 0x42, 0xe3, 0x4f, + 0x51, 0x25, 0x63, 0xfc, 0xc2, 0xca, 0xb9, 0xf3, 0x84, 0x9e, 0x17, 0xa7, + 0xad, 0xfa, 0xe6, 0xbc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, - 0x53, 0x44, 0x43, 0x41, 0x52, 0x44, 0x00, 0x46, 0x49, 0x4c, 0x45, 0x42, - 0x44, 0x00, 0x44, 0x46, 0x55, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, - 0x61, 0x63, 0x65, 0x00, 0x44, 0x46, 0x55, 0x20, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x00, 0x41, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x20, 0x53, - 0x41, 0x00, 0x50, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x74, 0x61, 0x20, 0x4d, - 0x43, 0x55, 0x42, 0x6f, 0x6f, 0x74, 0x00, 0x45, 0x2d, 0x45, 0x72, 0x61, - 0x73, 0x65, 0x3a, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x68, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x00, 0x45, 0x2d, 0x45, 0x72, 0x61, 0x73, - 0x65, 0x3a, 0x66, 0x73, 0x65, 0x65, 0x6b, 0x00, 0x45, 0x2d, 0x45, 0x72, - 0x61, 0x73, 0x65, 0x3a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x25, - 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x30, 0x78, 0x25, 0x7a, - 0x78, 0x0a, 0x00, 0x45, 0x2d, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, - 0x3a, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x68, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x00, 0x45, 0x2d, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x3a, 0x66, 0x73, 0x65, 0x65, 0x6b, 0x00, 0x45, 0x2d, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x3a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x20, 0x25, 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x30, 0x78, - 0x25, 0x7a, 0x78, 0x0a, 0x00, 0x45, 0x2d, 0x52, 0x65, 0x61, 0x64, 0x3a, - 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x68, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x00, 0x45, 0x2d, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x66, 0x73, - 0x65, 0x65, 0x6b, 0x00, 0x45, 0x2d, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x68, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x25, 0x64, 0x20, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x20, 0x30, 0x78, 0x25, 0x7a, 0x78, 0x0a, 0x00, 0x45, 0x2d, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0x53, 0x44, 0x43, 0x41, 0x52, 0x44, 0x00, 0x46, + 0x49, 0x4c, 0x45, 0x42, 0x44, 0x00, 0x44, 0x46, 0x55, 0x20, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x00, 0x44, 0x46, 0x55, 0x20, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x00, 0x41, 0x72, 0x64, 0x75, 0x69, + 0x6e, 0x6f, 0x20, 0x53, 0x41, 0x00, 0x50, 0x6f, 0x72, 0x74, 0x65, 0x6e, + 0x74, 0x61, 0x20, 0x48, 0x37, 0x20, 0x4d, 0x43, 0x55, 0x62, 0x6f, 0x6f, + 0x74, 0x00, 0x45, 0x2d, 0x52, 0x54, 0x43, 0x47, 0x65, 0x74, 0x42, 0x4b, + 0x50, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, 0x45, 0x2d, + 0x48, 0x41, 0x4c, 0x5f, 0x52, 0x54, 0x43, 0x5f, 0x49, 0x6e, 0x69, 0x74, + 0x00, 0x45, 0x2d, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x69, 0x6e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x00, 0x45, + 0x2d, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x66, 0x73, 0x65, 0x65, 0x6b, 0x00, + 0x45, 0x2d, 0x52, 0x65, 0x61, 0x64, 0x3a, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x20, 0x25, 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x30, + 0x78, 0x25, 0x7a, 0x78, 0x0a, 0x00, 0x45, 0x2d, 0x45, 0x72, 0x61, 0x73, + 0x65, 0x3a, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x00, 0x45, 0x2d, 0x45, 0x72, 0x61, 0x73, 0x65, + 0x3a, 0x66, 0x73, 0x65, 0x65, 0x6b, 0x00, 0x45, 0x2d, 0x45, 0x72, 0x61, + 0x73, 0x65, 0x3a, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x20, 0x25, 0x64, + 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x30, 0x78, 0x25, 0x7a, 0x78, + 0x0a, 0x00, 0x45, 0x2d, 0x45, 0x72, 0x61, 0x73, 0x65, 0x3a, 0x66, 0x6c, + 0x75, 0x73, 0x68, 0x00, 0x45, 0x2d, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x3a, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x00, 0x45, 0x2d, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0x6d, 0x3a, 0x66, 0x73, 0x65, 0x65, 0x6b, 0x00, 0x45, 0x2d, 0x50, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x3a, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x20, 0x25, 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x30, + 0x78, 0x25, 0x7a, 0x78, 0x0a, 0x00, 0x45, 0x2d, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x3a, 0x66, 0x6c, 0x75, 0x73, 0x68, 0x00, 0x45, 0x2d, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x25, 0x73, 0x20, 0x25, 0x73, 0x0a, @@ -10438,108 +10324,209 @@ const unsigned char mcuboot_bin[] = { 0x6f, 0x63, 0x6b, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x28, 0x30, 0x78, 0x25, 0x7a, 0x78, 0x29, 0x0a, 0x00, 0x53, 0x65, 0x74, 0x53, 0x79, 0x73, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x0a, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x45, 0x2d, 0x52, - 0x54, 0x43, 0x47, 0x65, 0x74, 0x42, 0x4b, 0x50, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x00, 0x49, 0x2d, 0x4d, 0x43, 0x55, 0x62, 0x6f, - 0x6f, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x65, 0x64, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x66, - 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x00, 0x45, 0x2d, 0x48, 0x41, 0x4c, 0x5f, - 0x52, 0x54, 0x43, 0x5f, 0x49, 0x6e, 0x69, 0x74, 0x00, 0x40, 0x4d, 0x43, + 0x65, 0x64, 0x0a, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x40, 0x4d, 0x43, 0x55, 0x42, 0x6f, 0x6f, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x25, 0x64, 0x20, 0x2f, 0x30, 0x78, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x2f, 0x30, 0x2a, 0x34, 0x4b, 0x67, 0x00, 0x73, - 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x5f, 0x6d, 0x75, 0x74, - 0x65, 0x78, 0x00, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, 0x6d, 0x75, - 0x74, 0x65, 0x78, 0x00, 0x65, 0x6e, 0x76, 0x5f, 0x6d, 0x75, 0x74, 0x65, - 0x78, 0x00, 0x49, 0x2d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x4f, - 0x54, 0x41, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x49, 0x2d, 0x53, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x20, 0x5b, 0x25, 0x64, 0x5d, - 0x20, 0x5b, 0x25, 0x64, 0x5d, 0x0a, 0x00, 0x49, 0x2d, 0x53, 0x63, 0x72, - 0x61, 0x74, 0x63, 0x68, 0x20, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x5b, 0x25, - 0x64, 0x5d, 0x0a, 0x00, 0x49, 0x2d, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x20, 0x4f, 0x54, 0x41, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x45, - 0x2d, 0x55, 0x20, 0x6f, 0x6e, 0x20, 0x49, 0x41, 0x50, 0x00, 0x45, 0x2d, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x00, 0x45, 0x2d, 0x42, 0x44, 0x20, - 0x55, 0x21, 0x53, 0x00, 0x45, 0x2d, 0x4d, 0x42, 0x52, 0x20, 0x55, 0x21, - 0x53, 0x00, 0x45, 0x2d, 0x49, 0x6e, 0x69, 0x74, 0x00, 0x45, 0x2d, 0x4d, - 0x6f, 0x75, 0x6e, 0x74, 0x00, 0x2f, 0x66, 0x73, 0x2f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x2e, 0x62, 0x69, 0x6e, 0x00, 0x72, 0x62, 0x2b, 0x00, - 0x2f, 0x66, 0x73, 0x2f, 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x2e, - 0x62, 0x69, 0x6e, 0x00, 0x45, 0x2d, 0x55, 0x20, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x00, 0x45, 0x2d, 0x53, 0x20, 0x6f, 0x6e, 0x20, 0x49, 0x41, - 0x50, 0x00, 0x45, 0x2d, 0x53, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x00, 0x45, 0x2d, 0x49, 0x6e, 0x69, 0x74, 0x20, 0x55, 0x20, 0x4d, 0x42, - 0x52, 0x00, 0x45, 0x2d, 0x49, 0x6e, 0x69, 0x74, 0x20, 0x53, 0x20, 0x4d, - 0x42, 0x52, 0x00, 0x73, 0x65, 0x63, 0x00, 0x45, 0x2d, 0x4d, 0x6f, 0x75, - 0x6e, 0x74, 0x20, 0x55, 0x20, 0x6f, 0x6e, 0x20, 0x4c, 0x4f, 0x47, 0x00, - 0x2f, 0x73, 0x65, 0x63, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, - 0x62, 0x69, 0x6e, 0x00, 0x73, 0x63, 0x72, 0x00, 0x45, 0x2d, 0x4d, 0x6f, - 0x75, 0x6e, 0x74, 0x20, 0x53, 0x20, 0x6f, 0x6e, 0x20, 0x4c, 0x4f, 0x47, - 0x00, 0x2f, 0x73, 0x63, 0x72, 0x2f, 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, - 0x68, 0x2e, 0x62, 0x69, 0x6e, 0x00, 0x72, 0x74, 0x78, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x72, 0x00, 0x72, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x6c, 0x65, - 0x00, 0x40, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x46, - 0x6c, 0x61, 0x73, 0x68, 0x20, 0x20, 0x32, 0x4d, 0x42, 0x20, 0x20, 0x20, - 0x2f, 0x30, 0x78, 0x30, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2f, - 0x30, 0x31, 0x2a, 0x31, 0x32, 0x38, 0x4b, 0x61, 0x2c, 0x31, 0x35, 0x2a, - 0x31, 0x32, 0x38, 0x4b, 0x67, 0x00, 0x40, 0x45, 0x78, 0x74, 0x20, 0x52, - 0x41, 0x57, 0x20, 0x20, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x20, 0x31, 0x36, - 0x4d, 0x42, 0x20, 0x20, 0x20, 0x2f, 0x30, 0x78, 0x39, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x2f, 0x34, 0x30, 0x39, 0x36, 0x2a, 0x34, 0x4b, - 0x67, 0x00, 0x40, 0x45, 0x78, 0x74, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x20, - 0x46, 0x6c, 0x61, 0x73, 0x68, 0x20, 0x31, 0x36, 0x4d, 0x42, 0x20, 0x20, - 0x20, 0x2f, 0x30, 0x78, 0x41, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x2f, 0x34, 0x30, 0x39, 0x36, 0x2a, 0x34, 0x4b, 0x67, 0x00, 0x00, 0x00, - 0xd7, 0xe9, 0x01, 0x08, 0x0b, 0x00, 0x00, 0x00, 0x20, 0xa8, 0x00, 0x24, - 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x30, 0x30, 0x30, 0x2f, 0x30, 0x2a, 0x34, 0x4b, 0x67, 0x00, 0x49, + 0x2d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x4f, 0x54, 0x41, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x49, 0x2d, 0x53, 0x65, 0x63, 0x6f, 0x6e, + 0x64, 0x61, 0x72, 0x79, 0x20, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x5b, 0x25, + 0x64, 0x5d, 0x0a, 0x00, 0x49, 0x2d, 0x53, 0x63, 0x72, 0x61, 0x74, 0x63, + 0x68, 0x20, 0x5b, 0x25, 0x64, 0x5d, 0x20, 0x5b, 0x25, 0x64, 0x5d, 0x0a, + 0x00, 0x49, 0x2d, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x4f, + 0x54, 0x41, 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x45, 0x2d, 0x55, 0x20, + 0x6f, 0x6e, 0x20, 0x49, 0x41, 0x50, 0x00, 0x45, 0x2d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x00, 0x45, 0x2d, 0x42, 0x44, 0x20, 0x55, 0x21, 0x53, + 0x00, 0x45, 0x2d, 0x4d, 0x42, 0x52, 0x20, 0x55, 0x21, 0x53, 0x00, 0x45, + 0x2d, 0x49, 0x6e, 0x69, 0x74, 0x00, 0x45, 0x2d, 0x4d, 0x6f, 0x75, 0x6e, + 0x74, 0x00, 0x2f, 0x66, 0x73, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x2e, 0x62, 0x69, 0x6e, 0x00, 0x72, 0x62, 0x2b, 0x00, 0x2f, 0x66, 0x73, + 0x2f, 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x62, 0x69, 0x6e, + 0x00, 0x45, 0x2d, 0x55, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x00, + 0x45, 0x2d, 0x53, 0x20, 0x6f, 0x6e, 0x20, 0x49, 0x41, 0x50, 0x00, 0x45, + 0x2d, 0x53, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x00, 0x45, 0x2d, + 0x49, 0x6e, 0x69, 0x74, 0x20, 0x55, 0x20, 0x4d, 0x42, 0x52, 0x00, 0x45, + 0x2d, 0x49, 0x6e, 0x69, 0x74, 0x20, 0x53, 0x20, 0x4d, 0x42, 0x52, 0x00, + 0x73, 0x65, 0x63, 0x00, 0x45, 0x2d, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x20, + 0x55, 0x20, 0x6f, 0x6e, 0x20, 0x4c, 0x4f, 0x47, 0x00, 0x2f, 0x73, 0x65, + 0x63, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x62, 0x69, 0x6e, + 0x00, 0x73, 0x63, 0x72, 0x00, 0x45, 0x2d, 0x4d, 0x6f, 0x75, 0x6e, 0x74, + 0x20, 0x53, 0x20, 0x6f, 0x6e, 0x20, 0x4c, 0x4f, 0x47, 0x00, 0x2f, 0x73, + 0x63, 0x72, 0x2f, 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x62, + 0x69, 0x6e, 0x00, 0x67, 0x6f, 0x6f, 0x64, 0x00, 0x75, 0x6e, 0x73, 0x65, + 0x74, 0x00, 0x62, 0x61, 0x64, 0x00, 0x42, 0x55, 0x47, 0x3b, 0x20, 0x63, + 0x61, 0x6e, 0x27, 0x74, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x00, + 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x00, 0x74, 0x65, 0x73, 0x74, 0x00, + 0x70, 0x65, 0x72, 0x6d, 0x00, 0x49, 0x2d, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x41, 0x72, 0x64, 0x75, 0x69, 0x6e, 0x6f, 0x20, + 0x62, 0x6f, 0x6f, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x00, 0x49, + 0x2d, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x73, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x65, 0x64, 0x00, 0x49, 0x2d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, + 0x4f, 0x54, 0x41, 0x20, 0x30, 0x78, 0x25, 0x58, 0x20, 0x30, 0x78, 0x25, + 0x58, 0x20, 0x30, 0x78, 0x25, 0x58, 0x0a, 0x00, 0x72, 0x62, 0x00, 0x2f, + 0x66, 0x73, 0x2f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x2e, 0x42, 0x49, + 0x4e, 0x00, 0x49, 0x2d, 0x53, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x20, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x00, 0x49, 0x2d, 0x42, 0x6f, 0x6f, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x20, + 0x61, 0x74, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x0a, 0x00, 0x49, 0x2d, + 0x4e, 0x6f, 0x20, 0x73, 0x6b, 0x65, 0x74, 0x63, 0x68, 0x20, 0x66, 0x6f, + 0x75, 0x6e, 0x64, 0x00, 0x49, 0x2d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x4d, 0x43, 0x55, 0x62, 0x6f, 0x6f, 0x74, 0x00, 0x57, + 0x2d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x69, 0x6e, 0x67, 0x20, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3b, + 0x20, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x4d, + 0x47, 0x5f, 0x53, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x53, 0x3d, 0x25, 0x64, + 0x20, 0x2d, 0x20, 0x74, 0x6f, 0x6f, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, + 0x3f, 0x0a, 0x00, 0x57, 0x2d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6d, 0x61, 0x67, + 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x3b, 0x20, 0x49, + 0x6d, 0x61, 0x67, 0x65, 0x3d, 0x25, 0x75, 0x0a, 0x00, 0x57, 0x2d, 0x43, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x3a, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x00, 0x57, 0x2d, 0x43, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x3a, 0x20, 0x73, + 0x6c, 0x6f, 0x74, 0x73, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6e, 0x6f, + 0x6e, 0x2d, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, + 0x20, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x00, 0x57, 0x2d, 0x43, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x3a, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x20, 0x66, 0x69, 0x74, 0x20, 0x69, + 0x6e, 0x73, 0x69, 0x64, 0x65, 0x20, 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, + 0x68, 0x00, 0x57, 0x2d, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x75, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x3a, 0x20, 0x73, 0x6c, 0x6f, 0x74, + 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, + 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x00, 0x50, 0x72, 0x69, + 0x6d, 0x61, 0x72, 0x79, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x00, 0x49, + 0x2d, 0x25, 0x73, 0x3a, 0x20, 0x6d, 0x61, 0x67, 0x69, 0x63, 0x3d, 0x25, + 0x73, 0x2c, 0x20, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x3d, 0x30, 0x78, 0x25, 0x78, 0x2c, 0x20, 0x63, 0x6f, 0x70, 0x79, 0x5f, + 0x64, 0x6f, 0x6e, 0x65, 0x3d, 0x30, 0x78, 0x25, 0x78, 0x2c, 0x20, 0x69, + 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x6b, 0x3d, 0x30, 0x78, 0x25, 0x78, + 0x0a, 0x00, 0x53, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x00, 0x49, 0x2d, + 0x42, 0x6f, 0x6f, 0x74, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, + 0x20, 0x25, 0x73, 0x0a, 0x00, 0x49, 0x2d, 0x42, 0x6f, 0x6f, 0x74, 0x20, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65, + 0x00, 0x45, 0x2d, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, + 0x69, 0x6e, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x21, 0x00, 0x57, 0x2d, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, + 0x67, 0x20, 0x62, 0x6f, 0x6f, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x3b, 0x20, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x3d, 0x25, 0x75, 0x0a, + 0x00, 0x45, 0x2d, 0x70, 0x61, 0x6e, 0x69, 0x63, 0x21, 0x00, 0x49, 0x2d, + 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x20, 0x69, 0x6d, + 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x20, 0x70, 0x61, 0x69, 0x72, 0x20, 0x28, 0x25, 0x64, 0x2e, 0x29, 0x20, + 0x69, 0x73, 0x20, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x20, 0x54, 0x72, 0x65, 0x61, 0x74, 0x20, 0x69, 0x74, + 0x20, 0x61, 0x73, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x0a, 0x00, 0x49, + 0x2d, 0x53, 0x77, 0x61, 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, + 0x25, 0x73, 0x0a, 0x00, 0x49, 0x2d, 0x53, 0x77, 0x61, 0x70, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x3a, 0x20, 0x6e, 0x6f, 0x6e, 0x65, 0x00, 0x49, 0x2d, + 0x49, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x20, + 0x73, 0x6c, 0x6f, 0x74, 0x20, 0x2d, 0x3e, 0x20, 0x70, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x20, 0x73, 0x6c, 0x6f, 0x74, 0x00, 0x49, 0x2d, 0x45, + 0x72, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x73, 0x6c, 0x6f, 0x74, 0x00, + 0x49, 0x2d, 0x43, 0x6f, 0x70, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x20, + 0x73, 0x6c, 0x6f, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x73, 0x6c, 0x6f, 0x74, + 0x3a, 0x20, 0x30, 0x78, 0x25, 0x7a, 0x78, 0x20, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x0a, 0x00, 0x45, 0x2d, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x66, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6d, 0x61, 0x67, 0x65, + 0x2c, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x25, 0x64, 0x0a, + 0x0a, 0x00, 0x49, 0x2d, 0x42, 0x6f, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6d, 0x61, + 0x67, 0x65, 0x20, 0x61, 0x74, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x0a, + 0x00, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x74, 0x6f, 0x6e, 0x5f, 0x6d, + 0x75, 0x74, 0x65, 0x78, 0x00, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x5f, + 0x6d, 0x75, 0x74, 0x65, 0x78, 0x00, 0x65, 0x6e, 0x76, 0x5f, 0x6d, 0x75, + 0x74, 0x65, 0x78, 0x00, 0x72, 0x74, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x72, 0x00, 0x72, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x00, 0x40, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x46, 0x6c, 0x61, + 0x73, 0x68, 0x20, 0x20, 0x32, 0x4d, 0x42, 0x20, 0x20, 0x20, 0x2f, 0x30, + 0x78, 0x30, 0x38, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2f, 0x30, 0x31, + 0x2a, 0x31, 0x32, 0x38, 0x4b, 0x61, 0x2c, 0x31, 0x35, 0x2a, 0x31, 0x32, + 0x38, 0x4b, 0x67, 0x00, 0x40, 0x45, 0x78, 0x74, 0x20, 0x52, 0x41, 0x57, + 0x20, 0x20, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x20, 0x31, 0x36, 0x4d, 0x42, + 0x20, 0x20, 0x20, 0x2f, 0x30, 0x78, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x2f, 0x34, 0x30, 0x39, 0x36, 0x2a, 0x34, 0x4b, 0x67, 0x00, + 0x40, 0x45, 0x78, 0x74, 0x20, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x46, 0x6c, + 0x61, 0x73, 0x68, 0x20, 0x31, 0x36, 0x4d, 0x42, 0x20, 0x20, 0x20, 0x2f, + 0x30, 0x78, 0x41, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2f, 0x34, + 0x30, 0x39, 0x36, 0x2a, 0x34, 0x4b, 0x67, 0x00, 0x85, 0xe9, 0x01, 0x08, + 0x0b, 0x00, 0x00, 0x00, 0x80, 0xa5, 0x02, 0x24, 0x1c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xe8, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf0, 0x43, 0x02, 0x24, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0xac, 0xec, 0x01, 0x08, 0xe8, 0xec, 0x01, 0x08, 0x41, 0x6e, 0x01, 0x08, + 0x51, 0x51, 0x01, 0x08, 0xd0, 0xec, 0x01, 0x08, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x76, 0x01, 0x08, + 0x89, 0x76, 0x01, 0x08, 0x95, 0xd3, 0x00, 0x08, 0x01, 0xcf, 0x00, 0x08, + 0x0d, 0xdf, 0x00, 0x08, 0xc9, 0xcf, 0x00, 0x08, 0x65, 0xd2, 0x00, 0x08, + 0x71, 0xd0, 0x00, 0x08, 0xff, 0x4a, 0x01, 0x08, 0x01, 0x84, 0x00, 0x08, + 0x01, 0x84, 0x00, 0x08, 0xf9, 0x83, 0x00, 0x08, 0x7d, 0x83, 0x00, 0x08, + 0x73, 0x83, 0x00, 0x08, 0x77, 0x83, 0x00, 0x08, 0xf9, 0x49, 0x01, 0x08, + 0x99, 0x49, 0x01, 0x08, 0x31, 0x49, 0x01, 0x08, 0xf1, 0x83, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x76, 0x01, 0x08, + 0x51, 0x76, 0x01, 0x08, 0x99, 0x58, 0x01, 0x08, 0x3d, 0x58, 0x01, 0x08, + 0x0d, 0xdf, 0x00, 0x08, 0xe1, 0x55, 0x01, 0x08, 0xa5, 0x53, 0x01, 0x08, + 0xf1, 0x51, 0x01, 0x08, 0xff, 0x4a, 0x01, 0x08, 0x2b, 0x49, 0x01, 0x08, + 0x25, 0x49, 0x01, 0x08, 0x1f, 0x49, 0x01, 0x08, 0x97, 0x4b, 0x01, 0x08, + 0x91, 0x4b, 0x01, 0x08, 0x09, 0x49, 0x01, 0x08, 0xf9, 0x49, 0x01, 0x08, + 0x99, 0x49, 0x01, 0x08, 0x31, 0x49, 0x01, 0x08, 0x01, 0x49, 0x01, 0x08, + 0x3f, 0x63, 0x01, 0x08, 0x39, 0x63, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x71, 0xb3, 0x00, 0x08, 0x83, 0x85, 0x00, 0x08, + 0x99, 0xca, 0x00, 0x08, 0xa1, 0x87, 0x00, 0x08, 0x1b, 0x83, 0x00, 0x08, + 0xc7, 0x82, 0x00, 0x08, 0x73, 0x82, 0x00, 0x08, 0x2d, 0x82, 0x00, 0x08, + 0xff, 0x4a, 0x01, 0x08, 0x19, 0x82, 0x00, 0x08, 0x05, 0x82, 0x00, 0x08, + 0xf1, 0x81, 0x00, 0x08, 0xc9, 0x81, 0x00, 0x08, 0xb5, 0x81, 0x00, 0x08, + 0xaf, 0x81, 0x00, 0x08, 0xf9, 0x49, 0x01, 0x08, 0x99, 0x49, 0x01, 0x08, + 0x31, 0x49, 0x01, 0x08, 0x83, 0x81, 0x00, 0x08, 0xa9, 0x81, 0x00, 0x08, + 0x97, 0x81, 0x00, 0x08, 0x93, 0x81, 0x00, 0x08, 0x8f, 0x81, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x4a, 0x01, 0x08, + 0xb5, 0x62, 0x01, 0x08, 0x15, 0x6d, 0x01, 0x08, 0x09, 0x6d, 0x01, 0x08, + 0xf9, 0x4a, 0x01, 0x08, 0x6d, 0x65, 0x01, 0x08, 0xa9, 0x6c, 0x01, 0x08, + 0x19, 0x6c, 0x01, 0x08, 0xff, 0x4a, 0x01, 0x08, 0xd5, 0x4a, 0x01, 0x08, + 0xcf, 0x4a, 0x01, 0x08, 0xc9, 0x4a, 0x01, 0x08, 0xc3, 0x4a, 0x01, 0x08, + 0x73, 0x83, 0x00, 0x08, 0xbd, 0x4a, 0x01, 0x08, 0xdb, 0x4a, 0x01, 0x08, + 0xdb, 0x4a, 0x01, 0x08, 0xdb, 0x4a, 0x01, 0x08, 0xb5, 0x4a, 0x01, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xfa, 0x00, 0x08, + 0x63, 0xfa, 0x00, 0x08, 0x59, 0x4a, 0x01, 0x08, 0xa9, 0x62, 0x01, 0x08, + 0x01, 0x05, 0x01, 0x00, 0x01, 0x05, 0x03, 0x02, 0x04, 0x01, 0x04, 0x01, + 0x03, 0x04, 0x03, 0x02, 0x04, 0x01, 0x04, 0x03, 0x04, 0x02, 0x04, 0x01, + 0x04, 0x01, 0x04, 0x03, 0x01, 0x03, 0x03, 0x04, 0x01, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb6, 0xe9, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x45, 0x02, 0x24, 0x44, 0x00, 0x00, 0x00, 0x80, 0x45, 0x02, 0x24, + 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x44, 0x02, 0x24, 0x34, 0x00, 0x00, 0x00, 0x64, 0x44, 0x02, 0x24, + 0x50, 0x00, 0x00, 0x00, 0xac, 0xe9, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x44, 0x02, 0x24, 0x44, 0x00, 0x00, 0x00, 0x80, 0x48, 0x02, 0x24, + 0x00, 0x03, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x90, 0xa0, 0x00, 0x24, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x00, 0xb8, 0xed, 0x01, 0x08, 0xf4, 0xed, 0x01, 0x08, - 0x0d, 0x79, 0x01, 0x08, 0x75, 0x5d, 0x01, 0x08, 0xdc, 0xed, 0x01, 0x08, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe1, 0x80, 0x01, 0x08, 0x01, 0x81, 0x01, 0x08, 0x01, 0x6b, 0x01, 0x08, - 0x7d, 0x5e, 0x01, 0x08, 0xb9, 0xe7, 0x00, 0x08, 0xa5, 0x68, 0x01, 0x08, - 0x69, 0x66, 0x01, 0x08, 0xb5, 0x64, 0x01, 0x08, 0x7f, 0x57, 0x01, 0x08, - 0x07, 0x56, 0x01, 0x08, 0x01, 0x56, 0x01, 0x08, 0xfb, 0x55, 0x01, 0x08, - 0xb9, 0x57, 0x01, 0x08, 0xb3, 0x57, 0x01, 0x08, 0xe5, 0x55, 0x01, 0x08, - 0xd5, 0x56, 0x01, 0x08, 0x75, 0x56, 0x01, 0x08, 0x0d, 0x56, 0x01, 0x08, - 0xdd, 0x55, 0x01, 0x08, 0x53, 0x75, 0x01, 0x08, 0x4d, 0x75, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, 0xb9, 0x00, 0x08, - 0xe9, 0x8b, 0x00, 0x08, 0x45, 0xd3, 0x00, 0x08, 0x7d, 0x8e, 0x00, 0x08, - 0x5f, 0x88, 0x00, 0x08, 0x0b, 0x88, 0x00, 0x08, 0xb7, 0x87, 0x00, 0x08, - 0x71, 0x87, 0x00, 0x08, 0x7f, 0x57, 0x01, 0x08, 0x5d, 0x87, 0x00, 0x08, - 0x49, 0x87, 0x00, 0x08, 0x35, 0x87, 0x00, 0x08, 0x0d, 0x87, 0x00, 0x08, - 0xf9, 0x86, 0x00, 0x08, 0xf3, 0x86, 0x00, 0x08, 0xd5, 0x56, 0x01, 0x08, - 0x75, 0x56, 0x01, 0x08, 0x0d, 0x56, 0x01, 0x08, 0xc7, 0x86, 0x00, 0x08, - 0xed, 0x86, 0x00, 0x08, 0xdb, 0x86, 0x00, 0x08, 0xd7, 0x86, 0x00, 0x08, - 0xd3, 0x86, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7d, 0x57, 0x01, 0x08, 0x6d, 0x64, 0x01, 0x08, 0x9d, 0x76, 0x01, 0x08, - 0x91, 0x76, 0x01, 0x08, 0x79, 0x57, 0x01, 0x08, 0x31, 0x76, 0x01, 0x08, - 0xdd, 0x75, 0x01, 0x08, 0x59, 0x75, 0x01, 0x08, 0x7f, 0x57, 0x01, 0x08, - 0x55, 0x57, 0x01, 0x08, 0x4f, 0x57, 0x01, 0x08, 0x49, 0x57, 0x01, 0x08, - 0x43, 0x57, 0x01, 0x08, 0xb7, 0x88, 0x00, 0x08, 0x3d, 0x57, 0x01, 0x08, - 0x5b, 0x57, 0x01, 0x08, 0x5b, 0x57, 0x01, 0x08, 0x5b, 0x57, 0x01, 0x08, - 0x35, 0x57, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x07, 0x01, 0x08, 0x37, 0x07, 0x01, 0x08, 0xd9, 0x55, 0x01, 0x08, - 0x61, 0x64, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x38, 0xeb, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x00, 0xdc, 0xa1, 0x00, 0x24, 0x44, 0x00, 0x00, 0x00, - 0x20, 0xa2, 0x00, 0x24, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xd0, 0xa0, 0x00, 0x24, 0x34, 0x00, 0x00, 0x00, - 0x04, 0xa1, 0x00, 0x24, 0x50, 0x00, 0x00, 0x00, 0x2e, 0xeb, 0x01, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x98, 0xa1, 0x00, 0x24, 0x44, 0x00, 0x00, 0x00, - 0x20, 0xa5, 0x00, 0x24, 0x00, 0x03, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10580,11 +10567,6 @@ const unsigned char mcuboot_bin[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0x04, 0x08, 0x01, 0x01, 0x01, 0x08, 0x10, - 0x01, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x15, 0xfe, 0x7f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x90, 0xd0, 0x03, 0x70, 0x06, 0x00, 0x24, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10598,6 +10580,8 @@ const unsigned char mcuboot_bin[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa0, 0x06, 0x08, 0x01, 0x01, 0x01, 0x08, 0x10, + 0x01, 0x01, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10605,8 +10589,49 @@ const unsigned char mcuboot_bin[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xa8, 0x00, 0x24, 0xed, 0xb3, 0x01, 0x08, 0x01, 0x00, 0x00, 0x00, - 0xba, 0xe1, 0x01, 0x08, 0xd3, 0xb3, 0xfb, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x14, 0x03, 0x00, 0x24, 0x1f, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x54, 0x5a, 0x00, 0x47, + 0x4d, 0x54, 0x00, 0x25, 0x31, 0x30, 0x5b, 0x5e, 0x30, 0x2d, 0x39, 0x2c, + 0x2b, 0x2d, 0x5d, 0x25, 0x6e, 0x00, 0x4d, 0x25, 0x68, 0x75, 0x25, 0x6e, + 0x2e, 0x25, 0x68, 0x75, 0x25, 0x6e, 0x2e, 0x25, 0x68, 0x75, 0x25, 0x6e, + 0x00, 0x2f, 0x25, 0x68, 0x75, 0x25, 0x6e, 0x3a, 0x25, 0x68, 0x75, 0x25, + 0x6e, 0x3a, 0x25, 0x68, 0x75, 0x25, 0x6e, 0x00, 0x00, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x28, 0x28, 0x28, 0x28, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x88, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x42, 0x42, + 0x42, 0x42, 0x42, 0x42, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x10, 0x10, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x68, 0x6c, 0x4c, 0x00, 0x2b, 0x2d, 0x00, 0x30, 0x30, 0x00, 0x78, + 0x58, 0x00, 0x41, 0x2d, 0x46, 0x61, 0x2d, 0x66, 0x38, 0x39, 0x30, 0x31, + 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x5d, 0x00, 0x11, 0xf2, 0x01, 0x08, + 0x14, 0xf2, 0x01, 0x08, 0x17, 0xf2, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x13, 0xfe, 0x7f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x90, 0xd0, 0x03, + 0xb0, 0x06, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10619,53 +10644,74 @@ const unsigned char mcuboot_bin[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x58, 0x01, 0x08, - 0x25, 0x58, 0x01, 0x08, 0xa5, 0x58, 0x01, 0x08, 0xbd, 0x58, 0x01, 0x08, - 0xe5, 0x57, 0x01, 0x08, 0x8d, 0x58, 0x01, 0x08, 0x75, 0x58, 0x01, 0x08, - 0x65, 0x77, 0x01, 0x08, 0x79, 0x64, 0x01, 0x08, 0x69, 0x5f, 0x01, 0x08, - 0xfd, 0x62, 0x01, 0x08, 0x41, 0x59, 0x01, 0x08, 0x31, 0x59, 0x01, 0x08, - 0x35, 0x59, 0x01, 0x08, 0x45, 0x59, 0x01, 0x08, 0x3d, 0x59, 0x01, 0x08, - 0x39, 0x59, 0x01, 0x08, 0x49, 0x59, 0x01, 0x08, 0x49, 0x59, 0x01, 0x08, - 0x49, 0x59, 0x01, 0x08, 0x25, 0x59, 0x01, 0x08, 0x01, 0x59, 0x01, 0x08, - 0x41, 0xeb, 0x01, 0x08, 0x76, 0xeb, 0x01, 0x08, 0xa2, 0xeb, 0x01, 0x08, - 0xf4, 0x86, 0x00, 0x24, 0xdd, 0x7f, 0x01, 0x08, 0x51, 0x78, 0x01, 0x08, - 0xdd, 0x77, 0x01, 0x08, 0x81, 0x7c, 0x01, 0x08, 0x0d, 0x77, 0x01, 0x08, - 0xa9, 0x57, 0x01, 0x08, 0x12, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, - 0x41, 0x23, 0x5b, 0x03, 0x00, 0x02, 0x01, 0x02, 0x03, 0x01, 0x00, 0x00, - 0x04, 0x03, 0x09, 0x04, 0x32, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x02, 0x78, 0x00, - 0x03, 0x01, 0x02, 0xc0, 0xfa, 0x09, 0x04, 0x00, 0x00, 0x00, 0xfe, 0x01, - 0x02, 0x06, 0x09, 0x04, 0x00, 0x01, 0x00, 0xfe, 0x01, 0x02, 0x07, 0x09, - 0x04, 0x00, 0x02, 0x00, 0xfe, 0x01, 0x02, 0x08, 0x09, 0x04, 0x00, 0x03, - 0x00, 0xfe, 0x01, 0x02, 0x09, 0x09, 0x21, 0x0b, 0xff, 0x00, 0x00, 0x10, - 0x1a, 0x01, 0x08, 0x0b, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x09, 0x04, - 0x01, 0x00, 0x01, 0x02, 0x02, 0x01, 0x00, 0x05, 0x24, 0x00, 0x10, 0x01, - 0x05, 0x24, 0x01, 0x00, 0x02, 0x04, 0x24, 0x02, 0x02, 0x05, 0x24, 0x06, - 0x01, 0x02, 0x07, 0x05, 0x83, 0x03, 0x08, 0x08, 0x09, 0x09, 0x04, 0x02, - 0x00, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x05, 0x02, 0x02, 0x00, 0x02, - 0x00, 0x07, 0x05, 0x82, 0x02, 0x00, 0x02, 0x00, 0x0a, 0x06, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x01, 0x14, 0x14, 0x03, 0x00, 0x24, - 0x00, 0x00, 0x00, 0x00, 0x34, 0xd2, 0x01, 0x08, 0x54, 0xd2, 0x01, 0x08, - 0x14, 0xd2, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa5, 0x02, 0x24, 0x8d, 0xb4, 0x01, 0x08, + 0x01, 0x00, 0x00, 0x00, 0x1a, 0xdc, 0x01, 0x08, 0xd3, 0xb3, 0xfb, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xdb, 0xd2, 0x01, 0x08, 0xdb, 0xd2, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x4c, 0x01, 0x08, 0x01, 0x4c, 0x01, 0x08, 0x81, 0x4c, 0x01, 0x08, + 0x99, 0x4c, 0x01, 0x08, 0xc1, 0x4b, 0x01, 0x08, 0x69, 0x4c, 0x01, 0x08, + 0x51, 0x4c, 0x01, 0x08, 0x19, 0x65, 0x01, 0x08, 0xc1, 0x62, 0x01, 0x08, + 0x85, 0x68, 0x01, 0x08, 0xad, 0x66, 0x01, 0x08, 0x1d, 0x4d, 0x01, 0x08, + 0x0d, 0x4d, 0x01, 0x08, 0x11, 0x4d, 0x01, 0x08, 0x21, 0x4d, 0x01, 0x08, + 0x19, 0x4d, 0x01, 0x08, 0x15, 0x4d, 0x01, 0x08, 0x25, 0x4d, 0x01, 0x08, + 0x25, 0x4d, 0x01, 0x08, 0x25, 0x4d, 0x01, 0x08, 0x01, 0x4d, 0x01, 0x08, + 0xdd, 0x4c, 0x01, 0x08, 0xbf, 0xe9, 0x01, 0x08, 0xf4, 0xe9, 0x01, 0x08, + 0x20, 0xea, 0x01, 0x08, 0x44, 0x28, 0x02, 0x24, 0x2d, 0x75, 0x01, 0x08, + 0x85, 0x6d, 0x01, 0x08, 0xcd, 0x65, 0x01, 0x08, 0xb5, 0x71, 0x01, 0x08, + 0x35, 0x4b, 0x01, 0x08, 0x29, 0x4b, 0x01, 0x08, 0x12, 0x01, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x40, 0x41, 0x23, 0x5b, 0x03, 0x00, 0x02, 0x01, 0x02, + 0x03, 0x01, 0x00, 0x00, 0x04, 0x03, 0x09, 0x04, 0x32, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x02, 0x78, 0x00, 0x03, 0x01, 0x02, 0xc0, 0xfa, 0x09, 0x04, 0x00, + 0x00, 0x00, 0xfe, 0x01, 0x02, 0x06, 0x09, 0x04, 0x00, 0x01, 0x00, 0xfe, + 0x01, 0x02, 0x07, 0x09, 0x04, 0x00, 0x02, 0x00, 0xfe, 0x01, 0x02, 0x08, + 0x09, 0x04, 0x00, 0x03, 0x00, 0xfe, 0x01, 0x02, 0x09, 0x09, 0x21, 0x0b, + 0xff, 0x00, 0x00, 0x10, 0x1a, 0x01, 0x08, 0x0b, 0x01, 0x02, 0x02, 0x02, + 0x01, 0x00, 0x09, 0x04, 0x01, 0x00, 0x01, 0x02, 0x02, 0x01, 0x00, 0x05, + 0x24, 0x00, 0x10, 0x01, 0x05, 0x24, 0x01, 0x00, 0x02, 0x04, 0x24, 0x02, + 0x02, 0x05, 0x24, 0x06, 0x01, 0x02, 0x07, 0x05, 0x83, 0x03, 0x08, 0x08, + 0x09, 0x09, 0x04, 0x02, 0x00, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x07, 0x05, + 0x02, 0x02, 0x00, 0x02, 0x00, 0x07, 0x05, 0x82, 0x02, 0x00, 0x02, 0x00, + 0x0a, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x01, 0x14, + 0x14, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x2c, 0xf0, 0x01, 0x08, + 0x4c, 0xf0, 0x01, 0x08, 0x0c, 0xf0, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf0, 0x01, 0x08, 0xd3, 0xf0, 0x01, 0x08, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x68, 0xa8, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x05, 0x00, 0x08, 0x1d, 0x26, 0x00, 0x08, 0x01, 0x05, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00 + 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xa5, 0x02, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x25, 0x05, 0x00, 0x08, 0x41, 0x1d, 0x00, 0x08, + 0x01, 0x05, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00 }; -unsigned int mcuboot_bin_len = 128008; +unsigned int mcuboot_bin_len = 128564; From d4a8020c571c79cfb85fb648eb6ac1b9b8ab665d Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 10 May 2022 10:41:57 +0200 Subject: [PATCH 41/50] MCUboot library update: Rebuilded to add Nicla Vision support --- libraries/MCUboot/src/cortex-m7/libbootutil.a | Bin 29588 -> 46134 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/libraries/MCUboot/src/cortex-m7/libbootutil.a b/libraries/MCUboot/src/cortex-m7/libbootutil.a index d68e26232e91566cf6b58e67c8e3f8fcbfda6d9e..fecf030aa12b2bf7d8720c599785d5e76923f16c 100644 GIT binary patch literal 46134 zcmeHw3wT^deedi;53gUc>?F?1Inv6B9KTkwY|BZYvL&x%%Z?S>Bqj-6t)!KAZ9O)U zoY-l;#t8vT32iP8)DQyUb#DRz>@=ph;AYg=wom02SKn`}@tA zIcLu7%1Yq!wdLdg>1gIZ|KI%Qappa9W~**W4|Qi>A6w}Jscy~cy2P5shQwOONl20T z-*Hwo)Hk|5I%7hJyM&mN{PjK8e@X~GiE!~}-CKpw&*uLl#INJ&Diz|_{XF=GLi{q% zd$$Ymt3RpRZ*J)C%JkILZRi{9-rJJ7JJ+3Q7#Yg-Z#-~7c+%C$TwlgOwA63B`y$f1 zi%A=X4-9m>fOa=*TYKG_+;HmdbYHF~l^+`1J(SjwnF`Qpyv9G9qrva>Qe_m zQy2E;x*%-lt*S=ZrFx_28XO!+4I?jmGF|(2yKJUEKXM?oH*;WEw5{Kg+P4BcU488Qw6l3|pf|VMe(@p9`W=mw@m}RgBrHJYj6m_zP_$>_g?vSkR?G!Go{V> zz5?{l{Q*}6XQl<*`R1W}dl0>&W$V`F`qU;r{$6_=Xs!MB^x{pqYAsB^?)x{|AhTHs z0Hek3u8eK!(Di$=m#Vmr81+qwMSp-_Vr7Q%RO zE|!%S>sA6;S-iI@3^C9~6^aX6%0f&-pv5he2O8}{vF_%JNK_YJM4}qzLP>+)C>P7W zsXF~aMQEAj=%a|ljn>Xv3q?Y<;LZh#n4OOqgnfM+S$6O=paBdWQ!4Q@Q^1?o4X9Z*attjtovMlRo?R^^N4F#=w68 zqQ85e+ar0+zwn%lenNFy_oVZw99qZJU~jMMgt+FqQ{998`SeJxt1px4&Sub1Qs=&r zTwkhdUvF<_D236Mn-{JxnUyK&*K`;eN@IvQRKzKT_o6yW*RPvNgKkJ}OH;&Ym=PY9 zO}tE{+ah_6sjdU5T#p%?^uQFlj*{h|$IUp)QL$+0P?UOd1G@t#-`U5ZX#;o!BioumJ@4aO9BeUsZH{En|D?vZ=v3z`D zeMzz@dnh?C`O;~>B^RoASDtm_TYhYI+fT79=Jde8;E2Pf+UZ5p;B>M3b$a9s)mc1@zZeqCG2jhu zqHbHxQcn?QG)}F|_a)A7c5q)`kJFWLMzR@aINhId278@-13j6cz5}SaLB+~fO#BS- z866LY7^BY4wi7Rmhb!mn)MRRtk)snQ!_`8@xFop{IY8vZSZ7vTN81Z1fgi;CdSpZC z=!de;j|;rN5{U`LADT=gUQ+MwI;5TDeB<(s9PbvsIoDagHr*QNN>RJ?q_ z%%6yem@K%c#g|xosc@TF?abEIr-&%C3MOixBjM9i|}vn=^+OFr9@&#~llEcskZKG%|0So}N-KTj+K!hZ|%Ec|>6Ki`rE z-%bRre9+}mseh;Ei@ktP5h*qK%Ps$xOGJkUVQcJD1U+mpJodOgMa0!U16xEavha(f z{vHpt$g|NB5st-IS^le}|AQW?%CpfDL5~-VUtHpsc_{XXK1I+9@qPHTSdJll9t+I| zMFd-BpCTBem=uvC5#J>u!eSj*)=|FmYEdd~Q#>_Sqdx7k_``}Pz7qB6S;aG_Dp7yF zXYrL#PW@W`JBnw`twep=8{lV(_XYS_;(rDB+2R$&yW!6f)rcsZ5OeCAD_RuKnq4X8 zi9L#EO{*01#XFfWMXU{vDtRaDl_;;Dwd5x){)-m>R~A1Cp7C+@T`ndq`2~wFMH5Io zYjQQ-ZjI3-GJeaHJP&&%a&fCA-(m4@RQN|EzDnGu_=M!+;v*LS*UCTZWv-vu z3&3?#tf3W;wz-y79AT|z6$kk%JiYEJhqs1kN6%O*%I_P&@`Rkz^vb1>{7`OSq<88< zYpq4~s`V0g?l5JDY7M`qujB4LQ|s2tM!oK;%}A!NZ)$L0&8&EiVD;$#^SZul@5AUm z*^b6AnOQ({ix4$5w+hin^JdIzX>JpO?L+t)A$BSAPGz!VYZsz-0R!Lm+IoW4F5VLx#&9jC$*7BAlCOqLTtd#;XTr7!$IrGW(QS zNjdP+AN<2A=?f=?XrjE;&A;$^ zOz+A6j+>4!gfc(rxMKJ~|46zE=E#t1X0>eu%O+w)PkJORR&)&yixqTO;g#*84Yh@_ zYg`N0F{i=k-BJ%WRZCQK`E*)e1&j65`Y5(+KdmRbnKY6;ReEeM2mG9x%1e>tF)|RECZbh9~f!W`50T|wb_~MO|-&`9pDh~DA>!R_Q&J$weCAl~@ z*r>mTK!P4$O|oTAFl~fXPw*OIqWg|%ReSx$Yf$d_c{M2v_ByiUc=>;kE#nnfUhmHg zpyk2(!iw|=PG)rN8_A&g**!G4FOMec)zT-T9FzKlW?1$QTz^ATD*G-#gpFe#QGtiJ zHF${O!`UFm+U#pcTU^8YuZQMUa3L3bNsV)^$K3-`zr`hKo(92=0{gU4Jcf>@?=6*7o+oyI3%=lj;ABK7h-3L<`6Z5gx25k%xXr?&31UepOW%uzKCZZEeGe;rIvvkKw%%1C|Lb&c z&T6J(64Fisr_*uD3im9+Z3K?#xD<~L_n)kAcR~5>hCUr`Eh>f??z3Pz4V(^_b6zw5 z7S46YI}DdAJUZOlwLXMTS^yJK^hi02TeUvr&ga;8>2PPlV&>mb zBit&0b+|WK`X-?-p_M5d*+xs>q>+Ddg=2p9D}5@PMJ@Q9RG^71*W7F+3 zHo6h;_8Dhk&6)d9+{Gw!_`l&;(?lp#=A1lN(FFdK1MX*IGumUDFW-M*$;>mMRfjkH z>zOjiMHLsqjw1IXu{Xy>a%`}O5p^r6;yQ4j!X#$-LO3v1HFzqapJNM6ETbzm1C#uEi^r5y`fq?)$sWtvJMUJDc=BL@ zf1vNRoXC@2jl+L37hTA$sfJ_p>02Eo+0p%I?pa9c_KpRP@>ID*J~A~`oQSlCs;}rQKPi*jB$vc+ zexs!Q%IvBW?rDjW=gMUpt}p;b+e67Kv-6KdxSM?nJK_oV+y`}(A1`f>LAvx(9BhT7vJ5v#DgWsjknkurAJ#a!(8%O}8YbG!z&~6VHa+rwD2_cTZU# zTkx=t!m_DHtn*l&^oaZ$@et2;iG9)lOih&k9v+5WgJ+)j(S^6bB;LWpy~TGbo@wG< z;Rj)AqW@>`5KsS=$dBh>YNA}Q(a;?q>^KaV8_D6=6;oX5lgTAm}!EsFP(PhR&8{ zFNO|{{ca2|hkO_ljRZ}AWWS6F6w4fW<|E}Ct1JRTJ#?3HxD&sq%AHfi;tCJBLmVeC zuVt;->(_O@=;QGI5@gYA42Wf323&CH-TZDKAhW(8;F|Xe`?ded0|;cpf2J`+3*w_G zsx0;xViW?_2fY?S99y5wcvye*m}Ecf4R|zZeMvZ&W0JEFu*^^&{c3$V*iC&;gLm*~ z()u!RF!kX;m&8#YcUTN{Efp(!hga^)W3MB#qANEbS@rpkyJf6r)NK1@x)zWiGHFpBF(d%QSH0SwbA!OlQlxQ!~a8*i#_f%xNAj;tD~#b)zK9{ z@aSZX6PXBy-nXG?;(s38bYfoFy00CQ(h@nlUz}dt-F-kTT|ZiVpmHKyHvdfJM0x3o z(OQZ5Znh-(VV>DsdtI+;z4K@k;#J*!Hr&`5OH@X{Y-y$99x`=WA97YgQ$nAN$CGy~kX4hUZP>`SH-Irnr!!=kKRO*PhLZ>(V)l ztanAS+a|<}v)%X~yJOFh)DC36zJykMiQF3Luy?HFYx4XODC@W>EtlVn2l_<9dQGTvPdAS}B z%g+sXUXQ2ZIOCE%QMM(%|H>1zhvM;kN&D>wV#jvnDo!5B{o9yuem(}MBp07QQ69jT zwjZ8c?7+uf_}Hs_oYH=NJCAd7qS%>X_I*B;a5gXduq-;~Fcvmz!E^7xr4l(dsx^4Z zcX}N;IzxlFb{EuNCiT&eOTk$g&lCsoGbEm4G?&;*`@}QEzAn1YL^I)16O0gelQ<8& zQ8}=m4uKE)=ZM9p2xfgjxt;~O7|s(-;ymyc!+~kxyiODOy_$hZ{w|AuhsFDa*v0>o zCBI4!IN(lwH(C6!#q-RlCgT4ZJe?AFD)GL~TJi}c=UA6#R-@|OmxG_jS+OzDQO6%s zw{NMFJM;3h(Vc00J9f8wCUQ$%LVo5Uzcj-suPt?Je9V@?G>+$A~Gc8m+GsM z>vvAC8fuGuL~buCPyJE3JHC%$(!pB6IX34XG}-RctXC%6ee#@B(cG@g+m+d)%pqkS zROTNllY7wg_bg4!wf~IfHSTzw{13=G=xb1RV^!#DXu^HFGVi2WEkrNPxDfX#_jl2( z5#lq7=N@@%u@K)>{7)4hMjfEOSu~M2wvS;GL06L^&}9c9)ivmPe>HPS?UZ&v(H z#g8cdtuzt;k1PK3ivNn@&(TCYf3Emybf}Ey>uEy&PMVPSD*in*tAzNdGM`oMUsmSV zX;usI_cY@|{7AXaih_r}OKC#Bh$iGKlsor6nf?um-=cW-2h4|E%DhvVoyzP{CZaE5 zXkcY|L4(4!HjG36Z10($wp_YH&bEs3*S5x@k3$tUPQ?xd6`}&ifQnTWe|@D`C6OyE zZ1T(|&~q$o2c<}Ut||U2ufy=2q1wp04@0h*Y@2ofgAO4bV3~Uah=1|cNGFF zw*K=+z?u5W(M39NqdvN8eV>G#dQsIRbwFQ}veVG<`vUAXj`7f>?JvQ>#*x>g^__zQ z{ph@4xW(32UIqqn%WMCC4V?BvHytib)>BRY2Ha6N%!32le}=2muG32F(}-Nm@Tm3C zpNXqQ{)Myk!=H&T8 zcoWAHTi$WB{JPM!FHD|Ii0a7VlBb#{nj%Zvo&!&}2)NMU&|}Y!mo0vNyyR}qw?y^2 zWL$pl`NHJ46D3bowPAN|_&M0gM_>;h4nIcU%@g5>uPGdf9F9o$8=JLj`MYmyiXM(W z7RFq;bj^(TjKf=gv@lX4=gOz!B~Q(4D>*z9u5P#`RrkqN1NZ+-d~xgU1)?L}g@NWS zbg+!nWvSgUn>>wNWQe_c`Ew74-faI-vpET96a2c z&coD1oo~iNIdh(+@4YZJQT}N>zI>MWOD%*+ImbGbvt(4FzHq*$iSnP}q5K6r)$qad zIhrV6VDZ;l{EZfWGk7{NzSRgZWy!h5LZ_X0Dp6nVx8(0oa*l=h-RyfU`TtOIwgi<( z)d@@fH%iW$R*CZe9ZUY>fd8vRsnNtTy_bWh7dlttRQn3WvyN4wJU0jARpQQoyjlze z$fw~m!HQhDGZE#+ghHZYi$}-LEa|$ju{1x7~ip_PA zH_sL5HSeP{yqjR#S!tFxap+s)Tt-Rs-aP|r?bx&}B{$|hPU`Ex-W*+SzI9V`3S03V zL%Bg5S2*B1ZXDpc87_y@*VXw~;&~oha>EwL3yQb<6<(P~pO8#>fu52ZSJJ68;Uqz` zccq>}1>Ax-dCguB_MiLaJ@-6btjVq8;q{7d_IdV^v5jtxY zx2tb3(OJGv@gG;_voyD=wX2)mwl~&+H5R&WcITG-_OglmcJ&RT4i^m#dr`{SJ1{(k zPZL#9EV@Grkr(j(d{lSc84<2VAEeLg@2$$_*U~Zt*yv!B~=mdD!O|pRlE9E zOZv+sN@i5^0+~_!jP;iSkFvsE%yV&oTW<^e=^9*2pz2P6NY=Ij*D2BdrH=)E0`+Pt zsjNHAaF&=Q+(Oy+Um!pZ{Q)9U~1i{%7OK!1sFt7-%>n`3vp~4 z?!{y3%Yt|CXwv%bhJ(3&Rb%L*9<9$lA9M&Zb0n?x+2?~A41H`vwZ1=v-HhKyr_lE& za5v-EV(5d_)AypK?=*Oh7d7ely#NPO-%djxXIeUb{{p)iKkBDnOf=mJ>x*0Zz62iKghx7l*I4@A4}A_$)VBbS z*0;{m$32Z@kZaQVR$KZ$4}HvM>SG_J_1$9W;~95AJ<|HNTKZl9NS9~o)%yA^ecVG~ z{55HPIZNO741HGsto7+Jx~{+3DdP7wOW!MoKE6M#@1s`yxVM8pkF@=Z7Vd5c_D&UVC*Ae6eu<-3oV>5pJ~+?$wsQL*Vh} zk+%Pih2vbJShzRB-7NPDjBq*Q)#>H;pJqDV1)efZU?tsQ>AT9%#~HHLcaPG?I!k&F zc($FI7#1Jq7uKos+Pwmd_Cq&fNHhWUs0la+g=`sIUWbR_vV1eG5P8%Ihi43rTA#f> zUW0TzQUteh6@KQypy|#ZHrB6s)#ndyx=cpXTOYpxH)An=h>A4XZjzs?Os0=K>o3n- z($2c4`)byktCc&)zbwzhti&VpRDE$5$$o3k!dCY?4&L3UZ}!x8f6l1;!XB|_Lv!dC zk@yq82!$?h$+zxkX*6RM}8OKG*NcNIsG57x5cv#5U#W_d5e-xoVnzDSvh6N^RXF^?LE@EX=C}Rrj72Mr2jY; z!u^aBt(PT_Bxmd`#f_ll?>i**HzwCx`Y$^_Bf2V^NVc7il`MGqLjC1?H@!Xtg6E~h9w_xj){YP4BlO;2e{qIdsN>sXk*(jv*{+cvUbrxTXCI#B<3HQ>()g@T%uX^kmn9eB45RqO z48%p$){UC6X_m3MM8zh;vzLE__`JO%`NrgiWV_6z2c@l1y_1jhhmzazhGuMaV^SQ`}UJRZSGRK6LeC7OK8W z8(z+L7(R2PwW6)@VPLxL{sHGSg#M^Mh5)Tan$5ka{*t6=;VS#o=S!?EO!oR_da=GZta96vDF zxZe>BuS%xxJ`Yvp*=XUtov*dMBU!w=9 z^K7(4#40KG9as5QDPL{zYb>5`+NW2uU+be8eu>F~*E1^Dx!CvorU#w@W{MaKj*Y9) zo?v;@;OB@w#Zz-NMw#yp@D*}Hp8hH4y{2P^yb>;z5c=}@g8Mz>`5w4`^G3z9KV@t2 zdy03%TPThYtcb18rvmaT#PgQ?`xei0gmmh}Q;phn4aV=}vyxvVHYuKUq7wCsb5TtU zZ=c1#UEv>vtP=I>la~B+K)zUEIH2| z63>>g67}Vvg+HX^e28}V1Bc&uo ze|X64r+99e&FZ3^%DmNG&*lBAH^80dRm#Nnp5$AUiS0ef@1lu4xgMHmtTax#!+$T` zu`!Upn7q@MbL1ZDQs=AFYR?eL9k}y;RyK>VjN0qm4LkXqyXF$xQuI!`NGNXue79S>CSBd$+6e-st2Lly7tQKEoX< zoGt2}*R4V{QGScM=M|aKMt-ll=M^8?z>5eYGw}-Ky|c_W-aGr+_cB?~3x79L{SuqI z`&AsGn|%*ctdLHB_i3Q7xahs7g=Mwy@@zjcMbH<&@U@5sJND*fuZ8epH?S6>jB8Yj z9mc=8{i0rso#CQYUH2sZ#$!>K-**In#ol0Hr!lRUB0me~zL%mSj)1zt#7}WIX(7<+ zOr}w5^dZwA{k~%wpnD0jcfm!`j91sg8n^8hCPa4&f#8b0nxZ{Gz*nJi*%wHRacOHI zZ0Zj&Uh{RWq6>|$xiZm!W{U0UT0CenW!ud5*~Z-jH;qHnIVG;ez@Z795=WWVhbDGP z9NW}cco@GO7r}Kxrg3a~nTBHN=reF^r>Da0H*oxxaw^f;+XYr_yao427MRym#Jqo@UZrH*d0k6{ps~mgK z{4gFf+z)^+hWm=f!6bbYPca;oNqrK9Z_=i~)mgZsQ{Xx++-HE}yjzpbmxmOtUJ1So zvrL0vGERJWR+6TU`wOu1{bJ;%j9(j=tX2k7>+7-f?K1Rn1ySoeqV*{qN1?A+{{5+i%h)*RN>L#p0)HffoEOPr1gE<(s#(v7YA7Dn}Z6DD0y*zVG4aQ;LLLMq@j;1 zlUg6|A~p5#e%geNoWhZ9u=ITi`dBWRUba12U)s`l1bhwTnusI4$bdMIq1{nYAFy}-&2;pQSfZ@HRG9#r(>%(gb;6{-S-d(Io<5sRNdJdr> z0cYSFe5b=MbKpD?{_nA@FxZ7qyG?P2o^&_x7RCS#q8N5i$(j<$Vn z;pW>r7j6@aZ^JDzq54+*pHC;1mW$BR3U}W< zi{0t<3tL6?73pt{ZJVg*`eyp?U|vYT{ejw~zBe+=*C#2wziiVjlhuj#W1$<@!(4hI z+P-75THqW*b|HV&RMGPB3+t~*M&30SU$cex&q)H)6iddj!;XFPeP5lt>EP1j>DFD? zv8_)=-s`%ia!Zq+ZH;or`~k+{U$F;Eb;HN!B*p%D$O)q>mi+QX1w@ouUl z&PfRTdXZ!NytDqfW&02a%d$~X#!=k>%7ug)&)ENlPbc*tp#?~VRZ)4ek2@ zc{b@j&&_Dm;Ku!|Aih-M9S?7gc8D*x@Z}QU=HY{{ir*Io^~WT>#>2-v8!g;_58`J@ zJjZx0p#e9D`|m;g9Etb)dV4>e#m=MPO z^q?FItp;&_-J}T6LHuP_e1p=6wOh*l^&sL3%Rf`&6ZhML_^Z6LY#o4wA*YW9&x`+N z=*0c_pvJ=e_@LbJzQ5y}4GD*8JmP+Q5MSlpNyIV~lA~r1j_|83e6{FO;#!HX_Q9}m z|30WcZpmvbxnFV#f)vcfTK`|E!c(imSnp=Xi?y#d`nP7E$nYn(O_jLM zc=v$mAQ3$&{OG&sx*OL&A%P?KjcC(Zk1O2q$8g`^h$TgrKc%d9Xs|zJk4Qu+l^!0> z42`6E_YHIxYAeJSy`+h&s_T->sZHxUjEz-nTk*aqwG)aNeG7~c(wrK+mxw!wuE$Ni*K4e zik}6Oze_0PRcb#8rt}B1s2t6QmPhFy`%3iBZ{^ss@*BHqnzyKZrW@2g(`q4_;2z$t z_Ls28DdUR?5~3jE2SZ%TNiHZ1{A=1*@|M7j@+nKWzcy`1+_GL&Bujl!iCg}Qirkt| zROHr)q9UVq6qTFx#NEs=l2D|!6vG7TjQ%CJB6{q)P`FX_Dm-DU$h`+Dh%GW!pH6)d zFUCF;u8bQR*_U6DdKImw%-S5j)N%b59?W*TmtZ|jXBK0-sZnonx zChCV0x6}n2=3n{CJpa7E9wGZZ7Uk-4DB|uK`T4`28MmroI;qeVk=zeebjM@%}sqZklxb z-UA0y-&sT7EXcIJo3D1eXs~l zhef%zbFamYpO%@puK~w=o-Q3{fHU*?h>D z8M^VvhM(b!w8^o9*@KPw)@bdF(URK8nKt)kvexD+c5T?TKHnO`_j2=&#rTELDc)O0 zeWCcgWJ$7GY8AB=-wIV%;VUYxAuc=?i3=y5Z#)^_A6h!=R45+C4ctE)3pqa-6XJpF z#PPQu{m{!!se2Fn%=WTmUvlo>JalfZsKCu}v(Ja!FOcHZ_(IFo=-#O|!@bW9iNiX4 z^VP|>A1zJJP4+E%M1~q|Y1$BN`rb3nvMXLpNS6na*WzMinvrW9y9xLOC<0AgHqqC9^WJ?Z* zKklsKz50<=7vkZ=74lmlQ9JKj71iOV+!SPyC-MC3m&?LWWkd1Wa zTTy-Krtp)l%Yswkcqo2u40i%1fDhFsBNKDOSI+3lhpOXu5mRxZdw+Cko${`IQTz2X{{W7-GTce$uHnze`#Swh=qb8(oTy5Mj?flWrjz6veW>Q= zW3}#Nb6{Wp66Yo-u|H`qYjbUT-$<@cE^TWjmEYHe`;l=$PwntM>3nMBKt7}Wqg}kd z?0D%nX0^}SyzQ00y=#`d7jVv!&^Kc3KN(y9gK#DCmUkdJ2iGxo7%%_6Ll$Hf=O#RS z=WjVGoSggKYS)|zKjr>LM5uPfnFw^0C*Cb3$(aWqpA0{8 z$>t@=iv83+ajY)cA#Gneb{P2>8vWdc1!ul0ZOt3!o|%6jx-@pC2=N~M`LuWxm8;O~FRJl`y`I+vaL*u! z*CQD%FSF!ju0Z|g9zxK+9sy|oF-snk`^k*Y4S2%xWUo>NgL?)+eX~Ro?oA%V9K8@f z$HH^;=X9{f^xUh(+KVX1m#?@@ri5vLHVUJzE64(dk_Pdpmb})I*IM%H#U|y#-ItL36%QZ6Z{luKEawX$@Fqntvu647 zX_;?@jo-|14os45A$XG_Vui^9zf#<7xUjT6jECi&HH&)yA5=WY{rp{n&nccIn|Bg^ z4W=gg|2`i2Z^6SofuF+EMESpK1}6DA026;F9_|@bkx@i>y~VFnc$Vx+XwdheaGuR? z(lScUn$10h{fd8D@|TKtTKYK0r4!#2?+pC3CFgx1ni!u^g>Qqs66M|gCQaWVctpyt z7Cete6>ffBBQ8_?BT`;1?+}Dl67_R@O}rcb8quM6u9Z}x{N)1rYQ=rvN%T99D=&q^ z6YM{Dj$QkDdox3++;GZWlU$L<`Wn8>lHD6uL{nJM+bw@(LN2AJQY+Thud2hsHW$_< zw??7eK@Ts^3oPy%Yn@W5*IT9rdwbn*`qR5}-Pq#j&!%ReeimZL#JDTA@Y|g~;Kt0=si1CF7%JRh;-DK-xoe`f zDFRM1!C1E($uL^o{dpsEeOapOKq?p5bt%40V+8Nzq_x{2AyUX8s2YO=9o;Atj#P}* zTX$vK_2!Rge2>_s>dg)HXL67uG@?Yw=H(7)@SxQaS z*0{SDegWlBS~d=bV2UQf-#wW!6l3#12H`hqLC-0({U|EZEyl%!ZW~b);k6c)R7U8c zLcf(LniyZK8WFu0Bh%|9%WEqNw_l2(>~QSX#7crEhCg>3NGdI8U#1AW09O#a(E!;& zn=OuNiY^B6VrcYW=+AV#4OjGQ+Eu2;Z^#19Zra^$?>B5Ory5mW6Wah1MihZH%4cW0 z?FZWowkLepPIBDJaSPjE5}G5=PG0NF!*1d@?qfTxN#ouF2NSm+Jo^t#8uu_5eV>7YsqZ=HtAHER%XVDr`zq|FzSH1a@Mt2A^uO_# z`d)xO2X55I^k{wm47;h1_Z2d4H0k*L01l?USD>#JZqzpikJdL6{!M+IVA!8%()!Ba zZtA-VN|Ae(>*2nt^@#mG{21JPYtVzf3&6d6q=vxR7_0iP& zo>cnkm4Z8=V7s!@U|4+g{6g0w{sv4N0g9-P^kpmDhY>ErPd-a^ZNn@6)??In_Z=AJjeQ~8v=L>&h z3r-#}EIwPUaQU6aBOc1tN0xVfnBo2q;qHPv(@~8_hdW^DtA&8^(*&`kJ(j+fxqdoo zfYAE%-61+J5)fcW<&oC+7E9k2=yQN#{I12L^>I(o%;$R{(7FNh^5{uRU!M^_zCW$+ zFO)tQk`6+^H3&@%i}WoE_io_07NJSwUbb*g16QFzFc~hX9Pf#Kbhw{~fbD=Lt*=Vq zm=C1C1@2zgD*qG5=X&7qm)9cxZnXA8H?5DR4wLTtfjf$)4t7i>Wc(OkmKEsps1|$A U?=U=See*2b2=e&`!=uLiKa-w-{r~^~ delta 3540 zcmb_ee@t7~6+Z9T&&GxrW2gxbY~u&mCLysC#*aWKHHpE5#uQkCKw3f^S_5lA`_Y6d znpqUB*%UIGgOaq0)M(43wwjhyPPb%hnxy+nwOu>cRJqe1R{FW#P54tXNvclps{$pI3RY&{UhI2)wDrhr3O=8lTsTFPq%rt(@2y z)2Pq^ka$-LG(=1R-5Xf}??qGd{MQfWhvr`1>j)$+fs>gwkoJzD`O6u>IT)!4cmr$` z++yG#Q~eRG;(vDrF4O8j9#u~a%}qkIF;YJJRnw=l#%-g4R|B;d^HPC#i{~!gi@yS; z;0nd(jhFmsm(TkhQ{XiGT_@a3Xo170y<=*=O9K-3uDY*>v4s9~*22Kj6xq#sCF1oN zp|a^d=s%eO$Fw?)TmTVDV*4y7G(t0GTHg@%$IeMFKnx~k*o1(fQ^jLC|e(lA%JG$q72ZgVw;LO_M`PoWBew@3+=+QXttH@ z*vtkB#4pc*_A*kS{e)sU0Bv~%M^#+MSdk1QZULa<0AhPm2(c4S+FZiU*cID9^};Bg zEe#2WalUk)Fpm3NYlRm4xl5MLkXD`eM|%2@6s^XuT(X!DaJ9Qs0DRKz5_I@HwTJPi z)TZHY+%Ab%WGmir%TgUla|qKtvecHzf8OMgg)6wz!~Ri^ON?vqO;4#fo{3WgTeUb< zZADX=S$H4qWiBbM1vrP>%VgbYN*K2__{$a858Pfss32hn2-m1fUE*yi_3~>hO4QUmzDp;m7lj!<(YV? za_IsV!m@)NNx)&nM$Ml99c87fwB$NP)W8+j))Yt|lcf!}*T@^|XoPR2{0TWKm!a?V zt{>WvOupRuDwkvut7cPm6^@uZ*=@W(02U;)Ko7TeBniGegD^-$;+!B-mbfRW+@xfQzTQ6a-5xV4xkhw^=Hl6B zinPwtd$6rGUpR}e*4m%GF(dbfd&6O8#1d~14bz;& z(nLaYqg}Vdp*R?N2B2v5u? zDs}HsHXN-GZ6*LK)ekQA=&gzf>?z2fB`#bI#h){=5G;YFu3IJ{>X!;Jktp_N$BmiR z>0SDqMFFGq_g#-ukTij{5PxMfsiBE9%y^836NwTp`~Ps126V9MrsP?OroxA@l=fI=OQWC`1 zx7Z48kA@k@Rl}^u^!h^m0cCARFj#Mo9-NT}!{O)*kou*hco|h*0Zxp3K+W%_waWVo zE++Mtho$Ww%}SQ85pd^RP79a==1a-jja*msU1h;U31yE3Z+7I;)Y!P$;f|I6ND|Q2 zV2<+XTP%{2S^2cxrrC%f(M199*VOSN&i?;d!nyxLp1D$_)PsVYogR*_SK@J|N)|oV z+G|7OWW&9=LY~rMBA$g8G#7Qj5a5&;0 zT=z^zTQK1N_E30mYu`)#;l4)SwyL)N7kBi&(AVMJwe;8Dj|qQ0?rjWV)>aSRX>{Rd zV^;nOiz@dn<#GOoFctu;QIU5XbLAc<PHY7^qNK+fS-{ZS{dyC&oVjyUR3S-8H)f;sr&+?6X1%gMjq-X*7oRKzN zT*WyR6AIFH&{1yV0m~Q*={{FE=RD>=Q296`P4Jw`KT!EimH&mY2w+a-YiP^!#Htx7 zzMql$J5_#&F-jdr`GMZ_I3vC3+p5EP)&8DpzedP!GNt0jD&AD_mWs-fQp0CRq^sY} zNJ^||7cIx$^5W{IbISGopnDXLH&=-C0dlR`Y3QQeHbpvR;@8b~X|I+xB^Cr_gPZPt zzTGpiDQK6*75gCB8y4&*f_CveEnWzgGTaX4n<&h}txqPt_3x62<~&TGluAjt^&|9- zZ6qR}o_xObbr Date: Tue, 10 May 2022 18:10:57 +0200 Subject: [PATCH 42/50] Update patchset --- ...-gdb-exta-information-to-slim-librar.patch | 4 +- ...ta-enable-certificates-in-filesystem.patch | 4 +- ...f-count-returns-the-number-of-bytes-.patch | 4 +- ...0004-Add-AnalogIn-configure-function.patch | 4 +- ...avoid-10862-by-not-firing-the-assert.patch | 4 +- ...portentaH7-Change-BLE-public-address.patch | 4 +- ...-add-method-to-retrieve-certificates.patch | 4 +- ...-Add-unit-test-for-set_root_ca_cert_.patch | 4 +- ...-add-test-for-certificates-stored-in.patch | 4 +- .../0010-Initial-support-Portenta-Beta.patch | 4 +- ...dynamic-USB-speed-configuration-base.patch | 4 +- ...ease-Cordio-memory-pool-for-nRF52832.patch | 4 +- ...mplt-Callback-for-updating-NumCmplPc.patch | 4 +- ...Add-support-for-Arduino-Edge-Control.patch | 4 +- .../0015-RASPBERRYPI-import-pico-sdk.patch | 4 +- ...P2040-add-NANO_RP2040_CONNECT-target.patch | 4 +- ...holder-files-for-includes-like-pico-.patch | 4 +- .../0018-RP2040-implement-serial-api.patch | 4 +- ...19-RP2040-add-pinmap-for-i2c-spi-pwm.patch | 4 +- ...20-RP2040-Mark-.init-section-as-KEEP.patch | 4 +- ...1-RP2040-implement-mbed-api-analogin.patch | 4 +- patches/0022-RP2040-add-SPI-support.patch | 4 +- ...ico-sdk-s-i2c_init-function-with-a-_.patch | 4 +- ...24-RP2040-add-I2C-peripheral-support.patch | 4 +- patches/0025-RP2040-implement-USBDevice.patch | 4 +- ...-avoid-float.h-first-level-inclusion.patch | 4 +- ...talize-contructors-during-runtime_in.patch | 4 +- patches/0028-RP2040-add-pwm-driver.patch | 4 +- ...40-add-flow-control-to-SERIAL-object.patch | 4 +- patches/0030-RP2040-add-lp-and-us-timer.patch | 4 +- ...1-RP2040-implement-gpio_is_connected.patch | 4 +- ...2-RP2040-adapt-linker-script-to-mbed.patch | 4 +- ...33-RP2040-Start-adding-Flash-support.patch | 4 +- ...lash-operations-in-critical-sections.patch | 4 +- ...gnment-avoid-passing-const-buf-to-fl.patch | 4 +- ...co-sdk-s-gpio_irq_handler-with-a-_-t.patch | 4 +- ...37-RP2040-Add-gpio-interrupt-support.patch | 4 +- ...x-USB_DEVICE_ENUMERATION_FIX-linking.patch | 4 +- ...ake-all-unhandled-conditions-a-no-op.patch | 4 +- ...0-RP2040-i2c-fix-addressing-mismatch.patch | 4 +- ...heck-SS-correctness-only-if-declared.patch | 4 +- patches/0042-RP2040-Add-I2C-slave.patch | 4 +- patches/0043-RP2040-PWM-fix-asserts.patch | 4 +- .../0044-RP2040-nano-connect-fix-pinmap.patch | 4 +- ...045-RP2040-add-Raspberry-Pico-target.patch | 4 +- ...alogin_read_u16-to-report-full-range.patch | 4 +- ...047-RP2040-fix-PwmOut-enable-command.patch | 4 +- patches/0048-RP2040-Implement-watchdog.patch | 4 +- .../0049-RP2040-Implement-reset-reasons.patch | 4 +- ...-spurious-inclusion-in-case-insensit.patch | 4 +- ...ART-baud-can-t-be-changed-at-runtime.patch | 4 +- .../0052-RP2040-i2c-remove-debug-prints.patch | 4 +- ...3-RP2040-PICO-Add-CONSOLE_-X-defines.patch | 4 +- ...054-RP2040-FLASH-fix-multipage-write.patch | 4 +- patches/0055-RP2040-fix-include-paths.patch | 4 +- .../0056-RP2040-silence-nasty-warning.patch | 4 +- ...rt-fixing-CMake-files-for-mbed-cli-2.patch | 4 +- ...-and-update-Raspberry-Pi-Pico-target.patch | 4 +- ...0-USBPhy-implement-stall-and-unstall.patch | 4 +- ...0-include-multicore-library-in-build.patch | 4 +- ...y-handling-irqs-if-some-went-missing.patch | 4 +- ...040-Connect-force-flash-size-to-16MB.patch | 4 +- ...meout-in-a-static-variable-accessibl.patch | 4 +- ...-fix-missing-interrupts-after-32bit-.patch | 4 +- ...nnect-use-standard-W25Q080-2nd-stage.patch | 4 +- ...RP2040-optimize-flash-ram-occupation.patch | 4 +- ...40-Add-weak-aliases-for-ISR-handlers.patch | 4 +- ...40-enable-led-indication-on-mbed_die.patch | 4 +- ...O-correctness-only-if-it-is-declared.patch | 4 +- ...ave-synchronization-issue-by-adding-.patch | 4 +- ...port-HRTIM-capable-pins-to-Periphera.patch | 4 +- .../0072-STM32H7-add-HRTIM-capable-pins.patch | 4 +- ...2-PWM-implement-HRTIM-based-PWM-APIs.patch | 4 +- ...-HRTIM-greatly-simplify-corner-cases.patch | 4 +- ...-Portenta-PWM-force-PA8-to-use-HRTIM.patch | 4 +- ...CM4-avoid-vtor-relocation-via-define.patch | 4 +- ...se-critical-section-to-protect-PLL-c.patch | 4 +- ...ment-and-use-get_default_instance-fo.patch | 4 +- ...-PortentaH7-Disable-WHD-WPRINT_MACRO.patch | 4 +- patches/0080-Add-NICLA-target.patch | 4 +- .../0081-NICLA-use-nfc-pins-as-GPIOs.patch | 4 +- patches/0082-Fix-cast-error-in-WHD.patch | 4 +- ...ns_cmdline-make-cmd_class_t-cmd-priv.patch | 4 +- ...mbed-namespace-to-function-signature.patch | 4 +- ...5-Use-ADC-clock-synchronous-with-AHB.patch | 4 +- .../0086-RP2040-Add-basic-RTC-support.patch | 4 +- ...get_reload_value-returns-0-if-wd-is-.patch | 4 +- ...ort-p2040_usb_device_enumeration-fix.patch | 4 +- ...P2040-correct-system-clock-frequency.patch | 4 +- .../0090-Thales-mbed-library-porting.patch | 4 +- ...t-and-get_context-functions-inside-G.patch | 4 +- ...tected-to-call-it-from-GEMALTO-stack.patch | 4 +- ...-GEMALTO-subclass-of-CellularNetwork.patch | 4 +- ...Handle-missing-IP-address-resolution.patch | 4 +- ...rname-and-password-are-empty-strings.patch | 4 +- ...ntext-with-new-one-if-they-are-diffe.patch | 4 +- patches/0097-Fix-recv-implementation.patch | 4 +- ...-Add-time-functions-to-Gemalto-stack.patch | 4 +- ...-return-NSAPI_ERROR_NO_CONNECTION-on.patch | 4 +- ...SerialBase-implement-sw-flow-control.patch | 4 +- .../0101-GEMALTO-fix-some-corner-cases.patch | 4 +- ...Gemalto-properly-handle-SYSSTART-URC.patch | 4 +- ...handle-oob-before-closing-the-socket.patch | 4 +- patches/0104-GEMALTO-implement-GNSS.patch | 4 +- ...5-GEMALTO-TX62-tune-AT-configuration.patch | 4 +- ...to-start-and-stop-gnss-functionality.patch | 4 +- ...d-GNSS-Psm-management-and-bug-fixing.patch | 4 +- ...Implement-LNA_ENABLE-for-Thales-rev3.patch | 4 +- patches/0109-cmux-support.patch | 4 +- ...110-Implement-Udp_RemClient-for-TX62.patch | 4 +- .../0111-Fix-HostByName-SISX-request.patch | 4 +- ...Out-set-pwm-period-before-duty-cycle.patch | 4 +- ...0113-Initial-add-Nicla-Vision-target.patch | 4 +- patches/0113-Update-COMPONENT_WHD.patch | 66942 ---------------- ...Vision-Set-WiFi-as-default-interface.patch | 4 +- ...-Vision-enable-I2C_TIMING_VALUE_ALGO.patch | 4 +- ...0116-Nicla-Vision-tune-LWIP-mem-size.patch | 4 +- ...ision-fix-wifi-bug-related-to-SDMMC2.patch | 4 +- ...-LPUART-at-baudrates-higher-than-960.patch | 4 +- ...TEMP-Remove-log-from-.gitignore-file.patch | 4 +- ...f-plug-trust-library-to-COMPONENT_SE.patch | 660 +- .../0121-Port-sss-hostLib-to-mbed-os.patch | 4 +- ...h.c-from-mbedtls-stack-if-MBEDTLS_EC.patch | 4 +- ...-alternative-implementation-over-SSS.patch | 4 +- ...-by-default.-To-disable-it-define-FL.patch | 4 +- ...o-let-communication-work-also-with-d.patch | 4 +- ...Make-i2c-and-resets-pin-configurable.patch | 4 +- ...ED__-define-to-avoid-build-mbedtls-k.patch | 4 +- ...SE050-from-TARGET_PORTENTA_H7-to-STM.patch | 4 +- ...-NICLA_VISION-Enable-component-SE050.patch | 4 +- ...-configuration-macros-used-for-APDU-.patch | 4 +- ...-configuration-for-reset-pin-and-i2c.patch | 4 +- ...ABLE-debug-log-with-FLOW_SILENT-macr.patch | 4 +- ...-overload-for-TLSSocketWrapper-set_c.patch | 4 +- ...-store-SE050-keystore-pointer-and-ke.patch | 4 +- ...-Force-correct-cipher-suite-for-SE05.patch | 4 +- ...-Associate-SE050-ecdh-context-to-mbe.patch | 4 +- ...-Add-function-to-append-a-certificat.patch | 4 +- ...s_object-and-sss_keystore-to-nullptr.patch | 4 +- ...-speed-uart-by-enabling-FIFO-timeout.patch | 7 +- ...0140-Fix-Ethernet-pins-configuration.patch | 4 +- ...Add-defines-to-exclude-DES-functions.patch | 4 +- ...s-to-allow-to-disable-device-functio.patch | 4 +- ..._H7_M7-Change-ST-HAL-configuration-r.patch | 4 +- ...-to-allow-FATFS-customization-remove.patch | 4 +- ...Ex_PeriphCLKConfig-using-only-HAL-en.patch | 4 +- ..._H7_M7-Remove-HSI-CSI-LSI-HSI48-supp.patch | 4 +- ..._H7_M7-Add-linker-sections-to-store-.patch | 4 +- ...-DEVICE_SERIAL_FC-preventing-build-i.patch | 4 +- ..._H7_M7-Remove-FATFS-mkdir-and-rename.patch | 4 +- ...true-for-uart_is_writeable-if-the-TX.patch | 4 +- ..._H7_M7-Remove-LittleFS-format-reform.patch | 102 + ..._H7_Move-libc-rodata-after-bootloade.patch | 34 + ...ISION-Add-device-name-in-target.json.patch | 26 + ...SION-linker-file-Reserve-space-for-k.patch | 44 + ...-CAN-allow-sending-CAN-remote-frames.patch | 29 + ...atch => 0156-Add-Portenta-X8-target.patch} | 12 +- ... 0157-PortentaX8-remove-MPU-support.patch} | 10 +- 158 files changed, 876 insertions(+), 67582 deletions(-) delete mode 100644 patches/0113-Update-COMPONENT_WHD.patch create mode 100644 patches/0151-MCUboot-PORTENTA_H7_M7-Remove-LittleFS-format-reform.patch create mode 100644 patches/0152-MCUboot-PORTENTA_H7_Move-libc-rodata-after-bootloade.patch create mode 100644 patches/0153-NICLA_VISION-Add-device-name-in-target.json.patch create mode 100644 patches/0154-MCUboot-NICLA_VISION-linker-file-Reserve-space-for-k.patch create mode 100644 patches/0155-ST-CAN-allow-sending-CAN-remote-frames.patch rename patches/{0100-Add-Portenta-X8-target.patch => 0156-Add-Portenta-X8-target.patch} (99%) rename patches/{0101-PortentaX8-remove-MPU-support.patch => 0157-PortentaX8-remove-MPU-support.patch} (77%) diff --git a/patches/0001-PACKAGING-remove-gdb-exta-information-to-slim-librar.patch b/patches/0001-PACKAGING-remove-gdb-exta-information-to-slim-librar.patch index 8a16e6ea6..e7d016470 100644 --- a/patches/0001-PACKAGING-remove-gdb-exta-information-to-slim-librar.patch +++ b/patches/0001-PACKAGING-remove-gdb-exta-information-to-slim-librar.patch @@ -1,7 +1,7 @@ From 3d7f8d18abca4e6132611fe544bf94b5d3483af3 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 11 Mar 2021 15:05:20 +0100 -Subject: [PATCH 001/138] PACKAGING: remove gdb exta information to slim +Subject: [PATCH 001/157] PACKAGING: remove gdb exta information to slim library --- @@ -22,5 +22,5 @@ index 21ba5c88d5..5995d276e4 100644 "c": ["-c", "-std=gnu11"], "cxx": ["-c", "-std=gnu++14", "-fno-rtti", "-Wvla"], -- -2.25.1 +2.36.0 diff --git a/patches/0002-Portenta-enable-certificates-in-filesystem.patch b/patches/0002-Portenta-enable-certificates-in-filesystem.patch index d2a0f14b9..892dadaa9 100644 --- a/patches/0002-Portenta-enable-certificates-in-filesystem.patch +++ b/patches/0002-Portenta-enable-certificates-in-filesystem.patch @@ -1,7 +1,7 @@ From cb1899e821138682f821ef80b4d1480c013ad3bd Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 28 Oct 2020 15:26:21 +0100 -Subject: [PATCH 002/138] Portenta: enable certificates in filesystem +Subject: [PATCH 002/157] Portenta: enable certificates in filesystem --- targets/targets.json | 2 ++ @@ -21,5 +21,5 @@ index f4d4055553..8732ee0ba8 100644 "QSPI_NO_SAMPLE_SHIFT", "CYW43XXX_UNBUFFERED_UART" -- -2.25.1 +2.36.0 diff --git a/patches/0003-I2CSlave.read-buf-count-returns-the-number-of-bytes-.patch b/patches/0003-I2CSlave.read-buf-count-returns-the-number-of-bytes-.patch index 9042ca9f8..b3c09aff6 100644 --- a/patches/0003-I2CSlave.read-buf-count-returns-the-number-of-bytes-.patch +++ b/patches/0003-I2CSlave.read-buf-count-returns-the-number-of-bytes-.patch @@ -1,7 +1,7 @@ From 3659582e80ee60cd6f393318f54c51b90ef6703e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 1 Apr 2020 12:21:59 +0200 -Subject: [PATCH 003/138] I2CSlave.read(buf, count) returns the number of bytes +Subject: [PATCH 003/157] I2CSlave.read(buf, count) returns the number of bytes actually read --- @@ -36,5 +36,5 @@ index 4317df9656..e4515820ad 100644 int I2CSlave::read(void) -- -2.25.1 +2.36.0 diff --git a/patches/0004-Add-AnalogIn-configure-function.patch b/patches/0004-Add-AnalogIn-configure-function.patch index 5340553c8..986ce7a45 100644 --- a/patches/0004-Add-AnalogIn-configure-function.patch +++ b/patches/0004-Add-AnalogIn-configure-function.patch @@ -1,7 +1,7 @@ From 7abd4be4ee59e6e96f250f9a79c5d70d365a2417 Mon Sep 17 00:00:00 2001 From: Paolo Calao Date: Wed, 13 May 2020 11:59:46 +0200 -Subject: [PATCH 004/138] Add AnalogIn configure function +Subject: [PATCH 004/157] Add AnalogIn configure function This adds a weak method to configure AnalogIn objects. Also, a strong implementation of such method for NRF5284 is provided. @@ -169,5 +169,5 @@ index 41b87722ac..4466f680c7 100644 uint32_t ch; }; -- -2.25.1 +2.36.0 diff --git a/patches/0005-HACK-avoid-10862-by-not-firing-the-assert.patch b/patches/0005-HACK-avoid-10862-by-not-firing-the-assert.patch index a62f986de..696fad450 100644 --- a/patches/0005-HACK-avoid-10862-by-not-firing-the-assert.patch +++ b/patches/0005-HACK-avoid-10862-by-not-firing-the-assert.patch @@ -1,7 +1,7 @@ From 5722a9ef477e5a3f4470898c7028633f1f004ff6 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 31 Jul 2019 12:48:04 +0200 -Subject: [PATCH 005/138] HACK: avoid #10862 by not firing the assert +Subject: [PATCH 005/157] HACK: avoid #10862 by not firing the assert --- drivers/usb/source/USBDevice.cpp | 18 ++++++++++-------- @@ -44,5 +44,5 @@ index 6d3cfc87d4..ddeabcfa15 100644 } -- -2.25.1 +2.36.0 diff --git a/patches/0006-portentaH7-Change-BLE-public-address.patch b/patches/0006-portentaH7-Change-BLE-public-address.patch index 69d1dd446..5a7085fb2 100644 --- a/patches/0006-portentaH7-Change-BLE-public-address.patch +++ b/patches/0006-portentaH7-Change-BLE-public-address.patch @@ -1,7 +1,7 @@ From 7670c4f59b63a06fea0fc6dcd96af6976a548317 Mon Sep 17 00:00:00 2001 From: Paolo Calao Date: Thu, 29 Oct 2020 15:40:32 +0100 -Subject: [PATCH 006/138] portentaH7: Change BLE public address +Subject: [PATCH 006/157] portentaH7: Change BLE public address --- .../ble/FEATURE_BLE/COMPONENT_CYW43XXX/HCIDriver.cpp | 11 +++++++++++ @@ -37,5 +37,5 @@ index 957e37594b..ff389c9f81 100644 } else { } -- -2.25.1 +2.36.0 diff --git a/patches/0007-TLSSocketWrapper-add-method-to-retrieve-certificates.patch b/patches/0007-TLSSocketWrapper-add-method-to-retrieve-certificates.patch index 6dfd7fa47..385548d31 100644 --- a/patches/0007-TLSSocketWrapper-add-method-to-retrieve-certificates.patch +++ b/patches/0007-TLSSocketWrapper-add-method-to-retrieve-certificates.patch @@ -1,7 +1,7 @@ From d1ded30e5559b403dd49378bfaf9e7fab87d4ffa Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 9 Nov 2020 10:00:01 +0100 -Subject: [PATCH 007/138] TLSSocketWrapper: add method to retrieve certificates +Subject: [PATCH 007/157] TLSSocketWrapper: add method to retrieve certificates from filesystem --- @@ -90,5 +90,5 @@ index cebaf04703..8202151eb7 100644 { return set_client_cert_key(client_cert_pem, strlen(client_cert_pem) + 1, client_private_key_pem, strlen(client_private_key_pem) + 1); -- -2.25.1 +2.36.0 diff --git a/patches/0008-TLSSocketWrapper-Add-unit-test-for-set_root_ca_cert_.patch b/patches/0008-TLSSocketWrapper-Add-unit-test-for-set_root_ca_cert_.patch index dd98e2d71..52da07c9e 100644 --- a/patches/0008-TLSSocketWrapper-Add-unit-test-for-set_root_ca_cert_.patch +++ b/patches/0008-TLSSocketWrapper-Add-unit-test-for-set_root_ca_cert_.patch @@ -1,7 +1,7 @@ From ec10b2d3b5671f72ff3be6510f561dcc15712d5e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 9 Nov 2020 13:34:18 +0100 -Subject: [PATCH 008/138] TLSSocketWrapper: Add unit test for +Subject: [PATCH 008/157] TLSSocketWrapper: Add unit test for set_root_ca_cert_path --- @@ -57,5 +57,5 @@ index 4f9ce6b96c..ad2d3d8d44 100644 #endif /* UNITTESTS_FEATURES_NETSOCKET_TLSSOCKET_TLS_TEST_CONFIG_H_ */ -- -2.25.1 +2.36.0 diff --git a/patches/0009-TLSSocketWrapper-add-test-for-certificates-stored-in.patch b/patches/0009-TLSSocketWrapper-add-test-for-certificates-stored-in.patch index 73c0f859c..ebc9120ee 100644 --- a/patches/0009-TLSSocketWrapper-add-test-for-certificates-stored-in.patch +++ b/patches/0009-TLSSocketWrapper-add-test-for-certificates-stored-in.patch @@ -1,7 +1,7 @@ From b61ee5dcb0010d99b8260457ac8286bb1078412b Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 9 Nov 2020 13:52:28 +0100 -Subject: [PATCH 009/138] TLSSocketWrapper: add test for certificates stored in +Subject: [PATCH 009/157] TLSSocketWrapper: add test for certificates stored in filesystem --- @@ -95,5 +95,5 @@ index 0000000000..cf3dff2e93 +} \ No newline at end of file -- -2.25.1 +2.36.0 diff --git a/patches/0010-Initial-support-Portenta-Beta.patch b/patches/0010-Initial-support-Portenta-Beta.patch index 2a55cdbd1..db44239c8 100644 --- a/patches/0010-Initial-support-Portenta-Beta.patch +++ b/patches/0010-Initial-support-Portenta-Beta.patch @@ -1,7 +1,7 @@ From 43be92f77f5c5e4ea6c6b9b3b9f9b1adc08bc2e3 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 10 Dec 2020 19:39:01 +0100 -Subject: [PATCH 010/138] Initial: support Portenta Beta +Subject: [PATCH 010/157] Initial: support Portenta Beta TODO: add 27mhz clock configuration --- @@ -22,5 +22,5 @@ index 8732ee0ba8..f79bc4f63f 100644 "network-default-interface-type": "ETHERNET", "i2c_timing_value_algo": true -- -2.25.1 +2.36.0 diff --git a/patches/0011-STM32-USB-allow-dynamic-USB-speed-configuration-base.patch b/patches/0011-STM32-USB-allow-dynamic-USB-speed-configuration-base.patch index 3913bfb91..4828722f6 100644 --- a/patches/0011-STM32-USB-allow-dynamic-USB-speed-configuration-base.patch +++ b/patches/0011-STM32-USB-allow-dynamic-USB-speed-configuration-base.patch @@ -1,7 +1,7 @@ From 2bdb291a44fd149d38662f70a574b1a06380fca7 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 11 Mar 2021 11:50:18 +0100 -Subject: [PATCH 011/138] STM32: USB: allow dynamic USB speed configuration +Subject: [PATCH 011/157] STM32: USB: allow dynamic USB speed configuration based on bootloader parameters --- @@ -141,5 +141,5 @@ index c45150de4b..40f1044216 100644 instance->events->start_process(); } -- -2.25.1 +2.36.0 diff --git a/patches/0012-Increase-Cordio-memory-pool-for-nRF52832.patch b/patches/0012-Increase-Cordio-memory-pool-for-nRF52832.patch index 748edb82e..5b79f078e 100644 --- a/patches/0012-Increase-Cordio-memory-pool-for-nRF52832.patch +++ b/patches/0012-Increase-Cordio-memory-pool-for-nRF52832.patch @@ -1,7 +1,7 @@ From 66c314a029c7db96c88c9155ec2db93f4f48ab72 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 10 Dec 2020 09:43:14 +0100 -Subject: [PATCH 012/138] Increase Cordio memory pool for nRF52832 +Subject: [PATCH 012/157] Increase Cordio memory pool for nRF52832 completes 9354bc2a958966739adb0b9584c966bc13e675d5 --- @@ -22,5 +22,5 @@ index 05e5a45eee..3a3d85128d 100644 "wsf-pool-buffer-size": { "help": "Defines the memory allocated for the wsf memory pool.", -- -2.25.1 +2.36.0 diff --git a/patches/0013-Cordio-Add-sendCmplt-Callback-for-updating-NumCmplPc.patch b/patches/0013-Cordio-Add-sendCmplt-Callback-for-updating-NumCmplPc.patch index d8422a8bd..71a966bbb 100644 --- a/patches/0013-Cordio-Add-sendCmplt-Callback-for-updating-NumCmplPc.patch +++ b/patches/0013-Cordio-Add-sendCmplt-Callback-for-updating-NumCmplPc.patch @@ -1,7 +1,7 @@ From 7001a3f148125888a91e33c949340b13af855242 Mon Sep 17 00:00:00 2001 From: Paolo Calao Date: Wed, 26 Aug 2020 17:57:42 +0200 -Subject: [PATCH 013/138] Cordio Add sendCmplt Callback for updating +Subject: [PATCH 013/157] Cordio Add sendCmplt Callback for updating NumCmplPckts on disconnection --- @@ -32,5 +32,5 @@ index 766c5170ec..5bc2190144 100644 if (pLctrVsHdlrs && pLctrVsHdlrs->connCleanup) { -- -2.25.1 +2.36.0 diff --git a/patches/0014-Add-support-for-Arduino-Edge-Control.patch b/patches/0014-Add-support-for-Arduino-Edge-Control.patch index 607bf260f..393dd7c3d 100644 --- a/patches/0014-Add-support-for-Arduino-Edge-Control.patch +++ b/patches/0014-Add-support-for-Arduino-Edge-Control.patch @@ -1,7 +1,7 @@ From d7f2002260d93cbd4424dca524ac0b5ac8855d9e Mon Sep 17 00:00:00 2001 From: Giampaolo Mancini Date: Wed, 8 Jan 2020 16:42:46 +0100 -Subject: [PATCH 014/138] Add support for Arduino Edge Control +Subject: [PATCH 014/157] Add support for Arduino Edge Control --- .../TARGET_EDGE_CONTROL/PinNames.h | 207 ++++++++++++++++++ @@ -293,5 +293,5 @@ index f79bc4f63f..0bc010dbea 100644 "core": "Cortex-M4F", "components_add": [ -- -2.25.1 +2.36.0 diff --git a/patches/0015-RASPBERRYPI-import-pico-sdk.patch b/patches/0015-RASPBERRYPI-import-pico-sdk.patch index 46ed2b2de..57a5729b3 100644 --- a/patches/0015-RASPBERRYPI-import-pico-sdk.patch +++ b/patches/0015-RASPBERRYPI-import-pico-sdk.patch @@ -1,7 +1,7 @@ From d0d987ef31108b9372818f7c728a29986a8b85de Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 3 May 2021 10:45:27 +0200 -Subject: [PATCH 015/138] RASPBERRYPI: import pico-sdk +Subject: [PATCH 015/157] RASPBERRYPI: import pico-sdk --- .../TARGET_RP2040/pico-sdk/CMakeLists.txt | 89 + @@ -122065,5 +122065,5 @@ index 0000000000..6c361e0002 + * \brief
    TinyUSB Host-mode support for the RP2040 + */ -- -2.25.1 +2.36.0 diff --git a/patches/0016-RP2040-add-NANO_RP2040_CONNECT-target.patch b/patches/0016-RP2040-add-NANO_RP2040_CONNECT-target.patch index 88ae04ceb..d35216f28 100644 --- a/patches/0016-RP2040-add-NANO_RP2040_CONNECT-target.patch +++ b/patches/0016-RP2040-add-NANO_RP2040_CONNECT-target.patch @@ -1,7 +1,7 @@ From da155e47b873ca2844201f68e8733dd7a2f85bf2 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 3 May 2021 10:56:43 +0200 -Subject: [PATCH 016/138] RP2040: add NANO_RP2040_CONNECT target +Subject: [PATCH 016/157] RP2040: add NANO_RP2040_CONNECT target --- targets/CMakeLists.txt | 1 + @@ -1031,5 +1031,5 @@ index 0bc010dbea..5bdddb968d 100644 "version": "1", "public": false -- -2.25.1 +2.36.0 diff --git a/patches/0017-RP2040-add-placeholder-files-for-includes-like-pico-.patch b/patches/0017-RP2040-add-placeholder-files-for-includes-like-pico-.patch index cf6588b35..b640c321d 100644 --- a/patches/0017-RP2040-add-placeholder-files-for-includes-like-pico-.patch +++ b/patches/0017-RP2040-add-placeholder-files-for-includes-like-pico-.patch @@ -1,7 +1,7 @@ From b2beb1cd8085dff199987ae140ea679bd671f62e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 12 Feb 2021 13:29:58 +0100 -Subject: [PATCH 017/138] RP2040: add placeholder files for includes like +Subject: [PATCH 017/157] RP2040: add placeholder files for includes like pico/*.h --- @@ -23,5 +23,5 @@ diff --git a/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk/common/pico_time/ new file mode 100644 index 0000000000..e69de29bb2 -- -2.25.1 +2.36.0 diff --git a/patches/0018-RP2040-implement-serial-api.patch b/patches/0018-RP2040-implement-serial-api.patch index ade9f5d26..51fa49ffa 100644 --- a/patches/0018-RP2040-implement-serial-api.patch +++ b/patches/0018-RP2040-implement-serial-api.patch @@ -1,7 +1,7 @@ From 374ca188ae04f1fc9cd2f2739448e37b290dfd35 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 12 Feb 2021 15:49:55 +0100 -Subject: [PATCH 018/138] RP2040: implement serial api +Subject: [PATCH 018/157] RP2040: implement serial api --- .../TARGET_RP2040/PeripheralPins.c | 85 +++++++ @@ -514,5 +514,5 @@ index 5bdddb968d..596670be3d 100644 }, "__build_tools_metadata__": { -- -2.25.1 +2.36.0 diff --git a/patches/0019-RP2040-add-pinmap-for-i2c-spi-pwm.patch b/patches/0019-RP2040-add-pinmap-for-i2c-spi-pwm.patch index 1a748b5fd..f7f3ed96d 100644 --- a/patches/0019-RP2040-add-pinmap-for-i2c-spi-pwm.patch +++ b/patches/0019-RP2040-add-pinmap-for-i2c-spi-pwm.patch @@ -1,7 +1,7 @@ From d2769007537ff59f08fd97d9c67eee05139bc0f5 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 12 Feb 2021 17:03:32 +0100 -Subject: [PATCH 019/138] RP2040: add pinmap for i2c, spi, pwm +Subject: [PATCH 019/157] RP2040: add pinmap for i2c, spi, pwm --- .../TARGET_RP2040/PeripheralNames.h | 6 +- @@ -179,5 +179,5 @@ index abeaed1d82..482f8f499c 100644 //*** ADC *** -- -2.25.1 +2.36.0 diff --git a/patches/0020-RP2040-Mark-.init-section-as-KEEP.patch b/patches/0020-RP2040-Mark-.init-section-as-KEEP.patch index de8408313..0206f9296 100644 --- a/patches/0020-RP2040-Mark-.init-section-as-KEEP.patch +++ b/patches/0020-RP2040-Mark-.init-section-as-KEEP.patch @@ -1,7 +1,7 @@ From b1f552e3a7735549513bf9806f37bfc16685bee9 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 15 Feb 2021 12:24:50 +0100 -Subject: [PATCH 020/138] RP2040: Mark .init section as KEEP +Subject: [PATCH 020/157] RP2040: Mark .init section as KEEP --- .../TARGET_RP2040/TOOLCHAIN_GCC_ARM/memmap_default.ld | 2 +- @@ -21,5 +21,5 @@ index 07d5812db1..fb2ff6d18a 100644 *(.fini) /* Pull all c'tors into .text */ -- -2.25.1 +2.36.0 diff --git a/patches/0021-RP2040-implement-mbed-api-analogin.patch b/patches/0021-RP2040-implement-mbed-api-analogin.patch index acd1d95c9..a7ba1735a 100644 --- a/patches/0021-RP2040-implement-mbed-api-analogin.patch +++ b/patches/0021-RP2040-implement-mbed-api-analogin.patch @@ -1,7 +1,7 @@ From 1a814e88b4c9077aa5458e9639080429691de2e1 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 15 Feb 2021 13:52:41 +0100 -Subject: [PATCH 021/138] RP2040: implement mbed api analogin. +Subject: [PATCH 021/157] RP2040: implement mbed api analogin. --- .../TARGET_RP2040/PeripheralNames.h | 5 +- @@ -129,5 +129,5 @@ index 7272492f2f..16dab0daaf 100644 }; -- -2.25.1 +2.36.0 diff --git a/patches/0022-RP2040-add-SPI-support.patch b/patches/0022-RP2040-add-SPI-support.patch index 488ec2320..b3dd5e42d 100644 --- a/patches/0022-RP2040-add-SPI-support.patch +++ b/patches/0022-RP2040-add-SPI-support.patch @@ -1,7 +1,7 @@ From 7a040207fa7a36319e1d2e26516210d9cdc44d6c Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Mon, 15 Feb 2021 15:51:03 +0100 -Subject: [PATCH 022/138] RP2040: add SPI support +Subject: [PATCH 022/157] RP2040: add SPI support --- .../TARGET_RP2040/PeripheralPins.c | 16 +-- @@ -207,5 +207,5 @@ index 596670be3d..98997cd193 100644 }, "NANO_RP2040_CONNECT": { -- -2.25.1 +2.36.0 diff --git a/patches/0023-RP2040-prefix-pico-sdk-s-i2c_init-function-with-a-_.patch b/patches/0023-RP2040-prefix-pico-sdk-s-i2c_init-function-with-a-_.patch index 259a299af..0d8a4a3f5 100644 --- a/patches/0023-RP2040-prefix-pico-sdk-s-i2c_init-function-with-a-_.patch +++ b/patches/0023-RP2040-prefix-pico-sdk-s-i2c_init-function-with-a-_.patch @@ -1,7 +1,7 @@ From a82090cdeb83df83716f8f9303d17dbf7f85050f Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Tue, 16 Feb 2021 06:30:59 +0100 -Subject: [PATCH 023/138] RP2040: prefix pico-sdk's i2c_init function with a +Subject: [PATCH 023/157] RP2040: prefix pico-sdk's i2c_init function with a '_' to avoid name clashes with mbed I2C API. @@ -37,5 +37,5 @@ index dda598c3e0..ead7bf1b1b 100644 /*! \brief Disable the I2C HW block * \ingroup hardware_i2c -- -2.25.1 +2.36.0 diff --git a/patches/0024-RP2040-add-I2C-peripheral-support.patch b/patches/0024-RP2040-add-I2C-peripheral-support.patch index 37ee96ba6..64bdba22b 100644 --- a/patches/0024-RP2040-add-I2C-peripheral-support.patch +++ b/patches/0024-RP2040-add-I2C-peripheral-support.patch @@ -1,7 +1,7 @@ From d6cbdb2efee07a2ae881023b42522a71d9b54eb9 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Tue, 16 Feb 2021 06:29:59 +0100 -Subject: [PATCH 024/138] RP2040: add I2C peripheral support +Subject: [PATCH 024/157] RP2040: add I2C peripheral support --- .../TARGET_RP2040/i2c_api.c | 88 +++++++++++++++++++ @@ -129,5 +129,5 @@ index 98997cd193..3f8b505fd3 100644 "PORT_OUT", "SERIAL", -- -2.25.1 +2.36.0 diff --git a/patches/0025-RP2040-implement-USBDevice.patch b/patches/0025-RP2040-implement-USBDevice.patch index 6e6bdc6c9..b87e7eb85 100644 --- a/patches/0025-RP2040-implement-USBDevice.patch +++ b/patches/0025-RP2040-implement-USBDevice.patch @@ -1,7 +1,7 @@ From 0c8b279a5eec6de39843ed2f4f346a9ffdb35eab Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 23 Feb 2021 10:41:45 +0100 -Subject: [PATCH 025/138] RP2040: implement USBDevice +Subject: [PATCH 025/157] RP2040: implement USBDevice Code by @ghollingworth --- @@ -633,5 +633,5 @@ index 3f8b505fd3..c9601649d8 100644 "MBED_MPU_CUSTOM", "PICO_TIME_DEFAULT_ALARM_POOL_DISABLED", -- -2.25.1 +2.36.0 diff --git a/patches/0026-RP2040-avoid-float.h-first-level-inclusion.patch b/patches/0026-RP2040-avoid-float.h-first-level-inclusion.patch index 1d0742ebc..4ad5612d3 100644 --- a/patches/0026-RP2040-avoid-float.h-first-level-inclusion.patch +++ b/patches/0026-RP2040-avoid-float.h-first-level-inclusion.patch @@ -1,7 +1,7 @@ From a08a8c9d5e28446843e9e4e8bc5787eb0c91accd Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 23 Feb 2021 16:46:39 +0100 -Subject: [PATCH 026/138] RP2040: avoid float.h first level inclusion +Subject: [PATCH 026/157] RP2040: avoid float.h first level inclusion --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/.mbedignore | 1 + @@ -25,5 +25,5 @@ diff --git a/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk/rp2_common/pico_f new file mode 100644 index 0000000000..e69de29bb2 -- -2.25.1 +2.36.0 diff --git a/patches/0027-RP2040-don-t-initalize-contructors-during-runtime_in.patch b/patches/0027-RP2040-don-t-initalize-contructors-during-runtime_in.patch index a58f359e0..7cf2ea9bd 100644 --- a/patches/0027-RP2040-don-t-initalize-contructors-during-runtime_in.patch +++ b/patches/0027-RP2040-don-t-initalize-contructors-during-runtime_in.patch @@ -1,7 +1,7 @@ From 63ac31755a473f3761f69298c0b52adf185c50b1 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 23 Feb 2021 16:47:27 +0100 -Subject: [PATCH 027/138] RP2040: don't initalize contructors during +Subject: [PATCH 027/157] RP2040: don't initalize contructors during runtime_init() --- @@ -33,5 +33,5 @@ index bd11d8f80b..22ff5208e6 100644 void __exit(int status) { -- -2.25.1 +2.36.0 diff --git a/patches/0028-RP2040-add-pwm-driver.patch b/patches/0028-RP2040-add-pwm-driver.patch index fc77feece..7150fe934 100644 --- a/patches/0028-RP2040-add-pwm-driver.patch +++ b/patches/0028-RP2040-add-pwm-driver.patch @@ -1,7 +1,7 @@ From 074599cf1116d7343e6de80f7fa47fe8d01d38ed Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 23 Feb 2021 16:48:23 +0100 -Subject: [PATCH 028/138] RP2040: add pwm driver +Subject: [PATCH 028/157] RP2040: add pwm driver --- .../TARGET_RP2040/objects.h | 9 + @@ -247,5 +247,5 @@ index c9601649d8..5d7c81b24a 100644 "SPI", "USBDEVICE" -- -2.25.1 +2.36.0 diff --git a/patches/0029-RP2040-add-flow-control-to-SERIAL-object.patch b/patches/0029-RP2040-add-flow-control-to-SERIAL-object.patch index 6b0316b57..9b0d8b404 100644 --- a/patches/0029-RP2040-add-flow-control-to-SERIAL-object.patch +++ b/patches/0029-RP2040-add-flow-control-to-SERIAL-object.patch @@ -1,7 +1,7 @@ From 13b653de264b6dc463062fb82a4af831b6163dcb Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 23 Feb 2021 16:48:58 +0100 -Subject: [PATCH 029/138] RP2040: add flow control to SERIAL object +Subject: [PATCH 029/157] RP2040: add flow control to SERIAL object --- targets/targets.json | 1 + @@ -20,5 +20,5 @@ index 5d7c81b24a..54897ff1bd 100644 "USBDEVICE" ] -- -2.25.1 +2.36.0 diff --git a/patches/0030-RP2040-add-lp-and-us-timer.patch b/patches/0030-RP2040-add-lp-and-us-timer.patch index 61ea22295..3e7c89592 100644 --- a/patches/0030-RP2040-add-lp-and-us-timer.patch +++ b/patches/0030-RP2040-add-lp-and-us-timer.patch @@ -1,7 +1,7 @@ From 94a3f41e7ad63ba27576c1fedc8ab5841434b00d Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 23 Feb 2021 16:52:04 +0100 -Subject: [PATCH 030/138] RP2040: add lp and us timer +Subject: [PATCH 030/157] RP2040: add lp and us timer lptimer is deactivated since it's meant to run at 1hz :| --- @@ -251,5 +251,5 @@ index 54897ff1bd..7859268c9c 100644 ] }, -- -2.25.1 +2.36.0 diff --git a/patches/0031-RP2040-implement-gpio_is_connected.patch b/patches/0031-RP2040-implement-gpio_is_connected.patch index 9e22c3856..71efb92e9 100644 --- a/patches/0031-RP2040-implement-gpio_is_connected.patch +++ b/patches/0031-RP2040-implement-gpio_is_connected.patch @@ -1,7 +1,7 @@ From 6f57c422233c09178179f186e50eefe236991333 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 26 Feb 2021 12:51:25 +0100 -Subject: [PATCH 031/138] RP2040: implement gpio_is_connected() +Subject: [PATCH 031/157] RP2040: implement gpio_is_connected() --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/gpio_api.c | 3 +++ @@ -20,5 +20,5 @@ index 7f6131c972..3d09714881 100644 +} \ No newline at end of file -- -2.25.1 +2.36.0 diff --git a/patches/0032-RP2040-adapt-linker-script-to-mbed.patch b/patches/0032-RP2040-adapt-linker-script-to-mbed.patch index 0032790e6..70ecf05d4 100644 --- a/patches/0032-RP2040-adapt-linker-script-to-mbed.patch +++ b/patches/0032-RP2040-adapt-linker-script-to-mbed.patch @@ -1,7 +1,7 @@ From 84c75cfecf704381769e84c42acb822efd5b6d9a Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 5 Mar 2021 17:01:18 +0100 -Subject: [PATCH 032/138] RP2040: adapt linker script to mbed +Subject: [PATCH 032/157] RP2040: adapt linker script to mbed --- .../TOOLCHAIN_GCC_ARM/memmap_default.ld | 16 ++++++++++++---- @@ -96,5 +96,5 @@ index 7859268c9c..9af3c2335e 100644 "MBED_MPU_CUSTOM", "PICO_TIME_DEFAULT_ALARM_POOL_DISABLED", -- -2.25.1 +2.36.0 diff --git a/patches/0033-RP2040-Start-adding-Flash-support.patch b/patches/0033-RP2040-Start-adding-Flash-support.patch index 18d865343..f0841d9ce 100644 --- a/patches/0033-RP2040-Start-adding-Flash-support.patch +++ b/patches/0033-RP2040-Start-adding-Flash-support.patch @@ -1,7 +1,7 @@ From a2d7d3e38356cae399c08d0aa59be95e118738dd Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Thu, 25 Feb 2021 18:44:50 +0100 -Subject: [PATCH 033/138] RP2040: Start adding Flash support +Subject: [PATCH 033/157] RP2040: Start adding Flash support --- .../TARGET_RP2040/flash_api.c | 107 ++++++++++++++++++ @@ -144,5 +144,5 @@ index 9af3c2335e..36f062709a 100644 "INTERRUPTIN", "PORT_IN", -- -2.25.1 +2.36.0 diff --git a/patches/0034-RP2040-Protect-flash-operations-in-critical-sections.patch b/patches/0034-RP2040-Protect-flash-operations-in-critical-sections.patch index 301ef25c9..a571bb511 100644 --- a/patches/0034-RP2040-Protect-flash-operations-in-critical-sections.patch +++ b/patches/0034-RP2040-Protect-flash-operations-in-critical-sections.patch @@ -1,7 +1,7 @@ From a34424eedf45eaf87e2bae704153a35cba21716b Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Wed, 3 Mar 2021 18:58:02 +0100 -Subject: [PATCH 034/138] RP2040: Protect flash operations in critical sections +Subject: [PATCH 034/157] RP2040: Protect flash operations in critical sections + fix addresses --- @@ -99,5 +99,5 @@ index 85e8f5c81f..01f71958c5 100644 +#endif \ No newline at end of file -- -2.25.1 +2.36.0 diff --git a/patches/0035-RP2040-Check-alignment-avoid-passing-const-buf-to-fl.patch b/patches/0035-RP2040-Check-alignment-avoid-passing-const-buf-to-fl.patch index 4d969f4f5..cf66a78a7 100644 --- a/patches/0035-RP2040-Check-alignment-avoid-passing-const-buf-to-fl.patch +++ b/patches/0035-RP2040-Check-alignment-avoid-passing-const-buf-to-fl.patch @@ -1,7 +1,7 @@ From 565b2630241f74b3b98e28c0cdd23edae227fd87 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Thu, 4 Mar 2021 11:05:14 +0100 -Subject: [PATCH 035/138] RP2040: Check alignment + avoid passing const buf to +Subject: [PATCH 035/157] RP2040: Check alignment + avoid passing const buf to flash_range_program() --- @@ -50,5 +50,5 @@ index 01f71958c5..fb1a28dd7f 100644 return 0; -- -2.25.1 +2.36.0 diff --git a/patches/0036-RP2040-Rename-pico-sdk-s-gpio_irq_handler-with-a-_-t.patch b/patches/0036-RP2040-Rename-pico-sdk-s-gpio_irq_handler-with-a-_-t.patch index 9a6a1f473..2393330c8 100644 --- a/patches/0036-RP2040-Rename-pico-sdk-s-gpio_irq_handler-with-a-_-t.patch +++ b/patches/0036-RP2040-Rename-pico-sdk-s-gpio_irq_handler-with-a-_-t.patch @@ -1,7 +1,7 @@ From fffd09bf501df71f3c5cabe9079eead9fbb2e0d8 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Fri, 5 Mar 2021 11:38:57 +0100 -Subject: [PATCH 036/138] RP2040: Rename pico-sdk's gpio_irq_handler with a '_' +Subject: [PATCH 036/157] RP2040: Rename pico-sdk's gpio_irq_handler with a '_' to avoid clashes with mbed API --- @@ -31,5 +31,5 @@ index 7051de309a..28a137663b 100644 } -- -2.25.1 +2.36.0 diff --git a/patches/0037-RP2040-Add-gpio-interrupt-support.patch b/patches/0037-RP2040-Add-gpio-interrupt-support.patch index 2e52fdf4b..a49f3f314 100644 --- a/patches/0037-RP2040-Add-gpio-interrupt-support.patch +++ b/patches/0037-RP2040-Add-gpio-interrupt-support.patch @@ -1,7 +1,7 @@ From c314412c1eff85ca90450db92091fea0a20956ca Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Fri, 5 Mar 2021 11:46:46 +0100 -Subject: [PATCH 037/138] RP2040: Add gpio interrupt support +Subject: [PATCH 037/157] RP2040: Add gpio interrupt support --- .../TARGET_RP2040/gpio_api.c | 105 +++++++++++++++++- @@ -148,5 +148,5 @@ index 3d09714881..a10a7d6c89 100644 + +#endif -- -2.25.1 +2.36.0 diff --git a/patches/0038-RP2040-usb-fix-USB_DEVICE_ENUMERATION_FIX-linking.patch b/patches/0038-RP2040-usb-fix-USB_DEVICE_ENUMERATION_FIX-linking.patch index ef46b326c..0e003706a 100644 --- a/patches/0038-RP2040-usb-fix-USB_DEVICE_ENUMERATION_FIX-linking.patch +++ b/patches/0038-RP2040-usb-fix-USB_DEVICE_ENUMERATION_FIX-linking.patch @@ -1,7 +1,7 @@ From c889efed9173dbceb12f565a63a55df21b344a02 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 8 Mar 2021 10:06:58 +0100 -Subject: [PATCH 038/138] RP2040: usb: fix USB_DEVICE_ENUMERATION_FIX linking +Subject: [PATCH 038/157] RP2040: usb: fix USB_DEVICE_ENUMERATION_FIX linking --- .../TARGET_RASPBERRYPI/TARGET_RP2040/USBPhy_RP2040.cpp | 9 +++++++++ @@ -48,5 +48,5 @@ index 36f062709a..05e1580d8b 100644 "MBED_MPU_CUSTOM", "PICO_TIME_DEFAULT_ALARM_POOL_DISABLED", -- -2.25.1 +2.36.0 diff --git a/patches/0039-RP2040-usb-make-all-unhandled-conditions-a-no-op.patch b/patches/0039-RP2040-usb-make-all-unhandled-conditions-a-no-op.patch index ba0077a06..955b636bf 100644 --- a/patches/0039-RP2040-usb-make-all-unhandled-conditions-a-no-op.patch +++ b/patches/0039-RP2040-usb-make-all-unhandled-conditions-a-no-op.patch @@ -1,7 +1,7 @@ From 1aae5c08ce13ee07fb81f60de9d6e3d5f8f0f39f Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 8 Mar 2021 10:07:26 +0100 -Subject: [PATCH 039/138] RP2040: usb: make all unhandled conditions a no-op +Subject: [PATCH 039/157] RP2040: usb: make all unhandled conditions a no-op --- .../TARGET_RP2040/USBPhy_RP2040.cpp | 16 ++++------------ @@ -50,5 +50,5 @@ index c88bdcc573..ff24a6dcd6 100644 void USBPhyHw::process() -- -2.25.1 +2.36.0 diff --git a/patches/0040-RP2040-i2c-fix-addressing-mismatch.patch b/patches/0040-RP2040-i2c-fix-addressing-mismatch.patch index 32fb5399c..eeb54f00d 100644 --- a/patches/0040-RP2040-i2c-fix-addressing-mismatch.patch +++ b/patches/0040-RP2040-i2c-fix-addressing-mismatch.patch @@ -1,7 +1,7 @@ From 693b0de97bce9480895d8fd7e85caaf2856de9c5 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 8 Mar 2021 10:53:48 +0100 -Subject: [PATCH 040/138] RP2040: i2c: fix addressing mismatch +Subject: [PATCH 040/157] RP2040: i2c: fix addressing mismatch --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/i2c_api.c | 13 +++++++++++-- @@ -40,5 +40,5 @@ index 210279b3b0..ae9f0c0fd3 100644 (size_t)length, /* nostop = */(stop == 0)); -- -2.25.1 +2.36.0 diff --git a/patches/0041-RP2040-SPI-check-SS-correctness-only-if-declared.patch b/patches/0041-RP2040-SPI-check-SS-correctness-only-if-declared.patch index a2653aa5e..5b23f28b2 100644 --- a/patches/0041-RP2040-SPI-check-SS-correctness-only-if-declared.patch +++ b/patches/0041-RP2040-SPI-check-SS-correctness-only-if-declared.patch @@ -1,7 +1,7 @@ From 7d824d69a187aa4426d62e47ddd79c5c5ee08302 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 8 Mar 2021 11:17:31 +0100 -Subject: [PATCH 041/138] RP2040: SPI: check SS correctness only if declared +Subject: [PATCH 041/157] RP2040: SPI: check SS correctness only if declared --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/spi_api.c | 5 +++-- @@ -24,5 +24,5 @@ index 1cc6bfa0fb..73129835fa 100644 /* Obtain pointer to the SPI module. */ obj->dev = (spi_inst_t *)pinmap_function(mosi, PinMap_SPI_MOSI); -- -2.25.1 +2.36.0 diff --git a/patches/0042-RP2040-Add-I2C-slave.patch b/patches/0042-RP2040-Add-I2C-slave.patch index 7b72210b4..87fb1761e 100644 --- a/patches/0042-RP2040-Add-I2C-slave.patch +++ b/patches/0042-RP2040-Add-I2C-slave.patch @@ -1,7 +1,7 @@ From 9f83b82d9a12b90a498eda5d1b2f0dc1b97d49d1 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Thu, 25 Feb 2021 12:44:31 +0100 -Subject: [PATCH 042/138] RP2040: Add I2C slave +Subject: [PATCH 042/157] RP2040: Add I2C slave --- .../TARGET_RP2040/i2c_api.c | 145 +++++++++++++++++- @@ -269,5 +269,5 @@ index 05e1580d8b..4e02c7ebdc 100644 "PORT_IN", "PORT_OUT", -- -2.25.1 +2.36.0 diff --git a/patches/0043-RP2040-PWM-fix-asserts.patch b/patches/0043-RP2040-PWM-fix-asserts.patch index c7e17a66b..e29187f6f 100644 --- a/patches/0043-RP2040-PWM-fix-asserts.patch +++ b/patches/0043-RP2040-PWM-fix-asserts.patch @@ -1,7 +1,7 @@ From aeb05fced52075f4e30337c9a947b771ecf59497 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 15 Mar 2021 14:53:31 +0100 -Subject: [PATCH 043/138] RP2040: PWM: fix asserts +Subject: [PATCH 043/157] RP2040: PWM: fix asserts --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/pwmout_api.c | 5 +++-- @@ -38,5 +38,5 @@ index 5f5d847995..cc2b935bc7 100644 } -- -2.25.1 +2.36.0 diff --git a/patches/0044-RP2040-nano-connect-fix-pinmap.patch b/patches/0044-RP2040-nano-connect-fix-pinmap.patch index 6f89d7f11..602951c94 100644 --- a/patches/0044-RP2040-nano-connect-fix-pinmap.patch +++ b/patches/0044-RP2040-nano-connect-fix-pinmap.patch @@ -1,7 +1,7 @@ From ca0a1a1715078f67e7bd385d37b8aea001049f0c Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 15 Mar 2021 15:22:43 +0100 -Subject: [PATCH 044/138] RP2040: nano connect: fix pinmap +Subject: [PATCH 044/157] RP2040: nano connect: fix pinmap --- .../TARGET_NANO_RP2040_CONNECT/PinNames.h | 25 ++++++++++++++++--- @@ -52,5 +52,5 @@ index e84e89440c..bad8f487c6 100644 // Not connected NC = (int)0xFFFFFFFF -- -2.25.1 +2.36.0 diff --git a/patches/0045-RP2040-add-Raspberry-Pico-target.patch b/patches/0045-RP2040-add-Raspberry-Pico-target.patch index 1d91e0c8b..d07efe1f8 100644 --- a/patches/0045-RP2040-add-Raspberry-Pico-target.patch +++ b/patches/0045-RP2040-add-Raspberry-Pico-target.patch @@ -1,7 +1,7 @@ From 868131e9898d877b463c698f375e6975b27a0711 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 15 Mar 2021 15:28:08 +0100 -Subject: [PATCH 045/138] RP2040: add Raspberry Pico target +Subject: [PATCH 045/157] RP2040: add Raspberry Pico target --- .../TARGET_RASPBERRY_PI_PICO/PinNames.h | 70 +++++++++++++++++++ @@ -151,5 +151,5 @@ index 4e02c7ebdc..6821974873 100644 "version": "1", "public": false -- -2.25.1 +2.36.0 diff --git a/patches/0046-RP2040-fix-analogin_read_u16-to-report-full-range.patch b/patches/0046-RP2040-fix-analogin_read_u16-to-report-full-range.patch index 629f2db4f..e39040cdb 100644 --- a/patches/0046-RP2040-fix-analogin_read_u16-to-report-full-range.patch +++ b/patches/0046-RP2040-fix-analogin_read_u16-to-report-full-range.patch @@ -1,7 +1,7 @@ From 9a0d8c43633c430586d416dcd36ec10df0dd0b6a Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 15 Mar 2021 15:48:37 +0100 -Subject: [PATCH 046/138] RP2040: fix analogin_read_u16 to report full range +Subject: [PATCH 046/157] RP2040: fix analogin_read_u16 to report full range --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/analogin_api.c | 6 +++--- @@ -39,5 +39,5 @@ index 4e95f4551f..e1773a065c 100644 const PinMap *analogin_pinmap() -- -2.25.1 +2.36.0 diff --git a/patches/0047-RP2040-fix-PwmOut-enable-command.patch b/patches/0047-RP2040-fix-PwmOut-enable-command.patch index 3f8209c3b..0d2a2b59d 100644 --- a/patches/0047-RP2040-fix-PwmOut-enable-command.patch +++ b/patches/0047-RP2040-fix-PwmOut-enable-command.patch @@ -1,7 +1,7 @@ From c2a7e5dde882c1cb31917e282169cc0a8d463348 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 16 Mar 2021 09:54:26 +0100 -Subject: [PATCH 047/138] RP2040: fix PwmOut enable command +Subject: [PATCH 047/157] RP2040: fix PwmOut enable command --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/pwmout_api.c | 1 + @@ -20,5 +20,5 @@ index cc2b935bc7..e4bc4daa80 100644 /** Read the current float-point output duty-cycle -- -2.25.1 +2.36.0 diff --git a/patches/0048-RP2040-Implement-watchdog.patch b/patches/0048-RP2040-Implement-watchdog.patch index 23d4421b8..3166cee7f 100644 --- a/patches/0048-RP2040-Implement-watchdog.patch +++ b/patches/0048-RP2040-Implement-watchdog.patch @@ -1,7 +1,7 @@ From 91ff42a82016c6739e43025adee4efd0072aae77 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Mon, 15 Mar 2021 16:33:00 +0100 -Subject: [PATCH 048/138] RP2040: Implement watchdog +Subject: [PATCH 048/157] RP2040: Implement watchdog --- .../TARGET_RP2040/watchdog_api.c | 46 +++++++++++++++++++ @@ -74,5 +74,5 @@ index 6821974873..c9ddc9708f 100644 ] }, -- -2.25.1 +2.36.0 diff --git a/patches/0049-RP2040-Implement-reset-reasons.patch b/patches/0049-RP2040-Implement-reset-reasons.patch index a2e00a220..2aeb9c8fa 100644 --- a/patches/0049-RP2040-Implement-reset-reasons.patch +++ b/patches/0049-RP2040-Implement-reset-reasons.patch @@ -1,7 +1,7 @@ From bab7209459afc3510873637c3ed5eeca6b704930 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Mon, 15 Mar 2021 17:52:09 +0100 -Subject: [PATCH 049/138] RP2040: Implement reset reasons +Subject: [PATCH 049/157] RP2040: Implement reset reasons --- .../TARGET_RP2040/reset_reason.c | 33 +++++++++++++++++++ @@ -63,5 +63,5 @@ index c9ddc9708f..ada53ef030 100644 }, "NANO_RP2040_CONNECT": { -- -2.25.1 +2.36.0 diff --git a/patches/0050-RP2040-fix-spi.h-spurious-inclusion-in-case-insensit.patch b/patches/0050-RP2040-fix-spi.h-spurious-inclusion-in-case-insensit.patch index d0fb2327a..ddf2b2609 100644 --- a/patches/0050-RP2040-fix-spi.h-spurious-inclusion-in-case-insensit.patch +++ b/patches/0050-RP2040-fix-spi.h-spurious-inclusion-in-case-insensit.patch @@ -1,7 +1,7 @@ From 52e4cdfd0a4e2017d0718ce4ae360c37d3ef25dc Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 16 Mar 2021 11:07:10 +0100 -Subject: [PATCH 050/138] RP2040: fix spi.h spurious inclusion in case +Subject: [PATCH 050/157] RP2040: fix spi.h spurious inclusion in case insensitive filesystems --- @@ -33,5 +33,5 @@ diff --git a/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk/rp2_common/hardwa new file mode 100644 index 0000000000..e69de29bb2 -- -2.25.1 +2.36.0 diff --git a/patches/0051-RP2040-UART-baud-can-t-be-changed-at-runtime.patch b/patches/0051-RP2040-UART-baud-can-t-be-changed-at-runtime.patch index 871390255..a2986f9b5 100644 --- a/patches/0051-RP2040-UART-baud-can-t-be-changed-at-runtime.patch +++ b/patches/0051-RP2040-UART-baud-can-t-be-changed-at-runtime.patch @@ -1,7 +1,7 @@ From f8226d1f456502675e11dc757fa589fc9315a565 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 24 Mar 2021 11:55:51 +0100 -Subject: [PATCH 051/138] RP2040: UART: baud can't be changed at runtime +Subject: [PATCH 051/157] RP2040: UART: baud can't be changed at runtime --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/serial_api.c | 3 ++- @@ -22,5 +22,5 @@ index 6a90e64323..8d95f6c2a3 100644 void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) -- -2.25.1 +2.36.0 diff --git a/patches/0052-RP2040-i2c-remove-debug-prints.patch b/patches/0052-RP2040-i2c-remove-debug-prints.patch index 2c1187b7e..73d5873c6 100644 --- a/patches/0052-RP2040-i2c-remove-debug-prints.patch +++ b/patches/0052-RP2040-i2c-remove-debug-prints.patch @@ -1,7 +1,7 @@ From d5606dea31817f591b38873c67a0fd323e02f225 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 16 Mar 2021 17:19:42 +0100 -Subject: [PATCH 052/138] RP2040: i2c: remove debug prints +Subject: [PATCH 052/157] RP2040: i2c: remove debug prints --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/i2c_api.c | 2 +- @@ -21,5 +21,5 @@ index 9d7510bedf..2b776562a1 100644 #else #define DEBUG_PRINTF(...) -- -2.25.1 +2.36.0 diff --git a/patches/0053-RP2040-PICO-Add-CONSOLE_-X-defines.patch b/patches/0053-RP2040-PICO-Add-CONSOLE_-X-defines.patch index dbc16853b..425d71477 100644 --- a/patches/0053-RP2040-PICO-Add-CONSOLE_-X-defines.patch +++ b/patches/0053-RP2040-PICO-Add-CONSOLE_-X-defines.patch @@ -1,7 +1,7 @@ From fd61ad4b39de956dc88a00ad8a37509b95be5291 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 13 Apr 2021 10:03:51 +0200 -Subject: [PATCH 053/138] RP2040 PICO: Add CONSOLE_*X defines +Subject: [PATCH 053/157] RP2040 PICO: Add CONSOLE_*X defines --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/PeripheralNames.h | 6 +++--- @@ -48,5 +48,5 @@ index bad8f487c6..784cfff18f 100644 LED1 = p6, LED2 = p6, -- -2.25.1 +2.36.0 diff --git a/patches/0054-RP2040-FLASH-fix-multipage-write.patch b/patches/0054-RP2040-FLASH-fix-multipage-write.patch index 6ab3e4dad..11cfc94b8 100644 --- a/patches/0054-RP2040-FLASH-fix-multipage-write.patch +++ b/patches/0054-RP2040-FLASH-fix-multipage-write.patch @@ -1,7 +1,7 @@ From aacad0df4aecaec5b6953ee343b5697d776e261a Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 13 Apr 2021 12:20:06 +0200 -Subject: [PATCH 054/138] RP2040: FLASH: fix multipage write +Subject: [PATCH 054/157] RP2040: FLASH: fix multipage write --- .../TARGET_RASPBERRYPI/TARGET_RP2040/flash_api.c | 16 ++++++---------- @@ -37,5 +37,5 @@ index fb1a28dd7f..2ebfc40a04 100644 return 0; -- -2.25.1 +2.36.0 diff --git a/patches/0055-RP2040-fix-include-paths.patch b/patches/0055-RP2040-fix-include-paths.patch index e4f2ab79d..1bc1a4b5c 100644 --- a/patches/0055-RP2040-fix-include-paths.patch +++ b/patches/0055-RP2040-fix-include-paths.patch @@ -1,7 +1,7 @@ From e4024c767229fa2006d878df098b23c6380f96cc Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 3 May 2021 14:32:14 +0200 -Subject: [PATCH 055/138] RP2040: fix include paths +Subject: [PATCH 055/157] RP2040: fix include paths --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/analogin_api.c | 2 +- @@ -47,5 +47,5 @@ index 007b79c322..b7abac8917 100644 #if DEVICE_WATCHDOG -- -2.25.1 +2.36.0 diff --git a/patches/0056-RP2040-silence-nasty-warning.patch b/patches/0056-RP2040-silence-nasty-warning.patch index 10f90bfa6..cedd9b72c 100644 --- a/patches/0056-RP2040-silence-nasty-warning.patch +++ b/patches/0056-RP2040-silence-nasty-warning.patch @@ -1,7 +1,7 @@ From 50901e7a854ec5a01fe7b44a4f085191633ee4eb Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 3 May 2021 14:32:33 +0200 -Subject: [PATCH 056/138] RP2040: silence nasty warning +Subject: [PATCH 056/157] RP2040: silence nasty warning --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/objects.h | 1 + @@ -20,5 +20,5 @@ index cdbd5655e6..280f166d4d 100644 #ifdef __cplusplus #include -- -2.25.1 +2.36.0 diff --git a/patches/0057-RP2040-start-fixing-CMake-files-for-mbed-cli-2.patch b/patches/0057-RP2040-start-fixing-CMake-files-for-mbed-cli-2.patch index 79ea9f126..9a2795309 100644 --- a/patches/0057-RP2040-start-fixing-CMake-files-for-mbed-cli-2.patch +++ b/patches/0057-RP2040-start-fixing-CMake-files-for-mbed-cli-2.patch @@ -1,7 +1,7 @@ From 01fe140916bb8aecba2d4c7966aa81a1b201b22c Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 3 May 2021 14:33:02 +0200 -Subject: [PATCH 057/138] RP2040: start fixing CMake files for mbed cli 2 +Subject: [PATCH 057/157] RP2040: start fixing CMake files for mbed cli 2 --- targets/TARGET_RASPBERRYPI/CMakeLists.txt | 17 ++-- @@ -189,5 +189,5 @@ index 0000000000..5df188f681 + +target_link_libraries(mbed-raspberrypi-pico INTERFACE mbed-rp2040) -- -2.25.1 +2.36.0 diff --git a/patches/0058-RP2040-fix-and-update-Raspberry-Pi-Pico-target.patch b/patches/0058-RP2040-fix-and-update-Raspberry-Pi-Pico-target.patch index 8a526afa7..286c08711 100644 --- a/patches/0058-RP2040-fix-and-update-Raspberry-Pi-Pico-target.patch +++ b/patches/0058-RP2040-fix-and-update-Raspberry-Pi-Pico-target.patch @@ -1,7 +1,7 @@ From f90c337b6b5dd2c6f5b185f4af1f28543f4ce4d0 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 3 May 2021 15:12:12 +0200 -Subject: [PATCH 058/138] RP2040: fix and update Raspberry Pi Pico target +Subject: [PATCH 058/157] RP2040: fix and update Raspberry Pi Pico target --- .../TARGET_RASPBERRY_PI_PICO/CMakeLists.txt | 10 +++++----- @@ -53,5 +53,5 @@ index 6a47df933a..2b2e9463ef 100644 LED1 = p25, LED2 = p25, -- -2.25.1 +2.36.0 diff --git a/patches/0059-RP2040-USBPhy-implement-stall-and-unstall.patch b/patches/0059-RP2040-USBPhy-implement-stall-and-unstall.patch index a18fa2fd2..42724404f 100644 --- a/patches/0059-RP2040-USBPhy-implement-stall-and-unstall.patch +++ b/patches/0059-RP2040-USBPhy-implement-stall-and-unstall.patch @@ -1,7 +1,7 @@ From 6db6500d74a388ae1b7e39d8fb96097fcbd4423f Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 7 May 2021 16:08:53 +0200 -Subject: [PATCH 059/138] RP2040: USBPhy: implement stall() and unstall() +Subject: [PATCH 059/157] RP2040: USBPhy: implement stall() and unstall() --- .../TARGET_RP2040/USBPhy_RP2040.cpp | 12 +++++++++--- @@ -42,5 +42,5 @@ index ff24a6dcd6..eb387af3c3 100644 bool USBPhyHw::endpoint_read(usb_ep_t endpoint, uint8_t *data, uint32_t size) -- -2.25.1 +2.36.0 diff --git a/patches/0060-RP2040-include-multicore-library-in-build.patch b/patches/0060-RP2040-include-multicore-library-in-build.patch index 42ea3a7d3..eb6658ba7 100644 --- a/patches/0060-RP2040-include-multicore-library-in-build.patch +++ b/patches/0060-RP2040-include-multicore-library-in-build.patch @@ -1,7 +1,7 @@ From 50428cf9f8475d6bbddf1b516a2f3e7cec409c8f Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 11 May 2021 09:41:45 +0200 -Subject: [PATCH 060/138] RP2040: include multicore library in build +Subject: [PATCH 060/157] RP2040: include multicore library in build --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/.mbedignore | 1 - @@ -48,5 +48,5 @@ index 0ceea4def8..6b2321f12f 100644 \ No newline at end of file +} -- -2.25.1 +2.36.0 diff --git a/patches/0061-RP2040-USB-retry-handling-irqs-if-some-went-missing.patch b/patches/0061-RP2040-USB-retry-handling-irqs-if-some-went-missing.patch index 2c7bada3a..42a799d02 100644 --- a/patches/0061-RP2040-USB-retry-handling-irqs-if-some-went-missing.patch +++ b/patches/0061-RP2040-USB-retry-handling-irqs-if-some-went-missing.patch @@ -1,7 +1,7 @@ From ed508d59795c23c6c45c5b9ed42f3370cc8aaf69 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 12 May 2021 16:00:01 +0200 -Subject: [PATCH 061/138] RP2040: USB: retry handling irqs if some went missing +Subject: [PATCH 061/157] RP2040: USB: retry handling irqs if some went missing --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/USBPhy_RP2040.cpp | 6 +++++- @@ -32,5 +32,5 @@ index eb387af3c3..64ae5d3a4c 100644 -- -2.25.1 +2.36.0 diff --git a/patches/0062-Nano-RP2040-Connect-force-flash-size-to-16MB.patch b/patches/0062-Nano-RP2040-Connect-force-flash-size-to-16MB.patch index 8dc20631a..0e2cda878 100644 --- a/patches/0062-Nano-RP2040-Connect-force-flash-size-to-16MB.patch +++ b/patches/0062-Nano-RP2040-Connect-force-flash-size-to-16MB.patch @@ -1,7 +1,7 @@ From 5d86279b3c3895ecb75b45a4e9938d91d0e0166e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 24 May 2021 16:13:09 +0200 -Subject: [PATCH 062/138] Nano RP2040 Connect: force flash size to 16MB +Subject: [PATCH 062/157] Nano RP2040 Connect: force flash size to 16MB --- targets/targets.json | 1 + @@ -20,5 +20,5 @@ index ada53ef030..687c15a05a 100644 "PICO_UART_ENABLE_CRLF_SUPPORT=0" ] -- -2.25.1 +2.36.0 diff --git a/patches/0063-Save-watchdog-timeout-in-a-static-variable-accessibl.patch b/patches/0063-Save-watchdog-timeout-in-a-static-variable-accessibl.patch index 535f4ae5f..eef9d131d 100644 --- a/patches/0063-Save-watchdog-timeout-in-a-static-variable-accessibl.patch +++ b/patches/0063-Save-watchdog-timeout-in-a-static-variable-accessibl.patch @@ -1,7 +1,7 @@ From d6281c2458a4b8dadad5856a27342e0b32a331c0 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Fri, 4 Jun 2021 14:45:38 +0200 -Subject: [PATCH 063/138] Save watchdog timeout in a static variable accessible +Subject: [PATCH 063/157] Save watchdog timeout in a static variable accessible from Arduino APIs --- @@ -38,5 +38,5 @@ index b7abac8917..9263eb48d5 100644 watchdog_features_t hal_watchdog_get_platform_features(void) -- -2.25.1 +2.36.0 diff --git a/patches/0064-RP2040-us_ticker-fix-missing-interrupts-after-32bit-.patch b/patches/0064-RP2040-us_ticker-fix-missing-interrupts-after-32bit-.patch index c0c5a077f..b846a2b61 100644 --- a/patches/0064-RP2040-us_ticker-fix-missing-interrupts-after-32bit-.patch +++ b/patches/0064-RP2040-us_ticker-fix-missing-interrupts-after-32bit-.patch @@ -1,7 +1,7 @@ From b80637a1c74c2bd6a1782fd1f668e1ef13b8dbfe Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Wed, 30 Jun 2021 11:50:21 +0200 -Subject: [PATCH 064/138] RP2040: us_ticker: fix missing interrupts after 32bit +Subject: [PATCH 064/157] RP2040: us_ticker: fix missing interrupts after 32bit wrap --- @@ -67,5 +67,5 @@ index 00edf82830..b3b8497188 100644 + hardware_alarm_unclaim(alarm_num); } -- -2.25.1 +2.36.0 diff --git a/patches/0065-Nano-RP2040-connect-use-standard-W25Q080-2nd-stage.patch b/patches/0065-Nano-RP2040-connect-use-standard-W25Q080-2nd-stage.patch index 3568ce1f0..3253dab00 100644 --- a/patches/0065-Nano-RP2040-connect-use-standard-W25Q080-2nd-stage.patch +++ b/patches/0065-Nano-RP2040-connect-use-standard-W25Q080-2nd-stage.patch @@ -1,7 +1,7 @@ From c63b1f634b2a97cf061c2b09b955114a676447c7 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 18 Jun 2021 17:58:21 +0200 -Subject: [PATCH 065/138] Nano RP2040 connect: use standard W25Q080 2nd stage +Subject: [PATCH 065/157] Nano RP2040 connect: use standard W25Q080 2nd stage Latest boards ship with a different flash chip; QE bit is set during production and should never be set to 0. Since the adesto specific code is not working on the new flash, let's fallback to the standard 2nd stage without PROGRAM_STATUS_REG define @@ -50,5 +50,5 @@ index e9be188191..fc6bea7df6 100644 +.byte 0xf4, 0x00, 0x00, 0x18, 0x22, 0x20, 0x00, 0xa0, 0x00, 0x01, 0x00, 0x10, 0x08, 0xed, 0x00, 0xe0 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xb2, 0x4e, 0x7a -- -2.25.1 +2.36.0 diff --git a/patches/0066-RP2040-optimize-flash-ram-occupation.patch b/patches/0066-RP2040-optimize-flash-ram-occupation.patch index 994a9afb3..371361d9b 100644 --- a/patches/0066-RP2040-optimize-flash-ram-occupation.patch +++ b/patches/0066-RP2040-optimize-flash-ram-occupation.patch @@ -1,7 +1,7 @@ From 371bf34f0070753420c9629fd853a7beff992cc2 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 2 Aug 2021 10:23:43 +0200 -Subject: [PATCH 066/138] RP2040: optimize flash/ram occupation +Subject: [PATCH 066/157] RP2040: optimize flash/ram occupation Since we are not using ROM functions here, just keep everything as default as possible --- @@ -61,5 +61,5 @@ index d92bd42107..ec8bac7e40 100644 *(.data*) -- -2.25.1 +2.36.0 diff --git a/patches/0067-RP2040-Add-weak-aliases-for-ISR-handlers.patch b/patches/0067-RP2040-Add-weak-aliases-for-ISR-handlers.patch index ff02decde..3aa57bee0 100644 --- a/patches/0067-RP2040-Add-weak-aliases-for-ISR-handlers.patch +++ b/patches/0067-RP2040-Add-weak-aliases-for-ISR-handlers.patch @@ -1,7 +1,7 @@ From 600aa59949813b2b7ca011009234ad417d340861 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 2 Aug 2021 10:34:57 +0200 -Subject: [PATCH 067/138] RP2040: Add weak aliases for ISR handlers +Subject: [PATCH 067/157] RP2040: Add weak aliases for ISR handlers Fixes baremetal build --- @@ -28,5 +28,5 @@ index 3f90b95ee2..97af458711 100644 .macro decl_isr name .weak \name -- -2.25.1 +2.36.0 diff --git a/patches/0068-RP2040-enable-led-indication-on-mbed_die.patch b/patches/0068-RP2040-enable-led-indication-on-mbed_die.patch index 8befc6928..e289dccda 100644 --- a/patches/0068-RP2040-enable-led-indication-on-mbed_die.patch +++ b/patches/0068-RP2040-enable-led-indication-on-mbed_die.patch @@ -1,7 +1,7 @@ From a369b286fa03ca583f6e82342fd3819fa1c47990 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 10 Aug 2021 12:09:30 +0200 -Subject: [PATCH 068/138] RP2040: enable led indication on mbed_die() +Subject: [PATCH 068/157] RP2040: enable led indication on mbed_die() --- targets/TARGET_RASPBERRYPI/TARGET_RP2040/objects.h | 2 ++ @@ -19,5 +19,5 @@ index 280f166d4d..f5f44a58f4 100644 + #endif -- -2.25.1 +2.36.0 diff --git a/patches/0069-check-MISO-correctness-only-if-it-is-declared.patch b/patches/0069-check-MISO-correctness-only-if-it-is-declared.patch index b2aec93d4..e55286705 100644 --- a/patches/0069-check-MISO-correctness-only-if-it-is-declared.patch +++ b/patches/0069-check-MISO-correctness-only-if-it-is-declared.patch @@ -1,7 +1,7 @@ From 9806b6cf13f2c7ac60335baac8e83601cfdec78e Mon Sep 17 00:00:00 2001 From: Josep Comas Date: Sat, 31 Jul 2021 18:57:41 +0200 -Subject: [PATCH 069/138] check MISO correctness only if it is declared +Subject: [PATCH 069/157] check MISO correctness only if it is declared It is very common to have displays without MISO pin connected to MCU, for example, https://www.waveshare.com/pico-lcd-1.3.htm hangs calling spi_init(&spi, p11, NC, p10, NC); --- @@ -26,5 +26,5 @@ index 73129835fa..271cf58d1c 100644 MBED_ASSERT(spi_sclk == spi_ssel); } -- -2.25.1 +2.36.0 diff --git a/patches/0070-rp2040-Fix-I2CSlave-synchronization-issue-by-adding-.patch b/patches/0070-rp2040-Fix-I2CSlave-synchronization-issue-by-adding-.patch index a1b8a2f78..fab0c6244 100644 --- a/patches/0070-rp2040-Fix-I2CSlave-synchronization-issue-by-adding-.patch +++ b/patches/0070-rp2040-Fix-I2CSlave-synchronization-issue-by-adding-.patch @@ -1,7 +1,7 @@ From 8bbd9dbe99e5be417b55723bed4c054a2f113e43 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Thu, 7 Oct 2021 18:11:59 +0200 -Subject: [PATCH 070/138] rp2040: Fix I2CSlave synchronization issue by adding +Subject: [PATCH 070/157] rp2040: Fix I2CSlave synchronization issue by adding a timeout for the read --- @@ -42,5 +42,5 @@ index 2b776562a1..ec52728f63 100644 DEBUG_PRINTF("i2c_slave read %d bytes\r\n", read_len); -- -2.25.1 +2.36.0 diff --git a/patches/0071-STM32-PWM-add-export-HRTIM-capable-pins-to-Periphera.patch b/patches/0071-STM32-PWM-add-export-HRTIM-capable-pins-to-Periphera.patch index 7e5e93d07..d1a5b4836 100644 --- a/patches/0071-STM32-PWM-add-export-HRTIM-capable-pins-to-Periphera.patch +++ b/patches/0071-STM32-PWM-add-export-HRTIM-capable-pins-to-Periphera.patch @@ -1,7 +1,7 @@ From cda8dd2906f3463ee2b368d4622d86291ef0e5ef Mon Sep 17 00:00:00 2001 From: Riccardo Rizzo Date: Mon, 28 Jun 2021 15:03:50 +0200 -Subject: [PATCH 071/138] STM32: PWM: add export HRTIM capable pins to +Subject: [PATCH 071/157] STM32: PWM: add export HRTIM capable pins to PeripheralPins --- @@ -139,5 +139,5 @@ index 63f0e87599..44a95f9c02 100644 store_uart(pin, name, sig) if "SPI" in sig: -- -2.25.1 +2.36.0 diff --git a/patches/0072-STM32H7-add-HRTIM-capable-pins.patch b/patches/0072-STM32H7-add-HRTIM-capable-pins.patch index 4a1ac33a4..3188f08ba 100644 --- a/patches/0072-STM32H7-add-HRTIM-capable-pins.patch +++ b/patches/0072-STM32H7-add-HRTIM-capable-pins.patch @@ -1,7 +1,7 @@ From d15ad9a562ad15948d7e54337f8b57b400e4c70a Mon Sep 17 00:00:00 2001 From: Riccardo Rizzo Date: Mon, 28 Jun 2021 15:05:40 +0200 -Subject: [PATCH 072/138] STM32H7: add HRTIM capable pins +Subject: [PATCH 072/157] STM32H7: add HRTIM capable pins --- targets/TARGET_STM/PeripheralPins.h | 8 ++++++++ @@ -62,5 +62,5 @@ index 26cd944066..9e7339bcdb 100644 //*** SERIAL *** -- -2.25.1 +2.36.0 diff --git a/patches/0073-STM32-PWM-implement-HRTIM-based-PWM-APIs.patch b/patches/0073-STM32-PWM-implement-HRTIM-based-PWM-APIs.patch index fa1acdc81..89210d37f 100644 --- a/patches/0073-STM32-PWM-implement-HRTIM-based-PWM-APIs.patch +++ b/patches/0073-STM32-PWM-implement-HRTIM-based-PWM-APIs.patch @@ -1,7 +1,7 @@ From e101b91b77feb4a8cb7239bb1b58544264c6d86d Mon Sep 17 00:00:00 2001 From: Riccardo Rizzo Date: Mon, 28 Jun 2021 15:25:11 +0200 -Subject: [PATCH 073/138] STM32: PWM: implement HRTIM based PWM APIs +Subject: [PATCH 073/157] STM32: PWM: implement HRTIM based PWM APIs Signed-off-by: Martino Facchin --- @@ -260,5 +260,5 @@ index 8026921c67..1564a1c4d3 100644 RCC_ClkInitTypeDef RCC_ClkInitStruct; uint32_t PclkFreq = 0; -- -2.25.1 +2.36.0 diff --git a/patches/0074-STM32-HRTIM-greatly-simplify-corner-cases.patch b/patches/0074-STM32-HRTIM-greatly-simplify-corner-cases.patch index bd58f37b1..1a097008a 100644 --- a/patches/0074-STM32-HRTIM-greatly-simplify-corner-cases.patch +++ b/patches/0074-STM32-HRTIM-greatly-simplify-corner-cases.patch @@ -1,7 +1,7 @@ From 8daa471aa7d0dc170f6f40ea7927495dd8062b79 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 28 Jun 2021 17:04:01 +0200 -Subject: [PATCH 074/138] STM32: HRTIM: greatly simplify corner cases +Subject: [PATCH 074/157] STM32: HRTIM: greatly simplify corner cases --- targets/TARGET_STM/pwmout_api.c | 57 +++++++++++++++------------------ @@ -129,5 +129,5 @@ index 1564a1c4d3..906dc1dcfd 100644 sConfig_time_base.Period = obj->period; sConfig_time_base.PrescalerRatio = obj->prescaler; -- -2.25.1 +2.36.0 diff --git a/patches/0075-Portenta-PWM-force-PA8-to-use-HRTIM.patch b/patches/0075-Portenta-PWM-force-PA8-to-use-HRTIM.patch index 1e1da7ede..62713d255 100644 --- a/patches/0075-Portenta-PWM-force-PA8-to-use-HRTIM.patch +++ b/patches/0075-Portenta-PWM-force-PA8-to-use-HRTIM.patch @@ -1,7 +1,7 @@ From 9a5191ec01597f64281f5e7e78dc11a88547d296 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 29 Jun 2021 15:04:33 +0200 -Subject: [PATCH 075/138] Portenta: PWM: force PA8 to use HRTIM +Subject: [PATCH 075/157] Portenta: PWM: force PA8 to use HRTIM Since PA8 and PK1 share the same timer/channel mux, using both result in glitches. PA8 also supports HRTIM, so use it. @@ -23,5 +23,5 @@ index 9e7339bcdb..3b1cf1075b 100644 // {PA_10, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 3, 0)}, // TIM1_CH3 {PA_11, PWM_1, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF1_TIM1, 4, 0)}, // TIM1_CH4 -- -2.25.1 +2.36.0 diff --git a/patches/0076-STM32H7-CM4-avoid-vtor-relocation-via-define.patch b/patches/0076-STM32H7-CM4-avoid-vtor-relocation-via-define.patch index 02505c807..8f42ba55f 100644 --- a/patches/0076-STM32H7-CM4-avoid-vtor-relocation-via-define.patch +++ b/patches/0076-STM32H7-CM4-avoid-vtor-relocation-via-define.patch @@ -1,7 +1,7 @@ From 11b7e751ac1c3b05d81d2a0b428c355e78d9afab Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 16 Aug 2021 17:19:45 +0200 -Subject: [PATCH 076/138] STM32H7: CM4: avoid vtor relocation via define +Subject: [PATCH 076/157] STM32H7: CM4: avoid vtor relocation via define --- .../STM32Cube_FW/system_stm32h7xx_dualcore_boot_cm4_cm7.c | 2 +- @@ -21,5 +21,5 @@ index 8e0017de2a..b4a4cc7826 100644 SCB->VTOR = NVIC_FLASH_VECTOR_ADDRESS; // MBED #endif -- -2.25.1 +2.36.0 diff --git a/patches/0077-STM32-analogin-use-critical-section-to-protect-PLL-c.patch b/patches/0077-STM32-analogin-use-critical-section-to-protect-PLL-c.patch index 598f3d91b..1c5c3a45b 100644 --- a/patches/0077-STM32-analogin-use-critical-section-to-protect-PLL-c.patch +++ b/patches/0077-STM32-analogin-use-critical-section-to-protect-PLL-c.patch @@ -1,7 +1,7 @@ From 171db2502ace376ee4b9326694bc927098b7249e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 11 Aug 2021 12:14:57 +0200 -Subject: [PATCH 077/138] STM32: analogin: use critical section to protect PLL +Subject: [PATCH 077/157] STM32: analogin: use critical section to protect PLL configuration --- @@ -31,5 +31,5 @@ index 3fb41a7997..905e86006e 100644 LL_HSEM_ReleaseLock(HSEM, CFG_HW_RCC_SEMID, HSEM_CR_COREID_CURRENT); #endif /* DUAL_CORE */ -- -2.25.1 +2.36.0 diff --git a/patches/0078-PortentaH7-implement-and-use-get_default_instance-fo.patch b/patches/0078-PortentaH7-implement-and-use-get_default_instance-fo.patch index 6058438fa..801785ff5 100644 --- a/patches/0078-PortentaH7-implement-and-use-get_default_instance-fo.patch +++ b/patches/0078-PortentaH7-implement-and-use-get_default_instance-fo.patch @@ -1,7 +1,7 @@ From 4c5f7b4ddf0f60484e402ad8e3c19beace946e79 Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 22 Jul 2021 12:04:53 +0200 -Subject: [PATCH 078/138] PortentaH7: implement and use get_default_instance +Subject: [PATCH 078/157] PortentaH7: implement and use get_default_instance for QSPIBD --- @@ -42,5 +42,5 @@ index b6de4ece12..bea07abdef 100644 if (qspi_bd->init() == BD_ERROR_OK) { mbr_bd = new MBRBlockDevice(qspi_bd, WIFI_DEFAULT_PARTITION); -- -2.25.1 +2.36.0 diff --git a/patches/0079-PortentaH7-Disable-WHD-WPRINT_MACRO.patch b/patches/0079-PortentaH7-Disable-WHD-WPRINT_MACRO.patch index 55462e0b6..1f9a094d9 100644 --- a/patches/0079-PortentaH7-Disable-WHD-WPRINT_MACRO.patch +++ b/patches/0079-PortentaH7-Disable-WHD-WPRINT_MACRO.patch @@ -1,7 +1,7 @@ From cdad9d4da99dd48f942443742a0041af79dc09bd Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 23 Jul 2021 11:29:13 +0200 -Subject: [PATCH 079/138] PortentaH7: Disable WHD WPRINT_MACRO +Subject: [PATCH 079/157] PortentaH7: Disable WHD WPRINT_MACRO --- .../COMPONENT_WHD/port/cyhal_hw_types.h | 13 +------------ @@ -48,5 +48,5 @@ index da67e0a036..cc442a6e44 100644 #define CY_WHD_CONFIG_USE_SDIO //#define CY_WHD_CONFIG_USE_SPI -- -2.25.1 +2.36.0 diff --git a/patches/0080-Add-NICLA-target.patch b/patches/0080-Add-NICLA-target.patch index 4ae5eb6de..03e248185 100644 --- a/patches/0080-Add-NICLA-target.patch +++ b/patches/0080-Add-NICLA-target.patch @@ -1,7 +1,7 @@ From 769b6335b99407afc5243f0b0e929bfce008def7 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 27 Nov 2020 10:34:42 +0100 -Subject: [PATCH 080/138] Add NICLA target +Subject: [PATCH 080/157] Add NICLA target --- .../blockdevice/COMPONENT_SD/mbed_lib.json | 8 +- @@ -307,5 +307,5 @@ index 687c15a05a..9b20540219 100644 "inherits": [ "Target" -- -2.25.1 +2.36.0 diff --git a/patches/0081-NICLA-use-nfc-pins-as-GPIOs.patch b/patches/0081-NICLA-use-nfc-pins-as-GPIOs.patch index d1e66ed3a..41103c5d4 100644 --- a/patches/0081-NICLA-use-nfc-pins-as-GPIOs.patch +++ b/patches/0081-NICLA-use-nfc-pins-as-GPIOs.patch @@ -1,7 +1,7 @@ From d7d06b38bfee2852076cc09b8bfe0c2a732a112f Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 26 Aug 2021 11:47:20 +0200 -Subject: [PATCH 081/138] NICLA: use nfc pins as GPIOs +Subject: [PATCH 081/157] NICLA: use nfc pins as GPIOs --- targets/targets.json | 1 + @@ -20,5 +20,5 @@ index 9b20540219..89205a0716 100644 "NRF52_PAN_15", "NRF52_PAN_20", -- -2.25.1 +2.36.0 diff --git a/patches/0082-Fix-cast-error-in-WHD.patch b/patches/0082-Fix-cast-error-in-WHD.patch index 9aaf33d00..3aa598960 100644 --- a/patches/0082-Fix-cast-error-in-WHD.patch +++ b/patches/0082-Fix-cast-error-in-WHD.patch @@ -1,7 +1,7 @@ From f195593a14ef8ef890dfd350dfd689218250c0f4 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Fri, 17 Sep 2021 17:04:41 +0200 -Subject: [PATCH 082/138] Fix cast error in WHD +Subject: [PATCH 082/157] Fix cast error in WHD --- .../wifi-host-driver/src/bus_protocols/whd_bus_common.c | 2 +- @@ -21,5 +21,5 @@ index 4eacf4869a..48c401a0a0 100755 if ( (result == WHD_SUCCESS) && (tmp != reset_instr) ) { -- -2.25.1 +2.36.0 diff --git a/patches/0083-mbed-client-cli-ns_cmdline-make-cmd_class_t-cmd-priv.patch b/patches/0083-mbed-client-cli-ns_cmdline-make-cmd_class_t-cmd-priv.patch index 156123287..72b46eda0 100644 --- a/patches/0083-mbed-client-cli-ns_cmdline-make-cmd_class_t-cmd-priv.patch +++ b/patches/0083-mbed-client-cli-ns_cmdline-make-cmd_class_t-cmd-priv.patch @@ -1,7 +1,7 @@ From a4a5ef9c18e55fc4c4310ce2efd5bde9ca1215bb Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 22 Sep 2021 15:34:24 +0200 -Subject: [PATCH 083/138] mbed-client-cli: ns_cmdline: make cmd_class_t cmd +Subject: [PATCH 083/157] mbed-client-cli: ns_cmdline: make cmd_class_t cmd private --- @@ -22,5 +22,5 @@ index 7e113502b6..1384e278ea 100644 .cmd_ptr = NULL, .mutex_wait_fnc = NULL, -- -2.25.1 +2.36.0 diff --git a/patches/0084-BlockDevice-add-mbed-namespace-to-function-signature.patch b/patches/0084-BlockDevice-add-mbed-namespace-to-function-signature.patch index aba5d4a0c..65593a9fd 100644 --- a/patches/0084-BlockDevice-add-mbed-namespace-to-function-signature.patch +++ b/patches/0084-BlockDevice-add-mbed-namespace-to-function-signature.patch @@ -1,7 +1,7 @@ From e9c4f48ec5636ff31b1a45b629c948e7430d694a Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 23 Sep 2021 15:16:10 +0200 -Subject: [PATCH 084/138] BlockDevice: add mbed namespace to function +Subject: [PATCH 084/157] BlockDevice: add mbed namespace to function signatures --- @@ -50,5 +50,5 @@ index bdbcae9e38..8b7e89b2d4 100644 { uint8_t param_table[SFDP_BASIC_PARAMS_TBL_SIZE]; /* Up To 20 DWORDS = 80 Bytes */ -- -2.25.1 +2.36.0 diff --git a/patches/0085-Use-ADC-clock-synchronous-with-AHB.patch b/patches/0085-Use-ADC-clock-synchronous-with-AHB.patch index 06a69f1df..ffbee2b75 100644 --- a/patches/0085-Use-ADC-clock-synchronous-with-AHB.patch +++ b/patches/0085-Use-ADC-clock-synchronous-with-AHB.patch @@ -1,7 +1,7 @@ From 9c35e854820b7f9771294fadcd2785f0e9bc026b Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Wed, 13 Oct 2021 10:48:44 +0200 -Subject: [PATCH 085/138] Use ADC clock synchronous with AHB +Subject: [PATCH 085/157] Use ADC clock synchronous with AHB --- targets/TARGET_STM/TARGET_STM32H7/analogin_device.c | 2 +- @@ -21,5 +21,5 @@ index 905e86006e..c3ec31c07f 100644 obj->handle.Init.ScanConvMode = ADC_SCAN_DISABLE; obj->handle.Init.EOCSelection = ADC_EOC_SINGLE_CONV; -- -2.25.1 +2.36.0 diff --git a/patches/0086-RP2040-Add-basic-RTC-support.patch b/patches/0086-RP2040-Add-basic-RTC-support.patch index fab2d01cf..864189cab 100644 --- a/patches/0086-RP2040-Add-basic-RTC-support.patch +++ b/patches/0086-RP2040-Add-basic-RTC-support.patch @@ -1,7 +1,7 @@ From b2a9bdcffe701c86842ad701ec8c43a7e5930e04 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 30 Jul 2021 17:22:36 +0200 -Subject: [PATCH 086/138] RP2040: Add basic RTC support +Subject: [PATCH 086/157] RP2040: Add basic RTC support --- .../hardware_rtc/include/hardware/rtc.h | 2 +- @@ -147,5 +147,5 @@ index 89205a0716..7902341c2f 100644 "WATCHDOG", "USBDEVICE", -- -2.25.1 +2.36.0 diff --git a/patches/0087-RP2040-Watchdog-get_reload_value-returns-0-if-wd-is-.patch b/patches/0087-RP2040-Watchdog-get_reload_value-returns-0-if-wd-is-.patch index 3bcc978db..84451b9c3 100644 --- a/patches/0087-RP2040-Watchdog-get_reload_value-returns-0-if-wd-is-.patch +++ b/patches/0087-RP2040-Watchdog-get_reload_value-returns-0-if-wd-is-.patch @@ -1,7 +1,7 @@ From 39818b178814b19fb63fc841edbee18facc0ebd8 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 9 Nov 2021 09:20:36 +0100 -Subject: [PATCH 087/138] RP2040: Watchdog: get_reload_value returns 0 if wd is +Subject: [PATCH 087/157] RP2040: Watchdog: get_reload_value returns 0 if wd is not properly configured --- @@ -50,5 +50,5 @@ index 9263eb48d5..7526f6b608 100644 return load_value; } -- -2.25.1 +2.36.0 diff --git a/patches/0088-RP2040-backport-p2040_usb_device_enumeration-fix.patch b/patches/0088-RP2040-backport-p2040_usb_device_enumeration-fix.patch index 480f8f3bf..548c04e6b 100644 --- a/patches/0088-RP2040-backport-p2040_usb_device_enumeration-fix.patch +++ b/patches/0088-RP2040-backport-p2040_usb_device_enumeration-fix.patch @@ -1,7 +1,7 @@ From 1400cf779c94747842887919a0f6dfe8230c3db5 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 15 Nov 2021 16:47:42 +0100 -Subject: [PATCH 088/138] RP2040: backport p2040_usb_device_enumeration fix +Subject: [PATCH 088/157] RP2040: backport p2040_usb_device_enumeration fix --- .../rp2040_usb_device_enumeration.c | 42 +++++++++++++++---- @@ -91,5 +91,5 @@ index 8319e36cb7..91583205bb 100644 + padsbank0_hw->io[dp] = pad_ctrl_prev; } -- -2.25.1 +2.36.0 diff --git a/patches/0089-RP2040-correct-system-clock-frequency.patch b/patches/0089-RP2040-correct-system-clock-frequency.patch index cfc0f66db..04194ebb7 100644 --- a/patches/0089-RP2040-correct-system-clock-frequency.patch +++ b/patches/0089-RP2040-correct-system-clock-frequency.patch @@ -1,7 +1,7 @@ From 035027aba76d65f6f82d86495e1fda3b0e99a05e Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 6 Dec 2021 12:02:28 +0100 -Subject: [PATCH 089/138] RP2040: correct system clock frequency +Subject: [PATCH 089/157] RP2040: correct system clock frequency Fixes https://github.com/arduino/ArduinoCore-mbed/issues/271 --- @@ -32,5 +32,5 @@ index 1f775638f9..b9ad1319af 100644 +uint32_t SystemCoreClock = 125000000; \ No newline at end of file -- -2.25.1 +2.36.0 diff --git a/patches/0090-Thales-mbed-library-porting.patch b/patches/0090-Thales-mbed-library-porting.patch index 15c7a2200..e86eb525f 100644 --- a/patches/0090-Thales-mbed-library-porting.patch +++ b/patches/0090-Thales-mbed-library-porting.patch @@ -1,7 +1,7 @@ From afa24e63fb5cb10e60481dc3517bc026ec6e3289 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 10 Dec 2020 19:23:36 +0100 -Subject: [PATCH 090/138] Thales: mbed library porting +Subject: [PATCH 090/157] Thales: mbed library porting Wrap changes for Thales inside a library include check @@ -564,5 +564,5 @@ index 01c5b71c65..22711d2173 100644 } // namespace mbed -- -2.25.1 +2.36.0 diff --git a/patches/0091-Implement-connect-and-get_context-functions-inside-G.patch b/patches/0091-Implement-connect-and-get_context-functions-inside-G.patch index 1d23e12f6..eb52a3dcd 100644 --- a/patches/0091-Implement-connect-and-get_context-functions-inside-G.patch +++ b/patches/0091-Implement-connect-and-get_context-functions-inside-G.patch @@ -1,7 +1,7 @@ From cbb912e27a23f31ed2a13345006346668b9c01ec Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Tue, 13 Jul 2021 13:16:06 +0200 -Subject: [PATCH 091/138] Implement connect() and get_context() functions +Subject: [PATCH 091/157] Implement connect() and get_context() functions inside GEMALTO stack --- @@ -177,5 +177,5 @@ index da6e7676d6..0645b2b87c 100644 protected: #if !NSAPI_PPP_AVAILABLE -- -2.25.1 +2.36.0 diff --git a/patches/0092-Make-set_cid-protected-to-call-it-from-GEMALTO-stack.patch b/patches/0092-Make-set_cid-protected-to-call-it-from-GEMALTO-stack.patch index 5a480394b..d8ba459c5 100644 --- a/patches/0092-Make-set_cid-protected-to-call-it-from-GEMALTO-stack.patch +++ b/patches/0092-Make-set_cid-protected-to-call-it-from-GEMALTO-stack.patch @@ -1,7 +1,7 @@ From 330cc7b36d416064f2d8d456b35b7578da3bec42 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Tue, 13 Jul 2021 13:16:49 +0200 -Subject: [PATCH 092/138] Make set_cid() protected to call it from GEMALTO +Subject: [PATCH 092/157] Make set_cid() protected to call it from GEMALTO stack --- @@ -29,5 +29,5 @@ index 19099c0e08..0eb83531b0 100644 private: ContextOperation _current_op; -- -2.25.1 +2.36.0 diff --git a/patches/0093-Implement-GEMALTO-subclass-of-CellularNetwork.patch b/patches/0093-Implement-GEMALTO-subclass-of-CellularNetwork.patch index 08f98f363..1b156ab06 100644 --- a/patches/0093-Implement-GEMALTO-subclass-of-CellularNetwork.patch +++ b/patches/0093-Implement-GEMALTO-subclass-of-CellularNetwork.patch @@ -1,7 +1,7 @@ From c891a8f2eb9781002bc5c599f0d6ec362cdc1e4a Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Tue, 13 Jul 2021 18:17:13 +0200 -Subject: [PATCH 093/138] Implement GEMALTO subclass of CellularNetwork +Subject: [PATCH 093/157] Implement GEMALTO subclass of CellularNetwork --- .../framework/device/CellularStateMachine.cpp | 6 ---- @@ -149,5 +149,5 @@ index 0000000000..8d5f49cf5a + +#endif // GEMALTO_CINTERION_CELLULARNETWORK_H_ -- -2.25.1 +2.36.0 diff --git a/patches/0094-Handle-missing-IP-address-resolution.patch b/patches/0094-Handle-missing-IP-address-resolution.patch index 566290365..3219bf508 100644 --- a/patches/0094-Handle-missing-IP-address-resolution.patch +++ b/patches/0094-Handle-missing-IP-address-resolution.patch @@ -1,7 +1,7 @@ From 2bd81ee3674c87420c5c571b77cf75cff629f540 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Wed, 14 Jul 2021 10:25:40 +0200 -Subject: [PATCH 094/138] Handle missing IP address resolution +Subject: [PATCH 094/157] Handle missing IP address resolution --- .../GEMALTO_CINTERION_CellularStack.cpp | 18 +++++++++++++----- @@ -37,5 +37,5 @@ index 13c1a0b2fa..9eb3e27b39 100644 } -- -2.25.1 +2.36.0 diff --git a/patches/0095-Check-if-username-and-password-are-empty-strings.patch b/patches/0095-Check-if-username-and-password-are-empty-strings.patch index 6cfed9f5c..5777b598a 100644 --- a/patches/0095-Check-if-username-and-password-are-empty-strings.patch +++ b/patches/0095-Check-if-username-and-password-are-empty-strings.patch @@ -1,7 +1,7 @@ From 79760a8f3231088cb221edc5ddf703c66bcaecc5 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Wed, 14 Jul 2021 12:54:52 +0200 -Subject: [PATCH 095/138] Check if username and password are empty strings +Subject: [PATCH 095/157] Check if username and password are empty strings --- .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp | 4 +++- @@ -30,5 +30,5 @@ index 8f04e1274a..4aa7f188ea 100644 return NSAPI_ERROR_OK; -- -2.25.1 +2.36.0 diff --git a/patches/0096-Overwrite-old-context-with-new-one-if-they-are-diffe.patch b/patches/0096-Overwrite-old-context-with-new-one-if-they-are-diffe.patch index f7c2a85cf..0e840fdea 100644 --- a/patches/0096-Overwrite-old-context-with-new-one-if-they-are-diffe.patch +++ b/patches/0096-Overwrite-old-context-with-new-one-if-they-are-diffe.patch @@ -1,7 +1,7 @@ From 211be8939026b429e8c790b52692c0f45a84c85a Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Mon, 19 Jul 2021 14:42:09 +0200 -Subject: [PATCH 096/138] Overwrite old context with new one if they are +Subject: [PATCH 096/157] Overwrite old context with new one if they are different --- @@ -27,5 +27,5 @@ index 4aa7f188ea..7ee2c8e53c 100644 pdp_type_t pdp_type = string_to_pdp_type(pdp_type_from_context); tr_debug("CID %d APN \"%s\" pdp_type %u", cid, apn, pdp_type); -- -2.25.1 +2.36.0 diff --git a/patches/0097-Fix-recv-implementation.patch b/patches/0097-Fix-recv-implementation.patch index 6126b65b1..6ca2bd38f 100644 --- a/patches/0097-Fix-recv-implementation.patch +++ b/patches/0097-Fix-recv-implementation.patch @@ -1,7 +1,7 @@ From 59b5f95c142ade4bcf24f8336ccddea3faeb1811 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Tue, 20 Jul 2021 10:40:12 +0200 -Subject: [PATCH 097/138] Fix recv implementation +Subject: [PATCH 097/157] Fix recv implementation --- .../CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 15 +++++++-------- @@ -58,5 +58,5 @@ index 9eb3e27b39..034011d2d2 100644 return (_at.get_last_error() == NSAPI_ERROR_OK) ? (recv_len ? recv_len : NSAPI_ERROR_WOULD_BLOCK) : NSAPI_ERROR_DEVICE_ERROR; -- -2.25.1 +2.36.0 diff --git a/patches/0098-Add-time-functions-to-Gemalto-stack.patch b/patches/0098-Add-time-functions-to-Gemalto-stack.patch index 1bcf95d61..cff8a1590 100644 --- a/patches/0098-Add-time-functions-to-Gemalto-stack.patch +++ b/patches/0098-Add-time-functions-to-Gemalto-stack.patch @@ -1,7 +1,7 @@ From 9b076fd634a90f5e3da3b8171656881c8d1b7bc3 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Tue, 20 Jul 2021 11:48:06 +0200 -Subject: [PATCH 098/138] Add time functions to Gemalto stack +Subject: [PATCH 098/157] Add time functions to Gemalto stack --- .../cellular/framework/API/CellularDevice.h | 6 + @@ -235,5 +235,5 @@ index f8f892fccd..459bba8eb1 100644 static BufferedSerial serial(MBED_CONF_GEMALTO_CINTERION_TX, MBED_CONF_GEMALTO_CINTERION_RX, MBED_CONF_GEMALTO_CINTERION_BAUDRATE); #if defined(MBED_CONF_GEMALTO_CINTERION_RTS) && defined(MBED_CONF_GEMALTO_CINTERION_CTS) -- -2.25.1 +2.36.0 diff --git a/patches/0099-AT_CellularStack-return-NSAPI_ERROR_NO_CONNECTION-on.patch b/patches/0099-AT_CellularStack-return-NSAPI_ERROR_NO_CONNECTION-on.patch index c946f219c..40f6d7165 100644 --- a/patches/0099-AT_CellularStack-return-NSAPI_ERROR_NO_CONNECTION-on.patch +++ b/patches/0099-AT_CellularStack-return-NSAPI_ERROR_NO_CONNECTION-on.patch @@ -1,7 +1,7 @@ From aac8d3964903304bb15ca97736b8b413b4208a67 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 5 Aug 2021 15:10:54 +0200 -Subject: [PATCH 099/138] AT_CellularStack: return NSAPI_ERROR_NO_CONNECTION on +Subject: [PATCH 099/157] AT_CellularStack: return NSAPI_ERROR_NO_CONNECTION on socket closed --- @@ -31,5 +31,5 @@ index 961d101c9b..ca7d2a786c 100644 if (ret_val >= 0) { -- -2.25.1 +2.36.0 diff --git a/patches/0100-SerialBase-implement-sw-flow-control.patch b/patches/0100-SerialBase-implement-sw-flow-control.patch index fcbe80b05..ccd581107 100644 --- a/patches/0100-SerialBase-implement-sw-flow-control.patch +++ b/patches/0100-SerialBase-implement-sw-flow-control.patch @@ -1,7 +1,7 @@ From e05bd86be38a29b30b43598c9ca6089e5cd66297 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 5 Aug 2021 15:13:58 +0200 -Subject: [PATCH 100/138] SerialBase: implement sw flow control +Subject: [PATCH 100/157] SerialBase: implement sw flow control --- drivers/include/drivers/SerialBase.h | 9 ++++++++- @@ -84,5 +84,5 @@ index 40bf7d0b61..7c21d12e9c 100644 break; } -- -2.25.1 +2.36.0 diff --git a/patches/0101-GEMALTO-fix-some-corner-cases.patch b/patches/0101-GEMALTO-fix-some-corner-cases.patch index 81e1bab14..d4a41926d 100644 --- a/patches/0101-GEMALTO-fix-some-corner-cases.patch +++ b/patches/0101-GEMALTO-fix-some-corner-cases.patch @@ -1,7 +1,7 @@ From d3f3b312f45a11c3bbbd7bee580f04ed9d726e86 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 5 Aug 2021 15:14:13 +0200 -Subject: [PATCH 101/138] GEMALTO: fix some corner cases +Subject: [PATCH 101/157] GEMALTO: fix some corner cases --- .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 6 ++++-- @@ -53,5 +53,5 @@ index 034011d2d2..06952694e2 100644 len = (nsapi_size_or_error_t)size; } -- -2.25.1 +2.36.0 diff --git a/patches/0102-Gemalto-properly-handle-SYSSTART-URC.patch b/patches/0102-Gemalto-properly-handle-SYSSTART-URC.patch index a8ca72e11..84013216e 100644 --- a/patches/0102-Gemalto-properly-handle-SYSSTART-URC.patch +++ b/patches/0102-Gemalto-properly-handle-SYSSTART-URC.patch @@ -1,7 +1,7 @@ From 0f984f6163c50f322c5ed305723776f5e0a4d1d1 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 6 Aug 2021 10:28:50 +0200 -Subject: [PATCH 102/138] Gemalto: properly handle ^SYSSTART URC +Subject: [PATCH 102/157] Gemalto: properly handle ^SYSSTART URC --- .../CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 14 +++++++++++++- @@ -53,5 +53,5 @@ index 22711d2173..b0ae8d23e1 100644 void urc_sisr(); void sisr_urc_handler(int sock_id, int urc_code); -- -2.25.1 +2.36.0 diff --git a/patches/0103-Gemalto-TX62-handle-oob-before-closing-the-socket.patch b/patches/0103-Gemalto-TX62-handle-oob-before-closing-the-socket.patch index b36109fb1..22219b6d9 100644 --- a/patches/0103-Gemalto-TX62-handle-oob-before-closing-the-socket.patch +++ b/patches/0103-Gemalto-TX62-handle-oob-before-closing-the-socket.patch @@ -1,7 +1,7 @@ From 2689a3d19461b70d35870ca58de9e76c83153fe0 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 6 Aug 2021 10:29:11 +0200 -Subject: [PATCH 103/138] Gemalto: TX62: handle oob before closing the socket +Subject: [PATCH 103/157] Gemalto: TX62: handle oob before closing the socket --- .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 1 + @@ -20,5 +20,5 @@ index 147f5ffc15..94975e1b66 100644 socket->pending_bytes = 0; return NSAPI_ERROR_OK; -- -2.25.1 +2.36.0 diff --git a/patches/0104-GEMALTO-implement-GNSS.patch b/patches/0104-GEMALTO-implement-GNSS.patch index 181fe5d81..9b8f6e251 100644 --- a/patches/0104-GEMALTO-implement-GNSS.patch +++ b/patches/0104-GEMALTO-implement-GNSS.patch @@ -1,7 +1,7 @@ From 1f912a74751705c0a85538504242f06757f4293c Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 11 Aug 2021 12:15:43 +0200 -Subject: [PATCH 104/138] GEMALTO: implement GNSS +Subject: [PATCH 104/157] GEMALTO: implement GNSS --- .../GEMALTO_CINTERION_CellularStack.cpp | 36 +++++++++++++++++++ @@ -96,5 +96,5 @@ index b0ae8d23e1..163fa3193f 100644 hostbyname_cb_t _dns_callback; nsapi_version_t _dns_version; -- -2.25.1 +2.36.0 diff --git a/patches/0105-GEMALTO-TX62-tune-AT-configuration.patch b/patches/0105-GEMALTO-TX62-tune-AT-configuration.patch index 8f7ed93de..2412a24af 100644 --- a/patches/0105-GEMALTO-TX62-tune-AT-configuration.patch +++ b/patches/0105-GEMALTO-TX62-tune-AT-configuration.patch @@ -1,7 +1,7 @@ From e63f9f22688e6eccc2dc2586c38559a9205429dd Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 11 Aug 2021 17:30:39 +0200 -Subject: [PATCH 105/138] GEMALTO: TX62: tune AT configuration +Subject: [PATCH 105/157] GEMALTO: TX62: tune AT configuration --- .../cellular/GEMALTO/CINTERION/GEMALTO_CINTERION.cpp | 10 +++++----- @@ -39,5 +39,5 @@ index 459bba8eb1..3e3bcd4121 100644 set_cellular_properties(cellular_properties); _module = ModuleTX62; -- -2.25.1 +2.36.0 diff --git a/patches/0106-Add-APIs-to-start-and-stop-gnss-functionality.patch b/patches/0106-Add-APIs-to-start-and-stop-gnss-functionality.patch index c82410dfe..30f04859c 100644 --- a/patches/0106-Add-APIs-to-start-and-stop-gnss-functionality.patch +++ b/patches/0106-Add-APIs-to-start-and-stop-gnss-functionality.patch @@ -1,7 +1,7 @@ From d306af5c6878e9ab76f7b665bd96152d8dccdf42 Mon Sep 17 00:00:00 2001 From: Riccardo Rizzo Date: Tue, 7 Sep 2021 12:33:02 +0200 -Subject: [PATCH 106/138] Add APIs to start and stop gnss functionality +Subject: [PATCH 106/157] Add APIs to start and stop gnss functionality the usage of start and stop should allows for switching the usage of gnss with respect for lte gsm operations --- @@ -97,5 +97,5 @@ index 163fa3193f..ffaed50184 100644 mbed::Callback _gnss_cb; -- -2.25.1 +2.36.0 diff --git a/patches/0107-Added-GNSS-Psm-management-and-bug-fixing.patch b/patches/0107-Added-GNSS-Psm-management-and-bug-fixing.patch index 6ad7a084f..0ceda875d 100644 --- a/patches/0107-Added-GNSS-Psm-management-and-bug-fixing.patch +++ b/patches/0107-Added-GNSS-Psm-management-and-bug-fixing.patch @@ -1,7 +1,7 @@ From ce864aeea51868406b98ab85cc146abafc858b42 Mon Sep 17 00:00:00 2001 From: Riccardo Rizzo Date: Mon, 13 Sep 2021 11:56:44 +0200 -Subject: [PATCH 107/138] Added GNSS/Psm management and bug fixing +Subject: [PATCH 107/157] Added GNSS/Psm management and bug fixing Added GNSS psm management and removed callback pointer bug introduced in previous PR also set CGAUTH to 1in order to allows for context credential settings. @@ -125,5 +125,5 @@ index ffaed50184..37eee5858a 100644 protected: -- -2.25.1 +2.36.0 diff --git a/patches/0108-Implement-LNA_ENABLE-for-Thales-rev3.patch b/patches/0108-Implement-LNA_ENABLE-for-Thales-rev3.patch index b67899de1..cc223cb17 100644 --- a/patches/0108-Implement-LNA_ENABLE-for-Thales-rev3.patch +++ b/patches/0108-Implement-LNA_ENABLE-for-Thales-rev3.patch @@ -1,7 +1,7 @@ From 4343171f71de52614142324c570eae6f8a360ed5 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 25 Nov 2021 14:55:22 +0100 -Subject: [PATCH 108/138] Implement LNA_ENABLE for Thales rev3 +Subject: [PATCH 108/157] Implement LNA_ENABLE for Thales rev3 --- .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 4 ++++ @@ -36,5 +36,5 @@ index 967d9628b0..9f111d7da0 100644 _at.resp_start("^SGPSC: \"Engine\","); -- -2.25.1 +2.36.0 diff --git a/patches/0109-cmux-support.patch b/patches/0109-cmux-support.patch index ff2319132..28f46afa0 100644 --- a/patches/0109-cmux-support.patch +++ b/patches/0109-cmux-support.patch @@ -1,7 +1,7 @@ From 743cabdb2a85f78d98d06c68c37b96664fc2b9a0 Mon Sep 17 00:00:00 2001 From: Riccardo Rizzo Date: Fri, 26 Nov 2021 14:46:40 +0100 -Subject: [PATCH 109/138] cmux support +Subject: [PATCH 109/157] cmux support - CMUX.h handle ongoig packet from all serial(virtual, real) and route to the correct owner, when also the cmux enable is ready is supposed that this class should also handle and frammentate the packet to be @@ -245,5 +245,5 @@ index 37eee5858a..f89da8c314 100644 int startGNSS(); void stopGNSS(); -- -2.25.1 +2.36.0 diff --git a/patches/0110-Implement-Udp_RemClient-for-TX62.patch b/patches/0110-Implement-Udp_RemClient-for-TX62.patch index e0c5708cb..add10fe21 100644 --- a/patches/0110-Implement-Udp_RemClient-for-TX62.patch +++ b/patches/0110-Implement-Udp_RemClient-for-TX62.patch @@ -1,7 +1,7 @@ From 36cce1ae5736533f43eb5abdef37dd83c585f51a Mon Sep 17 00:00:00 2001 From: Giampaolo Mancini Date: Thu, 3 Feb 2022 09:50:08 +0100 -Subject: [PATCH 110/138] Implement Udp_RemClient for TX62 +Subject: [PATCH 110/157] Implement Udp_RemClient for TX62 --- .../GEMALTO_CINTERION_CellularStack.cpp | 48 +++++++++++++++++-- @@ -68,5 +68,5 @@ index 2993285049..1eca8f54e0 100644 char *ip_start = ip_address; char *ip_stop; -- -2.25.1 +2.36.0 diff --git a/patches/0111-Fix-HostByName-SISX-request.patch b/patches/0111-Fix-HostByName-SISX-request.patch index 523844718..ff34d6c9b 100644 --- a/patches/0111-Fix-HostByName-SISX-request.patch +++ b/patches/0111-Fix-HostByName-SISX-request.patch @@ -1,7 +1,7 @@ From 22f41f4ac363242be58a892c8926cd8008b7c573 Mon Sep 17 00:00:00 2001 From: Giampaolo Mancini Date: Mon, 7 Feb 2022 15:13:41 +0100 -Subject: [PATCH 111/138] Fix HostByName SISX request +Subject: [PATCH 111/157] Fix HostByName SISX request --- .../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 7 ++++--- @@ -32,5 +32,5 @@ index 1eca8f54e0..33a73bf9a3 100644 _at.unlock(); return NSAPI_ERROR_DNS_FAILURE; -- -2.25.1 +2.36.0 diff --git a/patches/0112-PwmOut-set-pwm-period-before-duty-cycle.patch b/patches/0112-PwmOut-set-pwm-period-before-duty-cycle.patch index 293bce2dd..8f9430e4c 100644 --- a/patches/0112-PwmOut-set-pwm-period-before-duty-cycle.patch +++ b/patches/0112-PwmOut-set-pwm-period-before-duty-cycle.patch @@ -1,7 +1,7 @@ From 64c32e03c7449d9284bc0e1eae41cb1c73788b5e Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Thu, 3 Feb 2022 14:35:55 +0100 -Subject: [PATCH 112/138] PwmOut: set pwm period before duty cycle +Subject: [PATCH 112/157] PwmOut: set pwm period before duty cycle --- drivers/source/PwmOut.cpp | 2 +- @@ -22,5 +22,5 @@ index ccada968ed..8bbcb23b39 100644 core_util_critical_section_exit(); } -- -2.25.1 +2.36.0 diff --git a/patches/0113-Initial-add-Nicla-Vision-target.patch b/patches/0113-Initial-add-Nicla-Vision-target.patch index f0f689a1c..b42c27eae 100644 --- a/patches/0113-Initial-add-Nicla-Vision-target.patch +++ b/patches/0113-Initial-add-Nicla-Vision-target.patch @@ -1,7 +1,7 @@ From 06c1a6b204b856ef30ab78fdb8b4c5f20f6a6186 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 17 Feb 2021 14:57:44 +0100 -Subject: [PATCH 113/138] Initial: add Nicla Vision target +Subject: [PATCH 113/157] Initial: add Nicla Vision target Add missing repo for BLE --- @@ -35036,5 +35036,5 @@ index 7902341c2f..eb83ff264e 100644 "inherits": ["PORTENTA_H7"], "core": "Cortex-M4F", -- -2.25.1 +2.36.0 diff --git a/patches/0113-Update-COMPONENT_WHD.patch b/patches/0113-Update-COMPONENT_WHD.patch deleted file mode 100644 index 2add0e328..000000000 --- a/patches/0113-Update-COMPONENT_WHD.patch +++ /dev/null @@ -1,66942 +0,0 @@ -From d627a5eda9c31465a83343d6b22f58c2193d922b Mon Sep 17 00:00:00 2001 -From: giulcioffi -Date: Wed, 15 Sep 2021 10:03:13 +0200 -Subject: [PATCH 113/122] Update COMPONENT_WHD - ---- - .../COMPONENT_WHD/CMakeLists.txt | 34 + - .../COMPONENT_WHD/inc/whd.h | 82 - - .../COMPONENT_WHD/inc/whd_events.h | 226 - - .../COMPONENT_WHD/inc/whd_network_types.h | 230 - - .../COMPONENT_WHD/inc/whd_resource_api.h | 128 - - .../COMPONENT_WHD/inc/whd_types.h | 1054 - - .../COMPONENT_WHD/inc/whd_wifi_api.h | 1179 - - .../interface/cy_network_buffer.c | 114 - - .../interface/cy_network_buffer.h | 185 - - .../COMPONENT_WHD/interface/cy_result.h | 239 +- - .../COMPONENT_WHD/interface/cyabs_rtos.h | 285 +- - .../COMPONENT_WHD/interface/cyabs_rtos_impl.h | 8 +- - .../interface/cyabs_rtos_rtxv5.c | 75 +- - .../COMPONENT_WHD/interface/cyhal_gpio.cpp | 83 - - .../COMPONENT_WHD/interface/cyhal_gpio.h | 245 +- - .../COMPONENT_WHD/interface/cyhal_modules.h | 86 - - .../COMPONENT_WHD/interface/cyhal_sdio.c | 799 - - .../COMPONENT_WHD/interface/cyhal_sdio.h | 366 +- - .../COMPONENT_WHD/interface/cyhal_spi.h | 273 +- - .../COMPONENT_WHD/mbed_lib.json | 6 - - .../COMPONENT_WHD/port/cy_hal.c | 85 +- - .../COMPONENT_WHD/port/cy_utils.h | 2 + - .../COMPONENT_WHD/port/cybsp.h | 50 + - .../COMPONENT_WHD/port/cybsp_wifi.c | 219 - - .../COMPONENT_WHD/port/cybsp_wifi.h | 109 - - .../{inc/whd_version.h => port/cycfg.h} | 8 +- - .../COMPONENT_WHD/port/cyhal.h | 52 + - .../COMPONENT_WHD/port/cyhal_gpio.cpp | 104 + - .../{interface => port}/cyhal_hw_types.h | 35 +- - .../COMPONENT_WHD/port/cyhal_sdio.c | 483 + - .../COMPONENT_WHD/port/cyhal_spi.c | 29 + - .../COMPONENT_WHD/port/cyhal_system.h | 20 + - .../include/whd_clm.h => port/wiced_bd.h} | 42 +- - .../COMPONENT_WHD/port/wiced_filesystem.cpp | 220 + - .../COMPONENT_WHD/port/wiced_filesystem.h | 139 + - .../COMPONENT_4343W/4343WA1-mfgtest.bin | Bin 391693 -> 0 bytes - .../COMPONENT_4343W/4343WA1-mfgtest.clm_blob | Bin 7222 -> 0 bytes - .../COMPONENT_4343W/4343WA1-mfgtest_bin.c | 23672 ---------------- - .../4343WA1-mfgtest_clm_blob.c | 400 - - .../firmware/COMPONENT_4343W/4343WA1.bin | Bin 421098 -> 0 bytes - .../firmware/COMPONENT_4343W/4343WA1.clm_blob | Bin 7222 -> 0 bytes - .../4343WA1_bin.c | 4 +- - .../4343WA1_clm_blob.c | 0 - .../resources.h | 7 +- - .../wifi_nvram_image.h | 0 - .../resources/resource_imp/whd_resources.c | 292 - - .../resources/resource_imp/wiced_resource.h | 228 - - .../COMPONENT_WHD/src/bus_protocols/whd_bus.c | 145 - - .../COMPONENT_WHD/src/bus_protocols/whd_bus.h | 123 - - .../src/bus_protocols/whd_bus_common.c | 517 - - .../src/bus_protocols/whd_bus_common.h | 65 - - .../whd_bus_protocol_interface.h | 128 - - .../src/bus_protocols/whd_bus_sdio_protocol.c | 1469 - - .../src/bus_protocols/whd_bus_sdio_protocol.h | 229 - - .../src/bus_protocols/whd_bus_spi_protocol.c | 1038 - - .../src/bus_protocols/whd_bus_spi_protocol.h | 101 - - .../src/bus_protocols/whd_chip_reg.h | 114 - - .../src/bus_protocols/whd_sdio.h | 234 - - .../COMPONENT_WHD/src/bus_protocols/whd_spi.h | 122 - - .../COMPONENT_WHD/src/include/whd_ap.h | 102 - - .../src/include/whd_buffer_api.h | 151 - - .../COMPONENT_WHD/src/include/whd_cdc_bdc.h | 158 - - .../COMPONENT_WHD/src/include/whd_chip.h | 393 - - .../src/include/whd_chip_constants.h | 84 - - .../COMPONENT_WHD/src/include/whd_debug.h | 140 - - .../COMPONENT_WHD/src/include/whd_endian.h | 69 - - .../src/include/whd_events_int.h | 464 - - .../COMPONENT_WHD/src/include/whd_int.h | 113 - - .../src/include/whd_network_if.h | 76 - - .../COMPONENT_WHD/src/include/whd_poll.h | 93 - - .../src/include/whd_resource_if.h | 55 - - .../COMPONENT_WHD/src/include/whd_sdpcm.h | 124 - - .../COMPONENT_WHD/src/include/whd_thread.h | 92 - - .../src/include/whd_thread_internal.h | 55 - - .../COMPONENT_WHD/src/include/whd_types_int.h | 407 - - .../COMPONENT_WHD/src/include/whd_utils.h | 182 - - .../COMPONENT_WHD/src/include/whd_wifi_p2p.h | 49 - - .../COMPONENT_WHD/src/include/whd_wlioctl.h | 3763 --- - .../COMPONENT_WHD/src/whd_ap.c | 772 - - .../COMPONENT_WHD/src/whd_buffer_api.c | 220 - - .../COMPONENT_WHD/src/whd_cdc_bdc.c | 723 - - .../COMPONENT_WHD/src/whd_chip.c | 1456 - - .../COMPONENT_WHD/src/whd_chip_constants.c | 362 - - .../COMPONENT_WHD/src/whd_clm.c | 172 - - .../COMPONENT_WHD/src/whd_debug.c | 62 - - .../COMPONENT_WHD/src/whd_events.c | 475 - - .../COMPONENT_WHD/src/whd_logging.c | 112 - - .../COMPONENT_WHD/src/whd_management.c | 478 - - .../COMPONENT_WHD/src/whd_network_if.c | 85 - - .../COMPONENT_WHD/src/whd_resource_if.c | 103 - - .../COMPONENT_WHD/src/whd_sdpcm.c | 618 - - .../COMPONENT_WHD/src/whd_thread.c | 346 - - .../COMPONENT_WHD/src/whd_utils.c | 877 - - .../COMPONENT_WHD/src/whd_wifi.c | 111 - - .../COMPONENT_WHD/src/whd_wifi_api.c | 4375 --- - .../COMPONENT_WHD/src/whd_wifi_p2p.c | 45 - - .../COMPONENT_WHD/version.txt | 1 - - .../COMPONENT_WHD/whd_config.h | 47 +- - 98 files changed, 2205 insertions(+), 51987 deletions(-) - create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/CMakeLists.txt - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_events.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_network_types.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_resource_api.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_types.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_wifi_api.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_network_buffer.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_network_buffer.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_gpio.cpp - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_modules.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_sdio.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/mbed_lib.json - create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp_wifi.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp_wifi.h - rename targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/{inc/whd_version.h => port/cycfg.h} (79%) - create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal.h - create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_gpio.cpp - rename targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/{interface => port}/cyhal_hw_types.h (78%) - create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_sdio.c - create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_spi.c - create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_system.h - rename targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/{src/include/whd_clm.h => port/wiced_bd.h} (52%) - create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_filesystem.cpp - create mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_filesystem.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1-mfgtest.bin - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1-mfgtest.clm_blob - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1-mfgtest_bin.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1-mfgtest_clm_blob.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1.bin - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1.clm_blob - rename targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/{COMPONENT_4343W => COMPONENT_4343W_FS}/4343WA1_bin.c (99%) - rename targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/{COMPONENT_4343W => COMPONENT_4343W_FS}/4343WA1_clm_blob.c (100%) - rename targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/{COMPONENT_4343W => COMPONENT_4343W_FS}/resources.h (81%) - rename targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/nvram/{TARGET_STM32H747xI => }/wifi_nvram_image.h (100%) - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/resource_imp/whd_resources.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/resource_imp/wiced_resource.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_common.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_common.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_protocol_interface.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_sdio_protocol.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_sdio_protocol.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_spi_protocol.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_spi_protocol.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_chip_reg.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_sdio.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_spi.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_ap.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_buffer_api.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_cdc_bdc.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_chip.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_chip_constants.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_debug.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_endian.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_events_int.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_int.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_network_if.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_poll.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_resource_if.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_sdpcm.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_thread.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_thread_internal.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_types_int.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_utils.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_wifi_p2p.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_wlioctl.h - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_ap.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_buffer_api.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_cdc_bdc.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_chip.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_chip_constants.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_clm.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_debug.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_events.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_logging.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_management.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_network_if.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_resource_if.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_sdpcm.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_thread.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_utils.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi_api.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi_p2p.c - delete mode 100644 targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/version.txt - -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/CMakeLists.txt b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/CMakeLists.txt -new file mode 100644 -index 0000000000..55b7e63ecf ---- /dev/null -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/CMakeLists.txt -@@ -0,0 +1,34 @@ -+# Copyright (c) 2020-2021 ARM Limited. All rights reserved. -+# SPDX-License-Identifier: Apache-2.0 -+ -+add_library(mbed-portenta-whd-4343w-fw INTERFACE) -+target_include_directories(mbed-portenta-whd-4343w-fw -+ INTERFACE -+ resources/firmware/COMPONENT_4343W_FS -+) -+target_sources(mbed-portenta-whd-4343w-fw -+ INTERFACE -+ resources/firmware/COMPONENT_4343W_FS/4343WA1_bin.c -+ resources/firmware/COMPONENT_4343W_FS/4343WA1_clm_blob.c -+) -+ -+add_library(mbed-portenta-whd-4343w-nvram INTERFACE) -+target_include_directories(mbed-portenta-whd-4343w-nvram INTERFACE resources/nvram) -+ -+add_library(mbed-portenta-whd INTERFACE) -+target_include_directories(mbed-portenta-whd -+ INTERFACE -+ . -+ port -+ interface -+) -+ -+target_sources(mbed-portenta-whd -+ INTERFACE -+ port/cyhal.c -+ port/cyhalgpio.cpp -+ port/cyhalsdio.c -+ port/wiced_filesystem.cpp -+ interface/cyabs_rtos_rtxv5.c -+) -+ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd.h -deleted file mode 100644 -index 3eaff251e2..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd.h -+++ /dev/null -@@ -1,82 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file whd.h -- * Provides abstract pointer type to act as instance for: driver, interface, buffer funcs, network funcs, resource funcs and bus funcs. -- */ -- --#include "whd_types.h" -- --#ifndef INCLUDED_WHD_H --#define INCLUDED_WHD_H -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/** -- * Abstract pointer type that acts as a handle to an instance of the driver -- */ --typedef struct whd_driver *whd_driver_t; -- --/** -- * Abstract pointer type to handle instance of whd interface -- */ --typedef struct whd_interface *whd_interface_t; -- --/** -- * Abstract type that acts as a handle to an instance of a buffer function -- */ --typedef struct whd_buffer_funcs whd_buffer_funcs_t; -- --/** -- * Abstract type that acts as a handle to an instance of a network interface function -- */ --typedef struct whd_netif_funcs whd_netif_funcs_t; -- --/** -- * Abstract type that acts as a handle to an instance of a resource function -- */ --typedef struct whd_resource_source whd_resource_source_t; -- --/** -- * Abstract type that acts as a handle to an instance of a bus function used for SDIO specific functionality -- */ --typedef struct whd_bus_funcs whd_sdio_funcs_t; -- --/** -- * Abstract type that acts as a handle to an instance of a bus function used for SPI specific functionality -- */ --typedef struct whd_bus_funcs whd_spi_funcs_t; -- --/** -- * Structure for storing WHD init configurations -- */ --typedef struct whd_init_config --{ -- void *thread_stack_start; /**< Pointer to the WHD thread stack */ -- uint32_t thread_stack_size; /**< Size of the WHD thread stack */ -- uint32_t thread_priority; /**< Priority to be set to WHD Thread */ -- whd_country_code_t country; /**< Variable to strore country code information */ --} whd_init_config_t; -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* INCLUDED_WHD_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_events.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_events.h -deleted file mode 100644 -index d85bed7054..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_events.h -+++ /dev/null -@@ -1,226 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file whd_events.h -- * Header for Event detection -- * -- * Provides constants and prototypes for functions that allow -- * user applications to receive event callbacks and set event handlers -- */ --#ifndef INCLUDED_WHD_EVENTS_API_H --#define INCLUDED_WHD_EVENTS_API_H -- --#include "whd.h" -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/* List of events */ --#define WLC_E_NONE (0x7FFFFFFE) /**< Indicates the end of the event array list */ -- --#define WLC_E_SET_SSID 0 /**< Indicates status of set SSID. This event occurs when STA tries to join the AP*/ --#define WLC_E_AUTH 3 /**< 802.11 AUTH request event occurs when STA tries to get authenticated with the AP */ --#define WLC_E_DEAUTH 5 /**< 802.11 DEAUTH request event occurs when the the SOFTAP is stopped to deuthenticate the connected stations*/ --#define WLC_E_DEAUTH_IND 6 /**< 802.11 DEAUTH indication event occurs when the STA gets deauthenticated by the AP */ --#define WLC_E_ASSOC 7 /**< 802.11 ASSOC request event occurs when STA joins the AP */ --#define WLC_E_ASSOC_IND 8 /**< 802.11 ASSOC indication occurs when a station joins the SOFTAP that is started */ --#define WLC_E_REASSOC 9 /**< 802.11 REASSOC request event when the STA again gets associated with the AP */ --#define WLC_E_REASSOC_IND 10 /**< 802.11 REASSOC indication occurs when a station again reassociates with the SOFTAP*/ --#define WLC_E_DISASSOC 11 /**< 802.11 DISASSOC request occurs when the STA the tries to leave the AP*/ --#define WLC_E_DISASSOC_IND 12 /**< 802.11 DISASSOC indication occurs when the connected station gets disassociates from SOFTAP, -- also when STA gets diassociated by the AP*/ --#define WLC_E_LINK 16 /**< generic link indication */ --#define WLC_E_PROBREQ_MSG 44 /**< Indicates probe request received for the SOFTAP started*/ --#define WLC_E_PSK_SUP 46 /**< WPA Handshake fail during association*/ --#define WLC_E_ACTION_FRAME 59 /**< Indicates Action frame Rx */ --#define WLC_E_ACTION_FRAME_COMPLETE 60 /**< Indicates Action frame Tx complete */ --#define WLC_E_ESCAN_RESULT 69 /**< escan result event occurs when we scan for the networks */ -- --/* List of status codes - Applicable for any event type */ --#define WLC_E_STATUS_SUCCESS 0 /**< operation was successful */ --#define WLC_E_STATUS_FAIL 1 /**< operation failed */ --#define WLC_E_STATUS_TIMEOUT 2 /**< operation timed out */ --#define WLC_E_STATUS_NO_NETWORKS 3 /**< failed due to no matching network found */ --#define WLC_E_STATUS_ABORT 4 /**< operation was aborted */ --#define WLC_E_STATUS_NO_ACK 5 /**< protocol failure: packet not ack'd */ --#define WLC_E_STATUS_UNSOLICITED 6 /**< AUTH or ASSOC packet was unsolicited */ --#define WLC_E_STATUS_ATTEMPT 7 /**< attempt to assoc to an auto auth configuration */ --#define WLC_E_STATUS_PARTIAL 8 /**< scan results are incomplete */ --#define WLC_E_STATUS_NEWSCAN 9 /**< scan aborted by another scan */ --#define WLC_E_STATUS_NEWASSOC 10 /**< scan aborted due to assoc in progress */ --#define WLC_E_STATUS_11HQUIET 11 /**< 802.11h quiet period started */ --#define WLC_E_STATUS_SUPPRESS 12 /**< user disabled scanning (WLC_SET_SCANSUPPRESS) */ --#define WLC_E_STATUS_NOCHANS 13 /**< no allowable channels to scan */ --#define WLC_E_STATUS_CCXFASTRM 14 /**< scan aborted due to CCX fast roam */ --#define WLC_E_STATUS_CS_ABORT 15 /**< abort channel select */ --#define WLC_E_STATUS_ERROR 16 /**< request failed due to error */ --#define WLC_E_STATUS_INVALID 0xff /**< Invalid status code to init variables. */ -- --#define WLC_SUP_STATUS_OFFSET (256) /**< Status offset added to the status codes to match the values from firmware. */ -- --/** -- * @brief Status code for event WLC_E_PSK_SUP -- * -- * -Basic supplicant authentication states -- * -- + WLC_SUP_DISCONNECTED -- * + WLC_SUP_CONNECTING -- * + WLC_SUP_IDREQUIRED -- * + WLC_SUP_AUTHENTICATING -- * + WLC_SUP_AUTHENTICATED -- * + WLC_SUP_KEYXCHANGE -- * + WLC_SUP_KEYED -- * + WLC_SUP_TIMEOUT -- * + WLC_SUP_LAST_BASIC_STATE -- * -Extended supplicant authentication states -- * + WLC_SUP_KEYXCHANGE_WAIT_M1 -- * + WLC_SUP_KEYXCHANGE_PREP_M2 -- * + WLC_SUP_KEYXCHANGE_WAIT_M3 -- * + WLC_SUP_KEYXCHANGE_PREP_M4 -- * + WLC_SUP_KEYXCHANGE_WAIT_G1 -- * + WLC_SUP_KEYXCHANGE_PREP_G2 -- */ --typedef enum sup_auth_status --{ -- WLC_SUP_DISCONNECTED = 0 + WLC_SUP_STATUS_OFFSET, /**< Disconnected */ -- WLC_SUP_CONNECTING = 1 + WLC_SUP_STATUS_OFFSET, /**< Connecting */ -- WLC_SUP_IDREQUIRED = 2 + WLC_SUP_STATUS_OFFSET, /**< ID Required */ -- WLC_SUP_AUTHENTICATING = 3 + WLC_SUP_STATUS_OFFSET, /**< Authenticating */ -- WLC_SUP_AUTHENTICATED = 4 + WLC_SUP_STATUS_OFFSET, /**< Authenticated */ -- WLC_SUP_KEYXCHANGE = 5 + WLC_SUP_STATUS_OFFSET, /**< Key Exchange */ -- WLC_SUP_KEYED = 6 + WLC_SUP_STATUS_OFFSET, /**< Key Exchanged */ -- WLC_SUP_TIMEOUT = 7 + WLC_SUP_STATUS_OFFSET, /**< Timeout */ -- WLC_SUP_LAST_BASIC_STATE = 8 + WLC_SUP_STATUS_OFFSET, /**< Last Basic State */ -- WLC_SUP_KEYXCHANGE_WAIT_M1 = WLC_SUP_AUTHENTICATED, /**< Waiting to receive handshake msg M1 */ -- WLC_SUP_KEYXCHANGE_PREP_M2 = WLC_SUP_KEYXCHANGE, /**< Preparing to send handshake msg M2 */ -- WLC_SUP_KEYXCHANGE_WAIT_M3 = WLC_SUP_LAST_BASIC_STATE, /**< Waiting to receive handshake msg M3 */ -- WLC_SUP_KEYXCHANGE_PREP_M4 = 9 + WLC_SUP_STATUS_OFFSET, /**< Preparing to send handshake msg M4 */ -- WLC_SUP_KEYXCHANGE_WAIT_G1 = 10 + WLC_SUP_STATUS_OFFSET, /**< Waiting to receive handshake msg G1 */ -- WLC_SUP_KEYXCHANGE_PREP_G2 = 11 + WLC_SUP_STATUS_OFFSET /**< Preparing to send handshake msg G2 */ --} sup_auth_status_t; -- --#define WHD_MSG_IFNAME_MAX 16 /**< Max length of Interface name */ -- --#pragma pack(1) -- --/** -- * Structure to store ethernet header fields in event packets -- */ --typedef struct whd_event_eth_hdr --{ -- uint16_t subtype; /**< Vendor specific..32769 */ -- uint16_t length; /**< Length of ethernet header*/ -- uint8_t version; /**< Version is 0 */ -- uint8_t oui[3]; /**< Organizationally Unique Identifier */ -- uint16_t usr_subtype; /**< User specific data */ --} whd_event_eth_hdr_t; -- --/** -- * Structure to store ethernet destination, source and ethertype in event packets -- */ --typedef struct whd_event_ether_header --{ -- whd_mac_t destination_address; /**< Ethernet destination address */ -- whd_mac_t source_address; /**< Ethernet source address */ -- uint16_t ethertype; /**< Ethertype for identifying event packets */ --} whd_event_ether_header_t; -- --/** -- * Structure to store fields after ethernet header in event message -- */ --struct whd_event_msg --{ -- uint16_t version; /**< Version */ -- uint16_t flags; /**< see flags below */ -- uint32_t event_type; /**< Event type indicating a response from firmware for IOCTLs/IOVARs sent */ -- uint32_t status; /**< Status code corresponding to any event type */ -- uint32_t reason; /**< Reason code associated with the event occurred */ -- uint32_t auth_type; /**< WLC_E_AUTH: 802.11 AUTH request */ -- uint32_t datalen; /**< Length of data in event message */ -- whd_mac_t addr; /**< Station address (if applicable) */ -- char ifname[WHD_MSG_IFNAME_MAX]; /**< name of the incoming packet interface */ -- uint8_t ifidx; /**< destination OS i/f index */ -- uint8_t bsscfgidx; /**< source bsscfg index */ --}; -- --/** -- * Event structure used by driver msgs -- */ --typedef struct whd_event --{ -- whd_event_ether_header_t eth; /**< Variable to store ethernet destination, source and ethertype in event packets */ -- whd_event_eth_hdr_t eth_evt_hdr; /**< Variable to store ethernet header fields in event message */ -- whd_event_header_t whd_event; /**< Variable to store rest of the event packet fields after ethernet header */ -- /* data portion follows */ --} whd_event_t; -- --#pragma pack() -- --/** @addtogroup event WHD Event handling API -- * Functions that allow user applications to receive event callbacks and set event handlers -- * @{ -- */ --/** Event handler prototype definition -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param event_header whd event header -- * @param event_data event data -- * @param handler_user_data semaphore data -- */ --typedef void *(*whd_event_handler_t)(whd_interface_t ifp, const whd_event_header_t *event_header, -- const uint8_t *event_data, void *handler_user_data); -- --/** Registers a handler to receive event callbacks. -- * -- * This function registers a callback handler to be notified when -- * a particular event is received. -- * -- * -- * @note Currently each event may only be registered to one handler and there is a limit to the number of simultaneously -- * registered events. Maximum of 5 event handlers can registered simultaneously, this also includes the internal -- * event handler registration which happens during scan, join and starting an AP. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param event_type Pointer to the event list array -- * @param handler_func A function pointer to the handler callback -- * @param handler_user_data A pointer value which will be passed to the event handler function -- * at the time an event is triggered (NULL is allowed) -- * @param event_index Entry where the event handler is registered in the list -- * -- * @return WHD_SUCCESS or Error code -- */ --uint32_t whd_wifi_set_event_handler(whd_interface_t ifp, const uint32_t *event_type, whd_event_handler_t handler_func, -- void *handler_user_data, uint16_t *event_index); --/* @} */ -- --/** Delete/Deregister the event entry where callback is registered -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param event_index Event index obtained during registration by whd_wifi_set_event_handler -- * -- * @return WHD_SUCCESS or Error code -- */ -- --uint32_t whd_wifi_deregister_event_handler(whd_interface_t ifp, uint16_t event_index); -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* ifndef */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_network_types.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_network_types.h -deleted file mode 100644 -index b8b197b554..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_network_types.h -+++ /dev/null -@@ -1,230 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file whd_network_types.h -- * Prototypes of functions corresponding to Buffer and Network Interface -- * -- * This file provides prototypes for functions which allows different functionalities related to: -- * - Buffer Interface: Allocate and release a packet buffer, Retrieve the current pointer and size of a packet buffer, etc. -- * - Network Interface: Called by WHD to pass received data to the network stack, to send an ethernet frame to WHD, etc. -- */ --#include "whd.h" -- --#ifndef INC_WHD_NETWORK_TYPES_H_ --#define INC_WHD_NETWORK_TYPES_H_ -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Constants --******************************************************/ --/** @addtogroup buffif WHD Buffer Interface API -- * Allows WHD to perform buffer related operations like, allocating, releasing, retrieving the current pointer of and size of a packet buffer. -- * @{ -- */ -- --/** -- * Indicates transmit/receive direction that the packet buffer has -- * been used for. This is needed if tx/rx pools are separate. -- */ --typedef enum --{ -- WHD_NETWORK_TX, /**< Transmit direction */ -- WHD_NETWORK_RX /**< Recieve direction */ --} whd_buffer_dir_t; -- --/** -- * Allows WHD to perform buffer related operations like, allocating, releasing, retrieving the current pointer of and size of a packet buffer. -- */ --struct whd_buffer_funcs --{ -- /** Allocates a packet buffer -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * Attempts to allocate a packet buffer of the size requested. It can do this -- * by allocating a pre-existing packet from a pool, using a static buffer, -- * or by dynamically allocating memory. The method of allocation does not -- * concern WHD, however it must match the way the network stack expects packet -- * buffers to be allocated. Usually WHD requires packet of size of WHD_LINK_MTU -- * which includes the MTU, other other various header. Refer to whd_types.h -- * to find the size of WHD_LINK_MTU -- * -- * @param buffer A pointer which receives the allocated packet buffer handle -- * @param direction Indicates transmit/receive direction that the packet buffer is -- * used for. This may be needed if tx/rx pools are separate. -- * @param size The number of bytes to allocate. -- * @param wait Whether to wait for a packet buffer to be available -- * -- * @return WHD_SUCCESS or error code -- * -- */ -- whd_result_t (*whd_host_buffer_get)(whd_buffer_t *buffer, whd_buffer_dir_t direction, unsigned short size, -- unsigned long wait); -- -- /** Releases a packet buffer -- * -- * Implemented in the port layer interface, which will be specific to the -- * buffering scheme in use. -- * This function is used by WHD to indicate that it no longer requires -- * a packet buffer. The buffer can then be released back into a pool for -- * reuse, or the dynamically allocated memory can be freed, according to -- * how the packet was allocated. -- * Returns void since WHD cannot do anything about failures -- * -- * @param buffer The handle of the packet buffer to be released -- * @param direction Indicates transmit/receive direction that the packet buffer has -- * been used for. This might be needed if tx/rx pools are separate. -- * -- */ -- void (*whd_buffer_release)(whd_buffer_t buffer, whd_buffer_dir_t direction); -- -- /** Retrieves the current pointer of a packet buffer -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * Since packet buffers usually need to be created with space at the -- * front for additional headers, this function allows WHD to get -- * the current 'front' location pointer. -- * -- * @param buffer The handle of the packet buffer whose pointer is to be retrieved -- * -- * @return The packet buffer's current pointer. -- */ -- uint8_t *(*whd_buffer_get_current_piece_data_pointer)(whd_buffer_t buffer); -- -- /** Retrieves the size of a packet buffer -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * Since packet buffers usually need to be created with space at the -- * front for additional headers, the memory block use to contain a packet buffer -- * will often be larger than the current size of the packet buffer data. -- * This function allows WHD to retrieve the current size of a packet buffer's data. -- * -- * @param buffer The handle of the packet buffer whose size is to be retrieved -- * -- * @return The size of the packet buffer. -- */ -- uint16_t (*whd_buffer_get_current_piece_size)(whd_buffer_t buffer); -- -- /** Sets the current size of a WHD packet -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * This function sets the current length of a WHD packet buffer -- * -- * @param buffer The packet to be modified -- * @param size The new size of the packet buffer -- * -- * @return WHD_SUCCESS or error code -- */ -- whd_result_t (*whd_buffer_set_size)(whd_buffer_t buffer, unsigned short size); -- -- /** Moves the current pointer of a packet buffer -- * -- * Implemented in the port layer interface which is specific to the buffering scheme in use. -- * -- * Since packet buffers usually need to be created with space at the front for additional headers, -- * this function allows WHD to move the current 'front' location pointer so that it has space to -- * add headers to transmit packets, and so that the network stack does not see the internal WHD -- * headers on received packets. -- * -- * @param buffer A pointer to the handle of the current packet buffer for which the -- * current pointer will be moved. On return this may contain a pointer -- * to a newly allocated packet buffer which has been daisy chained to -- * the front of the given packet buffer. This would be the case if the given packet -- * buffer didn't have enough space at the front. -- * @param add_remove_amount This is the number of bytes to move the current pointer of the packet -- * buffer - a negative value increases the space for headers at the front -- * of the packet, a positive value decreases the space. -- * -- * @return WHD_SUCCESS or error code -- */ -- whd_result_t (*whd_buffer_add_remove_at_front)(whd_buffer_t *buffer, int32_t add_remove_amount); --}; --/* @} */ -- --/** @addtogroup netif WHD Network Interface API -- * Allows WHD to pass received data to the network stack, to send an ethernet frame to WHD, etc. -- * @{ -- */ -- --/** -- * Contains functions which allows WHD to pass received data to the network stack, to send an ethernet frame to WHD, etc -- */ --struct whd_netif_funcs --{ -- /** Called by WHD to pass received data to the network stack -- * -- * -- * Packets received from the Wi-Fi network by WHD are forwarded to by calling function ptr which -- * must be implemented in the network interface. Ethernet headers -- * are present at the start of these packet buffers. -- * -- * This function is called asynchronously in the context of the -- * WHD thread whenever new data has arrived. -- * Packet buffers are allocated within WHD, and ownership is transferred -- * to the network stack. The network stack or application is thus -- * responsible for releasing the packet buffers. -- * Most packet buffering systems have a pointer to the 'current point' within -- * the packet buffer. When this function is called, the pointer points -- * to the start of the Ethernet header. There is other inconsequential data -- * before the Ethernet header. -- * -- * It is preferable that the (whd_network_process_ethernet_data)() function simply puts -- * the received packet on a queue for processing by another thread. This avoids the -- * WHD thread being unnecessarily tied up which would delay other packets -- * being transmitted or received. -- * -- * @param interface The interface on which the packet was received. -- * @param buffer Handle of the packet which has just been received. Responsibility for -- * releasing this buffer is transferred from WHD at this point. -- * -- */ -- void (*whd_network_process_ethernet_data)(whd_interface_t ifp, whd_buffer_t buffer); --}; -- --/** To send an ethernet frame to WHD (called by the Network Stack) -- * -- * This function takes ethernet data from the network stack and queues it for transmission over the wireless network. -- * The function can be called from any thread context as it is thread safe, however -- * it must not be called from interrupt context since it might get blocked while waiting -- * for a lock on the transmit queue. -- * -- * This function returns immediately after the packet has been queued for transmit, -- * NOT after it has been transmitted. Packet buffers passed to the WHD -- * are released inside the WHD once they have been transmitted. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param buffer Handle of the packet buffer to be sent. -- * -- * @return WHD_SUCCESS or Error code -- * -- */ --extern void whd_network_send_ethernet_data(whd_interface_t ifp, whd_buffer_t buffer); --/* @} */ -- -- --#ifdef __cplusplus --} /*extern "C" */ --#endif --#endif /* INC_WHD_NETWORK_TYPES_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_resource_api.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_resource_api.h -deleted file mode 100644 -index eb1071c71b..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_resource_api.h -+++ /dev/null -@@ -1,128 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file whd_resource_api.h -- * Prototypes of functions for providing external resources to the radio driver -- * -- * This file provides prototypes for functions which allow -- * WHD to download firmware, NVRAM and CLM BLOB on a particular hardware platform. -- * -- */ --#include "whd.h" -- --#ifndef INCLUDED_WHD_RESOURCE_API_H_ --#define INCLUDED_WHD_RESOURCE_API_H_ -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --#define BLOCK_SIZE 1024 /**< Size of the block */ --/** -- * Type of resources -- */ --typedef enum --{ -- WHD_RESOURCE_WLAN_FIRMWARE, /**< Resource type: WLAN Firmware */ -- WHD_RESOURCE_WLAN_NVRAM, /**< Resource type: NVRAM file */ -- WHD_RESOURCE_WLAN_CLM, /**< Resource type: CLM_BLOB file */ --} whd_resource_type_t; -- --/****************************************************** --* Global Variables --******************************************************/ -- --/** @addtogroup res WHD Resource API -- * @brief Functions that enable WHD to download WLAN firmware, NVRAM and CLM BLOB on a particular hardware platform. -- * @{ -- */ -- --/** -- * Interface to a data source that provides external resources to the radio driver -- */ -- --/** This data structure defines a source for data generally intended to be downloaded to the radio device. -- * -- * The data is assumed to be available as a set of blocks that are all the same size with the exception -- * of the last block. The whd_get_resource_block_size function returns this block size. The whd_get_resource_block call -- * returns a pointer to a block of data. The actual storage for the data block is owned by the data source, so only a pointer -- * to the block is returned. There are two predominate use cases. If the data is stored in the internal -- * flash memory, then whd_get_resource_no_of_blocks will return 1 and a call to whd_get_resource_block will return a pointer to -- * the data image with the size being the size of the data image. If the data is stored in an external flash of some -- * type, each block of data can be read from the external flash one at a time. whd_get_resource_no_of_blocks will return -- * the physical number of blocks in the data and each call to whd_get_resource_block will read data from the external memory -- * and make it available via an internal buffer. -- */ --struct whd_resource_source --{ -- /** Gets the size of the resource for respective resource type -- * -- * -- * @param whd_drv Pointer to handle instance of the driver -- * @param resource Type of resource - WHD_RESOURCE_WLAN_FIRMWARE, WHD_RESOURCE_WLAN_NVRAM, WHD_RESOURCE_WLAN_CLM -- * @param size_out Size of the resource -- * -- * @return WHD_SUCCESS or error code -- * -- */ -- uint32_t (*whd_resource_size)(whd_driver_t whd_drv, whd_resource_type_t resource, uint32_t *size_out); -- -- /** Gets the resource block for specified resource type -- * -- * @param whd_drv Pointer to handle instance of the driver -- * @param type Type of resource - WHD_RESOURCE_WLAN_FIRMWARE, WHD_RESOURCE_WLAN_NVRAM, WHD_RESOURCE_WLAN_CLM -- * @param blockno The number of block -- * @param data Pointer to a block of data -- * @param size_out Size of the resource -- * -- * @return WHD_SUCCESS or error code -- * -- */ -- uint32_t (*whd_get_resource_block)(whd_driver_t whd_drv, whd_resource_type_t type, -- uint32_t blockno, const uint8_t **data, uint32_t *size_out); -- -- /** Gets block count for the specified resource_type -- * -- * @param whd_drv Pointer to handle instance of the driver -- * @param type Type of resource - WHD_RESOURCE_WLAN_FIRMWARE, WHD_RESOURCE_WLAN_NVRAM, WHD_RESOURCE_WLAN_CLM -- * @param block_count Pointer to store block count for the resource -- * -- * @return WHD_SUCCESS or error code -- * -- */ -- uint32_t (*whd_get_resource_no_of_blocks)(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *block_count); -- -- /** Gets block size for the specified resource_type -- * -- * @param whd_drv Pointer to handle instance of the driver -- * @param type Type of resources - WHD_RESOURCE_WLAN_FIRMWARE, WHD_RESOURCE_WLAN_NVRAM, WHD_RESOURCE_WLAN_CLM -- * @param size_out Pointer to store size of the block -- * -- * @return WHD_SUCCESS or error code -- * -- */ -- uint32_t (*whd_get_resource_block_size)(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *size_out); --}; -- --/** @} */ -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* ifndef INCLUDED_WHD_RESOURCE_API_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_types.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_types.h -deleted file mode 100644 -index e470bb9574..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_types.h -+++ /dev/null -@@ -1,1054 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file whd_types.h -- * Defines common data types used with WHD -- * -- */ -- --#include --#include "cy_result.h" --#include "cyhal_hw_types.h" -- --#ifndef INCLUDED_WHD_TYPES_H_ --#define INCLUDED_WHD_TYPES_H_ -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Macros --******************************************************/ --#define SSID_NAME_SIZE (32) /**< SSID Length */ -- --#define WEP_ENABLED 0x0001 /**< Flag to enable WEP Security */ --#define TKIP_ENABLED 0x0002 /**< Flag to enable TKIP Encryption */ --#define AES_ENABLED 0x0004 /**< Flag to enable AES Encryption */ --#define SHARED_ENABLED 0x00008000 /**< Flag to enable Shared key Security */ --#define WPA_SECURITY 0x00200000 /**< Flag to enable WPA Security */ --#define WPA2_SECURITY 0x00400000 /**< Flag to enable WPA2 Security */ --#define WPA3_SECURITY 0x01000000 /**< Flag to enable WPA3 PSK Security */ --#define SECURITY_MASK (WEP_ENABLED | TKIP_ENABLED | AES_ENABLED) /**< Flag to Security mask */ -- --#define ENTERPRISE_ENABLED 0x02000000 /**< Flag to enable Enterprise Security */ --#define WPS_ENABLED 0x10000000 /**< Flag to enable WPS Security */ --#define IBSS_ENABLED 0x20000000 /**< Flag to enable IBSS mode */ --#define FBT_ENABLED 0x40000000 /**< Flag to enable FBT */ -- --#define PM1_POWERSAVE_MODE (1) /**< Powersave mode on specified interface without regard for throughput reduction */ --#define PM2_POWERSAVE_MODE (2) /**< Powersave mode on specified interface with High throughput */ --#define NO_POWERSAVE_MODE (0) /**< No Powersave mode */ -- --/** -- * Suppress unused parameter warning -- */ --#define UNUSED_PARAMETER(x) ( (void)(x) ) -- --/** -- * Suppress unused variable warning -- */ --#define UNUSED_VARIABLE(x) ( (void)(x) ) -- --/** -- * Suppress unused variable warning occurring due to an assert which is disabled in release mode -- */ --#define REFERENCE_DEBUG_ONLY_VARIABLE(x) ( (void)(x) ) -- --/****************************************************** --*@cond Type Definitions --******************************************************/ --typedef void *whd_buffer_t; --typedef struct wl_bss_info_struct whd_bss_info_t; --typedef struct edcf_acparam whd_edcf_ac_param_t; --typedef struct wl_af_params whd_af_params_t; --typedef struct whd_arp_stats_s whd_arp_stats_t; --typedef struct wl_pkt_filter_stats whd_pkt_filter_stats_t; --typedef struct whd_tko_retry whd_tko_retry_t; --typedef struct whd_tko_connect whd_tko_connect_t; --typedef struct whd_tko_status whd_tko_status_t; --/** @endcond */ --/****************************************************** --* Constants --******************************************************/ -- --#define WIFI_IE_OUI_LENGTH (3) /**< OUI length for Information Element */ -- --/* Below constants are used to allocate the buffer pool by the application */ -- --#define BDC_HEADER_WITH_PAD 6 /**< BDC Header with padding 4 + 2 */ -- --/** From bdc header, Ethernet data starts after an offset of (bdc_header->data_offset<<2). -- * It is variable, but usually 4. -- */ --#define BDC_HEADER_OFFSET_TO_DATA 4 -- --#define SDPCM_HEADER (8 + 4) /**< SDPCM SW header + Frame tag */ -- --#define MAX_BUS_HEADER_SIZE 4 /**< Max bus header size for all bus types (sdio/spi) */ -- --#define BUFFER_OVERHEAD 4 /**< Buffer overhead, sizeof(void *) */ -- --/** -- * The maximum space in bytes required for headers in front of the Ethernet header. -- * 6 + (8 + 4) + 4 + 4 + 4 = 30 bytes -- */ --#define WHD_LINK_HEADER (BDC_HEADER_WITH_PAD + BDC_HEADER_OFFSET_TO_DATA + \ -- SDPCM_HEADER + MAX_BUS_HEADER_SIZE + BUFFER_OVERHEAD) -- --/** -- * The size of an Ethernet header -- */ --#define WHD_ETHERNET_SIZE (14) -- --/** -- * The size in bytes of the Link layer header i.e. the whd specific headers and the Ethernet header -- */ --#define WHD_PHYSICAL_HEADER (WHD_LINK_HEADER + WHD_ETHERNET_SIZE) -- --/** -- * The maximum size in bytes of the data part of an Ethernet frame -- */ --#ifndef WHD_PAYLOAD_MTU --#define WHD_PAYLOAD_MTU (1500) --#endif -- --/** -- * The maximum size in bytes of a packet used within whd. -- * Pool should be atleast of this size. -- * Usually buffer pools needs implementation specific headers like pbuf header etc, that should be -- * taken into account along with this during buffer pool creation. Also buffer pools needs alignment with -- * cache size of the platform for better performance -- */ --#define WHD_LINK_MTU (WHD_PAYLOAD_MTU + WHD_PHYSICAL_HEADER) -- --/** @cond */ --#ifdef __x86_64__ --typedef uint64_t whd_thread_arg_t; --#else --typedef uint32_t whd_thread_arg_t; --#endif --/** @endcond */ --/****************************************************** --* Structures and Enumerations --******************************************************/ --/** -- * Enumeration of Dot11 Reason Codes -- */ --typedef enum --{ -- WHD_DOT11_RC_RESERVED = 0, /**< Reserved */ -- WHD_DOT11_RC_UNSPECIFIED = 1 /**< Unspecified */ --} whd_dot11_reason_code_t; -- --/** -- * Boolean values -- */ --typedef enum --{ -- WHD_FALSE = 0, /**< Boolean True */ -- WHD_TRUE = 1 /**< Boolean False */ --} whd_bool_t; -- -- --/** -- * Transfer direction for the WHD platform bus interface -- */ --typedef enum --{ -- /* If updating this enum, the bus_direction_mapping variable will also need to be updated */ -- BUS_READ, /**< Specifies bus type and read direction */ -- BUS_WRITE /**< Specifies bus type and write direction */ --} whd_bus_transfer_direction_t; -- --/** -- * Enumeration of Wi-Fi security modes -- */ --typedef enum --{ -- WHD_SECURITY_OPEN = 0, /**< Open security */ -- WHD_SECURITY_WEP_PSK = WEP_ENABLED, /**< WEP PSK Security with open authentication */ -- WHD_SECURITY_WEP_SHARED = (WEP_ENABLED | SHARED_ENABLED), /**< WEP PSK Security with shared authentication */ -- WHD_SECURITY_WPA_TKIP_PSK = (WPA_SECURITY | TKIP_ENABLED), /**< WPA PSK Security with TKIP */ -- WHD_SECURITY_WPA_AES_PSK = (WPA_SECURITY | AES_ENABLED), /**< WPA PSK Security with AES */ -- WHD_SECURITY_WPA_MIXED_PSK = (WPA_SECURITY | AES_ENABLED | TKIP_ENABLED), /**< WPA PSK Security with AES & TKIP */ -- WHD_SECURITY_WPA2_AES_PSK = (WPA2_SECURITY | AES_ENABLED), /**< WPA2 PSK Security with AES */ -- WHD_SECURITY_WPA2_TKIP_PSK = (WPA2_SECURITY | TKIP_ENABLED), /**< WPA2 PSK Security with TKIP */ -- WHD_SECURITY_WPA2_MIXED_PSK = (WPA2_SECURITY | AES_ENABLED | TKIP_ENABLED), /**< WPA2 PSK Security with AES & TKIP */ -- WHD_SECURITY_WPA2_FBT_PSK = (WPA2_SECURITY | AES_ENABLED | FBT_ENABLED), /**< WPA2 FBT PSK Security with AES & TKIP */ -- WHD_SECURITY_WPA3_SAE = (WPA3_SECURITY | AES_ENABLED), /**< WPA3 Security with AES */ -- WHD_SECURITY_WPA2_WPA_AES_PSK = (WPA2_SECURITY | WPA_SECURITY | AES_ENABLED), /**< WPA2 WPA PSK Security with AES */ -- WHD_SECURITY_WPA2_WPA_MIXED_PSK = (WPA2_SECURITY | WPA_SECURITY | AES_ENABLED | TKIP_ENABLED), /**< WPA2 WPA PSK Security with AES & TKIP */ -- -- WHD_SECURITY_WPA3_WPA2_PSK = (WPA3_SECURITY | WPA2_SECURITY | AES_ENABLED), /**< WPA3 WPA2 PSK Security with AES */ -- -- WHD_SECURITY_WPA_TKIP_ENT = (ENTERPRISE_ENABLED | WPA_SECURITY | TKIP_ENABLED), /**< WPA Enterprise Security with TKIP */ -- WHD_SECURITY_WPA_AES_ENT = (ENTERPRISE_ENABLED | WPA_SECURITY | AES_ENABLED), /**< WPA Enterprise Security with AES */ -- WHD_SECURITY_WPA_MIXED_ENT = (ENTERPRISE_ENABLED | WPA_SECURITY | AES_ENABLED | TKIP_ENABLED), /**< WPA Enterprise Security with AES & TKIP */ -- WHD_SECURITY_WPA2_TKIP_ENT = (ENTERPRISE_ENABLED | WPA2_SECURITY | TKIP_ENABLED), /**< WPA2 Enterprise Security with TKIP */ -- WHD_SECURITY_WPA2_AES_ENT = (ENTERPRISE_ENABLED | WPA2_SECURITY | AES_ENABLED), /**< WPA2 Enterprise Security with AES */ -- WHD_SECURITY_WPA2_MIXED_ENT = (ENTERPRISE_ENABLED | WPA2_SECURITY | AES_ENABLED | TKIP_ENABLED), /**< WPA2 Enterprise Security with AES & TKIP */ -- WHD_SECURITY_WPA2_FBT_ENT = (ENTERPRISE_ENABLED | WPA2_SECURITY | AES_ENABLED | FBT_ENABLED), /**< WPA2 Enterprise Security with AES & FBT */ -- -- WHD_SECURITY_IBSS_OPEN = (IBSS_ENABLED), /**< Open security on IBSS ad-hoc network */ -- WHD_SECURITY_WPS_SECURE = AES_ENABLED, /**< WPS with AES security */ -- -- WHD_SECURITY_UNKNOWN = -1, /**< May be returned by scan function if security is unknown. Do not pass this to the join function! */ -- -- WHD_SECURITY_FORCE_32_BIT = 0x7fffffff /**< Exists only to force whd_security_t type to 32 bits */ --} whd_security_t; -- --/** -- * Enumeration of methods of scanning -- */ --typedef enum --{ -- WHD_SCAN_TYPE_ACTIVE = 0x00, /**< Actively scan a network by sending 802.11 probe(s) */ -- WHD_SCAN_TYPE_PASSIVE = 0x01, /**< Passively scan a network by listening for beacons from APs */ -- WHD_SCAN_TYPE_PNO = 0x02, /**< Use preferred network offload to detect an AP */ -- WHD_SCAN_TYPE_PROHIBITED_CHANNELS = 0x04, /**< Permit (passively) scanning a channel that isn't valid for the current country */ -- WHD_SCAN_TYPE_NO_BSSID_FILTER = 0x08 /**< Return a scan record for each beacon or probe response RX'ed */ --} whd_scan_type_t; -- --/** -- * Enumeration of network types -- */ --typedef enum --{ -- WHD_BSS_TYPE_INFRASTRUCTURE = 0, /**< Denotes infrastructure network */ -- WHD_BSS_TYPE_ADHOC = 1, /**< Denotes an 802.11 ad-hoc IBSS network */ -- WHD_BSS_TYPE_ANY = 2, /**< Denotes either infrastructure or ad-hoc network */ -- WHD_BSS_TYPE_MESH = 3, /**< Denotes 802.11 mesh network */ -- -- WHD_BSS_TYPE_UNKNOWN = -1 /**< May be returned by scan function if BSS type is unknown. Do not pass this to the Join function */ --} whd_bss_type_t; -- --/** -- * Enumeration of 802.11 radio bands -- */ --typedef enum --{ -- WHD_802_11_BAND_5GHZ = 0, /**< Denotes 5GHz radio band */ -- WHD_802_11_BAND_2_4GHZ = 1 /**< Denotes 2.4GHz radio band */ --} whd_802_11_band_t; -- --/** -- * Enumeration of custom IE(Information Element) management actions -- */ --typedef enum --{ -- WHD_ADD_CUSTOM_IE, /**< Add a custom IE(Information Element) */ -- WHD_REMOVE_CUSTOM_IE /**< Remove a custom IE(Information Element) */ --} whd_custom_ie_action_t; -- -- --/** -- * Enumeration of listen interval time unit types -- */ --typedef enum --{ -- WHD_LISTEN_INTERVAL_TIME_UNIT_BEACON, /**< Time units specified in beacon periods */ -- WHD_LISTEN_INTERVAL_TIME_UNIT_DTIM /**< Time units specified in DTIM periods */ --} whd_listen_interval_time_unit_t; -- --/** -- * Structure for storing scan status -- */ --typedef enum --{ -- WHD_SCAN_INCOMPLETE, /**< Denotes that scan is not finished */ -- WHD_SCAN_COMPLETED_SUCCESSFULLY, /**< Successful completion of scan */ -- WHD_SCAN_ABORTED, /**< Scan is aborted */ --} whd_scan_status_t; -- --/** -- * Structure for storing radio band list information -- */ --typedef struct --{ -- int32_t number_of_bands; /**< Number of bands supported, currently 1 or 2 */ -- int32_t current_band; /**< Current band type: WLC_BAND_2G or WLC_BAND_5G */ -- int32_t other_band; /**< If value of number_of_bands parameter is 2, then this member specifies the 2nd band */ --} whd_band_list_t; -- --/** -- * Enumeration of scan result flags -- */ --typedef enum --{ -- WHD_SCAN_RESULT_FLAG_RSSI_OFF_CHANNEL = 0x01, /**< RSSI came from an off channel DSSS (1 or 1 Mb) Rx */ -- WHD_SCAN_RESULT_FLAG_BEACON = 0x02 /**< Beacon (vs probe response) */ --} whd_scan_result_flag_t; -- --/** -- * Protected Management Frame Capability -- */ --enum --{ -- WL_MFP_NONE = 0, /**< Disables the client support for MFP. */ -- WL_MFP_CAPABLE, /**< Allows both MFP-capable and clients that do not support MFP to join the network. */ -- WL_MFP_REQUIRED /**< Clients are allowed to associate only if MFP is negotiated. */ --}; -- -- --/** -- * Enumeration of ioctl get -- */ --typedef enum --{ -- WHD_IOCTL_GET_RATE = 12, -- WHD_IOCTL_GET_COUNTRY = 83, -- WHD_IOCTL_GET_CLK = 160, -- WHD_IOCTL_GET_WSEC = 133, -- WHD_IOCTL_GET_AUTH = 21, -- WHD_IOCTL_GET_WPA_AUTH = 164, -- WHD_IOCTL_GET_PM = 85, -- WHD_IOCTL_GET_BSSID = 23, -- WHD_IOCTL_GET_ASSOCLIST = 159, -- WHD_IOCTL_GET_BSS_INFO = 136, -- WHD_IOCTL_GET_CHANNEL = 29 -- --} whd_usr_ioctl_get_list_t; -- --/** -- * Enumeration of ioctl set -- */ --typedef enum --{ -- WHD_IOCTL_SET_CHANNEL = 30, -- WHD_IOCTL_SET_WSEC_PMK = 268, -- WHD_IOCTL_SET_KEY = 45, -- WHD_IOCTL_SET_WPA_AUTH = 165, -- WHD_IOCTL_SCB_DEAUTHENTICATE_FOR_REASON = 201, -- WHD_IOCTL_SET_PM = 86, -- WHD_IOCTL_SET_SSID = 26, -- WHD_IOCTL_SET_BCNPRD = 76, -- WHD_IOCTL_SET_DTIMPRD = 78, -- WHD_IOCTL_SET_WSEC = 134, -- WHD_IOCTL_SET_INFRA = 20, -- WHD_IOCTL_SET_AUTH = 22 -- --} whd_usr_ioctl_set_list_t; -- --/** -- * IOVAR set list -- */ --typedef enum --{ -- WHD_IOVAR_SET_MFP = 0, -- WHD_IOVAR_SET_MPC, -- WHD_IOVAR_SET_AMPDU_BA_WINDOW_SIZE, -- WHD_IOVAR_SET_AMPDU_MPDU, -- WHD_IOVAR_SET_LISTEN_INTERVAL_BEACON, -- WHD_IOVAR_SET_LISTEN_INTERVAL_DTIM, -- WHD_IOVAR_SET_LISTEN_INTERVAL_ASSOC, --} whd_usr_iovar_set_list_t; -- --/** -- * IOVAR get list -- */ --typedef enum --{ -- WHD_IOVAR_GET_MFP = 0, -- WHD_IOVAR_GET_MPC, -- WHD_IOVAR_GET_AMPDU_BA_WINDOW_SIZE, -- WHD_IOVAR_GET_AMPDU_MPDU, -- WHD_IOVAR_GET_LISTEN_INTERVAL, /**< Get Listen Interval value */ -- WHD_IOVAR_GET_MAC_ADDRESS, /**< Get mac address */ --} whd_usr_iovar_get_list_t; -- --/****************************************************** --* Type Definitions --******************************************************/ --/** @cond */ --typedef struct whd_event_msg whd_event_header_t; --/** @endcond */ -- --/** -- * Structure for storing a MAC address (Wi-Fi Media Access Control address). -- */ --typedef struct --{ -- uint8_t octet[6]; /**< Unique 6-byte MAC address */ --} whd_mac_t; -- --/** -- * Structure for storing a Service Set Identifier (i.e. Name of Access Point) -- */ --typedef struct --{ -- uint8_t length; /**< SSID length */ -- uint8_t value[SSID_NAME_SIZE]; /**< SSID name (AP name) */ --} whd_ssid_t; -- --/**< -- The received packet formats are different when EXT_STA is enabled. In case -- of EXT_STA the received packets are in 802.11 format, where as in other -- case the received packets have Ethernet II format -- -- 1. 802.11 frames -- ---------------------------------------------------------------------------- -- | FC (2) | DID (2) |A1 (6) |A2 (6)|A3 (6) |SID (2) |SNAP (6) |type (2) |data (46 - 1500) | -- ---------------------------------------------------------------------------- -- -- 2. Ethernet II frames -- ------------------------------------------------- -- | DA (6) | SA (6) | type (2) | data (46 - 1500) | -- ------------------------------------------------- -- */ -- -- --/** -- * Macro for creating country codes according to endianness -- * @cond !ADDTHIS -- */ --#ifdef IL_BIGENDIAN --#define MK_CNTRY(a, b, \ -- rev) ( ( (unsigned char)(b) ) + ( ( (unsigned char)(a) ) << 8 ) + \ -- ( ( (unsigned short)(rev) ) << 16 ) ) --#else /* ifdef IL_BIGENDIAN */ --#define MK_CNTRY(a, b, \ -- rev) ( ( (unsigned char)(a) ) + ( ( (unsigned char)(b) ) << 8 ) + \ -- ( ( (unsigned short)(rev) ) << 16 ) ) --#endif /* ifdef IL_BIGENDIAN */ --/** @endcond */ -- --/** -- * Enumerated list of country codes -- */ --typedef enum --{ -- WHD_COUNTRY_AFGHANISTAN = MK_CNTRY('A', 'F', 0), /**< AF Afghanistan */ -- WHD_COUNTRY_ALBANIA = MK_CNTRY('A', 'L', 0), /**< AL Albania */ -- WHD_COUNTRY_ALGERIA = MK_CNTRY('D', 'Z', 0), /**< DZ Algeria */ -- WHD_COUNTRY_AMERICAN_SAMOA = MK_CNTRY('A', 'S', 0), /**< AS American_Samoa */ -- WHD_COUNTRY_ANGOLA = MK_CNTRY('A', 'O', 0), /**< AO Angola */ -- WHD_COUNTRY_ANGUILLA = MK_CNTRY('A', 'I', 0), /**< AI Anguilla */ -- WHD_COUNTRY_ANTIGUA_AND_BARBUDA = MK_CNTRY('A', 'G', 0), /**< AG Antigua_and_Barbuda */ -- WHD_COUNTRY_ARGENTINA = MK_CNTRY('A', 'R', 0), /**< AR Argentina */ -- WHD_COUNTRY_ARMENIA = MK_CNTRY('A', 'M', 0), /**< AM Armenia */ -- WHD_COUNTRY_ARUBA = MK_CNTRY('A', 'W', 0), /**< AW Aruba */ -- WHD_COUNTRY_AUSTRALIA = MK_CNTRY('A', 'U', 0), /**< AU Australia */ -- WHD_COUNTRY_AUSTRIA = MK_CNTRY('A', 'T', 0), /**< AT Austria */ -- WHD_COUNTRY_AZERBAIJAN = MK_CNTRY('A', 'Z', 0), /**< AZ Azerbaijan */ -- WHD_COUNTRY_BAHAMAS = MK_CNTRY('B', 'S', 0), /**< BS Bahamas */ -- WHD_COUNTRY_BAHRAIN = MK_CNTRY('B', 'H', 0), /**< BH Bahrain */ -- WHD_COUNTRY_BAKER_ISLAND = MK_CNTRY('0', 'B', 0), /**< 0B Baker_Island */ -- WHD_COUNTRY_BANGLADESH = MK_CNTRY('B', 'D', 0), /**< BD Bangladesh */ -- WHD_COUNTRY_BARBADOS = MK_CNTRY('B', 'B', 0), /**< BB Barbados */ -- WHD_COUNTRY_BELARUS = MK_CNTRY('B', 'Y', 0), /**< BY Belarus */ -- WHD_COUNTRY_BELGIUM = MK_CNTRY('B', 'E', 0), /**< BE Belgium */ -- WHD_COUNTRY_BELIZE = MK_CNTRY('B', 'Z', 0), /**< BZ Belize */ -- WHD_COUNTRY_BENIN = MK_CNTRY('B', 'J', 0), /**< BJ Benin */ -- WHD_COUNTRY_BERMUDA = MK_CNTRY('B', 'M', 0), /**< BM Bermuda */ -- WHD_COUNTRY_BHUTAN = MK_CNTRY('B', 'T', 0), /**< BT Bhutan */ -- WHD_COUNTRY_BOLIVIA = MK_CNTRY('B', 'O', 0), /**< BO Bolivia */ -- WHD_COUNTRY_BOSNIA_AND_HERZEGOVINA = MK_CNTRY('B', 'A', 0), /**< BA Bosnia_and_Herzegovina */ -- WHD_COUNTRY_BOTSWANA = MK_CNTRY('B', 'W', 0), /**< BW Botswana */ -- WHD_COUNTRY_BRAZIL = MK_CNTRY('B', 'R', 0), /**< BR Brazil */ -- WHD_COUNTRY_BRITISH_INDIAN_OCEAN_TERRITORY = MK_CNTRY('I', 'O', 0), /**< IO British_Indian_Ocean_Territory */ -- WHD_COUNTRY_BRUNEI_DARUSSALAM = MK_CNTRY('B', 'N', 0), /**< BN Brunei_Darussalam */ -- WHD_COUNTRY_BULGARIA = MK_CNTRY('B', 'G', 0), /**< BG Bulgaria */ -- WHD_COUNTRY_BURKINA_FASO = MK_CNTRY('B', 'F', 0), /**< BF Burkina_Faso */ -- WHD_COUNTRY_BURUNDI = MK_CNTRY('B', 'I', 0), /**< BI Burundi */ -- WHD_COUNTRY_CAMBODIA = MK_CNTRY('K', 'H', 0), /**< KH Cambodia */ -- WHD_COUNTRY_CAMEROON = MK_CNTRY('C', 'M', 0), /**< CM Cameroon */ -- WHD_COUNTRY_CANADA = MK_CNTRY('C', 'A', 0), /**< CA Canada */ -- WHD_COUNTRY_CANADA_REV950 = MK_CNTRY('C', 'A', 950), /**< CA Canada Revision 950 */ -- WHD_COUNTRY_CAPE_VERDE = MK_CNTRY('C', 'V', 0), /**< CV Cape_Verde */ -- WHD_COUNTRY_CAYMAN_ISLANDS = MK_CNTRY('K', 'Y', 0), /**< KY Cayman_Islands */ -- WHD_COUNTRY_CENTRAL_AFRICAN_REPUBLIC = MK_CNTRY('C', 'F', 0), /**< CF Central_African_Republic */ -- WHD_COUNTRY_CHAD = MK_CNTRY('T', 'D', 0), /**< TD Chad */ -- WHD_COUNTRY_CHILE = MK_CNTRY('C', 'L', 0), /**< CL Chile */ -- WHD_COUNTRY_CHINA = MK_CNTRY('C', 'N', 0), /**< CN China */ -- WHD_COUNTRY_CHRISTMAS_ISLAND = MK_CNTRY('C', 'X', 0), /**< CX Christmas_Island */ -- WHD_COUNTRY_COLOMBIA = MK_CNTRY('C', 'O', 0), /**< CO Colombia */ -- WHD_COUNTRY_COMOROS = MK_CNTRY('K', 'M', 0), /**< KM Comoros */ -- WHD_COUNTRY_CONGO = MK_CNTRY('C', 'G', 0), /**< CG Congo */ -- WHD_COUNTRY_CONGO_THE_DEMOCRATIC_REPUBLIC_OF_THE = MK_CNTRY('C', 'D', 0), /**< CD Congo,_The_Democratic_Republic_Of_The */ -- WHD_COUNTRY_COSTA_RICA = MK_CNTRY('C', 'R', 0), /**< CR Costa_Rica */ -- WHD_COUNTRY_COTE_DIVOIRE = MK_CNTRY('C', 'I', 0), /**< CI Cote_D'ivoire */ -- WHD_COUNTRY_CROATIA = MK_CNTRY('H', 'R', 0), /**< HR Croatia */ -- WHD_COUNTRY_CUBA = MK_CNTRY('C', 'U', 0), /**< CU Cuba */ -- WHD_COUNTRY_CYPRUS = MK_CNTRY('C', 'Y', 0), /**< CY Cyprus */ -- WHD_COUNTRY_CZECH_REPUBLIC = MK_CNTRY('C', 'Z', 0), /**< CZ Czech_Republic */ -- WHD_COUNTRY_DENMARK = MK_CNTRY('D', 'K', 0), /**< DK Denmark */ -- WHD_COUNTRY_DJIBOUTI = MK_CNTRY('D', 'J', 0), /**< DJ Djibouti */ -- WHD_COUNTRY_DOMINICA = MK_CNTRY('D', 'M', 0), /**< DM Dominica */ -- WHD_COUNTRY_DOMINICAN_REPUBLIC = MK_CNTRY('D', 'O', 0), /**< DO Dominican_Republic */ -- WHD_COUNTRY_DOWN_UNDER = MK_CNTRY('A', 'U', 0), /**< AU G'Day mate! */ -- WHD_COUNTRY_ECUADOR = MK_CNTRY('E', 'C', 0), /**< EC Ecuador */ -- WHD_COUNTRY_EGYPT = MK_CNTRY('E', 'G', 0), /**< EG Egypt */ -- WHD_COUNTRY_EL_SALVADOR = MK_CNTRY('S', 'V', 0), /**< SV El_Salvador */ -- WHD_COUNTRY_EQUATORIAL_GUINEA = MK_CNTRY('G', 'Q', 0), /**< GQ Equatorial_Guinea */ -- WHD_COUNTRY_ERITREA = MK_CNTRY('E', 'R', 0), /**< ER Eritrea */ -- WHD_COUNTRY_ESTONIA = MK_CNTRY('E', 'E', 0), /**< EE Estonia */ -- WHD_COUNTRY_ETHIOPIA = MK_CNTRY('E', 'T', 0), /**< ET Ethiopia */ -- WHD_COUNTRY_FALKLAND_ISLANDS_MALVINAS = MK_CNTRY('F', 'K', 0), /**< FK Falkland_Islands_(Malvinas) */ -- WHD_COUNTRY_FAROE_ISLANDS = MK_CNTRY('F', 'O', 0), /**< FO Faroe_Islands */ -- WHD_COUNTRY_FIJI = MK_CNTRY('F', 'J', 0), /**< FJ Fiji */ -- WHD_COUNTRY_FINLAND = MK_CNTRY('F', 'I', 0), /**< FI Finland */ -- WHD_COUNTRY_FRANCE = MK_CNTRY('F', 'R', 0), /**< FR France */ -- WHD_COUNTRY_FRENCH_GUINA = MK_CNTRY('G', 'F', 0), /**< GF French_Guina */ -- WHD_COUNTRY_FRENCH_POLYNESIA = MK_CNTRY('P', 'F', 0), /**< PF French_Polynesia */ -- WHD_COUNTRY_FRENCH_SOUTHERN_TERRITORIES = MK_CNTRY('T', 'F', 0), /**< TF French_Southern_Territories */ -- WHD_COUNTRY_GABON = MK_CNTRY('G', 'A', 0), /**< GA Gabon */ -- WHD_COUNTRY_GAMBIA = MK_CNTRY('G', 'M', 0), /**< GM Gambia */ -- WHD_COUNTRY_GEORGIA = MK_CNTRY('G', 'E', 0), /**< GE Georgia */ -- WHD_COUNTRY_GERMANY = MK_CNTRY('D', 'E', 0), /**< DE Germany */ -- WHD_COUNTRY_EUROPEAN_WIDE_REV895 = MK_CNTRY('E', '0', 895), /**< E0 European_Wide Revision 895 */ -- WHD_COUNTRY_GHANA = MK_CNTRY('G', 'H', 0), /**< GH Ghana */ -- WHD_COUNTRY_GIBRALTAR = MK_CNTRY('G', 'I', 0), /**< GI Gibraltar */ -- WHD_COUNTRY_GREECE = MK_CNTRY('G', 'R', 0), /**< GR Greece */ -- WHD_COUNTRY_GRENADA = MK_CNTRY('G', 'D', 0), /**< GD Grenada */ -- WHD_COUNTRY_GUADELOUPE = MK_CNTRY('G', 'P', 0), /**< GP Guadeloupe */ -- WHD_COUNTRY_GUAM = MK_CNTRY('G', 'U', 0), /**< GU Guam */ -- WHD_COUNTRY_GUATEMALA = MK_CNTRY('G', 'T', 0), /**< GT Guatemala */ -- WHD_COUNTRY_GUERNSEY = MK_CNTRY('G', 'G', 0), /**< GG Guernsey */ -- WHD_COUNTRY_GUINEA = MK_CNTRY('G', 'N', 0), /**< GN Guinea */ -- WHD_COUNTRY_GUINEA_BISSAU = MK_CNTRY('G', 'W', 0), /**< GW Guinea-bissau */ -- WHD_COUNTRY_GUYANA = MK_CNTRY('G', 'Y', 0), /**< GY Guyana */ -- WHD_COUNTRY_HAITI = MK_CNTRY('H', 'T', 0), /**< HT Haiti */ -- WHD_COUNTRY_HOLY_SEE_VATICAN_CITY_STATE = MK_CNTRY('V', 'A', 0), /**< VA Holy_See_(Vatican_City_State) */ -- WHD_COUNTRY_HONDURAS = MK_CNTRY('H', 'N', 0), /**< HN Honduras */ -- WHD_COUNTRY_HONG_KONG = MK_CNTRY('H', 'K', 0), /**< HK Hong_Kong */ -- WHD_COUNTRY_HUNGARY = MK_CNTRY('H', 'U', 0), /**< HU Hungary */ -- WHD_COUNTRY_ICELAND = MK_CNTRY('I', 'S', 0), /**< IS Iceland */ -- WHD_COUNTRY_INDIA = MK_CNTRY('I', 'N', 0), /**< IN India */ -- WHD_COUNTRY_INDONESIA = MK_CNTRY('I', 'D', 0), /**< ID Indonesia */ -- WHD_COUNTRY_IRAN_ISLAMIC_REPUBLIC_OF = MK_CNTRY('I', 'R', 0), /**< IR Iran,_Islamic_Republic_Of */ -- WHD_COUNTRY_IRAQ = MK_CNTRY('I', 'Q', 0), /**< IQ Iraq */ -- WHD_COUNTRY_IRELAND = MK_CNTRY('I', 'E', 0), /**< IE Ireland */ -- WHD_COUNTRY_ISRAEL = MK_CNTRY('I', 'L', 0), /**< IL Israel */ -- WHD_COUNTRY_ITALY = MK_CNTRY('I', 'T', 0), /**< IT Italy */ -- WHD_COUNTRY_JAMAICA = MK_CNTRY('J', 'M', 0), /**< JM Jamaica */ -- WHD_COUNTRY_JAPAN = MK_CNTRY('J', 'P', 0), /**< JP Japan */ -- WHD_COUNTRY_JERSEY = MK_CNTRY('J', 'E', 0), /**< JE Jersey */ -- WHD_COUNTRY_JORDAN = MK_CNTRY('J', 'O', 0), /**< JO Jordan */ -- WHD_COUNTRY_KAZAKHSTAN = MK_CNTRY('K', 'Z', 0), /**< KZ Kazakhstan */ -- WHD_COUNTRY_KENYA = MK_CNTRY('K', 'E', 0), /**< KE Kenya */ -- WHD_COUNTRY_KIRIBATI = MK_CNTRY('K', 'I', 0), /**< KI Kiribati */ -- WHD_COUNTRY_KOREA_REPUBLIC_OF = MK_CNTRY('K', 'R', 1), /**< KR Korea,_Republic_Of */ -- WHD_COUNTRY_KOSOVO = MK_CNTRY('0', 'A', 0), /**< 0A Kosovo */ -- WHD_COUNTRY_KUWAIT = MK_CNTRY('K', 'W', 0), /**< KW Kuwait */ -- WHD_COUNTRY_KYRGYZSTAN = MK_CNTRY('K', 'G', 0), /**< KG Kyrgyzstan */ -- WHD_COUNTRY_LAO_PEOPLES_DEMOCRATIC_REPUBIC = MK_CNTRY('L', 'A', 0), /**< LA Lao_People's_Democratic_Repubic */ -- WHD_COUNTRY_LATVIA = MK_CNTRY('L', 'V', 0), /**< LV Latvia */ -- WHD_COUNTRY_LEBANON = MK_CNTRY('L', 'B', 0), /**< LB Lebanon */ -- WHD_COUNTRY_LESOTHO = MK_CNTRY('L', 'S', 0), /**< LS Lesotho */ -- WHD_COUNTRY_LIBERIA = MK_CNTRY('L', 'R', 0), /**< LR Liberia */ -- WHD_COUNTRY_LIBYAN_ARAB_JAMAHIRIYA = MK_CNTRY('L', 'Y', 0), /**< LY Libyan_Arab_Jamahiriya */ -- WHD_COUNTRY_LIECHTENSTEIN = MK_CNTRY('L', 'I', 0), /**< LI Liechtenstein */ -- WHD_COUNTRY_LITHUANIA = MK_CNTRY('L', 'T', 0), /**< LT Lithuania */ -- WHD_COUNTRY_LUXEMBOURG = MK_CNTRY('L', 'U', 0), /**< LU Luxembourg */ -- WHD_COUNTRY_MACAO = MK_CNTRY('M', 'O', 0), /**< MO Macao */ -- WHD_COUNTRY_MACEDONIA_FORMER_YUGOSLAV_REPUBLIC_OF = MK_CNTRY('M', 'K', 0), /**< MK Macedonia,_Former_Yugoslav_Republic_Of */ -- WHD_COUNTRY_MADAGASCAR = MK_CNTRY('M', 'G', 0), /**< MG Madagascar */ -- WHD_COUNTRY_MALAWI = MK_CNTRY('M', 'W', 0), /**< MW Malawi */ -- WHD_COUNTRY_MALAYSIA = MK_CNTRY('M', 'Y', 0), /**< MY Malaysia */ -- WHD_COUNTRY_MALDIVES = MK_CNTRY('M', 'V', 0), /**< MV Maldives */ -- WHD_COUNTRY_MALI = MK_CNTRY('M', 'L', 0), /**< ML Mali */ -- WHD_COUNTRY_MALTA = MK_CNTRY('M', 'T', 0), /**< MT Malta */ -- WHD_COUNTRY_MAN_ISLE_OF = MK_CNTRY('I', 'M', 0), /**< IM Man,_Isle_Of */ -- WHD_COUNTRY_MARTINIQUE = MK_CNTRY('M', 'Q', 0), /**< MQ Martinique */ -- WHD_COUNTRY_MAURITANIA = MK_CNTRY('M', 'R', 0), /**< MR Mauritania */ -- WHD_COUNTRY_MAURITIUS = MK_CNTRY('M', 'U', 0), /**< MU Mauritius */ -- WHD_COUNTRY_MAYOTTE = MK_CNTRY('Y', 'T', 0), /**< YT Mayotte */ -- WHD_COUNTRY_MEXICO = MK_CNTRY('M', 'X', 0), /**< MX Mexico */ -- WHD_COUNTRY_MICRONESIA_FEDERATED_STATES_OF = MK_CNTRY('F', 'M', 0), /**< FM Micronesia,_Federated_States_Of */ -- WHD_COUNTRY_MOLDOVA_REPUBLIC_OF = MK_CNTRY('M', 'D', 0), /**< MD Moldova,_Republic_Of */ -- WHD_COUNTRY_MONACO = MK_CNTRY('M', 'C', 0), /**< MC Monaco */ -- WHD_COUNTRY_MONGOLIA = MK_CNTRY('M', 'N', 0), /**< MN Mongolia */ -- WHD_COUNTRY_MONTENEGRO = MK_CNTRY('M', 'E', 0), /**< ME Montenegro */ -- WHD_COUNTRY_MONTSERRAT = MK_CNTRY('M', 'S', 0), /**< MS Montserrat */ -- WHD_COUNTRY_MOROCCO = MK_CNTRY('M', 'A', 0), /**< MA Morocco */ -- WHD_COUNTRY_MOZAMBIQUE = MK_CNTRY('M', 'Z', 0), /**< MZ Mozambique */ -- WHD_COUNTRY_MYANMAR = MK_CNTRY('M', 'M', 0), /**< MM Myanmar */ -- WHD_COUNTRY_NAMIBIA = MK_CNTRY('N', 'A', 0), /**< NA Namibia */ -- WHD_COUNTRY_NAURU = MK_CNTRY('N', 'R', 0), /**< NR Nauru */ -- WHD_COUNTRY_NEPAL = MK_CNTRY('N', 'P', 0), /**< NP Nepal */ -- WHD_COUNTRY_NETHERLANDS = MK_CNTRY('N', 'L', 0), /**< NL Netherlands */ -- WHD_COUNTRY_NETHERLANDS_ANTILLES = MK_CNTRY('A', 'N', 0), /**< AN Netherlands_Antilles */ -- WHD_COUNTRY_NEW_CALEDONIA = MK_CNTRY('N', 'C', 0), /**< NC New_Caledonia */ -- WHD_COUNTRY_NEW_ZEALAND = MK_CNTRY('N', 'Z', 0), /**< NZ New_Zealand */ -- WHD_COUNTRY_NICARAGUA = MK_CNTRY('N', 'I', 0), /**< NI Nicaragua */ -- WHD_COUNTRY_NIGER = MK_CNTRY('N', 'E', 0), /**< NE Niger */ -- WHD_COUNTRY_NIGERIA = MK_CNTRY('N', 'G', 0), /**< NG Nigeria */ -- WHD_COUNTRY_NORFOLK_ISLAND = MK_CNTRY('N', 'F', 0), /**< NF Norfolk_Island */ -- WHD_COUNTRY_NORTHERN_MARIANA_ISLANDS = MK_CNTRY('M', 'P', 0), /**< MP Northern_Mariana_Islands */ -- WHD_COUNTRY_NORWAY = MK_CNTRY('N', 'O', 0), /**< NO Norway */ -- WHD_COUNTRY_OMAN = MK_CNTRY('O', 'M', 0), /**< OM Oman */ -- WHD_COUNTRY_PAKISTAN = MK_CNTRY('P', 'K', 0), /**< PK Pakistan */ -- WHD_COUNTRY_PALAU = MK_CNTRY('P', 'W', 0), /**< PW Palau */ -- WHD_COUNTRY_PANAMA = MK_CNTRY('P', 'A', 0), /**< PA Panama */ -- WHD_COUNTRY_PAPUA_NEW_GUINEA = MK_CNTRY('P', 'G', 0), /**< PG Papua_New_Guinea */ -- WHD_COUNTRY_PARAGUAY = MK_CNTRY('P', 'Y', 0), /**< PY Paraguay */ -- WHD_COUNTRY_PERU = MK_CNTRY('P', 'E', 0), /**< PE Peru */ -- WHD_COUNTRY_PHILIPPINES = MK_CNTRY('P', 'H', 0), /**< PH Philippines */ -- WHD_COUNTRY_POLAND = MK_CNTRY('P', 'L', 0), /**< PL Poland */ -- WHD_COUNTRY_PORTUGAL = MK_CNTRY('P', 'T', 0), /**< PT Portugal */ -- WHD_COUNTRY_PUETO_RICO = MK_CNTRY('P', 'R', 0), /**< PR Pueto_Rico */ -- WHD_COUNTRY_QATAR = MK_CNTRY('Q', 'A', 0), /**< QA Qatar */ -- WHD_COUNTRY_REUNION = MK_CNTRY('R', 'E', 0), /**< RE Reunion */ -- WHD_COUNTRY_ROMANIA = MK_CNTRY('R', 'O', 0), /**< RO Romania */ -- WHD_COUNTRY_RUSSIAN_FEDERATION = MK_CNTRY('R', 'U', 0), /**< RU Russian_Federation */ -- WHD_COUNTRY_RWANDA = MK_CNTRY('R', 'W', 0), /**< RW Rwanda */ -- WHD_COUNTRY_SAINT_KITTS_AND_NEVIS = MK_CNTRY('K', 'N', 0), /**< KN Saint_Kitts_and_Nevis */ -- WHD_COUNTRY_SAINT_LUCIA = MK_CNTRY('L', 'C', 0), /**< LC Saint_Lucia */ -- WHD_COUNTRY_SAINT_PIERRE_AND_MIQUELON = MK_CNTRY('P', 'M', 0), /**< PM Saint_Pierre_and_Miquelon */ -- WHD_COUNTRY_SAINT_VINCENT_AND_THE_GRENADINES = MK_CNTRY('V', 'C', 0), /**< VC Saint_Vincent_and_The_Grenadines */ -- WHD_COUNTRY_SAMOA = MK_CNTRY('W', 'S', 0), /**< WS Samoa */ -- WHD_COUNTRY_SANIT_MARTIN_SINT_MARTEEN = MK_CNTRY('M', 'F', 0), /**< MF Sanit_Martin_/_Sint_Marteen */ -- WHD_COUNTRY_SAO_TOME_AND_PRINCIPE = MK_CNTRY('S', 'T', 0), /**< ST Sao_Tome_and_Principe */ -- WHD_COUNTRY_SAUDI_ARABIA = MK_CNTRY('S', 'A', 0), /**< SA Saudi_Arabia */ -- WHD_COUNTRY_SENEGAL = MK_CNTRY('S', 'N', 0), /**< SN Senegal */ -- WHD_COUNTRY_SERBIA = MK_CNTRY('R', 'S', 0), /**< RS Serbia */ -- WHD_COUNTRY_SEYCHELLES = MK_CNTRY('S', 'C', 0), /**< SC Seychelles */ -- WHD_COUNTRY_SIERRA_LEONE = MK_CNTRY('S', 'L', 0), /**< SL Sierra_Leone */ -- WHD_COUNTRY_SINGAPORE = MK_CNTRY('S', 'G', 0), /**< SG Singapore */ -- WHD_COUNTRY_SLOVAKIA = MK_CNTRY('S', 'K', 0), /**< SK Slovakia */ -- WHD_COUNTRY_SLOVENIA = MK_CNTRY('S', 'I', 0), /**< SI Slovenia */ -- WHD_COUNTRY_SOLOMON_ISLANDS = MK_CNTRY('S', 'B', 0), /**< SB Solomon_Islands */ -- WHD_COUNTRY_SOMALIA = MK_CNTRY('S', 'O', 0), /**< SO Somalia */ -- WHD_COUNTRY_SOUTH_AFRICA = MK_CNTRY('Z', 'A', 0), /**< ZA South_Africa */ -- WHD_COUNTRY_SPAIN = MK_CNTRY('E', 'S', 0), /**< ES Spain */ -- WHD_COUNTRY_SRI_LANKA = MK_CNTRY('L', 'K', 0), /**< LK Sri_Lanka */ -- WHD_COUNTRY_SURINAME = MK_CNTRY('S', 'R', 0), /**< SR Suriname */ -- WHD_COUNTRY_SWAZILAND = MK_CNTRY('S', 'Z', 0), /**< SZ Swaziland */ -- WHD_COUNTRY_SWEDEN = MK_CNTRY('S', 'E', 0), /**< SE Sweden */ -- WHD_COUNTRY_SWITZERLAND = MK_CNTRY('C', 'H', 0), /**< CH Switzerland */ -- WHD_COUNTRY_SYRIAN_ARAB_REPUBLIC = MK_CNTRY('S', 'Y', 0), /**< SY Syrian_Arab_Republic */ -- WHD_COUNTRY_TAIWAN_PROVINCE_OF_CHINA = MK_CNTRY('T', 'W', 0), /**< TW Taiwan,_Province_Of_China */ -- WHD_COUNTRY_TAJIKISTAN = MK_CNTRY('T', 'J', 0), /**< TJ Tajikistan */ -- WHD_COUNTRY_TANZANIA_UNITED_REPUBLIC_OF = MK_CNTRY('T', 'Z', 0), /**< TZ Tanzania,_United_Republic_Of */ -- WHD_COUNTRY_THAILAND = MK_CNTRY('T', 'H', 0), /**< TH Thailand */ -- WHD_COUNTRY_TOGO = MK_CNTRY('T', 'G', 0), /**< TG Togo */ -- WHD_COUNTRY_TONGA = MK_CNTRY('T', 'O', 0), /**< TO Tonga */ -- WHD_COUNTRY_TRINIDAD_AND_TOBAGO = MK_CNTRY('T', 'T', 0), /**< TT Trinidad_and_Tobago */ -- WHD_COUNTRY_TUNISIA = MK_CNTRY('T', 'N', 0), /**< TN Tunisia */ -- WHD_COUNTRY_TURKEY = MK_CNTRY('T', 'R', 0), /**< TR Turkey */ -- WHD_COUNTRY_TURKMENISTAN = MK_CNTRY('T', 'M', 0), /**< TM Turkmenistan */ -- WHD_COUNTRY_TURKS_AND_CAICOS_ISLANDS = MK_CNTRY('T', 'C', 0), /**< TC Turks_and_Caicos_Islands */ -- WHD_COUNTRY_TUVALU = MK_CNTRY('T', 'V', 0), /**< TV Tuvalu */ -- WHD_COUNTRY_UGANDA = MK_CNTRY('U', 'G', 0), /**< UG Uganda */ -- WHD_COUNTRY_UKRAINE = MK_CNTRY('U', 'A', 0), /**< UA Ukraine */ -- WHD_COUNTRY_UNITED_ARAB_EMIRATES = MK_CNTRY('A', 'E', 0), /**< AE United_Arab_Emirates */ -- WHD_COUNTRY_UNITED_KINGDOM = MK_CNTRY('G', 'B', 0), /**< GB United_Kingdom */ -- WHD_COUNTRY_UNITED_STATES = MK_CNTRY('U', 'S', 0), /**< US United_States */ -- WHD_COUNTRY_UNITED_STATES_REV4 = MK_CNTRY('U', 'S', 4), /**< US United_States Revision 4 */ -- WHD_COUNTRY_UNITED_STATES_REV931 = MK_CNTRY('Q', '1', 931), /**< Q1 United_States Revision 931 */ -- WHD_COUNTRY_UNITED_STATES_NO_DFS = MK_CNTRY('Q', '2', 0), /**< Q2 United_States_(No_DFS) */ -- WHD_COUNTRY_UNITED_STATES_MINOR_OUTLYING_ISLANDS = MK_CNTRY('U', 'M', 0), /**< UM United_States_Minor_Outlying_Islands */ -- WHD_COUNTRY_URUGUAY = MK_CNTRY('U', 'Y', 0), /**< UY Uruguay */ -- WHD_COUNTRY_UZBEKISTAN = MK_CNTRY('U', 'Z', 0), /**< UZ Uzbekistan */ -- WHD_COUNTRY_VANUATU = MK_CNTRY('V', 'U', 0), /**< VU Vanuatu */ -- WHD_COUNTRY_VENEZUELA = MK_CNTRY('V', 'E', 0), /**< VE Venezuela */ -- WHD_COUNTRY_VIET_NAM = MK_CNTRY('V', 'N', 0), /**< VN Viet_Nam */ -- WHD_COUNTRY_VIRGIN_ISLANDS_BRITISH = MK_CNTRY('V', 'G', 0), /**< VG Virgin_Islands,_British */ -- WHD_COUNTRY_VIRGIN_ISLANDS_US = MK_CNTRY('V', 'I', 0), /**< VI Virgin_Islands,_U.S. */ -- WHD_COUNTRY_WALLIS_AND_FUTUNA = MK_CNTRY('W', 'F', 0), /**< WF Wallis_and_Futuna */ -- WHD_COUNTRY_WEST_BANK = MK_CNTRY('0', 'C', 0), /**< 0C West_Bank */ -- WHD_COUNTRY_WESTERN_SAHARA = MK_CNTRY('E', 'H', 0), /**< EH Western_Sahara */ -- WHD_COUNTRY_WORLD_WIDE_XV_REV983 = MK_CNTRY('X', 'V', 983), /**< Worldwide Locale Revision 983 */ -- WHD_COUNTRY_WORLD_WIDE_XX = MK_CNTRY('X', 'X', 0), /**< Worldwide Locale (passive Ch12-14) */ -- WHD_COUNTRY_WORLD_WIDE_XX_REV17 = MK_CNTRY('X', 'X', 17), /**< Worldwide Locale (passive Ch12-14) Revision 17 */ -- WHD_COUNTRY_YEMEN = MK_CNTRY('Y', 'E', 0), /**< YE Yemen */ -- WHD_COUNTRY_ZAMBIA = MK_CNTRY('Z', 'M', 0), /**< ZM Zambia */ -- WHD_COUNTRY_ZIMBABWE = MK_CNTRY('Z', 'W', 0), /**< ZW Zimbabwe */ --} whd_country_code_t; -- --/** -- * Structure for storing extended scan parameters -- */ --typedef struct --{ -- int32_t number_of_probes_per_channel; /**< Number of probes to send on each channel */ -- int32_t scan_active_dwell_time_per_channel_ms; /**< Period of time to wait on each channel when active scanning */ -- int32_t scan_passive_dwell_time_per_channel_ms; /**< Period of time to wait on each channel when passive scanning */ -- int32_t scan_home_channel_dwell_time_between_channels_ms; /**< Period of time to wait on the home channel when scanning. Only relevant if associated. */ --} whd_scan_extended_params_t; -- --/** -- * Structure for storing scan results -- */ --#pragma pack(1) --typedef struct whd_scan_result --{ -- whd_ssid_t SSID; /**< Service Set Identification (i.e. Name of Access Point) */ -- whd_mac_t BSSID; /**< Basic Service Set Identification (i.e. MAC address of Access Point) */ -- int16_t signal_strength; /**< Receive Signal Strength Indication in dBm. <-90=Very poor, >-30=Excellent */ -- uint32_t max_data_rate; /**< Maximum data rate in kilobits/s */ -- whd_bss_type_t bss_type; /**< Network type */ -- whd_security_t security; /**< Security type */ -- uint8_t channel; /**< Radio channel that the AP beacon was received on */ -- whd_802_11_band_t band; /**< Radio band */ -- uint8_t ccode[2]; /**< Two letter ISO country code from AP */ -- uint8_t flags; /**< flags */ -- struct whd_scan_result *next; /**< Pointer to the next scan result */ -- uint8_t *ie_ptr; /**< Pointer to received Beacon/Probe Response IE(Information Element) */ -- uint32_t ie_len; /**< Length of IE(Information Element) */ --} whd_scan_result_t; --#pragma pack() -- --/** -- * Structure to store scan result parameters for each AP -- */ --typedef struct whd_simple_scan_result --{ -- whd_ssid_t SSID; /**< Service Set Identification (i.e. Name of Access Point) */ -- whd_mac_t BSSID; /**< Basic Service Set Identification (i.e. MAC address of Access Point) */ -- int16_t signal_strength; /**< Receive Signal Strength Indication in dBm. <-90=Very poor, >-30=Excellent */ -- whd_security_t security; /**< Security type */ -- uint8_t channel; /**< Radio channel that the AP beacon was received on */ --} whd_sync_scan_result_t; -- --typedef uint16_t wl_chanspec_t; /**< Channel specified in uint16_t */ --#define MCSSET_LEN 16 /**< Maximum allowed mcs rate */ -- --/** BSS(Basic Service Set) information structure -- * -- * Applications MUST CHECK ie_offset field and length field to access IEs(Information Elements) and -- * next bss_info structure in a vector (in whd_sync_scan_result_t) -- */ --typedef struct wl_bss_info_struct --{ -- uint32_t version; /**< version field */ -- uint32_t length; /**< byte length of data in this record, starting at version and including IEs */ -- whd_mac_t BSSID; /**< Unique 6-byte MAC address */ -- uint16_t beacon_period; /**< Interval between two consecutive beacon frames. Units are Kusec */ -- uint16_t capability; /**< Capability information */ -- uint8_t SSID_len; /**< SSID length */ -- uint8_t SSID[32]; /**< Array to store SSID */ -- struct -- { -- uint32_t count; /**< Count of rates in this set */ -- uint8_t rates[16]; /**< rates in 500kbps units, higher bit set if basic */ -- } rateset; /**< supported rates */ -- wl_chanspec_t chanspec; /**< Channel specification for basic service set */ -- uint16_t atim_window; /**< Announcement traffic indication message window size. Units are Kusec */ -- uint8_t dtim_period; /**< Delivery traffic indication message period */ -- int16_t RSSI; /**< receive signal strength (in dBm) */ -- int8_t phy_noise; /**< noise (in dBm) */ -- -- uint8_t n_cap; /**< BSS is 802.11N Capable */ -- uint32_t nbss_cap; /**< 802.11N BSS Capabilities (based on HT_CAP_*) */ -- uint8_t ctl_ch; /**< 802.11N BSS control channel number */ -- uint32_t reserved32[1]; /**< Reserved for expansion of BSS properties */ -- uint8_t flags; /**< flags */ -- uint8_t reserved[3]; /**< Reserved for expansion of BSS properties */ -- uint8_t basic_mcs[MCSSET_LEN]; /**< 802.11N BSS required MCS set */ -- -- uint16_t ie_offset; /**< offset at which IEs start, from beginning */ -- uint32_t ie_length; /**< byte length of Information Elements */ -- int16_t SNR; /**< Average SNR(signal to noise ratio) during frame reception */ -- /* Add new fields here */ -- /* variable length Information Elements */ --} wl_bss_info_t; -- --/** Structure for storing 802.11 powersave listen interval values \n -- * See @ref whd_wifi_get_listen_interval for more information -- */ --typedef struct --{ -- uint8_t beacon; /**< Listen interval in beacon periods */ -- uint8_t dtim; /**< Listen interval in DTIM periods */ -- uint16_t assoc; /**< Listen interval as sent to APs */ --} whd_listen_interval_t; -- --/** -- * WHD result is specified as uint32_t value -- */ --typedef uint32_t whd_result_t; -- --/* whd_result_t error code format -- * |31-18 (14 bit) for module id|17-16 (2 bit) for result type|15-0 for whd error code| -- */ --#define WHD_RESULT_TYPE 0 /**< WHD Result type */ --#define WHD_RESULT_CREATE(x) CY_RSLT_CREATE(WHD_RESULT_TYPE, CY_RSLT_MODULE_DRIVERS_WHD_BASE, (x) ) /**< Create a result value from the specified type, module, and result code */ -- --#define WHD_SUCCESS CY_RSLT_SUCCESS /**< Success */ --#define WHD_PENDING WHD_RESULT_CREATE(1) /**< Pending */ --#define WHD_TIMEOUT WHD_RESULT_CREATE(2) /**< Timeout */ --#define WHD_BADARG WHD_RESULT_CREATE(5) /**< Bad Arguments */ --#define WHD_UNFINISHED WHD_RESULT_CREATE(10) /**< Operation not finished yet WHD_RESULT_CREATE(maybe aborted) */ -- --#define WHD_PARTIAL_RESULTS WHD_RESULT_CREATE(1003) /**< Partial results */ --#define WHD_INVALID_KEY WHD_RESULT_CREATE(1004) /**< Invalid key */ --#define WHD_DOES_NOT_EXIST WHD_RESULT_CREATE(1005) /**< Does not exist */ --#define WHD_NOT_AUTHENTICATED WHD_RESULT_CREATE(1006) /**< Not authenticated */ --#define WHD_NOT_KEYED WHD_RESULT_CREATE(1007) /**< Not keyed */ --#define WHD_IOCTL_FAIL WHD_RESULT_CREATE(1008) /**< IOCTL fail */ --#define WHD_BUFFER_UNAVAILABLE_TEMPORARY WHD_RESULT_CREATE(1009) /**< Buffer unavailable temporarily */ --#define WHD_BUFFER_UNAVAILABLE_PERMANENT WHD_RESULT_CREATE(1010) /**< Buffer unavailable permanently */ --#define WHD_CONNECTION_LOST WHD_RESULT_CREATE(1012) /**< Connection lost */ --#define WHD_OUT_OF_EVENT_HANDLER_SPACE WHD_RESULT_CREATE(1013) /**< Cannot add extra event handler */ --#define WHD_SEMAPHORE_ERROR WHD_RESULT_CREATE(1014) /**< Error manipulating a semaphore */ --#define WHD_FLOW_CONTROLLED WHD_RESULT_CREATE(1015) /**< Packet retrieval cancelled due to flow control */ --#define WHD_NO_CREDITS WHD_RESULT_CREATE(1016) /**< Packet retrieval cancelled due to lack of bus credits */ --#define WHD_NO_PACKET_TO_SEND WHD_RESULT_CREATE(1017) /**< Packet retrieval cancelled due to no pending packets */ --#define WHD_CORE_CLOCK_NOT_ENABLED WHD_RESULT_CREATE(1018) /**< Core disabled due to no clock */ --#define WHD_CORE_IN_RESET WHD_RESULT_CREATE(1019) /**< Core disabled - in reset */ --#define WHD_UNSUPPORTED WHD_RESULT_CREATE(1020) /**< Unsupported function */ --#define WHD_BUS_WRITE_REGISTER_ERROR WHD_RESULT_CREATE(1021) /**< Error writing to WLAN register */ --#define WHD_SDIO_BUS_UP_FAIL WHD_RESULT_CREATE(1022) /**< SDIO bus failed to come up */ --#define WHD_JOIN_IN_PROGRESS WHD_RESULT_CREATE(1023) /**< Join not finished yet */ --#define WHD_NETWORK_NOT_FOUND WHD_RESULT_CREATE(1024) /**< Specified network was not found */ --#define WHD_INVALID_JOIN_STATUS WHD_RESULT_CREATE(1025) /**< Join status error */ --#define WHD_UNKNOWN_INTERFACE WHD_RESULT_CREATE(1026) /**< Unknown interface specified */ --#define WHD_SDIO_RX_FAIL WHD_RESULT_CREATE(1027) /**< Error during SDIO receive */ --#define WHD_HWTAG_MISMATCH WHD_RESULT_CREATE(1028) /**< Hardware tag header corrupt */ --#define WHD_RX_BUFFER_ALLOC_FAIL WHD_RESULT_CREATE(1029) /**< Failed to allocate a buffer to receive into */ --#define WHD_BUS_READ_REGISTER_ERROR WHD_RESULT_CREATE(1030) /**< Error reading a bus hardware register */ --#define WHD_THREAD_CREATE_FAILED WHD_RESULT_CREATE(1031) /**< Failed to create a new thread */ --#define WHD_QUEUE_ERROR WHD_RESULT_CREATE(1032) /**< Error manipulating a queue */ --#define WHD_BUFFER_POINTER_MOVE_ERROR WHD_RESULT_CREATE(1033) /**< Error moving the current pointer of a packet buffer */ --#define WHD_BUFFER_SIZE_SET_ERROR WHD_RESULT_CREATE(1034) /**< Error setting size of packet buffer */ --#define WHD_THREAD_STACK_NULL WHD_RESULT_CREATE(1035) /**< Null stack pointer passed when non null was reqired */ --#define WHD_THREAD_DELETE_FAIL WHD_RESULT_CREATE(1036) /**< Error deleting a thread */ --#define WHD_SLEEP_ERROR WHD_RESULT_CREATE(1037) /**< Error sleeping a thread */ --#define WHD_BUFFER_ALLOC_FAIL WHD_RESULT_CREATE(1038) /**< Failed to allocate a packet buffer */ --#define WHD_NO_PACKET_TO_RECEIVE WHD_RESULT_CREATE(1039) /**< No Packets waiting to be received */ --#define WHD_INTERFACE_NOT_UP WHD_RESULT_CREATE(1040) /**< Requested interface is not active */ --#define WHD_DELAY_TOO_LONG WHD_RESULT_CREATE(1041) /**< Requested delay is too long */ --#define WHD_INVALID_DUTY_CYCLE WHD_RESULT_CREATE(1042) /**< Duty cycle is outside limit 0 to 100 */ --#define WHD_PMK_WRONG_LENGTH WHD_RESULT_CREATE(1043) /**< Returned pmk was the wrong length */ --#define WHD_UNKNOWN_SECURITY_TYPE WHD_RESULT_CREATE(1044) /**< AP security type was unknown */ --#define WHD_WEP_NOT_ALLOWED WHD_RESULT_CREATE(1045) /**< AP not allowed to use WEP - it is not secure - use Open instead */ --#define WHD_WPA_KEYLEN_BAD WHD_RESULT_CREATE(1046) /**< WPA / WPA2 key length must be between 8 & 64 bytes */ --#define WHD_FILTER_NOT_FOUND WHD_RESULT_CREATE(1047) /**< Specified filter id not found */ --#define WHD_SPI_ID_READ_FAIL WHD_RESULT_CREATE(1048) /**< Failed to read 0xfeedbead SPI id from chip */ --#define WHD_SPI_SIZE_MISMATCH WHD_RESULT_CREATE(1049) /**< Mismatch in sizes between SPI header and SDPCM header */ --#define WHD_ADDRESS_ALREADY_REGISTERED WHD_RESULT_CREATE(1050) /**< Attempt to register a multicast address twice */ --#define WHD_SDIO_RETRIES_EXCEEDED WHD_RESULT_CREATE(1051) /**< SDIO transfer failed too many times. */ --#define WHD_NULL_PTR_ARG WHD_RESULT_CREATE(1052) /**< Null Pointer argument passed to function. */ --#define WHD_THREAD_FINISH_FAIL WHD_RESULT_CREATE(1053) /**< Error deleting a thread */ --#define WHD_WAIT_ABORTED WHD_RESULT_CREATE(1054) /**< Semaphore/mutex wait has been aborted */ --#define WHD_SET_BLOCK_ACK_WINDOW_FAIL WHD_RESULT_CREATE(1055) /**< Failed to set block ack window */ --#define WHD_DELAY_TOO_SHORT WHD_RESULT_CREATE(1056) /**< Requested delay is too short */ --#define WHD_INVALID_INTERFACE WHD_RESULT_CREATE(1057) /**< Invalid interface provided */ --#define WHD_WEP_KEYLEN_BAD WHD_RESULT_CREATE(1058) /**< WEP / WEP_SHARED key length must be 5 or 13 bytes */ --#define WHD_HANDLER_ALREADY_REGISTERED WHD_RESULT_CREATE(1059) /**< EAPOL handler already registered */ --#define WHD_AP_ALREADY_UP WHD_RESULT_CREATE(1060) /**< Soft AP or P2P group owner already up */ --#define WHD_EAPOL_KEY_PACKET_M1_TIMEOUT WHD_RESULT_CREATE(1061) /**< Timeout occurred while waiting for EAPOL packet M1 from AP */ --#define WHD_EAPOL_KEY_PACKET_M3_TIMEOUT WHD_RESULT_CREATE(1062) /**< Timeout occurred while waiting for EAPOL packet M3 from APwhich may indicate incorrect WPA2/WPA passphrase */ --#define WHD_EAPOL_KEY_PACKET_G1_TIMEOUT WHD_RESULT_CREATE(1063) /**< Timeout occurred while waiting for EAPOL packet G1 from AP */ --#define WHD_EAPOL_KEY_FAILURE WHD_RESULT_CREATE(1064) /**< Unknown failure occurred during the EAPOL key handshake */ --#define WHD_MALLOC_FAILURE WHD_RESULT_CREATE(1065) /**< Memory allocation failure */ --#define WHD_ACCESS_POINT_NOT_FOUND WHD_RESULT_CREATE(1066) /**< Access point not found */ --#define WHD_RTOS_ERROR WHD_RESULT_CREATE(1067) /**< RTOS operation failed */ --#define WHD_CLM_BLOB_DLOAD_ERROR WHD_RESULT_CREATE(1068) /**< CLM blob download failed */ --#define WHD_HAL_ERROR WHD_RESULT_CREATE(1069) /**< WHD HAL Error */ --#define WHD_RTOS_STATIC_MEM_LIMIT WHD_RESULT_CREATE(1070) /**< Exceeding the RTOS static objects memory */ -- --#define WLAN_ENUM_OFFSET 2000 /**< WLAN enum offset for WHD_WLAN error processing */ -- --#define WHD_WLAN_ERROR WHD_RESULT_CREATE(2001) /**< Generic Error */ --#define WHD_WLAN_BADARG WHD_RESULT_CREATE(2002) /**< Bad Argument */ --#define WHD_WLAN_BADOPTION WHD_RESULT_CREATE(2003) /**< Bad option */ --#define WHD_WLAN_NOTUP WHD_RESULT_CREATE(2004) /**< Not up */ --#define WHD_WLAN_NOTDOWN WHD_RESULT_CREATE(2005) /**< Not down */ --#define WHD_WLAN_NOTAP WHD_RESULT_CREATE(2006) /**< Not AP */ --#define WHD_WLAN_NOTSTA WHD_RESULT_CREATE(2007) /**< Not STA */ --#define WHD_WLAN_BADKEYIDX WHD_RESULT_CREATE(2008) /**< BAD Key Index */ --#define WHD_WLAN_RADIOOFF WHD_RESULT_CREATE(2009) /**< Radio Off */ --#define WHD_WLAN_NOTBANDLOCKED WHD_RESULT_CREATE(2010) /**< Not band locked */ --#define WHD_WLAN_NOCLK WHD_RESULT_CREATE(2011) /**< No Clock */ --#define WHD_WLAN_BADRATESET WHD_RESULT_CREATE(2012) /**< BAD Rate valueset */ --#define WHD_WLAN_BADBAND WHD_RESULT_CREATE(2013) /**< BAD Band */ --#define WHD_WLAN_BUFTOOSHORT WHD_RESULT_CREATE(2014) /**< Buffer too short */ --#define WHD_WLAN_BUFTOOLONG WHD_RESULT_CREATE(2015) /**< Buffer too long */ --#define WHD_WLAN_BUSY WHD_RESULT_CREATE(2016) /**< Busy */ --#define WHD_WLAN_NOTASSOCIATED WHD_RESULT_CREATE(2017) /**< Not Associated */ --#define WHD_WLAN_BADSSIDLEN WHD_RESULT_CREATE(2018) /**< Bad SSID len */ --#define WHD_WLAN_OUTOFRANGECHAN WHD_RESULT_CREATE(2019) /**< Out of Range Channel */ --#define WHD_WLAN_BADCHAN WHD_RESULT_CREATE(2020) /**< Bad Channel */ --#define WHD_WLAN_BADADDR WHD_RESULT_CREATE(2021) /**< Bad Address */ --#define WHD_WLAN_NORESOURCE WHD_RESULT_CREATE(2022) /**< Not Enough Resources */ --#define WHD_WLAN_UNSUPPORTED WHD_RESULT_CREATE(2023) /**< Unsupported */ --#define WHD_WLAN_BADLEN WHD_RESULT_CREATE(2024) /**< Bad length */ --#define WHD_WLAN_NOTREADY WHD_RESULT_CREATE(2025) /**< Not Ready */ --#define WHD_WLAN_EPERM WHD_RESULT_CREATE(2026) /**< Not Permitted */ --#define WHD_WLAN_NOMEM WHD_RESULT_CREATE(2027) /**< No Memory */ --#define WHD_WLAN_ASSOCIATED WHD_RESULT_CREATE(2028) /**< Associated */ --#define WHD_WLAN_RANGE WHD_RESULT_CREATE(2029) /**< Not In Range */ --#define WHD_WLAN_NOTFOUND WHD_RESULT_CREATE(2030) /**< Not Found */ --#define WHD_WLAN_WME_NOT_ENABLED WHD_RESULT_CREATE(2031) /**< WME Not Enabled */ --#define WHD_WLAN_TSPEC_NOTFOUND WHD_RESULT_CREATE(2032) /**< TSPEC Not Found */ --#define WHD_WLAN_ACM_NOTSUPPORTED WHD_RESULT_CREATE(2033) /**< ACM Not Supported */ --#define WHD_WLAN_NOT_WME_ASSOCIATION WHD_RESULT_CREATE(2034) /**< Not WME Association */ --#define WHD_WLAN_SDIO_ERROR WHD_RESULT_CREATE(2035) /**< SDIO Bus Error */ --#define WHD_WLAN_WLAN_DOWN WHD_RESULT_CREATE(2036) /**< WLAN Not Accessible */ --#define WHD_WLAN_BAD_VERSION WHD_RESULT_CREATE(2037) /**< Incorrect version */ --#define WHD_WLAN_TXFAIL WHD_RESULT_CREATE(2038) /**< TX failure */ --#define WHD_WLAN_RXFAIL WHD_RESULT_CREATE(2039) /**< RX failure */ --#define WHD_WLAN_NODEVICE WHD_RESULT_CREATE(2040) /**< Device not present */ --#define WHD_WLAN_UNFINISHED WHD_RESULT_CREATE(2041) /**< To be finished */ --#define WHD_WLAN_NONRESIDENT WHD_RESULT_CREATE(2042) /**< access to nonresident overlay */ --#define WHD_WLAN_DISABLED WHD_RESULT_CREATE(2043) /**< Disabled in this build */ --#define WHD_WLAN_NOFUNCTION WHD_RESULT_CREATE(2044) /**< Function pointer not provided */ --#define WHD_WLAN_INVALID WHD_RESULT_CREATE(2045) /**< Not valid */ --#define WHD_WLAN_NOBAND WHD_RESULT_CREATE(2046) /**< No Band */ -- --/** -- * type definition for whd_buffer_t -- */ --typedef whd_buffer_t whd_buffer_queue_ptr_t; -- --#pragma pack(1) -- --/** -- * Structure for storing AP information -- */ --typedef struct whd_ap_info --{ -- whd_ssid_t SSID; /**< Service Set Identification (i.e. Name of Access Point) */ -- whd_mac_t BSSID; /**< Basic Service Set Identification (i.e. MAC address of Access Point) */ -- int16_t signal_strength; /**< Receive Signal Strength Indication in dBm. <-90=Very poor, >-30=Excellent */ -- uint32_t max_data_rate; /**< Maximum data rate in kilobits/s */ -- whd_bss_type_t bss_type; /**< Network type */ -- whd_security_t security; /**< Security type */ -- uint8_t channel; /**< Radio channel that the AP beacon was received on */ -- whd_802_11_band_t band; /**< Radio band */ -- struct whd_ap_info *next; /**< Pointer to the next scan result */ --} whd_ap_info_t; -- --/** -- * Structure describing a list of associated softAP clients -- */ --typedef struct --{ -- uint32_t count; /**< Number of MAC addresses in the list */ -- whd_mac_t mac_list[1]; /**< Variable length array of MAC addresses */ --} whd_maclist_t; -- --#pragma pack() -- --/** -- * Time value in milliseconds -- */ --typedef uint32_t whd_time_t; -- --/** -- * Structure for storing a WEP key -- */ --typedef struct --{ -- uint8_t index; /**< WEP key index [0/1/2/3] */ -- uint8_t length; /**< WEP key length. Either 5 bytes (40-bits) or 13-bytes (104-bits) */ -- uint8_t data[32]; /**< WEP key as values NOT characters */ --} whd_wep_key_t; -- --/** -- * Structure for Out-of-band interrupt config parameters which can be set by application during whd power up -- */ --typedef struct whd_oob_config --{ -- cyhal_gpio_t host_oob_pin; /**< Host-side GPIO pin selection */ -- uint8_t dev_gpio_sel; /**< WiFi device-side GPIO pin selection (must be zero) */ -- whd_bool_t is_falling_edge; /**< Interrupt trigger (polarity) */ -- uint8_t intr_priority; /**< OOB interrupt priority */ --} whd_oob_config_t; -- --/** -- * Structure for SDIO config parameters which can be set by application during whd power up -- */ --typedef struct whd_sdio_config --{ -- /* Bus config */ -- whd_bool_t sdio_1bit_mode; /**< Default is false, means SDIO operates under 4 bit mode */ -- whd_bool_t high_speed_sdio_clock; /**< Default is false, means SDIO operates in normal clock rate */ -- whd_oob_config_t oob_config; /**< Out-of-band interrupt configuration (required when bus can sleep) */ --} whd_sdio_config_t; -- --/** -- * Structure for SPI config parameters which can be set by application during whd power up -- */ --typedef struct whd_spi_config --{ -- /* Bus config */ -- whd_bool_t is_spi_normal_mode; /**< Default is false */ -- whd_oob_config_t oob_config; /**< Out-of-band interrupt configuration */ --} whd_spi_config_t; -- --/** -- * Enumeration of applicable packet mask bits for custom Information Elements (IEs) -- */ --typedef enum --{ -- VENDOR_IE_BEACON = 0x1, /**< Denotes beacon packet */ -- VENDOR_IE_PROBE_RESPONSE = 0x2, /**< Denotes probe response packet */ -- VENDOR_IE_ASSOC_RESPONSE = 0x4, /**< Denotes association response packet */ -- VENDOR_IE_AUTH_RESPONSE = 0x8, /**< Denotes authentication response packet */ -- VENDOR_IE_PROBE_REQUEST = 0x10, /**< Denotes probe request packet */ -- VENDOR_IE_ASSOC_REQUEST = 0x20, /**< Denotes association request packet */ -- VENDOR_IE_CUSTOM = 0x100 /**< Denotes a custom IE(Information Element) identifier */ --} whd_ie_packet_flag_t; -- --/** -- * Structure for LE Scan parameters -- */ --typedef struct whd_btc_lescan_params --{ -- uint16_t priority; /**< LE scan priority */ -- uint16_t duty_cycle; /**< LE scan duty cycle */ -- uint16_t max_win; /**< LE Max Scan window */ -- uint16_t int_grant; /**< LE Small Interval Grant */ -- uint16_t scan_int; /**< LE scan interval */ -- uint16_t scan_win; /**< LE scan Window */ --} whd_btc_lescan_params_t; -- --/** -- * Structure for coex config parameters which can be set by application -- */ --typedef struct whd_coex_config --{ -- whd_btc_lescan_params_t le_scan_params; /**< LE Scan Parameters */ --} whd_coex_config_t; -- --#define PORT_FILTER_LEN 26 /**< Port filter len */ --#define PACKET_FILTER_LIST_BUFFER_MAX_LEN 1000 /**< Packet filter buffer max len */ --/** -- * Enumeration of packet filter rules -- */ --typedef enum --{ -- WHD_PACKET_FILTER_RULE_POSITIVE_MATCHING = 0, /**< Specifies that a filter should match a given pattern */ -- WHD_PACKET_FILTER_RULE_NEGATIVE_MATCHING = 1 /**< Specifies that a filter should NOT match a given pattern */ --} whd_packet_filter_rule_t; -- --/** -- * Structure describing a packet filter list item -- */ --typedef struct --{ -- uint32_t id; /**< Unique identifier for a packet filter item */ -- whd_packet_filter_rule_t rule; /**< Filter matches are either POSITIVE or NEGATIVE matching */ -- uint16_t offset; /**< Offset in bytes to start filtering (referenced to the start of the ethernet packet) */ -- uint16_t mask_size; /**< Size of the mask in bytes */ -- uint8_t *mask; /**< Pattern mask bytes to be ANDed with the pattern eg. "\xff00" (must be in network byte order) */ -- uint8_t *pattern; /**< Pattern bytes used to filter eg. "\x0800" (must be in network byte order) */ -- whd_bool_t enabled_status; /**< When returned from wwd_wifi_get_packet_filters, indicates if the filter is enabled */ --} whd_packet_filter_t; -- --#define TKO_DATA_OFFSET offsetof(wl_tko_t, data) /**< TKO data offset */ -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* ifndef INCLUDED_WHD_TYPES_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_wifi_api.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_wifi_api.h -deleted file mode 100644 -index aa04ba8a92..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_wifi_api.h -+++ /dev/null -@@ -1,1179 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Prototypes of functions for controlling the Wi-Fi system -- * -- * This file provides prototypes for end-user functions which allow -- * actions such as scanning for Wi-Fi networks, joining Wi-Fi -- * networks, getting the MAC address, etc -- * -- */ -- --#include "whd.h" --#include "whd_types.h" -- --#ifndef INCLUDED_WHD_WIFI_API_H --#define INCLUDED_WHD_WIFI_API_H -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Function declarations --******************************************************/ -- --/** @addtogroup wifi WHD Wi-Fi API -- * APIs for controlling the Wi-Fi system -- * @{ -- */ -- --/** @addtogroup wifimanagement WHD Wi-Fi Management API -- * @ingroup wifi -- * Initialisation and other management functions for WHD system -- * @{ -- */ -- --/** Initialize an instance of the WHD driver -- * -- * @param whd_driver_ptr Pointer to Pointer to handle instance of the driver -- * @param whd_init_config Pointer to configuration data that controls how the driver is initialized -- * @param resource_ops Pointer to resource interface to provide resources to the driver initialization process -- * @param buffer_ops Pointer to a buffer interface to provide buffer related services to the driver instance -- * @param network_ops Pointer to a whd_netif_funcs_t to provide network stack services to the driver instance -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_init(whd_driver_t *whd_driver_ptr, whd_init_config_t *whd_init_config, -- whd_resource_source_t *resource_ops, whd_buffer_funcs_t *buffer_ops, -- whd_netif_funcs_t *network_ops); --/* @} */ --/* @} */ -- --/** @addtogroup busapi WHD Bus API -- * Allows WHD to operate with specific SDIO/SPI bus -- * @{ -- */ -- --/** Attach the WLAN Device to a specific SDIO bus -- * -- * @param whd_driver Pointer to handle instance of the driver -- * @param whd_config Configuration for SDIO bus -- * @param sdio_obj The SDHC hardware interface, from the Level 3 CY HW APIs -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_bus_sdio_attach(whd_driver_t whd_driver, whd_sdio_config_t *whd_config, cyhal_sdio_t *sdio_obj); -- --/** Detach the WLAN Device to a specific SDIO bus -- * -- * @param whd_driver Pointer to handle instance of the driver -- */ --extern void whd_bus_sdio_detach(whd_driver_t whd_driver); -- --/** Attach the WLAN Device to a specific SPI bus -- * -- * @param whd_driver Pointer to handle instance of the driver -- * @param whd_config Configuration for SPI bus -- * @param spi_obj The SPI hardware interface, from the Level 3 CY HW APIs -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_bus_spi_attach(whd_driver_t whd_driver, whd_spi_config_t *whd_config, cyhal_spi_t *spi_obj); -- --/** Detach the WLAN Device to a specific SPI bus -- * -- * @param whd_driver Pointer to handle instance of the driver -- */ --extern void whd_bus_spi_detach(whd_driver_t whd_driver); -- --/* @} */ -- --/** @addtogroup wifi WHD Wi-Fi API -- * APIs for controlling the Wi-Fi system -- * @{ -- */ -- --/** @addtogroup wifimanagement WHD Wi-Fi Management API -- * @ingroup wifi -- * Initialisation and other management functions for WHD system -- * @{ -- */ -- --/** -- * Turn on the Wi-Fi device -- * -- * Initialise Wi-Fi platform -- * Program various WiFi parameters and modes -- * -- * @param whd_driver Pointer to handle instance of the driver -- * @param ifpp Pointer to Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS if initialization is successful, error code otherwise -- */ --extern uint32_t whd_wifi_on(whd_driver_t whd_driver, whd_interface_t *ifpp); -- --/** -- * Turn off the Wi-Fi device -- * -- * - De-Initialises the required parts of the hardware platform -- * i.e. pins for SDIO/SPI, interrupt, reset, power etc. -- * -- * - De-Initialises the whd thread which arbitrates access -- * to the SDIO/SPI bus -- * -- * @param ifp Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS if deinitialization is successful, Error code otherwise -- */ --extern uint32_t whd_wifi_off(whd_interface_t ifp); -- --/** Shutdown this instance of the wifi driver, freeing all used resources -- * -- * @param ifp Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_deinit(whd_interface_t ifp); -- --/** Brings up the Wi-Fi core -- * -- * @param ifp Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_up(whd_interface_t ifp); -- --/** Bring down the Wi-Fi core -- * -- * WARNING / NOTE: -- * This brings down the Wi-Fi core and existing network connections will be lost. -- * -- * @param ifp Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_down(whd_interface_t ifp); -- --/** Creates a secondary interface -- * -- * @param whd_drv Pointer to handle instance of the driver -- * @param mac_addr MAC address for the interface -- * @param ifpp Pointer to the whd interface pointer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_add_secondary_interface(whd_driver_t whd_drv, whd_mac_t *mac_addr, whd_interface_t *ifpp); --/* @} */ -- --/** @addtogroup wifijoin WHD Wi-Fi Join, Scan and Halt API -- * @ingroup wifi -- * Wi-Fi APIs for join, scan & leave -- * @{ -- */ -- --/** Scan result callback function pointer type -- * -- * @param result_ptr A pointer to the pointer that indicates where to put the next scan result -- * @param user_data User provided data -- * @param status Status of scan process -- */ --typedef void (*whd_scan_result_callback_t)(whd_scan_result_t **result_ptr, void *user_data, whd_scan_status_t status); -- --/** Initiates a scan to search for 802.11 networks. -- * -- * This functions returns the scan results with limited sets of parameter in a buffer provided by the caller. -- * It is also a blocking call. It is an simplified version of the whd_wifi_scan(). -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param scan_result pointer to user requested records buffer. -- * @param count No of records user is interested in. -- * If 0 return the total record count. -- * -- * @note When scanning specific channels, devices with a strong signal strength on nearby channels may be detected -- * -- * @return record count or Error code -- */ --extern uint32_t whd_wifi_scan_synch(whd_interface_t ifp, -- whd_sync_scan_result_t *scan_result, -- uint32_t count -- ); -- --/** Initiates a scan to search for 802.11 networks. -- * -- * The scan progressively accumulates results over time, and may take between 1 and 10 seconds to complete. -- * The results of the scan will be individually provided to the callback function. -- * Note: The callback function will be executed in the context of the WHD thread and so must not perform any -- * actions that may cause a bus transaction. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param scan_type Specifies whether the scan should be Active, Passive or scan Prohibited channels -- * @param bss_type Specifies whether the scan should search for Infrastructure networks (those using -- * an Access Point), Ad-hoc networks, or both types. -- * @param optional_ssid If this is non-Null, then the scan will only search for networks using the specified SSID. -- * @param optional_mac If this is non-Null, then the scan will only search for networks where -- * the BSSID (MAC address of the Access Point) matches the specified MAC address. -- * @param optional_channel_list If this is non-Null, then the scan will only search for networks on the -- * specified channels - array of channel numbers to search, terminated with a zero -- * @param optional_extended_params If this is non-Null, then the scan will obey the specifications about -- * dwell times and number of probes. -- * @param callback The callback function which will receive and process the result data. -- * @param result_ptr Pointer to a pointer to a result storage structure. -- * @param user_data user specific data that will be passed directly to the callback function -- * -- * @note - When scanning specific channels, devices with a strong signal strength on nearby channels may be detected -- * - Callback must not use blocking functions, nor use WHD functions, since it is called from the context of the -- * WHD thread. -- * - The callback, result_ptr and user_data variables will be referenced after the function returns. -- * Those variables must remain valid until the scan is complete. -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_scan(whd_interface_t ifp, -- whd_scan_type_t scan_type, -- whd_bss_type_t bss_type, -- const whd_ssid_t *optional_ssid, -- const whd_mac_t *optional_mac, -- const uint16_t *optional_channel_list, -- const whd_scan_extended_params_t *optional_extended_params, -- whd_scan_result_callback_t callback, -- whd_scan_result_t *result_ptr, -- void *user_data); -- --/** Abort a previously issued scan -- * -- * @param ifp Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_stop_scan(whd_interface_t ifp); -- --/** Joins a Wi-Fi network -- * -- * Scans for, associates and authenticates with a Wi-Fi network. -- * On successful return, the system is ready to send data packets. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param ssid A null terminated string containing the SSID name of the network to join -- * @param auth_type Authentication type -- * @param security_key A byte array containing either the cleartext security key for WPA/WPA2/WPA3 secured networks -- * @param key_length The length of the security_key in bytes. -- * -- * @note In case of WPA3/WPA2 transition mode, the security_key value is WPA3 password. -- * -- * @return WHD_SUCCESS when the system is joined and ready to send data packets -- * Error code if an error occurred -- */ --extern uint32_t whd_wifi_join(whd_interface_t ifp, const whd_ssid_t *ssid, whd_security_t auth_type, -- const uint8_t *security_key, uint8_t key_length); -- --/** Joins a specific Wi-Fi network -- * -- * Associates and authenticates with a specific Wi-Fi access point. -- * On successful return, the system is ready to send data packets. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param ap A pointer to a whd_scan_result_t structure containing AP details and -- * set ap.channel to 0 for unspecificed channel -- * @param security_key A byte array containing either the cleartext security key for WPA/WPA2 -- * secured networks -- * @param key_length The length of the security_key in bytes. -- * -- * @return WHD_SUCCESS when the system is joined and ready to send data packets -- * Error code if an error occurred -- */ --extern uint32_t whd_wifi_join_specific(whd_interface_t ifp, const whd_scan_result_t *ap, const uint8_t *security_key, -- uint8_t key_length); -- --/* @} */ -- --/** @addtogroup wifiutilities WHD Wi-Fi Utility API -- * @ingroup wifi -- * Allows WHD to perform utility operations -- * @{ -- */ -- --/** Set the current channel on the WLAN radio -- * -- * @note On most WLAN devices this will set the channel for both AP *AND* STA -- * (since there is only one radio - it cannot be on two channels simulaneously) -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param channel The desired channel -- * -- * @return WHD_SUCCESS if the channel was successfully set -- * Error code if the channel was not successfully set -- */ --extern uint32_t whd_wifi_set_channel(whd_interface_t ifp, uint32_t channel); -- --/** Get the current channel on the WLAN radio -- * -- * @note On most WLAN devices this will get the channel for both AP *AND* STA -- * (since there is only one radio - it cannot be on two channels simulaneously) -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param channel Pointer to receive the current channel -- * -- * @return WHD_SUCCESS if the channel was successfully retrieved -- * Error code if the channel was not successfully retrieved -- */ --extern uint32_t whd_wifi_get_channel(whd_interface_t ifp, uint32_t *channel); -- --/** Set the passphrase -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param security_key The security key (passphrase) which is to be set -- * @param key_length length of the key -- * -- * @return WHD_SUCCESS when the key is set -- * Error code if an error occurred -- */ --extern uint32_t whd_wifi_set_passphrase(whd_interface_t ifp, const uint8_t *security_key, uint8_t key_length); -- --/** Set the SAE password -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param security_key The security key (password) which is to be set -- * @param key_length length of the key -- * -- * @return WHD_SUCCESS when the key is set -- * Error code if an error occurred -- */ --extern uint32_t whd_wifi_sae_password(whd_interface_t ifp, const uint8_t *security_key, uint8_t key_length); -- --/** Enable WHD internal supplicant and set WPA2 passphrase in case of WPA3/WPA2 transition mode -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param security_key_psk The security key (passphrase) which is to be set -- * @param psk_length length of the key -- * @param auth_type Authentication type: @ref WHD_SECURITY_WPA3_WPA2_PSK -- * -- * @return WHD_SUCCESS when the supplicant variable and wpa2 passphrase is set -- * Error code if an error occurred -- */ --extern uint32_t whd_wifi_enable_sup_set_passphrase(whd_interface_t ifp, const uint8_t *security_key_psk, -- uint8_t psk_length, whd_security_t auth_type); -- -- --/** Enable WHD internal supplicant -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param auth_type Authentication type -- * -- * @return WHD_SUCCESS when the supplicant variable is set -- * Error code if an error occurred -- */ --extern uint32_t whd_wifi_enable_supplicant(whd_interface_t ifp, whd_security_t auth_type); -- --/** Retrieve the latest RSSI value -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param rssi The location where the RSSI value will be stored -- * -- * @return WHD_SUCCESS if the RSSI was successfully retrieved -- * Error code if the RSSI was not retrieved -- */ --extern uint32_t whd_wifi_get_rssi(whd_interface_t ifp, int32_t *rssi); -- --/** Retrieve the associated STA's RSSI value -- * -- * @param ifp : Pointer to handle instance of whd interface -- * @param rssi : The location where the RSSI value will be stored -- * @param client_mac : Pointer to associated client's MAC address -- * -- * @return WHD_SUCCESS : if the RSSI was successfully retrieved -- * Error code : if the RSSI was not retrieved -- */ --extern uint32_t whd_wifi_get_ap_client_rssi(whd_interface_t ifp, int32_t *rssi, const whd_mac_t *client_mac); -- -- --/* @} */ -- --/** @addtogroup wifijoin WHD Wi-Fi Join, Scan and Halt API -- * @ingroup wifi -- * Wi-Fi APIs for join, scan & leave -- * @{ -- */ --/** Disassociates from a Wi-Fi network. -- * Applicable only for STA role -- * -- * @param ifp Pointer to handle instance of whd interface. -- * -- * @return WHD_SUCCESS On successful disassociation from the AP -- * Error code If an error occurred -- */ --extern uint32_t whd_wifi_leave(whd_interface_t ifp); --/* @} */ -- --/** @addtogroup wifiutilities WHD Wi-Fi Utility API -- * @ingroup wifi -- * Allows WHD to perform utility operations -- * @{ -- */ -- --/** Retrieves the current Media Access Control (MAC) address -- * (or Ethernet hardware address) of the 802.11 device -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param mac Pointer to a variable that the current MAC address will be written to -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_mac_address(whd_interface_t ifp, whd_mac_t *mac); -- --/** Get the BSSID of the interface -- * -- * @param ifp Pointer to the whd_interface_t -- * @param bssid Returns the BSSID address (mac address) if associated -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_bssid(whd_interface_t ifp, whd_mac_t *bssid); --/* @} */ -- --/** @addtogroup wifisoftap WHD Wi-Fi SoftAP API -- * @ingroup wifi -- * Wi-Fi APIs to perform SoftAP related functionalities -- * @{ -- */ -- --/** Initialises an infrastructure WiFi network (SoftAP) -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param ssid A null terminated string containing the SSID name of the network to join -- * @param auth_type Authentication type -- * @param security_key A byte array containing the cleartext security key for the network -- * @param key_length The length of the security_key in bytes. -- * @param channel 802.11 channel number -- * -- * @return WHD_SUCCESS if successfully initialises an AP -- * Error code if an error occurred -- */ --extern uint32_t whd_wifi_init_ap(whd_interface_t ifp, whd_ssid_t *ssid, whd_security_t auth_type, -- const uint8_t *security_key, uint8_t key_length, uint8_t channel); -- --/** Start the infrastructure WiFi network (SoftAP) -- * using the parameter set by whd_wifi_init_ap() and optionaly by whd_wifi_manage_custom_ie() -- * -- * @return WHD_SUCCESS if successfully creates an AP -- * Error code if an error occurred -- */ --extern uint32_t whd_wifi_start_ap(whd_interface_t ifp); -- --/** Stops an existing infrastructure WiFi network -- * -- * @param ifp Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS if the AP is successfully stopped or if the AP has not yet been brought up -- * Error code if an error occurred -- */ --extern uint32_t whd_wifi_stop_ap(whd_interface_t ifp); -- -- --/** Get the maximum number of associations supported by AP interfaces -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param max_assoc The maximum number of associations supported by Soft AP interfaces. -- * -- * @return WHD_SUCCESS if the maximum number of associated clients was successfully read -- * WHD_ERROR if the maximum number of associated clients was not successfully read -- */ --extern uint32_t whd_wifi_ap_get_max_assoc(whd_interface_t ifp, uint32_t *max_assoc); -- --/** Gets the current number of active connections -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param client_list_buffer Buffer to store list of associated clients -- * @param buffer_length Length of client list buffer -- * -- * @return WHD_SUCCESS if the active connections was successfully read -- * WHD_ERROR if the active connections was not successfully read -- */ --extern uint32_t whd_wifi_get_associated_client_list(whd_interface_t ifp, void *client_list_buffer, -- uint16_t buffer_length); -- --/** Deauthenticates a STA which may or may not be associated to SoftAP -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param mac Pointer to a variable containing the MAC address to which the deauthentication will be sent -- * NULL mac address will deauthenticate all the associated STAs -- * -- * @param reason Deauthentication reason code -- * -- * @return WHD_SUCCESS On successful deauthentication of the other STA -- * WHD_ERROR If an error occurred -- */ --extern uint32_t whd_wifi_deauth_sta(whd_interface_t ifp, whd_mac_t *mac, whd_dot11_reason_code_t reason); -- --/** Retrieves AP information -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param ap_info Returns a whd_bss_info_t structure containing AP details -- * @param security Authentication type -- * -- * @return WHD_SUCCESS if the AP info was successfully retrieved -- * Error code if the AP info was not successfully retrieved -- */ --extern uint32_t whd_wifi_get_ap_info(whd_interface_t ifp, whd_bss_info_t *ap_info, whd_security_t *security); -- --/** Set the beacon interval. -- * -- * Note that the value needs to be set before ap_start in order to beacon interval to take effect. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param interval Beacon interval in time units (Default: 100 time units = 102.4 ms) -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_ap_set_beacon_interval(whd_interface_t ifp, uint16_t interval); -- --/** Set the DTIM interval. -- * -- * Note that the value needs to be set before ap_start in order to DTIM interval to take effect. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param interval DTIM interval, in unit of beacon interval -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_ap_set_dtim_interval(whd_interface_t ifp, uint16_t interval); --/* @} */ -- -- --/** @addtogroup wifipowersave WHD Wi-Fi Power Save API -- * @ingroup wifi -- * Wi-Fi functions for WLAN low power modes -- * @{ -- */ -- --/** Enables powersave mode on specified interface without regard for throughput reduction -- * -- * This function enables (legacy) 802.11 PS-Poll mode and should be used -- * to achieve the lowest power consumption possible when the Wi-Fi device -- * is primarily passively listening to the network -- * -- * @param ifp Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_enable_powersave(whd_interface_t ifp); -- --/** Enables powersave mode on specified interface while attempting to maximise throughput -- * -- * -- * Network traffic is typically bursty. Reception of a packet often means that another -- * packet will be received shortly afterwards (and vice versa for transmit). -- * -- * In high throughput powersave mode, rather then entering powersave mode immediately -- * after receiving or sending a packet, the WLAN chip waits for a timeout period before -- * returning to sleep. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param return_to_sleep_delay The variable to set return to sleep delay. -- * return to sleep delay must be set to a multiple of 10 and not equal to zero. -- * -- * @return WHD_SUCCESS if power save mode was successfully enabled -- * Error code if power save mode was not successfully enabled -- * -- */ --extern uint32_t whd_wifi_enable_powersave_with_throughput(whd_interface_t ifp, uint16_t return_to_sleep_delay); -- --/** Get powersave mode on specified interface -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param value Value of the current powersave state -- * PM1_POWERSAVE_MODE, PM2_POWERSAVE_MODE, NO_POWERSAVE_MODE -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_powersave_mode(whd_interface_t ifp, uint32_t *value); -- --/** Disables 802.11 power save mode on specified interface -- * -- * @param ifp Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS if power save mode was successfully disabled -- * Error code if power save mode was not successfully disabled -- * -- */ --extern uint32_t whd_wifi_disable_powersave(whd_interface_t ifp); --/* @} */ -- --/** @addtogroup wifiutilities WHD Wi-Fi Utility API -- * @ingroup wifi -- * Allows WHD to perform utility operations -- * @{ -- */ --/** Registers interest in a multicast address -- * -- * Once a multicast address has been registered, all packets detected on the -- * medium destined for that address are forwarded to the host. -- * Otherwise they are ignored. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param mac Ethernet MAC address -- * -- * @return WHD_SUCCESS if the address was registered successfully -- * Error code if the address was not registered -- */ --extern uint32_t whd_wifi_register_multicast_address(whd_interface_t ifp, const whd_mac_t *mac); -- --/** Unregisters interest in a multicast address -- * -- * Once a multicast address has been unregistered, all packets detected on the -- * medium destined for that address are ignored. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param mac Ethernet MAC address -- * -- * @return WHD_SUCCESS if the address was unregistered successfully -- * Error code if the address was not unregistered -- */ --extern uint32_t whd_wifi_unregister_multicast_address(whd_interface_t ifp, const whd_mac_t *mac); -- --/** Sets the 802.11 powersave listen interval for a Wi-Fi client, and communicates -- * the listen interval to the Access Point. The listen interval will be set to -- * (listen_interval x time_unit) seconds. -- * -- * The default value for the listen interval is 0. With the default value of 0 set, -- * the Wi-Fi device wakes to listen for AP beacons every DTIM period. -- * -- * If the DTIM listen interval is non-zero, the DTIM listen interval will over ride -- * the beacon listen interval value. -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param listen_interval The desired beacon listen interval -- * @param time_unit The listen interval time unit; options are beacon period or DTIM period. -- * -- * @return WHD_SUCCESS If the listen interval was successfully set. -- * Error code If the listen interval was not successfully set. -- */ --extern uint32_t whd_wifi_set_listen_interval(whd_interface_t ifp, uint8_t listen_interval, -- whd_listen_interval_time_unit_t time_unit); -- --/** Gets the current value of all beacon listen interval variables -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param li Powersave listen interval values -- * - listen_interval_beacon : The current value of the listen interval set as a multiple of the beacon period -- * - listen_interval_dtim : The current value of the listen interval set as a multiple of the DTIM period -- * - listen_interval_assoc : The current value of the listen interval sent to access points in an association request frame -- * -- * @return WHD_SUCCESS If all listen interval values are read successfully -- * Error code If at least one of the listen interval values are NOT read successfully -- */ --extern uint32_t whd_wifi_get_listen_interval(whd_interface_t ifp, whd_listen_interval_t *li); -- --/** Determines if a particular interface is ready to transceive ethernet packets -- * -- * @param ifp Pointer to handle instance of whd interface -- * -- * @return WHD_SUCCESS if the interface is ready to transceive ethernet packets -- * WHD_NOTFOUND no AP with a matching SSID was found -- * WHD_NOT_AUTHENTICATED Matching AP was found but it won't let you authenticate. -- * This can occur if this device is in the block list on the AP. -- * WHD_NOT_KEYED Device has authenticated and associated but has not completed the key exchange. -- * This can occur if the passphrase is incorrect. -- * Error code if the interface is not ready to transceive ethernet packets -- */ --extern uint32_t whd_wifi_is_ready_to_transceive(whd_interface_t ifp); -- --/* Certification APIs */ -- --/** Retrieve the latest STA EDCF AC parameters -- * -- * Retrieve the latest Station (STA) interface EDCF (Enhanced Distributed -- * Coordination Function) Access Category parameters -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param acp The location where the array of AC parameters will be stored -- * -- * @return WHD_SUCCESS if the AC Parameters were successfully retrieved -- * Error code if the AC Parameters were not retrieved -- */ --extern uint32_t whd_wifi_get_acparams(whd_interface_t ifp, whd_edcf_ac_param_t *acp); -- --/* Action Frames */ -- --/** Manage the addition and removal of custom IEs -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param action the action to take (add or remove IE) -- * @param oui the oui of the custom IE -- * @param subtype the IE sub-type -- * @param data a pointer to the buffer that hold the custom IE -- * @param length the length of the buffer pointed to by 'data' -- * @param which_packets A mask to indicate in which all packets this IE should be included. See whd_ie_packet_flag_t. -- * -- * @return WHD_SUCCESS if the custom IE action was successful -- * Error code if the custom IE action failed -- */ --extern uint32_t whd_wifi_manage_custom_ie(whd_interface_t ifp, whd_custom_ie_action_t action, -- const uint8_t *oui, uint8_t subtype, const void *data, -- uint16_t length, uint16_t which_packets); -- --/** Send a pre-prepared action frame -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param af_params A pointer to a pre-prepared action frame structure -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_send_action_frame(whd_interface_t ifp, whd_af_params_t *af_params); -- --/** Set coex configuration -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param coex_config Pointer to the structure whd_coex_config_t -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_coex_config(whd_interface_t ifp, whd_coex_config_t *coex_config); -- --/** Get version of Device (WLAN) Firmware -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[out] version : pointer to store version # -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_version(whd_interface_t ifp, uint32_t *version); -- --/** Get ARP Offload Peer Age from Device (WLAN) -- * Length of time in seconds before aging out an entry in the WLAN processor ARP table. -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[out] seconds : pointer to store value -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_peerage_get(whd_interface_t ifp, uint32_t *seconds); -- --/** Set ARP Offload Peer Age in Device (WLAN) -- * Length of time in seconds before aging out an entry in the WLAN processor ARP table. -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] seconds : Seconds to age out IP -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_peerage_set(whd_interface_t ifp, uint32_t seconds); -- --/** Get ARP Offload Agent Enable from Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[out] agent_enable : pointer to store value -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_arpoe_get(whd_interface_t ifp, uint32_t *agent_enable); -- --/** Set ARP Offload Agent Enable in Device (WLAN) -- * Set Enable/Disable of ARP Offload Agent -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] agent_enable : Enable=1 / Disable=0 -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_arpoe_set(whd_interface_t ifp, uint32_t agent_enable); -- --/** Clear ARP Offload cache in Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_cache_clear(whd_interface_t ifp); -- --/** Get ARP Offload Feature Flags from Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[out] features : ptr to store currently set features - bit flags CY_ARP_OL_AGENT_ENABLE, etc. -- * ARL_OL_AGENT | ARL_OL_SNOOP | ARP_OL_HOST_AUTO_REPLY | ARP_OL_PEER_AUTO_REPLY -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_features_get(whd_interface_t ifp, uint32_t *features); -- --/** Set ARP Offload Feature Flags in Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] features : features to set value (you can OR ('|') multiple flags) CY_ARP_OL_AGENT_ENABLE, etc. -- * ARL_OL_AGENT | ARL_OL_SNOOP | ARP_OL_HOST_AUTO_REPLY | ARP_OL_PEER_AUTO_REPLY -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_features_set(whd_interface_t ifp, uint32_t features); -- --/** Print ARP Offload Feature Flags in Human readable form to console -- * -- * @param[in] features : feature flags to set (you can OR '|' multiple flags) CY_ARP_OL_AGENT_ENABLE, etc. -- * ARL_OL_AGENT | ARL_OL_SNOOP | ARP_OL_HOST_AUTO_REPLY | ARP_OL_PEER_AUTO_REPLY -- * @param[in] title : Optional: Title for output (NULL == no title) -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_features_print(uint32_t features, const char *title); -- --/** Add ARP Offload Host IP Identifier(s) to HostIP List to Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] host_ipv4_list : pointer to host_ip data (IPv4, 1 uint32_t per ip addr) -- * @param[in] count : Number of array elements in host_ip -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_hostip_list_add(whd_interface_t ifp, uint32_t *host_ipv4_list, uint32_t count); -- --/** Add One ARP Offload Host IP Identifier to HostIP List (mbed-style IP string) to Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] ip_addr : pointer to ip string (as returned from mbedos calls) -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_hostip_list_add_string(whd_interface_t ifp, const char *ip_addr); -- --/** Clear One ARP Offload Host IP Identifier from Host IP List in Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] ipv4_addr : ip addr expressed as a uint32_t -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_hostip_list_clear_id(whd_interface_t ifp, uint32_t ipv4_addr); -- --/** Clear One ARP Offload Host IP Identifier from Host IP List (mbed-style IP string) in Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] ip_addr : pointer to ip string (as returned from mbedos calls) -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_hostip_list_clear_id_string(whd_interface_t ifp, const char *ip_addr); -- --/** Clear all ARP Offload Host IP Identifier List -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_hostip_list_clear(whd_interface_t ifp); -- --/** Get ARP Offload Host IP Identifiers from Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] count : Number of array elements in host_ip -- * @param[out] host_ipv4_list : Pointer to structure array to store host_ip data -- * @param[out] filled : Number of array elements filled by this routine -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_hostip_list_get(whd_interface_t ifp, uint32_t count, uint32_t *host_ipv4_list, uint32_t *filled); -- --/** Clear ARP Offload statistics in Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_stats_clear(whd_interface_t ifp); -- --/** Get ARP Offload statistics from Device (WLAN) -- * -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[out] stats : Ptr to store statistics whd_arp_stats_t -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_stats_get(whd_interface_t ifp, whd_arp_stats_t *stats); -- --/** Print ARP Offload statistics -- * NOTE: call whd_arp_stats_get(), then print them using this function. -- * -- * @param[in] arp_stats : Ptr to ARP statistics structure -- * @param[in] title : Optional: Title for output (NULL == no title) -- * -- * @return whd_result_t -- */ --whd_result_t whd_arp_stats_print(whd_arp_stats_t *arp_stats, const char *title); -- --/** A filter must be added (e.g. created) before it can be enabled. -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] settings : Ptr to filter settings @ref whd_packet_filter_t -- * @return whd_result_t -- */ --whd_result_t whd_pf_add_packet_filter(whd_interface_t ifp, const whd_packet_filter_t *settings); -- --/** Remove a previously added filter. -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] filter_id : filter to remove -- * @return whd_result_t -- */ --whd_result_t whd_pf_remove_packet_filter(whd_interface_t ifp, uint8_t filter_id); -- --/** After a filter has been added it can be enabled or disabled as needed. -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] filter_id : filter to enable -- * @return whd_result_t -- */ --whd_result_t whd_pf_enable_packet_filter(whd_interface_t ifp, uint8_t filter_id); -- --/** After a filter has been added it can be enabled or disabled as needed. -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] filter_id : filter to disable -- * @return whd_result_t -- */ --whd_result_t whd_pf_disable_packet_filter(whd_interface_t ifp, uint8_t filter_id); -- --/** After a filter has been added it can be enabled or disabled as needed. -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] filter_id : filter to disable/enable -- * @param[in] enable : Enable/Disable Flag -- * @return whd_result_t -- */ --whd_result_t whd_wifi_toggle_packet_filter(whd_interface_t ifp, uint8_t filter_id, whd_bool_t enable); -- --/** Filters are implemented in WLAN subsystem as a bit pattern and matching bit mask that -- * are applied to incoming packets. This API retrieves the pattern and mask. -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] filter_id : which filter to retrieve -- * @param[in] max_size : size of both mask and pattern buffers -- * @param[out] mask : mask for this filter -- * @param[out] pattern : pattern for this filter -- * @param[out] size_out : length of both mask and pattern -- * @return whd_result_t -- */ --whd_result_t whd_pf_get_packet_filter_mask_and_pattern(whd_interface_t ifp, uint8_t filter_id, uint32_t max_size, -- uint8_t *mask, -- uint8_t *pattern, uint32_t *size_out); -- --/** Clear the packet filter stats associated with a filter id -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] filter_id : which filter -- * @return whd_result_t -- */ --whd_result_t whd_wifi_clear_packet_filter_stats(whd_interface_t ifp, uint32_t filter_id); -- --/** Return the stats associated with a filter -- * @param[in] ifp : pointer to handle instance of whd interface -- * @param[in] filter_id : which filter -- * @param[out] stats : Ptr to store statistics wl_pkt_filter_stats_t -- * @return whd_result_t -- */ --whd_result_t whd_pf_get_packet_filter_stats(whd_interface_t ifp, uint8_t filter_id, whd_pkt_filter_stats_t *stats); -- --/** Set/Get TKO retry & interval parameters -- * @param[in] ifp : Pointer to handle instance of whd interface -- * @param[in] whd_tko_retry : whd retry & interval parameters structure -- * @param[in] set : Set/Get Flag -- * @return whd_result_t -- */ --whd_result_t whd_tko_param(whd_interface_t ifp, whd_tko_retry_t *whd_tko_retry, int set); -- --/** Return the tko status for all indexes -- * @param[in] ifp : Pointer to handle instance of whd interface -- * @param[out] tko_status : Ptr to store tko_status -- * @return whd_result_t -- */ --whd_result_t whd_tko_get_status(whd_interface_t ifp, whd_tko_status_t *tko_status); -- --/** Return the stats associated with a filter -- * @param[in] ifp : Pointer to handle instance of whd interface -- * @param[out] max : returns Max TCP connections supported by WLAN Firmware -- * @return whd_result_t -- */ --whd_result_t whd_tko_max_assoc(whd_interface_t ifp, uint8_t *max); -- --/** Return the stats associated with a filter -- * @param[in] ifp : Pointer to handle instance of whd interface -- * @param[in] index : index for TCP offload connection -- * @param[out] whd_connect : tko_connect structure buffer from Firmware -- * @param[in] buflen : Buffer given for tko_connect -- * @return whd_result_t -- */ --whd_result_t whd_tko_get_FW_connect(whd_interface_t ifp, uint8_t index, whd_tko_connect_t *whd_connect, -- uint16_t buflen); -- --/** Return the stats associated with a filter -- * @param[in] ifp : Pointer to handle instance of whd interface -- * @param[in] enable : Enable/Disable TCP Keepalive offload -- * @return whd_result_t -- */ --whd_result_t whd_tko_toggle(whd_interface_t ifp, whd_bool_t enable); -- -- --/* @} */ -- --/** @addtogroup wifiioctl WHD Wi-Fi IOCTL Set/Get API -- * @ingroup wifi -- * Set and get IOCTL values -- * @{ -- */ --/** Sends an IOCTL command - CDC_SET IOCTL value -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param ioctl CDC_SET - To set the I/O control -- * @param value Data value to be sent -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_ioctl_value(whd_interface_t ifp, uint32_t ioctl, uint32_t value); -- --/** Sends an IOCTL command - CDC_GET IOCTL value -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param ioctl CDC_GET - To get the I/O control -- * @param value Pointer to receive the data value -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_ioctl_value(whd_interface_t ifp, uint32_t ioctl, uint32_t *value); -- --/** Sends an IOCTL command - CDC_SET IOCTL buffer -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param ioctl CDC_SET - To set the I/O control -- * @param buffer Handle for a packet buffer containing the data value to be sent. -- * @param buffer_length Length of buffer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_ioctl_buffer(whd_interface_t ifp, uint32_t ioctl, void *buffer, uint16_t buffer_length); -- --/** Sends an IOCTL command - CDC_GET IOCTL buffer -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param ioctl CDC_GET - To get the I/O control -- * @param out_buffer Pointer to receive the handle for the packet buffer containing the response data value received -- * @param out_length Length of out_buffer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_ioctl_buffer(whd_interface_t ifp, uint32_t ioctl, uint8_t *out_buffer, -- uint16_t out_length); -- --/** Sends an IOVAR command -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param iovar_name SDPCM_GET - To get the I/O Variable -- * @param param Paramater to be passed for the IOVAR -- * @param paramlen Paramter length -- * @param out_buffer Pointer to receive the handle for the packet buffer containing the response data value received -- * @param out_length Length of out_buffer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_iovar_buffer_with_param(whd_interface_t ifp, const char *iovar_name, void *param, -- uint32_t paramlen, uint8_t *out_buffer, uint32_t out_length); -- --/* @} */ -- --/** @addtogroup dbg WHD Wi-Fi Debug API -- * @ingroup wifi -- * WHD APIs which allows debugging like, printing whd log information, getting whd stats, etc. -- * @{ -- */ --/** Retrieves the WLAN firmware version -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param version Pointer to a buffer that version information will be written to -- * @param length Length of the buffer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_wifi_version(whd_interface_t ifp, char *version, uint8_t length); -- --/** Retrieves the WLAN CLM version -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param version Pointer to a buffer that version information will be written to -- * @param length Length of the buffer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_clm_version(whd_interface_t ifp, char *version, uint8_t length); -- --/** To print whd log information -- * -- * @param whd_drv Pointer to handle instance of the driver -- * @param buffer Buffer to store read log results -- * @param buffer_size Variable to store size of the buffer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_read_wlan_log(whd_driver_t whd_drv, char *buffer, uint32_t buffer_size); -- --/** To print whd log information -- * -- * @param whd_drv Pointer to handle instance of the driver -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_print_whd_log(whd_driver_t whd_drv); -- --/** Retrieves the ifidx from interface pointer. -- * ifidx is a unique value and be used to identify a instance of tcp/ip stack -- * -- * @param ifp Pointer to the whd_interface_t -- * @param ifidx Pointer to ifidx -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_network_get_ifidx_from_ifp(whd_interface_t ifp, uint8_t *ifidx); -- --/** Retrieves the bsscfgidx from interface pointer. -- * -- * Can be used to send IOCTL with requires bsscfgidx -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param bsscfgidx Pointer to bsscfgidx -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_network_get_bsscfgidx_from_ifp(whd_interface_t ifp, uint8_t *bsscfgidx); -- -- --/** Retrives the bss info -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param bi A pointer to the structure wl_bss_info_t -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_bss_info(whd_interface_t ifp, wl_bss_info_t *bi); -- --/** Prints WHD stats -- * -- * @param whd_drv Pointer to handle instance of the driver -- * @param reset_after_print Bool variable to decide if whd_stats to be reset -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_print_stats(whd_driver_t whd_drv, whd_bool_t reset_after_print); -- --/* @} */ --/* @} */ -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* ifndef INCLUDED_WHD_WIFI_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_network_buffer.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_network_buffer.c -deleted file mode 100644 -index 1446fae34c..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_network_buffer.c -+++ /dev/null -@@ -1,114 +0,0 @@ --/***************************************************************************//** --* \file cy_network_buffer.c --* --* \brief --* Basic set of APIs for dealing with network packet buffers. This is used by WHD --* for relaying data between the network stack and the connectivity chip. --* --******************************************************************************** --* \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation --* SPDX-License-Identifier: Apache-2.0 --* --* Licensed under the Apache License, Version 2.0 (the "License"); --* you may not use this file except in compliance with the License. --* You may obtain a copy of the License at --* --* http://www.apache.org/licenses/LICENSE-2.0 --* --* Unless required by applicable law or agreed to in writing, software --* distributed under the License is distributed on an "AS IS" BASIS, --* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --* See the License for the specific language governing permissions and --* limitations under the License. --*******************************************************************************/ -- --#if 1 -- --#include --#include "cy_network_buffer.h" --#include "cy_utils.h" --#include "lwip/memp.h" --#include "whd_bus_protocol_interface.h" -- --#define SDIO_BLOCK_SIZE (64U) -- --whd_result_t cy_host_buffer_get(whd_buffer_t *buffer, whd_buffer_dir_t direction, unsigned short size, unsigned long timeout_ms) --{ -- UNUSED_PARAMETER( direction ); -- UNUSED_PARAMETER( timeout_ms ); -- struct pbuf *p = NULL; -- if ( ( direction == WHD_NETWORK_TX) && ( size <= PBUF_POOL_BUFSIZE ) ) -- { -- p = pbuf_alloc(PBUF_RAW, size, PBUF_POOL); -- } -- else -- { -- p = pbuf_alloc(PBUF_RAW, size+SDIO_BLOCK_SIZE, PBUF_RAM); -- if ( p != NULL ) -- { -- p->len = size; -- p->tot_len -= SDIO_BLOCK_SIZE; -- } -- } -- if (p != NULL ) -- { -- *buffer = p; -- return WHD_SUCCESS; -- } -- else -- { -- return WHD_BUFFER_ALLOC_FAIL; -- } --} -- --void cy_buffer_release(whd_buffer_t buffer, whd_buffer_dir_t direction) --{ -- UNUSED_PARAMETER( direction ); -- (void) pbuf_free( (struct pbuf *)buffer ); --} -- --uint8_t *cy_buffer_get_current_piece_data_pointer(whd_buffer_t buffer) --{ -- CY_ASSERT(buffer != NULL); -- struct pbuf *pbuffer= (struct pbuf*) buffer; -- return (uint8_t*) pbuffer->payload; --} -- --uint16_t cy_buffer_get_current_piece_size(whd_buffer_t buffer) --{ -- CY_ASSERT(buffer != NULL); -- struct pbuf *pbuffer = (struct pbuf*) buffer; -- return (uint16_t) pbuffer->len; --} -- --whd_result_t cy_buffer_set_size(whd_buffer_t buffer, unsigned short size) --{ -- CY_ASSERT(buffer != NULL); -- struct pbuf * pbuffer = (struct pbuf *) buffer; -- -- if ( size > (unsigned short) WHD_LINK_MTU + LWIP_MEM_ALIGN_SIZE(LWIP_MEM_ALIGN_SIZE(sizeof(struct pbuf))) + LWIP_MEM_ALIGN_SIZE(size) ) -- { -- return WHD_PMK_WRONG_LENGTH; -- } -- -- pbuffer->tot_len = size; -- pbuffer->len = size; -- -- return CY_RSLT_SUCCESS; --} -- --whd_result_t cy_buffer_add_remove_at_front(whd_buffer_t *buffer, int32_t add_remove_amount) --{ -- CY_ASSERT(buffer != NULL); -- struct pbuf **pbuffer = (struct pbuf**) buffer; -- -- if ( (u8_t) 0 != pbuf_header( *pbuffer, ( s16_t )( -add_remove_amount ) ) ) -- { -- return WHD_PMK_WRONG_LENGTH; -- } -- -- return WHD_SUCCESS; --} -- --#endif /* defined(CYBSP_WIFI_CAPABLE) */ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_network_buffer.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_network_buffer.h -deleted file mode 100644 -index 44f3872498..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_network_buffer.h -+++ /dev/null -@@ -1,185 +0,0 @@ --/***************************************************************************//** --* \file cy_network_buffer.h --* --* \brief --* Basic set of APIs for dealing with network packet buffers. This is used by WHD --* for relaying data between the network stack and the connectivity chip. --* --******************************************************************************** --* \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation --* SPDX-License-Identifier: Apache-2.0 --* --* Licensed under the Apache License, Version 2.0 (the "License"); --* you may not use this file except in compliance with the License. --* You may obtain a copy of the License at --* --* http://www.apache.org/licenses/LICENSE-2.0 --* --* Unless required by applicable law or agreed to in writing, software --* distributed under the License is distributed on an "AS IS" BASIS, --* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --* See the License for the specific language governing permissions and --* limitations under the License. --*******************************************************************************/ -- --/** --* \addtogroup group_bsp_network_buffer Buffer management --* \{ --* Basic set of APIs for dealing with network packet buffers --* --* \defgroup group_bsp_network_buffer_functions Functions --*/ -- --#ifndef __CY_NETWORK_BUFFER_H__ --#define __CY_NETWORK_BUFFER_H__ -- --#if 1 -- --#include --#include --#include "cy_result.h" --#include "whd.h" --#include "whd_network_types.h" --#include "lwip/pbuf.h" -- --#if defined(__cplusplus) --extern "C" { --#endif -- -- --/** --* \addtogroup group_bsp_network_buffer_functions --* \{ --*/ -- --/** Allocates a packet buffer -- * -- * Attempts to allocate a packet buffer of the size requested. It can do this -- * by allocating a pre-existing packet from a pool, using a static buffer, -- * or by dynamically allocating memory. The method of allocation does not -- * concern WHD, however it must match the way the network stack expects packet -- * buffers to be allocated. Usually WHD requires packet of size of WHD_LINK_MTU -- * which includes the MTU. Refer to whd_types.h to find the size of WHD_LINK_MTU. -- * -- * @param buffer : A pointer which receives the allocated packet buffer handle -- * @param direction : Indicates transmit/receive direction that the packet buffer is -- * used for. This may be needed if tx/rx pools are separate. -- * @param size : The number of bytes to allocate. -- * @param timeout_ms: Time to wait for a packet buffer to be available -- * -- * @return : CY_RSLT_SUCCESS or WHD_BUFFER_ALLOC_FAIL if the buffer could not be allocated -- */ --whd_result_t cy_host_buffer_get(whd_buffer_t *buffer, whd_buffer_dir_t direction, unsigned short size, unsigned long timeout_ms); -- --/** Releases a packet buffer -- * -- * This function is used by WHD to indicate that it no longer requires -- * a packet buffer. The buffer can then be released back into a pool for -- * reuse, or the dynamically allocated memory can be freed, according to -- * how the packet was allocated. -- * Returns void since WHD cannot do anything about failures -- * -- * @param buffer : The handle of the packet buffer to be released -- * @param direction : Indicates transmit/receive direction that the packet buffer has -- * been used for. This might be needed if tx/rx pools are separate. -- */ --void cy_buffer_release(whd_buffer_t buffer, whd_buffer_dir_t direction); -- --/** Retrieves the current pointer of a packet buffer -- * -- * Since packet buffers usually need to be created with space at the -- * front for additional headers, this function allows WHD to get -- * the current 'front' location pointer. -- * -- * @param buffer : The handle of the packet buffer whose pointer is to be retrieved -- * -- * @return : The packet buffer's current pointer. -- */ --uint8_t *cy_buffer_get_current_piece_data_pointer(whd_buffer_t buffer); -- --/** Retrieves the size of a packet buffer -- * -- * Since packet buffers usually need to be created with space at the -- * front for additional headers, the memory block used to contain a packet buffer -- * will often be larger than the current size of the packet buffer data. -- * This function allows WHD to retrieve the current size of a packet buffer's data. -- * -- * @param buffer : The handle of the packet buffer whose size is to be retrieved -- * -- * @return : The size of the packet buffer. -- */ --uint16_t cy_buffer_get_current_piece_size(whd_buffer_t buffer); -- --/** Sets the current size of a WHD packet -- * -- * This function sets the current length of a WHD packet buffer -- * -- * @param buffer : The packet to be modified -- * @param size : The new size of the packet buffer -- * -- * @return : CY_RSLT_SUCCESS or WHD_PMK_WRONG_LENGTH if the requested size is not valid -- */ --whd_result_t cy_buffer_set_size(whd_buffer_t buffer, unsigned short size); -- --/** Moves the current pointer of a packet buffer -- * -- * Since packet buffers usually need to be created with space at the front for additional headers, -- * this function allows WHD to move the current 'front' location pointer so that it has space to -- * add headers to transmit packets, and so that the network stack does not see the internal WHD -- * headers on received packets. -- * -- * @param buffer : A pointer to the handle of the current packet buffer for which the -- * current pointer will be moved. On return this may contain a pointer -- * to a newly allocated packet buffer which has been daisy chained to -- * the front of the given one. This would be the case if the given packet -- * buffer didn't have enough space at the front. -- * @param add_remove_amount : This is the number of bytes to move the current pointer of the packet -- * buffer - a negative value increases the space for headers at the front -- * of the packet, a positive value decreases the space. -- * -- * @return : CY_RSLT_SUCCESS or WHD_PMK_WRONG_LENGTH if the added amount is outside -- * the size of the buffer -- */ --whd_result_t cy_buffer_add_remove_at_front(whd_buffer_t *buffer, int32_t add_remove_amount); -- -- --/** Called by WHD to pass received data to the network stack -- * -- * Packets received from the Wi-Fi network by WHD are forwarded to by calling function ptr which -- * must be implemented in the network interface. Ethernet headers -- * are present at the start of these packet buffers. -- * -- * This function is called asynchronously in the context of the -- * WHD thread whenever new data has arrived. -- * Packet buffers are allocated within WHD, and ownership is transferred -- * to the network stack. The network stack or application is thus -- * responsible for releasing the packet buffers. -- * Most packet buffering systems have a pointer to the 'current point' within -- * the packet buffer. When this function is called, the pointer points -- * to the start of the Ethernet header. There is other inconsequential data -- * before the Ethernet header. -- * -- * It is preferable that the (whd_network_process_ethernet_data)() function simply puts -- * the received packet on a queue for processing by another thread. This avoids the -- * WHD thread being unnecessarily tied up which would delay other packets -- * being transmitted or received. -- * -- * @param interface : The interface on which the packet was received. -- * @param buffer : Handle of the packet which has just been received. Responsibility for -- * releasing this buffer is transferred from WHD at this point. -- * -- */ --void cy_network_process_ethernet_data(whd_interface_t interface, whd_buffer_t buffer); -- --/** \} group_bsp_network_buffer_functions */ -- --#ifdef __cplusplus --} --#endif /* __cplusplus */ -- --#endif /* defined(CYBSP_WIFI_CAPABLE) */ -- --/** \} group_bsp_network_buffer */ -- --#endif // __CY_NETWORK_BUFFER_H__ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_result.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_result.h -index 40b21b0f43..8277169ab9 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_result.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cy_result.h -@@ -8,7 +8,7 @@ - * - ******************************************************************************** - * \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation -+* Copyright 2018-2020 Cypress Semiconductor Corporation - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); -@@ -25,17 +25,30 @@ - *******************************************************************************/ - - /** -- * \addtogroup group_result Result Type -- * \ingroup group_abstraction -- * \{ -- * Basic function result handling. Defines a simple type for conveying -- * information about whether something succeeded or details about any issues -- * that were detected. -- * -- * \defgroup group_result_macros Macros -- */ -- --#pragma once -+* \addtogroup group_result Result Type -+* \ingroup group_abstraction -+* \{ -+* \anchor anchor_general_description -+* \brief Defines a type and related utilities for function result handling. -+* -+* The @ref cy_rslt_t type is a structured bitfield which encodes information -+* about result type, the originating module, and a code for the specific -+* error (or warning etc). In order to extract these individual fields from -+* a @ref cy_rslt_t value, the utility macros @ref CY_RSLT_GET_TYPE, @ref CY_RSLT_GET_MODULE, -+* and @ref CY_RSLT_GET_CODE are provided. For example: -+* \code -+* cy_rslt_t result = cy_hal_do_operation(arg); -+* // Will be CY_RSLT_TYPE_INFO, CY_RSLT_TYPE_WARNING, CY_RSLT_TYPE_ERROR, or CY_RSLT_TYPE_FATAL -+* uint8_t type = CY_RSLT_GET_TYPE(result) -+* // See the "Modules" section for possible values -+* uint16_t module_id = CY_RSLT_GET_MODULE(result); -+* // Specific error codes are defined by each module -+* uint16_t error_code = CY_RSLT_GET_CODE(result); -+* \endcode -+*/ -+ -+#if !defined(CY_RESULT_H) -+#define CY_RESULT_H - - #include - -@@ -44,17 +57,20 @@ extern "C" { - #endif - - /** -- * \addtogroup group_result_macros -- * \{ -- */ -+ * @brief Provides the result of an operation as a structured bitfield. -+ * -+ * See the \ref anchor_general_description "General Description" -+ * for more details on structure and usage. -+ */ -+typedef uint32_t cy_rslt_t; -+ -+/** @ref cy_rslt_t return value indicating success */ -+#define CY_RSLT_SUCCESS ((cy_rslt_t)0x00000000U) - -+/** \cond INTERNAL */ - /** Mask for the bit at position "x" */ --#define CY_BIT_MASK(x) ( (1U << (x) ) - 1U ) -+#define CY_BIT_MASK(x) ((1UL << (x)) - 1U) - --/** Bit position of the result code */ --#define CY_RSLT_CODE_POSITION (0U) --/** Bit width of the result code */ --#define CY_RSLT_CODE_WIDTH (16U) - /** Bit position of the result type */ - #define CY_RSLT_TYPE_POSITION (16U) - /** Bit width of the result type */ -@@ -63,73 +79,150 @@ extern "C" { - #define CY_RSLT_MODULE_POSITION (18U) - /** Bit width of the module identifier */ - #define CY_RSLT_MODULE_WIDTH (14U) -+/** Bit position of the result code */ -+#define CY_RSLT_CODE_POSITION (0U) -+/** Bit width of the result code */ -+#define CY_RSLT_CODE_WIDTH (16U) - --/** Mask for the result code */ --#define CY_RSLT_CODE_MASK CY_BIT_MASK(CY_RSLT_CODE_WIDTH) --/** Mask for the module identifier */ --#define CY_RSLT_MODULE_MASK CY_BIT_MASK(CY_RSLT_MODULE_WIDTH) - /** Mask for the result type */ - #define CY_RSLT_TYPE_MASK CY_BIT_MASK(CY_RSLT_TYPE_WIDTH) -+/** Mask for the module identifier */ -+#define CY_RSLT_MODULE_MASK CY_BIT_MASK(CY_RSLT_MODULE_WIDTH) -+/** Mask for the result code */ -+#define CY_RSLT_CODE_MASK CY_BIT_MASK(CY_RSLT_CODE_WIDTH) - --/** Informational-only result status */ -+/** \endcond */ -+ -+/** -+* \{ -+* @name Fields -+* Utility macros for constructing result values and extracting individual fields from existing results. -+*/ -+ -+/** -+ * @brief Get the value of the result type field -+ * @param x the @ref cy_rslt_t value from which to extract the result type -+ */ -+#define CY_RSLT_GET_TYPE(x) (((x) >> CY_RSLT_TYPE_POSITION) & CY_RSLT_TYPE_MASK) -+/** -+ * @brief Get the value of the module identifier field -+ * @param x the @ref cy_rslt_t value from which to extract the module id -+ */ -+#define CY_RSLT_GET_MODULE(x) (((x) >> CY_RSLT_MODULE_POSITION) & CY_RSLT_MODULE_MASK) -+/** -+ * @brief Get the value of the result code field -+ * @param x the @ref cy_rslt_t value from which to extract the result code -+ */ -+#define CY_RSLT_GET_CODE(x) (((x) >> CY_RSLT_CODE_POSITION) & CY_RSLT_CODE_MASK) -+ -+/** -+ * @brief Create a new @ref cy_rslt_t value that encodes the specified type, module, and result code. -+ * @param type one of @ref CY_RSLT_TYPE_INFO, @ref CY_RSLT_TYPE_WARNING, -+ * @ref CY_RSLT_TYPE_ERROR, @ref CY_RSLT_TYPE_FATAL -+ * @param module Identifies the module where this result originated; see @ref anchor_modules "Modules". -+ * @param code a module-defined identifier to identify the specific situation that -+ * this result describes. -+ */ -+#define CY_RSLT_CREATE(type, module, code) \ -+ ((((module) & CY_RSLT_MODULE_MASK) << CY_RSLT_MODULE_POSITION) | \ -+ (((code) & CY_RSLT_CODE_MASK) << CY_RSLT_CODE_POSITION) | \ -+ (((type) & CY_RSLT_TYPE_MASK) << CY_RSLT_TYPE_POSITION)) -+ -+/** \} fields */ -+ -+/** -+* \{ -+* @name Result Types -+* Defines codes to identify the type of result. -+*/ -+ -+/** @brief The result code is informational-only */ - #define CY_RSLT_TYPE_INFO (0U) --/** Warning result */ -+/** @brief The result code is warning of a problem but will proceed */ - #define CY_RSLT_TYPE_WARNING (1U) --/** Error result */ -+/** @brief The result code is an error */ - #define CY_RSLT_TYPE_ERROR (2U) --/** Fatal error result */ -+/** @brief The result code is a fatal error */ - #define CY_RSLT_TYPE_FATAL (3U) - --/** Get the value of the result code field */ --#define CY_RSLT_GET_CODE(x) ( ( (x) >> CY_RSLT_CODE_POSITION ) & CY_RSLT_CODE_MASK ) --/** Get the value of the result type field */ --#define CY_RSLT_GET_TYPE(x) ( ( (x) >> CY_RSLT_TYPE_POSITION ) & CY_RSLT_TYPE_MASK ) --/** Get the value of the module identifier field */ --#define CY_RSLT_GET_MODULE(x) ( ( (x) >> CY_RSLT_MODULE_POSITION ) & CY_RSLT_MODULE_MASK ) -- -+/** \} severity */ - -+/** -+* \{ -+* @name Modules -+* @anchor anchor_modules -+* Defines codes to identify the module from which an error originated. -+* For some large libraries, a range of module codes is defined here; -+* see the library documentation for values corresponding to individual modules. -+* Valid range is 0x0000-0x4000. -+*/ - /**** DRIVER Module codes: 0x0000 - 0x00FF ****/ --/** Base identifier for peripheral driver library */ --#define CY_RSLT_MODULE_DRIVERS_PDL_BASE (0x0000U) --/** Base identifier for peripheral driver library */ --#define CY_RSLT_MODULE_DRIVERS_WHD_BASE (0x0080U) -- --/**** ABSTRACTION Module codes: 0x0100 - 0x01FF ****/ --/** Base identifier for chip support modules */ --#define CY_RSLT_MODULE_ABSTRACTION_HAL_BASE (0x0100U) --/** Base identifier for board support modules */ --#define CY_RSLT_MODULE_ABSTRACTION_BSP (0x0180U) --/** Base identifier for file system modules */ --#define CY_RSLT_MODULE_ABSTRACTION_FS (0x0181U) --/** Base identifier for resource abstraction modules */ --#define CY_RSLT_MODULE_ABSTRACTION_RESOURCE (0x0182U) --/** Base identifier for rtos abstraction modules */ --#define CY_RSLT_MODULE_ABSTRACTION_OS (0x0183U) --/** Base identifier for environment abstraction modules */ --#define CY_RSLT_MODULE_ABSTRACTION_ENV (0x0184U) -- --/**** Middleware Module codes: 0x0200 - 0x02FF ****/ --#define CY_RSLT_MODULE_MIDDLEWARE_BASE (0x0200U) -- -- -- --/** Provides the result of an operation as a structured bitfield */ --typedef uint32_t cy_rslt_t; -- --/** Result value indicating success */ --#define CY_RSLT_SUCCESS ( (cy_rslt_t)0x00000000U ) -- --/** Create a result value from the specified type, module, and result code */ --#define CY_RSLT_CREATE(type, module, code) \ -- ( ( ( (module) & CY_RSLT_MODULE_MASK ) << CY_RSLT_MODULE_POSITION ) | \ -- ( ( (code) & CY_RSLT_CODE_MASK ) << CY_RSLT_CODE_POSITION ) | \ -- ( ( (type) & CY_RSLT_TYPE_MASK ) << CY_RSLT_TYPE_POSITION ) ) -- --/** \} group_result_macros */ -+/** Base module identifier for peripheral driver library drivers (0x0000 - 0x007F) */ -+#define CY_RSLT_MODULE_DRIVERS_PDL_BASE (0x0000U) -+/** Base module identifier for wireless host driver library modules (0x0080 - 0x00FF) */ -+#define CY_RSLT_MODULE_DRIVERS_WHD_BASE (0x0080U) -+ -+/** Deprecated. Use \ref CY_RSLT_MODULE_ABSTRACTION_HAL */ -+#define CY_RSLT_MODULE_ABSTRACTION_HAL_BASE (0x0100U) -+/** Module identifier for the Hardware Abstraction Layer */ -+#define CY_RSLT_MODULE_ABSTRACTION_HAL (0x0100U) -+/** Module identifier for board support package */ -+#define CY_RSLT_MODULE_ABSTRACTION_BSP (0x0180U) -+/** Module identifier for file system abstraction */ -+#define CY_RSLT_MODULE_ABSTRACTION_FS (0x0181U) -+/** Module identifier for resource abstraction */ -+#define CY_RSLT_MODULE_ABSTRACTION_RESOURCE (0x0182U) -+/** Module identifier for rtos abstraction */ -+#define CY_RSLT_MODULE_ABSTRACTION_OS (0x0183U) -+/** Base identifier for environment abstraction modules (0x0184 - 0x01FF) */ -+#define CY_RSLT_MODULE_ABSTRACTION_ENV (0x0184U) -+ -+/** Base module identifier for Board Libraries (0x01A0 - 0x01BF) */ -+#define CY_RSLT_MODULE_BOARD_LIB_BASE (0x01A0U) -+/** Module identifier for the Retarget IO Board Library */ -+#define CY_RSLT_MODULE_BOARD_LIB_RETARGET_IO (0x1A0U) -+/** Module identifier for the RGB LED Board Library */ -+#define CY_RSLT_MODULE_BOARD_LIB_RGB_LED (0x01A1U) -+/** Module identifier for the Serial Flash Board Library */ -+#define CY_RSLT_MODULE_BOARD_LIB_SERIAL_FLASH (0x01A2U) -+/** Module identifier for the WiFi Host Driver + Board Support Integration Library */ -+#define CY_RSLT_MODULE_BOARD_LIB_WHD_INTEGRATION (0x01A3U) -+ -+/** Base module identifier for Shield Board Libraries (0x01B8 - 0x01BF) */ -+#define CY_RSLT_MODULE_BOARD_SHIELD_BASE (0x01B8U) -+/** Module identifier for Shield Board CY8CKIT-028-EPD */ -+#define CY_RSLT_MODULE_BOARD_SHIELD_028_EPD (0x01B8U) -+/** Module identifier for Shield Board CY8CKIT-028-TFT */ -+#define CY_RSLT_MODULE_BOARD_SHIELD_028_TFT (0x01B9U) -+/** Module identifier for Shield Board CY8CKIT-032 */ -+#define CY_RSLT_MODULE_BOARD_SHIELD_032 (0x01BAU) -+ -+/** Base module identifier for Board Hardware Libraries (0x01C0 - 0x01FF) */ -+#define CY_RSLT_MODULE_BOARD_HARDWARE_BASE (0x01C0U) -+/** Module identifier for the BMI160 Motion Sensor Library */ -+#define CY_RSLT_MODULE_BOARD_HARDWARE_BMI160 (0x01C0U) -+/** Module identifier for the E2271CS021 E-Ink Controller Library */ -+#define CY_RSLT_MODULE_BOARD_HARDWARE_E2271CS021 (0x01C1U) -+/** Module identifier for the NTC GPIO Thermistor Library */ -+#define CY_RSLT_MODULE_BOARD_HARDWARE_THERMISTOR (0x01C2U) -+/** Module identifier for the SSD1306 OLED Controller Library */ -+#define CY_RSLT_MODULE_BOARD_HARDWARE_SSD1306 (0x01C3U) -+/** Module identifier for the ST7789V TFT Controller Library */ -+#define CY_RSLT_MODULE_BOARD_HARDWARE_ST7789V (0x01C4U) -+/** Module identifier for the Light Sensor Library */ -+#define CY_RSLT_MODULE_BOARD_HARDWARE_LIGHT_SENSOR (0x01C5U) -+/** Module identifier for the AK4954A Audio Codec Library */ -+#define CY_RSLT_MODULE_BOARD_HARDWARE_AK4954A (0x01C6U) -+ -+/** Base module identifier for Middleware Libraries (0x0200 - 0x02FF) */ -+#define CY_RSLT_MODULE_MIDDLEWARE_BASE (0x0200U) -+ -+/** \} modules */ - - #ifdef __cplusplus - } - #endif - --/** \} group_result */ -+#endif /* CY_RESULT_H */ - -+/** \} group_result */ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos.h -index b92a800dfd..e19ffc49f7 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos.h -@@ -9,7 +9,7 @@ - * - ******************************************************************************** - * \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation -+* Copyright 2018-2020 Cypress Semiconductor Corporation - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); -@@ -32,15 +32,23 @@ - #include "cy_result.h" - #include - #include -+#include - - /** --* \defgroup group_abstraction_rtos_common Common -+* \defgroup group_abstraction_rtos_common Common -+ * General types and defines for working with the RTOS abstraction layer. - * \defgroup group_abstraction_rtos_mutex Mutex -+ * APIs for acquiring and working with Mutexes. - * \defgroup group_abstraction_rtos_queue Queue -+ * APIs for creating and working with Queues. - * \defgroup group_abstraction_rtos_semaphore Semaphore --* \defgroup group_abstraction_rtos_threads Threading -+ * APIs for acquiring and working with Semaphores. -+* \defgroup group_abstraction_rtos_threads Threads -+ * APIs for creating and working with Threads. - * \defgroup group_abstraction_rtos_time Time -+ * APIs for getting the current time and waiting. - * \defgroup group_abstraction_rtos_timer Timer -+ * APIs for creating and working with Timers. - */ - - #ifdef __cplusplus -@@ -50,10 +58,17 @@ extern "C" - - /*********************************************** CONSTANTS **********************************************/ - --/** -- * \ingroup group_abstraction_rtos_common -- * \{ -- */ -+/** -+ * \ingroup group_abstraction_rtos_common -+ * \{ -+ */ -+ -+#if defined(DOXYGEN) -+//#include "Template/cyabs_rtos_impl.h" -+ -+/** Return value indicating success */ -+#define CY_RSLT_SUCCESS ((cy_rslt_t)0x00000000U) -+#endif - - /** Used with RTOS calls that require a timeout. This implies the call will never timeout. */ - #define CY_RTOS_NEVER_TIMEOUT ( (uint32_t)0xffffffffUL ) -@@ -61,8 +76,8 @@ extern "C" - // - // Note on error strategy. If the error is a normal part of operation (timeouts, full queues, empty - // queues), the these errors are listed here and the abstraction layer implementation must map from the --// underlying errors to these. If the errors are special cases, the the error CY_RTOS_GENERAL_ERROR can be --// returns and cy_rtos_last_error() used to retrieve the RTOS specific error message. -+// underlying errors to these. If the errors are special cases, the the error \ref CY_RTOS_GENERAL_ERROR -+// will be returned and \ref cy_rtos_last_error() can be used to retrieve the RTOS specific error message. - // - /** Requested operation did not complete in the specified time */ - #define CY_RTOS_TIMEOUT CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CY_RSLT_MODULE_ABSTRACTION_OS, 0) -@@ -72,15 +87,15 @@ extern "C" - #define CY_RTOS_GENERAL_ERROR CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CY_RSLT_MODULE_ABSTRACTION_OS, 2) - /** A bad argument was passed into the APIs */ - #define CY_RTOS_BAD_PARAM CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CY_RSLT_MODULE_ABSTRACTION_OS, 5) --/** A memory alignment issue was detected. Ensure memory provided is aligned per CY_RTOS_ALIGNMENT */ -+/** A memory alignment issue was detected. Ensure memory provided is aligned per \ref CY_RTOS_ALIGNMENT_MASK */ - #define CY_RTOS_ALIGNMENT_ERROR CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CY_RSLT_MODULE_ABSTRACTION_OS, 6) - - /** \} group_abstraction_rtos_common */ - - /** -- * \ingroup group_abstraction_rtos_queue -- * \{ -- */ -+ * \ingroup group_abstraction_rtos_queue -+ * \{ -+ */ - - /** The Queue is already full and can't accept any more items at this time */ - #define CY_RTOS_QUEUE_FULL CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CY_RSLT_MODULE_ABSTRACTION_OS, 3) -@@ -93,7 +108,7 @@ extern "C" - - /** - * The state a thread can be in -- * -+ * - * \ingroup group_abstraction_rtos_threads - */ - typedef enum cy_thread_state -@@ -108,29 +123,29 @@ typedef enum cy_thread_state - - /** - * The type of timer -- * -+ * - * \ingroup group_abstraction_rtos_timer - */ - typedef enum cy_timer_trigger_type - { - CY_TIMER_TYPE_PERIODIC, /**< called periodically until stopped */ - CY_TIMER_TYPE_ONCE, /**< called once only */ -- cy_timer_type_periodic = CY_TIMER_TYPE_PERIODIC, /**< \deprecated replaced by CY_TIMER_TYPE_PERIODIC */ -- cy_timer_type_once = CY_TIMER_TYPE_ONCE, /**< \deprecated replaced by CY_TIMER_TYPE_ONCE */ --} cy_timer_trigger_type_t ; -+ cy_timer_type_periodic = CY_TIMER_TYPE_PERIODIC, /**< \deprecated replaced by \ref CY_TIMER_TYPE_PERIODIC */ -+ cy_timer_type_once = CY_TIMER_TYPE_ONCE, /**< \deprecated replaced by \ref CY_TIMER_TYPE_ONCE */ -+} cy_timer_trigger_type_t; - - /** - * The type of a function that is the entry point for a thread - * - * @param[in] arg the argument passed from the thread create call to the entry function -- * -+ * - * \ingroup group_abstraction_rtos_threads - */ --typedef void (*cy_thread_entry_fn_t)(cy_thread_arg_t arg) ; -+typedef void (*cy_thread_entry_fn_t)(cy_thread_arg_t arg); - - /** - * The callback function to be called by a timer -- * -+ * - * \ingroup group_abstraction_rtos_timer - */ - typedef void (*cy_timer_callback_t)(cy_timer_callback_arg_t arg); -@@ -142,18 +157,17 @@ typedef void (*cy_timer_callback_t)(cy_timer_callback_arg_t arg); - * results calling convention. The underlying RTOS implementations will not but rather - * will have their own error code conventions. This function is provided as a service - * to the developer, mostly for debugging, and returns the underlying RTOS error code -- * from the last RTOS abstraction layer that returned CY_RTOS_GENERAL_ERROR. -+ * from the last RTOS abstraction layer that returned \ref CY_RTOS_GENERAL_ERROR. - * - * @return RTOS specific error code. -- * -+ * - * \ingroup group_abstraction_rtos_common - */ - cy_rtos_error_t cy_rtos_last_error(); - - /*********************************************** Threads **********************************************/ - --/* -- * -+/** - * \ingroup group_abstraction_rtos_threads - * \{ - */ -@@ -161,15 +175,15 @@ cy_rtos_error_t cy_rtos_last_error(); - /** Create a thread with specific thread argument. - * - * This function is called to startup a new thread. If the thread can exit, it must call -- * cy_rtos_finish_thread() just before doing so. All created threds that can terminate, either -- * by themselves or forcefully by another thread MUST be joined in order to cleanup any resources -- * that might have been allocated for them. -+ * \ref cy_rtos_exit_thread() just before doing so. All created threads that can terminate, either -+ * by themselves or forcefully by another thread MUST have \ref cy_rtos_join_thread() called on them -+ * by another thread in order to cleanup any resources that might have been allocated for them. - * - * @param[out] thread Pointer to a variable which will receive the new thread handle - * @param[in] entry_function Function pointer which points to the main function for the new thread - * @param[in] name String thread name used for a debugger - * @param[in] stack The buffer to use for the thread stack. This must be aligned to -- * CY_RTOS_ALIGNMENT with a size of at least CY_RTOS_MIN_STACK_SIZE. -+ * \ref CY_RTOS_ALIGNMENT_MASK with a size of at least \ref CY_RTOS_MIN_STACK_SIZE. - * If stack is null, cy_rtos_create_thread will allocate a stack from the heap. - * @param[in] stack_size The size of the thread stack in bytes - * @param[in] priority The priority of the thread. Values are operating system specific, but some -@@ -179,12 +193,11 @@ cy_rtos_error_t cy_rtos_last_error(); - * CY_THREAD_PRIORITY_HIGH - * @param[in] arg The argument to pass to the new thread - * -- * @return The status of thread create request. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of thread create request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_create_thread(cy_thread_t *thread, cy_thread_entry_fn_t entry_function, - const char *name, void *stack, uint32_t stack_size, cy_thread_priority_t priority, cy_thread_arg_t arg); - -- - /** Exit the current thread. - * - * This function is called just before a thread exits. In some cases it is sufficient -@@ -193,26 +206,26 @@ cy_rslt_t cy_rtos_create_thread(cy_thread_t *thread, cy_thread_entry_fn_t entry_ - * where the RTOS must be signaled, this function should perform that In cases operation. - * In code using RTOS services, this function should be placed at any at any location - * where the main thread function will return, exiting the thread. Threads that can -- * exit must still be joined (cy_rtos_join_thread) to ensure their resources are fully -- * cleaned up. -+ * exit must still be joined (\ref cy_rtos_join_thread) to ensure their resources are -+ * fully cleaned up. - * -- * @return The status of thread exit request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of thread exit request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_exit_thread(); - - /** Terminates another thread. - * -- * This function is called to terminate another thread and reap the resoruces claimed -- * by it thread. This should be called both when forcibly terminating another thread -+ * This function is called to terminate another thread and reap the resources claimed -+ * by the thread. This should be called both when forcibly terminating another thread - * as well as any time a thread can exit on its own. For some RTOS implementations -- * this is not required as the thread resoruces are claimed as soon as it exits. In -+ * this is not required as the thread resources are claimed as soon as it exits. In - * other cases, this must be called to reclaim resources. Threads that are terminated -- * must still be joined (cy_rtos_join_thread) to ensure their resources are fully -+ * must still be joined (\ref cy_rtos_join_thread) to ensure their resources are fully - * cleaned up. - * - * @param[in] thread Handle of the thread to terminate - * -- * @returns The status of the thread terminate. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @returns The status of the thread terminate. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_terminate_thread(cy_thread_t *thread); - -@@ -223,19 +236,19 @@ cy_rslt_t cy_rtos_terminate_thread(cy_thread_t *thread); - * - * @param[in] thread Handle of the thread to wait for - * -- * @returns The status of thread join request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @returns The status of thread join request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_join_thread(cy_thread_t *thread); - - /** Checks if the thread is running - * -- * This function is called to determine if a thread is running or not. For information on -- * the thread state, use the cy_rtos_get_thread_state() function. -+ * This function is called to determine if a thread is actively running or not. For information on -+ * the thread state, use the \ref cy_rtos_get_thread_state() function. - * - * @param[in] thread Handle of the terminated thread to delete - * @param[out] running Returns true if the thread is running, otherwise false - * -- * @returns The status of the thread running check. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @returns The status of the thread running check. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_is_thread_running(cy_thread_t *thread, bool *running); - -@@ -246,7 +259,7 @@ cy_rslt_t cy_rtos_is_thread_running(cy_thread_t *thread, bool *running); - * @param[in] thread Handle of the terminated thread to delete - * @param[out] state Returns the state the thread is currently in - * -- * @returns The status of the thread state check. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @returns The status of the thread state check. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_get_thread_state(cy_thread_t *thread, cy_thread_state_t *state); - -@@ -256,7 +269,7 @@ cy_rslt_t cy_rtos_get_thread_state(cy_thread_t *thread, cy_thread_state_t *state - * - * @param[out] thread Handle of the current running thread - * -- * @returns The status of thread join request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @returns The status of thread join request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_get_thread_handle(cy_thread_t *thread); - -@@ -265,20 +278,38 @@ cy_rslt_t cy_rtos_get_thread_handle(cy_thread_t *thread); - /*********************************************** Mutexes **********************************************/ - - /** -- * \ingroup group_abstraction_rtos_mutex -- * \{ -- */ -+ * \ingroup group_abstraction_rtos_mutex -+ * \{ -+ */ - --/** Create a mutex. -+/** Create a recursive mutex. -+ * -+ * Creates a binary mutex which can be used to synchronize between threads -+ * and between threads and ISRs. Created mutexes are recursive and support priority inheritance. - * -- * This is basically a binary mutex which can be used to synchronize between threads -- * and between threads and ISRs. -+ * This function has been replaced by \ref cy_rtos_init_mutex2 which allow for specifying -+ * whether or not the mutex supports recursion or not. - * - * @param[out] mutex Pointer to the mutex handle to be initialized - * -- * @return The status of mutex creation request. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of mutex creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ --cy_rslt_t cy_rtos_init_mutex(cy_mutex_t *mutex); -+#define cy_rtos_init_mutex(mutex) cy_rtos_init_mutex2(mutex, true) -+ -+/** Create a mutex which can support recursion or not. -+ * -+ * Creates a binary mutex which can be used to synchronize between threads and between threads and -+ * ISRs. Created mutexes can support priority inheritance if recursive. -+ * -+ * \note Not all RTOS implementations support non-recursive mutexes. In this case a recursive -+ * mutex will be created. -+ * -+ * @param[out] mutex Pointer to the mutex handle to be initialized -+ * @param[in] recursive Should the created mutex support recursion or not -+ * -+ * @return The status of mutex creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] -+ */ -+cy_rslt_t cy_rtos_init_mutex2(cy_mutex_t *mutex, bool recursive); - - /** Get a mutex. - * -@@ -290,22 +321,22 @@ cy_rslt_t cy_rtos_init_mutex(cy_mutex_t *mutex); - * - * @param[in] mutex Pointer to the mutex handle - * @param[in] timeout_ms Maximum number of milliseconds to wait while attempting to get -- * the mutex. Use the NEVER_TIMEOUT constant to wait forever. Must -- * be zero is in_isr is true -+ * the mutex. Use the \ref CY_RTOS_NEVER_TIMEOUT constant to wait forever. -+ * Must be zero if in_isr is true. - * - * @return The status of the get mutex. Returns timeout if mutex was not acquired -- * before timeout_ms period. [CY_RSLT_SUCCESS, CY_RTOS_TIMEOUT] -+ * before timeout_ms period. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_TIMEOUT, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_get_mutex(cy_mutex_t *mutex, cy_time_t timeout_ms); - - /** Set a mutex. - * - * The mutex is released allowing any other threads waiting on the mutex to -- * obtain the sempahore. -+ * obtain the semaphore. - * - * @param[in] mutex Pointer to the mutex handle - * -- * @return The status of the set mutex request. [CY_RSLT_SUCCESS, CY_RTOS_TIMEOUT] -+ * @return The status of the set mutex request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - * - */ - cy_rslt_t cy_rtos_set_mutex(cy_mutex_t *mutex); -@@ -316,7 +347,7 @@ cy_rslt_t cy_rtos_set_mutex(cy_mutex_t *mutex); - * - * @param[in] mutex Pointer to the mutex handle - * -- * @return The status to the delete request. [CY_RSLT_SUCCESS, CY_RTOS_TIMEOUT] -+ * @return The status to the delete request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_deinit_mutex(cy_mutex_t *mutex); - -@@ -325,9 +356,9 @@ cy_rslt_t cy_rtos_deinit_mutex(cy_mutex_t *mutex); - /*********************************************** Semaphores **********************************************/ - - /** -- * \ingroup group_abstraction_rtos_semaphore -- * \{ -- */ -+ * \ingroup group_abstraction_rtos_semaphore -+ * \{ -+ */ - - /** - * Create a semaphore -@@ -336,9 +367,9 @@ cy_rslt_t cy_rtos_deinit_mutex(cy_mutex_t *mutex); - * - * @param[in,out] semaphore Pointer to the semaphore handle to be initialized - * @param[in] maxcount The maximum count for this semaphore -- * @param[in] initcount The initial count for this sempahore -+ * @param[in] initcount The initial count for this semaphore - * -- * @return The status of the sempahore creation. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the semaphore creation. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_init_semaphore(cy_semaphore_t *semaphore, uint32_t maxcount, uint32_t initcount); - -@@ -351,10 +382,10 @@ cy_rslt_t cy_rtos_init_semaphore(cy_semaphore_t *semaphore, uint32_t maxcount, u - * - * @param[in] semaphore Pointer to the semaphore handle - * @param[in] timeout_ms Maximum number of milliseconds to wait while attempting to get -- * the semaphore. Use the NEVER_TIMEOUT constant to wait forever. Must -+ * the semaphore. Use the \ref CY_RTOS_NEVER_TIMEOUT constant to wait forever. Must - * be zero is in_isr is true - * @param[in] in_isr true if we are trying to get the semaphore from with an ISR -- * @return The status of get semaphore operation [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of get semaphore operation [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_TIMEOUT, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_get_semaphore(cy_semaphore_t *semaphore, cy_time_t timeout_ms, bool in_isr); - -@@ -366,18 +397,29 @@ cy_rslt_t cy_rtos_get_semaphore(cy_semaphore_t *semaphore, cy_time_t timeout_ms, - * @param[in] semaphore Pointer to the semaphore handle - * @param[in] in_isr Value of true indicates calling from interrupt context - * Value of false indicates calling from normal thread context -- * @return The status of set semaphore operation [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of set semaphore operation [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_set_semaphore(cy_semaphore_t *semaphore, bool in_isr); - - /** -- * Deletes a sempahore -+ * Get the count of a semaphore. - * -- * This function frees the resources associated with a sempahore. -+ * Gets the number of available tokens on the semaphore. -+ * -+ * @param[in] semaphore Pointer to the semaphore handle -+ * @param[out] count Pointer to the return count -+ * @return The status of get semaphore count operation [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] -+ */ -+cy_rslt_t cy_rtos_get_count_semaphore(cy_semaphore_t *semaphore, size_t *count); -+ -+/** -+ * Deletes a semaphore - * -- * @param[in] semaphore Pointer to the sempahore handle -+ * This function frees the resources associated with a semaphore. - * -- * @return The status of semaphore deletion [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @param[in] semaphore Pointer to the semaphore handle -+ * -+ * @return The status of semaphore deletion [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_deinit_semaphore(cy_semaphore_t *semaphore); - -@@ -385,10 +427,10 @@ cy_rslt_t cy_rtos_deinit_semaphore(cy_semaphore_t *semaphore); - - /*********************************************** Events **********************************************/ - --/** -- * \ingroup group_abstraction_rtos_event -- * \{ -- */ -+/** -+ * \ingroup group_abstraction_rtos_event -+ * \{ -+ */ - - /** Create an event. - * -@@ -398,7 +440,7 @@ cy_rslt_t cy_rtos_deinit_semaphore(cy_semaphore_t *semaphore); - * @param[in,out] event Pointer to the event handle to be initialized - * - * @return The status of the event initialization request. -- * [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_init_event(cy_event_t *event); - -@@ -411,7 +453,7 @@ cy_rslt_t cy_rtos_init_event(cy_event_t *event); - * @param[in] bits The value of the 32 bit flags - * @param[in] in_isr If true, this is called from an ISR, otherwise from a thread - * -- * @return The status of the set request. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the set request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_setbits_event(cy_event_t *event, uint32_t bits, bool in_isr) ; - -@@ -424,7 +466,7 @@ cy_rslt_t cy_rtos_setbits_event(cy_event_t *event, uint32_t bits, bool in_isr) ; - * @param[in] bits Any bits set in this value, will be cleared in the event. - * @param[in] in_isr if true, this is called from an ISR, otherwise from a thread - * -- * @return The status of the clear flags request. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the clear flags request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_clearbits_event(cy_event_t *event, uint32_t bits, bool in_isr) ; - -@@ -435,13 +477,13 @@ cy_rslt_t cy_rtos_clearbits_event(cy_event_t *event, uint32_t bits, bool in_isr) - * @param[in] event Pointer to the event handle - * @param[out] bits pointer to receive the value of the event flags - * -- * @return The status of the get request. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the get request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_getbits_event(cy_event_t *event, uint32_t *bits); - - /** Wait for the event and return bits. - * -- * Waits for the event to be set and then returns the bits assocaited -+ * Waits for the event to be set and then returns the bits associated - * with the event, or waits for the given timeout period. - * @note This function returns if any bit in the set is set. - * -@@ -453,7 +495,7 @@ cy_rslt_t cy_rtos_getbits_event(cy_event_t *event, uint32_t *bits); - * if false, any one bit in the initial bits value must be set to return - * @param[in] timeout The amount of time to wait in milliseconds - * -- * @return The status of the wait for event request. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the wait for event request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_waitbits_event(cy_event_t *event, uint32_t *bits, bool clear, bool all, cy_time_t timeout); - -@@ -463,7 +505,7 @@ cy_rslt_t cy_rtos_waitbits_event(cy_event_t *event, uint32_t *bits, bool clear, - * - * @param[in] event Pointer to the event handle - * -- * @return The status of the deletion request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the deletion request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_deinit_event(cy_event_t *event); - -@@ -471,10 +513,10 @@ cy_rslt_t cy_rtos_deinit_event(cy_event_t *event); - - /*********************************************** Queues **********************************************/ - --/** -- * \ingroup group_abstraction_rtos_queue -- * \{ -- */ -+/** -+ * \ingroup group_abstraction_rtos_queue -+ * \{ -+ */ - - /** Create a queue. - * -@@ -485,7 +527,7 @@ cy_rslt_t cy_rtos_deinit_event(cy_event_t *event); - * @param[in] length The maximum length of the queue in items - * @param[in] itemsize The size of each item in the queue. - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_init_queue(cy_queue_t *queue, size_t length, size_t itemsize); - -@@ -502,24 +544,24 @@ cy_rslt_t cy_rtos_init_queue(cy_queue_t *queue, size_t length, size_t itemsize); - * @param[in] timeout_ms The time to wait to place the item in the queue - * @param[in] in_isr If true this is being called from within and ISR - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR, CY_RTOS_QUEUE_FULL] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR, \ref CY_RTOS_QUEUE_FULL] - */ - cy_rslt_t cy_rtos_put_queue(cy_queue_t *queue, const void *item_ptr, cy_time_t timeout_ms, bool in_isr); - - /** Gets an item in a queue. - * -- * This function gets an item fropm the queue. The item is copied -+ * This function gets an item from the queue. The item is copied - * out of the queue into the memory provide by item_ptr. This space must be - * large enough to hold a queue entry as defined when the queue was initialized. - * - * @note If in_isr is true, timeout_ms must be zero. - * -- * @param[in] queue Pointer to the queue handle -- * @param[in] item_ptr Pointer to the memory for the item from the queue -- * @param[in] timeout_ms The time to wait to place the item in the queue -- * @param[in] in_isr If true this is being called from within and ISR -+ * @param[in] queue Pointer to the queue handle -+ * @param[in] item_ptr Pointer to the memory for the item from the queue -+ * @param[in] timeout_ms The time to wait to get an item from the queue -+ * @param[in] in_isr If true this is being called from within an ISR - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_NO_MEMORY, CY_RTOS_GENERAL_ERROR, CY_RTOS_QUEUE_EMPTY] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_NO_MEMORY, \ref CY_RTOS_GENERAL_ERROR, \ref CY_RTOS_QUEUE_EMPTY] - */ - cy_rslt_t cy_rtos_get_queue(cy_queue_t *queue, void *item_ptr, cy_time_t timeout_ms, bool in_isr); - -@@ -530,7 +572,7 @@ cy_rslt_t cy_rtos_get_queue(cy_queue_t *queue, void *item_ptr, cy_time_t timeout - * @param[in] queue Pointer to the queue handle - * @param[out] num_waiting Pointer to the return count - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_count_queue(cy_queue_t *queue, size_t *num_waiting); - -@@ -543,7 +585,7 @@ cy_rslt_t cy_rtos_count_queue(cy_queue_t *queue, size_t *num_waiting); - * @param[in] queue Pointer to the queue handle - * @param[out] num_spaces Pointer to the return count. - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_space_queue(cy_queue_t *queue, size_t *num_spaces); - -@@ -553,18 +595,18 @@ cy_rslt_t cy_rtos_space_queue(cy_queue_t *queue, size_t *num_spaces); - * - * @param[in] queue pointer to the queue handle - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_reset_queue(cy_queue_t *queue); - - /** Deinitialize the queue handle. - * -- * This function deinitializes the queue and returns all -+ * This function de-initializes the queue and returns all - * resources used by the queue. - * - * @param[in] queue Pointer to the queue handle - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_deinit_queue(cy_queue_t *queue); - -@@ -573,33 +615,32 @@ cy_rslt_t cy_rtos_deinit_queue(cy_queue_t *queue); - /*********************************************** Timers **********************************************/ - - /** -- * \ingroup group_abstraction_rtos_timer -- * \{ -- */ -+ * \ingroup group_abstraction_rtos_timer -+ * \{ -+ */ - - /** Create a new timer. - * -- * This function intializes a timer object. @note The timer is -- * not active until start is called. -+ * This function initializes a timer object. -+ * @note The timer is not active until start is called. -+ * @note The callback may be (likely will be) called from a different thread. - * -- * @param[out] timer Pointer to the timer handle to initalize -+ * @param[out] timer Pointer to the timer handle to initialize - * @param[in] type Type of timer (periodic or once) -- * @param[in] fun The functiuon -+ * @param[in] fun The function - * @param[in] arg Argument to pass along to the callback function - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_init_timer(cy_timer_t *timer, cy_timer_trigger_type_t type, - cy_timer_callback_t fun, cy_timer_callback_arg_t arg); - - /** Start a timer. -- * -- * @note The callback may be (likely will be) called from a different thread. - * - * @param[in] timer Pointer to the timer handle -- * @param[in] num_ms The number of miliseconds to wait before the timer fires -+ * @param[in] num_ms The number of milliseconds to wait before the timer fires - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_start_timer(cy_timer_t *timer, cy_time_t num_ms); - -@@ -607,7 +648,7 @@ cy_rslt_t cy_rtos_start_timer(cy_timer_t *timer, cy_time_t num_ms); - * - * @param[in] timer Pointer to the timer handle - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_stop_timer(cy_timer_t *timer); - -@@ -616,18 +657,17 @@ cy_rslt_t cy_rtos_stop_timer(cy_timer_t *timer); - * @param[in] timer Pointer to the timer handle - * @param[out] state Return value for state, true if running, false otherwise - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_is_running_timer(cy_timer_t *timer, bool *state); - - /** Deinit the timer. - * -- * This function de initializes the timer and frees all consumed -- * resources. -+ * This function deinitializes the timer and frees all consumed resources. - * - * @param[in] timer Pointer to the timer handle - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_deinit_timer(cy_timer_t *timer); - -@@ -636,9 +676,9 @@ cy_rslt_t cy_rtos_deinit_timer(cy_timer_t *timer); - /*********************************************** Time **********************************************/ - - /** -- * \ingroup group_abstraction_rtos_time -- * \{ -- */ -+ * \ingroup group_abstraction_rtos_time -+ * \{ -+ */ - - /** Gets time in milliseconds since RTOS start. - * -@@ -657,16 +697,15 @@ cy_rslt_t cy_rtos_get_time(cy_time_t *tval); - * the longest period possible which is less than the delay required, - * then makes up the difference with a tight loop. - * -- * @param[in] num_ms The number of miliseconds to delay for -+ * @param[in] num_ms The number of milliseconds to delay for - * -- * @return The status of the creation request. [CY_RSLT_SUCCESS, CY_RTOS_GENERAL_ERROR] -+ * @return The status of the creation request. [\ref CY_RSLT_SUCCESS, \ref CY_RTOS_GENERAL_ERROR] - */ - cy_rslt_t cy_rtos_delay_milliseconds(cy_time_t num_ms); - --/** \} group_abstraction_rtos_timer */ -+/** \} group_abstraction_rtos_time */ - - #ifdef __cplusplus - } /* extern "C" */ - #endif - #endif /* ifndef INCLUDED_CY_RTOS_INTERFACE_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos_impl.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos_impl.h -index bb0f4767ec..8b36a68844 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos_impl.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos_impl.h -@@ -6,7 +6,7 @@ - * - ******************************************************************************** - * \copyright --* Copyright 2019 Cypress Semiconductor Corporation -+* Copyright 2019-2020 Cypress Semiconductor Corporation - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); -@@ -37,9 +37,9 @@ extern "C" - /****************************************************** - * Constants - ******************************************************/ --#define CY_RTOS_MIN_STACK_SIZE 300 /** Minimum stack size */ -+#define CY_RTOS_MIN_STACK_SIZE 300 /** Minimum stack size in bytes */ - #define CY_RTOS_ALIGNMENT 0x00000008UL /** Minimum alignment for RTOS objects */ --#define CY_RTOS_ALIGNMENT_MASK 0x00000007UL /** Mask for checking the alignement of crated RTOS objects */ -+#define CY_RTOS_ALIGNMENT_MASK 0x00000007UL /** Mask for checking the alignment of created RTOS objects */ - - - /****************************************************** -@@ -66,7 +66,7 @@ typedef osSemaphoreId_t cy_semaphore_t; /** CMSIS definition of a - typedef osEventFlagsId_t cy_event_t; /** CMSIS definition of an event */ - typedef osMessageQueueId_t cy_queue_t; /** CMSIS definition of a message queue */ - typedef osTimerId_t cy_timer_t; /** CMSIS definition of a timer */ --typedef uint32_t cy_timer_callback_arg_t; /** Argument passed to the timer callback function */ -+typedef void * cy_timer_callback_arg_t; /** Argument passed to the timer callback function */ - typedef uint32_t cy_time_t; /** Time in milliseconds */ - typedef osStatus_t cy_rtos_error_t; /** CMSIS definition of a error status */ - -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos_rtxv5.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos_rtxv5.c -index 37de65f971..37c70fe5c7 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos_rtxv5.c -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyabs_rtos_rtxv5.c -@@ -6,7 +6,7 @@ - * - ******************************************************************************** - * \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation -+* Copyright 2018-2020 Cypress Semiconductor Corporation - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); -@@ -23,8 +23,8 @@ - *******************************************************************************/ - - #include --#include --#include "cyabs_rtos.h" -+#include -+#include - - #if defined(__cplusplus) - extern "C" { -@@ -84,6 +84,8 @@ cy_rslt_t cy_rtos_create_thread(cy_thread_t *thread, cy_thread_entry_fn_t entry_ - - if (thread == NULL || stack_size < CY_RTOS_MIN_STACK_SIZE) - status = CY_RTOS_BAD_PARAM; -+ else if (stack != NULL && (0 != (((uint32_t)stack) & CY_RTOS_ALIGNMENT_MASK))) -+ status = CY_RTOS_ALIGNMENT_ERROR; - else - { - attr.name = name; -@@ -113,10 +115,10 @@ cy_rslt_t cy_rtos_create_thread(cy_thread_t *thread, cy_thread_entry_fn_t entry_ - status = CY_RTOS_NO_MEMORY; - else - { -- assert(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -- assert(((uint32_t)attr.stack_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -- *thread = osThreadNew((osThreadFunc_t)entry_function, (void *)arg, &attr ); -- assert((*thread == attr.cb_mem) || (*thread == NULL)); -+ CY_ASSERT(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -+ CY_ASSERT(((uint32_t)attr.stack_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -+ *thread = osThreadNew((osThreadFunc_t)entry_function, arg, &attr); -+ CY_ASSERT((*thread == attr.cb_mem) || (*thread == NULL)); - status = (*thread == NULL) ? CY_RTOS_GENERAL_ERROR : CY_RSLT_SUCCESS; - } - } -@@ -126,6 +128,10 @@ cy_rslt_t cy_rtos_create_thread(cy_thread_t *thread, cy_thread_entry_fn_t entry_ - - cy_rslt_t cy_rtos_exit_thread() - { -+ /* This does not have a return statement because the osThreadExit() function -+ * does not return so the return statement would be unreachable and causes a -+ * warning for IAR compiler. -+ */ - osThreadExit(); - } - -@@ -217,12 +223,24 @@ cy_rslt_t cy_rtos_join_thread(cy_thread_t *thread) - return status; - } - -+cy_rslt_t cy_rtos_get_thread_handle(cy_thread_t *thread) -+{ -+ cy_rslt_t status = CY_RSLT_SUCCESS; -+ -+ if (thread == NULL) -+ status = CY_RTOS_BAD_PARAM; -+ else -+ *thread = osThreadGetId(); -+ -+ return status; -+} -+ - - /****************************************************** - * Mutexes - ******************************************************/ - --cy_rslt_t cy_rtos_init_mutex(cy_mutex_t *mutex) -+cy_rslt_t cy_rtos_init_mutex2(cy_mutex_t *mutex, bool recursive) - { - cy_rslt_t status; - osMutexAttr_t attr; -@@ -232,7 +250,11 @@ cy_rslt_t cy_rtos_init_mutex(cy_mutex_t *mutex) - else - { - attr.name = NULL; -- attr.attr_bits = osMutexRecursive | osMutexPrioInherit; -+ attr.attr_bits = osMutexPrioInherit; -+ if (recursive) -+ { -+ attr.attr_bits |= osMutexRecursive; -+ } - attr.cb_mem = malloc(osRtxMutexCbSize); - attr.cb_size = osRtxMutexCbSize; - -@@ -240,9 +262,9 @@ cy_rslt_t cy_rtos_init_mutex(cy_mutex_t *mutex) - status = CY_RTOS_NO_MEMORY; - else - { -- assert(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -+ CY_ASSERT(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); - *mutex = osMutexNew(&attr); -- assert((*mutex == attr.cb_mem) || (*mutex == NULL)); -+ CY_ASSERT((*mutex == attr.cb_mem) || (*mutex == NULL)); - status = (*mutex == NULL) ? CY_RTOS_GENERAL_ERROR : CY_RSLT_SUCCESS; - } - } -@@ -327,9 +349,9 @@ cy_rslt_t cy_rtos_init_semaphore(cy_semaphore_t *semaphore, uint32_t maxcount, u - status = CY_RTOS_NO_MEMORY; - else - { -- assert(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -+ CY_ASSERT(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); - *semaphore = osSemaphoreNew(maxcount, initcount, &attr); -- assert((*semaphore == attr.cb_mem) || (*semaphore == NULL)); -+ CY_ASSERT((*semaphore == attr.cb_mem) || (*semaphore == NULL)); - status = (*semaphore == NULL) ? CY_RTOS_GENERAL_ERROR : CY_RSLT_SUCCESS; - } - } -@@ -375,6 +397,19 @@ cy_rslt_t cy_rtos_set_semaphore(cy_semaphore_t *semaphore, bool in_isr) - return status; - } - -+cy_rslt_t cy_rtos_get_count_semaphore(cy_semaphore_t *semaphore, size_t *count) -+{ -+ cy_rslt_t status; -+ if (semaphore == NULL || count == NULL) -+ status = CY_RTOS_BAD_PARAM; -+ else -+ { -+ *count = osSemaphoreGetCount(*semaphore); -+ status = CY_RSLT_SUCCESS; -+ } -+ return status; -+} -+ - cy_rslt_t cy_rtos_deinit_semaphore(cy_semaphore_t *semaphore) - { - cy_rslt_t status; -@@ -422,9 +457,9 @@ cy_rslt_t cy_rtos_init_event(cy_event_t *event) - status = CY_RTOS_NO_MEMORY; - else - { -- assert(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -+ CY_ASSERT(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); - *event = osEventFlagsNew(&attr); -- assert((*event == attr.cb_mem) || (*event == NULL)); -+ CY_ASSERT((*event == attr.cb_mem) || (*event == NULL)); - status = (*event == NULL) ? CY_RTOS_GENERAL_ERROR : CY_RSLT_SUCCESS; - } - } -@@ -555,10 +590,10 @@ cy_rslt_t cy_rtos_init_queue(cy_queue_t *queue, size_t length, size_t itemsize) - status = CY_RTOS_NO_MEMORY; - else - { -- assert(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -- assert(((uint32_t)attr.mq_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -+ CY_ASSERT(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -+ CY_ASSERT(((uint32_t)attr.mq_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); - *queue = osMessageQueueNew(length, itemsize, &attr); -- assert((*queue == attr.cb_mem) || (*queue == NULL)); -+ CY_ASSERT((*queue == attr.cb_mem) || (*queue == NULL)); - status = (*queue == NULL) ? CY_RTOS_GENERAL_ERROR : CY_RSLT_SUCCESS; - } - } -@@ -698,9 +733,9 @@ cy_rslt_t cy_rtos_init_timer(cy_timer_t *timer, cy_timer_trigger_type_t type, - ? osTimerPeriodic - : osTimerOnce; - -- assert(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); -+ CY_ASSERT(((uint32_t)attr.cb_mem & CY_RTOS_ALIGNMENT_MASK) == 0UL); - *timer = osTimerNew( (osTimerFunc_t)fun, osTriggerType, (void *)arg, &attr ); -- assert((*timer == attr.cb_mem) || (*timer == NULL)); -+ CY_ASSERT((*timer == attr.cb_mem) || (*timer == NULL)); - status = (*timer == NULL) ? CY_RTOS_GENERAL_ERROR : CY_RSLT_SUCCESS; - } - } -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_gpio.cpp b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_gpio.cpp -deleted file mode 100644 -index a0fa5ffbc3..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_gpio.cpp -+++ /dev/null -@@ -1,83 +0,0 @@ --/* -- * Copyright 2020 Arduino SA -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides the porting layer for STM32 GPIOs on WHD driver -- */ -- --#include "cyhal_gpio.h" --#include "mbed.h" -- --extern pinconfig_t PinConfig[]; -- --static mbed::InterruptIn* oob_irq; --static cyhal_gpio_irq_event_t oob_event = CYHAL_GPIO_IRQ_FALL; --static cyhal_gpio_irq_handler_t oob_handler; --static void* oob_handler_arg; -- --static void cb() { -- oob_handler(oob_handler_arg, oob_event); --} -- --void cyhal_gpio_register_irq(cyhal_gpio_t pin, uint8_t intrPriority, cyhal_gpio_irq_handler_t handler, -- void *handler_arg) --{ -- if (handler && handler_arg && (oob_irq==NULL)) { -- oob_irq = new mbed::InterruptIn(PJ_5); -- oob_handler = handler; -- oob_handler_arg = handler_arg; -- } --} -- --void cyhal_gpio_irq_enable(cyhal_gpio_t pin, cyhal_gpio_irq_event_t event, bool enable) --{ -- oob_event = event; -- if (enable) { -- if (CYHAL_GPIO_IRQ_RISE) { -- oob_irq->rise(cb); -- } -- if (CYHAL_GPIO_IRQ_FALL) { -- oob_irq->fall(cb); -- } -- } else if (oob_irq != NULL) { -- delete oob_irq; -- } --} -- -- --#include -- --cy_rslt_t cyhal_gpio_init(cyhal_gpio_t pin, cyhal_gpio_direction_t direction, cyhal_gpio_drive_mode_t drvMode, bool initVal) --{ -- cy_rslt_t ret= CY_RSLT_SUCCESS; -- // printf("Port Init %s %d\n",PinConfig[pin].portname, PinConfig[pin].pinnumber); -- -- /* Ignore the parameter and take the pin config directly from a static array defintions */ -- HAL_GPIO_Init(PinConfig[pin].port, &PinConfig[pin].config); -- if (direction == CYHAL_GPIO_DIR_OUTPUT) HAL_GPIO_WritePin(PinConfig[pin].port, PinConfig[pin].config.Pin, (initVal)?GPIO_PIN_SET:GPIO_PIN_RESET); -- //if (direction == CYHAL_GPIO_DIR_OUTPUT) printf("Port %s %s %d\n",(initVal)?"High":"low",PinConfig[pin].portname, PinConfig[pin].pinnumber); -- -- return ret; --} -- -- -- --void cyhal_gpio_write(cyhal_gpio_t pin, bool value) --{ -- /*printf("Port %s %s %d\n",(value)?"High":"low",PinConfig[pin].portname, PinConfig[pin].pinnumber);*/ -- HAL_GPIO_WritePin(PinConfig[pin].port, PinConfig[pin].config.Pin, (value)?GPIO_PIN_SET:GPIO_PIN_RESET); --} -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_gpio.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_gpio.h -index c741cab1ab..08d4e5bfb1 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_gpio.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_gpio.h -@@ -2,14 +2,14 @@ - * \file cyhal_gpio.h - * - * \brief --* Provides a high level interface for interacting with the Cypress GPIO. -+* Provides a high level interface for interacting with the GPIO on Cypress devices. - * This interface abstracts out the chip specific details. If any chip specific - * functionality is necessary, or performance is critical the low level functions - * can be used directly. - * - ******************************************************************************** - * \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation -+* Copyright 2018-2020 Cypress Semiconductor Corporation - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); -@@ -26,16 +26,58 @@ - *******************************************************************************/ - - /** -- * \addtogroup group_hal_gpio GPIO (General Purpose Input Output) -- * \ingroup group_hal -- * \{ -- * High level interface for interacting with the Cypress GPIO. -- * -- * \defgroup group_hal_gpio_macros Macros -- * \defgroup group_hal_gpio_functions Functions -- * \defgroup group_hal_gpio_data_structures Data Structures -- * \defgroup group_hal_gpio_enums Enumerated Types -- */ -+* \addtogroup group_hal_gpio GPIO (General Purpose Input Output) -+* \ingroup group_hal -+* \{ -+* High level interface for configuring and interacting with general purpose input/outputs (GPIO). -+* -+* The GPIO driver provides functions to configure and initialize GPIO, and to read and write data to the pin. -+* The driver also supports interrupt generation on GPIO signals with rising, falling or both edges. -+* -+* \note The APIs in this driver need not be used if a GPIO is to be used as an input or output of peripherals like I2C or PWM. -+* The respective peripheral's driver will utilize the GPIO interface to configure and initialize its GPIO pins. -+* -+* \section subsection_gpio_features Features -+* * Configurable GPIO pin direction - \ref cyhal_gpio_direction_t -+* * Configurable GPIO pin drive modes - \ref cyhal_gpio_drive_mode_t -+* * Configurable analog and digital characteristics -+* * Configurable edge-triggered interrupts and callback assignment on GPIO events - \ref cyhal_gpio_event_t -+* -+* \section subsection_gpio_quickstart Quick Start -+* \ref cyhal_gpio_init can be used for a simple GPIO initialization by providing the pin number (pin), pin direction (direction), -+* pin drive mode (drive_mode) and the initial value on the pin (init_val). -+* -+* \section subsection_gpio_sample_snippets Code Snippets -+* -+* \subsection subsection_gpio_snippet_1 Snippet 1: Reading value from GPIO -+* The following snippet initializes GPIO pin \ref P0_0 as an input with high impedance digital drive mode and initial value = false (low). A value is read -+* from the pin and stored to a uint8_t variable (read_val). -+ -+* \snippet gpio.c snippet_cyhal_gpio_read -+ -+* \subsection subsection_gpio_snippet_2 Snippet 2: Writing value to a GPIO -+* The following snippet initializes GPIO pin \ref P0_0 as an output pin with strong drive mode and initial value = false (low). -+* A value = true (high) is written to the output driver. -+ -+* \snippet gpio.c snippet_cyhal_gpio_write -+ -+* \subsection subsection_gpio_snippet_3 Snippet 3: Reconfiguring a GPIO -+* The following snippet shows how to reconfigure a GPIO pin during run-time using the firmware. The GPIO pin \ref P0_0 -+* is first initialized as an output pin with strong drive mode. The pin is then reconfigured as an input with high impedance digital drive mode. -+* \note \ref cyhal_gpio_configure only changes the direction and the drive_mode -+* of the pin. Previously set pin value is retained. -+* -+* \snippet gpio.c snippet_cyhal_gpio_reconfigure -+ -+* \subsection subsection_gpio_snippet_4 Snippet 4: Interrupts on GPIO events -+* GPIO events can be mapped to an interrupt and assigned to a callback function. The callback function needs to be first registered and -+* then the event needs to be enabled. -+** The following snippet initializes GPIO pin \ref P0_0 as an input pin. It registers a callback function and enables detection -+* of a falling edge event to trigger the callback. -+* \note If no argument needs to be passed to the callback function then a NULL can be passed during registering.
    -+* -+* \snippet gpio.c snippet_cyhal_gpio_interrupt -+*/ - - #pragma once - -@@ -48,94 +90,77 @@ - extern "C" { - #endif /* __cplusplus */ - -+ - /******************************************************************************* - * Defines - *******************************************************************************/ - --/** -- * \addtogroup group_hal_gpio_macros -- * \{ -- */ -- - /** Integer representation of no connect pin (required to exist in all BSPs) */ --#define CYHAL_NC_PIN_VALUE ( (cyhal_gpio_t)0xFFFFFFFF ) -- --/** \} group_hal_gpio_macros */ -- -- --/** -- * \addtogroup group_hal_gpio_enums -- * \{ -- */ -+#define CYHAL_NC_PIN_VALUE (NC) - - /******************************************************************************* - * Enumerations - *******************************************************************************/ - --/** Pin IRQ events */ --typedef enum --{ -- CYHAL_GPIO_IRQ_NONE = 0, /**< No interrupt */ -- CYHAL_GPIO_IRQ_RISE = 1, /**< Interrupt on rising edge */ -- CYHAL_GPIO_IRQ_FALL = 2, /**< Interrupt on falling edge */ -- CYHAL_GPIO_IRQ_BOTH = 3, /**< Interrupt on both rising and falling edges */ --} cyhal_gpio_irq_event_t; -+/** Pin events */ -+typedef enum { -+ CYHAL_GPIO_IRQ_NONE = 0, /**< No interrupt */ -+ CYHAL_GPIO_IRQ_RISE = 1 << 0, /**< Interrupt on rising edge */ -+ CYHAL_GPIO_IRQ_FALL = 1 << 1, /**< Interrupt on falling edge */ -+ CYHAL_GPIO_IRQ_BOTH = (CYHAL_GPIO_IRQ_RISE | CYHAL_GPIO_IRQ_FALL), /**< Interrupt on both rising and falling edges */ -+} cyhal_gpio_event_t; - - /** Pin direction */ --typedef enum --{ -- CYHAL_GPIO_DIR_INPUT = 0, /**< Input pin */ -- CYHAL_GPIO_DIR_OUTPUT = 1, /**< Output pin */ -- CYHAL_GPIO_DIR_BIDIRECTIONAL = 2, /**< Input and output pin */ -+typedef enum { -+ CYHAL_GPIO_DIR_INPUT, /**< Input pin */ -+ CYHAL_GPIO_DIR_OUTPUT, /**< Output pin */ -+ CYHAL_GPIO_DIR_BIDIRECTIONAL, /**< Input and output pin */ - } cyhal_gpio_direction_t; - - /** Pin drive mode */ --typedef enum --{ -- CYHAL_GPIO_DRIVE_NONE = 0, /**< No drive; Hi-Z */ -- CYHAL_GPIO_DRIVE_ANALOG = 0, /**< Analog Hi-Z */ -- CYHAL_GPIO_DRIVE_PULLUP = 2, /**< Pull-up resistor */ -- CYHAL_GPIO_DRIVE_PULLDOWN = 3, /**< Pull-down resistor */ -- CYHAL_GPIO_DRIVE_OPENDRAINDRIVESLOW = 4, /**< Open-drain, Drives Low */ -- CYHAL_GPIO_DRIVE_OPENDRAINDRIVESHIGH = 5, /**< Open-drain, Drives High */ -- CYHAL_GPIO_DRIVE_STRONG = 6, /**< Strong output */ -- CYHAL_GPIO_DRIVE_PULLUPDOWN = 7, /**< Pull-up and pull-down resistors */ --} cyhal_gpio_drive_mode_t; -- --/** \} group_hal_gpio_enums */ -- - --/** -- * \addtogroup group_hal_gpio_data_structures -- * \{ -+/** \note When the drive_mode of the pin is set to CYHAL_GPIO_DRIVE_PULL_NONE , -+ * it is set to CYHAL_GPIO_DRIVE_STRONG if the direction -+ * of the pin is CYHAL_GPIO_DIR_OUTPUT or CYHAL_GPIO_DIR_BIDIRECTIONAL. -+ * If not, the drive_mode of the pin is set to CYHAL_GPIO_DRIVE_NONE. - */ -+typedef enum { -+ CYHAL_GPIO_DRIVE_NONE, /**< Digital Hi-Z. Input only. Input init value(s): 0 or 1 */ -+ CYHAL_GPIO_DRIVE_ANALOG, /**< Analog Hi-Z. Use only for analog purpose */ -+ CYHAL_GPIO_DRIVE_PULLUP, /**< Pull-up resistor. Input and output. Input init value(s): 1, output value(s): 0 */ -+ CYHAL_GPIO_DRIVE_PULLDOWN, /**< Pull-down resistor. Input and output. Input init value(s): 0, output value(s): 1 */ -+ CYHAL_GPIO_DRIVE_OPENDRAINDRIVESLOW, /**< Open-drain, Drives Low. Input and output. Input init value(s): 1, output value(s): 0 */ -+ CYHAL_GPIO_DRIVE_OPENDRAINDRIVESHIGH, /**< Open-drain, Drives High. Input and output. Input init value(s): 0, output value(s): 1 */ -+ CYHAL_GPIO_DRIVE_STRONG, /**< Strong output. Output only. Output init value(s): 0 or 1 */ -+ CYHAL_GPIO_DRIVE_PULLUPDOWN, /**< Pull-up and pull-down resistors. Input and output. Input init value(s): 0 or 1, output value(s): 0 or 1 */ -+ CYHAL_GPIO_DRIVE_PULL_NONE, /**< No Pull-up or pull-down resistors. Input and output. Input init value(s): 0 or 1, output value(s): 0 or 1 */ -+} cyhal_gpio_drive_mode_t; - - /** GPIO callback function type */ --typedef void (*cyhal_gpio_irq_handler_t)(void *handler_arg, cyhal_gpio_irq_event_t event); -- --/** \} group_hal_gpio_data_structures */ -- -- --/** -- * \addtogroup group_hal_gpio_functions -- * \{ -- */ -+typedef void (*cyhal_gpio_event_callback_t)(void *callback_arg, cyhal_gpio_event_t event); - - /******************************************************************************* - * Functions - *******************************************************************************/ - --/** Initialize the GPIO pin -+/** Initialize the GPIO pin
    -+ * See \ref subsection_gpio_snippet_1. - * -- * @param[in] pin The GPIO pin to initialize -- * @param[in] direction The pin direction (input/output) -- * @param[in] drvMode The pin drive mode -- * @param[in] initVal Initial value on the pin -+ * @param[in] pin The GPIO pin to initialize -+ * @param[in] direction The pin direction -+ * @param[in] drive_mode The pin drive mode -+ * @param[in] init_val Initial value on the pin - * - * @return The status of the init request -+ * -+ * Guidance for using gpio drive modes ( \ref cyhal_gpio_drive_mode_t for details). -+ * For default use drive modes: -+ * Input GPIO direction - \ref CYHAL_GPIO_DRIVE_NONE -+ * Output GPIO direction - \ref CYHAL_GPIO_DRIVE_STRONG -+ * Bidirectional GPIO - \ref CYHAL_GPIO_DRIVE_PULLUPDOWN -+ * \warning Don't use \ref CYHAL_GPIO_DRIVE_STRONG for input GPIO direction. It may cause an overcurrent issue. - */ --cy_rslt_t cyhal_gpio_init(cyhal_gpio_t pin, cyhal_gpio_direction_t direction, cyhal_gpio_drive_mode_t drvMode, -- bool initVal); -+cy_rslt_t cyhal_gpio_init(cyhal_gpio_t pin, cyhal_gpio_direction_t direction, cyhal_gpio_drive_mode_t drive_mode, bool init_val); - - /** Uninitialize the gpio peripheral and the cyhal_gpio_t object - * -@@ -143,66 +168,80 @@ cy_rslt_t cyhal_gpio_init(cyhal_gpio_t pin, cyhal_gpio_direction_t direction, cy - */ - void cyhal_gpio_free(cyhal_gpio_t pin); - --/** Set the pin direction -+/** Configure the GPIO pin
    -+ * See \ref subsection_gpio_snippet_3. - * -- * @param[in] pin The pin number -- * @param[in] direction The pin direction to be set -- * @return The status of the dir request -- */ --cy_rslt_t cyhal_gpio_direction(cyhal_gpio_t pin, cyhal_gpio_direction_t direction); -- --/** Set the input pin mode -- * -- * @param[in] pin The GPIO object -- * @param[in] drvMode The pin mode to be set -+ * @param[in] pin The GPIO pin -+ * @param[in] direction The pin direction -+ * @param[in] drive_mode The pin drive mode - * -- * @return The status of the mode request -+ * @return The status of the configure request - */ --cy_rslt_t cyhal_gpio_drivemode(cyhal_gpio_t pin, cyhal_gpio_drive_mode_t drvMode); -+cy_rslt_t cyhal_gpio_configure(cyhal_gpio_t pin, cyhal_gpio_direction_t direction, cyhal_gpio_drive_mode_t drive_mode); - --/** Set the output value for the pin. This only works for output & in_out pins. -+/** Set the output value for the pin. This only works for output & in_out pins.
    -+ * See \ref subsection_gpio_snippet_2. - * - * @param[in] pin The GPIO object - * @param[in] value The value to be set (high = true, low = false) - */ - void cyhal_gpio_write(cyhal_gpio_t pin, bool value); - --/** Read the input value. This only works for input & in_out pins. -+/** Read the input value. This only works for \ref CYHAL_GPIO_DIR_INPUT & \ref CYHAL_GPIO_DIR_BIDIRECTIONAL pins.
    -+ * See \ref subsection_gpio_snippet_1. - * - * @param[in] pin The GPIO object - * @return The value of the IO (true = high, false = low) - */ - bool cyhal_gpio_read(cyhal_gpio_t pin); - --/** Toggle the output value -- * -+/** Toggle the output value
    -+ * See \ref subsection_gpio_snippet_4. - * @param[in] pin The GPIO object - */ - void cyhal_gpio_toggle(cyhal_gpio_t pin); - --/** Register/clear an interrupt handler for the pin toggle pin IRQ event -+/** Register/clear a callback handler for pin events
    - * -- * @param[in] pin The pin number -- * @param[in] intrPriority The NVIC interrupt channel priority -- * @param[in] handler The function to call when the specified event happens. Pass NULL to unregister the handler. -- * @param[in] handler_arg Generic argument that will be provided to the handler when called, can be NULL -+ * This function will be called when one of the events enabled by \ref cyhal_gpio_enable_event occurs. -+ * -+ * See \ref subsection_gpio_snippet_4. -+ * -+ * @param[in] pin The pin number -+ * @param[in] callback The function to call when the specified event happens. Pass NULL to unregister the handler. -+ * @param[in] callback_arg Generic argument that will be provided to the callback when called, can be NULL - */ --void cyhal_gpio_register_irq(cyhal_gpio_t pin, uint8_t intrPriority, cyhal_gpio_irq_handler_t handler, -- void *handler_arg); -+void cyhal_gpio_register_callback(cyhal_gpio_t pin, cyhal_gpio_event_callback_t callback, void *callback_arg); - --/** Enable or Disable the GPIO IRQ -+/** Enable or Disable the specified GPIO event
    -+ * -+ * When an enabled event occurs, the function specified by \ref cyhal_gpio_register_callback will be called. - * -- * @param[in] pin The GPIO object -- * @param[in] event The GPIO IRQ event -- * @param[in] enable True to turn on interrupts, False to turn off -+ * See \ref subsection_gpio_snippet_4. -+ * -+ * @param[in] pin The GPIO object -+ * @param[in] event The GPIO event -+ * @param[in] intr_priority The priority for NVIC interrupt events -+ * @param[in] enable True to turn on interrupts, False to turn off - */ --void cyhal_gpio_irq_enable(cyhal_gpio_t pin, cyhal_gpio_irq_event_t event, bool enable); -+void cyhal_gpio_enable_event(cyhal_gpio_t pin, cyhal_gpio_event_t event, uint8_t intr_priority, bool enable); - --/** \} group_hal_gpio_functions */ -+/******************************************************************************* -+* Backward compatibility macro. The following code is DEPRECATED and must -+* not be used in new projects -+*******************************************************************************/ -+/** \cond INTERNAL */ -+#define cyhal_gpio_register_irq(pin, priority, handler, handler_arg) cyhal_gpio_register_callback(pin, handler, handler_arg) -+#define cyhal_gpio_irq_enable(pin, event, enable) cyhal_gpio_enable_event(pin, event, CYHAL_ISR_PRIORITY_DEFAULT, enable) -+typedef cyhal_gpio_event_t cyhal_gpio_irq_event_t; -+/** \endcond */ - - #ifdef __cplusplus - } - #endif /* __cplusplus */ - --/** \} group_hal_gpio */ -+#ifdef CYHAL_GPIO_IMPL_HEADER -+#include CYHAL_GPIO_IMPL_HEADER -+#endif /* CYHAL_GPIO_IMPL_HEADER */ - -+/** \} group_hal_gpio */ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_modules.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_modules.h -deleted file mode 100644 -index e95f8e13ab..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_modules.h -+++ /dev/null -@@ -1,86 +0,0 @@ --/***************************************************************************//** --* \file cyhal_modules.h --* --* \brief --* Provides an enum of all HAL modules types that can be used for generating --* custom cy_rslt_t items. --* --******************************************************************************** --* \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation --* SPDX-License-Identifier: Apache-2.0 --* --* Licensed under the Apache License, Version 2.0 (the "License"); --* you may not use this file except in compliance with the License. --* You may obtain a copy of the License at --* --* http://www.apache.org/licenses/LICENSE-2.0 --* --* Unless required by applicable law or agreed to in writing, software --* distributed under the License is distributed on an "AS IS" BASIS, --* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --* See the License for the specific language governing permissions and --* limitations under the License. --*******************************************************************************/ -- --/** -- * \addtogroup group_hal_modules Driver Modules -- * \ingroup group_hal -- * \{ -- * Enum definition for all HAL resource modules. -- * -- * \defgroup group_hal_modules_enums Enumerated Types -- */ -- --#pragma once -- --#include "cy_result.h" -- --#ifdef __cplusplus --extern "C" { --#endif -- -- --/** -- * \addtogroup group_hal_modules_enums -- * \{ -- */ -- --/** Enum to in indicate which module an errors occurred in. */ --enum cyhal_rslt_module_chip --{ -- CYHAL_RSLT_MODULE_CHIP_HWMGR = CY_RSLT_MODULE_ABSTRACTION_HAL_BASE, //!< An error occurred in hardware management module -- CYHAL_RSLT_MODULE_ADC, //!< An error occurred in ADC module -- CYHAL_RSLT_MODULE_COMP, //!< An error occurred in comparator module -- CYHAL_RSLT_MODULE_CRC, //!< An error occurred in crypto CRC module -- CYHAL_RSLT_MODULE_DAC, //!< An error occurred in DAC module -- CYHAL_RSLT_MODULE_DMA, //!< An error occurred in DMA module -- CYHAL_RSLT_MODULE_FLASH, //!< An error occurred in flash module -- CYHAL_RSLT_MODULE_GPIO, //!< An error occurred in GPIO module -- CYHAL_RSLT_MODULE_I2C, //!< An error occurred in I2C module -- CYHAL_RSLT_MODULE_I2S, //!< An error occurred in I2S module -- CYHAL_RSLT_MODULE_INTERCONNECT, //!< An error occurred in Interconnct module -- CYHAL_RSLT_MODULE_OPAMP, //!< An error occurred in OpAmp module -- CYHAL_RSLT_MODULE_PDMPCM, //!< An error occurred in PDM/PCM module -- CYHAL_RSLT_MODULE_PWM, //!< An error occurred in PWM module -- CYHAL_RSLT_MODULE_QSPI, //!< An error occurred in QSPI module -- CYHAL_RSLT_MODULE_RTC, //!< An error occurred in RTC module -- CYHAL_RSLT_MODULE_SDHC, //!< An error occurred in SDHC module -- CYHAL_RSLT_MODULE_SDIO, //!< An error occurred in SDIO module -- CYHAL_RSLT_MODULE_SPI, //!< An error occurred in SPI module -- CYHAL_RSLT_MODULE_SYSTEM, //!< An error occurred in System module -- CYHAL_RSLT_MODULE_TIMER, //!< An error occurred in Timer module -- CYHAL_RSLT_MODULE_TRNG, //!< An error occurred in RNG module -- CYHAL_RSLT_MODULE_UART, //!< An error occurred in UART module -- CYHAL_RSLT_MODULE_USB, //!< An error occurred in USB module -- CYHAL_RSLT_MODULE_WDT, //!< An error occurred in WDT module --}; -- --/** \} group_hal_modules_enums */ -- --#if defined(__cplusplus) --} --#endif /* __cplusplus */ -- --/** \} group_hal_modules */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_sdio.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_sdio.c -deleted file mode 100644 -index 101bd09c65..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_sdio.c -+++ /dev/null -@@ -1,799 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides the porting layer for STM32 SDIO on WHD driver -- */ -- --#include --#include --#include "whd_thread.h" --#include "bus_protocols/whd_bus_sdio_protocol.h" --#include "cyabs_rtos.h" --#include "cyhal_sdio.h" --static int num=0; -- --#define STM32H753xx -- --#if defined (STM32H753xx) --#define MEMCPY_RX --#define COMMAND_FINISHED_CMD52_TIMEOUT_LOOPS (100000) --#define COMMAND_FINISHED_CMD53_TIMEOUT_LOOPS (100000) --#define SDIO_TX_RX_COMPLETE_TIMEOUT_LOOPS (100000) --//#define SDIO_1_BIT --//#define SLOW_SDIO_CLOCK -- --#else --#define SLOW_SDIO_CLOCK -- --#define COMMAND_FINISHED_CMD52_TIMEOUT_LOOPS (1000) --#define COMMAND_FINISHED_CMD53_TIMEOUT_LOOPS (1000) --#define SDIO_TX_RX_COMPLETE_TIMEOUT_LOOPS (1000) --#endif -- --#if defined(STM32H753xx) --#define SDIO_RESPONSE_SHORT SDMMC_RESPONSE_SHORT --#define SDIO_WAIT_NO SDMMC_WAIT_NO --#define SDIO_CPSM_ENABLE SDMMC_CPSM_ENABLE --#define SDIO_CMDTRANS SDMMC_CMD_CMDTRANS --#define SDIO_FLAG_CMDACT (SDMMC_STA_CPSMACT | SDMMC_STA_DPSMACT) --#define SDIO_TRANSFER_DIR_TO_SDIO SDMMC_TRANSFER_DIR_TO_SDMMC --#define SDIO_TRANSFER_DIR_TO_CARD SDMMC_TRANSFER_DIR_TO_CARD --#define SDIO_TRANSFER_MODE_BLOCK SDMMC_TRANSFER_MODE_BLOCK --#define SDIO_DPSM_ENABLE SDMMC_DPSM_ENABLE --#define SDIO_DPSM_DISABLE SDMMC_DPSM_DISABLE --#define SDIO_DCTRL_SDIOEN SDMMC_DCTRL_SDIOEN /* 1 << 11 */ --#define SDIO_DCTRL_DTMODE_1 SDMMC_DCTRL_DTMODE_1 /* 1<<3 */ --#define SDIO_STA_DTIMEOUT SDMMC_STA_DTIMEOUT --#define SDIO_STA_CTIMEOUT SDMMC_STA_CTIMEOUT --#define SDIO_STA_CCRCFAIL SDMMC_STA_CCRCFAIL --#define SDIO_STA_DCRCFAIL SDMMC_STA_DCRCFAIL --#define SDIO_STA_TXUNDERR SDMMC_STA_TXUNDERR --#define SDIO_STA_RXOVERR SDMMC_STA_RXOVERR --#define SDIO_STA_TXACT SDMMC_STA_CPSMACT --#define SDIO_STA_RXACT SDMMC_STA_DPSMACT --#define SDIO_STA_CMDREND SDMMC_STA_CMDREND --#define SDIO_STA_CMDSENT SDMMC_STA_CMDSENT --#define SDIO_CMD_CMDTRANS SDMMC_CMD_CMDTRANS --#define SDIO SDMMC2 -- --#else --#define SDIO_CMD_CMDTRANS 0 --#endif -- -- --#define SDIO_DMA_TIMEOUT_LOOPS (1000000) --#define BUS_LEVEL_MAX_RETRIES 10 -- --#define SDIO_CMD_5 5 --#define SDIO_CMD_53 53 -- --#define SDIO_STA_STBITERR ((uint32_t)0x00000200) /*!b)?a:b -- -- -- --extern pinconfig_t PinConfig[]; --extern SD_HandleTypeDef hsd; -- -- -- -- --static whd_driver_t whd_handler; --static cyhal_sdio_irq_handler_t sdio_irq_handler; -- --#ifdef MEMCPY_RX --static uint8_t temp_dma_buffer[2048] __attribute__ ((aligned (8)));; --#endif --static uint8_t* user_data; --static uint32_t user_data_size; --static uint8_t* dma_data_source; --static uint32_t dma_transfer_size; --static cyhal_transfer_t current_transfer_direction; -- -- --static cy_semaphore_t sdio_transfer_finished_semaphore; --volatile static uint32_t sdio_transfer_failed=0; --volatile static uint32_t irqstatus=0; --static int current_command=0; -- -- --cy_rslt_t cyhal_sdio_init(cyhal_sdio_t *obj, cyhal_gpio_t cmd, cyhal_gpio_t clk, cyhal_gpio_t data0, cyhal_gpio_t data1, -- cyhal_gpio_t data2, cyhal_gpio_t data3) --{ -- cy_rslt_t ret= CY_RSLT_SUCCESS; -- -- __HAL_RCC_GPIOB_CLK_ENABLE(); -- __HAL_RCC_GPIOC_CLK_ENABLE(); -- __HAL_RCC_GPIOD_CLK_ENABLE(); -- __HAL_RCC_GPIOG_CLK_ENABLE(); -- __HAL_RCC_GPIOJ_CLK_ENABLE(); -- __HAL_RCC_SDMMC2_CLK_ENABLE(); -- -- HAL_GPIO_Init(PinConfig[cmd].port, &PinConfig[cmd].config); -- HAL_GPIO_Init(PinConfig[clk].port, &PinConfig[clk].config); -- HAL_GPIO_Init(PinConfig[data0].port, &PinConfig[data0].config); -- HAL_GPIO_Init(PinConfig[data1].port, &PinConfig[data1].config); -- HAL_GPIO_Init(PinConfig[data2].port, &PinConfig[data2].config); -- HAL_GPIO_Init(PinConfig[data3].port, &PinConfig[data3].config); -- --#if defined(STM32H753xx) -- /* Reset SDIO Block */ -- SDMMC_PowerState_OFF( SDMMC2 ); -- __HAL_RCC_SDMMC2_FORCE_RESET( ); -- __HAL_RCC_SDMMC2_RELEASE_RESET( ); -- -- /* Enable the SDIO Clock */ -- __HAL_RCC_SDMMC2_CLK_ENABLE( ); --#else -- __HAL_RCC_SDIO_CLK_ENABLE(); --#endif -- -- #if !(defined(DUAL_CORE) && defined(CORE_CM4)) -- /* Disable DCache for STM32H7 family */ -- SCB_CleanDCache(); -- SCB_DisableDCache(); -- #endif -- -- //printf("in init: %d\n", sdio_transfer_finished_semaphore); -- -- // Lower speed configuration --#if defined(STM32H753xx) -- -- -- -- SDMMC_InitTypeDef sdio_init_structure; -- -- sdio_init_structure.ClockDiv = SDMMC_INIT_CLK_DIV; -- sdio_init_structure.ClockEdge = SDMMC_CLOCK_EDGE_RISING; -- sdio_init_structure.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; -- sdio_init_structure.BusWide = SDMMC_BUS_WIDE_1B; -- sdio_init_structure.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE; -- ret = SDMMC_Init( SDMMC2, sdio_init_structure ); -- ret |= SDMMC_PowerState_ON( SDMMC2 ); -- ret |= SDMMC_SetSDMMCReadWaitMode( SDMMC2, SDMMC_READ_WAIT_MODE_CLK ); -- if ( ret ) -- { -- return ret; -- } -- -- /* Clear all SDIO interrupts */ -- SDMMC2->ICR = (uint32_t) 0xffffffff; -- -- /* Turn on SDIO IRQ */ -- /* Must be lower priority than the value of configMAX_SYSCALL_INTERRUPT_PRIORITY */ -- /* otherwise FreeRTOS will not be able to mask the interrupt */ -- /* keep in mind that ARMCM7 interrupt priority logic is inverted, the highest value */ -- /* is the lowest priority */ -- HAL_NVIC_EnableIRQ( (IRQn_Type) SDMMC2_IRQn ); -- HAL_NVIC_SetPriority(SDMMC2_IRQn, 5, 0); -- -- //printf("after enable sdio: %d\n", sdio_transfer_finished_semaphore); -- -- --#else -- hsd.Instance = SDIO; -- hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING; -- hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE; -- hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; -- hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_ENABLE; -- hsd.Init.BusWide = SDIO_BUS_WIDE_1B; -- hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE; -- hsd.Init.ClockDiv = 120; /* 48Khz/ 120 = 400 Khz */ -- -- -- /* Initialize SDIO peripheral interface with default configuration */ -- SDIO_Init(hsd.Instance, hsd.Init); -- -- /* Disable SDIO Clock */ -- __HAL_SD_DISABLE(&hsd); -- -- /* Set Power State to ON */ -- SDIO_PowerState_ON(hsd.Instance); -- -- *(__IO uint32_t *) DCTRL_RWMOD_BB = ((uint32_t)0x00000001); -- -- /* Enable SDIO Clock */ -- __HAL_SD_ENABLE(&hsd); -- -- /* Required power up waiting time before starting the SD initialization sequence */ -- HAL_Delay(2U); -- -- /* Turn on SDIO IRQ */ -- SDIO->ICR = (uint32_t) 0xffffffff; -- -- /* Must be lower priority than the value of configMAX_SYSCALL_INTERRUPT_PRIORITY */ -- /* otherwise FreeRTOS will not be able to mask the interrupt */ -- /* keep in mind that ARMCM3 interrupt priority logic is inverted, the highest value */ -- /* is the lowest priority */ -- NVIC_EnableIRQ( ( IRQn_Type ) SDIO_IRQn ); -- NVIC_EnableIRQ( ( IRQn_Type ) DMA2_Stream3_IRQn ); -- -- HAL_NVIC_SetPriority(SDIO_IRQn, 5, 0); -- HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 5, 0); --#endif -- -- if (cy_rtos_init_semaphore(&sdio_transfer_finished_semaphore, 1, 0) != WHD_SUCCESS) -- { -- cy_rtos_deinit_semaphore(&sdio_transfer_finished_semaphore); -- return -1; -- } -- -- //printf("cy_rtos_init_semaphore: %d\n", sdio_transfer_finished_semaphore); -- -- return CY_RSLT_SUCCESS; --} -- -- --//uint32_t SDMMC_GetCmdResp1(SDIO_TypeDef *SDIOx, uint8_t SD_CMD, uint32_t Timeout); --cy_rslt_t cyhal_sdio_send_cmd(const cyhal_sdio_t *obj, cyhal_transfer_t direction, cyhal_sdio_command_t command, -- uint32_t argument, uint32_t *response) -- --{ -- uint32_t loop_count = 0; -- cy_rslt_t result; -- uint16_t attempts = 0; -- uint32_t temp_sta; -- if ( response != NULL ) -- { -- *response = 0; -- } -- current_command = 0; -- //platform_mcu_powersave_disable(); -- -- /* Ensure the bus isn't stuck half way through transfer */ -- //DMA2_Stream3->CR = 0; -- //PRINTF("power %lx\nclockcr %lx\n",SDIO->POWER,SDIO->CLKCR); -- --restart: -- SDIO->ICR = (uint32_t) 0xFFFFFFFF; -- ++attempts; -- -- /* Check if we've tried too many times */ -- if (attempts >= (uint16_t) BUS_LEVEL_MAX_RETRIES) -- { -- /* WWD_SDIO_RETRIES_EXCEEDED */ -- result = -1; -- goto exit; -- } -- -- -- /* Send the command */ -- SDIO->ARG = argument; -- SDIO->CMD = (uint32_t) ( command | SDIO_RESPONSE_SHORT | SDIO_WAIT_NO | SDIO_CPSM_ENABLE ); -- loop_count = (uint32_t) COMMAND_FINISHED_CMD52_TIMEOUT_LOOPS; -- do -- { -- temp_sta = SDIO->STA; -- loop_count--; -- if ( loop_count == 0 || (( response != NULL) && (( temp_sta & SDIO_ERROR_MASK ) != 0)) ) -- { -- WPRINT_MACRO( ("Restart single access loop count %ld stat %lx\n",loop_count,temp_sta) ); -- HAL_Delay(10U); -- goto restart; -- } -- } while ( ( temp_sta & SDIO_FLAG_CMDACT ) != 0); -- --#if defined(STM32F412xG) -- /* Errata */ -- if (command == SDIO_CMD_5) -- SDIO->ICR = SDIO_ICR_CCRCFAILC; --#endif -- -- if ( response != NULL ) -- { -- *response = SDIO->RESP1; -- } -- result = CY_RSLT_SUCCESS; -- --exit: -- -- if (result) -- { -- WPRINT_MACRO( ("SDIO->POWER %lx \n",SDIO->POWER) ); -- WPRINT_MACRO( ("SDIO->CLKCR %lx \n",SDIO->CLKCR) ); -- WPRINT_MACRO( ("result %lx \n", result) ); -- WPRINT_MACRO( ("cyhal_sdio_send_cmd %s\n",(result==0)? "Passed":"Failed") ); -- //while(1); -- } -- // platform_mcu_powersave_enable(); --#if !defined(STM32F412xG) && !defined(STM32H753xx) -- SDIO->MASK = SDIO_MASK_SDIOITIE; --#endif --#if defined(STM32H753xx) -- SDMMC2->CMD = 0; --#endif -- -- //PRINTF("%d %s cmd 0x%x arg 0x%x resp 0x%x\n",num++,(direction!=CYHAL_READ)?"Write":"Read",command,argument,(response)?*response:0); -- return result; --} -- -- -- --#if defined(STM32H753xx) --cy_rslt_t sdio_enable_high_speed(void) { -- SDMMC_InitTypeDef sdio_init_structure; -- --#ifdef SLOW_SDIO_CLOCK -- sdio_init_structure.ClockDiv = (uint8_t) 10; /* 10 = 10 MHz if SDIO clock = 200MHz */ --#else -- sdio_init_structure.ClockDiv = SDMMC_HSpeed_CLK_DIV; --#endif -- sdio_init_structure.ClockEdge = SDMMC_CLOCK_EDGE_RISING; -- sdio_init_structure.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; --#ifndef SDIO_1_BIT -- sdio_init_structure.BusWide = SDMMC_BUS_WIDE_4B; --#else -- sdio_init_structure.BusWide = SDMMC_BUS_WIDE_1B; --#endif -- sdio_init_structure.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_ENABLE; -- -- SDMMC_Init( SDMMC2, sdio_init_structure ); -- return CY_RSLT_SUCCESS; --} --#else -- --cy_rslt_t sdio_enable_high_speed(void) { -- -- hsd.Instance = SDIO; -- hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING; -- hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE; -- hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; -- --#ifndef SDIO_1_BIT -- hsd.Init.BusWide = SDIO_BUS_WIDE_4B; --#else -- hsd.Init.BusWide = SDIO_BUS_WIDE_1B; --#endif -- hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE; -- --#ifdef SLOW_SDIO_CLOCK -- hsd.Init.ClockDiv = 1; //30OK , 15 failed ? 48Mhz / 120 < 400 Khz --#else -- hsd.Init.ClockDiv = 0; //48Khz / 120 < 400 Khz --#endif -- -- /* Initialize SDIO peripheral interface with new configuration */ -- SDIO_Init(hsd.Instance, hsd.Init); -- -- /* Set Power State to ON */ -- SDIO_PowerState_ON(hsd.Instance); -- -- *(__IO uint32_t *) DCTRL_RWMOD_BB = ((uint32_t)0x00000001); -- -- /* Enable SDIO Clock */ -- __HAL_SD_ENABLE(&hsd); -- __SDIO_DMA_ENABLE(&hsd) ; -- return CY_RSLT_SUCCESS; --} --#endif -- --static uint32_t find_optimal_block_size(uint32_t data_size ) --{ -- if ( data_size > (uint32_t) 256 ) -- return 512; -- if ( data_size > (uint32_t) 128 ) -- return 256; -- if ( data_size > (uint32_t) 64 ) -- return 128; -- if ( data_size > (uint32_t) 32 ) -- return 64; -- if ( data_size > (uint32_t) 16 ) -- return 32; -- if ( data_size > (uint32_t) 8 ) -- return 16; -- if ( data_size > (uint32_t) 4 ) -- return 8; -- if ( data_size > (uint32_t) 2 ) -- return 4; -- -- return 4; --} -- -- -- -- --static uint32_t sdio_get_blocksize(uint32_t blocksize) --{ -- uint32_t n=0; -- blocksize>>=1; -- while(blocksize) -- { -- n++; -- blocksize>>=1; -- } -- n<<=4; -- return n; --} -- uint32_t dctrl; -- --static void sdio_prepare_data_transfer( cyhal_transfer_t direction, uint32_t block_size, uint8_t* data, uint16_t data_size ) --{ -- /* Setup a single transfer using the temp buffer */ -- user_data = data; -- user_data_size = data_size; -- dma_transfer_size = (uint32_t) ( ( ( data_size + (uint16_t) block_size - 1 ) / (uint16_t) block_size ) * (uint16_t) block_size ); -- -- if ( direction == CYHAL_WRITE ) -- { --#if defined (STM32H753xx) -- #if !(defined(DUAL_CORE) && defined(CORE_CM4)) -- //SCB_CleanDCache_by_Addr ((uint32_t *)data, data_size+32); -- SCB_CleanDCache_by_Addr ((uint32_t *)dma_data_source, data_size+32); -- #endif --#endif -- #ifdef MEMCPY_RX -- memcpy(temp_dma_buffer, data, data_size); -- dma_data_source = temp_dma_buffer; -- #else -- dma_data_source = data; -- #endif -- } -- else -- { --#ifdef MEMCPY_RX -- dma_data_source = (uint8_t*)temp_dma_buffer; --#else -- dma_data_source = data; --#endif -- //VIKR -- //memset(dma_data_source,0x12,data_size); -- --#if !(defined(DUAL_CORE) && defined(CORE_CM4)) -- /* Cache-Invalidate the output from DMA */ -- //SCB_InvalidateDCache_by_Addr((uint32_t *)dma_data_source , data_size+32); -- SCB_CleanDCache_by_Addr ((uint32_t *)dma_data_source, data_size+32); --#endif -- } -- -- SDIO->DTIMER = (uint32_t) 0xFFFFFFFF; -- SDIO->DLEN = dma_transfer_size; --#if defined (STM32H753xx) -- dctrl= sdio_get_blocksize(block_size) | ((direction==CYHAL_READ)? SDIO_TRANSFER_DIR_TO_SDIO:SDIO_TRANSFER_DIR_TO_CARD) | SDIO_TRANSFER_MODE_BLOCK | SDIO_DPSM_DISABLE | SDIO_DCTRL_SDIOEN; -- SDIO->DCTRL = dctrl; --#else -- SDIO->DCTRL = sdio_get_blocksize(block_size) | ((direction==CYHAL_READ)? SDIO_TRANSFER_DIR_TO_SDIO:SDIO_TRANSFER_DIR_TO_CARD) | SDIO_TRANSFER_MODE_BLOCK | SDIO_DPSM_ENABLE | SDIO_DCTRL_DTMODE_1 | SDIO_DCTRL_SDIOEN; --#endif -- --#if defined (STM32H753xx) -- SDMMC2->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; -- SDMMC2->IDMABASE0 = (uint32_t) dma_data_source; --#else -- /* DMA2 Stream3 */ -- DMA2_Stream3->CR = 0; -- DMA2->LIFCR = (uint32_t) ( 0x3F << 22 ); -- DMA2_Stream3->FCR = (uint32_t) ( 0x00000021 | DMA_FIFOMODE_ENABLE | DMA_FIFO_THRESHOLD_FULL ); -- DMA2_Stream3->PAR = (uint32_t) &SDIO->FIFO; -- DMA2_Stream3->M0AR = (uint32_t) dma_data_source; -- DMA2_Stream3->NDTR = dma_transfer_size/4; --#endif --} -- -- --void sdio_enable_bus_irq( void ) --{ --#if defined(STM32F412xG) -- SDIO->MASK = SDIO_MASK_CMDRENDIE | SDIO_MASK_CMDSENTIE; --#elif defined (STM32H753xx) -- SDMMC2->MASK = SDMMC_IT_RXOVERR | SDMMC_IT_TXUNDERR | SDMMC_IT_DATAEND | SDMMC_IT_CMDREND | SDMMC_IT_CMDSENT; --#else -- SDIO->MASK = SDIO_MASK_SDIOITIE | SDIO_MASK_CMDRENDIE | SDIO_MASK_CMDSENTIE; --#endif -- --} -- --static volatile bool sdio_transfer_finished_var; -- --cy_rslt_t cyhal_sdio_bulk_transfer(cyhal_sdio_t *obj, cyhal_transfer_t direction, uint32_t argument, -- const uint32_t *data, uint16_t length, uint32_t *response) -- --{ -- cy_rslt_t result; -- -- uint32_t loop_count = 0; -- uint16_t attempts = 0; -- uint32_t block_size=64; -- sdio_cmd_argument_t arg; -- uint32_t cmd; -- current_command = SDIO_CMD_53; -- current_transfer_direction = direction; -- arg.value = argument; -- sdio_enable_bus_irq(); -- if ( response != NULL ) -- { -- *response = 0; -- } -- -- /* Ensure the bus isn't stuck half way through transfer */ -- // DMA2_Stream3->CR = 0; -- --restart: -- -- sdio_transfer_failed=0; -- SDMMC2->ICR = (uint32_t) 0xFFFFFFFF; -- ++attempts; -- -- /* Check if we've tried too many times */ -- if (attempts >= (uint16_t) BUS_LEVEL_MAX_RETRIES) -- { -- /* WWD_SDIO_RETRIES_EXCEEDED */ -- WPRINT_MACRO(("Too much attempt\n")); -- result = -1; -- goto exit; -- } -- -- /* Dodgy STM32 hack to set the CMD53 byte mode size to be the same as the block size */ -- if ( arg.cmd53.block_mode == 0 ) -- { -- block_size = find_optimal_block_size( arg.cmd53.count ); -- if ( block_size < SDIO_512B_BLOCK ) -- { -- arg.cmd53.count = block_size; -- } -- else -- { -- arg.cmd53.count = 0; -- } -- argument = arg.value; -- } -- -- SDMMC2->CMD |= SDMMC_CMD_CMDTRANS; -- -- /* Prepare the SDIO for a data transfer */ -- sdio_prepare_data_transfer( direction, block_size, (uint8_t*) data, (uint32_t) length ); -- -- sdio_transfer_finished_var = false; -- -- /* Send the command */ -- //PRINTF("%d bs=%d argument=%x\n",num++,block_size,argument); -- SDMMC2->ARG = argument; -- cmd = (uint32_t) ( SDIO_CMD_53 | SDMMC_RESPONSE_SHORT | SDMMC_WAIT_NO | SDMMC_CPSM_ENABLE | SDMMC_CMD_CMDTRANS ); -- SDMMC2->CMD = cmd; -- /* Wait for the whole transfer to complete */ -- -- //printf("cy_rtos_get_semaphore: %d\n", sdio_transfer_finished_semaphore); -- --#if 0 -- uint32_t start = HAL_GetTick(); -- result = CY_RSLT_SUCCESS; -- while (sdio_transfer_finished_var == false && ((HAL_GetTick() - start) < 50)) { -- -- } -- if ((HAL_GetTick() - start) >= 50) { -- result = -1; -- } --#else -- result = cy_rtos_get_semaphore(&sdio_transfer_finished_semaphore, 50, WHD_FALSE); --#endif -- if ( result != CY_RSLT_SUCCESS ) -- { -- WPRINT_MACRO(("failed getting semaphore\n")); -- goto exit; -- } -- if ( sdio_transfer_failed ) -- { -- WPRINT_MACRO( ("try again sdio_transfer_failed %x irq %x\n",sdio_transfer_failed,irqstatus) ); -- goto restart; -- } -- /* Check if there were any SDIO errors */ -- if ( ( SDIO->STA & ( SDIO_STA_DTIMEOUT | SDIO_STA_CTIMEOUT ) ) != 0 ) -- { -- WPRINT_MACRO(("sdio errors SDIO_STA_DTIMEOUT | SDIO_STA_CTIMEOUT\n")); -- goto restart; -- } -- else if ( ( ( SDIO->STA & ( SDIO_STA_CCRCFAIL | SDIO_STA_DCRCFAIL | SDIO_STA_TXUNDERR | SDIO_STA_RXOVERR ) ) != 0 ) ) -- { -- WPRINT_MACRO(("sdio errors SDIO_STA_CCRCFAIL | SDIO_STA_DCRCFAIL | SDIO_STA_TXUNDERR | SDIO_STA_RXOVER \n")); -- goto restart; -- } -- --#if 0 -- /* Wait till complete */ -- loop_count = (uint32_t) SDIO_TX_RX_COMPLETE_TIMEOUT_LOOPS*1000; -- do -- { -- loop_count--; -- if ( loop_count == 0 || ( ( SDIO->STA & SDIO_ERROR_MASK ) != 0 ) ) -- { -- PRINTF("sdio errors SDIO->STA & SDIO_ERROR_MASK or TO , loopct=%d \n",loop_count); -- goto restart; -- } -- } while ( ( SDIO->STA & ( SDIO_STA_TXACT | SDIO_STA_RXACT ) ) != 0 ); --#endif -- --#ifdef MEMCPY_RX -- if ( direction == CYHAL_READ ) -- { -- memcpy( user_data, dma_data_source, (size_t) user_data_size ); -- } --#endif -- -- if ( response != NULL ) -- { -- *response = SDIO->RESP1; -- } -- result = CY_RSLT_SUCCESS; -- --exit: --#if !defined(STM32F412xG) && !defined(STM32H753xx) -- SDIO->MASK = SDIO_MASK_SDIOITIE; --#endif -- --#if defined(STM32H753xx) -- SDMMC2->CMD = 0; --#endif -- -- //HAL_Delay(30); -- if (0) { //(direction==CYHAL_READ) { -- WPRINT_MACRO(("%d %s cmd 53 argument %lx datasize %d blocknumber 0x%x cmdis %lx %lu dctrl = %x\n",num++,(direction!=CYHAL_READ)?"Write":"Read",argument,length,arg.cmd53.count,cmd,cmd,dctrl)); -- } -- return result; --} -- -- --void cyhal_sdio_register_irq(cyhal_sdio_t *obj, cyhal_sdio_irq_handler_t handler, void *handler_arg) --{ -- whd_handler = (whd_driver_t)handler_arg; -- sdio_irq_handler = handler; --} -- --void cyhal_sdio_irq_enable(cyhal_sdio_t *obj, cyhal_sdio_irq_event_t event, bool enable) --{ -- --} -- --#if defined (STM32H753xx) --void SDMMC2_IRQHandler(void ) --{ -- uint32_t intstatus = SDIO->STA; -- // WWD_BUS_STATS_INCREMENT_VARIABLE( sdio_intrs ); -- -- irqstatus = intstatus; --//VIKR | SDIO_STA_STBITERR ) -- if ( ( intstatus & ( SDIO_STA_CCRCFAIL | SDIO_STA_DCRCFAIL | SDIO_STA_TXUNDERR | SDIO_STA_RXOVERR )) != 0 ) -- { -- //WWD_BUS_STATS_INCREMENT_VARIABLE( error_intrs ); -- //printf("sdio error flagged\n"); -- sdio_transfer_failed = intstatus; -- SDIO->ICR = (uint32_t) 0xffffffff; -- cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -- //sdio_transfer_finished_var = true; -- } -- else -- { -- if ((intstatus & (SDMMC_STA_CMDREND | SDMMC_STA_CMDSENT)) != 0) -- { -- if ( ( SDMMC2->RESP1 & 0x800 ) != 0 ) -- { -- sdio_transfer_failed = irqstatus; -- //sdio_transfer_finished_var = true; -- cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -- } -- -- /* Clear all command/response interrupts */ -- SDMMC2->ICR = (SDMMC_STA_CMDREND | SDMMC_STA_CMDSENT); -- } -- -- /* Check whether the external interrupt was triggered */ -- if (intstatus & SDMMC_STA_SDIOIT) -- { -- /* Clear the interrupt */ -- SDMMC2->ICR = SDMMC_STA_SDIOIT; -- /* Mask interrupt, to be unmasked later by WICED WWD thread */ -- //SDMMC1->MASK &= ~(SDMMC_MASK_SDIOITIE);//VIKR (SDMMC_ICR_SDIOITC); -- /* Inform WICED WWD thread */ -- // whd_thread_notify_irq(whd_handler); -- sdio_irq_handler(whd_handler, CYHAL_SDIO_CARD_INTERRUPT); -- //cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -- } -- -- if (intstatus & SDMMC_STA_DATAEND) -- { -- SDMMC2->ICR = SDMMC_STA_DATAEND; -- SDMMC2->DLEN = 0; -- SDMMC2->DCTRL = SDMMC_DCTRL_SDIOEN; -- SDMMC2->IDMACTRL = SDMMC_DISABLE_IDMA; -- SDMMC2->CMD = 0; -- //sdio_transfer_finished_var = true; -- cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -- } -- } --} --#else --void sdio_irq(void ) --{ -- uint32_t intstatus = SDIO->STA; -- // WWD_BUS_STATS_INCREMENT_VARIABLE( sdio_intrs ); --#if defined(STM32F412xG) -- if (current_command == SDIO_CMD_5) -- SDIO->ICR = SDIO_ICR_CCRCFAILC; --#endif -- -- irqstatus = intstatus; -- -- if ( ( intstatus & ( SDIO_STA_CCRCFAIL | SDIO_STA_DCRCFAIL | SDIO_STA_TXUNDERR | SDIO_STA_RXOVERR | SDIO_STA_STBITERR )) != 0 ) -- { -- //WWD_BUS_STATS_INCREMENT_VARIABLE( error_intrs ); -- //wiced_assert("sdio error flagged",0); -- sdio_transfer_failed = intstatus; -- SDIO->ICR = (uint32_t) 0xffffffff; -- cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -- } -- else -- { -- if ((intstatus & (SDIO_STA_CMDREND | SDIO_STA_CMDSENT)) != 0) -- { -- if ( ( SDIO->RESP1 & 0x800 ) != 0 ) -- { -- sdio_transfer_failed = irqstatus; -- cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -- } -- else if (current_command == SDIO_CMD_53) -- { -- if (current_transfer_direction == CYHAL_WRITE) -- { -- DMA2_Stream3->CR = DMA_MEMORY_TO_PERIPH | -- DMA_CHANNEL_4 | DMA_PINC_DISABLE | DMA_MINC_ENABLE | -- DMA_PDATAALIGN_WORD | DMA_MDATAALIGN_WORD | -- DMA_NORMAL | DMA_PRIORITY_VERY_HIGH | -- DMA_MBURST_INC4 | DMA_PBURST_INC4 | DMA_SxCR_PFCTRL | DMA_SxCR_EN | DMA_SxCR_TCIE; -- } -- else -- { -- DMA2_Stream3->CR = DMA_PERIPH_TO_MEMORY | -- DMA_CHANNEL_4 | DMA_PINC_DISABLE | DMA_MINC_ENABLE | -- DMA_PDATAALIGN_WORD | DMA_MDATAALIGN_WORD | -- DMA_NORMAL | DMA_PRIORITY_VERY_HIGH | -- DMA_MBURST_INC4 | DMA_PBURST_INC4 | DMA_SxCR_PFCTRL | DMA_SxCR_EN | DMA_SxCR_TCIE; -- } -- } -- -- /* Clear all command/response interrupts */ -- SDIO->ICR = (SDIO_STA_CMDREND | SDIO_STA_CMDSENT); -- } -- -- /* Check whether the external interrupt was triggered */ -- if ( ( intstatus & SDIO_STA_SDIOIT ) != 0 ) -- { -- /* Clear the interrupt and then inform WICED thread */ -- SDIO->ICR = SDIO_ICR_SDIOITC; -- whd_thread_notify_irq(whd_handler); -- } -- } --} --#endif -- --void sdio_dma_irq(void) --{ -- /* Clear interrupt */ -- DMA2->LIFCR = (uint32_t) (0x3F << 22); -- cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); --} -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_sdio.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_sdio.h -index 7e07a1ed72..d5600efd99 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_sdio.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_sdio.h -@@ -9,7 +9,7 @@ - * - ******************************************************************************** - * \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation -+* Copyright 2018-2020 Cypress Semiconductor Corporation - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); -@@ -26,16 +26,58 @@ - *******************************************************************************/ - - /** -- * \addtogroup group_hal_sdio SDIO (Secure Digital Input Output) -- * \ingroup group_hal -- * \{ -- * High level interface for interacting with the Cypress SDIO interface. -- * -- * \defgroup group_hal_sdio_macros Macros -- * \defgroup group_hal_sdio_functions Functions -- * \defgroup group_hal_sdio_data_structures Data Structures -- * \defgroup group_hal_sdio_enums Enumerated Types -- */ -+* \addtogroup group_hal_sdio SDIO (Secure Digital Input Output) -+* \ingroup group_hal -+* \{ -+* High level interface to the Secure Digital Input Output (SDIO). -+* -+* This driver allows commands to be sent over the SDIO bus; the supported commands -+* can be found in \ref cyhal_sdio_command_t. Bulk data transfer is also supported -+* via cyhal_sdio_bulk_transfer(). -+* -+* The SDIO protocol is an extension of the SD -+* interface for general I/O functions. Refer to the SD Specifications Part 1 SDIO -+* Specifications Version 4.10 for more information on the SDIO protocol and specifications. -+* -+* -+* \section subsection_sdio_features Features -+* * Supports 4-bit interface -+* * Supports Ultra High Speed (UHS-I) mode -+* * Supports Default Speed (DS), High Speed (HS), SDR12, SDR25 and SDR50 speed modes -+* * Supports SDIO card interrupts in both 1-bit and 4-bit modes -+* * Supports Standard capacity (SDSC), High capacity (SDHC) and Extended capacity (SDXC) memory -+* -+* \section subsection_sdio_quickstart Quick Start -+* -+* \ref cyhal_sdio_init initializes the SDIO peripheral and passes a pointer to the SDIO block through the **obj** object of type \ref cyhal_sdio_t. -+* -+* \section subsection_sdio_code_snippets Code Snippets -+* -+* \subsection subsection_sdio_use_case_1 Snippet1: Simple SDIO Initialization example -+* The following snippet shows how to initialize the SDIO interface with a pre-defined configuration -+* -+* \snippet sdio.c snippet_cyhal_sdio_simple_init -+* -+* \subsection subsection_sdio_use_case_2 Snippet2: Configure Interrupt -+* The following snippet shows how to configure an interrupt and handle specific events. Refer \ref cyhal_sdio_event_t for different types of events. -+* -+* \snippet sdio.c snippet_cyhal_sdio_interrupt_callback -+* -+* \subsection subsection_sdio_use_case_3 Snippet3: Sending Commands -+* The following snippet shows how to send a particular command. Some steps of the card initialization have been provided for reference. Refer \ref cyhal_sdio_command_t for different commands. -+* -+* \snippet sdio.c snippet_cyhal_sdio_send_command -+* -+* \subsection subsection_sdio_use_case_4 Snippet4: Bulk Data Transfer -+* The following snippet shows how to start a bulk data transfer. -+* -+* \snippet sdio.c snippet_cyhal_sdio_bulk_transfer -+* -+* \subsection subsection_sdio_use_case_5 Snippet5: Async Data Transfer -+* -+* The following snippet shows how to start an async data transfer. -+* \snippet sdio.c snippet_cyhal_sdio_async_transfer -+*/ - - #pragma once - -@@ -43,132 +85,138 @@ - #include - #include "cy_result.h" - #include "cyhal_hw_types.h" --#include "cyhal_modules.h" - - #if defined(__cplusplus) - extern "C" { - #endif - -+/******************************************************************************* -+* Defines -+*******************************************************************************/ - --/** -- * \addtogroup group_hal_sdio_macros -- * \{ -- */ -- --#define CYHAL_SDIO_RET_NO_ERRORS (0x00) /**< No error*/ --#define CYHAL_SDIO_RET_NO_SP_ERRORS (0x01) /**< Non-specific error code*/ --#define CYHAL_SDIO_RET_CMD_CRC_ERROR (0x02) /**< There was a CRC error on the Command/Response*/ --#define CYHAL_SDIO_RET_CMD_IDX_ERROR (0x04) /**< The index for the command didn't match*/ --#define CYHAL_SDIO_RET_CMD_EB_ERROR (0x08) /**< There was an end bit error on the command*/ --#define CYHAL_SDIO_RET_DAT_CRC_ERROR (0x10) /**< There was a data CRC Error*/ --#define CYHAL_SDIO_RET_CMD_TIMEOUT (0x20) /**< The command didn't finish before the timeout period was over*/ --#define CYHAL_SDIO_RET_DAT_TIMEOUT (0x40) /**< The data didn't finish before the timeout period was over*/ --#define CYHAL_SDIO_RET_RESP_FLAG_ERROR (0x80) /**< There was an error in the resposne flag for command 53*/ -- --#define CYHAL_SDIO_CLOCK_ERROR (0x100) /**< Failed to initial clock for SDIO */ --#define CYHAL_SDIO_BAD_ARGUMENT (0x200) /**< Bad argument passed for SDIO */ --#define CYHAL_SDIO_SEMA_NOT_INITED (0x400) /**< Semaphore is not initiated */ --#define CYHAL_SDIO_FUNC_NOT_SUPPORTED (0x800) /**< Function is not supported */ -+#define CYHAL_SDIO_RET_NO_ERRORS (0x00) /**< No error*/ -+#define CYHAL_SDIO_RET_NO_SP_ERRORS (0x01) /**< Non-specific error code*/ -+#define CYHAL_SDIO_RET_CMD_CRC_ERROR (0x02) /**< There was a CRC error on the Command/Response*/ -+#define CYHAL_SDIO_RET_CMD_IDX_ERROR (0x04) /**< The index for the command didn't match*/ -+#define CYHAL_SDIO_RET_CMD_EB_ERROR (0x08) /**< There was an end bit error on the command*/ -+#define CYHAL_SDIO_RET_DAT_CRC_ERROR (0x10) /**< There was a data CRC Error*/ -+#define CYHAL_SDIO_RET_CMD_TIMEOUT (0x20) /**< The command didn't finish before the timeout period was over*/ -+#define CYHAL_SDIO_RET_DAT_TIMEOUT (0x40) /**< The data didn't finish before the timeout period was over*/ -+#define CYHAL_SDIO_RET_RESP_FLAG_ERROR (0x80) /**< There was an error in the resposne flag for command 53*/ -+ -+#define CYHAL_SDIO_CLOCK_ERROR (0x100) /**< Failed to initial clock for SDIO */ -+#define CYHAL_SDIO_BAD_ARGUMENT (0x200) /**< Bad argument passed for SDIO */ -+#define CYHAL_SDIO_SEMA_NOT_INITED (0x400) /**< Semaphore is not initiated */ -+#define CYHAL_SDIO_FUNC_NOT_SUPPORTED (0x800) /**< Function is not supported */ -+#define CYHAL_SDIO_CANCELED (0x1000) /**< Operation canceled */ -+#define CYHAL_SDIO_PM_PENDING_ERROR (0x2000) /**< Transfer cannot be initiated after power mode transition allowed.*/ - - /* HAL return value defines */ - --/** Incorrect parameter value define */ --#define CYHAL_SDIO_RSLT_ERR_BAD_PARAM CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, \ -- CYHAL_RSLT_MODULE_SDIO, \ -- CYHAL_SDIO_BAD_ARGUMENT) -+/** \addtogroup group_hal_results_sdio SDIO HAL Results -+ * SDIO specific return codes -+ * \ingroup group_hal_results -+ * \{ *//** -+ */ - -+/** Incorrect parameter value define */ -+#define CYHAL_SDIO_RSLT_ERR_BAD_PARAM \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SDIO, CYHAL_SDIO_BAD_ARGUMENT)) - /** Clock initialization error define */ --#define CYHAL_SDIO_RSLT_ERR_CLOCK CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, \ -- CYHAL_RSLT_MODULE_SDIO, \ -- CYHAL_SDIO_CLOCK_ERROR) -- -+#define CYHAL_SDIO_RSLT_ERR_CLOCK \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SDIO, CYHAL_SDIO_CLOCK_ERROR)) - /** Semaphore not initiated error define */ --#define CYHAL_SDIO_RSLT_ERR_SEMA_NOT_INITED CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, \ -- CYHAL_RSLT_MODULE_SDIO, \ -- CYHAL_SDIO_SEMA_NOT_INITED) -- -+#define CYHAL_SDIO_RSLT_ERR_SEMA_NOT_INITED \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SDIO, CYHAL_SDIO_SEMA_NOT_INITED)) - /** Error define based on SDIO lower function return value */ --#define CYHAL_SDIO_RSLT_ERR_FUNC_RET(retVal) CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, \ -- CYHAL_RSLT_MODULE_SDIO, (retVal) ) -- --/** \} group_hal_sdio_macros */ -- -+#define CYHAL_SDIO_RSLT_ERR_FUNC_RET(retVal) \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SDIO, ((uint16_t)retVal))) -+/** Define to indicate canceled operation */ -+#define CYHAL_SDIO_RSLT_CANCELED \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SDIO, CYHAL_SDIO_CANCELED)) -+/** Transfers are not allowed after the SDIO block has allowed power mode transition. */ -+#define CYHAL_SDIO_RSLT_ERR_PM_PENDING \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SDIO, CYHAL_SDIO_PM_PENDING_ERROR)) - - /** -- * \addtogroup group_hal_sdio_enums -- * \{ -+ * \} - */ - -+ -+/******************************************************************************* -+* Enumerations -+*******************************************************************************/ -+ - /** Commands that can be issued */ - typedef enum - { -- CYHAL_SDIO_CMD_GO_IDLE_STATE = 0, //!> Go to idle state -- CYHAL_SDIO_CMD_SEND_RELATIVE_ADDR = 3, //!> Send a relative address -- CYHAL_SDIO_CMD_IO_SEND_OP_COND = 5, //!> Send an OP IO -- CYHAL_SDIO_CMD_SELECT_CARD = 7, //!> Send a card select -- CYHAL_SDIO_CMD_GO_INACTIVE_STATE = 15, //!> Go to inactive state -- CYHAL_SDIO_CMD_IO_RW_DIRECT = 52, //!> Perform a direct read/write -- CYHAL_SDIO_CMD_IO_RW_EXTENDED = 53, //!> Perform an extended read/write -+ CYHAL_SDIO_CMD_GO_IDLE_STATE = 0, //!< Go to idle state -+ CYHAL_SDIO_CMD_SEND_RELATIVE_ADDR = 3, //!< Send a relative address -+ CYHAL_SDIO_CMD_IO_SEND_OP_COND = 5, //!< Send an OP IO -+ CYHAL_SDIO_CMD_SELECT_CARD = 7, //!< Send a card select -+ CYHAL_SDIO_CMD_GO_INACTIVE_STATE = 15, //!< Go to inactive state -+ CYHAL_SDIO_CMD_IO_RW_DIRECT = 52, //!< Perform a direct read/write -+ CYHAL_SDIO_CMD_IO_RW_EXTENDED = 53, //!< Perform an extended read/write - } cyhal_sdio_command_t; - - /** Types of transfer that can be performed */ - typedef enum - { -- CYHAL_READ, //!> Read from the card -- CYHAL_WRITE //!> Write to the card -+ CYHAL_READ, //!< Read from the card -+ CYHAL_WRITE //!< Write to the card - } cyhal_transfer_t; - --/** Events that can cause an SDIO interrupt */ --typedef enum --{ -- CYHAL_SDIO_CMD_COMPLETE = 0x0001, //!> Command Complete -- CYHAL_SDIO_XFER_COMPLETE = 0x0002, //!> Host read/write transfer is complete -- CYHAL_SDIO_BGAP_EVENT = 0x0004, //!> This bit is set when both read/write transaction is stopped -- CYHAL_SDIO_DMA_INTERRUPT = 0x0008, //!> Host controller detects an SDMA Buffer Boundary during transfer -- CYHAL_SDIO_BUF_WR_READY = 0x0010, //!> This bit is set if the Buffer Write Enable changes from 0 to 1 -- CYHAL_SDIO_BUF_RD_READY = 0x0020, //!> This bit is set if the Buffer Read Enable changes from 0 to 1 -- CYHAL_SDIO_CARD_INSERTION = 0x0040, //!> This bit is set if the Card Inserted in the Present State -- CYHAL_SDIO_CARD_REMOVAL = 0x0080, //!> This bit is set if the Card Inserted in the Present State -- CYHAL_SDIO_CARD_INTERRUPT = 0x0100, //!> The synchronized value of the DAT[1] interrupt input for SD mode -- CYHAL_SDIO_INT_A = 0x0200, //!> Reserved: set to 0 -- CYHAL_SDIO_INT_B = 0x0400, //!> Reserved: set to 0 -- CYHAL_SDIO_INT_C = 0x0800, //!> Reserved: set to 0, -- CYHAL_SDIO_RE_TUNE_EVENT = 0x1000, //!> Reserved: set to 0, -- CYHAL_SDIO_FX_EVENT = 0x2000, //!> This status is set when R[14] of response register is set to 1 -- CYHAL_SDIO_CQE_EVENT = 0x4000, //!> This status is set if Command Queuing/Crypto event has occurred -- CYHAL_SDIO_ERR_INTERRUPT = 0x8000, //!> If any of the bits in the Error Interrupt Status register are set -- CYHAL_SDIO_ALL_INTERRUPTS = 0xE1FF, //!> Is used to enable/disable all interrupts --} cyhal_sdio_irq_event_t; -- --/** \} group_hal_sdio_enums */ -- -- --/** -- * \addtogroup group_hal_sdio_data_structures -- * \{ -- */ -+/** Types of events that could be asserted by SDIO */ -+typedef enum { -+ /* Interrupt-based thread events */ -+ CYHAL_SDIO_CMD_COMPLETE = 0x00001, //!< Command Complete -+ CYHAL_SDIO_XFER_COMPLETE = 0x00002, //!< Host read/write transfer is complete -+ CYHAL_SDIO_BGAP_EVENT = 0x00004, //!< This bit is set when both read/write transaction is stopped -+ CYHAL_SDIO_DMA_INTERRUPT = 0x00008, //!< Host controller detects an SDMA Buffer Boundary during transfer -+ CYHAL_SDIO_BUF_WR_READY = 0x00010, //!< This bit is set if the Buffer Write Enable changes from 0 to 1 -+ CYHAL_SDIO_BUF_RD_READY = 0x00020, //!< This bit is set if the Buffer Read Enable changes from 0 to 1 -+ CYHAL_SDIO_CARD_INSERTION = 0x00040, //!< This bit is set if the Card Inserted in the Present State -+ CYHAL_SDIO_CARD_REMOVAL = 0x00080, //!< This bit is set if the Card Inserted in the Present State -+ CYHAL_SDIO_CARD_INTERRUPT = 0x00100, //!< The synchronized value of the DAT[1] interrupt input for SD mode -+ CYHAL_SDIO_INT_A = 0x00200, //!< Reserved: set to 0 -+ CYHAL_SDIO_INT_B = 0x00400, //!< Reserved: set to 0 -+ CYHAL_SDIO_INT_C = 0x00800, //!< Reserved: set to 0 -+ CYHAL_SDIO_RE_TUNE_EVENT = 0x01000, //!< Reserved: set to 0 -+ CYHAL_SDIO_FX_EVENT = 0x02000, //!< This status is set when R[14] of response register is set to 1 -+ CYHAL_SDIO_CQE_EVENT = 0x04000, //!< This status is set if Command Queuing/Crypto event has occurred -+ CYHAL_SDIO_ERR_INTERRUPT = 0x08000, //!< If any of the bits in the Error Interrupt Status register are set -+ -+ /* Non-interrupt-based thread events */ -+ CYHAL_SDIO_GOING_DOWN = 0x10000, //!< The interface is going away (eg: powering down for some period of time) -+ CYHAL_SDIO_COMING_UP = 0x20000, //!< The interface is back up (eg: came back from a low power state) -+ -+ CYHAL_SDIO_ALL_INTERRUPTS = 0x0E1FF, //!< Is used to enable/disable all interrupts events -+} cyhal_sdio_event_t; -+ -+ -+/******************************************************************************* -+* Data Structures -+*******************************************************************************/ - --/** SDIO controller initial configuration */ -+/** @brief SDIO controller initial configuration */ - typedef struct - { - uint32_t frequencyhal_hz; //!< Clock frequency, in hertz -- uint16_t block_size; //!< Block size -+ uint16_t block_size; //!< Block size - } cyhal_sdio_cfg_t; - --/** Handler for SDIO interrupts */ --typedef void (*cyhal_sdio_irq_handler_t)(void *handler_arg, cyhal_sdio_irq_event_t event); -- --/** \} group_hal_sdio_data_structures */ -+/** Callback for SDIO events */ -+typedef void (*cyhal_sdio_event_callback_t)(void *callback_arg, cyhal_sdio_event_t event); - - --/** -- * \addtogroup group_hal_sdio_functions -- * \{ -- */ -- -+/******************************************************************************* -+* Data Structures -+*******************************************************************************/ - /** Initialize the SDIO peripheral - * -- * @param[out] obj The SDIO object -+ * @param[out] obj Pointer to an SDIO object. -+ * The caller must allocate the memory for this object but the init -+ * function will initialize its contents. - * @param[out] clk The pin connected to the clk signal - * @param[in] cmd The pin connected to the command signal - * @param[in] data0 The pin connected to the data0 signal -@@ -176,99 +224,143 @@ typedef void (*cyhal_sdio_irq_handler_t)(void *handler_arg, cyhal_sdio_irq_event - * @param[in] data2 The pin connected to the data2 signal - * @param[in] data3 The pin connected to the data3 signal - * @return The status of the init request -+ * -+ * Returns \ref CY_RSLT_SUCCESS on successful operation. Refer \ref subsection_sdio_use_case_1 for more information. - */ --cy_rslt_t cyhal_sdio_init(cyhal_sdio_t *obj, cyhal_gpio_t cmd, cyhal_gpio_t clk, cyhal_gpio_t data0, cyhal_gpio_t data1, -- cyhal_gpio_t data2, cyhal_gpio_t data3); -+cy_rslt_t cyhal_sdio_init(cyhal_sdio_t *obj, cyhal_gpio_t cmd, cyhal_gpio_t clk, cyhal_gpio_t data0, cyhal_gpio_t data1, cyhal_gpio_t data2, cyhal_gpio_t data3); - --/** Release the SDIO peripheral, not currently invoked. It requires further -- * resource management. -+/** Release the SDIO block. - * - * @param[in,out] obj The SDIO object - */ - void cyhal_sdio_free(cyhal_sdio_t *obj); - --/** Configure the SDIO block. -+/** Configure the SDIO block with required parameters. Refer \ref cyhal_sdio_cfg_t for more information. - * - * @param[in,out] obj The SDIO object -- * @param[in] config The sdio configuration to apply -- * @return The status of the configure request -+ * @param[in] config The SDIO configuration to apply -+ * @return The status of the configure request. -+ * -+ * Returns \ref CY_RSLT_SUCCESS on successful operation. - */ - cy_rslt_t cyhal_sdio_configure(cyhal_sdio_t *obj, const cyhal_sdio_cfg_t *config); - --/** Sends a command to the SDIO block. -+/** Sends command to the SDIO device. See \ref cyhal_sdio_command_t for list of available commands. -+ * -+ * This will block until the command is completed. - * - * @param[in,out] obj The SDIO object - * @param[in] direction The direction of transfer (read/write) -- * @param[in] command The SDIO command to send -+ * @param[in] command The command to send to the SDIO device - * @param[in] argument The argument to the command - * @param[out] response The response from the SDIO device -- * @return The status of the configure request -+ * @return The status of the command transfer. -+ * -+ * Returns \ref CY_RSLT_SUCCESS on successful operation. Refer \ref subsection_sdio_use_case_3 for more information. - */ --cy_rslt_t cyhal_sdio_send_cmd(const cyhal_sdio_t *obj, cyhal_transfer_t direction, cyhal_sdio_command_t command, -- uint32_t argument, uint32_t *response); -+cy_rslt_t cyhal_sdio_send_cmd(const cyhal_sdio_t *obj, cyhal_transfer_t direction, cyhal_sdio_command_t command, uint32_t argument, uint32_t* response); - --/** Performs a bulk data transfer (CMD=53) to the SDIO block. -+/** Performs a bulk data transfer. Sends \ref CYHAL_SDIO_CMD_IO_RW_EXTENDED command (CMD=53) which allows writing and reading of a large number of I/O registers with a single command. -+ * -+ * This will block until the transfer is completed. - * - * @param[in,out] obj The SDIO object - * @param[in] direction The direction of transfer (read/write) - * @param[in] argument The argument to the command -- * @param[in] data The data to send to the SDIO device. The data buffer -- * should be aligned to the block size (64 bytes) if data -- * size is greater that block size (64 bytes). -+ * @param[in] data The data to send to the SDIO device. A bulk transfer is done in block -+ * size (default: 64 bytes) chunks for better performance. Therefore, -+ * the size of the data buffer passed into this function must be at least -+ * `length` bytes and a multiple of the block size. For example, when -+ * requesting to read 100 bytes of data with a block size 64 bytes, the -+ * data buffer needs to be at least 128 bytes. The first 100 bytes of data -+ * in the buffer will be the requested data. - * @param[in] length The number of bytes to send - * @param[out] response The response from the SDIO device -- * @return The status of the configure request -+ * @return The status of the bulk transfer operation. -+ * -+ * Returns \ref CY_RSLT_SUCCESS on successful operation. Refer \ref subsection_sdio_use_case_4 for more information. - */ --cy_rslt_t cyhal_sdio_bulk_transfer(cyhal_sdio_t *obj, cyhal_transfer_t direction, uint32_t argument, -- const uint32_t *data, uint16_t length, uint32_t *response); -+cy_rslt_t cyhal_sdio_bulk_transfer(cyhal_sdio_t *obj, cyhal_transfer_t direction, uint32_t argument, const uint32_t* data, uint16_t length, uint32_t* response); - --/** Performs a bulk asynchronus data transfer (CMD=53) to the SDIO block. -+/** Performs a bulk asynchronous data transfer by issuing the \ref CYHAL_SDIO_CMD_IO_RW_EXTENDED command(CMD=53) to the SDIO block. -+ * After exiting this function the \ref CYHAL_SDIO_CMD_COMPLETE and \ref CYHAL_SDIO_XFER_COMPLETE events are not asserted. -+ * -+ * To complete the asynchronous transfer, call \ref cyhal_sdio_is_busy() -+ * until it returns false. -+ * The \ref CYHAL_SDIO_CMD_COMPLETE and \ref CYHAL_SDIO_XFER_COMPLETE events are enabled -+ * after the asynchronous transfer is complete and in the condition they were -+ * enabled in before the transfer operation started. Handle these events in the interrupt callback. -+ * -+ * When the transfer is complete, the \ref CYHAL_SDIO_XFER_COMPLETE event will be raised. -+ * See \ref cyhal_sdio_register_callback and \ref cyhal_sdio_enable_event. - * - * @param[in,out] obj The SDIO object - * @param[in] direction The direction of transfer (read/write) - * @param[in] argument The argument to the command - * @param[in] data The data to send to the SDIO device - * @param[in] length The number of bytes to send -- * @return The status of the configure request -+ * @return The status of the async tranfer operation. -+ * -+ * Returns \ref CY_RSLT_SUCCESS on successful operation. Refer \ref subsection_sdio_use_case_5 for more information. - */ --cy_rslt_t cyhal_sdio_transfer_async(cyhal_sdio_t *obj, cyhal_transfer_t direction, uint32_t argument, -- const uint32_t *data, uint16_t length); -+cy_rslt_t cyhal_sdio_transfer_async(cyhal_sdio_t *obj, cyhal_transfer_t direction, uint32_t argument, const uint32_t* data, uint16_t length); - - /** Checks if the specified SDIO is in use - * - * @param[in] obj The SDIO peripheral to check -- * @return Indication of whether the SDIO is still transmitting -+ * @return true if SDIO is in use. false, otherwise. - */ - bool cyhal_sdio_is_busy(const cyhal_sdio_t *obj); - - /** Abort an SDIO transfer - * - * @param[in] obj The SDIO peripheral to stop -- * @return The status of the abort_async request -+ * @return The status of the abort_async request. -+ * -+ * Returns \ref CY_RSLT_SUCCESS on successful operation. - */ - cy_rslt_t cyhal_sdio_abort_async(const cyhal_sdio_t *obj); - --/** The sdio interrupt handler registration -+/** Register an SDIO event callback to be invoked when the event is triggered. -+ * -+ * This function will be called when one of the events enabled by \ref cyhal_sdio_enable_event occurs. - * -- * @param[in] obj The SDIO object -- * @param[in] handler The callback handler which will be invoked when the interrupt fires -- * @param[in] handler_arg Generic argument that will be provided to the handler when called -+ * @param[in] obj The SDIO object -+ * @param[in] callback The callback function which will be invoked when the event triggers -+ * @param[in] callback_arg Generic argument that will be provided to the callback when executed -+ * -+ * Refer \ref subsection_sdio_use_case_2 for more implementation. - */ --void cyhal_sdio_register_irq(cyhal_sdio_t *obj, cyhal_sdio_irq_handler_t handler, void *handler_arg); -+void cyhal_sdio_register_callback(cyhal_sdio_t *obj, cyhal_sdio_event_callback_t callback, void *callback_arg); - --/** Configure sdio interrupt. -+/** Enables callbacks to be triggered for specified SDIO events. Refer \ref cyhal_sdio_event_t for all events. -+ * -+ * @param[in] obj The SDIO object -+ * @param[in] event The SDIO event type -+ * @param[in] intr_priority The priority for NVIC interrupt events -+ * @param[in] enable Set to true to enable events, or false to disable them - * -- * @param[in] obj The SDIO object -- * @param[in] event The sdio IRQ type -- * @param[in] enable Set to non-zero to enable events, or zero to disable them -+ * Refer \ref subsection_sdio_use_case_2 for more information. - */ --void cyhal_sdio_irq_enable(cyhal_sdio_t *obj, cyhal_sdio_irq_event_t event, bool enable); -+void cyhal_sdio_enable_event(cyhal_sdio_t *obj, cyhal_sdio_event_t event, uint8_t intr_priority, bool enable); - --/** \} group_hal_sdio_functions */ -+/******************************************************************************* -+* Backward compatibility macro. The following code is DEPRECATED and must -+* not be used in new projects -+*******************************************************************************/ -+/** \cond INTERNAL */ -+#define cyhal_sdio_register_irq cyhal_sdio_register_callback -+#define cyhal_sdio_irq_enable(obj, event, enable) cyhal_sdio_enable_event(obj, event, CYHAL_ISR_PRIORITY_DEFAULT, enable) -+typedef cyhal_sdio_event_t cyhal_sdio_irq_event_t; -+typedef cyhal_sdio_event_callback_t cyhal_sdio_irq_handler_t; -+/** \endcond */ - - #if defined(__cplusplus) - } - #endif - --/** \} group_hal_sdio */ -+#ifdef CYHAL_SDIO_IMPL_HEADER -+#include CYHAL_SDIO_IMPL_HEADER -+#endif /* CYHAL_SDIO_IMPL_HEADER */ - -+/** \} group_hal_sdio */ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_spi.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_spi.h -index 345f3bd86a..f5ba47669f 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_spi.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_spi.h -@@ -9,7 +9,7 @@ - * - ******************************************************************************** - * \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation -+* Copyright 2018-2020 Cypress Semiconductor Corporation - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); -@@ -26,16 +26,64 @@ - *******************************************************************************/ - - /** -- * \addtogroup group_hal_spi SPI (Serial Peripheral Interface) -- * \ingroup group_hal -- * \{ -- * High level interface for interacting with the Cypress SPI. -- * -- * \defgroup group_hal_spi_macros Macros -- * \defgroup group_hal_spi_functions Functions -- * \defgroup group_hal_spi_data_structures Data Structures -- * \defgroup group_hal_spi_enums Enumerated Types -- */ -+* \addtogroup group_hal_spi SPI (Serial Peripheral Interface) -+* \ingroup group_hal -+* \{ -+* High level interface for interacting with the Serial Peripheral Interface (SPI). -+* -+* The SPI protocol is a synchronous serial interface protocol. Devices operate -+* in either master or slave mode. The master initiates the data transfer. -+* -+* Motorola SPI modes 0, 1, 2, and 3 are supported, with either MSB or LSB first. -+* The operating mode and data frame size can be configured via \ref cyhal_spi_cfg_t. -+* -+* \section section_spi_features Features -+* * Supports master and slave functionality. -+* * Supports Motorola modes - 0, 1, 2 and 3 - \ref cyhal_spi_mode_t -+* * MSb or LSb first shift direction - \ref cyhal_spi_mode_t -+* * Master supports up to four slave select lines -+* * Supports data frame size of 8 or 16 bits -+* * Configurable interrupt and callback assignment on SPI events: -+* Data transfer to FIFO complete, Transfer complete and Transmission error - \ref cyhal_spi_event_t -+* * Supports changing baud rate of the transaction in run time. -+* * Provides functions to send/receive a single byte or block of data. -+* -+* \section section_spi_quickstart Quick Start -+* -+* Initialise a SPI master or slave interface using \ref cyhal_spi_init() and provide the SPI pins (mosi, miso, sclk, ssel), -+* number of bits per frame (data_bits) and SPI Motorola mode. The data rate can be set using \ref cyhal_spi_set_frequency().
    -+* See \ref section_spi_snippets for code snippets to send or receive the data. -+* -+* \section section_spi_snippets Code snippets -+* -+* \subsection subsection_spi_snippet_1 Snippet 1: SPI Master - Single byte transfer operation (Read and Write) -+* The following code snippet initializes an SPI Master interface using the \ref cyhal_spi_init(). The data rate of transfer is set using \ref cyhal_spi_set_frequency(). -+* The code snippet shows how to transfer a single byte of data using \ref cyhal_spi_send() and \ref cyhal_spi_recv(). -+* \snippet spi.c snippet_cyhal_spi_master_byte_operation -+* -+* \subsection subsection_spi_snippet_2 Snippet 2: SPI Slave - Single byte transfer operation (Read and Write) -+* The following code snippet initializes an SPI Slave interface using the \ref cyhal_spi_init(). The data rate of transfer is set using \ref cyhal_spi_set_frequency. -+* The code snippet shows how to transfer a single byte of data using \ref cyhal_spi_send() and \ref cyhal_spi_recv. -+* \snippet spi.c snippet_cyhal_spi_slave_byte_operation -+* -+* \subsection subsection_spi_snippet_3 Snippet 3: SPI Block Data transfer -+* The following snippet sends and receives an array of data in a single SPI transaction using \ref cyhal_spi_transfer(). The example -+* uses SPI master to transmit 5 bytes of data and receive 5 bytes of data in a single transaction. -+* \snippet spi.c snippet_cyhal_spi_block_data_transfer -+* -+* \subsection subsection_spi_snippet_4 Snippet 4: Interrupts on SPI events -+* SPI interrupt events ( \ref cyhal_spi_event_t) can be mapped to an interrupt and assigned to a callback function. -+* The callback function needs to be first registered and then the event needs to be enabled. -+* The following snippet initialises a SPI master to perform a block transfer using \ref cyhal_spi_transfer_async(). This is a non-blocking function. -+* A callback function is registered using \ref cyhal_spi_register_callback to notify whenever the SPI transfer is complete. -+* \snippet spi.c snippet_cyhal_spi_interrupt_callback_events -+ -+* \section subsection_spi_moreinfor More Information -+* -+* * mtb-example-psoc6-spi-master: This example project demonstrates -+* use of SPI (HAL) resource in PSoC® 6 MCU in Master mode to write data to an SPI slave. -+* -+*/ - - #pragma once - -@@ -43,73 +91,106 @@ - #include - #include "cy_result.h" - #include "cyhal_hw_types.h" --#include "cyhal_modules.h" - - #if defined(__cplusplus) - extern "C" { - #endif - -- --/** -- * \addtogroup group_hal_spi_macros -- * \{ -+/** \addtogroup group_hal_results_spi SPI HAL Results -+ * SPI specific return codes -+ * \ingroup group_hal_results -+ * \{ *//** - */ - - /** Bad argument */ --#define CYHAL_SPI_RSLT_BAD_ARGUMENT (CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 0) ) -+#define CYHAL_SPI_RSLT_BAD_ARGUMENT \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 0)) - /** Failed to initialize SPI clock */ --#define CYHAL_SPI_RSLT_CLOCK_ERROR (CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 1) ) -+#define CYHAL_SPI_RSLT_CLOCK_ERROR \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 1)) - /** Failed to Transfer SPI data */ --#define CYHAL_SPI_RSLT_TRANSFER_ERROR (CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 2) ) -+#define CYHAL_SPI_RSLT_TRANSFER_ERROR \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 2)) - /** Provided clock is not supported by SPI */ --#define CYHAL_SPI_RSLT_CLOCK_NOT_SUPPORTED (CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 3) ) -+#define CYHAL_SPI_RSLT_CLOCK_NOT_SUPPORTED \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 3)) - /** Provided PIN configuration is not supported by SPI */ --#define CYHAL_SPI_RSLT_PIN_CONFIG_NOT_SUPPORTED (CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 5) ) -+#define CYHAL_SPI_RSLT_PIN_CONFIG_NOT_SUPPORTED \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 5)) - /** Provided PIN configuration is not supported by SPI */ --#define CYHAL_SPI_RSLT_INVALID_PIN_API_NOT_SUPPORTED (CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 6) ) -+#define CYHAL_SPI_RSLT_INVALID_PIN_API_NOT_SUPPORTED \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 6)) - /** The requested resource type is invalid */ --#define CYHAL_SPI_RSLT_ERR_INVALID_PIN (CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 7) ) -+#define CYHAL_SPI_RSLT_ERR_INVALID_PIN \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 7)) -+/** Cannot configure SSEL signal */ -+#define CYHAL_SPI_RSLT_ERR_CANNOT_CONFIG_SSEL \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 8)) -+/** Cannot switch SSEL - device is busy or incorrect pin provided */ -+#define CYHAL_SPI_RSLT_ERR_CANNOT_SWITCH_SSEL \ -+ (CYHAL_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CYHAL_RSLT_MODULE_SPI, 9)) - --/** \} group_hal_spi_macros */ -+/** -+ * \} -+ */ - -+/** Compatibility define for cyhal_spi_set_frequency. */ -+#define cyhal_spi_frequency cyhal_spi_set_frequency - - /** SPI interrupt triggers */ --typedef enum --{ -- CYHAL_SPI_IRQ_NONE = 0, //!< Disable all interrupt call backs -+typedef enum { - /** All transfer data has been moved into data FIFO */ - CYHAL_SPI_IRQ_DATA_IN_FIFO = 1 << 1, - /** Transfer complete. */ - CYHAL_SPI_IRQ_DONE = 1 << 2, - /** An error occurred while transferring data */ - CYHAL_SPI_IRQ_ERROR = 1 << 3, --} cyhal_spi_irq_event_t; -+} cyhal_spi_event_t; -+ -+/** SPI Slave Select polarity */ -+typedef enum { -+ /** SSEL signal is active low */ -+ CYHAL_SPI_SSEL_ACTIVE_LOW = 0, -+ /** SSEL signal is active high */ -+ CYHAL_SPI_SSEL_ACTIVE_HIGH = 1, -+} cyhal_spi_ssel_polarity_t; - - /** Handler for SPI interrupts */ --typedef void (*cyhal_spi_irq_handler_t)(void *handler_arg, cyhal_spi_irq_event_t event); -+typedef void (*cyhal_spi_event_callback_t)(void *callback_arg, cyhal_spi_event_t event); -+ -+/** Flag for SPI \ref cyhal_spi_mode_t values indicating that the LSB is sent first. */ -+#define CYHAL_SPI_MODE_FLAG_LSB (0x01u) -+/** Flag for SPI \ref cyhal_spi_mode_t values indicating that the CPHA=1. */ -+#define CYHAL_SPI_MODE_FLAG_CPHA (0x02u) -+/** Flag for SPI \ref cyhal_spi_mode_t values indicating that the CPOL=1. */ -+#define CYHAL_SPI_MODE_FLAG_CPOL (0x04u) -+/** Creates a \ref cyhal_spi_mode_t value given the cpol, cpha, lsb values. */ -+#define CYHAL_SPI_MODE(cpol, cpha, lsb) (((cpol > 0) ? CYHAL_SPI_MODE_FLAG_CPOL : 0) | \ -+ ((cpha > 0) ? CYHAL_SPI_MODE_FLAG_CPHA : 0) | \ -+ (( lsb > 0) ? CYHAL_SPI_MODE_FLAG_LSB : 0)) - - /** SPI operating modes */ - typedef enum - { - /** Standard motorola SPI CPOL=0, CPHA=0 with MSB first operation */ -- CYHAL_SPI_MODE_00_MSB, -+ CYHAL_SPI_MODE_00_MSB = CYHAL_SPI_MODE(0, 0, 0), - /** Standard motorola SPI CPOL=0, CPHA=0 with LSB first operation */ -- CYHAL_SPI_MODE_00_LSB, -+ CYHAL_SPI_MODE_00_LSB = CYHAL_SPI_MODE(0, 0, 1), - /** Standard motorola SPI CPOL=0, CPHA=1 with MSB first operation */ -- CYHAL_SPI_MODE_01_MSB, -+ CYHAL_SPI_MODE_01_MSB = CYHAL_SPI_MODE(0, 1, 0), - /** Standard motorola SPI CPOL=0, CPHA=1 with LSB first operation */ -- CYHAL_SPI_MODE_01_LSB, -+ CYHAL_SPI_MODE_01_LSB = CYHAL_SPI_MODE(0, 1, 1), - /** Standard motorola SPI CPOL=1, CPHA=0 with MSB first operation */ -- CYHAL_SPI_MODE_10_MSB, -+ CYHAL_SPI_MODE_10_MSB = CYHAL_SPI_MODE(1, 0, 0), - /** Standard motorola SPI CPOL=1, CPHA=0 with LSB first operation */ -- CYHAL_SPI_MODE_10_LSB, -+ CYHAL_SPI_MODE_10_LSB = CYHAL_SPI_MODE(1, 0, 1), - /** Standard motorola SPI CPOL=1, CPHA=1 with MSB first operation */ -- CYHAL_SPI_MODE_11_MSB, -+ CYHAL_SPI_MODE_11_MSB = CYHAL_SPI_MODE(1, 1, 0), - /** Standard motorola SPI CPOL=1, CPHA=1 with LSB first operation */ -- CYHAL_SPI_MODE_11_LSB, -+ CYHAL_SPI_MODE_11_LSB = CYHAL_SPI_MODE(1, 1, 1), - } cyhal_spi_mode_t; - --/** Initial SPI configuration. */ -+/** @brief Initial SPI configuration. */ - typedef struct - { - cyhal_spi_mode_t mode; //!< The operating mode -@@ -117,11 +198,11 @@ typedef struct - bool is_slave; //!< Whether the peripheral is operating as slave or master - } cyhal_spi_cfg_t; - -- - /** Initialize the SPI peripheral - * - * Configures the pins used by SPI, sets a default format and frequency, and enables the peripheral -- * @param[out] obj The SPI object to initialize -+ * @param[out] obj Pointer to a SPI object. The caller must allocate the memory -+ * for this object but the init function will initialize its contents. - * @param[in] mosi The pin to use for MOSI - * @note At least MOSI or MISO pin should be non-NC - * @param[in] miso The pin to use for MISO -@@ -129,7 +210,9 @@ typedef struct - * @param[in] sclk The pin to use for SCLK - * @note This pin cannot be NC - * @param[in] ssel The pin to use for SSEL -- * @note This pin can be NC -+ * @note Provided pin will be configured for \ref CYHAL_SPI_SSEL_ACTIVE_LOW polarity and set as active. This can be changed -+ * (as well as additional ssel pins can be added) by \ref cyhal_spi_slave_select_config and \ref cyhal_spi_select_active_ssel -+ * functions. This pin can be NC. - * @param[in] clk The clock to use can be shared, if not provided a new clock will be allocated - * @param[in] bits The number of bits per frame - * @note bits should be 8 or 16 -@@ -138,8 +221,7 @@ typedef struct - * @return The status of the init request - */ - cy_rslt_t cyhal_spi_init(cyhal_spi_t *obj, cyhal_gpio_t mosi, cyhal_gpio_t miso, cyhal_gpio_t sclk, cyhal_gpio_t ssel, -- const cyhal_clock_divider_t *clk, -- uint8_t bits, cyhal_spi_mode_t mode, bool is_slave); -+ const cyhal_clock_t *clk, uint8_t bits, cyhal_spi_mode_t mode, bool is_slave); - - /** Release a SPI object - * -@@ -154,13 +236,38 @@ void cyhal_spi_free(cyhal_spi_t *obj); - * Configures the SPI peripheral's baud rate - * @param[in,out] obj The SPI object to configure - * @param[in] hz The baud rate in Hz -- * @return The status of the frequency request -+ * @return The status of the set_frequency request -+ */ -+cy_rslt_t cyhal_spi_set_frequency(cyhal_spi_t *obj, uint32_t hz); -+ -+/** Configures provided ssel pin to work as SPI slave select with specified polarity. -+ * -+ * Multiple pins can be configured as SPI slave select pins. Please refer to device datasheet for details. Switching -+ * between configured slave select pins is done by \ref cyhal_spi_select_active_ssel function. -+ * Unless modified with this function, the SSEL pin provided as part of \ref cyhal_spi_init is the default. -+ * @param[in] obj The SPI object to add slave select for -+ * @param[in] ssel Slave select pin to be added -+ * @param[in] polarity Polarity of slave select -+ * @return The status of ssel pin configuration -+ */ -+cy_rslt_t cyhal_spi_slave_select_config(cyhal_spi_t *obj, cyhal_gpio_t ssel, cyhal_spi_ssel_polarity_t polarity); -+ -+/** Selects an active slave select line from one of available. -+ * -+ * This function is applicable for the master and slave. -+ * SSEL pin should be configured by \ref cyhal_spi_slave_select_config or \ref cyhal_spi_init functions prior -+ * to selecting it as active. The active slave select line will automatically be toggled as part of any transfer. -+ * @param[in] obj The SPI object for switching -+ * @param[in] ssel Slave select pin to be set as active -+ * @return CY_RSLT_SUCCESS if slave select was switched successfully, otherwise - CYHAL_SPI_RSLT_ERR_CANNOT_SWITCH_SSEL - */ --cy_rslt_t cyhal_spi_frequency(cyhal_spi_t *obj, uint32_t hz); -+cy_rslt_t cyhal_spi_select_active_ssel(cyhal_spi_t *obj, cyhal_gpio_t ssel); - --/** Get a received value out of the SPI receive buffer -+/** Synchronously get a received value out of the SPI receive buffer -+ * -+ * In Master mode - transmits fill-in value and read the data from RxFifo -+ * In Slave mode - Blocks until a value is available - * -- * Blocks until a value is available - * @param[in] obj The SPI peripheral to read - * @param[in] value The value received - * @return The status of the read request -@@ -168,9 +275,12 @@ cy_rslt_t cyhal_spi_frequency(cyhal_spi_t *obj, uint32_t hz); - * - In Master mode, MISO pin required to be non-NC for this API to operate - * - In Slave mode, MOSI pin required to be non-NC for this API to operate - */ --cy_rslt_t cyhal_spi_read(cyhal_spi_t *obj, uint32_t *value); -+cy_rslt_t cyhal_spi_recv(cyhal_spi_t *obj, uint32_t* value); - --/** Write a byte out -+/** Synchronously send a byte out -+ * -+ * In Master mode transmits value to slave and read/drop a value from the RxFifo. -+ * In Slave mode writes a value to TxFifo - * - * @param[in] obj The SPI peripheral to use for sending - * @param[in] value The value to send -@@ -179,27 +289,35 @@ cy_rslt_t cyhal_spi_read(cyhal_spi_t *obj, uint32_t *value); - * - In Master mode, MOSI pin required to be non-NC for this API to operate - * - In Slave mode, MISO pin required to be non-NC for this API to operate - */ --cy_rslt_t cyhal_spi_write(cyhal_spi_t *obj, uint32_t value); -+cy_rslt_t cyhal_spi_send(cyhal_spi_t *obj, uint32_t value); - --/** Write a block out and receive a value -+/** Synchronously Write a block out and receive a value - * -- * The total number of bytes sent and received will be the maximum of -- * tx_length and rx_length. The bytes written will be padded with the -- * value 0xff. -+ * The total number of bytes sent and received will be the maximum of tx_length -+ * and rx_length. The bytes written will be padded (at the end) with the value -+ * given by write_fill. -+ * -+ * This function will block for the duration of the transfer. \ref cyhal_spi_transfer_async -+ * can be used for non-blocking transfers. - * - * @param[in] obj The SPI peripheral to use for sending - * @param[in] tx Pointer to the byte-array of data to write to the device - * @param[in,out] tx_length Number of bytes to write, updated with the number actually written - * @param[out] rx Pointer to the byte-array of data to read from the device -- * @param[in,out] rx_length Number of bytes to read, udpated with the number actually read -+ * @param[in,out] rx_length Number of bytes to read, updated with the number actually read - * @param[in] write_fill Default data transmitted while performing a read - * @return The status of the transfer request - * @note Both MOSI and MISO pins required to be non-NC for this API to operate - */ --cy_rslt_t cyhal_spi_transfer(cyhal_spi_t *obj, const uint8_t *tx, size_t tx_length, uint8_t *rx, size_t rx_length, -- uint8_t write_fill); -+cy_rslt_t cyhal_spi_transfer(cyhal_spi_t *obj, const uint8_t *tx, size_t tx_length, uint8_t *rx, size_t rx_length, uint8_t write_fill); - --/** Begin the SPI transfer. Buffer pointers and lengths are specified in tx_buff and rx_buff -+/** Start an asynchronous SPI transfer. -+ * -+ * This will transfer `rx_length` bytes into the buffer pointed to by `rx`, while simultaneously transfering -+ * `tx_length` bytes of data from the buffer pointed to by `tx`, both in the background. -+ * When the transfer is complete, the @ref CYHAL_SPI_IRQ_DONE event will be raised. -+ * See @ref cyhal_spi_register_callback and @ref cyhal_spi_enable_event. -+ * \note For blocking transfers cyhal_spi_transfer can be used. - * - * @param[in] obj The SPI object that holds the transfer information - * @param[in] tx The transmit buffer -@@ -209,8 +327,7 @@ cy_rslt_t cyhal_spi_transfer(cyhal_spi_t *obj, const uint8_t *tx, size_t tx_leng - * @return The status of the transfer_async request - * @note Both MOSI and MISO pins required to be non-NC for this API to operate - */ --cy_rslt_t cyhal_spi_transfer_async(cyhal_spi_t *obj, const uint8_t *tx, size_t tx_length, uint8_t *rx, -- size_t rx_length); -+cy_rslt_t cyhal_spi_transfer_async(cyhal_spi_t *obj, const uint8_t *tx, size_t tx_length, uint8_t *rx, size_t rx_length); - - /** Checks if the specified SPI peripheral is in use - * -@@ -226,25 +343,41 @@ bool cyhal_spi_is_busy(cyhal_spi_t *obj); - */ - cy_rslt_t cyhal_spi_abort_async(cyhal_spi_t *obj); - --/** The SPI interrupt handler registration -+/** Register a SPI callback handler - * -- * @param[in] obj The SPI object -- * @param[in] handler The callback handler which will be invoked when the interrupt fires -- * @param[in] handler_arg Generic argument that will be provided to the handler when called -+ * This function will be called when one of the events enabled by \ref cyhal_spi_enable_event occurs. -+ * -+ * @param[in] obj The SPI object -+ * @param[in] callback The callback handler which will be invoked when the interrupt fires -+ * @param[in] callback_arg Generic argument that will be provided to the callback when called - */ --void cyhal_spi_register_irq(cyhal_spi_t *obj, cyhal_spi_irq_handler_t handler, void *handler_arg); -+void cyhal_spi_register_callback(cyhal_spi_t *obj, cyhal_spi_event_callback_t callback, void *callback_arg); - - /** Configure SPI interrupt. This function is used for word-approach - * -- * @param[in] obj The SPI object -- * @param[in] event The SPI IRQ type -- * @param[in] enable True to turn on interrupts, False to turn off -+ * When an enabled event occurs, the function specified by \ref cyhal_spi_register_callback will be called. -+ * -+ * @param[in] obj The SPI object -+ * @param[in] event The SPI event type -+ * @param[in] intr_priority The priority for NVIC interrupt events -+ * @param[in] enable True to turn on interrupts, False to turn off - */ --void cyhal_spi_irq_enable(cyhal_spi_t *obj, cyhal_spi_irq_event_t event, bool enable); -+void cyhal_spi_enable_event(cyhal_spi_t *obj, cyhal_spi_event_t event, uint8_t intr_priority, bool enable); - --/** \} group_hal_spi_functions */ -+/******************************************************************************* -+* Backward compatibility macro. The following code is DEPRECATED and must -+* not be used in new projects -+*******************************************************************************/ -+/** \cond INTERNAL */ -+typedef cyhal_spi_event_t cyhal_spi_irq_event_t; -+/** \endcond */ - - #if defined(__cplusplus) - } - #endif - -+#ifdef CYHAL_SPI_IMPL_HEADER -+#include CYHAL_SPI_IMPL_HEADER -+#endif /* CYHAL_SPI_IMPL_HEADER */ -+ -+/** \} group_hal_spi */ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/mbed_lib.json b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/mbed_lib.json -deleted file mode 100644 -index 0d9dace57e..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/mbed_lib.json -+++ /dev/null -@@ -1,6 +0,0 @@ --{ -- "name": "cy_psoc6_whd", -- "config": { -- "present": 1 -- } --} -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cy_hal.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cy_hal.c -index bb5f942102..f5a0716697 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cy_hal.c -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cy_hal.c -@@ -18,59 +18,46 @@ - /** @file - * Provides cyhal porting to generic mbed APIs - */ -- --#include --#include "cyhal_sdio.h" --#include "cyhal_spi.h" --#include "cyhal_gpio.h" --#include --#include "sockets.h" -- --void Cy_SysLib_Delay(uint32_t milliseconds) { -- thread_sleep_for(milliseconds); --} -- --void Cy_SysLib_DelayUs(uint16_t microseconds) { -- wait_us(microseconds); --} -- --static bool filesystem_mounted = false; --extern bool wiced_filesystem_mount(); -- --int wiced_filesystem_file_open(int* fd, const char* filename) { -- if (!filesystem_mounted) { -- filesystem_mounted = wiced_filesystem_mount(); -- } -- if (!filesystem_mounted) { -- return WHD_BADARG; -- } -- *fd = open(filename, O_RDONLY); -- if (*fd == -1) { -- return WHD_BADARG; -- } -- return WHD_SUCCESS; -+#include "cyhal.h" -+#include "mbed_thread.h" -+#include "mbed_wait_api.h" -+ -+static cyhal_sdio_t sdio_obj; -+ -+/* Edit Pin configuration */ -+const pinconfig_t PinConfig[] = { -+ -+ [CYBSP_WIFI_WL_REG_ON] = WIFI_WL_REG_ON, -+#ifdef CYBSP_WIFI_32K_CLK -+ [CYBSP_WIFI_32K_CLK] = WIFI_32K_CLK, -+#endif /* CYBSP_WIFI_32K_CLK */ -+ [CYBSP_LED1 ] = BSP_LED1, -+ [CYBSP_LED2 ] = BSP_LED2, -+ [CYBSP_WIFI_SDIO_CMD] = WIFI_SDIO_CMD, -+ [CYBSP_WIFI_SDIO_CLK] = WIFI_SDIO_CLK, -+ [CYBSP_WIFI_SDIO_D0 ] = WIFI_SDIO_D0, -+ [CYBSP_WIFI_SDIO_D1 ] = WIFI_SDIO_D1, -+ [CYBSP_WIFI_SDIO_D2 ] = WIFI_SDIO_D2, -+ [CYBSP_WIFI_SDIO_D3 ] = WIFI_SDIO_D3, -+ [CYBSP_SDIO_OOB_IRQ ] = WIFI_SDIO_OOB_IRQ //VIKR -+}; -+ -+void Cy_SysLib_Delay(uint32_t milliseconds) -+{ -+ thread_sleep_for(milliseconds); - } - --int wiced_filesystem_file_seek(int* fd, uint32_t offset) { -- if (*fd == -1) { -- return WHD_BADARG; -- } -- lseek(*fd, offset, SEEK_SET); -- return WHD_SUCCESS; -+void Cy_SysLib_DelayUs(uint16_t microseconds) -+{ -+ wait_us(microseconds); - } - --int wiced_filesystem_file_read(int* fd, void *buffer, uint32_t maxsize, uint32_t* size) { -- if (*fd == -1) { -- return WHD_BADARG; -- } -- *size = read(*fd, buffer, maxsize); -- return WHD_SUCCESS; -+void cyhal_system_delay_ms(uint32_t milliseconds) -+{ -+ Cy_SysLib_Delay(milliseconds); - } - --int wiced_filesystem_file_close(int* fd) { -- if (*fd == -1) { -- return WHD_BADARG; -- } -- close(*fd); -- return WHD_SUCCESS; -+cyhal_sdio_t *cybsp_get_wifi_sdio_obj(void) -+{ -+ return &sdio_obj; - } -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cy_utils.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cy_utils.h -index 30a99344c1..db8c143f36 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cy_utils.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cy_utils.h -@@ -33,6 +33,8 @@ - - #pragma once - -+#include "stdint.h" -+ - #if defined(__cplusplus) - extern "C" { - #endif -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp.h -new file mode 100644 -index 0000000000..06226f327b ---- /dev/null -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp.h -@@ -0,0 +1,50 @@ -+/***************************************************************************//** -+* \file cybsp.h -+* -+* \brief -+* Basic API for setting up boards containing a Cypress MCU. -+* -+******************************************************************************** -+* \copyright -+* Copyright 2018-2020 Cypress Semiconductor Corporation -+* SPDX-License-Identifier: Apache-2.0 -+* -+* Licensed under the Apache License, Version 2.0 (the "License"); -+* you may not use this file except in compliance with the License. -+* You may obtain a copy of the License at -+* -+* http://www.apache.org/licenses/LICENSE-2.0 -+* -+* Unless required by applicable law or agreed to in writing, software -+* distributed under the License is distributed on an "AS IS" BASIS, -+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+* See the License for the specific language governing permissions and -+* limitations under the License. -+*******************************************************************************/ -+ -+#pragma once -+ -+#include "cy_result.h" -+#include "cyhal_sdio.h" -+ -+#if defined(__cplusplus) -+extern "C" { -+#endif -+ -+/** -+* \addtogroup group_bsp_functions Functions -+* \{ -+*/ -+ -+/** -+ * \brief Get the initialized sdio object used for communicating with the WiFi Chip. -+ * \note This function should only be called after cybsp_init(); -+ * \returns The initialized sdio object. -+ */ -+cyhal_sdio_t* cybsp_get_wifi_sdio_obj(void); -+ -+/** \} group_bsp_functions */ -+ -+#ifdef __cplusplus -+} -+#endif /* __cplusplus */ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp_wifi.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp_wifi.c -deleted file mode 100644 -index a169f3fcff..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp_wifi.c -+++ /dev/null -@@ -1,219 +0,0 @@ --/***************************************************************************//** --* \file cybsp_wifi.c --* --* \brief --* Provides utility functions that are used by board support packages. --* --******************************************************************************** --* \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation --* SPDX-License-Identifier: Apache-2.0 --* --* Licensed under the Apache License, Version 2.0 (the "License"); --* you may not use this file except in compliance with the License. --* You may obtain a copy of the License at --* --* http://www.apache.org/licenses/LICENSE-2.0 --* --* Unless required by applicable law or agreed to in writing, software --* distributed under the License is distributed on an "AS IS" BASIS, --* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --* See the License for the specific language governing permissions and --* limitations under the License. --*******************************************************************************/ -- --#include "cy_network_buffer.h" --#include "cyabs_rtos.h" --#include "whd_types.h" --#include "whd_config.h" --#include "whd_wifi_api.h" --#include "cyhal_sdio.h" -- --#if defined(__cplusplus) --extern "C" { --#endif -- --static whd_driver_t whd_drv; -- --static whd_buffer_funcs_t buffer_ops = --{ -- .whd_host_buffer_get = cy_host_buffer_get, -- .whd_buffer_release = cy_buffer_release, -- .whd_buffer_get_current_piece_data_pointer = cy_buffer_get_current_piece_data_pointer, -- .whd_buffer_get_current_piece_size = cy_buffer_get_current_piece_size, -- .whd_buffer_set_size = cy_buffer_set_size, -- .whd_buffer_add_remove_at_front = cy_buffer_add_remove_at_front, --}; -- --static whd_netif_funcs_t netif_ops = --{ -- .whd_network_process_ethernet_data = cy_network_process_ethernet_data, --}; -- --//TODO: Need to use resource implemenatation from abstraction layer. --extern whd_resource_source_t resource_ops; -- --typedef enum --{ -- CYBSP_WIFI_WL_REG_ON, -- CYBSP_WIFI_32K_CLK, -- CYBSP_LED1, -- CYBSP_LED2, -- CYBSP_WIFI_SDIO_CMD, -- CYBSP_WIFI_SDIO_CLK, -- CYBSP_WIFI_SDIO_D0, -- CYBSP_WIFI_SDIO_D1, -- CYBSP_WIFI_SDIO_D2, -- CYBSP_WIFI_SDIO_D3, -- CYBSP_SDIO_OOB_IRQ, -- CYBSP_WIFI_MAX, --} wwd_sdio_pin_t; -- --/* Edit Pin configuration */ --const pinconfig_t PinConfig[]={ -- -- [CYBSP_WIFI_WL_REG_ON] = WIFI_WL_REG_ON, --#ifdef CYBSP_WIFI_32K_CLK -- [CYBSP_WIFI_32K_CLK] = WIFI_32K_CLK, --#endif /* CYBSP_WIFI_32K_CLK */ -- [CYBSP_LED1 ] = BSP_LED1, -- [CYBSP_LED2 ] = BSP_LED2, -- [CYBSP_WIFI_SDIO_CMD] = WIFI_SDIO_CMD, -- [CYBSP_WIFI_SDIO_CLK] = WIFI_SDIO_CLK, -- [CYBSP_WIFI_SDIO_D0 ] = WIFI_SDIO_D0, -- [CYBSP_WIFI_SDIO_D1 ] = WIFI_SDIO_D1, -- [CYBSP_WIFI_SDIO_D2 ] = WIFI_SDIO_D2, -- [CYBSP_WIFI_SDIO_D3 ] = WIFI_SDIO_D3, -- [CYBSP_SDIO_OOB_IRQ ] = WIFI_SDIO_OOB_IRQ //VIKR --}; -- --whd_sdio_config_t sdio_config= --{ -- /* Bus config */ -- .sdio_1bit_mode = false, /**< Default is false, means SDIO operates under 4 bit mode */ -- .high_speed_sdio_clock = false, /**< Default is false, means SDIO operates in normal clock rate */ -- .oob_config = { -- /**< Out-of-band interrupt configuration (required when bus can sleep) */ -- .host_oob_pin = CYBSP_SDIO_OOB_IRQ, /**< Host-side GPIO pin selection CYHAL_NC_PIN_VALUE or CYBSP_SDIO_OOB_IRQ */ -- .dev_gpio_sel = 0, /**< WiFi device-side GPIO pin selection (must be zero) */ -- .is_falling_edge = true, /**< Interrupt trigger (polarity) */ -- .intr_priority = 0, /**< OOB interrupt priority */ -- } --}; -- --cy_rslt_t sdio_enumerate( cyhal_sdio_t *sdhc_obj ) --{ -- cy_rslt_t result; -- uint32_t loop_count = 0; -- uint32_t data = 0; -- do -- { -- /* Send CMD0 to set it to idle state in SDIO_BYTE_MODE, SDIO_1B_BLOCK */ -- cyhal_sdio_send_cmd( sdhc_obj, CYHAL_WRITE, CYHAL_SDIO_CMD_GO_IDLE_STATE, 0,NULL ); -- -- /* CMD5. */ -- cyhal_sdio_send_cmd( sdhc_obj, CYHAL_READ, CYHAL_SDIO_CMD_IO_SEND_OP_COND, 0,NULL); -- -- /* Send CMD3 to get RCA. */ -- result = cyhal_sdio_send_cmd(sdhc_obj, CYHAL_READ, CYHAL_SDIO_CMD_SEND_RELATIVE_ADDR,0, &data ); -- loop_count++; -- if ( loop_count >= (uint32_t) SDIO_ENUMERATION_TIMEOUT_MS ) -- { -- return -1; -- } -- -- } while ( ( result != CY_RSLT_SUCCESS ) && ( cy_rtos_delay_milliseconds( (uint32_t) 1 ), ( 1 == 1 ) ) ); -- /* If you're stuck here, check the platform matches your hardware */ -- -- /* Send CMD7 with the returned RCA to select the card */ -- cyhal_sdio_send_cmd(sdhc_obj, CYHAL_WRITE, CYHAL_SDIO_CMD_SELECT_CARD,data, &data); -- return result; --} -- --cy_rslt_t whd_init_hardware_sdio(cyhal_sdio_t *sdhc_obj) --{ -- /* WiFi no power */ -- cy_rslt_t result = cyhal_gpio_init(CYBSP_WIFI_WL_REG_ON, CYHAL_GPIO_DIR_OUTPUT, CYHAL_GPIO_DRIVE_PULLUP,0); -- -- #ifdef CYBSP_WIFI_32K_CLK -- result = cyhal_gpio_init(CYBSP_WIFI_32K_CLK, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_PULLUP,0); -- cyhal_gpio_write(CYBSP_WIFI_32K_CLK, false); --#endif -- -- if(result == CY_RSLT_SUCCESS) -- { -- /* Init SDIO Host */ -- result = cyhal_sdio_init(sdhc_obj, CYBSP_WIFI_SDIO_CMD, CYBSP_WIFI_SDIO_CLK, CYBSP_WIFI_SDIO_D0, CYBSP_WIFI_SDIO_D1, CYBSP_WIFI_SDIO_D2, CYBSP_WIFI_SDIO_D3);; -- -- if(result == CY_RSLT_SUCCESS) -- { -- /* WiFi put power */ -- cyhal_gpio_write(CYBSP_WIFI_WL_REG_ON, true); -- osDelay(WLAN_POWER_UP_DELAY_MS); -- } -- result=sdio_enumerate(sdhc_obj); -- -- if(result == CY_RSLT_SUCCESS) sdio_enable_high_speed(); -- -- } -- return result; --} -- --static cy_rslt_t init_sdio_bus(whd_driver_t* drv, cyhal_sdio_t *sdhc_obj) --{ -- cy_rslt_t res = whd_init_hardware_sdio(sdhc_obj); -- if (res != CY_RSLT_SUCCESS) { -- return res; -- } -- return whd_bus_sdio_attach(*drv, &sdio_config, sdhc_obj); --} -- --cyhal_sdio_t sdhc_obj; -- --cy_rslt_t cybsp_wifi_init_primary(whd_interface_t* interface) --{ -- whd_init_config_t whd_init_config; -- whd_init_config.thread_stack_size = (uint32_t)WHD_THREAD_STACK_SIZE; -- whd_init_config.thread_stack_start = NULL; -- whd_init_config.thread_priority = (uint32_t)WHD_THREAD_PRIORITY; -- whd_init_config.country = WHD_COUNTRY; -- -- cy_rslt_t result = whd_init(&whd_drv, &whd_init_config, &resource_ops, &buffer_ops, &netif_ops); -- if(result == CY_RSLT_SUCCESS) -- { -- result = init_sdio_bus(&whd_drv, &sdhc_obj); -- if(result == CY_RSLT_SUCCESS) -- { -- result = whd_wifi_on(whd_drv, interface); -- } -- } -- return result; --} -- --cy_rslt_t cybsp_wifi_init_secondary(whd_interface_t* interface, whd_mac_t* mac_address) --{ -- return whd_add_secondary_interface(whd_drv, mac_address, interface); --} -- --cy_rslt_t cybsp_wifi_deinit(whd_interface_t interface) --{ -- cy_rslt_t result = whd_wifi_off(interface); -- if(result == CY_RSLT_SUCCESS) -- { -- result = whd_deinit(interface); -- if(result == CY_RSLT_SUCCESS) -- { -- cyhal_gpio_free(CYBSP_WIFI_WL_REG_ON); -- } -- } -- return result; --} -- --whd_driver_t cybsp_get_wifi_driver(void) --{ -- return whd_drv; --} -- --#if defined(__cplusplus) --} --#endif -\ No newline at end of file -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp_wifi.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp_wifi.h -deleted file mode 100644 -index 31bfc82566..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cybsp_wifi.h -+++ /dev/null -@@ -1,109 +0,0 @@ --/***************************************************************************//** --* \file cybsp_wifi.h --* --* \brief --* Basic abstraction layer for dealing with boards containing a Cypress MCU. This --* API provides convenience methods for initializing and manipulating different --* hardware found on the board. --* --******************************************************************************** --* \copyright --* Copyright 2018-2019 Cypress Semiconductor Corporation --* SPDX-License-Identifier: Apache-2.0 --* --* Licensed under the Apache License, Version 2.0 (the "License"); --* you may not use this file except in compliance with the License. --* You may obtain a copy of the License at --* --* http://www.apache.org/licenses/LICENSE-2.0 --* --* Unless required by applicable law or agreed to in writing, software --* distributed under the License is distributed on an "AS IS" BASIS, --* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --* See the License for the specific language governing permissions and --* limitations under the License. --*******************************************************************************/ -- --/** --* \addtogroup group_bsp_wifi WiFi --* \{ --* Basic abstraction layer for dealing with boards containing a Cypress MCU. This --* API provides convenience methods for initializing and manipulating different --* hardware found on the board. --* --* \defgroup group_bsp_wifi_macros Macros --* \defgroup group_bsp_wifi_functions Functions --*/ --#pragma once -- --#include "cy_result.h" --#include "whd_wifi_api.h" -- --#if defined(__cplusplus) --extern "C" { --#endif -- --/** --* \addtogroup group_bsp_wifi_macros --* \{ --*/ -- --/** Initialization of the WiFi driver failed. */ --#define CYBSP_RSLT_WIFI_INIT_FAILED (CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CY_RSLT_MODULE_ABSTRACTION_BSP, 4)) -- --/** SDIO enumeration failed. */ --#define CYBSP_RSLT_WIFI_SDIO_ENUM_TIMEOUT (CY_RSLT_CREATE(CY_RSLT_TYPE_ERROR, CY_RSLT_MODULE_ABSTRACTION_BSP, 5)) -- --/** \} group_bsp_board_macros */ -- --/** --* \addtogroup group_bsp_wifi_functions --* \{ --*/ -- --/** Initializes the primary interface for the WiFi driver on the board. This function -- * does the following -- * 1) Initializes the WiFi driver. -- * 2) Turns on the WiFi chip. -- * -- * @note This function cannot be called multiple times. The user needs to first de-initialize -- * before calling this function again. -- * -- * @param[out] interface Interface to be initialized -- * @return CY_RSLT_SUCCESS for successful initialization or error if initialization failed. -- */ --cy_rslt_t cybsp_wifi_init_primary(whd_interface_t* interface); -- --/** This function initializes and adds a secondary interface to the WiFi driver. -- * @note This function does not initialize the WiFi driver or turn on the WiFi chip. -- * That is required to be done by the primary interface -- * -- * @param[out] interface Interface to be initialized -- * @param[in] mac_address Mac address for secondary interface -- * @return CY_RSLT_SUCCESS for successful initialization or error if initialization failed. -- */ --cy_rslt_t cybsp_wifi_init_secondary(whd_interface_t* interface, whd_mac_t* mac_address); -- --/** De-initializes all WiFi interfaces and the WiFi driver. This function does the following -- * 1) Deinitializes all WiFi interfaces and WiFi driver. -- * 2) Turns off the WiFi chip. -- * -- * @param[in] interface Interface to be de-initialized. -- * @return CY_RSLT_SUCCESS for successful de-initialization or error if de-initialization failed. -- */ --cy_rslt_t cybsp_wifi_deinit(whd_interface_t interface); -- --/** Gets the wifi driver instance initialized by the driver. This should only be called -- * after the interface is initialized by cybsp_wifi_init_primary(). -- * -- * @return Wifi driver instance pointer. -- */ --whd_driver_t cybsp_get_wifi_driver(void); -- --/** \} group_bsp_wifi_functions */ -- --#ifdef __cplusplus --} --#endif /* __cplusplus */ -- --/** \} group_bsp_wifi */ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_version.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cycfg.h -similarity index 79% -rename from targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_version.h -rename to targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cycfg.h -index 79a39ee3e9..7a3dee0ca9 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/inc/whd_version.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cycfg.h -@@ -1,5 +1,5 @@ - /* -- * Copyright 2020 Cypress Semiconductor Corporation -+ * Copyright 2020 Arduino SA - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); -@@ -15,6 +15,6 @@ - * limitations under the License. - */ - --#define WHD_VERSION "v1.91.2" --#define WHD_BRANCH "v1.91.2" --#define WHD_DATE "2020-06-25 02:15:47 -0500" -+/** @file -+ * Empty file to be compliant with Cypress COMPONENT_WHD -+ */ -\ No newline at end of file -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal.h -new file mode 100644 -index 0000000000..e56be0e013 ---- /dev/null -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal.h -@@ -0,0 +1,52 @@ -+/* -+ * Copyright 2020 Arduino SA -+ * SPDX-License-Identifier: Apache-2.0 -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+ -+/** @file -+ * Provides cyhal porting to generic mbed APIs -+ */ -+#include "whd_config.h" -+#include "cyhal_hw_types.h" -+#include "cyhal_gpio.h" -+#include "cyhal_sdio.h" -+ -+#if defined(__cplusplus) -+extern "C" { -+#endif -+ -+typedef enum -+{ -+ CYBSP_WIFI_WL_REG_ON, -+ CYBSP_WIFI_32K_CLK, -+ CYBSP_LED1, -+ CYBSP_LED2, -+ CYBSP_WIFI_SDIO_CMD, -+ CYBSP_WIFI_SDIO_CLK, -+ CYBSP_WIFI_SDIO_D0, -+ CYBSP_WIFI_SDIO_D1, -+ CYBSP_WIFI_SDIO_D2, -+ CYBSP_WIFI_SDIO_D3, -+ CYBSP_SDIO_OOB_IRQ, -+ CYBSP_WIFI_MAX, -+} wwd_sdio_pin_t; -+ -+void cyhal_system_delay_ms(uint32_t milliseconds); -+cy_rslt_t sdio_enable_high_speed(void); -+ -+#if defined(__cplusplus) -+} -+#endif -+ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_gpio.cpp b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_gpio.cpp -new file mode 100644 -index 0000000000..930764c77f ---- /dev/null -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_gpio.cpp -@@ -0,0 +1,104 @@ -+/* -+ * Copyright 2020 Arduino SA -+ * SPDX-License-Identifier: Apache-2.0 -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+ -+/** @file -+ * Provides the porting layer for STM32 GPIOs on WHD driver -+ */ -+ -+#include -+#include "cyhal.h" -+#include "cybsp.h" -+#include "mbed.h" -+#include "wiced_filesystem.h" -+ -+extern pinconfig_t PinConfig[]; -+ -+/******************************************************************************* -+* Internal -+*******************************************************************************/ -+static mbed::InterruptIn *oob_irq; -+static cyhal_gpio_event_t oob_event = CYHAL_GPIO_IRQ_FALL; -+static cyhal_gpio_event_callback_t oob_handler; -+static void *oob_handler_arg; -+ -+/******************************************************************************* -+* Internal Interrrupt Service Routine -+*******************************************************************************/ -+static void cb() -+{ -+ oob_handler(oob_handler_arg, oob_event); -+} -+ -+/******************************************************************************* -+* HAL Implementation -+*******************************************************************************/ -+cy_rslt_t cyhal_gpio_init(cyhal_gpio_t pin, cyhal_gpio_direction_t direction, cyhal_gpio_drive_mode_t drvMode, bool initVal) -+{ -+ cy_rslt_t ret = CY_RSLT_SUCCESS; -+ -+ // Workaround to enable GPIOJ clock -+ if (pin == CYBSP_WIFI_WL_REG_ON) { -+ __HAL_RCC_GPIOJ_CLK_ENABLE(); -+ // Ensure FS and BlockDevice are initialized on time if needed -+ wiced_filesystem_init(); -+ } -+ // Ignore the parameter and take the pin config directly from a static array defintions -+ HAL_GPIO_Init(PinConfig[pin].port, &PinConfig[pin].config); -+ if (direction == CYHAL_GPIO_DIR_OUTPUT) { -+ HAL_GPIO_WritePin(PinConfig[pin].port, PinConfig[pin].config.Pin, (initVal) ? GPIO_PIN_SET : GPIO_PIN_RESET); -+ } -+ // Workaround to initialize sdio interface without cypress bsp init -+ if (pin == CYBSP_WIFI_WL_REG_ON) { -+ cyhal_sdio_t *sdio_p = cybsp_get_wifi_sdio_obj(); -+ ret = cyhal_sdio_init(sdio_p, CYBSP_WIFI_SDIO_CMD, CYBSP_WIFI_SDIO_CLK, CYBSP_WIFI_SDIO_D0, CYBSP_WIFI_SDIO_D1, CYBSP_WIFI_SDIO_D2, CYBSP_WIFI_SDIO_D3); -+ } -+ return ret; -+} -+ -+void cyhal_gpio_write(cyhal_gpio_t pin, bool value) -+{ -+ HAL_GPIO_WritePin(PinConfig[pin].port, PinConfig[pin].config.Pin, (value) ? GPIO_PIN_SET : GPIO_PIN_RESET); -+} -+ -+void cyhal_gpio_register_callback(cyhal_gpio_t pin, cyhal_gpio_event_callback_t handler, void *handler_arg) -+{ -+ if (handler && handler_arg && (oob_irq == NULL)) { -+ oob_irq = new mbed::InterruptIn(PJ_5); -+ oob_handler = handler; -+ oob_handler_arg = handler_arg; -+ } -+} -+ -+void cyhal_gpio_enable_event(cyhal_gpio_t pin, cyhal_gpio_event_t event, uint8_t intr_priority, bool enable) -+{ -+ oob_event = event; -+ if (enable) { -+ if (event == CYHAL_GPIO_IRQ_RISE) { -+ oob_irq->rise(cb); -+ } -+ if (event == CYHAL_GPIO_IRQ_FALL) { -+ oob_irq->fall(cb); -+ } -+ } else if (oob_irq != NULL) { -+ delete oob_irq; -+ } -+} -+ -+void cyhal_gpio_free(cyhal_gpio_t pin) -+{ -+ // Do nothing -+} -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_hw_types.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_hw_types.h -similarity index 78% -rename from targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_hw_types.h -rename to targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_hw_types.h -index 0436834aff..1f872abb37 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/interface/cyhal_hw_types.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_hw_types.h -@@ -41,6 +41,7 @@ - #pragma once - #include - #include "stm32h7xx_hal.h" -+#include "PinNames.h" - - /* - #include "TODO: Port specific header file" -@@ -50,6 +51,14 @@ - extern "C" { - #endif - -+ -+#ifndef CYHAL_ISR_PRIORITY_DEFAULT -+/** Priority that is applied by default to all drivers when initalized. Priorities can be -+ * overridden on each driver as part of enabling events. -+ */ -+#define CYHAL_ISR_PRIORITY_DEFAULT (7) -+#endif -+ - /** - * \addtogroup group_hal_hw_types_data_structures - * \{ -@@ -71,6 +80,18 @@ typedef struct - void *div_type; - } cyhal_clock_divider_t; - -+/** Clock object */ -+typedef struct -+{ -+ //For backwards compatibility with cyhal_clock_divider_t only. Do not use going forward. -+ int div_type; /*!< Deprecated */ -+ uint8_t div_num; /*!< Deprecated */ -+ //End BWC items -+ int block; -+ uint8_t channel; -+ bool reserved; -+} cyhal_clock_t; -+ - /** SDIO object */ - typedef void* *cyhal_sdio_t; - -@@ -81,23 +102,11 @@ typedef struct - void *empty; - } cyhal_spi_t; - -- --#include "whd_debug.h" -- --#if defined(WPRINT_ENABLE_WHD_ERROR) || defined(WPRINT_ENABLE_WHD_INFO) || defined(WPRINT_ENABLE_WHD_DEBUG) --/** \} group_hal_hw_types_data_structures */ --#define PRINTF(...) do { \ -- (void) printf(__VA_ARGS__); \ -- } while (0) --#else --#define PRINTF(...) --#endif -- - #include "whd_config.h" -+#include "whd_debug.h" - - #if defined(__cplusplus) - } - #endif /* __cplusplus */ - - /** \} group_hal_hw_types */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_sdio.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_sdio.c -new file mode 100644 -index 0000000000..34aa5498e1 ---- /dev/null -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_sdio.c -@@ -0,0 +1,483 @@ -+/* -+ * Copyright 2020 Cypress Semiconductor Corporation -+ * SPDX-License-Identifier: Apache-2.0 -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+ -+/** @file -+ * Provides the porting layer for STM32 SDIO on WHD driver -+ */ -+ -+#include -+#include -+#include "whd_thread.h" -+#include "bus_protocols/whd_bus_sdio_protocol.h" -+#include "cyabs_rtos.h" -+#include "cyhal_sdio.h" -+ -+#define SDIO_RESPONSE_SHORT SDMMC_RESPONSE_SHORT -+#define SDIO_WAIT_NO SDMMC_WAIT_NO -+#define SDIO_CPSM_ENABLE SDMMC_CPSM_ENABLE -+#define SDIO_CMDTRANS SDMMC_CMD_CMDTRANS -+#define SDIO_FLAG_CMDACT (SDMMC_STA_CPSMACT | SDMMC_STA_DPSMACT) -+#define SDIO_TRANSFER_DIR_TO_SDIO SDMMC_TRANSFER_DIR_TO_SDMMC -+#define SDIO_TRANSFER_DIR_TO_CARD SDMMC_TRANSFER_DIR_TO_CARD -+#define SDIO_TRANSFER_MODE_BLOCK SDMMC_TRANSFER_MODE_BLOCK -+#define SDIO_DPSM_ENABLE SDMMC_DPSM_ENABLE -+#define SDIO_DPSM_DISABLE SDMMC_DPSM_DISABLE -+#define SDIO_DCTRL_SDIOEN SDMMC_DCTRL_SDIOEN /* 1 << 11 */ -+#define SDIO_DCTRL_DTMODE_1 SDMMC_DCTRL_DTMODE_1 /* 1<<3 */ -+#define SDIO_STA_DTIMEOUT SDMMC_STA_DTIMEOUT -+#define SDIO_STA_CTIMEOUT SDMMC_STA_CTIMEOUT -+#define SDIO_STA_CCRCFAIL SDMMC_STA_CCRCFAIL -+#define SDIO_STA_DCRCFAIL SDMMC_STA_DCRCFAIL -+#define SDIO_STA_TXUNDERR SDMMC_STA_TXUNDERR -+#define SDIO_STA_RXOVERR SDMMC_STA_RXOVERR -+#define SDIO_STA_TXACT SDMMC_STA_CPSMACT -+#define SDIO_STA_RXACT SDMMC_STA_DPSMACT -+#define SDIO_STA_CMDREND SDMMC_STA_CMDREND -+#define SDIO_STA_CMDSENT SDMMC_STA_CMDSENT -+#define SDIO_CMD_CMDTRANS SDMMC_CMD_CMDTRANS -+#define SDIO SDMMC1 -+ -+#define COMMAND_FINISHED_CMD52_TIMEOUT_LOOPS (100000) -+#define BUS_LEVEL_MAX_RETRIES 10 -+ -+#define SDIO_CMD_5 5 -+#define SDIO_CMD_53 53 -+ -+#define SDIO_STA_STBITERR ((uint32_t)0x00000200) /*!b)?a:b -+ -+extern pinconfig_t PinConfig[]; -+extern SD_HandleTypeDef hsd; -+ -+/* for debug prints only */ -+//static int num = 0; -+ -+static uint32_t dctrl; -+ -+static whd_driver_t whd_handler; -+static cyhal_sdio_irq_handler_t sdio_irq_handler; -+ -+static uint8_t temp_dma_buffer[2048] __attribute__((aligned(8))); -+static uint8_t *user_data; -+static uint32_t user_data_size; -+static uint8_t *dma_data_source; -+static uint32_t dma_transfer_size; -+static cyhal_transfer_t current_transfer_direction; -+ -+static cy_semaphore_t sdio_transfer_finished_semaphore; -+static volatile uint32_t sdio_transfer_failed = 0; -+static volatile uint32_t irqstatus = 0; -+static int current_command = 0; -+ -+static cy_rslt_t sdio_enable_high_speed(void) -+{ -+ SDMMC_InitTypeDef sdio_init_structure; -+ -+ sdio_init_structure.ClockDiv = SDMMC_HSpeed_CLK_DIV; -+ sdio_init_structure.ClockEdge = SDMMC_CLOCK_EDGE_RISING; -+ sdio_init_structure.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; -+ sdio_init_structure.BusWide = SDMMC_BUS_WIDE_4B; -+ sdio_init_structure.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_ENABLE; -+ -+ SDMMC_Init(SDMMC1, sdio_init_structure); -+ return CY_RSLT_SUCCESS; -+} -+ -+static uint32_t find_optimal_block_size(uint32_t data_size) -+{ -+ if (data_size > (uint32_t) 256) { -+ return 512; -+ } -+ if (data_size > (uint32_t) 128) { -+ return 256; -+ } -+ if (data_size > (uint32_t) 64) { -+ return 128; -+ } -+ if (data_size > (uint32_t) 32) { -+ return 64; -+ } -+ if (data_size > (uint32_t) 16) { -+ return 32; -+ } -+ if (data_size > (uint32_t) 8) { -+ return 16; -+ } -+ if (data_size > (uint32_t) 4) { -+ return 8; -+ } -+ if (data_size > (uint32_t) 2) { -+ return 4; -+ } -+ -+ return 4; -+} -+ -+static uint32_t sdio_get_blocksize(uint32_t blocksize) -+{ -+ uint32_t n = 0; -+ blocksize >>= 1; -+ while (blocksize) { -+ n++; -+ blocksize >>= 1; -+ } -+ n <<= 4; -+ return n; -+} -+ -+static void sdio_prepare_data_transfer(cyhal_transfer_t direction, uint32_t block_size, uint8_t *data, uint16_t data_size) -+{ -+ /* Setup a single transfer using the temp buffer */ -+ user_data = data; -+ user_data_size = data_size; -+ dma_transfer_size = (uint32_t)(((data_size + (uint16_t) block_size - 1) / (uint16_t) block_size) * (uint16_t) block_size); -+ -+ if (direction == CYHAL_WRITE) { -+ -+#if !(defined(DUAL_CORE) && defined(CORE_CM4)) -+ SCB_CleanDCache_by_Addr((uint32_t *)dma_data_source, data_size + 32); -+#endif -+ memcpy(temp_dma_buffer, data, data_size); -+ dma_data_source = temp_dma_buffer; -+ } else { -+ dma_data_source = (uint8_t *)temp_dma_buffer; -+ //VIKR -+ //memset(dma_data_source,0x12,data_size); -+ -+#if !(defined(DUAL_CORE) && defined(CORE_CM4)) -+ /* Cache-Invalidate the output from DMA */ -+ SCB_CleanDCache_by_Addr((uint32_t *)dma_data_source, data_size + 32); -+#endif -+ } -+ -+ SDIO->DTIMER = (uint32_t) 0xFFFFFFFF; -+ SDIO->DLEN = dma_transfer_size; -+ dctrl = sdio_get_blocksize(block_size) | ((direction == CYHAL_READ) ? SDIO_TRANSFER_DIR_TO_SDIO : SDIO_TRANSFER_DIR_TO_CARD) | SDIO_TRANSFER_MODE_BLOCK | SDIO_DPSM_DISABLE | SDIO_DCTRL_SDIOEN; -+ SDIO->DCTRL = dctrl; -+ -+ SDMMC1->IDMACTRL = SDMMC_ENABLE_IDMA_SINGLE_BUFF; -+ SDMMC1->IDMABASE0 = (uint32_t) dma_data_source; -+} -+ -+static void sdio_enable_bus_irq(void) -+{ -+ SDMMC1->MASK = SDMMC_IT_RXOVERR | SDMMC_IT_TXUNDERR | SDMMC_IT_DATAEND | SDMMC_IT_CMDREND | SDMMC_IT_CMDSENT; -+} -+ -+void SDMMC1_IRQHandler(void) -+{ -+ uint32_t intstatus = SDIO->STA; -+ -+ irqstatus = intstatus; -+ //VIKR | SDIO_STA_STBITERR ) -+ if ((intstatus & (SDIO_STA_CCRCFAIL | SDIO_STA_DCRCFAIL | SDIO_STA_TXUNDERR | SDIO_STA_RXOVERR)) != 0) { -+ WPRINT_WHD_DEBUG(("sdio error flagged\n")); -+ sdio_transfer_failed = intstatus; -+ SDIO->ICR = (uint32_t) 0xffffffff; -+ cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -+ } else { -+ if ((intstatus & (SDMMC_STA_CMDREND | SDMMC_STA_CMDSENT)) != 0) { -+ if ((SDMMC1->RESP1 & 0x800) != 0) { -+ sdio_transfer_failed = irqstatus; -+ cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -+ } -+ -+ /* Clear all command/response interrupts */ -+ SDMMC1->ICR = (SDMMC_STA_CMDREND | SDMMC_STA_CMDSENT); -+ } -+ -+ /* Check whether the external interrupt was triggered */ -+ if (intstatus & SDMMC_STA_SDIOIT) { -+ /* Clear the interrupt */ -+ SDMMC1->ICR = SDMMC_STA_SDIOIT; -+ /* Inform WICED WWD thread */ -+ sdio_irq_handler(whd_handler, CYHAL_SDIO_CARD_INTERRUPT); -+ } -+ -+ if (intstatus & SDMMC_STA_DATAEND) { -+ SDMMC1->ICR = SDMMC_STA_DATAEND; -+ SDMMC1->DLEN = 0; -+ SDMMC1->DCTRL = SDMMC_DCTRL_SDIOEN; -+ SDMMC1->IDMACTRL = SDMMC_DISABLE_IDMA; -+ SDMMC1->CMD = 0; -+ cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -+ } -+ } -+} -+ -+//void sdio_dma_irq(void) -+//{ -+// /* Clear interrupt */ -+// DMA2->LIFCR = (uint32_t)(0x3F << 22); -+// cy_rtos_set_semaphore(&sdio_transfer_finished_semaphore, WHD_TRUE); -+//} -+ -+cy_rslt_t cyhal_sdio_init(cyhal_sdio_t *obj, cyhal_gpio_t cmd, cyhal_gpio_t clk, cyhal_gpio_t data0, cyhal_gpio_t data1, cyhal_gpio_t data2, cyhal_gpio_t data3) -+{ -+ cy_rslt_t ret = CY_RSLT_SUCCESS; -+ -+ __HAL_RCC_GPIOC_CLK_ENABLE(); -+ __HAL_RCC_GPIOD_CLK_ENABLE(); -+ __HAL_RCC_SDMMC1_CLK_ENABLE(); -+ -+ HAL_GPIO_Init(PinConfig[cmd].port, &PinConfig[cmd].config); -+ HAL_GPIO_Init(PinConfig[clk].port, &PinConfig[clk].config); -+ HAL_GPIO_Init(PinConfig[data0].port, &PinConfig[data0].config); -+ HAL_GPIO_Init(PinConfig[data1].port, &PinConfig[data1].config); -+ HAL_GPIO_Init(PinConfig[data2].port, &PinConfig[data2].config); -+ HAL_GPIO_Init(PinConfig[data3].port, &PinConfig[data3].config); -+ -+ /* Reset SDIO Block */ -+ SDMMC_PowerState_OFF(SDMMC1); -+ __HAL_RCC_SDMMC1_FORCE_RESET(); -+ __HAL_RCC_SDMMC1_RELEASE_RESET(); -+ -+ /* Enable the SDIO Clock */ -+ __HAL_RCC_SDMMC1_CLK_ENABLE(); -+ -+#if !(defined(DUAL_CORE) && defined(CORE_CM4)) -+ /* Disable DCache for STM32H7 family */ -+ SCB_CleanDCache(); -+ SCB_DisableDCache(); -+#endif -+ -+ WPRINT_WHD_DEBUG(("in init: %p\n", sdio_transfer_finished_semaphore)); -+ -+ // Lower speed configuration -+ SDMMC_InitTypeDef sdio_init_structure; -+ -+ sdio_init_structure.ClockDiv = SDMMC_INIT_CLK_DIV; -+ sdio_init_structure.ClockEdge = SDMMC_CLOCK_EDGE_RISING; -+ sdio_init_structure.ClockPowerSave = SDMMC_CLOCK_POWER_SAVE_DISABLE; -+ sdio_init_structure.BusWide = SDMMC_BUS_WIDE_1B; -+ sdio_init_structure.HardwareFlowControl = SDMMC_HARDWARE_FLOW_CONTROL_DISABLE; -+ ret = SDMMC_Init(SDMMC1, sdio_init_structure); -+ ret |= SDMMC_PowerState_ON(SDMMC1); -+ ret |= SDMMC_SetSDMMCReadWaitMode(SDMMC1, SDMMC_READ_WAIT_MODE_CLK); -+ if (ret) { -+ return ret; -+ } -+ -+ /* Clear all SDIO interrupts */ -+ SDMMC1->ICR = (uint32_t) 0xffffffff; -+ -+ /* Turn on SDIO IRQ */ -+ /* Must be lower priority than the value of configMAX_SYSCALL_INTERRUPT_PRIORITY */ -+ /* otherwise FreeRTOS will not be able to mask the interrupt */ -+ /* keep in mind that ARMCM7 interrupt priority logic is inverted, the highest value */ -+ /* is the lowest priority */ -+ HAL_NVIC_EnableIRQ((IRQn_Type) SDMMC1_IRQn); -+ HAL_NVIC_SetPriority(SDMMC1_IRQn, 5, 0); -+ -+ WPRINT_WHD_DEBUG(("after enable sdio: %p\n", sdio_transfer_finished_semaphore)); -+ -+ if (cy_rtos_init_semaphore(&sdio_transfer_finished_semaphore, 1, 0) != WHD_SUCCESS) { -+ cy_rtos_deinit_semaphore(&sdio_transfer_finished_semaphore); -+ return -1; -+ } -+ -+ WPRINT_WHD_DEBUG(("cy_rtos_init_semaphore: %p\n", sdio_transfer_finished_semaphore)); -+ -+ return ret; -+} -+ -+void cyhal_sdio_free(cyhal_sdio_t *obj) -+{ -+ //TODO -+} -+ -+cy_rslt_t cyhal_sdio_configure(cyhal_sdio_t *obj, const cyhal_sdio_cfg_t *config) -+{ -+ return sdio_enable_high_speed(); -+} -+ -+cy_rslt_t cyhal_sdio_send_cmd(const cyhal_sdio_t *obj, cyhal_transfer_t direction, cyhal_sdio_command_t command, uint32_t argument, uint32_t *response) -+{ -+ uint32_t loop_count = 0; -+ cy_rslt_t result; -+ uint16_t attempts = 0; -+ uint32_t temp_sta; -+ -+ if (response != NULL) { -+ *response = 0; -+ } -+ current_command = 0; -+ -+restart: -+ SDIO->ICR = (uint32_t) 0xFFFFFFFF; -+ ++attempts; -+ -+ /* Check if we've tried too many times */ -+ if (attempts >= (uint16_t) BUS_LEVEL_MAX_RETRIES) { -+ /* WWD_SDIO_RETRIES_EXCEEDED */ -+ result = -1; -+ goto exit; -+ } -+ -+ /* Send the command */ -+ SDIO->ARG = argument; -+ SDIO->CMD = (uint32_t)(command | SDIO_RESPONSE_SHORT | SDIO_WAIT_NO | SDIO_CPSM_ENABLE); -+ loop_count = (uint32_t) COMMAND_FINISHED_CMD52_TIMEOUT_LOOPS; -+ do { -+ temp_sta = SDIO->STA; -+ loop_count--; -+ if (loop_count == 0 /*|| ((response != NULL) && ((temp_sta & SDIO_ERROR_MASK) != 0))*/) { -+ WPRINT_WHD_DEBUG(("Restart single access loop count %ld stat %lx\n", loop_count, temp_sta)); -+ HAL_Delay(10U); -+ goto restart; -+ } -+ } while ((temp_sta & SDIO_FLAG_CMDACT) != 0); -+ -+ if (response != NULL) { -+ *response = SDIO->RESP1; -+ } -+ result = CY_RSLT_SUCCESS; -+ -+exit: -+ if (result) { -+ WPRINT_WHD_ERROR(("SDIO->POWER %lx \n", SDIO->POWER)); -+ WPRINT_WHD_ERROR(("SDIO->CLKCR %lx \n", SDIO->CLKCR)); -+ WPRINT_WHD_ERROR(("result %lx \n", result)); -+ WPRINT_WHD_ERROR(("cyhal_sdio_send_cmd %s\n", (result == 0) ? "Passed" : "Failed")); -+ while (1); -+ } -+ SDMMC1->CMD = 0; -+ -+ //WPRINT_WHD_DEBUG(("%d %s cmd 0x%x arg 0x%x resp 0x%x\n",num++,(direction!=CYHAL_READ)?"Write":"Read",command,argument,(response)?*response:0)); -+ return result; -+} -+ -+cy_rslt_t cyhal_sdio_bulk_transfer(cyhal_sdio_t *obj, cyhal_transfer_t direction, uint32_t argument, const uint32_t *data, uint16_t length, uint32_t *response) -+{ -+ cy_rslt_t result; -+ uint16_t attempts = 0; -+ uint32_t block_size = 64; -+ sdio_cmd_argument_t arg; -+ uint32_t cmd; -+ current_command = SDIO_CMD_53; -+ current_transfer_direction = direction; -+ arg.value = argument; -+ -+ sdio_enable_bus_irq(); -+ if (response != NULL) { -+ *response = 0; -+ } -+ -+restart: -+ sdio_transfer_failed = 0; -+ SDMMC1->ICR = (uint32_t) 0xFFFFFFFF; -+ ++attempts; -+ -+ /* Check if we've tried too many times */ -+ if (attempts >= (uint16_t) BUS_LEVEL_MAX_RETRIES) { -+ /* WWD_SDIO_RETRIES_EXCEEDED */ -+ WPRINT_WHD_ERROR(("Too much attempt\n")); -+ result = -1; -+ goto exit; -+ } -+ -+ /* Dodgy STM32 hack to set the CMD53 byte mode size to be the same as the block size */ -+ if (arg.cmd53.block_mode == 0) { -+ block_size = find_optimal_block_size(arg.cmd53.count); -+ if (block_size < SDIO_512B_BLOCK) { -+ arg.cmd53.count = block_size; -+ } else { -+ arg.cmd53.count = 0; -+ } -+ argument = arg.value; -+ } -+ -+ SDMMC1->CMD |= SDMMC_CMD_CMDTRANS; -+ -+ /* Prepare the SDIO for a data transfer */ -+ sdio_prepare_data_transfer(direction, block_size, (uint8_t *) data, (uint32_t) length); -+ -+ /* Send the command */ -+ //WPRINT_WHD_DEBUG(("%d bs=%d argument=%x\n",num++,block_size,argument)); -+ SDMMC1->ARG = argument; -+ cmd = (uint32_t)(SDIO_CMD_53 | SDMMC_RESPONSE_SHORT | SDMMC_WAIT_NO | SDMMC_CPSM_ENABLE | SDMMC_CMD_CMDTRANS); -+ SDMMC1->CMD = cmd; -+ -+ /* Wait for the whole transfer to complete */ -+ //WPRINT_WHD_DEBUG(("cy_rtos_get_semaphore: %d\n", sdio_transfer_finished_semaphore)); -+ result = cy_rtos_get_semaphore(&sdio_transfer_finished_semaphore, 50, WHD_FALSE); -+ -+ if (result != CY_RSLT_SUCCESS) { -+ WPRINT_WHD_ERROR(("failed getting semaphore\n")); -+ goto exit; -+ } -+ if (sdio_transfer_failed) { -+ WPRINT_WHD_DEBUG(("try again sdio_transfer_failed %"PRIu32" irq %"PRIu32"\n", sdio_transfer_failed, irqstatus)); -+ goto restart; -+ } -+ /* Check if there were any SDIO errors */ -+ if ((SDIO->STA & (SDIO_STA_DTIMEOUT | SDIO_STA_CTIMEOUT)) != 0) { -+ WPRINT_WHD_DEBUG(("sdio errors SDIO_STA_DTIMEOUT | SDIO_STA_CTIMEOUT\n")); -+ goto restart; -+ } else if (((SDIO->STA & (SDIO_STA_CCRCFAIL | SDIO_STA_DCRCFAIL | SDIO_STA_TXUNDERR | SDIO_STA_RXOVERR)) != 0)) { -+ WPRINT_WHD_DEBUG(("sdio errors SDIO_STA_CCRCFAIL | SDIO_STA_DCRCFAIL | SDIO_STA_TXUNDERR | SDIO_STA_RXOVER \n")); -+ goto restart; -+ } -+ -+ if (direction == CYHAL_READ) { -+ memcpy(user_data, dma_data_source, (size_t) user_data_size); -+ } -+ -+ if (response != NULL) { -+ *response = SDIO->RESP1; -+ } -+ result = CY_RSLT_SUCCESS; -+ -+exit: -+ SDMMC1->CMD = 0; -+ -+ //WPRINT_WHD_DEBUG(("%d %s cmd 53 argument %lx datasize %d blocknumber 0x%x cmdis %lx %lu dctrl = %x\n", num++, (direction != CYHAL_READ) ? "Write" : "Read", argument, length, arg.cmd53.count, cmd, cmd, dctrl)); -+ -+ return result; -+} -+ -+cy_rslt_t cyhal_sdio_transfer_async(cyhal_sdio_t *obj, cyhal_transfer_t direction, uint32_t argument, const uint32_t *data, uint16_t length) -+{ -+ //TODO -+ return CYHAL_SDIO_RET_NO_SP_ERRORS; -+} -+ -+bool cyhal_sdio_is_busy(const cyhal_sdio_t *obj) -+{ -+ return false; -+} -+ -+cy_rslt_t cyhal_sdio_abort_async(const cyhal_sdio_t *obj) -+{ -+ //TODO -+ return CYHAL_SDIO_RET_NO_SP_ERRORS; -+} -+ -+void cyhal_sdio_register_callback(cyhal_sdio_t *obj, cyhal_sdio_irq_handler_t handler, void *handler_arg) -+{ -+ whd_handler = (whd_driver_t)handler_arg; -+ sdio_irq_handler = handler; -+} -+ -+void cyhal_sdio_enable_event(cyhal_sdio_t *obj, cyhal_sdio_irq_event_t event, uint8_t intr_priority, bool enable) -+{ -+ //TODO -+} -+ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_spi.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_spi.c -new file mode 100644 -index 0000000000..162c7a6801 ---- /dev/null -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_spi.c -@@ -0,0 +1,29 @@ -+/* -+ * Copyright 2020 Arduino SA -+ * SPDX-License-Identifier: Apache-2.0 -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+ -+/** @file -+ * Provides stubs for the WHD driver needed by ARMClang -+ */ -+ -+#include -+#include -+#include "cyhal_spi.h" -+ -+cy_rslt_t cyhal_spi_transfer(cyhal_spi_t *obj, const uint8_t *tx, size_t tx_length, uint8_t *rx, size_t rx_length, uint8_t write_fill) -+{ -+ // Do nothing -+} -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_system.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_system.h -new file mode 100644 -index 0000000000..7a3dee0ca9 ---- /dev/null -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/cyhal_system.h -@@ -0,0 +1,20 @@ -+/* -+ * Copyright 2020 Arduino SA -+ * SPDX-License-Identifier: Apache-2.0 -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+ -+/** @file -+ * Empty file to be compliant with Cypress COMPONENT_WHD -+ */ -\ No newline at end of file -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_clm.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_bd.h -similarity index 52% -rename from targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_clm.h -rename to targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_bd.h -index 168e34d5e7..578b2d9e4e 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_clm.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_bd.h -@@ -1,13 +1,13 @@ - /* -- * Copyright 2020 Cypress Semiconductor Corporation -+ * Copyright 2020 Arduino SA - * SPDX-License-Identifier: Apache-2.0 -- * -+ * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at -- * -+ * - * http://www.apache.org/licenses/LICENSE-2.0 -- * -+ * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@@ -16,30 +16,34 @@ - */ - - /** @file -- * Provides generic clm blob file download functionality -+ * Provides wiced fs porting to generic mbed APIs - */ --#ifndef _WHD_INTERNAL_CLM_H_ --#define _WHD_INTERNAL_CLM_H_ - --#include "whd.h" -+#pragma once -+ -+#include "whd_config.h" -+#include "BlockDevice.h" - - #ifdef __cplusplus - extern "C" { - #endif - - /****************************************************** --* Macros --******************************************************/ -- -- --/****************************************************** --* Function prototypes --******************************************************/ --whd_result_t whd_process_clm_data(whd_interface_t ifp); -+ * Type Definitions -+ ******************************************************/ -+ -+/** -+ * Mount the physical device -+ * -+ * This assumes that the device is ready to read/write immediately. -+ * -+ * @param[in] device - physical media to init -+ * @param[out] fs_handle_out - Receives the filesystem handle. -+ * -+ * @return WICED_SUCCESS on success -+ */ -+wiced_result_t wiced_filesystem_mount(mbed::BlockDevice *device, wiced_filesystem_handle_type_t fs_type, wiced_filesystem_t *fs_handle_out, const char *mounted_name); - - #ifdef __cplusplus - } /*extern "C" */ - #endif -- --#endif /* ifndef _WHD_INTERNAL_CLM_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_filesystem.cpp b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_filesystem.cpp -new file mode 100644 -index 0000000000..bea07abdef ---- /dev/null -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_filesystem.cpp -@@ -0,0 +1,220 @@ -+/* -+ * Copyright 2020 Arduino SA -+ * SPDX-License-Identifier: Apache-2.0 -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+ -+/** @file -+ * Provides wiced fs porting to generic mbed APIs -+ */ -+ -+#include -+#include -+#include -+#include -+#include "sockets.h" -+#include "resources.h" -+#include "wiced_filesystem.h" -+#include "wiced_bd.h" -+#include "QSPIFBlockDevice.h" -+#include "MBRBlockDevice.h" -+#include "FATFileSystem.h" -+ -+#define WIFI_DEFAULT_FIRMWARE_PATH "/wlan/4343WA1.BIN" -+#define WIFI_DEFAULT_MOUNT_NAME "wlan" -+#define WIFI_DEFAULT_PARTITION 1 -+#define WIFI_DEFAULT_FS 0 -+ -+BlockDevice *qspi_bd = NULL; -+MBRBlockDevice *mbr_bd = NULL; -+FATFileSystem *wifi_fs = NULL; -+ -+wiced_filesystem_t resource_fs_handle; -+ -+MBED_WEAK BlockDevice *BlockDevice::get_default_instance() -+{ -+ static QSPIFBlockDevice default_bd(PD_11, PD_12, PF_7, PD_13, PF_10, PG_6, QSPIF_POLARITY_MODE_1, 40000000); -+ return &default_bd; -+} -+ -+MBED_WEAK void wiced_filesystem_mount_error(void) -+{ -+ WPRINT_WHD_ERROR(("Failed to mount the filesystem containing the WiFi firmware.\n\r")); -+ whd_print_logbuffer(); -+ while (1) {} -+} -+ -+MBED_WEAK void wiced_filesystem_firmware_error(void) -+{ -+ WPRINT_WHD_ERROR(("Please run the \"WiFiFirmwareUpdater\" sketch once to install the WiFi firmware.\n\r")); -+ whd_print_logbuffer(); -+ while (1) {} -+} -+ -+MBED_WEAK wiced_result_t whd_firmware_check_hook(const char *mounted_name, int mount_err) -+{ -+ DIR *dir; -+ struct dirent *ent; -+ std::string dir_name(mounted_name); -+ if (mount_err) { -+ wiced_filesystem_mount_error(); -+ } else { -+ if ((dir = opendir(mounted_name)) != NULL) { -+ // print all the files and directories within directory -+ while ((ent = readdir(dir)) != NULL) { -+ std::string fullname = "/" + dir_name + "/" + std::string(ent->d_name); -+ if (fullname == WIFI_DEFAULT_FIRMWARE_PATH) { -+ closedir(dir); -+ return WICED_SUCCESS; -+ } -+ } -+ closedir(dir); -+ } -+ wiced_filesystem_firmware_error(); -+ } -+ return WICED_ERROR; -+} -+ -+static wiced_result_t whd_default_firmware_restore(void) -+{ -+#if MBED_CONF_APP_WIFI_FIRMWARE_RESTORE -+ size_t ret; -+ FILE *fp; -+ -+ //This should only happen the firs time or if the partition table has been overwritten i.e QSPI tests -+ WPRINT_WHD_DEBUG(("MBRBlockDevice init failed, repatitioning\n\r")); -+ if (mbr_bd->partition(qspi_bd, 1, 0x0B, 0, 1024 * 1024) != BD_ERROR_OK) { -+ return WICED_ERROR; -+ } -+ WPRINT_WHD_DEBUG(("MBRBockDevice repatitioning OK, reinit\n\r")); -+ -+ if (mbr_bd->init() != BD_ERROR_OK) { -+ return WICED_ERROR; -+ } -+ WPRINT_WHD_DEBUG(("MBRBockDevice init OK\n\r")); -+ -+ wifi_fs = new FATFileSystem(WIFI_DEFAULT_MOUNT_NAME); -+ -+ if (wifi_fs->reformat(mbr_bd) != 0) { -+ return WICED_ERROR; -+ } -+ WPRINT_WHD_DEBUG(("FATFileSystem reformat and mount OK\n\r")); -+ -+ fp = fopen(WIFI_DEFAULT_FIRMWARE_PATH, "wb"); -+ if (fp == NULL) { -+ return WICED_ERROR; -+ } -+ ret = fwrite(wifi_firmware_image_data, wifi_firmware_image.size, 1, fp); -+ if (ret != wifi_firmware_image.size) { -+ return WICED_ERROR; -+ } -+ fclose(fp); -+ -+ if (mbr_bd->sync() != 0) { -+ return WICED_ERROR; -+ } -+ WPRINT_WHD_DEBUG(("Sync BlockDevice OK\n\r")); -+ -+ if (wifi_fs->unmount() != 0) { -+ return WICED_ERROR; -+ } -+ WPRINT_WHD_DEBUG(("Unmount FS\n\r")); -+ wifi_fs = NULL; -+#endif -+ -+ return WICED_SUCCESS; -+} -+ -+wiced_result_t wiced_filesystem_init(void) -+{ -+ if (mbr_bd == NULL && wifi_fs == NULL) { -+ WPRINT_WHD_DEBUG(("Initialize FileSystem with Mbed default settings\n\r")); -+ qspi_bd = mbed::BlockDevice::get_default_instance(); -+ -+ if (qspi_bd->init() == BD_ERROR_OK) { -+ mbr_bd = new MBRBlockDevice(qspi_bd, WIFI_DEFAULT_PARTITION); -+ if (mbr_bd->init() == BD_ERROR_OK) { -+ return WICED_SUCCESS; -+ } else { -+ return whd_default_firmware_restore(); -+ } -+ } -+ return WICED_ERROR; -+ } else { -+ WPRINT_WHD_DEBUG(("FileSystem initialized with user settings\n\r")); -+ return WICED_SUCCESS; -+ } -+} -+ -+wiced_result_t wiced_filesystem_mount(BlockDevice *device, wiced_filesystem_handle_type_t fs_type, wiced_filesystem_t *fs_handle_out, const char *mounted_name) -+{ -+ wifi_fs = new FATFileSystem(mounted_name); -+ -+ int err = wifi_fs->mount(device); -+ whd_firmware_check_hook(mounted_name, err); -+ if (!err) { -+ //fs_handle_out = wifi_fs -+ return WICED_SUCCESS; -+ } -+ return WICED_ERROR; -+} -+ -+wiced_result_t wiced_filesystem_file_open(wiced_filesystem_t *fs_handle, wiced_file_t *file_handle_out, const char *filename, wiced_filesystem_open_mode_t mode) -+{ -+ /* This is called by mbed test system */ -+ //if (mbr_bd == NULL && wifi_fs == NULL) { -+ // wiced_filesystem_init(); -+ //} -+ //This can be called from user sketch to provide custom block device and mount point before WiFi.beginAP or WiFi.begin -+ if (wifi_fs == NULL) { -+ wiced_filesystem_mount(mbr_bd, WIFI_DEFAULT_FS, fs_handle, WIFI_DEFAULT_MOUNT_NAME); -+ } -+ -+ if (wifi_fs == NULL) { -+ return WICED_ERROR; -+ } -+ -+ *file_handle_out = open(filename, mode); -+ if (*file_handle_out == -1) { -+ return WICED_ERROR; -+ } -+ return WICED_SUCCESS; -+} -+ -+wiced_result_t wiced_filesystem_file_seek(wiced_file_t *file_handle, int64_t offset, wiced_filesystem_seek_type_t whence) -+{ -+ if (*file_handle == -1) { -+ return WICED_ERROR; -+ } -+ lseek(*file_handle, offset, whence); -+ return WICED_SUCCESS; -+} -+ -+wiced_result_t wiced_filesystem_file_read(wiced_file_t *file_handle, void *data, uint64_t bytes_to_read, uint64_t *returned_bytes_count) -+{ -+ if (*file_handle == -1) { -+ return WICED_ERROR; -+ } -+ *returned_bytes_count = read(*file_handle, data, bytes_to_read); -+ return WICED_SUCCESS; -+} -+ -+wiced_result_t wiced_filesystem_file_close(wiced_file_t *file_handle) -+{ -+ if (*file_handle == -1) { -+ return WICED_ERROR; -+ } -+ close(*file_handle); -+ return WICED_SUCCESS; -+} -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_filesystem.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_filesystem.h -new file mode 100644 -index 0000000000..a65aa3c148 ---- /dev/null -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/port/wiced_filesystem.h -@@ -0,0 +1,139 @@ -+/* -+ * Copyright 2020 Arduino SA -+ * SPDX-License-Identifier: Apache-2.0 -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+ -+/** @file -+ * Provides wiced fs porting to generic mbed APIs -+ */ -+ -+#pragma once -+ -+#include "whd_config.h" -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+ -+/****************************************************** -+ * Enumerations -+ ******************************************************/ -+ -+typedef enum { -+ WICED_FILESYSTEM_OPEN_FOR_READ, /** Specifies read access to the object. Data can be read from the file - equivalent to "r" or "rb" */ -+ WICED_FILESYSTEM_OPEN_FOR_WRITE, /** Specifies read/write access to the object. Data can be written to the file - equivalent to "r+" or "rb+" or "r+b" */ -+ WICED_FILESYSTEM_OPEN_WRITE_CREATE, /** Opens for read/write access, creates it if it doesn't exist */ -+ WICED_FILESYSTEM_OPEN_ZERO_LENGTH, /** Opens for read/write access, Truncates file to zero length if it exists, or creates it if it doesn't - equivalent to "w+", "wb+" or "w+b" */ -+ WICED_FILESYSTEM_OPEN_APPEND, /** Opens for read/write access, places the current location at the end of the file ready for appending - equivalent to "a", "ab" */ -+ WICED_FILESYSTEM_OPEN_APPEND_CREATE, /** Opens for read/write access, creates it if it doesn't exist, and places the current location at the end of the file ready for appending - equivalent to "a+", "ab+" or "a+b" */ -+} wiced_filesystem_open_mode_t; -+ -+typedef enum { -+ WICED_FILESYSTEM_SEEK_SET = SEEK_SET, /* Offset from start of file */ -+ WICED_FILESYSTEM_SEEK_CUR = SEEK_CUR, /* Offset from current position in file */ -+ WICED_FILESYSTEM_SEEK_END = SEEK_END, /* Offset from end of file */ -+} wiced_filesystem_seek_type_t; -+ -+typedef enum { -+ WICED_SUCCESS = 0, -+ WICED_ERROR = 1 -+} wiced_result_t; -+ -+/****************************************************** -+ * Type Definitions -+ ******************************************************/ -+ -+/** -+ * File-system Handle Structure -+ */ -+typedef int wiced_filesystem_t; -+ -+/** -+ * File Handle Structure -+ * -+ */ -+typedef int wiced_file_t; -+ -+/** -+ * File-system type Handle Structure -+ */ -+typedef int wiced_filesystem_handle_type_t; -+ -+/** -+ * Initialise the BlockDevice and filesystem module -+ * -+ * Initialises the BlockDevice and filesystem module before mounting a physical device. -+ * -+ * @return WICED_SUCCESS on success -+ */ -+wiced_result_t wiced_filesystem_init(void); -+ -+/** -+ * Open a file for reading or writing -+ * -+ * @param[in] fs_handle - The filesystem handle to use - obtained from wiced_filesystem_mount -+ * @param[out] file_handle_out - a pointer to a wiced_file_t structure which will receive the -+ * file handle after it is opened -+ * @param[in] filename - The filename of the file to open -+ * @param[in] mode - Specifies read or write access -+ * -+ * @return WICED_SUCCESS on success -+ */ -+wiced_result_t wiced_filesystem_file_open(wiced_filesystem_t *fs_handle, wiced_file_t *file_handle_out, const char *filename, wiced_filesystem_open_mode_t mode); -+ -+/** -+ * Seek to a location within a file -+ * -+ * This is similar to the fseek() in ISO C. -+ * -+ * @param[in] file_handle - The file handle on which to perform the seek. -+ * Must have been previously opened with wiced_filesystem_fopen. -+ * @param[in] offset - The offset in bytes -+ * @param[in] whence - WICED_FILESYSTEM_SEEK_SET = Offset from start of file -+ * WICED_FILESYSTEM_SEEK_CUR = Offset from current position in file -+ * WICED_FILESYSTEM_SEEK_END = Offset from end of file -+ * -+ * @return WICED_SUCCESS on success -+ */ -+wiced_result_t wiced_filesystem_file_seek(wiced_file_t *file_handle, int64_t offset, wiced_filesystem_seek_type_t whence); -+ -+/** -+ * Reads data from a file into a memory buffer -+ * -+ * @param[in] file_handle - the file handle to read from -+ * @param[out] data - A pointer to the memory buffer that will -+ * receive the data that is read -+ * @param[in] bytes_to_read - the number of bytes to read -+ * @param[out] returned_item_count - the number of items successfully read. -+ * -+ * @return WICED_SUCCESS on success -+ */ -+wiced_result_t wiced_filesystem_file_read(wiced_file_t *file_handle, void *data, uint64_t bytes_to_read, uint64_t *returned_bytes_count); -+ -+/** -+ * Close a file -+ * -+ * This is similar to the fclose() in ISO C. -+ * -+ * @param[in] file_handle - the file handle to close -+ * -+ * @return WICED_SUCCESS = success -+ */ -+wiced_result_t wiced_filesystem_file_close(wiced_file_t *file_handle); -+ -+#ifdef __cplusplus -+} /*extern "C" */ -+#endif -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1-mfgtest.bin b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1-mfgtest.bin -deleted file mode 100644 -index 6963d81dbc0c2cbb776c9bc3beb3883196ce1ada..0000000000000000000000000000000000000000 -GIT binary patch -literal 0 -HcmV?d00001 - -literal 391693 -zcmeFZ33L?4)jwL@J-fCM5_q%#qZt-0fJYKwu^0~{skIpkgY95&k^$LC3y3Wn=ZhR; -zGm@~80Dl$;J3_K!jO>`jBpQJdWUPo7C!g13hUJSE1Z@i&BH8&`NYIS{&Hq>3QkM5W -z`JeO7dFQ=z-U*yL_3Nrzx0bHDb?a8O2qENdJ0Yc0|Gy!UPx5H_|8M=v@ho5Nnx*?& -zalQK(vg3Z1Tn1e$V#$vRSkjiy5~h$PKgnasO5n9CSW*gFK%YTx-itVdvyo>R!uDd8 -z_|bnyK;MF1Uc!;bKt~sI}Sx1S^A72p!!AgH~PkaGzC -z3>tcYkUt^pO3`T7uNac~3x>S#7DKuq=NTFzEouux!ax&2%fR!+n+*9g(u{ci;vhp9 -zgp}`Dq#fot70*MPY23AZj(q+KOXLccq`b_Md7#f-tY?XN -z4@>Ue&XR9ySn@IA{h-63Wk`!aI9|_`s=s3=WQ@ljd66YEAuAnp&u+*bp^s=k<#J>#`fqO`M>gU4 -z2tt1WN1j3W2Et89yPd<48{nt;wr$cvimUzskC#Kkm!J7N4}Jb|1xE@%6i092$VDGy -zKF^Uj#0@^j5#}9+laalj!!;!F8wdZ9Ge~+j=} -z%KcFZABy$)*s -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 -z*hC$vMF{T+LQ5=V-HMIKJ#xYO~R82(6@ -zLfnk2-g6^3H8pI2a7>P+%OOoACY%3?bVn1Y+H<3mm8P<_CML^}JhSuS6(Z@(kukQ( -z4%FM`)urn)6GcCk`6kdEK+`JbG|i4Q -zgLLJ$jB|&3_Fv@Uqu0pPd-kk7gJ}KI9*8o@6fy=;y9y_=860sK8Bwu -z1{Jbzf3D*UGiWk0KQ|6oOn(?8<_`x<26Ml`@LSKsGrfwg);t(m5Z7;v`dlHkY(P#h -z-f8aoaKK{xey;wsho8qk;XlD|<->RrzZ6>JY;aLqVxf(X7MS#C@0}t|S&e|_cIbFUn$%-0a(b;rC7>oyAIP~D -z&!8qyAIP~5&!8qyAIMpPXHXNUuLN(l12cl0ZQ)d^!MvgK=`_a0_?)8i>cb+vO5r#3 -zx&;RsHDoPP-0^{JM+R!91_P+G;y=|8Iu)mdB(``{peWTlyA5lQ-@r!PP -z@)&1knO^#1S9G(~J{Rxr%g$|NNh?QY;XOW$=aaK_(vo`=jHBmNRKmH8HhTt3;fKi@)JvasO)S#!HbF0W -z&bx$g>7A|#MbOdiFM?#&#h`Urn&9*&U~aDh$By3dr!{y7mjeXlgl-di`;{`cURwBC -z8S0*e`j&y*pnTAyAhsx8U^3$A8r`uKeKp=s6jQDEdb8y~NIoS@w=)I2?JA`h9EHBAFVp}Mf>V7}KhJUUko@AusU8Y9!wdbE?>hKOW88aI# -z#`Lgj&p%aTF=nuJCg*Mo*~Qg8%op(wV*I_?l_}VT1wt>)Tg%mvYtNU_eBsxg{|^Sa -zj4orQ&jJ}4#`(Xt?6$DAy1M-Q5}v%uNL5|ty?XF~Pb((_vg=ZKbK_D-e!9zDw6r)* -zp!o5w1%kWCBJg~JhYKu0%wt{C#rR!eyiS}bEXa?U{DOxI#`6h>8$8#~WD4;|NZtJW -zG(LVeBQ5V*B*ZuTB|bC%OuU6Bb&QmUI>$FWoN#A;<59$mTl1LHsPf!$pm$!^_;-gIrB3y3!Gg}+K2YN35~Wj321eh)?y!8OKNvp -z;!)4&u6R0Lq($BI%}ofU@Eq^pCm}`GHMv<`IXbA`8z0Y4V*dC*9U$GWIaNRUkbVzv -z(b5N2u15Ggs1?)=qT`?Zh9k2_`{)C&ViM(#LFy92wyi;9Mk7}$NP&4TJBq2jMMIG -zDr;8^uD%ML$U$#uiJ4xd^72n2xY5QnEZ(;{bTocv+=I(W< -zWr;T-{4uqDv~CamU+Sj&hq|?2xm7_rX#KLVR_J+O4dx=|q22Ej4ho0x^yW=FpVf|; -zy41i|^LIdAPM40SEtoJmM?5}AqEdUvoyk3m?IbBA8&E^r(V?1-mNkZZJ6bo);}4gU -zBqsB4*=zfy55{|j3CNhq05LaAA9 -zP7>bl)=xScj?^Y^QZ?3sPFkNVcSufn-#8Zg_6EK50pde)^sQO^A1`OMmtkG_pWhz2 -zU~M&u`l8D12?AszPe;hkljLhbx{lg0ewEg#_c4wL9{M}UAXVNZNhXI8PX=l8O?EcJ -zTZ6`aqKh5&J!%NJgrs5LTH-KBkKdfdkLaeH%aL@t1W`X5T*KtivxAH-tAk8Cp^rZ2 -z5|)nfuDY2c*>xsyUYkou;q~Yb#chz5ouK`yv{PN3(#918j)94;m!)f+B4Qq92%iDBmYzdvPlIj1mbBy}XX -zh^PGVeve6CKY4p?Q=DxJ -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 -z)y^*t4_d=k=Vo=(@#}YJ4jjYkst -zZ7XsOuUI?Z7S_@+;rZQAEaMpVvMb_a=eKxtXBY=;#u=vFHnCH2TWS7>ZL#S(X?VoI -zuY$asR5J(^6-w%jQ2k67HEy4=L -z?p@+P1zwu}%6a4KWX1xqY5NMrY5hgzaaG%WJYuZZNp&L+6(yAS_#+w(dq1(Q&JFMS -z-8J936*+YtV^`BPUr9tAW}nlt+gNw(vSBad_}zeoi@-a4TcB}K;&IHHS+x;(NAbq! -zFU*Z&&#xHj;E%iOtVm|p2NtP3c^E}>-01_!yb*I{HGf;K3uP7U&9w(l3>u@{SKsp) -z_nyPf{P3VD%rvj2ZIV9|BbyPOI1}0}m@*o?{}fYWTG&uwZp@Zgj)>;Qi^^O340WI6 -zymxK?mgGI^P>)qrMY(Z}4{1nxIv5Up2-w -zb}EZqoK(=ui-*hCmnZ08zd2LO|56^4O*yjrnYFBRp)<&nnd`-5KDY2<@^I$DQ4#8N|}IV=YHE<6x*n5m0A%+@iO -zOW3D(kmS(nymLR!RqIT9)7z4G%57@U -zNliEAVs;uDm^wFKz%Sy-E9{<-eBW(j!)m`3W7m7bC~7nL4x_n|OgGe>z8pQazZvfr -zs&BRn;k=Qr*!Uu}kpr6d8bfPI~mlEPlRt -zs^-fYr)1<3bgX1#6T)M%PgQ(b6T~S}wq)g;pi>o1o8J_wo<6bBCwTaiw%hW`(Qz3b -z$k2&RH7nvjw(a-62_0c~#Fu?pbK1b1o2DWvb#)nWG?eY%++C)fEOC5UYs1E!H9ldF -zXZD%x!o>2~=EtWnb7ppaRP#`|UBc_u86=~DguAjos+d$hNitz4;Fe6}qY7&|y~(2w -z{AcNmVfTE#pSY{nGP4=n{2^kXy!z?Jjl_N$XZ_o;!eFIDJ0*p&1ErkWVD7ElNKy^G -z%z|B>_d2+ZE0rV{aoTw5qcyeS>`+J$)CRd%p)|#a#GhOTS0gM?}qiW?c -zbytM@VHG?Qs^ZCsx7w01c0%&YAp`DU2uRUMM-?5$!#t5b!Gj|`p&Z0A -zjXI08j1PFaUcLz*ZCWXlnYOm)GQERC?dVOdI7f$For+VasGEKyXd_o2m14ew?r>V4u_8}e$fj`tE-fYymp_4OlPp_4UGF~v -zqED2Z|L{!2=={)7!C(?^MVLF-sf5RMDpp8~UC^l{nn`UK;uj2t<>MTAXx<<*S2yp^ -zN?GP>p7+maXTX2PIm2bp5a^eQ)kN2ZGj|Z3*Hd{iz?jHjBv+rS<0JSY(8(aDyGyF`XpTRj= -z7Qe->8?-Sl$Xa=e-anBlpaF>%PF6#T>DdXri$-uB>%(4(YtcBLS!x`oaIb(cfdCUSs%4FR4!;K0{Vxl$i4q|s^SGt{5 -zl|Cm{L*S~);$hz=i|8GTFCIR*i4(13Ph2Ivi^MFjq{OLG3?@r>q|Iux*8ID{Q -z(dRUY`*4f#q*EtSSqy$pZpyB-qm-)cp6x5M6QVUaPe_y0K6JHyS_<2HSajkP?4EFb -zM$lHII}-J&{x7(r>71-^c8|n(_T$7FJ(}@mDM^VgV7s@YNAD1~JMlhgpMP39UT#9LSYrS7-nN&L -z)Tl!3y~RSx1ZWK^-!d*gFfQK|D1v+^X$^!;nw|C!B^&Zds;;{V?W59M?Ny#}J>qJoGEJ?PqN24`(CMzUKm2W+ -z5GOqy%$5x5h{2t>QL67>eM#@Owp#8@%&rpdUHgB|v3Jzk{%XztnO~Rv_Yx{pehcJ> -z{Y&|O=hw#YPdZ4)9<${n&NPaHO6)!Ztp15S#yWh%cZf+?eHLLI56S03F8D*~6ZX;} -zCfN`$4TiG5KT@sGb)!GX+{NC>28t!C>C$E5q?|O@{t)Bzsrl$rV`$$X!+yt;H^3TU -z#W*#da`04u$Avs0`NUqm2^!1PAEjrnI=u4 -z8acYVR+(=nGnj>D?CdLXwHP-w$fUpA5#kLSc}6e -zY~dr!-~taj5Y9~E-%<*#gF#d3Jva%wtBi4U#7!76%KJ<2aHG_WyWn@2XEoI`IO}Fd -z%s1c<=k_RbYpsw#pTn?gH=B>c+r^EThGP27*dOZ#crN~B>NWA?gycmbl5C?Z>|OM{ -z6?t9t=qHBz`V7jmzZ!Sc{fpAf?54FGo%MGS@ecUW>A4Z^5N8|E%Bg&DKWih?zB8g5 -z>N3Wh(+!x+F32v#xQGa?@+TwwE=CK^W$S2s5uSe(vb8aDt+Ot{GJ{P}HP(OX+Au9z -zr`lHf?LNUQIeKst2YY_AwBf>jVP&Z!P2YQJW23$?!kF1(YI?y6Tgxnc_d?T4KO$G+ -z*{m|$ztmypPS-=Tl+f!^y+h+;iETGr^Zj6+GKu(FVD-TcAx`RHrQX*nLC3Etjo@dZ -zgilKo^a&9O(Yi$jF(J*+SvWJm#-Ev{3p%%NNz-?RLqp$z7+V_C -z8|!RZH}E%I7>Svs%RanT(|L!W3+IgK!tX#AJ{U+V-M=3F3g11w2htQuF4|v8%$z%h -z_BPH(iR0)s_m-_#b76DApEbwTv>rZXR+rgS<=k%P`>Oi3(t9{9x2V6D`iTEK{?{#& -z{C!m=Tla5mD(%r*;N?r<_pcAhPlt%v*FyYaRo@OGHtle3{U!X1xRVpY9hiYYncM2! -zTCX>s+rOUXU@}7T8szY9-M5tyojaShZdP?B{h)*T9>|Ps%_K#~*Yb_L{#AC@cY3zl -zvbR@kFM@aJ{`2&`@!jb>S4-d9%e{I?q-Fi`R*IOQFwYiCCJQ6-xzhq8#)NZhqn$Sl -zaAs}94BxI*M@-JBHezUP=!kg$=Q$fn={TWl#D=wYaf^wW|K1>D=??O_XJBR15>CMX -zj2m-@%u?Zb{ULZDlgv^sJe;(D&7pk)x7RG?^%6THJ|QI%qqM7-3X)@vU_J9tTCA-NxO3T)Ogv=H>ER)VL3ByK`+FPe_bDo%g9R -zZDTPkVk*>_W;LIkr+l0~BtMGUE`{xEmWFy3qBL6DzxL4G16_A;KLIJy`DDzt(JFdE -z>k}ryW-&|kUG!EU?b|QTFXS1uc3VeNc$bgH{rNn>Z7pU2T^n@#E`AChnewD+XP9hd -z$z^3_b3ypGh}2?aRqe3&f4`H6zu)m~d{b$se$Kf};jkz3%sV^gi!`0vsio)cr0IM0 -zQ`B_lnVCChh*fwWtUhMg_e4w}Q()3;UE9{Pcg2g_cK&{6Rq3}0F~j5uy|``1_>+5! -zE;!HoghcH@HHBU^_^K4*JntSNazGU#9 -z?54jR-SqBBK#e(!dgA02vBNzEw77I+L#d8;rRjPHOBr}8%we2(5Xc+-aX3jK(h=W~ -zs%;X&8Qk!qWAp3?C&s8V``wZCrOaVhYC`YILUzy^ZWZnqe$M|Ae`3y*u`YKLe?2&% -zS~r+Q;(g4)365LxPe#qqG4ov$@H^KP>3mY0nHt`k`!DjY6sM*BoR11FDU9Q-!tQFO -zw!ufG86auJD5pw_a^5RWOoe7lwFT!D!Iv9u6CM_x;<*n@nI*Ze@^X;oU=CW5Cu`I+ -zmWP%e=FAWiQYQwJ3*vc`P#|z0#Nn<%7BPX-IjZ|7&aKKkSFCfgIOSi|^q*U)8*62> -z+R6z0&U0DudzXtivC`t4g3i97TR2z3dsu)sac2*UTd&$az=-b-uE6FU0fiss$OMoB -zlnSDH@dezPA~SWr^a;D58LN3-(LHC9PF`HVSE{4WjC&lKrb-?u;yo&+UZ#+I>1GP= -zQ%B~*Bl`q8?#$Aat_7P+jEfH?q51RzUkE -zQE$_$Avvg822V&62@$QhF-cxNo`o4P0E%*KdGEr}wPr -zsPx}Rfu1W;+t-Jd(zve>XGd%%@O$u^P@T-^wVCu|%nZ%Oz?}zvNApy^ay@aH>xy7k -zal3T8jcMfSk&25~V&L_eKn^pBAo~AK^5TwDI~o(-z)iJ%6;-9DhKMs+H0;dYsl~mj -z#<`tSpt~N{lffMo?49K5jtYJ7xWc+(hRcfG((@I%M&kH+BC|UjT+m@9Zs{i#f7n^M -zvnBp#ko$DS^#rDFpJ0;CUVv?)u5pvQpCx+U2Cp$I?FzBAbVjeNfCe*v!dLM&F-tMq -z?R*-3Q+UgOfep#;-b_}^WRYTax%xTQEfrU+a?=|2gBfz>D(s?=yzr*WUx}DxeipbF+;DwCZ$7r=4g__LOv5Zbm+yp) -z#wC!{@*vl+a*8qSX{-mFq?@~G#imW0)?!!hYVtcbq|kLZvbaBTO7V4R6SV{)`#BDO -zV+p6%DSX)A-Kh7pk#G?u|BZ{L>|d|(T_2%bi=nMUvUNnuvxr?R7WW%eiIj_S({yp< -znBoxk<3^}f8nrpb%R4=m_ilEIs7YCZk}uz2?zDB$_k4%YP4Y -zeWs2w*d7YC49u_$?(S6Q6i`+t(@4_1V||jY^~ofc$K`URQcuT1^hvR_*gRxQU>aM9 -zVEG%rD^%tb#X>o{1J>UgOIK;NRb-rDdrjB_!96 -z;2zCheZwtz*Uf`GT|cMu#@8$uEd{*kZ=*#wDz(vd^my*o;4FS3W?j5xpJ0Gx^j@ct -z&Or-24pL|#osW^0<$RcGC5^`uSZ%6OKWS6@aTqp_)Zb__zZj*_bSfaM(=f`LpR+X -zs*+1eC#I!&8LXU!u8{ogjR{3nIQ9O^4Z*uXIOBiUOV4$eU%aA*wu=Vd-bT-~nL{Qi -z@8SlOr=G#_^AVfQ)7Zrqi8vXvWpn$|2dJ$eXYa+nRtMXv7Ppv9()A1ae~>Z#B9;Hm -zg>pX)zrL^va_ILM%l+BV)88xgK(96D8Q|%DLb4fD-^l#w;K7JQS%!-))qaDXMk%a{eRa^@lg$+r!-#N*7?o_*Z3734sf^vrgX@ -z_GY2HDLnNUZHHd~XBd#&aiMtFUB*gFZ)1&ue)`Nuk`VLM?V;1xvtVC2ces40+#tzj7BvrKM;+*(et4f9bD%#vk~r@XpDmq*-PU`8`}$(+ -zs@b4)*_pNlVmHfV#-u-)JJNI1|D_GGz!^EngzE-4(?s~$Z3^ql>NlIP3(MG(JJcOH -z$VNVuYwEDU18XqHNlcWjgKAu6K~3(vu+RzHQVwgsFC-6+`rsXD#%jn)Kfa}ope#49S&Po?|R=8+p`>VJVW*KFd?CBQ~9L?Hj~Vnob%0jjE8L?-18s)EzL!rA$6%< -z{c>mu#&XW68)JDXpSV6*U61$Wfu~}Ow}S4GF()xz*JCgA_qnxKy_w?e^{V4_b+20; -zuTw^|AZrb7z3R0Yp;y~8Zw6Ae+4o#8oq1GS(7UlFb@so7Z&>L3r@l-p_T|>r?XaYx -zdBcHtXn;$yLoghODY!j!O@4E`V|&SVvdeJ5isx_Tq@DYBkX>tc_U&MHy}8qHfZg@Q -zPHxwmFX?ufk=`p~hh1toUSd;VmUzw{cpb8aw2ES(aH-x_L6Y71E3Q -zai<90oYP4$*>5SQ(<8*zYhQ1nF`uY0pQP*HMf$ahf1UmgP8)F-1s)X#KW~H?3dw)G -zZGo4~BrJ^Ka^) -zFQ|S<$9)Jg3*UwLsFt|sv+m8kdT8Zdc)#-c8Sa9S44(5nYoneCay8&9fdBmV(8I&< -zanv#R8WT52d3{3>&+fTBbnh^|qv4j?ecpm&=sDVB-$&1!93Jlz+Gn}J2@Nf3Uxo)) -zu-E^$zGnhEJYm86@{7=$4d6Tv&KJP>qVN2S -zNYQtvKA4}MgS4H)?imJ=&tD4s;xJY)L%B$t#r?eHr7I@gKiBp85J?t-=_2ZA-;TeP -zP(0lK)A6>DS3g&D``A6)tG9=~1m6R}{uznjbXzeNGWU9zKm*RDAbI%wf4p=hpZv4r -zkC9_hu!TQAgT=b)v$$ti8)%Oh2@hle%CEXsf4yV9xdlTPOSsN$p#VHb5$S2!w -z%I}6kj%4047)mEn!w9ovB2EEMW%smr`Z?!xWs)lrUqnoV&CW`zMqIq+(ZJg`sBhl@ -zU;7NIRSHMGx%?N5aTens1GEhE9OzXLQ~QGa0T3XK5rmewD{Pz~NMZ#xYL1 -zo^wxQRLszc1JpmXp+1k9-?!N`@8_QDJ@}&zPgAek3)rbn_NNJ@umR%47dJCYqC{s+ -ziN9oXOdD4IB}7c+!!vXPAFwO2Chr0lGp}j$>z;3VN;X$vms0XH_261tSD1*C6Vny8 -zh{+^zb@&SmR`_*e;34Kj*t=`kMeaBz?MCNH(`jQ)N3;^-I%%tF;Rf(sA?Rebuf^4# -zg`JHR-|>ayKZo>#6PUMf4yJu2*xlg~3`N$~!nHbnsh2qDSLr_(an>-I&I)Tg{eB$Z -zB-ZHpjs6_m=qM>o;Xpg+5%x0JzvQ>|ZH|F1 -z49P#hSA`+D2XSToAC&)~?fd>8{>aY1`6KMdoX7L*_wG2zr%V=vG~aJSkc9QQM0a`mBPC!__i!wk6;?^>C=6dr)F_Va>wE% -zj^E{()nVeTe0>E@sD6wSI-)NkICs{G+iQHb?euFLD@jp;_G)a@>!N6J5PP)9-Xu9&J>jRn*Oqb= -zUv8H(^WJ-8f|L`b1jD>kcT4SdelkA`YwjJ2?qniT!UKtt4!68qi}hln!~%V1F%j=t -zyvNgd#^85*;`|X_N&OomQv0NzY=buhHwOxC%D=uH7{u4EuzyVL-#qvC_(T5?uONPO -zh&10G`rtRWhdu*+`J1YmvewA7t%Cb%rLU=`A}ur6S2M-J_j5Cx+kf5i<1iD>qnBNO -zaYdacCb)ld4E7aF5c5(rr0EeRm~mDc)6;@Az`4eZbDm+}Q>>TOKx%+Mk_X(-L9H?Prp{sPGK?*15&MOP(9t|LmCLXU8Nz`;U?vOtGo)0dr?~>Ky^5 -z(~`=Hk*N~`6H;S?QDS1M4QD2kQZ0e_)bQX0aZ0K+FelXr?Ml`eoDn$FB>Pb=(?F*!@t>#Jp#VOrZ=8#Sj$!qk{Q0~ -z8~G{XBq_>h3{ty4rZ5w0*h_=cY_sFZY!mFH6h5jj4rdIvhbq9&pSTUzz7T_X8#2fj2paC_)0iGDSybFc?)%G++~!L7sX^qX?UtqngV_Lr0hm(!Bn -zuX8d7!yPXv;rK!;(iM{LhM(F2o%G0UT{G3})E1*R7D>`HO;5IJ>z_aIY@5^98spZnx2`4dG?Yr6Eb5Ulb#f2+_tDP>3Ls90q4+T&6|1a -zK-)mMDeWP32VNK!p*Mv^JQziCuDZDbjE0JA9;fO#I1~4XcBdQr*=fjmQx3ajM?NO) -z?x5R|j##@IOKxQ$mZW6_BipRb6w&0IiL`h%?dnahnu7~WJj13X;hRFtiFGk_#FfN? -zD_Z5cc(Y#RG6Yy~MdHQ*W4C+D+F6Igi~B(BI;YdC-WsB#ky1wv{C_!G&(&Wf81F&h1W{5b&j016FtfaE|@`F#M8Y6UAGMfu?I@ -z)A$;UlJY1OTn%J$Zd;V|Iwl^#L -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 -z%Pg9GOcEZYlb}9#V -zI03Eu$4>a+!Um$VpAzCK93m7l3C2{QR8w{Q&n)VQvnF -zzmm_Cu#;Z41Bb*zsqXuh{$Gpo7Tv5_WM1sWcPtd=xty2Onh4i6PnlO8a$%9i`E9hD -z-kqb+veFXk`|RW0ZD`L@<&u}=7`sO4~2yz^e&_23Fmd#LkW#j -zT|y1%yBIHMo>i3YZKL=4mEP;UyThE4R&Tl9`(YTPv|58YUhm+1R7GT`KCNbqTYgiB{3U@X5i*I?AFKXjc8OlQhVn;UJ+sca7=WY3FrJV~UI3 -zGQ19YVOu`D4gzBsR_u|y^KQQH&Ktl72M*!L^?&3Z^!&|lvR~F02-2q)drR1~_-lMG -z2jBkWq0ve8iC5|y(ccv>Aqhd*W}ptBuSqsg2&v>J2By1|4azM{+U9aZm2hqLEhz;R -z4~x{$K75HF9Yzf!YsRGx?oE%#AEnwI9pqkNCh;$Z{qv9to_yfz2g2P0g+;lT-5e;# -zk^DtA>XLJ_)-=Ne>B);+E$`xA9`G}hbB4=!30P$)!-g{Wp)!WQ{5JZYn`O`*DM)KB -z@+gDeP9yU;D9U?~>cx&PHm~!OZbQ|*i#sc~7|fgZ!MfA6c`0mvPk%M|6DF-c{LbnA -z@Ivz1gqBK$m>}_xxnB!klMQ|gr05oxL9qj5%zDV=s>6pGb-+2^0}1X9NO1Q%^le69 -zoh%qI`Guia28PqBn`eYke+p~yyEtIagZ4H<50>a}2CkQHNfgpqMNO!^B)&1t&CX48 -z)e?#eJm;?jNuHH!zZSmKXhIp0nq3Re>%Ubi?J{08oHV#~D50e!sWH{f&P;Vx?S^g+ -zD6dz7qEcb)rfQRwEQ8Q9NdVAc3h4+DGFyB8f_Y=mVg*`fCXi{Y+C -zzhCtI#oSpdwCml$boXz8$J8{InQ|dWQhiO={9>|OB0sE%N7wK_Vw3>-hu*2j=y|@g3KV2OR=xnBt!<79!W5znloE)#vUq@$KZS -zUGqX~D7TetjUh|W>p})=RxmD0K0lc}6Mw3a^&UOSELa>4vfZ4vV!Z}YD#(&w0}c=G -zh{jV5`Px!_U>AHykAux#wpb4CFj9#cSR(IP^u1JdC?0$u%Fst6*B6T#7XRiPo5RhD -zx1NHGNCv0n`8Bl_E4}jaV0caw16qskZf1&?ypJ(EeEyX}PmtFQ`LkAIHK^%&W3va5 -zbTGSYs_ruWoZMovY(|U<%&t>QKud?1$;36PrE_iL8ksAHTq+xM5?2np1os_&9=c$) -zTJ0iP87#S7CU}jgrC+!GulYKca6J?YF$0hy6S1zEaYd*ZroNft@hw46UCaP3iK8OJMsp7gosRvA%1Nfz9Tq5Hk%D -zA5IUvoJ6wvnv8vGGTNG@HK!Q1b{yor9`ih`iVx$8zUVvu^NSSh6?}sP`!*obozx-f -z&|vs3dK2XAWLZ%R8{on4wZS$&1MF4!(+ox;DWN6&?5uy*tETn_*>v&;Bk%aG!9xyp -z0GK(-SCc3DGeEcm`ggI>&)K83NYJD2};ee{{F;@OrH{&wo$`^3f%p0)JebB{jQ`-NH!6eJ0u+yeo -zg7jAfEm4KM55TGmNYXgFzYBa8=rH@$)B==}L-9(YyW*iKiQF|RcLj;%Ry=vOh#Y8c -zidZ!30MlfMPe@D}HF}J3Y;uYr``*XNme&E4L0#4}MM8UAmJkr6vJMtVD_oYo9X@wb -zTL-Wh;TJy06K>i2I0uSNNRwx?yb2p9ZHpio1?^PW`&{ppaxnrwGmt)s`RyG-?#WTG -ztS$93S@B(h^p6gTm7`r|60i0C-xYp5))CDeu-C^?MxMuR&2H) -zSA7R$j7?hXlZndr>ayaxGW~3(5a2R(!Kck!s07vwPXQI4Nu%^N9g1ItEtM>tfGH?Q -zccJBJHH-K+zYjEHx+1!na6o{_tnd$sxccK@i(KLv1q354P|1PY4!Q-{L?(R`WL+Y2 -ziDME1+4f4FIEY<^xPV0Ps?-ikfj5wgy(ToH -zgXJMlB3qP`uyaPA1Mi`%2pR%Lr9>9WYo&ZyuwnVcB}h}dn2ZJBuFclAre@iFPqX|0 -z4%a<&hd-aXyjfl}0~Rg78_t_Ch~GPbE^4-7jPUC7&9Y}kGjKASfw0Pln&n4vRy>1n -z0|Y4!D+NU}5+wV@%0?hHFdlz|18%1_K`*J7+A&83DWQWr1O{z1ex5>YuQ%D5?|g^a -zQ;_Z)YRx+bT@BE;iyKj<2ELg;f}Kn=T5#&9NDHnFe=4`kFly8-?CpRpQCf9HnDkUr -zN70it8pxz>??q3N6-(yeL0MxK~(_ue3jbzM41^6nV$zl7&O -zJ|X)(Kijaz-QP -ztF30sq@f%&Lpiwi=HBLsrlGr`p}XO>59&vMBjrEantSaNqeK6!AFg3&>mYjPvo@ks -z*og<_IHkqlX(^?h|6=o||KfC1pv7ij7iB^M_8S4bv$Kfg#lS8BEpP9w_KXFlzz+xP -zjr&5_KY*H#XeA!aH0JVN4|XDqNygkNe}c#qUvx%%^-4YbG#;opG?w!RT4dV{i=@Iz -zXPd!7l1u-pcGWa}Q;a3b0?c9yKaK9?!)6L8roo#ek``$e2hpvfYM_j1deX} -zU%hvsL77=m?L?u#M+LO#|Bntm{O~}y>G~I&)#A7Fun`Kf7^{y8ZFUxI#%#dI0F8is -zzmvhrV4n|!@;fr|6+4}lK75;0zRKC>Nre5y9khPf=jTiDKn!Q@D0`TfCh%oHIHUZZ -z`9axc<@&)h%Kw=MiJ!{FzWC1?;-7|Nm306m!$WBHh{gDJkp*5LJO}Fvk!^G4#lh-` -zb;UM1^2i%3A~m}Y{h8rE-mRV>oV`8oS}$|?5oxUYAt0sZO9R?OF|8yr4hF*$u7@ou -zb6N@YlNNmDnCn0aw%mFicRgS7Xw?=DX=p4Uw%B!EIVYr5@?{*j#;GT?ZqxGJW5)an -zQmfv2DvdGI7?`aCPSdrkxC4ZHT$3fj->&V%sG!n#vlIPx;Tj}+H2Y_>lhaB#Q1wU$ -zt;X4FX(hxJM6N!*rd4XC!hSdye*fB}#)X%kS~1Yu*%!%6_IDIR?F;PF+&P{ZkAvj0 -z(Iv3fExxySe{oB3(w0#oVZaGec6%DIK5?qzR&SLnw7;$D0yI|u^%koRf -z%jcFLm6vkoUy4ovrt-DM>(~1~kXguGB6~ZbB}Tp>A|rtgr@zwAn6+376T$5i^p^tb -z0bavt97g#-cx`{gZ)hOArxA9%S+#rzn$rR -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 -zD7&DF|c3mu)J4RGg=OiAd} -zh2ERO1Q -za__dwxj=(tXXapDoU$Eo^mKyWQsyG|u_e1|)KCyrn=5WB(AD-9MAzmNVyw(@B2p3G{Q(zKyUMi<$h!SL%%}`b*<+s -z8+*nT(aa2$Q<`MD0bL)H@m283m$V1oD)U4ENelE?WoNkM-p-zk#%=II1KO3_w|H#8 -zFJ5&s)1;sQ`QI2U@l)BqboODHB??iN`QYhD+%}yprK_4t+S9H${+!f?cx96BKhQQv6!*1*=3ABJ&=U-KK`} -zbqq&-33+oxjaloJdzbY*4T+K%Z0zCV`16o2@Otm2kjlJJj5$JWbTvE?Ry{G*`lF+z -z8(-^d%f#_H)Mm*+ZB0Nk264*CVl1Y*0G9vrq`4Omd7%*!5|k2!K3*e^mW~bTD~(ul -z)?h8Ow&{WXKQE}Q)y!$vXnR!JH+xi3s#aso(H@mfm2Ir*guE%mtF1|?JiLrG -ztI%J}@d@yS(N~5VjWy4G#qeB}u7<|4sw$-h7)ytQDxfkjh{9eoPmDTvWQo3#=sO`0 -zeb5Tr$P96#l-#NJW%z+*$x{{sdXxYCId88?Fur|{b(MU2PZ2oqZF@GH0cGHsan88BfYw#eEc+)&4#h_wdM{=l -z^b))9U%qh{&MFH&+{jo01?786>8dPm9aD51EqGi8_YeKo -zad?OvmsN+3%j)B?wn|rJMXVT`TUq*N`4F3gF{5v$U4Nrg+Me|kTMiuCeela}PH6a4 -zel6{+CZ<(Yb4Y&Hb4V_)JS6WvbVz>w_#wHn`H);?GK7w9&u$#~R1@k#S-68V3y{av>+(sA7lr*2xaTXZT%Y -z7+Vem!h6OdF1612>V~7+vw#GbXSwXJdh)C$rS(PmOVfLZHmiyo6-Zt7qTFFfkhP}A -zbM65mQUWk2v8r)QRW7{5&4{Hm4VVaQXu4F?-YTcgaH1rmle&@)Kz{!bLX((bt%RxlwM5@R!s5^NLdZo$koh -zpXK#4C_eA+@V_He25XuVIc2W0iY)QOys}ao=m6J1cg116Rm10jTZdaBbPIK^x{4$2 -zSja(-RmA4T<{WVyD~&Z@4ZHf&%YVLWig?&f9LSWw4tEx;keu&)D&L#k>EBZ^Y%h{{ -zWgtH>pf|h4t6{PKbvLA{6A-_y^pL9vD79C^^ZWBJ>hs`u4;OL4h0r$(p}eanm@-gagd$eA -z^YDg3X(wOzL|u_hbi$IfZUZbz!Dl7F>qek;sEp(axhK69qeKm&mhE?wwT(ggV|%6l -zn455dI|cHj=BNmbHJ!JRF*V`HXxj#HndFQ%t -zy7K?MutoV_6*epX`C;ouW6?P2uKrybP3w5&-eS}*6?qrpKL!7{<3AbybHmBX^I72x -z=?>Yrl*1TSI2Pb=;>g31k7EsvLL3j_cnrtWICkUMhr@^C -zFpmGj(SYMLj`wibV0SJcKARrx`o+}@u?Ri5Sm{CA>5t13`OJXx8rl=>{#gud9N)c%KGfJ@aF!< -zbKSfCg*yn)dM}tKSh@`%dr&8PZ*E -zlSf@eQMy#wR#%i#{)NYI8dCKH#=K|sD!*^Lz0tVC<~KfNYCI?3K>Y6to5ionHf6yx -z0tEp1n!a+vH=-|V}N-os{@i}smUAvrglIzwVl0UV3utz8RJ#xFv -zBX`&g;M1;RZ*Idu`y6S_--OlwC@;9KnTDbicdU43bwFN}m{PJ&)Z=dP%z9Wfj@@@= -zwWczqL|Zl5n^^90>%6?A=WDf`RokSiPVnk#^i9732h3PH>yy2Z;C^|(`EsMi$3Ki%V0>zDcJ=Pq1YE$C+_e -z4W;CzbKGUD4EN6OZP?SU;#%s9Rtj7zMF}-Qf2lGZ#_IQuUx&T(248MX07aU(y-gF_ -zlH8ma(!6Q-`4B~A! -z6lGUK3sl&!A=rbcc}=hvkPn#7qGjugh?=S2K%CTHO>cuE`ipw0cp8YGD(`*L+ZR-| -z@s%;?p;KafRU)|XQ?N8!0=k{SZ@d?A;H%7#EWF4Wq^+#`ukF5OY&UPL>c7jxW+y^J4n2zGvBw3lH#6`* -z1lRO}6u}2o)v7|YuMILxGh;GJ_MOf3i1d6}6PS?2wVSduf$!X=$x^kahTd4Z`@4vP -z)ImG+1WqdF(|dB#lcvp<2f|5e@+JR2?#=T89rH9eviY`)(aH1>teaY3rNEjTe| -zMV@11mFvkytKc{Ce1HG@33;g#0*@_wEN`WpX0plgOme6=4`1A~@ViW=(6PV&3{t3r -zj5P1p`}^O+InJIfT2^#3JtNKfHFSl=lqa#$lnKmSyeTe3t=3;pPfS^aqw6V2tfV(9 -zDJ0Jmllwwh)Djtep^UssoYvU1>=LIlZ`3v|>+{@p&qFJh>Fi9_svtBMTl{Fry8~3` -z{j$ldf+n5|=JhdJNctKx@Si;NM8Fe1xU7%SG15OzV<(d?J(Hze{p~c`!tfz)ZN<1Z -zM5!mYve^@rR*DNyO<(Q#9?ND%wHKm?AAon{53=~cgNSm4{!&V(RJ;FYD%4mf -z)t>LLn#{-@$feRgs-NqxmSf}7@EaG;%z(5x&DaMU&3$H!N6Njo3AoVac;t>zMrPz% -z8w$xkVSbK%=wCQ!EVD|~EUBvZOsfMqtp!L8%LH4jvsA7 -zBR*0t{1Aqsf2k1pgL;m7k@^_zluP}VSQ%FpDVqz$q5QbYI=`kS$4A@(+mp^aLOwpY<|Pw+vsO>c^q581`ZQrXujl?gsBg9(&3o{(41 -zjH#}6aOWF}*0K6lZH>W~xSe)c20JBd8dIqX8LG$ZV?&0TF;$k0YksuQudmJVPj4(= -zMrEG+E@Rbn($1J~^Jyjr<}{4dHans5_<-7NLRsxM%Bh*x77QTe%O+}b>ks#74bg`|Bk@u8u+sW^tH=} -zz682H>lA#+RD8*_0PP^OM_7Z(4$PH9hdL8ECbcybrTU<)U)8WdsMS`JeXr3x-t6o< -zZpDAt%<4#&ucD_#lz=~_}vL1Uy%v~6S1CPHgW -ztsu{zpQ01wdGi~J^wn#Hgw}oj*)?W=!VVR5ztLGKuq~h+XpC>a{A+wUS_`AY5Zc}- -z+#Cr}9iwFReA3;G@~V~j!f=KR+?z70N>}@uHA!iYPK}`@s=BnXp~xiOFDw+fR)eJJ -z{qiAjqtbCR(t9>Tb@T(^I8^mU!M~k?rrnO -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 -z>jCB_a7e(O(DPc?;R+3Rp~ny6NsLT>t(_ll -z_==yngi4{`Vn5I`4L%^zS!YVZvSe<0_B-LMNH|-tyBQiPnwkZTD9sQ4mtTL1IphiV -zIasvb;sX{y^RWoNzt4xb{dzs{0=CSQxx)K<+psa0cA6U^_p@6&YvjiDT>*JC@-)i2R7#tb7rl{|7tFzE39O&wXDW0 -zd=0ECC@E{3aK=wq{RKB`F)s$d7Jr;iHXN=v&W|e=6ARY4Si$R9-6&5?&c7O0JcHv_ -z8YM8&YRXw2GzR5Y5cGqbi`AfqZ~{KA(p_NE|Ho -z!`@o>jFe}JE`!T*nl3*vpL#1u%*Xqty-r&%kb(KRy^}YvbkEMlIgF{S2+?HL1K%3P^89JL51CHU -z=uOYleI|{f(bdAfMR(e^w_lyg!Uy0qU4@BH+fHMK*YuiRIlV_u)(xM22fmhgm(Pb1 -zqp6p2Fxm@y^z<=jeK^@ad>U(pL@pMXU$JK||MzsU!&x1O_aOoodIj)Aez04HliBxy -z&q-VWM(-^mCh5x!l2e=+171FLRA$4YRz1|svlXQMsAhIe8@>j2-`3ucJ -zy>=Wb$iS$#MFgt}{fb#gdv|lGg=a0|Vn$b9{2lO>F@E4N!v20>@GcZjE5+)`eWH|k -zsGC46i&w4zFO~?eM-60h>JuCQelNiiBiwTo2|g&?UBK&HX~4YtzHCno?5pNgpP^q! -zxMwjRzUw$qY6tdhC5djfa3#?Dnx(VgrK=Ln4?TrSYs;fCC&ouax -zA^-X=3)SU9YZl~BC3D1htauhPv8)ymWLWp^KQ+!GZ*@}KBSk%mJkR24CjR&Eq=J`% -zz#q|g|Ad+4MEYRJsZx72qHd>Kq2UMy0~Pe`6Rc9Kb40-mNwylm$hDIExrIS#bk?-Z -z6jLq5Jy1&2b1zs(sMlJA6~{q}<8&3WL6{FBJ(z(Gu?Ix^Mw3O&G>^oJ_hSp+UP*Fr -z44t_}zp3bL=sRrE8ow@uIEaksfW`B~g$nvkB3GNA=<01xvtQ)ZbNtg7_Zf1_a;IXC -zOoEv&Sydr3b+y6QFBw;~1euL(_`0**Cn^~2alTSri#UcEu(G!g=_+X{k6IQ2bJ*)0 -zIe@dp=iul08^eJ2uS3`~pgo^p6CeW~1rvwJlE&;ul-7XmOt>4P-{8_!uk&1j6sJxT=|{R{wdeRH -zl~;BvdbiGNYn*pStT>3V%vWRc!O)e0I{W=~wPOjDe&7{4M2f{3I6F8T&r;K|M; -zX1i$lb(Ou|Px|Q_dff39vmGkS>D|UjbuAVk*#J^r;H>|9nOW*z}S(#jzpp -zv%~#8-Cpxr`X$Ai+hkE!1KnVE?kgqxpRcdWY~e!Vx=jZ+d_x`Pgy9d3_1I0l$fp1GOry -zlI#)2@qMgKWLt)MTnx;fjUNfCT{dvhDqTQ=3VxXWo;_yEBnKj21|*4F6jL-r%)S=M -zrb$xEGrNFZ9q|5J;MjQ)BSwI%kz(29As$u(rVA0Xhen!Kqs|rq(UsV~z`5B>BUN3v -zt5gn00yml#ZLXa2qjLcvV{OE -zBe6wmBS>3^uZ|_~`KK6Ve^S>XPw{s>i&jbNJ{P_(0p~Ab{~{lo76~>mHE^ksVG-nQ -zT&WWK_76S0i^z?fi~P{mV{xq<*TpW1uC -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 -zbnmp$5P1=MNBAd3UPKnXl@BGof| -zV?C{zL`b_ybAH*mMgF&?Gs@c-|$0{ll$JOVDpQ+({iQ@rTaBmBpP^NpoU9NE}W8heEQ -zkeLT>#5l6PqaR0g5075xVDJXV7z-F_wM=hMXRrM3T$bir+9A0MjtX#Ao$j&(FWuJd -z&cL(#dJn-;#OTn6jhFcRkZZzkO$eK|aGNOAr0;eckn3hIGjY*R>I3p?2~p$;|_ -zdZ%7@63$-f)tMJL60!GJ$kR6?QO6;oG>d-WHr}m6>V=1?iyx<+;;Sbe;XgO@z&f6& -zxyU!chBi)fgL7T;uk4m^YIx>RzNb4_ -zANZrR>w!Q0UMB_@b`rQ`=;r8+vvWE -zoeC~p#Mw+2Vf^~yir^brPENgr)t8DGgwiMctn})~rN8rV_4uFCI|i6|_)iL@AG3aJ -zk(6we8n}3JpU;S_jt5 -z11uNTwKMH1Sab%xg9EqBBJMCBD&3E7Nd2@m#Av6ZS`b!SO>MB0QGWPD`UNbj>AEe3 -z{I)aQv4KUj(?Z&cLP*PLAp#z}d<)<^KF$?KCbdw1_jfZj?zAm~7)fI%`|iN}iiwXl -zmqA9}=-_+q_tG=1=CbI!3Xj(551`pv0Bi -zYYCxiNifFYt6M^1$XGmKxn`!onXDm=wPB}R{5Vc&8gqwbL$bu?CVpH*%p2<*V#@XI -zkRSp8lL>7x@Z3zM1br)pM8khG40Sf_4SLAyXAX -zcJS&#pFjL;Vmx@EaN{YqE5J{DcaGo3=;*W9#^_@f2fsYDfnTbXaLTMh*q-Q*Rh{S` -zrQRKRqF;?YtsyV6HB;}#S}e6i%3jMLh_ -zCOJG!r)&9b*wX!_&>_(?>+k!{n1nO5|4uM$bnNASmAb-ltMEks7m&)stae6wbvuTr!j!&6~DfTcw!U$T7v2* -z%UUO-4HdM2g>Aqt6q7~~w6`1*G#L9W3R -zKk((exmDpZb;lsx&&7;q$ci#%f~jX|*_srF%(jldJ`-EFCG`4;l+7;Lb$QD3uJDvq -zE?J6+j4NB>nV#~xi|MJbJb~jeWq-c00J-z5itF>Sy=cwFf11^Va}i~K@vKZ~>JBYi -z1%~ZUtp!L6D3jf|ni6vTN{XfXW9zXL#q~Pu9ksrKt2!)Okz>%Be&cstUy4VeiVg^U0W^P8?2}Lw!znB6}CID&BfNT)kJPtx85*y#~~*}Ua>ZHw^@JJSG!R>jny;V -z*Q}dwypI@$7`(?J*z{f< -z6I4?LFISu6o5nKqB$~p+hhU_5bxali5&G9#KaOFNA$O_B-yZC^0e^tTWb(?8@9XcQ -zcbG^qTG1QSmI0RykHSjdhFBiiBs@;C`A7 -zjz2Y)V-%n%3`T-EM#{OaE@ZXvgn1yr-T%}`@4Z!+4}xl2Us>~mPGB%&$T*?wxJyU~ -zO7#cBFMnv{e@uJo-tpCTaGfx)iURwyf$oJ^FZ7tgp8J80zYGb4$CtWL$)%IXPU-_c -z&-3VxVr!6{iD$JdVrW018YgC73^{ZCt|!$zr@MX;_|Op%NbXL{f9uC4*p{fx2~h^- -zErPA-KgXJRInY!7JSA=(qb>9VOo(--mA1j!+iamNAT=(LjO8gus<`lA=_v<`S!g-p -zv|zL)woXI-Pyaw0TEL*CerAz*Boj>JELNhvlus>)-eim^Ov^v$k@uO4r3NGHG2Pzs -z!QXo1SSzJKMo>Oe!O&7Lx<&IImDShx-+8dfGZMbmCStR&8j3p2nfK(AG%tOlgPD=% -zHC%}2(>~?atyc`(`$f6E$_?G#UkrZu58-~=%z2_J-@Au#fBS*f)l?4gXuX^7mtig} -zazBwW%58{SmCfm}jx587DmglWTm;*uA;5QvVYWJY=TjcM^AQg-N2MCQ1 -zl5k(uH6b{_rRo|P><^!P8u>hnlkcVDI++zrI6KP02uD^rx(9F-4SO1)Gb5AkgM|QV -z{tsj`uDSTdSK_FM?|+JLyQeXuR7!XwHVD -zSE`ZfWL;-P!`=hKtgfI~PRqIz*cR^1hQ<8Zb)w@anMMr;ub!R{?*WgeiPh%P$Y1+L -zkQvvrb;p6x0wO~v)dqHjGRL9s>-J6^kO`O&X;(!Jy;y@sbyS?KF43IBetJGRO -z)mwM?Lmp!=Mm=?=_|%RD#^%2ToG{RZi1v&3Uoz{R;F~mzdfR99JjiDl4r9*tJ1POX -z^7~-z9V){jXoF5A- -zabmhkh^fW*j79pmbi^&+a3R{3DQRJJ^eplr2cx6$jN`bQk(c>utt1WJdFR=9mHr-P -zd{w&GIR_pWOwtj4OgdsbAzDk6AM3%<2s$dA!CQ_d$ruy1XioBD;?>}e#Wr27rE3bx -zM1-}Aj@c7K%&lrJihR>S;~!5xMdiO080}0%V`VV2mkJn=7%P=s)P^+7_A2uHAS?x# -zkJM^<6fvOYG7#U6j>KY�w2fl|}pL3Fxbu7{qhancIGO3s+AfmR5yfq+4sg@=IV< -z{6gI{I^UJG)S9tu*(`V`q&ag+bq@b6VR(bd#~1x) -z%OSIZ%tgr{AHTMjzhc}d)LA7Yu#7ZZ`SvKX5|Nv>;S8;zsYoA};9HT^;++G@g%;H4 -z2)aT`9;R$eru-ytiqxRSPVy_qs>y}x -z@S%^KCmhdCRO9)KnzH^PbfHI%mbEBW?1DZJd>vp0*Wzs%mFdg7OaN@|jOi}r!lE@G -zM9EfDul3?nD`Q12cFa2_j`%wg$rt=zOgLwnNQV8y -z;PEU*jOKxJ#lE;Ib4P*+lvmRgm(r;$yllQ^{;V)5F0|M3vKB4la^a_ZP-Xb}%lt&k -zW$@%o#XNLts1BCgeDL4%h)MNx9b?+hI5WUx2Myy__}7`2uM2h5z7z`U!@6BrbE2?L -zrTR0>32DI|8@~vV6czIou!~$?8K7YYMR`@bGv`Pj=AvkZVef9rioY}4XET~b--h!0 -zj3L9aWQQ&bZ)o@lWs-VmY{>UA=^Kx5k8{!|(D`7%TXs%1hSh#xqFkrZCJAsdh%p8v -z%WL<;yM`xrT}Cb|ty{_?FwH@)W3-Ue@6(Y6sRCEEi!aHPczpQ9+rwkPmO%NcOC1{= -z*+u?E7b3q|C4cFg^%o+uUy6x*bB&4%H)dM7?GXh&>X=n2NuY1#t6oSWPz9whnP~E@vy-;U -znF$^4Yy8Py$-ujm=gG{uiFhB0G~NerJK%6WcB^dA8-mDp@--IbZ@D=YjyEb_ZX88;|v -zjFMEtK0@!od%ODef>(x5pFAGco&WHq{O8+?J=wU9>Sbng%(!FjCGe{xvLNBj$G}(P -zE-Wmw#kFsSHNtPH-KRr3!Lt)zlQZM*;0-OaF7YQ{*v>m%SOX1HC~4rSyz&e3b*B}U -zc${Z{LB8q~7?O4}=UqE?GE|pM+eszg5TELF@gI#~wHE9Lknnek=X$Y5|IP?RCC2VQ -zSj6U0Z_ss9y(Nl#+D`fEzB8%|L&)3*(4H1%k+%>JQ-v7s)45En7R;7_W -z1f44nMfn>d`Hr2GEL+-($ug@nMj?5)mg9)Ezuzs{SsP~yf-}uil!9Ok)>K3 -zbIr}~OL(MWWv_AXc>OH_UvsK%`^s0dD -z39T6<4WMjDerIZ-CT9=$(J%9Rbqi%70%O(&#|MQ~zz?)O8<@;qXH((5E^z1ukevH< -z4vnYnS@7GjfqI-v!#Ob0Xi-zEV23^k-`Y2Ua+!txbo)Vo$BceNxp&tL>)~@mu?D`e -z5x5#K?+ziRBDEFo{$!^xKB0Bxo@fZcAOz -zLHQpDKM;06aX^0HC?Z0omF$a6(Zgup%<98jnODU6P*<{kCT5-K`dCDhQPifwHlGTf -z#B|SmeYC4xZ*-6H$oG%;oG4+(2H284j@Yn0;Z+IHThg`G9P)f?IXC+8(fHQD%E*UD -zv&nm{QI#PcadL1=1EP-oc3zkF${=tA;Q7~s(?e;OBOX0$*&hG>uSHz~_LO?Sh}$=m -zEQ(z;=V+VK{uGzxpjbOUNOw_ONbMYQy#)x0lu~zS&6~hR7nl1BsD$<9h&mX%yd;E- -ze_%ulVn{)`7|~@+fglMI -zA^IKAv#)E7(A%FChm$GLLJM3v`=~z9-}dy0ba;PJR-NeDC+wkuZwY!V*a}!BJW%1S -zmjv75A|Q%BK`dkDj9z&6?*%<1O&^OfpJJ^T(uy=AG#?GEf$%`s0N-ce0Lz}J#aIEm -zg7MgL($*@)T({BOEK^@q*maJjB{i|JVc6=6VcVKZ3 -zt%VO06D)IY1TK#iZ_KCXz`-Kq_|{Qh+T+x3x(j3&<#d+Y#PHoY+}D)1NboF@S1U00 -z054l>eHe8?S*i3W_R04t_hB?UpLYT}0G+}nw<&EWAC`Q(MF+ilo1>jKU|wD?`MfJA -zSnx#2WVBEBS{AnR*`AQBAn2N}bg=>(4QmU7rIw=h7nAR?n(^u9LtO#2;A4^mf$0Kl -z&smHPzR?R6wNY7Y)e3lH`tm>M^wrorunYxg$JcfD{Ow+KPGHxoit)AshzUOi9vKsC -zhP~ZA-`orAstyRSpW~N$fH%Ne{w*-=9_KfCCOiiNLv*Q$g^C_{b_R-w57NHaiG1Og=j{j|W5zSRYbfZ!#t1^R0f5w$XjzXGQd -zG-4%DB~j$VHhfEum>VUuGs-Zcq!EqOAyxQt>eY_R6`@2elDq6YqYfn^k=PYjGr#1^ -z9*am>^|F(exwUb_9Jwo!li`b=C#o8my#hV%T`RqwNgns`Oe3*!^6K86kBN1T%&viy -zN6}TanG>MHPH`n~S`LXSq$U}<(VW)dMCe4w>sD}wV|1ZfspkjY?&i=D0)1a -zl(dCi*HF(5Lf?VsM<98!jrOs%t|w}y*8)pd6^yH}N`!|@ -zSj*;3F_2LiO&mGcv3c_}%nbeB{Xm(+6G$_PtZPBqi5PoOEqJX%5-~1>kjZQDgQCA*t6N^(%cJ_po2h`EUJdbYDO% -z`jjDVf5OL%27O9x;MDMF*<|qbsNlZ;mmcNoO&0Vc+M|+CzW?+lW`7o0({iSSokrOt -z!kX(#-*hGeU5J*Vsp8kGMac@F%7;^-J;(RTOOlK;*mO!<2nm4Oh;_)&YHa>Jhf5r+2~n0N_S!Nu;2+qcmXLZ0tjiW%uNA1g>6 -z$KV<9b;$0>3;frbf89C_oo2q7uJ!!%ib{B!bl)s5D3sSM0@o{@9oovP5xZHGEURM3 -zRpxAVaJKj6Iu6q8S$l)7+t^*P=IjtuC~%bn0t -zE`FLmt7qk+r{-~YR|X$b0&nAQi>!#P52&Q_X-rI`Gy~%?D)a&kG1;$k9cg}+ -zSXm%iLiB=vJbdd`Gdr~^sx?2>Zg;$h_%lyv>G1_@{XKMDOXWt2nZ3eiKRlDIP5;@o -zdAJtLJJoEjrKq)wRnFrwU^QoyecrP?t*`3-C^bf&bxd-p>rp+|X=pvy0W$Pm7L -zhF0PMCRx~@t&O#Z;VD%`wX5RLlf6?tUuVU!w+evcU4@U3lU;>UCKTm(ukMadZ} -zMlN;g!*9C>UwcnMpC`&5Q_?DX;@TUJd+?){MeFzBR|lrCwSd+yLvF)k(f8Gxg|FWH -zv#-7!`IZ+@txPj=#UAwK`$)+5k%qowtu>{PZueX7nro4}w&1rnXnoIc(XT(v9fKJf -zzB|?8Ep4)i*Jk{WGWp8z`~Rmh?EhcNu+&N;p)=%ZYum#zWZwv^g&)_%Xa`V(tO<*yggXTJm-dV>aQhH(1b8Z>+OIHMhNA=_8>N)q{^pROjT_xj^|nn*|GR8s{((BDggB%@5|3vS -zCUgD&h{Fn;9c$+T5gCactMvGRU7#H2f5Cl==)m8=uWt!A0s8JS=~>WTC8p~gGP@tx -zFKN4s9Hgtdr(Lo5S~4r3Ps%Gll*fNPxAR=m@3SnRg^1%t%TnSnB;w{(WCB?T0J;N}(sM)Wo3uZteZyqFB^X5`W%rpkupUWQvq%S=wErMQ -zQ11X&FVzZDf1SDHkFe1Qp68~yL|;oKAt|@30kt9r#|dyfa@g}JYNcM7fhSn?f(}5B -z^~ZXhe#Sot21q&RxvdsRaWcAsFkt;0iin)|dV0F90t0y=`b1y$R>>6>y8r8p -zlroKJrB%0zraAV)i&W=;|F}c9o=wxO*~_mqoDjT9!(3_Tc`fi@z7nm}2ecHtq<5a_ -zPd0>gr3RlqU+_Y~OEh*t0154Xzm#gP&hX<8T?L+KAOEWh(Ee`By|X)+%9@`I_6(c^ -z7mj#P(SH`-T;w|1x2Y5>={w65lzT!v$iDB38s@w^D>$Y(Y*UV7QOPuC2E4d8+@~x9 -zEY=_CZF_G4t83>>cd6;*dAVu -zI4lzvIq^k}{+PM+PN23_A*j6xMAxa`a@Xm*cND$1ux1JutT_tu;s86AJ}Fq618clR -zL^U=PM*&O?oC??O;)*OyEAPoqkk3SV-oDK`PX0eykBZ` -zB9BA2iCTB_$dk>mOClOt(;&qQ{qZ`rfW(rcoxrFVVqk^NcTvyeXK{xp@?-~-xYYFt -zIJcSc;pfW|LLv0LWCi|;Jc>s>V@qp_>T(iy%PYq58LMPbL%vMhsEnn?kl=Gbb! -zA-x%P6@fo-tQt{V7n6{-FQKn~4_*OgBkm;9;k$%6CJ6VEL9;d7NF(Hed*gtLOzDio -z*k*(d`}?r72kD=Xpx(NStvC`kkUeFtI_ZUk!HSNUx2C~<4;#x%&zkh$iVj2c9t%c*c<47` -z3Uz{~trnW(q9HaNmWX)D?SB?_le=wzWeBVrLEN6A5u6gyy+?DErEP`K=2{N+kE@KS -z_|f^}R+B9HD)_h=i;7J|G)zSpQ3m_FR2~u7p_fXf*WgW~357?C%pDD`8d#R0A!PQ$ -zH>172(C+7dZ5<*qO~KebEq}o4=%?>L6{z1uEt2s8=RXr-)KKq9nd?>|MemBiwOCUz -zZ+4A^@+s9)W~{jWpY_!8PjyArmwT(u6?f3p=0B>6& -zCvOb@C-yYmD+W@6NwDy`)ixm4B-{x|1m@I(%U*XJEiHsjaD_u(N=q{gOr&q*YHp_E -z)A#9;N$T-Gx~bp7zglkkPYZ{b+->gfXeJmA3U -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 -z4c&soz$9$rC+5d<7x?Qs@Y(d4UWpHo7 -z2k~&_;Wdh?w%tKyzZx3f;ENtB8-UoVtd32RaU%{&ZL&S0c2QD+`$>;qE&Kzv%3Pgci57X8t_f4?!`|?n1wT>(w#`_93xM0sTGb4m@>xkRLt#!DfUf-?YY|6t8jvhj+VDGm;pheywuOuZk*&vhxP%SuDfh_}R?5p7bQ -zpl_o_>9+;P3GWaG=Jn4Ft9EO5FEcg38ob=3%xd794DavGF@0%WEYEmJm -za=a|sLnc^co~FNp8Kh$C>fyY!=GTcQwIp!=CotZFX)6mVu$_3;IqD+z~sTxTV@en -zvQz!OXeX~wLJM>uCcwi|OEALob`v5aKY41nbo~<56Q_z-D&0$M?vj-Og@#|h$VJwDXmp2gDUW8ryNBI)ik%Fto)Kg*tT<8O} -zI%ph5|5)U#Ri6QJK;w*WD_;3Zm39K#q;VI*mv#!I609sc(gh`S#Z!2V8~BMGY|}WQ -zsXGG*b1q?2z_{)N;s9l+l7B9De4wCe3eUp(1^zKugW)4Xt;%V(QBG4kildVE6JRj> -zwGwlpJU9fk39DA{7kr8*n@_dINFxeT$SgVk`T+;;0qO#gvHSsXG4|6B`4#Uayjz4d -zDlW7_lPWyfMKZ)}{-^MjEAZ*g`c;wIn6)nrQlt%D6_4)8+%;_HPvLK`m~3B(^$zk8 -zNQR9=g@_zqA|j4`(QSW{k?$(S*gN4xfwi4vIA*5>Ys+{qm>QiXNELR8mv5Yh$B+NJXi5}gf -z-nIZ9#3T6hSLE=);yNBCtPXfM%QRP>s(B#)ZtWl~}13@R{(K$!zbB{OdYnlC((hc_P_*4nNNr -zy`Q8vFy)+6jlT=?jeIbb& -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 -zN;ms+NZ>D;qns^qv!7d5#>YPr_!3- -zG`?x%PPT)yEeLjC&!)p3a=7ply!|weZ>j9hzrrv?*j|hgNB#HhphYR -z8Ne`P@R-)LFk{)SZg_Yxrp^|WQb#+dY?INX^vQ}?pS&o^-O%7JQJ#p}zREE#l|S;g -z3tmwx?X>YO=9tiMF5a2siwTXyFKMcmoA31@-bGDDP3c9Mv0I~UqGK3IJEz0`EJS8q -zPl7#kD@K&EXsdN=gR*#Q?QUF=;rlT>>ne+D5N##=&%ShMR(GS!z*1zvd%~pNmhY4u -z`4I0NM>va3ngAQpDPcD%P(WgLM#2= -z4Te0)uTJwUmBesDp*)3L4CxZTghiNDMXtcE{K`Kc`8(|LQb%?2qUnAuN-2&YSZ`{ouNMw+Uw7bQJ%%!bVUtpL4 -zn$US`2K{dHb}>of7`(7K$?K^iPIS+5t>+2a{c?}bMNc%JScV=5t%25^+QbSvSyCc; -zr6JxUD~xYS@^&`38WQ`Mh5Dndc(Zu77khNfd5G0Ho&T&?CY!=1Gzk&gK%D2ZUWQ3@ -zIG+hTQ+km#y(6}mNkh9VkOyRm4mxz!ng3QUY#}yjm*d_1;rV>YM{eilI1k#ZQ0>hE -z#wgE`eI(zTu`#*zARoZ~(FW9*#`>lXJbUI)+$Zq{Z -z#NJOO__gEeiy$b21mgwOMO+u}U=XvgRiT5hs@p2LjxBMWL5`fk@F_njwR -zYNj*adlGsbFl{ZuSTwIaPrZuzlsrHsVsfVilxUL&(I(OVg|I*8yQBF&kCN-#^3Uga -zGph2P!zC+Qp4U@Bd0scDo2V{E2dE#UABpx2>M4GO?v#5Sr4oGsh4%E2V8%uowUU=G -zRv!lVu$WuSS01eQo?qSkCd&Cja}D*J65-s}jHzBUF|~ZYs~$33-MV9KyHWoAQZGsJ -z&*67qPhNyRHWq9Y(H(h-@awO!OW<)mlkX}OR(9lho#Ja*IdrEX39)&?O89J&zx}$#t!}Zp(ABlfp7p_~VOM>4fS)1vMLB~N3`dIuD -zcVny;(!6>MDXN2fFU89(H{TcZtfNT5vmxP^`kOYKP+3mrxqaXRdIvs+b8ThH+|%gW -zjHUHMv4vq&BLmySZy9x~`k8js@KdNard^(X+QI2hZxcJ2R8JZB_fM!2Pb0@7*rhgf -zsFb*W8D5#aRZ;{PW6lwCZCJ8uKnRWZ@DeyXh|PaXvC-78XL^>wA?B|`o^3# -zDrc99J&h7!hVZOg*p{)el*Tf~A+@S3p!U{@$~|;sz?TnO42|L3+8A6F=lZyS`sfc4 -zvqBX|GDs>riRDZC>nqz0mNamwKT; -zNG{d-JCHAFcUCrL2}f__c{T21;-iV)ehzbz>K2;eq__{eC$P&Iz0fu!3ufrCqvHka -zSJIgSM#`VbT^&Gvj7f@9gYjgI#;O@E*!xqnr}<+$VzNj1FhvuF5cXU_^u1gdsQAw?jVQfNW?4k>*{;WVTz -zQrc2D0qGf1dPZR$(zB)X?80oM?~&5?6dI8(lhS2{nMmI!rSB_DMH>9p$bWI64(Vl5 -zdRd_sX{(gB7Rr%cA*ENq8i;w=m+y*u>q=ybNdJnC(0fbKdHll#4gAypALdA63P$9I -zcm`Sy17rNYeg||`h~ebeSFh0$e`LOkYmz(27My=A&ppq!n2SMQwL)&8UZsG=Zwedt -zwnEq`7Qt>Ehj=cJiFrU5l&|_&T1nn+OL7nSFPSB2_LgN+_}B?t?l8l8O)^WkKQ`FH|KC5Oz2CA4R+o3M211YV#yfldRUqxiZ_6>zZ%$&2kY;B6 -z);7zQUg;N)PmJR)Lyy$}Y37S`Z_EDLg2p-E#wR=xXPY0C70Qa=w(hSrtwbbGM|wkA -zAG1V%^pIHQhy_QI+Kw2+d*V7;`_<<8ec3XPMRmHh9-!0H(8jFIkY~iU+FR?B`(_}f -zSd*RB*<-Lwo>k5k?42&(+D3{O!g9o6E%R%H%^hqo5?KX{vbqqAJG2g?M{e{NHFl}i -zoC?fn3#k$mu;C~jD8&=1Ks@S>=KQF7#iTvySa-7m8X=bR>SVc$ -z{|I*4pfiZPChFS=ebJ5iiKuAg)HQp)8^U}ep$LipPN;#UiHZivJ#76U7H -z5~81vfnF7X)=_>S!)7Ujua4kJn)w&s!fGW02Q%p)3t_{hvxAYde`oqa$xW*hbM;KtK;&=N -z*$L`#mk|Hrzpu^l<)&pr+RoJvL_UzN3E>*FKDa8LI{-~7V%u}MseF7hV(HrDHhCwz -zFBY2T-pJ`2J=m#odCcWn``6zo1zFNGi+o}>e<^(GGHbTae6*9w3H(OkrEui(_#mPk -zK#t;P%DRp`$mB)>T;4{eV4+j%iKPC-%H{1mzlg@Vuj`2lD$1ec&mr}ZhwI~ -ziWROwf|%#e9)_q!#!KP9U54Ke+JPdS6mh5X@dfak1hUii;J`P+TmQp}1J74EbGUFbWz?btnTI>OT#90iUbE -z>D%C8u+Sz42dCW5K>L|sFxukzCh;A}kPEQZepx-V&pzv(0C|xN6Xsu2@D3nu4vU34 -zW|tnmKMAs2@F`gOvvJluFqZ$c#cCTS%(=z{Rqz-f?A4`y1y=cG>=Yr=t;5Q(TTC#= -z`;9B*MX(TOoz!2_Ki0yGKYWy%_>S%+F}CceULBMd{qNCDElfVHnS4~2Wk3rUTdQ6Y -z#2U6P(EBVkGV_!V^*s4LiSWIe+FIBe_skH1 -zRTu-#O@tpW#mIC%t+f3%jSY_C@8Dyl=qaS##Pc_Y8`z?7?S%%ij>?NUV5~ynZ!cFb -zkMo)8dl6spUjgyMsIF0*k64*|>YxoHU89Rnc$lPH&|AdJT4((iLL0L7v0;oj@bW;r%8zr3Bj`G0051AX&C! -z{ZYGiskEb4Vn@#g6!6oKV}@Z(l}}z+gVO(IEZ7O+p17pEV(wiVesnYJ*&^sfRNj -z&P+yGKO10;>sKo$wvI>_8B>EO -zvu>#VRkdv5iZqJPDuO@RaF$~phu(zt)o8Z^&mE9CU@h8~0=|}jShnY<$Pe(ZgVt1P -zJMBdd91D!_u3eL73GcU?O{Qwrw6_{{XgYF*dHBtcR&}9z!5kp18F`>L^3;F|wW$pD -zMph5VT&z1yX!ts~8YNcf{2Xvmjdq}#nVC{)tyFt!-weg85U&bzH|@UE8q`1nUHfFu -zyUd<6t$CVs?c9MkQG@KnwQJvLp&g0*Zq#4?s5O;qtf)P;OxF9HjBAo1iu9j{!~R8e -zs7UmuBYKk#Gvd8HR7crTPNN1`sfIKmrQ**c*x*p;-$wwCXoq$4_Vtr`)V(igkOz|? -z-4ipwPL`oI6^NNlZI{uG``uGgyF})Xz#PWfQ}{pG&_ZToUwZ|`M50Jftn*J+%jF&R -z?IPFy8gzxRMmC4A^81kEi54y=u45@Qde7PAM)Z3y>1^^_OuvV9M{YW@;%RV7%HflD -zr&QM8UfYZ{;0d55#`5Ra4HKTg)i%E>G&^QC^dvuqy@*Ai_6MsMs(J@$#7LNq)pQP}4IWzE&^( -z82)uwiuZ(PELCQowwR2;^BeYVh~{NLUOFaPx09|NZ@aJ&EFu9G%mS7Kc~F+ClhSs? -zKcwqeAYgxrgl}YnqgrmJw`L5))&V{^^!sSt3bVlN?;uazp}b}{?a7AtO>L-U`|&WN -zryj_H%McPHuqJbWK@`E_$)dDlv4*CGVuNG(#Mzg^i6KIws6utJ++mr*&U17PIB%Js -zB84~YKDs~74{eGQ$AGy!uGAp*3b8_xY>_Ga{R5IM<{qQiOi#+dk;UBhl&GF%KJ=2U -z)HY7>#p2l0K5>o3sF6YS#7)C`YJ6QS7dSb0hbp)Y`^s%%g(Vtul9@1v*4vSvVb5Eo -zQlBbmli8ANC#n`!#pLWe8e@zL8hz0tO;xI3G!^SxSj7fUh#wfrSC_A2LVngRo&(CP -zMHEU7A`bMHqYm+0>9W-m3L8uM0uC|Tu%Lx4&>t;dy=0w3Ja5`oGUce2@3eVVPxa03 -zJHEm<&=+bf$;L6yYB#R9^VSuf)#eY)hZy68tOcdaNcPGdt4sAW7BX4O^lZW4s1ak| -zsO}FS)=ZW>C#}+5v1H4VithvF5AEV7$gPe` -zqo*m&tf3T$qWyK+pmnmccb4*UJ>hiN!u@rZ?ciN7-~144gIK328hc`3qzT-mtPlGn -zpZJiht^_fc81@7^rFs@xw2&><>#Ju0KQ{~W^Yo#-77-Rt01Xn)$FwB_|IuSZyz4c@ -zW7HpcMl{(%jeivHGjvxq>X)v{_IXO;C5}moGwvx-1J^CZmxJyDJ#ISu5e}2AF+z&l -z$i4-HI?EUrfooF{oM&6g5%zsB@@Mc`M9&$7GuH`YBLqgE4LRF$K;ZxTu9;^U_#>6t -z$~o?IrR~__?#4^{f8Y5hAbSL0O%w;rA3Ce54=q(F_^GFvv6KDuqzR`>ZC@-7G_bJs -zPbvWWzJ(c=ggCwrv1co41`*BeAnJoHdL7@@ -zAMOypStJjYGVGlbEi^{WVY5#jn#YXASgW>N3YWcKjo6t~XXs=658-F~h)q}CdyHX= -zUe&7$ExEI;5g>`-jR_A;d7Qh_NApP6Uujg*HT}EJU{XtRIP8!_# -zefAQ@`0~te>)F7&OWEKaZT>Ox{*+t^xoZlpdzz~^={y59;2fhv3qD9R3>HZ+t9e4L! -z%&J4%4-s5F=d(6TDQD08zL!?lO6ix7_N=x`=@*c$U#*hTwLO;0UCTM7S?3U8J&^wM -z`?{A85q{INQw$kcFPo$6Ja20e`5`T$4IksEH$>*Z8=`E_8`z7y0X%(v?W)@EtkO(s -zqMoV13>s5SxbHsQ-kJb>8WZM|q{u%uu+0A0fmsU7$FJ603eV`1p$GK>%{HYV$EJs* -zE}Ek~xfAw(w2Ra;#fa-DVd$nD!dRXW$A5!3-fH*|h9U{q7*p;7$gqcgcYuAnFOoY5 -zzhNff07HAJ`7NT%{yWLWoyyBme%Rr_uK?YSW*qh{==-=MY48kc-)i$bj{k+8M_A*B -zqIORxGDJdUzieQ0 -zV!S^StTjObs!!n7d$ -zeRvq$Tl)UM<*N^sqOVNItGuciI!^9qCp$V%+PXEZB?3G}89VZ; -z;0Dy9H)Bz$fj>MD7BdkuUL9i9+4{qw!GvsLQBd1aiyhzoL3jZ&VPyV%VS-vcz={d{ -z9OehaaGS6|iT-9itG;qajiOgAKPVdaeBR4wiDiv+D~wPN$^M5z>lTs|pR=n%XStQD -zCW*;d`R>~Zuebs3GV9u0@^mM$3{!n;AP-#2!kB1b&>M@+GTtvlhQWX1H!F3vij@mz -zXmTnlmUm81N4^!lfyDk~NRcZlbXRXjWY+KX3PP-m(9 -z)fT+(O6`F1>O@hk^OdmO!HP*iJU`63GN4~^m!zFwudH9)fYg+uG5jdl;E8kf=^OgF -zbjJzNpS8lYIvw5|m*Y!TDiVfmO=@l-Z634@VL -z#FiY4+<${cc!upl1!J&Qs31iQn&m;(06POD5IyFio42PX_2hxn`LS!~aw-~%Ix0q%K3qT6U54XsTP__2TNc%61E -zxuj3Y6l!`>=WR4Y&sm@kz8)F^f4J!JM|*VAaeqN9jz7R9qt{P-Wc;mOKPttvs&wew -zZ2pXXp~%@Yg@PXSfKrtAGGO}d;OZ)I2HJs4Vbp&e=T^{hHIAqK*YRVxe$bW)-i4=2 -zDUU(*tQCKe#>SLGJF2!-%gmIRE?HZFQN3FFO4=mF#5jyIrEJGR -z(aK=0E1Q}2Zb@9vuWFtvVJ_=|N4XEU4~vjo%NA!q&L9axSFq4VQuOwt@Sh(g-==6% -z?jTgvb~|M3E9!l07S^i@ZU-}(WY@j?rl8!l0ITJ1LeD|>_}lRhoF(m0OT*Li7G%a) -zxR51&t?hsAX;fx0~#*t70cY(yOdnp2fe@G8p;k -znjRiwtTZx@0LL`VM(yFS!Pisxq*EuT6IibT4ELD^*h3cX$L}ujn`B8^nVJUKM0WWf -zSl_ik1)LP`Yj-`CKCb{#w~~RA56=3<%p>r&y3fq>y?T;;iftqrxjR{CNl5-Foyozw -z7%~vzCLc!|kTit;VwPd1yQ+UG<8|1;Wx-+C+cKlF`C@6+VUFG$WF?$Bt+nI77fT)B -z{>ZQ?QMZ})SpIw8?`%T_wJI|(zi&^q5V;qAA;*1FAuH@z(;NOKGDFmq(Yij)3ci%( -z>MSs)8-56XADM!=M66Rw-wbwJVjXyr82YUS`!-he6|sgmu;zSurP{Y|f&Du(vt4X2 -zGWiBg+?vu_;vuJB$nzi4edO5^o;8%0tyh4#8+SVbSjn_LCU=3qH|^#1%(#2u*OyeV -zLmXq^giOw>c49V9=8IOFF%!FP&^gEz3n`KY#oG*9=?G>{{EsVoUc9qlI(BZ8w1bg3 -z{r8JGmOI+!_f5y!p1C3C)vY`*D-1@<^fd;)H~i~}4Ehen^!w^h#6J5L@sj!NjlCP0 -zrX6CwVK$=1lV2bweB4j7e>yCR>AzxvnUJy&MOz`)nc5uU -z7IKLxhuOxf&I6PvE=^7fO}wC}|gBYfIKE -zvENtM{zboX!wKd1)0=BPs!5V9)Q{cJ)S}VAddPW7jIeebFQUlt$BW?2S(M=mZzA@n -z@YAa{=yJ6I`e(pDD$yzN6s)3}liiZecgtjxbS<4d9Sm=BLzi#@x`t2Sk-!LF*>l#f -zTA!rMke|@+U!Ng6q3>OPQZIAHLhewvq7O+vBQyMNafI2Uw4A1BOG}k^oSGxO&#JS^ -znl@ac1Wg6g`@Ax(&;IaE;Hg%xZ&@E+kLY-IjeP#a*hiPoNRl<`W$u%DcggV1ShEWL -zUTWjT$fRpg?-@DL=4D|99dN3F*8S224 -z_TsjZsuPeNv>)-WRP6)CMZRYgzXb32vho+FTdNi;=bkFyvr+Fu&&q4$LV}#>-6H>H -zy>UIa&9}93J)%i1XlU6kYTFUDB9I|ZQl8MGwBtB$#f%ernb%p8^B-jm_Un(3Tu5c@ -z>i@27oK#l$M?+qc1%3#(U6loidFXco@HqqOfi-5>sPtc4KPCF5()+1pkkSRU^H?|G -zPT7JM^6Rp)+eQQT(^15FJSENDQB2! -z|00vU#NQ%Xbvs05dkbcoEi*KI2$vY -z_A{GK)H2ZSX|)54?f~#RwT&P3YFU!OaypsZ9REXY+eI^T7%}6&L9So&l{01Fl3)@> -z_+R?2gdr(@F!JE_=jkf*5$xMfVXSqnOwxB%>|a+`LQ#A%_Esh7(<`H#nur+(xl50k -z&%#T(b;QG_`7ZeoGm-(5P~BiA?Hy(}$uK6=#{YvaXr(=I9gw60MoF}C(hMDYt -z`H4GxKu;?J*u2f}V~!rszlramK8ot{gPGp25UmJ#40ftN9L4VogOPWS()Hi -zd9RuSs<@g~mgt_EoqV_A?zn^CzB*EJ5_Q>UScUlMfyGAD`UlXR(0{Y^|7PU?*70;)`=gnY -z?pPm$*3DXS1oaJW#=*&K@oIuPITgIG|h@oHvS3$h+M?@|jdh35FKTjA6PiPsuGA{vt -zN^^Y_J+d9|^14`IWs9~TMZT^V@&A77Dj*GG0y#DnymBbVc;R=0+3-cCI!zf=O7 -zFtG09YC}uOo&G -zCsFxcNBK6RO~2E<n907ED$--lBX3 -zJqt0hWUq-UFhAXX0_A^D{7&lS-ytPk!?gmJ)>?7~9%Kys5(gvAH|Y#CL;pYbC;vwY -z3Q&SkS5(;DQT;{hnQAjC`Iu_B-0%F+bGk#jMYTn?{lo8cmcfYTXcU*f|3Cs(_$KHp -zn5W(Dv?4Uy1hiEN7~(s73~^4a6_uHHa#6GqQRRJf(3p0MhSO`YnA)d=0;8`2Pm|mg0kG3K^?j5`XU?eauVZ-UBa* -zZ^F;W?D$HYfzLR67CU|euf6hijSDfo+wJulcdA4EBA&-FF_w$R803&exqsHu-4e}h -z4}&Md()ya2a?EbaYRhQL02-6@iZJgdt+l( -z1CNtn?~PhJp;7O8S##!wKLTEPm%sqyhFA|!c|CGU_YCs -z+os+22-yssiOv{jsxw0>Z@Pp_XN_Oz?CivzBHLhdzYf*Y)Kdv`xw|Q25B~GxT*Mmcmu8Biz -zFxEtIsYgzv9+b10BHl?d?q(_v80Nv!5{bM#ka@lfNZfeW5s_*CN_?^X2r$AKnj|Of -zXy3Ja#cHz=@mV)<2~N@#dBwHnP7Rxrvdtni+mDF%wCj~$i7VPuVJR*v>_Ho*udJAn -zUO_cf=}T~B2!%bAzTeFC+JVidD=KD`TPYtxUZtWgqxY5LzViRLFIBqlDf1%HV2IvT -ziWKE_Ov+a&ogeo<=jn<4(C&U$xc$}>6J1IAa_bQ>1&lf~5g~e#ozAL-P3omS;^I3m -zT^-FQ*1b?qPx1Co#kflW-ny(X)|C#~Ci+IvJ3f={xcx?S553P+>3ve9_lb3tX3*L3WttdYY$NoSJTsOmup;rJc!x9W(w-q(E-8$ -znIvS;LS93>nCOFs_M5ON^x#+PpkC;(Qwchx=O??^Vk!ZZk;7Y11o7y5yms{&X~#sh -zaF?GVju-oTL~FajwPofci7i6rZ^I}v2abqOnM?ba%KiAIoV#kMmVuPT6aLRU#I203 -zJ?;NqyWYg{_i61adK2GgBpU$f2b}YkE{n@$&$2~KFu^nx9>&30jA>eMkBt>x?3Ag7 -zoF3uvv`Np9O0SeGCsh6<_nMlUkteUc580h^70pVpl|-e~qaoHb40RcuOAbiLs{>hQ -zBy8ZP_&x(JU-EXvw@HpUNfxYxY(0;Uca>zGXo+t!!S`(ed{KXjJPONEbS+7NzQ3%H -z(Di$C>{P^L#eDiQ=B{J-PIq68@HgV!J>uf_mlmF9`@PKDR; -zw_;{6&T|4-eVvPX2jjG(+^jRp_3*V9!wK#bj|_NzIo;i)a&otxpz#d#ju3u=buU_W -zvN5E)cfiJQHS*T=BQ_4!#`zbMr{wy;H??{8EoR1SemMB&1|#3}AA$d1w_M|$eH4sS -zn>j@694bsgv^=A0DCVEsTe=|H6OkQ)_Cj)Ky_m7Yt2YnQhb6SxUTXW>;*%2gXA-eN -zAfDvY{#-~IPx=$FXS^AiJa7o}#mbsvl3a0i8l!>&cRzf -z)o+Ha2|GW?d|fL{l07vaI8rwx8S?8vzRXnYffft2pQ4ua^$!gq#~OH{BiH{k!@G}U -zL})W^%ZP8_=pkvGy@7AqcNyT*8O0OcjNC0D0BMIqs3y|v4(E4^`s$mJLg2-+uxBeK -z9s2aa$O+m9&4;IDl?OUyWZ<|OKE{y^7SrQBDnwEi!1zG-$enwu+zR!nwR7dJ -zwR4h|H7Dgn -zBqkBWF|(7WI?bMKb};oH+JD1gHdQK`vxpBS>THpHt^eQMF-_# -z81?X)JKn+EY5_=v8_FxXIdvs@#@Y|llZEr){ -z%7aBZMdC(g{eKdfJ+DJMFcs_`(A9xIk0I7R^E%uOqb0U!b -zM#2Yh6!&q})OuGpi4%8KPa}Dde#U& -zcGrkz+F9H!8@DUAIhP+)kKaXlgqi38d$6~78J{WmxbT^cj}0H%choyR#}zA(s=;Rq -zK3076_$8P5{EqpUtm+J4yKHY$7xUw`OOo -zbyimG9_tw{Y`VcXs^7}y*Sx)Y|CLC}fYzaHexkLM*G=AsxBw^d&gww8gwmuoLJB -z8E(q`=&jtfm>Y&lxl`-W7};`-89gFc?e%PxN!rgWpAo+3tie;4>+n{6t;jf)>$dRB -zwnCI`?S3#B -zbl1c=tG(W;V_{3tP-k58-+d!oFMy?OX!GxVE^)ls>oYWe>xArvn;D`r1bXV#wL-XBOTZ^l=i_^?^%ak}eY}a;i3jR;V|7!Q3zOm|P -zOHvsHy(dYpZ@OJe7U=9%F2oM60s~BddnUo-EYbK?t^_yOQGdfN -z*P#96SS$Z>10^%4TqS~9hEf^8uV}7))(!3IN6*6dQPv2*DHX2W`V_qZVp)zW1$?(Ga(wv)&HK@jF&8$`;lhaP=%Z%jjCp>pImP3grxiA7 -zn?!|!Y{A+hovYl&t>XKbr#vM|C%O7E-m88ct)4E-KBsf5^>sD#W-3pV0g-Dtr}OCa -z4pHWa^;*DNP_3iVV`URx7Z)-H@1iz3ItfRo8e*|h&A{>dfF-A1bRX*fm(WmXOr;k! -zn%Ch=QSC`^HC3T4A6EA=GOho_GbQMcuZtEixr{d?m*N`O@=rc9&K-la<>wx#35@jQ -z_!ebyleykqDkyh?^2tYAR4#5qrSI7K+kN-g8t~Y!m0C~ojw5MDV?a`^t?7H;zV -ztJl{STShj=xYlP5$9%b&8`M|3hwu6U@iDTRr|9i1S&q?mrK=jAo3zW!wXxD%u5_^2 -zp)apxvDbO1Hnn*SdV2L9)S$H`n9+=S+Y=p8BaohIJyK%1{Ch|W_Z8A^{xwKX)#gQr -z2)f&@6#lNhxK5ZdcMOJL+3yy`qb;sA=fjwNNP|WGGPi2F1 -z`k1MjzMu)(&AXL>L*ncSoW#Cwe^}#B19OcQ9wVE$)Ldmp>|Bq9J3SV;(48al9}T>9SeqfSBCLkoTXIkL|Ok)zyscv#i4opfhJ> -zQ~xiZ=}LjWi)Bqq$i8Vk{0D_RYDW|bMB&uA9Q5*87qwb;%%0jU -zsNL*cDK5kr9ZJ0)e0yLmPDh-xs~T0Wg~MKui!WL%n#}H*+=&$TXSTF$+8|x=*R%h9 -zKFt~H`P}COj$)FJMo$7_v1o!`n<_X$`oGjB3*z`?@8a>zUhRg`wC3pgnTC0++8{#> -zmkRc$(|08)4b3x-mI}3N)17F0^BAAP*g9}IoaEF5p@%^X7W>mlyGAHy94!%Q*CaI= -zn}@a~HZ%Dae>yy%Os-_%*JqR5qaD%o^0V2^@eU@xz#s3X_s_;SEOI0Y3(grfk7<7V -z-QxPhX7GjO#~w{F#v9|^47e44c}{60oqrzlUF3o5@y)L_&cFKiwL=BV>Mgie2K>1) -zph8Jfb7UQhXFDv+DK-l}v5Bv4zCFv0@Gp??B$z{*%WcK0fP6ejbvEwo6wDe*m#c&k -z4%mk_=Syor^#4A4O0&|nVV$caF7PTwVsdjE?xNZ2MkE`Yxrq2{zgwTYOX(^^dYgSn -z^C%Zt!&EXCeEv?@s+;EcO4@G1gK3Pws&Jg^whh@;?X1S$ag~2-)ndi6(_2@nn~#(% -z4t&v&&`cu&QAx47lXOI~kvGH!;c0uLw`#RVFOA=&w)QlVjuai#)1uN*>CbY;SU;`H -zKSY+?NNFxM7dH%Vwzs&zg>$!lP+!ca;Ys5=s=bf}Ox~^RG}7NBTToWR(iz<~g}xCu -zKjG-G=2X-|S}+d1f%R86r3Obe4{=W!)*G%CsvQYGkD=Q&D-TeO&nJm?gsAUzrBFZAA)uQSI8oa*b0eD9gGmu>g~72oDRlDH8+B0G_y|9qek~YXqz>& -zq;_$1-EUU)+Ep9i^SA->##D1^aC<-2{al@-qx|3NYyRi@sIFBf=_bo1Cd_~5UD5TF -z`2n;xTQm#baaet*-03K5`f`#aJS`+gsJr5t)$Re{13R#`ko3Ta|K5wp{dw;(BYPmT -zn}T_NAiFFpF|=Fw)$aR5dH(YKB6ykD$x6?zl29NSn9jkXV0x5clyUCp&of(qgI(=@ -z;MTPpMRvkHGkXz_AlDBm($@NOIh0)_#ZVd4?qR~82dS(U-eX(shVI)MeQLFbo>%@K -zn+6UkC8uLKQ1!WgtQS}m}UEE$-f#Df=V%I;sfHSvLU|w8d-h{7(QT` -zgp}cVWR#EeC{Z1X6}k!*F_(5KslvzHzQa7 -zO!^F^t${DFjo`OIe+G}mTscab9#~&L(nNdAa_lKn*VO4Jh_c|}`mXv1>o@D0THY?{ -zvMV~{LxXqyr8i!&Fs;kpRi#VsSWdc+6hAQzE#`DUi!T8KDDi>PtT?G?sc70m$Oz8w -zfh!Te(O&bFu`=N_{K5}BFaRW?`1o<9XBJ>5KD3iG^jTs^MI<1q9@2cCzh5z -zi)cY@S#z>xe;g -z>1;;axQlbxZ0IFEJqLXR_=u8_Pt_H6GVHL0s$R9mJ@ZlzJ89$ud0r3YR1h%5Gf?p(t8u)6_tL2RO-W(n?dZq*0u%*s)038WCP*?cxs816#;&Qoe7HifCx50=1 -zQzWG?$6@(jFyb;AI|Vl)&wLn$l1&+wE|5`){G-kMo -zXUDTTg<9J^DJl`!q8YIaK%>*3=cA+jILwG;-%hf^F`VI -z+Fr&6Ji0Z8ljGW`A6SCBDi&4*zzicd%Y>=wd0lmgXi^Q(SERP6VHsS4p7EO3RL*53 -z2Ihl_Q5!h833@YE13ov81}!UVYpltSho)sjd#gp7^M3AIv5`_zhBe9n%%Ps5Gy1`4 -zuk4-)@A}_uKr%t{cn!8;-~liLr7KKjF^np*l)|!$^6`rwt4>+`2tEDc?XTdAi1Xzl -zvZc+TGbCql?y+;m0RySl|C(nI@mRZ!?2@wDSNQ3{i{kzuS2q;ry22?vz%E(t1157Z -zqiEh-x+k9tfMu#gYej$MgGqT$)=8P -zYy%ds?UAw>`eOx%-#NYLTsc|-NJW)ZCE=HTu2205v>~FE2ee7PeZA2e2P-=p=#R{a -zlD+$vS5jmXu#wY%959)&a%>Uv4K-rtmUw>N&8l!yD0)Bf=5Xq7yyQ8US9T9%pwa$l -zLi$zluqp#<8uI|<7smUyh%dTg@8XPh(-dTh -zm<=X=)~FHgyJ!rkq5c(A*Sj{PgPq3t~~gwKhu~ -zQmKCk`+5||O~J3>4VH&SbC7clD-dU7;|cq&#|m?(M?c4mNNHIcJEa8cBAcrM{PALe7%Dg6G}AB*LfGKVb3oB0$6 -zNl)9sM*v?K^nXX-L!j*oz)z#n?-Lc^tWw#wr96+VdaySx_0@}U(pmYPv+_G6p53uFS=)zVLwp1ZCqSFQoM_XTqUyYu{ -z-g_xUJ5fINwZ^{^11+NZ;8`@lr-=V`XvN!q-q0jt^v5XD>mw89Lhgs~*3fzJDtD@h -zG1|~~pOW@y+lE!P{9k*;*jsyN&thV(k1xZTeP@4@sR3t~|7(xA{x;4o`NjT^*k5pG -zpSeD$Y!luzJH!~x4j^!o|0FXR6?K{_ymB!%PaKq1|AU6x -zQe>3M5ywB*G-*X--9=8;4CH^f -zImAv-k3n`N^;z)MQGS{X;T?%p|D!-G`sX05EDAPB -zrQfv9{y|{Z2L@j$*8t7Txx2zg1k##W -z9`y)T_fKwP%`|bIz)Ee1)w0=vlKR4{?J?}#t;qd-t{_l|hU_eLE42{GC}2%St6aLh -z9%p`p%=0ubrcWcLa3zp-58BMI_JyE*(GfeYHbL_EYabostVlC6Ce* -zV^2E)+2rn%KfcN1$^W!186rcj;(r?CoiouF`Xk}KsllJo@zAg&R(M9py-81vq2sN% -zQ^1`p?i36f38nb+`{-RV%-!@R>RHd-Ovd%saQzfqf6bt4r5dJl{gMBUT7chlp&U}o -zww9eJ^F$lvx$1E;M08l+q4rfA8Y29WGU5S0phpITV6N3m?3gnDHi3;}f*$09z1YMU -zVjTV-B+4OIM}er2ft^JTc9t5Tq7z=0x5^GeQZ`+QsQb=CXG`2W6MjqGew7e{^!7n$ -z4sw@2QhD)eiZGX%&-|8I&OFAfWlGqM`2RN3&UE6pgcX>u^n06OvG@P~-(^hw|IPfs -zC~&WqjhCJV8iK4`X;wrh5pM`UP?Kz -zA&*~Qmd$gf&fpa3XvB3XWn+1a%kRLtF0{fZu)$mo$~?Fy9CFF6_V7=LhZtq+2;O-* -zWEe(hhoz^?EGXziG2?a8Hyn&aeTapum)cOW3UvX>@(Mg6&(DK -zh|IyAcHuo2qy)5ZKd!%<<@xx(z2)G)-g4m1TV8f$g1?d8LX33up1pX_r;Dg0FW^0k -z@E*6TuVRFO$^Ec`xM`RgigliUYg5p?VdoW@$Gq-OcWS3Ua!Oo_FaB%pGdTVth{HLl-5<{kOe~ktO6WIgjC7HGUV|Dea546}YD}cNvaj -zv}8R9E&sD>u$Qlf{x-#ak)m#Pg_$}V_~Fn=nQHyX{7 -z)VZT8!(tKHsMP-AYL+;&7d~D`2mgH$OjXT!HSQJ -z%rwdd@x*<5mKn!n$WA6#8I7w2UhY#5q~yt3mEYj;YlklepqASL-+C^Pl7<2ya}ZzOu}( -z@W@PQWe=C_7Jp@~FPrQ;hF>=4b=oV3HKnYP;e@GNephwsJ~7X*0DBxa3pnY0;#9<4 -zR`+hf>ab)jkfoW7sebJiL`=)OdGKWa-H-%I{kFA9+O&0FRwF8qGefRRF8H$YyrlJ* -zC9TH-CfX!n|3#zo&lM4$dec?pmz8Iyl%Mt{%t@H-`Q0wDjXC#F$~3SKF$3U#ma^#~ -zLtm1x>mv9)Q8Ou0d!?bh5Zp!WwdJm#mF6?l$*YKIL%rRDJOME~3ybe%hCdM80@TGo -zV}j6ofwUp`)=92wYhy_f%}BhS^gA=1DK-t^~Se+Tv$ai_7~XFEpB16s8EaF#s;j+hP|H0nh%O*8cr -ziVv}%4^m%96&l(p^Bs$sze3WjyP(b6B#DTHhis|iO+2XzS-lb*jI|iwn`dN3)rwg~ -zZB^`jgY2_{d&}8Ld&`WDono^-+m|_$aR5nEmX%=!6EbRTEw0N+QY6KUi^ym?do%I@ENrvztqbw3m-`NS_aozs63pC7 -z9422v(Bo`H&Xd+5-a(>LM{I@$i>h-!BA~%u)4D%Yg2-uQON!8O -z;Wv=w*<2of2ldLPGS>9A1J29Nm^J+E|I6Jf+jf|J^z;{=<$RXFZ}8k{+F^7v9BmQvBlYjFK8={()1cU=3RSE;F$%Ck?$!pW&`yj{LY|4Xbsc*_*&({}Uju<7hYO`&NWI?79tdK^h -z^03@9M5qOC5hEm3+6(Q%fJ(AKG#3x`{-vC`7t+H>%9OeQ^UgWs3#T4Paz?+48C&Nk -zt6(hG>m@6K&65@t}8YC?`bqfV1d_>_jn9@ASn+bE{X?tzl#1c@T1-Q`Apl -zD`P5lIGvFHfdY*obMIzaXmZAUDxU^@<$(|@WmtCS%WEDz_eqH5Jn(+SN~dr~BiC=m -z+TvNn7*aWp(7UAiuQE8D#g3mMuiakhM2Wc6ZKE*5wNUbM0=vsr{O)(Gb*?bo3hQs&t&>@I>f}rB#&X5p?Gj^y{H(m5 -ztnkQVhnVW;uWF#_7@)nzYG`!Z-9B*Oc9XLW9;3G94+hz6UsH2KK=3A^iA|7DOEHZj1p6s -zCCmS}uQ_zR$r4Wq}2As3EqD@X4zho8i>>}!jd_N1IiKGcf+G6?x%}v0k!7_`Q -zw$tpp6VkTLH5}Z1?;3xM9FNL@Y@CGkI~v)Gyjrn-GuE$biuD=P4fHqoKG%~LnFe0= -z1CDod!S-MM?vw+SxlXq@9eSJ*tQw;2pd)58-3uE!YyK(nc|UCEK-=W8lN|Xdm1L1D -zNE3cnFKun1wL#(7+F*sPE&a(Uh(OK+4q|b@g%&*MSb+5*mOpl$ummzHqrDf}@Df=r -z+0jQq_jP^DFNUvda+A9}vEmM{Q=5vM87L%iM9!A1cOG$aiLL$X}`0`2(U#r*)}D -zsf4N8d0q9|4`F$)U*xDjyP!J%rWSn5 -zn)64>35PraT-?Z?_d=SWZ+k6haBz?}^7YHSwPFF7NWtmtUGHd@$(!ZfT10~xzWx-!k)};`wb$TXgzYV0frCB0UcQ&Zs-dVyE)CZ-@W`cW4vJvb0#hH` -zK+>q$p%U&_r8{PHZNG;~Lt0HL@+Th@PcsLc2JrYwHj9#ZH*T++Y(G-Y)-qE4r3q{Q -zRlbsKY;MWsnC&TMB`h+zoL9n+M}p3BFJs(C40$r5pJ`foip!KauKm7`+9s(l2uU82JWBxa0GW6t67)ZgtEG -zBEoh>Hp*z^d#pID5t#ib1HI|4Rz%FO1OKHJU5=c&nKIhyhzq1UxI;7xsOzSQ^82*) -zmm??P9lfg?xvMeCr;UN1mR4%jYGq4-v~nzgM|jDjrr;iAGRhH^V2}K$-GFQkOMnJl -zQZg8EAbO@N($cT@8}iDF1YmEWyq40oeP1>$a)AzQ6K -zmX3KP88sMJv!w>zw89o9%T%xGjitZ&3C^mR4sE`WcV`K^NA4pjU(ap3;Z0hwcG -zb-JV7=~=xue?*(xu|UdFgA6rlGcwhH*+PvxtJ8ms47sJ`4cJ^)f~r~rW@J4TG^+$fptYtvg20I(t|xc -zvu(MmTdDqV@jZT7=2$sJE5g_yQkXql8KYqo;3EqkCk5z^esU)1%KAYE;$s^5GX@t*^N|Ni9e+jLjVRv3*8j~bee -zFUFiJmmva$(s^kevQ@HMVLMBm?C&0uf1TKy3` -z2KpYRNEb@b4Lo@a?E4(#eA$3Q)e8Sy9(^7W8)+*(4K4s*Lh|U^#<|FEBdwz-n(6U&**Jilx&nB7O76>XB%!vvB`+#+*o -z2r?a0zJrWF(n@A8xWrDmx^y~y)lBlcRStUHzdrSpPb{ -zA344ZoHwZ|v#M+JVI1qK4pp0AB_LKjZGm!cSLJNSVgB%PuAbdHsF>=ctNKhg%L1Re -zpsSK%7FZy#m@#DUWIc0vGxF8MRu^4x1ai}W@2vjE$SZw{y^JBQs&4u#uzrsW4*YfF -zHY>HMKGVyX@-SLz`WRE==HC?R1A~I!Zll(g*mz9g&6HmV7`46!3%LO28CtA>kN+B7 -z0UP)a0ie2VG1-Uovwm>P=#Rzm8t2vqrgX1&Tg5hH&KPc}MP_loxXH8tZ&MF{{^~%6 -zs|8nk?Z8}}Ni9sjplqP|0bI0*f$l-BRK%Osj&rL+dE8`=wsvV1*cS~6$jHLj;%W&W -zdmv=s79v|PC#!@WIQ1n(smg8jPWHgIrj_Sv+_Ipmex9J$YHAsy#gusPO8DuXbg=nY -zFpEFc(~Ml{R&U}##r5B=wU{nPhKg~X_|SBnER?58Ka9w>S_@_nBM@0Br}V&O62@~9 -z?~SQ% -zma-_SU?G5HQZEmEB8wO1U3i*L@gpRl48_=@=NH(p)G#O0)#O21C7ToM+5o -zCD3WlG2p@MpnbZW@AAv(PhZ=_(XJ^M>%Dj -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 -zw14Mp>K%@(Q@g}J|>ldq6k?bALzyiWKg+li}D -zV%VMbe5s1xjl9!wknlNX7cUEBIg>UqS!3}H^1?dj8%}+Xt9b16_mIOt88A6(3T2(k -z9Lt?M^D|n~z=@L0mtY3C-Phm^SCO@uShP8;ZtxToACuZ)585GDvVKM*H*OKLpHLb5 -zdloB_cx(vr6_NL8An+;jM-<2@Ii8(f>MGqoLzMWyqmd&~m#+!Ac-h>h;wEP%-<<;9 -zI0-G)VlZJ$i5OE~)KT^au|QX)8^uml^~vw4#4~Gn^~9mD>Kf5IUJh?5<@h>S;qW~>^#_gBJK!b-@i)1W&cQZq_g^%O@_{cA&~$v6;jVBJNA;3&=WG# -zj?^S!+eLathVYwq^5tGfHjPi6wqs4bLk&&6LyDehIGWPbYrwY2b`*KeFeOY^4%cY@+T_gX&XI$GhpdR>c3 -zd!CNAs*KH(6~pibPI^Nc(2&&o-UK>L+qoMn;9V(X4>AXGkXB{V6|uQYic_->5rmgy -zuv(CPdnd9!!p8ufVS{T&>AbGR$S$J;K3^jY(5QQ!nu+oG`e5%K)Q%PHMVK*)Ak|}y -zl^wQVj(WQv?J!8|`Li>vDw6tw_=TQ5PDmzB;w(z@BU3pi&l>DM0jwAYdv9%HlJ~eM -zhkvkbTapHN#iX{)n)>9bSH%ZhWbw@<)bO*ka$8?3RX;GJ?5i+TT|~@rnQvoW|I8XMc&%# -zeDCan&EOK^_(i2{%crGn19M{8jJ#uDBZdSzi2ngRA|l4Z7G$JlnKVCR-Yss^r||k< -zS4yq89k>ZOR_G=+TMWP -z)VMQW+wt?gCFTZGyZ9}e#5X;qm6*3X}#s126QM9~fgc9sFx7!NoX0zUY0l4)KNY#roV)4)0rUR76kv7Ms+)Dz_6 -zQKIqb4o~5G?G$T7^Dg+Wz2}Q;NcEc5AinZRAmi7<9-S^!Akr@sdAH93sqmj* -zAVe11$YflTiMd}PtdkfHkJ=XE?dx);P#KWjjiS*-yHWUOJ>ewK7i=u_;Q59wd}$BU -z(3@pn^w{t;xA+jljQ-%{iu|YZ_3bR!A?7n%#QT6z)57)%1;X|T{?fXv$om9;=?O_q -zP4I^y13AOy)FQ_90QOSOGO&ivH!OLC_Tn&a2#CY(H|)%h>pX|G4YD=6IbU&BJ4u1q -zYC-=gj!FK?f@d4zd6g8C^$jvdz`g(r&F_$XY>&7G8P2(8WoV5&D@ez$Mn>Jv!|^T1 -zcr0rk=v9Wc$TR4S4Hn@woSzVX%D^7+1zU%7-wW~ta22V4VPPO&?ma;5D}}c%BF`Tr -z0oWINt&cI_pl^o7ZK1a-oGOq#&Lk{sXDu9f(a92*f=r_Alfwpc -zz$MRAK<-{7{2B5#G3(+PQtk#j@;8-~6PmHo1@yIXX)uLWd(0%y!H)Vz#4;_%lVo^O -zoR7Im)W -zeGi^J2s8g4F~B%?CIRn#w`7jPA9C9YdECXB+LT9|Q+@U@E~=uxk= -zO5seW1+~P1Yex=-wdQ^o-lG&g?#%Pb>Izm;TjZk8_B4=ms1%ODQZIMc@gC{z=?)oU -z#x&jAv=0w8^AGZ$AUCf$_@F2Uk9%w;eNOcIN*s%JTn?{_aP=~tX2i?H*NYi3KA`CS -z4D$MP{y)TtE^eaSy%_O6O}$w*){Wd&_cP;K+otn=p2|@_jLl+O}mt -zPxvN&BtMrw#NWqH3$hbm&hKs)uGsLc_jjf=$-AGC6-?jj;Ob`YD3J73(m5Jqt04Sb -zKd*=N;GkzrN-$x`$55UaTR&Sb_nb>nAd5y)tET&JvV~w0)gp`PEHKK%o{PL%`Z~lm -zvfAmQiP>9>oDYzk+oe_D<@}G@f6xD#hgSQV1$mB+-;CkP1o-7h>VQRHJ~L)Mv_U4Z -zNjzH|0D9vS;4amFgauh&k@8$&cB8Bvv4EXxhsFmL-RwOt^m1kQgj@qA`ade1(8guv -zcB~zOHPv`PJge6(biA%O`s|gog@$z#8al^YHOqo5 -z;kBKN@lCN!zp+$nMRrj0#^ofRs-TIVVf@~%NaoGY#4|O6f@8ftaF|nHc~(4OW9w^? -z6PmRWU$Sn15`X2ez~038n8k-++gbvjelcS9Xl08=rXwmyoxRd~4!Ze5jErVcpWG~- -z89r2a=K}ecSmW0i*LoR_4O9xZfZsUtZaXY4e-r)V8S8KT<_$9M?|rIJJ^YG8Oy7t9 -z7^YIZXL}Y>L*EMYI?WvZ3w~&@T~r$|8ejpT-UPWgx4lsoq`vSl^4`55zGuky(OB_c -zXA!Af&s+|tUuQgIdyWgq8Wr`k3yr@NX(1YAQC -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 -zz0~Ar@% -zU;q`Qt&tROSG6#xx#Pflmn_eNuI0M$T`Adw{^km`JCL{C+ujnXN -zdRbsTwAowoBZ2z-5@1G!XQ{n@5C0vLJ=AF}1*R&Skb7inz8%@t`|7G);z`@i^u77& -zj$Pt?dW!Gxx*F3E=Mp{&D=0}laj3JOV~O69Y@-P%$D1ySDZ9^Bviyw|dw@`xD&75} -zYuQRR(=ODxc8lu4=hC+4pSo82Z%-;fR8p?@(b7E9-=O_Hy1b->o&@`zR6fR9;inR^ -z;C>ZmAWx;QWF^U5sV&Q$;3>%;1SSV6mr5#^8Ba?_4BjwdGM+`{p(m9rFIiSnLf>D4 -zI-4Ibt}?B}_Z98Tf8)>cv*5K=z~Tn`B3;jph&@jR4OneUuug`TIS+j`8P;lj3uDO% -zd|OJA+*I50M(-e*!cX)nceL*OucCU9K -z0v@x+6w%_$6{klLYYdL8HIloxT -zIU})0Ub;Cq_)plvPQybm!+!vAe$xXb_&W`rTE_aTfaytEACw0bwckc&!iQ;uEe)1Q -zXG;&9o#If!DIt&5&6%t?|$e?TFO*t7vE0pscEUvx3iEQ|zpp!B|3pVyE8A&RM#q -zZbsP&%D?ItciB=(<#X!t!FJj+xES((8QyiW$e?E89B0A3ym?L0c8izkE@0Hfh)bD4 -ztSi*kK#RkQTvemwSs=fGzY2D$6wSYOX8707l!0C<;Z4-7L7 -z%x}{W={XH7l_q5MSb?uD8zHFM4y;Lck|oG2+~^$f*dB36Ht-P&M6LBOf0)wrm1saz -z!yfS}m>Yw5$6MF-h>H@VnKFNH4KkvHU&H=Y8;%)SVnY(usTYf4sLoELnTLDs0{M+irN2KXBy0_kisehF(uu{9$F#*=p<_FNasdey~A -zKsr2~om?D?nAt1wixJz-bMPblYJZxy9og*d4U!di3TYMv&{2545ZaF2xWN0sEdMr* -zgR7k{8uaLmiHtF@IX)=wevT`0&YVq>EORPpP0b9}!_{+lXn>RLq#W -zH=7+t!9kUYI2Wq#f#7ES6n|x&Bg@WX>?|rpcJAr!1-W8LU#m42H>vp_l -zgm9)!Zc+GS+kbCUSrh^7eacX>Y-y^-+SL*}{vobm{VI6aW#E~Zo?UhVaR%s9W%d!m -zTlHlpYQ(n;`;lX2vR4M{;N#=n7%OqU;lfvSQqQ81g{&ifjIDiQiXJ10g7q%-#jY4#w*A?~uynYMaJXH?pAz)N`}hF}q-i0>TpKyTC?=Kubj!M1+C@9X#azjzJj -zJkNQ~b34!F^L#Gv4{Y@!^D+UWgtw-F1|A3*@R+P9=pv8GBHgz%`O-Oho8F|i$QJ1p -z<)ArDZaw!hs5u%r1r|SS$QqOnCjeRFqzxk~8TxKer&{arygL@R`_&thw*&b!o19VUC;jMXG_Us|L -z%x(3ju{-UuEG$ctUjfbCjG9$jsu6m*FLb&rx$HGd-WA?jQJ*Gn>5E;sEqUAPKgO;H -zJIkEmPg=g#cY5PeA4{uUjq~F6=!_rvI}z*zM2X=vh4pTO*6{48y#BtU=ebXoni4I5)lyt#Vz@*Tdnu5DOb -zQLoSJ*POh~g0@FV$20ZKZz8|h+qrfZm$WTS&OS$0g_KWq*?w1Bb5cov-&?B}l_hSv -zUCTunae}A#&~GgmYxisLb(XjMPDz2F`onsbITfcjbC#}S9=CG>XWv%;VSNgX1pB0b -z6*BwFn1e>F!oO1rvMTDscENANH%-c`sHd;obrvZcoVD6Xv~Wc|oeT~snHGG1oEEZh -zKgwdHT>8>bpPp8qK!Z}cdjjy`)*ziTGBf`1I`&{?r_p%GfYm!y9^Wj?rZyOzsq)}m -ztm&(Nkgp{*654Zxs- -zP!t7TgG;Qz-U*u#m7ha+da>i_%^BJQWv?f{=cREMp#x;B1zZksXlNgy{Uf(IvUe=< -zfm*Vr$}giO&Q4nb;m*;_e)x3_O6xjD{mJE|qF>W3^Ha?J{;!5&*7mI$k({&v8+q@ju6wdmrRkl2L?{EH -zk8n-H)t5a4vF8vProQ!0+zml|3$6okJ&_%S=ieg~htLnWM&o(`R~>XAXcyAUulGFX -z(yAeX)HEK=^SFNj -zzn1`{UW@DPzrSn#@Z)_q4}VjdgKC)Cb2|-PU*UFeySZK5UhWOYEY?Jl-JH{R_JaHz*G+6 -z7Ob>qE~V7u&tSn1N(rGU336VmeBZe@F2KsRlIFG&Z141DtF -zXO&i83_S$j3rud>lw6ewt)g#3bCqORB;0=U>%KR){OrvJ^-ZVx=376$IStaMlQ`4% -z)3cGg&eOPcb}lbvnMd)TEcFsl2hN&Ob2WJ2TInSk_0G

    hpzt&lzaL>h@FW`%9s4 -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 -zg6On5#EFL0! -zYqW6fS6QiYZ|mHy=E7rWGueJEXp7j_Ycx!wIU+E|cqd~zC-F|#9ZH@9FVY^PXN4$y -z2F|vkHBxU+ZDAe#b+8~qUuB%-#`745R9>LfF!~3q#a8*fGj+b&)mGGE=(9F?@Y%W7 -z@5&RL+~@&K-ZW<#Qh*1qthtS( -z7bo~5`%r8f>3ZpbAX$)rmD|U`r#2^B@fO35@G3?n@fIzz>1-XS=ulA8NqR(NF$Q~Z -z$8eS3XqB(Fke0*5ERx_(Jmdr4UxOWMpcvI!x_Z&_pzqCV8`kJDhPK(11oJ>(L%jnp -z(3@BHU;cvciH!bj@cK5-BqmDSzTQy1;=vkl1oja7vBPGxVn*Tg7q^2PA%cHz7lk5-cuV(S0^vuj=baBa^O)ePR;o_#o3oLttT2aS59(Xf7g+s`hP^N -zfYqCdHNaGqB|Fb)MZ$!;u&keYiVDHUGjXV`@{=t)VY`=zmRn#`L;chn`UCpQDjx>o -zJaKGE4hPx;aya5iA6q?GG+4<`;x3Wal|+28AA)f~aNMz~7_4c&fzV6i0*R0WGusbA -zE|`P8@1axcu=g!I8T?=OzI#svvG?VlVq<5k_)21cjh^U7KCZ%|5do{+Jo~FASn1lX -z)HgT9V+>Y1wO#H9IOIO2^ANP&3X7rwrrAg*Ha8VpzQX!$UOLY@OiKJ&99wI&4v@&A -zGYWa~ZSlmxl%i&1{R0K4mzEUi^3m>$ubPI4@u106JDc1eg13As=UIN>0T%bb1CVpB -z(uk+^k7M^s)~)$pcfSJtGVJD6Y$-f1mN}rQ@I-_1!H9}_mn`tLxTD>zUO7C$CLdMt -zrQV|ZRi|MsT8KOcfkJ34DgcHs3o%++Dwm-rXJ_`zonoP(me2CEP*CV-q -zIO4dz3(~*CYJHEQzK2Ilf?sF>-n~kddn|viPmrB!VgfO!&(9Ci?nV*|b+@j(PGDEBHf5MPVt203lEIU6| -z#NtCbvB2|P(Aq&K;l=)==I??j9nvE}PVvvf{h*Fx3W%ljx&AJM;t{%q&@8_OAp=4y -z1(u%czaJs4Ln{K+pYu1E5$cxH-E|E>BbaZnwQpLn)rdG*zPz-c0a~FrDO{1Uo-lJ? -z=mJ7AyX-4Lsx!FPaEE=PaQ`pdPZ!F3lw$z*1ww&(|0V7h3+cWAi2n=jiv@Ed=>w@0)7&*CH7f!kjW^!h2l%2;Q$HgeWEYizzW`P1FBx)jeeiN!PFJt;fpY0{Mis)rc; -zxZoEo-+0W4s6O#`f&%E*hl+vd4mL8 -ztxN_Y?Vo{V%-OcDiFurSlFrK+;WJ@|?+G1TqJX1k!8jTP`MEh~g*pOu0lwi2JTDI& -zQ_MoK&uH;lzX|TZ{=nnRlqSCjym!L1Eq12L!(IcQhN1t7CY%Wb7dJ}*hKz+DNn{mus$bQo+oZqb%gSOV0Cg$@CTjW0U%_}}Ev -z;eVO)dF77|=$yeuFFLxl=<%fu&;=gKjZk%d^lHVd+ErI4j(_JzhYA4X`T{|np4OK&bERKV2^C-&7p -zC~KWtmB;X-UV8%Q($jO|u@&%YvS#{o4lHYL*sfIAt}OMt$H=d -z#fX~%YlDba6Igz58tb`G)~&%lVeGwuJK=*Q-hNMu(V8prb>~89kVdD;^{^Y}95eg^ -zY%m0@&Q<#Ro2H7I0}Nj4iEA4d7ko#X^hgi$-XAI|eA(YQQNOP8S&;2?m;1~`bGx2e6AnELTfV(n)n&QY^A}XRG%b|o -zD$*?I{!2ZRs3y+Nc7*f0Ih(^bwU|;9HS?G`MVdq*c&2{LF-ThU5-c?ZouAVG8|icK -zevFh;tiEC4Y@1YS>>R&Xn$ly7Wu8S|NRyl&PMv*A1Q|!U|;=fhMgK``@IRE7&5Z__xTp4 -zaNrYZq!?e4ew06^l*88^W!{0`r;QDerws^bAiwbv3bp_g%%Ymr$sTMA>_@&aS`L -zhg8`>Bg{%JTI6bQebrc|CkU#E1_>KG}t!;efFnq -zn -zJCb6nF+b5sR@n&w`_oVPW?s<=HTAK0zBW6*FQ1R$3uHi34)j-;l!N_%Z0q>7Y==R< -z`*bhP%`6UYJ1zIj}-dTnlW*Hdai->RT8`aKloG@ -zdN>>!pw3KYU5ICtD+m44k>N-U<^c=$CDQZ>1VQi(W)6fDAMod=jKK@;JjK$fgz>e6SDk -zjF4wzFL@fLo^?(B9C{p4#<=`0A79-P5S)7|kF%vP!}3t}Te! -zqD-DQ37$*yo+S?GVDV#Lg@qN7+>12z_D(Pt0oe$4`U8E=EAUGwnepFTR8gOW{at}J -z;^-O$rIx--mOel&E~>Ct+5o -zQ9+)xcIm*v+cx-Ab=zxt4r*XIYk#Tz-kiP~@G_b^;s_w`~dPmGc00AK0%z -zSL0d#1y9hlOPnEDifqfPTvLz#+5^4mo7|I<=cA&{*iQy0{RuuOCW>RR!kciujExN! -z#opx3^X)LPn=!8G&tgCX!moaF(k$pxcui9vEj=6B0vof*;?kn?!9|^c8SW*lCjNxA -zXbJj4xXC9bFLy5~b-4l@uztch)+L2Ym^4wm;JG@ab;t$x^<*~YkAY<1l8*FSQLAd# -z*Z_T*CKc7kpB8?G+(tMd4k-00dR -z*cCC8ulGW#la`Kg+5564?b;=6TJRE|)^SOf_Mb~a+SN;}X%fbbd}!OjczACS#%M6w -z<95S38Gi7{uj$#)kg#?v@7IkT0e$57F;Oj~Ss>J%4fPAtsXYeLWx>xwOVW`QE5+uY -zgsvm`ZUN?YO*r(gUM?L^IGt)Ks7G%)EXJB7H=WvPR7b%|E-;m6oP2*%=n%6Ff;WTs -z5*NJq#^z(Rj~&ny4~l`j5rkpErxBfvL{Ux#PQMh?cKzFpl>_;3jMmV%s>+a0F7nY~ -z+zv-hzMy?ch#s}z_tRUz -z56%)$T8k$P8}Zxt+i^!Y`KpR7?}t^n9%slnl$HW2-0YQtF9(J6v}W?Zp+OBl2tu0Y -zhE#}Up_B)MMp(YEaxJi#v!G{3J_+`bRU$l-(;S-zDOw&h*wUdHYjI;8$qR@62D*`W -zlJcQ^&l?AU^$wJN0sFvq_nV%4*tfCH7rZ&klRVHN@H4aI-XfWb;`T!qyF00llN*%F -z(0R5=NxKH_8zqkgrqIF0H$4OExC|3GUdu)Ofl+etX=aPtKU5Kn)r%8coSz#H4pB~u -zy(>U;R8n2azU2L!{A=h^wEDH0=DVPwvGz5r0 -zj}Jv%C`F(L{A#t1ErHwh8;tt>*$@6>+P8gUE0zt9SYXba?zwVslW4^0d?4^D4tGC- -zI*&%3o$|m<`UonCxDKc!Iw3k|7UnOge)lNw*u9Okue}d6FDA21;8+2rrlHldpTiz) -zmv^2q`MRVQ$Z$NB8*R%fUr}_>=+|s|UeRV%Dc8)=zD4!RDx*45*xK0=)&o=HMx17~ -zS<5OP-sjn6mp!mFqdJ`M7VUqyPRO=H9!%jcy;VRx=&fJl+kN8?uqn`==EmsZ8?qmE -zLD~V)a`0Kftp}a7_Z-!5teO1DIvnd7A>q)R4<>ezT$GSE?DE8Of363D0e7D)w(4Os -zOc)k(VQY{Uc;o=HaFsxte&^x3Jn@koYzMzHQ@(nZ{LDM$GOrC|l;p`qcm%Z#WtCZ2 -zlgZB3D4*z#9Y@yK+)hGJ$`MyfWQPpO-NL2zyY|I~ejNj%9vC+~pt_W1W0d`JC8eHuy2 -zA-`9<1)R(ysUN_7Ur9*0r2D1I^BAP(c%Fy6Hg_*4J&mpHuayCFUj&`D?%8;8QNxGI -ztO0_DY@Oe{cJx;y(Tt0xG2Zav6&g`$}0198XRw=C;S8ETg0GtExqaoGxk=CODjFq+oB5P1tf@8?kEAE`nGz|RC>Nvr%SM%(HTNZG -zTo-uRNR2qd^8&mv994{7jde24e<`}Cx+*dHRVnz0ELgL|s5&WlSBGGokCU+!oPxUt -zk!k>wg5x?g`;KA%c4EHBXC~t-kL5LWcKL1GNAK6vF}X1uU1eVm{xW9*6-09P&z0Tq -zT-gd#%|pt2+z%nSC*7y1<1F;9UEX#EPeJb)IRmU&ndM68Vh`awa@M5BbrRhTd7RM3 -zT=K%^eV_pc$}jbNuU@zHZXvatTk -z#7E=y+vR8QWS%dvFTU=__%(=+*iOSi1EhxGQ0z^U5BfQTEtQE -zis|q -z;QWvVdJzKdrJ!BLj=fKV(}X+BOZqe>898SN8b1vQt+{BJcWnd4nKPB%qXt;O%)lMp8x7v%P3>>n?vK()hRCU -z^VD;HmYM@^$%1#LUn3olVy9g$-No2&*t8DHCo341VZeULb;L2>jcBv)1|$*XT!)p7 -z%i_xU9YD^)3jd1^4yyzY>tWc)B7AR$#*7tFej0HOpB@r#()2PqrC_d4a}ej>CTgb} -z>&bKY?ZVG^$f$5rW8tklLE-GtzDn11zq!PeWIPfhGMFq4W3!59zL>2+{;~K%a##TNVe*4E -zpVMP98NpqO{OGC07Y<2br^k$V1LC63&cq3Cay~6@2p${9%B%6xIU6dbNhN -zOBY~#heH`*jRo{?IX$(7$9TB%-!uw1xj6kX5@!yB_C`tNbY}>g92|Tuvk~tCgPlP# -z9}e~Q7ATsHs9B;R=T+dGl;WrJ-LIbP<=*w4O<0}6Aze5MDVp7&rbb@~P|P>IF>@F& -zZ7TZSp}6K=J>twi#t9M|b;Qq&_$w^ydrQsd1@;ck578bVhk5vR7wk<^P0SoE4JdgHJPWf= -zTk?BXSrbN$WE6$$7hIhI2hOF++~_yRm)I^)?eK}7<)B=BGSN){7 -zTw%~#DV;t`8lZ4@h3&%wC7#K^Ga4+FE{>PrT}Q=+itdi;o_pm&>>$wabD+Vk!}Z;g -zMMIu5{Z8SI7S6bGM#!d-eDQdyWKt668QSxBI@?t!TzNQD7XAWy23lFqll5i0v19Q) -zGhA0VzVrTmr}Ij7!`Dq|$yL+UOY}xKv^{J@o9>zM?U}_hK2UkYlMW3O`{RslD4Ei@ -z#bpi5DXC7H=W@35Y|@b}E=y}ZdSXZ$S(7aY3z7*^gK)?bF7xG~S3|9F(&mzjNjqZ{fc2RJRD4e1hZV*E<}ez!5+{Z -z`i)Gmee8VCu=$~=ZhgplMG#6K2#3DyDSe0=KRoY&8CxItzBP8-^ciP~FS+#-d}{@3 -zGD-G;Hw6D4Y|L*!#plfqhu***@oZq-HZ4#QKD-eN%QvlGKeeV_YhTyQjbxHu3}Pn^ -zCKbA~R)j-;?J>JYLZUg|5#y`3KN5JfaJVmT1tbmvlctInmewx4>vq^apef1*ByLG> -zv#F^*3m#Qd)fUcd$Xn5@OFL!2o)8ZGw#R9a3h8cJ&j5@05xU#bbGJoO?>55T*t~4f -ziYi^ysRA|qZ+aG6-0HJ6J)Cr5W#J=x9!ZcQd3lfnbmoymVb6Dk?nk6YM&PM=87GNu -z9rzF7P+~7Pn#V{EhvIs}p*i5@DB#0HetW;%%J`C)67sI#D#^z+I^ZqYUh-KxBOmXo -z7c{KT=EyISQWtO{#t19_ptXA{oCHSm__Yaa=7a!VgI#Yt36i@4Kl`hZsU0DA)==$HV#BSYnXaoIb -zd|p4PceKuLXm)n?qWw7A#C~ed-ol!ES0*u9lJ)NjW$YZy~LtaOfO30(5=!mS1s{Kks9y -zQL3l1aL9r=JJUDKt&_NM_f9AI~&=EA}+JZT-LANmt*|^}S=c^$Wa{zN8&o19=naUkwlk&e4qQuL$LH -zfv-0A%8<&pPLqaa--37B?@}p -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 -zlfk)N-xWtXx!^(Q))=67 -zs;z4ab@kS+U%EaS2!g!Lx}M%m%=>1&b|1n^dw}_&6Q9Gl){u5Va6%A$H}-?3DX0O3 -z0V#XTJ{9%3J`nxnUuLvV;>$P>m^DeB9l!};Nw}lS( -z3ero;0ERQuM6LSnRQ26^1G|+04ys2o&Lx@hq&8Su?wbPn&%`#$`_2H+oaIxeqdQ<) -zh0@zXl|a%g`Ey=8d+k^8UO^yMF -zz7jkbeHAoKd3g77+uXW3%|1OSiVq>dzT{^kREu~WX*KlIIU+G8%|&D2M@4`PVvpw{{PVO*FE{)P{wymzgQjqq -z_GaD+F9jU={TtZ~EhK26z(bBWM%J7`Do2fH5WGpB1X3uh0)P}c37mAR@kZ#$-aktJ -zBIHI3Y0gbjkxJolnmilZZiG(Ws*?_^7aG=W;OwN|pUUa?Wr{Q8Pg}5BJOf>8$8r5< -z1yLvA9nJhIP&oZc-I~FT$w2$n_oePHJ8;st9NiXGdG-BHq3(@2OCqI}{j9X#ojb68s@ks9!0?Z6*JCPtYLxw?9{2wLuE!D3 -zBHss4p6}Pb?4d#htt}etz8TP(htE6A-EeR=M$fu6IcuV6*WaY_Z|813I9xQ==sWnR -z+78|Tz1%&d2T}=79cj?q7Ant&<|sI=o3)})WAp*LG$XqCIP7cYi3zK@tb|`bh;OV1 -z#*rvhD07PkgXcTUKMN<}JAsfjS}}vG3~ywCttE-lczB@_6mB%}87Re&IqI5(6vWfr -zx*ifcT1!XPt`|PGL4Ps^S{e}q^tMp&)+Vv8ah+!#^d|)Gfs!fkZKHA6*Ow_;$M+=~ -zx$JD2Vkoaubd0P8?DB7$BYt67Q@v_4DCg#Rbe?|{1mO8=<@#yxqzEr1(9L}wSLzFH -z+Qs^nYaVaR@Er66gWIolzeM=)QNTx!hF?9T$PES;9*Xe4bZsFyhQu{St^tbPYFX!gtrb -z*B0{K6k)eaJf|dRl+kq%b^}d=*~irlooz)g6nBy|iKLV7BgL-9IBD=~Xulxm!cO8) -z(UZ5rjz%q3d8HRS#Tc{|Jo8CtTVAhF!&O(pcMjpdGHX&Xt>~PF>YD^^G1*rSO6Gvp -z@=YjH<=52*IxgLfZ-ezckM{QIUZ$el5d{L_PLv;~7|WD|Bbi -z03SbUNFYv%2Od|ez@Hjd42@Xud1gcFB?mtHAde5nNCI}IDQMMyI-t+8FB}T@Qe8;* -z4kH?P#Rff%q3tCpL*H^aPDGb*nT|lBeOyx#d}ZZhoz}op;V?gEPe-3K+d%yE(pRRm -z_2r7q$>og7^U~E(37%p6Pvf2cjTfX;hb9aAe>c%Iq&Y_aQ}Lg|G=7cZ3nc@G9&p8< -zh{0+UA4tqhZ%VW#+BO$|R;+=4SB;}Bbn5?l8#AFJRWMp{?g72?7d$s0H=`AZl}LZ2 -zdz8g2{@!DkUq8!}?>ta>oaOt_!?&o^$lCfG5c!R}<7x;|a0k}X_&4BH*L$sz_#OId -zFRopOx1TzrRlV+z&YqU~Y_44%vYR*?oYgK5ICB8FRb2GfIS1SawtYSIz$TSD75xs- -zIp9~WLl*_KjnI?b4upzoL?%o=xKlSa{(UmW7Z4zvYwO}qSF>zWl# -z@fL8U)~(>gr1egb&x~zKg8jZ7TK9!5*kjbwC~NuU&{({__y{*%7%c}1O9VC5zm^RJUzCNmX--4=MjN+Sb3IsfZQiUg5a0+T|{ZJt0gw -zYTE3IKEBs%zLnx8sJCaYhVXWF9mNH>*BwC>q<=a -zB){Hn@=t~D38F#&g|h=$nDU%c4tQN28@y{+yI6l{itsM?U+|0&YnI;lRB8n6X12%p -zHO=`L1y1=R?>LNuY>We^{DJocsSxk7L>su7h3?zA*HP}OA7DZ|17`zyO}jyS!5VKN -zIHQzymoie-*sM^WXKnZ{WWTXfX>pkJ3|fsygFbCQ~o58sxJ1#oEKiuu@W>{VBgFhGe5gW76U+D3r -zL~1}i;3QA9K&SZ1v9_cwRHE#|LUR -zZN)Zas3To$5Bj>X>iweNNh43LI3 -z^6*$_a70VH6rDL|!vbfrKFaSDeJLi4yewrBW;|yVWY-yz>&aUez-qt-e)R%(C9tP# -za&KX!JHKS0nCB}?VHTY2f+pVzm7~4FU09;APiT2N#UYNs6D^(`K%aUO54auTNW|Rg -zjKnZCCJiycz8J4SX;Kh#<#rl1W&mQ&M`C2}I!ZGPG0lB33^9czdV6%so|HQg|5ax? -z^yBtsp-iBD?9D1HF{sZ(Jp0q_XR=xN>9d)5cJRk%#-BZ-_ul&P+5i3C&L5ve-YbSa -zCgIrA%D3yW24$r&))6~-qg4uR?LO?=skm+XePRi-y#h)4AmEEeOP5T4HodAWS+}iZ -zvh#b$Z5Xt#lR%wxo?sG>oliM3{Ln1)JCD6N5axlwccEw_e6#TTYKzVW+vM7!Qg}e1 -zU6Ywfb1V_kw%MK?DCxA%hLx1}AG9;S9h&VtR%ep1{;TOi5qGU%4XfN}=CUZ4Ml}~u -zV`eoUk_jOvJ<2Tt{qqVqe_u55j<_TF&?k21qq?&&c>j}$n%3Hmbr-_$Y>h0GN&p{h`AGagmX@x|;e^EHJzGuZsW`8`u -z(#QMlM3V#}`UZat=fdOFq7_pii5uy#`QG=vs+@Mj+Y|iu4L0aET5$5IJTn&ZB1rNo -zC>-&Msh2mONyY3)bHu?ZY2eE) -z(yBag^vL4fz8tpipseqZ=d}G3zFh1LHS3cb=$Toq9cN9Jub%PayxHYAgx+a=$sx8H -zs$HX+t}Ja|Y7vv=S*M*o;;3nH67F(bS>F262~)e;gTKRhj`Rg1XTVUNwnzgiIo8WY -zq^k&OuzGTjmhXkO)E>`;(A=;??3UhJmCb43*K#KiJb2mO%WMahz0Na#^R`_pQKkRAHXyDzGyh$*-3;9o*RlU5$b0#>sQ;kiZ<7-gT)3IY@*W&u0&>LYM -z8cD)PlKWf^`Joxq=R?7&`cSZr21QMD=oaNv))wXAiIAhp7ND~6KnWQx7XYu3Vy8*` -zSOLDbXclB5cL937{8$YrejB1nf-=~$v=2M1`o$6U-nK_J#AmaE_@FD@5rX$taqxZ^|1xMq#~Cu`6)>1 -z?OQY*s;UzHsyvl(n_WKHU=yd7dcGY_^)n -zKlXrZgRM8{zaDvR$e|R~(`U$o&sk0Le|&!Qx<|5Yh_NqI{j>Q%0l4AGM{j?q`INGY -zg9V{DPd?WA3-}qj-Or$t3$&Z=L|Y56wW_yEJmREf%%s?Hjwg-uw4=)Q*i^0Nf`5X -zb1P|ozN{RIErLyXwpM)21s}j@TMkf0Y(Bz{P@E3=*{V*@TR!5Ryt>{YzoCw&Payq` -zK26_cD!lX!fk)g(uRG)i+HUs>y**EEsE(Y`YQzP@lkHn!{nQV>Gg;@f&3oolJDnYq -zHh&EMH|w0ZIdRvykVZXAJN@JbaJMTi5Yv$)Xw_L}ZPc}I=Z`B}tP9-_lZDAaBRH1H -zjdQOo;`s^=XC%WxzDDRsGHBb&3^@5Y$NB!Sp3X@)IhB7QJ|$&7t+6nigp5`%>`NW+ -zgcoy8KkR6yZu37epWXzYbfkmZ2~SXtJ>nyheZx&qC|wSRxcIlQpzCr@-y6ZZ(oAoU -z(DGWEJ|p!2KKR|B11bD<)Jg!e|P$Y=U+f%}_3i@-S8>){K=mpQYNqzlmx~b*1+r -z{iO3BSZ`D7F$JyS&;3)`gS_U-t4=d3U(uJ|sp>QYF08Ma5fiW#RnIU4`tQPg_{q -zoF0N!2CRh&*Y>ZvPyE9gJPm!*{c!gSLE91?&b|7B;Ad2|hMHl~_)$l{_`-E&oEJXo -z&_a6gyjKTbImURG|Dz6b{Ida@#Mx|XZR<3)+I1J!%?4!-%oWxe`lwseF^o~THS|HZ -z?HTanNS=nJtRNQHcLmM=k!_91ltf)iIgIfORc#h92zckNk`_Gt$lysg|vw -z9o;h}BP;jvYIz1c*Vq#9)`H=JeJG??f*cpe^JFz{z)C24e_CE9(w(T+Sgq^cT4%6o -z?Y6bwtm6W_4IW2q$r5U{7OB@A#yOq`-iQWXMh>iBq<$ZaC^P&8_JUvQDbRAKv`9x~ -zUs%W43fFNp2jFj;n;LCTP-~zw=>9*(z5_n0YFq!DDVfQnO%h5PFeM2gp-d7=km4kP -zp#%)zRS{4_QGqCgrocrrLjneDfgnNx2qqv!yd)4GJzT;2P;bcqUTNwGR`6aY^_=Pd -zZ|yS#yzjl=?=POox7V&`pWW8lYp<=*vj4(4-iWO+gP%}*w&nyJ6sSd>^lV}rpdlg+Tr-5{$bS?Iy%=Gu@3q*@BH+njyqIci%5OSc-6 -zvj@&+n2}+p_rDIiY;64Z!s^X_WlIqc%~IT%nZv6MH-vw|TDGFa -zjBlfC`9yZ7O~9(_TS4blw9J#oorr@J%K#lP`inFAGO|^5r|pMM6UOLtOQv(+RjCC> -zp#>M8$XGKI^WwJx@6AEq>jpakCd>9!6fWWFp;dR$U;b*Esgz%#Fu!^BV@y&yvv2YS -zm1UhcOGj_x5&kPsh#5fX?0b_q3`HhRkgvWYWCXg`l+`B{aeX5pHS4Jg!>>xE#&0i` -z(ou*KlI>#7(fvK#YRse~PVfiI2Um(?#>`x$O#$z%nyJNa2xm;N^u=vuW5Q3nE}Wk; -zCN+q^KR|^I{nTyMYgiv -z_jctr%{@J^aX2wyNqiL+IWk5yHY#Dp}& -z{)_NXZ+bJ_(K#U|`exf%fgddE|2d>E#DOk$$~pQw6S9wuc&hO1IQbg44S!1-*B{}G -zQMgx|B%GbA80%Btvm81C3zWmk=F!p@(LKQO-OP1qNmxvE+<29)lwX%JxwM~d%Z{T<@q -zbf1dJDpQdpFAYJhNwW49=&kE=pl>SUvvKoy#wVh;rxg_0HO@$X6&?Pfa8p1?#=1w{ -zlm;te$*N~er@_NL4NF_exD_*51>%SGdoqG{77VaGMtOk!8 -z`!mk45eKnh3C>rqC>h81lUp>+xC2x7zIZjZLA);K4AzEP(F_}Iuoep)bNHER;a4kO -zH!_!wGa_s@!WwadQ>Ip7Zhxu7?38g*Sh7LqjfD>^(D~)o28o(`N0xV9^dbeSjo8cp -zes^VBMROJ`lx1ie`R1IAO#4z;qq&%RNvxEqi!O<8$j0M$3uftUhKi!kixM50`CR&i -zCWJxlRT?Hf;CjQb@d4Ks!{_&0J^qZ?IXEpqTy78886jR*i+VnSTXN{`TzS)thI4V1 -z;=mA2XGUpD#!8Kjl7W128O4IRf=S*rnZa0Dk -zE2S7oa!;o3FNGu*3pc6* -zw?Dahr%S8bm@s2$37wJ0Dn(H(Pgh*y_s2u_c^#*TD4j@XN047gwZbA#kFebL@AR8n -zR~vWcMS#~W$IY?t7sr%N!x -ziorRsQv6M`tD&>I7bp&t5Ae5-J5bp?OK)sye3NO~sP{+HUD}rGg4NF- -zf{vk40X;h -zX=~-u``nPiSHRBX@@ag>juQD@Gk2ll6Kns(y12Rq$i${iOsW-^=Y6kMrPqp!rqzls -zU__`e$iC)~M}+}rmDss}qk-Du>x&fWDti@ftGg#HQah_p!$uJ7Xg!3x#~!Ue;+ldx -zyh7|{#aVhPuijrLPUCqUNtB%VWyL#>B$iSeuf!}iyScXb8x|_kUt4?=XEG>;8u%N% -zieZ_5ecrG3ad$#2wZ$+vpZccwTv6PDw@`B(J~L-+;BflyusGkuwM63YLj3I}Pr$v? -zFW_0k@mp();}#?w+CDSP`L%D0OEHwMHaDD)lMStjQxD{;ezVtT`6{HG8n@tcy=-fk -z^K)NBi$-NbZkQ`^$~nyWXP<27jDdYcSya0{&9cC9yk&mW;HEswe0=x0zI!7E)7~wk -zdJ1*^?4?{uk_N4l;2Z>tT*h;dI_(x;$W%G6`bjRLawY_522nYi{cNWJ=m$T}^-krn -z$3jM?bp~rWHKJ1(92peR%7H$Yf39rLm^cmPX -z;Bl^u&lr96j5suyK6Y6Sy{T#$4H+BRfw3;Y~uT!XAZ -zzmR0Sf5Cc%)5V;Khh${cX~>zKlTT|KlOU(`<76FK+!_WsvFtFX9}8`^Xm-<;#;Nw| -ziui4#kqYdCI{U*#A)SqVEU#gWrKk$WPAG0VwnX3!6u483T1328QH_%jx@g)%)vwF@ -zqJeX6vaLbu_%Gc$%oShRMgaeb;aRqXtBoBQrJQq)joQy1v>(p-Pn)^*AduPlrS19e -z%&mtR^+`}aV${!VBfe|w7=T#svsewxzd!tsGXImdG{kCT)UBX?%&32|ZAGl1h}D%0jJM543eVcQ0p$TbVG9K^1IAhll+ -zHlBqw+8hpZYa;Xi(c0KCuGH*|w_V1&K3=-8nZl1p_@5D8&%%e;YgG3-hdQ|F~vH$|Car2U6NUPOd2_fo^O`$r95NXUUP0zd7bE -z8oqKhbVtZil+J=PwOB)a?ARin8>+_dCqpkal#Az5FC}z$Y;k#qWEbtnUE|)Ay|}+- -z))3*RI&oIYdn{ZFZX`R$LVuE4olq{GPpxv$jyUo>P>(7!Bg -zSkS*L=d~cMJZ(UbR-W@pkhVU}7^JPwS@u&jPBmtsymE(xsH7X+F{q{0S@V8+wD-{t -z_u}rC>crIsH7w?YU`3>U%EbD*(GBS@tZzc^k&SvZ(rMU8m&B3gipE)aO5-d!rEbK! -z!A1HOG((*eE24*=2z738-JhqPI!P8SnTL -zM?kML7S^Jn^9hcwJ9bkIxPgQ$x)4h#h#Yl2=`+k2T}vF9+gd8Rc>FWyh-A(NJIFSrb=<&5aI^;3@ecQY8hti -zFz3Hc&^n*qhg^SiNi_ibc2f8eHyS8(BHo$&uOl>t#i@JDO+Ll_SJ0u03*8bYyde!?4D822WWr -zaf5NN(up&sN5Y&>;hRb4JOe_LsJC!;LS*-JtuG$G?^iFH;X_(in;Rre>=VaHf1LEX -z`k+L6L>>G`o3rxi8&DV#`(QkhYa -zW*ICh9)?DJAmn%MR|5R#B=p7^6#-$Y*fWSS#F!v@GY}C(utpI?m9QBg#V8EaCN1sF -zr60Umat1nfCT$~5ERNFxdv*MYcJTH;X2Z${`15Ggid7sF4X)8Oh9~Y(TVGZzuYdC8 -zdng{LQjFD8OXJcPV<+k2(0O{S>|?OPk11>)zXU7(7^1uc%1S(|@vOn~DjqAIwRp;7 -zGzf7i8rJIZ{1cCe=L()yJXi6!@%#nP1w0q=d>-8mG5!wJ98GaQ*VaN$V+zr<8a+4` -z$RPd-*Y~c(8u1KPgR(PaS+8kiO}t)vUr;atcWF$Z^)$uJL&G}&QALJnj$ -zMZvm*9VcO;E$JKhD!;HSkclxFE8$i;Ym{L*Y2i{w!Fusij^mJCo0~(hm!poFj1&3V -zs6yx}9&Z^L6#|zTr=E_tn4-qo;~miPt(4M`ZTG|80C?v+@wsI2={oi)m`_VUCLdbM -zbyOpfsFA1z_v+)WKewwse()c~9bPD@`Wc6A&_j^$s|P*OtQ|BB^)PafqS*}VgQh_R -z_MQ&ecFO+~oL{C(k$Brc@mikwl;ba0Na6uNnW -ze4bRce<{)HJLr^kM|Xad96pspuPfWGgkha=8v2FJc*sg|TC}DnvSLz1-=mEuMk-i`*LLFL0G~xo*L=w99n^oVu1tR=m&!x{N!x -zD1U3Qxl<;Kuq2qd1)=rFL`^i8b-v9iCp}1w(}$h0BTROKJ6Ol%oY^f#V#F;g{=9)~ -zyVb*rUfcq8Q(il_bhlpPJP3ac{2?J^BeJ>keC)QoH)sdOM3O;exo9=z;(_&W)_e-e0$9njo^^=;yl -zTDODW7*T4)>fPLWfbmOjS|5h*5bzXHNM|zq8sOIoztu>m4S!!kIwMP0+KJnG1>v5< -zOxf7+OzC3#Bj8!qfLD0~F*Nz`v2Q@n3kVZ%u00bippTDSGdvYo#p+1o`JI5UTuigr -zuouWx5d}68#MQwS`eLlm$u`6?&ypbJIZ!CfT=98_88=)Fw_Fq6XVQr9jHgK&!I8Z} -zx^ax|>Z%iGq@EFDbamq6L+ixpsgF2DRqzAG*<*~$tV67Hzmz6AAdC-;*sv{+w>Mg& -zAV+JkhC4=7@Js?hvSpsjcEli`B*Qh~MK8$}GP-hpmgP*j!mg?=JR{p$Vr{U>nxl-_ -z)}D?duG1MRWhJeEsI%TKD`lEGiwo1wlY>xYyw -z6jyN;upbX3zpBW}N&ns+fYm3iiP|Jd_p&p?N-D*PxWB$qd?dG0oRF!gpP3g{5(D?7 -z%vf-STAX6+2Fb-v>{m~zPXhhn#}9KUC5HOXumUuhL!Ei2$u^X;u&lV!G6S~n&8@?y -zt~)}r-bTp1-xQ-N(R-rhXlbucS(~S_^X=vd2c+Hj&d_|=N*)YVDUw~<+G4svGtBue;?NDvVb0Csaqx7f -zLyp&nIk$=wJA`r|`;V}J9WF;Hjob2|by18^Jt)R1k+iH%4~2WE2PsN9vRKSEC0VAF -z-tBP_;X>wjnp>{md_u{YO1x8PT3S;nM(|2;D9#e%938L~ -zwL~_)i6f2xx2SP`jFe#O8!5fTQhF&U1e-H9@`^XRBpDs2mUqGxze4n5+h%U#6_LN-MGBb*%-Stc0P1|ooZQn -z5oGRqoK4PBH03)(VarHLFUpcwp8-8!87MT`)fV6HKOxkAm~B$BOiHax<22%2O(o>i -z6jo|0)N07OyvcH4VVJWp*w!>oT5%4y+*ue9;{344o~g4GFIBc^cx6kBT-g$dIGY3X -zy>Hjo;%&abmkJ0Laf>)K^X_u`%~(N}EwkAd#EEN^Q7)H3ugZwO8ATL&oT$WjSV=dZ -zp+r{vrCKk8d?&14xw=ca$G`u~NIZg7pB&-m6t%SFmG(z0S0>toqI3L|wv(d}t`s{e3?a -za|5O{^Ux%RRX`e7qOm^8q*~pMdw`^NbJoS{%f(T#6z0D@wZ&CpIc%#TtX_i~G3n;D -z>x(tGwZjT3v(5C4bV(eas%R;%fOq7kEq6@Lkn -zE)J~4pnnl1$ag}@PwPzb2j`tJz|QxR!PZQFoW?qbbZap_B}OMK+#+tmnl?$l`@|M8 -zc`7%cx1DyiG|r9aW4YXhhPVaGGieQ4icuicIoX$n6M@v;bQWkO$mqtufbb^vN#Zy< -znABAjcEOs$9&K_9z@dxOhioXPQ -zf-mKC#*#HyKcJ=R{#LPB95A%t1p4;^O@{K?q>bIc0r7U;kmPuy;%-AX*c#!RcV?)X -z*A>6Gz&Jo; -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 -z6xY=IbJ@s^v-Z%C`^WDz -zY=@y)hSAvht1S_67Bm0Pm`2@;41a*Ii&)qS+s8;@DWiT4>M}-s#nuGsDn|X9<-3C6 -z&ya6#96t~T-r}S^)ZR*yN9^mUznq`T2Gd)6nSQZBAT1L$; -zH@B7nnVsYDj$`nS>luA-nYnc%qmQ&5x!u??5b=uFlBSvws0qGrG2a2U3&`yRi!*Pn -zx%DKY8f=ShnOpzN%COr;x^ZV&h)2sQg+WN+VT3)y!iL+j5Vnc=&sy8qVZuAeY-{k= -zpR)K>?5)o;e;eL06aKB%webH7^ZzUA>c4@^u$O!a)K@d<&EG6rj9hxt;9YDw9i<$4Yr|(vzg&P+v0$23@4P4 -z{r*yhHD!$*MWv6~H7Ms=M(ITAWk3b?J1EhojMikM7*!1KMSUzO9ce#+eEz~Hxu7g9 -z&9+-W`H4|~u|FVM*qYU6jx8dB{pe-`-h( -z{N`sD4ZmFjlu$GTDQrRtnMiX}riL{0MwuY9{|XlEIbABKI7yG3^az)XaJ_DCacyJ# -z*yR>pP8RvHi(+rnO}(`Gy0Z3SL%Fyuns%{5%Sf_-6AiaXP90P26N<17@ZGwnE9e!V -zAE4_9x_P5lIPCxTEt=ymHF$ATGpGCM))ujv<$eovp3!%Le&f~_R}G{86ZENA)m?{$ -zrDk9|@VmgD-?Br3$QiuCR==r;(|y9+;c&mj+$ULBudso+j>6@|x`xwz#85fVfnW$5 -zaP2K#&u!9Seow&etxs5t9Jb%09bk#Vz2g&}^`=?gzC{w2nJc+$l7W#f_4-@))}<5I -z(hA87%U^45?J1s6N|q<`*HT?jnqKTs;0#e$=-~*R398TcY!@vnNW0^k*+t6$EgIpz -z@=d)3gtvblmX8X6eZo8sz4_Q%w8EF_d;~)N=o@*9_NwnwzV>A!y=2Touv_HZ4=sa? -zpj+*%^HCbcTYUN(SYIV^`2PQq-d}y){)2Mf7xo{N(>~d)ZLtcR3wG4 -zh|{yU$}Qpy8CfLXBF+Tm@faDD^!Pd6=VxDZXp*LPIv>)yrrzfDR7`=w%64+U~IV&GBhm>j2xP?qnNYj<%I<>)s7^s$kom -zYwc_6853yuphXh`DfmFH)nJo3qeA3BI$OCoGb=VKCK?o3IclI>e0*uS_{5xYar(4! -zaYjtJxGW3hHgG!KcN$n84`kmTA#ewYuKRZ+0i}{E0&Mh%cnB8mz7mGPPxW27_;4zx -zlcOFU9(r$VQQ)iMHW8hOb+_gKFY-*sYqfhP&WWd4vWtENF9G{29w{}2fl|{Vyu(3q -z7fyG+jf>4Lx`t3{NZ)-ztLri_?ST4(UtND=*ee|JUIe1PQR_V)qGGGJ%QA2 -zvN3CqmBuM*=YIn2Dx+0frzXi@;e9*&rZ&(hwg-L==C|2OHsCi~?G2b4vOc-1jQpmB -zlR!A7&i -zC>^ZqVI)|{%IOm}xH#QBV4v_F5VY0sMn2&K;3pBwiSkSV--dl<( -zci?x_y_v`=#tpEF@uNtd7`{QiT~;I81Wsm?a=T(v$adu>4%&bQaC%yEg44E3zB2nn -zJ!Wdm0{RllVjIGqLqwW3vI49_}GPIdHm(X1nh(5pO33tRF*dw -zJL$ADaqnMj5L-3i2`g%pH4*uDY(}}YWL$3kW*FXqd|JnMaJf9ruT9`8JuObsD8tzt -zL#;SCnNl$|Zm16}n30b?6py^!cIUeld+&a?;+UtyX>Ayr&u8z=t7&Mlo6g9<(3tb0 -zI2*Vd;xvhCB_p6o0gliXgS;QFhZcv#t1v=xp|jOB64n>SW^+S(?M -z=d*%1r&RJ^KwU=8P -zfu`Q_z)x~6@XTZKKww{Jpfpb%=rb%b@bE7$1p;k6{>K?|E387|+fIpvEU;y^PY8po -z2wb31aw%MmVhBz_M7aAIdcwYI!N#)#G2}Ti9-$<`edb -z(6*n3QX}u>Q+>iNaxazKE8yOW_&na!+^OPy!rSn*=1IPja(%*U54b18T}tjb%)c`S -zxxf5?dpO*S@4H(m_2(amPq{w>H}^pNCxUKs=kRFA0MOfg!sO%BKj>Tq!sdN}T{ClQ -zeXatsJKdBsVzTv&m{xg4?7!P5j(hIz*QgRc6E%gMe)yO>SD~H* -zOEn0Ab~esSySTw`t+W{B^sTAhz0jykvsewcd2_2P*Na_^G)t{4=sU+N+<=>hJlWhj -zYN{8vd#7OzxXnqfzuoi0H}zt_8m$JoQfO)cUf~R#JsI~FBui-}3P|gFSyYB)2=kBV -zow#LuC+;l3jEY@EwZX#?)hpBmSe_TnP<2xCJ*I@%RGGMYi@mFwz)H~w5Ea5CAEs9@vATLfA28HH1CZ*fZ| -z=wH!P*TF3hq*c(KXUWip~P?jSn4^9mcUKCI|`^e8V4A2;@&suj|=@vWk^$4>AoW|N9-Csv(DG>UJfUey+ -zH~-G3vD9vd=Snpty<_89y03ut@>!Zqf?asz4<>ni`D3LWSnsYE%7 -z)sP3RavS!Hf5F)iIy1!UDK*H4p|8VF$N~3NbM}acwd#aO;CIeW1D5xr9ipBV#nt$N -zr)R|%JT(h@5-9`m6}Y9b;Ev1~6Y%~0%cuvUM-!cT7rwtAtzpjnFf;v!y24n|BG(|y -zRDWMcjU}zK3r(;t+Vqh}&NbkneMGupkn1coB3Or -ze;V^&F_rQre_dC2ZW_7c;FkKNl%BRLKDU(o)m?6i{{rmeaMLKiSopcYrI=eMBX4e6 -zU5q$H?o&Eo=AFTMqa8a7!hlFN6Ni+){nf$V*IqiD$QsL8=TLm-iAKlrg|F)_q`dc9`4kx -zw52c78>Qi)=^(ZCt!H`IDW;QTGJEud5QE$y@29XwO^8C9PsG{o*(VeRnmMl_B_3K) -zgwz;`@%11cRZx!(HH^IzGURYW&k0`P -z-{20ZMsMVfYYk*!{13Ws2Hk%Rx-~)f1-Q+vVa%1^S||4krx+!?iz4NJ1o^KKsLzu0 -zt6B-+Tc&_3`A -z!@X*_kvH64AqzDkY1TgGQK0OF?G>}B?5TJYsh3T}d-q}WHZhl0Jm~*k9p32G_C}05 -z=FXMT9`K*%8Ukq=dZW(8aMyS_B^QCwcG)&)T=Jt{Y~Tj`)6U@?H0Z-RaBGy00;x$~ -z;I~sHjkuo_qg9wC{sgr+l|h4Z{M3f1HGb<+v9fJtWxMKGUw=obvs{WWx1Pqxzu3D_ -za|v$9%yTbAP>LSm+0!M^lg~jL?PiH;mR*+hGvYj!x$_&8Zj#sB`E9h$nuZ#+c#Et# -zXNVqC;SnZM>xAE&3fMdWjl+!q<{*vQehyO3Ii1s$vJT_w)##X&9$^3rbuD@ha9@V6 -zN52oOXZWQ47H}fNr}TzZ9-%wKr}cV=tY0!xxxrG=FzQW~ih|*LikmynuvA2b -z&$3in8Sc=}StXV2&Z!*9274~88qkYeFAd=`vcFE8SlAvrTa|I8>2loVUbwS+mPh!^ -zWA4n1raN0b!g=7VXcfa}JW7vRT%2EcXMaoxzEkXM9nOY&gwvjr(e!;Yqsi6iS&@H` -zxwGKL8VBFu&?)?dZcunPb~j#r|AH#m7mTvJfD>0bcH%0Yz&?b0kc7!4j>5#-Ag?(g>LopPih!bZkg-SzaG^ -znb>{<{dHxe;{fgfoIMlT^CB#V4)H+K-Y}rk-V-+80zwJ2>Z71t5)f2=x*?G6LZq`l -zvBbBRnU2Z1X?VKf9ahJ&_n^8g;Zq_luZcGw+kbo;ZaMJJ3_ILAfT=BegzN6Uz`rtl#l0B#-wglVy%X5U -z@I`kfa4W-~xU+!U89wc<0q$h@WA{E_k>MlmLBMW?54ugjUWV)38Nhyqce&$%Vc-;H -z*ygSPmNC4Uy_X^+9j$_9^;@n`^xt%bZvqpaN3xuMx<0~f+d9i0eHN4c{2e^t^Fe$O -zcwZ2I0$c%1Bgko&jEyea^yJ4Y}M0Pw$4SPvW($Um%59-3gKn?!gj|T%tp(+(5RqrQk-J= -z$@O*M2x+F7=c2Ju@_E`NLp?+q!jSTGmV$|miqn7>>xuWJ*}ecS&Nv9Em%uf~wFC7< -zb2DaQ7ja!W*!3pYFqawhoeXCp&HyQerCuT3W$p4w?((6PK`*3W#au4M>H)tD?2S`x -zXxUrWu+%i{ZQ>bLu=4L<*iXDATM4A1_63pZL-J`6>HYh#P}qj_2SmYs7L(K^}c?exQ(@_6{w+oVl~5yT?>JCFucIk7kC%Lb6s13cQgEy -zYdi4!3_syo1zgAQRMgr&aUa74uJ?fVGd$L{7x*B<54&~(f5`A~*Dm0X7|wRp03Ts^ -zfXivvCpIXpXs`3}&aa58@C9|O#$E=GJD=6L8FgMF(pP$))xbiA=QBJHq23R+zNc9X -zsr5}4>Fe!fVWx>%U>n1eSnWx43&Pv -zW%LpjThHiHD@+7k77X8Ayx%&b7(J4O4`ts?3NIJ8if0E?oJ8=UjyWFKXrLBNy~`uC -z6Be5W%k|XWJ;JX6st0Nn9@uEO-(Eeikf5^+V)a!r&BH7z+-vh5*jc~VmOR222-hc= -z`lo?=ZOJ1vu`tw@Ji>_pwea^CK8o-;2+tWkxVMsOQlftV`Y7}wZW{UQW-jVuR^+~& -zcmc>{s2_N6mZhur;O$-y(3g>X*4_76>JeULxk^4OyL_yOvxL$M_A8ID5PliK63t_& -zNhNw3^oR7+dOX5(;9bGDoCZ9Eg_l+!6Txf4`VZEQDE*wBdXJEc5Igl+7IOr{)G9o% -zqeygG4S9q?4Aa=^5&AJqJ=-G~8D?*u=V52bcLqlatR>)QMJUQ6DzFo6`(6#HyJB&u -zFP_yst*J&$rCf_;n9m=O=1Ar4C&?VpyLX^>`~RS@xP>>lofjK6#Y(t9bvn;UYPm^sOq8LQb$|*D_vO>a7^B{M0_I -zEQJ-pIMiPuVenIHm3-zSzAadSIezM8qgj|){t#g5>mKYO%e&}P{P$b*M8r);?)3G> -zP~Kgo8pTSV!(tEf-*4-gh%rj43w*6~ii6fTiiI<>Qb}*si+u9#`Sf7rl6=64ca=pG -z%u{OVa=5rT)I+GuULU=^6hP -z`afv#!TP!6qxzA?jK5M$ls%P&`qX!STxdd!d*i|hAC*>$ag>GWgYZ%-JamTSwc%K8 -zQ9gBu)hpQNb^&XsmcW^Lgm>Wz>vC28&Tqr-{MN!XU+-kSX$>&u0ES;;bcq+yVtv1e -z&c2Rga&7L2cVvt*Wi)$Pi)OoH1npYG|`TE@HOr(uN^zloRB4IOU6uGoS!8| -z7v)b}guhyA-b7kM167(QqJ4|8yB{vl8kC+;SGE{Er50})?$NlxOR%>lw@1ig^(W!} -zjCYrCs*l>bgmu0^EWQ?MmfTGZov|LFhwtMCon8m=Le~G9`XpC-ahV)(9m42FJM%UK)bLj^p9d}2*hCghbzPKGNgkZ -z!2!I4wNM&=ufer6I5wk3#(9M1(|M40E$@&+Wnaz>#`6|<=|!NG;4drKinzsQ^T){;ro8C -z!<~wvQENG|RX -zo`=5y{&(R&8#oR4&<2k%(|dOVg-v@P>{R&ogMY?G5BBMcH&SU5WkicbyUO!suo%V% -zV&ou(k#a|hS>8h%DMiBr{%PKHl(ev2oQ5~XTj&rz9scL21|Ic*6Q|Kb>OnDH>VMRO -z@cj|4Pq1!7fOoK2N9tMrQ(7idUJu)tN5zxf7edou8ooc>SuzlIoFw}TqM0))E#>0P -zA$#=4#BWmE;OWz_>OLkqfZqY$4txvvZQxMg?}0Y}Zw3AlxC~eZ{4?+?z;fU_z%K*u -z0R9zt32`BS6nU7%tT<3;~V@mH`j)9upO*Y2ZzWhjt5nPm^WOd+)z>$b5v` -zhWNz2zYkmuOx!!Y+YaC;;Dx}ufJ1@leRc!OfvGOu2ljzar~0Y`7Jyd)?*ncDrn=Y< -zd>8mV;Df+F0Ph9<5cpeQs*8_+uL17@J_3B%b4+Z2R&PzP++RS3LaTBvMS(Ow7P%Cf -zz1>0+q%C!D%Mj-T@LpgA@KNCRfJ1-}1MdV@1AhQq1FQkw18f6tL2JZYXd|Q1rU>5z -zrd630@?fb|T|TL8+=$WIExhD0W3JnXcDuR3Em)C4BJ0hx<~-+~$~YC`HBY*E-Ho=H -zZNzg-Wv#Z}jTA8x?Pjin$RjVfTB?H&%~6uiPIn#~yD61-St>bg)DL12-Xpxld}-G5 -z2o=n?UmMM7c`VgZx7k35d{;5w1e}@3)6@FNBb2Z_%?vMeXTd6$)_kKa^eD-9BQ5h% -zG$^sG?OD8=TabDFtdd{hNBs-3tyVifP-dS8-?mnIbGOju#{4u#W+oTakX!JaWbMkt -z52wAHycDH}AEL0#(I2dE3;#mCkLvFL{S5R6efkEsa2x0e{X(E`fTrsY0$l@|r@sSq -z1!$^1eWP3W2hc42LZHuqp3)x#`V?q}{tnPNpqcvg*WJP?pt<^mKy(KFas5G{dY~uu -zcYr{vgl> -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 -z(0y4m^Wrj8xXEFP>3p2LAd?5jRF$36i`$zP7} -zhe=wZz*#J^WMEzTW!ndW%9vlJGmfp=Dqb9%`%eCeZpJ*+PGS3$Ww{5&pq0N7Ff)qP -zD7ni67T7&6g&nE7A#>|h1+bM=)eUpD3cW{dR90Epti2>aGd97s+l?%+Z5w1yaonfvw -z;F=8A$ISH>a>zjre`2mmxQ4^E-+fHnl0y0_DxP?5m++n>`3OoB{e#P48<(VBTnhR$ -z;?@DnfENOj1S|x29xzG0)WA;zlcY}rJRO*%XOY0ufL8-+fhPfv0`3890Ve5L9IzRf -zq>2f^4*?GXP68ebOp?0ZzypCvs;C1_1AZ0Q0Bit$1-Kh<67VrGIVDH$5_-6;Osbd) -zx)yXB!lVIffJXzT11o?B0QU#>!!jdD8wUc5z^T9{;8x&1z*)e*0$;%^ -zUqN0DmjWw?G>ak=XJU{hZb87;zv(|Fj_gh+`g5T9edz>N_355Mw7;vOK5hH7A0<32Z!YY*G1#blIVcJkJ)n|^di`}39T^5Kp}~cLEFzKOa!M% -zbkf&?3=}#A(&#!d*DZ8ID08c%73LNqT*{OOeU-oSh1P*H3>IEAy6bJTTPWw{Xe+O| -z%2cv1Pqgr%t+YZ$NnOG#F483?1@fB$Y8LPU;EBKiLq1$f -zPz$ixjJ!!tj%HX`iDDW;9A{!{R|Rf&p^<}IlH0mi<`pLR=|t!*EA@RH>-#97k*`!# -zVN4#uXInGect;-hkuSjRm}wbd>hE)4O-tl*Ti5blVKCN(yxu2F!I(9A!cg#I%f&Cn -z3)r_eceX=+*P2&cPi1)mXDFs8H;RwL=W?96HGC@V)zm=VI#KLxFijv%F|el#I|3#aLWY)kJ+K(F8Qvd~ -zHW%hZlx`Zejm7Z$E4Y8DoqUCM!inbAuX1VCi79k^{@?D%_w4%?6AuZ?R3d{$ghx)+|obug(a7hfU!HUhKAK|o!T -z+v!|-LwO@2k*6 -z{ZfPt>2SQnS1Go_<^);>PJ?LC_Glf_x^Fhg9O(;W1R{cMoa(9uqX}6%ySNbA7d`8-CJc%;b(7S(fy -zqN~DStSyc$@_*(Rd@B@Dn2UlvV{w9vZcdqulR3C9yEf2>S6N!@QjKBBa$VyD(CXe!N -z_TL{jUBc^>8#Gp_ueo5?p85yrvXbi+xU%%G8ve++gpvM*swh@(#SfJA1yEwt%7Bk_JjITvA#Jib9&uaGj+fir}_#(FO2QKqlanAfPaH7FupC -zIHt038A^k7RAsG-n{Lh}6qJidrp~!CXL`$f(zMP0`7EwhdL6PQN -z3zT-4*7Q*>au;b07q_*+2Sn3+!f@U4`%&_Cqul&oIk78p*D|&H;X1n2AY2IFg2e~n -zD>nw5TkDI+|Ll1do;lyv5>|c2OLn1b$26g)s1+wbK3XH%$QH3CzQqV>$xb!>|Bsv%dP`Jz~MnoxskIyu%(` -zrq0*rbp(=+2)3bz&3B`3ywtnwIkkG60V%sc6Rv5{*#=?!hg1!)WmHMWVC@|BbDCmAcy^?UI5Z3!e&n`Bh=vp1cS=;aDb($s%BLNF7FpgX$zM9Lc4>Qp{x)%9$MO5jx7J -zy#^Z$FM1VBuF!mr9#bZ4N0j#Cd~T}m<;4+sJjs2`rFez^P4N>DpTlK0{x^OIl`a$YkyJPFPP1sj*Rf4G>* -zD{-R?;zp?sy$OAh-?Ab#jn?^S%=R>!%Fj@pNOB$#SXYAQ4M+n1nV&$U^H=Vqm&{Oc -zL_YF1em6~oRuPRX!#D}hlA`{&f!AX4udz!tuzaSxC*2Oq|Jaok+hNIuu;s)!MUbAU -zsnS;Iup{s2(!%2Tc>j+Y$R3dPsO}h~)1%U^36N1X1@~Y@2zku^dPKNGTlIQGb%zdr -z)puxcx3sU3s;>P@b0piH{9(5|r%N2~9gUrq*cs5_TqMl29CvSFw+M=63M_LI6)_II -zO6^L(J|hfX$%^kr%Z3Y`m)5Iom9Qo#R!ztINUmFVOsI~^S@0eNf6d1n@X)*wa>;$+ -z^$`wwM6!Mzm5U%>*aRE4q695_QHqLX -zX$ewPHUD|MriqyjeA5QY@u_p3|7MGz300tl80F0jH>Y!>$O4s^tN42u7m%*oHP{Th -z2I|li+=(OH;~C@{*tjfEeOOg>WlZ*T3n3GEm#h=Vi<84XVN7daneE4*gwLcOa9Z5e -zjj(VqA}VjiI*iDzU1PbG0j!R0#U2*J7`0F9?;f579pu$7UHixCyIqDFBW7^Js+q1g -zqHW#{GeNRL}t`5DVD -z^hU9u$Xv$M#?fYDewDNH@;tpT=5>->&ljy2?FYU!qkSRq$gXHxXP5j*k7}P-v)r}9 -z^Q!FNgVf^PVeHm&=-uQ*EkP1X1Mo3t2z;WqwxlVkiq>dhpD}_8oY{HYLig& -z(c>)H-icI)!!FHVag;zux73fZ8Vh*{m -zj`np4V~maBNYzLKR$>;g`8?nc!Kn&5+NLa~8xZa_kSw^^{%sr8KXoy~DJtFp56#Z6 -z{YAh6qID*44Rb;33b=-C#!j7fPsWpjhjl%T_t))GX}Eh8y{-&&0J8|i;iPfhat6}? -zi#+N#fp#f3TxH*QpZ`X$Rv%U2oEEG^p+>;Jghvf{)kw4N)X?hM3C;YcGT+5nrw`6& -zHj^0IxH#2SLLt~se9PH!#R43Da2;wAud=<~T%4frcN(wl9#|TouUqq@@;5PPvL*my -zucEkw7Evq?4<8qm{~pu0=bWTAEis}N6Z&QotmMlOEjozXbT_1kg5U{SMzC~?@>Tf? -z@^=KEM1GueI&jnqKxb3?hsM8{k1xIk&Id5WGxUBVURHtr5r%^U>DE;Dztb{OthQQ3 -z8~n;2h28Hxs@)M;=yr^14G4Q|Zee7$d$83wQ{?d-(c6J1g(`KYcPaeASLx#AzVcD2 -ze@4Bdz6%glLf_awKrQr}MY0}4J;DfGFl|;ps~FYf(+%o{UU7WAvoiqCe!--8Jb5k> -z$0yE$gp22Zv%Q(Dr(%4d5e5t81Bk~OlWlL|J|n=kLrfCv-4akS*C{DY@oYUY(LLMq -zD|iR!k`H!21?^V6YjzVC6Yucg>TQpt;HLgT$*INH$e%U2N6QiW-VrT`PEKz@k*L-1Cmk=V`fGN^nu1V6~ -zsfk_s&_?H9T8A2RT?V`%&Xhr~dVtPN%Qi1Iq@`F*7+_O|4$M{w?S}=5YvO -zm8w!aR`m^ZTaS`-lT=$YD6gD)Fsb`J(r&W@EBl&She|Ix4B4tHhKcH8Rj{emAZ&36 -zV@g|=Ngp+a&F@{)Y6nBx%e!=Cxi+{P)(J36CgON|$~83mFWBq1o`CK9qeF1+E{ln^ -zwsKW%9@6Z1|5B_DVuv^)^2Ba^!z=9dyCx#u$gL3~eojOl)op6n#U>WopyP!VWcv+K -z&~uKnC+&l)hExr$s%P#(HM}7|5)xeRvpI$Dv)P5a*oTEeUP<7&U{dRou+aBOY{=1} -zu;n-S2;^Jv%GQxev|Db()Zqn1elG%z$>dMr -zyQIm7_yr{y$9<=rsw>|PT5hIXCipVa9J}Q>c*J>|GPe8boYIx;gMMjtG4-fp&UR23 -zplw0x4zQW4#ACO_>D*h6WWeuQLXQeK8p)-gMOpjq)GS9Hr#X&fE7~ZKfW}IQCaL;A(e|ya{h|*$sdG`7o -zEt(SeQz=Uirt^|v#8J6aKuYeE>m>v5$NVt*-l-AN?$8LO -z_YY4_kvzkG#9qI9R -zjeLBg6qG6X$#^Li%UsBF<|1}#j7G{4o-WGrl~{e`;Su7P%$6@!i~hthQlOqaI^L{S -zpRb2svw`aAn7u=6^?1_JOap&nShr}ckF3TC*9~9Abj#U}Z<92wu!b-jllz16&A#)6 -z6Ayt;lHyMJ7?$_r|91l~5FQk#a7j0epsrvm;(oF%`IvO=8Qnc>;(ZqPF^tx6+}&g7 -z4@n*586DwQQ$e4MWAeY?RgJ#sby6IYulD8xI#}K%zm40;!KEjop>{{O4m*)J7fk+p -z->W=0-sx^`j~^{O^GBhvn%|w(?j7)=q4?m;0kwKpd}RKfD$8?Xo>?ONzFD-yUFgp> -z6i+&Hxlg#-ZQ13=yy7u^mT81EG7-BV-IjR7Se3LpWmobZ;Q#3D;54c2oZkezKLn}C -zRmYjW+=$e*{Pl@mEgfx>%9#8Mw31!{``}08t?q*#ach3?-en7B+bJ>Ytox5 -zy$3RRD32e^!)B_%smP`@RY=O3cYMHSEAe0R`=Ij9h?(Fi^a9D`i#*)d-XyM30SGS=Ox6-FqircDBa+ts -z%Ee&k4QFpA(JQ^OAE{Ap@xpGM0!z9~K8c&{laMXVM+=Yl+=>>GWDJvk*ON-Prtu@p -zqX~DinW)jbns(ryQG&yev!pjfCfC6VI6NF!pB*~0PRvWbxV-K+t!g7YI|+_!Mgjg6 -z^0XHNt)ig#1|pkA^xuT@UY#=>9vj5aP+N*53AlMJCJrf+U#4$_b@{~4F$7haltMk< -z!{zfSg`i4UxH6sYEA`#K$kPY;GbL%*EwJ6I!5iqP{MwV`N9q^(UbeA-y!bY;y9$=U -z+x&e668_iW!FA6jX5Z!PDI`|{z^`( -zh9HtUpb#)C@rsu+yo6tm!8#J=Vb$>%BkbWq+X1%Pne68=N%5FDSZjagG0E|mb%^;R -zV(6PGJdVk4050tSKIOGgj^n&cYP`%7hsipwM+_Hy|a2#)-+lx}G;3 -zd7rtSmmqIEZ#w!#dDmUf+YhObI*8Xx(2988e(}6Zx>GPK^riktU35J!L3hRT_K)YC -z4VWai9N_^-Edc~u%5i8iAZ64kZ33XCOh-J8qz;sPgy9*eb{g{msMQgl1=9Z~E{`L8 -z3ra)(A2m}LHj4LNZ3%qdrr{RH^ub6^y`KIB(hWTQi+Fkn -z=_1mH^73CIojljWrr=HKtvu$dGRno|mabT4f65)+ZDm{ro+zmRℑP70v>Bye -ziKmx#oW{r;;H4={^)q?b_0s=FX_A45h2VH;6H0GI`T*XO9cby3lpfxJo>1GSBYiD; -zQpDTSh4K&g^{cHD(9d{nov4jwp%A0^6QmF4xx+}mho^_*=_aJ#c|9F2t>tMvUA`%O -zay-4XqY-_XfOHBe^;7vV*ULvxek7nlyzMWb?G~yntjMW@Ba7U(AYF^}(vBR|X5wFq -z@xIfksYlPDDTQ?zKwTnF4e(UF;-WN*^v&8?q_@H^0FB*Qo&&W1_0(phei2V?j;CI_ -zo_Y?c&GFQ8@zlQ}Rm0m|jdq`jP`j(+V}1~0{ua{Hc=|4+zfS3G5tQv)>&JM^xAB+_ -zE+)UkW4=O+@_NbSeGxO?i;lMY(Sn^39e?SxqrT^O-c`j)eY;V5b7Tre!qL`JRvPYF -z!=NP}hxivCLypyv_PtQRO4D()z^d(3yGXmPj#a#Uhmk%P>9_Fo -zLbPVq_1ew@nu^?|9Y=|SJ`R@8)0sRe;^4iXi!q5|4HqCkQDlzrJhXpQBn77jK??wl -zK-w5yvlDd!tbHgR%d9W?)giy;#cmDixXUGi?u;m-sPBkn%* -ztluOnMESDe;>9cAx&_IL*2aSB$i@QV5MK8OG5h>q(AGNa@h$j3z5dciWa6*-^Zdy<+dtk -z{^fY9`Pls2CKX)vq2BZ=C$%S=zJqT(Rv_hn=-Y?5wdrUoOo*x{7UQX6WVhGy!S -zV5L!~5m!d{8tWS^WrR_3sVv{gntV??72feZR+LBFR7RHLo^}rPDp{i{l_0u63cYZuf^(nfwWwFNLsrMiS5c4ro}y7dN61pUcd>u> -z+sgj3EC%fg3oO{Q^y`%~fFbMIe}_B5PvNGn$EvMo{{f@}Btp_74BIz!_YZTM4ZGMk -z{d(lfpsMQGN5e@vD=hz)*Yz==9|8Iohy26o?Kvz5Idm3jbx6C&p>u#DfX;I06F^;n -z$Yw)5yMQlGObyFtICKfnt$DloPI_rGz%G@v1DZy-w~AKcP1?Z=eesWRDSYee;FM^v -z9=71Md<*+aA<2q4AuIQ2Sy;AUrM%9j0$K}bAcx#sZZ8bZ8Kw2jVj_q7W>L+dzFF+) -zrJQ}U80JvlEPltKzFGW+Lw&RO4-WOs;w29C&0;f$`eyMX4)x9A`yA?<#XoYWZx;Um -z>9engV>j?wJb|=oz9x6z9i|%VI|l0t)LL5GzlZf!==WlFo)R(tJYHGbn12rS&GB;_ -z>YL-O9O|3nCpi?x+Mr$V7>D{+N(EZeMXkXqBCH*jfA&WKyn<}#nkUSV9SS+U93c{3)1dfQ;eDJCH}8N@9<5e*Vj^d*L>y#c{7H5r}C<)N})AaF76yu -zN3WZz5UfpL?fo4(CmV~sxCey6C!v)>?*L(0M)=V(RV9U65x%ro;^AvOjxbAA^YA|r -zZ!FXB@KwbBKJ|Ub{$r=(2ET1FNl1q=1{9Bzk#5XuNP=3%yLO-K^Y6h08v}g<<)*W3 -zu`G}58HCfl1Y=g%15a%2i||h0_ew9zW_&T0me3JfL-a)@@~8CNiaMjRr^{gZw0%{l -z1*J(kARXTkdnoQ_o!=&jV{wZNbjg7pojU=qWot2JPxt&;6HAJX-PZWKPT?`)Ha78- -zpX8y#GTCgPUMxhIY&OuysA|G8*=(SZkr1xnVMvN2yn@0Q84beAdgvXmPc}}5)&Zmr -z?jos!hlD)5Jl*Ke36eUvDWy;9K!#mAv33xDHCBaw-80e0B>-R8K=ur{44{}rxSVjX -z8ZES7Tz*u1hfX;CU_Wyu?53x@; -z6b5uFpbH%O4mSSoC_BV1ap)UBw*&f&LuCJN6`;>KbP3u4uj1=L4mBff4br~g&_{q) -z1Nw?X?*qDooL_V3kKKnD9AaS}-s;)PzCkD^d!g&|O7T|qZ=M5ul8)Xvme3U85Nm;W -z07>#S5VsHKRT$bCw9^l<|M0wfy2rT>vHz+$h0o73+Ev7JQqH<|+gj{1IS9I*d+$)u^{F^$-j3dRGEk52%ep%lKD1)bx5u>s*Fh2b}-}tp`N+e+6@t -zLelOK3#*kc?-9b^#%F@KgEXP -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 -z=7Ao0h3A-C>; -ztowB2Vaw^rgZ8;DDJt1+sUeNvTdHU+Q~PM<96xB;#G6`Hd%b1vbp3y|tQh(QE9~$j -zIh9%{Se5os+X{Kxly=d%qVy!^f7{Rp7fyabhGG5J3!_L}ij6C%%y@sq%q -z@op9wv&~&sDB$GN6cEeZE2lY6!s0`DGQN8zHhJgh|t^-f}hucW~vf_ -zS)faRxi+}@WKtd(*0!MB~wI29Q@ARRBq$)6=3(b}Y_F8#X9&tl2~o|hx3Yc@isQe9<(8+h -zD>tlGMGe@2IT)F_J*Of=vu=%~-A*t46jwA;7d#cQWLexb&W{=kXBN)PaleT=Pc{Cf -zRWL;4x4TPQerX`C=&H<}CAupjUeAwq?q6ZaJKCx;v7r(z2{KY>?76r7>dr>VBvVHIp>4TTZ -zg+BcyAy>Telc8gRpZm0}4rxkJPEg3TUHQr25!^o9tGB3ybMSw>AOF2?J|_-tH!;ICgyzc6`lLHFW5U -z4*uL1mC3^sQg_4VeLQual3EG7^4(HU9H-6K=2izzJ7XOsua$-bNgPWnie{`dq!Goy -zZElhK6@nBJs1^Yf@jJ0(+HLTCnGU*4mM`&hgZA-6X6h&})%uA->y3!OBfWAm=ojL^ -zkz`?~JdQLX$;t!jhlktLb(t|)#Ri{d&`xncQ-nMk4Fk21&cI8zKU`;qrpW+lQh5Tu -z!~d4^qmTJIt|E{9C{sahN>aO(!*l92$+Nc(|BO7|B@VV8cg9gF31797uJMz*1#qXUM -zT78J<*A5F%@n5qUJ^f4c1ge9_Jwar8L~i?_YZ?!xQ*B~X~dCGO>?L<_`u6PFfu$}d7!+lJLRNCF3N6}W`l_hTpY|7n&2tEOb`Vwv_%`Io)C -ze(OoLbGRKAke#7%s+SQy`W#kc!cHO3{%AXuIJYV-vjgw{ecYSRR&~k`LVlm958yI< -z@qS+OzgIch7N>Q+V*`V$rlWk^X&~`y0y}GPqMp5oMd;6 -z-|4G`RL{2oqV%XX5jXNX;`Ism?kA{?(x^VrwbW)yJsXa_zOzsmVGE6u2B`-bUjpP~ -zb9d2+ofv$1<#qw9EL0SO-LCNzDvY_IjeN93b1gyq4ir9(;cXbh-@&hvkRk@VDVaEig}WP*8U(~dyq)xnPD)}uaP29SeT#vVXx{1;2rJCj+^E`9>pgIS*g|)C-N$ -zBCXC9QmH7WXLSbNZm0yw8+6EH|45cfXm65!wW><0>X0*VYxpfZW!h0^zus??&S>xTAK -zbm09Tdl6iq9{Cis&~zeR^FU8@z)pe?5(Tl6-tGv#(!*cw%=A7skKgj6kTr_WH_8F8 -zfmRYB;Wr)FbPBM;D?OU5DI;#szJ&X-dTZ+_HlY(bG!*|h -zkKY*kl-)Oe)6~+Iq<^RqRIT1SUs;gH=Z$mD)=y8&+$PudGLNZ8=_G?ga;AQ%tE% -znFZjG+D`dz-Ke)hc{w9naBv|#_x`(RO2jE|Rc=v{ -zJvA-W2k8s<^42M_1ebLah3g0xpaq?%X#q*s28 -zzdZB14qlx*l&ddwPq!Yat%MtR9WQh@=``o7*>~ez*k4=l%drqzfN`1IiT8gx -zV+Wy!w4W5aG@WuV+JK#{>}aY<+0Df92)R1tz*`4LWDy^s81rkdWF=2mvDx#hu#1JP -z53qZt?mkh1lQHDbgA1z9YoOIY_^>{@KiCUf-NdCng}LaFTe>Z_S*6c^GhHCoZvTkDfe4FnlYikh4bY*F8l2SwKr37R2$&cS??a3mV|pJr3BBr`~OZ?hMVsGK>biPN0SG -zYt6kjQrjuz9;D#y0dgZ`m9_(N67&{KCl~gAoJZgVKBm-8XdPg5mniqzwcwjijDlL_ -z)GW16ebiy2md&O0h!V8w|AhLfMkm5eQT4HJ7Pya0JE{h?yBl^qyc;_M(`oc!Uzcb( -zx~Ig?-{PCkU!1<$K@IdKCxisdDPAxtdcfBsStodzgX{*ybU5UR3sWS*txXQV4BB>jYT#4)rLtPAFP~5+Y*$#m8BB -zDFxnfVH|;PAAXa@lO)f=^1e9MPDW0BTuQB!OQk_Zn>E!@kD$e#y#5892rcKkwye3c^MmfvWC_VebIWF4-w!wDH?A(Vqr)M1Vd`2=MG(jd*n -z(*^+|&T%qN>lgjwz#{c%^V)%f@UBN3kbZVer+2Mjd&nSEX^xFniB-~3H8iAEM~D~j -zO5}9JWEnQA&w6Alp=$kxS3EiYnOGw?hLDb1G&cr+~EEy?W8Ts1EPgE59|1 -z1^T?L%#z9iX^7c^)R$L6JJ(uk-pnkb64vG7#b6v{o-^M=N;MmlFXpL0?QB8F0V%D} -zX|hQv=9}njx8UBKug)=W4L@Uoq|phYRUO1VE+|=1hxI9zF<>C*0kUrW%5}-T9bDR` -z^19@n+WkxS73QhD!X7-Kj!WGLA=3K@%S~L?j&|QrXxEE^2B)z?PY&R+1KLVTGjUk~ -z;wpB)Rv;uBI4`jSwgSm!X+peAr|cpBesLZb(Vpe--lx!o+W_4gNr45Vq}Dqm5q~F3 -zD*T-Sn`h(;C#m%|RZ{CD2{y#hF8Ts#4*>t8M&d9Kw#EL3FM;#zFLKWT6i*c87#>&M -zI$~tm2q7yG9A57d7w`%3(nw>CN^EU4?gKBpfH>*f4f~u)HR=m0P;EO6HO^rdCD`j* -ziQAj<)mmUQ_4mHo!>Ep>-}`DikGr>3$a3P2aJOrp^NtHO&Pf+m`tHpe`k4ewNj1W6 -z4|+m1UWR@90Sceb!6n^&%_guHjopuMb -z)uYD+>QPtd7!&5`A%FiN?k*p~D+FnwAr4=pb|=(eRREWeoQNJ_GY|hhRfljIg|Sk! -z2pbWmenILOGxh-5r@$J}Hb2FEE({4}bxlSbzbuHPavqWL_Acf$vk&GsvorTMvyVzt -zfgZULHdC2AI3oD8QDOelp<>p6E~))n^ZYJ#hs9TM+Rk^zS!OS4Z`jGk6zyb%S>o`1 -z$WslgBi(|SbAs)^tJe35@3>DJh~>IkG?LD5Yf($;;0Q=C#B$AzHrGM6zfiQ;ar+|7 -zIU1Og-lYPK71JoDnc1^eH&mf^)MybcCe-d@`-kuJWjKw{Hy3S*6c$^^Yeb+M>krifNGa$k)}UEwV#%jv^o;N$ogwsM{jty1;AbBcp{zBdf=&Y`Mw4VZ&fx6mMk{ZYc2Ulj -zmysi%xP-vKw_g=f|Otb;a(wV!dR@qxz{a! -z9UT&%w_h+tBJOFND?RWej}w6Jbej1Nc_q9o@N+t>0mTK27x8^xysAU~aV#a%K$Klu -z|NIX5ZrlN4aU3xc@STueKX*G}K{}0A#^|2kb9*mlM(H`7EEyHuGD#81;Cay3pM{)^ -zVy_I=EzwR{&PRVE@*_BZU~M&(yscAhrg+_I)UBK-lW?MVJzuxaK0$vUIU#t`LqDkz -zJZYih`|0mfJY2R{@O&%(VN;@1>@=@f;RA~iKs`6B%tv0w7kKC<^&y|?y>^oojU -zf=6Xd54~Hf{GPyXTId;Gb|cEBhsM@8JfF!2PCGm!LW>Rvp8v`V8tLz+kdkDsXFao* -zOL?1MhwCifh<9)QnWxNe^9Xrncj6^|Q1Ya@9UdWb?=&I%HoqD^ghS@>=iVE5(mC#e -zW2#`2TJ@@n1CM$1`7fCln^)FJdC7rIIAW(o`YS7*t2|PiQsbKJ~GDp!a3Z1B+F8 -zV*=9HdoHfo_G@QZ;Bc!+Uod1hR41|4^PT`THz`n;564W^ffy+<87C~U?3bA16k}o}C!I$L~r!B|%9ovwI($9hdrkY)KD=`uR=2^m7lDEVj -zT5(z7>)1nqTHAV}(G@Pw-o^@kE~v}Y?!0wck1FrG72^X1oK$IRa!LJ;>A-=&BbFYEbePdAb$}X68vTfVZ+riYV}F9`sM4be&w?Y9!?JR -zT(H+2SwTIRAryr&uc*+2#E|pzUTzOxoj-WP;D#9Yd;^OS@H=iIdUM*&6Fc1*```5p -zf#sLe>_Phr3ygJQ_2giBs9YKt80=mYEDa67`+!@Z0abnkmM1B;6eAN>|Fldk}sMIHhfw4RfF9ld8$~OUC0~n_cMRd=E}h^Zp8{Ri(EXAmw0R -zxlYJZ6|Af<1YJ}24u)0wVW!NFVPkjYIQwD|byiozS4R<0L>1F-P*No249Jry#{; -z#N#zNsTWE^+g#5&63>-}%=p#dSD1(2^L_d3@w^E+$(-`nB_!%}2^##|oWmW@m6DUL -z+z*mXMq_ds{nHza$)>)%lL;?ViyW#M-~snZbjZ2~HK+HWuC6>JAPu;Jd5w@@=a~wk@qt)&8^M -z<%+CTTbRZ>$#cnVDwtG`^J@%!`$B;B2A9;qeiHSEOa69I9G{F4kT1@0E1W~gZK~IM -zjP3!M194ipqc+a~%K)^W_NnZ`3*`>AJF(&}*lSF3&#Jfu?bzA734dSc_2Tbyy;}U; -z-doy|uzW^~X}P{*Mj?WDxeYmAj}0gsZ5E5%C7rN(h;iFY^c-4|7=zWUM?xD#6>ddD -zoBh3g>L2v=u&dmww(Fsfs&?x^4MB%3)|cz=?FI6PasfU_^s>}-Pv`pP*3yUrM65w4U79| -zkvjA5?Y&_EFl2f6_Xi&q5^KE+@D*A$>v<{C1^O7C1o04rla5O1QR+*Sq7z6HFEyjL -zoR?D9#^j~(ay09YLEEgaoB`$j{DX3%Zz?zKrgDpZQ0^EnH?e*Q_Ek(y>jeeIduBt( -zf-h6gio4V{Ge)K_SFA^JQ~z^OBAw?`@1wqq?$UoR-!)Gn;XwG&+E*oJ}wqM1G{lLNbttwb3I#}>wN9aWC1k<$-!-I-4HJe7gcr;g}R#ZxUerQQ`$ -z^V9)7>Ue7EO{pdD%b-E4bUm856<}4*__}PYiUFBKTYM}RHdNrPvTtT|!8Jc#=<|*n -z-1r_W%JZGww -z^a!54PIW+Cm^1_wVYdo2JY>efMb`%Zad*qzJ1|cM_ZOgaH#@@tTE#ys^Vk2Q%;E2q -z5d?iMtriVvdwSK*xM=XC&I&NKH|0D%0X$`1+eZm-+n&cS*}>wem4#EP`KotU@s -zo{8oB9dHw9Xo1#9->=XZYx)j8)|1BZ4`$q?Z48h(X2{F`o}dJsK=UI+ClOT^Q9nFUQV&Lc>!0!Og -zhsjjVhZJ@tKziSE@X-JZYYt?6_q`9e6pG -zx$4AoHR~7FIX$%t%ufi}{TlTa+TkX*LMPDgjWWJ?nKYDn3T0{*q(8B=?%Czp)`1mT -z>%A4JPwcBGd*Wh6;FtTnY0qBrQcW&TsQzyYo;k77qx0B8dTC|39#m*oduE4V6^0vd -zQpxQzTPLFb$(c5cqgbt~ma5g&q4oovqskvFCvK};??UO179_#KwBFqc-pi?+9& -z@>rJ(wtu!~gnCcAJQejHEzo$DdY(RE3#m~Doj1wuq|lEquVyco@cYzNY76dn;GFndEuu9>bbi!a*IHpexo&R|>MO0cQzCt$xCv^uBP@dPE9FcM_wKyH+LtNn&$O-m -zVZq(sz9}RY{%llRpaL&JI2Sz6o-m&TwuE1gzqjYL3DyxFq1NC|4jwcM>oNb@jbp@s -zWvwP?cv~swmY2`?l`s=QRclsDQh=BfSq -zbs8J3DowBhwzF;Pq>xT(x(_wrzHeCf<+_CRDtsqRyPy%Rsi5!8Mrcz7-j8?R(Q{$(^04cMo*`O>T$pywsU=HUob(-GWgc;O-xM$6RkV -zt{=UAYl~WM4sA?P1#-0s=QWU#!`jMx6Emp_E(>i`8&`n~g?j~^$wK2PjGYN9OE>c( -z-D@2OovOfGvuV9LC>9uDGZ=Dj6@t%n+N`0wD7cj#?2z^EnX8!OJ-`YN!j`lie2NG( -z9ClQ>g{+qcE_y=9o9OQpzV!(s9~fP5L5®H^Xpp7_?V(c*<`dR@>mTIa9Fnw{Qw -zsP#_iGVGHB$J*wV4ERi}1*fdBB;;M=>hKnngf^|A+o$MvbqJCf9#&&=cCS!7y<|({ -zCh!}@2{9iuGRA)E`w;g`)0oD9a?2EK@8Vriu$uD9)g7trb`2Ys`;PL#sfXj=P=rp&*=isC9=;yH@J%uLG<+kf!}t(50ZWXw9i?(z=2 -zQ|CU_+Al>9I$i*uA{kcl7dRlfcjN$@1O1ebdR2#u@!iWY)nU5ro#{!h6*5T@_5ho1 -zR~@d+AS`z)QtpN}9#ILqoc$VYkdMWkv&YD#1dM3MSKmD&K=u*XOb|4)1Pkm=kNu@n -z?HBD$zPxPZG09KA;-oH_@vk<4aggCq2J6J -zNBa4to|-400x$IwPNO|%nOkS^R8Cv!IT@|D@Pp_)}&?t%0m -zFpR69oNj2!e`=$kGG$MM7mRmIbTWEl7IXg@(uPWuKrKQU$sC%goQmS+fJ;noEImY@$^hrwN>4h51OEcZN;OpUB4pV`~AOma9TP -z_hKf_>ZJ1&a_B3j5tUkjcAT}-Y7+8<&_&3bzk|1PzrDuU6guavj5L?Se|BuuV9{?J -zW5v72IaXm^jEcx%e)vVc49a)h&57OE~=r`UiYz5x+9oDCu31`o-2dxHcnd=;S -zse%t8viud}U(p5=^V9(&592)!?=q;zG;`=#c*4xOxWt22iFbS6Sn>40Gpu4UtavSc -z(WwvYWHok&uow4dGwi27Dr$l|***(wisb{c8gq;o!w2&*run+y7*Ob1ybG(rjRL0} -zA-fwr03WqDaGs>O_}F8NtxG(xL2jSx*$D}h+pSoIb~Xzb9q|m>CFZ_&sR-KTUQC@KxyM@y+pv*WI-;bMyytC*Tc;}8KkWoFmK}Ab;~RQwT7v}H1u-avOsbu}g^-yPrGuz}UWo<# -zH=$PW^7*d`>+M~vH(j32uYiRa -zIIU-3NQvw$m*CZ57u#V^#=6b-(<%?ZE7>L3$6MjqvBJ-mS+{4@v)z^*&dkgEbp0`o -z<@wj@&c|ypwHBugxI}UFk)4)wK!+P22|1)e8C6chm1?v~3iU`^@H@1@hTc%9;&dg; -zv3r@@F4$c6OZUIGtYX@G4?gu^YF(96d)62nVx8&oU2_e~yr>OUBA1tyAm`>~w*V^P -zteGA$ryDmb~0p-sKm}jJLClSvX=i*70 -z3>-uLW?x2V`bCnbPPSGumwhoPig(So@-FRf@Q~tzLFde#JC8GwC#G$9j$BX%7gY -zx4p4kNR@jDe>He3@wPJ0ksex?;t17yU7kT3guKOQX+Us>ysMp{A!D#sO8Xl0(z-9r -zl~LHz-GJRKl+7xV=7IbFq|3!~H9?l3Up~@9F4rmN8_~{A>Ee*gd9FnXQc!hvNalRk -zLy+}`7;3{AHnr>wo1VWon3{WzO-)U?FlVR;X^(SkdTKrPCc*_Lqit>ReAXWYmw5ae -z^1FmkLI&be{TtqQEH_gKCB(o6dzaW+jFjoAXE!uE?nTP<)B=oe$nxqSRY<23EvFo7 -zoh8?_n*LonS$*xSxP$$tyve6?WVOH>gzJ{vP3%8{=$|+EvJbPXn%=l@$QBl|i@-cO -zX|F?l?F;yz`;Q6opXCBP#}QsTKJZ)LwG2pt+R-OF_ySlnXAnBazQTKm0(}Ks*p6DZ -zunxSIgGwcN@=e4C?+Xi!be56?0M4u?wYz-k+8MeH2?z8qma&l)I5~ywZknf0z0+ER -zY1K@hdJE3=evL6-Y-E1J9?-beka;l%^=?y8%yESNIcwB`2RcKvoYUu@|W=Wo_*7N&-uZ8^L*Ajzc=5rug~{v%=es|=6lZd`JR(n -z7_5eD%m4d)YZl*_?;)6P=+xXa-%@L$Y70{V+uuCnn$&70E&kz*OZorTj3@H>{|d8B -zauGDgY%|R_+pNSW^BlsP(E&E`L=C9b+1Qbg@W2gQOzaQ%_Da~$06jmo0u(GLmN`+3 -zzGeBWmw-#EO=%lwui?f8YT_f)C7+m+7RIv$n@9E$4uap?n-Nsy3_+TN -zwGp-WoEgZYZ$8Jqu`d`bgbsOWoql6K$X}>$gSCz4{~zZ5Jua$h{~yQK-g6&N20`Vf -zZU#{Xd%{d5G$lQ2f<7s4Wo08{)y5b=_;f)>^Oix?U2L;K{)YY$#5m -zys*{vlEv)aY#U-nxn`nEd^lNol5iR>c_V%oTTlFXK*NWV*PqZJMb+|d>*SzQjl95w -zwJtj2pkMgaIv$v;cA_MDM;x-;Yl@mJQkSsUz8F|Uvtjo7%@#F!bwpsWuG(eb?ZKHJ -zPFCOvVS~X=!qOMoffbn+$XJmI@^H$|w;v}QP3cm0mOl>8YUj(3(>^y^@#59)&NRD> -zpBNUb+YF8PVe7swW-fjtpd9~I()Xq`J4zMq1htvY8p)vaK6*XHdfl9YHQ}eQ*2t7h -z)F-EBTM0V^HiR$Td}D4mV{X5PxebgRBlsSCiQ}Cyt9<-7`o6@OB3?|7cYN<|VEJS1 -zwHB<>0tfmi(MTyI`V7tk=Kf+yL#Qh;oMv7`aUdur^mUoJ#~aoAj78HzrvlVI{6*;< -zQ=R2z -zmUD~LX3C3N)LkkKb!?rwupW9?tO-8pgbZs`5K_McuUgr15_IoW%tfX}x*}~7_121S -z?dxqsSBc16ujAakeey=&yhfar+D*&keUnF?UhkcdHS08m8q?ecU|OA~b<^=)Hh7S^ -zI>!WVo}>W1Q+-|# -z$;<9JN#Tlv_8*-Op#>558n9B;Sp!P;FuLdET6#=`gKJwggVQ=}h4g$KT2m%X*wnb` -zHAo-6CIzmd^;+4v1^!Q!on=obJO8pq*;!pQ-C+X6esg^TXu<}r$9s-+jS8zl?S)@F -z52RYppMsi`1k*Vt90r2wsAw9le)row6l)$!w1)FGey;6nm+O@*yxoEuUm -z$o<=Vqkqr;rhkcNsKs=&c->0KQa{iN(TO6lUam -zxSDZ&C&POMG}w-q6!syR#M`=cHnYwR`J5>p-YY)$yyM*{DQ01R!Y(TBkeJaviuCt@ -zI&IS7HV)RXxx|gQS33y~LI8zYSew=+f%XO-M`Upd&Ob9?yCWkBV}H`*s_0TAVNDQD -zL{tDusx2e2Drl1`q;8?Ep+dT5;Ksvp$eHQDh$^J31{>r}w_{a?C6P0}ccLdc;8@q8 -zhj{DL>!x0>9kW;q2~L+OIB}RFY8Grr -zmu;S*9;%DzUf#4`*!s|z(yTbe36Xh9XcsrR58F6Mk8Aj4fZ=RVteN`|&g37OzLttM -z%UDbPO}r-UvSvyu@-4dtoTig)>+vq3JIH&D1>9%Cf>c~ItHBeg+LA760Ij0{e^EpO -z2V{@JZZIloK~z6SmUWtSYTgMct_koQ{ZVTmUry^hFmLMr}3YyXEiS^eh%`xeQG^H6BxAY*{>MT@$5E9f65r81mh>3mA#!NnYe-SRFI=jidC -zgrz&89O%#cC?RUh%(2`-P{DfO8yU0(c^@Qx5KGwUcXl`SuBAn*b`R7EnFoN*sC@XWJ;nWBpId_=nVg)@wLT9*ubo=SMw$A2x*|$0V$s -zlaWKrd=2NkjZ$Vt?xVR&{`TnKmVE!{_e+jQwv5E!_v57QmA1ADxOdx*+m7fUVoW3`Hk -z=4+}g1QoOz_CbXJs37Q>2wkP_$1AR0aX$+>&>Ob5Ed5)sZ=NJLSQj~+Xh2yB5wK}; -zdujyyu3f=;-eG%?>Y5*=b1b&bvd+#cgB|+e!4o4k!!rF)u^E#11R0T5)m3#jVKCTD -zuBO;W+ex+?`ueaH@`H3{a$yVYvIO(;+to%E`*3vqv>j3q#_L1WLa;H|89`?U$D;0X -zk2cXDL&(R_66_X$C;n;%Zo~|P6gDg~M3@Q*R!m$XU?nCX<`s*&Wrs!C+$?SM!wNw} -z7jh0YCGMkkxWs5D;m017>+tmm=Z3yhLys5OmY9LDy{-FMOW+ATPK7HlHj|PRt%nu+ -zEE^lC6!n=fKW@U=dVQj**#~tTa4k^RZ^5^S?)RZ-#C?auB8!zGJcVZdfK`tApaie! -znX4>r4ERQT;+=>+d7XS2(J4w_e?jnLwb4tE8kUoFTNEssqzASc2} -z_@%}_TJK-avzv#o!=xhgDK;S40cVU0G -zB^G0pgeRirp>@!M*{gPfKXC5W2Vpk7*0rp-MD(S-2!0OXgVkLnleO@h$Xxe`PfPbh -z_U#^6D}M*0v(s|=Y+ZOMp3w-cGK~7wn9EB#SWII6!8Sus99Bz%c9g3vZ0b`B80c_Ph(TyJrW>S?Cf1t9)UD?r6FsmZ -z(5(ra+8uZ;%FP8uHBRiXt=ctvVv)Ml$;?j?y#!vP+m3>Uwrjz}4u-T>7jP-OJu&}m -zecEKl*_92TQA0m#-%~O02bygoIbB7I2eDy_I>fj{O-oD}^exsy4l^Ab2G4{J-)XEG -zIAuDnyRcUiA4mhv|4es}mc>@N_|eB3(}3f#s^sEngpr%Ki=h~^ryT3(4AFH2JUxx` -zCCRb(Y#SFKV~YWVm$3l)_J^d0z+;|=Q`833sMAx5R!=Dn@G-rGPJ5&0Ik-6f9G#Em -zINoj31VxB?gnSTx9+oed%0(&R4uW%~Kxe6e4sKKk&QpAl;hX|cO?Ls#*<^DhQG*y4 -zq(p2kV1pZ;fu2W;1C%{pJG^Id6|kK$o>ggD^#L`|?WqB*-JFG&C9Y8`8$!VXF5<&msZYL?kmjDwxU<2pTw@4DQkA~r%IY`_! -ztp@%ImEtU`!8%MF2z!gc#o_t0C0)>fJ+rKcZK^B|w^ipSfY+y#Ij4i-!Ak*O9|R}R -z!C{>ZRw*{3{v(*j&t#M-bdRDnbI*oM-D^aEX4Zc#@_9d^VB+Z$3uttB072_x) -z+W&X9lIh`P)kXi3attp(y8k3Bo~vuZDkA->7@z_6Pcn7TphK9W!?)A!5#wA#?co@S -zdP{UOLPLXP$jP%3W6U_%70}A7Mz4JVxDRGREoW4=>QztU90Kbu@F;qvTMzqfaRumc -zt*QpT*^@U|zL%vnw@p5Ek~l5$Oig$M^m>PhZ{du1F9ACRJa!kSY4KK0L9>-h7=;}G -z(lcF0j9l^vXX2rukfx3^rA+)<69uhf%yr|pVWQjiM5)~Jlnz^xrdkWB!hcJd@@{}U -zHt0roD_gY+`dVSsBOA1U$DBdG9da*#uREw#q6Pm8AsY$GgKoE&;?nQAx*&1lSDLuf -zn$fD3Cj7h+AfNVY}+;Ei)E@t=+G775;F -zkGHoA(qJYH&WAt1PT|j>qB<~dxHAaZ@GxVsVmdf%^30=I=i_xvE0fO-?l68|>xm#W -z=;a^Y)T)pru!;9j4ITl>CjFZC;NuT_rtFYRwt?V|vY^1mZL%!1Qq=DZcm;fJ(3tM3 -z?eQABcjG&}V~K0LLsYolv6La)ja@~?6%5~oMHJ^v=i)=KCg_~gCnq?b0+daI{vd+} -z{+HK$6sGBuWeSsN&g2NkWZ=7(KpSE1xBT>_H)Q(KG;t2mrEH|R|2%e9ABAa`Yx`ug -zyV^!Q)H?5NAS??K!zpy4A_?vTt?5CEld<-b+Ec$~Si@=~ZXTDiDa_cdYcB`2d3iL^q6WB-)=rrI -ziLjV%o##YEHu!0TwfU${q?6s_O}@6(ey;+!VA4BRuUr|?t-FG}U01?BZB;AiWOX?J?Z;mN9IMRnz5oM)h$f_7rg -z)+<~e`Qux=!ZX-7aL!{R?E~dETiY#{sG)ko0B!PqsHIcPl3!6S3G3-Q$AmVXt?!M& -z`2(<(WTVT`$vqPktKlv_Aqu&D5O>HjNG_EI=sH_J -z#8)a768O+-q!O@33wWD*tqAJKAC42@c3RN+O3m}VWhXz;AslHJtPxxdCvfE)kHkiGa99wrUw@*IFoi0;*-jprkNGuw6bBKZ-V-P -z73}G~w1yE>63rXqn*q421x!{9$GUdaK;EX3fJ0jF#jr~3C2JE}*gg%c==HwX!^d%= -z!Lh52BTu-n9x<^skW27sJIw6$a_pEKzjgs^>)K=dnKokhT+U-_ZnU~FHJ&k($Sk4=t)KfdbgK)W1`;3 -zGCGM44fGsIT1Sh01U+lw++phXTE7g6aK3QKrt$R!^2*o$xF@ow7xZM+?|S0%0Yhh| -zNra0g&U6e4Ag(TWvx3^KP*+)a$5zWENLTH&OvEp1o1wy)t1Vrnh0d)L>uV-qE`>xD -zEVnCLpW$b(41frSV6HXrAn3-C)uRBE3j2RNGo$!*g4 -zqo24L=RH1ti+pYy1o^2R*i2_JyK!QsvusKM{T3D^l!0!MZv-R`P!0&B-7UcenFa&9 -z?Kt?P9n-XxL)3(ioMdwU+UN-Eao2?80u|=z -zbphNrU|-4T-_26AViI-Xw|yXN)1jnSt!D&xqZoL%9u&X+giwldZp$E^!z;+dEAMPvYI~&6PYChp0B!>sC -zG(1K>fa^hA4<+T`$vn^(-vR7#6AlwCAAAqh4Zg>9Z*BJx>0!u4+&oV_ySGXVs~#pQ -zE5oa8qM?RXjvZa;m^t$@F`qM3m5@!3f6}3a{ekxiAYos1+!Nh-1hkzaSWS*dNAeXl -zK{%<8hehsb`i+vaVxx4TmW>R@nxm{%)v%X(y>(sOn2l0*W>54`87KI4Et?bFRs*MYtV9_Qc=;-;!Jr_Fw6B$G$Qh8<$c?w=;sC>d>+9ZsbZPC#52|pF_i50veH^G9nbw?{)C|b> -z;S-725Blc#^hV#D_MOY!6Sv7yV}4Ev8ze>)518Ihq?4Wc6~ZvD0|%wEN5$24wV^A0^oZQPV{$)8f1cg9+732SW0 -zB+V+N7@NnepJeq+qU15UM{am@@jn({Ts*Q=f~`KKRS`?tw4j$Q#u@R&4o?G0 -zk_7|cCoe|1-Cwa0@ZXrcWBv~Np0&?4oCZC6!Ez(!!-AZMBGO%4xIP7XUM%{Iclz}> -zST*>mOL@C6<~t|W8m!y-X0PYcJLI2Z+XG7R%{&jZsZ9NI!86ZI -z+G3>XQ_{JDPXsMh7^RF4#OUYHK1g6|VPT$phS;WWW@3z6Y^;WId@0seke_*k>Hl -z@C|e96v67@y#lQ3r}V{Btrok5$p<>4!wTAJyT$nRf*P#V#1Jf -zu-m=`H7Oc~gAVY4rS+_uc0I`6{`l0h4Btt#StU|RL>^?GvJ>Z~X6 -zedf(iwU@3+T4OP_kj}-|e$nGO -z?CndXZ{2;q4t5YqrGCa*YcqUnP+MUgb>Q!=Ho|k~=}7r&M0VApC$1~L=L89*NQX?X -z+>agebN9WmcJ?8HlljY|-5fVRr%HO5fCi))}aRcqyp -zdUwEA9JK8AOW#FPp4r+niwUBRNQ9N2fdw#vtk0aaR7ilnd(LV|;(jFcE^b`mp_PaBm8H1_#Xg&_zvt&409@Dk;hJ`V -z1vv@Di_xn&4FsWQU}sG3Z}9*-hp~BFP~IWj=0YDjJQBvfN*bOV*|4uHMy`{3w(81W -zSYHsB&QS+`nH0Ru3hWWqTfXr$T_LChwvwg-mqlB#r%WkAVmTX-v-sJ)du%O|fknB) -z&o@(#?6t^a2>HqLF)TwWqm$f|&%ka$6~25-k{Dt1Srk-O{p9)HQ)k^~J>lhhH+-|D -z%az2ZD4fLkbR`vkQ%9ICwAq<^P01cm>^82{I$}CDX790K7P;^Fip81TR-{B|CN+|l -z&mP+rl%tcNE2%C|*_x)<`CJ|JXX+$VHjQbRd+V8WSO-XgHz0~dpECfHzfeNw5>894 -z&+IO1ud?Kx=aRA4JNIB*45;;#bS}6qkGu0Z%X^Jf>(|fiDcjxHI}-9;TvX#J2_lF| -zNAQapf;U@k$L{`JG)qW!^xkH6L@G_EkOPveKZ29i@665CGtQXMmplD^nR>>B)w>rK -zOy4LQ(81>Lj#JWI1&_OoIDWlhdsY4x6;`VG8_(6wJ-`mq(pFxcllDJX?`{1Yb$R#T -zj9iyhXT`e~((d9)+EcbrxiAo8g7>=Gu%|3c9e%3L3b-1+PZE_CmI2PsJ;@z=EyQ(C -za_7Oy0JN1rqc*!gkjM8g=jr~SjjXP?lBgDzIO04;NJ^V*JhyCVi$;ISB!2F3;|pp; -z)T{j5bJ_E(CCEWD>~HPzH#$pmaZyh##{7!sF)z)@`zZx2zTL9PwWmxV7@D)k)(iW} -zY~-G@bTP(l!oP^nQns=8*IA~DX`pWTkHiC2>3mYP*9tS{~oPMbFAP2{_lf -z6VKD^zJQsb#9inBquh+XcVU`XrEd)0jD!Fj+q(Z -z5W_js0b5?^T3wie^P3XwDxy}S?890SU#|9hPk9X -z&m5TcVj1^bo;f;gQ+>F7A$IAXp@nOLL`|TT^!E(VDq+#bJ%W2wCVl;O>v8DdDLX?8 -zkAU~A?2Iam%_P}!@^(zRpo3k4H4bB1V^yHF7;xZ?SXHaKCK<4*f(~_GZ)RqkeNSFf -z*kPnH*J7N?S>kt2XzYoQsKIw=!k0)r@N{0FsKwrp?Dl+>IX}!!S_}@a_(AIXilqx7 -zW%NvAuXiK)LYxA9jamlF2SlaWE`A2=>c4=Uhv%QN7s5`?5n;ddkzs*3rEI!6B5l9) -zZ^J&^g{0Ng&uK`NwNa-79v1b6*-_Gro%dPVJSdD%rkCM -zfkR#<2A*+vj<^%8XY)>C9H4F60>5tV7tX51BJ3Z@?!TPpZ~{#Mwv*!Se-=D5tQE=b -zr;wh$FJ{wJtT{0yV=*%!^I%K0W@a5KixXo?`IuyP?0INqLzkRNww+B0 -zpCetr7D*|jAvXHl$Skr!nd0V~!Px*FO(zD7$i!h{NRdiBtLYD^sjyRkWpy-cp>S~n -z9m=>6^e73olPBPs=;zZA69@M7>5*+%M2NOYj5-kC4seM~0mFHx{xxTH0Jp7h%~Ye7@l -z3oGVwtqgVx7XPN!&!tJAEv4`6tNZc?2K0V*S+Dm}4|zN{pzmh%9rPpXi+dwr4Jr^A -zbLQr~Qu;>L_JM7t^&W-pw6-I2-oehMMbO%G^RUdyX?>W*X=(NF%B~PYdX&aFxWjfw -zKX8_9nlNAxT1e)q45s|H<7bo1&fB==Fs3(`HN02lSO3Ov#)4(xKEWwbkZtlN}&FJvpX -zNI}2?E;(8+>i1x*xyS2S%=&s|m8wczrK!?Z>8kjxikDiz-UAgW<2avE;f)vJ(sLZY;$7V^nLHLuk~_}>YTDIi|N}Q;EsFB -zJ;YCY7v8ykaz1}CWI4&lvJpiW2hvI7ufs5JxYub1VOVXqog*7Xz1|VM-0P5=;9$?< -zI;~_KIM05kP66&Q4ATGoM6yKfE0sX&n!i-QjZ)IJo2BCM4sW!m_LANJmD3Xh%<`2^ -zb}u?d?QpL{kM){hZ?!hf>w!($j*FC^)&=#Bp`zwx?JKaVdY!xm#fa*c&~L0%ri0;j -zT9bObtFX(Hos&1Ozkf+OZ~!*a6xffqDdOy$ -ziyO^D9yXL!*rzVzT0eqzRWj&Q>XRC$t*n;L?Vuol_b32vAmg3?zEg4;W^?6X!FkVF -zB2V(p&E>l+;mw;7qcRoG)smjTEoCz8O80u@w_3-;O1DNSOe9O7K0O?g?QHug>77)S_zhW^rI%3ikYfM1^w#G(|ZD=ek-{qx&{{i!{nK6*`V4jKR0d -zhPhW^hpEjL>0?!@y=<)ldd74HARF%?8v=lBEN}$ie~I1H6M4@!SK0hcE5>}#3<}1T-5?_wutvlQk*0~w#&9> -zEnIE8*KSC`N?!&`i{~Kwd>FqdA>*CkgvzmF(ud?P-ujhb5 -z_uD>y4Sarz!`EZsMqB^y9=qipyMNbX(~TZqFX?;lqjHar8V9)eJB}t9peK3E6Ly8g -z1)h06{Z3$9$2{x3yOx!wQ`#}lS}z;<)i=ab|44+yLvmF^;$y=!L8oe$DT;YWpnU-g -zuI7g9yqdgiOnIs7mEVPvHl!ZrR4&indTL -zB2QuZlXnH(XmNyI>uj6l49b=fO4>x4t9ltyhd-L}3%`POe+r+Gqcp0?d=)9JeBXc?P?>s#T_S9Qy>X#9lou*I1O -z4OLx1xZh2U^>`HE?09o5Nb2ISbOf`xZ&Y4gHlUbKP&pI{1E8t4zN6~R{;rdf -zR?eq2`et?>PDw8LiOaa*f50T=dxl!B$!%Vvk;e+~0P;1VbD)z(rPP;8@OtS{q!*TNAAYV2ylkC{?G2R2BH4Smlg|a@j2Dq~G;)g&FKPxfs -zAD|fu*8ZO!oD$YRHXPfWapIE99_)eyP2)bbWSKh+`RAhV4%^GqTEmSOuIu4o=B{1;wAj0>)8^*C+q4*+=8#7}5Jl -z_LMX$j##y>TI&d_*8U%OVim;ycsKNp71^i`C!PPJA$Llc@-a_;`yB_k@xa2j>uR(K -zlVCxQcdNqE(u`@N((Yi{pb&^oj3U;7UDvo8OM6hk{GppIDP$WZe_q;uJP&th;8$u) -zix$>glvpD^^}cY8#g1|9YSZzRnpmeGMgTL}(5n)MV~!^_a5339llFT5)f)l&dTwSo -zp6+R&ClA8ntxEKz?(FSHR9lrEznn^g-+n5x;28=&99ENYapFDilU%Ko=Cfr4*^ZVq -z@%K6U$4__IJ6~O&elC7yf7ffBrG=1Q>diY8Mu*Oy= -zXoeMZXL9bxs7E_Oh5rB()`%|qR528*`IByK&6Am*NP)HqS+b;t!;JC#Z_mL@2W(qe -z#815;*JxBphyHSpPr8nai4&LM{BUP4`fIwW{p8buN=5m1dw#rV4Invr7X7g`6>>7i -zJX72&-7M|<%sN>LUWK!u-fl_=aB9U=V?5gV`l@M^2GE3aU@z&>V00MHL%1XAI4nYK -zXI6N76n}sZ15FL&*=)o$mid%Y*%LEA?YPqQv4GYla;P+dZrBp4Rh -zIB0?{uq^;bquQF}xk976e1x0G`A>i521sU<^h&2IX=nOm`-tQ5< -zHI08@4c%8tPiFqbj?>0mcr$$f-U=4YyquX3(`y*l4Mk~1piee)@v*=kp9FTVhZO)Gc6+gFH!1~Q2(y5* -zEMP9nDN26|Cn)6u23MGk`E)L!k)};_^uxjvM`3n~bT1g><{ozx^XuUK14^v2@?;tF7{MR{A -z9K5?19-k+QO>ImUhI_HMsZFhzKG`P1qeTo~#g8^Pl+ocxxf3Zmq-f8sgrwL}SZgy| -zN-f+u1#$($62BmRVdtWmF#vu<%F+K2JmbJuBmb-$@D3X1KsgtOQAotIBKe&|Ajgsf -zngjf>`peLpQW-1C{Nyi_Bz|`>_z&MD9uc -zValyzqs3dB{bLh=`|-aT8zsi(A%`})KT<~jKgUK{r7-r#nLm&T;u63H)~lFq@4lXZ -zJv_KMB##Ani3xCFM}aqkZtvf3NlB7NU`G!d9AWU81qF5SYuOX~k$_b^?eHq^_rC;9;M7xmT -z0M`Fxr5FS2U}O`i7BL05S`+ME&r9HhaI!BHujjsfuzr+4cuJtyznQEbd|96at8-V| -zXV_zkr{m;E)VvPQFc0ZE+&qDkXMoi?D%jAp;%o`-ujkDUHhco?HL`@LbN#^c<;E&U -zU2#5qJJCxCYZ0Y8ac9EbIZ;YnnkUlRm0neesj&9Uy>7(waT4u@QK~qxNA`!uRngd} -z#IKfy#!Lr4D8Qyz8i;bgc>mpb;lcXKuebO|@z$w~x;%UzV#AesL+q$b@9V -z>am=0S7+0o6uZBI+#jptDkiq}=bD$&S~LsZ9$54-kJO>wYXB~+J)mgr_1@dV`Sk>4 -zJgmc<&-8tG81RRgzzxQt-r+nf=saXFxX#w6B=XIb(maFSl`Y@RH$XBgaZ6*Rv;Y!S -z3k_58K3_K$%A@^h{Q_9YFSh{l3`-qn0iz04wlmz4<&ZTG*=L@ao%H4etJ~N9Y3+hl -zP4yHnvus;6$pL*22P`u<70^gto?I%K=fr?Qdz(-$uRg}5^NS353)Z^5iCu(Uw0Sz+ -zlzuPpuW=583wN1+w<{p!K{ejY9qP~hm7Cyp`G5qJO!h{)ew~Z+=Q`##!9w0vO91%I -zx7N}IsRe>nq8rk@rLk9vL)Iyl_LpaVXU_&r*lCnermd^9f3yiU)C#M?`{kaT)liC6 -zRO{$(ItGd@tp0P*_Krq9(VqhDVwUcMWh!bb{K@zRT5lDOt~DNzq|TBg^<^ctBt-{Ne-%3j)z*W1HuF*gJmGKL?cJ!gc+`=PUyq -z3as6~cwgx$flU0}G^(M3*guJ8a -zgcQ-}2}UYqi6MF0uru>*iY(dcm%Nj>Sk?Ate -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 -z3$e>{;&4rmA0^u8^B}q9AYe>f9B-$unLs -z6~*R{5|%&lSl?~-nu3D9`_(J+eYYq^?Wgnz{ln{kvRNf9*GO -z(bx$2D_1V}jbHpNFaN}CE3G%8a+PxC(Q@`138RGH=F3>NdTNd^x9_Xm{2;i)Nae}{ -ztY?os!5+(D58OZXzKj{;g@UZRV*wz!+18b8ZrVio3sG}&W+AsII~TV!vU>5Msgnd# -z(&*SC{gUNbj}{8JVfwkVCuZO-F184-ke`iPjAelw6z0o8c79=BT)xpWK`1cENd-y1 -zAlVnB_=2&%V4N?w9f4fr4qrUg7u@L!lKLw0*OWw6p<99=6y_%)(Ue;Bn;)tSX;ktL -z67>vevA!~TW?hk!Rq)s%Tm?c_PL2;O@P^q1V;AM+6!~Co@tQ(F#p*&fao$v+aCz3_ -zxk7G1!O8+TzB=!*+?8uq%lA3C*(-DU5_Obm`N~Jf3(Hp$45BZi1Z&=n+q|3`x4z-_ -zYpc%BUMpeHHtj`tqX^Ie$`;+{hm#`TEvZRbPSMS9Sl&)xLKT -z@cz_?)G@v`rusXaw<3SdYGDahjhk=p|D5>PzE8TSAoo%1KZ~*pvKjL>+#h@5^} -z_b69x`!ae<_UJQqQQP}f{G%0D11$&Em;F0w!N0x@9rw}m>kJoP|5Iz!?7w|+=M%PF -z4~G4+vGDHCdUR9vo*lLL#rEj{_ysqzkV0;$Q#c+nf&pa^9Q>U&R69GNpDZge5qy3Il?Y{AhS3woWpYZw5EMBG -z85_xlBc!`HInEepXmWm&KOBotugqr@{_?>oIaD#$OL4B32RT~F!cfAO&*jgT{=0mX -z4qTO^kXJARg<);&9tsZ~XN>Ae_18lkp!mGs#QV~N1g4SeV_W2QkgbB^tJggKgzvep -zKk#BHr}yHI>azl^qx2OUQ{?d6yBTr_ta1-MfA`G0XXNsRur>LgA{@eLcF+e)E={5^m8cZB~%mbVf1qTV+t -zM0qtrs*ghY3q(lp-xp7(=U`y+2n97ll`kKo(CmxLZ*WVT&TY4*qxi4lO^Di%pW5Hx -z4>$V5XZ&HAKP>l$&-=r__`?c+Sm_V9_`|LKaGO7@_J=$DVXZ%W8KE2Pn-MY_gDWVW -zsd4b^i_2k&?>R%hQAp=7P<_wkaDy*>Xq+z{ujNa}b2+`#mmZ&VGcG^h=zE@gum3sX -z^7E&C&&?BW#s{c<-)9WM&uLvjD32#XrH!$z2x+{l5q^iT3?co!jF9f+I41h9;=*s@ -zreDVcFb+FW9^?pSzZH -z>oZmq|N6`rt<#jB!YTNt5HUG4>CAHee*XOQ29(Y*n;c@D_UHG-QA&>Y@2dwHsJ(&y -z@@96I)>pqq&ZkFtN{{I4Pm?b`#2+_|^u>qurL&MgDz9dSkyI}B#`9#kp12$F8G2tk -z_i_{hu9Xyu%ApzxdG@1@%8$8`pV=s0$@#`52Sea1ZN163C%G-#nxA(BH&wi~}1KNa-;*`uBIa-;BMgr{^R5&-MKS -zbkxuO{`Qh@42yk5Jger -zB1&2|fNr^{c&jWcW*E>Rxr~4cR;MA&?CzzD;;HOTcd0DR3wY^Nb~#XX(#+#@H?8v< -z7;r{V=KVf<@4?Yi{m%dM`@HY(eLrtopIP6v*0Y|q*0b)Hy&-=ZN64gcgv{Kja=Oh5 -z-xW&v&Q?qmkCYF);=fn5SE@(9XEOCE$^Wpz7ozTx>?c$o{$V)3y#FrzK=nW=e||Hr -z&pz%VcfY^ioYcqnKMT*;FsXj{RI*7ejr2$+>3dUOd0fng<|^@#Nqk%XL%zoUkgrAI -zn>c*pa7quE6wkX#edU;rCwCpMlgfem74ko!_zUbKsokI#k%soPLn)TAIW@OFWbQ_*?B00{0;1oB$sDbN_LEvl3X4wh5Y9;UWrF9`F{!pk^6W> -z?rUgwk{tC^$>h<2kX_F{ROBX0cE(=3NbZ%4HxM7~Vv_lZB6o};_tieR<7K(wvRpO$ -zK+(e(MQ-CodPrt`lq^@~r#(cn`{lmUrw2J*Jmvx9-+~zrnRX@qNt|p?dn=VW^%C-eVPvD3gw{&8%g#DAH>e?qaBFqwZGC;KyeQib>jV8%)& -zjVojxR_tjC|2f6ZFcTqvp56O6nLSE*y*H~{b`M@Pp4@vCeHV>9E4znhMU(q^MPE%3 -zUfDgmegL_jV|)ym`@+si?hHtFm(xS;R6l3)7mr&UTN+7xG{lkre8vAl`?}bFf#UCP -zr;m{H{_wv3K2%PxMoury-$>r3Nt-5-`Fwx5T`<-u -zl`n>O$^V1b8!hB7%o?ibK_!{~^vpgW$Foq8i}t4>{%=vWDgHvmUBJA6+_5z-nVq=S -zM*byz;UX@QkN!Zie}MS{gTqpf2}bMlhY+i@yuqkCDUIXU1-lFccnic2Gd`O-=CiysG#Kkm%ey~S+YEhB2H#k$^2^+{)0hsy6@==->M^d_xa&a;PklJk^e{|5Od`?HGOpRN}a``4H!Q9KI<%Y3gZ?*8)oKnedwpSxe* -za=gub?t7(pE?4Fi2qxK8N`E~}u~Q4C_E>;2&|4<~z& -zV)w@ve2G2e5_{++_I{Vx`(I)YyToo#?Ed@=xWqsF5_`lY_RB7@4-Bx=8i<}Xm~XcR -zp+|)|WeV0sWKu=Nj^o${|jPeJp#7P$NEi(vQ9Z>c9C|47AOr`T7aqauFH -zVtHAOWcTZ*ZmENHEpxEV%N^_ym`iINEOv#1-34~s~jvB;YNY#LHB_#3T9U&W3g3? -zy#RAF=vRbohu?chM;qv@9pNB1@JWOHJmh`>npVMB3d~=@_XB7q>>T210;YVeC`+DH -zTy9CG@ZL5Rvwx;y>QvkC6r!dbAK0@T5eMWh)EC6Ri5}_?s}#8M(aZ -zk9k5d%4DDaO&;esj^k#_k$#Yh_YZR!yXWyE`14EHfy%<{?xmL)yHd?@Xg@SJ$+;ST -zDSR?xtv6?}t(jVm!vZ6B!*Is(bsU!}%ULi}&v7UP-LTux@8ft=DiOw7ZVKi&DkwaS -zmJp5`!Pufji`cr7P>zF$gR_2N$;=Z9@{F`M&KJ-vo`_>-$V;;oo^3D29p6a5@ -z6P8`h{2S@lSgLA-(u$grsznxSiI9tZ;#%yrXIYlvEXGoU!%ItrP=W3Eq7q?cNmb=V -zex=no5n603slrh%*z6@$<#dLLgB8YZ{9JBGdWMQ0@D!KTR8=Zh0ag@OClrsvUi1o_ -ztl&p7acG58n`!~4uGRAKu@G>y$MO(STC$LuoSMv1QzoTlOiG=oh^twG{^XtCiTB#0 -zD!dW77GoavP=JR~Uw|2Y8SqeGYIQZhLx8D^SPLAZ;4Q#|fhk9gz$&J95YL;yI9-=; -zGcdXa34aJY0+`}z1x^4a`Nx1qGbZu;2s~Wj837!t;C}&M4oq?N0P7WZ)mJL)!pm|( -zfN4l0`HA2W6rSEMRV-QIi2%=J#XTAr)kflv2c8N{=}84f^L9`PnSiquJO_9hR6y?g -zARjwnQrNM;@d~~kJSEU4>7fL;SizsoUCTP)rf0i3JKS#p(z8%j3tXz;8Ee);CaxWT -zuO9BmuO#QgIct$eY}vv6)snUB6fo7Fkhj*dK^)<2Yz_FMQ5N{m9s&;HOw@_9$AI_2 -zB%N#pUIs++(~#!Hz~ufC+^sA}ifadO5wITGYX&w#AjSLS4QpA5g0Gyv7P+Du5{#We -z+Qu-0iSqlyg0<`yn1t^{e$ib@&livrg|PU~egqx}K=Eo8u4R#m``meJFJ1wUJPev9oDQ7GCL#pJao`NhMu>kN@KyLn>A4Ab3jPr; -z1-=^p2-g79+?K-D0~;Wf@PohtN|o^Az{!}=kjz(s)A5hOz5_e~{|Fxdo`~8?Jf8wz -ziFipT$AJCueh2K27hVAmNg$#SM1H&9^t&UidUYrttnJSQY5J)`bYbK}VW{P5m=AW^ -zlf(gHm1RYhbOtJ)hR(*_65LD?a;HwB!%>S}U^qk;*oyKJfn_A8j!Q`?_5+*1s>%gs -zwO9paDYq9dQ;fozT0g3iP<8RLK0tm|mg3UNLi>uUYC553_EdW%0#qy|qj*sjjYqz0EPtL&94N~$2h%F0VCka5{=si;|ODXm~d){2^{((*$2 -zQi5V5*TS;O>gvL(N(h2qRgL6URbpAX49N^|T45=zDYRD=Gplv6y|mI=Q&pxw++--J -zxPY0pw0gOvij2bQN{sU*NL@8<-oP=H6_+fxTWV}d(iMMXsd!nrohkvY@GK#d(y3Gm -zW-lwNDyc>;0dR|{rcjwW_^rhyWtO@=&&oxME^=TOCLXB)n9?Uj3RAv}P*PfDXSjTU -zB1M|ZaL8|8Qp3tEn5I-Ls)Sa{E1}k+6%5X}D^OT&sl}ZE#m4OAg+KYVgA+Ampm6fn%C;+>IU5LkS<|K# -zX64RGVKWM{^MU5WS)89z=obM?YM{lB=Vi~G6(D*3+!=)_eUejH=B&&aNW=WOxicA9 -zr%jthve}%>!g-l9XVWJ6d`P||<`jm;i(X*HO>3z$kos#gu)p_^9F?Dx6dSmgvEu{j -z;vzU^clZK-6OU7W=#avG1WYn$jr|2M^)=-CBQTjXB6)z-3fBLV<`Qz)XkZ#!C`OJVPl60X&y1j-zwYUo1OOAD)=$HMd1bIU%!W5WcyeP!%xwP^ELbP^tHj>K9 -zEmkEE@+iq&goaj9w5$p}3SBp>D(#D_rgka%y2?dL|L0e^;wW_+7u>2ZB&Mtc*QS(M -zYHAUW)FBsAfI>yHjGd6{qQ5--rYz735mizEHn&g9?BOMAr8-OXb1g8{4;r`czGW?D -zd2;>r%OSI{daX1Mqq*2^h%XT))#Y`-BT>UhPT+&Q*4E)h8&X*eP1KYk7uD7x>f%Tb -zMaYxgUJV(%(tl&+fXXISL0cvCNBx&nH5mH^ao{oOF%vltjCf6faS`rY`{15X2^Ks7 -z4pq3}xx9oG)mXu2a>}}*^cDc~$Sck50-vlI1zD`HkXg&h%PK9!(g?S#+HYkGu4imP -zCMXM(3`zl|g0Q4rFb{-P?SlCM0@c8zD~gBOFqZI=zF|lv`BM&8ek0|Ry#Y*o^pGDt -z13`Xl3c%z>a!EdpGy3q<09+G*9}K`0rUr4YSRn<6?SKBLFzGf77%@e^=t2EsPwJWD -zTNNt<`JaD$b+-f;!Oa}tekHIAG!=9QDd0bRW(3Ii4}<(iY?5vQWYa=*EUu-}nib2{ -zYFfu)Q~y<*&Wa$1Wx -zSEEd_%gS@h?UhxyaGWwOZNfOzt$-&Bvw&i2W%=0Taj1ZoK36|3w`W?r759yY{@NpR -z)8q{^99x~$HonSkwUn{oxwvOnjU9xNVu8AsYTV$Kx*2J%5{#>aW2GmU*{!7|lA|a# -zMBiA5X(%o_(v-9c(>RP$6{U!PvFE>+`zz{qr@yimztqM<+1qfJ+xx}kiXBk-!SZEQn`I@s*3^L27nu5av2TT6R~Ej@=uiXAcDhv4?|#+2)`S_C!!9dnTwKYebB1 -z1(}nLp=CM4!@vGTg*#@6Qu+J@oUY&w;BLf6<#rx;0w<3tA-`fxso)sk?>MHW{EP+u -z9(x8fW=#S9k&}0*W&r;LImB}<@JYB+U%CkRX9X_@K81KG?A^ep6}$=f7bWcTz!{uA -zSr18H0Ow2VcqViJ&rI9JAO -z9B`h3uL7Q~@J|O`!8st)#AX3|fhk`Lfi=90t-v+hT8fvI0xwf=CGc_u*8*RUyi?e< -zz+)hv^!zaJo16(@jqFL_wZi -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 -z`xwVs)h%~mhg-_w^ODTxAjvbYJr`fAZaY#9 -z9nvpy##G3R7H6;haCa&S_j;oEC{>g?N)x4x(#7jib<=glI=u0Kw;nhUb{|2#AWEt9 -zKqK&$mz`>uv^1urqYgxo(XlS;`L2X%UMpd_wI%GmtP)n&uY@f+Qq1msrkMRufm?Bt -zigDow^qG|{d&0_`w^-RP|5bEJ>f*7_jd%XAlTyqVtBTddnqqCS?x>ogJu0?ZnjDZI@wXe^mn)10) -zQ|Ja#tE2^`^-V2clcqAZY#L)TU~U7Q1!d$ib`{)~f~rBY;5J_4L&<+nlC(4Fsy&-Q -zzx)J^0egrfk3&nQw3nTi_tXa{8KJ`6#;chbX1L-ez-&Yb%z%mOnbITR*T2{P|4x%v -z;rsCagQWfU;cqVv4Zi(WPS-CYirw*-+i$H~v8>u&z6AfHacgWAv$4OjR@?+sbK@19 -z!ENOZb9#Ojd`@An{V-?e_wu1C8~Di2&YM(?Dudc6g;aCIvxaMh1U0^>REB?BVXncy -z!(1F6$J=??o%~3$EM3oE$;%wXMKQ>+gsN^(O~7AWewrO&Q@L&2k6a92rr@=_S@p3h -zL;W;-e#Bnq$0~#74b6P*5w;CBGi)u|O**^YD20sSiD$HG8zjW=Yxz$6GpopDG^A9h -zE7S&!>`s0pS(cuG*^$gaToi*G%Y5w_?K|B6zyC4zZm)_t(5}#2rH6WeM6^2-On+ZP -zZe{1ti@_lhm>z1gYtW7xU`l6-Fp2L7dd4!C{)gN&AcX$ke;mn-{RTP6tv;DKKaX+Q8Ud2IhDV=HFmy(R1krFvoP5IWTi@%P2R5IdITK2TTqS9b`E`3Ahvb02V>Wo^zyz_mFhOh{Oc2ALA#i}$H83AR8XrX( -zLF_S@U&1^B6U3qh;G4Yz7`p)`h%H2#LF`7DARNdr2MC8T%mG5BkOy@=u2C5{18+b# -zVbB<~2Ax4SNGIsV>P&xFsQ=UOe<=LlJpVW?f$Uz?MlbSw5_vufvkm5cnD4@TGlbPw -zfx7XnH+L|;lMiz;%nd<|yDx~tYt8)4o8bBUgyXFAgJD-S|C(qX2P -z8P4h-Kzbe+!0LZMI({$!!+d~DBS>KNJtcM>OzOibVbY{=3rv(I+XpigCavB4 -z&%iNRSZ}~l4PqKxlfouAlMK35BJtDxz~La$S`NqzqJAxqI1X=&@mRU2IbN+&Yk8Fx -zzZ$JxrPgbZ2ucq<6b<#4lpe|x-7zBhlrDN`&O^N9Mtl@6rrA>5#82@Pj~NsNqBPK* -zg!}a*+0oZe!y-K-i+m_Pii5)X<0RRa=1GvddTCaOur#OT5S~N7%^@2cCg3<3VjL#m -z9MZ)>E(f_B=4BkNF>ojw4(a63qi~3eL(S$ePH?z$!XaJ`;{$gcXaNY(U-aPCGhO|| -zjf^s-P860~t7*4cE;GstG#~= -z^}q7;+_4sYufarZKk#`Zgi4C^sb)_CQ%6YnbzsULokQ;crZT2yKd>A^w)=mHhy22> -zTgyIz`TUz}*=I2CnZH(I!BJ76wY<2R5s=ST2uYu@E0hn!$S%LV03e;pNzBsW7Tw{+ -zrCxkb7Ozv#3nh3@!bWd897P=TkiG*SjDhlh8vJxRby%3gf!#cZ%As~R92$_;p_5*~ -z!1;h=;+>W1nnidg2P1zqjzViHrT24iC@!10ACChIdSL@c)^hu=#%C>ImrvQM0v&Op -zCLO)OlTOxTIm5xp>c;ZvQRpmJ5t*I@nz_|lLLOs$US@jAWJyEIRqP>iz6Fg2P+?+2rFw3n -z`aKF5kBRDiIxw{b!kNJEmw0l4!6os`0j7S4_^t=0wncIl0n@lmWCfXRrvoxn8blG29_YU6w)X|6~3 -z24K3cOV|dCtzrqU1g1Nq`Ig+yop4H*$XoI9|c;0uKi!{eBEQ -zOu=6R3kv=PI6=YZfJZ1ew7(kfB*{bRU#DQ@@v!t`ZLcFs^ -zr&%~DL`cCP)d{I=)4r!ZRL;*;N9jEuCf&_R0T0qI?PvEz27orrR#@z%fo_CdC>Tcu -z$Eu6%=n`?Pr#xOIF26m{EZOT|KOb_i^PtSDu_T6lDa?f34vFn7-2Knb)79)f(CeU= -z!9!2(M-KK3a0$%2K>p|FT$F2`Z2JMYZ9eX~&BMLSe9TiZF%Buj{p`8;wnG7y?U*b_ -z!0+)nxC=ZqCIoMKU-aBRK-Seoj*8_tjs$*fsAo-&*0blHlpXKdTrYu7;2!u;T|S9Q -z!=dKLt0ppWAMq}A5X~w3qgC{m{_$u}p=djLxN!dw4hClkIO&@vfj9^^oCiuWHSoQF -zFYr(s{q3-kteLf-g$+QB_&>#gaRuT)If3qh_)&bX|HN;^8_07pw)|!uahn|NdI0|E -zFUot+Mecz-f%t;1F6RGjcez|Ily+jgY1r1V9U;bZ$=-D*8^6EcqabuRwP!r?U{%UD|YZ2DbBjlJ+p0pgRm6WS_mq4e<$xSpddENn}e@ -zclJi&Mr0&-sQ>)E^i;7Qd{y9~zVs!~=iFxqznS|`>yYwQ#Im%*v6>%_(x&1|?40If_Ppi@yH@i93(~mRK77RGcC~@KN*#;)v#H$ss;S(1)pgv>swLc5 -zRXsY+P23m!HtrSvLv9WK16PFoAQLa(p9!c4E^FZP3OK&tH-Wnzp_U-@b&xU@(o!Kc -z7Saufh2!?A-H7!E#C`;+_!z0#hg7|d)V+dKK8@6FMyl5%_4gnb^~lXij_Th#AbmePL?3ksXbCNEot|4B*9CNIRVW%5D`zOnivY3<)zwrLo{8U*`8 -zUYxyse`(7WV*dK$CRAHP7h`L`fq=f2ZyIL%=Z+BPWy#(JeB<}6|H6*dv78YtC?4l` -z`05e9PB4OXlYtIj?sr}Lz$#VPkT -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 -z3C>A@+ZCQ`;3iQ7b3JZGWkIK&f+4odT+-U( -zK2u(1{)@KHqfL2R3^!zR8vpmW5eJ^U*NSdYj -zJmtLxj3UjRJ>C=E+qOPsi?bc|vgAXjIW7+Ej-e-E@tW&8qq -zAL1jPL#K6|K9x8(Nu2k*aeuSSO}v-+^zEEJbUe3Z)3n!*k;@RD3S*Y5z~^~ruY?|w -z>H_MSUr$sYsLew|*=q5SyWorer7@QKBF)B}Nj6p2eycj|b7&#imSl?? -zr8)j>>0B-U1?$>h#5v(xq)rXDJvyzu^&&s3^lWZTJX4*Hp?{qhqqK3WEbEYFBpTqb` -z`Fk2ICq3toi8JqO7r2OS&gC#3^ay9Ku&Lw2oZGwa>Ug_*jfj)voP5F3i|h -zE}ND;Apg0p?vf!GIeJ$;myG*^=!>t;3S%bF5iQDChgZl!9|O07J^&pA9R^+Fz_>g_ -z!`_1bHW21{vC+0HmjV5Hv@NcaRYlX>8EYm-HO7pz2(vC<7Z+{L_Nrs9x7}b?=L@je -zr$_$EoaaEp(Kguk%xRbAk%!z#T>@&;j~yDZ*^}Tkof(bXlFN`Yca~JDn+~}Ly-hPmwK!Brec?Ts67Mpo-h;W< -zb8A43tGlk6sTC8k&awMaL|&Yf)9h|SIuE(Wp>`Y1Nth*Oxg01_GI^9RMntbOwy1RE -zXwC7@fwEjCo?J{F$FHTa;DGz6C&>n%lr1WJN@Pk`8;cEr)-fwC@_AByvdwfRoR>x+ -z$cR}EnZhjXad&u-d4CD&TR1>0pIsQaG2t|$yS~YR71&o^jd<7_!yohv>t^u>y)miG -z*$?{~8GG&kk2Zd_pxSuQ)4v-&{0@wGtK*v8Pq|q_O#D{NMqfD?2vf(;6Xnu9b;ep6UCu_Uzv8Yw)0RPFXuY;U -zoH~Jjqup_b=whO(ZFDWwnYWEYOAu~?9PU$u8(hwkRL7F+9Og}~dTvTbTe1{h8tb#~ -z+crcz?#)^EWWHWJ;AQIuh=VW=)%bAj)0JFb&>3Ps=y~R>8tn$_n0giqm#Sv>c=vPW -zgQyKOg2wpP=MS|V^cstXHchBy6O7H=2z7g+-X!v|nOGmBx>-CvTfLFrn1RthPmI{2 -zaXsyGnn_|eTHLcP!R*B9a+_;$sUz=JnL48&Ib(-0X -zxt;S{o34vhtJ(}rx-R_+&Z+BCuV9ZI_U`7mb%(tz9FN}*IMq5@VW@!*a+-B|LAwsi -z^>ubp?OJfwTtxA|>p1K+h8Gv?YznD;x#>&qw&YFIi*n;o(nh|;o!voZA?zwwk8fNP -zTwcNB^ChYgrcvYd# -zdhbtp*83ngS(-jz>>(8&=C{a1*^PZ#>`~!E8;;6~+oMZUn!`dHH??ou(?bQ4qs0 -zvhC;%eo-IKdAX~s*hv^t8NHbJ$kzqm7kjOxLl(zEKe0In+;JWOzwdMj`RcCKRdZsZ -z&8pO|P+BhGdb7IguBDsJ2fPNy4Hg*bQo3 -zb2lr!0-t+H!FS?Swiw35x{@h-!3&=a%6uzhvuR;<4d`G|9IH?7vNhXPj?J05#>F|66WwOy6J -z)n+XkUi7|ue|O@>Tw0Quclyf%t1Iknd7(pk -z_ip%54O4>-c%EsdzA3z5lQ_9ngLFrV(MRSZy$}1e;J@WygB9nf5Pe9|P$qcxc-m&-&i!v!>5Xv#Hl~a*c -zj(W$`f~mO~wtb#|^m2(STa#=jyfN!l8)-()hHE#T@EYpl;bwSBxA6$vPI&cA`i)-! -zW#k2IJO=Yi^g6*C)APe^QMS+xA?wHICJza+sT%sNw}_v3^)1}SJ)RrS#fqbC8MbEk -z>#nhR+?GRLCM4#L%2RKOF-Mw1&FFVhQ=+dlf9PeVG3F2O`w^(w9plk#26y(ltmBY0 -zs!i3P-8`DO46(MDJghxh2AFjX`pt3Xpaz68kX$NPgf>K*!*WBns2W1d{kDYVn#B-v -z%8)&tLFY!>l83~KVbZ#x*}ZsM?@zryNw$YbUk_uBxeio~GNiSH0HXE7@poU{Wq?V0 -zLoqNzK}Hbm8?2x;ZNXsM`fY03TRBpbZ$!y-_56U6=Qh7Q{K3thk8{Yb}ZpijKxTlTvj>Ii8F-FzIF -z-=Ocx%E`;qbY)FrU0J5!uB^PEuB=>rS7WWND{H#8D@)XLH7?`2vNA)vvSzTZM*EJQ -z4)6A!j;_$I#@n{_bhv`M8dnB&HP-368dqq$8kcijjZ2$)I@(Woz0P-gI=cBDX5xjh^0)ojtv0-|p!>qhBAiVRUX%UQ!O*_=z`k+b3Sb -z)=$uewU6l@-Rs`%8IfZ;(~rZ9BemBPbv~mh4)#%seZYBP=de5>f5=SC`kZuLpmDw2 -zJ+;G_R&d5wwJs|XE177_Xu~;UPOqo?+`wFxXl!P&Gn+D-!t)ccx3tiy8T4i)2tGC>^vF_2FaCZuG@wydO(v2wT^1OfTA} -zQ>|$8o=aZ8Eo7sr%Z$B5nxKdhr)`yE9#3iBxuc+b+yU%f4Z8AumRVyWQz7 -zgR6g-$z`d(Z`P!KQ%t6g$=MTvS*N$QAxpoZ;FQs*ZZnr%TzPo0tae_(sd-5( -ziMg_2^Nxm#>R4#OsfI}rr-OOj#)LLg$KtdnvLf3;U*smncTI -zVV8T0hsNRf`p_*0y$jNYeq-wRdfpRR`c_j%2uyV=)^n;SvP`b<`orGV*(su?{cY7$ -zZ@gX8{x>oijrDi=)Ti%K9q=B;pV$a-a@h4F>AT#Yc$f?C<6<7*b#N1>PiqfI2OD`I -zC6mO-B71C?`x=kXv{M|3{VRO>$5}6$Fdqs`Ig7iH_FX71miTkq&UP-We`~)jEXm}0 -z&k-h>`yBln-as#Ba_x3(7LWZD+90PdGPZvMHxlWL4U`)8GWO;qjUW}!NVvz`#9bcT -z)_)82l-jn?%?Qo!_dYyezc(_Ko5&JRv`rLgEjCUZgqlaQwu|M-(z0-pu*-e=jJ}CW -z|K%q(c3CU!VjP+FLtDByMPws~Ia_`wFN)L+oH17`T+x9#y}tfTesb&~Gqx3W=lTiNK@t-FxdnXOxBd`!x1W$kLr-1oRo -zoS|9B)K;p8A#K;~)b<3s4tSpE(TN#5O=2uK_Mb^djm8UNP6u)|9Ia!oJF$z~qK|vV -zY`s^&DXmJCdrF0qTD8i0=k@SC+r{EZ-giqw+c2luinWj9d5gMTU{_$5U>;iBA|K~G -zZL?aEC{Jlg^S;6AY}1IL*iSj` -zO?C_t!`~d-M5ouPwjoY3quUZu3YwREp09k{c8+V(Y`Hai)3mV9-_-SM>$fFQn9_ -zJPkgTxL{{U9?s?98_LUmS41@sl@Y@yD64)jYvzwp|sw*PYdAdULTY!S?>(SnS+S -zLL9T9<9UE-L9flK8FPQbtBr(Fv -zB@GeT=1r^JBk(TM@>^3B5XWn -zY>`fG5|0?BZsKkC8Ig_|F*_r?{FN-JqcwcfZqK>ishcwzLTsNKGd8mL2XID4GuF#C -zMxfRV*f4M-@7lIEYBLu%$E#k#;-l6N+7P*M(B|BxjvEVO3>&yfpS^K@bl8!uo1Tp6 -z=WM?*Zz$Of>s3b_as5QY2Id^}cwr3kmvC#;n_cER?(A5z#;`?5N^I2}xhyH9b#PLa -zt9DJX)37;iRC;Uj=Z;ZXF8i9rPIuG|weFk3`Ol3yoc!*N86OoV9?PBB=<^IkUEJ$_ -z)!iKvZae~)H;g_{q>p!9v$r#0Wd0zIi#4OjyH3Pl+BHCH~SPH=kxrnmv`y* -zx^L=?dMJtS;MZ_Z&-KQ;<}6UNr$C#pSF<@cV;y70H*8=&bd#FB3TlS?HE{b7)DF^E -z)a*pPnyn~QGY|aJK##-iILHb)LyFWa2{aS55EPH_r7$T><_&800`N63$?m5;aO14_ -zz7FV$Vl_Koa>4JZ#RvzvDWF);;8Hca9Fz^Z4n#5%5O-RD%oM~KU#4bD;Qs?;yFn?i -zZ?3x_*B`e9;SPZBSJ36Rs98DaWzf%{kxQ`N1l56vKWO2_;UkduWdZT}W&WzfGaddf -zAl?<_YW7Kmn!QsAUE9^{7|6O*&6+^XRce-7qh?*8rcEPDff(yIv?WR$eb4}S%aO#?%!tQ&{%68pFcINuE -zxwv*>qXD}!12OX4ex7&j-Thr{T-{(b>Zr8{ei7ME*9IvywjBPi?PkrNCTZ9iLBkS9 -zYFJ5}hK(Ps!Mz&|OGwnPr)#aX;rwUDEmE7De?G46JJ=^SZp!@(Ep5hm?bxi2`&U1W -z&v23J!;)*}c|Ba~SI4jXwvJlmLsF}pa6TBW%UA2#gY~-hAT?T=kcO5|t#~b3@rd)( -z_EK-65O+x-h9G@6?|!DX2yMH;H~_8ry4`o=YvZtb>xj0K1~!Yso!O!x_SU>1jeFg> -z?S$*{E(gwTx1vuN@*=fO>P%OTStPN5xG)8An -zY`h*h+H;PybAA=|9M?lX`mw>_i&}ZCE=W6A{h=`!e6zv#;yKdH&&0R#`jz2)sLXfk -zv6UD2ri1Sh#QBe16C0;Vsd^B$zweT@GqEv4O4Vw(y|;@?XYs$jF$ld>v*bUqaZ+y9 -zDHZyt8u)MD^{`j9HNLLkRB&G2Db+33+U@O{5TM|k=I7e^kY{QOPQ6U_(S_aj^^lgK -zachWP>Nq6_tN##lA$+^J$d -zkOB4f5cnd&lK_g2$66M4ss&9_>P#-euS+SPXOl*|qIN|7fd(~-22Wq4!O4;a??*cJxX*a}8oU>2+~fXNpZ)H>Zw$fi+*2BB5eV1zd#KxY&Yt!6j02t4T0`taDcw^% -z@pVN?%cl~L$o{t0-|~Oyrn1$H|6tmWh&%D!iH%88+j4gEXpzF56B`qApGFUGq?>m| -zz01&(B;;CQZe#=T6q_uj|3@s@Omf)&B`- -z57B53aj-8$y~n9MdjM|vsQ)hy?T^{VfqHrN!I~e(T*E)+_|3}-)$BXC9{{}^;D4$6 -z#Ksq;v|Nw0G$3Wq=N7H>dFFP9j=jIRz!jvI#vo}u=#HA$_(X0re6!)JJ4&k+J$Uqb -zI_F~O?{z_&atC^Y1nMbLx=E9dkUiPw8GTU*oe~0}f~a@BKR2Auor-y$5r3>H$mfaZ -z=Ev`B9~|at3q=VP)ca%7>Q~L!F?HKib^Gw3OMH -z`7F=<>NcO}?`K~WpT^D!(xQdO&B -zaw#k41B}X;UBBAii>41~K4?`;Ds3>}Te#3&azA00+}H9rX#DV&Gr@gO>Ni^rgX@jbN1FRhZ{U5N!Hh$<--P9?c%<|GrV{|D#x&V|+4=%rX8%-pm -zN%GO?L8A~~Eu|LiUveNTq%0ieu(m2(u52ew?A*>w^YNcNJh%>r4nDxrOh<&h>s~R&}&DG#}74yL~1H$MB2QgQC -zh`Hb&=qDGTTYd`Mw}3YRE(ZKM`pXpbopF$LR!vZIJ44mn1jL^J{&mbd7x1hd9{Gpp -z;+NwUVt=ffeF{ -z5rdxhr7!lSU+GJ~SLVg5Rn+oG{&)k>w^hX9XOOZ`rco>%p)GQB@zVHfpvVWsm!S8` -zD>;BZ2ego-&IVLorA5tqb)9NyavNu!A(m_+dFz6fZ+L%`U>oyph5IgPz-~TjhInuj -zv@+;6UR{S5->hPCjwZTzuCLybk>^%cq6bipcvhnO5rQpm^);r6#WQ(iI_TD+B(qsb -zCIfl_&`btR1oUhbwFi>;tc*SsxJ6alWQ8*gQi#sHbLObFeEIJ9q#GA7VnF|su|p#@ -z&_9| -zL|ci1 -z-25rp-Z=b!gf=r4I2+p1B;fMUw!T4|j6u7q!T(?ITmXI#o@U@G@OaQpC*iq`OO$XcSt69zoxo>-oFPIlWT) -z*yj3DMuKy1zMKjP -zBMDr1*s~v@2M|i~Ttn!7gc3Z)HPOWh2+i`oVNKc^%7-sf8|lqf#Kd^tu(rM@hBrkQ -zPen|)H_h6#wcTkHh>1eXNEUDtJ&RQ!$7f7Qu&75D-vx@kL{UH#``4wdV`cYI -zC{Vvtqa9tKz&Z@_c&WY@MRf5f#QsXLPL}?qw3oWmJMjKs#C}JyEO+Dj`kvV6VuwkO -z*#GUx`M~HBj7zuhQ-E)!{x?uHJRXnYJ;yZ7imD9sbc*yPLdeZmYvhtPZogs1A>Bq&mz) -z$yat!9d1Bqc^B1T4nmGDs>AgNrFq}bs}4Ev<9Wn9>U~46I;7fNftYx2n%nA-=5HF0 -zx}>`)*2~A+>XF7L)IUr6pXzV{D25Tm@7CeNi0#vp`~ExXkXmU+XLk+XS%deZD&Uu9Fu>Rd_YLGr@N={-5h)yodI7CfI~oI0V{jebyvsy(e#Q26O1s#QBhTn$5eU&7BI!ufJX4#V>l%c>7+Uk0z^!<`d}q)Gq&qafI4sJ=$e8 -z+Tt{{$!uS{d=c;~h|?l&Eyfx*XjPaiiI-k}czgFVXc^_cH_XNxYG?g=rQ1H?*TDDj -zYf$)=%`Bg(x#_2(F^bX~v%b8kQU=L=Af0)0q5k%sFPBi3%ME->YLC8sknvy$c<^`+ -zZZE_21@6Hf+?x!i1a4*zZYRUFcJSieCs==Cygz`El6aq%wUzPy=MIw2y!CRxSF35O -zUuAKZI*e=TS$&=jrhY^9lA2BSi7x5y$hV)5=hTm=6`bs#xkj1SJrAyBl%=3-E&sg| -zJkL@U!%{G#@p^7|Iq)u&gS~6@3YNp`$l*fy_wtFYG*T4L%4w|2?VVq|&HF_pIqI;U -z(PIN8|Fi%~teV1~O6+}NJ_0r#^O -z!pgNf*sGm|48{Bpir{jtssVlCN6gp77{{MOKT5#UyPs@9-`R_27wAgxyobIs2K{P0 -z!kf{D9>N@-k2xU*GN%iDtGf<+zw`BYoCCr;_u!r19Ve?=YF3xD1JFN?7a~k{Ynsuw -zw37|(Pw{~mX}hGC85CXo8k09s|Lsb&smcx4(Ax7c+P%=OZBXlsXjdBnJ?o<`)a3$l -z_#l#Jm5`Y1?KB(gU)?1=iMPIa{7#9?E04X1l!@)SCTE($xEnL>D!_4oxlD!eNx;tm -zo(5P39D*{^ToKi-6ZBW^bVRAP_K@ -zsb+7O57-~D44B^VC}2gq3U5F>-tZ9Mwl1m`X%)WySQ)j&8IV1nLwhtqt`yORzks~?GQw?W*I9^Hq76R{n%59k -zpuK;A|5wnCOVDP&#N03i?U?3~K%{#E>AuHVy_08Ld=I>t*0vAU7b>Th$KV0u -zYHu#`#(kh1-9|GfS4c7mUuayj2VCUA#bIrRwb#~obLi(v0~fow%J=Y7(Zf$=4?k5s -z{8abwQ`5sw;$b&GiG#QJNgNCX2TiweFdJ4H;^5gq`~vOEXaZzqbDOFI5;9 -zgR-Rc_AgDvmn!h3@3j7Z;Y+O;edtS{!k50y^!n*2^JA@Kr6Nmmmo&FkVXQ|u8sWs& -zwAIGdw0oDdxJhg@oq?1aO1mWmuE>ntLea$&K|QIJjdz&&2}?SF8Q8I{-4ZQfN&Yth -zJF=C{hKx3unPgYuO})bCAM=;**g}m(&Su@?Kv#XqBNK -zDBV38Y5*(iP0);o4dKqV{0-Xmk7(y3(cb@wKB2&v9fv;AGg7PwQN1cha!8qHxIP?%$YBPVjn1I -zyy&4=p>Chs$bVbvCc=ajwom(UIB_> -zuC$jxG4UDJifIH+19rHpo?(|WEJ^8)%Lmpkgq9OsY>!7in46MhPAniz-PhwYXF8yv -zKLOfU`Boh}psz(2KLTvDe5;PV*tx)tmv7av!?+x@q(>TL>L1=Z_F`?o4wjiDhMIR6 -zSuNXW?Cm2nnYtHt8n7I`!pFghnKPe3$)e&rrDhM4u|fNcFNeE;z2PzX^pbAuIAFi` -z?Dy%ET+uT|Z9}k*N@qgM84u06UTu=%mYcKTCEUADY!zCG%3Uv -zUR%8z^ZzL9*PvWDV<+_g)NE6>j}GnAN0+^|7ab3}IiA!trZqk~v{E14noYgv6rh`g -z?|8n_Th<(u0X(Np_a#;>S@l*jvm-z()|S?edO*^AP^3i-UEaR`O8)ph-jc -z0fZ~NqKgwTmL6D*`bS=^73eLu*|i`=MRBlL(C9b=DcI_%i)ce2O_46gZ|js2K?9q(X<$61 -z>y+XEQ%@N{Fj7nd7y5&Kxv4uvBzTcou^(;uF~|=lJRf6xy$5pg3bf-EwCzVAXIO!2 -z!T1{o8AXA(|HM0*LyqCgw7qyoxDwzxJ8$uha328Y?!3i2!u=VzpMmS<9pUx^_dRf4 -z-Vx?)V7}?>%{#sq?{@wU@2WbzyesVC-6x&IyFc~f-3Oo{-sSsv_YPp<-9{hp_H;%U -z=ibJvjCXn+jybq#fwLNhZj?Qyh!Tdg~f-tKfb$FjOnB=x8ZBO?P!#b -zH?clm3;{2!xACGMc#%ZB@XbJGHipKabbM#eEIrYSodj%4hgXiL`7W8!P5}01hbj99 -zwo4%#QUi^(*E+C=m}&KpMYF;TkVRLIC{`4vu2y2KRAH1<7aFrQg{j%v!u{Dg$g6&k -zR{bIU_krvmPPIbc^_t_4-?+;O#L>QFL?UK8-AR)B$q~|eXB|D!Y&2Zj2ns>G*kJ!^k>C2OFHt`GU!wAY;w8!t -zbH8wPJ+SNj<5KV_3dck5!2I8S@!A2{B)qE^DzQKMqF1U8LmPet8n37fK`-{o)BdDS|AJ0!DGi0k1_cvJehd%@yy3~JqYdZ6xwAv^v2D2zC)Xw2|4=C_jKz?s5hU6 -z4gHPj)|-Q&zd@3xQbB)XwYoVN`kPM!g#PB!sI@)1pRPyuLq7!HyT5?+-Zj22klUvI -z+t>czE5#GOQXFe*x%z*P7hbyp^_$JX{)L${Nj@a$VP#vlb-^qDL!b897+CxB*%%bJ -z>BLIXiF<4eDnO$Fg)xhR8ju;#7zUA@VjQ5c3?eOiJfLs}k)Ayf&;$mNo^27f$#>nR -zXX}}s-H8*o_Nz3OkrYgtTBkI)?Xj!0!b1I5-!_-UMi*;+(w>FT3_rM#H=AKzxC=`VVw`V7TC3fRcyVwPI$?OT?gzs!eW*F -zC1Je}`x3A(5mvSJ>U#8e&WB$Q{CdKxx03Y%9QVb*(!=p_uu*Unt3m7-$U|m5r?TGQ -z?PTkr*wHLjyOrbz^#9gs*Z<$Xdk(%^**eqJXM(!c7C+8rn^W%gG);GT+Ywm+;y}^p -zvj7lm1$;w3K>LH(K17nZugTthixhu1;BS4}DA_xx9iG96{_k^Ygl}Fv2}>e8lx^j4 -zb||P&|Hhi3p0Vqio_u%EECn3 -z2#n?ZFqZ#_eiV&|_7%}S^(}|hg=*Voo2D3FXWVJ)v$fnE-ZVdPcosL_DjskyTWSgq -zxH8;GClu)9!(ZK%4V+o?Ek9Z@ro^UpsmAc5c~`&~<>-AlLH}3xj0WDEYg5!J%t3W( -z?6;qb^F@c;R;~}i6;eir$`*sOy0bb?s+H$)CIO*71$}mM<_Bx5rAKfMfithbDHguJ -z62FT6A$5IReRiWy7AXqUyUaLO!fjQegid#W3ugrn&C|gr#sr*@Fc^{7nvOoZpXB-! -z;Z%2>F+ZuLGn2o&@W`%Mf>hmuRtq;}}nO^yR=uboaUdIJPiFD$WA3b70 -zPA(ga6B@%DIDe|=#kC#y7y2X)vk%01h-&G#Rt>!W1!WB0%?UUI$_3lKXJ7iV`g;I- -zzUD$V%EG*BIX2X$+^u>uuH^m_E^LH7%&y#4aoqy1RO73HZI%iF4-aou!*F_*(q$YA -zc(AX{;&7JriLa1e^6;T5oWT(x6?;4zLY&Y`|$Joh=Wifp^;W$e|hK?vZW*X8>n6 -zR3G8Yk+txxmazv`jlCIM6g&l(>NBRBrceC1ss#I#ru!X~`#G0n9LV8D4{{~j=tNGn -zdvJrLEX~1%2f#1OFbEy>IDn0$n -zII#m?c42*7YnEDUICEiIlhU3s)pjkbT3P|`P9Gdu;^6KQ>rAf*wkJbOIccx_A!Jd` -z3Aao9OU9Ut7@J(7KX!7hGF(^t<_PX)jf#&-vG2E^Ttz3j=^frPUIWBY8uEIexjANfIM1D6t2$B+|9?xI?>K*S9)wpkBhIgR{aO{I;M`bb -zIlLu4T7sM-6>U0s%?O-cQ$FF?a6_kf!af9c7~+^#9K|VbJ~m{Gle~0+cJdZGAE}Bs -zjLB@fsI5TCYs&|ZS -z?runoJFsZ?u-!+hgAdAfi)yzkEp2hQOZCAy`Lv$fu4>3r^V@IFGfU0#-0qRGJ*6d- -zBOgXN!qbCrE7uy?Y3a^4ANdLkYvk7~W}5~+LEsGvXYZw?Ew~1)--j+?AWro4eS61s -ztN#`GerJ_*)KWJNU74|Jo9;yV}iJ4y6?( -zDh=Uw&bU#waHr%+dvShATG*yDs&N*Nf1}(T+Q^wU%400t?q5<5rIt5%?i*P3r0q0L -z@15?SUv=`PpWi8Xd#M12-;r$@r!Zsfk>?=%jQy0n*AlS%9eG;;7e1@@y=6g;i(1ur -z6V?QR?11ctmQm~8g;sgW{g)PN%XH<=*uc8$>F{gXqBi^0Qs_{N&a7ggKeq&!m37@| -z4lRRkKXqW=VI@z%FHV02??R2PJSCqN;7hT|6<8RsQ9j1PcE!BD8|C9dh(jq_Gei1q -zl*=u2+Vg?hbd=~qPl*88m-$LWZ+_~w5-sT|QEE?#{=iDqoo3m8C{c}YO8%l(sXpMk`G!=$?sc&>-Ia2G%KD};;iy?esip%4*GB$^>}A2 -zXz+$&%XuH|d4x~FdkJy1qnSLV?2Ogb5u|PrFsqz$^DPQrm -zzM+{1r>WK>;IEc^kqzlWn4{1Sog3wk;U}c8$#d5`sPljeo{4@J0!(V`%|DEJ<(IFO -zoXSKoNhK#Z0Uo3_cU@oTz)4K_xO0ybA1wKpVb^y#mcUa5!v=|CN@x!DNCjQhC8H5m -zAiTM&poG5Z$&&3TM_k#V>cX(26~ayK?{=71_euwu*>@X&aqvW-sndsj7aaXRKA?sS!=DQmE% -zNgTZOx>4~$0NEW9T@kW*@2Ixij%%~{oB3L0-RsZ}@@A>nY3HYDC!&iRH@Q{=pMzZ3 -zL|58U!DbBihrh5VG+Lj((o^oHX7X8plW;h#cRKZydwR1Pe#N>epX^2XeGjFzaUm$j -zH2dAmS3V?%S@_9H`^_UqWB-0u&Z4odcvi_-IyoqA>h`!rC*?nO#-%H6Y6dBr0RnKddia2RD-fy -zZPMBYwFZngmhj_-*7A|h*Uj{OuOIX5reWWE%Dt{9owYF(=}t90BI~9r?SJUSo%y}K -zdC?v8A2g*cb%Kki!8`bvdct6vjI!(<$%qN{8u& -zLJ9fH!bc~~Lh6t7_iz)}H$C(b&8F~^acoaKBu}A2+TTIEjmY7Iosg<_cf1~t(HQt0 -z9oynHEVQ*_kjO3K#P^+;Wdb=v5ZXkgRETv04GW)gx1e<0t)h2LoP(FL?)LK;I6AyZ -zQ|MZTO9=FE9Po|V3%Z@c?um8R-qk{f9@f=D; -zIh8i(ddl-5JWOkFQl0uwag#T`xYwI{^KV11H&vsI@c-f9Myo|$-Cf34d!_9Cb&Kvu -z`2kY$Qz+$#l22F}6)yT$Vx-a-uwBJ979P!6;q-}5bVeC40hpz6Wh+eG4twl?S%j?Y?@1NaM(sAgxik0 -z-)!cDrO=#0+d1<@NVWb5A8boos_p5y-8|ror`(ynct9gyd1LPpuy<>Cs)y1$0{*#C -zYv(7^$X9)qykB!wr?B2hWkjjqz1)_ryrL21#h>)WWwoOC!V7(GFXtRzIcu@Qy}O*r -zx0SQ^+eh`hJ*nw$DCd&f%Guqs=!^V&D6NePKsoQ<%GqJLy`21&mVT^^kG{~ayNn|l -zFI(Ufig@`_uQGPE_U2{pH~*b^!12x|U*XMzZYyJNu9x;uS{ok*CCAEmEcUZH;$)u) -z>=~bvF}wPMyA_xX;kB{9ZR251D2N{f*}OuU+GdBRgsHYcB_8RfN9*!P*FEIH@^E`| -zGv}hwZ4*Yi(eT39pM&o)=}rs{P_D~Z)j(aio2CZZw`&QBaderwDuhsUml)w+AQ)3^@BD(lEox%P6PD*#t>ud0p8=fd4}87`6p -zbZlnC7+^f*{#OHy20UhCk_M>UlTq%YSqhZ+=*`0ZkJV0I?arE@2~n%Xj77?(3?=Bq -z^{L@;^tPYcGgm7NA?gVUaZNaA0L*voM;+v;RA~sZ68ug3tuO7}YL2k?dRq;>wM|qw -zh*y*IgRDog)=&O*Kq1H9L#2qlp`JCO7r(kkK`Q;9?#SgIqT0@nhA%SI=FldKO-5V7WwTS3(p%U$L>n0P1d5WsU+khHnEE{7uR`x-O)G(9wc#Ln=roi -zv#GYLx1VyG#j&EXP(C4vo*H?9l6L{4^vWA4 -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 -z49v$vyflw6%*WAs>`FqS -z^gn=u8u5BN<@WuVN -z{G-#$rH?ya#`{SM+~}F;!@UQbn&HZ@s(?|#kSl8p1_#C@MV)-X61=P+c5Iz7y%7A- -znL{t{POl3Oto=D$Ut18~ulCjOfZ8qLd|hADAXibie_e^3Z3$6_^gY_V;aUE2u*u&Q -zV$!+(2nsz)_Dwin`$M>*Zis1vtcoz^=`j8?vIP@Xezp`bM6$rg2kN3XC9u1@jQy>se#s(@Iea0LHTh&_JP_k6~a#- -zykOu#d9Vifv^+U96&~mp=gBdtdGZ)MVR)`B%#*j_f5;--$P67WM}EjMC(VGnlXK)) -zi@}j2$Fbk@b_&nLZ=M_o`k+*djEi&Rsdl4dgWPJNUzz>xWxrD*jE)_6*TYe;Dnu2^ -zN%~i`!BrdNc^0LKGxA{v<(RNM+})NZ-@Pagx5Xtj&B;6{hfdCuPd#$c-LF9nF6pM2 -z@HQbOPqsdqD-W7$q7vd>s0Bj~$}@xWXvf?_{vX*cb4RfFEbD&gc*L3U=aPHz#V2_O8&%R!HO9X^$^zW-gj4= -z4t7CJ!mcMa$Es@;QAe9!TQAjh@0x|JFp{n9#ns9&4{-)s-%DyLTxqtIx_31#G~qfC -z>|e86Q0u01@&X=~xw$H_=&}d*rl`@6gO?6>ht+DSK3Fkkh!69(S&FD?-=AX*JDuB4C19J$5 -zdrq7WSS9{XdkyN5;D-S##0Jotd4iJwtHrH=Lm8aF(k}tLmgP5#r9Xw6^4~N3-w;EF8hYeXy&-Du%Q03>FS!;m6u|^aZOpGH1*60o;cPA0|=>ws}5C -z95zDxRfuEDbuFhe7@79J$|KlY@PO3i+tTR{+C}H@=|@78$iTq!V|H -zFjxkR8)_k`>lhCjov-5^ByaIzKBz40OMhlmQ^1)?46bMJUgR3X;42I^qg7kQZxN<@ -z^J*Y@(HqY@1>C~E-?1T4DMlfOwF<(X2G#m_wfGC@#xpvy6)DB>$TN>|uL`h6%)rX4 -zRV+tXB~D_T`4nMJ9E}pMV(Cg)Iz70)mcfSrt3@-)?qu+v0c*rI#Ah*hA4~rh;`152 -zo25Sp{pK|WZ)fzyDCtfH|B2B*jQ15V_!Soa1mgEHnD$tx#p{Uw0p(r?%aTeA!`mEy -zvH)>n3*zztWdc%)@km(;Xayj(_$?^E0JId4LVO~i57tB4bCj`Ouq%hL;lrY@&v;dzRLa=L*Fxa(380cCd1iGFT^sbdcKUby@ -z;CjQdfm?(}#QgqSdfKJcW~Sb0$Gc2hZ|`LXcd2UUUkDq!EEEjfTiB%@s?=g%ihhg)t?O%^6JV+L8kE5!NeJs#=lR@~eO36mF}W)iG! -zGGTYY5(h8ZunE096p{_BA9e@)r~)RP>4IQ_zIU0UyZX{(FYdAcjc6Y2QU1+Qfn5go -z*tiLDodLb;<9UL^BL#K}Osc^h)ubKq!H~@@XqS$;&@}J`71F&-vUfsLyRMo8cnX8B -zL)Z~)DUKi9|7gLSW8}t3b*knXyUNlkDWJ=wICya%?nTz%E_=Dcc9HF4N!ogt3*Bl9 -zd25gC5VQqX^vN>t?#ye+sY+Do`V&i;k!ocCTpCZxTsBS!~IF7 -zcj`Uxkw7Wmq606$8bu%fSvl6EgNLJJ~o{*eV(G- -z)wgJaeMiD6*io>XTv(CPuZTA~<#D5H_jTD&jKJp}(XM%}I%wvDnuaLQ*RlqRPf -zF&TGqw3{5@PwJ(mcE`{as>oI;lI_~UJzu$G`@P`)3|3n08+7VPE!LrbI(S`Ke^YpU -zHqIDrxt`ChPRx#16=f%8C#Z`|HpT18*Q=!Q9$ksvG_+o~d-yK0h>X|`4?{_mPn1z2P{+?@HI -zI{)2TY9$dCcjoavN&!V-z!YReSd -zLc1;%JNhlw#&Zw7BY!QtBiC4xn*Oko_RE)Nyn_|IJUK7=JW}L^D=y}-v`I~>4BFd) -z5mTWn8)*9I8ZfZ+m%6u$By*pU^Au>2fvU(EvI%pwGjJ|WdcOJ`&H;ssb+pgD$U+jq -z72H?Ai9EMaewg#Zzjai*s{ud4(dwvL+}IT!e;&Q$xU`__Jo=2aamC!Cbgk`Gtegcd -zgI_y6)slEmE+NmR!xGG6#2x$g@CgeO!gX!FyD2w`IYqpE*x#n -zUmtm)Ib3_8DSYCYAHv7i{uVy2_M7lASUuR3$%oInU;^c?^+V1aZQi+l#06{PkU*^5 -zVeiOD=p9d|PSF1N>^2u*ZyI3WIqElK5l5*;Up(5pd%Xg`@2nSCxgvYYK_!aE -zSVwnVZjK#*TfM%86{jyzg)W3Plx?BV205PoeP2PLg~kJNf^Y!0P9`H%D0uL@1Mn`v -zjLW;%8`1TZY~@tV|I8Ma&b76=4>oIz<`HvkpGfz# -zd+V_ePBh|djN_zi-I^=kv(?*zXLj~(!MH~&)g!$u>&k*nf4pi)?{A{J%J<2-h<&oZ -zfp2zZ@(mpdk~YS5n9|S69l}Xj#v=;2L)~yvZlcpB_{8&CoWh}VbkI7`x{`dY -z>x*`M6K6L$G_{Zm1w{$9fVq&L@yi*~1>5k5i|%afgQ3|$DEQ9(aU*A3Z}MwM=5ecU -zL6FT4H=SOWR%4a;Us8RWwefUXjjYG4f;EgbZ$F)%LpB(NVNdILVW{}^ceHwibx;}W -zu(-wDbd_d+Wsp!7@cJ^`T^uzG7>~4ot&;!X7Ttus8P)$PW^r|mT&#{jtN+3M1Mo>r -zYciErvF;|nuil6=GnCWJc72Jp@z*HHrNNmLJ5D8~TDIea5+9CR293a=_ofQx<$R03 -zahNly>EV@6IL~91k{?}T9O-<*Nfxo2?oUNs32Ap9%cmmanyMd)6Gti!BJ8cXiS5OEZZ9$`DluZu31A=^3rSzV$r0 -z2D;-(JfCB=^&js11|D~2Q7E^;l#YHGgFBTsu>Rks7gZXxz*?o@j60(Rdf*0?E5dfh -zolfCYZ<&5*o2pfu=b$SJk!>0}Da(O+eoMKw-}(I*?>EQ~SgxhhFMX2X6M;k=Q2wAwx -z+m2oB-geA2_-h`PM`yq;7YLe!X^h}IPgDW}0Y`ov{iS$wHK;eX2 -z-vo=7mf{|W3vwO83Lf1ecW9BzozqNh<6Bu@g1uX5beFI~e6BMXHC~q)P-JppH7A}V -zhU3z?_KXsxEtuWHHLPTK{N@F7wbFU)S27-#?#FEOjApNcGyEOxnXC{yqv;;JA+?+d -zcdc52Tzz*6B`2h@kW~5>^(&&2xgP1UcA`<$2JGfSiHdVAKz(`d0<>Vp-Gtw}{%|iE8_;6{BH^!!TnGOANt`X?B=!(rR0~To#-NjT-Qf1cj*z`-0WB -z;%sKNFsJ#;B>dL05|^@42m~924U@?O6u31Q5KYFc94Z3FhL1kJl<|D8|UCn -z2kc}O^nU4E>`S%ScTuL#<&NRGx`gK{@V_o7m%D=hD+6-5Vtg-sLjnF%0DHfMGcT{z -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 -zm&V%251^N`9Ylf+MIs0#1lUFVsIZm -zhBptq0RInm&fm}6|3Vhl+(oXy?0-RtGemx7oX-(>LFEd@sS{q{T$~VqHNGEaycRpC -zZh!NJ6zx=gtn$KrkWXj_leIAb>t|Z*6*S;qRhR6;Q(S@k0^Y2$O)FC+s^W(^B=?*K -zl7WD&nErs8v*Mxid}^HN)7kuS!s!!tbYoin$hh$3i=8_)%JZgt@_t~#`pGs6wTGdv -zZH-meJ^7kC{LLyG)+`n~@%>z_?BsZivwd*4iiCDW?+n1~_9Cni0ennJ0L$4QwHpwj -zH||>L-QQe`IMQyGFslG!U<=ToEL^DL|6%XVJR5fB~dPA8-rvXO*Mov}k!5y!ANBIpbd7f@$R*n=QZQE>E`2`sw#poZVRc$V;$lq|zJfNoJk13Ui$vhS!STktZp|*(@Qyg$*5NiGVGe6r2j!>q$YL -zF6P7u*F)HM7RDXkDWvSZ^5j$hIzA5Lg^S&pv0rY$$dul)pXs4XI!M8J4?WiMu<~2s -zVnYej5RNIzk7=WKW8;^~Dm -zJA*OK#d;yH$Gu3gFsqUL5%8ChKShWucJ(i2Zc}l6(cDE==nY7&3fBiNsa!Og%XP+z -za?*FBv#|l(3ddp4_)|F0U`BxBBS)g+xrVbZ*)qKB8ew??I#bYP!@ZCr&;wblzIFc@NY*%S5FA^I8ia1& -z>v{MRdw#qFB`^u=vMixH&J{^lB1`EM0_76$ydIG7F7T2?8P$3;jy2$mvKRJx{&*9{tp9?s39HRPyJ)X+xTR;NSAMjUp6`Y}*oD(W -zEyYe#V~@-p*o9kT+Bo$ir5TnjbSZkA`GppIq`?vd-t3h>?-YhHcc3NJ62WaQEJJ&3 -zj?yvWmGAVc#Wmq{K9gn&9r7~=qZ)%O9rBa|#Z#fv1UnXNHR(+z4xrd>|3V0f=qhLj1EY5Bkr8j6T -zx3-u)FMEPL#!USmEjas4F(e^V=yZ?Hh_m+4Iw7BYS+_Z0)28$h$NND}&_TOJXH?Ur -z+?4LTmaflndK=^Z8}#-N%#n}c+`|dQkhJTP?ylgLplQt)rLeCqF_v~QjENW#V58SS -zqdhzP#={T4@$egOJj`^ga!_XRo*Avoh856-Ar{L*oh87bcsef4Xmyny0XE6_3hYRV -z_4k>PI6caO`@FdtHUJ>gy&U`E -zJaBiRb+M+y^zy2gAt@x-q_RXu+SQ%{w8I#7cCA>OHciL3t2DXu=nFP`KEWy@X8)E8 -zR(DaeXHDCd9BLD_UXx`jcxX#ULSqK3@ZfxQ2Q;Rxn=CIO^uvy6IMWn@P)mn;!gphO -z%;7*w7TPgvG+z&D3Ny|-w>|^f)mxy2TWmtgKXlY(kd^{HzYcu`tDv^H#U1KS_fW2L -zL}5oT9=$n+CQB*GTh!sj31qPn56=YCptR49oII+v0PYr+BTop@{*fOqPYfaz9F)CFJmTEFE^dGnUsTt;2@r6#hKE<9tyiP6_oR -z%^`6u*;p+%Doi*&SZquUR-$o$)FAS0E`Y(=J7gx}8 -zU3NjQb@Lo&9D(bC){Cua(0i?8?xsj%>No80%iwKZxE*l2;rux$%#3|{ok)Fid7jct#-#DZg>m;sN#(Jmj}^v@t<1b)`uT;%y!!mGSfO1qn(jG* -zlO@E*uL39V)e+a6WI3fU!)Wx&e|ta1Ed)VLQN}-$ZhevgUyR9=?>B{W7YVH!anfsp -zNxBq=ySb!G0|n{QAQ60Yw1AUdh;g07+d`|$TML>}$}eFPn%-NEkZ20gQj~B!$CMa$ -z`k8Up#Y-Ot3SaazZot{qxr>5q8=sk89#r0c&D=Gs%a4^u#9_a|baK@utmxd0UQvx+ -z(aZR2H*w3Wo=n+fN#pIV<+`z;dFScCRIA}jd%*zx9bcR;+T_HT@a1XeaaaRB<2;RA -z<_1Q6dA{&P*5gZ)B^kYC*L72)iT9O;>+kIZmv&?HiWTt7Vn3Jf>2wzzkZo9(RXkZ9 -zw!vLAG-KFwW^9-HVQj(Kf6p-VXs_%7FX?R@pE6 -zR2neS(z-?E^~lBn#@_3DZ|uuQRd)C!#?*4OrynvZSts1XqR3{#(Kt(TIIYJ@j%a>P -zxC1(+#zg}fb(aimw-lpGo>O2~h{B`sY`SXX&yjc@0X|0K^#S=e -z*tLIcS1tB4Onc5?w4Pf~)4+rwrUS4mO*y8vNZ|NG9{s?I{U-tKK)>5_<%$D)+6F!F -z3cEf3zGBjRG4OqVMQKvw2EymQ(yaLm@SVC+i=Ba0cDpq+lQbMcG9{d)C%uqh=!FDh -z{(VRmud6%VHU8B-cKFb6kwq=5WXCWjQCVBD4wEp6IbL-%JJSlP(xX26-f^d}zn>Y_ -zrG&8+I0tcH<_A`*<5lYi10RWrZIuL@wH5Ygdb8F;crz)+x!Y4jIE2VXhUZWA6i+RM -z&cYYi^VC`P<6B|0d+BK{>kQdgAZ;Y*#9&o!RHhCT9F-YRC#)ZdeGL)6BQvD+BRLfp -zU^VWZ<0Jg~4zAc^wBFYGyH1y;jc_au>(?7#9}zOF=^gCyutX{a466U>v7xwk&gsfLS1Naj5$PdVUq1V2FKlRjh -zBo4^o{Ck|fqnfYrK9R|W4Yod!8Q`dG&|3yuXS8i8J|HWaoO9lFH&zg~l(ry5Ylea|Q;mV!CCFzoYW -zfw%`N*gXsB#wo!Gl0|>=!HmG|!o>=K()UC985ue}wO%$f1>$By3hm*M;sST*E(Ia) -zAkSz=2EO=L_~LyO=psXQTrBom?6$5=?*TdD8R#I_B?ccC69SJ1ZlB0;{poU0lVm(^ -z?Ml5CdcHW}h|`gQxMzj(+mHOtJ9Ib|ssB;RnB$vp(tB*LP3gUmdK6E+^)l5kkw0&~ -zoPg)y{P}t0)C=#k_@UFjl)v?&)Nzp1vT!B^?j^V_aIa)lDs5Q?%a`(*Yj1B*x+()h5H?vLMEugd2_aHUaH$+l#gA -zZfbvjs$rY)eDS4Pb}#&SU(~SQ!ykn3S5DQiKfu+VlUVr=l`Ipezf)Q)_* -zbWNUBIFIjc?AcBCDUjdU?fc_*yU-5s0DmKbn$((Qs@;~&D$V`8S{?>UqZ%=(gwb#)hpVs!3o8*@cLw5`D -zs$N!@p~;hia&?)K!Vc^f>o35A -zMsXhW7&hQ}Wtc2mr~w6fothL};B4%JIoL1oXgR_ISB -z7}qceK_Y -zfOB(k&;-?IbjV|18A8m)@mxgjckP84Rl~vAAbGozuB*W_1I--?dN6 -z?T6roov4hS)1h~H18dFd`NtI4Bf;)2S<(?8i~Lo7$!mmNolvxbgR%m9HlZ1zyggjL -zfjug|-}mC9A}d2al$S88mK}dYWOMQS9-xiF=8441%zErRq#7b%Z)T&VN&YR@9!SNm -zTq=6$@YWN`5Pe!~|LKq*q^r1h4to>mBTaJE4K^em_u)XR*Y&y;tA2GuZM0j5RUu7_ -z(}>-&2$XK*4as6{ay!D&CjR94M_Yhpi!H6m;H1;V9r7m3_M7DSytk>R7EeA}%YN0j -zidBNfX7s7A@w^e`rB*Apt~eW!VQ|u$zq-EFX=^n8%Gl_3{0TO{p)s=5?bz!4ljjXQ -z*W2nHC^P1mL-beWyU@y;uq=a)E#_?3N@DH!h_zT&0bbvJgdu9RC^=NUr){MWw -z22E?s-wc-f4(&*-VvTTH;ncnnX=su~Kb<1uc6*+e+0b~a5c{FBA77>4bhJq59(ZAY -ztRdZPjfIsMRb#JrMjw17pT^!n`FEWgn|f-!AOU)^@8VP}Yn=`aPE|kfU7U)g9+22U -z@=g;he|PQY9=fNBHNou|U&TKCzJ^Uly`F`?0Pa0FqE~IBw9*Lc7ESUWu-9%};@fNQ -zkk4u(Ta&y6d+qdYP-Bz4=}_@hqKytUT+4UbA8vv4U`@L`5%&)Yb)z_6!d^&gK4gcf -z#}m5s;OCc2AZekMq>Ay!hujo1o%ZNjAH-gX!5`imd-Qi8^z&;mT-pf0PF{cBlke2} -zHtqKHFstv;_%hw -z_k7eVma(YAwjs_*t73_Gr;bZ3p%WA9t1_0iQkcRqHy -zd?g$H*zx2C0xrJKT(x@l!%A{pKSikfW(wAglgiVteqNqFqviX45}UQbc!;OF|C=ppYachY$Ch>iOa)7Xw7Lw%3ax7ekq_mgc~rN$Yk7 -z;)GsMGiyC_-MAX7)}xK9XdkUNqkXhKd>`!&7Oc&!wt&w-&kXk55^(Zw`guG=YUl(Iv+Amh668BU`LqE2s4ojw|M{ySYx-;yp*+=4Ec$8fqBy3yqr -z=n_YCS#xyF{hTiM--a&zZrOIinssP9e{9ojp7D=kqIB_N+^6*+=8~_reXStwXIf6A -z)^Y;0ma}fBbnz2`=yCj-5lW|MGnL)x!N;lRBu6Xe!eQ~d&=awX)h@P;PL6ApL}AP; -zF}v`!XI#CpM7%VZEi%WZO^V4HIOA$ZNl4l%#2tfW`x{HxrNO$WG+RtFd=#?_)*=Oy -zD+X~T(xt(In0AJ(j(LRM!}+66D17s!g!6b;5|)iz7m=w<1M>A54D+~2{Rg& -z;5$mrIEPwMuE^J2!lltnObciiVz;dlk_b2DbR_cJs)5Ptb{-oT8IxT>Z)j;My3!nr -zJXhgQQ>msAFTN)TN!#F4@q8M2u9DJxGBCU9Gn9}@T3;nyd=I*Ol%{{$IWXNjX3SB> -zn(U1OGlvT#2Yww#>+h{XKkPJo1lca`j4(EQ)Wzd0p3*(kI9%|hhyrK#%IBbeAIa1F -z`*;tmuZyrwMYgGEA70}7@CW5toBA`S#nhnRZ-TX7+zM!wVAVX#4ZF;t)#)KEcQp1=#DDIcB79bj -zdl%_ezUR|hkH3)~*d7qm1LC;!iK9;kL-} -zmYwqY8w(%CXjk*p9%+5hW*sc?2dodn{@csYzr!69Z;}>xU;{fec#pVVzZq$G+(5*M -zh->f$Aa2~A_{pX@v9%xB#N|_Me>=W3(JA%@<RJ_ -zHaZ_t#$pDtU;dvP!dM1tz%1-`{l#$s^=rfzG)07Fb@=938PyQ -z9RXHID26jmVf0+{e$OwiZn38AN_4~^wfv=8wT5j#-155&_>-UpKKpz -z>EZ4HjkQSE=6*3NvC`{F#-6}5Sa;j}NKlFyIyL7VzlY`1#SZ=SudJJ_-Suo~c9Mm; -zd)<{R -z3_8}(LykNo#D>5&MNCxrVkyq0%uZ(T&B4>u6qk|#mkIX(+zhyqh`c5JTVJk|-X{?M=^sq>~f-Ji{AIgE2=xMt=@5vKmA|a`! -zqGScQ1K?QWZlt^$qi_%C&g}BovCF8#IfA|NKVV@5wzRMsKNb2}Iw8p-(OfKTul)7F -zKxk%2T<2jk+Eg_h%|QlY4!UVS|PTec7KB%V6QbTIkVPBbXCqrDgB?xxOPs&dy -z%{vo}+tVwR`}CE{v&o+x##0KO#MDFQP`}7MeR;Yvq{F!xy^z|xvok?FRf;{6=9CR^ -z2JE@Km(nBSq@2yuysr;xj7SiVlSR4rDaFtYfS>n=9fA}(qjLnGXlzXH-()3(!-{0HwAuIm2LiZShHYh=N_z -zJoR~yQopz%&(}^)FC3A<;z;k4-szqqhkj{fS0EPEQcrXv|f$+QZZO4UpeH`|UW*aQg87Ht(&)}P&@5#$^LjH?4Dx(_q -zvFP0s@-dtytAt&^H0&8yDjj3V{;^lS2kYC9qwWs4FW}yS(~X7wT)?exO>j%$sLv-f -z!m8dF=)4TsFGpgOq25~gOqfep6Xk;4lH~rbIwi#*ZWavvU8Hq62D+cki;AaKEPfHE -zyoi&tgu7c>l<1klgl7D*QOU<~mjzajpnr;0rBqmrtzR7DWUW2XZ(&ysG_E3BF -zJBzQuF3x%RKgtQ5tKFrz&9Cg#wH4b3gtXhv@4N@`Cmq-2iAuZkb!AgPFtk*3#&+91 -ziy}wglPwsBgx26x&%JiCF#Q$Ac^f#V>!H_`9!U>e9wL&ilQ=5oa4*a2N=QCJJN5ln6&uHco6Zcs>bM=I6;7GOsrRST!nM|JN|+z6yN -zAx~DY8Wej{)&s_(z5n4ljWkDS2|%?6ODFCYtLk}Y#F}w2blYJeVM;^jK`Nj9L9#M -zwnRt0b+O~T^-YJ-cF|$CCOYl5#5MJmi`Sg5T)e10`^`n?vo9_(+7lPs?TZ)NbKYEB -zpL22X`JBXjWA5U7d+wY0Skq5h?5xjy(|JBO!f0GL!DwHYb~VagzmPO}VxU!aej)X+ -zXP{eBeCR32z#-Z>9iI*K!0D3X9r-TUq4Qa9q?sB!T#CcZ8@_|>pnqbmF+;>R-SjR! -zLwRM-Kue(e&oN^iM`J$BTIvwS{K^_MdPDk^G;N0 -zhS8}vY>)4k$HN9(0><0n78i68Pk5;xu)~j~2e8L1bO%tc41Aen!V-Y*wy(1<_6f5B -zdcXqg3Aq7dGW4ThAJ;MVh%zfcObl;H0LLzBjTcYITRUG-rUkH_L%HS`P6h|09!kOY -zm^=aF5uCDTJ2)ONXX$|JkDae%R4E5_#PLqZuXk>P?~o4bme3qLAwSc(4t9Fp)xDIV -z##eN1M*LyKQ*3_c#*7b@BbqO_lMQ`UnXB7?6r-X4mW&jScCO2KRSD5i>g>+_&>KeF -zn7b_L&^9z!or~9P_#orW417-}%qu;qHozbe_|=&i8j# -zDM2_J=E6Is&Q}$^?$@XV;T_)jE997}BYKfPw)1i1SxBc*xW8ZLa`=n={;19}_{;qM -z;Las@e_4QvO++oAHy}{?@{!jdlutd* -zI%cDMdOc1haDP*W0L{iA{Y;*EXNPO2G!UHL$XZ2KrA!|?F|JC<49MiM^&L6z-5)TG -z`(Emp3e1oBYr3K1L&X{(@ODw9j@)eU(r3}!IN9<7E3TivX -zp+o~QDyDP4t0N0`jRxtHGsHNm&x#Hc;thH|_t`q=R`)plNM43{9aYLmy}@!;&g|Tv -zOc@Hjq!BZY4+UkHbi_lqaULIQPsocpV&R*Olrvzv>&B!2wg_#tKU@x;mjPA+?uWY! -z7mN06gNsCenTxo3guMrs4!@Do!kvWw0^BI1dl=ycxaIKw1@0BZ!;mohJKSu<*CFg{ -zJim?bdyp<3bw42+I*i>)*ssH&l~6=nPuS&oMVYG~h_*8hQVxZ+!R`~a@Np^6!zJ$O -ztSj7KPD1 -z)jqkA+l<70^VWUxcFe?KWq^_OO@@*D-t1kl|1ZSXFNU3BoV4CP^Q7aD=kBX_XF`WU -zIB!pdcDXTUT&5ka9*%Ti$7P~>QMeqZ6gF4I^%@8-V^rZITl -z&wme^M&r4e|JIt4@qC2;9y2B3`BVPeVlv_R3+#T)>`dK7GSeg87!KPz6i7d~$sRJ4 -zVq!yay4rd~X|>YKrg@fE9_%${5T`+G@d^3JbwfstlG=kpPRNIFW;{E9Zo5se(6@gv -zSz_;CJbETcV#mK1S?S+Jb_o7&PKxZ|Z$!2a@K=EEAJbl4=a;5Qk#-tH))l!&SYHT(}dV3Z^e3r{Jkxun$6Pb*pPqM -zFcTojzz(dl=((=cb@?cE>3g+?oKjbg_Q};)weY2z)<`-JX&B3QBbD0fmLdMnpVGZ0 -zbmv4Q%Daeah*MvYaXURX%E?$8@ZD;q)}lNOo+;j(PZ*FilTK -z)obvrvmB5E_&SSMexI+{&^pV@Y1OO>?h@R$C_m+Ef~-{25RH8AM82uWHyZiAFE4f^ -zKsxG~8E>`nTP`9qqOc~_b;kwt?mDeaAx2|qgwbA_W2`R~jps}CMq?RH8JE#Y$38ho -z(^a6gt8XmTtOI%8^{#pbzl#=k`f1UMonl}7T%2->wG62JU~UZP^_oA;S)_>!WVnwG -zcQqRJc~)Mb8-HLS8}{tP*eO<=Eh2SX<2sf}OAf&<;>n -zv;M?s^CZegI0vUoY~+7nt8rR2=Si-{U|xm~=O&;GIoC;dg)~sV$zp%ZsEHKZG?7L=^MJPhaN6EXwi&Xu$E -z!%#|LJ?YYR={_8g4Uo4@$BkMI;-&|n2F}jZZW;o#W;_C`&Nt+-*G_8MJ|nn}zzzB2 -zwYsJ~un&4ze!jysfNayNI{5<}BDB#2u74ignt4iHovPpzQO{3My*|vWW{q%Deo@VS -z36}%=z -zryFt}PC@sF&KFiJG9~D5k_K!HG+^l-nFDfpM}t=X-W`c#|J%^NQ5q3_Sc1MdcGqH~ -zTcxuYMPo^7i*D`wTBXB_{$8V&`Ndi2J8(1MgxS^1Ij5Qxg9cO=8oxHe&K+(UaK|n3$*9TJ%ZM9ajf1w|!eJ=4^LgS?K@pSE1BJ~rKyi!kAzxD0`^~S -z;LcE0C&Y!@;b?E+25bhYJwmOwy51a*a(=ge}(>%0rxS| -zsQl|C)TM#jyBpJ@w+G9#<+D -zL*mXaGnUwG*`@W%W?X%{q<(p&@}eoyxTVxuvZW-hqEguedlVbFUhF>H{5=w5ma4}U -zpDD2w0Xp{B^Z*81R*|q}Wq`#hlTW9^$8)a9ZCIsO`S0F$aQ7C{W53cI$WN9}DpoZa -z_Q|idQ_FlD62OeMNhLcy*0VL1ltAHCRUf~h=pCm1M)+#1c-I3>`G-)w!zWUjWIt8Dik^vS+SgTnv -zU_Bk90M^_0$%$AYQFY9EFO!&aO*PxG9{Rj5SF;V*YgkyQj*b4XmTfJ?9ZSC>UKxN} -zl5~!5A**3IL&N;!C7OjQN%iO#F|dbmO}^V(j}pZ=u3I_toP@ZXo}s>#NzMCwzM+ -zA2@q84m34F|KHbEwxA@WD?bFf^6}1QC*!*Ec}~)m7skfhNMHWIOwyPC!0LARbmhN+ -zt~^?Usg>`$#GnPOM9FESjX|pk$0`Kb`M`K<2u~d+Q$B^e>sVf40|Qa=yv0KLEgif+ddiR{V+ql4|VuvcQrc%M|4bWY=+&#;!hrorSd4~-$SPqVPObs#;J>iHYyvPu86p?#kwEgn+eNwD*5EVW$>tkj83tR}^eqnBb-nLKuzL$H<0P!Qf&Zh7s+C0=Z%6$~ -zVxe%~JSnk%!Cix+GG}35$15k?usZk27yM(#dD1D@cuWi=!F}=x+)LL0sg6p&*aMlv -z8kYI0)psKo-O+b5zxg%p=Ae6JOrw`<*u025Y4!oYw -zV5MF=>Y5%me5B$n=QXRfxG^;@2`#(xvfY7m`_`gXmcGfVTB{rutBz4k-NvZHtD!TE -z@~Qcop)Y%LK03=p=+sW+IVt?UxFW2ZmW_#ytygj)>lX<_D{zMHJZv5VTDLB`Am5{W -z1K$N`!_!&U?@`x!+(`65)_ML*c6U$63Eql8)fO=EyZNPr@pQQnXOhci&3B%YYjDen -z$#PD1wqL*r^pqBg9~_7K;tY7g%_eh9crR(EXZ2N&^boRS;MqkM<@x! -zM#m8DqcZKmy5t4y7?q9bzd{)Q+0M=p!YR5-P7Rq?%#3&%ay+Kz3So3WV!865;VMym -zmVn*Xou1`w+j+{<-QFcj4yaS?=@n$dp={QLfjeQ(B!QmCV6}hcrX|!WcjJ~I;!3G$ -z-^-u9TZyu+fm6Vn%5rqLNA@^qxI1IF{F%2}87S=J7Se$sXE$u0RVx=5Sxo;U;+rx5 -zEz3#8nf|8-~dyRleuXTIx58hWYV8sU~mcAmY1Jf(sEg7#VBf5ob_P&ge -zk=;Vpd0#}xo!vs7Mh-vl@3vm~!O*iw#Mk@5Kv?TCRJ<#^uPGn#JoaAu$kYo~i{QtJ -zxvy9)O6c@{gtM@e@~=2yF`()G%UPolV*0J}g9$b+(hwR+X;-J$9!9u9jO%$_@;rgE -ze`VS&PsiKeYHxpww{hbIZhQWgV=o2v@yPp#miH0l-4A&mF%@t+?3NRWT4P>QTG@JK -zV5~EvLb(IGhGk>c16C;0`19$N6}WMjLi;~np-iE$oEcZQmA%XS_o9DJ$ -z)*-LUT3(l_EIid^ttM1z)WwjMv0kl-iJ>ez@&0bOy{3<_O7IcRB;$-Z$2Zur8*}4o -zWwJ1(+gJMxA(@=|X&QAu#?EZnn2)eBQlSjztqQ9wvHd}b%_Se;iRvOYO4zx*A7@Cj -zV2|hnWmYUvGzs+Cj$7~P`A!Ynwi_QQvpD_{h<#Cu9j3*uN9_GPb_iluYq7CfY$al| -z1d?hQZqP!hW*zkuUm1XPLwraJ>{C0PYp|KZo0b=LEP^xCyUI>_2a+`UE~Z)z@$zyehR{lfTjA -zlf801=?xqn7zzFg-cEL%_d+fp>Cnt^v; -zFgD2xv>E>k+8mDN-L_xWuvZ_2%_hK)0R_OdfGgpG8zt8HSPh$udQsh!4#@Wir?Jr5 -z7?>HDF`zciLNoAd@}t^FxL3Y|>tXc4JkEu8TCp}m>j!&1yRYEH!>-<$kRgWX;`E9x -zv%gC)PPL9MX|tA<=wgMsi0QC+z%_6lYu}PyjI|5WV}cf%c9SmTRZB4L)@{OWKn%BT -ziBmeTUP`l3%5TT~8um2YH8{#!9cN>Z_p&SWE#^Uw12gS7$YItX^vFg7PW@p{M)twH -zavaUMZJB2x!Fz{Ihc#iyh#hh{LO)bq5+cdP);+jP8<4 -z_R2-j$&|kz?x4ycS;NZn@!dLWSS9E{->YkGQ>{r& -zd*x}EaZ`M0Nm0RqVp~aRuH9M6mgn0SWEa@%3!H@ui}2$tV>!9DoB~_ng0do3Vk;;u -z%U+p-gxx|*i=7LKmoCUHv}Lo0CTGl;JY_b^LtxJGqLLhzWq!b%F^R%Ta~2d8Wfv9Z -zucXJk;-aNxZ0bW<8HUM}(C|P}POgEFZ -zdCTK-0DJ*S4rjJ$0*X*May$h -zG!c23nX@B-tx$DguoXK5S$2vX_rB{j~C3wEMsD#0u=Cl=s-Yd|!>2FKlUkw@{vL -z%+2XQ)TLzw&IR_ee6^^#E6R#(^o4z7w-uI^E=RP_UtCg@v(#QzXe-E_5MRp5RxHR_ -zTDEe5eWg7=cR`t>B)8PDAUa%O -z6sD~04rg&m?lOAJ&*g3KC#|4c_)RULTlm;KG=4QJ)*TO}_s86n-tk}4`(vn&bMmMp -zE6y!(7I6kqnvLdOn3HOXx0j3s1M#7<+o>7`U5ohI4zE}1R%jDQ=1YP`>7!a%2`J_J -zKs<}w!qVIYrTIn0Xp`VsXkBXS@$;arendRbS%zNCdwa3X;FejYBx+pm+Pu3_*OPZFg8!)A)F=HmZ|+k>&jhhq+3t!3e-AsR{&!rxp~wUc$2aF -zJF~AVsa*|};jJBMOI617e^wd)%Sk++|Ff6D3!V98Wh>P$*PWv; -z%q^fni9V=5XRQVNC~H=nqw?=$3<3qdZ$@wB78fop&^i(geO=>P$qGA+7#FH>U7ggQ -z*4HYMe61o$Z53tR-|OCeX(S}RsrBHz;v5Y*npju17zxz6+w!vgBNhr;im`VkT5xV| -zu{LJh9H^3|!%HcB+kO%nE9TqmzB)*BYEU1{EO`1Xf2YEt8TJ#nihH -z>>mu^~tJaR?`;n>e;{R8rUUUg@Z-GY~*;rWVOoJ0LqdsY2L -zzE7n2w3df%gjB@JeIpS%E!yw`Dp5{uewj@z3QyEs0=L^Si$LK`#HW`#3v-H=mp<;J -zUH*?G$K^%K^Dz%`qHA*I=M%vEq_i*YDm!?o+L6IaZx%oq(}KEJ75y9^Uh7<{r>k!H -zHx0?Y@6LHDraHdn*41i%EdBHT;U9%cY|H&0O8strKIM}*f6VE8;aZV?lD=DKR~wyQ -z;6>N&8qcx^E5#_zg~#@#}-;ka7} -z_WCh@y;(RLW9la3`Z$4B({8=FJ9)e0K{b88@5}kT+UvQh#I99od2uPV9%^3xrbHff -z?y(SLfrpDwK1Qt3#peYA2&t5c_>zx|s=z(Q^uHIm{dD!qmp9SXAL^&8KZM#e^`v-v -zyj_*8z_7auR~d!8rQY>$VJS^0O3HF`48(yA2ws|tnKdgZa27IqeooPX?4>28Wvn%V@$`w8J2aJz(N>I#&AF8<{XCe@Icm=`*myp -zhpNOb5VE_x&{AxK&tcT{0&|stnqcqqP5SCzAFU=pV -z!QL9|qrn(J5vlrVu)hZH(BcPa(3fusnjL~NSzui*3yWFDBJztl*?2nqbo(P((I3^7 -z{-}=hM|Gw@qFwhtsssHIZRyXze;J!YmBL>d|7EPNhR~(?=lC+vpbtMPcJrTB0Drtz -zfIwftv;z3?8PwNL5Ygx_jsG(F(ECJw#$5cD$rCiczou$9QI`JX3C(JHjRIZi)dF<+ -z)dCGOY^5`{#zH|gpWSjCpbZkRQ=-x=*o}r0>~5oq~)g; -z0Dfu)^p{3I@`UU65yUu#Zo~Ug@$v#b7o{aGzlg+WnZOBgaCwfpc*aN|R^$2fm}QsQ -zS1h-cs2+cJaFlPB0HQ -zk1!{iN18{OCz;dCS>~DM2h9(e=a^sKu`FPgd4YMNd4~Be^BD73bBcMKIn{i(xzE&T -zQ-@78o2_Pxd8&DuImw)C9&LWZJlFh)d7gQP`C;>Hv)$}6mz!6aadDb?p}EYQXWnAo -zYTjo4qxo%fgZWMKTjoEQ&zrwBe`h{tZZRJ>e`Y>le#d;!+-Tlu-es;gzhZvXywAMf -z++=Pxzh{2m{JHrH^OxqonopQdnopTeo6ng4W_FvuG5^#2FY~|6KbZevzG#j!|8;xb -zcE|RYcAVV)@{V4pXZ7|Z^Xog#Y(KvJtL?Asc<_ync8G5zy^;I|5il7`v5-*tLIz7p -zDqMioSz1Hot3S5I1w_Gu-w15R5`mR&Qyb}be-+qq*t7Tj`2-(OpBf83n%!2Yep^1v -zqtFEf7!SHPD{bIq>P%A2-|iDWlbHW8nZM1K^B~l5kJc``R&cuE9n;k&wG|;>1-0d| -zv3ac2UbKJ)S#1@Jx -zo)D0Cw`b40q6g#8FmsrVv0&>&oJd~sGZ>a|41rSk -zs#{}_*s`C&u#95}mJScRH3l7f;%6{C!7+qLOZMFwLjZIA3+ -zm4s(+jUk+E{}~M1Ifj1Hu3ZK%oZUY{*m+lN2wv2G~?R#%O>ZSM0?ANWA-X4S6OZNpe_PR9&>ZP~Gp!U*t -zg6?VTj^SQ^8K{@u9)sFTn}d%0;?@|bm);(O+DnfF{et%~A04{NK)v+#7}Q?+anQ-9 -zZ(RoJrMJhR_R>EGW%HJCa~XWS^!6CkUiw+kKac#h41|Gt>FqJ7z4S!Tvg})8;Jx(r -z7}Q?+73AGpW1wDodkktXbq78Da(4_9czf{m(%WNDd+B#Uz3#a+2I{4^$DsDoAA(*! -zd20;ROK*=s?WJu$YEfOafV@)dTSH+j*Y3@!5O$b)80Sztb@VDuq+qj>d -z%O)+GUEs{gn2EHM2g*}ycMvKy0}?B`1POIvK;4T~v!z|)6>N#EAbD&Gq#89TZEBX} -zLqC8^4ntWpX7v3{uA6ug&7d3nJn1MV;@xSV<>v<^IouwD%9H*ll%;jYFw>8Lc+%}L -zs66TOQ0BTd2I5J#$Ds10Q=zQ+))Gl{@ -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 -zf%>)5Z^@?>CpnNkG;Ln1{z -zHHJ?_u>tJx6P9oKlhN=ATBJ}NWISzIBl#p{86_zQw4>IF2Zv$$6Z -z@0|tn$kZF)qyBeRtej#b;3Ax7S>cqv%y5>s)Pd+dmsU -zPJ!xv4fOo8(Qr*D=S31FpcX^~erAjng$n*Urx^kr^D}jrhXJrjjF(dog;iF4aO5;z -z_^2t;`}F;Ga!N$qEqy_sqd}?%V4`$vzStUYLDZos3ZbHa4FX&bNz{iWFi`U=%NcWE&9u|@OodLJ~?VXSX0`k#@F -ztCeUh7HZYkVVKC;Bj}qyNJq|MxQ=6n_azqlF0YE%Ln^0~gC#VJR`#w?>lQ=n9^-LR -zwOEs8XF{y-8+VU3Q;g~}GLcd;)fdki=0C$C`yojPl4xI<$vUu-kwl5e2TmqR|55T$-_n-DplMj$~VfH7QUa_;&N)=1D&0N; -zH4@AXQ(2~IWwFB-DEi7trH0<3RtH|{7^c1u6vZ0mQSPi^E`YroLG`9BPCS9XXVj -zvy*6GAo4epe%qFn%f7+urd&0@vhHznwz6-|5(R};6aoaHG2B+84k52-bx>K!YII*> -zNEkGJ6O1l82+d7+PWt_P0=&xzyLk>w6oV!WX2P@JU;(z!ARZTX0$uG*7Fo?21hn$i -zJTPJzkxtil9pdg`QFjP+Y8Tx~s9y)0@w1D%bWY@`QPS@y?hTSuFTb#XHGmoSeGZKs -zpiX3yk!?MRD#T{W@rfg+3aw`&P(M)ziCTC~XstX-?Pbg4y=_TTe8>*k#`SD)X@y7J -z?h#2-FpdrDS?muqxL2XlLfF}d=mSu518V-=(*>$60@s|aMv*iuJgzQXV=Nfh!EN@l -z3v3wJ3^)-lAQ;k>eScuJY%@DPl-04#!psD9z#QUhJqGu$ku4`yRDf9V{$Q{WQFM8j -zaEvuf&ZBIfoL_C6Q!iFPnh}mNH@n{E7!GDkf-YNp_St~gPepx;#Do_1LsqpBb-&QE -z+BkCXu=M5_60 -zRI^&LuoG&fBSqo;=TJZ)n%Su>k;G~BB@s4QBN(~|33Vn+e6r}daUl6_#U0L809tiR}DRK*%4cgLf){y==b-db170k4kC?6WRhsQPS -zmikhA`KR;(fqy}8(N{;Cn4{%$U;zMc^>9K)j{#WBqQ`bozNaf4!%O#!2z3t)b?a{U -z=17rywL(yw*s@0q%nD^<2>GOzJ;HBzGZl3dD2cij0yGd&+jXa(U@d#tmaNbyBG%cO -zC^1;5cKhS9fQ()U<|*q?BfJpxP4|k4p}b;Zn6K0h!v{=^A^}oQvqA8sAk^0I4ilp( -zFu<(^-pLH^chRzV*A`>MavI;!usD$F=z~Y{;Zq#JzgXl#K4BDxb9qpV<+8UpoX15! -zruo#5DyqIATrS58E;LME$`CHMiV0%CNQ{UH`~^{MZfIH5G|d4bgnCah$E(8MhF=&Aj`WbDo=6uHX%&W}chDFhJi#J!nFA8AxPsNr>m?xD -z3zHYp+_3O$WnlUW{$Ah?3==(x!EdmF9mWVj^CDQ^a`0q*`K%CO4EbEV(!vBE&W71W -zssluhEiVA){7Tj)sQ?ln2Gi(X0D&wz8X%NK_eO04S$ZA#^$QRygoE>|TcZbn)7G%I -zfvmwW75VWTB5Jf8v_fDYs$tQC)cUQ5G}D(w4*(dzqVe9WUWj82Sy+v!W(DkZw(3Qp -zP8|(Z*@okc_M)RFvS==j#Gup#@2xS2FA=ds6y80*Qd-Wd(hzkA&qzu^b34k!x5Y5< -zdGT$nuZUG(j^f+Qb+$&ptOwFX47fffKj96zkfmN=(a99Y_VKvhC$zX6#I0x1qnYDm -zFD4!o*}MTvY$V2s@qy<@%RZD*BdW5QMc*Zsw;W|sz7UE)j7RroVd}h1SOYl(q?;y~ -z$;W3e^=QJ+vA8B-jhlt^RYjHbgBW^x`cO+n>W6FdQK=!TFN6i&-=z?>erMF$o<@>S -zsJ#%^=>5DXWq|~=j$$NnYkQX1Hb$Lyh<_7xm*a4DQ}I?%=cy8=QdtrMpjoRVsN@ku7v^J6}4)VQ`6qI -z`u#l5yeA8_w)eN>4~CgD%QMeB^KA3Xyr{3JY1xCoyw)uBh<%x93*2g=xQj0CH}um< -zueLtx5M@$cZuX`8P<1#TQeE# -z_D2CBj5BWHllPxlhf%oy4YO~F-G(Rlw$mpytM~uT_?EaUph(}hJ?^GN>l>*gOj0Mm -zjbsENVN`daNT+sofhn(XvLv^~X@=>P)>v4+O-+o#Rd%3n0}{>0I^(7fk#=D?3JlPd -zWQ$X)?PzeLiCP*2h;h@G+M4Xm8Yg%_NU^)7bWMXg8aP?gmvxVB$>v)YS<4)Ee1B

    aav3`R||D_)Wg}G*Wf+TI@bs>obM!@c5)C( -zsjq!KyJMLDNMn{IlnZ<(2$JWj;^LblHT@GVmc&fB*p4>`(*MN7#gO*7 -z>nEWL+x;+cVI<=eXH8{R!Bt9;Zb?eJ7y2|kb7KHP`KNE8Crv9MeNcgyPLZsdfG+HLWW7&uU})(rmK^E23ua6LY1Hp2DV -zCj*591wU{eyVPeo*E7F#9;~+`=rqYe?CjfWi_aV2D8Xn+jm2O?YNv|p3Ox&O-MV_u -z&e2{d)ctU?srr>v@mUX@SLju-v&H`@vt0w55o=IASiW_xL38x26N^uH&*97mhrWHK -zNvv%*zQrs+*Qr8_Up!_d;sm;st(KsHbt_|?`5scpd_UG<^YOvsg)4jrbrK4BNHs^_ -zZLa@U;Kdr6zS~_hX{ofcj#eDWn?zZ-yrL;gJ8`@Ec9=!?jxQ{{(V%ti;Cxw}zB7J+Y56u9qX0j0)DKw>fOr6&r7oz$S#OxaM@*ub -zjoxmm+DZiovBxqp)r`o<(wdxbRMn)L!gl@5OmJ$|q6G!JqAgd-8Vy}P5n2-Gkxn{x -zn$w`i5bg@Ln(uLPV#n!0j_(N|lY<;fJqIYu`^Y4QzXxyCD!z}UorAKlx#GqzqJKcl)AdIrArt+WB;7jG%KN*v_tTwYv`xHYng%{^#6TjA}N9m3w -z)RP~$TQ^YPZs9g^E>mY|u8q%wgfB^x~Ca!yG*s>sBA;`-RC -zrzU=TtW$~#$Kjqou8@^(bs8&H4Y=xUbH%=m#$RNPOlUC&-f=}}_=mzq`-^H6CpU2j -zVpk20#DopWl6TDI+CY1WzGM3wW)c(DUs7UKmEKek?V2sb7rbLU^!cobU!xMizs40C -zmc*wCeTMv#H`XLrR32lA_(>WWnd#@5)0U5W9d -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 -zOh%odFMDYUlM8IG`tiP@1%&A@b{f>&eX!k -zW@@1*X5k;ORI8omY@cE2WwpD4?@h*r8Dx{Bk`9p>p9b^Y$D -z7PG8nXbCp+KE`va86jNfY|??mT52ifnw%7Jueag~$%S6h+>we!hTLr=8P*ODukQu5 -z-BlF!g!&fD&Z_i#1ti+-as7MGFyU&Vxj0nj{KJLpJ-Dom0Sn!{jj45s{w3{)-xw!0Srr;Jx<4n1qv-r>z -z$zfA8b|frkA?WNANWPTcmQ=`Ztb5^5IfK?Hbq5;{l}dYw7MZHDoo3h+XHUgNrp532 -zD#}gx5sf4X_+XSV&!-5`Wv~aCOrl%=>-(#=dN_EuzAr9B3>9aQM}(2eX78x -z1xR+9a{}N+?+QskiDJomRgmbN+kGX1!EBZ9?`_0;*Ce4lB3`lpd+&0?Zzq>6SN(I~ -zG~Bgr2>^QOSaG5`5?^OlSQg8H44l^Y;$hD1XPLCVlJl=8M_@tP -z0F#*9WM&+O7too_tv{?}`kRPgDX?;o1-@1nJnaO#;I+ucqb6+#Ra(D%|3o-StHG;6 -zc*&RV4}teU6SZzgh@qD8xbn5tv@lQ!)M_tlF{~5rr&}g%gvSyXc9id&VolB!=AZtJ -za-n4UJk`mb9b(cNY?5}W1>#gob+wGXDOob#DdIr8;KvrSi5Mg9(b6B=niHM;SNZKu -z+shqJhUBE{4at+sXui-b_^~CTbDYc`ze(2%{oTJsWds}l`OG;^4O@m@u;%wdHZ_O% -zkYz35EDOzYn6U=uI`~?(OF-qV+k^@v@LH%K`!!iqN7a$SAYn`^Ksg&-E>*Y916iRgU`d?S%tb?u$tNc< -z`Rur=LyZT{sU=x;;PP7A+5I%Ihi#WaOLhbf+gKGYgxFPCXqN09ojjRnP!iav9K@Z& -zVcVqxQwMR+T!W(2br6@fgg*5kP6RtgZys}$qqkA^%nkaKUii?XAmr{F;iht+_Ekjt -z0afOhbHuHze0Rg43ORaf>OPOV`v&1)Qh0M^z9fRdroVb9x2uUUVk0mWq<5%dgr8YQ -zG6``0!8L{_4D{-+m#l;qhDruy3S~2klRH|YVx1sWB9hTvKLg54xw{cx*9puVQ{6|b| -znm=>6B<@<9q^ms^$lNJ~K`&YRut#7zP*Iv4=r8m#(!^KWNq=bv`hvpACcfS)BzK94 -zid1?nla`m^2lq#m$Xrw@K9m#V1l6Suq|!tn*Jo_MueFI|sen*Pjc@1#k1D{mVt)rm#M -zVSu0B*)Ggq__fABwsOhYc{Is+RiZ}EtJ;t&1;4P6&C=D3%%Yb;eWnA%SvUQ$gew_k -z#Y8$e!^_kg!@VA-bgR3fY>0`BcQBR-lSE~7lNVLHfxQ$?63bg+C)shC2UF}qE#dqc -zE$r-FSWEMC!S#{ZV&|B{Tp%h(Na1cLxf$-(PHx~1v+!*SYOC_w(;aV7 -zSvZvz-uj7ImY%8HG_p{+X=I^xmeEgWLc-H^phfPA`x)pz^|y3y8L`~ZDvO8?BZ*w+ -zWQba?o;e+1YPD@=$6MVi$21%1j8{QK -zXOGl69h|tw8u7bD@VnV|JKPXzS_JPh`scYM1E+oY!7CO$obgHF4!lhe3a4z6{8EP< -z8csEDLS>9Rq%tnDNee?yc&?pe+TB)BXWBk=f_Cny&2^{|-;BCbN~(ouk9KY~i(WeY -z=m$TBc5hgJ5Va7~ME!1ruFp4%sPe%bPG4|FJVQhhSh`$q-3rleNM1FcKt(9haO?Yj -z*8j!>{+AxOx>Ng{hYT+?L$N7!Vm=Atk38gtWGXv7Vz3S5IB$-LJmB`jZ5R2OcB`jB0Rw^ZYd{KjJUQOIwl)2~q`E>MI&WlFpp0|BIZ((_!J*_sSuKUYCcBYB1 -zvkhKR+CBFb82m_q(>)7>NZ~ZUYzw+xov9W>%BAYa -z`x+`A;lUX7(2-m8ub#P;4 -zpPYT3vVXszl`FyS&P>5eI6B^~djjlcgO^zl5qx)yj2FJWQ&!Xc -zY%ZJsXZYFfiWOgALMiE=XEvWTjvTbqWShG*PXRCOvQAQi|KMGU&+MOSk`;08QWHZL -zpwBpSS6Qx^?$ZQ&6^PHj>d^V0KHH#sC4J#P-7Ce5bg!g~20txWjBUvF4Uf@NsPwD#;5J?E -z2Fd}f`fywCb;UuHeuG|HOJDB#CjHE${}2~`aQM}WEJ#13aH&^VeDx)IdYq1_XE$t} -zigLwLUZZW$;06c?N^cN%drB>2DuUf~Io|}b2Bta9#5Z~klu@TQsgo;xm0Ncfye?{g -zTcsQ<679*scyOzUL!R^&Q}q&?#6~{EJlzy~8lvSBc=AL{`b~O1mbnK{;w*!$rZ>Xv -z@)!TuF^=p%D_39;XhBm~T3BvXp^?tZY{GtjstO3be3KZ0^!stU>RCCD6Zls@FG$WO -z6a-2R;!Y9mqWB)`*%M2D)!y{yk(BZh4#`GS!bN7Pl*`c#HDQM&=|97g@(C>C#G#=c -zg5=caEed#j4K@StG6Ernj2Gy#)!b^qgaE;T;hh{G-e}q-m}XP**>)++Xx+{TH>E#I -zj37sg(FMx#7(rMbqP*&?o6QTm9cQS*hD8^Kq?0J8|2k -zAEMnD6JO)Xc~1IoA$GY+Wvjf(Z&OWt15e=a{1$3V#R}6&V)`X#tP}@rN?XJD(awHH -zsOKzmqBZzKFS`DjlZCud-J>0{?l=*)bh`-~2|>`@=Z3Cv7g_G+ISpwiPD2)8am8x? -zvkef#YX2)nItz5L`_F3L8=dExS9t4@ZGVv@!aO8UBcDRrVHN1zf9E!NV@aM=@IOiO -zVtKSdE;CU@8Q@?oER{kOf>a?5RvZ6o7M~3ob7Fp>r&qi&nsB}}amzIdEXp$q@##pY -zpiI-ucn4{?(YwIsipM48%*l2}9nrg;dbv*}g5YJ;A1K`AH4tfG*`bM74ou7F%Xoh= -zaT_&|F-%6tI=IEga>%OingLrztuxH9{U&3ehLB_wy6cH2$~eJeWIC0M6M6#ABUf^Q -zL!XvCF|3BV$Q-;QyMktAsu@McFjX`i;aLZy`EcI>Xena^RkZN`NFnDr^y1wO?1Yt= -z9fk|u4daP*?=8o+D;0EhVSYtr$SJ==ypzdRujXKVTq)xWU9spieJC&ETXys_*^Tn9 -zk*N}!Yl03N7;k5LwuvXe;MwR5yr?lk3w=vd&jO05<8&1>Npz`%n``3rw%z&k!r|U{ -zwcIk!=eOl1Ze?74$Xe`C->+qwGkisoT#UP@(1gPz_~1DXDk(N$j)O`#2;exV1l8eo -z+cl!D+Y5k3EgLW6d#*n5v)ipJ;iaG5_94LCY5-)wDmSyJmjcr5Vlzt+L@) -znTa3f1)|-G7Yz+Yj`32(+kBQJ)r;y&2=?_A%yzfF;3$daymrSNTFb)4Y|Kz)9JDSo -z8Db^pcE3~sTU(|<($ussRT!f-?EmV)3eO(%tSm(j%ORtej2F3i;?;!;VD14F$U!Fm -z{?rSV`d($d)+~!_k}kGAP;(4Fx6Z@{qm=%;i4CDpB0_93$Ek)vaK|=;m_UROkf%1D -zRm|)bwFqGs&wU{yYOV6<_ax_ZNH1qZI_6lAzOCbhN9d08;&6ixY9RrY0!#2Qn>=AB -zCebPE2ZDMf4uXhlNiHOLd{Dv1y1NJnOMp}B+thfz7q_6vOOC1mdYj(mggNl^SWcg?Qi1TN`VF86KJGn*OQ$V -zmJd_F+kURLmEo}5cg=OB-XI&8JqC{#;|01vtT**4w> -z@J39iVQ>1T3%I}Y9%I&azLmYXqA(AC#}qO3;2M~g9Pz$uqqyJIknoIm1b8@~TaQtZ -z@jkh9BG|>!P&k1atxJL!*`kk)XSSbdgVH-B8PvHg#o4X*K!M2UG{O}Ns50+M)R9yb -z-nVfOS+*w4d7urM%3DIy=SydtJDK>Cjmfo+Xjb^IMYD1`a6!QiOSdB;H=5ErOuS-4 -za&g=a#PK0#OaB&xUvo<)s1B6Opou?Gn4j?%T~yu*TzqI_Jad4OerA+ht66KwJKx4Z -zaRmFE<4V&dsoi8igi5i?@sRnauv~H)r2YV#n+6Yf!u>*}$bNmQ?JLlUL&4 -zbt1~6l}NQnkN8Md`jz}P)}2F;EkcSK_RX**6YRwPVydd^OyzEyYxG|0OEE{0V?iZo -ze{_5*R_tr8AbXh5&WI{Q&kC$wrEZbT(a0k_*2~yj3r*af&Sft13V8*n-DHmCw>c)> -z3MmFS5`lzWo*ERA680p>iae}(dFBqQmrwB>4}h5>q?Vfat={O;P9zr;>6E}&gQgXAh2 -z>i8{Da;q6;W0%ujH*IE_Fdg)eHj={?*C$JFGlvhMyZw}e-+qGMbSV)%b}Dm-ZdkJ6 -z-*(U$iR7-?FkEsZlDlq0rsPQG*wJ@bkno>X{JY5*O0wK!oJ@jPDk52GGK$r)6edWT -z@VqcbHv|%erEr-E7a=|$DWvQ7=;@O~9!uy~A2PJ6M3fKO?fh6Zi>X -z-gg72yWI@44|UCqPkDArRmf37pluR>MpJZA}ra2D`RWIB}8x&cd7cO&y=Y{he -zbtrpBP39(HdFs7G2(LfU&S3|@uQS66-A1W$i(4<2;&yZ!R@$m*S)=jrtd_zf6_?kw -z!potT;gCj2s~Kiv%=j%)ve67XQK>vb4)D;kye-Nh9qrZ}r;|osY6Hn#297l`?6qwQ -z<+sfH74zw~F!OQjs=~i_R>^i+uYrSjqM%lBR_O?#S2*?%167@InY+nNm8pmXTDzzB -z=oC(KGk>WTSmrN9%E;k~1yFCUXFjD~#>}U10oSE^x$i0Fm+sCO?^($@EH=7;)MbY| -z$CZuL2CODV%#RN>#$!hPpEv_HSDay5x5A;%Pfo?a(fzKyU~?%7URGX^ZZ9y)kS`QC10*?Ft4u$~HkTbopLf~hZku$CfEP|;5`#~?Z8DK+)jLe4 -zb>3!vp}DnR&>+{XG$e(10?|=Q^Q*1?X?)rlUxt0Ga#p|uNc#Ir=8_b+(<}A2@Cj@@ -ztVq_#vQe=nGI&l&hvnAdcfZ*GIW-3jYzavNrzOn!dr;z#te)iy&>$;2l@r0271KS< -z+(jK3(Z~CZK!&`fA4~j;+9aOe=6H5M7LL#Oxyhk9cqgGbm2n^|qzx1rnUG0Us!JfgFWCTo)OP4N?1 -zpJUe9)@!uIY-aRMIl*a^;~9%j^+ZJnk$_}k2;j8Q;{lM|H{5Dm5n2D1ntM}1G&yTf -zxfokt$WyKIE~*%zPaY+)1{}G)1zNZh_YIyMIA+#-+;+ShI-9T?a^F`(#%9=LCNv0V -zu!o5=raLQ@&G6fMCc0d!M6Z)1hC@medB<9`bY1OQpHS^NDWLaG?SL`-OTc)}--Jvo;|1KpJeKaP1|_w;?cL -zWT*!d+3#D;`#k9k(H=Rpsu1cSmt1(1+-eifqRJq#CRR)=bjo=>XJVl_cn9RYD!GQ} -z_L`+8OZ=FHX2iqnu_2P^)AsUdi6)bUTat?ir99H&l%_C(Al#dpaH78 -zh*lcd$cI$ncA`FRa!~70#WLGdRm|Z*&kKNw&8H_*vDRMXCuS%OYGSAu538z*5y&Lrm7wO4nJBDTBCwuO`ovRPS)I_NiJ?0AA!xSasW( -z^Pf-($=IOOn){|E#G?r9Mm=ZFRA@>3V5(VVy`VJcS>7#J-j%cbQL(%+sODJ6UM9!h -zw8ptsnb2KDYi9J(q&m)1J&&90xtw>rU}7`ik!P6LOtWOr^F_@BAZ=#S1Q`u_zHq30 -z;3SJfo{0-hINQ8WmGvmWREe=EA?T~ve`2xQ{nv8?O|_eAvbVXip(VRF0b=BFEw~=p -zfBEZmkL8QPM@?t+2|}1vATsN3iXPU%R2%+u`(``799egcIe%4d -zvc-V2z|V%Gz(ZzFg|U!KGch*MY~DV#B9fO>WN|zpY%UY1v!fR3Y&>5;Etm&tFkdxk -zvdPX->^8Awz-~AT2I0Lf#}fBsa=j1UE`<15dnpUHPrBy#BJ^s}Eh1Ed43Kx0{07 -z$nj|3PcRj(%fx<2sAc2)XT|kL+qaNhceGUm$}-vZhvPh7j~TJ~!Q>3gh|TvWuf~kn -zywk)6;Ay)jS$GB4v+hq$Si~H@f?a$aw~=SzvnQCt6C=s1U6wd2xn7=1#y`IT9#Uws -ziLimO@UaZp#o6P8{o1+vOj+E#UvjpxuC{Z9brGR&vLU|8X(CYMOF~N}$2yeRx}jT4rJ4{z~;e -zlRX=QV}4q>70KCHbqK;g(nz3Y`-t05iP -zjgAfJu&8Trf_sT^`MdFWvRZb)p=tR)TScFeV;w>!8#Z&+YR;VmS={xqRn|$4t71BA -zpRfoU)9I~4D@@?1$!>LBCPq@NiG3Dut2uH(j>J7#MMZW0&eB&VDKKcnU;&bSI>_^F7APq;Q}yQUY^$>;)x-Eg4b -z4yF=JPM>Ewu;$q^k}Q|P)uvPq&^II{hZ;J40bRSvAK_jE2-+=StNm<`RM~rQYw8mp -ziTLZuDF7IML#oJcojra#l$=s(UXA}wx=zI3N=_L^?rocUH#y}ra_`yP2gxa?ll#!- -zKGqq@90a6Qdr2fzsdOtL0V{)do$4V=Y}jwEe}`kM;5T1<*SV|Gm1MOhtiw9_xQYND -zdygb!6a1KxLtMY-++8_dns>F6UT6o^%~RBsZ*l!J&wgKWVjOfucz;!&-R;_G_X_Ql -zCD2Zdb1w(&eoZfS#b_X$=nD@P+x%~4^F?PmDPsSE+!%6HX_Bc3n_*%e5lNu;0d-8c -zv9}@2Tg`OTCZhghhi%Qb{@00Vn>#)^BVnJady52oN&-G50iTi(1Sd&>P5Rq}$4@8( -zBq&5+X**6wUw((P;m}4`bPXka3hDE0nllyY<$pOs!a18KxwV&3|Brj&u`1+d3M99w -zY@dmii1h7NwXMRAgWE($IUFfdvuhp94ri0SQ5?nesz7D@woPEv -zcE59`=xj=TU4z&kaZIRE+A_h`n&KkupUNGXc)1UrC5N*uOHcte8XhY|@cB5`ZV{AU -zr*}}J*D+pmVaZhjlIwk2r-c`jt(%ZUK9!@r{7{p&AEsb&@DoMXxbo%9=#5T;J*-hR -zd!U77kbD}_cM!wjsmpzxTUFOszD0BmF(WXqPGZ|*Y@O83-#zR3fsnGhpe7vwn0H&wZH@{I-!?D-X}h -zZ<(y^5<)ugS{|P5o;|EP7V_&p@=jvJ`QQdP -zBjS}m+2{y;tleQHhzWhmQiWTT?>Ml-IWek!9a!#h`d&<*waArpQ(EiXToKv(dC1nh -z&*|6ew_Ef#USxn!s__=Od&`kIJZX~eQ;|$BZS;~KptH!{O+jxwU_n{nlZzF>j`Hm| -zY&cPQln)2wCm#uz%U>-Zr?aJ(VOC(TU|&4G|6;Zh>l -zoy(XXJPX;#+I9hmA5*948OvgvN1vzNI^!(pTK9nLKW!eH#OSvg=TZ_r1U8pKR=R;C -zWD4p?P!5C -zzBI8g301;)RWw)2HOCkiLb$FdRhWZTVLSpSWL37L=mow@C=b3M+6_>z1BoNe2RPPE -z;W2n};-=`Gu=#nW$gU -zTG#!jUuUHS6D#`A#Lkn4rOL~hgGr3fjJJP8q$7yH1E{-c7 -z(~VtgyS_|51#8xG-G*=D#;nB`n~zeO#a98`Cf@mq%@f+CPdnax5pLuxMdsPUDvp1H -zH1G=5r5EGoo^*Ys6Wj?u+XM6X#Kf+0>#Ly&``f6ccDC4KQjDUib4VLhM-UnJ?{*X7~rMT4;{a)Ejgy$rNO*XL`%@LB~ -znAqsjr(cMDK$71W@gDWd$*h^5cjTWR&okrV>3w`GDuHQW$O43$D?D?aLRu+y; -zDFaEB*k(5<+v%sSe9bt9lcbn~0Q*VaWh1>R7Kl`Hi;4T8y3X*`IQ02A@oyfnnBc%r -zF#+(mn<7jM!aaqOaS!&%4wF)gMnZ_Q6Y<7VHeQPe~GXdB8IPrzM -zMhbz!KT~)iTnF+thqGQbg*@ile9-tFwxscl#V!#OllBjq@oV-b_&g{_uCqJkwDaQ; -zMGsh_wK9(17Efv#G~+pHHubJKtmpv=Ymfkedd6b|HQ0T`evnuPQGXyJ`K(6l6~~$M -zGtgtZK1gnMP_g;KWDC@!pe#-*PGexh0dF)$nzyCqz;H>{aH)DCv -zM4r;Z2YMI&N(*1?UHEG){IqxBehZnt@nT}Vf77nbsNRLzwVBboP`fr)_b%KInW`KM -z?L=<=g`D18Z!4Bx=W8hT6T@;&GU?J{>Cgpz}B -z;}g{{1%!y)2PK?E+noXr$>C#W!b*;5#|N@IozJq&ipoHF`yO86|LD6jV>;WMJidU^ -z>9R>U29$x~6(4=~nmkpBW%uJ8%gJMH1C=`iwwHcgy;SfJa9>k(?_`rRQ2Ly`!G2tf -z+~4&%`@w;5DeXm|{_G?tQ{dd;mP;SJ(wH+|xp3ZYuQ`1Nq|d~# -zb*8w`BU;-hT}z+iZJ#JLMf(8PIYkyn?vpeHbG}94<1&XOFoA2v3uT#f8z&ce-9w~c -z5D_WknFr5vLolnH^K38T<6K)g`aDpujzXSkU>VO9kh-8g58m?zAFsE}gXxKAUs_n4d-R5-w0uA(QWhTjef3gn%P92EIt;ocOI*taQi2!nx%=iI1rZ1jx` -zbfY%dxhXlbMs}(YpFHQ8!y^!~f%qcHp@w-Ink<#`$qg>ll~P#IFz>;&bhgywthH+^ -zG_l&ClRON5ODz5?Jkxs52n -zIk#C9+$`YE`D`2CjR&o_(F^)K_CxA4u(_}lab`~g#igFJ4Op5#zlNhe)^CGNX4>SM -zZL(rAtmx2ryFsgPl++xm53TBALF`nT&uo*#^^$8eXKWI-g<&tZL4WhT)Mla9uM;5= -zAa+1{6#aU&iQEa2b@ZxX6t?R=n%R!#ADH*-K$t(5K|hef%A7}mQ)$o>e1bYA4J_de -zzeI91CyNk7DteBQlx;;j?Yi&M212GUsFslP0yH58vEcLKYo28zSSsgHk(_7k=6cNH -zg%exhQZGQsa2sj&p7vS%q4p`;_f=r|P!a${ePvOb#px^R>&#bWM!JEdYrT?hBB`#~ -z%p*9R -zGcrkdB*`A;gNYhvr^)4w7-pNB=gN#o1R*4%dF1Bk2ffB*iVsOX=!HKyrMl-vh4fRZ -zdu~kjUso;{F5F`(wzF^8&iZ~;XZ?G1HlSB$L%m^zr2fI&2Y=1n2{G(BcWXw(F=fSi -zVQrb_Fx`|Wf})CXOEOVB#1uWF8!zwrlnv|YXP(j~7A?A))uCmHMQIZO7LfyOlBaF5 -z*Crp}*>mPx@t5APh>b2gwTC&L`%||LE}Z*<7@<}X45nXoiAX~^meWW%w7vH%Ub|vMP=6T8CTe@=l=6` -z_}jZYLF5=HrcSPvFQZ@>C=a*VyemwQ8ZVIzgMWt@;a}k -z0N;bIR~L`q8+b&+l$zXi;!Le+=TVWTF0VPbhpqiqa^G%jl6O1j{ah!Vk*WMe4RCds -zHmEvcX_u>1vWqu)G;f#jW^ZqLg-Y|1;P=xYe9y*Gi`+44Ph -zLBSIiq{q5J>Skn*_X1*XF8~E3srfY^J@YjnVfgjrJ-wGo7XX5`yPulaw_m6OCHGAW -z_3JEEH|h@dg6vffYP*cqSCadt*T5?zjE!fh(?pVpHY)F|=O#I~M;a#W2=80Gywi=B -zF5gVC -zF46cws#NWqCWYc6l^kp>FJC#)K^RieEuE!5=QN(*nq3EHRUU5TA~aQ$D8kqB8dUkB -zxnF)O(-q4rQ=Kobh^OjaHhDxrp~mDLPfe0C7@&Gimh8MDc}h`N1GMx!0>owXB6G!| -z-(Qd{lVtVr=XcL{wK_PnT8@q)aZE7sB}=ePlx$~mC*dC}PyA8HQswdrFu^s5ir-&!;2oI*x8A%tcmUc47h-`)M2P+E -zkD6pJb6WJv8-fra8#&vRuh5}?8e>aY7r&uKpRpuy(>z+e$$hKyp>qVqEe+AR245|lfV)dTvEj0 -z5YKGzaRBe_4R3Ga;1gq6LFyX8cFl6gF4h@E9yJ;#B(U -zC;i<=ar5+B4I&%mqquqZIsZ(_&-)trmv@Z(OHD;Q@_G9#EKhiBTbXL!FMF}klo-_I -zk6D3|_u4T6MMOv*aifB>r!8GSZK?ce*N;Y>_d7e#3%v&VuU-Q^-;;RWxonpnGcm=(n# -zxlnhcIFh{Q$rN2D$gO(Pv=pbCd!C?O2v+HJruJsu$9mF~_pxG-%ZuE;w;+itSM@CK -zGnHK+spt_?R@sI3OoLME^i}NskjeX!qm3qW%9mQ$W(!aG66WvYH!W=8W*E=?JS0HP;cA -z!e{zq>#%)lGyBxONzbKAQxjLLIi;y2ksI -zxJ@z;7ystnnsHD@XiT -z@vx+iH4;%$i}>s_4kg&-T}I-%HXIGhqo>VB!-YBmZxHRS%=g}$b`A{o1@Hp&Imdgv -zEp;J8cott3`z}<_htRJw-ZWHKu3LJuxr@hgmfy^yKC^^pp`36$>a5@i94_T9+1z}z -z5Av^K9$kBnL+Y@`#k7={X(*Hzuf0NdD0A;KN6*Tka(S2Is`>VHE207=&~2W5@(OFI -za(t4dT0z*`SmKO%&htl?P-UGdnJ35Ta!&(Kl-p;PX`xCv{$;zko?gc -zucoehzOlbuV%IN)ND+g4NQzIGJWE_&>U&c1358P^LWA<5PqT#2O2wmu^`#5#N^o^2 -z<4s2s;HaJ7PQ8-fkc|RFE^!ccJU>bQK?fgk+ynb%-Q~g8k_CL-?OAhRzE&x)re%Q@ -ze5Eyx_qo>=Zd)PM|>bQ`DxQf?5Z{c;PSKW?NoAetiebzE}pL_#I-ac*R -zV=ngk3m?u2_gU+q)p^|(CMsT$NW+xJ6P%s87I57Tu$!1&Y{sraKYJV?nS=Q;jZ8-bbSzYEC=oE -zH)}*N$oD%e*I+r8X`g%}l|F+9h_FGmovz&UKxJ@mD`7W;Zdo -z3PKF?K_p=}Rj=lnK6_H%H4)C&=K-_AIm5}Xwlm^{k;3mk#GRir65WLyd!$`;sabJ> -zkD9#l=PS|I0g0QjVLtgDP1M<5_5w@uURHC-6U}>1-3ysE?-jZx+OAXxMc%H36t_vF -zOx4A?zCXSpJ7DjHZj8ev(rpSG`_p`W(_7m%kPTx$(t^(EworvlyHsYSfzf3@auRxg9`+AAH&j*my7?U^BX-;JD -zXbJ3pPA;ss#SslbZ -zEqOI7dFo$fkL?A?M=s7vj`fjbo3TEam13TUj9oq!81s1BF_>frjZon%&K_*oq -zJz;TsR1q`2)a$JD@8Jx0cfG3eAGJHvSyh?UyU$>14ijYbjP?|OZuKF!&2SHDQTDng -zCWSo1t4e9Uwg2*GE4k%c`!9dCRzX$yXKHBv?0-cK{Yuift0!snT8>H?-DxLWhsV&D -z_n@BKNT(JG6?BsnPe!m2~GwiTV -zYmX6zWO;?9Jqmrnavjes7lkgD+a4AqxlgIVs~&)ea=m~l+hQ=&yi6YaQQEBmYJCn_ -zfmk8H`wFDbA=w3~&bVEhIwY;nO=CXxn{(;*pmAQEg -zt03`_lthnsTKO%lz3aDLv9|hKcRMdC*G{Y(XUI53LH7t|bJ=BF6JVf$$yOAQinWdH -zDX9N$yq?GsSpMmFzG!qZ%y^nyKv7DrCO1`>W1Hb4*gXg8N1>gxGNi8Gyh850E;RYO -zdp0jfHHTjtchi$XnDWF{)l-)xFM1sDBBICcl?SQf_l@1Bxr};CQcr7@@~uu967RC_ -zB(_zo_;Y&-6Sn!gJi#&U&j)35)&IHe{1nxRBRT(rUITsT4U~F8$4U!bD(@kkg4D#s -z=#>lXa@{TeQ>l{S*+(tcX#?)`>iUh)-=HPUos7yDYb<3?S2SjI^s3@DZ~JG>1F7Z* -zuIn*^sLOT)Ia|u=^;-(ElCSNWyMbGKgY^GNpYFfdXKkemKD+m3Zdh=wB3X=z?l5}A -zZfVzV99U?;eH&ImF_v4TSIzz+WxQTil>EB;H!aMUlcwGS_1M$huuSN7S<+xyj1Lfd -zZbI3`CMY2N@7~suc2VmvwV!R3hma01Ti?p={ZPjvE$Wpf5z;UCDWnhIm4qup!drU- -z-y2K)`*+Pl)puK8DZpc=ua0C&5Qu@`)+92JW_?Y2jhr -z;RVZt*M&oeb%Y+h90R=140+2V2G_tpc|A{j{v?Xs=HAV1l^TvO=KrvC-16RqqN(P_3VIhdQK;B$D|x#Y&U97UN`BX?P}jDt -z_9b2QZ2bXV-nfRp>V5+vUU?+0{S5j|@6>~9AQxYy{y6u@o85k?Na@x@~QE) -znH@*#rOH$FQ}Cqg4}TBO-sRFm8Sn^RJa`8DV|eIqufUT^p$FE#tdI0U`gibK`Y7v@ -z>$RKfRBQc+2T!Uz?AH$dr2l?JKgX8Su1w%a%`4T%J~L+WrNO+yUcPNcvTHNv&gQo%$a`XQ}cO9RG-(3cKh@$5DF9_5bh3 -zwF?J*cyQSL(VeG!ui*RGbdFbU_m|L-oqwvmK(%}D_4hF`mA -z>G1hiUVF{b_(cn@S$6r-C8x(rN1Sr%h||W6IPKK<&}&LZGtQX!gzuajpD=U6>G9J_ -zN*9b8ed*lz#JSflI6Zzr)%WA0OGcLrFBvs_Oi6t7sME)scKVo8;?rkc5WjHV()kOd -z+tcHtN=_LwV)UpnrSY@N&zTsf^0=|{FD<=nOsRRsOuWbzU0O2gveV`+825hxaynd3 - -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1-mfgtest.clm_blob b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1-mfgtest.clm_blob -deleted file mode 100644 -index 2538cb4457ecf805b2903c5319faf3393c4ce6e4..0000000000000000000000000000000000000000 -GIT binary patch -literal 0 -HcmV?d00001 - -literal 7222 -zcmd5>NpD+Oc0T96$3YY)kx!&%Q?g7Cl39Q$DF2C_?b`3cD~K#)ZcAPeO?_q}VEol15AA{5QT -zbI(2Fcc)Wc@4i~#WC+*sqB_^?#aNrzjCQ^ue57^{%s6%{^X1H7f-(Y>S?V|F751-`o5#-|zkL4u`J0z7zx(dHH{bpG&6|Tm -zJ{a-Agbz-YcgWr`djoDBsOAYb&$)TQtwXET<-aPO3RXWT#F{)GEe9`tx{pNBmjPI!3Eqx(EM4UG?Z+~#qY -zC!@&ZfjS*8F;0f=D6T3a8iJ@ykMK$S -zM;dII4wVtB_D*Z)GvYI{zKPIhaXx#`J|b(#Jd9YqIFwk*zGTN%+_O<-DrcQ-AJJi{w&K>IPQRgmos?-sz%X+wmf8xZ- -zvP0oWbS5^7v?wbYPb5?6xlA@{*vuT`S&nmplS-+WnpJUYCKj8WjmP7OcruYlCO1l( -z?q*~2>E?^gSDW8&zTNy`x4zrh{l)H!-B-JBs}1};#NX40FCM;n`1bQ(e*WU~x8J__ -z_SLs_aXYh_o;R(1`aD;1S3sB9VO -zbBfBjp`2~yxXLN3`4Z<;uB`H9Uf@MuvQ~;^g=y>fS}${vT`nKGG(Di{DPiGshS)eP -z*%cOe2A^VGBvc^V2e1mpP>C54f0f3qUtgY3N*M%gKLtt -z0TlDIB?RznUZ_Q(96#H>!;) -zRCPh}8CFkL{ER(WpeLw^YGkM(j<^|evs7QDx>U!VBNv*LFWw|(@E0L^W-g2XPJJ!L0{hx1S|j*Q|CvN)+OKxbcNN4Lnqs)d=Hhs3R^zD -zSfTQb)%U--n!yhNQc>!k5uG{F{sAQdPm0jiO3@$6Y{3~Os9S-y{f~ZsXbs4;g@a;k -zYlz$M0;#KC4KhAYlain`P1DW5H;F~0B#Sb)ES@dOYS3{DB^l73-S83q^vXx;NINH) -zWl0V1%8HWZz{3wHH3VJ-=ffoFk)Ft4y@a{vf@;0f0A27xMg5Um4HR&`z0gcQ^M -z0LE5zg=$6Gmw}STUUgNkJk`Psa1|;Gt%@fu{eL;I<+NV3Lp@TxuY-2K?afu_5sNj~Fw5ap=L7h|2i`W&_ -zpMd|TQP5|I3H0yq`C|zG75u;YGr|=l3*s?lqL-KdN>{(4xop;f=mAB9lXg9#B+XIU -zZBith2vPc==?kY1S`=ANUWe=Y68cjsV_0Eh!#C1Ed1I{^YN#Q)iC3@0L)PJ5Z3ojKv;Z0Morm0ucgwvF8q=HRE -zq2t2i#t*p}gyS~56xmKxpc#dWgu~E`!s$qx1Im||?tp_R65&}YG>3tQO+=9lr@%Rd -z^U2HKy3I2)>w%G(qF(tDG)oi$3B0QU>j=l^Tm&4fX`h2vmoL*oo;5^U@K6imH5LrP -zL!FIQklu6)3PWL=3b>p`;^71c;8~;Y&}ha>&YylLpq0{#$9y#&_XIiy4t-Zq!BS$6(kESVwie*wNk5o%0$ZOXejgm88Si6X^9dBnEII*5 -zbfkDU`$KI+Dq9NS86CNsJfL*jlnJluKn8%+HEo-?+5^(ds?ZM7n{J!9+EPKmVcS#? -zPxC-eP{9IT>OKb#yGSvOV;Rr8R9w~<9(k#dCUz)Q)Wj~O7Bq2(Qp=jyqtuEf?ow)1 -z6IDvx(8N88tfX-qbb`XAJMg)btW&xJR~f6SfRie9eGca>-b^W9cxa`rr*8^pnvQ0W -zjqU;E<`&Z+nv^RoB6VFPYA1}-y{q$6q(avqp$jBvv~=6SLhE)Z7hM!RCSzSxN3WEw -zS-IU2W$rrLkQv$ewWSqGcTr`%y`zEQC%ikQh#Rg#=A5F@s3^qx+DvQ^^?+Wz<@SJH -z*-i^REHrJR7c3A$7ewcodR@wH<$#tRsO{KkT0b=ptjfMgT_35F>7Y3&IIqBL9@>pZf@>J`$czBq=>Wq&^`5iiZP(u>s<`6~{R^KwL}7C2|KS -zf!_26<`hQr$#-KQOGeUyUR1ytQg$YXyTd@D(3;_D5_nDzU|k5R_mz3U-@euo2PFj8&5N$Q=a$ppl6ky*FRs$m|j$gshKj^yDJ5 -zaoqk!!KUYqHPj1K7z671bQq%q8c1W=zGSx<8;qf!=W8AxQ+7L7!7PKZu{k)<@C#%* -zLF{7#KQsb^A%nxQNz_<2b1A_XQTT3{dW|JfQn)dorLj6T7oqXFF@aKQ8T4xPB``fP -zK$^%(k?9jt%8A)qCZ?2=;I@;Vbj|d@Lw904oWMi9QBRDA6L{!zMiFhooxoL%s0m!v -zQA{4-GEWU6v_I(%;q^2zuAULVrt||zOJWNI(6SW= -zXNvc(gZmdv%YmM0h32iW0%u1QUZnzV=n+c}g(}(fieZ|zJHJ4pjSt}FzetfjdwGBQhbCNDqKASJ2&znUz;oWaiUY5Nw=b7z%c5WqK -zToaj`$SiP3<@152+6vdNi>4H#1?-@C;QW|$_)^U~^D@_wxqiDi3vS-YyRhQ0=dwuU -z9S6G$emBr64Sp*$4bdgx8EG$Pp*yQd2mL_=G3&>)22aqU3u0;&#hHXZbR`%XEOTRn -zTbn%C;w7zn?FKx`^Akj@F4Y`5wWMlUv9%0aYv|uSTjC`J5)Hg(iyTwxC-e7FUcF_m -zZ%E!8Xw5t8@8XW(jsH{mFNldEA}jJLrp!x$(8=RgnOEWH8h$Hu^2E^)TIcx;(x4_8 -z$wb8e?fAbPj-t7baR=(OM2^FJX(uzuth4I4guWlUS+1{g-PL9GgGSF -z-1`DU^$p&D>Sd8EYZ3`YvrK1TISYOO{Ewv2p66bf*D)8(di37-ir{2j%F|kxl&wk1 -z))%lY2rV}T?!a6T=1Ra^;aZXReI?6KGI0TaywT|y`UU^3e=pfX4<^YeYvp-GH>UuVwyJm)#jdCvZvxvWbV@}dAph=F>rT1$&wE@vgDO2mK;FbVYp{#817r}9e`hnbT7b>x9hON5~K0 -zmVx#FXw_MS{O&wM?t%+#L^BGG9{=t$KxL3MSck4LPu%07s$QT7j^PdEsmm%v9a6js0 -z$=%3nC-9;RsAtIj8noNM^8jRgg#4d@Yk&*?9sHn|B7PlB2R9pzgPvQF{&~0zv~XKx`0dJW+U#;(DM-7dAQf$PJ;f>296vK>-;^a -zv)!nt-PIhK1^lz$a%2I*)$pHrh9h^ue+>Qt#C271aH%lUCHM;3+k@U#E;Cw=P( -zz5fjJ{lDomtMer99Vy@L?-UUAw`A&no3+`u| -zF~;CthHHJ6kVOrI9D+-0B;;neHE^Sv&`xl#!F{k5X|@pZ3*f&2kK0Cw0++F!kUMq| -zGIu{A3*Z*PJq&jMt{=|u2Kx4UC<|QsG06M?`NRDf?(5@(6n_W|H}DbiK1E0ioaqxn -ztZ->?Pr=RjE7~3|<8RQRi?%(|cI)N(ffM8PEb8PO>I$w5?(Q!MDMVcs_7c(!mk}mp -z_cfFw0)1G9JOtNeVaS14hHOY+zsjAgL?|@&yyHZI1TxT -zm>1?SN*l(*{zdRm -zy2T`r2a^Esj{$+lf5Na-o&4|Lf7igjYvA8C@b4PtI<7RYe< -zr!Bf4tA+W?sut!izoYr=<&RAp}>HNAS3*ERXQ -z%99#juhOW=zo_t<{uh+LYw0d1#%OqQRDPx==S!thlk=sLp{4s$85hm>il*-u%EOxc -zFBM-jJP_66zG%9sTKom2CMx%7EuSxx0nIQwTg{P#xX4X!rpw{5OT}EV0*AOj`QCDZNp7i5lM*%9~pJC(4SbuaB2cl(ErxM$_lKaz+bZ -zP%<^Xvx-d%pHq%$dY)8>#&=Q~t(Ct+Y0&6jD2f*TQZZ}s9m;-9j}B#)CZ|LBPSZ1} -zxbhP%{**#AI?5L<@5yL+U7CMZ -z`9_obg>q8kyQrLtmUmpVycHU~LwQP*+o^1c^4+6_FDOJye>OTleWv7U`J9cG@1*j6 -zG{3JjzLUzes9as24&`;N{1=p6TDmWkceU_2B~_FEg(7J5b4s~Zo|DmXf1!-hKM$0wa&NoNXuh7c#g>p*sk1HJ--*F{LOaF1S+#e{i -zCWrRPfB*Zxrv^?50qq=w*a>mu>sSD;iDEnOmPI<<0nFc}V<+(Bhjg4y@gq9+0Pk9_ -z<2>LuqSy-@d`zbo0hjzr$0fk!ztQnx;IX&s*blsUgN`L&`&1p50|$NUG@UDeEB>U@ -z1Hj~c9ajNM$8=l+JpT(F*HikJI^F>+^y+vQ@Ec(rH&Z;dQj>oWm`v005#Wn;Iz9#* -zd{)On;IHa++zDK@L&qWD^)Kr9BC!3kj%DB?MaL@eVpYc^9=c_%)$$d9t0w8#4typ@ -z#}44JNqX6xz@N|7>FL1!NjlvFd@)DIdBF2;(Xkh}euj>VfE}}RTmpP7iWdV5UY+g- -zp1eTE5^&-|9hU>!7wNbHxPFz61C;(t9ajN=zE;OIz}MF4xE^>*t&Vp9Pkc$oyMX;K -z>$n;CSQH-wmR`~6M}Sjz>-ZRO=ye?jfp`5u$DP3Mw&*wn>^Z38i@?{~bSwkE^{$Rp -z;DRn4lLSHz{$0lc@QUwrYzOvctk>Gb0eotbj-9}EkB-xUzlvfH@T-G*+C1QQ3-vbg -z0+;0L{6)Zz&ed@V@YBUQUJN|*HXZwc4@R*>@m)H-9C-CI9ajL)FV%4X_}YCst^(ft -zppI*RPnGMq9{9u>9q$0P|5C@hDE%=VHv`xITE_>0U)`YNBfu3Kb$kps5XC{@&s%kR -zC-B%l9fyEd_v`o~@WgL)ECb&o=~x9`AElEKXh-V?z5fGy<8^EYu8Cp?u>VJTeL8`Q -zF6na8fjzZ4_5feoqVwbdKYfEP#|uo7bX)|S7{w*PB~iQ>xFU-Ez%x^HehFAj)p0rS -zHK&d%fTamK4gd$ExC(gvWnG^dVEay8pL$@=Y@L4xu(L$RyC~1?I&KEOXSdFO5csRT -zIz9q?@O2#@13qEV94bU7;UwH6(dMD)qc -zI*$M>Jf~wj@Qx^U059IF)1AOC9oBI=aK)c=>;dNA(QzK-k76%y=TV(r1YGs5j!S^A -zy|3fNz~vw4*blrusACDZs6)r)z@4AyxB}Szsg47{j?Z;m1-$tUy<9cG-hQ245A0WU -zyaRZb<2PD=+eLX&bleQQ-lgM%z*V_AJ_0;{mX41B2X57I5ZL|$9d`nI-qZ69QJyHi -z2>j|Xoh}2PSf=xuCqJJ*3Yk4&bkXx*R9)qp5nkrvpDd -zM#mmthfBwKz{hHInO@+;S{)YwZ>iI93GkVhb-WnZ)~aJaNSuc&H -zaRJ1!bInqXt7jG92!C^R+{e^1uFL=fz8QzmQ7#sXjj}`q5nCvXn5= -z59e9DKU@&!{ejQeULq178}#BgqkZVYwY1rbEmE9&gf}j$KgeV;K|cGt3qp2r@d$76 -z{GH$@^4n@aB=T{!QtZ7j2edEStz%LoalYH@7<=Bk1#!*lTKu-E>%`6rv*)I{d?mNc -z^Ukea9C0W4l7e?gw-zV)ZV1LplZ%tQCs*1-JAJXiBcd%d4LnIcA(%&fZ-eh@`_$t2 -zvLxTN;9T(sKEA!){o!Ie@?b*Q#UCzC9qaZIXh`H*)hpgKSMV2!lki)j{rbg;z!T@j -z`6u2sX>N>vQqd%oowrmEXHMbODXvNHj*< -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 -zL&}e@(e~j7jYAjN`?d#Qc!E -z_&8>kD!KmSq3&mbY&jP89$9990RYBuvIZXlkjOlZHM -z#ae}H$xy6#bIT!VX$2?8acq_&m@PWX$ao?z7@Q&|gpymGWvqPHnV1lhX=rCQ@$!vl -zuCk8i-Q -zZi&qETI9K(ZdRW_seip}y&70X*N7U-G8KdC)hCv%B*sr*!OI`w#7B_7>q>glCyAuGO}=Ksel^w%{&S5Yz^ -zYvpo%tsPQMUBkSwtl;*WyyKx0>_z#bE~ALU07zdSf2D=${Ojz}vQaCSt{mmPL6!~F -z<`CpFJ@J^GX)93+(IWr6M{lLT9m6g33M4;q2eoXdRYT+lJ{`7dKD|n<8X~U%WiI+O -zwP@_HXq>QUX0}5|*etW!hgWeOyYiFERM>SVrk&X9=m|d}t -z`>@)6AjJ@SirNHUrJbo@!|T~5M`N}4T~&UgFR=}ClnZ+)?UX5^bR1fgY6-HLusk^u -zw6w03S$4!#_M47U>N`K)N;b -zRJDDUJ@*;^Q;jX#{0dHb((eeCuHGPh -z?GSJwxWT`!@=eSN)}Ur*2k#JZVnBSbB(`07r{Ea6Jb7-n*es@oe!6Oh^haM_+pQQU -zCVAEsgP7L}sjzi4`(S}dzN_^PF-Hu*z6o3*O_^2u3ffW{*OF(ceB3bK+|zy=b_7f# -z+qBZpHD>uo*iv}9pJRggsKdQ}zW6;@R4I~QN-4w1jAnJb1)GDOMDpT%XRLUGSdYBJ -zs!80@Lel2DB9}hAyx_82`dI0L%fDPRP@3wVvBKtlYz6QBvuX?6>i@O>E&rhvc~~Rq -znIf&{-$^aVU~L#n#2u8CHv{z2E%3@|RM)EvD8Itljri -zVN9)|Bc^V&DAYY9$C%EawTLlIxZk{&>muW0o)ezyJiE8wZe3EC*H$Mkmmb3zCEcet -zInGsOk9z0QyaXnv!_kp4kPKPA7c2R$rO8*4PdZ+JZMRc`4Y|XfyVL(%@e5BTOMCk5 -zmW67XeazJ-ufBws?3PXyci)&1Ucn0e!rGXo*HZc%3k!|U+B;vCmeD@pd;3x%E3Bkun6^^rJ8EI`;Ujs=JDc) -z&||9(N)0G`v6v(p>P)gnH8hbHQnh?;^ID6vP<8rmZ8-{Fn*QP$(^fKmT4?8!3stxM -z_iGPov)we+RBw_w^@qhN72Pc{O~!`fjwOY*uD8DpEMHhq=QDNf{5DV;Q-{&#w$z&H -z-nd|FU|es9EnE!R@MVe8;z9>8Y9`jippBAE@n_9V(eSgzI-JMdawC -zXumTA(?t`;$`bVU32I((L!q<%P`@e8`^}pHQ^P0NneXivtiqJ)){!l_=-Eujjk}Io -zNyusR{|lvBnBG`vZpxQgj)crjpQ$hHFxDL}c=OvApQvg(F24Egx+mrZjh%1yvvEHP -zzS%z*x3t|J@_u6)(O5Vt=>5hDe_=arw+KnQabBl7)5FPz9x=4HVr4}N5BtrXS&du|%6qL?Nk|EWs| -zp}#uGO^I!}qFZdNByO~M3+@Z+gof>JtIt)tWfPaev$Bazv5m+-T6wOz -z9k(O-vYm6o9j)B?s~4noj~-ebkbL41$DndyXjsNR$lyaes~0AJ;CRvh0_F&(E4ln! -zb%&ApWUPj$)FtJ_)mZ-GuTGciHzu4|exPyn)71fKvv1PLC#4%ICYc``&D=Dh^H}u{ -zE1WW#n>WfPBe8k%k5!JW7%2sp7K*r*og*ZWE -zHjfvVgmQ}CR7X0s`iotGt;%s5JaExG-*~YQ+H9i16IL3k#!I=t(pEimUE$I-=%KK|Et60 -zbL -z;`-A>JN$^;soIh{RXe05PU}=t&7{T(`X$*~ggeqp|B#u<{FJ|`<+)pYZ=KZdH=n>= -z!|&jl;9gIyBCo>#98SjTEko$UJqC%%E$B0h<^3#PCGGTm+dWE56+dv?7>ZZ9Uy(`i -zDu3cs8yU}x{{cUz&vt*j%A6qK-xz^S@hW>_Y6{QKPmN_%el>g>qjJ=@Fe&1L7qcZnU -zd0%#yALcxGFGU1T`5X`0os2bw_{k((X_%CBm&)IBUn`S)*XX^z%iSfoKVxuawKQe1 -z&x^lc<2g)UqEV-(qqlh^Jlim7>8KWFlA(*n+%=k=yw~?lcgg7FVZ{Wj?bOQ$aVqtA4b?`L^aCo^R$xQSENUbxAJ86av+#Y#8ARwg?(G_M!gO?BdA -zk)8*Wad~*}$vj7%PY$u$m_}xrF}#)|+wQ&F8vYHpNHqkQJmO|%I>IJ4zn^dkVY3mw -z$rgT+`^g=xB0r0yGd*|?gIfu!7$+LV7e$<<)+B~V#$V4|zQEKoGpykNGxu(0I=6}2 -zM$(ePMqxJIjM>5)nc0vJ37PDfQCK|^LL}?UGgmIK+nE`r@RQ7M7c(=j=idN+Ho#9O -z6WKGc$6Z$NUj+X#(H5>GUc@moXqmu~b@@zD^el{)y;j6q36DiGNgJD=5}DdW+|G>> -z+2^tIg`Gmij|wr{nOWBGM%z8A@dz`MnU)Z?30xyeYPO(07J8->NHF~CgQ7Z#$ao)(IbikYRSW6#8* -zwnl=VmZJwN6*J8mt};DwH#0LKY!YbxANBIp=*?U{>S`XWKGYZTih;#95`DmowC9i) -z`YZI|{me9e=B=1_zB}U(P1;(?NhG|E7(#5->?&pk6YvH2Jd&lfm(QVZ|2QdDTuNea -z!-@H9R7ANL@nAOnBJu#q9fjUFD@n9evAHDkN-%nh5NoL-ZroduZH0+#&xve56U&Fa -zc-81p*^f&vjmhtUjlTL)9QR&7YoqsDCkjG^0!{%U%A1hQQJogx#<*=w;TI=q>Rko9 -z`dN1Wz|au-S?#N0vgi;~LQJ^Oys2QC%5F)q#SWNr`EZeS237=He`F>sRLhaD#X>Fb -zl7h;@ES25yY8!DfPIfvyH3^;Rfju~`?~96KVY6_H>Ttdo9+B@zo}fC&_6xK>Ea=O( -zZfIsVv04uNJe&$jGYFnb3E>QZ=}?j?}Ukkt7Dt?6mVgyd75gh -z;hKd0NS=9syJ8L}7EA|)nKr*5Q#E?oTSJAPpJtk#6v=oC+Q!~Z!t-bvv}{2^hQ=}0 -z_DwrG%hu1>$jwL3;EW>LQ@N_84lcmcnw;3=aH{OA6q~BGlf0n1xkoLkL7%O8QZ&}u -zan`V)Z!SA@Deb$PMN7C4wk&hY=&EE9ZFSR?Al_ekHu_Ape2wAsW2w{C5rLvUV^Mji -zS$r^L?Psh^XfJva+rZ|cp4kpZ4ss-!{Xu@~-a_FtIJj(eglGAsF$JZU;&>8D6ixMi -z4qG`x)gB+)8Pk5K(Av&7G#6S6_^yJ&5ka)G!4}##@a?y;q2|KPZBxXbrM`jCYx{}| -zCbeq#^2^w3Gvka6OGuRiw@*e27bs|j|p6>p#lNa&3g -zcB`TOg?)xFiM>_j2)Fg^FtOn_@CZADnZ-S8JXPhJ*oHfYGzRVP>4hJQxFv*TQjFgA -zz#vI~>U6qj)Hj~1kNui1-KK8~bc4H`F* -zw56h9)AcmNCY+X})smr0KmFF!gz;eE@XocRz!a`F--6pB;{2$WWlW7i17;9y*06YZ -z%y#CwH;@iC!?TVMomCevHisGR9*M7WiRLZD{rLcKbM>@mCps|V4SXZy6yE8leT<)G -zXxdVE{tUB~tDh+rs_A4;KX2LH&zp@+TYT@Hv3_4VUc}qnnmbi~Ms>4c6YhJ{oZ^DM -z4_IT}(52XK4NZ6}VECY)HF8+l=3;k%dC!G>+^BAWbOP;fY -zs~EF`*}`qTU2;26FK?L|iTl+gs^Pf-YayTa7J4w%biV&$JK4r>q55)7%>~TXX<~tz -z?qQ}f86TcOKQ)jE6QR!uF)m~YZy@4gx}xk$$`5l`PxM*Nt1^KFB0r5x{Q8Ws=`40k -zmhd{pj~Om8WY{`gG=!_UQFjyf7Xt?OGZK^c!=&3JXkz-UpST~VI+ln} -zy~Wi7F?dHd1}l=(atHPk3tQ}I#MKPD)aWntulN5MFIxoMJmIYk>|AdPBW1T(#oKTi -zYj^FML)>mZeOIOCQzkkXBVJW4=-bVi{P})@ -zm(dej^KeTuPaL{*$K{bBc2Z0`W+F35n}-{kp-Xcvo5Bc)K5+&VRgT6PT1U=N!iucB6@>>=&=yUl@Xer*AkMIoy%jZzr9X&h05ZoWfvB6^B -zJ@HIve!Nv&&NL;Ho5gmLv9xF9=){!qIOQD?BH{HWQCYZIgcG3@7?q*bGZ> -zUw_~UQwNi`@7ur+xQ_bKk<9wG&e61u)ciRpMH|_UQqVH+-I3(c)B+QP(4V0>ozZcU -zcWK%stlrU57~2KxUr-X}n(|u2NXuc;%N0?!MN2~Ps+sQ7s#=It(GpPT^HWW}FJ&3KWe_h>wT#C;gSE1QV&Y~(k-F=tY`C7e=mQ~%RW+<_FF -zq@)Owlkts;AsjIM2s17pt~5m!zg1}I?@5D9&Qfq@vV9h@VL^zdobFhFNcb6+h#_67;_;%4jXfT^4<1F|SVxo(-z>*WVi=VwrbqeTxjM7O -z(~=H;7kKE)#2IhWIpxyqRJ>{xgtdL=*6a+QTN8tKn?|un6=p@08zXqV;a-Ux-X0`3 -zvm#TIf&8&gIUP}g5hkR)wZn^SLxk>~gS -zSBF^q?jBv7KgL# -zTVX5D9%436Y5gVM%0tFTtn;j^=QbVgFa>=ar>g9k -z5|L}TEi_lO)>ECh1`B-KP#)?acm*vdcz`~<;)OoPu9&uy@wr%SGR4Ir!Fk?}tHuT+ -zLWX)b;=NZFqh4J=zfntC_$CKZzJ8?yXE-)k7x>CxC?%9D-VJ`d$U^GMs|GE#QA?e6 -zH7}a_ewCzuh_Co?@^dAop#=WBgE45|Ukuvt`}097e%B1rZx_l3&G>y_Fix|SlmiBF -zv}i{gCL)c0aE;bpO=vGO+AAHjuLqg>Y4EoUjzABJD4!0dYh##c%th$sA^kS7;2Kkp -zclelJBT5r!^v>{ASe##Iy=>~>5ccRMaYM6!+lq)XaqvFm^UpRsIRJ|l<1h2cdJASR -zXg=gc3(_$aQMe%*n=|NbTHNBmO@vS5PzSx*98(%$(k&rMr@MlP@>P`nqX^@fy(QM-tqg&nmEMeyXEqHZrQrB4%XMVXrW8?`+UpZDeGqP`xchcxOL08l^q0ekI-~f -z(mTtz<>hmZma!{+eff{D%h#553;BJ%(xc1r%R0=UEnK^dE$g=A_pQy(Uv^Zgwfg$j -z<*>`vN=-J<+(-TSQf-W{?`XnWKPxSb&F_1MgVpHfU|rB1xozdgWiJiz?jyZU_bc$* -zRmYK92ep-t^p1AF3d)56lY5ww3W^Cli2i?!7YB5i*UR`l -z@*s|{VC&P|kN4UkBMccj&&2_A6dmu4gNx;w_og!bva&Ku4ZjKU7`{>1X4+2E -z(Rws)GjG3uG`fBP$M`au#?W+g+0ou)aM;kF1h@4$+w;bHzQMBXEXr)!F4WUB=7tLr -z4PTTD+hS{UtsL&yMoSZwZr&F2{Fi7wVLRVwg`OtHv>k6mcj&p=v|L}8hV!MlGS3;B -z_6*qWKZ@SO)LR-t1H%1$V@&AmT@}G`5Va{Y| -zI@+6f|4${{`ZZJi!?fl^FShgCPnC(Z=TQNqe;~Gp`joV*9@8Ih{M~?qP({6%Nx5r2InMH -z))DmixJDkDzlfIk9J*dWiELYAwlj^ig=lZJq8!6Bh^~3ucAB4sd4GbHFfwSlVzxp)_$=r_M&xXC6VOdeO4ur(r8cqOjIs*hXiA_c3PP?l_hOSMQ)_12}_NbVAMZF6irW -zU3M@J&OusV-@Jth_%>@n-)T2^%un&+gD2F&6FseZTSTw}Q(84(lN< -zsNNGep?bW@;3)>rn>GeKRXGd#>hq~AO%5wQa6+BQS$}Q-d&KC5& -z&zn~LEDm)PHsD0Xtew1$~YY!+BVZ@2@Qt8SYgl8h*==^R$d -zLe~jZ@EfIYOh?jedg{Y9Gx|x{zF1#hWx~QFdO~?3+v0i -zPgRB!uf3G#2;>KQ9eb%1e&zQPR?_o&8ozGkk=~KeB3Y9_)9*yCvEth+xmD}{gFK9T -zu?|B -z6^A}k_!8;e9LEhWE(9nba>V%y( -zFAgJ$U9${hY7I0g>ghGo^D{H)6G*_p^qH?q-J?2c__!EIU=mFYPS}0O;Srk3*T+x| -z%(=^~aXpy1{^!*8?^7GTPfb%^^3zoK-xEOhfTIWY)v(sM>)D}ePIWDaqj@dpySv=m -zcbw4t_WOH!aYElGV06FD-xkO9nK9OvJe&Y2_+xdbFSPj%z0OcuvlHW}#=bsF0+mE- -z7HLTjdI*&faF8U>eKo%K@vZb9mp$zF_;2X4G>|@)%k?w;Be?zjYdIB3Grs8X(zeM7oo4_D0&Sj6-bx6>A!JS -zeb2e>zi?t@n)7bid#i{$GiiMpt&M~vUiVW<5qeij(0t5onqLt0k1t!lYD3wItf%RH -z|1{dpIMIZR0zGYX{6LmA%js!{Wev+1migqef>nk8gRH0?|D&w+5*hce8qHhwui9{B -zLDh34RXi#s;-+)7h?VC1ajo~Z^-`_2&gj1hN$*})?)7E5bUs>M%lFcEKJFjZn95uSndy+3|G&!Q|BK9MU2E;aM`b?wFEaBXbLm_egUP3bMVJosMenI5B?)G8L!xyeE{3!|jn4*n;V$#h)7LJ266!SO}aNu4CV-A1& -zW!N3@J#EMR5VaVRfOdErj -zMoivseX(6++@0Y02(udZEM_^ZbDV%R+gzZg1!BeI+sK5w=)0BYNgd|0y>#}cbN#|T -z&gu;6l6XkMYn!M{NORH@WNR{B@Gg)A%L19R?17DmkzzGq&ogWt7pUU{+eog -zycNNS%r}U_N}KrN0Kt<7|J;${d#ba>7k8n|*Y`GC9B0Rg!k4g4F}oMNr=|wjxK|Lv -zBv`MHng1Sk+icwZ|1HL!ziOE;Zo+?;m7leYjk_TIH%a+nKXUkQbbtO{zc227(Ep20 -z`K$b6B{t5ARf|dZ5_@Pmt0%;vwh}V@BZ4E`+yGm<53_XUa@$GVw_?T)+)K|Z!pnp< -zI$vil7uxnNLmyaYKk!C#)}FC$`~?P)O&d~<3}oSZjRzx=n6-OI`6%MrP5;KrssR_M -zO*q@c$tSpnl(_?wo9%ds($-AV-hk8-_t5k^1}1{@_Q+T_n>J-nI$mHtKQIN9!pM|8 -zk~k6He?OzTHJP&q+@L?K$#iQn#|-?S*+YBO>^GXLLkDYhIpxEdzE -zzEE2m9Aa7%Nju`e+YlzV_MD;A5^y-T&=o$X2K&LJxGk7x8J#{xqi1XM*z4${HM&Qm -z$6QArrO|KJ=(g+VsT%zzjc&b;o}$qwX>`kV^kj`bQKOr$qbF(fER8N)M|WuSOpR{3 -zj((#?&(P?`>*(nUc+_t8#L+!ji0}co~Y5sYjo~9`Us6aPNTEe(P?ca;3ee= -z2h%|JPsa_#7Txj_)q>l44P$F&_uZLB&m?cY=0(5A5ev{-v#w62XKa;pKeoTw?~d6N -ztM!Y`SM7~tLejSQ`f&}`|W%(Ht;4LTW93O^|iZ -zj(mgneuZcXbXSl{>4d~1RD>+7IbxL+^%aBU9z*XJ||Wud1=x=nt4ZhBsc -z+i5P&hG-15<)8nE?$rJtx~>Mksp{tbEbx==k -z)PU`J%Z-^Zu{Jtd(e_2^7#^X_5hH|lv5`?4E}N>BjkG#a?&ka(`Nj;q -zk;7b}-ldGdY6PD&ju?;VxZNy=x>(~?J+lPouH=_N{cx5sUX4|MPus^$05wE8?gsXA -z8Xby#MjZBi*z5Pl*Klc558JUuH!HcS9DD-S?wbBeT;-I{(&3b(*7fCP(W$6Rp#X -zI^PPD7c%lS_$+)%4B<|UaD;oJ!$Uz%Ve6+(xzB}j6g0>f8-I@PVq9Ex;vBP>mKK6e -z9KLajLao21!~sWCPqkXl&-=KvJS)``3Vs%54?G+jgS*Y~DD~=yQh!krqdP2VYwN|) -zxJ@1k!fT;bgWDD}G*pIyM-^s<;T+vug@R>j*=;g{*TH*$yksc&_K7HUhvm+24WZzb -z@W>kWMQfn9yVV+Sg2@@K;RUq@8K=1Cn{L+dhkvQz5!5j1-02F&A3O=zsPDz!d)f<``e>{ -z4zHQ~cWE^ZL*5(#ne;2-#0Vz|(2N=i)&Q1moX}0rgykw*nR#9aQI6At5jun%#NO=o7F4v?}+aJFd6V-DC(JFxZ*| -z;z?avoNr9f03gpoK=;r=}z>AiytZiz!dR}_9m -zEyJckcSME%RlP+<3#0J&0ly37hvAN6n+fwB_rU!8?+YlRoS@rW$J2{;TiY6 -z^u*U#i=khEC${Dwo_KnyEh^@4ze;IENaK+9mBgWhQ)KEJmvMm46A5lbz9njDs*$Uu -zdbpaepuYyXNjYmSp}b(BoUo2j;Ro@Qt=4(-iBsR5qrQ+ -z{i`$&dlO-)Ngc~!%u@}#n#$L}>k3N!RiYfQzK!CZw1#Mm4k6OA#ijsn%st7FKj -zqrlZT)tbJ7uGhh0zLu+_G2nsse?kW!6#ND{0HNUDu=9t4e;qveb@-W*<7A~74sIVB -zg2p#|#=w?_g%*qzIb66|FFDCB(#~84f3{j#&>P0tau>n|jZNFQX-a^;U*D7#m;a`N@f -zR1d-82FXfkhL&m{Gr)6RY<(O=N#tfgX%T51tBZH<`sb -z5_XosGF7ili_~gpxec#9)4(E?jyxEJ_lAao;nim4;~`G+)VtoroP -zP_{}@dj_}~@{Je@-WMVoM3g5K3=MKMx2p4&_6DTa(P{_KQl1T%UEcZC8DPG{$b6SQ1F2PS``}xXjR-l -zK&xUMJah=dC*5Tp@yAgO8QL2HgG1O8puY~xKCg^liMVV7yHzZo2E;v-DH{7V-4Pn| -zWnTo3+0h*DAx9x{4AY=9eGxpSMd8hWFCGDZzmN3tpt~A{zYh4U5%6PunW9j|so0%3 -zG*9Ged0^!8!Q5h@hOcEoA$lYSc3h#3t#4Q+)byy-hMx1GXGN(!Qo}OXjCPIZY|yg` -z1#j;cfQ8O}q89D_gqO4ZgqKhH)xGl>qSXm6)2x~VF5GZnFUq{vAL;*Uv@U>Me7JWH -zMtj#Bg}VUvjey_N2VNK!n0!?zxRX|#+K-mdt>A(4(U(wg{lF4+59sWlug;vmK-ZPV -zpR|F}2P4lek$H)Qe%SfwZxt5Cc?cSRL|<+lpuTKZ`?9T{s2%k|2VFzD3+NlbSt#Vg -z?Wh+0heaF4b1m9ST25C1D@A*Ucbt&IRuPU?MB$x)OC$R8cUYwm{MIP^L%`RJfM3Aw -z!ihZcgu&h9Lz9lfXvJbqFGs23{^YOrfz -z;n9cY)mMFyk^4T<_z^v=Ku-yNHVS`8Epu~ZOVLw;|27K$4&axdV>mqWk`kG>$D?o& -z@Y5sU=%-r#XHocEz)uar^CVU$?aleXlqNc_y@N-GZ8zq?ozPFHkF*5 -zjQ5m6(_6x>8{vCDQK(Hr3bknf9DFFKD3ft25yWSjd|r+8TTn;r{VHbp!+IgJ=qwwB7 -z?EfR+`taC86RXA@Ci!PYIJJIUEmJ+QJ{k7uV{20CxfdXD2@(F5!aD=C?^Bd7ik7D_ -z{d#D;T0cB2s_@?dzIp__eaNK3r$pgz1MV6D|6qu<(5#&R%J>aN9NMOR^!YmS%^IMm -z19-|B;L`Ys0<aK)52=#}80g^^UTM^W?n5dwae%CGn5l;J?*=AM#~sUDb?2M? -z*osMwWKFmVHXW-KY2gItGG7#KWdcR1DwKuC2ghBClxlEH^i8%6mtLPb=@1(!Yo@Z} -zYm(u+d@LxoRx#Bi*9w6YJTrJstsM*whJP5CY-8!o0hAnm>xhym$o03dsb*sB<;!F7 -zd)O|o2*qMDJ`;b={X~%b!bhWl*XTEPZXHwtr)2QJx -zH~YnX7yVkLNYj%XWBx8lIzC@QtJ~&_TVswzEi&`U$Rr{n^;etx#@i=^_svq -z_1D;X`VHOsK5^-*=*5AK@wF*6gOGMi`njn#6;CDMyOpGg$#~j~RW}$khfP>@6T{>2 -znH-*o&+*7>6H|c2WbiyK19vO>87Z~-z{8zGR6-X{K`tSjj88T^S>*+zcVIY+3!wP% -z$omXt8Rh=RP=p(NQW**wh(p6_av*&#bms~FSronv@WJRwl;CCRse3T^rzre;fPXUr -z{)lQlFc|!G6kZ7U`4R99>Pdbu_=_lfG2kDKfZr9;fZ9iR#CMP$;RB9?64QwZ`z_>g -z>F|*Ro)Mb(c$0&p#xuQ8QKBt;Z(>SiG~uTD+~#! -z(L6*PJI)2+q2Qt@Ziv#I!YP&BXpF*N1AOKP_|d^)a1^XcsdBM{M{qa3Pxv`m65`Za -zHyCUgqLVmNOB5mp(vd;PNT|(U -zKiZ!|TORXTm?5a``vTn1V6Z+!_^k;=ut+Vez-*3KIuAm+9C>>R-rhLk?K1|6>lh3^ -z9)-sNUNZtdG1~e~Q8)~ZgWz;-^e%o-qn2MAgTDe_kr>kA(-@*%IbOw0Y>4Kb4x_18&na=6?8lQfT{4mO4!==QwRiZ9 -zY&tBU($5xuSbWu#GJ)=iPi-JriR;vc2<(O8XK%pDqp9Ho-<5TdyacYD8WFqik*mNoRKjGu!;?u=flT%Xu6F#0VuD${L -zHa_ksULA$~J3iuz6K|CJHav=9G+ -zj|KmRj|GGeh5>|$Vv5^PQ%l2 -zuS0oWQSUrL!Bx-$upT0dmxAz|#_5M*RzOaKJ#5Y)E7o@lYEFa3KnRvS^h9Scy8CBZ -zmvpl5<)KA843IjHMN1+UKn+9m=37ypH9Y(-31#V>sd!f;*I2wOlB;4UqHhoi-h*7z -zkt=4vdYD=g4nB^z&q3?&N9(ik?!o?H$n_|M?g^+>|Li}YBxT#M`qIQ0ODOoo5J_p$ -z#60W`nbDSC=+A)M4)#Ie#SvP$?02Bsf@+hsy`O>IWV&TiV}JL?UUnLjmTsBWIQ6Ce -z?sdKNY;T-}=X-i%Akm&zJs6w`X$g6IZ5_lpdx%au^Kq^i4EpgkIjYSII*cbHl8ye}k5BG`8lb3W(s0o(5+$d*K?DGa7s3`L8P&#CU6* -zbjWac+7U$2LTUc+q$Avzx&53ZMx*36vNoda+$k--9(zO&jh89wYLC8z!4vjyY -zM|%l&K35&#@XgTD8W&E0gTYOMc{NM1SG%yscMhn&qWyL;uXbtO5Mp;|0*qy84at1K -z-}H&9Ogc}s5_=1`M1#SH`t$IPqJ9@X-Tflb(r1`f;-MlkQIe+p2we47140Jfp=F7@ -zKVs$C_v^^_!Ip@xyU8L0dupaDfv;Igd(}9R@2Kiaurs!$=f=-i+>y4cXqV76hJ!CK -z>uFQX(z&NEJ@NVzt}C1+{~F8JIdlA}`9fDB%LD(7eQVx*{fC!+2&k2{P4O?AF}Y*E -zGQ+-KnQl%IkXp1~nPpCN?N?@+DNlZGee)&MX*iwWWoO3w=ZQ~xg)S3oM_n)UsoKzG -z@Y02NS2DgQs^9cX@u4UV*h={6r|$~rfUyNG#cV8DM)5KD0{9zZT*(n1HIX#dN>;}F -zqqyCfDg>@V(wey$GK#sEcIoH5;_QVTu=!ECKYO|u7PDTPR1B;534tH)Vi%1HSSyRX -zMY|GP;FWC=6UY(`Il|TVxYh6pycfCHIR|$gaDLNSw5wcZ`JzXmsRpmVtMuSx0@(^z -z0FO8msu6vSG?Nk`z2O716>c53z%hZf^|i0of1=B49Sv_4ZKm>O{wiXM;J?k~f&K5i -zU_8EJgCH((GZuc*XN>C8f2Ty!66A19l&LBDM}>*qyHV8(QPD=)$x5PqLFwIr9?v&Q+?mX>C*zBO5# -zpUX8`M!}ns-eL$C;p^R0YR}O5*OZoK0G>f`CJ<|3%%cO`0F(EW)9}gtEty9VwW*Yy -z^UnG)a^5J#ALj<{?D9!7ZV0EBvbp17wVn!y!Ivrv@Puh!s0pOX9GxaUj*ne>g-!ds%-Q4F=m^}b -zdA9%cC!#e!5v}=&ku}%pld_V1G3|z|@jkXaHj4`+WR3BS$x8B%3Z!P4d_w!UtXN-i -zmcc(JFe%IEo0+BaqXipb_Y|OS-Wn5F7eh}(s}pfsOV5J!HJQtuyYlrt}48jIYhK4HPCNT2mFyk`YhOru_cyx@*i- -z&y+3Vq`)|NluqZTJBY*;xnh6!$Jf$LGm@DZ`U{jcYQ+S2weIhJPfZ;)OXH8rFGjA% -zuTg1suDJ9wf3f%+?9Vl*b=$Qx^}PO*$rVg&s=&OA@4P!Jm^i5}xy~8u<~n$ZT|l;= -z5uNy0c+8+!Zr=|HT?Y1NU4|$H+X-nK-SH=g1`GV(fEP)<2EBGxuyBnEe8X#yTY#T# -zC0I4I`Ekblyb^D>!X{O)vWEoo47C -z^Ja|UGW~JZGT1%0+vIhXYHT&|>_9#i4A?Vsmh%>ks061CHMU$W)!V*ipjg?;Fn{Dl)1!!!@GRUSuAe&UO6dPt!}!FRA(rCx60UC^Cng>U*o$6|KH%Bo!8bJn^D)w733-i -zfeK78tw|XBg5K~B-r=w%`8>8UKBLX(Gusk;N3VOn7l%)#P*2ZK>U;;UGdqU&V!Uk` -z{V%^J=kg8{`KrS&oRyayZpwYxgWH*S#330CFIu(0=e|(Z;jb7D8fm=p%K8~&;N2lM -zzg6g36w50I*2C9AOyQMH$vN;rG&W!x^SlycXRMZAu+;lnTQ#R(rz_=Vf2G?}ls&%^!Vxp*0WV<-${?u1Yy>%qM^O -zMXoDlt}5jnBl!SzU0JfaN_p34l^r|4gB4XNImQ?-Qms|WXY|y=?C>cKMx^kGZsW-& -zrNJKOX;StxMo-DICPg$FL38|G=jJ3>M!awKY)x{cC*wcnjpl>OCyt{^zF8M&-?CD% -zFpd^BCw~&>*w_5J^SYlg8&6^nRVCc0$C2J*Q1=sXVCC3_ZSdCA7VmCSK3U26o0Jvy -zNddCd!#mvYo@j^n#44Zif#;d6xsI4CdVOcg@2~20xsFASl$g0O_04ZLA9Xe;pV)cd -zj!Eo7tE0XdQ6tk61E|UIva|1#q`>dCd`Fq$p6Y#IY3wAlRxpun|2^zeI -z@gy&z#oz##jC*}-CSjWMA4UHxfuq3ueVbo*#`>ohp9aQW-8$RxWyGjsiu;9ZzctaVNW#Bq(qQ;N@f -zz3j=U{$xNj_?-&B!#aFVM2biGKh)$=PN<(P>gU_)=R4}>yXxn0_48BpGe`aW44=fO -zjuMY4TUQ=aO6*6Rt9{25pZ$Q-;6Jz-F?Gx-#qi*7OmwVEPQ)y$Z+-*NQ7s3YOMFG! -z7|UwRCYLhBJh>nnG3jtqAs>O)`W$#A-LHIRulK&)#S|L-$CNF0cFx*KV;y*h@h#M` -zb>$r?S&sT-cES5fyS?>t+LkP~()6s9P{7W4)}6LxkLk3VN>P3)_wQxkH)<*qScFqF -z_+;?ggj38idmKDgya3x4+AB4P74s`*4dOHuc>BAvdIfP!%UPt5hT$vyngG0E1R6KN -z&y(B^892#Ap-~AyL#HQ%rmScU4Lhjio^#GWLt9)E;qStetx?;v8KC(52tdicd} -zu&>i|xj8s>2)T(KCXiTxG;rnn&1>MxeO@ak0y9j$_jo1w%WE!UEKFck%A3kcGZSbo -zL%xzfr-V(+tXUThO6#=a&o*o#DYqrSS2QX~z{Gx>`Erb}I*+y93Q9iOd)S%LiX9am -zy>^#z=k@U8#{@_kO6_|b`hs8hUzf%p0)oy@HL>zT{g>b~^^*I*W%73=m(4rgg!xHS -zMnDwPcv0t{ck-Z=tmDr#Y@(68vp;eg5#i;R$>;)>_f?wapLU(*Ya2Q -z#7LShHuf%MTFEiY{bTS-h!t^#js4@&I;p1esA6o}=u5qd2=utn?b -z0KZ=S-4?#yC426q-{jes^SR_U7hnB6qJgN8)qM4S9 -z!@tZR-ijH6UyJq#GC=#Ts(=rHP-R@<}obQ{_ILBBTZU6 -z>GLf{#}arse*^uYw+p_8ts6EoS2f0b%)xxD(ub2HbG67F7f^8t?6lIE&s|hZbdr1- -zt2!c(7npHA!OmOASby3SUtKQI-hy4l%*)0&LG@Zr-dNbULi}bBUx2l8*4Gh1<5%ci -za%rshTqPTzIWyY(-gRapr1;l+wiovF?%;Fw4Rl|7)`V4I#;QQewi@r5^hk21;}p&h -zmCZ{K?dD}>??87K@^zOx_qYDR6ocIR?fShR+4v4bS1`lBBKUs|{HZgsy@&_#E2b1{ -zW3!j96l}V70XCLDTHe?Flk263#qcY5zd4}jsVzngJiy+Y*RZM5#L8*V#MI!!Cyq~j( -z;{+Nq4L*cRT*}my?t)Cv5a|8Lm3>4*euMFw3)->21hfS4!5A0xm0NGanWgu!`0C#x -zEc%lvgpDUAu(!U5nG#>;ls&8B_r)JR;ylyJR>NQ6zFhc=flO~pIQaH}N`>aK3nn?3 -zS#LKV%G+_FXd7yE;@xKQVZJQyFPAA#{7dYDSDXSy$+J4XI==RBWx|mqGP49e;3i_$ -zp-yMC&gTY>E2}W$x7g1rj;gato`+hByUiQzq_?4^h-94J@OJZ)DPM>i>77fQ%2Xpf -zqwl-fe)WAfTF+H;@U}=+A0I1r54$h!h~dMuErjn6<$vu*!Ue{PILRI@?CG>t*hX`! -zRJ+?6+@60o@AvQ@o8AzMwW+V$xAe&#%`X`<=(+je<~J~hxU1T6_q!ujykE|Q?H}kU -z$$r`(`=M{W9pBg^$PTbOyrh&XWvz+ud`D3-VqImW&%)xL#~F)!cA-~#+DXQN$6N|& -z2H&smPP`H`%7$odX3=7cMO4hSTHRSk?=%*gX|nYk&Q+jT@LAgP{zgIG+<_QIo|}2s -zjmR5+Bd_CHI`ZCw^Uy>W`H?*V&txC?55TWvfp@8wwKCP@hbZFv>sVOhA{oX|d6_it -zxTAL=U+aV(um6-3XXD!o<;F*99qbu{ZF0x*YbI+QZmpO1I$U+m@qWV{h_7?U&9>Y- -zqAkDg7;d-Y+Ih5PREGvWA(_@%mSx_?|GeWaNV}-Nr;6_zQSOLZj)nIq>M<}ZUu)Mu -z+NF_qY2MP44|P6JUV6l-^BL?$@3{6YaY%;0`MD;6>>`1uehx- -z1xyCko|VnouSiyXD_IX4ZPd!AvDd6?Bwegk%nPtE^>AzqZ>3d@%bW5O@2GFt1IytuW0oQ{9R7}FLU+}?Kj6BHnQ^Q_M&1f#@Z~>>>fE| -zkNrzdULL&2ORg(=*wr($My`mFxU9QTrm*MKMqd8n;>g-Z;_>Nk<@^}6Pj=nn*45YX -znlrSw$C^Xk&s}H1D_*$!tP;qs=h-vt!fwc`<+9-MNtg#TN6BYh9A>~;t^UTk{BApR -z=&&-uU%jNxRXLnn*z-s9R*y(c7MnrsX^fg5aEl->YDet!NQoDzgyY)X8*Pa6CwB~; -z{P%aQ8}Y8R|M;#C@vcughTnCscI3PC|Msr+>bu_gkMFwo#=Cg=>c#)muaEGqmv6jl -z?TB~r@+TL+-LD7KcRhu7xr!5y(<+Jw_SR`*quAr+6Bi3{)&#!E;&Huji}h(sR=sJag4^=-D&7;J|ua -zfSJ-LaxWYa`4@q_#VJqc{x*j -z-4WL>bZhAJ4^Q5FtNQd)ruFaGS9LN};{Gxf_}+_ul3^1y;wiqA>U&g> -z-|8Sf7Pp6kqzNI&tJ{~uL$gy{P)ezFp*SmNU*po@%yAVFU9VqX>Y`lxI%2KI2fD8} -zHj~_Xv2)aap~bxX)n|m82rYJ8OTt>4{#jA6MjBqpH`f|3|5?pT`&1<7_|JIh0OHTx -z+#PQ2Y8d}-ujr}Y#(lm~>QMy91!VA!&g`X{zx(x67yqqxt -z^ARey?E;To@DI>trMdjCbQC=Ejb1yhrJ~ns)ZE}0!Ept$7r0>uGC*FKxBKXKEiasj -zL?J;`((p|@jvS%O7ijDwdQ`T3lQ!8#Wm_r9nYR+7xwxefDa?Z73w~y&g@&j -z1+YgTliaWgvwjNppyAfs3+nyj7z3wv`?i#+rDKby41fms8aDk6e=*5%KTlnjDE~&5gE3*5n<)-@mTO -zkv&5!Z?x&=3Z4s0IIkH?Lfr#hH*q&|j-35giHT^5_6BtrIY-*Ql~a$Fz$f(x9FJ`G -zp>O5x>eNb)r93e8G1qPGd6IIH@I>AoBmQqE1CM{bP>$K{kUKnt)zh8#in~?(rh+%n -zh%;;kzYkFc>86|WS!HGi8*t(Cw@5pIl?gk_{!^vw)K?sg?DbHt`$x2F7)NVS^ZFYt -zi>%5wI(bBfTi|wG(dr^x^#WCTAKPD4taA<1$&ol)@U0rkJC}$$ca}OY-VYH68|rp- -zVU~Y4GQ)2hf%}md9e<-9$29}y?f1}K&K3Ms=kORu -z+Mn0SNtO|9r#RN|+1p30zr|@#?+1r_F^mV=IorQgk9kBdHiSS+r#i097$51udD&LX -z_jpzxy{cWz`q;%i;7RWiBe5)ax!@J`>8J8>vgCw*-(j7)W_kJc&mwY_wL`$l_Zdsm -zKyNSZx?ov~6ZZgO#fga!aE{XOYRdkB!d}mg1&)h!FUFe@FOI3^8-+u;Vqf>)x-^Y^ -ztx#vO{=n7OJ@uNVWrkZ*N4FJBHF%HJljEBjm-StcX0L4hI?hm%S_81t^>RJ4Afyq9i$gYbqx3UR@8Cd -zjXEMb*U!M?@osuMwdpHxc$nAn7w0c+U59v{ADM-#ySY!4Ge*nSy-p5&TMml|vN2)O -zg29U?g24w{NNPZHiY(8Q#b9vKpwVlE^wH`zLjTNo92OCfWqj4u&=OmaB0USq*W-|U -z?ROg5P0+^L5H@=?1@Nz*lZ^brji*O-45J5)G~hpS6KcWzL87+}acgUq#UP(e)CD?9 -zN4KQGH-DPDo}v^&>*l(j`Fa9`nip*;cKoXH4j%jBk -zUe4g5hvAE -zJjToBx;CKh1@y^4Ux&Zi#*{2e0)B>{=c#)N@z|t?REu$JYX9G@9&sCuBqEWN^QVUr5Z%x( -zL!D5rOyl@XxkB{2#~tCJs5d;UZ~&cZSz^nW<#;a%PB^;?&l&b9YZ -z`)^}T7*ep#QcfA@sS*7FRltAy%NnMz -z$6+C9onc8L&V0OF)J~cp^g9E;*8j_|d)ghnJeQ$D69K)WJvN=}IwPfdd1*Uw&sOz! -zBquK~XeV3d;reF(%dZ*jR_I+3j9S5iw=V3t^MN$1%?$WE3+D*4!Kbz#yZ)VRJ-7|I -z1@YD(RouAOX%MyTbV{~B_Q=V?Ma)L?BJ@A9kG&X9vOa2|S~1V$fs1UKV4=DCc)O6s -zs!xx#8`Bv0^oT|3Gwu78d+cU0MaQ0H(s1jE+&CMz6BovSBXIPlZbVyhaW`zIJiRH7=246Pd`LhdY^YE+=2U7B?IwF3VrOqQIDQ_xBS)(YTi7Uj6b!Z=96s-~;${rC;F%i-Xz6 -zq?K6U-CiENkO~>B9$|nJp?l~oj?Ef%A=ArdYJ7+eAJ()4S97mOtL+nh(ShEaT1s=Nd`YYBn@yIq%VtGk8c(|3x_`Cm~mq8T~ -zzpxE4ul3khc7UG5V~*a|Zc=pwyTkcMnHliP*W=m20F$(96!yrtuk!5RWY2}OUhw_vNiO4O4b9p?G5GWtHdHDzJ -zOvYlId@Q#1);2}Dt4(N<2KmZrsQXb@p*eTK?-Gt*Pd@vJlSoC -z1>S}z@_e98c@$42+0c7Id+u#FL$gN9^75W@RV^nKE#vV -zE)i}Di8Aa$YX@2#%suxIJ~{ctixF(z9(Erk{qs$zQ^!-x6s_0>49*xE!QdO$K2^?S -zn{?VU>}|b>E=pLfyGAnJ8Dj}@FDM3kTQ^3MZh$kx2Naz>1>?lj^0LsrOXcwgyQlQf -ztbrvd=q*_u(TI{QdpvdtM&9pvbL-asxI;7{o)ua@m0HLhj_(?U7EVW*BAI3z3=d@^)IucS3f??4=QY86&)m@Q^z^SL(Je29#jm(CF{Q`a6$( -zR5L#?#cPhvC_cccPc(DB-fpo@jh3j3mbm?VTX)+Ob2K#&O=a}(`RiQ}#OOiC++z5#N~v_i{C&5Jxs -z{lF|jE*JKEvE7B%LGtV2?>r~IdZ42%cm{VT9XuxC5Vkb)YJ_O*)9-JR6F -z3=#H4(6-W!LmM|x%5tRW)fRK|JD+jjfH0@hNvC$s)h7 -z=Se5+{*T^8d*^-UY3|;Q6P%;>?j=TbWvxC>oCBQ(IN60>G8-_K*i|`s*JljYvST6Q -zn=Z=4d!KY!d(axWVzsNslZe~KMYQ4_3k&7Zx%8|2VVw5(@&`|;-=`id->Uw8=#=_> -z>LF_7JnRMczY;mygoDgL75qr(VNpO9a;*cqb+Kn*g_XvkWkbRL!?}t0vZ3JD@2VPK -zOUNVASa?L@~V}jTlytj|7DS;+hLn`8iG1>4b)Eivb2flT-etHjd;z&kKRFRiR`o(6EpVusX -zp`4?qRka3^D2jXZB`mZZEjCF5o%7R5g+2LUoDUy-IDlTq36`g%d-1m3ptX;!ThTj| -zIOd(BSH~3Ue27&PlP}I%PI%$^jG%`zmXnlmxu~^hx-w#VgRy-L6X{oPP}4_x4GBKR -zYTfaa67LbZ5*UkGQc?6)>tkAL(PKO`My)&Ww4<>rRiBrajgn^c@iKg?9ejkdUV4P; -zf_^O18@!-sp&KjUR|0;0ieGw+4=g|M>(9!)zyow=@%#tntg=2k1Lx!4;(NY$R*}-; -z<0Zz%$b%jhRCzq8asYRkZP$9B -zi|{};3&=GOTgx9#$To{Q`TY*ImOE_9CQd>ppTw^+ks#sVv@l!i5l!lIT9}!Y)T*D# -zOeL8ijRtf=;g_0b2>s$PHjJLFy)#eDOUPF5py#45!2SaYTl--JX{bv6GuTJTTQ{5g -zKAzya3(=Vz@|zw5s9~dr{0A-4z4_*nH{X17)-wDvWcABo2J3Tl@}D|v&_vQ;HLCZFS@Z@v%)qEAyEix;eh8pRZ+9*44Nk?$Z8-P2q3>Xf*;<|aWCx3z -z-J4~u2gBI4B%e*H*FA9NjIuJD+P5@(Qw!C%Av!~X8b -z{(c8{DU;9wojeWiH~B`w@;i(wBpHx6(ET;)+t*|ZW=%k2=5O#7YGmK?yTNDDe4%r* -zMwG!VtB7hk`cnk%;hZY`Nh~G`OT<$A@W9nd3M(x=<@7w@2NbUjHvQB^X`=@Duvj*D_GCXP1l)i8vh4B -z)Mmu`MrY*sb%EsD8=N!!dZe&OvH5SWC~AqVNOJAL{~OKe-ndenS@?4Nw>OuZtdW*h -zXe+ij;wwBAl@*UUrn{Cn49ItPi?6b?l96?|kI?a_qSi>*L(FX`MRF4Qzwl#>G0x$M -z$4_CER4YGc=6SipjMa&#rVWU>HA${eE=fqYuSP6B2J!J6Of0Nqp1;Ng8l>g&Z5LC) -zEg8fm-e)CiOWU>>Nh>ewY;ZS7#*=N^R9as6T=COQ*5a{ZEi@GT(9@xnBKSHKrhzy; -zCgzXgn}{@T7n9|DWuwGZ?dw})-{E~xNy~}zmhaq*CreI2%RXhP{WSbEBcdTJo7gmV -zFKKA8)y&je#G_&pxaEz31qFZHlS0(r&LbwuGxCnij34Wib -z8azYbZ@gQy|#+(-7|56jd%i0Y+xqtnt$r$Ye#$EMK4YM`C@~#N{p3PVi -zuzG^){SA00!Ciny()n5@vkq;cw-iRE@`~DM}iL! -z#p+ou-Cu0M{{5ToB$o8I*Cq3|neE3EieU$Rb#^HDX$UK-B@Otdo_2+%i_-(AD!-_- -zVwR)`oUG$g42iB&WnWajCVis4z10Q%G%Nm3m3gEUqF}!s)C~=n{sg6kz`;u4Rw4Iw -z_rbD*;Feg+gp#!-<+z9MD7m$S_I2!aXlM5_+|ocgep*TQ?19D=QOH@oJo6A@&Jll? -z<;#O5hR~Iy4R(L0>mm0vH$}7CEWOjkjdE}NY9rmwLjtm5^a|($vYnD$40bnmB^0DT -zkRmz6b&|?!X2f17edOzH^D(Bvxdt~A$OH98q{nB7>&Oo=>4@~*+LJ9X)8lTcJmcblnQw@-Y&(FBz6{!R`lf-_Ic5{2YNfJr25JTLmT- -z&ol6^2j!{2nUU5ZXc6wT==WHWuXwiU{t2ZsV@sLtV;&*PA^*(tx`e%98k5DyuX_9n -zXP=aCt~n*PzFAkDXpJi=D23i)ZUM9apR;RUEWC2skc!ycalSuSz#BYl6}~%fu||)% -zw>bV|#aP7$w3h!71ER3+4Bl6-*H#c+VJtD#+>6yXBfl=Pdzlwj1>QHkQJOe?x&H#n -zyl<+_V-Ums0qN~h=%7|#yvKsr^_nR~24K%AAZ}qg%Xr^i9#k^}hE^V-U|| -z)q-Zz7)>1XImg6n4(My2cbfgW19vQ)huX<{=%?Ai`d)%=H9T_7 -zb(roJe_VoA+D|J#H?ujX@R^PEG+TXAWbC__k@t~GF{VXZ%mnU~{sO(v$2Qf# -z_NWH&PFz=Fv+{el@TcIr`I9atb_F7u5f^r^pQMZidF%z`GE?pd*UJ`a{3O??Q8a4G -zM$Da=kaEm|T?{zl)8J>hYUd1;CR&&p@`yy4^+cJCX`nk3WKXCJr;bW>t)}=Kcni)H -zu;~?inv4V=n=#5iE?@7J-_r -zDP}DBDg<1Lk9uJCUoGy`#hoqsVF4&D^=0R0=9Wm_Rbq~+>6}0`QQ3!m=#26d>dTS` -zLc@8SqB%gj7Hn=5icL$gD_KYc=v-g^Xk-^SF#tbTBGC=Rlf}6-A8+an)+-uNdTJA* -z*#J5X2MSL(sX^W_zUT!KVjaK%@n`_!K^0pqrDl -zr|@}olSRC=kyZTy!=GR)@dYeSY5AKV%`SefILS+QJPpf?Cs#{5j*qdCPTfqOrrl_> -z`DVAr*;e?qfizp3Z>DX6Z-UJQTR<16Piop;-EC(%izfQ(6W!ditmTwqPRog=7MhqVM{?h#n|k(&#AaFjg5~PvBPzFGee4qOR>iq!*M~#tHHd2DOO5 -zT)xxVQe5$yZVzjbe}D1l&J@gnY;msq?q|DB(mBor4k6`7Pk>qxef(2LgQSsfA1VUP -zH;d)4ex?(gLB7AHJBLuZ><@^WttX?YkggM3;7uC}f?FK_X<+JE+U|~mog>WnE4che;CQodI -zkTn-PDkt+=LyDOZENeaE1A2U#CcZXNZ;1=U?&PyF+J&6E6|&x)>ic7*Y2sRsG5dP( -zNB!`RV_xI2>`Z=SR6v6=f+hJ8#*$VXk*vnyNue*;?bDpCh`K6DS9-M$^95_!i+jL!=UgOKZc45OFr$avJnIC8=W#v(9C8NK}3NJgE -zYezl(k882V{nB$Qc8f8Y%dc>mg;y$<7hb7dPBg|LzwUXbVjS#vxvAeze!KZ~Shcsw -zFMG%rM9jdumF1}S1^i0G41m{{0qY)0dCsGQZvh=F*O!Ya0bN%X-u1)wTk)pH{r%C} -zB6V#)JzO?*;EA7>J2&}tU9l*c%t5j~{UP5mg$tM~3a?C>e*2Y#nUni}GW5UF8N`7H -zUlJ(1Vw`y=xOq==BnEE%(BgM$`YRMr&x{p5vOMMBE8==^Q{MqlXK4Hj8r-uk7dd!l -zni8HDH~_jmCg$y{yGN0Hi%!Lv0VAxG>6y1!5xLo9f7fa9cPOcL*U}i@_zv=Bb^lNc -zZd_SNnh<+tXmjOq@sMJ$XNXrS!oj#O=x>YxmYDEZ3As6aYw)&z3=zl81YQ&KBU~ip -z5KizQjOw4@=Df*-66kBoyw)!OjrKp5V1M+LCPwFZ2S)5hR4RjbA4C@qiA@mg?>xG^OE=g>+)R7dU0 -zxS@u%wwGyqcpX7Jqu6*asyYh(j7D=W_`y>Oaeb|fn -zq+id2)LH|Y{Y(?hkS}n4nBjY~^0OASAH2Wjm*L=LSQ-oP4cOa#pxe6ZrL^Z^J(VE| -zR>Xa@@YV0-XspodeUW=n@e*6<F$6oZjnl2?30TCDyx|+3bq>33zn&jPhJsOv`R(?CE;W -zWZDfo9`J8wJI=NClP1xAlAa&PG@dWYOgpzCbFxo!UY9w!Q=gf9VPWQ&z{<>VK2zuV -z`F!T+z^P2({Ck-R=NjkZo+;qH{?wCtAAg?g4RyFZc{>$hxE?UMA<$H`d8@Fa9&d>u0K;dK6cj=&e?!B(}8F -z?wruVz#eNlQ`*AyI7*tXJDxQ7O1!5PA=^}%?``Pf*x|nEVLwQvsg@6=d@ox8>FoBs -zxW`WMu7#CWeJKyV8hI?SZlmnjeyTan*WBfKlJmokZHFe%+{HXO!+)yT1#LX0$FV)p -z^&Y3%AtyQ`-#o`LJpnVNA#&w)&tjD9@#Go}JNu~(eg%wgi=p^SiS!K~Dn^bC -z`j(jD52UikZ};?2cgUH)0+IpeAI+Wb@N*{i4cdnGpeUU#ju%2cP?kL-E-8RqWy -zo`HOJ&1S;abBqp}>ADrC*9*A}@~?%a&RTb!RB5Vp11GJ+`B%U;yV`ksMP}zEEq|8B -zd6cnD^{45EpRK;vwcJ@3Qqz1zI?I_P%q5GDt2N2L!1|i(`&`GJEeDO7=ueV4VWN+o -z4Var6Cc -z-(lMh|LW4iwi17JDQ|n&?<-|8Hu*>IWHLATSEHwHzrR8s>wqVYocx&PGUrDb!G9dIQdT&xk)arl%G-F$lfS*=tdQ+X+6}H8UvehJ|9n(m^kmDE-vQI -zrG^gc56|gh&SXLY(AYJKX)`TwHw|>lRC>4;2g9oJrb_AAO1*78WR}l9q0Lz1=jBmw -zO$a%&@TKX0p15O|ah879)F*EDGu+&m3=}-&ZB= -zuGDAE^Z)jT+8J~FPd@=KP+ASNIki`x)@*&kh<*44MPIe`@xm)H#dC!_^IlM5t5O8~ -z0$-???#y!`B@QwN!}OxOJM%gxyy6_wk!(-S?g<_o^t1@jZb=h+f(HhNcT4JvF(Qvr -zu|jfNnuG9*l)tx$k;c9}s%mupm^*Y;W-0CkeU&jkrm8`DK#HwOsM0kuRYJ93PO3NT -zXRG3FXUtp`U!|#rq{lj19CbK;|1$Zl_R&q)eOmkBvm*Xf8S}UI${0WXCx04|f02&g -zIM`6dL*qZg6Al&+vWH14)Fl63=u;)5p-ilUw*EQY*t58kf?VMv`#Q}nXGm*#-B0)) -zhwI>V$L;44&&YMvz$bv3l=Ew(34v0a4rpf%4)Wy90(v53hcHWKps|N2!c`jV+ultk -z`3#-q&BRIbIIZW|pH|ZBjT=XKe-F7DNm~RTYy}v|RL%dqOs8O4n;$oCo|G^H(KdS= -z%b01O*|gBZOPHZ+pOl{oo?%L_KyOTs38bjMC-yQKNv)c62Krh|dO$bj?9v|3J-4|& -zRo1i6kd$|H=)HNMPOs@qXEQ}gb;_FdOp(o?XMJm)tQVZJ)K0k^LZs9Z`F9uTw^=aL -z+Gsuehi91I;h*GoXO!8A9w|;fh#S;}V=>B_1_|qKN}OER$+WO@&M1%0Zov83J~~d` -ztENQkOX5Y((Va)jcM4L`yJx_MBtPyvN;_Lhsr9H8GKNw+e{{dnaLd(}{fh6F)875c -ziCe5V3qy`EK2F}!dHC4|X-p5Z%G4Tfp)|%CCoiB|V9Qg;`IO?D_7qB!-3sjHUe$=& -zSxKO8qc5yUje%E`9!OBuwB+uLvFZJ1m6a@=R~BGa%1iE+2VW+M0r@|nvTwknj#kWS -zobmx=YaYHzS78v3D@+@19X+}p&z&*V$1si`D~Yd7?*`|OMze?0!CE5D=(KYqbr0NPU -z|F~d_hc7w)(EW1T`O)=R71i+PcG_g~+|=txC;2t3>Kl~&B$9TnXXC{QvK4pwk0up7 -zVFeePkewykY1wga$ZH+{lj8FH|ZDX~v -z&~EjfRqkf*l-G8on=){NZ4u|mv7dQx_d>g-PTlot#J?!Vprgj%qy}po>3a8ry%{Y# -zV4(p|9a7EG2|lmbD={-=ztK#7=S#hwukGyb+_Z`X-yakML)w)}`R|ouT)z6WO&+VB -zcQAhnu^Zp@(%jw;AP@ -z&o1Db#~JK5Q9f>>5BYA%5$jB=(8GWjvo9Sb8!c<|jGHQMlsgbD=Ky{ibF|{RyntB0 -zDIp>SoD9*X7boQs&XWE5I-hR*S<(g}_(rivoG+g`S1y`b;4u!h -z#9)l?1+}joG*p=|$L|IF_;~}Onl13_>vgwu==AVGeh6NLgtMl)!(E7ro@3hAi8Fml -zwZ0A>)FJO?Q8)aD)UC#NF-@s*{dq%Gpv6@8{MQWs|BStRTvJ!NKE8K$t|UMph+H)n -z5F}m#L8WTj5Oj;u7B4-mw`oy2oq)Zdc3QAb4dS$@Z4VHYTxzk^&ZyK50i8;1E3IwE -z&P>lF3LP$@X*)CR$eA-Mf@R~4-?MhK)9*Ro^ZR`N*jYRKy4Kq3@~-!N-shDxMR~i0 -zxAUY;sb1*j56GIpIRXrU(mRh=?LWLo(?D%bvVeNOxmpKa`=60Rmo)BdKe)lTeDiCk -zO%C_t5f69fG=EP$v%3Nk_vYQ}&R`66=AKU~Sx@bR7~S`zlZP*)eb6WXtOWh%cBJ){ -z+p*WM{%j><3aqc+T}%Jf6<01@U%X*yc}e;1-Sri&I#mg0tKa5Y$AI*q;kmQh^dy%F -zJXa6Q9Ao2(TubmdixuJF!BY5U#Trfh}9Ob<4J=mtkjg>+||An$6!eAOmM4z$7E -zCf&1OXN;wxtO4kcn1Y7dKMMy~*&dX=s~)BET+G`FEL=T&^14zwdWAy<%9AAZ9uQt^ -zI3P6WW!S4fa6s7Ac0hQw>wwUt*M{0_@;W2uBWDyL@p_!C7q8z1Mv43Mu#%}d!&2}% -zP;3h4Qj@nXa$q}uSGY%K9JysLPW!cR4_7Q%^nGZfk%S~Hy#HC|kZ>P!bay~1={{1i -zSjP2$QBinV9~%NbmGiZ)>Abv?THng@l#un#*RM)TWrI#!VQJlc9M_pfUMM#KbyIXX -zUe{W85+m5%gA%L{T6g0st!S-lt?ggGia~}HGLQA=ywrEvv -zPRXBz$5@@9(n4#JSH#~<1_zE-D15r2)^!~<=FTsLV(WFk@A+OuT8~@!*7673Cyh-E -zq%Cm^{n~gzrI&`E<(7fhARbIo&@xGwrUDTWDG5v?6E3i!Y3Q$C3Te4Tcvh0>Gw7-D -z4{3%WI>d!dl83eZ_;%XMtQzr=YEGA -zdOv2$TfmCA%iKGE+pe^@Yqj;6f>N^-zj93jex;fKekB_1&TQxMol3sanap1swU5UX -zINLdJw=w#orq+!^8#$AC6Jt8;+_0&2Q$%*k5Uf#Db^*a6m_g-JzT5OpEgh#x(Qb^> -z6ZzloT`(hK2-vJ -zvwo(3UPY>Zz!CZPXP{TWRc-wp(k-DnXmyWU>&ohO=J3bo)zw;{H(7dX2o_jsl`V#} -z4i_2dF%Om<+*2E2+8E>T=sn{Z^>1&V#=qg9lH9bw7DrBr&Q^5l -zOX0!10srouDN$gbFr~KZuHGuu1vEwnKMdB&w;a&mOqN;?)*dLU01w_U`14CI7bn%4 -z%(ZWUA=Bzuv%w1MdqG}m=QpB#_?y}{9j=|pSS4{LUprVGmhHBu_7#8sD!beMMuj9; -z2+OQ2RQ&yMrVgle$^>$7+Z*f3$u{oba|aO*tq6#=gX@57!%P_uRKARU=Q_HsC^+Fl -zA6A%?`t~@eHaVJfUu^KVIykHXkCq+XshoSX_UrooTI0@??dx~0-fpZcy7o~0 -zYqhYy;(iS<@JhaT@zvqqj1(`{^H+ykM;3|cuSa+>Jvg#ZOj|}4h^Y_wPCKq|9_bPC -z*;w+Wpa+*x0h>kg2k7`bALn-7K6h52NAAKACyvl-jN&!3aO620v9Q_XpW=}`9C=DS -zq9p}4>0L8$Oouc={yVn};+V=?tW4NOO>;BAqglg6pW{bahyN -zd@J<5PHex#whNmJ+iTbkV0#N2W)SAL*t)QNj_n+_udw|M+dr@kW4nfpwPKxvEfJdu -zTQ;^lY;&;DXeTn>0ZYTx;oxw#$mKs>{Nff-{%H`{XJP9kN(J?`aq~|HToqu4dbkp+ -zNtP7ZFz*k!^9S#;TMO%&yX -z#K5KvajdQfx+A;+PtxNJM*40BTp>VAE@zDN4vdw+7O+{Zj!iUYD~w`!^TYeV=%&ePxJAIdfiCZ(|0tCRq)YZrrHBcjxF#qG&FYym???t -zA6mahxL?0VxX)sP7n8))>cpA@bD*7Cl#9$|>#I%G^!SkT>*|BmZ?B{K=GrRLhIMq7 -z7{c!qu64aMT*VEoU%$n)g`VF~dvMFw;$CYlW;RQz%KYNB(Wh=aTj1FKUpT^B%-gAE -zyb&!3e8u2K_m5M*5(D-b*ZAlvfv&T6Z#i3eN2AJAGh`c6wJ3-DRP>A5Sz#dWT{u{g -zTK|nx`vEkg@r-fz$`yWhjjc0ji^ZR`Ro{7DxM6V#J0Yh_^Yl4D)UXI2J;1-jJgMm`ottMc0&sgC5vGb@!1snx2c2`*iI -znM3X3h=%hiC1&MmwMXYtdo`y&!YYn24Ya4YppV@QO~B7L*lA4WTt3Y;r{&t{pRUjL -zNi8uAb^g>XYBTx>#uPvBL$lp=H43w=ceW?S+c*|$IhPazw8!yW#yq`$wvX#b-6DZq -zV~?=Mc%@V6=AP7HgiZ_2_Ux)LID+8a+hw14j?0lJle{V8b*d6 -zAMM!P2RW#{V!2GxlPXJ%*2Bgn)gQpDb;_^yu;d0;Z;lVDyt_&s5`JiI@Mly -zxNuIhB%s7sN$pg43W=UoG?tglvoU5H+3r+8KTdVy6zi@-JzM%ZD*ENqyBV{2VBgqe -ztZcIejFk_UoD+(j%F7&Q>QsW46A>AB)p*^k& -zMCz35?gMH$8Jby-u(S%;PsK@oF}w#}5ni-pfibRIC}StLF6O5kok7?eYWJY9)d}P* -zS8Ud|uz|B?b+C|Ex*6jn65mgs;Nj -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 -z0WQubR -zgm2G}9GHSRA@}hzm+%wI^PQ<9%r*|1%nVCEqHxgp(?k{xa*!A3Uj87BO~$M@!a4y| -zfR;7y5n|Xqup`L>oLLnp>STdCk1??LqA|HUgxFk;?isLWz?Hdmb_MMFvFn~q!B?FE -zP5u;Em8K+(*znGBM-g!rm6s&}$;V;!ihtZe{L|n5$BO@KxBp4-?;x-?oSMq=zJ>I8 -zNkkjV!80EkWgVU~;w+6kmDyZgc6QjNr0c?*fb8n*Durb+pNO{p-F5mMsSg6{JUi@E -zBDJJK>J;;WyF6gEpeTgsKtDVmY~L&GYhEq?BTkiEgq1j`X;d>u2@ -zkGCQoYlCqYWw`%)c1omnXpPdSX^7&skO}g@l0TF05}t<@faZM~`SwO+tw&D0 -zBuZ5=BoR0BTx3VK4B7%umQ%@`WTam(J^oJ -zDlg`;3_x5~k;{WJ%m9>ElW77z=N5N_o|#5oyv8C=;h=Pue)?a6b0EJwlfS>3L(DHO -zlg(to8xX~(lh{FSIwbp`0^FXQ5&6_da!9RGXD}B$lV4y-uE`=pU}2(CQo)L3a;C3f -z7GoTzqi(}gtRHlI7I|)5Ux~B2pIYwErM22|&B9ZkRO(YN2PS`^g?gH$l+FVKX#l#V -zv9)u_3P>Q?L34!xy2u5lnzc>BR7P2-g~#BefWfh|GtV&qYev1EdKkx5vbk~VBlu0q -zLKfj51Cs~%v*~>`Ya@4l9gKKz-O)pNcuyN+N@z-S*&UoC+7Z)~@`9A##rMDqC=a7} -zy+zZs3eR4(e%&_>!ZSuD$3|YL1K()XI~8-cZh=-LL3>uAhPEU_8%HFpJSg7NxEi?9 -z)$131W2o#EEX-m@J@}RAnaFWi@?3X)(+mC1zb{U<#rglf6L=I>)7V+VcAo3RGeN&X -zXQMyrm&@Y2|9l%4V6(p&@iLOwhcuFyJO%j6mpkJ9O~SYO_Rf`vwU`9$G!WU)P9xTp -zk20Z7Ci=mNm~rX+!`2P$qxfZO?|K^7l_F>(J^%m-dKvx67e%9%zqqH4CdOYiNDK%Su7((=s6Ey5lg@ -zGUU*9L`T+Ptag9C*Y%jgSwS6v~0TUB#xBSgQrs?;cao*+rlfr_s -z5BHKE}wIZj3&Ay#W2HT54MSu8?9d^UFzH?>&Aia9S8wAX6w+T41cS`(S}F -zX;)V}kT4YdRBw+@V_B)hPXq(QmG^+0hLu#AZGM>~NwhQnP0T7D$3U!jjpX -z-^P4X!42)^)&PZ8XOHQX4wXQ^yV?kQeV*yEggb<^;A^T+`h}ilqPY2J(=Y~Y0! -z!^IfC5FTvPHJyRRXnq&QQvPTB-mjP$FNk(IAL?MKB?+>z^+z_jB7cX7NHaOwYa$vx -z#rb_>F_wK}vCMI66xcE)q2ngln_XIH%pZZxyJ3mM`WheYJ0~!qqq|;P_y|}JW}R1B -ze(!IG4e1g1=zoYA#T+~*NW0nvdC2AX<8XpTGxSJW>E#uVlwN+|5lxuYj4XgxR45MK -zsnV_!xT^Jkx#|S2dVRrvz@zHLh43abU~OYKA;g3x5gRxtjym@W61zsQ<-QElETs!d5YtRHT -z=IVgf+mA0#v3V2we=B}*9Yy9r^Gxe8RiWuNIy!3pyXN@_JY1Pj2|vMGhS68!1-D~U -z4&FVj>oJlKubgRJ=mUX8d@s+;n1=DY4C~lD{xQT~qHW3qNteDcwx7PKymKCO+^QeF -zhl7Tjg@!w}FUA)SFOzy!@Ho9!m6Ler=-dQwPh28l0+21O;O`)yqEw -zYlb`&<9=yBS7)4AEHjx -z&^XYNZWik_SrLV@HUTMV6wB%`MRB2Yh7)fBi<7;udZx0c!az=-Hw<%FYxwc -z^u_ULFU`e@Nv|!G1!-O23O)MnEqdkOcOo(=##$q6-cdz^!hK!+wTV8)@Y;eeuut!k -z&Y>-m_8Iyw+PeqwCLepJ7i&V=!*INzjX#1F{DW-|^FM{}U`}YiJ?@+qmZ?Oa-Vp;% -z;22NycN%65_**#CPK{#}Hu9JPv{ika?=FYND{&?IUiq$&ku}L(Ip{ljvC3qQpag1l~(b2kF8ZRrZ*Pa#V -z3fQi%=)S1_XCN>1R6)F!b)yj -zC>;rIq^#bs?}5qo+(x?BIS{$>#K14@e+eq4e~tBzZ4UM4`#$Bj*ROmpxh}UtK2X@c -zKbdPu`UHE2g!vOc!8M|ak5 -z3@^b{#LgJQzr(lxnFbh?;3(q+&!&;NGQ2;m99qQE>kUE5QQ1 -zyCZx6mJh~+KAiihP!`uCZjZ&W)@3^+c{cNvpaoYQ2s2rC!EQ90bX;WT*k&GvO@KaW -zBsdjk8^b2Y3V$~CUJf&+uai*6aT2T3yljUMG~sCN?V}I=aP)-Wo_$F8&@v3^EZgvj -z&;^^&G{bptkbZ(#@}CH2EmlM+CzemJwk{nJHoqm@u$~ZZ0f!qveek%q7ilrlex#2h -zy@0d|=|zj2wy)ZU7t}LD*j`*%&$zI?j;#&bd)T&tx#ll=u<{P4j7oVuv}ly;=JG8` -zNR8a)gc;*s5MMc)p9)rE@T4?J_9T;EUYO=b+#Ni-$~HC{`+>Br>H`%IcE1zR&{Tsz -zi#*;h5o7nIl6CzwvQILeg>L{YVMdaxa#ad9HK8}?NGQ(XuM7)B0?v4>R?!2-N8cUS -z;@bZrv>yTC4;^h(2(qaqh}ucW!|K+m!ugAYgP$P-R@})qO%7k>CqhO+)dwG)7&HG&h6Y!A%6tZewB*EVrusVbe -zW}5N02B4gPioV&RJwZLp*Z8lGK7ZpIhlD>U#LM^LJ5rXkN#q|bTKEjp$TpM6^RNdw -zDHk_9(5NMduB4L5k_)r^n^;8YtDtR3N4B35qeEdOQw|moYaoS$2dVe7gn!*`3|hBx -z9ncQXi9Cb(Ig^><*bZ5Fv;X_ycf<5dzhiq!`_(Pm*gn>nvPrzw*k1-ddBSYW!TaJb -zNU=UEW^?%xl5&COv&t4l6t7jme?pq8J(0YLqx^5MlB5wm{IO{{5HaPn_Cy01e5Cw5 -zKh@8dTA=L>a+Pa-VS;u|W6VPoE@_~2#2H7|dSK8(OK`>|lYs$X<_z~5Ben5(3vG|T -zY>VYJ9vZjT4XvI1Cf1~oRP>k?uaBnQXbUr{t}Fe}qpo>jUZ=joPX5uC1h4$-qwPZ1 -zS3I;sT&%25a+oq2kbI~z -z75s_KW8Zzt;+_Yq=zV|0*QYv$v}F@8Lodwrgd$0IJWcS= -zbou|#zFpvR=@BL~4z1~#j3(i2Eei}m27^d;@a1~)+CT8M7q?F*`)_}{8{%4C0*!LY -zrgZW;qK8Z;2X4?6{ec9qYhKjDA8hfZ@BWW`ylr_nWOPh?A+~d%W(#a|h^7GSPZ}A# -zp5&)72&`rAiPsO*Sj&Eex>%hig$&-|WUXwF!}q6Ul6X)m!zTad?RCO2Ej_{*X$heZ -zZ_#8_PThFw}0cRZ%rZ(4?|uRbB?FP#i4F~18a4=@SXMk?~kqb -zwY%_LYn?znY;xJR2F?uIbk?%@-=2h4G&4A-W+Gt~&q41xmCs8zle}w)SLo*|d^JUW -z)-ab}Nlp*y@w;WvQl<&@2#mqQ$5-T)Js$c^4Ks6P5Jz%TE39Rm{7>MYCXHPlq{mBx -zSH5k9UiJaV?(fSv$Iwb@6HCRBg#o;WpFv)`rVq)kI;!NBTt_!=XakMsC7h@BjT8tjtOe}$y5mkT*6a`{~H!eA|L44u3hwJrU;g@2>6bR=pM -z8C6~TkH3K>NHrmJgx5h%OH*m_%c-KV<{7^$3j66Q1%6qT6u*foD$7NKRX*bB2^Qc& -zczULG;^O+VIR+O+Xu-7^@b&sdLcZm3t&~b}o!2jULLnCH||$7_msh*S9sc -z*P>s1DMmB31>RKL(-ROLEMlh34P^3IU7Ms}?pCR!^F2nf^oC|ky5mW?ao99_b+#MBoy_&MmP -z41Ou%Jur6IHK~V%T?&aI8G5y}4|JFV#z)^kFVK<`m&CTIccGQCXrX*A+n}#tnsnrM -zg1&;*f!0KeLfJbIUkcgwl%r0+usXg?SZS29J?DEKlmUn}g6W^qu#XZ<(14}JMkYuJ| -z9Hz%j7&mqxrTa84HSN1a*CJ;G^0RiljuG7x_)Uy?_ywX_zhY_VkK2NFnD -zXc2{S%u2i34B(R~W|xq{OOj)-9T@ar{|Un%78oW&nh|r(W@-3+C9_vY&h`}p4-o^@ -zAY+mnqro+Q40x2tYv~AWh -z74hU_Fkq3w7uy(@dMlF!NvcWn`k;{Slr(eApE}H);9s*$ewCSn5j~5}ttDg_l8w!B -z5H%}1B86w;g>k7*a#-S$`M4t-Z0JRNIr-ocd$@v^csXA=Vo5$(q1WbR=@0?@|#jLrlv&Ja6wM86scO_e&bN -zrV?W6r?b9u83XyOqO(N(KfFRyRUW&*|Rs;uEy=>|sA!8PzweU|9;15FhH-V0~r%*TPO8$CDWtkW>I?g`@8>cKD -z{<#wF{Nq#?zG@Zt?}08WsWJK0TXiVGEV90jYQ6s%r1w+b?r73;AsC|1SvRP!Xc)_n -zyFZN!vIZ-87*VXOOP@Bk&y#!cN2s00_-{1Q$q${cIg0E_TNU% -zAjv(uM>wCmS*)|G&?XgFap$XPKxrqe%88)aV4drpOtm -zIeP38XVRmGQVl*llZYPAroB1UPj#tTT>bFGhVad`V5>~D!nX|r}%$mj}1&Kl7t@jXI_>{KN9|E!#P_%8JBV3!mF}f -zA6J9OJ@00P+mT%Zuv@jXcIMw%1 -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 -z?xu53DJj30=K094{>1mkouG26}{ -zlKyS}JMZ~@AK20`7gtM5Nm{SU4dkzJbaX(V?@b4TEBVQylym3WPle%c -znVH*0es*lbUwedV*quJbZ{#b^{Pw)CR_sx04XJ3y+eW^7=kni}({!F2g;hrh4RKJo -zQ3mUIm6rU+1?oL_4BCG9+^{vT&Lcw@ckb*j8`S@B{9RZpCXlliJ2t4mcw0(Jm*3%3 -zU`;?Jn6~&?L?!{2K&*jo*w~giBvYlqCU~X58`4Vk1U?-DL}xOMbbi&bi494^y%G~J -z?e|>A8qxG3_=2g1n)*2{Ain`(N%S7HEg-trsZ=NDcebH+l;BqZT0yy#juX~eiq)}^ -znYCt7H)F1aUzy3gwMV!C+t)}N6^-VKw8i!BXZ1!rYBgd>9IY+T1$t>#G(sW(f|6u1aUqk%B<-t -zf70A}YAna13+Kh2JYD|N@+WEhhiGzS?2Q_#aXcl=IM59(`d;DZXJDb&TzYv|4wakV -zyFPsFICyus>nbspvm|ij>XsU?&s<)mqP!Q}b@q)&#Hr4q!r0Va-Ifynit2ft1&G0F -z5h%j}Ye*sKm-YauTi&@x_=}~avkgesPqd|%mq?`Kz$F?<<*emk4Yd)kC@NVfIY%uU -zyKqEimi6sHed{_AxtwgkGvs1#051xTw!(Y1S4AUb?htk!DB%Aw`aWX6%8e_r_wG32 -zv;bXYrj~&NH~v4izCA9gI{p8gGxr%TBcKf6WiDP26b8^lu^K^-plzbIrD)qAR)c1t -zw)+*c94_qwW+9^nGg+q9S7qB6$W|g(OSgO9oiQmcUPj&Dx00)&4a){O(`%m3UyrnaO1=trRTrV6^=)GdAO;k*+l?^_lN -z%3mw26WK|06m6FF#T;e>Xfq@xoqD~n@eImcrgFzRHn#6CH#=Op+OAAs_A-oSDwT1G -zLzcq&*sT5QcLIr1mTldpZJDaJ^s?6>0RR$<_$dRBidh5XP -zzd)acS}e2npn0FQgdh4a%dQ1)bw?D@Aez -z@5hT#f~nVlISv|L;qzW9w?Q}{VG1Nf*_>!0>176^`Z4Q9csPX1|40Ax-$-{WI8b;4 -zx4kZc*FDS)95435Q(4K&{1YAqzKtn63dWgYT^`n2z2)H%1NudyDMDe16A-3vQq7$>m1n8`i -zN-bXMJ7zF|Tol>qu&_;_SQ78S9@y6lK$>K0i{f{z8OduA)p{IXU*1~^t-W*4wJG&U -zHQ%;>yVa&jJPjUk#;IqM5sOg+^mVk(rw?$DL6<3&o$!`2#lT}pKn4 -zw~3IDKwZdu#?k|(48)NxDV+=}_(ZU%=OQ9d<9sGrC-Ek$@npmuvOZqfRs)_U%^RY; -zo-Ar%n=v<81cE3E{+cM~`a8O2ZTbv63e$Z#Winud7GnG@5|;L2j>_l-wigmr@KQZjf|TZA7)MId8zGI45|hC{!6JM0I*$Y&#P2)!U5+$?>OTOR@hYw?t75K9 -zs5%ndi>sa0b1&Jh#9A8XF~UEpOkK7sU&hjLY(*rFM@YvVRY$IV2L$$M=aH*5Kwx)N -z|K-w=t3h0uUuC-zBR%^O()8ipo7FuR3IECncUDIu2a9yK7wINRN1AHe6*G=(LSywX -z-kd63ZLU%vZHjdLx$5J{U56Z=MB1s+waRKnSp8n=n%^8Ul-_etmYE=2xQ^ORwh0y0 -zd&C(T@Q5%G1`Toq^z*TK7CW9sdeR`?d&45UH3W~AI9TKc?2BK$di=iP+&O)6)*@6P -zQaJ6B@~X}7Vp_>ksu&^Z=2mDMEy6?BQ`aoIUK?C=xqE}5)B-f&!XXo10ZY0?c=8&a -zdhZ>e!i`uF%+-qqoEAnH`(9hQtiy^ia`fy`*nZ{w8%WU!q;Lj*myp*@cUsO?1KqFo -zSf%;x^P#Uqb;g(C8QWZ}s8bN1=vA<|XCbOQo~+0BNNC_untTs*)ajhxXu@?pNq3LH -zrUcx4HDaTvGq6KkaQ*rvjKQo0i1gJ#{pCuiN^V{t^}>$_-J;xhHf0nvc0Yzz43ggj -zBV4GW`Dp=4k|iWyg{r`r5q;JRCV(G93kOeK%D_0!6xLz9Q~I{5+)Z5Oi(qE?6n3KT -zLwg3_z#AD&Wcqe-#*Xcxb%(A0XqDxuv*4Hw_oGz5Y0QEHa`;O{sJ{-_U%c9tCS;B}ex?903vl{2J(-wGM%Kd#0 -zaU-1fJ$p%?ZtMS36@AUX^{|d^a~0xwqEt%;v8rqS88Dqhrh0VpnyFK!;g}s+X -zcjPYWq5hKEz5x3f?kw?|NxcVG7XEa_nqlJ`3V!IH8A?W*P-Ms~;o)9Qz{Wq1t7)O^ -zpRPXATfrB439rp+vbH33Bm~ETv!3c?46ey!NlC*7gU>X^#?P5Mi~phD{-Zu!f7Zr7 -zg?zLjCi$Sx#+Tz*j^q74L`{YrkFei1eAl+?^sP2QUzG)^gApRCsN`fJ$iQr)=|-QI -zdH_>JSHO=g%vwW~p=$ -zV9OpUJa#iY>i<}I4>TsQS5?-P>pX7Qah|S(ms1AKuS>4~;UYW%r#*0y;-nwE>fF%K -z3YKaaQe9b5`MS7ZCo`VVZwnAxT_bGlQcel^b1%Lld5b80@4#0i<(99=9T#PmX%{(5 -z=EZihId{Dw-UmjDxIlRH-HHtcj|p72(oB#CTOy73q>Btj>3zVXzaidljJr5FqlOu0 -zuVGSwZNtvJEK#_p_iMy=_*y)kAvnG?d<4%lL}A1EX~egp^SwBK4d*8_5T!7euDoXb -zNIWy=Be4sAr}4K8e?I(uKIgsFvsZs4evIRj_&bijF55@qJ$WCA@8S3e{@$K5R6M)* -zBe4a?f5zW|Ia};Z^4$af{pUEViO)Cx(4T$vpZF>&+uCPHGDrkh6=TYV-_d;=e(0Zk -zRd8r6I9{LQEO#2caaP7ePmQ_CSSLpI3B -z`zrE1yAZu#`RFCBz{A_^Dl>1T~F^E8E6P~MhRy1aAy>M9kd*+FLTZ~Mwfv+zP -ze0?;VZ@55F*qHt;xAJTn%0-@=z=xIJq!CV^3BT$2p@%MDUbRpTo)n*(wuM;U;4ZG%oLk&(V2`mr#3^9P;};1{%YW`xN^o< -zf%dD+B6%-KmrYo4|LLTs=Qe&Rb}`rb5&Zyt;PvLiK=RU9`cleaZgP?^^US+=es1ahEL9ZCB7u1Rb;#K$Iuw@L-8fop8}L)ReUdqbH3`Qe)otTd~ -znGv=*SEsUPS6lL3`5xtj2lM39ld)G8hmjUJKJ81v&gJ{i{UY+o%6BK)R|Fnxnsz7| -z`>mbVr+HY@e*1Kf$!RGD`?+a<@eEIk*|I9zv&y-D)lAO?yQO57r?_~3Nsi}2v1Rpa -zPw}e#tMBw&SY>(mE>CgEg_7dc7giTPy#L|5fgZ9vV)I;hc>g1FJjIV#9?kV!cx3;h -zd7k1&Pl`_KT+apk)>!9xPKwp~lVUx5%T7W!eNx=1Kl$B6%gOJO@s|Sr$pm=iX*?1> -zLQ^IFvt9<4{2kcmTkN!Q#A5{*qlv?Rm1YF~%QeKhJzAr~|4|xspca}tT5n{5CTX=u -zgs0FVNsmM;hxiS1?7Kx23pca~Hg0Hz8u&4MQoC%;p3?aC^in4MNnfcWf8pC=lyjd$ -zXHz2*Un?ZpEH6c_OY-I}jK!XtxN>D0;*iyL#v+=K3iJDFC9y#j2(!Tjx5WSYDxEN- -zdlA^Gj-W4^&{a`jnc9opQb+JOVtI803&GN!vn9z3R4y?8`-}I$I}dRuGPi%L=CGSE -zN1=Cv>sR<)_q*j27bdoUEupYtI(GquwOK-8MVv-ij6dVBD7{Xo9c=WD58#fKB>MTo3-_D9Nz#R(%AAyz8BaqdFCYHo0~E|+glH&6GA$u$-e^n16ZPs%r1&^9C2&} -zA7R?JRkp*7xJS8&y0h=Upbcx_8t5y&5?`Az9GZ$K^u+j1*hunu77v3-4=onY-zOCG -zUMg3B4KUVUTv`jvE?KyhojDF@kXBjwqC7G5=?&WLt|}c4y#;)CNwG+tJ&TyswicC( -zm`b%4jZ5VjSsEEk))vvpH>Zys)mPA8~6Z9>7ixtI3bS{xzvP -zC%UrMPI5iEa5Daq@t5M7*gWOY`WL~m)8;(K8oGTL}z`vt(V^)3fE+P7y#-l`>2bngbnM0{^ -zVcq^f20u1MoNykjk5=d$W@1K7G^Gex-A)Nvl8fEr$@(Z^^0|W|!)$!+Ags$79(h&< -z>N&QZV$a3~l)>>BkNu&AH}&lqjRmleXEZ|V27bnWg%me4Jcoi>trAb9qb@Q$R65p0 -zHLM1bNWJ$iAp$nuT_Z@a=D>yhra0_0tgH@9~U -zMQSJSf=Tc$U}s>?Qj<;Ui1ihC7ckJclC?r5^>KyI1|4bRdHVnRv+^0n^nXK#H5sf9 -zf9ZM>bpe#KB~f@D+W3)X`2KCA*i?y-LEl?diMxqH#d*sb+>0T3`Bl;y3V*#}am=~0 -zmW8BdO8E@19#S3bnA7R*-gXPCeS6lUVjT~mMVB>DkWn*y9Pydc%HrL!n0osT8|zTyo?rU?x_J)9e%Y6XF>QQeCyJj~5np -z9TsP0CaRQvV%4XJhOv3C;|g7k6$C`0wt#P)5rkh}A1HeQ*9XcOJjp*;28o9}e=Uy0XI8=cJstXKvMy}M -zB;UaCf~}i;O+Gps_6%IM+~BP$*R@X;X7^I<48Yz--ZV>vAI{NJDcLG%9J;|lGO)0Q -zaqe!E=G|@lh?;FJaeS}H7!^AZ|4|*+q-p4_i*hKMh{yZ={t7nY7;$;ClU4l4JxUj% -zJf7tym-z1qDBLk%vsC$xKu%+XHPA4=7X5%f3mU@eXsa(0Iz)Z+13npkndqgyApTQ=~s>sHCn1b`) -zNavXq8c#`w25TU$kC6wpoYFH1zR^nF6i|3j_TMwYq>95=ZCexk7u%Jda2nFMP7}$8*6N&dQ -zY4Z{9sh+tE0zA-!KL&+kdkb*O}{<+ge~nD6(nuTEyelSL+tq -zV)Mpbue#P9WHl0U2vRvo?ux(;L|+8zTEjp#Cz%b*-?CB2ZD;gIDd!j|=Mnz*tcZ{V -zPL_X#zP$!cXa<~VMpeMddwIkjg3Q3eSB5dZ3oV`+t0h?UoRAnZx>ZbYm-D&6Gl(xe -z9(E-vsV2zFp?TqRC~^vmrJ#n*ELO<@L9~3)-Y~YJUG=D$ab10*y?tH -zg-w{-lLV};3``K_@>8(JC#hn8DtDAWqcodmfrH07ii+ -z?NP!%$O9u$o6vR!e#6JPllf70oiviLip`hvueH?kKt&*e?>ZoLmSJyO>QlTG{g*80 -z5hH`EHF3hkZjvbS`S1JxdjOuZriZiCX48QLNSzMncJTO)esRq1@B5nuERHY4ntH+t -z$3p9;f-21$ctJ_Zu#|8!0DfWggWfvn+__`0UJNd}D- -zUO5NNJwiK}Mah0g -zQXJLqc>3l)(aQZo%QiltsUEg3!^?8`W&HVEVw0vmq0ub7IK-r>>TUh{3O4P|O>xJd -z$J>jx*AjYx^Yx1Q`UvEyMxWIS1<<`GW7Z~57`)Sfj>Q|#x -zh?Ab=A)R8x}z*rP<0VD(98N^}zv{#xi! -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 -zv_5ae?7&5n)=@+MIPl{)`pkS;U)tK%j8Ujm}z -zECpV>f7pt(iAvCe67)P;bqP^CamBM{+bVk3Z2!(QIogv$d)kEGS9R1LaqJK36-O)7 -zdl=N|yY>lQCK$)X<-BX}sCX@{qc+N~1NR=uyuYj3Aw~UTgymJxvADIuVR7jtqoZET -zl~B9)R@IAnl3!IpRW;tQ6K|M{l+14MNc7xwiCSOhz7=82$Qq;T$@W|AY~I$`N|CH| -z^~+IHIo<@wQq;cD(Cp5*PK-kF^+4xa{{#UjTze$Op;+ -z`LnWH?_{$u`%PDxZG2xyb{%&oXn&HI=nj?g06gQg?joag#Qn{c(vp;BHKZ0hpy&~DmA#&yD96IZ$h-^BZ_J05I5$YWswKAU%BX)1v -z2-1|pKbdw22~F{c1vOu&gawBYHdTI&r~WENI7bDP?nZuzJf>5XYH=veP~Qpjc|3fv -zB`pK~4&<43M*7AxrWF?pu}k`2Cs?NNJE2n9MfwR-r5{w4lBe;0c`~c_cpqY)d;dI~1RV{Px1@3C0)Z -z7X4sCeS(De7+tvyeQ}ykC-umYmGPc_uiH_tNa}>Ij`5T#zO&0A3&zR)qF^+574SNN -zHrptxHyW7<+(bpa8hWVh-`W{&mweaF(B8rR3+g?jO=ow#3r4#lcr~b@N2i&0A!PA$ -zLzgZPKbY&DpUQ2O*_UdWyNp06#5vYK1*mttkc@vzOgPnu6t$ -zP8}R}y&LcaI($JXJg-Q)c*;v_W{D(SWDC(}vZeXz_O~dphONN(r2K!*y$mu(A@-KJ -z;K98gWp_x(B)%d%Z{${JrMkHbdz4?7>sn~$wag39PwtA^L-s9wlfkVb+ss~W*Kp{8 -z!SN^?&?Nmy6$ug&U<|z0&`0b=9ncvgD$|1Q_(s@Zv0sks3nZAW2cTNVr+92f>Ld@YXry`g_;ES8kC^PK|#5ZY6-MKd5TPN+c5^v?-1eU89 -zAaJ$ -z=SgVfz@EKfcwvA^F7U}p+j4oZW+FP1Dz}q?_UCr~=zqUxi!Im{#y2e$s?VjPhGfwb -z&n7f2Zqt?LwSgJ1jn>xpGL+`aq2CUR?eQM<9+rBrlS2TyUA$7|UQ~8Q5U@L#J;};+b^8&l*3ykmrE(?}`>2BH@A?{LmDSPnBjvM9KiaAbesF -zl}R^j@IDim&of5Xg+t|u-fq}Yp~(ejK@z+`-qX}WQ{4^DXeRJJkgvqJ@#{#nN*AqV -zX~2Y+U@ym5dsWGu9b$wv%mbCws!TQdJ4(A0V>$_i0Lvvb_~0|SDd+ck)riJQS0kX~ -zjzgbfz(%3QUj+UrBJvBpgn?Kp)Sm4qwZNOPqnO?m?N8mZ)=TfAxQ6un0_T6wT%m|Q{i|}@!ZK}C7DWzT30Awwh>$F;W$>vhTDAF`h>oB0j6j|r -z1I2m!9e>5Sqy3i{ksctd*sM?S|G{sJDhAO2sKh;Itk64{37vV9P^WhfEP9I~4R^Gs -zP?Q_Qd2@LeEA^+VN_&)%h<~H&z2sQf-u(Eo(RUBbd@CH&m`S~RAPY~;wSFun+iHNE -zp?01J-d)Lqd=Yt&pBJll46X#`hD{J7@!F(_!HR?45d~BupRLpv -zoD!ciez8*3D4)*t{avw^Fcn#A?Vae0!H|E*Hur#Cg*k!7rTWGs9yXVBpFiyT^Rr(l -zaWhf-llFXj%cz%B@KjVgJ^T@j1xRT1;qeev>S=LT{PWK -z))$IoQ{YFO3^1|GlUhW2&fL%%D@7L0@n5Q)0}HoGmUnqc=EVy2fe6fc-w*9~?5mZ* -zIwPO8ui_-$n^b4w!*BGo=1Xr{H>5tOsE>ebc{$WMByY<9@iAEw?7j@HzzT>MnE!iy -ztX1b@V8t*2m*N__#dj#piDND_lEj6boYK`M%^^)rCF~?jLk4yz7G42fRoaVa5rZ@q -z{#+4znLs7KTg(CWha&Q*u##={D=}v`K_|2fZ#x0}z#kB4kXFE0>B_r9o7#7yf0sZf -zrp|`jL(Px(g-Vsk)j{qBSL}c_u -zws*u2tP5?4dC;cl-w{8=acrKal}Wt|Ph_CSO%O)o?K6B~i6E;p72e^WdN0;KP(Xg+ -zbt~^LfUmf2N&y@9jz%6#fj)4z8Vkw`(>?=dNeK;udEStN`9xh`EJg2B!@hF!S -znmj6%{|x3)jVeI+4m$tj%u|xZFU6r~q_`3ZkFgmEtCv5fF)Uw=@0}j&T@H_t<;7oP -z)r@VQS^9~C2_*39$5^X+wXQvb;+>RA+I0CuCt= -ztJ_g&aNDVkpGO@0OBx^qm_bV -zCq(VoF3vYb>{7ejSOYb#alCHFHy2)ZM7uNUTA>;LSTO?ZEKyB{W1Kn0P~&hKYV1w5 -zUt$E*CAur-VEr`;cMV51Rq@*$+iKq$qs&P(ZmW1x%w=A%+a1~$gP{x8BkMOJ0=oRP -z-4WG<=m!0*1AR5{8J>vvgBuOU43<-d2OLqJ$i`PzeJ$EEXm0ojzp94dcdIQihP+@n -zP7gc~j5J2R2IeXj95|dYF;4|sn;jDLhPnyD)S-{W$Gj9tkx9KDtMZUBgLkbb`@&A^ -zvNfZGlhDX#09z93a`KIsNq1ixV`MGR`3U!RlZEcj6A5|pTvr9Or-hh{<_PuOOrU~~ -z@g+!(b&>mOIQ*U`kywhr@~t^3v!c;)q0e|Ux%Waww2aljdDgG6?3g4eWwg{_By1u -zvR@`{tB4HF2O6)2pxJGZH_D@TIqGYb -zGglbqB)aT7Dq;fRtM#?72BV@}jyZ|7ts4>VjEPcfZI@Y-%f1g0(3&bP*PK%5PJdU| -z?M&I0SmD^Vtm3=cCg-8rBImkVZ6LX>%UN2NP;scP2=^MDleaB*eqT4nxd&rmmDgRX -zPEq=P^Wz^E|Mu26q4uP4!n&eiBc@u?O1q@RQcEzqt|K0AeS4Hgv!|yvvN0D3^PUR$ -z)LW+_mN$(z4R%#v`fE||ni+`NgO)M&)u|hoh!(5SEAuARsGB~kB>uR|b+~6$HDXP* -zGUg~(U+v|}@G5O_a8J{m8F6dAq}fvWG$cFtAbzN{JK(#7wKVmbZEg!170 -z%qKoqxWW*-dg)`m3946?uFiQ{4VmtQ>>>!Od+b<`G0Q$! -zy3X)mG2{fR=9MvzIoGT+j9LBQW8Wt{xEfLxb4rYm%`to+M#S!QG&wTiwK)*FICO7d -z^1>^SO&BA-yiBMhyLvEmQhYvnRM%S)1~V8sinD0!QfSt@8cH0>_x9J?C5fZIB176w -zTo#pqG2V=t?<$FfZ#s0BcR{K?0EEdu{CQww&@bq&i@`o?iD)Wh%srJowPvZMe&RHV -zl{ih{L*E2$ZjWO)^vNJJ`KcHEvA5>e+wzBNTU6=x78MW+aX^>I_kv+HHI1YT3vtC` -zi9~O?`T4;Rw36Z*0t?~2hjR=i9N=WHA}$b*$tKyM7r3f0v~#gga&I8 -zN5i8YC6R1A$#@bTn%K*}*BzD$)Sdgb5kgw-{~9`j3?Ry%IB$6l?4>}n@KyV_$p)Nx -zB_;T(SdDjIi6xNJo_R~Q?!&h(vwjKf$^MdTNGG>+5YGFA=ekSQ+S*A&GocDmUnS;* -zCo{%gvcS?-CY_aKQ2F!P)xl*ld@BPEWtqDMk)Oc~KzA5;@fB3i9W``ndf>%qrcw0O -zYGA|CmwOX2J9Dlp(64eHMPCi~0p@pg@Lui{%rx^bZm3?s6IFp2=I|;Xt-0i&XK@#v -zqUT^cJ15GSqR79A%HvBE$NS?Ly04l;=qi8c&SV6>fm^e -zj!>)WrS^GXQymBYkO?l5Ql0{yWPF68@41Nmjx(a%=*l(1S|YK99KRBpJbYGEAEz&% -zXHSSv)_)Gk968kA!UMriE%A{s`^(5m#6ksHtmxtBixELNM+o<9z6AIk^>MlIWN#r~ -zT)F^d8@@?-QmfvHcaN6Q-mS>7s`!K`Z^2t+^F&LF%h3So+`!^(EyebIIC|B-Q=F`~ -z*e}{mz(kE@$IilaTuU*|@~#3KzuC!UuCniQaI^N=6F05cgt%9h{Z%DvS9tfYUFdaP -zi$aap8CKbGWZmcZG7+((*OqvbHp^4x@Z2=PFTmR+59km*i_ou@b5uT?@JYq0Qt$;U -z4PdYh$IRSU(I&AjIKdZZ$XF;0^p=!*N)1X|a973GSYgRaeys3tck=~{qp_yD2GKm2 -zH^msep>}!gn_?V}4f@8~ZX74#c(mS7x4iC6(THQSzOjzJ5&C*&jyGZ3vTdGiZ;Ht{ -zPr=s1k^avwJVzu?Y_C#VR_W$$mUPYO?Lh{0g_@Kv1d9o%=EFx$XNQuUvd&WZ=HRKQXeAawZaKrb}s}ewD^jd+`xz -zeYdzO_OD%w`eIYHi1V%XWlM8}1v~c)Ft{?pDBK5A0AhH`Zq=uz3m%P#Dtqa1Pi=T- -zzwHzREuBqv8?rd{0};6*0I)_hj)w1 -z^~K&@umOCmRG)6D4NDa3^EIs%&_f<|!c%a>`jzEUicgff)1KP!x2`EjYTbriz{Hu` -zknW(ft-PuDB^Ny5@xrn5 -zq@g?l9eUxd9cpo@TH*?i2Ofz@p6V-Ei#I44DGC?u)+Pxffqc2gzY%OU>HqPrOzB_K4Q8| -z(kcAKK{^E?ba2R-aKKLGWnfbd4Bg%vJzq0C{5Jk>bJEcsiFS})c&!|PZvMUcuj(54 -z7?-D3&YM!B!QJqM_*ngR@qXM}hTn(qw-SFl@n^?hNqua?)P^s_`g*oY=2#Hu!p>EX -zowQMSMvx57^efde!z!gE~obF37NR`l47a -z1^&vHztp@bE-}IacI8d@vThe2)NdDmXFQD6D@u?>{S97#VBl)eR4<9LX-$<`d_k?@uc5$^e-4hFsy*(&@*k>=VJ+cXr -zZZaYT_YEcC%O;{uCPEIqZBMqYZ6jOC-QcthdxJkiB{7~-C{H67W1_@2MA8nGI0lFY -zyKz%%vdJH;4@75HLhjK__*fHuxutZ_d0_7?^{%J=PZQ(pn_{b#G~6rwX+VGLf#P6Y=?7DR585qC -zySvKwE~ZPCzFn1(ZnRgX+B065HkekQ+>!1{+7jFLHt)y2*#XZC4bTCtWYrqT8E};V+;nO^x_DFX++A;iw -zcLrHLt=w| -zn}p9ZfecD-3g=sgk{jC7E~a^sO4D6qVNG_gN%Oc@QJzCawZw}&(NFy#u_N3!sHgZ8 -z`qNG2bTq>2S7)iYT2+1maXCw@%~CIk@fGm9po_>tAJcSCzNLw<3G=(KJK~X^NpG~lzLo}i -z+CEbXJ!y;qvO#WI(nh^(670gv2>OOx(Ns_VA&bkwD8SHF!?9i0#xb(K3if^R&+L-& -zCHfd}4G=1m?ilqlNO>QKpW|ta)l8aIPY_}gb&&3%SocNN`vUIrOuQ{0JDWUT!&9eJ -zw$8LBFZkl#gx~xEN1-yc6MdVpwH*~(8AdhU4`c$PZc{&fTs8JI>Ww)rPwcFh89H}} -z-OMO=AtDi-0>eLY%mOm%sVMB!e135?_Brq4fAG6UEXsf%x-2@k<9xNHAtA3% -zCB>bl(sU_mu|pk;{_tkB@!zSAPzX)#m&OzL_+@?$IxJ@i(1($4yix3Yn8!o5SIl4toM -zx^&4CfZFDgM}aSRg+Cz>k!Jl{VZ -zp5ob=6pbl6(}v^O((&xfSva;y$F|IAIG!sV&&^E3alUk%pP7u~d!*xgGR-(Hl#UBC -zN8|WD>G;0PQ8-473go{mQ;*}7((%enEspKdu{~3c0CAShMjlcKy9Tph^^81pGjwG*4R+3=wI4|9 -z$f5R_rjfsrS7P(4S7!4O(`0=oD=cdeg}XknHerBSZa8*WEUb?JXP(-57?y>|uC{Ax -zM5IpU+%{EbTTM6OpFj(>F-e{j(dKNci5-{=exU{@t+OY9jXR^9C)j%$y&LNY`O3;N -zU`gV9O7O9=fgeK?5WzW!3elHk|g)ZI}3%fZwS{DV|XIqi$J=!}3b; -ztuyFvCHwhK(>r3!-bAdsCcj3Aka_f6D&y;b9svNm&@%A#H9{)w#e5PT2}Q806g_&^ -zPq}<9~DCJX3^z? -zSgp8d!sip#IaRtl96I+dF>I)ylluAUjZml~{Qj`5o1|CuIYyDcnDLzw -zs&2fI5L5CDa5ipAO{fx64UB0p6u8DtQ&0IGvA}+vHpQEokc^!~s$nqnKT?_?(xCOh -zwDfEXG{hbSFH0T8M3EPy4f$nhzdHj?Nwe(0<^FH3$PUo= -zUhe;(pGo^IR#@3V?$C6h7QQk}@^4T_QNl7v5DR_DV-OY6e7XNG{ow9FJ5cP|96Mvo -z!+41jc%+$$`gX)HmQRFm6xlV3ks`Y? -zQe;<#*nN_ia9mfEfn}0E@_z=O+Tl4n;KRGbAqQ8q+{r-e8*MZ@qWA{!O~{aovDSWG -z7C+#ee~+I$!x8CkNWs?wr+!4t)H5#{;Nu_7r2>7u=0-B^Cf=CLf7EJsj1^2^WL3c{ -z*HAiA_+nUrRemKqUHJNp9xDe$0*>;T*T}OPu&RG)_};Ltm6>|vm~8r+kp3eIj~Ubf -zdDeek-P+2eBh8FsdXo_?U~VhjE=HDJ?w=YW4g>VK3jN`^j);VS!{7~uCIgdw$qodd -zDNc%7eYs!OYICR$s||5x#&o%VD99Mq=x;K|J@7Ihw8IMTJcoUGKGx&4rZnNxbN0ms -zuWb`&4M#F#7!h0yGutxTBA*^9unM!^wUvB3^Dr`9|D|+1pTGtt@U!^{DUuv%b@Ben -z{#rJxzv5CY*@fjfGWa6=(Em|?S#hM-Qqxz-r2jv^c$9Rk;^9%ytJX{e@(e5tOB{2~ -z%5HnGVh6*4ktX7p42(1$rnfb#?A7uDFYy=_ARgVmm28UqSRQ7fEWB}J8F4O|*3H;7 -zSGaIKJI`7c_8VVI>8&261_%c7T{jDBh78`UO(nwJcn%zyjDCP&)V__I&|C37YuU!K -z+q`;HzY`ZBTJ7E{=pjk}+sH?+>+8SwN0J`??j*}ij*WH?$DD+U2;3;19>Vu^(=9Lc1SavMIUH>yl8ZUFN{{mle8&H -zXj53f0+@6;WoIML~0GXK)xtzQ3 -z*4i7APo(A2dYO4vLA9u;ug2^v52~4OLr>jUhB+W!=;(@v_wa#Wlrpd((kDwRIx7!G -zG3f;|%p;{Yfuly!oX?zcC-N#HDm<$UT% -z;(n4(m)`|saauJPL`ybiAjb%q3|iT?v5D}V)C4&d>*uCx1F}@hS(*9B=vb6B>jrDy -zyk0rIZCs)tj~>NGLADHr1zL^uy=5ftrgaHTIJIjORdP+pDKH}jGMkX -zfnvOih+FX9bUBj!(jc;^5TPZshg!?H>s7I^0#oV}&c85w -z6SUT1DSgY(8>mTk`o@iKwi1)XLF}9u3#~g7Hk53z_5T@pt2wUkS? -z{^xfvi$>rbg+D!!EIn~2o>2bki6nS|P|BR2QjU>QCL^WlS1Dy4(&DgFUoQKT$ktmZ -zz4EW4XYrhc+G9A>eS>kk6x?a_8g+C)HZ|t#kS~d7Qp&k=fqa&vEi?MgM5+IT7VW@Yww@4#H1cizKRQ3%w2ky778W~-e>>%7!k|`* -zRn}^;+E^_DplE4)VfG`a`6ru+ll9_ -zM<5s3`ag5-5;c3lx;!!OvNq)a$~J=^9Z&?-8cpAyq}F*z%IP^^@yUuB&P)AMUb4=8 -z36t?V7_j00%32jQjStmqm%6wcGj|oa*U{zB+{> -z$myClVOO%3nGk+Ar%vPV4(P(ItjgxY{bJFeL$d4^jXl-MrkJ~Xq+fN{D!g}_bth_p -zolZ;yxIaJ4PARls>>VX~7-*h^fe{2BS#$X?D6CF)AlXUzjw=-a%h*KYhW} -z@E068^I@M>d8y_d=0kh~kW#YnchnVLa!x&~!&e;I)I9nWJfctzV=iVHyvw*^)63y2 -zz*gC$x3ivuo4&*vfmC*IV)rWZkj~z`=?LV#YSCp?`5qCrD(M;riD49W3k+h$-Nd{? -z{bKB`elZ5}0qcz84>>TySj_{+C4@gkif3Gh?6xbPId_V(?nui23|;4EpjXRTYV;5wTfMT$wCly50y>VJm95hIjmH>s#=6L$N){tD-z>zgOvTu|lqa*X8FDBWh%hpNaldF!@$hJV=_VC_39>`U -z2HmsEW^mf3-4a9-hfqu^FvYl1HyW-atHh -zJ!B2)9mApI!PG70EqU-^j@j#H&eN_8m*j_J&i0kb!JrJ+<62p>gwmz1)BQ{VwDT3=Mo -z1bwViJO?Cnt0?5YeRcEJ>SOidxxAI@r)AdV4gmL^Y+T&RW*CkYtzTYVFJ83l$jv^c -z<+~m3^)tPT20mWx9UKVO!kC<8m+U)fpjs;?MRn-T$G!`(Z`ABeH8lC*z?nndzmP!4=AJcwPlmm5DXwS2k9St2O_Fam?FkpXSQ&kmr5SDG;ByxAk -zgG0Fg;syKFvMG?UFS7|P~@+k8Ic%sKJA)*%O$QM5+!y7pLL -z3(tZtj@dvQ?qZ0)W^n}T{wm&Q>@BS`tXP}ub>~LGqntDa@_;*6-Al(nkYS#}K5mW} -zdb6GObK|f(lk@CBc+0b}+Y8UbACdG@9DIO>Lw|#Zd-$GNm^@7QO~F47Z76d*3od}4 -zpW4{NfR`oDQ6!UfmN-r<>#h6V@bi-qkc9={7!@tnqps4j!z&aDer6{#d4`YPG_5nw -z@!2weEejmk9T|w-Wn-qK_+*aV+Zr9i{r3&rp|~TGRp~q5hV6>#nmnTKvtk9=G#nZ+ -z{5I-?&3X<0%Z~06FD#V@^BDHd>9)zxCHyXE^~!?_naPma%WRkXpLx6NsQxh38TuH; -z{GYE-1PgiJ35Lyj)u7I_rRLj1e&Tgxz%(V#)Pu8cyk%*g?CPjLR3|{g;<&h3cB}1@ -z{QGO(7P;eut6VhT%w^0k&HJW?_5WoB8~EMmcUu3Jo8;5xHMA~gMhVWIH=M~1Q*9=2 -zGMjs_JIthrv5m0Zp1^;^E|QM+8ZVWyS(m`{N1TDg_ZM2!AO_)OJPQ4BK0Gs~Wk4gp -zl$kom7cj*LpY>igRiW);gb#Z!nkuEE_j?x&Y+qj?9e3c^z1}GuAI5Rbddyi!{Z_B- -zN>8y2$E+(xIDme!XrQ+^M%drGTMQam51XRwzUXKb`H`)n1ApcTuZv8}>ms-Jb?AFu -z7nRQRinSHr+9ip_LOqlA)4DS9OCQkh-{c3UQ?!J0=hqFcbgpZe58o5!)lHZCH(cS+ -zgZhA!&dx}27@!Rit>K>B4Q$!ZJ=1<992*^Dd2S?sAy?s3gF{IO1#d8x)Wz9HnZqx% -zu!jah>DR!1#zeO;5;tP2$T?q-@Kd9BIm!=60AAx5drp2*7$wv_x+a!BHI-K-Gocf -zwwGn}sIGK|*)=Gp*)+?-JgQ0A)!7^WZYX`G{@OV($X;Z0U*CsvO%@zNm`m`4(WjQbEt>a!+Q(@BKV@$M-c*^kkDrs1y=j}a -zENRP5()UqfkFxrATr2$D3ouZ&t7@ejCKRd`! -zw;3Jvn}lU-3rG|cY#BXm3OQ||`QOh8s5AfX`u(oo#Z_|l^Pcy-=Y5~|dG6=FhxhL6 -zrLm6@D&V2GnqRzw=DWXht2)ndC2J;$X~<=`2YFhWKCX*JUgZ<5r0hZUtpWbO*Mx7P -zfkA6r(Z={c6&VKW=C4Zh&XpyLXK8X)u3XVNGXvLM8R+ZkYH+AqXLdbft8w7na`(1| -zSFT#QB)nJr@`II6E$DsrdIRcg5P!V^&s(DHQ(m7as`UW}dp5jsQW*D-u-;7guxlLY -zC)sP8)>UF@%83MiBv4$WS@6V7!+bj9q!=`jF42J}V! -zzmM0i00j~zcY5&sNb}(T(Xhf+#jyDUOp^m_pTe93-8pp_yrkh_()wcX`nd`gFI~`H -zopn}C3i4Szz0Gv+$|yVRGT?M&N%PHT+tSJ~gKa2muuvp~W>B56&)qP4)-oZd!r-j?T3VYyzO@~g#&$n}{ -zX}cQR=lt9D4{&_UnGW8zCkp5qG4-6)A4%WFl%soHyI0Qcc0V?-b69amo -z_WW(@ZOZW!J_ATprSMqqPus{}Gyr3GcU3j|Q#>ji&EpQM;3-7r}bf^KJHWwW(;dVO(Y`OC=oxg7m%Up{}dT;-)qm6G1C -zDa+RU!&UxTjcdGJ{ -z!*}_{1fChC2FI)!PvDLIPg7yxC_dep7A|!*I3pE=#bi2`=$9n2$SM24P+ys9@IyU{ -z*(yKRxO0(cDQ3of7vf%8Gwf_bESK|a?cVsO<+x%2Pe|Wi@-@8Ds}Ioip?f9Ol0Lc} -zPd7QZ-331c=8@Z1nD{pvV$mOZ4FT#)>DxO7jO;Wgy^ks<>*BWL7Fr#LI2l#XRBy*Fte?25&tW|s;)bEKHI -zpy$MTqU~w%j=Y)BKA)tGMd$V0E9Tf|G%e_!iKlIXa)`Q-2kMc**D`axk-rkzdrbzv -zEn|7T^h2@Ry+iz$_0X1%Ell-ZalCOZ&jJ}U4cATTrQSaSsEv$=nD7u-S;w#3kl5MK -z*E_vDSJVuI<5h#T%W#SDfYG -zL7*?d&v1w`?{zc_x^l-RCHy|>@{bH9n@=jop4nFRURkPau_1eNb%RC&ga%X*%!ny} -zY-4R7;(stp*)ju>trUHTJh5i8K35x}H6zxjM5o2mK%Qt$ot5HhJ0@GCV`=Z1aAa!@ -z{5~h)bNUe3Zcw6e=WJTDDOH&%KWR9;DN}aR(6Q;1LFUoH?oc -z&$J@vaG7$(>3P!g)U+wfp#NH>1WhLc-)cJi#4iAmyKYm%rpP9{@CUa>zMx(A@QPWf -zvYiH5%_&2TV_2)sssgKv+I%@Wqvstdzf+FoNj()!Gm)dJXTFO(a1FB#J`>rvOI<=# -z*Mq2w^z5J69tg)vhB~mMKfBxEA_fTUd;A|JzX14=uF^RJwB(jfDD -z963KL>$jre7}Ftx#6l7+sDT<(^I7vpVvL@>($S;m?(omBca#nWO? -zDt(aN43_j^Z6RAjISp)H1LYnUv%5zDIoe`leLhF+*)dS~`VdFPeauG0ywrgz@d8&m -z$1RT5m(F?bx21EMx0KGQ62HPWd`%NRUFzM0876GK7#I^7XClv4dwJa-`Z1s7d`#Br -zU|JcQyF5gr71f`1iQ!o$>;7PaSghYGDw`Y7)9jc%sgb!b_#!E#!e+??RA!TMxn-f^f} -zzQR>M<5$g=NenH+gU?-YFl5EYq7U47nvSv_!@M251o>?xsfMc -zO>HMe=LPMW`w_{WvYyQySJ~ -z1#eKHv~1{Nvc3tDr>)OGBLgXkyp2A(&+r=l9}ExO)8bVtJz+lHBJ8m_vFIPA*nTYf -z)(ON15s$A_#Vzmw{5G-OI_V5bSvne)?^oL~%hgc%RPAc@T*;pm?tCXeOBi7^-$k}| -z#-l67@u~JGSOMFhvPQFudXW|iXh97gBLS1$n*Fe)GwA74Re;2+J -zTDMB;{n58$7_V59ghN2t1m+!@zc7|^^ozSux~J=DR!Eqr=iCWsLw2Fky<7a=nwQIT -z?Qo}K9M8b9-&;B9j7?#9^@<(GP~SG#b(7iY!|YXjQaBIgFT{7fu@g^eL)2k9lVvzD -zhaYCAnqOH)qui+s@9g%oWkWd3+;`xL_dtiVsFN$17zv -zXryK#-@jYW?vn}c#ag(eOy*;?|L2+dxfDj8D2^ig58} -z7TCt9P6x!4QcRsW@z4<#-=J9Vl4xwEdK<)3ZbecMULiamwHMedkGkRWzjp{d)yv|q -zi%*78TN^eF%eU_|1j`s8sBpBg!Es0Mzcc7PvZnvWIqAjnR;iQ^FE%7l%~)5IMWie4 -za?p19S>MB$39qIRI{jfc|4DlKYSgty(;1tpX_sk|!}D&vg9{OQ2lQ32(>3iJ+8bFr -zl|Apw{ukyM)DmLRoBix0D&IkrZyVm}75y8CieIvFomQC~GnA@|dWSCbiYRZ!wJfZS -zot9>2ryj%+2XX9gP`*n>1|DJ@%hZdjnR>@)=*g4~li68YHSq9Vr|zQm4!fz4VPQ9Y -z7uge`r(jG)c#5LcbT8=A%3cvyqkp=62fF?d@ru;SuV6_!hHC`&x6$!Mh)PcLw%UH$ -z1JBU^<@~gtl^_o#SQ1fTc1QIWuV<>wxaDIh<8rSAYnCFwuP`?6&=7vh=ZHYZv9+zH=8_zfH;uBx1NRE2#t@i^hejlp!fDJsVZdEU5Vs( -zYP?fj1r=4I!A;l7@U&rMHtz=hb(L0Pprcv&%wQF~7c|bl>wc$GnXC+IeH1|i+m2aV -zO$?V>kH(uI43llI$kb$dxM!ae4_0L+6tqKS0s2M@+B1Rvewls?o)cfeZ#vdrrQZVl -zxv+iBbK>ig0@`!pf%@mf*Q}pI=iqa37XGaGTUzxP#Xp)gULfY1-4(zoSE--H9XTe! -z-u?lDE12l&pER6ph+l0#gF6D-@`{zNnAK!z%52K)WF$2by8qdR6c641Y(t`l-W2fg -zH(H%3UN*0_nAWLWKr`xb|K=65KETo`Ff(clAK?E)sOmf`EkBE`d-N&Zc{pN^-r`KD -zA?zgEp@H3Am(tv!OIU|JbwIziq$GN2xg`Y{X*QvQWm=sYLu>IDz&Cy&&Pd%bOAY0x -zDfxdBXUNt|NH)nQ9Ar)U-3hyY10+PEC&i=l4Dw`3<;{@toEWpdnhEPA{ti3h5m)ln -zokwJ_1@vql=?E5JNehou9MP$laGQGI478pZKyN6(Ms|DOercbin?A9y(FmT1svBB~ -zr^U!8gc=K}jirH^p+DN&&l(w1LX~!RX4rvtl_m^4$C?wWkp&*sct5BBXN8kB(H#?Z -z`__C8%}sm*P@=@*WeJ -z=Fi1vn~xzUBU6*=q517wZogP+H9I-PgOWYuIr57etgRY0XTWZ|Q0qP>-qmbSelD(V -z9z^Jye8h*EGfGy@%2-J?v?`G7H9%vXmhZK49d6`$(Ge?W6&2HU2?-v4QU5@0p6PaDe19PV{EL(uqG&{0srxe|jQ1hn{Du^gIKk -z=SlPy;hgx>#LxMsbWZ$fZr{b?L|?g`ViKu7vLe`Ab-PT>1(mQ6&XyTGWVM_Z=Qgh| -zgIWbgqmjqq?oyV+&e0Xa#`qkyeUcTua1|2gmy{cx3GYu%+QRhe3k(?_yRdla&WlbG&3@ -zLWJC6|2jla>qdnL|6-BQn2UK0u~eZI8k_s08sHp_%?VZ14y)W$h8C#=XKWMyxWl*Bfi=qbSk(N}SoRvWzfEJA?KS-Wg%lGYe}SiP+47&%lBR;aB0L9r -zV_-JD8EJ^hpye~%=WCMgA(dV!MN+8zsWt1%`lAo`z71QRt}0rU;3g%j^-AQMC~Fyt -z+Kl%m^%B~(-t>ip$Nn4s{{p&7#H@h-EpqfqvhXU{+J$_Q*D>T|LsGQ`dDe>%b^0O7 -zOPcRAwhVy(e__56eun*ecIpTC|CIP5dan=ge@4yqXnIdl&3SQY^NQJu@OktDy6)yx -zjqt~hgzx>l=xiqc`xs`a)5dw^)k=?|iqQ2_`E=hPe@Zx|Ceg?2PWBF{0Y0so^C)&JQ37?9 -zTskVXOGtpP@&Nj@JHYhp^wCtTK`-z5y -z@RwhSJRf1QmIZ5IY4inXi=wkojc+Mpm-cRr02?YT86%A4hxESEqiC%_HyYXLuVQHx -zo+Pw12Tuh*31Ux}3Bm?!TWyiztK*F|uxqr?w`YT@+`%E7Uj}{?T;p3Svct(jgfHW^ -zh4?DA9+keTSMfh)U(cW{43%;9b()h=YxsSS5ex!x6nB4g5=BqRuQQWSTjc8<#=j&Q -zO8cYPJ!B2%WA1<>W+LDJow%)s%zl>-er9GuW&N*!++mC__Nc3paJH)I4(F-LcydBNLv)VZ -zbHG)jP@mo~U+FLn9O<*()c3LGO$csIYvDX(c*%2jh-wsVqfp=gF>$0X}QZAzx| -zV|M{^?YJ7buRqH7#}!xq;`RauLw#tI8{EEb_)8M%`EmROvFzoqceY_4gD=s%@GG#N -zkwV{Ka49HS=qhGj?(dKOu3yUbUqT!{Qf6Jkbo916CffoR;mb7wZyVoAjE9`x3QZwM -zYU0dfq2cU1O^4ut<$>iG;3hu_8~n4#>^}&P!BpTW;J<^808@_=sbkSQVkSN>d{JVa -zx>$a9z>KU{$_&L3Rb#-|YioP;GF^wby*Qu5MpYk+nqv#YW9I&SCr8{>RgC4+ZJ$;` -z`4?Z$r{%2q`{?&En=A829XXoo%)?jk4KTM%vMqRvWvRpg3xgtxZEGB}+EyW_B(GrB -zU-7>=JW#?YOWYIgiRUv4>B!wFP6a=tni;X;kewgsN!Yhx -zPwDQiXiaaazpc_=LLT?z>g3v2=c_#@AJ9~5YA2XC709m5SpO%3e&2A{8mDESx;Ce} -zZ)tMv01tel+<@BqkPV+)+mU{DtEP6ihwiUhf|&RQm4}!`;(h2?%s8eZ&#x-RfpPAN -zIUzUeM1o~L_>CyDKCKF~vtk+}E1vd>^Cu;EOKZ{sS0ZN -zU+;GKe`t&-a^b8MjIj1EX?rxa8w<}qV5!aad?C)VW#ia6oPU?jqpN*KY|bAY$PCm1 -zaWWjdce+|?S;KkVzTvfKA(}g7WA^E4bNQHh>^|}>%tpQM#|+~|{7u217k_i{=foe) -zJ}RpIjw4oMsSJNR@K=mK1OArd@3;6{T9pXBjz3l*Y9l=T?z6ipTq6`C67>SmyFeDL -zJCrPZ)0P4+LcC@a81IT%bxpR(+zEvw)WA+0$xA44mysf -z@XYE^(V8K(csv$i^fCAX4meUmH2+PI=D#L8J7I+4N+h*=L?R)Y -z7;}GgM(nWoYx|H|X4EfmuKnFo|BFs9=IuwsXN%eClQcHFymJ$i>A4#Hu3wEi-@Y%d -zZg0bVjyT#@C56}tbcf6uy86XP{OVft4T;j#>Fv=svb>)eH9TDE_wABN9#K=k4DJ)w -z=-ZxK<#%0BWS-8gvGdICe3Wg&;aK!Zv8t(nSMsGbVDmN8oxhJx>mO44i(+~&+I?3p -zQhp=lIhOh}YkV$@=7WNYStoGS^}ZDe@Ty&j{8q4346`5DNgn*$`YT3^lRLm=w?mv~ -zyE;!D~<)1iLv%_ -zAYK~_x_Z)VcH+aZxK~xMqX^Hl%02Xjnv3jc%wuf9 -z_%%1+Db|$|567L_9n#wRQdu}&vQgc|zZoScm6PO?bfettsD&3ZeF+^hJe?)bLcI_) -z8`_HZh&F42cZ6pzzO!6>WBx8fjmBWuEytI(JDyR4+Al!tvG{oBy}+ -z>~44Z_Ok45J5clT)|`^+p1Wy=64VIx^$nfwtwTd>Zf0w4iKpjo%#8+x)X3SqpGiHF -zWR;mNN5)-u2IwhyK`%Wiy+xEHJ+3FCgm?J26EZhrHhltHHzGG0c6fY^(aeMT=-d%W -zf_N?mt$a?qR?CjwU%msio3(F%cR_pGU~2u~iLIg*-Pd+qqw278m=AJEwxy!QS~HtF -zIiThfXZmh!n2u;~`}h6n9-Z&+0S~YhlLGYhB*T``g#Aucc(}B_%qa_FdzXLd*jm4K -zb3uA-eEdvDKUQj#p@xBfeqLQ2z9GYdcW)gXP?#J0x+19_O&H!7Xy3Y@ -zNZmJFIqQT&C|{piZLS^Mlv2x#w+Azjdus9OgAIrPl18YZmDMF@_d68><(pg$PFW_kE2c~#4*QWjP7I|r3EfWPDIHz+SJ?OTIVxJ-|sSKb2?c^ -ziWX{VaqFnyM>``sNaHg4_}&4v)2-7hht;|pyx?BD(-1RE=hJbgu`Q*3*a8;+E_NDu -zankH4t8v+^vt{{#;n+Xn#L(J7sD<=!B3c6*EUg|C9$7oEX3EgZkv-Q-tCD~GhHlra -zJVZ4@BgBzj#u9(Jt=*3wEaoqG{$jY -z45Ho{PFRi(M9zz6VLmt*x?E$d_lU&QI}86S{YAsZABMGVg}`eCpeFnbVaR2gBk1J|u`gBH_e?8# -zeMT-RPspG=@%!6tO&YH#o}N=<@;QsP0hyrZ-85$18f)Sf3s9u>X8-WsT{jY%QoM5; -zKa03+q*9wwLwR+hd>I(SF#l?n!RFLesfFaTz;i$|184LtXg_O%A7XbZj!CHjd&jL~ -zZnjZmZ2!|2-TQw>3M@lwpJd~xv$(x!1j%CU3xPFfGUXHZfYgKi)RhyA*z8Ut$RO_Jdo*s<*xq5gP5rO@W<6r!b -z6XW>_et-34*pNX=p$VbWzASYmV~c?>|~{HpQAIB -z2ApTi7S4z>Of#OnJ>#r)U}M+S+;{8PlfCSOyJmMlt1&kSE7IBcV>y&I~vB;DX`bKzWj`N56zo}FR -zD#fIU_lYAH4h)PhlZ_t$)+j_PVP*J!GcrKFl(-+I7~Tr9<{!hih-(0=BRo?h{?;*p -zJRFEZ|KlCPun5nfoYKDjX!l>>_gJ8GR`Pky;rwp+jgcvy3vC)cBebbvgoWmqMVM0# -zTEE>eL6n8xsc5TspkkY$y5W$c&8=un>Wuy3qmCrS;`BCmn@gY3vVwdc1A@e3x0KTZ -zL4H3tr-^}@dc{e$Wuj$2c>%bf54JQ#w+K%$4RP|DQ5jgH$A|azq=PwdS4qOiPsA*1 -z;w{W=dn7x0M^pS*;-I>dij;J6%j#yCe6qJygO!G{0zl{VU)56BN!{&V(`D5gEpEv^Zy$Lg!QJHh| -zpbh+MGw^)*-$q`HFr%Rqye%QTpnV>j1;0ecIrt-xACijeJQranBQ~3_>QHNHX8-Fv -zJ88rO`MC3RrM!f>G%qA?DPhLpE46+bc`Oo-FrJ<$XTF*wXPzHk!F-Qj^<+6?!5^@@ -z1zx_usmf9C|5&POrS@`4JSgGJ4;mj1Ps+bfGy`YOJ6BtER*ti^yt}6EaMBE>jYvFexS>dcGRaCGvYG2 -zZXRn%7Un{)?_W`&Ki`@4zu?9>`gRJgMGKmwrR@|?7yctl;cmg$W(co=4|5<|7&GdJ -zrC*3G#>D|bxTr$Fsu<14ODFtAEczgx;(CL8vU=QA#4+M|4#S1Ie&D^c&W9BB!tnxU -z^yoj95-N=uVdmKhtcASBmw*JE8B>qBhKN7)3=5qqJPm8U94YPUKOT!-I`N;m6L$+| -zT9qgjWlqHLEhnL*cKeQxN_YGL?fph{Wq&+_q7)hUgo;-OlkT4sh(-S#v!Z5JAs0V) -zQR(rxudx6qvqd7ezq*I9qRhE*?3}EP+Cf%$&&DMiL&z|dTR35cn$)8xwyWQm-lB$Q -zum~;VV8C1^%Sj0>0`spnRJR55W?2>ZL;V`OS+1?2%8`hfmIBP -zWI}5?)BjJzBNCcy$aZOS>WpbaWu9?`+j~7KGs~lll+og^~?OM@C9*ySmqsu -zeU~FMx`1cOx&t`P`x(WVZ6z-_WFc@DuF?eIzeHx73|>kc309urH&tQAgFHIP{|L)P -zSl=3KV$Dv;tJ!|@wy%%Iz__muN=HsQO%J3$DUR33(Buvv!^{GFOcL^W)V@~KJ%aZlLdNS+5fdD?}G-M|x3a>%~)own3cL`fWZ6B>fTuUjj -zP}85mWM)1r$Hd89N#V=W^$^*rteSjJt`o{H;^3O6yfcp$58@4P9xF;r(X_ -z(b$v2vJCZoQ9QMDPZ%H-s~ -zjXW=yP!sYzCw~e00!Dr=@D*zi8GpWINc@bG$!FrRnn3oT%Q -z;M&;ft1vFIHWidYX3ge;R$hz!$Gg}GsNoT_W}iE6Nd5cmb)1yku?5*5bhM3r@?;W;e%z!n$I=&A -zQgy14v6d=?F1(7^8eNN>bjhHdEFX8U;X`6PN2VX5i$=s1@#n=`?Eif(a;x=6Df{bP -zGx|c=H<3fp)8Z9bb0cH2n!f=Cp4MpDYW*hi;*V>^SlfGREz8VYn^5{q&? -z`}B`%%(b_$_o<()U&Z?4x7L|!153ByPHUr#$>IbmH|<05GyDb9mOVwhM^|LV0CVjH -zfE~U;PO8z#-SQ%9Lsy_inJN@rFgkm&L^z^UVM(nXnTbGlTjbEEpd3fpjpMMJfg$u5 -zow=yfLBdDpVbwP>AzBr$7u8#r1wF-yjb)o#w1#1 -zu-w#Vb5h@$A&rQvXQ7L=xuKAhIra1j-CYwE{Hl-A&I#B|x -z$597N`+)GvWg4KIWghee*JC$gtA%RdD&OoYXXBW>n^9Ze -zjxf-P#=IPLE4?MMQ^3@ZH}iG>6WDVVcFzuAPj?{K@KGS}?y*|n@$1B_o3_|-v>D_4 -zJAJfGmiueiq%=kst%XW?e$j8}it(!*gMD)Q$|ri~es_m+r}-AE!G~D|@;( -z4aaxk_~|&l%cyImnx=g>koTJfe5V`biRXZ`lR1B^L2grz=aBI+@=x@x6>kg|-sz#t -zm95=c==X$exdF-{=Yl&0Hh~HI`QM2b8X03;L1xG*vaw@8Sa4v-l7k_u3aII%T6rs1 -z2dmk9Dcaw28uPc5nz@K!>h`OJ)qM*7ozB8!rt6{d3s(%nUCbipK4vBJ2(yk^#csym -zTg+MJJbqWP0uzyb`xzE%|L_04#W3(M<~v4#bG2-ubcNxp`QNUT!;by8b-GI)Tfnwr -z9H23MC~_uW0{SZ!{byh5SGF=0+On+tlHtInDg1`gJYHr#AD%94jk+%xHkZZuR1d6g -z$6FW;My_weoFC^zI^FVId*plMON_Rj3*Wjr>={Nl3$IN9z5qt}r~BAOy8cP`T-e{! -z_~F9n9`YJ}?q215Zz*99J_Y8W2w&Xa+<)FELrfBxJ2(@%*lt)1c*9r0HLRojMJr=G -z_HTEo`|&OZZr!EUoekX=x=S|@_jI2c+~)%@Ba=_BK*Bh9+Q$@MZ -zg*Uf^Et_^<=KPlRPu!}V8_{}k9iI3@+wZV_2axzBSZlF8b$L%umUT0>F}aTh6LKFp -zw*&K1vf}6T+z+LzzvMrHeU?pSLa?`-w^6+r -zF*-Z&K9c&T;2vSyU6(UD8LbpUhyN;kU@W$NZJQ~T<7?X}AR?FvjOoLrO0$*!CNinp -zf;VR?U0sP;sauH_3MTOIUn(|LDBBT1LSL#>UT?5SGa!o3%)I%ww9J@oc=l;Gp#={+ -z&cNvKKg($F|4>FrmL0?4{~?HOSZ^WhGnIN|`l!zQ`o9P~8_olEt3 -zNkTg2l*BdhKR?d6h6!)Ss1NuywDtJpqd@O?RMOWykSE?dB|M#%qA8+ktR@64D;9W~ -zK4NTSpahTJSgMU*fbWcQ3Gh_d-v{mGDd1ygg#H_hG0v+8o`?0%Na*-Mgsd4~3I$dc -zT5nwEyE3L)V`i%rhh)`3lY@WXmLOD|r#8AGsPJ>w@sVuOohZmf|lV2`RXv)R2bFj6ZyP{-Xg36JJmsPhR10t92j{Xr^R6s)` -zA2yy>Vm(TX2wJ>%YIk=D?X5b@>X)LuQA^22uHv_tuTfhVBvfOLM@J14wo3E+c6b!5 -zl2yhcO1I4UI<8a!E|Vniv=`%fr -zIDzIV%^7L|$3JRq9gfRSRiq}ixy{J3K7;YSD4j8F1ESdy-dtjYZJ3Am!yOtVyz%8f -zp?vgDu&F4enjBGgG5WIfRd9!TqDL^VS;UVxv<$3+EBjjl^^WwAx}y>$JPb>9iiw?w -zQW@E41MP1%u-er>B&B -zZf6){V3C0`Pb#eA!ov!os|!re7^_)KVTwvf?aU-StL@9vq8=zZ>wf4KqSer|=E7#7 -zy*<%ifLn1Mo^=VH_3F*Kz<#K#DWN$5mCUB3u;0}Rov+pvtR-#TsS5T^)<#~8Q*O*} -z#=jC8MbGyPJs&+8p0VK9z~Jc6mYH$mgJi*0KI83hAH`HZxJ?XHJ{8NdZ(6c^$DqT+!fHzpP8qCTwoiobQe78och -zb;M+A%u=1-kIZZ~muubMxe6KG%9eq`U(Vf&`2-7bTBCJf4>yC!&1^g1`qq^pdF0>v -zKb)}1Y}_ozG{TA(dEN)`c{w+Ifw6w=H4j!3MeaU -z3zvHOKhI46U(Y-$K4r~N*^%4*f|yg)i);zXtO3db88ov)tl5ujuxaZu6Z6?5mV3?Uj+Xjc{k2jw@Y4ZDnWZ6jakY=a{n;Fi#~`EQp@eL?Lu<7bY$_cz+cLk -zNw8W*872R9EP6`fwm2hMS~uLxIB$?VldLDM`c>j8M5L{@<+;m#w60BMgzZi~iFU|N -z7E|=Druf&~8c=m;*!cH6FeD38Hd0C}V=i{OTvww@QOY<%__kJdqbnZQ`5@d>7V2b~ -zDNt$lIOJ8oIrV-gEAt})7cZT{6N_HE8GjegAor1;^)TH_s{ab3%T?_BK03c=jSD4` -zrSBY#9nYr7u7UVmf?3PvdvLbDe9o -zxi``kxm_poZq>=Bfz4%#nq3l;g#4u3N09(%z#`ZCxhopXw2YWR$7?95<#rp$?rU_l -zA!^mO@}4l8*HjuWwWaZ=Qd6ybAN@frp;B`xU@#snrs+>rPURnMFDQ7leM!Noa=D)Y -zYKh)LAx4A?7j9p@x0jxYp2Sc=y}@WPohe%Rzdg;aNTVwrY14=4j*R(g)Pu5F`J#ts -z(%ft{#h(^q1~gcBt|dNip}q+iIe3Rr({}28cf-oJx<>@;&LgI)(M5f7pev_h{EkIy -z;Q6HY!Q_q$>Kfy126cn^BjT?cXcjw2*nZ)F^N0;PHkC)FA1JrEJmM_OBTZoY5Uq92 -zxZk!0etg#QuV{LVwdjEOnZizWI#4RfD_SsExYH{wZKtt8;e5J27yiD?r=}w_IvZGw -z`$KNL!8+$+j1T0eV9bTWj4x?cJP9-MBF;v>{Lz?yyWivQN4#!Yqo*uo<1K8dHa);l -zk6k(>d^Qj&WAi>~2$gPd!VkQ4z=?3B5x(QqTzy|8QiCY%0Vp8Wl(2auOk -z_I6EnYO}Vn>#`GWgT>QRY#|ho)X`pzy}I -z7UR`uSC850=F_Csm>XCqwbUCu;9e(%rrfYaS#VxNyJ~ -zM^P?9CNN`aF<*+jc`fc;J7Y}VUMV(PYWzV?y;X&3F~6Uz)~!4=N}}W -zzE55w!>FO~K_$vP6a1W+nmQ4TU*L*m>&Y6mI90-(s!Zpc_FaRiG&GwUguI?Q@nhzI -z%Lo>C$!D@^!S(+2)9i=K*lI?qzd^#1AIrCDCu>`^E$;t{dny;2-L6ZKd#{CEWzbsN -zf|4)9GA(VfUW&|@mPIRVpLOerDDOlaDtO8UHnv0S;=aNZ;f|Mx&q_Dymj$Y|a{hR_ -z%V`P}AX2atJ@^yg-#fPGaPgYri)-WF7ZLt5@{`7*-^9o(AB%n!V=!O4Ju4zs@Bu&0 -ziY`Woe6Ej0xgGc~*}IE;D@tH#k^a?ZEa_i; -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 -zY@AIhZsvI?(j`& -zs>mj*?G>oow{dNKZUo){nJ&ry;_PPOO;|8Rh>T~`{4*`Vp4OE6$Wo;ae7dtx_b)#j -z-)h0uG+`z@NiVrG1wFhZw~zm{X&%%}G~PPAC+#2p-2#E)nOTYPUoL3Qxx>ew-p)LN -z@jEO&!?Xu-r2D1WKM0&s4T4SjEqt}9A-e140LCuSl#C3!IlUOUrYg?d^WH3jX69>@SRIU--n*?_p(9;8AnS* -zBU3s@STBeD1I3StyMZ*(@h`ciAoJmSC{h%slTC6dGNFN#Eq^*9IqM~tHrNbi%4Dc> -zwEpbK;SGeuDTUHt2#m=JUfZN~opfrRJn8%dm?Alpf@V530e0%l;+GMVF`;$8ydq_& -z895f(n@Zl=M0o+MxjlLwmPqMwVD8By1hlt&qSjUGs)n_i30;ng-v-2U3*~*X2`I7k -zO}QJfwtu9*sY?hX1HCU+u;Ezrb?9R36F;>MI8XC1n(thSjENi(Z&+V)FsBll4vIGx -z9ufP2ub*<_pxD2VwM@WF?M_6tv-yh>9$B7e!BPFlrMO`o8IB*D5K>69#EX$HqfFMw -z5PQd)P=34?8ixHhaIKUOJ5h7%h|i9Y>|;yi7j!cwH-aze@-1R}aRYw5C{eY%HsZ>~DG}=|b>D!Ue^m8DMCU@kY!K -z(uEhl{P_`sUz&0}!KvMt?yB54Gq4+;{kS(yb~+ta;F1%P@(I{Y$;~vU?Mj -zESa?gxQfErABEUo9O~3**AEdwdr?!F80SqWb5Fk%&HO#(VJML6Dt}1F|2N^gq&oqD -z;%0C!x&CsxA#8c_tcp9mK`PUR;$1HA&!F79R#5AD>&8oX8!ajYl$U1mC76r7biyMSKfoYjVT2i=`&oxJMtyongH2jvs1!ET)FdOrOH@w|~RX{Ruv?E}XN -zld}Pt9u-hasO(AV(|iJ}Mg6pR-i`dbuP8U~6a0d~IZVqR;I~}7Y~;+z!r#x~h&;=& -zFVJ&fUc72JaNFI+#m_^#-0{jayWQb%fFU6XS!~;6i=ErRZE?}n*fRoil|ABP`2|gO -z%+hvJq2i2UN2tjDj!B$g&>Lr2ht2xG<~V#C(y -zO>WE{{t_J#&V8~K@8NdaShXgDRh(w)Y{(G06j>__2p@1|^Yms8te{9XWm}C#-zPJf -zF$Vn$c&T_#oh}SHZ|7}qT!h_7NVQYY9-i1_bEfc1fzob|e$=N#KWD2!oKA>m&f*?8 -zI(D6AL*HTcL2uJ5y-m6zAvY$_3{c90d9Fmo?}e?A!0VwAwTI_IIj+<#OwKsG1Nm&P -z>ou3Y+g&_v*4xl$QHIQ}s@dH670#8e-HxFx8Q^xx<5!{FZ}ip&A{7*|B831M#%e?x -zi{p2G0e7}Z5fm_=-6Ymhp*;ToNqAGCVkSVX7_~P57&rMt3TTo~U}u%MOZLwZC9Q*4 -z^l;4G)ab;nP-CiQ&z3}F5clqHBq^-<2H8ediPmd~Lf6oLO5gF$(@}*68Haflzu`_gc -z77vMrh=r9}e(BLaxCnv8nV(Nj7UoM>_;g{=1;T?|gHq53F6+_8o?*tuo*@hWKgQlX -zzNsqjA3ryHy3n*`=|;%{*o8vUvg4AraG@|tL7gefXlRv5*jg495H+PJ1r$pQSXyP! -zqJttcq!q`CSjKI1#+h%z;&i1^d;~$~IU$8yw)Xq}+_dU^pV#yH{r+fk*K^N3_ngoE -zd4HZgdL*Igx)IxE>k-t+Rf!8x<7!5%z3Vb4=~ZhoqJ8N5*Y)j@E*g{i_XhWd?@r;50E?g2{~77v5R+%lHhM-N -zw7-v{2-hBqaH+(a4bftJbNnWj`7o{mC4l6ZKwRl@4eCuHc2oA!sf1RSU~OF@7@w6c -zuxF)c|Cso?^ew|`WVkL?NFU)l)xX}8u+_utJ6Vt2e&DM8SDgXI?3be$&@e8$ -z!zPKEY$zMv>Ng1g~f(Dj<)wVVgYC^xtgUk-#$bT|lYJ4(Fb)%cd23)vA$K -zwE{E044E9Td><`C=HvK&lD9;zIaljVn0reSl2JL1iX%&drzUa`x -znoUwXT}>IK6K>PlG*_~=sD-LOl020yj^w5vVN_N; -zLB0IkO6?F0i$=dbw=T!5Yt=@ap`&eD)7h!&5qJV&1%6>oLL@iMzL`L|i0Ik_4n817 -zO}v>7J`Sl;z9LME<$PPL>!Wo_*kH&ey9-sr;im+Ky3xIJ+1yJDP&q3Kc}993qu2F3 -zGYjkU^`V}<7@bUfFS3PFCcFVMg7U32(5UIR@EwLk)W7ITsthH*B>l}G94D)wLdIT8 -z@+x?gLX|Ppdjj#M3iyhu8{<63C6!U|w{MTrBj!1-eY3tUzVbEcKDUJ%lvH6p-YwK; -zHd8BVxfO*^fPC{et9ka&ChEyePY%W-ubFV0Qc4jfpLr)U)cZ5>kd -zF7aaMJJiu!fhr9Zj-l{5IAPaky178!Tj+lY^;VISZWQ2Kn5X&G86|uRf-g=}aE6W+ -zs`O{c>k!B7F-p{prY(2OG(`XE5tqC)_IpnpKM<4Tg+Ce|HL@rt@qhK&Jp6T-N*e-oJ9sP>T_peR8GKYhD^rbn3`h2XeyR4Z_!4=6(9+_?f^VB5V)GaySEVj|zzv)}w{F<{F -zp47sf47ROJS6Mv}ZhXz~yT*fh4(G3Q)0fr59u!U5eA -zGhAWK<8Pl6CLkU@C&{@dulw|F)KW@rrrA~pOGWrP%%uE0F7BrpB^^^awHpOk|UxxLX$DoQL+3b&F_V3O~)W)9~E%WrLJh>|xTqn&! -zbB1_+QuD%{5&Yy$g@57BseF3(xHW0w(B??KwMz-QJvuI$r*({7!%UDv%v+?gIN;R8 -z-Cy*ir*?z0IbmZFK -zems3m_B84P>T(ihh-4qm?fWT`40FgTU<~FNFJXjw*wO15_M(*|lWL^JjE#A(<&nHC -zd4>)F7(Vk@g>)C9cq3q`hI(iH2>(gyP*45{|EYzzrY1xRG=YK%+0{TIXuw{=DFzS5 -zJmbPgX)h8~kpnH`mT^~JWY=kMZfHKj<~;SOh$(8+T;zt2aZHZn$fx*7En?C7LThfT -zL?B(W^T9t}vqDBFg)drhRvjo+rTgjl#ZaL%8OJN2l_}2-hP9?bl|pB%O;_Ee3NOV( -zYkYg8m%vf!zL!+d@J#7`;h7>Se3&^CR+-!Fr%)|-p;~no?HLWQI9sQ- -z2R?Bdk)L+-cFszM$|7IEZhF7xyWryBSFoz4^1bJTG=+~@KEv?@)UhA#ZCJkqC>AQ; -z`StP5D%jHAaI4bQ(3l?Jr{LwZ1D6eL$Q60){5f~Ydh%~>#xqcX*q;D7X9)85pNB>K -z31p%c|J0HqgYj}V%UA)6gTnLxe;aLW@;!<>1pSQuJ09}U22<*Ah?tSw8dLL?9%l%aOO3>a+ -zuNoCusJ|KLgBsT^liQhsI|b~O;LZuY6n_G2oO)aliDL^o=ZFV9#p@%1UvY<@-m9dU -z`u6{}ort!Fd6{L8lx>6;iei1>mmBy-!fqwcXxI6Lks4HSQu(KgsNXk|`F{mpRXBf% -zWE~Bn)4l>7!u)1ik1DGYoH61_CRBeH+rk8d^woaJx578R`RQ@gbZCP -z*2_;%b}EtgtG~QG;^9<__<;BkJmMBVkd9EJBTSK5L^#bn$V=W{H!v6`aY+kcJ|JE+1@}p -zS7VsJ!h88Mr>#StA2Vx!XsF7f8eqy>LY=Dqbb=ZclH%I*mp@hBPq@&ilwJU2uyDJm -znP{j*j=B&rT{5$M4%G93=FlPYm*3}o(D9IXuL!He!8Gyv(4TIGV{^#^N>UdrI`df8 -zJZQr#wn;kW@F4>3BgC%j9)~x;up#038Ma1c2lBbQR;Nb$)t7}~FI`uZ4GXwqCV4-Y -zF`-?Np3}KH1>D-yAe}Pk8wUw*CLa0iL(7I>Rn|x?g@aojMO{cW{wlDy>$*_*iNx`% -z#BWbw=dydZjZYqv_>am8>G{IwZ3Wwgm$Vg+y!7qr1;tZ63erqxBk+hEx>mQ-*ne6#TYo`dQ`5I>cBkg7-oQlrk08;hy%-QT?bw-hQ#Y7Tm}- -zAs%lP?Qeybd>80zJL*&K0zK`}s-TI`S+Ys&kw)d5hn1pir=@3UNzi>hI6q+TaTmf1 -zC6!?Y&k4LMeP|t&Cj0p8%sA^3(^+_g@(n55{RYm^3R|;ts3nC*bP(-Ju2{PhcqTpe -zxnWOtL^jpP)K|x1RqFYv_P#XGBCe|lYoerOt;-Jc>uFe#>F}@WffYh6UE55)RmlA(zk05i#sA($T=(T}x>n~qhRBD^<};`_PF&W?cb+4wSrmV$Gu*d1 -zkR{S`7Qm}}Xu`fc1!!Lcuj&A8;|3I6bbF(}H+x2aT1%$^@&mA4%HfrQH7RqhZ -z0l}4?zqp&)MV^c^f;;8*^xgV>b9<`S6xt$p%>oDWhpKMq>)ym@$D^lOU$r#E-3ke9 -zGI>CC6kp18!OD2(p3z=<&RoQ4D3w~szh7FFi1ipiKJ94K2PQ{E)byE2MoVa67RtUU -zgtwHL^AR_nhN)75F~o26`n -z(BqirxoUh^=k;7Y`LGuM-473Li7*W|Df|aa%%5h07k`if9z6zBbCqAY3r`tbDC&_N -z5xH+DUkp5>FRlAjQD-SCLB|u?`s5ged5GF(W`$)a{|E9T=V7#Ky7pcl59-ZeDWdo# -z6~FT)j#$q(lQc&W6%HfCM!>Vd%aC1YgCBl1BJT#77@yEbt&iqA5MhuGWcK6Ek$h#> -zM_<#k>r`swj27a)*`l3qk*~%T{V*ii=0vZ|^twBmM}2X`F6oxlQT{>`xC -zBTf++f~cjap(jv}hVYVG39vF#`-JPSg508r87}7qCE?0}mHS0!E!J5NyAZNoFT;xd -zKyHEBo`YC`pRWs@`fppEM}_2r)$*=8rJ4 -zn|eFiH56Ml@MIfL`a>RxzM~a2EcdP!%zu!ahAoIj*P~)r#H4Rl?3(fIX^Z$9ak2Of -zlI-CvIAydFf2yS;qLe6V#s^UnbR3^S+O_%!1VSA?SAc -z*)SCwSUIJn}9;)>-(K<1%UXw0snV>rAeh$d17>_Kc_h(nMsGcjZ$9Jqz~0wa|u( -zjTYGZsx@mJguSa$u63+MwF|_y+`rZliLn`S+p-aoS4}qFdJb0Cq7D<@n^3KE=R|zd -z^{SGBclzJ-$8*R1hkkm~Yr)dc2Z&`=$4uzwM=>%#it?S6yd$x)$14!IXf}Wn$TS8L -z)CUwlyia8hoOZt?708$_=&O;T8r{$L1YIPC`T1 -z@~T_%QAqwN{H5-9uKybP%CEf?P0TXqW7S2+%*7iO16yX!S- -zU`4s-7w<@R9qO-9L=18j^>_I#YKxFp8L}Kn7kCe?8T;oL*(r0dK7yggt}De^@)$?T -zV;mkQJD;+DV3fm0t_9zJmyOo=-RuBMzfr+x9toq*KxQOcz_fl;M2hlNael+mtgT1X -zRDX0JY@udNJ*b#k!7p^Mv58*#Vha3Mz!UcVGt-`_gEl+xjgooJ{()`AU&qR#vHbjk -z+z(hr_}qGtW-GUDJF2Ro{K^{X9;E~%y8sqOyw0_fvG>(pge@L~F{|7WgO_>b*8OEgnNA$uTMX&^gT? -zv$1+;KAU?nMB|KmX_`%8}NNUoj2jwOkd`*r*|f}B6;?$=kn}6WH2a%Y8`Y4 -zMK!I`Jgl=w{&t5F`kW0?%zD+M1;m+iyEG}3XPxHHT=r)v`vA2Ndu#KI5!3=AICPjr -zlx-llus4$L=sWElWgRJ7k4fkP*UT -zZ;{77S4`)>YRkpgMDX`14_2r0lbpg@h0#axEW}YmX9|Jq(ib=)f46%eN$$B`GE&Ia -zwLB{ok3TD|P*EPhmJVupuC-1}6_CnsET6yDigAo66u%3#-4+n-fcc4UMbgr6p546% -z79OKG4P&|@`()>e)DGb|R -z2mgu8SCTacvU^yItF;1{pT46}s8LP1pR@oiO!S;9H?+#FB -z?VB28Ks?a(3Tls#?}NM}FJN1Jb^ha4y#IpR#%3+hoanw`w;?;5qXVPZ3sRxs>)?yr -z{B(G4q)`<}6h>rJ!jIIA=+qO^eXv*$=o%E=8Ij!tNfcFh9K+>$V>I3o81KcxYUdc} -zC`$OA_k!}&YNOBKZuU*E{R;G*`+wGO67rAWINgEshAdvxZpB;}*lTG$;1SFN`|;2u -z#MZtv9q6ReqxG2Rp*F7QwBg|++~ -zvQl6Z9KC-v{ThK)xy@k%O3DL>Bkr-9u1faeADDhky%=^W$3$_b-*(AQy`wDL?5vod&1yjI}V@ezwtl$SxVdu+tIuK*> -zspK8cGJoT>Y*cz4YSsqoU=c_$`-8(n)R%XyTVcV!`3T8kbHu-iss0X0XN3I-F&|`q -zfhR4eqfzN6>&e46w%>S3de@lO%xb;~J`oUr(O8H1{1IpMB!xx>RFTx9IOnbz9j7U- -zQ)mTeZi9pXWUa{NtZxR1T -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 -zO;MAW91_g+Vu&hfI -zi`OBtr=~j?8=T226|oUtuQNZEy+ad7(Z@zCdF-{v3dAC;3^hO84LXXuMzF5XlYNT% -zNOQJhpBVW1UFn}zH*7SyJ^Oz%lk2pUHKJ?D?fLeJcPibPN2I0pQ9ejQ_gfGHWN;(K -zSVwg-Q~3yF@1=5khhRk=5MVmFV8wYvGlf3`+?Gx7JuNkk&iOb2Z=|SiRC_;y9!mJq -zkbx|#$0sKayjgwYeEwlq_{|QLyMr^EkUgai}G*)S48L2ZYFjh+z!BRSuOyIBOE414|JxpUNL=|Ie%1 -zFk|Ppx -zVeASydubHlDg0?v8=kab9OlDjqEx2xG>n7Rmn+gp%!X&y*!#Koso%Vv?%Ih6e41Bw -z-t2y-vI8^2<)pbZg_oZDd48-OAD$rx8|xdDKh2Tz3BQ~jf9eds`9Aj+vN}hF=Lg>S -zD^{S@=N89wEgFo -zADGu>#Pdwy1?T>^5t#;!@Ibc!6i3}jJ;tP19+mHqu}eq%;uP5a{&^;qPOorIVmW8)a%V -z_bS@Zsr|Kxn!-5gnBR@)*JPQWC@tsL()TD7-I;@1dM)t&OX_Kwz+yp%me<`TE5`rv -zwp<`SKsnM6dzCH*OuC0$Z0rKa-4xNYNUp^*-}_r9%bM%0a6YWop4qxW%N1HSZg7im -zhXVSI@{UZ%=<(j@OcSc>+=-ZBuXSOHBJ)|vYaG$44lHIm)7L@q3R$X|`3`8gKcA2J -z>HI|byuwUc@XzN}@Bo9V<__oL?{&bQTFkxHfsakc@JIark3 -zbQ);VB$cFkhrl0}%Ky+BZTTF2*(T>Ay!oI1$D8Z=-|k-l$}G^px&S%*wlHC!YG?v~ -z;1(g2|IPOx}S`137b5k|5Uzbx48GitAZbj(T@fAwQ0Sw<57CA(EDlP9w|76-4Rhq)QLo%n6Oav2j96`F@y0js9q2Sezo5n -zjsI8Okyy{>a(z!Hd@);|vGbI2Rp8Dj2P`Hd1j6kxoa_qSd+RuO0qi)XggUDQVnCc% -z7np?_I`2suV*+Z5sW874)vs;;$fm3=f!{Vo;SU-m}8J2M`%Y;mD5_t+e!FPg1h_L%Q_!UPa1?otXw#ja7^Xq$BW#1K|hTYUd -zvJemS=pcHu9&#{Rvi{uCi$U{tJV#^MQHUzY)0xYu3cRhD&wty2?+L1^@EI%?M*=wY -zP+v5*GPk#BwLqj8&L4nJZ8(1nl;~b>xHm7#y-~@%X}%f0U+{v*`<6Qk#SZ5N$c)*d -z28apIUJswO`Ye9x=aByxNo{L8W~cgPA-AE`I1y0rMV -zlp&+?+bLhiNYUiJN*$rehzT -zZ**ESOK=Q%X4ctaREv_kl}cE;UdOmZ)I*v+KoP6+`O_U~O(iZwF#ywrH8JR8UaQ6V -zul_I9eI)|zg;%m?g@C9VmX0-Jf^6wmLi%U&>NVdKj0(RFk;X)MZfz}_S#~T+Ol;aE -zy=_(E|0LVxW}jrAcceM`zF970B3f%_D%13B(a_TEKmhtgvI~M=S$TQ0TFfbRxN2vz -zw1CgyGI)eJi%M%}mYwiEx0QLN-PVLEjkQGsw5d|PG09)AKg*b(KUBjD&QG4toFR4{R_9C4M -zcE2k=tvE^?;=cqu<=8pvUCGO8XXai59v0%2&j*VGZBn5vzUP^_6v-&)dVDK&s!1&C -zf=}x|4=cHPPMK>F?s!C}n#fQ?nX)Wd3-z5Uik&Qt5QXKrSC%XHiZu>G6-q;(8EAjb%miDXiFR2yE{JcwQ;SbXO -z@k8*X(?x%226PhQG{7r=hwyZ!+f+2pg+b&P&1 -zqLF{tAt3TR%|>StGhm}!K0@6w@pxeBpcSkjw;*_QjyOaFZL!5W!rzk5-6z-oAT<2v -z5eItrfh13d>$GG)Do4{zBaWUg&O`?I48&&G5v_7xfp@#!si>YO84Z|evCQP#9PL+K -zeqK@Nnl)RtH=T?tt(qy+E2_GHFq77#sH=9qCMiym4KmhS*ND0hZ-%eaA?`~6wZ&D< -zgPI$$Mh_u|Un45&rh0^&R8MSWVDnH!TMR`;rZDN@87EHTIm#l}Sa}{34^nxJkWQ|I -z-n*^yQ~PS~D31~A^h)SYw^55-qzWN@p=bJRe&d`=+o=+i*}*KAH(Q)XP$ME87&tUC -zgHb!}WBgavA6{|>>!N6xo}asUd3$^hD^~XOEupV&&r?Dh$-CrJuuNJp?)&HVoV-6i -z|MF(M&%U0}a%qC7*u%2^=A-I-56_r3{R{k#Z$Vt5F^mDkT8vu8X#P%?tI|=83S%M5 -z8tFS(`d#Q|uK)^Q;{V-F^Xany#l?)^g>AHVe-B9lTaX<QO>6SU0`~Yb3IH1ix4(<22EV0y?P|Yw8s#0emh+Kx}0hOIz!W@H{8IU8u+Z8MfWP -z$!3`@?@qa2)t$L)TcZ%TPxmXEkhL4O4@86A^i -zA%p5=ZEJi^nmvzNOYkaAD>Bl3Bm9DyMl+#(U>y#TS78UPJZeq!J_{VL@OmVhg~Dv& -z%Jw0iz0z2l9unCY8*vR2zurc7)17n|Wv=XnP0Pf8YlNb0>P13s)i4$5d -zqmto2pjE8rgPKViq;G-s$ADFbJndF%bOb7+S^wGicj#)uH1U#hG_YXR@Di^bj#@x@ -zB~%aSfMlO=Kr%jhKpOKPZPR_Yt5C=;NYrF(Yix%Fq1Lpp(!>w7(K(}7XR5>AtNnZJ -zmC2Pao1hay(lGJ8{YMvWOWwBsr=vUCD6Xo^p2`>h9(jN!mH2F_#%bifj)qb@b5<PTwQe7Z6YPesC -z+|2gM#;Y5ji9G#kX~D8xp4YB!TvOes&4_MI-e$tP>;0!Pw5_kAy@DOW^p?yw297^>LopN*7hemk;!EC1#w`S$1rv33KfM73T1!jy+NeoKNpIvW#hn -zpf%bwfkI*TL?Lrq`^=E$FJcWEKz;W}MYih3K4jY&@J*BQs~hPnYua!H -zGPLUKWWB0xB>V0$DZ_;Ck60=jw#S$Z)Jp#~G^RhuXONxi|J6j)Z&{7&>@=Dt-dzj+ -zD(yBHj_E+ZNAQ{L$^v=^gM9=~uVXDeV^rY19BWj_Ax{TUc%tmNtzoLZ$OCBrIkac- -z1p5_BEY)kFc3-bmp+{5UaWmS4oRN6nG}F8kqc;v{G?1$-gVAeH5Z>IHcV(p}yxKii -zi5GNeg)_q4*I+MBvmsagjJkg{hg(wnEY4adJ>x=X|M4>9gi`Df)sB7}k#~grqJeEV -zm5)O#R}w6)FCz+4LXg=~statQChf -zPeDuH$#m?ifFKktJ1Bin2=Ajw$KScW8>_kk{`d%64p!H0Yc7yVGGMj-sF(KAv8UsY -z-ug9s)}nR#m6NF3e785Lb^4V*Vrz;w0$UB(8t%qLUaEZ8SJ+C#@izPp!SCs8JvFsqq1gu2W8oTW33^d@4#=ldpeGeD}UL)Fl(B3an>yF1K7W#{FJ{8XUCNfZe5Ds0In{<@88{z -z;A}$qw|*D){_S3d|GjP}jtwe5@85tuRk@~hHGV_x^*E|5@AYrWI?4OoPi5J!=*pkR -zvFq*;e&TZl+zuJm%_<5M^6%z?bHN26qlZDpIUmZnZG(lOFDJ+0hgBoR=J7KdS+KWA -zDY0+E${kler65U->8e$tUq2dT9;GX8QW?gC4%yuf(~N^0|}p -zIR-f{Ui?1Tz^#sF{gF89kQXMKo8(p-DOVi00YrrRvqdL{pFVWm8c16h-~@wEpX(tIbIv0_&P(!Zdoc3R~QKzn+vpW`Dm;(z;5~x@~qmlo!O)U=feg*0sjNw0RYx#1SqK)8Zq0g>ERHMHXZ*8Lr3m1cdYiyLiG#xh0huc~7rV)V6vD%_XUs!F@3wV|}`8B}q4f_~K*iq+Z{7sy<0Y|g}NqAji?h(ANyA536Es3#uZPM9>(q`!+P2E%OMqqHQ&hS*` -z84x8`_gF)z;IGUReC?0v{OwN(*{2#+8SRfL+HhPx%Z&9;<&=RUZEYyU^-uim0zalp -z-->FpKypWo?nIw*Wf$Hje`O-x=VQE2wfsJ3|Hu1i&OEwu2zRR$z6ig*87LW$78W6@ -zMcHL3t!IR0!c59T5$3Mojca(8DX|>1zHA)HP{vb|aWyJfXirE{MzZixy_X}{UWm#t -z=9O{2xE}Z16Vf1~&I_;Knj_e*npA#O7Rl&a -zRu49PrA;g!a<+J-K@)f8o6=pbZFmQt>z{asQ!X#Q$vkA>f3vC@F`!A?^0-|Q4&qi>Mw+ay*`NhW+or-I=`Xz)tO+_G1Eume5n8Oa!%%0F#;U^WnI3ZMgZVin{AG2DjVwLlHGVLY*) -zM!z}B5xYs6Qcfp5NfA6K#bK2k(hSAXccfWH(&bOe+bghb==@0DUWM(5&ID{LEULgk -z1@(LcU(lwoAUDIL3cS&Oq!1c_ePTQ`75n2_KV4;YjWo>`RhAJv4-)ir(>u~3wDm1~ -za3Z$f!uGk2V^ZZrstEi#eg(_x(#sRssADB1iAAu%80Rc<*3MK-NXWY88-B0Db$Dg% -z%;jM#4SHkbKVnq-LKAO<{9fyt -z+tXTNXP>~f{0TIt!twJbyoAK8w=@*q_jRXfA-;JLO#;9uPV4XiM) -zUbWwc2s0t~@*u%2KX*?jtp*#UEKp%!Kst{V)#5TICk%E$)#igko6>80|=ycqIA)+py$=A8&_-6hj&_}SmO{NQNC@>Z{A!Qw`{xTvGll3)Tu5^5aa#Ao4uiF -zy-v`U6OzjC7I=gbcv-OB#{PfCZ0I@Ae?1}YIz -ztayCoi^08!H6nVYGmr8NLB6Em!yJdt_F{0`l^jF|{r2oyaG`}~fie@RnO*}W#bBDJV(*TvL<=aPF{&?w9lMrEcmhoamSWRjjb&)n74Iyb&umg0j<9q -zIEHM@5|`eWP=M>i)|N8Um*5=6;zDz(KmI?Cu{8$sU_V8f>d~g6GX_$J!mlp?Wz7RW -z_b+j2=3w@xf7y~K#z2RY^PO@p2Df-f>PIH^gKW@)4?>1nsS?|@>%do&HLGR5S|#&U -zpZrGcc%vfiqmUE!v0}{KN-He0k2Oi}jIM6XL(Q)SY!TmVl-`?Y;U{H0%hzZdb3GBV -zN3v!pWRDJ45%71YjTpHN0eC`uD7DrkT|rCn5lSATQ~=2~9`a%(@-=au+C@w#T`_R= -zM?rNQ_9uQERK}|^peuSFF@7C<_L^|lXTXfU`4|wP?$UW9aO}xz;nv?BeM;K{i^zL& -ze@~*n?~R^(!g?$$S13_)faHK{SBT@0o+nEHCIz@FRZ#>7H3;C{xv-6!@CQl2Q17Y6 -zT9INLSi;J3&XI%D8a1ZY7VaEQwo!H~-qGvs>s>HTR -zc+WEi+ncdHU0La&7B^wLNLeIrKaTCi$~4bl952ImnbO#70%oO=AMRo!jX;>+ff`&@ -zsNORbs8Vaq=4Qb>d$q-5;wxVv%1|~lK`fhzTCLfUn?UW%z`qhB)+xP8(>KoVL&d!f -z8=h>oY?{_g@oDiq0U4(G+@Vxr4txnbSO@6XmsYCls!dn5K?YaGJILyftXD+KnlL_5 -z(1V66nT71fUTKA*Y^EMK?>AZ^QDaQuCEQNblya5LjC3X7Kiy0A1RYlUH=*}>+40Qv -zRHbRSj}QyJMYSGRS4SM9YQkE^% -ze*q`K-_LFC?DaQ?+f3|lbG_W=hiLPIU$lAhr#90))Yhe++5&E4fB&4l7yH{HycTEN -z=S6PM<_&Ae`fglR`9S5k%BA+fmDQD-?BnzQSh>b-hW#i*ZtZ)thPuo6Ba4SyjDdE* -zkh$W_Uc6wjhmF;DS)SgXr$KxnMF(Yz9ij8L6Fh_g{ezFbD$xf*MRX!R$y=1*IVvUP -zKHr~Pd<|_IP7uO$*)jT7NlMgHwN7ub08xpyl)#(p0P23S%O_1Q`3tH!2$mhIBiAuY -zxm1Wi6d+SG)tTY^_ic_PEN!%RtS14hH7|4&duA_1C>as21(_>nxjZXskzVpSuCRqZ -zk&Ma%9>PUG7t98|S0I1N#Ixk=e6sKuc?&96V$Pj_=Ees8V+3Xb3C+PqqMkyPTSO?# -z>S*!#)ji0BvWi{7>l_tt5i!>l?7`N0WbJ;aXSR1gqy~(wGBpNVV1$T;ao69h+K^0gu#`pyw)V@0hJ6 -zUPLLZ-6o~jzd+^QHzo6dFM#&;E#B^2RknZ!gc`nx-WG3!@khnEhNjUoWH1vST&4lBD&*Vp^Auop;5h5;|)Am -zu84?88q^nP?yra#wjyu -zmG$tkfOhXgJkc~!b(mF$?Ov^26lFXGlGqebZcm>Z@&j#~{f{+`ef*|#s&k*S%6TPt -zswc)QARAQ2x`JQwXQg58Ln+$8M?h!j2t9JkE+!zKWjZ_LS&KS+Bz+nAOh_5@`(`&Y -z>LCFQWu(nS%i7EkXftV|?BNB%uQV5)HFJg|3iw7z4mUDl?Gd|xqunYQm$0!Dy+gVE -znPB4xZ$scW3e-YtYY3DG%Jit#H?mczSTGO%^^vx}Cmhea-;vNZ)-eKp%wd_ytt)aU -zLU{q5H337}p#id@#Sq?`E?JE4=WS^j>llW)9t&)+Su?h@{9R&>auNCM5xRg**Ft{G -z7x}R&sXoWje<~JfrL}0F}yyy;GWt{I}bPb{{=qfk7nPql8uX-h16Ga88ID%{o -z>BzWsOQ9zqgCDfH;dNYUsG-Q{^i@8fi~9Ce=3N=IMwqe|}ST4|-bh$}MJa6TW>y3vI* -zONR4|bJnG4kQ&10dP9Tyem=M2oOQ{-bwm5F>+cWKA*cLzjClM(Tf!>vb6C3$#zL-0 -zw|VD#7N!WWFsb~Jo+RxUZ)AmluRg}O3x6LqHwF6c8SGQRlIfyXs4mpH?FB -z;|!{ODSH?qg`)Z+h2q7?ioB?zzio0q5--?NcNf5 -zASaX|8t7HG3AlxdG<)!6*n3SJu=I$q+3Pmq{f{CqUL&@zIwP%E!!oF*Wb)G#{kqk? -z88vQwF>)LRy2UlhT6WEsQT9kJ<@5>h5C^kw1t&U|TVEg!nq1>R6 -zJ^znqqS{H1wFa@l%BE=>gPv)dEFK_Vvu{ELH{OHqVs*BV84tVUnrsVN)v4ov<5$%D -zXYjNJ&(wa*lqZ1%vDkXr6X~bxDbKvjoH{4oPI=}A-?U9@f$Dw)^DvB`9BySca$OM# -zK8pE=gHKRakz!4z$ablCN81E=FPMcSDqqny)Ue*z9I-0ACTu95Ui!UQ%23aHJ88ez{qErcL`a9W*{KS0eRm6ts)vx^{C!-`xQxRcm+>+H6XCu -zyoP`na@G@jrWR9&rx-FC9QBXsJ$ -z?Rkb{2E^uDg{TCRXh@jbvwclR=rh@7LEGec>66Y2q5>5qE@;n+N&9&O6*Lr#cYDqNad*Wp@Q1 -zx^mcgGQT3v&OdWIod+D}Lznv;4qE#s-Ra_M&W=!lRN{;>CcBFA{Y%b=I{OYla-+QY -z2In2c?}=~0OPT5)475aDtWQd)+Bf4QG7cMD|8Nz!&Ly_ZJLW*db@lns$-bybWe!$H -z_tv;g%hW*97i^|t!k%B^)VbU-RYgAO9E9$23wc;{hpk|D3`HSci -zf!nX$oHPqQRd)g^+tsv(kSY%8so2#O>Wz6x$r9$DB%XKvnAnkc-f=CNjs3GP8OY#wc+KclUEVmK!+Ab5uTQ97>Nt%Y;#Xbf -zWl{CDGbf3_$ila+m%r`#kiAcs6gAPZ?Du&+_^Rhallu^lk=3vS92fKPS}&rHMx|kX -z_r9nab@hUJRPcggRN#VU)PG-4j{5NeYdM2?!;ft{8iR^>%CRb}nnAB1Din3MQG3qZ -z9$MR{9;fhX#*Ie2M$A}!TRMDJ%0um;-yy0#$`A?Pl+vq!x7uop@<+`%1D`Y1!$ZA~ -z`o7S=dWAHc5j1Ti*Jv@CR+FJV$w77ik_z?6G8wf=!354)LdTe8C@Mk4tk08FcSX&? -zY)9;H45Sgl_wEb**ryWh%_M~aDFrKjYw+I=&>gfRuwK|MU)xuSc7FU2$QqcpBhV7F -zM2XZ^z^McF#6N)QSO`6RswmX&xz0UN18G94(D5`XCytZD_ -z2}y^rbV7hmH;|=SI%$@$sGSZJOLRcMnXt?l2+ni}Y9LxIvk5n9=L)M$m*1XhjE1#+gbw(3OSs_j{{@GxOd1eE&bs)1>OusZ*y;o%5b| -z{k?ghN7JlA-!zUg)6$T~LF0PWXCQFAf{x$YTr^og-D -zudiMk>tMa?3}}mNiIyJ3p{m4$y2RsSPOwrO&ujq~hV@ -z&dOw|2a!=kC%*^K!}7=(K17yah36w8tU -z94I<3=#QEXJeEW3VM6t@iI4jU7Y`CZ5<6kot@B%lb&ZI4xGn<`dCb8LhwtLOPLgtz -zH(u@2^lbat?{1w3nsc(qB_Fuy7P7%3oY&Dk|0QdWO_F9_b)y#xkmEx@^s57_0<`^Q -zy)+r|a{oM=*dNgq#j}WRG~rpOaab?S@6W>73Y;OkTEFextfBfd-eF$ROHszlkrl2QdMeVxFI}7t^!_~qZgCm%)rY_01MobA$4h|&SAGCe8oUgod+sp!!s+61 -z$hmsy(*d`2xEJ;k^l8dfvK`%1kRmv}3#rHkzeTKzz(AJf}K6tGo&hAb6?V)|>*t@{ljGpxTw|8ZJ0G7?Z)(=HlQP%&%W^`!{jbjzzwU@)0XD -z=>g}9&Y$GvdywHvdJUL}N0{ru&HaCn-^}}id<4H^d9b!XYP%l%W&Z+vH+b=YZcT=M -z?|Sg({SgyKFJdGYP&oepec2yimqETU=JkS&G^Yl%O-v2hTFmPZTWw{EUfoQSk51v6Q%g|bpN^H52GEZPIe?b?Rhe_|wbp1i~S;H8g -zdNSMk`gpXBo##qm{w%(k^Y=!f(bXhRDCiH_oko;vQO;(@dd>#i#gXvyHcEE8KCfuuA|T_D_Q#zCTtmt3&}Fk3 -z9LhOA?_zCd4Y6IJ^j`FWR!21GzzFPUOwwe0@wY^N~!(;gjrk}I2)*MauMYd-3IQ9@@x#`n( -z&Exa)z`60-&U0GmF8SI#W1c>VTFVPXCHeE{XiW$jKm5%JX|0bjOs8t(Bg%Pph@Gjm -zGM%5Of3uD?VqStH!deBL2xbcyd0R*YWQS*9;g}lQ4URArObe;j(cej--O686NVR?i -z=65KV8WNH~x60|NIW*PDmOt6VLn5$yBmJx~6dZRIFx2G|#e -zhVG%VmO%~5j6as~erEC+WIy{8P^<=b9+@LBDfsD}z^!(2oes`=dWQiX{H|I@L|c|? -zze9bc)Rj2qaDUe=wtr++yoa}zBM&!Yw4PD_neEJCdC_|MK?7sd`A4{pIMnS%kIMCH -zM_DswjbAVF8T%aFJ}dYmd8zIwYhSzIl%lWAJUvnzjvZ6$n$xt) -zVe&0;RVReAxo4i)#;r?!L6Z-iV -zha`ebXtu&WpFC>)&`#2JcyAtlztFWwyHeJ!Mb@5qur-#eI(c0v7`Ovpam{vyH-Bh< -zN4w+a5q+AVse|WtJ`@UmcW39%*%{-rA6l^Iq3_$Grq5q+m2`=FGV!ft&}6c~g@S)U -zRx4)eli-fC7l(pJu}3`XE8eR@#Qb}`QSj_lc{OtpH*G0yVUroZMht8OHb_E#UV33D -z_@_I@ykyuOXILXW4VDeQU*?bZWEVpF&olnH;`Q~l>+idJ4j+{WGmyCa8naocbuMsL -zsa2c5ura%^MLqG77JEV{_`)4~l0To0_TCwhWZXbUyYAed|4+Zn@{53ysgMY&$Ts1zz`o%motv$9ohX@2hji)C -zp@(a#eRkA5mk`de7rq+l;)`-z*%V8~@XiERLem;oWD}digW|r4ZvoybYnW(-zkNA+ -z6pb9>+D2p;Z={tw3S3*%B#o%<=hgU5{;27v9E9smv&jRw;x^)>D8}W+7)?&I{^4xI -zg%+JcPDf?}=U3{3O5mH9o;-2lMA7L{_~KQby^t|G;Q3kRdDN-uT%cMIk65$mZ#lHc -z08e0+FjU5akXJ!=f)h*^^#A(LqEyH^{H>eOXtZM*~9#U -zQ`BBmGz22y`CarbTD8rz!HLHAFQ&9$G6}v^`8r!Mlfo2M3UM -z%Cide6@5U2D*b(WfGK49Rf@Jq&JNcc9WGBIZ=g`{8s$&G-(Lji>Ms}oa=17G9BC++IiSWq -zV#&+grk55nGrXCg=i>%4lNOGnXU#)T%RHR(6-V@iaDN>G402?-#qinOfn0f(wJxtP -zud(n$Q0#fQ+w?!~Nm1@m58abA@KfBAvaS=-I7JN0*(1b}ON8X%GG7jAr(N0+ANO0k -zwvU&GiJH!@o??W4@G#{dAf_+^@fg!m=VoC#Q&*NrRus7 -zmg~cLWSQmw=A8aCcI|%NxwdeG#0gsO{6f{@eiv;2ZttHm>mS&@Nz=vZ_mV@f6;^w!c)# -zx62~mE*F#O{r(2+gwwrt5xBeP{~P@jBLxj#=gvqKI60!ZKOHnQ35f9ueqn^{tJPEM -zFZ4fM)?3DdlJ78lnh@iUbuDv6a1n-y&giCc7dTOIH&Ex*o`bHWJe8l%AoPyEU7+1! -z8G0_i$SvV>fE1k<3O;-0HyDQ&;;qoXr_LB)iQ)6eSArrNGjX=v#OLkIbL5@-v6M8H -z(b&I88d>jUQuDk_+Aq9}Qx9Z0wp{HG^E+ZcTLW8M1yh-VmM1|LV5@j%l>^zPYJkWC -z30Jzoco^^l&{Iv%^b;SlZP1NaB0AbMNP5n8A5+6xOg?y0^zqJsCnYHpZ_o74Ml>89 -zZ2%@A{q5|-tglxinsqVG>h7d8v9nr{!IQB$i -zBOVoe-wd3&J?tdV39Krjp`pFfhf7DmI~m*WkORefK0 -zlq&j|lx%N!obJ0o;}E#ROmHJs^qRcw7;{wDDIgz+P@V~lE_#>u?tr$~Djl2{>zmP( -zCbC8<{o#%ZeEJfc(fWV$4hM}LahYuLYFU6L&uY+44+Y(Q#>rp!=o$C-o!c1csRZ_h -z?FmRc#^NXb*&N1&+~Z|a=e9&P4R4z1=bDDSLu2qLdYHh&Ut7~n?TAjUPC2NZZQaocE0g6T1 -z2E@)H2Vh}8NiuiOHuOX402c-Q4EWI$am3I#N|=eS)`#aJBXuAPBO~2#!%_g<`BLeZ -z*>QPl^llt_$3SPUuIcowc5(0)V-a`CrD=WeTXvEMGpGFJI8)wg*Mo?$rBVTBmlM^8 -zAbDb?u^DRQxnQP_Xyy@@9E(;1KxAU1dN-4N5?<>D)+t8jlI98+ed0KmT3W1voyM!3 -zqVq1A66uW~&uhv32s4p<72ONSw~$#tvx4~#wZh4J6S?vP4?P(s8T5m*@rSaP2o=Mf -zXbahqKMB|oa-qT)3P<^_Q08KPVja_|L#DoE^HkMMuFBj{@b%ugF4pC?%<_(fZqwYM -zQccXuGOWg0ZG_e|**{Wd$3wSt5MIf>Y!y?zUwdvX3yh1!%!)o1av#sKsS#c-HQKvZ -z$pak?J5{#iUJ>CZ4^oYC#^iJGb~H=O3Ul6R$0gq{;L}qfay44?DP(vbcFqPLvL{vw -zRgg^LwrK9V<$CvL;^bMm)3)~%zWa00vTY1TnA+9yh?U>g0z_jvGvX`-JB^W1<2j5m -zTe72sV$;Wxb_h9!h)#h|SQ;hnuBX+*9p~{KVtYA-#`Hidn&sscDs#^T4l{e@03@>V -z6mc>r(08(1Tm+O$;2D9^{vaC~!F?wuBJ-tCpCWoNE3eBRqVKWZ9q@=?A|n0EL|XZ! -z{kkq*M_wA~Vzi&|`CAuswUPdx_R^z{t8FB8eCA`TXy16gpTYdR8`(;I^#Exo@=$EW -z+*juzuAXMhQ>DyQMtY)@X6fcq1`$Aym8LmaU=D38om0i3^p~Y4VOeCl*OyMMi>#Uh -zt^U>lx^s2uv?hzw=6O|qA7YFE-2`93LdxQS;#`{40KVd3*tcejaTt|1F&d1NRT@`g -z^IT4h`*9Y>9fCJ1wEQ%S$Dtmi4Ah%a3U2B+-dh(6-s%UE;4yX8WOGh-+=+|1Tqhqv -z=oUQe@6+I?7z$37=TuvqX-(GSk=36Xcv+YX4YoySj;uL=tPD%Vdhxj>Nv`2eAj|T! -zb6ZbnI`{Hx3WS4E6&x%^ap2xn6_8)~F|nrwV!glErLT^t!m8wT722Bp4nrHoINPP8ZWZE=7^%js -z7j;!p)t&gN?#KF*bachCDiZB9~5dPaxAKnSEuD8Sp1NC4SdO*)-4?(+ob};zp|N4Bk -zns9G)zW-Mb9ubiTubQ3vo80lZ{T))u!(Ewhsw9X+rq|8p-%S5`5t;Y92wv^MsOuLBV; -zyejGtIR|3Tn0VpKYx!z|{yLi5xWHt|=8{=Wjm6Yk&_kmWNlD>c-vw^>assxdD8W*p%BvZckTR)gs#w>YZp{i?0rufN)rF#avq&e>E`OJpO9kvced)5F%ZdARB;t_z6b -z0Cs5k*s<)qXn%n#Q`ADMu>>&{pYJbOg^(^1to0p59&0 -zmXlUP+sG-L)3Dw!=fwA74jflFr)8mFRBvVztDGZ#w$};W16F*J-I<*j0iQUodN4SB -z@L%VQ3SP_9b~sXiNu35>bBdQZGg$vb{sf0;fY?E65{H%9bBBi%K}Umk_?oB*LO(CC -z)m$Y>b3!jCrg(O`LclGxARX{GoN80ZO9 -zuw^~y;gCrK7RzAc9kmnoOEv75lfaP-aejlr-`?S-ISQvBVmXI=JfIOwXtc|X^!&yjwQ_{biVM318>|5 -z4S$sh_4oDNd**+u@yd@iMuzTHM47heus3e>}QMT?Nsv|^nlKV9v*ss0j(Sj@pVGdB!dCP`DT -zAkOjl9I_Q%p|sY-8E=-s7m6~>%5T@KVM -zws1Ap%7|XQU#L@&EjLgaSOzO=BsA<5(4lCm;I+xIwg>afdFndhxCR`-m#{qF@G_H> -zm{T=b`-iEKd2xsbD?q#{zI~S9+*f~5-c|}bhb+Jwu~T8Af;sq)B~OP|I559ECi< -z7l8r^|9hZ7W-2I1C;J0kOpgETtaS`a|##eyMzrE_tcLU^);Fo>8i<Cv+1$FT7_@SON*|F{zLN8qS4UVj`J>pBzv#vTJZXy5n5qFh}z?d^UpwDL0)F3 -zke+~Q#4ouVcntnm*)Gz_?kR!Ajc8$VZ3+LO8UBWm@LmXKuWJc@bf;9TYbpks)=HUo -zpLER;%P>PNC1tY8`n`*hp1oQoYs>3oHA5ESWNBARI9EB-yk3dLld`g%YUh9D`jGK) -zQ^`Dd-67L8{9&KNU(!mk^S*7^wE2mqRA;^OAA!~vUv -zC1q8L*-n*HBYv8zca9Qs^A43|iV3A;V=ZeRLh2DWV}9+HqWnDkTPa%tBO$7ZG-C0P -zJEN*uP^G_h|0donHaZf-EN?8VYfP%_n~z)x8KU}~mSF#Yi1=C3oxBW>Bl>#?`b?qG -z=wa)|E;fPcf74A?5wfzqiyD{y*-9=DKSFuQ!1=7h8f!xUNNO -zKvNJWpnm+oEgDoNk0DOsv)KMB-PR`WZucWpU*v6s%TJj -zZ#fqO<5B2RBNn?Q_(eZuLs*2P&-)i)<*4zs-s?9s)t2nUdaB+0xbzfnF5aZzw&oY3 -zy~xLrpS!kr;$q&kOOC1EB@YJzV;s{Ge5YU2mC64TJ$9Eos(hC`x?X_3hh!g>7alg8 -z9bcNSQBxc=vU~~0=zIlMc(9FR5KY$-e$n)kr2_IQd>c2UnTBzV%c3MU;>dpieBk`+6|g?^1FdHhO`w)eSQ -zoYn9CI`~wdKd%xQxV|ZC34YaAw+aZDtkJ|s{gb5DEHl*no>tYCI693gUuCo9W^ -z);7iNeRtmqi)Q{;(2~q-g>J&O!jjSIDx?v!_2r>ona_P4wDh_1^-Y=2VFvGk2jmMa -z!Lq)m3x6kD-8^y=)OD@YlJC$W@fti+vP3zbSB~@g-_OtU^cNPw|9S+g>q=ydn7f62 -zMB`GVm)gmOA?*qOAI9kWJlBmcz)Xd10N(U__N@_8FZqBn4wMP9b7sM>uKHH|OZYNz -zu-BJ@7NtmWElG-%;y!TocC_0CZ=58`*vO?y3tOn}+@_NS$U$K5UR5i9ZtpBeQ0y`M -zUL&x}`IfoJK^)@~{8q#^y1}WzW5U^1Aov|l-g&5`tstSv;0#;+F#i^Y{fp}5;qE>A -zKH0ac#6AB{@z2HgG))v$h_#(5$LU!c{x|M(M0=xhmM0kE-DU9qjb_RZHE26o=6Y^) -zKf5_iYPrhJ&`uu)3;$hTR`N<10G%#6oddg^V2No(ync>)lDc0t^B6pzR2aJtdbLeO -zB}Hf08T=H -z>R38E*lUFhtLk*CZn}!j^kIe3@9FRNFwT1f<^cY}uKb$jD8;m>#JPyGO7|>rafqba -z>-xrZ&>?(5p6!ApTut*M6GPH+V0y)4#SgR>ZX1IY^0g~gTHRLbnww`XAuF=2=(PN$ -z-dwUzI26T8gZu@3wIk0J^#z}K*095&yYQyrdO~gqD`{A576Z>*NQbc9(hq$4!Uw>6 -zXo2PVxf3yUJ43;-*gya7DRvnw30{rG;GK(14WzaH3bGc(zH+Qx^0^&OGxD>TdYIwx -zjNu%4f5bJ`^lk9vfsg%7;G~U~NUzY6gLz<=K5$RROvu1YuuG@h`~3O1mx(h&dz+tk -zxAi(|UCF0wm)>wglY_R321pNDeYHkf1epmJ?_ouoqo1+aUqjh>^-R2e9?+I3FO+Y7UmML4_bonLsLsJ -zWJCcT?sNAs*r}F_-v+0l2dlmLPETUE2Q&h9${!CjjnAxGT%iAQWv?2&QeOtL9K3Pp -zt`P%zKfM=go9A2S{EKS#rC7zzw>?+(=L0 -zdrB4j*|ENP9?LdM)90SMBQU~0u8BkDN3B)ouawnB+twBKF`5XkUGyXxF!O#TXJYq2 -zTnSR?=X8MP80;q?qj~OJtHR2a384oU -z=wi$-!*gJim;gTRhT$W_EAqPHy{_5z?_sB6;KiK)F1Gs%#?OI^lFy7ky$IvZ9S;S4 -zAr3irt`}@aCKK*>ZNcTh9I3WoCs1UG14D*Oc*@0rw_fZ#h$mh4m_bW9Z@q=_THqni -zVW%gH@>k8*3)ow^o0*F3MmC*V8LhN30-o|pJ7fbxOBy`4K;f5}l=ID;HTp~rJg4() -zIUe0!V;b5`W4t=h`_AUd#JjQY$a@Knzauyj@r6P<#r-{Dq@zZ8i;?qOUQanBTY#}c -zSyIfPcGRQU(ySw7;|3q>yx*x4TMN`;jPvyp)OzqD=n0c*mtJ%yZ6n?7e)q7h7#5z+ -z$Jv8EXPa|)0a-*!;Jd*hZfYL#wVXjtH90wU@wCu^AMfWeg%sna5^SnwM?`|Hd?mM -z^^EsCO}450r}Kt)O*AF*-VC1C$cu~(kTvDvfneLe}C&5D73i10U6$l+J7 -ziGm%CGT%BBkM%gr=`9(A)vJ=qu5DIpasO=OoLr5pcqbnvig)sn1}0W1r6{s7lICjo -z3bW$mBZwtaGOdOJKMB0;Z&a&+mywu$9vDJk@>B_$(pR%$x -ztMEts)uB}eIaG4QzF_Wv(rOQree#hmUV|%a(imxXJK5A!QsdPv{6F8dQf?H4iWVu6S7bf{7B>g6O`HIeY2L+zkG-ukO+C?nGXQz$9X{%${GDF`FPK -zs=+;xp0!*)?AToo{uA8)siwF`<0NfFoX;z}34Ox;gvX5R0Cp*IkcVTdU^@zpAm+$; -zjdZ(}r+Z;vT->3JM-HN1{QBo(|Js!CnuC!fcOx`pcIj_!+cx4JZeq{A8e9Rrl3n`7 -zZ8Nkzw!)K8;P8xj8g@*n)xEf5XDYSug=45eBqFqYhY=ZCb6;Q-o=4ZUHmXrGKTG=gRg+=WkJr_=3n@3d#fdpo -zA$!0vFGZq40%O5TUFuW<$(0mz|~ -zrEKMGCtiW&TY9}EV;e8dX?hR2gcUTIG>X`DXA^1`tx+7~d(OWS?f*dR`z!Tnd(SuT -zT)|N!j;!yd-QcIywtRUbEQ>-rRDd}643&7q5iP3mj%MJd#CekNq>o#=oo{$Z!h5A; -zvUDB!pT9t+`lE=Hr>`>?+05cK0#Na(my@L`xHfi -zmwHi;%D*oKwsQq|)mJFj{R+>~k}s7x6kELpvnZ<-K2MD_XW0n4Q(qldW05{4Ie6=t$X0a>b2kV0$&86RL~T=RWSNfkT`#Fw5a}})R4>r_hF6lbx?KD!$ir`r -zkzOdx--T>S0kMQHEueGm8T3z*lbp_kFrBX+s!tKhfLJ$%qLEGEC$2pQyqE)^_D -z&$-pWIoHQHkRQ?*^Q>>8pEaAen2QB-ZSnQu#aP!sm|?yOe$pp&jbrHitKiu_^E1%7 -zqMl$j7gIg+GrQy@Yd-!rS!?mX*}BTFXUg5N)sbn@KGPP`OwPD79Bt~&M$}&bTr3Nu1GEDC13il&r3tSFB$}ssrZdzWdE_4 -zw|rB~`ZzPtqRnIc=+zd~E+#E82mBNP2+=2z*OuMph{^<`5*E^T@bHE9yV`T0Ht1$bT^> -zAJcnRCu+R3p4uK8<5|7eByrs8()_(#HR+>I{4&23Z9tz$PxXu_W|RlPSusi!aKK4K!#ea>8oIGuYj*_$G1^+ -zea!teU;*cLHHb*Bt_{4Q$pFtj&^BnZ>H6emY4113WDJjGEck016RRuADUzU_ -zLl)lpk8;@)Rm%k11WT`vF~bs^{^tgrNInre)NI{PM -zYf5UAvynhb7-o$^dq2RQr1mq$Kgts{*1WJLU5%cQ9($PB1)ZZY6aKOsYin!JT0WKs -zM!QkMA?lU>3bzLHqO9cTq9bAS|!)UZa(B<|dBz -zUXYy}V?vKqJ97&?Q$cZ4vcHs5@=pOJJHoRc=v5=YozDj@kC0(Z`g>IHyU8{E!E9HhgklQoTO)xG-DYr`(2tGpe`1uP=vdWM6A$TksW3KyxLs@<`N-m~R-ueY2yzeXb -z#Qk`8H13W-_Q4)2&;*ySL8kY-2M@xp3cm2j6nxc39t!eK_*5X`5Rsn9^ykcoUq#a3 -ze(;p(zDQ&YoQgL|v3=-B^HIvU)ti=SCSFvi(1rw8h6ggEH+Q=pmboR&d5>Z1`<@hM -zxqJ^W@9_SN8yP_l%Cq^rCJuPDYn&~hJLJv&tjznh*oVFk9+rja#>pT1nDFX7>ZiG-Cw+xUtBjD~P;hq^NcZt!y2#51GCUjtsF= -zc;(&aSp%NLDV%rgl(F!${pL|EPzaLzEU1N{g){?Aq4z!4A7!hn9iw3LB3WyibU*T* -zTz`axOy;yk61~KpcNfblQNgl`VHi+@ZNPKF`rG10hIuy-6KQ2)r% -z%J&qFK^AdF$v?aU?@SWfn^uyM@m)Z@L%_l4e3YJ@f@ep!Fq3FqRIN(&L~b1eY5#t9 -zzNEP<%rs8z_J!~I5cv6ox=y$;8B$G)*(oHUHKVbBNgL6uga1vuwCmbS@)GNH$cwnL -z?2lNT&WzkuWuBeD805DW0!KxGY8D(kx$TofYgyT4*yD!ec< -zg#ZiR$)_b_7w4o{P7~#o4Q_5i!cr47$9lIgA%5vt9Bp&kCyZWd0IsRaTI~7LbEU}@~3)ypoo5ejN+)+!}38eiW0ep!$umjNbvn{lDvxlbJar-3JKfi#TWJLQ{krg)`qeL@*FmTU%5~%p@dcuw%fB1CozLIY+ -zJ`-3L`DyNx+FFMB`GQ779Fb2&H4v#IrUBL+{zhb8@{4auDAnK{!DPHK*z2=Rq$pAbr_k*0&kJy1M -z=njHc%^MK|Jya@zqh6WbhIvbQ;Nj0NU2n5v)IQT2#g78^^iqjsr%K;lCGAh6(nl-s -zkU7za8Av(@>>|(+(0%_vX$nfh9ylq|+%~if9~a;j-2vXS)C$A}SUqrFi1Wd~D_t+k -zvu)X!(WJi!>jr_YWHE;TEtAV -zOE0;xGujM$TLV4aZj7=hvC1sY7<#Frd`4;jp{3Mt|S)M+^MSh*RV -z3r?@I4m>^TsJwZ!Ck0^RL%u{)Zo#!+Z$E!LWo%1eZV(6=DFL*w&Y6Z;{O*;z`4O>W -z7e{X013gtVBzLd8GD}s#Oe5XUr_NTVReJw2EMi+e!H7KVbVK`uOyG@VL+8AIfqlm0 -zFK`0GMf%m1tvbDDaa)T+z%?jLc -zsqjj`c@FhyW@pgcZm~nxI~y~w8oLceQsss8K=vT2??N0F3#9Pbh@+V*ug~N*IA$wYaxvPt#)1P|8*x -z&S}iQGF9qnCtb%9@LM5Uigcir^jz`;qma9wOWY0)WSzxq*<4RSyy?*j@6b0 -zdnAYXjdhRjGZQ{0iPDW0>ID!Vt%Om8-h2$b&FxT8$h1~wt>--8F^k{D{Ezci$ZCZ% -z<3S};b}n4N`M_%;BKZsWGKCK8am;I`bKtF}8&mzh6%DHrBbpC`L);}Bhki-Odq|^^ -zgT4?3(7`^)#0>4%Z})Nj5O(GyD2R_rM(1{|$Icm>FJO6!+sK^?UvGtwKeG6J)?@ZZg@IKtPzk3U0 -zL)Ju+@?V3$9k4=2IaRVnb8k+}JH64$;@9z42w_sz@&y4~&pq -z_`CgU%p&lqO!om`Hx6;Cd1T++U1~!Q7-<*E!6A$3(!6#K{(0C#U~7%AL|h@79tzGH -zpc2*w><%mM2Oo~IDYOFfAN=}ouNmkZZx*pO732!qp&}4j_osm`Fl3 -zMpm@o3A$JcK5FDT834p!pD{FD!#n5V{a-nkDU=ZBj!PIQRg}}k^4J3x4hBWx#jtezdiYz&c8kRvZD?b#)aM1QypVy{tNEVRYg>Ph#9)HV-^2d^Cz7=A2388j5!ot7X!{{iB#Vb_3p5D -z!aa|!j-gEIFQ-c{{@C*jyl)wDx6_+NRSz4w9)DR^6M-naVKwYQt^z)v$n6?cZpZ4O -zHYzddpE3F#W*H;B>uv#6O2xbVmux&cQ(AIagM5U>vrfm -zPKMUuOK$LhveWp@qih=M<kAtD -zy8_5$8ozu&RBHob*&@9C2@(EtIQr0`YP~!LS*Sa8++6tXEEg{%9Jm?9knUikpG#W| -zob~gL4{!OGzVQfm`O{m5Y_&Y4rx-DO(JGAC!I-*eWz0tX%b3L=t|dHX -zx1ga9f9(u$vGn(A|M!?}Z;hzYRkIi~=1_Rd=-#{I_SfJTnFCEsw>~Zz7-T0f@rP(U -zmq7E(9AjVMUY;sRmo<=Kc;;?4fyW_B#wzraIn>nO-Ob-RpM9YL9`i$Y+AxzIYy07b -z78)Ui7d5W;u&_(LV{F?v7m?x9q|U25kU2|h7o?A?v=o7yO=#ETdtKmV3X-K~z!e!i -zbqa^!58ij?64oru&wlulr(jo9uotsK!T1k$$#1#25=~k*M!}h}ya6#-;LPTEzXB~M -ziaiS)mC>k4t8P}VS+m6&Xo!iLoRB%u3C&n2coK+eixqC-A@Hjt2~3roZ31S~N_co9 -zPO`7jS>x#dCw)P7$94lb?fK@9J6V=VI-kBD#~*bf>JWE@knxrW#U@JkS?}FmPL;}! -z5br~oKkG&cpyivc@<0?JPBj#KAN88HPTjoBq%8Kn0xo(DG!0hsOL8{$ -zUsY@2Civ)^AKS1SJZ57_PLplhT+d6;qME_OS#7NCIs8xK5--0bzpZz9nAAz|4M~CS -z@NMgE`7QnTkA#A2dr1o-WlfVFJQ}Nv;w$n?Kko6-zQz(ltaAWC=WY(|xo5&hQ>9%P -z4~mVK79Nz<I9(OK!FblktReG}Bkd&33A}&eCzR`01#ibql(rz0*>C~yu -zvcdTK46||X5{$J|o{J-T_7XgM|5ef;yai5L+C%#<{w~D#ACgjnOZS(M-}*r@yNPoi -z+DK#dkv!c@XuX+c+Hu39Ry#CmWQ+V#UYT?ltsla;?RVs2+z$07F`5*NTS{cxeh2n( -z?&laclq%zPlKB&jTQYeA<9P{t8f*I*G!IG28|3vq -zh+K+qxlbe4Eb%7!zQRo(I{)wpZ|;4%E5X&LU6qTUHf(Cy9?mWP7gxR-;BpH7nV3FG6E#ykK}-`V(K1 -zfcG@|4tV9~je9vye|Oi8!o3Nr3_RlYYC;rOFC%)~0fg8X@ng@TZjM{j9j&qgFG1Tp -z5;@mqAuhrIfAXz~BbsN6k3)VnD!$Vyk{RH~7Dj2qjL(V^HK24>DFab60_+5|O03ch -z_;Y+_z0420_y+P4@W@U@NXoIvrO6a?9j{#~eWX?Slak*@{CF1fHhrWeZ*r@&@QS-( -zVFxo|>Fus!(n~Drv2QWktN>;`9?u57 -zT#RpL**d1_WJx3}7THbB9Ij!fnv42publ7HXtnT#jesvKc#N7;+CE&` -z(H7U(*)ksJ6s-|m4%RBYbJgAyQEe1g&%Y26(KVk1zAk)QMc5Bw{Hf^4bbL$14smfn -z`QiI?eU1(tU+K^`ixQ_sYr~BqwL^CmLt5giw0^u@pAKc|(ngf%&}Iha)P|PGyPW^R -zGDPJO;xEO4Sf$t7!1qtv2yeQFWZrGr8mCxZSnL7-Qape*Pu9tXBE-*}u)=npDRNbO -z^%d(zHmVB30qPNMA{8To+2(FMk -z(sqrG?aJ|`Yj<0vE1xS@?p3awzow;e+aqBekS7PtW2=;UbrQ6Yh(eM6+Met$1U7h& -z@p|rs1BejWNwMwU1;6jF#q2O`TdmaNt2w;WC#`f3YqCnE*ED{L*P-+9wdL>v2w#hY -z^`GJ^tkV1z(sxC|3w%*QrfF}%m4Yk5$#?8ZERD*y6CSZbvsdP=`RfQ_oMbv6d+gm) -zUjc6tWJfqgQS}B$JNF}prk-$;kiQ_?rMK98jxtLbNu=Udt|SW)3TpSc5@xHtLp{k^ -zR_`#kz-wdCq7F7?Q3t18)PZOf;N-34kI9yS4 -z4mHH2rIqq6K>jZ!s`F9Vhij@F8lN8deWI=CD|;ze(O>ELrlht6XJ~~pf4HL7DRf1% -zg?Y7m^`=6%9`{nMyXZ+ovlcpkiXNNG{<20t^>Fih4f;vdjxv$$)Tnem%icyjfnpV@ -z{S5I^aDD$W&(uckigMX^0hkqWtP-O!@2 -zI4@cV)QL-RYRx5k69*sJ3tg;&vK#isCQKIz+S@(#(6&|p+y6n~r0O8a0vd5y67t`5 -zeaznpe1lP8Ql@)VSWWO?#q1JlmL+9~!9Yxps>WceEmb%RST>#pI))wFQicY{s?gqH5Sf+@UD&$7nU|^79I>tNW^i&pdF4ZI -zUoZ?7p|^6=N`Q)!HqCpYBm*?$Gh;dIIqO|Zn&dNSTbVSocYWDGjq#FcJCion`-Qw{ -zb1HNOR%u=9$&zBK550=+5^LIFXUya+djaeDJ7}KrivUfatPOCJ@Q65570ybdc0N}> -z48GbbF}BKz2-c`0s*2vAaR51GTUB-NGQ^xb+4p`|M2rcucTD4nr^ya=qS)kGkf!sl -zNE_>GgEoVy$Vf7cojd+J@WrDb1qjoH`?y2QVfK|a_>^IH5H*YAD85K0Spcy>ifw}= -zca~8TWhjkUMsbyatn!=3n7N4pA$FR<2dyiEUVMs|u`KX0U0Tg->|4FTuN6;``@lOS -zNF%}JvetQC(mgHhIh+Bx!<`_#*+%{`(-qBfhP0=RJWyzj8QEXueN&Kt9MNPs4+S3@ -z809CgWG6Uv!8A{L?kbgA!M~4gQd1u@Y41;vo^5CR??bPX4==at#ZkDzXvs1YqgCVo -zky^57CukXeCG_6pl~41&Ogsfj7g5I6y)O&KuL4JIrTX&=f3tB6d>hAkW<4_+Hf|MS -zxowC?{wnam?F9I2kUtPnY#lIExum%``#QL5ptc}arGjN^y5cX?72MftQBYi2)79YH -zy|7#y|0?j09-6hE`=b068*NP%XDrZI>H4dXDNv*8t3cvyJPS21_i(7$>6@;Mdsu7z -zd?CiVl5|d88=-jZ>OvnLV6ACO2j?$n3EQGgwKV&K}a97JzUC4Z^0&j -z^QZ5gCn)rsbigyD!PoSs=L4PadC%*P7~e-vbE%+BBHxwBPJlf{Z@(1$SyOz|j;Bdm -zy`xx<=o)6i?)n3Aj9nO+7S2AuKnJ=ZoISh%-t#lfo@?@mvyVde#+(Jd -z%JhW`ZnhIjnN)ho$1&`G6fI;^c~J-X?56Pzxh1YazRbg3-%yJ@&umZ@jQxzKskX_N9DtTf-z7h@oct`92|t0}Ge-3vV>qDGjeUrn&P3=Y_xM(AeYIC_+?TL= -zOA#Tbo7h7_HJ?WISHzHjRy`zBFQU)r5rIk`T1Ls -zr-7?_?e0iiMAis<_ek3j$1l9;z~lSUe8jQRI}%5yaYQ*$gqBmcrfj!M?;vKy-u<3Z -zddO|>{vD3&Qmy+%|EXJ!?PLYiqNaWOy})Qyqdl@)?Zq7tIG*l3b!!3Ic;20kk_42j -z^hV(sqj6;MTE94TOWbb9eepOi@y$S;u{cWgYEWkkj%MNhh1)m5TjtcQMccDbGYO>| -zd^15uNc-*%<@=H6()w%Y6d2>r{il1awk+_}-&)z~o$`*9o*Q&rA@9hXIaDvh)^X!> -zZ-#B^kF|EDd_7caXQuhb(p@QE4wdf8H2hflT*{|IrO#y!BU)CK0jdxCbX5vgHERw9 -z4-9^AW9rg-d((Y&H}`NM}R9YM%ZDvc8;?i?|&L!~EopU7bYtfS=g> -zg?t3Qf^VfS$!_QmbTet=VXdV4Wy2fgCzi9fjui2o$n;wFv3v5EHw|w#Ai`t$lEhm1 -z3CFiuOU-y);{YRTJA{_SdM -zxIz)t()oTX&LPD~?ZBrle=zKg5h1Mu-icP}$0_-?o-rZwm7tTJ9i%h(A+n4KsMaVc -zA0$upIq9{V;Frkml4r1yXs>di9<)L$K35-)IB#}>PU--DW2DHxlY+ey{Kv~W=~n-% -zy(6q{+c02E#95gn;7`E2Y9u0+Ok$)+NbEYvF+e_5Le3b(19KEN4qBQlJ=M%KPlq46 -z{xo5LNTC$uO3;BK>ycsQA7>P7MCg4a%Bz+|GRDuE29iXkL(SbqWqJ4a|GZW? -zV8<2OT@N+TehHMp-xJadMb3}My=4PNT))?z0sU8!Qb$Ie7k`780S;H4Y%A&le}9!^N(`+&U@QvcieGa>fgM9`kqWrRRFdgy5Q!0@4?10kYJ -zbQQSOLr3MnRSB0Z4b>)Y8ONlZxKf0Cr>Cs?)4(>wDj}|cZR!Cx@K+n~z_Fv>fwz!b -zw#H)K^;%ilm-U{Vg}i6gQ+JQzaa1mcj6@}vw8wo!i8dsGiVO!e8NRe<(PmJW;Z*V@ -zN?iDD#cvya&*JCCZwG$6hU-w{LM(E};`b$fGJY5F>&CAIzdrmv!S4_FoyYGlu_JKD -z=Q#4l(!GDt*TTDF8I|dENuZA4T0Xv_OuGMXIQx6-Ik^XS -z3@B9e94P2H`51n0;#Y^?TS@#T;yg%S8bbUxJZIvxr?W5)v?jX-yhHM%7AWduX^;@Z -zKMuKOGp)l!uHp>*)Sx{t=W%4W#=!T(2d|`9F>NpTd9LnHhfWqzAKgIW>$iv>h|HvW -zkaO_oe)1)>d)0_i(8fFf>|TA$QlLS+-!(5rjWav&(cbT}#w_r~L+`?rhuh$Q#g`5g -zNFcywA=BO9WmyPc=?Vq658f@`I+#YX33NGOZ8%qzhIulwpZCv@bVD5VHmw#nd%+Jd5{qGbtPl`J8-X=QNJy4CG_1D7(*qVl$2^&JuBb7ud& -zpYxeP@4esu|5Z5e=j@-eJm;L}Jm)!t`s-oaY1exX5U=QQiDSdAYQsXtTm+wZ#j^K| -zIw%K2jqKz#LNy`RNhIWfR3lNSk?2Li`Z(>%>#L71T<=($u}cuN4|VECje{P$cGMm1 -zx>2)G593Fv+RdXB?U|zrItFwqc2WKZT~&zdmqg#RF2RhK69uANuyjJd4zKL060&dj -zdUXfY+4HVL2(9ddeM4_L8z=<7|M!kT_&SRHj7zzz%4%h4Jk8}UN{grnUJuayaSdS! -zf;vDgbcNu=p5A*3zp4!nyBZQ!TC#KUo+M}!mq -z-#!A~Ldq-He1v$A2J`4*>}hmS2_^TzUW)P)ZBE5x$R0WpN^U90ELI=-zx@PLW^p|$ -z8xz@7inBs><9nroLANO07-~O`mmKR^$rxb-ozd5`wwohb&89rKMU2UFDDWFU2JN7% -zXWB9KEDV3QgN_Hic#PRG1ivK#e*wSkpcP{xT3thuha3eGQt^7B{=&8Dt1Xt$3rAVh -z7;#KONbgxCcYW@v&>5aeFF}*fed?Zbviq{DWRbPEpEyAYpPI23)Ys02W8PQ}c~v$3 -z!XZ&Yt$@f5S^bSKu7>RRrFwdpC2%5oa#f_s1I{aDiw9cp*F -z_Lr9RQQe@*`=~3h=0WQnntfC_QP5{m{aZCVOZ2RVrR{;@OA~Pp-17R -z=a5bj`i4>P(_6o~*6mQ;oIC0=v@EpL0_ -zR_p3gtVJI)ci&PZm^K{Qgk9zfY(SEbb6x>nVG@v@R&ckiuVj+h*T~6qJD!hWYlF;$@!WJ4>>x13KkUA?*lt@A<2O -zn0G}R2-nYt*J|)BSyuXzL5PJu2sFTV8S`O)8frx4H)9_dYX1vd-OL+va5c~~)q+F$W+ -zV;%4Y1yh?X|Cqc7lC{ywT2_}PW4CH!gJWzoZYovQYtW00 -zj{$d5hMP~~#qwV>iD%(njdG1$RL3>x!2MppsWa&$!x|^n5oDM0CbS*##Wf5Z2X`|} -zVr5!dYbCf(4eiL%U~dlChWe*hgV&VO?vKKkASJvNiIm3ilzw284rw3Y%a7SuFT#_C -z`e2muR*ZPsSCZ^(4c1#pm8HF55Q}?_P#+6cXsG>+r%r -z4fd_P<7>!+su_?CZQT>GUkXq*|dt}Lg2GghEwp%F`aR#*~636)9(?!%h!n^8=m -z1t-ZA*Obnw3~$ofU-~csR_KG&u>d9NYuWnD@G|mQ!`4%Mf`9sE(!Ca8#Byjq*q9IZ -zeJ*(*KPr-Ud!KvG2HG9E?^(3>-mM8g3)w-+Y1|;sZraMG>l2UX+x5y*@c&n-Fk)uA -z2n!*w@9(5~Im%p_REN8usZH&vwLk3_4Qtu3I12NWXMbreTZ=bBsP~3-#6mJCc3fCW -zI+r%M;)V`h1SVJ5c3Qf7>4itWSweaeKIt-cqX(u4sryUUGVe@$myXh_MbBT0FG|2m -zs9O72)akx)W*GT?d-DdHTDD~CPy(_ -z(3&dQnvGQzSqBy04z8MDfA1q&Q4PR~YIuSA|8yr=T<8JV%e*?QL@ZoC#jl(IiX>IA{ -z1TjaO0liiO>mZ)+*|;^O(38ze8n^~-GS&MRcWI2(*)c_6Y1L(lknxZ7pTcTt(^(^ -zH1VuV^qI^0|Eb=}hK((Ngk{d6unhG#w{MEa+F0xmje|O$ufEb84~x}e``!#q`?}J{ -z7nw$AI%aI@XV+t2CYm-si9XR;<7`(ZC3LDLK@TQ*NL|7|o)nCmo(zXy!ISbj#8mjw -zkwI4VVY**c4I7b>wb5TjfBf>V(ZVHGT(b_pWHVOvO(Z{KJ0m$gm)Pii>ccl%2SU3} -zs1a)u>!2l2n^Z@ZB}bN+U>o4bl)E4?NNUo-{@|7Nm`?hQ>PSL3(rL_t=5QkBZ#p?s -z)EbeF53iX-^L?7odJ28#rvy@F4fIk)fH2AAwKPtsE -zZM!lp9xJ*vWraPP!Efm7R7Uhh9dYf!)?1sD>FR*w{fxBJLlzUn+N2T6c45?A?ZU{} -zm(GkxY*&4oG$Oiv!-&ETyv91h)ZWm$dxa8jI8QlWh&>g(ij`YD9de|bDuof|4&n@_ -z-1(p{F1fWB+WAHOFzRk?&$ru@L_cQ0xpUmD#aW#qY@KIZRHYC5c7N$NOSV|j+Hb0y -z@Xm!tsGpj=BIaQ_X%eA>^ESA+X#8dgrF{?>C*_OCE{#Ghq-yOtZv>=QqMF~dQqy^! -zO3iPmsxdP7n|5nT<606I!v=G9;`|y|tRkJVX4?_=m?<6e>$dpU*jVFhY@G2ZD}xI- -zD_qjxk^+|{eJ)1041qM0=Hn1!m^mG9T@TNqeSuH96{SjCoU{az-K$D>jH&TBxpsMp -zW7FQ^wNmUYvbA{sSwxx+9qlf(_OqCiz(*;R!R&}K;jM7Y+<5WUIB@Z4R--?|60$ZW -z?zV)V*#_QB_gwHEj_-8}ksZ7EBtp=6Ljh*2#KmWsHtS5HI)iSG(%HjVw$qRfpMfY9 -zr4e~X&PAb&GvCTf*A2TSnClkfwLgTW5=5f}8Shh>A|XxiNuk*JWM-4ikk}@193;+I -z-5kIxQ8Wk2Gs(T45~Lv>Ojtw~ShV)p_#%468`4PFnWo*=pcCM>hMlG61TjlH3^zK# -z&vs*X`w>fv=~$w~8Q>XK67v~eRES-y%|6NI8U*961VwhCqrOa^{u((rj6yTIMytuGuv|=aj0gJGc -z=+9BOl?syc7TS+4-|FtMtK2%HVXEL(nuHAX#S3v_c1wEXrKALH=lzz`pl0c2S?14*Hf8SA1vLL^pIJ{(Tenc_XgJ>0m+x;cjOG&VJt^7?XhR+txyqLtPfgcX+Uo2)J{b9d!_)bt- -zB=c)$qZJ{rZFh=|&i+=K?7~aS3cNPeq3TVkIE9uibo>*)qZRdRP|hi)qxFLl^7tvX -zuFi`6S2`=mP94pgvt0ttE1cibyd{|MvLYluw!DFP5eeHYg{*BqQtC*Ibla5v>J5N?`wkYt9kC5iXON?5) -zjdabQfVot;%*M1i^hOok>_MGa{L;_<>f;feCTPEIgI^BUPRa%^`@3I(6?007Fx(DK -z2CI9Z7-}*Ke&72w*5daId-BV^mG;`NVxDb_-xXNfs@i9TD_6igHtRz^6Z -z)zQh$R_r%2p&k4Y>;;I%wM>n5TSykk>aj*b{giQDj=RBroXkL$2HWob1&{S_3hBM6 -zTte*FW(zXRoZl$i@A_IO4Z+Atj+3dPK)zMlW*dI=8WhvrC(l -zu#~sI6q?Wafsn%xCsCduEopj1lBBMmjUyiS8ke9Xnzf6B>|y-1R^o7UDxkH`dyh21 -zYrr>lPSJARCX&QT`Rlp-P;npvuPmFH>V;)EbxVeo+DmMB%^9i4Db~e7rYc}2KQ>wO -zjnW>im?a!ag!E3I6sqXVUP*}Lc=USKr;~p>GpgyC`NzoY7X;7!1SJ)}yF -zGv@W&-BR@j+&6P~ht1smB6q#H$_>{wJaw;4hct_kdPG&5U0sC~xqBGUY9O;+U-c(K -zU*xXgJnakIJ-*7*+0eUkg<^togt=Q=75)S5|LDe#s)|O-GZ-!Zw(Hg;Vcbw}A#HD; -z#GGgO3HI7t5q8+Ov8hHQc*;Y@u;Xjl)a-3+vI1Jn*+R`WW>wH@KHJz7xL9HpKo0@s -z81pcLLKZY0-xNNY`%R#;c{}7!@mVLY32`~aBe4e6 -z9E3Fj{E`&JCmm(vmW8_9>l;SCyS&nNUrNAjmv3;uZHtd|n!e4f|f(( -zu8r8J+@+{fY*FpPiNr3|mXKZQEdtJC$mW#J+}~ccOSv-VcvG)!srtNV!ppiS_t!<8Ra9Ci2FZOxPO#heC9UGvqB%o7Sokj<88p~`Zsl{g^QX3&p120nzf -z#d5q-+mm9ioRrd2rV@s0TSdHvqPkW%H7QPng&5IPHX4&{xsXffWO{eY1a3Y -z3Hy54%-eFsG~}hHlqkj_|ADG8{}pa!@!3DsS*6G$x8n(O2PloT}r?I -zjZlB3Me84YbCmzK-=6UMuZj2{Hi>OUT0vf(8HZKQ)p0G~ACSXoO1y%nGGlW4ZxIQW7*gx{|RxsY8Dr+%2R>Y9>P*fJ8Y(7cJt{`u-V^K^Y -zzq7hBpVIJ35_Va-mN>l3WOlq6a*nrjp&8m1!7rb-`n%NIRC#+&j5Xl==t2=k&E1q -z+(6#~`oMLXr@rro_>}uj(83MzYXY>{aZ5}bANken@(=9k%-v0}w{e2$ -zXP#gwwi7I^<^&tQ&nqqS-%54V?ZUT~%~$qR=6lhHu5q^}xY1qTm2i6i-xzJoK*;eZ -z!`*m=YbtI*6IIw_N0?OzQvlbE0}CB(6}WGK_ld99=tTHT55xTt_?R6}p`QKaVF-bK -zH^nQBY7Mr%+G~i+GX3+&uv$iUg%K -z{v^m$NYIbBuOH_Ilq-dndw}CZs-G9J7fmZuLDq4TRb#9`m@i}YGQDjtOR4cnmq~VI -zbPMF_l`i>sojA^*>;meE>g0?sLrLF5ZZ_0G8QeZYtOR3W*QfaUGl=&$(1eQNHZ4y6 -z-giHwR-qnP*t2n-3Nz7L2vyiqMc-X6n239OrTP!cNSc*tF+!$4R=h>w7PDqlt4)W5 -zt>A8A&K#Y&`<{7bhrhh8nbLUPSJ<;pS?liQew5xn0>1J$Ka2Fj74dMdw4gsY?!hfX -zv_G$#dklW#ey*kCl}bKjE#~eg@-*@jb7mi|A^|=hF)QXe|U9keXp?GpH@vf@UpSZDa|9Ah33OaLQ-0S -zSt~R%?7Je+hPS}-gI8*B2|f1WwwO*E^ceFp;j#xgxuJbUc!x`EAFOO^9ua1;J#5=& -zqt}MX*DGyw31PNo`JG`(i|V7&rSGvX$nW|%j{4~>d2&q!+8?<_V*LB1@BE8#%Ok`} -zw;d>4OCB_BQKM*oZ(}visc_qaT;6GxbNU8nTE9W(;&U4FxTQ*ZO|L^9El!IvdZlkq -z2$NNUav1Fi2Uu0-2NpaycVNK-b0IlP9f_J3%HyyLGxKqO)LTKL45OCZqqiykol -zdYIR}jeTKk=ylJchwbzZ#fn5eH#yY`TRN@Nr>KNYQ^`&|_2o!t)KBQ3JgBE;P)(rB -z=I+}unr#-MpCp?5+qnNy?!Tgl@+SXB`@##eh<*sPJnrQ5?&*s!l#_p9A5HNegWWx0 -z7UdTQzdWAS4CF1$iaMSH?FDiji|-WpcT&1uX(Ub`sf@&NY!|ghzRe<-ypY4vSIY5;cV8tskREZ@-$2VHqn7bX -zKX6*EFXFB=e|!xsHG@UqH4+nCe*o_d3PtV7+;z4`hG2UCO=E(Hm$R -z_}QDFueX|<)9cWN3-l0#s0)+@^A7JpwVuJo>$B4H9x*^sY1UELz??<(_S_9L)!Pct -z!C9&a^y7VL%PsOSN+UwnCin0iABtob3A%fVj+kj7MrEgRn5rXsS~U9nd{1QOyyGe( -z&4%9~rKyni6Vig)qWw8_^E~Jdp#J5ry7>dx0Y;yF5q~m|Bc0g~7S^&8cZM1#cZG~O -z+&o~KR~jSNQ1`{WDR|%4DUq?Y -zJKUlis(U)V{d0se1JP>0E1h)faWAAxYQcClJ60l&{ -z;`B|N@OZN@;;Rk;r*p8jBW*=$l#dFj$tB~N9qi|!mMY4_?p -zKfY*#doN4KB)Te3VVom)rBx`UOjDVkbX&S(o*>PhudmffvbzVXo{u!*IdS4ODji~a -zz#C6$hMmRAEl-bkT)u|B`Fe0^!X19-cA86y&5qqDt4I0_qjbwW+3zIxJ5X%yUdQ9T -zk9cbX@mjcF8YC5EEwGmdZWV4Fc$|8i#u$csMbw9=Hx6-YcpdNHbv)R;zNt%%`}L9L -z?hjC|z5c~vr$L*$-_JW8Nj2kk -zIXu)iG4p}%;`l<$>%fH^zi0RncpAs=8;nnRU{8~B`oLi5R18Z&Di?Vwx!m$?N7N0I9O)u<;o2SV*+j=J9 -z%uR7joa@0`qh?1|3@j(07Onzk$7ndd;#0e|Y-xUB*MZm&^tZTqdT8U~-5%e2F{oq2 -zA?hdJiu^;I&IXNj4BFuvSZ%^Rz1F!8^Y>2khZoesu5q;WF=)8yxrSS+RrxWU#}3DN -zY*KaTn;Ev0g8$nu!&cZN!bW-Mo3Z*q(?W1&sfSjuqBC*YW7ZfwPT4vmVG|2d_MDWg -z^2s6Xu%6>u!+I`a9ITA$Jcu`%=gq<0E(WXSV?0<38Amue2EZncUn=uwTB9KY^h+8a -zz1~cBrb*W-j!w?jT*kRsNPm^E5Z|C!%)cWKtFAIJHOjhyoxkff=#hD(Y~Q1XzpxAF -za~^59Zx`^l91rn@0)NM`-nRp|ljB660{BOc<9$lt%N$4f_5lCPvDP;f_*ae2lcyMSK{ -z;LE^|0#i!g0q+Xra2}Xa%7puArU1v-VIcnY1tV^!;P?}!?Q?HKc!i;`r*l4LqYCWA -zcsMyuGyIf>dhGgWrfFov<7FT0mQfE;#&D$kDo=qV?p|pZ@KOWqcWJhVDQ8Y85lXeJ{r=5od&)LOE9A%+}{q+UG+ngM~=JhPhmh^#J@b -zaPCQExQBmr9Z#)@f6YLS3wZhWa6CB>I}Y!nc%_NFK4hO<9%C>MmCf|XU3MSN!;m|T -zbFY+wy*b82v6xz7SkG$iq7iY>^Sa>;ww3ps{T>DIHjejt76b3#_+`&f;GGF5o>Juk$p6bhvlsXcjvw{B0(^kud7e7p -zLmbcX*o|+nH`O-u*AjzAI^}-~EvQG0c_7UpH)=I=xkq}}Pp$MizSJW%aa_W2BSO8- -zd!I*Y;4!H8dGI1CwO#`cv&*jouHv}XPqinzzku*n1})ER1IO4Qmlq?p4b-kcs!s!l -z2Jmv8^Dds!67F8cW0!Du>V+O@KHSN2RR-`}f3SCYuoEZuC?0;MKiJnj(sch0_90$) -zQW%o3XYQQuk@667M<9h;3A5JGN(1$GkCel6qSp6FBQTc-`>O|UO~VQbudlLM9%(SB -zV4wF$2|PbJRxEr52U3sVwIREQ@G#VuJUF$W9{wuFF6?-75uR$b$450OyZ;II2^dAf -zEb{qhW0YQC -zT%rBpmk}sYBTr2(Q3Kq^8RXvcD)1|TuiOPZhKH9|AX~7%hRrFg$x!PhJ|Q^&DT~J3vZ%6~6x~P$Y|!+v-cCkc<17RD+-KonUZO -ze&nV8VdE)$5Qrm>*A}n7&*yE#uL_jlpqED3L>^wCS*KKGZs)VJikw;*mh -za;LmEQ{H{0TFXnH%TrqAz24VXBE|%{F3?)bC=Pn#1RicNFO{6~Lh`W$eIDTDl6|lf -z?<-4DAWylcPX{H;rx8MJkk7wf_L)FFC|ex-JlKiT7sx)Dl)`-4^N`OlluikG@irgT -zJXbxclAi4Q6no1v%wquvEcupGOSNR -zBIuEZ0x#n|l=!b6RC$0mqeiB9qyZm%3whVQ`8d0pq!JSFmj?QG{0+h%Zf-&j4>^fx -z5Bigc*n0wF(~X_&U_+F{r(8kp^o9)eaRUZ!u0r?nV1A!ro}4Kjesf-{rEI -zY=o?3=f}KeILa=hy0NEE!>aoz`xf{l@Gju*fKLF20(Szx3%mpPN8l!41@L8HvYDp@ -z{u#Idcn|Qez^?)i1?~dg1-umaci>v!y}*A0zW|&CYzN)|oDJL!Om_h4fO~+S0e%D6 -z0lWhEC}XLk3~p(uKNEIdpwSHXMR3nR7!U9Q;DNwC;0OFi8NE(c4e4zz?9<=XO80$& -z-(NGP1mU(K9PQp;2i^uuyLbAw9l#TS7X$AEz8RRlXE$&bFxAB#;0$1@uUCLmfu922 -z2Rs;<>f&|afxxc<*8|4^Hvqo@OeYys7YBefz^?!w0v1v3H=(as7bv$gFmDT~Dx~>W -zCZy8r?Uw$)d|MA%fjG2&Y5-ON{{Z|da0u{4;Jv_F;B&xrz+u2&0#{*gL95JR=pz%+ -zrwE&XX;o%}JXr2kiSOxJHi28arFx$kbKNHN+pW!Rev*;IM>DNCHLfDQQ=xsW=o0l` -zU0dLwy;%|OwakeWF%#|M)KzdQOJKEh1wJ%K$v&5z7S6jVmG7LCirGQqAP(U@(mC!+ -zvzABtlKW;kXil^6R6lW=jfBXzjr$t$@`}Yk>nE)Ld7fsDo1EFOil#GvbuH$vB;Sp) -zE=&zWUSW=h@ojD?)Au*n{3aXh!ieq;aipSSA$;Av^yO~oU1ENkuP_ruHRP6teaQP& -zrg#gT-&j)BZgGstI^S@p+ASrao@X1nfcgX7X-MDbmSTYJF)Rj(0J_(32uK68(9i{> -z04g%1Z*ogs%&2n>i-8!>1BOFD*MROfbOHSdG{=y>*)9DBw7{?!=rYjVhC@K#1Knrn -z0=fV+&yfB++8=1~^LJtNv;#e4I0UzU0L?OV0eu2=havq1H{P8GXEH1X`T%H#;SkWf -zK(`yZfSQ4(8`58NONW6942yvd08KR<0@@EW&Cmt(3eaRj`b!x9Kvu(Iplv`2hC@Iv -z0gX3w0c`?WZ)jm=y<1ufEcZTYvrCxguFpwdv2xTndJEq#dZ9JEq9-(JtnK@=XYgX@v3ypQbg#PQ7M@+Q`BPLrOF(D+2%R~Er -zkOo;?!}FrB|3wkD%?=tutWh(BPJ{LKLG{g<)_zRPa7)j6E)DPP2!;E2>!Wz@)nFZi -z8~bj&xZ8?Tx_)u5TDs|tiPkT$9(fUR{(ltUEkVQchTWDzyQsh_6L&Lcr$+Oa8MR4k -zTbjR!Ymoee<}czevU>w|u;fbh^{Su7yvW<&FFfQ9Kefk3j%zr6nd42ssz9u@{&>Xt -z`I;UfN4%T(7ie?4Z%#M+VCicaEj -zQwlN7m`UUoqWyn@K?8p8mX32wk`}l04)6f1M=9UKh|xKpXiD)7_`HA;>EN>uSl&gr -zrQICU-X8pmW7^xhr5Ayp<|7>W&UWJ_za6D}nx|!hUo=8JjXHSR_bk5dHse6VSq}GS -z5$9Q~`aVUR$3Q>F=TJMo?_o~eW;7t=L%?ec6OHM>_W^IvhEA>RMwr=sO{0)b=%$2=PuIpSi?uiDd4AKR&)HJYnV0m5Z&STk!=Gm -z0j9W=D{%uFQ!+ggIS2JZGEnP7e1TInq=i)z_m#DC-Vxo>fIi`+u9w%)tCV7le`ku+d}F+Om$`1F2RLxXwnFC94hfW@2HOcf1X^hvG`WnIV>Ye@7&MXxYF -zHe7jSeTZO+#r@d$#+a>Qt=`)2P+Vio!NY83u}50(Il*oh!U`14b&2#2+8j$lhUWYU -zHZ${Ng0go*#R0rBfj93QD~pBZ0sL0bN}u0PZ)(t)W&_SN-BK@?!`nDbW2D^sPKhC7 -z5M=PA+2oe~<)pK0Iv2uPfmUahINWF;KXRGF~!Gw2%}sUt17_#n~qmPf_9ko&s5avV7)!^ -zYJVkK6L*dlS?A-eRzGx~PO$!hY;WPZuYmhd3*f)Vszof=+4k=ZgpybGq=#NUMh$Lo -z87F}aF>6_cIt?XQg0HR5t7pqO^{A72aXov2Q^oMRFt47i4g*|O(U{R2^p~ct)U>(Qbvj*V)9Dl=>0w-{MhK&MF -z-SP5y0sj -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

    DU9EEAebyYh -zS?-r4j4w!?ag*aOc}j3K8hK;9+gZ-oD^27^^a1B~mNg__*v_&ax!C+lQe7hHEzwOC -z8k-#$y@R|J%`)~IsZQd-qj2KmPQjWJBQ%e6q3iSbIexKAvN?sG;wf+Artm8^nVZP# -zJ*P)!#7*GBcrF8`^!CqlNq=(fcygCz!{mN5+-c9$@x-Y&r6_Adfufl7@623a2~THPr%5V;H0>a(suYIpARQ>%jsrRrJ%RoYNl@> -z9_o_nJvg_!!KbjNW}fWxGJHmZ}y>DbaTe4sJ3Q!{HFD666fO@k#r!i=Jmi1D9+Jt1Ba&Eap%iIr+jv#GXDeoR^{TB -z4b?1oEfa8Sh`z_lx%#UZrFaEBPd;lI-)g5BschpBSq~~VFe}9w)wLnD8jQ$yU1S+= -zO#6)Eh<7mLkfzZiZDGpoH$#6{*ZDGfgpk47k2=2?7gBrF`Ok40{M$ZG4S8N>g|ha_ -zFY1G7)~L@s(%)U;7~2SpwD8^z4d!3sOpCA=6LyH0Q_Xbe8Z%iozG}0JZsQUMuVImQ -zqGTyTZ~Id!Qw{7Ph_zF3c93q>Gz#0?cpZvfmeDkt@!G1=uf$v>~rwKL-V`jea>smo&@4*U_W^=rbF{Ph1WeD!X;x)w|%J0q(+Z}-#e0tgR{J*-p -z9b;7sjo{LuxVKlf1N3g|r`F+}X7Cs~L4&oN;a{{Kne@pOt#)y~@~mv5MAbQ~&svF4 -zM{B!M_+5;n+heNEITjhsvB-CMSDVOs>U69UNN?o$4`eanp2S_G`Vid9!eT%^$ZLZ$&0rcj1ZbivHgGNe(^k#a^=us)Z*0n|{94Y>DDEq=dyF -zvgDGeJe?@ljk+^o`u+JqTP{M~Y1Qcn3Nc7|Iq`CwIC`N@-Ko2MZoZ5cS}vW&QuJV~lvmWSalk6QZ4Duq;2CtXN>jIknrS -zAlW(Y85Yw$L+p%P&m?k}90q -zG`ygFK6x7Pvo%gzvtT^M_K8V+#rKReaT?w;#SR2(XlKGS;utRJK7=xNsVARe2a4i4 -z<9N(R;70LcK*^z_`(oxf5fW)cAirDjGVGfo?mDzaHK>I@4yy(K0ktsxpjtQuoQB`4 -z_|v_m7M{iLQTWkr?F>r^(KdZ8orjHe2ARaZbh5)CrpuOHvpbX+p=99Z6t|zCw4e41+{P4ti)YF`iK_+;cCB~fmaMYS;aNr+IRniosgUQ0%=TdC -zgO{n&mbdG$CMyp6p8aZj;a9Cnbx48rhhU(+qzn2>Czwuug2iTTRnw^5iaYqLjUQnS -z*LL2;OghnCIWH!EGNGKh=Jzc5^Y`R}@ -z;`DN^(j|oN>0E{In7=hRoyozDn95%o$T15!o`5t5oNvRfWTg@J-FPp5w&@}5HL&S7?fz&1CxyOV53$?0V+X8X4 -zSgQ%dyWC8^*>2nL|LvgF7Ul8#qbec3fb=_(ON3NSXKX>dL3FFLXm^t06UVezdOL(v -z+%^fg`=o(z4KIMER>@w=wKHVb2K9s6Rp?#)NkZtC-hEGKojC(~Z?~(2;%O@3PGHP9 -zh0!JJj^tWzFL@C*EpdkAUX5Fy8GOjm94M)5*tLKczb=&f`~;qeH*_ -z>}qnT$`xvNOZT|fSVMrcod@AIiM!2!o0X%fNMVypaEIf!nuT3O51p*S%X)%P;DUt| -zSUQVVevX%7cTNg-Y3-Gk&#xwjXMj&TqSF -z!-?M@cVh``GS(_;#KziRm4fmRv_D+Ry0J+a#qrqK -zSCyyeY{Sc5Yt6#Q!mfpQ+1HV9@=8d^Al&e>EhsGx>D&P;1ZX9lTk3L^6sxKAU&?G* -zcLX*Z58Z@S#X>*qx)m$xGT@g9JA|^;8;lUMOIq*N9Z)cy4rZ=aa -z?~J^!M`8$=z45eDVn>V!J6z1tW%xRot`!|?m4He -z$9-mcL_wf`wI`5U+toGT5Q7fxgng?7tWxM)cbhX|8Rhl&fg3Q-X{=UVr4D6Sh%zkC -zZ;Bsvpf!GI{7C#eMC^2US>XofL6rixDKId_Y*Bvl+~?E0}>Y!4r) -z>}X+2#w4gz=UQMDeV}S8X1xaX*ciHp8QY8%sz)@mI3L4ofb}F+$#iR9)-)9=hyysK -ze|~6hNxS2vBacJ!7j2FHXY|Lxza1Dq#4p6#xE2^{P?NI`ZVy&RH7c)c(A>jv=jyGE -zsI9};yZiAy2QY_ZM3^0K#bAAu?S$3=eJ{SzLT*lJr!NcCzGAoZD^3RXEqKRmhdx{r -zdMwG}oVayB^+n(MCZt8&J|s%`+=oKzRK9msS+~GyD&FouJq^QX{=zTU%$G>p?kXt| -zVS`>DLehnP{Px~EmUM2PzOFj0xX~syYKQ1jl|#ePTjEUN2P0}DcSLWGdKuPv+~XlT -zRb_GsD){3~@QtcH%(TT3@O`5149MJlYmrkLgHqC258X~6dPJbqK{_=k*@OhaiTyum -zwUDNZQ@X^p>FLzRDShoF_dy(Y(CM^A*4uDOpL3tx+~-ulht98@(h07G9tX*~6Z&ft -z(Z+NO#VIxMbm{cUDK+-#)jOqzK7D(q^y&?I?r4cV4S1)tm18PBmG={_Zx0Hm5l*QU -zJ5_V{0<6qP5_37 -zbtMa_3M2VYUCrb*O+G|T^TIOWiD0b%{e`T%!e$`SbxTLECspI7_wcN`cLdWZR+437 -zl{whqRN!5qoQ1F~HaAC!fA7tS$G^onH^bV|${ZVeDrX+h6F^VmZ#n)}_d$h -z|Bxg+nM0b?f0k4F5;WyPb>Ngf1r=gc1*pG)%7wA3z7FKr5Vw -z3rTs*jsb|>0V={s7%Tb;r}P=<%m8f%{Ws8UeW7X2<6-$dg-XkYIP^d_EKC~vnZ*hM;}D!5SZ3k$UMQ=o4Htq9P| -zK>I-}1N0&{)iH4{5$Vl$%i}<%=5Q+lG$!O*J5FiV`?)P+4LCK%xaqXW^K+zoEJh~i -zKz*q}m!W=X_2hSr<=S_Iovty^UgIG#V!JVybxplhF}g0me<+Xp19CaTcjG@4$^L`j|9PMPkMKXq -z{eKMj+u{En{F8b7pWqLz1C;Qm8~hJ(m&-*I$|>zf=zbL1vBThmB^((AO0&Qz)xw{D -zm*ZvlKacN{zw%#5dmT^dUr2iuvYTZA>e}zj9`!f&WlpgPk{R?~_;jw=S -z#7;o$2Lk?uJtt5zck|eUDSf)l{~r -z@E?gU8O!U%h4@2*-__jK_!c|%`-J55DgG}3e{;7J@jF2!@v^^!vcm=~+C$dihC~*j+u -z!{ej<`+U#B_xXVD*?{j__^Nrix1rq6@p5kq)cHQt`EvNja{uk{f1H=wiMYYOzL2~8 -z5pa1r-zm-EE|=jVpP*sYuFd2QsnWk!~73lqAhvzO_=}rS@gL;xjsa>TFJ#hH^-=M$>pyB -z7r*f##CV%i!*1|@Bj6(YlhpyU<1XBMdk~>_vh6HwEV&fIMo;zR{Sk -zx@{&%*>tcHi`7_`!oJYA4J)~|SjBC_s%P=jz0Z -znyt+$yk~J|&Tfn9B5cfKl?W@tmm0Zk@{%0N^E-|9oa`=M67h9p9cGGx; -z@m4v<6&>ya-y7bzYNxZaZvizE5FHC-GYQ#pd1Ey;E4cQ=3D6+t`XepS5gN4*9M? -z*;nFkxoNj$Cl5`bwqczr)AUVbalItx4AqFCLlcSe-y65ta@$1;ch!3~RZnC7d-jdud$6Vq? -z*qmUyFlb{TTn_F*@|L0=&A80lEv<4=4B8JX?026i<5C(rE%Hg3E_&fn*3G$JzO^<} -z7^1RnXTQa-W1la?tC`sSw6LytpOgr0-NOD%F*{a^jIV`S*zce;pk8ygFbC|y(B7Y6 -zEu=>ZzsAEh6V`ey?28oA%wn*GMASb)%>cE5Q|&2q_RJ(3r%uDK34XK|YGG$VIYE_k -z>MKw#P^FwYkDPO37-V-8@&c$^Ks~^zZxM1r5tB#*vxR*JYCNbyPIZD>25Ks&enjqX -zA@@8^U4~x;{Kj$WXHey!ayaEe4rgK*-i)U-8T>9FUMi>T@Ou+}$(-s2)dXq)r+Pp= -z1xm*$52yxEp`hq=I0to4H_|4*pV<;(Tz4c68d|dLPKJ|sCFj`_4GjAK=h&V7=ycD3 -zR*s2Rng-%U)E9mY6BM1;DQ&?E_t^D^!Df?k3u#(looXN%UM8e-$$?vxqTwhcC2H^w -z2js$Q+2^B4Ps{>6x#dMnYC}&r$|iwY0qQuXtXyZ0NzI%Jwqhfvf~{E3sbDMaQ^FP6gXI -znNtq*4H^XlI2G(EI+Vsmr9m&E@x~<0djezyX}E_SI*m!sV-K%3YJfHXg}{;*$;*Z#^g0!EJLPj1MKsxuEf%-R=PwF-F8Zq<)>O^i -zm3cPo0~lVnr=CLcawfeDyu3((n|Msx0(@bflH<+LoM$mAj@Q9GqDakgCEVYP`4}4B -z80omnP(6=sr7)abkvnEa+A&wqtrc)WoSe&=D>TA>fkc&d6BLI@ot`A%$*8kGJP*05 -zug$?Zeejf?NgW=nC}Kl<{1p_w2H`*T+=4W52hSCzKXdJhUC&e6jXe{S-t&;#5B5JI -z#ZlNrcDSTzK8-aLr*$h(XG5HSSNkLVqpDl~(knbk(#C9B>c!Xk~zuz;7v$K$E?b^pOjz)8x4K28z`KG2w_w@T8p;3oAP -zJ?V!=keP1s`lY>I=$;~Nk8}~QYey6jw~?erP=f9AJ^{y&q+-Mymq#2!!b!j4VB0m@ -zKswt!KyoH%M$)}#(Eu$StXIgYc6FZ}$gk0MpWs#l)z8<+nc>y}^@}vO+&^e-?u53W -zV5D1TOtK?I>^IP_253OS%cj}vWBNpit>+vnqP%8$|ii6ODN6u7-vyj*4$kiXqdmd_-N#habKGgj+ -z{ED!-pX$Zw81{l~6^BLQL8L)7#nD#Iu>TkOI87FlPYGpBIh8fmC=Q`||GS^K4V7nk -zktA(IUMnz)Exhek(^-P0flX4&y^>ZQUb@XTU#4m8(aSmI?Rk<^inu{eB}oerH^`|Z -z=>hl!Ih6!kOV>G-Bo%@Raw-Y7macOuNy-Bizqo$t;g$}N|Hi-K~7cS3393o%uGQ}C6TRw|Kd~&(OSf*B-jeL -z&Z#8nN7(P7k^3h`?rM>G*n@m7p;3AkA>RbIvGSV!A5cL~B+;oyA18v5b$(XTzN -z&*P8|aU+>CKHH_@Co#SyKLxzl!xMVaHQgB{`j -zQP2ig-^Z)Ug$(^P&Z8_3XV3I&-8_=`` -zMA0=QbU5nT7CboI@0LSNK_yU+QdS946|dbw3zQZVua)DgHbs;wY>S{P%I+o<+?Hd_ -zio2`r>L#S^Owat@pGm8@-~E37e|R-B^IY@H^L(Dq^Lak!pjeMLdF7PYDmqM<09yR3 -zd(_aOquOk;%m;64nq2K-v_U*8b|FMt6d!>FNN=)&V -zA9PyS(64c>t_JpH5TD~!Z$BU%I1d_F{X2THi30(>OwwGE#M@CLXDEfvgkw2LoP*M{<|m=OBHR&H -z&{_Z${rJMa(iaxA|9bq0c7@`{@07$WnhPhbQldM$(Xv@$e-?WpZ1OH}lu3fBX^$Fj -zTgKEiyaCQ(S5&DSPqWY6hqTUt4a3oD~bo2AeECNeGsk3 -zqL=&N9Y1zjgEc+o3bq*-PX>EVJNkd`^jSEg#ZF~(%7ecBF%Mvau_7J<^u3y;he2^; -z{r8cE7^R5f)jlI2MemRK*zOgtz$%#XZUv314nC<-lQ#B{CK>I7EPpogOk}urOCRZv -zc{P6y#G#gEz9=rojz#@>Ro=Pw$a@L(MHHP)UkvHbD}`t46NE~l_#spDE}wn%iG{nd -zYrTyX#AF~M=@8|yXZ9)S;dQ`-XbaRIEKMGZX5c+HqU>J>5Y26qN>H|uhSKb-wM9Ad -zdE<-aB##lrI8Z4u3{NzRGMZs^3NL<>0eU?b^#{b;`$kz6J5^OoIu9sN9MDuLcc^zl -z@2Y>VG{+9uuF91CDwD1fg9rfDA&ZE&!SlO+U|35tRB+(uyP&z1AY`~p-0_DLC$pY4 -zrl)$12NfTU-FjZqGs#{Cc7@56y8VBMJPs>?e(^)#pkCQ;A2`B;wC_jJTN=>|@X@d3 -zuqzN1CEG0!ZV|;dV)_dBMvO%tBhODA?k5c0@4e?p@DD-n0**KrZBq~mm-@j<~ylx$>1?s|#n(?S3>#6#v=FUO&>W -zXyLARgoMp=f)41vK9rw{c$KhWI;gcWJ0J<&Ju>p7Dz6njyy=Ehf-0tNK#qi!w$WAdwh`c -z^P!E!VXk65i4WhVm&98o^)6=8exXsw%h%L?d(X0zA{V@)#4RoJ_4S3F?W}e5+vyT_ -z%gqG^A)|rjhq$|#=VnAl^8P^@+05<2xk{Rmui4#>+6!FE${PCm`dsaCw#&%XhIs|7 -zKZoj3T(P&LyXvVvw~L!D!p7)mI4R+0LQ|kXxRWB6={^7!Qbc5ykXgV<)2P!YhGngM`wenAU5Y%yfE+3)+pgFC~YU*(Ei4 -z<&j$=k2H<3h^THf#-t@jG#1Uk_#o5tTj&XRE5^&Zbw-@$zs4Ww+HH~RGv<*8S!=9* -zRg}gxRzH?5iaVpE4Xm#HCA8GG<<+!&5atpl_`O!+B$`bs#aWphvHGRa;vd?iRBopz -zJ{tA>kF*D(Tdt`OPVG?rMbQ{E#NHjNe^+$<5A~@ewRsz0HY$>*Mfgbu#KJxdzl3{M -z4a9sN5Y{7Iby3`e7<{zrzKK%^@b(Hd#(#snK1A$v0_=z1mUq6WI0`2=242|)WWHOt -zVG#7kuwFa)7Wc<|2;toEHUDD$cIm!Rn(epe7c5{VbD3IbFSAzlcG!Yd<}*WwmA6rZ3A7!?cpTCJD|b5 -zjJ4Ix`DO3(S3d}|de!!S1at=o&jGKj0G#dvobT%uzm)X5UUzD-r@Y=kEV!RJ)A9(F>bHJwd|zwPwyhV;e*VS|p~U}SK1_u`ywPPVnm$+oe# -zsDs;_Mn8FesB#)w+3B<{zH0!NL}JsAhP4TtKi+4Yx;a3z_FlhiA^01nNsE2*cEBRR -z<_*}}STj*C7%j}ppxBBz?iG(ftK;73Cw)hN*;(vd@$;D-q}$&H%R!p`E5N8Ym&+J1 -z6KCdL@eAyVQE>~}P{=$1AD}#5)Rta`)5;J*6{TAuIJGV&pK0>iSP9Q2GG`tSN -z&O;isz9{|NuEy`}_FnwnR`{Y+V82C3hR-I&+aKP!qyaF9IUbdN#InQ%c(EduHTXmc -z2MRiS7g7${AoPmY%e`>)8?0+wS54YnWe)Tk4n$1s^Z`ic4L2xZM@VPdEbK>%E+X;SLf-Sr3k=bU-w4 -z=t$ZzWm=J_X;C!vZI->q(Rjet$U?pn=>Fqg_mG_-s89H&eRU|k5$QB)ROWDR%-b{F -zztu~AnPcg1!d{U^ko5 -zb)AcEc~su*>DenkKlH;hNp_i1QM{Mh9va<67~NmUB^J(hc3YAF6*#9pUHX>fwvXBA -z6Y_+Y5cB0)>P0~97`LDZXDSi$|Ka^E5LwY3>q|F$1^&3-?Xems$M%)@@M;cgZ5Ovg -zgeKA6p*>(M_9|xAacQ-e(r5L*G?X46e&~nN_Wt8N5Anx)9RYT|w6Daz -z3nRMWwf -zLokjLw@AmORnY%;Tgb@4%c9KPP6{DvBFrE-=kZ -zY{irUhf=v3;LOeDxY}-!{3pB32HbsyJDoWmcOT;p9>#IkjJr3?3Ap-O#{0Ggj -z*GQvgB>QTl(KFa!jWluwJldIe&wmcGPS&OhN2jxao%wuFVKX%C$lsYiHn{UAc~$vI -za^Cj*s{Ht174jUR(#^v)EAtWk1~q?^|C@Y8$5Se1Did0@nRaZ*&3dleD)?qJU=6Nc -zk6nW7>i&CxO<%KhrH`G_-7r?pS&E!&VAGceSXd4*!N2%GGgYy`EYP{fT>9q$0II{IH0yF`ZUQ0ma#WjrIBe?DQSvTG8&p1;KM-2%}`!< -zKEPSk@QR=X9M6E~0y;Zjo(`z0H1PLzzSoF%WiW;LoSFK|T2YE)K?VP+*D*B&`w4<8 -zf=Al3xg9;?JXkg`364;s_p{)LLj@tVPS>Zp@kVLn1MKwg;4SNE;EVG0T%Z0b)$A9O -z29EZmrr+3;bTdi%DQ(6AP4H+>S~@S(I?pssTQF@wrtksUJlgbGn9)OnXrQ3|IX!Vj -z*IBmbX)d#no*(SmvzoUZ40HNOAg6(WH5e@38kROZ%B<~7dtyW%_YjkHv}vJ}%X;9l -zd=|bvq4(FJY)M^-2-m;*?~dTF{+hQepoV=2w}Q!NK-9zrL`_`UpuNCkv6ugA{B^;< -zG^oQ4#jP_kgG`q7@_(gGl6|MmC{Z#K?}a_cD$qC|yujY~fRgzPY5#O9!L*skK7{+1 -zkoE=s$R=eXp0n_0$KP-97i)F)jAacp<{Eg?O6xrisK&R?QNk<4jD3&7(<)iiBX=h} -z#t!A~j^$Ru&rQD~$mXcC)mhbn$M!{ZB5JfXq5K^&h;3k2UWA60Go+uem -z#3!O7Xtg00WGO5ul09*rN~tJdC;q4j#`2 -zOBIeCQvReQpDV<1lrpeBm84pzK~m6evEoCrVI(d%S$%R+J3J$B2Nj2=j+L;3?r&fZc(o%=OXAi6Wz6QdfN{`iTM|{J-#Y2X9hop|HTVd`7Z9O;w2BWz-ox67iqA(Wl_aL3 -zcv4P3D5r0V{#m+b`sO(W?IpUC9XbVLV=pf?vcaWk3yoZ^(w5NnmTA+}{Y{%D5qDxz -z``;cR-2hs717d2F{aJJ1&r1DP%;k)p -zSZlE_0wmORi?asNt|!LNrwHGpApJ^!RVj@XMdQRMA}VEuxBD9Ze;T$M{{QghG2TeG -zfafuIH~8!9O&H5vz0gzuXU@?*osIK(EliNNbVC=C_7UZB2KP_n-qAgc-2~nGZm|dZ -zQ9&oW9J`>4_?zAEburw+3^v(^^z}^8i+VBte*&9e(OA1-b%0VNZ$J-1mb-kFNNYh` -z^c>TNGp^JI=?$M=lSYdYVzL$6kfk=ILIJLjW -z?qhH13@GIE*TZa(N)6|J*P}&l7$=fg8-MHhNTWJmEj8x4u(~R6jltv_ke7QGc8g2# -zZG&O}zqFcS-e0;A|F2P+cV|Jjcl~!PwWMQJ?VN&6VIfzy=s3P_QabJ3voXK+N-43T -zO1kaNDy(59{Zp)+IXmm~M#6g7p#^6~YilHEU@=k?2lfOJ!xfY({H0=*43Pg#Ykt9t -z-^^pkGLRSM9Asy3ySfqC!~uIu71qLRoCF!168(cXz3!w^1tDG=D~U6(mr7?vRo8_A -zKbv~f?WR`p1)m4Xk_8_ExjVbX5mDNac -zF#LF27dnx`o6DmTBlDHT;hQl>T -zdtfXy1Ix0tQ(6DFYV~=AS&vzRjetZc2h~b&o(IKoQF>Y|Zfo(5;NaIP`Fp}u*ZT8Vu!GZ$gP}Nx7Q<1%~ -z(Ws6;2ON>TsF6;}zwfc*3fQ-}BlU4dz^*O;0iF -zn1W81oOb|u#IYJ7=e^qVyObHqsisF##zLMzC$EuqRhRb>#`>V1sZt%9%CS|7gGyL1 -zatG)P;^{r!W8^2~4|@vr*z|4H(&;RC2VHqK%yRH~ZJ*i1VBS~@N;1g1$*X0BWrzv> -z#+vU;Y_8V!l*A`Wfh43vP-#uJ -z1KJ^>_9M7hY?o~v-Gu_#% -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 -zI?g5f;-;z98tLSZfMOp4T3sg -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 -z+z%TUi?#j6< -z-G_Tj_8O<+BGtEf;)1p^mjBvhEr)d-f45|{1H-s-i|M2t`=dTGoH1i2{7#=R($46O -z@}^Pq73I*V;?W9Igj&3b>T#4-2<{kvPBJDs+f~kO_~uiR5&MvL;VDQ9&q>n|y;c!8 -zhsbokQ!HtHfUKK|jvg37Qxi -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 -z(|rM}a)JTyK!3*4_Cf+FME6i4Qd^myQ -z4v}|HL^lIW{7r_5^|uexvCwVw-i6Txrh6o|>n`uB?CTOaz{EXt*F}2bC*fbpk?j+< -zIBy5GN;7kHwb0XwVZ&jl-~kl`J+ooI-uq}}Uw7yk@PQ6`-*Jv;!@k)1 -zse6fn!EVx*>znE$y?EH4!uI`J=|Wy<8||_L^YYj28(SWu(e(@VN(mUR6KI8CV@x2G -z&JO-x_C6QU+Ke)Ud<@I4ULJJfPgYsbOpBe^X*Q*ft7+3WyL_{4KB? -z^+5?))6;!S#&wVzakd-r^s51i%}Jv~RD*TS*m9J&XZdMejckGyr#U5%9oLL^5 -zRzOZ_fapuj&}bbWDE1`+_D|Wj4DqeVo*<@irvP_oko**8e2;gs=BxjR(J*wjgKrB+ -z6eb3-zk6-v7$yF(w8eNk_`%GpK7v0;?lvW0HND=mrhKyy%i95Y4$*_PJ)85ih?m6# -zez*Yq{(yW3_pXhK&gsz?MeslwjC2|M8^^_;6CPk#DukGfK(LOoxk6 -zcU*#=`KU@mNQ2;qhW@k=n~>HtyVJYwm4&m*)ExoF@i_5I3UQ|Y6g;$7md-}>?^hPS -zx|Gf3d^XR;23MZ{;@U>=sA2bW_;D-Zz^(L>?z5sTf~N_J*YL#JG;P+cuvOUv{nL4n -zFhqWSHFg?%8#LuT_~RGH~a4_ -zIz#lFf=o{n*d_VvFNWDTnOck^x{QgVx&KhQ8#3m_I7K~)7Ik{c(dsFuQQ8S^C{BA* -z7yH=^?h>7k7WqF2YZ6igJ+52=cNv!4j4DVuDSm=;B~NFmQGRwxGR{+6g7K09P)&Dn -zfrVs4Z`0t3g|6^I;SRtCJFyTwHw#J1LD2^v{%j?D0o=q?X*%?Ab&}Rz2Uz=Y6}C%k -zU5#@@D{^>aKIPH*gHDh!m@AebKWj@x3x7Gw)RETm(~=GRFLnm`zu5(t*bAQy_rD{{ -zsD^kLp@PxED+}rne@iJ8xsC1#!YKF;ODs?EER=K!Nr#HuczSkwd5X8zlLc9yQkI;K -z&V(!la(ytIzz2u7A$SF-K>Me#j;p0}{7QF*kg|!{UM-ymo&qM?u0P0aSBAgf6x+$_ -z=zZYmFMu&VWr+9xwRdxV%GTPlx1?3Z7hy5cA}JVkovCu{5EcV8z@EQY#|0I*uF_%d -zw1D5kqU_MCp29f<-U<*& -zuDe$ce?%GU(c^upI>Z{zdD8i}0F75o-nkZ%w8$$p>lfhH`|VsCYr%K%*eMVJx7?-0 -zR|R;@PBv=_b^vJU^qjJ=Iq3o0hvT7Xo?*|O{iP-i7OPn6mMbP9#Rsa4_yzlAF^8Jq{*ejzug -zKh(F>Hv2D{jPshQsK_ASN6p9?0WbR(c?i~f`D3f4lssS!yv`Rt$ -zQrydsbA!ip^S(jR(z_q?@V+yn=>|a&eBZeh*ZtU4WLm*^#gtlJlFw!)11IPL`FUCX -z#{p#v1mH$kZ-3Dr<1ppt$s8v8qP$dp9_Za~z#Cyg?+o#m4$Azc1;QfYOL@ua`vvT* -zF%Hu!!QFX|P_37Gs14lONK_Vd>~iTu6%~IIJ<>5RLD4eF_g=@`1okW>3Bh#0ngg^r -zm00P%_(XCeGj)TX2~P6uhs7n~*y(-XF4++-FUeUftE_z-@lO -zOuVS1Ao8vfrGM6B?bSujrmloMji|O5*NNPEYxW=d^f;gB;^IElJZ1@tnX(=Q(f#K=FaMi1^h%;NGX|6;%{ZvJ#xc -znZ!x-fX3<}-;c>YU@c?0xVa>%|5|@S~yUojoaq%ydZ3Cyn)ulD}+2uUw;!+A#sz -zXZRd5vgu+&)Qa;5U@P12&wIDY3452b4U>Ey<((ONFX-FtL|rVv=?{i -z51pgsS}s7>#fEXQS|kgBO(@lXcSXS49sR@bwk1e&e=UD-T9avGEAa<;Q198`dw}PN -zm0^c98#s%^SIn2^KSqHnTETf-$5?d1m2Tv(8=6~QkGUFYrg1a|;@t396B?TuSIh@p -zd7n0A3kk3}gSY4YGl)Z*P)vKvLnt-`}eFlamAW|54bs3ZsE(6 -zS*f|uS{#NSvaiBh5(g3g;(zid$N2~kIUw)-=^FZOfOwTl{tsT|mW{4PC1PMGN>$dA -z>!I^$;Y#V+f|Gg|-+_Taf>w}ljgmSKPOlMx|h(G=9uS9 -zZ6$iMPlyMXt9r=XU%NLq(0X1MM7%e#c#ZtSYKeNGw`2#B5RJKC+q%4 -zPhv3*=*%>SXi-~%e{>v4bs?MO)ggtt3cBJuopYdF^^$WoewpxXDxA5(^Hf^cD+hpI -zi-~e6C9dFeK4r(#+`_dcSgk&-);E?GYlG|DUqMF4g>rkjtGd+ZOzVp+59%9j#l~Q! -zJ19%A*Z8-07nbq>SZ8Y?!2H}f=vF^u-na;Ag>*=?2eb!d+Ej$)LVv;h+K)YL( -z7dj0_iVqDfNDVXjG=tG)^{$1=g$BxdpRaN%S{9AJ*g$8{uSoL3%%7iB{;WV6EI30s -zbBYO*v03o}@O$~Q8q0aS1w7of?M~;~_Jz(YFEiN$Y&ALnKAhRFNdo<*HK$^a>*sUU -ztFTT7cu3zsedVBkKh`3QN!*2h?*qw9vV2D+h9~_7d?9N4Q8KReD-$#=jKr}oq7g-| -zwrLFQ43lL(06(@I-fD2lBrTj-(BHuuj01@NYQ^pjPP%c4{6(yDeerL67$>74lfKDs -z-0ak~Qp+e~FOoGl<}{6QJyyK)8v}z~HIP$YT3!nu0<0CDz2M91@cQAiA>s*ohz21& -zJV>Px0rgJ&-G#rqvsWQyG5Cw`1NPWiCyAF2xrgcpxd%L;^q!LLfnLOqd)hPgRf4H@ -zf}q@Wv!}?*#$o)J?wQAQg3lW8)v06N9p*zupL>O -zMtHTa5S$PXI3c)dv&kC`(YM?d?Ehy9iA%^%CGDHE066~O -z)k6XRc>Dsqmt^AW*<;+N)bivXzM9Pd3@46pJ0rr4T}oy$YBYhD*BLBZC8iK~ZT2UkR;Dw4)N=96-BNPF{T%ER+lt9T -zPAN<(VcgSwsxHmCZzF$-WC(u}p9lBRx_l;VfGSEkglFxh(xA!Pk!?L6>qNi$BM~t2v~YV=~hf43ycEzks%L4|B8H$ -zn&kZf^vMoWh`UU7yY8I5OZGy~{(0!xE3=nAV8MD=x+=AdY&Mr|%7sM+V{R26!MplJ -zSC4WAf8Eys;2PjFrH_={O&J{R5R{IB*r-uO#X49Yc1HGh -z(HB1&ohe9=21?*6)-?ry#`1Qe3Hj*^L_fzpTrLM`+przq&@p5@$2KPpl}DI -z7kK*-le-rhT+8om=+_=A9^<_3eNHQMz!sov`NJz* -zu~gDCxg7b+5j$Ev6WRYhWR|mP8eWk+4EaGj6M0z--Z#_tuH@n2&p`Gt_KB$b9Yvp? -zAT-u9*6CF^9V)QXrO4?kI2!qSLVHqXxcN}teLlRVXexunt?v3*gw6} -zUUEj%47jhKQJLI^wn38y@rC6B?pu#G;2W7Uk(GEaaccK_DIZ>1f{xJZ-hFFX_$cMA -zr^Ouu`_`Toe-Hi|ogDV9T~~4%(I%J-@6{?u095eWz+2BrTba{{7tKPa@CE3jI*@i+ -zEJMxZsGBzE!6{`c1AmFe)9{Nt6HhPTsRBWrGduH^*&tv`qxkv{DJV>u%#;L(bQm&0i_r^Pzh -z_wkmD{hvnu7UIn}9Lf?*@32)F`{5CJ*XNPVSC_ASb!}2&WM$P}O< -z3!f67AnvpswadfI4u^%Gq!5&EE4F6}_JcD8cp%*QdE~~c%CLzczq_A^xdY1ZOvZ44 -z?xzkg6SYAlU_d!h8B|OJe*!k)+{EeoPm7xdX6!#Bt|O1b786?E1zq|=ixPL+L;QY9 -z{WS7o2%KhUrdP_mvQWV|Apq{|v-O9i75lchHw)h{cDWOT&lgt;nko};V^VE0coOY{ -zij2=9j#S|J08^<7f==-(GZF&|@&hS*fy9ZfN?A2iP=!abPFZtdJyN1m<}am&fOooro0b!N&G;~yjwC^f1*HhNjUXX=;Z#LLAEmr>To -ztczl$v{AyOzK1@Mme`NNW8ZJ3U)bA_QsdUtLH@y8h0Bq`&Znit^-M4d&l9p=e3^Qy -zk-z;J`u6%Quo{MpwvfKQNK#a8hx8G%Rhx*fUo!|FA%YHm4-Pz3<8DKnjP-IPy_1u{LN$ -z-6lU}{jhrG$j=Mp=NGV=ZkC@{z$+=$SPL-bz%Fh*ep430&DISGDv=q3TJ-oPFwwkbdSJJOGA8jyW{&v-(iyW -z5hf(fcCxPH!fGw%$@9h57;gLpA}tYaoHt}``C{~_?{#TaF<@W)XLwX7apz$DDML}% -zyqCB~<}%7UiFgz{80b>( -z?<0#uZ=Nc!FD+BBZ2d%3^%eR)++c&RkYnl_h3wGlf8l~;&1L(LF?%gk_nGbt;gvKh -z%k?D%cS!r}$MG&Em$c}g!jl$huh{o_sm^0$|US+r%*Hm09aUG58 -zuK;c1`jlaU(G*+>^N+&yVO$e&EyI;!Mf?d7o8d{Qh-{ICp|`$(bNe3S{Gs -zXENsa-K&RF%6f{CGV7X@wLPb>3soNevCMr)d4ZXCP0BBNg7<3=XJFTS0C|;6tB>xf -zTs5;_zAwgo4O8Yz#yWsM8nPSqK)vBSR_!dZsD6St0wRuff`_G_tvK+|N5FxnHd3pr=#=ZX$eQ**E&m -zV!T0>tl#fm>QV+ZXX$yrd*lM@e`VMLSU#pU0}hKXTgxwEwmO+Vh#Vw``{8#^89oMM -z%UPjIZI&ktZwu1IsmgE)tK9#Icm%fVsfc1R5#F@VizlP;*t@*n&tQ^aEeq>_u$uio -z@`vyh_i;(hzb5@xdYY^o@#*3WpVt2S$Y)){R>Lm$r;D||N@*WM)~uf|9t)~$DSuLW -z9aI|SEryiwbvtiUfs6496RSn5zPTZ$Z_8Vst5?BuL8ai3;o!9Rh{R0PRi=}iCOyN= -z9^ftCN4AEc`FoJJ>ag3V_vmU4mawpis_)g+8~|-o-an(!m8SI16m+{!BaXK&IHeIg -zi{BwXf764V{JJ(jGvy1v4!e0x56kO`2eFwr4copkau#=AJ(CXn=~Zv1z7(S;Il`5a -zbvqx~`RLBac9!itjfh0+Dv9Qrx|s)b-5@r2mkP#^fi^WWuX%G2KP -z34Ha>1XeM2(fhyi(!IV*4Y_uXpudR}O!)1rIj-W_KykA}|+FF{X-uMr%yZyeM0`3E%fmO%< -zRlT)%Y6k8Ns(Ky}oxu7d-j}b^{c?_VImRGI(rf{o|K{>7+tB}N(5EGwEUjC*;k=b~pZca>_du@%Fm*05@5!y7LVEsg$6RYs?IWmpvGnAY;x|fme(K|- -z;;kjMUt;xs>I;-aoBoYtya%555Y~loG=xcer*&vZt?OPZ<(B89xRmx2-`8Dqd;HDL -z64YyrR8+TmC*+|^8;89jy_7V^a#9<0{A=(9GgD^%Vc!FgipyJ9Rf&0@_;z0}*|KUY -zkA2`{-<%FPKh)t9-=|%xFiW06Ef&dhZ>op#U$pa5!C~K}F41O{eed_sETNt3FsKk$ -zRIx@b#)=sV+N`eZJX^tc1uJTCSME42Z4r;7t}D=X4m!8CFi4`oT{!+4+10IfPTjhm -z{{&n?%KozgWj`R5;&+m?62B9r<@mi%dUD4nK64k1vvtQmypMS41{x3BEZ9WTgRo7P -zZI8hAfOnC6EB%Kz1@EghG}r&|I_{-&-xru2(!|)-u#6zrJxvXGP3RoFnP9t_;Pss` -zG*G5Z1%wkatV|-kvVJhJ^*ZBG&J{odN19`f^mzY9Lq7DL9N5#QgU1) -zyC0O@>rq0n>|O@<4#Zv}yIzn(D-fC^yWf)CzlZy=uI=CcE -z-2}P9qj3k*y`ABh=P0wy&PZ|K&BjII)o}S4|QMFNBoo3a@cj1w^-45?~#{D{A -zkFTR_-0^^U#U28R;>u1<9gAD(;&5}G0{nrj*=l!}Z)e9-ZkA~A{ILwF(vb>Z4&W-p -z4Oj>q)Nk+-A)4#wFX?pJIx0t9L#flO{AOXZYV!%-Rp}(&1lyJ!#4F)lyb@l=D`C8? -z1$X%^wgl^G@BKfo$NhTwIWE!W;&ErGvT15gd*}U3uVzhMGTyeI`vPx*$DD(SE)2vQlZ4qVYU*ta{7&7!N+PXAguBp`{(Pv6~ -zpOz>tHxl(RuXOL~&m~}&6`i!rJ!Qwcx@cIn#w~lhVz+`4{XNtIZ$P|2WGoS;Bat%rN?FnU+x_s{dkIUj#Img?G -zwrqe%lY6`Hx!x{|78k -zjeEHA1_t+io?snfduI2SQo1h2y3Y1$2E#m>tEQI~UlVT?z&ZOJuo8igrk<`NNa>3= -z>CI2DyLhWH_8Uk!8Uy -zVVbK67&^h(1ge|Ku72*ZO(dIRwv~CfPI?WDcWUdNzhvZiye!joTAp_iM*4U}VZ{@6;~X=v9>#Mbx3zR{_!3#%c>qZ-fFS~~1t@r={mqaJD75@myYB-=bd(dTq~PRdftzwl1J})QRCTy#L9%Z$ -zcke*R7gXO})p2gQ;D*m^r(`T*gG1c`)9P)cfq})61_D)0f^DKTzTXMo&TE^Hlh8B} -zv_l`JTsftYZ>enW_fP+h0k&(k+q~WyPrdC2?|%HULAxbuM636)tJ@(N(UzPscdVlv -z?^0oPUx)BiK+_N2q@PuHi;0lF5JP%H>TSI}AD$2(*Pq4KgQFi1;>|yL-@~mz31ypm -zd)iKHw=uk&gG}|dW6YSPlC_!IQF9N}!RQjb^W -zvc!9wJ6Eyz(Jq27&s`GZ;kdauHPVwt4tmncr6Ur;4+F>Falc -zAl2`?>TPY_9c}eC1zzp(t_Qrj9NeQ(HVw)4DSQBOdLH8%rL>4JPaKGb@G2idHIKWS -zC5(5m5%;(nD^fk8&}f(2V>&*!SL4oA{Cg-fX4aC4Xv?gep{w^f!d5plMIpxt;y9{r -ztjQ6!p;4}{!9{cOOW(2UavN8NIS3l@q^KGrjyQ(;{pdZ0F{_aVCiiV>tcaD%qFT>r -z+YRZtBGWs!?k>T}x(s}5)kMb|F$ixIgVlTL?j&*ScSF6I5blBGJoVvoH}0&E -zjdpWqMOZtV!vlUjq3B7s38Wr7?XSsWQDvi?PkX;?-33f!YHGpdIjP^eyG8^#x98ml -zdYtW9+ihrTG2J`dNxLfMtL6uyPtdOGO}i>0HGPh4w_(l=#0*hYVMZVJ277j=5Qk5K -zXEOHaF5jCny#7PEfAddJ|Gr}<>DcZh%7rBiK7$^TQYV{EFU~)qH5@bJ9r!6mP-{iL -zs(*Mt^8GF)#7Xn04En1QJW*%sZO4I8s7If-dZ&2nZQpz25kk^}tIuq3@2U`K4$awR -zhn|E^He^>tnl;vAN1xMaxIHTdbhyJj{Z72Kd^?~eee-!p_4mm7SciFTwoo}&u?zj= -zt!<~@*7of-S`B{_O;}$QToSNT$A6|-R3pt4tF;jC}KyOqcCB21(F? -zc=Ns5!5Vi#3T{7_e-|-T&8>H=TUFh}uU-cT!VO4asFof#&cg2m<2{a9ONKUaF|%@x -zVxEJa_yn!|^H^E*il>=B5GB)|xMgl3_QY)LiF2?grXnZWbNG0{)fbX`uVIB!%1boc -zgkn&8GI|wpKR -z)4EkHkywE?-ku>gaY?FV?a-@d=q*Js+}C4-JQK8-^szO=zEO%viEzBUiVYj<1Xeoa -zZr5a6-|533&dBVHg4t)rn<)u^oD8%?c)~&kJC90fsnL$t*F+%h0GCVBrCexgl;&BY -zo1&MJU#K&BDReZ4$6CrAlTn -zRN#3V$eG`^=S8g2M>{T({ -zQdXH~2~6Ew!9AB}iAmki(8nk(jbzr@^mZ0<2fG31;d6!%E`jq@xc -zE2deZQujz785>~>Ppxa1gF6mMFr=Hwg04shQd;OPMW^l=$lg-!RZ{9!U?b7L6Hn#! -zw)V|4ZBT<7r@|U|@`$&-J;8P=?6$FS@hORgj{G)Q3GdB)CqK>8DI@BRa;MKgTbL0c?@$| -z)7N7?%fK -z5J5!_39UqKWHWwA2LtTm6}ymEyDF;bD5#_&^8g|AJYDOA)P};hPh&2fOVK%Bu-)a+ -zX;d!VT%+SN-%mG(&msvJnMqXZudwEg_CRZy<9S;zk4_!pvRFU!oxG{F+8~oN#rhH8 -z=6{)`@RXC3rS2LMJeFL9n^$Dxp1xV-uq@F}6D*L)RT$p1TalS2OG+I3!PmA+88n+Z -zeUpLhg^WtZnhPPJGOVJ%RrN}j@AqA1^nNmK;)F5p^o{?JB-Tbi{^To?5wF;%?g&2x -zP2F}|r|%zh!aopUon29D{Xh~y@iY+BPjR4v8deB8Rq#14=*mRSvyt;>k_dXMfp%z^ -zeGzqkpwoB!eVD(aeE#x&w;bLFx=6OHQrAiEk}Rh)k{KM;XF%P0MjDHpCm?4FC`2Zq -zv@{D>-Q`OJc2Lzk8?V0kD8-CYM%ja33VG4EIdqe(%V%b%FA+8M&3qZ{F`KErL@i4% -za?q~bnP)xdw*YD2o2>lWvt< -ze4CTUzD=R`gO7WY6oOm8CFhlkhF$1u?#TugyS7190|-TpwnkT@ui;-5UOIu7;Vi7q -z`JhAdb{>~505_26`TWdKH{fu9l9fbkl-3xxrtpwgx(;u1lHS23s}fpW=r==mTN%-hf-bFs5-G3LFt$%R+{$ltN;>Bl!OE314VT%K>Zn!t-1Yy{1OIk?A -ze3x%<7xxBuw74!`cqi>-?Vz2xph?8tV*s$3K~~b2rlg8T4d?n(1@xqnAbGSq)lkHE -z_KbQr$ta<82ATo0l+=ly@hwyi_XcFVgj{NR!fGj70#;64ZT!)O_9dr>-``AE~| -zj@}Qy4ILK(&f_gYoPz_@h6nF`1gmmPST8|zF_lNF5+~v< -z%@oP8#7i!}J!eMam7ckKf$ga6uUA8#)>zdWH(Gn;jl`KBkRZ6mLn<97aPI4+b^5Qf -zH%Y_HQy@>xj6V2!ag=8UPMG>^(Gf4-8N#8-$&Axss&%;M_b0yr*K4p?)e&Mo8u=Pz -zT{e5p*k8*FuMGF-LV}!ZbpYPmFG`2hV;vQ%1jsa`H$Y!i-@x#70l00R$r>A@#B$e$6V-ji;qu7UIUQ!msZ7sy&je5H`F|IjzO>7G4s=aGr2A -z^MKz6gbI=x?vc4wx7l~CV#smTx{=uFE1(hQG~_HCz%NqB_s%`w2{|C`F&&jI$sw2I -zmtu`H3O7%pM;h$O1$Ei5LNp$1nBiGpTZ#53=sc~mnce@YEH9l+# -zbMs>kCmA7=?IUk{D~k&}`TMkcaO3*OJKwu)ab+5XedK-E%Z7Y)4$wB;ek-`El53h0 -zmJZN{9IIa}tmeV(`ibxIbxTurUR~Z6raHDguWw}^Eo;4IC!cv>VBMYpSwDg1N1Y?#scFztM6@DRlT|Gt&Kl4P -z&6^zH+_ujc|8HNseun^cQRMgR -z9e#M-B!A?+=jxmvfUug79@ufp-0DX>X6H9pE(NrR@N}0{hH+ -z;VO8>Yzy!2PXlkN(?hi@yNJ17xn^ -zccka3)FG}m(8c^q+QJQmK8*;T)!gIxu_fC5w^eM!+IH37?kt_w36*)=eydEE`@X{! -zY!be&#rMA2zBr5ePpphwm;lddo-Nf3;&qSZ}2$ghbf(I`h-3GL*!p07e3wqNwq?fCgES;@HNj>v2~@XrGU@0a6<>-{CoVf`p^wWIvK;$PW!hK5AYaAGlX- -z5={JMfmMOx+Gy1vlwRFhe8#sk9YQH*(zuNhH^eQD5aQJaCz-GXGsZ&VQx_Zg6 -zfXRox@DATsoz&)V@C+s4&DG)imp=`)l+t{TG(Y&$Bv~(94E@!%g#W59wY}G`hA3^< -z$!!lst3JP}v^^a5!#8hlyCAn+7t;$N?;+&Z+b-15n?<(^_Z>U&W@#E(>_og-q3s*( -zLKb -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 -zCEnHqeBh>U%-);6LGn8_V*{YbHcQ*G -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 -z+%3ixjY%Fg(mYa3oja5jKWqI4P?n>lYp= -z#mM!x2y;rZvKPZAXBv`EEXrM$g%V1#mXKE*e36H>C^z>u=agkA?{<&0M`!c|BNHWD -zOb`p6%q>DSb9w@Yi8HcF#idG}^SZO?t}K$y$Xc?bAX{9NmA7O?QLdO>uwofCCkH`t -zJ;j9uB_#z*MO#*}xG*<&nOwxmqP&ul++}yf87G=c2Nezzm#kdcZOvX$RMc%RDJWE| -zNJi}wiq%jVDhRxIipv9O?EiPC>VZ)^O@5e2p$r<|o6 -zIZ=+@6EIA?GhX`Qk|{ajL*1itYd~N_Pvy!TY+y@QvZXof;RmP8NS{7VEXulf5GKe& -zsT1YFp_1fyVs2@6F09n42J53!CW+>x#6hKoMN6`tC>CL1hKFWPOouIQP$_C(m<=ns -zu}C(G3uPm_u(;bTTMSGTi_CIRQIcXLE5=C07^N6@E5>LTa*{EMd#qyIqZmou8ToTc -zqO4FYQ51^{6A)+~TYAS2Wri?H`7412hOj|O8UwQ}%gHKQx&U91n3a>G%m}nFyJ*yc -zyqr>Hx-DE$j0sUv%qC_`5sQ~(J((-!78Ml~$?lT8rMU$wN@ROZZgxRVcc7jkEh%_n -zoVcWbrXT7uOtj_oSo3mvtV(w)ao8}LS0yWo{hUu_9%LSc@u9}^=m-^cg4}kIZ1|tasc2Uga$qtx1cHGn7FaA~H)D9C -zQ37W6o15Y-CWVU&KSx=fla(ItvklpCkVDe9yojQZe1rJT0 -zL*_#Z=E&xhNt}w@>()Q_BAEimX~?8WD%Z=OpFtJJlmF>=?f!DQz}h$c?)UxXpJ9H9D1V39g?!&46X`WDDL*plFAyfp|8930 -z`3GVHf+^yz$g7ojj7*E-mRoR}n>MZ6!;$mkVoBZaBeshc8to56(`ptU3`7%ro%D2E|cE&`Qnvh#=*}qKjXNWfp;T$@u -z+g~=w8*)Zp$A1=VGg1-vp9+(dyUKiHwO}OdrH`E^}m-c7utp5F(G1{joKA8{TADM8; -zrde;1;|KZUQwu1Z!vK+qecB&iaU+%N4(`qe5vaUg{`3|$L8s)emE+MNOW{%7^=Vez -z{rqm@5XC*9JDi0FQhE(D4xw~|di;~+eByfC(+x^F_j6=oUaQEos`_imr%&k7&^*L2rMgRQU$<%MaS#86e|LDdIj$$(|G)H%4Up$Ym!O!m(x@NF -zr2gL0GakQ;hvh2ABa`CQ{~yNN@qZYv*&lDrz%c`CyK!2|`SMsP6#fw7{pIN7@Xygf5d`BtyhAH_%i@3iZhWYc|@r!;iGro_KuM(eNHstQk -z_syPuQ0m3w9zfyExbcu#=r4a9r?}(zVa?><#w%_F%jIXX2su98Pbr+|6n6xt#Q)0g -zrh}8hO>B%Dzn4G$S-(4%De;GMN;reaFp3|F8!MS~u8?`m?;h!of5Y!)xQS3W&njOb -z^SXb$4n25H@i&x@BLAEI{$4nwL-7wwi6Z|_e}6f`CB;9gER_6jFg}{heIYkwe+HZ4 -zuhfV9X?~{jzdW}%wmgF3(Gf@C5BbAyt*>8(XZXXr*Xf<7a#2J?*~CP -zyX%vFKq+UwKVPgrHN`)VsZHfC@cWCn7mz<7iL%+w337ODPrC45~Bx=Bqg65zx%Y>GC--9RW2u;rORgb -zcwEJLrhHd-x5H?8nc{c1=N(K?3jb|Sx#ELLerh?N)9U+WbGd)NF|SbKKkJWwP_NW` -zLr;3AmhyY9ySxX*2g&_Hx0~55O8y2p-%G+Jd7h4)s^nYKlTVIZuRr?TJln)mKHL26 -zb7()gU-!Ga>-87E`!w!JR8B@;CEnls{@vqu*q^?k$G^M3m2&s?_cM+L1QE|DO -z0AoGeVQ^FX1>EoGUe^r&ZucU%yYIJjW2W#3f4J7~F2_bi@o|rp!`uDteQL#>fDWf{ -za#MbYCcDq!;Y0aRJt+KJxG9{@NpgSh4>$YWKu62rbS_c2&mZ3HzTpp#^M`{rTh71R -zt%aNNCwF)MtXghoS6A5C)+g<3GtA|sb{4bJ&Ypp}72luW*Mx8AAF-R0Ux}SP4%7E4 -zV}Gr~$y3W%F}}}=5eH#!!@L{mUn#P)DU=Rh8NTuCJ*jkn??;k|z5@bk#* -zzr;Z)zaReYe~c4JhY9^@klAg2Nqxvs&jRsh5PrRU2ktdPo?Q6f;{@VVN$vdAIPT#b -z$E7QU9!`cli7AY2c%_9|#scD$g4^8Aos3OTaU9kQ-9^&wS99EW#+<)NVf7O=9ES(R -zlSslW2BN^+s?-4x6jeK`mmX|~M?)>fVh4J0_ -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 -z*#!kN#85fe>5zVoTl@FPD90#GsLFND55GfULn -zz>z3u@}qF1kU;^)yqRpsDSi+=rr#Y|Np}~WD1$cyn>0oKs-n@O(c=x_?!TYBOO$Z| -zmY%N#zZU$H_uYThW9aXNgp8z&q_Td8y`S=(=&x2??j0AYdQ$b|Lpk0{KHm88 -z#$QHm@ha-3@*B|88WI`y;E;@@zZ5+EOs_TF-w=)q$A?cW>PDfgA!YsIB7YgV-0+_1 -z`3kVH%AO50dL(+R8FTJo#v7|Ns!N+=h{OVd?}WY|gf)c??^_zyr*G}> -zr^iT>KTPE(-^{r*R5PMi^x|l4gk$Jq(LWBqFPc3(H*@P#&J_=or5(t7^p%Hyc=XGM -zavy&C(b9*8J)Hdz1}nTb;IP?S+uCp5a#|sMhTg@m(VB -zEv2OdJH}RlotNn_0xpn3Wa@>qk;K1&!HUkkkx1$UH6xtp;ex+65zip*O@W!&PW)mt -z|Fcxe1t&)GI-zzM^hq(rx5PN#LTpY}CjK^iP%8M1W$I=RrzD1LL;Qv8HQI#Ky#{vCb|1OYVX#JD8LhzzS5 -zJ{Y$Gv1%2_2TB5kKxv>XP_C5^m5-Na%c;I_s4I*;B*Ul4Oy@lz6&;*7>~>?vn*(5X -z0^k62YSxewyj{a4B}l3O4Sh5$602BBAx;F56T<0C)^}oB-w8Spv|q_#()V*%a$ycT -z6`#Y3d~(=~hHSQOcQ*TZ9+q=QWn-ZU@J$w5_-Yn2&&p!I{Ua0Obk{s-q08bd7qdgGP4x|7XKn_p#HK`@*oMxa -zTp2rq?MJNo2}_9%op7?n?aIC6Om -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 -zw2S|{c-OSL;$7qE>fROK%6?#%{vh41G@O}o -zd^nrMhBGh8D%o&$1GZaygzPLEAwLTm(p67!y)a(skb?LSi)^-Jxg!9lzXCu*I@zD4 -zmCt^5=7Waxv%P>b+&2injr&Yy67!YG;$>l2?F&PxQ#*SfP{b92<^*@rP4g;?>!hK6 -zYad`NHx@LPxLP;O=Ur$>N8Sa1FhyQFBwonxbf8;>E1iJESvJV97aIlLQ!RPgL8m;h -z>n7Rh=m)v>12?2o6F)AVKjLZ~h1ljVWDl|Fjt-u?!M_r4kUN01KI4wKX(qB9hnC^W -zB;*TKg&hXCc=qC}+%)gA^iG;i-R3Ty5zJj*JVd>l?04sjoPML#N2EnMzWDq>JYifI -zc=TX1nBHp+d(*Rkd3!EqOFfENv*J0nK(UFn%eS%TSx5_l%(A?iWIFK5!`ai6oKRBzc5;QZkzxEGb4uS;~FOS8(t0pK+`C -zpSet|7wdR6{&c`H;j$V&?}Fl6z7*8O2sIm_A3-dMh;1lh4Mprqq{4B>1uIhh8L2mb -zi!Z^=ad34I+`S7fcY)h&;Cd6de-61QMs5}(R|Ux39OQBaYxK%sZ+Sn)X81hJqPk6H -z9=;R1v{qf8hVSW(^GN%&;PRj9P)U=T8LKtBM5yb-n9J8?AH8rP{v#q5j(!Zk8KWP| -zz?|%F}T}bLz -zi()ljVeA=pKWb(h8-aI;2I2L`CA@I4I45Sh!3dMAzz;iBZl_|8Q!E8!2xzG7wESNJN1S+a}OKb`NG>GSMxkw|!+Pv7(d$?&b -z*$#Q8n`UJvjX|X837RJn&jR*7z!gt}o2D4=g%u+$6==qRMvXN^HETv%jQb9u9pG8U -zJuH`@R|y171ZbjB9?{I)Npq_U4ZZ+`H`890_h$?7wVr4AA&^up+sJ0{Npce;rA9o# -zplM+*%cF4TAr^x`vy1)A&E|4IGX{Ohdhinhnm@~XKEv7!XnKQ&kdJ -z&@%90jc@q=?)Gv!oUYH>AJLWrBkhIK@}Fo#H~xS&bq~_#(KhaCXZZA*OyTL> -zP3afVLlqR#TdfJ}Co=orpZ`kWzY_Sb1pX_5|4QKh^Aez24y3q``4j7-Ru&o#GqYLH -zhwJC%evn&Z4Z7huq*&kMobQkxb>x?C2^b>POU~^!YAp)MZo_V4z>oyof4SQb0Jj9u -z&DYEi@jXY>A6d@Y--wjzwHBu&!NN;U!p3VQW=_kQl@lYiyNut+a;RVF>c-VPhP9i87r#1H4i3yuKIe?LxvM}g^4IGH=VPGMS4%{ -zoiGHqjeTN0-xOiw`hEsC!OTT_50yrk>senlZkG7O+JKwyTxo{Q#hwP{5U~gRCa};X -zjaq-ida+5F!f99HJ`~osTXG)_?nGcmtoy7h?GclXTNM`EeX8A^gm=I^;xcKpBaL<7$K*7F;Js~$Bg1dOqCa=yLpOA~&k0J!U=S5jE -zr;*@ZsFk?+fD5JjqvV#qSK;1+8jrq=eGIzkazXF?tvr=!0*#+oziE^vt8tr~7Tha! -zPMZ<8B(j>Dh`*}H#QanJ5BMAWaeGqt2_Xg{`n|@b!tQwcnUf)5xUt?R)g#y^DbT>Q -z5`%Y=Vx+|2m9+AzCzBXFlX!v_Hib8Mr1%>S+jP!EL&(w8xTy~gf@~%L3ITJFP92~S -z5DvTI01FLJAGXCgrKv1bWeCt5v5svzdR3vTwO%>EYH%{0(T!XaLk8%V>!p^KHvb7~ -z1KXc=Z53{XWTA&`VNTyPlRnnq`+%`B1ujRdeVWupGHY5!69aJ==W4B^$@+!|GS6DV0WtAJVO>WT7j; -z;oln>Zlx0T#@mJa={CezW2iB$*^-6$+qg)zQBoHkdfayDmehRM_PDdJArdiqx6z$d -zBZ2`>pOq -ze~zJToVM<^abkOnY3e4HIkmJX#EsUF!RtL!*+vdGD(`THS8{5;f@*2Ct*Dx>pnCc^ -z(!%j)W`y}B>TAJ)nADgF+~yd>q(ZC@k+)xyD))Sl5W1& -z;+TBjNKgHcB&Th?qt=>kskN?YW|jiG(-!K$CzmbZx56h5m=JD|TV}SZ4Nlt@r_=U6 -z?!9EFH)^BIa^EdYs@fQ2bgAIdPD2P<4em -z6t!aQt#E^Kf2h6!^?5b=Ba6py*t_bm&2ejp!3THCnlewoHxm8Y -zQR%*Ye(Lhbks0e?%u7x9~SKs5oqyfM0}=L6A3uPVCVDcYztsEvyK -z)O*z0cSI%_IIRi&|Li&4M&qs-j1NA^pu6dvT4waC)EG~IMs4J@L|be1Y>_7^k~PL! -zYkx>C4|RdkqBMUk!k#$HcdOR0j8!Jw3&XSmdN@zS)_N25LVwb>roGPnx3Yf&QJwTQIQkI-#OmhmB}y|Czd5;vNLq~Zo7g`{0!AFm%^*5ckT -z#ZGYO!TJW-rRsa^9=I!vujAC!wt`k}xMHxiUX4*N%el6yTPpOA>z{aXG1BWE5~2=X -z+(G+F44-9k};xM##dXV -zAF-OV?ldSZN@pzEU|chciaijYCFr@VoW8u-6Ll=6Njn=$M;EyJZS}E7SIkPVu!I$v -zdE-~i(z-GGfz?K-o(uEU%PhV!r>)5u&?dX_ZYEyr3X_^&-xscD8mFz^$qoB3-gd!$ -zR2(nkoVLr3zz2d-FWK`P$gQ%c?BG_qL;T(_gOs5~EuePqb -zp@UXaW8Hp34>#|mp>SJr!!s!gZkujA1UEIbt!nF2H`KT%75R*-v93A@6L&Fn$WuIY -z0=X7rg)<&9wWakk#wC-~UUBMD;!^h*&jjgGwksb^;7XoCN#aH^PT9sau8Zd`R@>Iv -ziE^@IWa`dF!7B*&-F6$uHLO-LGuIFIZY!cDOfY8|xzX|nu3@*)zlv(YJlqWCv}HJA -z(Z9@cK+6+dv+Ss0{Ygu6+U7cx7)7dW)9sh+OLx9*)ELjg8o_w{~V-AW&AdJAEG0g&#%il#ZaOw6)B(F_k4|unrQEFDjGS3_b_gI>9`Lr -zkV`M81Y?#Z&1rk_n25b7)&4?4*1Wht9yv3uqTOnVg+5wionpyO%}M!Km65x@y~&!Dq8Z?C$a)}aq9Bg3+_%w2 -zhTG63Ehn;sXxs&7jxSkfy`7 -zT6>hSSZ~N3XjJyqgiDdaV~B%8+?<&gQwTPeQXHb+lXv-X_alAN<@&?69rjVi&#p7s -zzP9DoGF@PweeE}zVpBPcpOn8{XgR}^KG$)EPMcH_K%haTS@cQ0v{bEkL)U4JAC95?|>$Lsc%G9dlBi4tks)^x-Le!ZW -zYnn~1A8b5kec5)P-GUKv@xpNl-BaIeY0K$_k;AcKa1>r?L0>#J-k0eB4Kl1Q%JGT` -z;7j0jfKLG@0cQaZnM^2VDfYDGTy@Cseh4}HNdEUS)MUKpOB$Od(P9Hw$495nxmlat>1_-@U-BZClTcGnTfb|PA%%@yQb=sU-Q9{}{i;euo2+F;ZuB*&l&{z6t8imHH-b}F -z=&Ec>ouAoNle(GnLO^pvfibemh8+gb%y*u%t0H?Rz#p}IB)G9BoVJF$xjAj^2|jc; -zxN4UH1UgNi@bEmDR8ijC~UfR&NUeRn0Kh&Zd -ztFDK3iPD|X)KDe2Sma|pe9hcg`H*`v6z9B$$m$~INSbw7`&)GLS)HuYox$$? -zz5ZMK)hMk+DLDo6u&rm89DmV#|3sNS9P=D+XOy1Tk4mbxdWiB`-53k4Ap%-ryv2kP -zC6h-9V??x@Lo;*x50qX!11#R6%Uwg}t=Z;sk7!K;R2TIyM-7o-lY -zIMZnx>U7z3H~erfGe#lNPj_PgY+>Te&uMFi4jY7AS{vDZlF!ISDyJik+chDtxy~N2 -zQLeAEmzszo9D4E!UBWdF$&!pD%-KJ&mqyY}@TaZ0&B(#5c--?Clu5dNJL)aovJDM` -z{xdlU-$92ddrr#ap|$omy6f;;j$1k{8MXFLyQ^UPvb!Rb)70AQy30a6NrQu11>pPc -zpK3y2mPXauKMYlCm7pkDWNo8R-f3^9O)G_EnatBLi#Q=r8;|vA8B;caqF&Nd8?gn3=QE=ko>eK -z?IA;%*$3+yu}7DIMy6e&z3GtKcrMaG9iD{SV -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 -z*HBqs+0A&ma{qH*R28g~SR@kk!u6J1Mdb-OxS -z#>a@{I@TyayRWkLy+N8vVja~(ulh%-WbK}o6Sh*jTpwGd(}#jWabq}YG!B)SO~_Rk -zTE}7Qyk>5@LbKbDwN8zlT!|$4ngqMKf+TDCboh>KVOoms%2VF;(0g`beq?$pLugd9 -zkyuH15G`(olQUm8W@SWBo}wd)eYaz;(M-AG@JqW(ju%O)a&do*4IEs@!XuEA0T-3f -zI+E>zUI%SO2?-Bq{>2d1U*0Zjol%?wony4!q>sd!zzN$(d&fQ%3rzu60kn!>7uLsN -zy)zm-ggFOcHQlwJ#UaJp`&xMiWO_rTV4Pan_qivk)W#Dwf9RekY)boZL%9A<={s$K -zHGK}SFs?+h*;B98<9eViPTO#&fZZym&8uc|rDOo#AZYy!60;;K)FR=!i);8|2~tlR -zx4J^A_r{vbMSG;Fr`~UWa3$?$qcFwM=416I&J5j6;(qjrQ4Szl#cT~vtRC0 -z@3TEz&u!+k=ohz#>Lr_{W#|F6I&C)`Bt?$NXdEb3Vs5*!@?)d6QfI_2H0QLv>BL@r -zr2#etY_DSVfc8O-+je3nc<`^zIJsV_cFkUo+crA|y&d`;$-2Pmm(t&mW8g{TnA;)&HXV+{HY;Iw^E -zW6Fg#vQ8)JB&Ky=yg63`SY8x_aHNG -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 -zOM)>n?2I)SXx_0<( -zUGi_c{c(4tj_41pz6&-Plr{>~6!CK0)-E|6X&@7~4M?T;x?qK&SLbm*g7L;ZXobE= -zzsT0}MjYB=(eZ(xEj|bRupQ4Rtgls&gvr1_?vKFz2wYFw5$+w}z5~wRc7%Bgn6JBfw;k83 -z?aKd6+tqgY+iuIPwmaNKZTE*>ZTBJ4P}`LR+U{Mzw92dxwB4?*$(2QSwB6P&CjNKL -ze`*WbIhUZMg{XJWI3nEh!2PaQTM#Y}xJ7DPXsk4nuxkoAz~!iI0USmW;hqKV$u6SN -zsWk}mG%%TWw1uWuTg?79Z80U#78$qN!V$ncnA$TcMs-om1=Q9*j)n)?COOa+gV7dA -zceF(q+9H+OBCrG5)ipE`rQ^D8?b74@*onZlb^7Ue+V3*ewBvxi(P>-xy{e@U1FC`6 -z+N+%m=l?{#fEF!?wtyC0F|1OvC3}SyYo!jWq<)KarD03JyR+>Ps27y`)2K65T -z+COy5)m44ASXYN_iAeicTGu+ca&YRfeO>a$oz0E@^MCsKR_Hz`WUy^S>_;9)vyNbI>N|5ccP?HIU2d&W{`a -z_vy+e^>hXO-&y%@VmAb0pXuE3Z(`kn*o@ANffBC?d`svo3}99SF!y#A1Tf13n2DW> -z1DGWNOibsz#;poh`t0=`K}^glqE+eb6~uQzOTjzsx@H>fRKY3KYY$!5K7{kHEmmAXJ)|FTAm3}y1r?2))$zFk6!uAvdr_eu*1na6RYR*W5Zz9D?`mS~Ll~ust -z$zDa@oCZFtOFr3Qed)>?+Zx2I*{Xz7erweHRtNH1jr`VLd5Q9Q=OrpHQoKa@VejX! -ztOa&$a7q>)&6cs?JFx$EoV~gSG710bg-+~?x#*{=qcMhG0mmz9qcDs8G&K+0T5!er -z>b~KpsH1>;v14-OkW{<1F{BIp|GujhoYnaGDw;z?31r~}z|S=jcWYL;M$G??tyd>w -zyzRl-d<@T7JT+L88}R%SPY0eauwIv7{3T+&zKpfK3(qX1`xtBZufNm7C!ya095(nj -zmABp)0sak?Je3Oko7$@zBf!4}I6&}k0gl>ui}y3#;{7lW(e6DpAij51pax2N{Qs)$ -z|GQGm36$bcyLjdQU0e9&3N&vvMg(tJI-Tf4q8^sC_edA~^gsCNfQ&&Me*qbT<_?}% -zOFZ!{8G{bcNI=o5#6b_p4rr7Lk(^=-pwTKsT=rN%F)BoS_INB!vWj0Fh+T!4RfOd>Us=ts31C+PyPB|?%~#g&F9on`fL%jaoYKF< -zuMJ>d0`?`s>Na0liy6-X__e^VCA@w!NgvSSffz`77?%PW1*2F4Vn=}1+q{|K?He|KIBU0P3y1d7n3A+|&mD*deZ;C~GCa^%Hy_U{TpaIzg)L -z;XQz_DSll=iYE%f8{j}ES0<=q?*dlw|Gke+2<(NQL3#)elAAf$ZH8|#?^qS-8@;9_ -z>%DU}tIgmK&)V -z~wsQ6&K~t}>hd1bgqv7>PZ)0S3iJ@#y$)8%?j~j3Fw?-K>H^NgIBaCH@B^M(bBTQwsSH6q< -zAu{N7IDStjD}Qd}pq-hpdNsTk2VV+Z&{4>&9t5knAuibbo1rPtg?~OIeTZ`aEF(_H -z6FLp>${LI?KVUTMb -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 -zD#}ofiW>RNP9yr7NN=@Q -zemiv?Bx8rA;?|kqj*As%{AluQFF)LIT6tQ_d4bUqy>VDts-|F;V#O6tEAcd>$W>Fg -zw3Jt?RGR)=UU~8#(zn*~(U#~vO(s)$ZMk42{m+UJq@(YI+)DbwNu6 -zXgTg)t@C#Jo;gY5BcxaQGf4kP%M+kLEAch0la2eLVTRXa(Nr$Rs&_~-q9--z$$_nY -z|D#myf3(~3+(KxK@p2XX#pu2|wLjy!*`9LUH1qcNde7gp@T=XkuTc4-T6(Y7y=!u! -zS4t|Gp#>h9-CV-)c|Qe2RFm!fxhSKUfUv~HbrN}{zeSeS{rKi5ujJ}S`(lt}lUeqW9JO}p-`hvBm? -z7Sb!!b6br(v^_CJS4!MfsiNPht6*cM)(^pK#cA`eDCRM=*7o||P<-!I2`O)l>E1mz -z{#PlNOZp0p3*1fZXpGZb%->q<6S)Yd<8cEP@Xumm0&PM(z>@|)4}kkfewACs9pCNU -zFU?X<4<UFo$`@dmA -z-L%eF;bDxO8hK_{MoYW%sPqXu(>#ebo7QGjWvt{kY9Qt%Xp(0Cy{66vfQ!$H~*(T$-Px> -z|4#8iGx!l`HOJs~m$8?7a_?Q!^#7InmOFCq-SP>)%6$!T$F8F0?w9^09wL8lurKW( -z89v?JA^9joK8byDVKv<&MyoXAW3dLsO5|OaX0hhxXyMd;@=mE$*FMgwx7EnAJIEvL -zVQH8&Gm!3I3Z)A|x*AzPtQE0gw_?9jWA$q6WW+`x*4NzgZoL|7P-E>K#P4Uc6l7<# -zB<9q}uebYQXL3dhpHd_Lp&ji9Su}B6HF8NihcNC1LU>&}tMc!+v~-IR`Jgq-ByY30 -zA)+;xcctL&Ha_swl0Q}Wu!e6mGk;L7S8(cxTZs-y|1HgR^6)xu@*I?ZQ=LD9xQ&DI -zq;{v%i~Es|%YW&}aqVtpPChFlg0t;*+LoJ-)2OMFwn#(y8u>Gy3HQtmwerqG(t8r` -z(mQ?fWuFdrBay@=F^P#QtId!d%|1wej+Bg0y!oOut(jy0aMj5BAbnj8|BqZKJWzSL -zxXApk_NNF_3houS$tOMcj@CADCaEDVf3zTAbZU`eGE&SF`YGJnQ#bUcs_6#2%O*58 -z49SO%hyDlG9#==iu4MgJF$Gbc2|^Cu`kx=7134Gknk_XZgiO)0(+f>_wf!mBFE -z6QO8!hvMPl(r{DJ$_UEQsBm?!PJeu;!P`&41><--1aCD?Kk&fGvs}C;p3emXLYHu^mqrZ2L71-ETNDJeg_*yOHN9R#X -z53PS*CoJ;RD_=MmPA<+W=XmY&I7@3tdcG1~!@vb%FRPR87r~{zH%&3!YY^sRW^()b -zh{l_{t{GTHi;q7b_XFn}i*zfb#^;~%K(fy3ZmiRMrJOTcpWlrBaXvp960Oy$f4}3< -z`(^fw`gfmSL@6C~VnW}wso!wdu>UWM|2mh|;a=PZ9!bO{+PolF0!m=gT4FClgc^0fY6OH1w4%%&va3=W

    U9^U -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 -ze#}!UW@^GY9cH}W%G=M7??wCY@7q -zRamdyww4QcH^+NSVtPBp??!n`0dwN6E`mz|PY0|KzX4x#TA2>`3BX@U)wnAiR0v>) -z8o#E4URLfNWxI}&b_iAlR0KcZb|Fjza8eo@> -z-q)zGYvMU&p$bn`;e~+nRrqfzoDaBM%|BQDUOC?X9=&4}$Ex-G9=%fxSSLEw@)iRw -z0nCYB6)pjMM2$~W;Uj?SRCu|XUmf5Yz(z4o?Y$bnnI?jNQsXldahsbOKR}_j{1owT -z7)eYW&~*ZHM^PfOX=xYF$IU!xms4`mSs0}T*}a~^)^?TvYHPbqq*>< -zBuLTTv&yB+0V>58*%Y3-Nzp+k=#UiN1PeYzuZH{Jruj{ZfsGfqKNmdyr4%DA-+yg3 -zmr#ZKP~lB`T-$!S3y^tDye+Rt(Q)7~YLl_H&cyQ&9<8fhSvDg75PeB&JNp7bIw5=s -z{ZC6>r+nz3kX=}(eB?MJeJv*K=drR+1*KV!a0)ychFu`-C5+|~@IUU=*bQo!Ltcan -zUlND%kIXwH9T8u~_f>k=H$H&-2spipn~zf>tYVfT#bB|xux4r+lnaiC1*OTO8?1R- -z&^{*nh)WfD4Ke-ee~dBLm&SzEzZw%-zbS@m=wln`EsF_m@F*)C$=6t;ZldiU5ZRPS0>~=+{l;3C4H^AsLc3=hu -zF!jJp)OxYX_6uM>0cNVc9GI{G<^(X8^qE*mcDsUs`wZtG*gcKR0WJ=@Q>->NaUEOl -zD`Y?aQplRx3t3^@I`;aD(EmK-vqJU_z9?rzu~KV=B#%@3W2AQZUS;NhTwZG_Rvh|b -zW!}VMB|Eo4?HSzqIk4Z7y-M1ndzAkyuU@Y4hKDuWEb=M*a=vT=*cykaFWyI2{8CmPSy++t-b{s+&sxJZ&xs667BnPY($ -z`$8qzVR02IDeCWeCxxfuw^-?q^x@g3mBe|4$`q&7wNBaUpx>M7ucH3$R(~hOT3y@m -z#Yf{I3yI&NWSCzuM%1oT9(HJL%*sUJO|s#ed{(iN^jMKHaF&hAiCY+-9=unX9#O13`&_ZI`SD_9_v1y1fY>5shWhKo -zt@fb0XV9H~%s#PR=VD_M>WMQxDcHSOgEUiwr0EBxf~ITW)IW%WMzY}%Wwhgw2L@th -zRK}%D|Lp?q-rwf@Tpa-^cp@m3{}GW+Gg@#*>HyV?B&8KMz)Mq*sVUJ!Yr+x7jt3ep -z`fs8TH}w1~xc?Bhe!IpBChyn&??xV!rZy!eBzj1voZfpQxryG>@zAHHQg0Oc;nva3 -zg3g887<}5h^xuMN8Htp9f^ZK?|A94;PgZPhl+?;Pw0z0}E@SVK_?rWD{XScf1*Cs`#tI?>>+nRFNnw%?_@RvO_B3b3k)UPEiuf+8bvyeJUPt -zE=7Jzf&CyZMTvG(J-LK1VOw%NN;!}bOdO5T6^c`!a@@XIrNIpf;ECQy4ygwftMWws -zypXMDg?SuVoc9x?FjTm&Ik;1h!s7kHKt6>7aH}`gYx}i^)*l!Phn6zvkTRU8xFXYh -z@)tf%c;XnX+gj_ObiF8b;;vv7)>y*<-vE38{a2vVTg`wQ0hg<=!P*D#MZiy}u*n(> -z_$}B4(4avI<{iMI(8Csw+r)D<1!!mifU#H^Xgo0IzP46w=+PR7 -zKU%C!XuXtrCGinvq4RCr7_!7J9FYDf=h|?E8T2=u4$KeRIpt{%lGj;2=`GoZyV~?v -z_af#;y8bRNZZ`_Hyu~jw%yVHG=$97f;|COz`!3hF5+{A!%0H`bN(?g9f81L4tP#KN -zX9v^MNWPDNaL$CaVZ1lBb-+pJ~*4861bSxH;nD -z{Pk5k7bW4=-4TN>F1jfn#K}8vAZgQI3vvD>7URy{dTfwPJPBAY)*!wBnQ=CYBj$PRrvcZXoRb9r3%kPZzqZGs^PtA_$@X3g&N+W -zhR48@XOdW^hMj77lNw&$MI2y~_;R5ZRQ79zV0>>M@mgyBFBK9_V;KYNTfkPT*yV+z -zg_CI~)9Eyt+iDcUl-l$m!;GItxi(!hGLyv$Nrn#|A#m0s{+@K##K=xi*lLZR!dDIA -zQ-Bw$@N5(Q3lBA~Ejdq-0SwU}pUX$@h=AeC19@0-w} -zP~RF+_=;MNv9WqF8+pxCu~BN?FQXg}s_;O-deMuwGF8|NSR?*~^wU*1xX`BZb$fZr -z-GFgXthOjq^RYwvmn3#VW~mdC5cjD1PMZqPfz&WbY(|)gb5QnWYTQqNwc=5Hf3*t# -z6R<%%jas->_zGa7SU}@Vg)gb^e}#4`QQ@!E_a8$1Ybso?rXPv-%T@SuHGK)bSE|CN -z)%XiYzgvY*05*tYQP%I(dK>`^x)$}#RpI@Bb>c+4?^59p)c3zee2ohK(d}=KKk`(s -z0m!FB#lL}cT2Y7hj;Qc<6+VG-)v0hPV1xJ==EbKfyitw63;FI<%T)|mFTMl#65>N^ -zm-CEY>4m&4|99S`=5gj_2)~~H0>Tr_&m&x(zX0J_vkT!J`EwDTX3oa%4D++V?9G4L -zJA$9%jpm>5j^rQnj^Q8m#_|tCFJgyd9h-~Cg|+UN6CeKlfv!UO?-R$T;O$m(65j5} -zzt@|<-{U>bPw`ISCwr&z3Eunoc*HN_9p3x-@!k}EtT&Gz}^=#v?g#WR~7Ii8scdxReo=E+^D?j`TZbI86tWvu;}Ai -z;P>L5e3CG-w5~;$z>jMMz40`s6~BW-xf>pKaH}@B5_s`dxfW9btr-r)X~f^R+gvY4 -zf*OWY&*{>Lg@8#8aDlf$hH;76QG&N2@gUqK9$fyzWT)^8?i}8(+$*qgN`nO}#=(bq -zP!*+}yh;iC-O<6!Gvs|3`w!*vy!2w!kd%UX4ma(~tjo2(iy}3(q@y622O2KYk -z2-;jOn6_M2+*P4l`)m!{S}hmcoQYG-p*x3FkiA{78}B6}D5r4ZUX+FHanl&vHh&0BfB~j&+LDoSesOf5|fL>{GVRxjpR+B}G~e_i{!PyV^x#oc7RC`p&o_ -z8|0E`!S=n1-EdI(i2IAYxYN(C1UnvuOgQ*GTQ)zxReBjVsP{GmR~TuO#7+_V?&DFu -z!7ZeFdR&=`yFSn2{zb!trUsn1EIp(AENIA9%y}KZNCc#T1(c(U1*IlUTBFK|JC;~ -zW9xs38B_mt%qX0YZCJ|1JaEB=lsnfB{^~$$`PyL@l9~ti$LTcI$x`sD&t{J^{^O~2 -zENP;SU4R_*#Z->bys1DOy*2Wi1FaQnHTZpZEw7dbHq>@o%c} -z?*RUz8oyhO-wU{sCtuQ$NWBkGX(_dHD`aTPCR+0%3(WJsE%>{f2G}{N2xpa7=JWG) -zv0Cwm4qG15?4@3Ns`GOtiRoJZxssnhOK6qGiw3KG*et<=JCObTc=qNgJ?!ILrPq*E0(;zwxniX+}nyN_H8BD!nNYQ#imXTQBc-S -zTi#ivlRu>>ctrjz^m$GxEo5;vhHK!gb6zyU5|3ndeFwa -z#zP}u7SDO{%PhDDZ)og!N!J9KHg*TT^c(5ER%Tsm3u*$rQ^u8s3qiPr{+ir`GsJ(% -zO}?b&FLF*RX6!1skufk&p9D>ruhUp|-5kpg6rcEpPH4O3H+;}FXj!?`c7=9;Calm; -zbLQ%#<{#sS0D~JEaV`=od3QHYT2?L9Ug03q`ar)P -zc5{@|w;g6rQuEL8vey8+G$$+*vmM)DrO4r~!Xzs&n7!Hjd8Nb=Y#rjxXnAzW9QS#g -z#B(E0Tkmquag!AHpVBnR3MH&>q{hNoi(28&MEl*y*c$PN?g;dF!_v?)n-`~)sYEdxkiKur_h^L(_13*1 -zo}sB5pPpru&qG(ydPM#Jbmc9Va$cjDEVoj&$LU$_X{3OS2L0;2bIM_qc605iJm@-g_KdKQvvBGv%I> -z&>`tVuwxEMkHU^=ciE87Y@bpckq)T>;K6C++43!Did9yR7KU1NO(AT*bWL{5k98UM -zU6yyW+XUmjZ&vPmno9^y`F05xKXhChPJF3u@2e+bVK{k$txaeVD@A!0{$&F@zm;QD -zwxh3U<$#6O4L;2- -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 -zT3FKO1)QZ{yGHIaX2$g}OMfa1MPv@Qa -zZ0wa!=)cV;`Ffa!@_GSzWm0)o{HMIqR@^Sr|2?lbJp1>;x8jQEBB -z4g4Ayc?~r&q7%N^SH$kcBQAmdIAk)ddy3RC^yE8`=Tw5vf4_+R1GqZS3N*g*58Wla -z`pQ7u{`;7wEICv#T}W=8jnKHSlAAN}Kf1x>O>TA~G^GBa=GNr0WWHgD_rG2t>H1>v -z9*noXus~caK7h~w*obOze(QF8tLuM0#-+I@#u}c259f3SbuBqM~zPDZ^?Xe3@)U -zNDgJj+Wgo}qAez4M>3akP1W%3>ZN%K&L^-#r(hjO#WQe1 -zF*`rLn0+{^n7x9q`>)uW5vH<|q=6fq4@=?!g0W#R{63mte|f|a3=7))c^R1h8<+zUM+_Y3|sNzGh83K6|f|MCXrUdSg7x9cys -zZSgpzK+-U8E`$2;-XsRVOhvJOT -z2pw7r{&fwR0X)T(D$DU@op4XJE?t*8#MLZ0C8G0yJwBou3P*UzE>{oBT$2zCOGS?a -ztFe;1Qeqa(bC(;m=WQkA<;8|GqOA^^1Cg(7PS!U(^_o8BjamWcGV|OtzUpDO!eK9Y -zZ$GQ`VJ^`(LorHHAaM!h53?KmrXE?ZG!hUe|wXzoer94df_MjkBh72K8hoo*_YObsgOa* -z2eh!Bjhrm>g$J+6u0^(WFfWk4zUbxwlcz7;O-;-JltN136UvYTsVFZ>T|rrPN~AEDCK3BRaB -zDUB=)vTRKYsZ=ehNhac6=1mc}R?`b?bI=aL4yb(s7ErKU++0ms -zy;HQCp}A0c)AgM)be(?ldF9iAnSx<+$a`PHJ8Qe#SJlX4(DfQ4tRfvdc*C@HkHL(D -z-K_ZOWpER)8w#>4MGZnKJZMz$~hb0bfOQsO=-qpq0R`XJ_CZezCw;AwH`8KMa -zw3zsb`)*+_@+C=&+;und<&f_imo>1>eI_l);?MPNv`mSkCqI7arfa~$9ZawX~=O@Ajef|j?kwU`OErI@j{S=M~|}CJ<^Fga?Jb>Io=B!Hq!w* -zpB*jqPxr}>bWxbj{FF;0h5Y#rPgr^wP99%#l+XC9QU{Mdx=9Au^21`p%nK&$Pd@p- -zy0}ryYZMZNzN)X8i&!W4937*z^H^jFGZ|^0BJK#D&yV)=nBb%QNpS7ZCEW;R8tfPhI|orftajh*+52Yi+c%r(Sn=@m{6iTc%YqbmUa%m{ -z(+PT)BLdPegWzf=h6(u3Y -z)n{fIG)Y2JxiO)&p;iO53)-Ry)4$0V2dfFt1sP2w=b0D_zH=F^+s?`#j$~rrzEt2} -zt6s0FfTcJK8ub1~`1=5@yUVg;4t4-eTpu{+dUxF}P*CeU*l0n%1TL4<2g@8V<9mbTrwG)`XjIfT8b9_eY>?n#A5vcvMYE@+Om -zJA}7@oh8rokpG^;vbD=^&0n4zQEL=3F}Ay8-Az+ -z+8Pw@Ba@b`e-wHGC;lTHqoM$2sAc_Aj-C;!-Cs_tV;xJo6JTfK{G -zq!OI$GfR{768uwQ&5Ui9F1JwmzvwnqhuQe64q-XUd%n#FZvz|;dl68^KDhz;^tJW7 -znx9Ig`D@$aR9NRT3fHwQO6BKL=vdoUSnNCJhQ#Qn|W(iyP@6&O$;G)&K!IX#$b3bP|?;APEf(NmM{laD(o2 -zLb@RvN!XlmOdty)j*&2mqD~;FC|d%AMMa{rIpfTe=s0XHQFKIcW;%4>UPwZ}-&6N? -zCpZkgzxVmPpZAZ~K=rw`+*;19bE@jpsZ*Z`=<9)&%kDf0cr=iP%OPNN8jE$jChv~? -zChs+Qr$G9VTeJJy&^p5!oZE`Ug@`DPeJB?j(sOF$$MIBZpjd;Y+wjt(kR?JR=x(e> -z4jJeq?p^s0r@!eK4!zq%=tHb${)hV+v%ijf=|Y}n!`5tVrG5jIO{MOVha1i<5v#gw -z=%2kyj$uI?9?sTm58gm|)4AgA8(vx*@O%i;-)jin(0@tThNzq#8`5)nZg|*n-r={w -zze;qC!%V1>xekXKCw|S2`eCdtg6j^~4{izE<8ZCuiT498go}e)4L1p{5#j%U8w%aJ -zQ)6NG8I(HFAW#4d7xnJkbU#!8IKYA8hqHsr{*b*U#ErT@R -ztqB^}e2OVPgSRy<>y5R*E2aEQHWbr)^AOUDLev!Z@qA9n;q2Vg^Vr2qQ)>(`Z>DhY|gK8)$i>X#ttngA*(0+sYM{;rug=w)|Gi^-D2 -z``)N4#+-(|=ll|_hR^Id1M~y`b|LR2XC>2ocFx%ZOX=sG=TORgzp&3PrQfA -zaME)Go+r9$_;Wa($GGhLxfh;Cxs3cd6wfi>Yc!@Gl9Hg!@cO>B*yl0TpT~$kKc}LW -z2}5wMF{+hHOl%Y}0t|WNLo4>>1oQ*_9=BU^U>#}DYg>8=dte8XR+Z!nhwnQ{KCJj6 -z;QLZ)P<;mYPD^XCW3t+Aw|3*2AAxBi>}Zg_OaSy{0wAYom&U6a02Mx|Cp%iUSi{1W -zm$D3uQB+qKdjn7@Mc`NbB{acAfANKI)>+u4$|rHn7A`|woy2LdhcK%*43X%f5Mn| -z2;UDQ;(f>EY*0*6#n`w;4`!UuD2azgPdsEa -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 -zyr15f0)>lhAT?*(Vi -zu=5^-HBH}^AS0|~7h@%ads67;m6*CUj&o~;iRX$BNYO{=ZUfh>%@*o&!wPM)(5By_soJpDZXrw3 -z9_inZGSF^IZ)lc+Up(ur)ke$l@SST-vRFKI-Kk4jv7)wWs_r?ZR-@0oJk@X7>S?)a -z`o&av1)*$H*Cgzu=Z2j72s!iX=-=NBj*C@?u|IGH@J>?w!USUh%x15!W&LtCJ=Z&hli2e%_Gf*97A`GHPfgM89bL9C@l@Jma*dt%UCktll9$T -z6P#^;mA?(J+_S+yH6TU1As|(^fjRtBuS*@s*K4Pc#*{hh%h(yv#iSpxuCCLtgLqct -zf!C$=kh_wf=xQd`i;=K*eO;VF=bnp*|%OVt{$L%Uy*etfE~U%%LZI-vX(Kq{-j5ngvda$+5S0s9{mQVoh- -z(3W4T2&b#3* -zgl#TA*L^r^v56hP-3~(Y-=z@G*SL3z-Epl6_mg=(gQdFgx*yAC}r -zoE*l9D{aemw%h$B-;+*EIv`zrJMqXzJImOgcYF8NYSGq5`>egX>AwZ%K6p^k*#o -ze6K^-1lw_6HC!o8a+ri>ooo45%@r4(h0Pn+lj4O6oh$b%I!Tj!d2NC*b5t6=zYR8Z -z7~gRfs$#L@%J*HNFFgV$eMaEiiVl?#zNSLElg -z>1wWlCeMY;c%yNVvJbyq*zNA`QhHZArw}fe{$m+SIRd#DoQ!_<%2oy6{F|I}+3 -z;a}-9!y0waIf#K}-|JGaPv>B_Tkq33*zIOMor7KO>$p9PzG*ME%iW4wI`sI~H>8<- -z+@Y`Qhp)?yI_uW5ejj^fY9>(2k9@cLp+=I&i8gJNCsJn(H0^eOa;00Owxv5}iZ4hE -zb~M8o?QINA9hTN1T?hSJty8dvF@%>A3MqUduxwaFx(O!BF83?A$#!&;38#v~g+T$g@ocL2x!uI*<@9xp`t -zyH1}q9F8~Eqz}azU_}oecCJ;qW!zt|FM+mE`~Cno`G2qu0lavrf>FDZoV(m357O`Y -zgT?qA#(&EXHsCpu{}vx)i+8yP@ZZM|(s!`JUP}~k83S&U3cY~?lKmRVyVpRwiSXHT -zFP#GrVYjv%+5-r+1_7r@9H-M8hd_!)_7;rbIohhIG-C>Sr7DZOEG -z*9@v1k9!RYj$ZQNsQ2e(%!Iy{^05Y&byYB`zkskS=P~DNE@NeIOTPyHhAa6qodKcy -z4E#aS-(uxkUDpjan&_?5t$``DD`?`{Bi_3Uu1meR#Pk5puhLEj?IV5mJ^C}s`5%>c -zcgn)9Lz=6|^$tjfak`%!r8N1RUyf|l1M7WKOgN7|bIx_l9x)oZ`h7{~=z8EB-4{3L -zDHKoN;wc8VS9zqK9(oGKQ!oA$gs0xPt*{$)+A6yAKpM0Xnq&gx|&vX&geWwi!2_TNYf?!SkwZlaMx+=Sc64 -zZMq{(ymUfyzdQ~yf%_cy)x|+7(2J48o1_8_Q8%Q=ZiK!gj0+z116F8*Q)$l)E552h -zX&Puw3`7ssRVj8uu1khCqRSxH)UOn}40PS|h2gM0n=CWgGn78ppZ7V^x}Ays_H!H) -z-gAUI*xR7!-5RSgb$A8o@+cm7oBFfopy!VH{YS{dLRxtWrM30S-tNYj0W8^nF -z&4;@;8=d#dV<9cBmtOD)V=*I%zJOa_+~*C>dg=H4nE7HOC$&P0H}?x)Rm}FeXSNufGi5#7{E+`RGfq-maQqQB*DP`9Q$M%9q@LGN&XbZP -zc}%sAoo>=#esK&Im%E*VCFx7=Ylp1bI@SN&Y&kBJ8Ip14nC1|@F^5ooPfKsVN3##? -zntGZ`SrE<=&EJ;xNwz2W-8^@AG#w;;YmUT0{4 -zHIZWI;lSF-m?x2Xa2)mDYI#x|yD|h4Y*T!Oan{wp78JuyiPl&xMc+{GN`O7(8j~rBC_221o~;uV#MUrmAkul1G+wi}h=2luKbD -zq#ipkWTl{V%->*LqF#EN`;eB;uLMIqW|SgyJer~1hf@!rx%HQ8cn(3ZI>+gJlmJgB|3WC7O{zNBif! -zl*bI`7M03bcG$AF=kpm~{*hXFae{<8bhn86{4w{waM{n&YvykESC^-RheC>&huNIo2a{ei^^eipjjs!?`XS!{eGmHpb~)s`rfz2)-iX@M=FfrGEFyFMG` -zd-xfX(TxZ3)*RHJf2tX&lP)LXJi{4jknD%sB~5tVZDGw@ -z!Ds8GuR5NEc4jg{?{LjWssN-)Mk)=}cE%oek6I<|Y$c?E9re~Z5jWTcTl{gS+-ck= -z+pssrxP5A=9H=doSH*vP6i>JrV3j8E$fsyuXnkLv?kA)xmDg*9#D={cF`Bc5n3t^| -zvk}e!{kUhwbWb@A3uKh$_geqDkQhx9+139&r5Lgi@YDXK^0Q;e_CzIe-!LW&PtT!` -zmY|Gp;qvPR)M*kg>rKy{(EJY4GDu8MOItmO@HL8l+_%{?4!$PbseM{{%CojEKE+^p -zeaUH@#)B4Ymh$|(r)EiQmbaIjTQod{MbY_2dgp1+FuZ?86p$N*ot9R6G|{ERL+Yh(Fb^VHEqywuSXduc411jM{fjH*u?Ed%!O*{$PTGyZdB29m -z`7_omc@fr2lo{<5=nk?u!epFkpTkBbVuf-VyJ3($VLdVgH~iEr33oDAcUXTMaz6u3 -zCfsMRoRuEEzI91YN6l2a*W)KsPphu^Q~4*u)~WrQK9ql&O(%f5VQ#o-2A;0`I?|Qz8=T@12}Dhou&pypk=w`McfMY)0JWigN?*t -zj;y+OmYkGbmEq27i@%m$>cCmBI3eLAeor+gUA+h%^(f92#T=$}UL4B&b4NonahZ$Y -zR%2b1`lNiZT6x3hc-MXsbr*0>#Z@`XS|N9szR8AOn22)#P4?_6XdZ%lLGv)&s2TZ& -zJStAt6z&p2B97vO_5E$>?<~0n+pk|s^H7V6rhRg=dD~uXYrcIzV4Lm2-a8S0#vx0O -zc-owA$cx1QoI21N+iZ6(4o$c-T`&&mRsqWulk9Xm*q4wm=7EP6-~Wbu-E`08AsRZ% -zq8S-}w5R0_`Kl?=l7PN65O?Y&TH;dPMZY%Ps9r>G#$!%#Un6k{*z&wVAs@6SVpVB} -zrh-KcPv%-RQ<^B&h&1T2ZP>SqJPm8`iO|PA13SSq)|`}A!u=Mm7_Jmeu2Dfm_rcyr+W7#|(=s -z3{^aY{!97;WaWD~`aucy*E{oZwNJ!XLtMcw_rp@GqXzmb7of>vv|V!8t+7tKEp~lP -z>5}yqN|!9IN#C*fLi(k}MtkfMyM4(Ld&Z6>H5r$dT*!#cHfAo#wrB3hCVkK)&YH{} -z&I_3#SP4!x+7~5V4YSuQqEj2;I8k(A5mDmPCIf6xJqbBx;Lq;1^Gg*S*Q9*R*t$wa -z*wMnP8s@@$h$UmcI7Ndr;(PRrLkjf~7Qg1dhL3fe3_m`5nL`-!gw;P`OYwa6gllDFB%PC5H -zOZ#TTA65DBx%N#d$K_+H@6&cR^fh_Db|X?GWEe0vJ}rIJz9Ho`j3<;=WBZ{xvY(tV -zX0&B0PL&xfPosyQYTwbXVecAwsJ0%XjWDhu{0;DX&G_I^KQ#q6uSuE8>-Adu2Ybt8 -z{~-oTG2VH#{WV#y{T*6C`M%Kp1WHWQ5^l) -zSF|t1`}sO0w|umsR1O!Ye%UB%J?bZn>pluM5b0Z+wnRC=)lW;0wP&H_4LZx^kaY4t -z(C!}vOz6^i?7i(a#GcaOw7-U8E$s{7|5%rF^_>Fp-_;(7)Q!4_dFt`)4Zj4;L_YTqYZq{WO{<^7Qybcg_lgnV{zm4~urfJy?3Ac7IZcxHPP-2bn(*|6c;Ump)GFKW*}+DwR#(CfMHf7%%8Fi1aw*WpxK8LWUCEMG_| -z*Eh;x_=0TstfryB>{o5kIKMVj?RjU~BH@cdPniWf)faZ@*gW*ri*WUDcDT>rUPt(8 -zI34=)bhs;co{n%oxIK6t23iTl^G>)U@c#ua4Cy8!TnBdw;eXn$V`~Aw1N; -z|9w1H0UD4l8f`y~`&f-#YFN=`P;00`TruR3+vFkI2UqYM4qRwMcPvQw)eqcaOup*=y+3Z$IxXqj{19W}F~P9-K0;5N -zh_NC;T;K4)cZd`ZaIf_0p3#Vel;@ -zy`p+))gfiwpv7}OtR&$^3&<`D`MN}dcfZMm=UV=I$TS+y@ABUU -z(~*mFp2ER(SSyg -zJv&TfGX{(7Am95! -z(g)WQ568m}@M?L3$+*<3?Yv)F;h`HgZR5&W=^QN^@~;YJ1*EyJ1N#knt_glknh9OB -zVAlx9v#ICommbB525-8Vb)?svgt2+7sr=qqO%GILWM3mbL<$im4i6aKHogO$NW3@6^6bMZTL++jT -zkY1BUUAG<%G#U#-jP}9|V@;vPc%e{lG#1h6Ws>mhm%ijW|0LCBN58g|vv!m@`aQ*_ -zTqiE}T=U}U#CxGfyz%p4(IV0^VC{$V!-21NefZjsG@*Ws(HXEH!(R7hXxE>r3r*8T -z^)J>$PPalPRT+%aSgfjDI*8eaLDI>|S4!j4E#a#BuXm)Q|G4Dihg= -zf8%Vy%yQ0mit7S+9gfeBK^-2yPWtI|a_~W3<3xPjocCxh)C2GS8-2m0;&QKhHrM%o -zuyHi67iy(y{*Oo<0eNk^v>2NI2CD@%t0@VB9k`e@zo>6YSk*ApQmCRcke&Ld*Q8b0 -znKCtzjF_xdN2Th}f)8Nvx>IYD_VI^96QDy{(td_Zdy6B7bG^+Dse4D|;dmPpn% -zt#N3YKfWQx7W8w{3o+s=8q?aPzhMPou#P#e0j_jWLB?-NjH^j1Sq!aHI>pc-z0w}@ -zPJf*1fTSW##2Gs}xfl+KJXx*22J5r6YWr7QkEJ`k4E^iG;k}NEIOj`y1|hEKvluBO -zX=WDU8hlp4!;3zuVMnRXFU|$+z|DaZ9xP|hdF3o0IH0!B7`2J-1H?dT(JsB(Mi$(! -zNjB`L5yfAVCab$F`=z-@5|3=Lma~6?4iwtM#iH&+j)S|poG4Ump10%PaN0?UgRFKC -za%z{Bw9SVm4DE<`wch)qrTuwJGv$l0@2>QczNrFw$sW1-a39}}0QHg>>;ZI0^Hn|F -z;>Z}T@6jQ(shV0!yA_&^Mm@ha7FF)*u*2f2?7shF!Twh%6ueJMKal6t#I}6n2%qDbPe2S40&G#=xix%Z&wg -zTY6#5@>y5+6x6IJm0vW48mkMf1=R&nYf9ypOt8Vv&o1tV6+rJ!0y`=^E3)nPX<70C -z9fQ5*P)IN#&0KHt>e+gEjw~%x_l5UM>v5Wa($hCQQ#V`g^~i2%dIxr;*lr2y)s|3J -zhncdrWeEId+oG_BiNRX>0ldFo%57J6dKN_{9;u$s&ym26YvZ=YIiO*txKb4l6N)g -zBZpi54o!|asiz#BBEniMTda$B!>Zy0SZb=a -z8Jx9}?785afSZ6Qd`+7sQe(05@Si+A)X^g>r3djGb@Y&>DbOoRz&(9LDnq08c -zT_-^gTRPQNVli0heBOTPc-u_NVyw7hqISBsO1R|`=_0J@w(qP&oh*8*jZWEUi(gsV -z3-et6_!#`^<459G8=s5cz<3Q-&q0t-Z<7<_OXcAEOco>PCf4$SJEIkLkcFgu+AFd|gN`x&)Svm}9vh^^lOmsxz -z-UJyVWz1ph=A@U($>|11k7n4&4udoa_DMf*8(R&qNXlGh*?@frjQ`k~+AlqXTN0IX -zJ&*lWWX|>F?9D2iaeSqmZMatFZ)KdNRdT-S -zrd7HeSA(6eaGc7Kr5-nGP@{14#}U}a+7J7GG?LP|6v^*Zpgd`QVygQGq-5SvwkI?p -z7?bMt4xPpA9Gs&WKLy&;82|BgLNWeNwCu!v7<8gCG?ERC!HfelC7hdRmqKuEqS_X8 -zo=!p8ZL?a(7t)zTI$<6m>~!zvd)fPOnr94FsW&h#K2=lBp88beb(mTAp|fXQglVVy -zfXiExze2;E&WsPinek|6gOl+y<5^BRGcJscwwZBm{Ovh(Zu~=Qv%`C4{A-*UM{h8> -zxIRZXde9rtK%kjRIC@RRRmBb{<}a2Ss|QrjY+YN|%aw8-GXt)127QlI(k{ci2s>ut -z`C!*~=dCus=4N~^k5tFMR|)Pjpi?H8x9l%xN8kvLiFFOQm!q0vndWx6s6Wj^s1BK2 -z3xZCbP%Wli4MNx>*Yz0LMj|W-VG~iaMK-cgN>&E4I;yRQ@Lk4ZHAVG`ftZZucF_9Td6z~FBn#}hB@*r0&8q+JX -zM$QPWSu6})1Dh!qaMur@b<5)KrGIvO4d3_D52)20fUDbTaC`GTvoG*px^L#RRMfG? -zPq_n!=y*XP<#?{d2)k58a~C+9p@|}3zqVP*^IQZ+8`ntjgRzIc5_>U4xYcx?3Gc=2 -zbZ@%C-x&g}>`*#GJEtr#a*n-M$}aa;Zu6kvSjx}n*mTrk59McUcey`xm&xlGs?#p_v+j%7PbwPIf2A<-lf50o -zg|k8w?J!Zu!}-jJry)(@J)p;>i!G7wGh8LC&lRx0yVG4JZRaV^b$OR88lp{+=T?#} -z!=kwtBX+u%N-^||9gqI2URwGO>Cc}1xKUZ*3ExX|-*uv{OW~+roIz{oEaJc2{#U&A -zDt5RpUNt^xth1_T{w8{=`HWYVzVP+=R_w(8@Yiy->*I3P`l$EbmLcfvwEs_I6^k5# -z-u_`Ljg2>-`t#?f{`&D#e{B-ZlVM&Lg_#ZAJl!VUxX}!YyT%nU*ukfI9cZn_OqRHd -zLD&I(CkOOHyUu&MVI-y%j|}@j%1Wn7ox9R{;~MHmb)>rH{H2^d+E&5q+bF*~E`0G0 -z_k;u9r{@pI;6X(hT1zla)Zk_`^rl0X%jF1RFTW`b7|qz_-h+^f*bV=j?MD2^*o`a7 -zNUS6OTkuyScD|r#_80-eO -z;XZ;Bka#F>e~Y(qS7sqXcsbwES+5J%VF;fo5!!FqE!<%DX$6jTX91-bE -zStAdGU7?~eRe)>cnf&?Osx|UX1BLc~e2qMv!ZK!E-CFp%{G;i0?2WuG|BIKl%l%`^ -z>+)r_tjkmvp6asN5~?-YVwjy$rL@GvP?x=Ue?Qy-(+Su{Isr+_3Eb63?HvqVr1x9O -zVM}6qm#=mRA!!`@Nh)^tv{2nnKx(u`zJpU4&eTTs2PQTbe26D%i>6M5t)RPMH)%HP -z5`QSqjieIdfS>&>NxZL&Qgd6|ast+(D0VnvUsGd;sj;gNdpD0Ag4pNP*hn>YF=A&6 -zv>IT>YR*C5cVCqTK&FZhX~8{J#7pMB5Bo32VFiKYbJ~NjmjsszHxll3@PHF=XW+8o -zUj;ZBPy&1r?gc#0gZmNBPr)66D}z56ZXlcvTb~C*m32=sU-yvyn;*1o3Of|NGMxOt -zXh3t3ebRZpMjm;soV_oVLpPgrFzcXSti{=59oNAmEf#3uZ)oHDPgZLXcmio6wn?qf -zLRa!8&6i}=2F-_@&hI+nl$AUwZ<@b*@6M8?ZCI<*%1f4t)wTLQ=>=Yo>pq?pgj)QT -zuhT7!!_suHE}`5GWZ|7LuaK(sgw$ -zzE28+6onn_gLUl~yyt>^jbuQz&u~ -zA*rxP$Ti!e+N!7KL;gfMz?eU56gO%&>NaAIYzat>1?C5#B{b7{o7=}GJs&FX%>@+)gRoU&H(E=kUx?}lLxw{kek@j&WEDM41=a2 -z%}d*)4`DIkxcss(<-8VJxW=?by6MzV$Tz#Xd!hViiFb -zIZgd$hgGWx4G1A?D(zBj$69Rg{j`@Ym9NKGhyMYermdXCM$ -z(3!g^4?oT#_UqrT82A+fzhdB54E&0LUor4227blBuNe3h1HWS6R}B1$fnPE3{{swU -zWZE)vY`F`I@>qc_r?4n}Rfe;WbqOuZcP`9dwlFi-md@^drpQu!ycW%Yrz8Vn>*bQ6J0nm -zx{&_eVTdj?_5wS8i=2xVdSM~U -zTa=L#kD5<5t&CpD@@>%>Su3J50K5Tl4rjV)GOCboqsO?;$9Q_ovN?0@MFrV~`3^NE -z$F?$mMFDwoGHr$Vc`GteH6^!#m6W^?Wklnh%xs`$6&0zx8K31Xb_7+1|FD9>LT6!) -zeQXw`Syq_7DBG4*=&f6P78J&B@lt+9W>JAHH!CwfOG%0s6HLqEmc=XH!e!~pGjlVX -zYPD=x-U{Yr=1h(@#jm`b<0$hYtSB=lKX1{Z!px$Z8mu;#*L@Kx!O@p*LvKr8fp1Ix -zjJ%?_I9nFs-%*ghBHq;b6`Vyyz=cW4Bz>h#$w0+~H@C4_=_|&V{x8)WUu0XWcpI?xd -zvCLkSYs<-;99_tYRxZp~Rdy7} -z^OPnt8}%23nt^U_AEyc^7^b4_4rhKr=5l(>&g6aYKYBrz@SA!Z!N1p`GLhn*~kB1MXA!8HQ+vM6 -z;Fej3K=GXH_@UB>PsW-lozqz26J-j1||3S;^|YmD#ZI9|^G*~?(^-Y<#Ir?eJf -z8P2Rl&g`P1Rmzv^%F!2P=Fp%-AJkW}+5>)8G|SIW_;)-8fgJBQqqj2ibC>0)ghWGM -z=eSm|(vG{7bCtMGBK4*9_KG-fuZUB6MN!xHx{@!Agv2*h3eL*UP%}pt>ns){fzozc -zR=RJ*LPZNP_O3z?&dkhL$Bdf;6_itxx};QD%*}zFY$n4_tuc*RN!>6Z-iv; -z9zua&WwcTYDOj0L)P-Q*U;r=gS~Sv)&GONC5vE8qL=!oI4bm%x>G39K?ieC)Z-JPm -zE%LH3!jhM@73AA(zF|e3vhpx+b`=Rc)ElN&@1`&n1viDM7~o-?z87ZmM$&U!m*;r( -zS*bFHlH82AasR=YGBUjF;Jt+RRE`TiFglCujxK$OdK-{Xkdf_e@X8`v_M(E!r4+32 -zC5Lxb(Aj%_)_3>^&B<_jN0pyMNejXThrjl1D$Ir_za^~eyCGu_g8FpK~+6lXiS6!K8 -zm*8dSc-|`KXAs@0uPWcj`-xPa+Ven0NJXsNI}(9t(T5jOjWRN`i)>0&c%rT|aJwC= -z2vpuge0qg5HzRLF;p1N1W&dpExFT;wHr63dkS1q--U*lwmG&i_bq6n12pPQe<_Rcc -zYEajvg3j^bRpL@Soo&m$X-M{dcg|C>)bVz=&R+ZT**~Wb-zZdITjBdq%6IeeDesK) -z=bX+Pu2$(k(sw0xrPujpyrAvQL7mtUI*b=##LpBYsS$jlpnh*Y81ZEfu_->yqv45T -zULB3QFuX3qahFhaJnj;LGa3bXIXBPF#+bTHa=olTZE6>C?uy^e389ic+xzLfUiI}% -zWy-ELX+?e^bsy?qzP>~rW%02HXn}{%p}d?}#f#UA3@}TjRK%FPXjEq0V@&`1Ikyk5 -zz6s_{c=d()@ahYpPEDi~ZI8AqlPhrSuCuF@T;5ejKag8UD~f`m%nSpuU;~1eWnyW~ -z3UZve%$}W*w=jKKL17Wg&(20@b}mBV7}yh1L}wH+FW;t7BnVE!`oJ-!Wx))p986$= -z4A*#YKNja42J>(~)|dOWYygJ>i%`P>kOypRa=*Yt)sK_P2oso2g?beRaHwP5RKHRW -z6YH+}LsS^5!Y~!~02J}Br|R#e!rm(Eqrz}N4N~<}VSg14RO1J!&|7W+x*dYjm|tZk -z3ku)BLbCHY+ITwrbonD((I2&y{-}-gM{TA*!d=%tY6JZdZt2g!e;J!cjly3N|7EPN -znqjf(pXV(=h2H$pu$%wX3i#sH3ix>|rdGh0pFw&3G$D=tlK3x^j(kAqXRMh2GHJ5v -z_q9|BC(P2HG`T@ZuVSDxy;6Zrzfu9Dr_YZ+1OJsKpHtsYQvFPgFIN3Ys{hs%IPJxc -z`Uy@`CsqD<1v<-PyaLkXKdI#@6@Z_*0sSS>k2LxET?8?ZfowP(<*&%$i&2ts`Q}KB -zdGO$mena-?buW3NUBcN-pYKk!?b$D?rm-1apdXEzuM|DlX12&k3njW?`YhoR?cvke8jESpXqi -zAmkG1kWA2T9RH2SD%`{hZIE5Cdmp?n`JVfzKDJ>3>-QN7RR0X-XtQXJG!HR{oBNsj -zo5RdK%{|P$%)QNh%md63=7HuI^Bv~l=2-Ix^GI{DImtZRJjZ;W`F`^}^DA#I*UdFA -zG*2f%<<*~^IPWm=7-D=o8L4) -zV1CeSHy4{r%&W~A=1lVZW^SkCc^Ir2lbB%eM`8D%F^C9zLbA$PP^9SZn&3`k0X8ybRwE2wrtofYzy!k70 -zv-xZDPv(D`|7HHc{G<7jIm-O^?OEF$+h2b3%=TB_?1^@kZ;vy-@#gvMP1`@;zU|HX -z-a7H7=B>E5;@?ufBgrvXTwLx#2xm!z%7s6+B{_^m32oyF-sNc5umV*!qS0Z~ov`*aCxXwx9p~Jly;K&mp}Rtfx@~%t3GBoKT}r(o;QY -zdY_wDki)XFZFZ+EyU3Z7S-`R(&So@Q$adx|!$=JI_ozj-bjYi@bW9OWF&+fTAVkRN -z_9c0Xm@^k5vqg}a<=QimAuXB~rrQcLGZxwl3TZr!&su2Dvhf)T6>KXi%FJaypIrZk -z0M3^l0;Ym2d`POuCaxUl7>xFSFpUN)GUshnx -z!xA-%X3Sj#5-bzj2N_D6kYNF;Td*=cJI}tvnVUr;TQBL9A_h(b)_vkUY*I@h^<_xnj7GRx%+Xa{YLJmuL4t`?r>Raa^ -zvgN;!!*ZTOfOs_G);Va|Z+;<%-|!p)#ia*tor8`Q|3VJMJcl6Bcwg5XB7Jz!v$9{v -zp^WDcEPnRWt#j~W>wY1Jbv%a_AuIH_DAS%6m4hogN -z<9}ye*BmDK>OfR_`y3Q1ZSX&K@2ztnD!qLU3Y8x7zn9aP7Z06vAS%6m4hofiBSQPrqdjoJwz> -zgF>aBV}5<>9EeJ9pMyfB&Hhil(lv+4ygzuU^!7O@RQjEN&pU6O15xSib5N-C2me>j -z+&TxM(%a{tP-*MWdQ@jCFfGdW3auE%;DUviYVh%zPwyaEb7ri>pj~7ufQ%VKurGur -z5Af$>dTBF3j7uXo3B?Fv&WMR7$(|PGEX&3MAELp`{6b}ifP@B=(1c(mH)KPyB>px% -zbeRC8XR_qw59T;CQsy8n<&FB}+Z~iumx+WTh)_0vmC|TidL>(G%ZVR54igz=&Oy7V -z1=&zYQ0hig6E3o%36GitahbH0QRK*oH!aJ?yvbR#QYn*V6c!?!PjP52Mz!(bj?YDg -zvIfW``kRVx;&LPdsP%EVlMp3z{hG6V9ERp1x6eW0a)0T@lDg(F$Cm?fx!dQUaJf&r -zvEp0jKwR$jIVfE2Y&X_$>l}#7-986}%QgQD51p+bE_eGJ6fXCV|B46Va<|Vx;c`FS -z5)WQ3cl#U^E_eB7c({*$3on_lM3Lh|AqR2ZhV^fQYMWkLt{UxZLe?P`F&=&vLlm$E#H) -z6_3@BkD!Tq;a7N)Nnr>}y}T(-S-WuNMLb7k0xBQY`UL66o=T(o&}PnSfIjO6)sjGRz>`My9zOb -z;{Hcf_^=A+sc^0e=csU&3hz;2nhIyC(4xX=Dx9jqBo$6k;baxwsltgWOjO}G6^>Qm -z7!}5=FiwS-KcfD3iK983q{2IWa3l|(D0<-t)gPJ{5h>q9ai|Ju -z!ASlg9FF%vqv|ICm)>u@7|G#SA2e|P7|{y{bAP<3zyy&bcY41Bkp#MWzc>}fizJZN -z`%VWba|z*+BS5EVFB -zg@b;D954SL;UQ#-C!NX%T%f{-RQP}jIh`V&()#Y -zUC3Aur@N2@6~?L1qBkZ_L| -zayk#`qx$=J6n|e2r`wRe9!{@-oDPvrfxT7O%NI@?TKbUQ9tHOG^ydCPD(tPoUOqo< -zIO#)rdAyJ&q4a(a4tsbMe@~xZ2@g~Kp(+ek-w#p!-BlQ*z8~!KEAMwx!-G7uXQU7D -zSKkj%!~Inl=!;k0^Yg_k@A;|u`l;!3zIYOq>O%rNv_nGqE6~rQglm22X_G=9BC7dl -zJ&IpY>!VS_1vOud`ktVMYkcXI`UpP1H=qAEAcU@&(7R-XMT=;5vM?_<6Dt#_bgoq8 -zu8I~PW)NI)im3`z-o;IBfhzn}7CTVySdr<>a(D%!C)OfDE -zswSo#bV!Jm7~q4e(qS#y*^2DEta#gU2>X2!WpC=t?ChIM!uvpgve2tHJNw{9!_l#1 -zb4A$T|3yNqzOg54@$HeGxv@sKIoJ<2zzmi^%O2^}4SkxJG$3ez#$ZXX3U3aFO>vzp -zY$BUSjCn*E=jO@2*j{&xlytR+02|S;KDEznyKF$%P}~(h0Y1lNOs#T^}~&s+_LIFJUUAv?3j6^zr!9^BDYcn`;f3ZJMsrlvLC;b -zTCs(;N4kgGLXYRR(DoK=cgMB_Zic<|Ds4-#2n&WSrJ|-P4i?+Y7PqwLT60zdZ1~!X -zlosxDUv3G4g%MbRWzBhe-G9VAUst7SSl#zX^`7Ru%hFufTwu-Jq7A^{fDYC?C_2WX -zrF$1j(sn`~_^uVkq3#ureyMSFe?U|GKE?no_l4dkZeO5ru^!^<9B5WAxSz2enz99Z -z2xtiBA!-uM>M!4+z|~*wBT%~FpaQtBoSo#p;tv6YckQ0Rt|WE8SbT)C?uAP9WT9pz -zkPkb>0O5BjCG6K|7kC&{2bN6Be6VjsfJxV=3KC1D|3ALGzI2-`OE?~QB%I-Q~2tEtJxZJaZPTYc(JcAGO;6Y9EV5`-Xqd -zaEk(x%p1Q2<&`~{bT_JmQJ4olgx7hX(hG3w0=*viwgL_-;FJOyc%Es4fO34>xf(WA -z1mIW-j?sw63!$Na&yTqM%<S$=(}h;x-hl93{{et -zK>@`CzGAGD0yWL6fh@`2T1wS@5C!EdD0{GZzlKrQe_2ypjNbFI^2MH3Q1>*@6U+L( -z!*XLal6AjQ`pX&};rjQKr+;T)DMRU%8cv3|O_A{VvZiFjFv?RYPot;K_dL5e{iBDa -ztx9Gu!1okSOU0hJ!I&TYFTQ(2xWgp9Y(7GSIfZC@J$#La91X5iq!A#hMU^CiF`(9s$eb_c6vzhPmqsG!Kg -zjA9QY3ECmP01!M$Yy=RW6C3e@K3V(>Am}miIRxro7M~~Ie9hYT3z=XPk0H=MOgu>- -zLHrzXeWr+Sk*`K9hcD=5O+~|a7WA^X27!UIGF-g -zJ~>$0Dl{)x7n;9Dd=9VsMe-K}KaE~MKf9n|CcJk693@R}fRBjsf~Iu3kw7u!d4c6l -z?+aw|?j2gpwkN|n|4iN#_Bn4D`+~QKeaV`Iub5$lP~5CjN*7sB9RI}O{S+`#)18WS -zDJ8fx0+sHA(ZecX+&f#_#yBU -zW2B$3hQH2nhCs)HG;Oku087^KdJ2BRYO6jVbSAH7*mUs&e1Kq)W1`1s@o)4w-WF>B -zm_|IcK;zPRG+J~;Aygya0|=oQNiDIfBd`bYa_{iceLIf}%h!aD5}5$K -zI^+_zM%)S@7{mt&3>3tySzo3V6lW!MvDw_>_cH~v!+|+qdZRhy{00`&V*sY@0+`~n!**| -z9ZW+hnc|COwF{nRq5Y5~5J}WHpvTTae*-Xpg+4CqwEnI&f0?Et`7{&a|67vxd`ZUN -zoJ1)>$;G7RGU>l1d9T%*B)Kz*s43QCME7IDJ;FJw#?`l2eK8^|(6pK| -z$rs`EWsr}>gel)WO9)*+qmv*K!1%5(z_l2pFb1f;X5ryhlO4SELnh2;wGVby;dj9%MwJuKh{50Nr -zQmvs?skVXFI-Dsl_=mCDhpBW{J0HN_1tI$J8`ACGmo`h|urI$7YAJ+9WfB -z24rp03>Nym`X0NOl)zrtg1~O9FXlEtfo%n=T<|O#U!!1YC46WD_`G$1c05(-_pR`` -zl3!2;cD%4&Q}O-_Oehu-Q8VCk5&>nD5mqa{Er>&lFxsPpk_vVP9SlhRI{Eq5*_rHX -zyl%==%6q(P+`KL9>n{m|f(w-ZLTG%qJ);aS+tfBF9HkOeOneDE@b>|r)IsRb!t>%E -zi4dMg<;?EmcCgTLRx6;huj7HC*@QuD -z-wlYnlZ6cwDiuoILM335(d=U$l~Xyc!$yj)Qe2&Y$?WA9HnLi<=DyFO&jVCy*fbRT -z7R_de>6GA0ht3dOUxuKW8Z9Q>!Y;v8dJ;ZXJ?%hi+;ned@7l)qs4Z42kGTEA|Mh!cPqfyj2iX#XP?#2~|xyDAB -zF)ml*rN_)TbLIP;Q*UR%S?>M5=j(s!sp?uzojP^4I#n+US9R6_q(m=f+fyj^3$!zg -z<*&N>`Qcy%T1StO`Yp9hp3m*>h}7kjY|+)wSkwy?qi^HoBf(o)nWgJHS36I6S-U#G -z-Cn0pi|cX#d{@VcoD$ZaR&pV;yp$1YZCQ3rJeOjj9n>&VfUvHY|E$Gk?(bQ5q9$Mo -zJ-^0`>WPAE=*+zaz?2aN_;jtFUjsN*Ce2~eVCAwbQAOQZmPVj<9#(x|H%QcM -zW4vqwUNVL>K^sL*9i`aBYF9@YI4zT#G*B@eEylM0Z|Lj}%ioIS2TeRqZAEYMK5Cd) -zO$ARfc76UQD|6A~xIUdRNlzDby8-`-( -z(W2ym198`>cGumHBUfVipR|GC|8&O_+Fk4;oy0k-;|bL$tj_v?_Ncm8?|;SUj2n2QW)o(F27x2}C#JnJF^yW7AMCjD(0))id@ -z!w+o6gV~0jA)Ud6&X`>|8U*$m5SZ*#9n_U9wLxE!SWQ?X7@;f;^+-d5KNj0ij}R?S -zheXZRBjmrV1$NFXDy9h)Rp*Ebjs{WCXQF1hsHi$uJ4fY^&Xoq*rk-A6r=sDcCs29O -zG18-G5t3^s^d}TBGJ$NomB|1W(c%NMqt_PcO2~fBfnLyn=U%ay8p>R3A~r-;Dv(H* -zVRE788{^lWOAEoeipCotCJ3?X8>orqC^e6wwJpN@=T@a`y3U~BeN*!Wur=lr_H1RK -zKo+&BWzf1rS-z@M -zlm(iZhbsjjjdE(s6xmVUS@YPb^N`yp+ZVYa&cWtl`mA~E+IjlEObDuS+30$qy{B#9 -z6NT7gQ27xa%|M`vyKmbY0Piym?qk#q@|UTR*d5Hv)$Qb;N9FW6=?ZEn&0zV^HTgO= -z0~dGJxQi;JoqIRfeL6GhJIlZo2Psc!8U-uCTV0ixd)0W(MP<@zQlihc**QE1Xb`O} -z=rdA7amysxBD^y*khm!`6N!&9voKpX0f}AI0xd!9iPUvx4gtf(BgW7GLsK!HjNt#d -zJ%SAc1WG++4m0z^jAjQZa|n_ll!P~?0$Ccs$09XWg-oR_aIy?!jR(0MB>k{X2D{e}+j~XVf;sAkDcV`D -zV9P*R7zE}IlP0ANi#oA|GSA}ws9pZcI%NMh7ymU=<~S;UKZEohO{GIfw=v^{n2_<< -z!@~o$VJaIbbBwO+I7n8x0BZEQkIBCN`Y{kWR(3D8QH~p+KCefYx@45o#%|iY-FICaI+idX$dB*s>H> -zjEzZHZl6%-XJ|Lc)AUEdl3K{Uoa8?$of$1w9ja1qb$TkgW7L)gEtaJWlu~G2X~The -zsTsCu9*VVdBl+i2*Oh}ud_4s@m?m>+;gsyXRezHa{EcG!7JVn}WC -zp)aM2T7lJc@f;kw9^M1wDv@)>v}TfWYY&JBg|$GIvxm1mW694LH1_SJOm!~jqCh#= -zeH2>I!`*!YX#g;5jGHZf7GnX>ckFbe->#*fv#R*4D -zg|e&Q27Q66SjKH<7ur<}2JbW&yc6t+Z9{QuSuL8Ncv>xN_%Y8qlJeMyk8hyZ>UOdg -zVNrX}ADSHOMk`>?(6!jGF*Gm^Xc%eM9)Zl-B*O+@M%BuJg>Jxx -zwGJZ3)}S2uST6xGKJqaXX;#|*6g3pXyYOqnX*<9!gbCbHyqGb;<|_W9sawc;N7@BG -zqo$%yXzl0JhQc?y@E<1jo@$FV{&4LV>aCdeH`Q1VVBb2G8K?#Xwx2>v&HNl@eoiaY -zskYNN1cTd=6lIe`k3UV?#9;aAF37z(?P?n=b -z@xf8cL--HpTs49T$0*Z)jWmcJZpYRck{pLLzlu(KFVVabCmij+Vjvt_Ep6d2!}=4& -z&in)%TB=yza61JhqcyVZJO39@576g-A#s!cOC&z>e}yEC{4$4O-DVC2Hj)Jh)geGQ -ziu-`jk5Fh=0*F1=Fz^OkoK%3#oaQq*Ztl(~K4A`~U65<)$){3V!6fq6=-T~j$dLxk -zBbUO<)nO$5FO3W8b-Oc)#!jjHGg0iis+2bAlkL<5UewzZx<%DMXAi{0z3<#B8_2nr -zIT)YdR2v#>o0!Ao4Ya!28&w0oI1WK8OyK82HgKEs`6k+-3Qx>p4+xaK)HleHOKnJy -zYXUzj*(`@Hj*$Xj7*%jK=)idZ7B0M5)kRheUHUOC+}})&v#D!R6LlQbERP)Hz^{j} -zo)toF@>!7RV#LHIt&0~Nr3KPJdhs7MeTFGEY3)@7M@``X((w1902JxkdKrlJ6$;%X -zqQ}u9b}Txxi0?d -zI3SXl9Ja3{)#4$ysQ|;iL7|)NoE5@8a@>aoY;WSfLlpX{xX~QHkU0Q@?3H$uKtMyF -zY*w|A6>JzqV=jL|B~0~M;r!7`bMNaL=j;d&6 -zMMq(!nOFr3Dk-e#UuYWqR2mdkN`u)|{TrZ=8_cd!4P|g7?=;&GRtRsyM{#bkg&enm -zU2LHy{tugy|HGzyRN;sheCfn(!JI*;z$)GjER6%VF*w7yep$KIh7~K?;3(k#!uXF7 -z0_K6;!7dtjal{M2enrPR9i2R!9Ctx(UO)k+0@y(8UWCwP`gEUSZQ`2w2`34Ax{q#A -zU~3=-sp8BR700oSw=axy{*N~^>mk;&&=SBkekB~*4@(1nFn`=|jkitm4ouRZ<*%hs -zS!&&B?*O0u+;0q0!r|8axMo|_@to+pNTSep9qnTK3JumpZy5}Y6C)f&pBWlFD+x-z -z12V2Cg9>UOLe6b1U_T$)y@1?IJ~t33h{x24}Be#~q~5jr|+IUx(&sV5(dxDyri> -zis>B`dO%swtT4@|BJ8qM^^rQitwcGFTKP;UM>Wwga&*G8kV7-rIqe-Wqe%2!2M}T` -zso0e{ROq2{94Bxg^nw7)RpbI$f>vjqL2?f!{R)JXK%HGnvC?r=xJpc5#}~-uQlYT} -zKpH}kkIA<1-Dd0#?C?@oydZ}20I?tL;M@`B^Nh3F7nr3;!+$xd_$e&aF$8>_-W1GHT4pCys!% -zofoo4=tAvi6Qoz4Y5~%*af@Jg8tZr-V=jkFucR?f^%i`;EwO_)PDYJGprf!vR+pi -z>o$KdOci^D*(mh0)@kINVDnG-laZTjNFzZZyr{}wlTbNqhKs_XC}d1v(l%3VgHx?P -zH|33IfcTa2z_`N(;uC<=fdXtNXNkVA_0)sCHLA1!6fbG!arzqSg?X!NYkmB;_^3pmlI -z(&@{vS60-#P^D@`WI>W>s8lRaxOu{z0v*Nqpv)+6^zVCB*qWcR28R+@6`c5$2`#KrH8Uz5@nPZT3#59Lgqv3*r2&*^-mLuE_ -zK>&6;SglvnX@?|M1um1e4Di-@>ZA?zJfkEQ!kg9dNL|PJ8vF+!aQfd_v*8Sn;Y(X^ -z!qLe8VKc{1Ni~XD2RJm0dYGL|A=}`gTR+Sgp~Jg*Hx8k0MEh|3=bJ{o``YB*GFsk$ -zb32FQeN(ufb3?(bq`?7dn~AQEnjEyQnPVUrOzyYHL0$f%$sI%v3i2l=_absZ@?($j -zurDD8FXN{s_cC%=vCmBI6-;v~`9C+gSCN}W{x3}KHRPs?k(~kc&M@N<0ka<#NdgBL -zSkRyf=5AzC1TSxaio-z29#dB+xVY<}PO=fBD)3*Kt42;LgYy=S>ucDxYPD>G -zTHm5*pF!61yne3jzg9KktK^)+wMV>7u01j_pI4ktuIHrY8PCZ|XW_gX;HDSI+Pa>H -zyyYN2CL*5SoA?hA3{VOc?yIxe`^Dqsr*sDl1JD -z;JOrt!K;xBr%WT*vmKbGMXsY_xw$@81T7B|C>qggABUb5(d#msWT3FI`?KM5#Bo>V -zDnks%sQme<7vh*L{LRrGq?` -zXoQtnHl+Eep{@8i$~?mi`>ov^D8HY8-8yL7?krIxTrm6~A2OjfK`@|~`=l2e2*tF7 -z$SP+POXY&+64C;wD}b;wz;y-L(*r}^v92_J!?Bbb| -zq{_?-q{__mxXNHN?1s*I2iEARNZs1DRZJ+%F)Jk^*`Q~C!L_LMnV4igdT$p#$4XIM>hud}v*Fp+GQ9Fr7ND+eaK -z*D(pR=$XO)ovAq@*`0^oFHv(beLaQlQBm2j(x>|@OL0v^^hBn+atj2c;7)5RcXpPw -zkN>+%c8>czRRcJ&JIn|OUB7^re^K6-@sNf#dOL+A{DQoQ|3LFBqoZI0Szu4@Y4+yA -z4u6A2jMEA+-R@~H_(fzb3cViBy--H?j6-M3D0IK*wC;-`j|L|&Xk9PTx2KmUvs#a? -z`&B^>aI)5XB<1;$la_*O;C%B&;b88WGD09Lu~TE$armf!>u=`O14wMMeLTi{@ioaf5D##AZO_0i|>>pD!~)#$n~KL3v1t}*)j)i!-vZ!&2tGkB>K2I#Iz)a2#I<|?0vIqWw7Ef-el -zUM{EA?&auunsbM7C1o$R*$kuHmAeX)zMn!nWDXFKrZZ5v(6uc1I$aH+n7!DpVqj^u -zwgDv90V$+(EdSFZCoRVEKS$OQ_#?3Z_d*Z>yCB+1Z#?(j{?a%1UR(P1na9(dxvf~# -zddg)pUa*^(7_amWvsYGW;txPEf=-Pi&0-49x-j5i`O^m`aX# -zw`Kw|c(-QeOW<_`J7AF+uMI>r-7&&rFtML=**m`F#JNMvz`;#2KUX{M^`LNsN1*m- -z9$}C{WNOpLW-7?|`9AM{Vncl`lt_qba6mKXjfzwyVv)=_1X+*&P$-kcZuwppc6>QNAcP -zUjL)^nlkP4UnvTm=OiBCj2p)Z=kp9@R>GPilWD*lX5gTog_{TAnn;4L>snm2fc;)m -z=Hgzc^Ei11BM -z=*kHh09Wpzc+O`*WDb#W5f4ElOp#GhH9Z#q$s%lISKViJ71-0{B^3N668OD0f*szL -zGvWe(ltZBgl{Mi!3bxRqD59z_!Op*$!Yx#eoaYkh8o4$#30u^-Z?<5?*3gI_DG7<& -zq+aT*apns3_$%&GYh#)ND(fa-?(l!=XDDQDVkO@%on@NcpIND%D)Ty;PUAv{M-sXy -zN2+w>sogMa{SL`_K;D?2C&?sUllVmFSo`HfbzCe=hjZXP{~r_o#WG$>vNefEzsA4in5fxM!vmvPR~q!cwhNuihhldbpRBx&cY&N^8|Uv)QPoPe(C=XSG@{1F@OZ6uw7WT(}NG -zeor52}wRBdy$NxWFOXO86_uU!5^XI -zyLA<4H~DUL<%CBlcn?V90=~PmsB>X_)ZG$E;&}vxP}V0QInMtrj_`k2_nZ-Y_$(ps -z3dS9DDe1+ZN97ZC(WtxCGm+WUE~E9Q7{uk|3W?T5m)Ki&<*??*f3_**w&|v%6y+ -zqH94KAEFAcCWR)9@$59R%HladRrwp@d(z1LKRiwCy;zN$3EieyC2{f~fS7LW{1k;b -zT=+m_I)$6TIOU2oUOY{?aLXK%ZiV0j -zLNGDMMc=79guUUC!c&-E7#ajCo~_z@7~uX{!HJIlbPbc@cZgI&;dj<9p6%ZtWe|G# -z9jL%@90JpHjri6TSa(^Yq{&hKg9s -zhiI@y65M=7t}VY=hQ+Pui}7D%7hP=ZzvafZPx=9>Y~(6!XaI&({ZK9?osGNd^^{Zy -zO0JzdvXI(FEt6g%%YXd9Imk^TUjSQF?h0Xkdif7!I|X0VE=X+*8_PdPd0z|gNfVG@ -z*a^Uk+{@ws9l?_EQbA?x*=FT42B#S8ZqsgFs(m^-bqgi^2FY$DLT(MGQCDaUH5jpk -zlO|BP_2v--In1J@A92pH7CA(&B+aDQ)Own61pE`7ncUhVvJqas7?_yuTz-XtY@Z=1 -zs2sfR`=C!8qokjpO3U$2OR>>g2rekZ;vE0Z%oo%kX6hJ -zFrJ(g#;^lgwgA`l95K&&o&OD{3FTp$$Z;W#tN|;A-Ou;m+vcFqoeEgMesS+p?o=Sh -zcPfNk)OB18BzLapSg_A@wpDs*0`tEX8{HnEhiM5Hdd#A3r^S2EijUkX2_zREA71<$ -z7DR~y%9kF6ZrXc5ne;34DF>9ylW`;|LdqOTjx}eIAaCwv0SktW^uTW*!1$o?@6r5c -zsDf?(>x8IV*BRj>$@;!?$_Jih7R!Yj%Cb3O4A%e6M!8wd-vV3-ffbOBq6#s?H4b(p -zfb$DY!+R*{H2~3g?4le<`)2avU5-$rV`mO6Y+a*XdJQV0i&aLrDLAO90k1ALIk@?t -zin}a!%qJbj#HPC*_|UL5xJaQB1uJog)lNyj!+&l{!ub)bi3+2JhARz#zmvie%4Rra)M*$x$Mqr#?S)i3E!oTHL$&~4f&c@#z4b|?Z#NqA1~q -zfrhv`Sl&YA*eax`ZbC23^q}q=Xl&JIL9XJubd4@PM}z62^gL$r>38`gEIPic;zg{hbD>zof+z3N%c7 -zc4vAK1q|`xEff*r&4(77Pa$*T!8=CywHHSXdJ=_<+36jFTnUBl!o;RKQV`@2nXXrx -z#D^eo2!_;QoVe_yF+pH5P~JsmpmWj77z(X4lm0g|&<{~Kl|pOnLgcQZ5RPZi*)A9W -z7;iL=`j9*b -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 -zbAPmM86CfeBtN7Ix?} -zn;8xGTzm9oKo2Y3NDv+UxvoUw#)}hr7lj^_oUc(lU#YXi^OZX51kaa;8zc;AnS+16 -zNiI}SCzA?rIc(o>N`;bGcERv&@%OO7-(?&c3-+~8YAOB$LEkCuf;gAK;shTu35Pr& -zXZU>ZIkQEdkiw8rZEZSJxi}P@Pc%XeQczR9h7R`zDd1Ba*em3L540PBssp2f|?f2jv5u5Ea{9KNG3T$P9#Gd1uW)+y0}dK -z^PGy^2!2*;OA=X?|lHMArweYn-Zn%wX}@fFie)8!WRY^UpSt$Fcl -z#<#Ww@*y?;E+i0=TOplF$57!)T5xy_rQ$8NQa9&rIGh?E-HseC{coivbX@_@9#p@F -z_shfznI;hKKS^@A%W>J<=Sf9S45%*GTxLprjSDk58I|iveTj39)Yn8I$8%o|w2|Hf -zGp3Dd#t4u%Y|7IZ&bHKdMXIH~#l(Q;h7fB6O5Tb!TGz3@HUYeh_pXfR##I1_!PF0A -znh$?~cHZx`lbVGf;Q>&yz{I;0jGixh5TWR!)GsjUAyilgWWn9X$Ql;EwI1z;2ReGu -z+E$81#ebLU_)ifb@D4El8EOuv!g^HzlxGnRT{M6&9PBG}mea2@+(KgjW%RFs>tXTH -zADYqQ22O3-38SV$-fI1E4P{+5%>zOtHk5s%P0-mvHi*wc=qxopsyCbrvGkpE2K4Y_ -zn|{P@g=Xe;~zjwUW|;)P$sBGh0OLYFP|F%JiT}=CmXueT~m5&1-zkP=DY+ -zY2idpTNWZ&5~L31Zh!?qv;#fng!p}N-lDT+O3PH|v!B+uGt;t+*LD-NV)Pz9e6C{! -z!~iJN>K~2-dpd*!C^!WGB6qTmB2YMOXkse$F}9tI3j;o#kH6!mwfP-uShVHOA46hX -zCdlm#O5rZ}Mvb+LZ&9$8@Kv669{_-7i(U{zO{fQ7jYd*JY2)eo1M{jLIa^jmd=S`% -zjPhm|WAObkly(+W03Y|sCKQ%q5#~O -z4Dh9czoe}EZHeL6_9cBulPnW&;u)(+udRJVjyeMnqgV5`6V1Qut8#m -z8-4~V_*az1?AMK)I$tfJU=&jUCYGyn>>REcr>(*s17s#PEs={NfJ}FU!Nen9rnKWM -z3u`*d07g?EVCQk$nq}Qm@k@ -z7y-Rt4wL7@ZNN53P6;d&Z2NZDKN;9I)b_F)EmN(1cXICJ+Mpqjozlv?P5hD8e$yiKv;ujheY0{gdSUr(I>IPtsICW2@#ae3h_lP&kMBe^;m% -zyZ*uS>BRSM4a1YM?>}!X*$CE*Fl>Gu;-+}`UI5=t!TXR~97mNSky}&X`iO~dM*Tc; -z+p+ddNNzpW!h-f@RkDSSgzz~PctBboi_d@ur1jzWjqrf9?xMg@`1~J?=PbmP;D_Ur -zuE!jP^QtsV&f#`VlXK|MRuuYpbfysS5V$^az&yHGQ#D^X@t;daCVS&ILMR?cjjy%9 -zE^sK=0M3^~{xNuiFPFdJ#K$cDF)Sv`+!-PCX~BikS=%Mt8Gkp>&nC@u7JU5iyQRj! -z@lOy8!WEBj0Uvzu9pGR$j#o!ISDdl-Y)~tfV_YIaxC*x`yRX)D5rhq6iNS4{&9L(w -zERQ)uR627nmu&&P;D*W9bxY0M#P=f8@clnX8SH7pf((NgZ-AI!rc#2=<|dUG6(@04 -zFaca~j0~jm;$v|Dgj^tr4-o$8aYDe{3kgg%1F^Fh!IrqW9^FB!KEgor&6Ocg)_fT~ -z`6K=igM`Z=G8|Id1kd%VR0O)NQ=SmigGxK1+(a;Jml3kTP4QpxEpo#b@`xFPe}NPh -z+#&aiVK8!dp8pPI!t>0eZ&$9p2wVK#c=+Z5unUtryA8f{$pM3C-T-RFqKYk}4%t;| -zd49N_Y+%WPIIDpN%Z#uZyZ;y-m(Us$LlTw5yg|E}x-L)WI8~!L%9UCFT7xrlMB!g2 -zM(Cqc5><#9E;Nr_UvUzPY@sk5k&#ws2ZZ8ip=)7|cywa|Bp%b?mgC*65MaxfRzQT% -z4r;oe7PZz>u?=7=&{GfZGR{||iZsuc6$>ID2vm+R_4i9H*njG&QWq<_Y}t4Uk>Ji& -z7>SQO=O9TV&kvAfkmp>A%}$SBbRHNPYU1Jf2#mtBAs@a4XUjzU{ -zzh@PP|Lf`ZUuXQHFufo8kiwf``+gL^=p5ueHn~5>FZuy;pP1Zd@r%wy?sJp-Qf9<+ -z-~g)?dy#P1X?Qc@vzEJdo^2zG9ZTo0J&Hqe*ZFV$QSB_#oUD`t>##;l8UP>o1aokk -z1V<^HgPi_EJy2G}&3oH%FK7pL$V=0=*~pf22+3LG&tKl(o>)OJl#d`8SXbNUey;FA;JlM~>R6T~ia5;VyWli*b> -z6apkr2*dJdnv7ntRjuo6)}TQHHG@k4R~}O3UjC0G#MFiOw1o6B_WyM+c*PI`GXavW -zpRk_-XRz4q_7~tyj35I0n*loa7Y@9X3QaQ&ryCHqsD4(FJ^x_jVsG(2r -zW%>c*-7O73(EmSN1y795Vi339m@vbJ0Yd9C9FsS!1(v|X5GX}XbI!0syE%fEK{iY9 -zeirnzYgl+gpBF`mr^&}U_-qd>4dl8eFR;L~I22?p%<9f&nz4WdpM@xzCP=5i4f5_m -z07rzKjX7hlW016eszBC+H~Yv -zGq4Qj&lp>WpxYc+VD)SkC8J^!D;aD}K<_yN+a7w)8ST(}u%`o6#(KeHT$2yS#}*># -zjL!(8Yj#sGWXcAx7-S=aq7|+z1Zs5+o^S}PL6x**u=Lo(yO#RrX~MmU04`I&xzff0 -zGc5&cyBINMV^`CWQa!RTO0mOk%C3}2_l7*!T|=XWfm(^^Z)k_SVs3}*Bl|Fzy)oL^ -ziMcFJqlW=Ys~U7A`mBOn@lm)+ZHRdHe&aSZ -z@hZ=N|L&3h@ca)5B?@o7-dh5h1B*7>5|NBv+R#h36PbpUcRS18wlnFkYPn@L>+G -ztf#eiNjp1$Md2|+SpX?iH<)A*61P{d1ji@#5kK$Fz+0-v0I%Rn;6pQ}av_F0H-J>7I+&zRaAM~O!{?@H|Kzm -zdgf9r*wuBIA9xmIBWBwRAkGnFnq6jo3ox<30km5~YF_WUJ2&!&fw*~K3P#^Z>RKfD -zFy%EU#7fs9aZ|7w2^5|hv#6`g`mOHk1p;#}$gMdq@Rh7sI}n0ldBuS8LO6(I1UdN$ -zd;!l_^9a8C$Rzazp!Vq*MbbdwJ88Vf;0?uhAG0myb$uZZ^6l8bx8gAie9QZm?-eL~ -zs4jrpqoeXE--`xvG2Dd@+y%bH7p@Oc-V;2@k% -z$0;4(f1i@WiQ?wz%6KahEWN*}Fa`gy?*bob$Hd0qXpv`RmVYet)`OHDl5pzu!Qcgt -zP`U|9OCN&V66DN4C(ENL>F`eC3ERgcaoNdPqahJEq|wyOkzl>_)A-PZ;~WiSn%_wb -zjOl-;J}^etGw}J?=)lAn?cO!U0LXXFZ2(O&ra!JTany&W6w`m0c*wCfQp=b39auON -z*2s#13c@xC^ZQF}Q$7}P);|%)r!lLC6yIv3#lOj?yVG$E0^e~jfwyo@&&k+h{7u%G -zTzFmllBean+&4`|Za(GhHn3bwiw?|JGmQ-J`3)i;65!J>(a|YDSrdLW0XaW{+tH6Z^8i^WZ@`Y(qSFkp6Q9V(wY+zS<8S{_-YSz(wtO^`i`EW~`&&S^qwyPK*63q=J -zplje`@;BYhRCmS82(M&JY_u@};P0nAm>Bt60JVAZVY9sXkPaJ`QNZ-MeC}DBfr4tT -zvMB$)_*urg?EQl*++#b;u;7ExbiBv7P@T0)3VlB9VsMcgb-VHzo`pTe-#AK#8&qfs -z>wpz|0%WrrD3FIuGjM-;^1Rt$p@J(O$5TsCV-7u>zzZSf4m_I6i!Ih^!|J -zY2aiTa>aXy7EL)geC8hPP2lqo6s&orJ$xzf%h7p{nsqQTPHNThU>d}FPFYs*Dn*$5Qm8-rUSa{Gt_NAaF -zFz`QviLnC0cu!&w8}w^R`zb;Jf!ei(xZ{mOP^e -z<)g}%r`mMh*5$WCRJCt_g!9y}|3yoRHiS6{L -zT*~0j;5y58IcafTk2>a}hB9YKJ5D${|Le!Il4R}~h(JNt*fKbW*PW*J`x5jB}Tv&%?Pou!FUEQqdcS;mE? -z7j}HEE*r-e-`AiJ@7rLBCo@Qxw1N6U@TK3A7ncy3vGi~+YTOlCKa@)u7lVItP23d$ -z*%;rw7mrJf8iO2fwQDMbd0f*x6TD{}!x@V#zos4h4F1+xaC|~zLA%<1<6WVmLdh~v -z#+8^Kn8%w6+=jWZ8|*%#RN;F|LIrs}H129%4t4BmUCXqKL#4bP3y-q%Y@7K#YHnwG -z`85|>8P`F^VOS`^AZPEhnBOw;?lrT89cS7N%@3lmS8iehWv~Ws;j2~5MroR1qZvzR -zr{v_n75I+h)Wh^%< -z&0=t+Zib5#;O5)FFBjnRaoLr32YhuvSE| -z*9>!fpK&LHd-buMx)S|C?_XTAM|8T|kR5z8a&9DoY~ -zL*m_zHImWGN1<>JP`-TbtUWL>oO50o1}THb0zTuyvW({dr;xBMVdV%Eu48Bk&HEuD -z8{>HogL#PNF;FD8^ti44RNQPS%rWeZVu4{l{H@FtBUzf-#iw -zk*NGg957-sK9ZR3jE`V3a64Ve%mdF$kHWW-3v<{3$NGk=SkU`XHU -zs7Wf(0J$oYu+7Ce{_hx`?UMhh`M+bj)+9BiW(`;Q7Aln_Y*WG3!wWB>JjFVY4=SE^lDHq24rs2)!^)zhp_xCURcojmR=rj5e+|hOZj8bTah&P>%1;E~10=^`Z#vyqS9wk2J -zT==-bpy9ij=V0e7xcZRjC^Y_O;4g=uL6|Ct+XiFFL?MXX`)l4~SHR?M%L6}y$20G< -zc;3@mctM@)&CHDkFTarQyk^#!X)crRyk^#kN`*vFUSs@cFq&TYZG8MjQ?stGunvW$ -z=IZ{|b>_+el+3Tn_idRLyCwtQkFHndkH$A(5y=&%%ocX#R<`3!rvnQr4?Tme{ZV}X -zQ?Q8s*fZzXGU?GLPB~>_S8pK1W#rmL#m< -z@+URvIfx -zxvN~9uvz8!hA2X3k%JzRRW9M2s8YUbIv28omUCchS;K@A9RfqjyQe4oYs3QJzl{*- -z2Pq4IOL@?Kp;>j-UV#nE8X1~9_`l0!#j-9FMKJ3uydwHGWsShe5BeM_mK*+S%NM`R -z;#~{lXP?#E01n|SJp9R{pG6Bh|8V)AF5{&1ipz8j3?mfsH)JrvohKiotg|H;G3#8j -z9OtM^6v7VYkKY~I4s{Eior{6$$-5)L5?BJ2tP=*0%D_BtHpUr`<&xp{!=DpiX8r^XSm1&3G9g -zjcKm4f2M1h+;G;D9~N4A@XPqw5+0<&TzH-o;%gpf9k^M4$R-KMA)%{Ewl$Zv5+ze$_O_H!1e+&VYK3aMt!N|(2Gb3v+{}bL>K%7T-E37)ni6!-4W-9k5YT8u>{0D3I5z1N*K(y!jpg8tF8K8BF^R3aJ)>BIhcl-J4n8=K -zWb~a_4t^6Tv2e9aSqIFH!&z3|8W=e6U7+w+$e}rMykd_aw~~z?(PnmIKN$ZRc%9EO -zRM#$C`0OW{0iN*P_^bo{?SQPO)xWX>viAKGUI#e)%cI0p_{bou!@%;o&Djm#ePsZr -zebwf|vi#{r=4Acx1ewE9ChJ{;vv&<$ziX)cUG0E9L37K -z@eaFPrZQhGlwJxY*Xm!Pl28+_z%`K-0U2Q>WoP1}0;!y{fsiT)%qn%oTejh}dOZ?| -z5R5R?3_BED@heXWyK?z5sLBR_*Z~}{UBS0;>oqj^SSN28fjYQZr$*2`M{Pzr9x5yj}it#pY;qeD~Qu -z)b%`27{X>_@*y6fE{h5_!y9NPo>r^afCu4bG0%ejf)iWSfCtm?aKYl% -z#$(x#e~~%p8Uyk3y)rCmSfBik84CF`5O$#+fw^bn^dHVKP&xa^md-U#DI#o@sRXm69zucz4BbRR*nPXs|B6 -z{sxW=KuuZqY;%J$8?Q! -zKBirXb-;MV&;$?*fd2|%6qZ6ZG7uRE)G*^YkPI1q=t-qJ4)S>XqIbbOieaD*15(gf -zpTUHrRQ9*bn{XYoh0#;5+Tp#6ywyFs70Yq>nk7mVFQAZt)lK_;u)hSi%PYJlXfyXjO+zVJz|6DW5K|m!ZTb0 -z%W<>xi4TCIPge(67eYFUg`0Mix%Re10a*(jdO~@5jhMXOi-(^83eq?RG8>45=28AW -zV0kg|l`rOe*}tI%b)L$Oni=gEc6jSP+|oKP)>nwVlC<<%YPj4&OQwdv(Gz|y!EtGRezd4D|rtYXw_d#P8vD -zL0`gl>cSqAhqG8=&90=@(lolY8pPnELc|)$%eh!vp@JB2R_Fj^y#MqD}21eDc2%Ih);!#);F;-q)X!ny@N_s9oM2 -zC6@n5*-mz0+v5m8dK(cFR*;$1H}cR$b`MBu9A%DCjj?3BA%%hTn@|1^=1|z3ZN99P -zecWuyRVG`t%U>L_WHz6sk2kj1y&o)k=V1_A#hX?9Gc6~zd -z*)PTPeK?0-zFICH-09`|%!OHw1>F_kVBqB{HxZQ0MhwQ2LJ76D!UHtwKz?E%42%Dy -zCL%uJ3hWM7Li^>!6y{@%fC8L)O`h*7*@Op_a3et8unF|FgTmU^K&FB{#-pRp0so2O -zndn9C2QXxQnjKibzq;a#2my$n%tfMP)9p~EV+*Ws1=mGzKIE5!dpZs4I29|INy+) -zvHyber3zFP6F0-TzpsV{=l^fi(7#I>JNuKyfaQ?0LDi0UB0T3((T{pEyggFLRM1CK -zcvc4+fvqfVz;_kwOLM(dGQ5XQXa_FUOu?T*6hI?e)<=W6$!1v9(r<*^RJ$7lNgY4d2RdRX<3xZm08{v`IzQ){QjBHZX=+U2kQk0iF&kx+-GiDFwq(A -z!_FVxQ_qD7AbJu&*iaAHh8(<_ky_E)ymi9-3%2VFe-ha#*Ziz%T!o)ZY7F -zeg9x!`LC~?9X4#x+K027jZWKd1Ztgd9qut;pkeVAC?Jv5b?phLzc*fgWHBuNd_1#o -z&w0Q=4Oe_Fem-!_UUKAVKrm=J8752tpLg%VLjCtce~?D(`z!k0LJpcECPrW<>m -zSaD+4cA9bkS*0mOAi<#$Lcpc`13q#ASw#ZGi5mwFq!m(;IKT}K5#smeW9@a)rj^*k -z{`}s&_vY<;Gqby6&zP=3-Oe!EOZ!OBa<`G+Nu*!Bg?ua)A=0u#kyJ4b_9J70I)MkX -z@Rc-r&eKB8e26`x!HPDwl1HLltnRQpwSQ~iV@6!Kbv*#Xd -zUOLzDlYVN@0gAP_@lk*8=>3$Av{#024ybIk`8|t1j`yRWPclYhxw3NA`mS9jm?O9M -zRMgRPbf&Rdu01gbg_pvi-wZVwN4~H_l>YnM<&X42a&}VwM>uWCMw>(SVg;A#ITP=) -z=ru7t44|eTy@sa$5z7#Kz%u9eIPZ^AEaqLicy#E;#@;&}*M}R}q4qEeV^2Qfg;gq~ -z5zkHqhzxzA<0(Zl#%Je-5mp+Zea0f8ExJF@o0LodJ*q@Po=bRPywpyIDD!GJ8eO9) -z*8kmt2mlkp)}Jg|#HjDSw{lbT@F-SnF0KR)-|V*1Uwlk|m+>dA9YM^@`reBvto<=m`z5WTZCZFO`vQO$ -zs?PzKft24<21hZPAAFeav)LY -zv5H7xk3dJ2YrbRbL`dKAqhCf -zJvMPe%3*sR9D;6qfuYK&g-{c9Ho8o -zBNCs#O1NKKbRKn{VqNV_^R*v$YEMVK_9W^N?J3fC|Mkkmp?xSnWdCT>;I}B=-MFOq -zvVT!KlGm^G$*Zp>=PwiP7YFFuWVgG1)Fb$$h4Qg@kZ2awNL(Bt2`n!2h+j`BInWr# -z*kDM}%tK~_A3dqc;jW;SsSy75S<-=Cg__oKj1I^tS|RKafAFNdkU`ZG20eR<-=Wun -zd^FHcYOF6nVPkApocB4MS$}@?FkfE!^qbUK_U6$SpP78(xnoji{KMThBF5LrfWf9y -z(<#eI@M?LzbfT6omiY>=l*=VvNmh6OK)4(c3x|rLmrCaOXLx$mt{(p>4#+IP?BYuWmW2sdhlt6q-09Sp!e2rGiV$m -zH3APV(mMz|GK@@&phW>UKwY4ti`+>&yy&>Y4*CPyVS$c1=|KI~K4;spn|4;9LTE0o -zz4m&3`?cct9{6=4`u0ucpBdi@ANdpBe=HOIUA%ZxGw{#$3XzTP+n4|LMtIF$zt}pM -z91tZi?|!-Bm3QvTz`MUndHa5O*ZlnZIOhDx7ws>ee)-k2TCq~z*(>juLH+H2_2n-f -z{n3|S-0{lZ`+-j@^yxNPmNjF|+P3Z3F*|P0Mx0n|W@ct~cD7V1l}r1jC#A1TFG{aU -zZ%V%@m-qJe_V-@w?>~P0_{rlJk6%50^W>W+FP^-5@#4jsSFgVR{`)uI|K`n`gF`+T -z@xg=-PL+Si{xSOlZXT%S2{+HVdBLqitJUShLp~hyQJarOeC+e_h)?j}DYsjZ_93^& -z+@5e}Xmv++_aXP%+?#OklzV5~Kj8j^`%@nDc<_LSJswVYc+R5-JUWex4|&|?ahE3} -zXYx>;j+dA&c~z0sW2>jwPgo(tIU%l*)rwl37- -z-cMM5%DOFcVK<`G#I^z;lU@I9Y(}pNZ?2yaDnNNZUj~ -z!FoM$<~Nlq!H;%ZhUteJRxb~cenBonD*GL>2{Z+IJx -zjb|G#H@@5WVdL$_kGu8V#_q3nU+#Xl`?lJ^-y{4zd-U?rcaPqF{_D?Qe*X5`m*0N( -z?c3L{U;ps>?du=^{D-%1VV`Y|a8_k=b~bm#Q(0GK^PIDCD-|oZiqF+;l`E=T1?h83 -z%Dt)FE#-R3t*H4j=T*L<3Kd@9MP9O2N)?4^Yxr8LaEU#x9C|c8py?@L;dF-BI4tDh -zS6JT}6Re4Ty=-qZ>_^|(uYa_+y>0J~SGlv}6}Kz39k1ryC0jLe)TqGYn<=_^gKWE+ -zquL79Z_p9A)^3^_t8{_^tL{?0M0Md-Q&e9RnJ7nQ4zrgM{X)U=dkXps^i@D|xo=x8ld -z6*@Mkb(>lUI0^@#!_zuCYdRldYp_fWEjQRCj_)UFKTm@KZ7)%EnFd7~T%*Bt$=U#l -z`S}t8cs?)GqEK#-?Z9Elwhc4;+6+>wE8#CweVu%h^97yrcUeWwrlH{fq(s$MbOfrp -zAo+}{rz=6mo-WW+R75qh)DTC!EO|MqU!l5G$D1P$nw8`N#uXeBm!kVQx>%;+HM+P( -zXLso9ZRDntqF)xsU!u-3{c@eYz9|S;04k>LPbjTRz!U00wkWGX$1Rj(KznvGK=`w(AFU(poMe_I -zHM}b;N|pl;KcLhQcom!vQ=~_FB7^l3<(>zs^-cqH!3!A`Wbi<=4nSGeHCYoa=-6!&G -z+Ml6X93j_8`Hre#AaWbmCyVMa+MA&=#&BXQ<|1RufK)50I&swsltgg#safR5s5V1; -zqUVg%H;y`k9&14KO@s#EMvh1gqiPse!&!AAHflsIi-s|3%}`xzG;rQA&Qu#G8K@In -z?t}-VVcEshR#I(cpc5Co-3XOuWieW+oKe`5mD);SXpg87rQL+o*~T3M=j8uF{aQ>J -zqdUE~OdvTDqzD!f%?c -zFgSDm69-RcNQ9$@{soFp$A|*-=lJ~037nEU?o&i+W1ff4zv7Pj7x?}wC>UX|xd4F~ -zqC=eNe+jt+zW)(2fA(AO!@nnn!1q64%={&w2UjAh;PZd+C%*p{e&XcSG1{;*oe+Hj -z{-4G`pCKmD|A5aQL-?=Z|FvHbt{^!OPbeF^y!>~%_7%>-4s4i&KiowevDh$Ay}OwO(7C*ZUxnvP^Ky@w$!(0oGhyd?bOX~*$-TV*2;kn~-Y(n$ -z@sOPL=v5F?qwpfM=N1m0Dlb%YaeEt74v`j(`9p-GZ5@t7TX^$@!XXan -zNHQi-;4K&o9l^ufNd$N#9tt*&3=)pun9lqWGzYVQa1FL&L8b^F1DSdV&&qHJ6%=gH -zvG^>7JC;(yC>@8T%p6N8^^gJNvBBZ7Dcmt|7|0CG^iKm$=Ggdyhiqtc9M{UP(hp~yz}6?p-v`HN#``$Xd;*0si%tL%9Vy<; -z!B88K%9cWSMmzUX2b5`>GT~Jn$^ekMrfm~fdq8?w729EYGi?)BTPi3xY?}(=X&&kc -zD_F!!J>cMB=ae!ymhrqxCuDu$k(Z8WVu#WtP3%&7K@)c=y{w5nO0Q_*9;L5nqDtwT -znz&ESN(RS4CoEj11E0&OI%PU=m9eUdIH}S%=5XHP&6Ey=hgSMV=9X}#nOGLt=pImh -zZZQL*N%`_3QrAVIcA_}lyE;E5Ds~MLx1nUP&sU0R_`7gg5VI~o{4!n;#)yl53N=M;;@L?PDKMsl5~2lVPKw+Hmfc3SLV -zp=lGnaDfoIAUe;~>r!qr547}9oy~b{GQF@m)H6jvza%J1&wvE&laM1@imW(vQ$h}K -z7)xLNF4Kn_iTMN-(PeQW^H}(OxS>}{U$#M+)i;RhV-d-An(3SUuzwPww{P~Az8qV! -zD*GmNeWXs7L$QwvZp*>ZABOvUUr;BjvL9le`VyC{%D#yUy`RA6zKN@kaN^N86e8g| -zb$#Sn5Kib41*c5^JU}@0k?>41MVSF24G0NPJRBH|4G`Du1kS+$;#x{AkvBjI^rkm3 -zr!bmNfg1x^GLjbbqC(D)ax;0{9R?DG)(lruz;k8*>-vy-AlZ;v!vo4uegOomYZF6r -z$_!y$0pTi@6P{kA=iZ&r#r7IwivF+4-@JvnDKf!p6G -z-1NM$hI)~TV?bS>4r7!+18FSVm+UrUgE92;0?p%N%5CMhG0R|VYz_`I{6d*d82i}3 -z4~@WZ$l!2n5;d01TuLxT6oDJ2USmm=6mAS?X{?UTMQD6(OrVrn2EAH+3Cv6kkS4NH -zWctLEa$@$Di7DkIyzOKrT{AuO(3=z}XRn*Qkgax?{ZRWaj -z9h@_ojm_YWJ$*>|Yl~|jrWBXEUvUb|YXD3yC?#nro>$;Ah|D=K9}wuJ2L$2|2;AEO -z0;fno+%p7{pkaI-E;Kq1(LxuMu*w(PhS)L0t|9IkV$Trw3{f@2eM5vLC|>l#o$bP` -zueiFj=5h-ws}(}ukB^qQw$4WtPSK?*tc7o -z?*>|>;ctbeA-W_yBkkoJbmuhbqCbcrW`mek;R#xFVN9)(IFk&9u7*Q{Wp1og7JZ2msVtG~?kb;+9x -ztp#`OUEFcJ@qaG=MKMuAWF@|WDf3bwbn>`W;VW=-6~7fadE#gUt@A<_X;71_WWou4 -zyTNalV`%PU+=V(Vk>@C1+No?R=U#C=Lf?VKCtDxR%Og@ZPih|( -zFL4IJy6%d&>hjYP+fv~yv}VKNYq)91%=4v%sIIS;Aw18MvXl^(P7TtAdj?DNk!nQno57TU)@o -zAhg^VxC3)Vm@6T3g=;0=50orJ$;1Qv@kXcT=okFA{=H-mJ(v`yt(6-U{11b_`CFp@ -E0+l`kC;$Ke - -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1_bin.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W_FS/4343WA1_bin.c -similarity index 99% -rename from targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1_bin.c -rename to targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W_FS/4343WA1_bin.c -index e48960d5a6..ddaf0f7188 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1_bin.c -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W_FS/4343WA1_bin.c -@@ -25489,5 +25489,5 @@ const unsigned char wifi_firmware_image_data[421098] = { - 49, 45, 53, 97, 102, 99, 56, 99, 49, 101, 0, 254, 0, 68, 86, 73, 68, - 32, 48, 49, 45, 101, 100, 48, 100, 55, 97, 53, 54 - }; --//const resource_hnd_t wifi_firmware_image = { RESOURCE_IN_MEMORY, 421098, {.mem = { (const char *) wifi_firmware_image_data }}}; --const resource_hnd_t wifi_firmware_image = { RESOURCE_IN_FILESYSTEM, 421098, {.fs = { 0, "/wlan/4343WA1.BIN" }}}; -+resource_hnd_t wifi_firmware_image = { RESOURCE_IN_EXTERNAL_STORAGE, 421098, {.fs = { 0, "/wlan/4343WA1.BIN" }}}; -+ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1_clm_blob.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W_FS/4343WA1_clm_blob.c -similarity index 100% -rename from targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/4343WA1_clm_blob.c -rename to targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W_FS/4343WA1_clm_blob.c -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/resources.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W_FS/resources.h -similarity index 81% -rename from targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/resources.h -rename to targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W_FS/resources.h -index caa02d34d6..01bad9226f 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W/resources.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/firmware/COMPONENT_4343W_FS/resources.h -@@ -18,14 +18,13 @@ - #ifndef INCLUDED_RESOURCES_H_ - #define INCLUDED_RESOURCES_H_ - #include "wiced_resource.h" -+#include "wiced_filesystem.h" -+ -+extern wiced_filesystem_t resource_fs_handle; - - extern const resource_hnd_t wifi_firmware_image; - extern const unsigned char wifi_firmware_image_data[421098]; - extern const resource_hnd_t wifi_firmware_clm_blob; - extern const unsigned char wifi_firmware_clm_blob_image_data[7222]; --extern const resource_hnd_t wifi_mfg_firmware_image; --extern const unsigned char wifi_mfg_firmware_image_data[391693]; --extern const resource_hnd_t wifi_mfg_firmware_clm_blob; --extern const unsigned char wifi_mfg_firmware_clm_blob_image_data[7222]; - - #endif /* ifndef INCLUDED_RESOURCES_H_ */ -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/nvram/TARGET_STM32H747xI/wifi_nvram_image.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/nvram/wifi_nvram_image.h -similarity index 100% -rename from targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/nvram/TARGET_STM32H747xI/wifi_nvram_image.h -rename to targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/nvram/wifi_nvram_image.h -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/resource_imp/whd_resources.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/resource_imp/whd_resources.c -deleted file mode 100644 -index 8f703bb779..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/resource_imp/whd_resources.c -+++ /dev/null -@@ -1,292 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Defines WHD resource functions for BCM943340WCD1 platform -- */ --#include "resources.h" --#include "wifi_nvram_image.h" --#include "whd_resource_api.h" --#include "whd_debug.h" --#include "whd.h" -- --/****************************************************** --* Macros --******************************************************/ --#define BLOCK_BUFFER_SIZE (1024) -- --/****************************************************** --* Constants --******************************************************/ -- --#if defined(WHD_DYNAMIC_NVRAM) --#define NVRAM_SIZE dynamic_nvram_size --#define NVRAM_IMAGE_VARIABLE dynamic_nvram_image --#else --#define NVRAM_SIZE sizeof(wifi_nvram_image) --#define NVRAM_IMAGE_VARIABLE wifi_nvram_image --#endif -- --/****************************************************** --* Enumerations --******************************************************/ -- --/****************************************************** --* Type Definitions --******************************************************/ -- --/****************************************************** --* Structures --******************************************************/ -- --/****************************************************** --* Static Function Declarations --******************************************************/ --uint32_t host_platform_resource_size(whd_driver_t whd_drv, whd_resource_type_t resource, uint32_t *size_out); --uint32_t host_get_resource_block(whd_driver_t whd_drv, whd_resource_type_t type, -- uint32_t blockno, const uint8_t **data, uint32_t *size_out); --uint32_t host_get_resource_no_of_blocks(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *block_count); --uint32_t host_get_resource_block_size(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *size_out); --resource_result_t resource_read(const resource_hnd_t *resource, uint32_t offset, uint32_t maxsize, uint32_t *size, -- void *buffer); -- --/****************************************************** --* Variable Definitions --******************************************************/ -- --extern const resource_hnd_t wifi_firmware_image; --extern const resource_hnd_t wifi_firmware_clm_blob; --unsigned char r_buffer[BLOCK_BUFFER_SIZE]; -- --#if defined(WHD_DYNAMIC_NVRAM) --uint32_t dynamic_nvram_size = sizeof(wifi_nvram_image); --void *dynamic_nvram_image = &wifi_nvram_image; --#endif -- --/****************************************************** --* Function Definitions --******************************************************/ -- --resource_result_t resource_read(const resource_hnd_t *resource, uint32_t offset, uint32_t maxsize, uint32_t *size, -- void *buffer) --{ -- if (offset > resource->size) -- { -- return RESOURCE_OFFSET_TOO_BIG; -- } -- -- *size = MIN(maxsize, resource->size - offset); -- -- if (resource->location == RESOURCE_IN_MEMORY) -- { -- memcpy(buffer, &resource->val.mem.data[offset], *size); -- } --#ifdef USES_RESOURCES_IN_EXTERNAL_STORAGE -- else if (resource->location == RESOURCE_IN_EXTERNAL_STORAGE) -- { -- return platform_read_external_resource(resource, offset, maxsize, size, buffer); -- } --#endif --#ifdef USES_RESOURCE_GENERIC_FILESYSTEM -- else -- { -- int file_handle = -1; -- if (WHD_SUCCESS != -- wiced_filesystem_file_open (&file_handle, resource->val.fs.filename) ) -- { -- return WHD_BADARG; -- } -- if (WHD_SUCCESS != wiced_filesystem_file_seek (&file_handle, (offset + resource->val.fs.offset)) ) -- { -- wiced_filesystem_file_close (&file_handle); -- return WHD_BADARG; -- } -- if (WHD_SUCCESS != wiced_filesystem_file_read (&file_handle, buffer, *size, &size) ) -- { -- wiced_filesystem_file_close (&file_handle); -- return WHD_BADARG; -- } -- wiced_filesystem_file_close (&file_handle); -- } --#else --#ifdef USES_RESOURCE_FILESYSTEM -- else -- { -- wicedfs_file_t file_hnd; -- -- if (0 != wicedfs_fopen(&resource_fs_handle, &file_hnd, resource->val.fs.filename) ) -- { -- return RESOURCE_FILE_OPEN_FAIL; -- } -- -- if (0 != wicedfs_fseek(&file_hnd, (long)(offset + resource->val.fs.offset), SEEK_SET) ) -- { -- wicedfs_fclose(&file_hnd); -- return RESOURCE_FILE_SEEK_FAIL; -- } -- -- if (*size != wicedfs_fread(buffer, 1, *size, &file_hnd) ) -- { -- wicedfs_fclose(&file_hnd); -- return RESOURCE_FILE_READ_FAIL; -- } -- -- wicedfs_fclose(&file_hnd); -- } --#endif /* ifdef USES_RESOURCE_FILESYSTEM */ --#endif /* USES_RESOURCE_GENERIC_FILESYSTEM */ -- return RESOURCE_SUCCESS; --} -- --uint32_t host_platform_resource_size(whd_driver_t whd_drv, whd_resource_type_t resource, uint32_t *size_out) --{ -- if (resource == WHD_RESOURCE_WLAN_FIRMWARE) -- { --#ifdef NO_WIFI_FIRMWARE -- whd_assert("Request firmware in a no wifi firmware application", 0 == 1); -- *size_out = 0; --#else --#ifdef WIFI_FIRMWARE_IN_MULTI_APP -- wiced_app_t wifi_app; -- -- *size_out = 0; -- if (wiced_waf_app_open(DCT_WIFI_FIRMWARE_INDEX, &wifi_app) != WICED_SUCCESS) -- { -- return ( whd_result_t )RESOURCE_UNSUPPORTED; -- } -- wiced_waf_app_get_size(&wifi_app, size_out); --#else -- *size_out = (uint32_t)resource_get_size(&wifi_firmware_image); --#endif --#endif -- -- } -- else if (resource == WHD_RESOURCE_WLAN_NVRAM) -- { -- *size_out = NVRAM_SIZE; -- } -- else -- { -- *size_out = (uint32_t)resource_get_size(&wifi_firmware_clm_blob); -- } -- return WHD_SUCCESS; --} -- --uint32_t host_get_resource_block(whd_driver_t whd_drv, whd_resource_type_t type, -- uint32_t blockno, const uint8_t **data, uint32_t *size_out) --{ -- uint32_t resource_size; -- uint32_t block_size; -- uint32_t block_count; -- uint32_t read_pos; -- uint32_t result; -- -- host_platform_resource_size(whd_drv, type, &resource_size); -- host_get_resource_block_size(whd_drv, type, &block_size); -- host_get_resource_no_of_blocks(whd_drv, type, &block_count); -- memset(r_buffer, 0, block_size); -- read_pos = blockno * block_size; -- -- if (blockno >= block_count) -- { -- return WHD_BADARG; -- } -- -- if (type == WHD_RESOURCE_WLAN_FIRMWARE) -- { -- result = resource_read( (const resource_hnd_t *)&wifi_firmware_image, read_pos, block_size, size_out, -- r_buffer ); -- if (result != WHD_SUCCESS) -- { -- return result; -- } -- *data = (uint8_t *)&r_buffer; -- /* -- * In case of local buffer read use the following code -- * -- * *size_out = MIN(BLOCK_BUFFER_SIZE, resource_size - transfer_progress); -- * *data = (uint8_t *)wifi_firmware_image_data; -- * -- * For sending the entire buffer in single block set size out as following -- * *size_out = (uint32_t)resource_get_size(&wifi_firmware_image); -- */ -- } -- else if (type == WHD_RESOURCE_WLAN_NVRAM) -- { -- if (NVRAM_SIZE - read_pos > block_size) -- { -- *size_out = block_size; -- } -- else -- { -- *size_out = NVRAM_SIZE - read_pos; -- } -- *data = ( (uint8_t *)NVRAM_IMAGE_VARIABLE ) + read_pos; -- } -- else -- { -- result = resource_read( (const resource_hnd_t *)&wifi_firmware_clm_blob, read_pos, block_size, -- size_out, -- r_buffer ); -- if (result != WHD_SUCCESS) -- { -- return result; -- } -- *data = (uint8_t *)&r_buffer; -- /* -- * In case of local buffer read use the following code -- * -- * *size_out = MIN(BLOCK_BUFFER_SIZE, resource_size - transfer_progress); -- * *data = (uint8_t *)wifi_firmware_clm_blob_image_data; -- * -- * For sending the entire buffer in single block set size out as following -- * *size_out = sizeof(wifi_firmware_clm_blob_image_data); -- */ -- -- } -- -- return WHD_SUCCESS; --} -- --uint32_t host_get_resource_block_size(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *size_out) --{ -- *size_out = BLOCK_BUFFER_SIZE; -- return WHD_SUCCESS; --} -- --uint32_t host_get_resource_no_of_blocks(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *block_count) --{ -- uint32_t resource_size; -- uint32_t block_size; -- -- host_platform_resource_size(whd_drv, type, &resource_size); -- host_get_resource_block_size(whd_drv, type, &block_size); -- *block_count = resource_size / block_size; -- if (resource_size % block_size) -- *block_count += 1; -- -- return WHD_SUCCESS; --} -- --whd_resource_source_t resource_ops = --{ -- .whd_resource_size = host_platform_resource_size, -- .whd_get_resource_block_size = host_get_resource_block_size, -- .whd_get_resource_no_of_blocks = host_get_resource_no_of_blocks, -- .whd_get_resource_block = host_get_resource_block --}; -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/resource_imp/wiced_resource.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/resource_imp/wiced_resource.h -deleted file mode 100644 -index 0a1cccd870..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/resources/resource_imp/wiced_resource.h -+++ /dev/null -@@ -1,228 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * WICED Resource API's -- * The Resource Management functions reads resource from a resource location -- * and returns the number of bytes from an offset in an caller filled buffer. -- * -- * Functions to get the resource size and resource data -- * -- * The Resource could be one of the three locations -- * -- * - Wiced Filesystem (File System) -- * - Internal Memory (Embedded Flash memory) -- * - External Storage ( External Flash connected via SPI interface) -- * -- */ -- --#ifndef INCLUDED_RESOURCE_H_ --#define INCLUDED_RESOURCE_H_ -- --#include -- --#ifdef __cplusplus --extern "C" { --#endif -- -- --/****************************************************** --* Macros --******************************************************/ --#ifndef MIN --#define MIN(x, y) ( (x) < (y) ? (x) : (y) ) --#endif /* ifndef MIN */ -- --/* Suppress unused parameter warning */ --#ifndef UNUSED_PARAMETER --#define UNUSED_PARAMETER(x) ( (void)(x) ) --#endif -- --#ifndef RESULT_ENUM --#define RESULT_ENUM(prefix, name, value) prefix ## name = (value) --#endif /* ifndef RESULT_ENUM */ -- --#if defined(CY_SECTION) --#define CY_SECTION_WHD CY_SECTION --#else --#if !defined(CY_SECTION_WHD) --#if defined(__ARMCC_VERSION) --#define CY_SECTION_WHD(name) __attribute__ ( (section(name) ) ) --#elif defined (__GNUC__) --#if defined (__clang__) --#define CY_SECTION_WHD(name) __attribute__ ( (section("__DATA, "name) ) ) --#else --#define CY_SECTION_WHD(name) __attribute__ ( (section(name) ) ) --#endif --#elif defined (__ICCARM__) --#define CY_SECTION_WHD(name) CY_PRAGMA(location = name) --#else --#error "An unsupported toolchain" --#endif /* (__ARMCC_VERSION) */ --#endif /* !defined(CY_SECTION_WHD) */ --#endif /* defined(CY_SECTION) */ -- --/* These Enum result values are for Resource errors -- * Values: 4000 - 4999 -- */ --#define RESOURCE_RESULT_LIST(prefix) \ -- RESULT_ENUM(prefix, SUCCESS, 0), /**< Success */ \ -- RESULT_ENUM(prefix, UNSUPPORTED, 7), /**< Unsupported function */ \ -- RESULT_ENUM(prefix, OFFSET_TOO_BIG, 4001), /**< Offset past end of resource */ \ -- RESULT_ENUM(prefix, FILE_OPEN_FAIL, 4002), /**< Failed to open resource file */ \ -- RESULT_ENUM(prefix, FILE_SEEK_FAIL, 4003), /**< Failed to seek to requested offset in resource file */ \ -- RESULT_ENUM(prefix, FILE_READ_FAIL, 4004), /**< Failed to read resource file */ -- --#define resource_get_size(resource) ( (resource)->size ) -- --/****************************************************** --* Constants --******************************************************/ -- --#define RESOURCE_ENUM_OFFSET (1300) -- --/****************************************************** --* Enumerations --******************************************************/ -- --/** -- * Result type for WICED Resource function -- */ --typedef enum --{ -- RESOURCE_RESULT_LIST(RESOURCE_) --} resource_result_t; -- --/****************************************************** --* Type Definitions --******************************************************/ -- --typedef const void *resource_data_t; --typedef unsigned long resource_size_t; -- --/****************************************************** --* Structures --******************************************************/ -- --/** -- * Memory handle -- */ --typedef struct --{ -- const char *data; /**< resource data */ --} memory_resource_handle_t; -- --/** -- * Filesystem handle -- */ --typedef struct --{ -- unsigned long offset; /**< Offset to the start of the resource */ -- const char *filename; /**< name of the resource */ --} filesystem_resource_handle_t; -- -- --typedef enum --{ -- RESOURCE_IN_MEMORY, /**< resource location in memory */ -- RESOURCE_IN_FILESYSTEM, /**< resource location in filesystem */ -- RESOURCE_IN_EXTERNAL_STORAGE /**< resource location in external storage */ --} resource_location_t; -- --/** -- * Resource handle structure -- */ --typedef struct --{ -- resource_location_t location; /**< resource location */ -- unsigned long size; /**< resource size */ -- union -- { -- filesystem_resource_handle_t fs; /** < filesystem resource handle */ -- memory_resource_handle_t mem; /** < memory resource handle */ -- void *external_storage_context; /** < external storage context */ -- } val; --} resource_hnd_t; -- --/****************************************************** --* Global Variables --******************************************************/ -- --/****************************************************** --* Function Declarations --******************************************************/ -- --/*****************************************************************************/ --/** @addtogroup resourceapi Wiced Resource Management API's -- * @ingroup framework -- * -- * WCIED Resource Management API's has functions to get the -- * resource size and reads resource data from a resource -- * location and returns the number of bytes in an caller -- * filled buffer -- * -- * The Resource could be one of the three locations -- * -- * - Wiced Filesystem ( File System) -- * - Internal Memory (Embedded Flash memory) -- * - External Storage ( External Flash connected via SPI interface ) -- * -- * @{ -- */ --/*****************************************************************************/ -- --/** Read resource using the handle specified -- * -- * @param[in] resource : handle of the resource to read -- * @param[in] offset : offset from the beginning of the resource block -- * @param[in] maxsize : size of the buffer -- * @param[out] size : size of the data successfully read -- * @param[in] buffer : pointer to a buffer to contain the read data -- * -- * @return @ref resource_result_t -- */ --extern resource_result_t resource_read(const resource_hnd_t *resource, uint32_t offset, uint32_t maxsize, -- uint32_t *size, void *buffer); -- --/** Retrieve a read only resource buffer using the handle specified -- * -- * @param[in] resource : handle of the resource to read -- * @param[in] offset : offset from the beginning of the resource block -- * @param[in] maxsize : size of the buffer -- * @param[out] size : size of the data successfully read -- * @param[out] buffer : pointer to a buffer pointer to point to the resource data -- * -- * @return @ref resource_result_t -- */ --extern resource_result_t resource_get_readonly_buffer(const resource_hnd_t *resource, uint32_t offset, uint32_t maxsize, -- uint32_t *size_out, const void **buffer); -- --/** Free a read only resource buffer using the handle specified -- * -- * @param[in] resource : handle of the resource to read -- * @param[in] buffer : pointer to a buffer set using resource_get_readonly_buffer -- * -- * @return @ref resource_result_t -- */ --extern resource_result_t resource_free_readonly_buffer(const resource_hnd_t *handle, const void *buffer); --/* @} */ --#ifdef __cplusplus --} /*extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_RESOURCE_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus.c -deleted file mode 100644 -index 9f43714289..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus.c -+++ /dev/null -@@ -1,145 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * -- */ -- --#include "whd_bus.h" --#include "whd_int.h" -- --whd_result_t whd_bus_init(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_init_fptr(whd_driver); --} -- --whd_result_t whd_bus_deinit(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_deinit_fptr(whd_driver); --} -- --whd_bool_t whd_bus_wake_interrupt_present(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_wake_interrupt_present_fptr(whd_driver); --} -- --whd_result_t whd_bus_send_buffer(whd_driver_t whd_driver, whd_buffer_t buffer) --{ -- return whd_driver->bus_if->whd_bus_send_buffer_fptr(whd_driver, buffer); --} -- --uint32_t whd_bus_packet_available_to_read(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_packet_available_to_read_fptr(whd_driver); --} -- --whd_result_t whd_bus_read_frame(whd_driver_t whd_driver, whd_buffer_t *buffer) --{ -- return whd_driver->bus_if->whd_bus_read_frame_fptr(whd_driver, buffer); --} -- --whd_result_t whd_bus_write_backplane_value(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, -- uint32_t value) --{ -- return whd_driver->bus_if->whd_bus_write_backplane_value_fptr(whd_driver, address, register_length, value); --} -- --whd_result_t whd_bus_read_backplane_value(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, -- uint8_t *value) --{ -- return whd_driver->bus_if->whd_bus_read_backplane_value_fptr(whd_driver, address, register_length, value); --} -- --whd_result_t whd_bus_read_register_value(whd_driver_t whd_driver, whd_bus_function_t function, uint32_t address, -- uint8_t value_length, uint8_t *value) --{ -- return whd_driver->bus_if->whd_bus_read_register_value_fptr(whd_driver, function, address, value_length, value); --} -- --whd_result_t whd_bus_write_register_value(whd_driver_t whd_driver, whd_bus_function_t function, uint32_t address, -- uint8_t value_length, uint32_t value) --{ -- return whd_driver->bus_if->whd_bus_write_register_value_fptr(whd_driver, function, address, value_length, value); --} -- --whd_result_t whd_bus_transfer_bytes(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint16_t size, -- whd_transfer_bytes_packet_t *data) --{ -- return whd_driver->bus_if->whd_bus_transfer_bytes_fptr(whd_driver, direction, function, address, size, data); --} -- --whd_result_t whd_bus_poke_wlan(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_poke_wlan_fptr(whd_driver); --} -- --whd_result_t whd_bus_wakeup(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_wakeup_fptr(whd_driver); --} -- --whd_result_t whd_bus_sleep(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_sleep_fptr(whd_driver); --} -- --whd_result_t whd_bus_wait_for_wlan_event(whd_driver_t whd_driver, cy_semaphore_t *transceive_semaphore) --{ -- return whd_driver->bus_if->whd_bus_wait_for_wlan_event_fptr(whd_driver, transceive_semaphore); --} -- --whd_bool_t whd_bus_use_status_report_scheme(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_use_status_report_scheme_fptr(whd_driver); --} -- --uint8_t whd_bus_backplane_read_padd_size(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_backplane_read_padd_size_fptr(whd_driver); --} -- --uint32_t whd_bus_get_max_transfer_size(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_get_max_transfer_size_fptr(whd_driver); --} -- --void whd_bus_init_stats(whd_driver_t whd_driver) --{ -- whd_driver->bus_if->whd_bus_init_stats_fptr(whd_driver); --} -- --whd_result_t whd_bus_print_stats(whd_driver_t whd_driver, whd_bool_t reset_after_print) --{ -- return whd_driver->bus_if->whd_bus_print_stats_fptr(whd_driver, reset_after_print); --} -- --whd_result_t whd_bus_reinit_stats(whd_driver_t whd_driver, whd_bool_t wake_from_firmware) --{ -- return whd_driver->bus_if->whd_bus_reinit_stats_fptr(whd_driver, wake_from_firmware); --} -- --whd_result_t whd_bus_irq_register(whd_driver_t whd_driver) --{ -- return whd_driver->bus_if->whd_bus_irq_register_fptr(whd_driver); --} -- --whd_result_t whd_bus_irq_enable(whd_driver_t whd_driver, whd_bool_t enable) --{ -- return whd_driver->bus_if->whd_bus_irq_enable_fptr(whd_driver, enable); --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus.h -deleted file mode 100644 -index 2b63970425..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus.h -+++ /dev/null -@@ -1,123 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * -- */ -- --#include "whd_bus_protocol_interface.h" -- --#ifndef INCLUDED_WHD_BUS_H_ --#define INCLUDED_WHD_BUS_H_ -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --#if 0 --typedef struct whd_bus_if *whd_bus_if_t; -- --typedef whd_result_t (*whd_bus_transfer_t)(whd_bus_if_t *bus_if, whd_bus_transfer_direction_t dir, -- uint8_t *data, uint16_t data_size, void *arg1, void *arg2, void *arg3, -- void *arg4); --#endif -- --typedef whd_result_t (*whd_bus_init_t)(whd_driver_t whd_driver); --typedef whd_result_t (*whd_bus_deinit_t)(whd_driver_t whd_driver); -- --typedef whd_result_t (*whd_bus_ack_interrupt_t)(whd_driver_t whd_driver, uint32_t intstatus); --typedef whd_bool_t (*whd_bus_wake_interrupt_present_t)(whd_driver_t whd_driver); --typedef uint32_t (*whd_bus_packet_available_to_read_t)(whd_driver_t whd_driver); --typedef whd_result_t (*whd_bus_read_frame_t)(whd_driver_t whd_driver, whd_buffer_t *buffer); -- --typedef whd_result_t (*whd_bus_write_backplane_value_t)(whd_driver_t whd_driver, uint32_t address, -- uint8_t register_length, uint32_t value); --typedef whd_result_t (*whd_bus_read_backplane_value_t)(whd_driver_t whd_driver, uint32_t address, -- uint8_t register_length, uint8_t *value); -- --typedef whd_result_t (*whd_bus_write_register_value_t)(whd_driver_t whd_driver, whd_bus_function_t function, -- uint32_t address, uint8_t value_length, uint32_t value); --typedef whd_result_t (*whd_bus_read_register_value_t)(whd_driver_t whd_driver, whd_bus_function_t function, -- uint32_t address, uint8_t value_length, uint8_t *value); -- --typedef whd_result_t (*whd_bus_transfer_bytes_t)(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint16_t size, -- whd_transfer_bytes_packet_t *data); -- --typedef whd_result_t (*whd_bus_poke_wlan_t)(whd_driver_t whd_driver); -- --typedef whd_result_t (*whd_bus_wakeup_t)(whd_driver_t whd_driver); --typedef whd_result_t (*whd_bus_sleep_t)(whd_driver_t whd_driver); --typedef uint8_t (*whd_bus_backplane_read_padd_size_t)(whd_driver_t whd_driver); --typedef whd_result_t (*whd_bus_send_buffer_t)(whd_driver_t whd_driver, whd_buffer_t buffer); --typedef whd_result_t (*whd_bus_wait_for_wlan_event_t)(whd_driver_t whd_driver, -- cy_semaphore_t *transceive_semaphore); --typedef whd_bool_t (*whd_bus_use_status_report_scheme_t)(whd_driver_t whd_driver); --typedef uint32_t (*whd_bus_get_max_transfer_size_t)(whd_driver_t whd_driver); -- --typedef void (*whd_bus_init_stats_t)(whd_driver_t whd_driver); --typedef whd_result_t (*whd_bus_print_stats_t)(whd_driver_t whd_driver, whd_bool_t reset_after_print); --typedef whd_result_t (*whd_bus_reinit_stats_t)(whd_driver_t whd_driver, whd_bool_t wake_from_firmware); --typedef whd_result_t (*whd_bus_irq_register_t)(whd_driver_t whd_driver); --typedef whd_result_t (*whd_bus_irq_enable_t)(whd_driver_t whd_driver, whd_bool_t enable); -- --typedef struct whd_bus_info --{ -- whd_bus_init_t whd_bus_init_fptr; -- whd_bus_deinit_t whd_bus_deinit_fptr; -- -- whd_bus_ack_interrupt_t whd_bus_ack_interrupt_fptr; -- whd_bus_send_buffer_t whd_bus_send_buffer_fptr; -- -- whd_bus_wake_interrupt_present_t whd_bus_wake_interrupt_present_fptr; -- whd_bus_packet_available_to_read_t whd_bus_packet_available_to_read_fptr; -- whd_bus_read_frame_t whd_bus_read_frame_fptr; -- -- whd_bus_write_backplane_value_t whd_bus_write_backplane_value_fptr; -- whd_bus_read_backplane_value_t whd_bus_read_backplane_value_fptr; -- -- whd_bus_write_register_value_t whd_bus_write_register_value_fptr; -- whd_bus_read_register_value_t whd_bus_read_register_value_fptr; -- -- whd_bus_transfer_bytes_t whd_bus_transfer_bytes_fptr; -- -- whd_bus_poke_wlan_t whd_bus_poke_wlan_fptr; -- -- whd_bus_wakeup_t whd_bus_wakeup_fptr; -- whd_bus_sleep_t whd_bus_sleep_fptr; -- -- whd_bus_backplane_read_padd_size_t whd_bus_backplane_read_padd_size_fptr; -- -- whd_bus_wait_for_wlan_event_t whd_bus_wait_for_wlan_event_fptr; -- whd_bus_use_status_report_scheme_t whd_bus_use_status_report_scheme_fptr; -- -- whd_bus_get_max_transfer_size_t whd_bus_get_max_transfer_size_fptr; -- -- whd_bus_init_stats_t whd_bus_init_stats_fptr; -- whd_bus_print_stats_t whd_bus_print_stats_fptr; -- whd_bus_reinit_stats_t whd_bus_reinit_stats_fptr; -- whd_bus_irq_register_t whd_bus_irq_register_fptr; -- whd_bus_irq_enable_t whd_bus_irq_enable_fptr; --} whd_bus_info_t; -- -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* ifndef INCLUDED_WHD_BUS_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_common.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_common.c -deleted file mode 100644 -index 98d155b846..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_common.c -+++ /dev/null -@@ -1,517 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * -- */ --#include --#include "cyabs_rtos.h" -- --#include "whd_bus_common.h" --#include "whd_chip_reg.h" --#include "whd_sdio.h" --#include "whd_chip_constants.h" --#include "whd_int.h" --#include "whd_chip.h" --#include "whd_bus_protocol_interface.h" --#include "whd_debug.h" --#include "whd_buffer_api.h" --#include "whd_resource_if.h" --#include "whd_resource_api.h" --#include "whd_types_int.h" -- -- --/****************************************************** --* Macros --******************************************************/ --#define WHD_SAVE_INTERRUPTS(flags) do { UNUSED_PARAMETER(flags); } while (0); --#define WHD_RESTORE_INTERRUPTS(flags) do { } while (0); -- --/****************************************************** --* Constants --******************************************************/ --#define INDIRECT_BUFFER_SIZE (1024) --#define WHD_BUS_ROUND_UP_ALIGNMENT (64) --#define WHD_BUS_MAX_TRANSFER_SIZE (WHD_BUS_MAX_BACKPLANE_TRANSFER_SIZE) -- --#define WHD_BUS_WLAN_ALLOW_SLEEP_INVALID_MS ( (uint32_t)-1 ) -- --/****************************************************** --* Structures --******************************************************/ -- --struct whd_bus_common_info --{ -- whd_bool_t bus_is_up; -- -- whd_time_t delayed_bus_release_deadline; -- whd_bool_t delayed_bus_release_scheduled; -- uint32_t delayed_bus_release_timeout_ms; -- volatile uint32_t delayed_bus_release_timeout_ms_request; -- -- uint32_t backplane_window_current_base_address; -- whd_bool_t bus_flow_control; -- volatile whd_bool_t resource_download_abort; -- --}; -- --/****************************************************** --* Variables --******************************************************/ -- --/****************************************************** --* Function declarations --******************************************************/ --static whd_result_t whd_bus_common_download_resource(whd_driver_t whd_driver, whd_resource_type_t resource, -- whd_bool_t direct_resource, uint32_t address); -- --/****************************************************** --* Function definitions --******************************************************/ -- --whd_bool_t whd_bus_is_up(whd_driver_t whd_driver) --{ -- return whd_driver->bus_common_info->bus_is_up; --} -- --void whd_bus_set_state(whd_driver_t whd_driver, whd_bool_t state) --{ -- whd_driver->bus_common_info->bus_is_up = state; --} -- --whd_result_t whd_bus_set_flow_control(whd_driver_t whd_driver, uint8_t value) --{ -- if (value != 0) -- { -- whd_driver->bus_common_info->bus_flow_control = WHD_TRUE; -- } -- else -- { -- whd_driver->bus_common_info->bus_flow_control = WHD_FALSE; -- } -- return WHD_SUCCESS; --} -- --whd_bool_t whd_bus_is_flow_controlled(whd_driver_t whd_driver) --{ -- return whd_driver->bus_common_info->bus_flow_control; --} -- --static whd_result_t whd_bus_common_download_resource(whd_driver_t whd_driver, whd_resource_type_t resource, -- whd_bool_t direct_resource, uint32_t address) --{ -- whd_result_t result = WHD_SUCCESS; -- uint8_t *image; -- uint32_t image_size; -- uint32_t blocks_count = 0; -- uint32_t i; -- uint32_t size_out; -- uint32_t reset_instr = 0; -- -- result = whd_resource_size(whd_driver, resource, &image_size); -- -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Fatal error: download_resource doesn't exist, %s failed at line %d \n", __func__, -- __LINE__) ); -- goto exit; -- } -- -- if (image_size <= 0) -- { -- WPRINT_WHD_ERROR( ("Fatal error: download_resource cannot load with invalid size, %s failed at line %d \n", -- __func__, __LINE__) ); -- result = WHD_BADARG; -- goto exit; -- } -- -- result = whd_get_resource_no_of_blocks(whd_driver, resource, &blocks_count); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Fatal error: download_resource blocks count not known, %s failed at line %d \n", __func__, -- __LINE__) ); -- goto exit; -- } -- -- for (i = 0; i < blocks_count; i++) -- { -- CHECK_RETURN(whd_get_resource_block(whd_driver, resource, i, (const uint8_t **)&image, &size_out) ); -- if ( (resource == WHD_RESOURCE_WLAN_FIRMWARE) && (reset_instr == 0) ) -- { -- /* Copy the starting address of the firmware into a global variable */ -- reset_instr = *( (uint32_t *)(&image[0]) ); -- } -- result = whd_bus_transfer_backplane_bytes(whd_driver, BUS_WRITE, address, size_out, &image[0]); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: Failed to write firmware image\n", __FUNCTION__) ); -- goto exit; -- } -- address += size_out; -- } -- -- /* Below part of the code is applicable to arm_CR4 type chips only -- * The CR4 chips by default firmware is not loaded at 0. So we need -- * load the first 32 bytes with the offset of the firmware load address -- * which is been copied before during the firmware download -- */ -- if ( (address != 0) && (reset_instr != 0) ) -- { -- /* write address 0 with reset instruction */ -- result = whd_bus_write_backplane_value(whd_driver, 0, sizeof(reset_instr), reset_instr); -- -- if (result == WHD_SUCCESS) -- { -- uint32_t tmp; -- -- /* verify reset instruction value */ -- result = whd_bus_read_backplane_value(whd_driver, 0, sizeof(tmp), (uint8_t *)&tmp); -- -- if ( (result == WHD_SUCCESS) && (tmp != reset_instr) ) -- { -- WPRINT_WHD_ERROR( ("%s: Failed to write 0x%08" PRIx32 " to addr 0\n", __FUNCTION__, reset_instr) ); -- WPRINT_WHD_ERROR( ("%s: contents of addr 0 is 0x%08" PRIx32 "\n", __FUNCTION__, tmp) ); -- return WHD_WLAN_SDIO_ERROR; -- } -- } -- } --exit: return result; --} -- --void whd_bus_common_info_init(whd_driver_t whd_driver) --{ -- struct whd_bus_common_info *bus_common = (struct whd_bus_common_info *)malloc(sizeof(struct whd_bus_common_info) ); -- -- if (bus_common != NULL) -- { -- whd_driver->bus_common_info = bus_common; -- -- bus_common->delayed_bus_release_deadline = 0; -- bus_common->delayed_bus_release_scheduled = WHD_FALSE; -- bus_common->delayed_bus_release_timeout_ms = PLATFORM_WLAN_ALLOW_BUS_TO_SLEEP_DELAY_MS; -- bus_common->delayed_bus_release_timeout_ms_request = WHD_BUS_WLAN_ALLOW_SLEEP_INVALID_MS; -- bus_common->backplane_window_current_base_address = 0; -- -- bus_common->bus_is_up = WHD_FALSE; -- bus_common->bus_flow_control = WHD_FALSE; -- -- bus_common->resource_download_abort = WHD_FALSE; -- } -- else -- { -- WPRINT_WHD_ERROR( ("Memory allocation failed for whd_bus_common_info in %s\n", __FUNCTION__) ); -- } --} -- --void whd_bus_common_info_deinit(whd_driver_t whd_driver) --{ -- if (whd_driver->bus_common_info != NULL) -- { -- free(whd_driver->bus_common_info); -- whd_driver->bus_common_info = NULL; -- } --} -- --void whd_delayed_bus_release_schedule_update(whd_driver_t whd_driver, whd_bool_t is_scheduled) --{ -- whd_driver->bus_common_info->delayed_bus_release_scheduled = is_scheduled; -- whd_driver->bus_common_info->delayed_bus_release_deadline = 0; --} -- --uint32_t whd_bus_handle_delayed_release(whd_driver_t whd_driver) --{ -- uint32_t time_until_release = 0; -- uint32_t current_time = 0; -- struct whd_bus_common_info *bus_common = whd_driver->bus_common_info; -- -- if (bus_common->delayed_bus_release_timeout_ms_request != WHD_BUS_WLAN_ALLOW_SLEEP_INVALID_MS) -- { -- whd_bool_t schedule = -- ( (bus_common->delayed_bus_release_scheduled != 0) || -- (bus_common->delayed_bus_release_deadline != 0) ) ? WHD_TRUE : WHD_FALSE; -- uint32_t flags; -- -- WHD_SAVE_INTERRUPTS(flags); -- bus_common->delayed_bus_release_timeout_ms = bus_common->delayed_bus_release_timeout_ms_request; -- bus_common->delayed_bus_release_timeout_ms_request = WHD_BUS_WLAN_ALLOW_SLEEP_INVALID_MS; -- WHD_RESTORE_INTERRUPTS(flags); -- -- DELAYED_BUS_RELEASE_SCHEDULE(whd_driver, schedule); -- } -- -- if (bus_common->delayed_bus_release_scheduled == WHD_TRUE) -- { -- bus_common->delayed_bus_release_scheduled = WHD_FALSE; -- -- if (bus_common->delayed_bus_release_timeout_ms != 0) -- { -- cy_rtos_get_time(¤t_time); -- bus_common->delayed_bus_release_deadline = current_time + -- bus_common->delayed_bus_release_timeout_ms; -- time_until_release = bus_common->delayed_bus_release_timeout_ms; -- } -- } -- else if (bus_common->delayed_bus_release_deadline != 0) -- { -- whd_time_t now; -- -- cy_rtos_get_time(&now); -- -- if (bus_common->delayed_bus_release_deadline - now <= bus_common->delayed_bus_release_timeout_ms) -- { -- time_until_release = bus_common->delayed_bus_release_deadline - now; -- } -- -- if (time_until_release == 0) -- { -- bus_common->delayed_bus_release_deadline = 0; -- } -- } -- -- if (time_until_release != 0) -- { -- if (whd_bus_is_up(whd_driver) == WHD_FALSE) -- { -- time_until_release = 0; -- } -- else if (whd_bus_platform_mcu_power_save_deep_sleep_enabled(whd_driver) ) -- { -- time_until_release = 0; -- } -- } -- -- return time_until_release; --} -- --whd_bool_t whd_bus_platform_mcu_power_save_deep_sleep_enabled(whd_driver_t whd_driver) --{ -- return WHD_FALSE; --} -- --void whd_bus_init_backplane_window(whd_driver_t whd_driver) --{ -- whd_driver->bus_common_info->backplane_window_current_base_address = 0; --} -- --whd_result_t whd_bus_write_wifi_firmware_image(whd_driver_t whd_driver) --{ -- whd_result_t result = WHD_SUCCESS; -- uint32_t ram_start_address; -- -- /* Pass the ram_start_address to the firmware Download -- * CR4 chips have offset and CM3 starts from 0 */ -- -- ram_start_address = GET_C_VAR(whd_driver, ATCM_RAM_BASE_ADDRESS); -- result = whd_bus_common_download_resource(whd_driver, WHD_RESOURCE_WLAN_FIRMWARE, WHD_FALSE, ram_start_address); -- -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("Bus common resource download failed, %s failed at %d \n", __func__, __LINE__) ); -- -- return result; --} -- --whd_result_t whd_bus_write_wifi_nvram_image(whd_driver_t whd_driver) --{ -- uint32_t image_size; -- uint32_t img_base; -- uint32_t img_end; -- -- /* Get the size of the variable image */ -- CHECK_RETURN(whd_resource_size(whd_driver, WHD_RESOURCE_WLAN_NVRAM, &image_size) ); -- -- /* Round up the size of the image */ -- image_size = ROUND_UP(image_size, WHD_BUS_ROUND_UP_ALIGNMENT); -- -- /* Write image */ -- img_end = GET_C_VAR(whd_driver, CHIP_RAM_SIZE) - 4; -- img_base = (img_end - image_size); -- img_base += GET_C_VAR(whd_driver, ATCM_RAM_BASE_ADDRESS); -- -- CHECK_RETURN(whd_bus_common_download_resource(whd_driver, WHD_RESOURCE_WLAN_NVRAM, WHD_FALSE, img_base) ); -- -- /* Write the variable image size at the end */ -- image_size = (~(image_size / 4) << 16) | (image_size / 4); -- -- img_end += GET_C_VAR(whd_driver, ATCM_RAM_BASE_ADDRESS); -- -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, (uint32_t)img_end, 4, image_size) ); -- -- return WHD_SUCCESS; --} -- --void whd_bus_set_resource_download_halt(whd_driver_t whd_driver, whd_bool_t halt) --{ -- whd_driver->bus_common_info->resource_download_abort = halt; --} -- --/* -- * Update the backplane window registers -- */ --whd_result_t whd_bus_set_backplane_window(whd_driver_t whd_driver, uint32_t addr) --{ -- whd_result_t result = WHD_BUS_WRITE_REGISTER_ERROR; -- uint32_t base = addr & ( (uint32_t) ~BACKPLANE_ADDRESS_MASK ); -- const uint32_t upper_32bit_mask = 0xFF000000; -- const uint32_t upper_middle_32bit_mask = 0x00FF0000; -- const uint32_t lower_middle_32bit_mask = 0x0000FF00; -- struct whd_bus_common_info *bus_common_info = whd_driver->bus_common_info; -- -- if (base == bus_common_info->backplane_window_current_base_address) -- { -- return WHD_SUCCESS; -- } -- if ( (base & upper_32bit_mask) != (bus_common_info->backplane_window_current_base_address & upper_32bit_mask) ) -- { -- if (WHD_SUCCESS != -- (result = whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_BACKPLANE_ADDRESS_HIGH, -- (uint8_t)1, (base >> 24) ) ) ) -- { -- WPRINT_WHD_ERROR( ("Failed to write register value to the bus, %s failed at %d \n", __func__, __LINE__) ); -- return result; -- } -- /* clear old */ -- bus_common_info->backplane_window_current_base_address &= ~upper_32bit_mask; -- /* set new */ -- bus_common_info->backplane_window_current_base_address |= (base & upper_32bit_mask); -- } -- -- if ( (base & upper_middle_32bit_mask) != -- (bus_common_info->backplane_window_current_base_address & upper_middle_32bit_mask) ) -- { -- if (WHD_SUCCESS != -- (result = whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_BACKPLANE_ADDRESS_MID, -- (uint8_t)1, (base >> 16) ) ) ) -- { -- WPRINT_WHD_ERROR( ("Failed to write register value to the bus, %s failed at %d \n", __func__, __LINE__) ); -- return result; -- } -- /* clear old */ -- bus_common_info->backplane_window_current_base_address &= ~upper_middle_32bit_mask; -- /* set new */ -- bus_common_info->backplane_window_current_base_address |= (base & upper_middle_32bit_mask); -- } -- -- if ( (base & lower_middle_32bit_mask) != -- (bus_common_info->backplane_window_current_base_address & lower_middle_32bit_mask) ) -- { -- if (WHD_SUCCESS != -- (result = whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_BACKPLANE_ADDRESS_LOW, -- (uint8_t)1, (base >> 8) ) ) ) -- { -- WPRINT_WHD_ERROR( ("Failed to write register value to the bus, %s failed at %d \n", __func__, __LINE__) ); -- return result; -- } -- -- /* clear old */ -- bus_common_info->backplane_window_current_base_address &= ~lower_middle_32bit_mask; -- /* set new */ -- bus_common_info->backplane_window_current_base_address |= (base & lower_middle_32bit_mask); -- } -- -- return WHD_SUCCESS; --} -- --/* Default implementation of WHD bus resume function, which does nothing */ --whd_result_t whd_bus_resume_after_deep_sleep(whd_driver_t whd_driver) --{ -- whd_assert("In order to support deep-sleep platform need to implement this function", 0); -- return WHD_UNSUPPORTED; --} -- --whd_result_t whd_bus_transfer_backplane_bytes(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- uint32_t address, uint32_t size, uint8_t *data) --{ -- whd_buffer_t pkt_buffer = NULL; -- uint8_t *packet; -- uint32_t transfer_size; -- uint32_t remaining_buf_size; -- uint32_t window_offset_address; -- whd_result_t result; -- -- result = whd_host_buffer_get(whd_driver, &pkt_buffer, (direction == BUS_READ) ? WHD_NETWORK_RX : WHD_NETWORK_TX, -- ( uint16_t )(whd_bus_get_max_transfer_size(whd_driver) + -- whd_bus_backplane_read_padd_size( -- whd_driver) + MAX_BUS_HEADER_SIZE), WHD_TRUE); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Packet buffer allocation failed in %s at %d \n", __func__, __LINE__) ); -- goto done; -- } -- packet = (uint8_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, pkt_buffer); -- -- for (remaining_buf_size = size; remaining_buf_size != 0; -- remaining_buf_size -= transfer_size, address += transfer_size) -- { -- transfer_size = (remaining_buf_size > -- whd_bus_get_max_transfer_size(whd_driver) ) ? whd_bus_get_max_transfer_size(whd_driver) : -- remaining_buf_size; -- -- /* Check if the transfer crosses the backplane window boundary */ -- window_offset_address = address & BACKPLANE_ADDRESS_MASK; -- if ( (window_offset_address + transfer_size) > BACKPLANE_ADDRESS_MASK ) -- { -- /* Adjust the transfer size to within current window */ -- transfer_size = BACKPLANE_WINDOW_SIZE - window_offset_address; -- } -- result = whd_bus_set_backplane_window(whd_driver, address); -- if (result != WHD_SUCCESS) -- { -- goto done; -- } -- -- if (direction == BUS_WRITE) -- { -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- memcpy( ( (whd_transfer_bytes_packet_t *)packet )->data, data + size - remaining_buf_size, transfer_size ); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- result = whd_bus_transfer_bytes(whd_driver, direction, BACKPLANE_FUNCTION, -- (address & BACKPLANE_ADDRESS_MASK), (uint16_t)transfer_size, -- (whd_transfer_bytes_packet_t *)packet); -- if (result != WHD_SUCCESS) -- { -- goto done; -- } -- } -- else -- { -- result = whd_bus_transfer_bytes(whd_driver, direction, BACKPLANE_FUNCTION, -- (address & BACKPLANE_ADDRESS_MASK), -- ( uint16_t )(transfer_size + whd_bus_backplane_read_padd_size(whd_driver) ), -- (whd_transfer_bytes_packet_t *)packet); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("whd_bus_transfer_bytes failed\n") ); -- goto done; -- } -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- memcpy(data + size - remaining_buf_size, (uint8_t *)( (whd_transfer_bytes_packet_t *)packet )->data + -- whd_bus_backplane_read_padd_size(whd_driver), transfer_size); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- } -- } -- --done: CHECK_RETURN(whd_bus_set_backplane_window(whd_driver, CHIPCOMMON_BASE_ADDRESS) ); -- if (pkt_buffer != NULL) -- { -- CHECK_RETURN(whd_buffer_release(whd_driver, pkt_buffer, -- (direction == BUS_READ) ? WHD_NETWORK_RX : WHD_NETWORK_TX) ); -- } -- CHECK_RETURN(result); -- -- return WHD_SUCCESS; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_common.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_common.h -deleted file mode 100644 -index 90b071c65e..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_common.h -+++ /dev/null -@@ -1,65 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ --#include "whd.h" --#include -- --#ifndef INCLUDED_WHD_BUS_COMMON_H --#define INCLUDED_WHD_BUS_COMMON_H -- --#ifdef __cplusplus --extern "C" { --#endif -- --struct whd_bus_common_info; -- --void whd_bus_common_info_init(whd_driver_t whd_driver); --void whd_bus_common_info_deinit(whd_driver_t whd_driver); -- --/* Configure delayed sleep of bus. -- * A high number will mean a longer delay before sleep after the last operation (higher performance) -- * A shorter delay will mean quicker sleep after last operation (lower power use) -- */ --extern void whd_bus_sdio_wlan_set_delayed_bus_powersave_milliseconds(whd_driver_t whd_driver, uint32_t time_ms); --extern whd_result_t whd_bus_resume_after_deep_sleep(whd_driver_t whd_driver); -- --extern whd_result_t whd_bus_write_wifi_firmware_image(whd_driver_t whd_driver); --extern whd_result_t whd_bus_write_wifi_nvram_image(whd_driver_t whd_driver); --extern void whd_bus_set_resource_download_halt(whd_driver_t whd_driver, whd_bool_t halt); -- --extern whd_result_t whd_bus_transfer_backplane_bytes(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- uint32_t address, uint32_t size, uint8_t *data); --extern void whd_bus_init_backplane_window(whd_driver_t whd_driver); --whd_result_t whd_bus_set_backplane_window(whd_driver_t whd_driver, uint32_t addr); -- --whd_bool_t whd_bus_is_up(whd_driver_t whd_driver); --extern whd_result_t whd_bus_set_flow_control(whd_driver_t whd_driver, uint8_t value); --extern whd_bool_t whd_bus_is_flow_controlled(whd_driver_t whd_driver); -- --void whd_bus_set_state(whd_driver_t whd_driver, whd_bool_t state); -- --extern void whd_delayed_bus_release_schedule_update(whd_driver_t whd_driver, whd_bool_t is_scheduled); -- --/* handle delayed sleep of bus */ --extern uint32_t whd_bus_handle_delayed_release(whd_driver_t whd_driver); --whd_bool_t whd_bus_platform_mcu_power_save_deep_sleep_enabled(whd_driver_t whd_driver); -- --#ifdef __cplusplus --} /*extern "C" */ --#endif -- --#endif -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_protocol_interface.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_protocol_interface.h -deleted file mode 100644 -index 0ab6677d41..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_protocol_interface.h -+++ /dev/null -@@ -1,128 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include "cyabs_rtos.h" -- --#include "whd.h" --#include "whd_network_types.h" --#include "whd_types_int.h" -- --#ifndef INCLUDED_WHD_BUS_PROTOCOL_INTERFACE_H_ --#define INCLUDED_WHD_BUS_PROTOCOL_INTERFACE_H_ -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Constants --******************************************************/ -- --typedef enum --{ -- BUS_FUNCTION = 0, -- BACKPLANE_FUNCTION = 1, -- WLAN_FUNCTION = 2 --} whd_bus_function_t; -- --#define BUS_FUNCTION_MASK (0x3) /* Update this if adding functions */ -- --/****************************************************** --* Macros --******************************************************/ --#define PLATFORM_WLAN_ALLOW_BUS_TO_SLEEP_DELAY_MS 10 -- --#define DELAYED_BUS_RELEASE_SCHEDULE(whd_driver, schedule) do { whd_delayed_bus_release_schedule_update(whd_driver, \ -- schedule); \ --} while (0) -- --/****************************************************** --* Structures --******************************************************/ -- --#pragma pack(1) -- --typedef struct --{ -- uint8_t bus_header[MAX_BUS_HEADER_SIZE]; -- uint32_t data[1]; --} whd_transfer_bytes_packet_t; -- --#pragma pack() -- --typedef void (*whd_bus_irq_callback_t)(void *handler_arg, uint32_t event); -- --/****************************************************** --* Function declarations --******************************************************/ -- --/* Initialisation functions */ --extern whd_result_t whd_bus_init(whd_driver_t whd_driver); --extern whd_result_t whd_bus_deinit(whd_driver_t whd_driver); -- --/* Device register access functions */ --extern whd_result_t whd_bus_write_backplane_value(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, -- uint32_t value); --extern whd_result_t whd_bus_read_backplane_value(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, -- uint8_t *value); --extern whd_result_t whd_bus_write_register_value(whd_driver_t whd_driver, whd_bus_function_t function, uint32_t address, -- uint8_t value_length, uint32_t value); --extern whd_result_t whd_bus_read_register_value(whd_driver_t whd_driver, whd_bus_function_t function, uint32_t address, -- uint8_t value_length, uint8_t *value); -- --/* Device data transfer functions */ --extern whd_result_t whd_bus_send_buffer(whd_driver_t whd_driver, whd_buffer_t buffer); --extern whd_result_t whd_bus_transfer_bytes(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint16_t size, -- whd_transfer_bytes_packet_t *data); -- --/* Frame transfer function */ --extern whd_result_t whd_bus_read_frame(whd_driver_t whd_driver, whd_buffer_t *buffer); -- --extern uint32_t whd_bus_packet_available_to_read(whd_driver_t whd_driver); --extern whd_result_t whd_bus_poke_wlan(whd_driver_t whd_driver); --extern whd_result_t whd_bus_wait_for_wlan_event(whd_driver_t whd_driver, cy_semaphore_t *transceive_semaphore); -- --extern whd_result_t whd_bus_ack_interrupt(whd_driver_t whd_driver, uint32_t intstatus); --extern whd_bool_t whd_bus_wake_interrupt_present(whd_driver_t whd_driver); -- --extern whd_result_t whd_bus_set_flow_control(whd_driver_t whd_driver, uint8_t value); --extern whd_bool_t whd_bus_is_flow_controlled(whd_driver_t whd_driver); -- --extern whd_result_t whd_bus_wakeup(whd_driver_t whd_driver); --extern whd_result_t whd_bus_sleep(whd_driver_t whd_driver); -- --extern uint8_t whd_bus_backplane_read_padd_size(whd_driver_t whd_driver); --extern whd_bool_t whd_bus_use_status_report_scheme(whd_driver_t whd_driver); --extern uint32_t whd_bus_get_max_transfer_size(whd_driver_t whd_driver); -- --extern void whd_bus_init_stats(whd_driver_t whd_driver); --extern whd_result_t whd_bus_print_stats(whd_driver_t whd_driver, whd_bool_t reset_after_print); --extern whd_result_t whd_bus_reinit_stats(whd_driver_t whd_driver, whd_bool_t wake_from_firmware); --extern whd_result_t whd_bus_irq_enable(whd_driver_t whd_driver, whd_bool_t enable); --extern whd_result_t whd_bus_irq_register(whd_driver_t whd_driver); --/****************************************************** --* Global variables --******************************************************/ -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_BUS_PROTOCOL_INTERFACE_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_sdio_protocol.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_sdio_protocol.c -deleted file mode 100644 -index 043b623dff..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_sdio_protocol.c -+++ /dev/null -@@ -1,1469 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Broadcom WLAN SDIO Protocol interface -- * -- * Implements the WHD Bus Protocol Interface for SDIO -- * Provides functions for initialising, de-intitialising 802.11 device, -- * sending/receiving raw packets etc -- */ -- --#include --#include "cyabs_rtos.h" --#include "cyhal_sdio.h" --#include "cyhal_gpio.h" -- --#include "whd_bus_sdio_protocol.h" --#include "whd_bus.h" --#include "whd_bus_common.h" --#include "whd_chip_reg.h" --#include "whd_chip_constants.h" --#include "whd_int.h" --#include "whd_chip.h" --#include "whd_sdpcm.h" --#include "whd_debug.h" --#include "whd_sdio.h" --#include "whd_buffer_api.h" --#include "whd_resource_if.h" --#include "whd_types_int.h" --#include "whd_types.h" -- -- --/****************************************************** --* Constants --******************************************************/ --/* function 1 OCP space */ --#define SBSDIO_SB_OFT_ADDR_MASK 0x07FFF /* sb offset addr is <= 15 bits, 32k */ --#define SBSDIO_SB_OFT_ADDR_LIMIT 0x08000 --#define SBSDIO_SB_ACCESS_2_4B_FLAG 0x08000 /* with b15, maps to 32-bit SB access */ -- --#define F0_WORKING_TIMEOUT_MS (500) --#define F1_AVAIL_TIMEOUT_MS (500) --#define F2_AVAIL_TIMEOUT_MS (500) --#define F2_READY_TIMEOUT_MS (1000) --#define ALP_AVAIL_TIMEOUT_MS (100) --#define HT_AVAIL_TIMEOUT_MS (500) --#define ABORT_TIMEOUT_MS (100) --/* Taken from FALCON_5_90_195_26 dhd/sys/dhd_sdio.c. */ --#define SDIO_F2_WATERMARK (8) -- --#define INITIAL_READ 4 -- --#define WHD_THREAD_POLL_TIMEOUT (CY_RTOS_NEVER_TIMEOUT) -- --#define WHD_THREAD_POKE_TIMEOUT (100) -- --#define HOSTINTMASK (I_HMB_SW_MASK) -- -- --/****************************************************** --* Structures --******************************************************/ --struct whd_bus_priv --{ -- whd_sdio_config_t sdio_config; -- whd_bus_stats_t whd_bus_stats; -- cyhal_sdio_t *sdio_obj; -- --}; -- --/****************************************************** --* Variables --******************************************************/ -- --/****************************************************** --* Static Function Declarations --******************************************************/ -- --static whd_result_t whd_bus_sdio_transfer(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint16_t data_size, -- uint8_t *data, sdio_response_needed_t response_expected); --static whd_result_t whd_bus_sdio_cmd52(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint8_t value, -- sdio_response_needed_t response_expected, uint8_t *response); --static whd_result_t whd_bus_sdio_cmd53(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, sdio_transfer_mode_t mode, uint32_t address, -- uint16_t data_size, uint8_t *data, -- sdio_response_needed_t response_expected, -- uint32_t *response); --static whd_result_t whd_bus_sdio_abort_read(whd_driver_t whd_driver, whd_bool_t retry); --static whd_result_t whd_bus_sdio_download_firmware(whd_driver_t whd_driver); -- --static whd_result_t whd_bus_sdio_set_oob_interrupt(whd_driver_t whd_driver, uint8_t gpio_pin_number); -- --static void whd_bus_sdio_irq_handler(void *handler_arg, cyhal_sdio_irq_event_t event); --static void whd_bus_sdio_oob_irq_handler(void *arg, cyhal_gpio_irq_event_t event); -- --static whd_result_t whd_bus_sdio_irq_register(whd_driver_t whd_driver); --static whd_result_t whd_bus_sdio_irq_enable(whd_driver_t whd_driver, whd_bool_t enable); --static whd_result_t whd_bus_sdio_init_oob_intr(whd_driver_t whd_driver); --static whd_result_t whd_bus_sdio_deinit_oob_intr(whd_driver_t whd_driver); --static whd_result_t whd_bus_sdio_register_oob_intr(whd_driver_t whd_driver); --static whd_result_t whd_bus_sdio_unregister_oob_intr(whd_driver_t whd_driver); --static whd_result_t whd_bus_sdio_enable_oob_intr(whd_driver_t whd_driver, whd_bool_t enable); -- --/****************************************************** --* Global Function definitions --******************************************************/ -- --uint32_t whd_bus_sdio_attach(whd_driver_t whd_driver, whd_sdio_config_t *whd_sdio_config, cyhal_sdio_t *sdio_obj) --{ -- struct whd_bus_info *whd_bus_info; -- -- if (!whd_driver || !whd_sdio_config) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- whd_bus_info = (whd_bus_info_t *)malloc(sizeof(whd_bus_info_t) ); -- -- if (whd_bus_info == NULL) -- { -- WPRINT_WHD_ERROR( ("Memory allocation failed for whd_bus_info in %s\n", __FUNCTION__) ); -- return WHD_BUFFER_UNAVAILABLE_PERMANENT; -- } -- memset(whd_bus_info, 0, sizeof(whd_bus_info_t) ); -- -- whd_driver->bus_if = whd_bus_info; -- -- whd_driver->bus_priv = (struct whd_bus_priv *)malloc(sizeof(struct whd_bus_priv) ); -- -- if (whd_driver->bus_priv == NULL) -- { -- WPRINT_WHD_ERROR( ("Memory allocation failed for whd_bus_priv in %s\n", __FUNCTION__) ); -- return WHD_BUFFER_UNAVAILABLE_PERMANENT; -- } -- memset(whd_driver->bus_priv, 0, sizeof(struct whd_bus_priv) ); -- -- whd_driver->bus_priv->sdio_obj = sdio_obj; -- whd_driver->bus_priv->sdio_config = *whd_sdio_config; -- -- whd_bus_info->whd_bus_init_fptr = whd_bus_sdio_init; -- whd_bus_info->whd_bus_deinit_fptr = whd_bus_sdio_deinit; -- -- whd_bus_info->whd_bus_write_backplane_value_fptr = whd_bus_sdio_write_backplane_value; -- whd_bus_info->whd_bus_read_backplane_value_fptr = whd_bus_sdio_read_backplane_value; -- whd_bus_info->whd_bus_write_register_value_fptr = whd_bus_sdio_write_register_value; -- whd_bus_info->whd_bus_read_register_value_fptr = whd_bus_sdio_read_register_value; -- -- whd_bus_info->whd_bus_send_buffer_fptr = whd_bus_sdio_send_buffer; -- whd_bus_info->whd_bus_transfer_bytes_fptr = whd_bus_sdio_transfer_bytes; -- -- whd_bus_info->whd_bus_read_frame_fptr = whd_bus_sdio_read_frame; -- -- whd_bus_info->whd_bus_packet_available_to_read_fptr = whd_bus_sdio_packet_available_to_read; -- whd_bus_info->whd_bus_poke_wlan_fptr = whd_bus_sdio_poke_wlan; -- whd_bus_info->whd_bus_wait_for_wlan_event_fptr = whd_bus_sdio_wait_for_wlan_event; -- -- whd_bus_info->whd_bus_ack_interrupt_fptr = whd_bus_sdio_ack_interrupt; -- whd_bus_info->whd_bus_wake_interrupt_present_fptr = whd_bus_sdio_wake_interrupt_present; -- -- whd_bus_info->whd_bus_wakeup_fptr = whd_bus_sdio_wakeup; -- whd_bus_info->whd_bus_sleep_fptr = whd_bus_sdio_sleep; -- -- whd_bus_info->whd_bus_backplane_read_padd_size_fptr = whd_bus_sdio_backplane_read_padd_size; -- whd_bus_info->whd_bus_use_status_report_scheme_fptr = whd_bus_sdio_use_status_report_scheme; -- -- whd_bus_info->whd_bus_get_max_transfer_size_fptr = whd_bus_sdio_get_max_transfer_size; -- -- whd_bus_info->whd_bus_init_stats_fptr = whd_bus_sdio_init_stats; -- whd_bus_info->whd_bus_print_stats_fptr = whd_bus_sdio_print_stats; -- whd_bus_info->whd_bus_reinit_stats_fptr = whd_bus_sdio_reinit_stats; -- whd_bus_info->whd_bus_irq_register_fptr = whd_bus_sdio_irq_register; -- whd_bus_info->whd_bus_irq_enable_fptr = whd_bus_sdio_irq_enable; -- -- return WHD_SUCCESS; --} -- --void whd_bus_sdio_detach(whd_driver_t whd_driver) --{ -- if (whd_driver->bus_if != NULL) -- { -- free(whd_driver->bus_if); -- whd_driver->bus_if = NULL; -- } -- if (whd_driver->bus_priv != NULL) -- { -- free(whd_driver->bus_priv); -- whd_driver->bus_priv = NULL; -- } --} -- --whd_result_t whd_bus_sdio_ack_interrupt(whd_driver_t whd_driver, uint32_t intstatus) --{ -- return whd_bus_write_backplane_value(whd_driver, (uint32_t)SDIO_INT_STATUS, (uint8_t)4, intstatus); --} -- --whd_result_t whd_bus_sdio_wait_for_wlan_event(whd_driver_t whd_driver, cy_semaphore_t *transceive_semaphore) --{ -- whd_result_t result = WHD_SUCCESS; -- uint32_t timeout_ms = 1; -- uint32_t delayed_release_timeout_ms; -- -- REFERENCE_DEBUG_ONLY_VARIABLE(result); -- -- delayed_release_timeout_ms = whd_bus_handle_delayed_release(whd_driver); -- if (delayed_release_timeout_ms != 0) -- { -- timeout_ms = delayed_release_timeout_ms; -- } -- else -- { -- result = whd_allow_wlan_bus_to_sleep(whd_driver); -- whd_assert("Error setting wlan sleep", (result == WHD_SUCCESS) || (result == WHD_PENDING) ); -- -- if (result == WHD_SUCCESS) -- { -- timeout_ms = CY_RTOS_NEVER_TIMEOUT; -- } -- } -- -- /* Check if we have run out of bus credits */ -- if ( (whd_sdpcm_has_tx_packet(whd_driver) == WHD_TRUE) && (whd_sdpcm_get_available_credits(whd_driver) == 0) ) -- { -- /* Keep poking the WLAN until it gives us more credits */ -- result = whd_bus_poke_wlan(whd_driver); -- whd_assert("Poking failed!", result == WHD_SUCCESS); -- -- result = cy_rtos_get_semaphore(transceive_semaphore, (uint32_t)MIN_OF(timeout_ms, -- WHD_THREAD_POKE_TIMEOUT), WHD_FALSE); -- } -- else -- { -- result = cy_rtos_get_semaphore(transceive_semaphore, (uint32_t)MIN_OF(timeout_ms, -- WHD_THREAD_POLL_TIMEOUT), WHD_FALSE); -- } -- whd_assert("Could not get whd sleep semaphore\n", (result == CY_RSLT_SUCCESS) || (result == CY_RTOS_TIMEOUT) ); -- -- return result; --} -- --/* Device data transfer functions */ --whd_result_t whd_bus_sdio_send_buffer(whd_driver_t whd_driver, whd_buffer_t buffer) --{ -- whd_result_t retval; -- retval = -- whd_bus_transfer_bytes(whd_driver, BUS_WRITE, WLAN_FUNCTION, 0, -- (uint16_t)(whd_buffer_get_current_piece_size(whd_driver, -- buffer) - sizeof(whd_buffer_t) ), -- (whd_transfer_bytes_packet_t *)(whd_buffer_get_current_piece_data_pointer(whd_driver, -- buffer) + -- sizeof(whd_buffer_t) ) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, buffer, WHD_NETWORK_TX) ); -- if (retval == WHD_SUCCESS) -- { -- DELAYED_BUS_RELEASE_SCHEDULE(whd_driver, WHD_TRUE); -- } -- CHECK_RETURN (retval); -- -- return WHD_SUCCESS; --} -- --whd_result_t whd_bus_sdio_init(whd_driver_t whd_driver) --{ -- uint8_t byte_data; -- whd_result_t result; -- uint32_t loop_count; -- whd_time_t elapsed_time, current_time; -- uint32_t wifi_firmware_image_size = 0; -- uint16_t chip_id; -- -- whd_bus_set_flow_control(whd_driver, WHD_FALSE); -- -- whd_bus_init_backplane_window(whd_driver); -- -- /* Setup the backplane*/ -- loop_count = 0; -- do -- { -- /* Enable function 1 (backplane) */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IOEN, (uint8_t)1, -- SDIO_FUNC_ENABLE_1) ); -- if (loop_count != 0) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- } -- CHECK_RETURN(whd_bus_read_register_value (whd_driver, BUS_FUNCTION, SDIOD_CCCR_IOEN, (uint8_t)1, &byte_data) ); -- loop_count++; -- if (loop_count >= (uint32_t)F0_WORKING_TIMEOUT_MS) -- { -- WPRINT_WHD_ERROR( ("Timeout while setting up the backplane, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_TIMEOUT; -- } -- } while (byte_data != (uint8_t)SDIO_FUNC_ENABLE_1); -- -- if (whd_driver->bus_priv->sdio_config.sdio_1bit_mode == WHD_FALSE) -- { -- /* Read the bus width and set to 4 bits */ -- CHECK_RETURN(whd_bus_read_register_value (whd_driver, BUS_FUNCTION, SDIOD_CCCR_BICTRL, (uint8_t)1, -- &byte_data) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_BICTRL, (uint8_t)1, -- (byte_data & (~BUS_SD_DATA_WIDTH_MASK) ) | -- BUS_SD_DATA_WIDTH_4BIT) ); -- /* NOTE: We don't need to change our local bus settings since we're not sending any data (only using CMD52) -- * until after we change the bus speed further down */ -- } -- -- /* Set the block size */ -- -- /* Wait till the backplane is ready */ -- loop_count = 0; -- while ( ( (result = whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_BLKSIZE_0, (uint8_t)1, -- (uint32_t)SDIO_64B_BLOCK) ) == WHD_SUCCESS ) && -- ( (result = whd_bus_read_register_value (whd_driver, BUS_FUNCTION, SDIOD_CCCR_BLKSIZE_0, (uint8_t)1, -- &byte_data) ) == WHD_SUCCESS ) && -- (byte_data != (uint8_t)SDIO_64B_BLOCK) && -- (loop_count < (uint32_t)F0_WORKING_TIMEOUT_MS) ) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- loop_count++; -- if (loop_count >= (uint32_t)F0_WORKING_TIMEOUT_MS) -- { -- /* If the system fails here, check the high frequency crystal is working */ -- WPRINT_WHD_ERROR( ("Timeout while setting block size, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_TIMEOUT; -- } -- } -- -- CHECK_RETURN(result); -- -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_BLKSIZE_0, (uint8_t)1, -- (uint32_t)SDIO_64B_BLOCK) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_F1BLKSIZE_0, (uint8_t)1, -- (uint32_t)SDIO_64B_BLOCK) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_F2BLKSIZE_0, (uint8_t)1, -- (uint32_t)SDIO_64B_BLOCK) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_F2BLKSIZE_1, (uint8_t)1, -- (uint32_t)0) ); /* Function 2 = 64 */ -- -- /* Register interrupt handler*/ -- whd_bus_sdio_irq_register(whd_driver); -- /* Enable SDIO IRQ */ -- whd_bus_sdio_irq_enable(whd_driver, WHD_TRUE); -- -- /* Enable/Disable Client interrupts */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_INTEN, (uint8_t)1, -- INTR_CTL_MASTER_EN | INTR_CTL_FUNC1_EN | INTR_CTL_FUNC2_EN) ); -- -- if (whd_driver->bus_priv->sdio_config.high_speed_sdio_clock) -- { -- /* This code is required if we want more than 25 MHz clock */ -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_SPEED_CONTROL, 1, &byte_data) ); -- if ( (byte_data & 0x1) != 0 ) -- { -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_SPEED_CONTROL, 1, -- byte_data | SDIO_SPEED_EHS) ); -- } -- else -- { -- WPRINT_WHD_ERROR( ("Error reading bus register, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_BUS_READ_REGISTER_ERROR; -- } -- }/* HIGH_SPEED_SDIO_CLOCK */ -- -- -- -- /* Wait till the backplane is ready */ -- loop_count = 0; -- while ( ( (result = whd_bus_read_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IORDY, (uint8_t)1, -- &byte_data) ) == WHD_SUCCESS ) && -- ( (byte_data & SDIO_FUNC_READY_1) == 0 ) && -- (loop_count < (uint32_t)F1_AVAIL_TIMEOUT_MS) ) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- loop_count++; -- } -- if (loop_count >= (uint32_t)F1_AVAIL_TIMEOUT_MS) -- { -- WPRINT_WHD_ERROR( ("Timeout while waiting for backplane to be ready\n") ); -- return WHD_TIMEOUT; -- } -- CHECK_RETURN(result); -- -- /* Set the ALP */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, -- (uint32_t)(SBSDIO_FORCE_HW_CLKREQ_OFF | SBSDIO_ALP_AVAIL_REQ | -- SBSDIO_FORCE_ALP) ) ); -- -- loop_count = 0; -- while ( ( (result = whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, -- &byte_data) ) == WHD_SUCCESS ) && -- ( (byte_data & SBSDIO_ALP_AVAIL) == 0 ) && -- (loop_count < (uint32_t)ALP_AVAIL_TIMEOUT_MS) ) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- loop_count++; -- } -- if (loop_count >= (uint32_t)ALP_AVAIL_TIMEOUT_MS) -- { -- WPRINT_WHD_ERROR( ("Timeout while waiting for alp clock\n") ); -- return WHD_TIMEOUT; -- } -- CHECK_RETURN(result); -- -- /* Clear request for ALP */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, 0) ); -- -- /* Disable the extra SDIO pull-ups */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_PULL_UP, (uint8_t)1, 0) ); -- /* Enable F1 and F2 */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IOEN, (uint8_t)1, -- SDIO_FUNC_ENABLE_1 | SDIO_FUNC_ENABLE_2) ); -- -- /* Setup host-wake signals */ -- CHECK_RETURN(whd_bus_sdio_init_oob_intr(whd_driver) ); -- -- /* Enable F2 interrupt only */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_INTEN, (uint8_t)1, -- INTR_CTL_MASTER_EN | INTR_CTL_FUNC2_EN) ); -- -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IORDY, (uint8_t)1, &byte_data) ); -- -- /* Read the chip id */ -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, CHIPCOMMON_BASE_ADDRESS, 2, (uint8_t *)&chip_id) ); -- whd_chip_set_chip_id(whd_driver, chip_id); -- -- cy_rtos_get_time(&elapsed_time); -- result = whd_bus_sdio_download_firmware(whd_driver); -- cy_rtos_get_time(¤t_time); -- elapsed_time = current_time - elapsed_time; -- CHECK_RETURN(whd_resource_size(whd_driver, WHD_RESOURCE_WLAN_FIRMWARE, &wifi_firmware_image_size) ); -- WPRINT_WHD_INFO( ("WLAN FW download size: %" PRIu32 " bytes\n", wifi_firmware_image_size) ); -- WPRINT_WHD_INFO( ("WLAN FW download time: %" PRIu32 " ms\n", elapsed_time) ); -- -- if (result != WHD_SUCCESS) -- { -- /* either an error or user abort */ -- WPRINT_WHD_ERROR( ("SDIO firmware download error, %s failed at %d \n", __func__, __LINE__) ); -- return result; -- } -- -- /* Wait for F2 to be ready */ -- loop_count = 0; -- while ( ( (result = whd_bus_read_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IORDY, (uint8_t)1, -- &byte_data) ) == WHD_SUCCESS ) && -- ( (byte_data & SDIO_FUNC_READY_2) == 0 ) && -- (loop_count < (uint32_t)F2_READY_TIMEOUT_MS) ) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- loop_count++; -- } -- if (loop_count >= (uint32_t)F2_READY_TIMEOUT_MS) -- { -- /* If your system fails here, it could be due to incorrect NVRAM variables. -- * Check which 'wifi_nvram_image.h' file your platform is using, and -- * check that it matches the WLAN device on your platform, including the -- * crystal frequency. -- */ -- WPRINT_WHD_ERROR( ("Timeout while waiting for function 2 to be ready\n") ); -- /* Reachable after hitting assert */ -- return WHD_TIMEOUT; -- } -- -- CHECK_RETURN(whd_chip_specific_init(whd_driver) ); -- CHECK_RETURN(whd_ensure_wlan_bus_is_up(whd_driver) ); -- cyhal_sdio_irq_enable(whd_driver->bus_priv->sdio_obj, CYHAL_SDIO_CARD_INTERRUPT, WHD_TRUE); -- UNUSED_PARAMETER(elapsed_time); -- return result; --} -- --whd_result_t whd_bus_sdio_deinit(whd_driver_t whd_driver) --{ -- CHECK_RETURN(whd_bus_sdio_deinit_oob_intr(whd_driver) ); -- -- cyhal_sdio_irq_enable(whd_driver->bus_priv->sdio_obj, CYHAL_SDIO_CARD_INTERRUPT, WHD_FALSE); -- -- CHECK_RETURN(whd_allow_wlan_bus_to_sleep(whd_driver) ); -- -- whd_bus_set_resource_download_halt(whd_driver, WHD_FALSE); -- -- DELAYED_BUS_RELEASE_SCHEDULE(whd_driver, WHD_FALSE); -- -- return WHD_SUCCESS; --} -- --whd_bool_t whd_bus_sdio_wake_interrupt_present(whd_driver_t whd_driver) --{ -- uint32_t int_status = 0; -- -- /* Ensure the wlan backplane bus is up */ -- if (WHD_SUCCESS != whd_ensure_wlan_bus_is_up(whd_driver) ) -- return WHD_FALSE; -- -- if (whd_bus_read_backplane_value(whd_driver, (uint32_t)SDIO_INT_STATUS, (uint8_t)4, -- (uint8_t *)&int_status) != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: Error reading interrupt status\n", __FUNCTION__) ); -- goto exit; -- } -- if ( (I_HMB_HOST_INT & int_status) != 0 ) -- { -- /* Clear any interrupts */ -- if (whd_bus_write_backplane_value(whd_driver, (uint32_t)SDIO_INT_STATUS, (uint8_t)4, -- I_HMB_HOST_INT) != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: Error clearing interrupts\n", __FUNCTION__) ); -- goto exit; -- } -- if (whd_bus_read_backplane_value(whd_driver, (uint32_t)SDIO_INT_STATUS, (uint8_t)4, -- (uint8_t *)&int_status) != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: Error reading interrupt status\n", __FUNCTION__) ); -- goto exit; -- } -- WPRINT_WHD_DEBUG( ("whd_bus_sdio_wake_interrupt_present after clearing int_status = [%x]\n", -- (uint8_t)int_status) ); -- return WHD_TRUE; -- } --exit: -- return WHD_FALSE; --} -- --uint32_t whd_bus_sdio_packet_available_to_read(whd_driver_t whd_driver) --{ -- uint32_t int_status = 0; -- -- /* Ensure the wlan backplane bus is up */ -- CHECK_RETURN(whd_ensure_wlan_bus_is_up(whd_driver) ); -- -- /* Read the IntStatus */ -- if (whd_bus_read_backplane_value(whd_driver, (uint32_t)SDIO_INT_STATUS, (uint8_t)4, -- (uint8_t *)&int_status) != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: Error reading interrupt status\n", __FUNCTION__) ); -- int_status = 0; -- goto exit; -- } -- -- if ( (HOSTINTMASK & int_status) != 0 ) -- { -- /* Clear any interrupts */ -- if (whd_bus_write_backplane_value(whd_driver, (uint32_t)SDIO_INT_STATUS, (uint8_t)4, -- int_status & HOSTINTMASK) != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: Error clearing interrupts\n", __FUNCTION__) ); -- int_status = 0; -- goto exit; -- } -- } --exit: -- return ( (int_status) & (FRAME_AVAILABLE_MASK) ); --} -- --/* -- * From internal documentation: hwnbu-twiki/SdioMessageEncapsulation -- * When data is available on the device, the device will issue an interrupt: -- * - the device should signal the interrupt as a hint that one or more data frames may be available on the device for reading -- * - the host may issue reads of the 4 byte length tag at any time -- that is, whether an interupt has been issued or not -- * - if a frame is available, the tag read should return a nonzero length (>= 4) and the host can then read the remainder of the frame by issuing one or more CMD53 reads -- * - if a frame is not available, the 4byte tag read should return zero -- */ --whd_result_t whd_bus_sdio_read_frame(whd_driver_t whd_driver, whd_buffer_t *buffer) --{ -- uint16_t hwtag[8]; -- uint16_t extra_space_required; -- whd_result_t result; -- -- *buffer = NULL; -- -- /* Ensure the wlan backplane bus is up */ -- CHECK_RETURN(whd_ensure_wlan_bus_is_up(whd_driver) ); -- -- /* Read the frame header and verify validity */ -- memset(hwtag, 0, sizeof(hwtag) ); -- -- result = whd_bus_sdio_transfer(whd_driver, BUS_READ, WLAN_FUNCTION, 0, (uint16_t)INITIAL_READ, (uint8_t *)hwtag, -- RESPONSE_NEEDED); -- if (result != WHD_SUCCESS) -- { -- (void)whd_bus_sdio_abort_read(whd_driver, WHD_FALSE); /* ignore return - not much can be done if this fails */ -- WPRINT_WHD_ERROR( ("Error during SDIO receive, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_SDIO_RX_FAIL; -- } -- -- if ( ( (hwtag[0] | hwtag[1]) == 0 ) || -- ( (hwtag[0] ^ hwtag[1]) != (uint16_t)0xFFFF ) ) -- { -- return WHD_HWTAG_MISMATCH; -- } -- -- if ( (hwtag[0] == (uint16_t)12) && -- (whd_driver->internal_info.whd_wlan_status.state == WLAN_UP) ) -- { -- result = whd_bus_sdio_transfer(whd_driver, BUS_READ, WLAN_FUNCTION, 0, (uint16_t)8, (uint8_t *)&hwtag[2], -- RESPONSE_NEEDED); -- if (result != WHD_SUCCESS) -- { -- /* ignore return - not much can be done if this fails */ -- (void)whd_bus_sdio_abort_read(whd_driver, WHD_FALSE); -- WPRINT_WHD_ERROR( ("Error during SDIO receive, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_SDIO_RX_FAIL; -- } -- whd_sdpcm_update_credit(whd_driver, (uint8_t *)hwtag); -- return WHD_SUCCESS; -- } -- -- /* Calculate the space we need to store entire packet */ -- if ( (hwtag[0] > (uint16_t)INITIAL_READ) ) -- { -- extra_space_required = (uint16_t)(hwtag[0] - (uint16_t)INITIAL_READ); -- } -- else -- { -- extra_space_required = 0; -- } -- -- /* Allocate a suitable buffer */ -- result = whd_host_buffer_get(whd_driver, buffer, WHD_NETWORK_RX, (unsigned short)( (uint16_t)INITIAL_READ + -- extra_space_required + -- (uint16_t)sizeof( -- whd_buffer_header_t) ), -- WHD_FALSE); -- if (result != WHD_SUCCESS) -- { -- /* Read out the first 12 bytes to get the bus credit information, 4 bytes are already read in hwtag */ -- whd_assert("Get buffer error", -- ( (result == WHD_BUFFER_UNAVAILABLE_TEMPORARY) || (result == WHD_BUFFER_UNAVAILABLE_PERMANENT) ) ); -- result = whd_bus_sdio_transfer(whd_driver, BUS_READ, WLAN_FUNCTION, 0, (uint16_t)8, (uint8_t *)&hwtag[2], -- RESPONSE_NEEDED); -- if (result != WHD_SUCCESS) -- { -- /* ignore return - not much can be done if this fails */ -- (void)whd_bus_sdio_abort_read(whd_driver, WHD_FALSE); -- WPRINT_WHD_ERROR( ("Error during SDIO receive, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_SDIO_RX_FAIL; -- } -- result = whd_bus_sdio_abort_read(whd_driver, WHD_FALSE); -- whd_assert("Read-abort failed", result == WHD_SUCCESS); -- REFERENCE_DEBUG_ONLY_VARIABLE(result); -- -- whd_sdpcm_update_credit(whd_driver, (uint8_t *)hwtag); -- WPRINT_WHD_ERROR( ("Failed to allocate a buffer to receive into, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_RX_BUFFER_ALLOC_FAIL; -- } -- -- /* Copy the data already read */ -- memcpy(whd_buffer_get_current_piece_data_pointer(whd_driver, *buffer) + sizeof(whd_buffer_header_t), hwtag, -- (size_t)INITIAL_READ); -- -- /* Read the rest of the data */ -- if (extra_space_required > 0) -- { -- result = whd_bus_sdio_transfer(whd_driver, BUS_READ, WLAN_FUNCTION, 0, extra_space_required, -- whd_buffer_get_current_piece_data_pointer(whd_driver, -- *buffer) + sizeof(whd_buffer_header_t) + -- INITIAL_READ, RESPONSE_NEEDED); -- if (result != WHD_SUCCESS) -- { -- (void)whd_bus_sdio_abort_read(whd_driver, WHD_FALSE); /* ignore return - not much can be done if this fails */ -- CHECK_RETURN(whd_buffer_release(whd_driver, *buffer, WHD_NETWORK_RX) ); -- WPRINT_WHD_ERROR( ("Error during SDIO receive, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_SDIO_RX_FAIL; -- } -- } -- DELAYED_BUS_RELEASE_SCHEDULE(whd_driver, WHD_TRUE); -- return WHD_SUCCESS; --} -- --/****************************************************** --* Function definitions for Protocol Common --******************************************************/ -- --/* Device register access functions */ --whd_result_t whd_bus_sdio_write_backplane_value(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, -- uint32_t value) --{ -- CHECK_RETURN(whd_bus_set_backplane_window(whd_driver, address) ); -- -- address &= SBSDIO_SB_OFT_ADDR_MASK; -- -- if (register_length == 4) -- address |= SBSDIO_SB_ACCESS_2_4B_FLAG; -- -- CHECK_RETURN(whd_bus_sdio_transfer(whd_driver, BUS_WRITE, BACKPLANE_FUNCTION, address, register_length, -- (uint8_t *)&value, RESPONSE_NEEDED) ); -- -- return whd_bus_set_backplane_window(whd_driver, CHIPCOMMON_BASE_ADDRESS); --} -- --whd_result_t whd_bus_sdio_read_backplane_value(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, -- uint8_t *value) --{ -- *value = 0; -- CHECK_RETURN(whd_bus_set_backplane_window(whd_driver, address) ); -- -- address &= SBSDIO_SB_OFT_ADDR_MASK; -- -- if (register_length == 4) -- address |= SBSDIO_SB_ACCESS_2_4B_FLAG; -- -- CHECK_RETURN(whd_bus_sdio_transfer(whd_driver, BUS_READ, BACKPLANE_FUNCTION, address, register_length, value, -- RESPONSE_NEEDED) ); -- -- return whd_bus_set_backplane_window(whd_driver, CHIPCOMMON_BASE_ADDRESS); --} -- --whd_result_t whd_bus_sdio_write_register_value(whd_driver_t whd_driver, whd_bus_function_t function, uint32_t address, -- uint8_t value_length, uint32_t value) --{ -- return whd_bus_sdio_transfer(whd_driver, BUS_WRITE, function, address, value_length, (uint8_t *)&value, -- RESPONSE_NEEDED); --} -- --whd_result_t whd_bus_sdio_transfer_bytes(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint16_t size, -- whd_transfer_bytes_packet_t *data) --{ -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- return whd_bus_sdio_transfer(whd_driver, direction, function, address, size, (uint8_t *)data->data, -- RESPONSE_NEEDED); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) --} -- --/****************************************************** --* Static Function definitions --******************************************************/ -- --static whd_result_t whd_bus_sdio_transfer(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint16_t data_size, -- uint8_t *data, sdio_response_needed_t response_expected) --{ -- /* Note: this function had broken retry logic (never retried), which has been removed. -- * Failing fast helps problems on the bus get brought to light more quickly -- * and preserves the original behavior. -- */ -- whd_result_t result = WHD_SUCCESS; -- uint16_t data_byte_size; -- uint16_t data_blk_size; -- -- if (data_size == 0) -- { -- return WHD_BADARG; -- } -- else if (data_size == (uint16_t)1) -- { -- return whd_bus_sdio_cmd52(whd_driver, direction, function, address, *data, response_expected, data); -- } -- else if (whd_driver->internal_info.whd_wlan_status.state == WLAN_UP) -- { -- return whd_bus_sdio_cmd53(whd_driver, direction, function, -- (data_size >= (uint16_t)64) ? SDIO_BLOCK_MODE : SDIO_BYTE_MODE, address, data_size, -- data, response_expected, NULL); -- } -- else -- { -- /* We need to handle remaining size for source image download */ -- data_byte_size = data_size % SDIO_64B_BLOCK; -- data_blk_size = data_size - data_byte_size; -- if (data_blk_size != 0) -- { -- result = whd_bus_sdio_cmd53(whd_driver, direction, function, SDIO_BLOCK_MODE, address, -- data_blk_size, data, response_expected, NULL); -- if (result != WHD_SUCCESS) -- { -- return result; -- } -- data += data_blk_size; -- address += data_blk_size; -- } -- if (data_byte_size) -- { -- result = whd_bus_sdio_cmd53(whd_driver, direction, function, SDIO_BYTE_MODE, address, -- data_byte_size, data, response_expected, NULL); -- } -- return result; -- } --} -- --static whd_result_t whd_bus_sdio_cmd52(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint8_t value, -- sdio_response_needed_t response_expected, uint8_t *response) --{ -- uint32_t sdio_response; -- whd_result_t result; -- sdio_cmd_argument_t arg; -- arg.value = 0; -- arg.cmd52.function_number = (unsigned int)(function & BUS_FUNCTION_MASK); -- arg.cmd52.register_address = (unsigned int)(address & 0x00001ffff); -- arg.cmd52.rw_flag = (unsigned int)( (direction == BUS_WRITE) ? 1 : 0 ); -- arg.cmd52.write_data = value; -- -- WHD_BUS_STATS_INCREMENT_VARIABLE(whd_driver->bus_priv, cmd52); -- result = cyhal_sdio_send_cmd(whd_driver->bus_priv->sdio_obj, (cyhal_transfer_t)direction, -- CYHAL_SDIO_CMD_IO_RW_DIRECT, arg.value, -- &sdio_response); -- WHD_BUS_STATS_CONDITIONAL_INCREMENT_VARIABLE(whd_driver->bus_priv, (result != WHD_SUCCESS), cmd52_fail); -- -- if (response != NULL) -- { -- *response = (uint8_t)(sdio_response & 0x00000000ff); -- } -- -- if (result == CY_RSLT_SUCCESS) -- return WHD_SUCCESS; -- else -- return WHD_HAL_ERROR; -- --} -- --static whd_result_t whd_bus_sdio_cmd53(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, sdio_transfer_mode_t mode, uint32_t address, -- uint16_t data_size, uint8_t *data, -- sdio_response_needed_t response_expected, uint32_t *response) --{ -- sdio_cmd_argument_t arg; -- whd_result_t result; -- -- if (direction == BUS_WRITE) -- { -- WHD_BUS_STATS_INCREMENT_VARIABLE(whd_driver->bus_priv, cmd53_write); -- } -- -- arg.value = 0; -- arg.cmd53.function_number = (unsigned int)(function & BUS_FUNCTION_MASK); -- arg.cmd53.register_address = (unsigned int)(address & BIT_MASK(17) ); -- arg.cmd53.op_code = (unsigned int)1; -- arg.cmd53.rw_flag = (unsigned int)( (direction == BUS_WRITE) ? 1 : 0 ); -- -- if (mode == SDIO_BYTE_MODE) -- { -- whd_assert("whd_bus_sdio_cmd53: data_size > 512 for byte mode", (data_size <= (uint16_t )512) ); -- arg.cmd53.count = (unsigned int)(data_size & 0x1FF); -- -- result = -- cyhal_sdio_bulk_transfer(whd_driver->bus_priv->sdio_obj, (cyhal_transfer_t)direction, arg.value, -- (uint32_t *)data, data_size, response); -- -- if (result != CY_RSLT_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d cyhal_sdio_bulk_transfer SDIO_BYTE_MODE failed\n", __func__, __LINE__) ); -- goto done; -- } -- } -- else -- { -- arg.cmd53.count = (unsigned int)( (data_size / (uint16_t)SDIO_64B_BLOCK) & BIT_MASK(9) ); -- if ( (uint32_t)(arg.cmd53.count * (uint16_t)SDIO_64B_BLOCK) < data_size ) -- { -- ++arg.cmd53.count; -- } -- arg.cmd53.block_mode = (unsigned int)1; -- -- result = -- cyhal_sdio_bulk_transfer(whd_driver->bus_priv->sdio_obj, (cyhal_transfer_t)direction, arg.value, -- (uint32_t *)data, data_size, response); -- -- if (result != CY_RSLT_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d cyhal_sdio_bulk_transfer failed\n", __func__, __LINE__) ); -- goto done; -- } -- } -- -- if (direction == BUS_READ) -- { -- WHD_BUS_STATS_INCREMENT_VARIABLE(whd_driver->bus_priv, cmd53_read); -- } -- --done: -- WHD_BUS_STATS_CONDITIONAL_INCREMENT_VARIABLE(whd_driver->bus_priv, -- ( (result != WHD_SUCCESS) && (direction == BUS_READ) ), -- cmd53_read_fail); -- WHD_BUS_STATS_CONDITIONAL_INCREMENT_VARIABLE(whd_driver->bus_priv, -- ( (result != WHD_SUCCESS) && (direction == BUS_WRITE) ), -- cmd53_write_fail); -- if (result == CY_RSLT_SUCCESS) -- return WHD_SUCCESS; -- else -- return WHD_HAL_ERROR; --} -- --static whd_result_t whd_bus_sdio_download_firmware(whd_driver_t whd_driver) --{ -- uint8_t csr_val = 0; -- whd_result_t result; -- uint32_t loop_count; -- uint32_t ram_start_address; -- -- ram_start_address = GET_C_VAR(whd_driver, ATCM_RAM_BASE_ADDRESS); -- -- if (ram_start_address != 0) -- { -- CHECK_RETURN(whd_reset_core(whd_driver, WLAN_ARM_CORE, SICF_CPUHALT, SICF_CPUHALT) ); -- } -- else -- { -- CHECK_RETURN(whd_disable_device_core(whd_driver, WLAN_ARM_CORE, WLAN_CORE_FLAG_NONE) ); -- CHECK_RETURN(whd_disable_device_core(whd_driver, SOCRAM_CORE, WLAN_CORE_FLAG_NONE) ); -- CHECK_RETURN(whd_reset_device_core(whd_driver, SOCRAM_CORE, WLAN_CORE_FLAG_NONE) ); -- -- CHECK_RETURN(whd_chip_specific_socsram_init(whd_driver) ); -- } -- --#if 0 -- /* 43362 specific: Remap JTAG pins to UART output */ -- uint32_t data = 0; -- CHECK_RETURN(whd_bus_write_backplane_value(0x18000650, 1, 1) ); -- CHECK_RETURN(whd_bus_read_backplane_value(0x18000654, 4, (uint8_t *)&data) ); -- data |= (1 << 24); -- CHECK_RETURN(whd_bus_write_backplane_value(0x18000654, 4, data) ); --#endif -- -- result = whd_bus_write_wifi_firmware_image(whd_driver); -- -- if (result == WHD_UNFINISHED) -- { -- WPRINT_WHD_INFO( ("User aborted fw download\n") ); -- /* user aborted */ -- return result; -- } -- else if (result != WHD_SUCCESS) -- { -- whd_assert("Failed to load wifi firmware\n", result == WHD_SUCCESS); -- return result; -- } -- -- CHECK_RETURN(whd_bus_write_wifi_nvram_image(whd_driver) ); -- -- /* Take the ARM core out of reset */ -- if (ram_start_address != 0) -- { -- CHECK_RETURN(whd_reset_core(whd_driver, WLAN_ARM_CORE, 0, 0) ); -- } -- else -- { -- CHECK_RETURN(whd_reset_device_core(whd_driver, WLAN_ARM_CORE, WLAN_CORE_FLAG_NONE) ); -- -- result = whd_device_core_is_up(whd_driver, WLAN_ARM_CORE); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Could not bring ARM core up\n") ); -- /* Reachable after hitting assert */ -- return result; -- } -- } -- -- /* Wait until the High Throughput clock is available */ -- loop_count = 0; -- while ( ( (result = whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, -- &csr_val) ) == WHD_SUCCESS ) && -- ( (csr_val & SBSDIO_HT_AVAIL) == 0 ) && -- (loop_count < (uint32_t)HT_AVAIL_TIMEOUT_MS) ) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- loop_count++; -- } -- if (loop_count >= (uint32_t)HT_AVAIL_TIMEOUT_MS) -- { -- /* If your system times out here, it means that the WLAN firmware is not booting. -- * Check that your WLAN chip matches the 'wifi_image.c' being built - in GNU toolchain, $(CHIP) -- * makefile variable must be correct. -- */ -- WPRINT_WHD_ERROR( ("Timeout while waiting for high throughput clock\n") ); -- /* Reachable after hitting assert */ -- return WHD_TIMEOUT; -- } -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error while waiting for high throughput clock\n") ); -- /* Reachable after hitting assert */ -- return result; -- } -- -- /* Set up the interrupt mask and enable interrupts */ -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, SDIO_INT_HOST_MASK, (uint8_t)4, HOSTINTMASK) ); -- -- /* Enable F2 interrupts. This wasn't required for 4319 but is for the 43362 */ -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, SDIO_FUNCTION_INT_MASK, (uint8_t)1, -- SDIO_FUNC_MASK_F1 | SDIO_FUNC_MASK_F2) ); -- -- /* Lower F2 Watermark to avoid DMA Hang in F2 when SD Clock is stopped. */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_FUNCTION2_WATERMARK, (uint8_t)1, -- (uint32_t)SDIO_F2_WATERMARK) ); -- -- return WHD_SUCCESS; --} -- --/** Aborts a SDIO read of a packet from the 802.11 device -- * -- * This function is necessary because the only way to obtain the size of the next -- * available received packet is to read the first four bytes of the packet. -- * If the system reads these four bytes, and then fails to allocate the required -- * memory, then this function allows the system to abort the packet read cleanly, -- * and to optionally tell the 802.11 device to keep it allowing reception once -- * memory is available. -- * -- * In order to do this abort, the following actions are performed: -- * - Sets abort bit for Function 2 (WLAN Data) to request stopping transfer -- * - Sets Read Frame Termination bit to flush and reset fifos -- * - If packet is to be kept and resent by 802.11 device, a NAK is sent -- * - Wait whilst the Fifo is emptied of the packet ( reading during this period would cause all zeros to be read ) -- * -- * @param retry : WHD_TRUE if 802.11 device is to keep and resend packet -- * WHD_FALSE if 802.11 device is to drop packet -- * -- * @return WHD_SUCCESS if successful, otherwise error code -- */ --static whd_result_t whd_bus_sdio_abort_read(whd_driver_t whd_driver, whd_bool_t retry) --{ -- WHD_BUS_STATS_INCREMENT_VARIABLE(whd_driver->bus_priv, read_aborts); -- -- /* Abort transfer on WLAN_FUNCTION */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IOABORT, (uint8_t)1, -- (uint32_t)WLAN_FUNCTION) ); -- -- /* Send frame terminate */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_FRAME_CONTROL, (uint8_t)1, -- SFC_RF_TERM) ); -- -- /* If we want to retry message, send NAK */ -- if (retry == WHD_TRUE) -- { -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, (uint32_t)SDIO_TO_SB_MAIL_BOX, (uint8_t)1, SMB_NAK) ); -- } -- -- return WHD_SUCCESS; --} -- --whd_result_t whd_bus_sdio_read_register_value(whd_driver_t whd_driver, whd_bus_function_t function, uint32_t address, -- uint8_t value_length, uint8_t *value) --{ -- memset(value, 0, (size_t)value_length); -- return whd_bus_sdio_transfer(whd_driver, BUS_READ, function, address, value_length, value, RESPONSE_NEEDED); --} -- --whd_result_t whd_bus_sdio_poke_wlan(whd_driver_t whd_driver) --{ -- /*TODO: change 1<<3 to a register hash define */ -- return whd_bus_write_backplane_value(whd_driver, SDIO_TO_SB_MAILBOX, (uint8_t)4, (uint32_t)(1 << 3) ); --} -- --whd_result_t whd_bus_sdio_wakeup(whd_driver_t whd_driver) --{ -- return WHD_SUCCESS; --} -- --whd_result_t whd_bus_sdio_sleep(whd_driver_t whd_driver) --{ -- return WHD_SUCCESS; --} -- --static whd_result_t whd_bus_sdio_set_oob_interrupt(whd_driver_t whd_driver, uint8_t gpio_pin_number) --{ -- if (gpio_pin_number != 0) -- { -- /* Redirect to OOB interrupt to GPIO1 */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_GPIO_SELECT, (uint8_t)1, -- (uint32_t)0xF) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_GPIO_OUTPUT, (uint8_t)1, -- (uint32_t)0x0) ); -- -- /* Enable GPIOx (bit x) */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_GPIO_ENABLE, (uint8_t)1, -- (uint32_t)0x2) ); -- -- /* Set GPIOx (bit x) on Chipcommon GPIO Control register */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, CHIPCOMMON_GPIO_CONTROL, (uint8_t)4, -- (uint32_t)0x2) ); -- } -- -- return WHD_SUCCESS; --} -- --void whd_bus_sdio_init_stats(whd_driver_t whd_driver) --{ -- memset(&whd_driver->bus_priv->whd_bus_stats, 0, sizeof(whd_bus_stats_t) ); --} -- --whd_result_t whd_bus_sdio_print_stats(whd_driver_t whd_driver, whd_bool_t reset_after_print) --{ -- WPRINT_MACRO( ("Bus Stats.. \n" -- "cmd52:%" PRIu32 ", cmd53_read:%" PRIu32 ", cmd53_write:%" PRIu32 "\n" -- "cmd52_fail:%" PRIu32 ", cmd53_read_fail:%" PRIu32 ", cmd53_write_fail:%" PRIu32 "\n" -- "oob_intrs:%" PRIu32 ", sdio_intrs:%" PRIu32 ", error_intrs:%" PRIu32 ", read_aborts:%" PRIu32 -- "\n", -- whd_driver->bus_priv->whd_bus_stats.cmd52, whd_driver->bus_priv->whd_bus_stats.cmd53_read, -- whd_driver->bus_priv->whd_bus_stats.cmd53_write, -- whd_driver->bus_priv->whd_bus_stats.cmd52_fail, -- whd_driver->bus_priv->whd_bus_stats.cmd53_read_fail, -- whd_driver->bus_priv->whd_bus_stats.cmd53_write_fail, -- whd_driver->bus_priv->whd_bus_stats.oob_intrs, -- whd_driver->bus_priv->whd_bus_stats.sdio_intrs, -- whd_driver->bus_priv->whd_bus_stats.error_intrs, -- whd_driver->bus_priv->whd_bus_stats.read_aborts) ); -- -- if (reset_after_print == WHD_TRUE) -- { -- memset(&whd_driver->bus_priv->whd_bus_stats, 0, sizeof(whd_bus_stats_t) ); -- } -- -- return WHD_SUCCESS; --} -- --/* Waking the firmware up from Deep Sleep */ --whd_result_t whd_bus_sdio_reinit_stats(whd_driver_t whd_driver, whd_bool_t wake_from_firmware) --{ -- whd_result_t result = WHD_SUCCESS; -- uint8_t byte_data; -- uint32_t loop_count; -- loop_count = 0; -- -- /* Setup the backplane*/ -- loop_count = 0; -- -- do -- { -- /* Enable function 1 (backplane) */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IOEN, (uint8_t)1, -- SDIO_FUNC_ENABLE_1) ); -- if (loop_count != 0) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- } -- -- CHECK_RETURN(whd_bus_read_register_value (whd_driver, BUS_FUNCTION, SDIOD_CCCR_IOEN, (uint8_t)1, &byte_data) ); -- loop_count++; -- if (loop_count >= (uint32_t)F0_WORKING_TIMEOUT_MS) -- { -- WPRINT_WHD_ERROR( ("Timeout on CCCR update\n") ); -- return WHD_TIMEOUT; -- } -- } while (byte_data != (uint8_t)SDIO_FUNC_ENABLE_1); -- -- if (whd_driver->bus_priv->sdio_config.sdio_1bit_mode == WHD_FALSE) -- { -- /* Read the bus width and set to 4 bits */ -- CHECK_RETURN(whd_bus_read_register_value (whd_driver, BUS_FUNCTION, SDIOD_CCCR_BICTRL, (uint8_t)1, -- &byte_data) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_BICTRL, (uint8_t)1, -- (byte_data & (~BUS_SD_DATA_WIDTH_MASK) ) | BUS_SD_DATA_WIDTH_4BIT) ); -- /* NOTE: We don't need to change our local bus settings since we're not sending any data (only using CMD52) -- * until after we change the bus speed further down */ -- } -- -- /* Set the block size */ -- /* Wait till the backplane is ready */ -- loop_count = 0; -- while ( ( (result = whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_BLKSIZE_0, (uint8_t)1, -- (uint32_t)SDIO_64B_BLOCK) ) == WHD_SUCCESS ) && -- ( (result = whd_bus_read_register_value (whd_driver, BUS_FUNCTION, SDIOD_CCCR_BLKSIZE_0, (uint8_t)1, -- &byte_data) ) == WHD_SUCCESS ) && -- (byte_data != (uint8_t)SDIO_64B_BLOCK) && -- (loop_count < (uint32_t)F0_WORKING_TIMEOUT_MS) ) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- loop_count++; -- if (loop_count >= (uint32_t)F0_WORKING_TIMEOUT_MS) -- { -- /* If the system fails here, check the high frequency crystal is working */ -- WPRINT_WHD_ERROR( ("Timeout while setting block size\n") ); -- return WHD_TIMEOUT; -- } -- } -- -- CHECK_RETURN(result); -- -- WPRINT_WHD_DEBUG( ("Modding registers for blocks\n") ); -- -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_BLKSIZE_0, (uint8_t)1, -- (uint32_t)SDIO_64B_BLOCK) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_F1BLKSIZE_0, (uint8_t)1, -- (uint32_t)SDIO_64B_BLOCK) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_F2BLKSIZE_0, (uint8_t)1, -- (uint32_t)SDIO_64B_BLOCK) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_F2BLKSIZE_1, (uint8_t)1, -- (uint32_t)0) ); /* Function 2 = 64 */ -- -- /* Enable/Disable Client interrupts */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_INTEN, (uint8_t)1, -- INTR_CTL_MASTER_EN | INTR_CTL_FUNC1_EN | INTR_CTL_FUNC2_EN) ); -- -- -- if (whd_driver->bus_priv->sdio_config.high_speed_sdio_clock) -- { -- WPRINT_WHD_DEBUG( ("SDIO HS clock enable\n") ); -- -- /* This code is required if we want more than 25 MHz clock */ -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_SPEED_CONTROL, 1, &byte_data) ); -- if ( (byte_data & 0x1) != 0 ) -- { -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_SPEED_CONTROL, 1, -- byte_data | SDIO_SPEED_EHS) ); -- } -- else -- { -- WPRINT_WHD_ERROR( ("Error writing to WLAN register, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_BUS_READ_REGISTER_ERROR; -- } -- } /* HIGH_SPEED_SDIO_CLOCK */ -- -- /* Wait till the backplane is ready */ -- loop_count = 0; -- while ( ( (result = whd_bus_read_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IORDY, (uint8_t)1, -- &byte_data) ) == WHD_SUCCESS ) && -- ( (byte_data & SDIO_FUNC_READY_1) == 0 ) && -- (loop_count < (uint32_t)F1_AVAIL_TIMEOUT_MS) ) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- loop_count++; -- } -- -- if (loop_count >= (uint32_t)F1_AVAIL_TIMEOUT_MS) -- { -- WPRINT_WHD_ERROR( ("Timeout while waiting for backplane to be ready\n") ); -- return WHD_TIMEOUT; -- } -- CHECK_RETURN(result); -- -- /* Set the ALP */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, -- (uint32_t)(SBSDIO_FORCE_HW_CLKREQ_OFF | SBSDIO_ALP_AVAIL_REQ | -- SBSDIO_FORCE_ALP) ) ); -- loop_count = 0; -- while ( ( (result = whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, -- &byte_data) ) != WHD_SUCCESS ) || -- ( ( (byte_data & SBSDIO_ALP_AVAIL) == 0 ) && -- (loop_count < (uint32_t)ALP_AVAIL_TIMEOUT_MS) ) ) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- loop_count++; -- } -- if (loop_count >= (uint32_t)ALP_AVAIL_TIMEOUT_MS) -- { -- WPRINT_WHD_ERROR( ("Timeout while waiting for alp clock\n") ); -- return WHD_TIMEOUT; -- } -- CHECK_RETURN(result); -- -- /* Clear request for ALP */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, 0) ); -- -- /* Disable the extra SDIO pull-ups */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_PULL_UP, (uint8_t)1, 0) ); -- -- /* Enable F1 and F2 */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IOEN, (uint8_t)1, -- SDIO_FUNC_ENABLE_1 | SDIO_FUNC_ENABLE_2) ); -- -- /* Setup host-wake signals */ -- CHECK_RETURN(whd_bus_sdio_init_oob_intr(whd_driver) ); -- -- /* Enable F2 interrupt only */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_INTEN, (uint8_t)1, -- INTR_CTL_MASTER_EN | INTR_CTL_FUNC2_EN) ); -- -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IORDY, (uint8_t)1, &byte_data) ); -- -- result = whd_bus_sdio_download_firmware(whd_driver); -- -- if (result != WHD_SUCCESS) -- { -- /* either an error or user abort */ -- WPRINT_WHD_DEBUG( ("FW download failed\n") ); -- return result; -- } -- -- /* Wait for F2 to be ready */ -- loop_count = 0; -- while ( ( (result = whd_bus_read_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IORDY, (uint8_t)1, -- &byte_data) ) != WHD_SUCCESS ) || -- ( ( (byte_data & SDIO_FUNC_READY_2) == 0 ) && -- (loop_count < (uint32_t)F2_READY_TIMEOUT_MS) ) ) -- { -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- loop_count++; -- } -- -- if (loop_count >= (uint32_t)F2_READY_TIMEOUT_MS) -- { -- WPRINT_WHD_DEBUG( ("Timeout while waiting for function 2 to be ready\n") ); -- -- if (WHD_TRUE == wake_from_firmware) -- { -- /* If your system fails here, it could be due to incorrect NVRAM variables. -- * Check which 'wifi_nvram_image.h' file your platform is using, and -- * check that it matches the WLAN device on your platform, including the -- * crystal frequency. -- */ -- WPRINT_WHD_ERROR( ("F2 failed on wake fr FW\n") ); -- /* Reachable after hitting assert */ -- return WHD_TIMEOUT; -- } -- /* Else: Ignore this failure if we're doing a reinit due to host wake: Linux DHD also ignores */ -- -- } -- -- /* Do chip specific init */ -- CHECK_RETURN(whd_chip_specific_init(whd_driver) ); -- -- /* Ensure Bus is up */ -- CHECK_RETURN(whd_ensure_wlan_bus_is_up(whd_driver) ); -- -- /* Allow bus to go to sleep */ -- CHECK_RETURN(whd_allow_wlan_bus_to_sleep(whd_driver) ); -- -- WPRINT_WHD_INFO( ("whd_bus_reinit Completed \n") ); -- return WHD_SUCCESS; --} -- --uint8_t whd_bus_sdio_backplane_read_padd_size(whd_driver_t whd_driver) --{ -- return WHD_BUS_SDIO_BACKPLANE_READ_PADD_SIZE; --} -- --whd_bool_t whd_bus_sdio_use_status_report_scheme(whd_driver_t whd_driver) --{ -- return WHD_FALSE; --} -- --uint32_t whd_bus_sdio_get_max_transfer_size(whd_driver_t whd_driver) --{ -- return WHD_BUS_SDIO_MAX_BACKPLANE_TRANSFER_SIZE; --} -- --static void whd_bus_sdio_irq_handler(void *handler_arg, cyhal_sdio_irq_event_t event) --{ -- whd_driver_t whd_driver = (whd_driver_t)handler_arg; -- -- /* WHD registered only for CY_CYHAL_SDIO_CARD_INTERRUPT */ -- if (event != CYHAL_SDIO_CARD_INTERRUPT) -- { -- WPRINT_WHD_ERROR( ("Unexpected interrupt event %d\n", event) ); -- WHD_BUS_STATS_INCREMENT_VARIABLE(whd_driver->bus_priv, error_intrs); -- return; -- } -- -- WHD_BUS_STATS_INCREMENT_VARIABLE(whd_driver->bus_priv, sdio_intrs); -- -- /* call thread notify to wake up WHD thread */ -- whd_thread_notify_irq(whd_driver); --} -- --whd_result_t whd_bus_sdio_irq_register(whd_driver_t whd_driver) --{ -- cyhal_sdio_register_irq(whd_driver->bus_priv->sdio_obj, whd_bus_sdio_irq_handler, whd_driver); -- return WHD_SUCCESS; --} -- --whd_result_t whd_bus_sdio_irq_enable(whd_driver_t whd_driver, whd_bool_t enable) --{ -- cyhal_sdio_irq_enable(whd_driver->bus_priv->sdio_obj, CYHAL_SDIO_CARD_INTERRUPT, enable); -- return WHD_SUCCESS; --} -- --static void whd_bus_sdio_oob_irq_handler(void *arg, cyhal_gpio_irq_event_t event) --{ -- whd_driver_t whd_driver = (whd_driver_t)arg; -- const whd_oob_config_t *config = &whd_driver->bus_priv->sdio_config.oob_config; -- const cyhal_gpio_irq_event_t expected_event = (config->is_falling_edge == WHD_TRUE) -- ? CYHAL_GPIO_IRQ_FALL : CYHAL_GPIO_IRQ_RISE; -- -- if (event != expected_event) -- { -- WPRINT_WHD_ERROR( ("Unexpected interrupt event %d\n", event) ); -- WHD_BUS_STATS_INCREMENT_VARIABLE(whd_driver->bus_priv, error_intrs); -- return; -- } -- -- WHD_BUS_STATS_INCREMENT_VARIABLE(whd_driver->bus_priv, oob_intrs); -- -- /* Call thread notify to wake up WHD thread */ -- whd_thread_notify_irq(whd_driver); --} -- --static whd_result_t whd_bus_sdio_register_oob_intr(whd_driver_t whd_driver) --{ -- const whd_oob_config_t *config = &whd_driver->bus_priv->sdio_config.oob_config; -- -- cyhal_gpio_init(config->host_oob_pin, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_NONE, 0); -- cyhal_gpio_register_irq(config->host_oob_pin, config->intr_priority, whd_bus_sdio_oob_irq_handler, -- whd_driver); -- -- return WHD_SUCCESS; --} -- --static whd_result_t whd_bus_sdio_unregister_oob_intr(whd_driver_t whd_driver) --{ -- const whd_oob_config_t *config = &whd_driver->bus_priv->sdio_config.oob_config; -- -- cyhal_gpio_register_irq(config->host_oob_pin, config->intr_priority, NULL, NULL); -- -- return WHD_SUCCESS; --} -- --static whd_result_t whd_bus_sdio_enable_oob_intr(whd_driver_t whd_driver, whd_bool_t enable) --{ -- const whd_oob_config_t *config = &whd_driver->bus_priv->sdio_config.oob_config; -- const cyhal_gpio_irq_event_t event = -- (config->is_falling_edge == WHD_TRUE) ? CYHAL_GPIO_IRQ_FALL : CYHAL_GPIO_IRQ_RISE; -- -- cyhal_gpio_irq_enable(config->host_oob_pin, event, (enable == WHD_TRUE) ? true : false); -- -- return WHD_SUCCESS; --} -- --static whd_result_t whd_bus_sdio_init_oob_intr(whd_driver_t whd_driver) --{ -- const whd_oob_config_t *config = &whd_driver->bus_priv->sdio_config.oob_config; -- uint8_t sepintpol; -- -- /* OOB isn't configured so bail */ -- if (config->host_oob_pin == CYHAL_NC_PIN_VALUE) -- return WHD_SUCCESS; -- -- /* Choose out-of-band interrupt polarity */ -- if (config->is_falling_edge == WHD_FALSE) -- { -- sepintpol = SEP_INTR_CTL_POL; -- } -- else -- { -- sepintpol = 0; -- } -- -- /* Set OOB interrupt to the correct WLAN GPIO pin (default to GPIO0) */ -- if (config->dev_gpio_sel) -- CHECK_RETURN(whd_bus_sdio_set_oob_interrupt(whd_driver, config->dev_gpio_sel) ); -- -- /* Enable out-of-band interrupt on the device */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_SEP_INT_CTL, (uint8_t)1, -- SEP_INTR_CTL_MASK | SEP_INTR_CTL_EN | sepintpol) ); -- -- /* Register and enable OOB */ -- /* XXX Remove this when BSP377 is implemented */ -- CHECK_RETURN(whd_bus_sdio_register_oob_intr(whd_driver) ); -- CHECK_RETURN(whd_bus_sdio_enable_oob_intr(whd_driver, WHD_TRUE) ); -- -- return WHD_SUCCESS; --} -- --static whd_result_t whd_bus_sdio_deinit_oob_intr(whd_driver_t whd_driver) --{ -- const whd_oob_config_t *config = &whd_driver->bus_priv->sdio_config.oob_config; -- -- if (config->host_oob_pin != CYHAL_NC_PIN_VALUE) -- { -- CHECK_RETURN(whd_bus_sdio_enable_oob_intr(whd_driver, WHD_FALSE) ); -- CHECK_RETURN(whd_bus_sdio_unregister_oob_intr(whd_driver) ); -- } -- -- return WHD_SUCCESS; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_sdio_protocol.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_sdio_protocol.h -deleted file mode 100644 -index f276334a51..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_sdio_protocol.h -+++ /dev/null -@@ -1,229 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include "whd.h" --#include "bus_protocols/whd_bus_protocol_interface.h" -- --#ifndef INCLUDED_SDIO_WHD_BUS_PROTOCOL_H --#define INCLUDED_SDIO_WHD_BUS_PROTOCOL_H -- --#ifdef __cplusplus --extern "C" { --#endif -- --/****************************************************** --* Macros --******************************************************/ --#define BIT_MASK(x) ( (1 << x) - 1 ) -- --#define WHD_BUS_HEADER_SIZE (0) -- --#define WHD_BUS_SDIO_MAX_BACKPLANE_TRANSFER_SIZE (1536) --#define WHD_BUS_SDIO_BACKPLANE_READ_PADD_SIZE (0) -- --/****************************************************** --* Structures --******************************************************/ --#pragma pack(1) --typedef struct --{ -- unsigned char stuff_bits; -- unsigned int ocr : 24; --} sdio_cmd5_argument_t; -- --typedef struct --{ -- unsigned int _unique2 : 9; /* 0-8 */ -- unsigned int register_address : 17; /* 9-25 */ -- unsigned int _unique : 2; /* 26-27 */ -- unsigned int function_number : 3; /* 28-30 */ -- unsigned int rw_flag : 1; /* 31 */ --} sdio_cmd5x_argument_t; -- --typedef struct --{ -- uint8_t write_data; /* 0 - 7 */ -- unsigned int _stuff2 : 1; /* 8 */ -- unsigned int register_address : 17; /* 9-25 */ -- unsigned int _stuff : 1; /* 26 */ -- unsigned int raw_flag : 1; /* 27 */ -- unsigned int function_number : 3; /* 28-30 */ -- unsigned int rw_flag : 1; /* 31 */ --} whd_bus_sdio_cmd52_argument_t; -- --typedef struct --{ -- unsigned int count : 9; /* 0-8 */ -- unsigned int register_address : 17; /* 9-25 */ -- unsigned int op_code : 1; /* 26 */ -- unsigned int block_mode : 1; /* 27 */ -- unsigned int function_number : 3; /* 28-30 */ -- unsigned int rw_flag : 1; /* 31 */ --} whd_bus_sdio_cmd53_argument_t; -- --typedef union --{ -- uint32_t value; -- sdio_cmd5_argument_t cmd5; -- sdio_cmd5x_argument_t cmd5x; -- whd_bus_sdio_cmd52_argument_t cmd52; -- whd_bus_sdio_cmd53_argument_t cmd53; --} sdio_cmd_argument_t; -- --typedef struct --{ -- unsigned int ocr : 24; /* 0-23 */ -- unsigned int stuff_bits : 3; /* 24-26 */ -- unsigned int memory_present : 1; /* 27 */ -- unsigned int function_count : 3; /* 28-30 */ -- unsigned int c : 1; /* 31 */ --} sdio_response4_t; -- --typedef struct --{ -- uint8_t data; /* 0-7 */ -- uint8_t response_flags; /* 8-15 */ -- uint16_t stuff; /* 16-31 */ --} sdio_response5_t; -- --typedef struct --{ -- uint16_t card_status; /* 0-15 */ -- uint16_t rca; /* 16-31 */ --} sdio_response6_t; -- --typedef union --{ -- uint32_t value; -- sdio_response4_t r4; -- sdio_response5_t r5; -- sdio_response6_t r6; --} sdio_response_t; -- --typedef enum --{ -- SDIO_BLOCK_MODE = (0 << 2), /* These are STM32 implementation specific */ -- SDIO_BYTE_MODE = (1 << 2) /* These are STM32 implementation specific */ --} sdio_transfer_mode_t; -- --typedef enum --{ -- SDIO_1B_BLOCK = 1, SDIO_2B_BLOCK = 2, SDIO_4B_BLOCK = 4, SDIO_8B_BLOCK = 8, SDIO_16B_BLOCK = 16, -- SDIO_32B_BLOCK = 32, SDIO_64B_BLOCK = 64, SDIO_128B_BLOCK = 128, SDIO_256B_BLOCK = 256, SDIO_512B_BLOCK = 512, -- SDIO_1024B_BLOCK = 1024, SDIO_2048B_BLOCK = 2048 --} sdio_block_size_t; -- --typedef enum --{ -- RESPONSE_NEEDED, NO_RESPONSE --} sdio_response_needed_t; -- -- --#pragma pack() -- --/****************************************************** --* Macros --******************************************************/ --#define WHD_BUS_STATS_INCREMENT_VARIABLE(bus_priv, var) \ -- do { bus_priv->whd_bus_stats.var++; } while (0) -- --#define WHD_BUS_STATS_CONDITIONAL_INCREMENT_VARIABLE(bus_priv, condition, var) \ -- do { if (condition){ bus_priv->whd_bus_stats.var++; }} while (0) -- --typedef struct --{ -- uint32_t cmd52; /* Number of cmd52 reads/writes issued */ -- uint32_t cmd53_read; /* Number of cmd53 reads */ -- uint32_t cmd53_write; /* Number of cmd53 writes */ -- uint32_t cmd52_fail; /* Number of cmd52 read/write fails */ -- uint32_t cmd53_read_fail; /* Number of cmd53 read fails */ -- uint32_t cmd53_write_fail; /* Number of cmd53 write fails */ -- uint32_t oob_intrs; /* Number of OOB interrupts generated by wlan chip */ -- uint32_t sdio_intrs; /* Number of SDIO interrupts generated by wlan chip */ -- uint32_t error_intrs; /* Number of SDIO error interrupts generated by wlan chip */ -- uint32_t read_aborts; /* Number of times read aborts are called */ --} whd_bus_stats_t; -- --/****************************************************** --* Structures --******************************************************/ -- --/****************************************************** --* Function declarations --******************************************************/ --/* Initialisation functions */ --extern whd_result_t whd_bus_sdio_init(whd_driver_t whd_driver); --extern whd_result_t whd_bus_sdio_resume_after_deep_sleep(whd_driver_t whd_driver); --extern whd_result_t whd_bus_sdio_deinit(whd_driver_t whd_driver); -- --/* Device register access functions */ --extern whd_result_t whd_bus_sdio_write_backplane_value(whd_driver_t whd_driver, uint32_t address, -- uint8_t register_length, uint32_t value); --extern whd_result_t whd_bus_sdio_read_backplane_value(whd_driver_t whd_driver, uint32_t address, -- uint8_t register_length, uint8_t *value); --extern whd_result_t whd_bus_sdio_write_register_value(whd_driver_t whd_driver, whd_bus_function_t function, -- uint32_t address, uint8_t value_length, uint32_t value); --extern whd_result_t whd_bus_sdio_read_register_value(whd_driver_t whd_driver, whd_bus_function_t function, -- uint32_t address, uint8_t value_length, uint8_t *value); -- --/* Device data transfer functions */ --extern whd_result_t whd_bus_sdio_send_buffer(whd_driver_t whd_driver, whd_buffer_t buffer); --extern whd_result_t whd_bus_sdio_transfer_bytes(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint16_t size, -- whd_transfer_bytes_packet_t *data); --extern whd_result_t whd_bus_sdio_transfer_backplane_bytes(whd_driver_t whd_driver, -- whd_bus_transfer_direction_t direction, uint32_t address, -- uint32_t size, uint8_t *data); -- --/* Frame transfer function */ --extern whd_result_t whd_bus_sdio_read_frame(whd_driver_t whd_driver, whd_buffer_t *buffer); -- --extern whd_result_t whd_bus_sdio_poke_wlan(whd_driver_t whd_driver); --extern uint32_t whd_bus_sdio_packet_available_to_read(whd_driver_t whd_driver); --extern whd_result_t whd_bus_sdio_ack_interrupt(whd_driver_t whd_driver, uint32_t intstatus); -- --extern whd_result_t whd_bus_sdio_set_backplane_window(whd_driver_t whd_driver, uint32_t addr); -- --extern void whd_delayed_bus_release_schedule_update(whd_driver_t whd_driver, whd_bool_t is_scheduled); --#define DELAYED_BUS_RELEASE_SCHEDULE(whd_driver, schedule) \ -- do { whd_delayed_bus_release_schedule_update(whd_driver, schedule); } while (0) -- --extern whd_bool_t whd_bus_sdio_wake_interrupt_present(whd_driver_t whd_driver); -- --extern whd_result_t whd_bus_sdio_wakeup(whd_driver_t whd_driver); --extern whd_result_t whd_bus_sdio_sleep(whd_driver_t whd_driver); -- --extern void whd_bus_sdio_init_stats(whd_driver_t whd_driver); --extern whd_result_t whd_bus_sdio_print_stats(whd_driver_t whd_driver, whd_bool_t reset_after_print); --extern whd_result_t whd_bus_sdio_reinit_stats(whd_driver_t whd_driver, whd_bool_t wake_from_firmware); -- --uint8_t whd_bus_sdio_backplane_read_padd_size(whd_driver_t whd_driver); -- --extern whd_result_t whd_bus_sdio_wait_for_wlan_event(whd_driver_t whd_driver, -- cy_semaphore_t *transceive_semaphore); --extern whd_bool_t whd_bus_sdio_use_status_report_scheme(whd_driver_t whd_driver); --extern uint32_t whd_bus_sdio_get_max_transfer_size(whd_driver_t whd_driver); --/****************************************************** --* Global variables --******************************************************/ -- --#ifdef __cplusplus --} /*extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_SDIO_WHD_BUS_PROTOCOL_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_spi_protocol.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_spi_protocol.c -deleted file mode 100644 -index be272116bb..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_spi_protocol.c -+++ /dev/null -@@ -1,1038 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Broadcom WLAN SPI Protocol interface -- * -- * Implements the WHD Bus Protocol Interface for SPI -- * Provides functions for initialising, de-intitialising 802.11 device, -- * sending/receiving raw packets etc -- */ -- --#include --#include /* For memcpy */ -- --#include "cy_result.h" --#include "cyabs_rtos.h" --#include "cyhal_gpio.h" -- --#include "whd_thread.h" --#include "whd_chip.h" --#include "whd_sdpcm.h" --#include "whd_chip_constants.h" --#include "whd_int.h" --#include "whd_bus_spi_protocol.h" --#include "whd_bus_common.h" --#include "whd_chip_reg.h" --#include "whd_debug.h" --#include "whd_bus.h" --#include "whd_spi.h" --#include "whd_sdio.h" --#include "whd_buffer_api.h" --#include "whd_debug.h" --#include "whd_types_int.h" -- -- -- --/****************************************************** --* Constants --******************************************************/ -- --#define F2_READY_TIMEOUT_MS (1000) --#define F2_READY_TIMEOUT_LOOPS (1000) --#define F1_READY_TIMEOUT_LOOPS (1000) --#define FEADBEAD_TIMEOUT_MS (500) --#define ALP_AVAIL_TIMEOUT_MS (100) -- --/* function 1 OCP space */ --#define SBSDIO_SB_OFT_ADDR_MASK 0x07FFF /* sb offset addr is <= 15 bits, 32k */ --#define SBSDIO_SB_OFT_ADDR_LIMIT 0x08000 --#define SBSDIO_SB_ACCESS_2_4B_FLAG 0x08000 /* with b15, maps to 32-bit SB access */ -- --#define HT_AVAIL_TIMEOUT_MS (1000) -- --/* Taken from FALCON_5_90_195_26 dhd/sys/dhd_sdio.c. For 43362, MUST be >= 8 and word-aligned otherwise dongle fw crashes */ --#define SPI_F2_WATERMARK (32) -- --#define GSPI_PACKET_AVAILABLE (1 << 8) --#define GSPI_UNDERFLOW (1 << 1) -- --#define SWAP32_16BIT_PARTS(val) ( (uint32_t)( ( ( (uint32_t)(val) ) >> 16 ) + \ -- ( ( ( (uint32_t)(val) ) & 0xffff ) << 16 ) ) ) -- --#define WHD_BUS_GSPI_PACKET_OVERHEAD (sizeof(whd_buffer_header_t) ) -- --#define MAX_GSPI_TRANSFER_LEN 2048 -- --#define H32TO16LE(x) ( ( uint32_t )( ( ( ( uint32_t )(x) & ( uint32_t )0x000000ffU ) << 8 ) | \ -- ( ( ( uint32_t )(x) & ( uint32_t )0x0000ff00U ) >> 8 ) | \ -- ( ( ( uint32_t )(x) & ( uint32_t )0x00ff0000U ) << 8 ) | \ -- ( ( ( uint32_t )(x) & ( uint32_t )0xff000000U ) >> 8 ) ) ) -- --#define WHD_THREAD_POLL_TIMEOUT (CY_RTOS_NEVER_TIMEOUT) -- --#define WHD_THREAD_POKE_TIMEOUT (100) -- --typedef enum --{ -- GSPI_INCREMENT_ADDRESS = 1, GSPI_FIXED_ADDRESS = 0 --} gspi_transfer_access_t; -- --/****************************************************** --* Structures --******************************************************/ -- --#pragma pack(1) -- --typedef struct --{ -- whd_bus_gspi_header_t header; -- uint8_t response_delay[4]; --} gspi_backplane_f1_read_header_t; -- --#pragma pack() -- --typedef struct --{ -- gspi_backplane_f1_read_header_t gspi_header; -- uint32_t data[1]; --} gspi_backplane_f1_read_packet_t; -- --/****************************************************** --* Static variables --******************************************************/ -- --static const uint8_t whd_bus_gspi_command_mapping[] = { 0, 1 }; -- --/****************************************************** --* Structures --******************************************************/ --struct whd_bus_priv --{ -- whd_spi_config_t spi_config; -- cyhal_spi_t *spi_obj; -- --}; -- --/****************************************************** --* Variables --******************************************************/ -- --/****************************************************** --* Static Function Declarations --******************************************************/ -- --static whd_result_t whd_spi_download_firmware(whd_driver_t whd_driver); --static whd_result_t whd_bus_spi_transfer_buffer(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, whd_buffer_t buffer); -- --/****************************************************** --* Global Function definitions --******************************************************/ -- --uint32_t whd_bus_spi_attach(whd_driver_t whd_driver, whd_spi_config_t *whd_spi_config, cyhal_spi_t *spi_obj) --{ -- struct whd_bus_info *whd_bus_info; -- -- if (whd_driver->bus_priv->spi_config.oob_config.host_oob_pin == CYHAL_NC_PIN_VALUE) -- { -- WPRINT_WHD_ERROR( ("OOB interrupt pin argument must be provided in %s\n", __FUNCTION__) ); -- return WHD_BADARG; -- } -- -- whd_bus_info = (whd_bus_info_t *)malloc(sizeof(whd_bus_info_t) ); -- -- if (whd_bus_info == NULL) -- { -- WPRINT_WHD_ERROR( ("Memory allocation failed for whd_bus_info in %s\n", __FUNCTION__) ); -- return WHD_BUFFER_UNAVAILABLE_PERMANENT; -- } -- memset(whd_bus_info, 0, sizeof(whd_bus_info_t) ); -- -- whd_driver->bus_if = whd_bus_info; -- -- whd_driver->bus_priv = (struct whd_bus_priv *)malloc(sizeof(struct whd_bus_priv) ); -- -- if (whd_driver->bus_priv == NULL) -- { -- WPRINT_WHD_ERROR( ("Memory allocation failed for whd_bus_priv in %s\n", __FUNCTION__) ); -- return WHD_BUFFER_UNAVAILABLE_PERMANENT; -- } -- memset(whd_driver->bus_priv, 0, sizeof(struct whd_bus_priv) ); -- -- /* Pass the SPI object to bus private spi_obj pointer */ -- whd_driver->bus_priv->spi_obj = spi_obj; -- whd_driver->bus_priv->spi_config = *whd_spi_config; -- -- whd_bus_info->whd_bus_init_fptr = whd_bus_spi_init; -- whd_bus_info->whd_bus_deinit_fptr = whd_bus_spi_deinit; -- -- whd_bus_info->whd_bus_write_backplane_value_fptr = whd_bus_spi_write_backplane_value; -- whd_bus_info->whd_bus_read_backplane_value_fptr = whd_bus_spi_read_backplane_value; -- whd_bus_info->whd_bus_write_register_value_fptr = whd_bus_spi_write_register_value; -- whd_bus_info->whd_bus_read_register_value_fptr = whd_bus_spi_read_register_value; -- -- whd_bus_info->whd_bus_send_buffer_fptr = whd_bus_spi_send_buffer; -- whd_bus_info->whd_bus_transfer_bytes_fptr = whd_bus_spi_transfer_bytes; -- -- whd_bus_info->whd_bus_read_frame_fptr = whd_bus_spi_read_frame; -- -- whd_bus_info->whd_bus_packet_available_to_read_fptr = whd_bus_spi_packet_available_to_read; -- whd_bus_info->whd_bus_poke_wlan_fptr = whd_bus_spi_poke_wlan; -- whd_bus_info->whd_bus_wait_for_wlan_event_fptr = whd_bus_spi_wait_for_wlan_event; -- -- whd_bus_info->whd_bus_ack_interrupt_fptr = whd_bus_spi_ack_interrupt; -- whd_bus_info->whd_bus_wake_interrupt_present_fptr = whd_bus_spi_wake_interrupt_present; -- -- whd_bus_info->whd_bus_wakeup_fptr = whd_bus_spi_wakeup; -- whd_bus_info->whd_bus_sleep_fptr = whd_bus_spi_sleep; -- -- whd_bus_info->whd_bus_backplane_read_padd_size_fptr = whd_bus_spi_backplane_read_padd_size; -- whd_bus_info->whd_bus_use_status_report_scheme_fptr = whd_bus_spi_use_status_report_scheme; -- -- whd_bus_info->whd_bus_get_max_transfer_size_fptr = whd_bus_spi_get_max_transfer_size; -- -- whd_bus_info->whd_bus_init_stats_fptr = whd_bus_spi_init_stats; -- whd_bus_info->whd_bus_print_stats_fptr = whd_bus_spi_print_stats; -- whd_bus_info->whd_bus_reinit_stats_fptr = whd_bus_spi_reinit_stats; -- whd_bus_info->whd_bus_irq_register_fptr = whd_bus_spi_irq_register; -- whd_bus_info->whd_bus_irq_enable_fptr = whd_bus_spi_irq_enable; -- -- return WHD_SUCCESS; --} -- --void whd_bus_spi_detach(whd_driver_t whd_driver) --{ -- if (whd_driver->bus_if != NULL) -- { -- free(whd_driver->bus_if); -- whd_driver->bus_if = NULL; -- } -- if (whd_driver->bus_priv != NULL) -- { -- free(whd_driver->bus_priv); -- whd_driver->bus_priv = NULL; -- } --} -- --whd_result_t whd_bus_spi_send_buffer(whd_driver_t whd_driver, whd_buffer_t buffer) --{ -- whd_result_t result = whd_bus_spi_transfer_buffer(whd_driver, BUS_WRITE, WLAN_FUNCTION, 0, buffer); -- CHECK_RETURN(whd_buffer_release(whd_driver, buffer, WHD_NETWORK_TX) ); -- if (result == WHD_SUCCESS) -- { -- DELAYED_BUS_RELEASE_SCHEDULE (whd_driver, WHD_TRUE); -- } -- CHECK_RETURN(result); -- -- return WHD_SUCCESS; --} -- --/* -- * Perform a transfer on the gSPI bus -- * Prerequisites: length < MAX_GSPI_TRANSFER_LEN -- */ --static whd_result_t whd_bus_spi_transfer_buffer(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, whd_buffer_t buffer) --{ -- uint32_t *temp; -- whd_result_t result; -- uint16_t newsize; -- whd_buffer_header_t *header = (whd_buffer_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer); -- whd_bus_gspi_header_t *gspi_header = -- (whd_bus_gspi_header_t *)( (char *)header->bus_header + MAX_BUS_HEADER_SIZE - sizeof(whd_bus_gspi_header_t) ); -- size_t transfer_size; -- -- uint16_t size = ( uint16_t )(whd_buffer_get_current_piece_size(whd_driver, buffer) - sizeof(whd_buffer_header_t) ); -- -- /* Form the gSPI header */ -- *gspi_header = -- ( whd_bus_gspi_header_t )( ( uint32_t )( (whd_bus_gspi_command_mapping[(int)direction] & 0x1) << 31 ) | -- ( uint32_t )( (GSPI_INCREMENT_ADDRESS & 0x1) << 30 ) | -- ( uint32_t )( (function & 0x3) << 28 ) | -- ( uint32_t )( (address & 0x1FFFF) << 11 ) | ( uint32_t )( (size & 0x7FF) << 0 ) ); -- -- /* Reshuffle the bits if we're not in 32 bit mode */ -- if (whd_driver->bus_gspi_32bit == WHD_FALSE) -- { -- /* Note: This typecast should always be valid if the buffer containing the GSpi packet has been correctly declared as 32-bit aligned */ -- temp = (uint32_t *)gspi_header; -- *temp = H32TO16LE(*temp); -- } -- -- /* Round size up to 32-bit alignment */ -- newsize = (uint16_t)ROUND_UP(size, 4); -- -- /* Send the data */ -- if (direction == BUS_WRITE) -- { -- /* Wait for FIFO to be ready to accept data */ -- if (function == WLAN_FUNCTION) -- { -- uint32_t whd_bus_gspi_status; -- uint32_t loop_count = 0; -- while ( ( (result = -- whd_bus_spi_read_register_value(whd_driver, BUS_FUNCTION, SPI_STATUS_REGISTER, (uint8_t)4, -- (uint8_t *)&whd_bus_gspi_status) ) == WHD_SUCCESS ) && -- ( (whd_bus_gspi_status & (1 << 5) ) == 0 ) && -- (loop_count < ( uint32_t )F2_READY_TIMEOUT_LOOPS) ) -- { -- loop_count++; -- } -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error reading register value, %s failed at %d \n", __func__, __LINE__) ); -- return result; -- } -- if (loop_count >= ( uint32_t )F2_READY_TIMEOUT_LOOPS) -- { -- WPRINT_WHD_ERROR( ("Timeout waiting for data FIFO to be ready\n") ); -- return WHD_TIMEOUT; -- } -- } -- -- } -- -- transfer_size = (size_t)(newsize + sizeof(whd_bus_gspi_header_t) ); -- -- /* Send the data */ -- if (direction == BUS_READ) -- { -- result = cyhal_spi_transfer(whd_driver->bus_priv->spi_obj, NULL, 0, (uint8_t *)gspi_header, -- transfer_size, 0); -- } -- else -- { -- result = cyhal_spi_transfer(whd_driver->bus_priv->spi_obj, (uint8_t *)gspi_header, transfer_size, NULL, -- 0, 0); -- } -- -- return result; --} -- --whd_result_t whd_bus_spi_poke_wlan(whd_driver_t whd_driver) --{ -- return WHD_SUCCESS; --} -- --whd_result_t whd_bus_spi_ack_interrupt(whd_driver_t whd_driver, uint32_t intstatus) --{ -- return whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SPI_INTERRUPT_REGISTER, (uint8_t)2, intstatus); --} -- --uint32_t whd_bus_spi_packet_available_to_read(whd_driver_t whd_driver) --{ -- uint16_t interrupt_register; -- -- CHECK_RETURN(whd_ensure_wlan_bus_is_up(whd_driver) ); -- -- /* Read the interrupt register */ -- if (whd_bus_spi_read_register_value(whd_driver, BUS_FUNCTION, SPI_INTERRUPT_REGISTER, (uint8_t)2, -- (uint8_t *)&interrupt_register) != WHD_SUCCESS) -- { -- goto return_with_error; -- } -- -- if ( (interrupt_register & 0x0086) != 0 ) /* This should be 0x87, but occasional "data not available" errors are flagged seemingly for no reason */ -- { -- /* Error condition detected */ -- WPRINT_WHD_DEBUG( ("Bus error condition detected\n") ); -- } -- -- /* Clear interrupt register */ -- if (interrupt_register != 0) -- { -- if (whd_bus_spi_write_register_value(whd_driver, BUS_FUNCTION, SPI_INTERRUPT_REGISTER, (uint8_t)2, -- interrupt_register) != WHD_SUCCESS) -- { -- goto return_with_error; -- } -- } -- -- return ( uint32_t )( (interrupt_register) & (F2_PACKET_AVAILABLE) ); -- --return_with_error: whd_assert("Error accessing backplane", 0 != 0); -- return 0; --} -- --whd_result_t whd_bus_spi_read_frame(whd_driver_t whd_driver, whd_buffer_t *buffer) --{ -- uint32_t whd_bus_gspi_status; -- whd_result_t result; -- uint32_t whd_gspi_bytes_pending; -- -- /* Ensure the wlan backplane bus is up */ -- CHECK_RETURN(whd_ensure_wlan_bus_is_up(whd_driver) ); -- -- do -- { -- result = whd_bus_spi_read_register_value(whd_driver, BUS_FUNCTION, SPI_STATUS_REGISTER, (uint8_t)4, -- (uint8_t *)&whd_bus_gspi_status); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error reading register value, %s failed at %d \n", __func__, __LINE__) ); -- return result; -- } -- } while (whd_bus_gspi_status == 0xFFFFFFFF); -- -- if ( (whd_bus_gspi_status & GSPI_PACKET_AVAILABLE) != 0 ) -- { -- if ( ( ( (whd_bus_gspi_status >> 9) & 0x7FF ) == 0 ) || -- ( ( (whd_bus_gspi_status >> 9) & 0x7FF ) > (WHD_LINK_MTU - WHD_BUS_GSPI_PACKET_OVERHEAD) ) || -- (whd_bus_gspi_status & GSPI_UNDERFLOW) ) -- { -- CHECK_RETURN(whd_bus_spi_write_register_value(whd_driver, BACKPLANE_FUNCTION, SPI_FRAME_CONTROL, 1, -- (1 << 0) ) ); -- return WHD_NO_PACKET_TO_RECEIVE; -- } -- } -- -- whd_gspi_bytes_pending = 0; -- -- if ( (whd_bus_gspi_status & GSPI_PACKET_AVAILABLE) != 0 ) -- { -- whd_gspi_bytes_pending = ( (whd_bus_gspi_status >> 9) & 0x7FF ); -- } -- -- if (whd_gspi_bytes_pending == 0) -- { -- return WHD_NO_PACKET_TO_RECEIVE; -- } -- -- /* Allocate a suitable buffer */ -- result = whd_host_buffer_get(whd_driver, buffer, WHD_NETWORK_RX, -- (unsigned short)(whd_gspi_bytes_pending + WHD_BUS_GSPI_PACKET_OVERHEAD), WHD_FALSE); -- -- if (result != WHD_SUCCESS) -- { -- /* Read out the first 12 bytes to get the bus credit information */ -- uint8_t temp_buffer[12 + MAX_BUS_HEADER_SIZE]; -- CHECK_RETURN(whd_bus_spi_transfer_bytes(whd_driver, BUS_READ, WLAN_FUNCTION, 0, 12, -- (whd_transfer_bytes_packet_t *)temp_buffer) ); -- -- /* Abort the transfer to force the packet to be dropped */ -- if (whd_gspi_bytes_pending > 12) -- { -- CHECK_RETURN(whd_bus_spi_write_register_value(whd_driver, BACKPLANE_FUNCTION, SPI_FRAME_CONTROL, 1, -- (1 << 0) ) ); -- } -- -- /* Process bus data credit information */ -- whd_sdpcm_update_credit(whd_driver, (uint8_t *)(temp_buffer + sizeof(whd_bus_header_t) ) ); -- WPRINT_WHD_ERROR( ("Packet buffer allocation failed in %s at %d \n", __func__, __LINE__) ); -- return result; -- } -- -- result = whd_bus_spi_transfer_buffer(whd_driver, BUS_READ, WLAN_FUNCTION, 0, *buffer); -- if (result != WHD_SUCCESS) -- { -- CHECK_RETURN(whd_buffer_release(whd_driver, *buffer, WHD_NETWORK_RX) ); -- WPRINT_WHD_ERROR( ("SPI buffer transfer failed in %s at %d \n", __func__, __LINE__) ); -- return result; -- } -- -- DELAYED_BUS_RELEASE_SCHEDULE (whd_driver, WHD_TRUE); -- return WHD_SUCCESS; --} -- --whd_result_t whd_bus_spi_init(whd_driver_t whd_driver) --{ -- uint32_t data = 0; -- uint32_t whd_bus_gspi_status; -- uint16_t data16 = 0; -- uint32_t loop_count; -- whd_result_t result; -- uint8_t init_data[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -- uint32_t interrupt_polarity = 0; -- uint16_t chip_id; -- size_t transfer_size = 12; -- whd_oob_config_t *config = &whd_driver->bus_priv->spi_config.oob_config; -- -- whd_driver->bus_gspi_32bit = WHD_FALSE; -- -- if (config->is_falling_edge == WHD_FALSE) -- interrupt_polarity = INTERRUPT_POLARITY_HIGH; -- -- whd_bus_init_backplane_window(whd_driver); -- -- whd_bus_gspi_header_t *gspi_header = (whd_bus_gspi_header_t *)init_data; -- -- /* Due to an chip issue, the first transfer will be corrupted. -- * This means a repeated safe read of a known value register is required until -- * the correct value is returned - signalling the bus is running. -- * This known value register must be accessed using fixed (non-incrementing) address -- * mode, hence a custom packet header must be constructed -- * Due to the chip issue, the data received could be left shifted by one bit. -- */ -- loop_count = 0; -- do -- { -- /* Header needs to calculated every time as init_data gets modified in cyhal_spi_transfer() */ -- *gspi_header = -- ( whd_bus_gspi_header_t )SWAP32_16BIT_PARTS(SWAP32( (uint32_t)( (whd_bus_gspi_command_mapping[(int)BUS_READ] -- & 0x1) << 31 ) | -- (uint32_t)( (GSPI_FIXED_ADDRESS & 0x1) << 30 ) | -- (uint32_t)( (BUS_FUNCTION & 0x3) << 28 ) | -- (uint32_t)( (SPI_READ_TEST_REGISTER & 0x1FFFFu) << -- 11 ) | -- (uint32_t)( (4u /*size*/ & 0x7FFu) << 0 ) ) ); -- CHECK_RETURN(cyhal_spi_transfer(whd_driver->bus_priv->spi_obj, NULL, 0, init_data, transfer_size, 0) ); -- loop_count++; -- } while ( (NULL == memchr(&init_data[4], SPI_READ_TEST_REG_LSB, (size_t)8) ) && -- (NULL == memchr(&init_data[4], SPI_READ_TEST_REG_LSB_SFT1, (size_t)8) ) && -- (NULL == memchr(&init_data[4], SPI_READ_TEST_REG_LSB_SFT2, (size_t)8) ) && -- (NULL == memchr(&init_data[4], SPI_READ_TEST_REG_LSB_SFT3, (size_t)8) ) && -- (loop_count < ( uint32_t )FEADBEAD_TIMEOUT_MS) && -- (cy_rtos_delay_milliseconds( (uint32_t)1 ), (1 == 1) ) ); -- -- /* Register interrupt handler */ -- whd_bus_spi_irq_register(whd_driver); -- /* Enable SPI IRQ */ -- whd_bus_spi_irq_enable(whd_driver, WHD_TRUE); -- -- /* Keep/reset defaults for registers 0x0-0x4 except for, 0x0: Change word length to 32bit, -- * set endianness, enable wakeup. 0x2: enable interrupt with status. */ --#if defined(IL_BIGENDIAN) -- CHECK_RETURN(whd_bus_spi_write_register_value(whd_driver, BUS_FUNCTION, SPI_BUS_CONTROL, (uint8_t)4, -- (uint32_t)(WORD_LENGTH_32 | (0 & ENDIAN_BIG) | -- (interrupt_polarity & INTERRUPT_POLARITY_HIGH) | WAKE_UP | -- (0x4 << (8 * SPI_RESPONSE_DELAY) ) | -- ( (0 & STATUS_ENABLE) << (8 * SPI_STATUS_ENABLE) ) | -- (INTR_WITH_STATUS << (8 * SPI_STATUS_ENABLE) ) ) ) ); --#else -- CHECK_RETURN(whd_bus_spi_write_register_value(whd_driver, BUS_FUNCTION, SPI_BUS_CONTROL, (uint8_t)4, -- ( uint32_t )(WORD_LENGTH_32 | ENDIAN_BIG | -- (interrupt_polarity & INTERRUPT_POLARITY_HIGH) | -- WAKE_UP | (0x4 << (8 * SPI_RESPONSE_DELAY) ) | -- ( (0 & STATUS_ENABLE) << (8 * SPI_STATUS_ENABLE) ) | -- (INTR_WITH_STATUS << (8 * SPI_STATUS_ENABLE) ) ) ) ); --#endif -- whd_driver->bus_gspi_32bit = WHD_TRUE; -- CHECK_RETURN(whd_bus_spi_read_register_value(whd_driver, BUS_FUNCTION, SPI_BUS_CONTROL, (uint8_t)4, -- (uint8_t *)&data) ); -- -- if (whd_driver->bus_priv->spi_config.is_spi_normal_mode) -- { -- /* Reset host SPI interface to re-sync */ -- /*host_platform_bus_init( );*/ -- } -- -- /* Check feedbead can be read - i.e. the device is alive */ -- data = 0; -- CHECK_RETURN(whd_bus_spi_read_register_value(whd_driver, BUS_FUNCTION, SPI_READ_TEST_REGISTER, (uint8_t)4, -- (uint8_t *)&data) ); -- -- if (data != SPI_READ_TEST_REGISTER_VALUE) -- { -- WPRINT_WHD_ERROR( ("Read %x, instead of 0xFEEDBEAD from the WLAN chip\n", (unsigned int)data) ); -- return WHD_SPI_ID_READ_FAIL; -- } -- -- /* Make sure error interrupt bits are clear */ -- CHECK_RETURN(whd_bus_spi_write_register_value(whd_driver, BUS_FUNCTION, SPI_INTERRUPT_REGISTER, (uint8_t)1, -- ( uint32_t )(DATA_UNAVAILABLE | COMMAND_ERROR | DATA_ERROR | -- F1_OVERFLOW) ) ); -- -- /* Enable a selection of interrupts */ -- CHECK_RETURN(whd_bus_spi_write_register_value(whd_driver, BUS_FUNCTION, SPI_INTERRUPT_ENABLE_REGISTER, (uint8_t)2, -- ( uint32_t )(F2_F3_FIFO_RD_UNDERFLOW | F2_F3_FIFO_WR_OVERFLOW | -- COMMAND_ERROR | DATA_ERROR | F2_PACKET_AVAILABLE | -- F1_OVERFLOW) ) ); -- -- /* Request ALP */ -- CHECK_RETURN(whd_bus_spi_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, -- SBSDIO_ALP_AVAIL_REQ) ); -- -- /* Wait until ALP is available */ -- loop_count = 0; -- while ( ( (result = whd_bus_spi_read_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)2, -- (uint8_t *)&data16) ) == WHD_SUCCESS ) && -- ( (data16 & SBSDIO_ALP_AVAIL) == 0 ) && -- (loop_count < ( uint32_t )ALP_AVAIL_TIMEOUT_MS) ) -- { -- cy_rtos_delay_milliseconds( (uint32_t)1 ); -- loop_count++; -- } -- if (loop_count >= ( uint32_t )ALP_AVAIL_TIMEOUT_MS) -- { -- WPRINT_WHD_ERROR( ("ALP Clock timeout\n") ); -- return WHD_TIMEOUT; -- } -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Can't read SDIO_CHIP_CLOCK_CSR\n") ); -- return result; -- } -- -- /* Clear request for ALP */ -- CHECK_RETURN(whd_bus_spi_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, -- (uint32_t)0) ); -- -- /* Read the chip id */ -- CHECK_RETURN(whd_bus_spi_read_backplane_value(whd_driver, CHIPCOMMON_BASE_ADDRESS, 2, (uint8_t *)&chip_id) ); -- whd_chip_set_chip_id(whd_driver, chip_id); -- -- /* Download the firmware */ -- result = whd_spi_download_firmware(whd_driver); -- -- /* user abort */ -- if (result == WHD_UNFINISHED) -- { -- /* host_platform_reset_wifi (WHD_TRUE); */ -- /* host_platform_power_wifi (WHD_FALSE); */ -- WPRINT_WHD_ERROR( ("User aborted download of firmware\n") ); -- return result; -- } -- -- /* non user abort error */ -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Could not download firmware\n") ); -- return result; -- } -- /* else, successfully downloaded the firmware; continue with waiting for WIFi to live */ -- -- /* Wait for F2 to be ready */ -- loop_count = 0; -- while ( ( (result = whd_bus_spi_read_register_value(whd_driver, BUS_FUNCTION, SPI_STATUS_REGISTER, (uint8_t)4, -- (uint8_t *)&whd_bus_gspi_status) ) == WHD_SUCCESS ) && -- ( (whd_bus_gspi_status & (1 << 5) ) == 0 ) && -- (loop_count < ( uint32_t )F2_READY_TIMEOUT_MS) ) -- { -- cy_rtos_delay_milliseconds( (uint32_t)1 ); -- loop_count++; -- } -- if (loop_count >= ( uint32_t )F2_READY_TIMEOUT_MS) -- { -- /* If your system fails here, it could be due to incorrect NVRAM variables. -- * Check which 'wifi_nvram_image.h' file your platform is using, and -- * check that it matches the WLAN device on your platform, including the -- * crystal frequency. -- */ -- WPRINT_WHD_ERROR( ("Timeout while waiting for function 2 to be ready\n") ); -- return WHD_TIMEOUT; -- } -- -- CHECK_RETURN(whd_chip_specific_init(whd_driver) ); -- CHECK_RETURN(whd_ensure_wlan_bus_is_up(whd_driver) ); -- -- return result; --} -- --whd_result_t whd_bus_spi_deinit(whd_driver_t whd_driver) --{ -- CHECK_RETURN(whd_allow_wlan_bus_to_sleep(whd_driver) ); -- -- /* put device in reset. */ -- //host_platform_reset_wifi (WHD_TRUE); -- whd_bus_set_resource_download_halt(whd_driver, WHD_FALSE); -- DELAYED_BUS_RELEASE_SCHEDULE (whd_driver, WHD_FALSE); -- return WHD_SUCCESS; --} -- --whd_bool_t whd_bus_spi_wake_interrupt_present(whd_driver_t whd_driver) --{ -- /* functionality is only currently needed and present on SDIO */ -- return WHD_FALSE; --} -- --whd_result_t whd_bus_spi_wait_for_wlan_event(whd_driver_t whd_driver, cy_semaphore_t *transceive_semaphore) --{ -- whd_result_t result = WHD_SUCCESS; -- uint32_t timeout_ms = 1; -- uint32_t delayed_release_timeout_ms; -- -- REFERENCE_DEBUG_ONLY_VARIABLE(result); -- -- delayed_release_timeout_ms = whd_bus_handle_delayed_release(whd_driver); -- if (delayed_release_timeout_ms != 0) -- { -- timeout_ms = delayed_release_timeout_ms; -- } -- else -- { -- result = whd_allow_wlan_bus_to_sleep(whd_driver); -- whd_assert("Error setting wlan sleep", (result == WHD_SUCCESS) || (result == WHD_PENDING) ); -- -- if (result == WHD_SUCCESS) -- { -- timeout_ms = CY_RTOS_NEVER_TIMEOUT; -- } -- } -- -- /* Check if we have run out of bus credits */ -- if (whd_sdpcm_get_available_credits(whd_driver) == 0) -- { -- /* Keep poking the WLAN until it gives us more credits */ -- result = whd_bus_spi_poke_wlan(whd_driver); -- whd_assert("Poking failed!", result == WHD_SUCCESS); -- -- result = cy_rtos_get_semaphore(transceive_semaphore, (uint32_t)MIN_OF(timeout_ms, -- WHD_THREAD_POKE_TIMEOUT), WHD_FALSE); -- } -- else -- { -- result = cy_rtos_get_semaphore(transceive_semaphore, (uint32_t)MIN_OF(timeout_ms, -- WHD_THREAD_POLL_TIMEOUT), WHD_FALSE); -- } -- whd_assert("Could not get whd sleep semaphore\n", (result == CY_RSLT_SUCCESS) || (result == CY_RTOS_TIMEOUT) ); -- -- return result; --} -- --/****************************************************** --* Function definitions for Protocol Common --******************************************************/ -- --/* -- * Write a value to a register NOT on the backplane -- * Prerequisites: value_length <= 4 -- */ --whd_result_t whd_bus_spi_write_register_value(whd_driver_t whd_driver, whd_bus_function_t function, uint32_t address, -- uint8_t value_length, uint32_t value) --{ -- char gspi_internal_buffer[MAX_BUS_HEADER_SIZE + sizeof(uint32_t) + sizeof(uint32_t)]; -- whd_transfer_bytes_packet_t *internal_gspi_packet = (whd_transfer_bytes_packet_t *)gspi_internal_buffer; -- -- /* Flip the bytes if we're not in 32 bit mode */ -- if (whd_driver->bus_gspi_32bit == WHD_FALSE) -- { -- value = H32TO16LE(value); -- } -- /* Write the value and value_length into the packet */ -- internal_gspi_packet->data[0] = value; -- -- /* Send it off */ -- return whd_bus_spi_transfer_bytes(whd_driver, BUS_WRITE, function, address, value_length, internal_gspi_packet); --} -- --/* -- * Read the value of a register NOT on the backplane -- * Prerequisites: value_length <= 4 -- */ --whd_result_t whd_bus_spi_read_register_value(whd_driver_t whd_driver, whd_bus_function_t function, uint32_t address, -- uint8_t value_length, uint8_t *value) --{ -- uint32_t *data_ptr; -- whd_result_t result; -- uint8_t padding = 0; -- -- char gspi_internal_buffer[MAX_BUS_HEADER_SIZE + sizeof(uint32_t) + sizeof(uint32_t)]; -- -- /* Clear the receiving part of memory and set the value_length */ -- if (function == BACKPLANE_FUNCTION) -- { -- gspi_backplane_f1_read_packet_t *pkt = -- (gspi_backplane_f1_read_packet_t *)(gspi_internal_buffer + MAX_BUS_HEADER_SIZE - -- sizeof(whd_bus_gspi_header_t) ); -- data_ptr = pkt->data; -- padding = 4; /* Add response delay */ -- } -- else -- { -- whd_transfer_bytes_packet_t *pkt = (whd_transfer_bytes_packet_t *)gspi_internal_buffer; -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- data_ptr = pkt->data; -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- } -- -- *data_ptr = 0; -- result = -- whd_bus_spi_transfer_bytes(whd_driver, BUS_READ, function, address, ( uint16_t )(value_length + padding), -- (whd_transfer_bytes_packet_t *)gspi_internal_buffer); -- -- memcpy(value, data_ptr, value_length); -- -- return result; --} -- --/* -- * Write a value to a register on the backplane -- * Prerequisites: value_length <= 4 -- */ --whd_result_t whd_bus_spi_write_backplane_value(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, -- uint32_t value) --{ -- CHECK_RETURN(whd_bus_set_backplane_window(whd_driver, address) ); -- -- address &= SBSDIO_SB_OFT_ADDR_MASK; -- -- if (register_length == 4) -- address |= SBSDIO_SB_ACCESS_2_4B_FLAG; -- -- return whd_bus_spi_write_register_value(whd_driver, BACKPLANE_FUNCTION, address, register_length, value); --} -- --/* -- * Read the value of a register on the backplane -- * Prerequisites: value_length <= 4 -- */ --whd_result_t whd_bus_spi_read_backplane_value(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, -- uint8_t *value) --{ -- *value = 0; -- CHECK_RETURN(whd_bus_set_backplane_window(whd_driver, address) ); -- -- address &= SBSDIO_SB_OFT_ADDR_MASK; -- -- if (register_length == 4) -- address |= SBSDIO_SB_ACCESS_2_4B_FLAG; -- -- return whd_bus_spi_read_register_value(whd_driver, BACKPLANE_FUNCTION, address, register_length, value); --} -- --whd_result_t whd_bus_spi_transfer_bytes(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint16_t size, -- whd_transfer_bytes_packet_t *packet) --{ -- uint32_t *temp; -- whd_result_t result; -- uint16_t newsize; -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- whd_bus_gspi_header_t *gspi_header = -- (whd_bus_gspi_header_t *)( (char *)packet->data - sizeof(whd_bus_gspi_header_t) ); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- size_t transfer_size; -- *gspi_header = -- ( whd_bus_gspi_header_t )( ( uint32_t )( (whd_bus_gspi_command_mapping[(int)direction] & 0x1) << 31 ) | -- ( uint32_t )( (GSPI_INCREMENT_ADDRESS & 0x1) << 30 ) | -- ( uint32_t )( (function & 0x3) << 28 ) | -- ( uint32_t )( (address & 0x1FFFF) << 11 ) | ( uint32_t )( (size & 0x7FF) << 0 ) ); -- -- /* Reshuffle the bits if we're not in 32 bit mode */ -- if (whd_driver->bus_gspi_32bit == WHD_FALSE) -- { -- /* Note: This typecast should always be valid if the buffer -- * containing the GSpi packet has been correctly declared as 32-bit aligned */ -- temp = (uint32_t *)gspi_header; -- *temp = H32TO16LE(*temp); -- } -- -- /* Round size up to 32-bit alignment */ -- newsize = (uint16_t)ROUND_UP(size, 4); -- -- /* Ensure we are clear to write */ -- if ( (direction == BUS_WRITE) && (function == WLAN_FUNCTION) ) -- { -- uint32_t whd_bus_gspi_status; -- uint32_t loop_count = 0; -- -- /* Verify the SDPCM size and stated size match */ -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- uint16_t *frametag_ptr = (uint16_t *)&packet->data; -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- if (size != *frametag_ptr) -- { -- WPRINT_WHD_DEBUG( ("Error - gSPI size does not match SDPCM size!\n") ); -- return WHD_SPI_SIZE_MISMATCH; -- } -- -- /* Wait for WLAN FIFO to be ready to accept data */ -- while ( ( (result = -- whd_bus_spi_read_register_value(whd_driver, BUS_FUNCTION, SPI_STATUS_REGISTER, (uint8_t)4, -- (uint8_t *)&whd_bus_gspi_status) ) == WHD_SUCCESS ) && -- ( (whd_bus_gspi_status & (1 << 5) ) == 0 ) && -- (loop_count < ( uint32_t )F2_READY_TIMEOUT_LOOPS) ) -- { -- ++loop_count; -- } -- -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Failed to read SPI register value in %s at %d \n", __func__, __LINE__) ); -- return result; -- } -- -- if (loop_count >= ( uint32_t )F2_READY_TIMEOUT_LOOPS) -- { -- WPRINT_WHD_DEBUG( ("Timeout waiting for data FIFO to be ready\n") ); -- return WHD_TIMEOUT; -- } -- -- } -- -- transfer_size = (size_t)(newsize + sizeof(whd_bus_gspi_header_t) ); -- -- /* Send the data */ -- if (direction == BUS_READ) -- { -- result = cyhal_spi_transfer(whd_driver->bus_priv->spi_obj, NULL, 0, (uint8_t *)gspi_header, -- transfer_size, 0); -- } -- else -- { -- result = cyhal_spi_transfer(whd_driver->bus_priv->spi_obj, (uint8_t *)gspi_header, transfer_size, NULL, -- 0, 0); -- } -- -- CHECK_RETURN(result); -- return WHD_SUCCESS; --} -- --/****************************************************** --* Static Function definitions --******************************************************/ -- --static whd_result_t whd_spi_download_firmware(whd_driver_t whd_driver) --{ -- uint8_t csr_val; -- whd_result_t result; -- uint32_t loop_count = 0; -- -- CHECK_RETURN(whd_disable_device_core(whd_driver, WLAN_ARM_CORE, WLAN_CORE_FLAG_NONE) ); -- CHECK_RETURN(whd_disable_device_core(whd_driver, SOCRAM_CORE, WLAN_CORE_FLAG_NONE) ); -- CHECK_RETURN(whd_reset_device_core(whd_driver, SOCRAM_CORE, WLAN_CORE_FLAG_NONE) ); -- -- CHECK_RETURN(whd_chip_specific_socsram_init(whd_driver) ); -- -- CHECK_RETURN(whd_bus_write_wifi_firmware_image(whd_driver) ); -- CHECK_RETURN(whd_bus_write_wifi_nvram_image(whd_driver) ); -- -- /* Take the ARM core out of reset */ -- CHECK_RETURN(whd_reset_device_core(whd_driver, WLAN_ARM_CORE, WLAN_CORE_FLAG_NONE) ); -- result = whd_device_core_is_up(whd_driver, WLAN_ARM_CORE); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Could not bring ARM core up\n") ); -- return result; -- } -- -- /* Wait until the HT clock is available */ -- while ( ( (result = -- whd_bus_spi_read_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_CHIP_CLOCK_CSR, (uint8_t)1, -- &csr_val) ) == WHD_SUCCESS ) && -- ( (csr_val & SBSDIO_HT_AVAIL) == 0 ) && -- (loop_count < ( uint32_t )HT_AVAIL_TIMEOUT_MS) ) -- { -- cy_rtos_delay_milliseconds( (uint32_t)1 ); -- loop_count++; -- } -- if (loop_count >= ( uint32_t )HT_AVAIL_TIMEOUT_MS) -- { -- return WHD_TIMEOUT; -- } -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("HT clock not available\n") ); -- return result; -- } -- -- /* Set up the interrupt mask and enable interrupts */ -- CHECK_RETURN(whd_bus_spi_write_backplane_value(whd_driver, SDIO_INT_HOST_MASK, (uint8_t)4, I_HMB_SW_MASK) ); -- -- /* Lower F2 Watermark to avoid DMA Hang in F2 when SD Clock is stopped. */ -- return whd_bus_spi_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_FUNCTION2_WATERMARK, (uint8_t)1, -- ( uint32_t )SPI_F2_WATERMARK); --} -- --whd_result_t whd_bus_spi_wakeup(whd_driver_t whd_driver) --{ -- uint32_t spi_bus_reg_value; -- -- /* Wake up WLAN SPI interface module */ -- CHECK_RETURN(whd_bus_spi_read_register_value(whd_driver, BUS_FUNCTION, SPI_BUS_CONTROL, sizeof(uint32_t), -- (uint8_t *)&spi_bus_reg_value) ); -- spi_bus_reg_value |= ( uint32_t )(WAKE_UP); -- return whd_bus_spi_write_register_value(whd_driver, BUS_FUNCTION, SPI_BUS_CONTROL, sizeof(uint32_t), -- spi_bus_reg_value); --} -- --whd_result_t whd_bus_spi_sleep(whd_driver_t whd_driver) --{ -- uint32_t spi_bus_reg_value; -- -- /* Put SPI interface block to sleep */ -- CHECK_RETURN(whd_bus_spi_read_register_value(whd_driver, BUS_FUNCTION, SPI_BUS_CONTROL, sizeof(uint32_t), -- (uint8_t *)&spi_bus_reg_value) ); -- spi_bus_reg_value &= ~( uint32_t )(WAKE_UP); -- return whd_bus_spi_write_register_value(whd_driver, BUS_FUNCTION, SPI_BUS_CONTROL, sizeof(uint32_t), -- spi_bus_reg_value); --} -- --void whd_bus_spi_init_stats(whd_driver_t whd_driver) --{ -- --} -- --whd_result_t whd_bus_spi_print_stats(whd_driver_t whd_driver, whd_bool_t reset_after_print) --{ -- return WHD_TRUE; --} -- --/* Waking the firmware up from Deep Sleep */ --whd_result_t whd_bus_spi_reinit_stats(whd_driver_t whd_driver, whd_bool_t wake_from_firmware) --{ -- return WHD_TRUE; --} -- --uint8_t whd_bus_spi_backplane_read_padd_size(whd_driver_t whd_driver) --{ -- return WHD_BUS_SPI_BACKPLANE_READ_PADD_SIZE; --} -- --whd_bool_t whd_bus_spi_use_status_report_scheme(whd_driver_t whd_driver) --{ -- return WHD_FALSE; --} -- --uint32_t whd_bus_spi_get_max_transfer_size(whd_driver_t whd_driver) --{ -- return WHD_BUS_SPI_MAX_BACKPLANE_TRANSFER_SIZE; --} -- --static void whd_bus_spi_oob_irq_handler(void *arg, cyhal_gpio_irq_event_t event) --{ -- whd_driver_t whd_driver = (whd_driver_t)arg; -- const whd_oob_config_t *config = &whd_driver->bus_priv->spi_config.oob_config; -- const cyhal_gpio_irq_event_t expected_event = (config->is_falling_edge == WHD_TRUE) -- ? CYHAL_GPIO_IRQ_FALL : CYHAL_GPIO_IRQ_RISE; -- -- if (event != expected_event) -- { -- WPRINT_WHD_ERROR( ("Unexpected interrupt event %d\n", event) ); -- -- return; -- } -- -- /* call thread notify to wake up WHD thread */ -- whd_thread_notify_irq(whd_driver); --} -- --/* XXX FIXME */ --#define WLAN_INTR_PRIORITY 1 --whd_result_t whd_bus_spi_irq_register(whd_driver_t whd_driver) --{ -- const whd_oob_config_t *config = &whd_driver->bus_priv->spi_config.oob_config; -- -- cyhal_gpio_init(config->host_oob_pin, CYHAL_GPIO_DIR_INPUT, CYHAL_GPIO_DRIVE_ANALOG, 0); -- cyhal_gpio_register_irq(config->host_oob_pin, WLAN_INTR_PRIORITY, whd_bus_spi_oob_irq_handler, -- whd_driver); -- -- return WHD_TRUE; --} -- --whd_result_t whd_bus_spi_irq_enable(whd_driver_t whd_driver, whd_bool_t enable) --{ -- const whd_oob_config_t *config = &whd_driver->bus_priv->spi_config.oob_config; -- const cyhal_gpio_irq_event_t event = -- (config->is_falling_edge == WHD_TRUE) ? CYHAL_GPIO_IRQ_FALL : CYHAL_GPIO_IRQ_RISE; -- -- cyhal_gpio_irq_enable(config->host_oob_pin, event, (enable == WHD_TRUE) ? true : false); -- -- return WHD_TRUE; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_spi_protocol.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_spi_protocol.h -deleted file mode 100644 -index 1be7b0e075..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_bus_spi_protocol.h -+++ /dev/null -@@ -1,101 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include "whd.h" --#include "whd_bus_protocol_interface.h" --#include "cy_result.h" --#include "cyhal_spi.h" -- --#ifndef INCLUDED_SPI_WHD_BUS_PROTOCOL_H --#define INCLUDED_SPI_WHD_BUS_PROTOCOL_H -- --#ifdef __cplusplus --extern "C" { --#endif -- --/****************************************************** --* Constants --******************************************************/ -- --/****************************************************** --* Structures --******************************************************/ -- --typedef uint32_t whd_bus_gspi_header_t; -- --#pragma pack(1) -- --typedef struct --{ -- whd_bus_gspi_header_t gspi_header; --} whd_bus_header_t; -- --#pragma pack() -- --#define WHD_BUS_SPI_HEADER_SIZE (sizeof(whd_bus_header_t) ) -- --#define WHD_BUS_SPI_USE_STATUS_REPORT_SCHEME (1 == 1) -- --#define WHD_BUS_SPI_MAX_BACKPLANE_TRANSFER_SIZE (64) /* Max packet size on F1 */ --#define WHD_BUS_SPI_BACKPLANE_READ_PADD_SIZE (4) -- --/****************************************************** --* Function declarations --******************************************************/ --extern whd_result_t whd_bus_spi_send_buffer(whd_driver_t whd_driver, whd_buffer_t buffer); --extern whd_result_t whd_bus_spi_poke_wlan(whd_driver_t whd_driver); --extern whd_result_t whd_bus_spi_ack_interrupt(whd_driver_t whd_driver, uint32_t intstatus); --extern uint32_t whd_bus_spi_packet_available_to_read(whd_driver_t whd_driver); --extern whd_result_t whd_bus_spi_read_frame(whd_driver_t whd_driver, whd_buffer_t *buffer); --extern whd_result_t whd_bus_spi_init(whd_driver_t whd_driver); --extern whd_result_t whd_bus_spi_deinit(whd_driver_t whd_driver); --extern whd_bool_t whd_bus_spi_wake_interrupt_present(whd_driver_t whd_driver); --extern whd_result_t whd_bus_spi_wait_for_wlan_event(whd_driver_t whd_driver, -- cy_semaphore_t *transceive_semaphore); --extern whd_result_t whd_bus_spi_write_register_value(whd_driver_t whd_driver, whd_bus_function_t function, -- uint32_t address, uint8_t value_length, uint32_t value); --extern whd_result_t whd_bus_spi_read_register_value(whd_driver_t whd_driver, whd_bus_function_t function, -- uint32_t address, uint8_t value_length, uint8_t *value); --extern whd_result_t whd_bus_spi_write_backplane_value(whd_driver_t whd_driver, uint32_t address, -- uint8_t register_length, uint32_t value); --extern whd_result_t whd_bus_spi_read_backplane_value(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, -- uint8_t *value); --extern whd_result_t whd_bus_spi_transfer_bytes(whd_driver_t whd_driver, whd_bus_transfer_direction_t direction, -- whd_bus_function_t function, uint32_t address, uint16_t size, -- whd_transfer_bytes_packet_t *packet); --extern whd_result_t whd_bus_spi_wakeup(whd_driver_t whd_driver); --extern whd_result_t whd_bus_spi_sleep(whd_driver_t whd_driver); --extern void whd_bus_spi_init_stats(whd_driver_t whd_driver); --extern whd_result_t whd_bus_spi_print_stats(whd_driver_t whd_driver, whd_bool_t reset_after_print); --extern whd_result_t whd_bus_spi_reinit_stats(whd_driver_t whd_driver, whd_bool_t wake_from_firmware); --extern uint8_t whd_bus_spi_backplane_read_padd_size(whd_driver_t whd_driver); --extern whd_bool_t whd_bus_spi_use_status_report_scheme(whd_driver_t whd_driver); --extern uint32_t whd_bus_spi_get_max_transfer_size(whd_driver_t whd_driver); --extern whd_result_t whd_bus_spi_irq_register(whd_driver_t whd_driver); --extern whd_result_t whd_bus_spi_irq_enable(whd_driver_t whd_driver, whd_bool_t enable); --extern void whd_bus_spi_irq_handler(void *handler_arg, cyhal_spi_irq_event_t event); -- --/****************************************************** --* Global variables --******************************************************/ -- --#ifdef __cplusplus --} /*extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_SPI_WHD_BUS_PROTOCOL_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_chip_reg.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_chip_reg.h -deleted file mode 100644 -index 64a4f88182..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_chip_reg.h -+++ /dev/null -@@ -1,114 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#ifndef INCLUDED_WHD_CHIP_REG_H_ --#define INCLUDED_WHD_CHIP_REG_H_ -- --#ifdef __cplusplus --extern "C" { --#endif -- --/****************************************************** --* Architecture Constants --******************************************************/ -- --/* D11 registers and SHM */ --#define D11_BASE_ADDR 0x18001000 --#define D11_AXI_BASE_ADDR 0xE8000000 --#define D11_SHM_BASE_ADDR (D11_AXI_BASE_ADDR + 0x4000) -- --#define D11REG_ADDR(offset) (D11_BASE_ADDR + offset) --#define D11IHR_ADDR(offset) (D11_AXI_BASE_ADDR + 0x400 + (2 * offset) ) --#define D11SHM_ADDR(offset) (D11_SHM_BASE_ADDR + offset) -- --#define M_DS1_CTRL_STATUS (0xe0b * 2) -- --/* RMC operational modes */ --enum ds1_ctrl_status --{ -- DS1_SLEEP = 0, /* DS1_SLEEP */ -- MAC_ON = 1, /* MAC_ON */ -- RADIO_PHY_ON = 2, /* RADIO_PHY_ON */ -- DS1_EXIT = 3 /* DS1_EXIT.*/ --}; -- --#define M_DS1_CTRL_SDIO (0xe0c * 2) -- --#define C_DS1_CTRL_SDIO_DS1_SLEEP (1 << 0) --#define C_DS1_CTRL_SDIO_MAC_ON (1 << 1) --#define C_DS1_CTRL_SDIO_RADIO_PHY_ON (1 << 2) --#define C_DS1_CTRL_SDIO_DS1_EXIT (1 << 3) --#define C_DS1_CTRL_PROC_DONE (1 << 8) --#define C_DS1_CTRL_REQ_VALID (1 << 9) --/* MacControl register */ --#define D11_MACCONTROL_REG D11REG_ADDR(0x120) --#define D11_MACCONTROL_REG_SIZE 4 --#define D11_MACCONTROL_REG_WAKE (1 << 26) --#define D11_MACCONTROL_CLEAR_WAKE (0xFBFFFFFF) --#define PMU_MINRESMASK (PMU_BASE_ADDRESS + 0x618) --#define DEFAULT_43012_MIN_RES_MASK 0x0f8bfe77 -- --/* Backplane architecture */ --#define CHIPCOMMON_BASE_ADDRESS 0x18000000 /* Chipcommon core register region */ --#define I2S0_BASE_ADDRESS 0x18001000 /* I2S0 core register region */ --#define I2S1_BASE_ADDRESS 0x18002000 /* I2S1 core register region */ --#define APPS_ARMCR4_BASE_ADDRESS 0x18003000 /* Apps Cortex-R4 core register region */ --#define DMA_BASE_ADDRESS 0x18004000 /* DMA core register region */ --#define GMAC_BASE_ADDRESS 0x18005000 /* GMAC core register region */ --#define USB20H0_BASE_ADDRESS 0x18006000 /* USB20H0 core register region */ --#define USB20D_BASE_ADDRESS 0x18007000 /* USB20D core register region */ --#define SDIOH_BASE_ADDRESS 0x18008000 /* SDIOH Device core register region */ --#define WLAN_ARMCM3_BASE_ADDRESS 0x18003000 /* ARMCM3 core register region */ --#define PMU_BASE_ADDRESS 0x18012000 /* PMU core register region */ --#define DOT11MAC_BASE_ADDRESS 0x18001000 --#define SDIO_BASE_ADDRESS 0x18002000 --#define SOCSRAM_BASE_ADDRESS 0x18004000 --#define WLAN_ARMCR4_BASE_ADDRESS 0x18003000 /* ARMCR4 core register region */ -- --#define BACKPLANE_ADDRESS_MASK 0x7FFF --#define BACKPLANE_WINDOW_SIZE (BACKPLANE_ADDRESS_MASK + 1) -- --#define CHIP_STA_INTERFACE 0 --#define CHIP_AP_INTERFACE 1 --#define CHIP_P2P_INTERFACE 2 -- --/* Chipcommon registers */ --#define CHIPCOMMON_CORE_CAPEXT_ADDR ( (uint32_t)(CHIPCOMMON_BASE_ADDRESS + 0x64c) ) --#define CHIPCOMMON_CORE_CAPEXT_SR_SUPPORTED ( (uint32_t)(1 << 1) ) --#define CHIPCOMMON_CORE_RCTL_LOGIC_DISABLE ( (uint32_t)(1 << 27) ) --#define CHIPCOMMON_CORE_RCTL_MACPHY_DISABLE ( (uint32_t)(1 << 26) ) --#define CHIPCOMMON_CORE_RETENTION_CTL ( (uint32_t)(CHIPCOMMON_BASE_ADDRESS + 0x670) ) -- --#define CHIPCOMMON_GPIO_CONTROL ( (uint32_t)(CHIPCOMMON_BASE_ADDRESS + 0x6C) ) --#define CHIPCOMMON_SR_CONTROL0 ( (uint32_t)(CHIPCOMMON_BASE_ADDRESS + 0x504) ) --#define CHIPCOMMON_SR_CONTROL1 ( (uint32_t)(CHIPCOMMON_BASE_ADDRESS + 0x508) ) -- --/* SOCSRAM core registers */ --#define SOCSRAM_BANKX_INDEX ( (uint32_t)(SOCSRAM_BASE_ADDRESS + 0x10) ) --#define SOCSRAM_BANKX_PDA ( (uint32_t)(SOCSRAM_BASE_ADDRESS + 0x44) ) -- --/* PMU core registers */ --#define RETENTION_CTL ( (uint32_t)(PMU_BASE_ADDRESS + 0x670) ) --#define RCTL_MACPHY_DISABLE ( (uint32_t)(1 << 26) ) --#define RCTL_LOGIC_DISABLE ( (uint32_t)(1 << 27) ) -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_CHIP_REG_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_sdio.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_sdio.h -deleted file mode 100644 -index 5ea57f40b4..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_sdio.h -+++ /dev/null -@@ -1,234 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#ifndef INCLUDED_WHD_SDIO_H_ --#define INCLUDED_WHD_SDIO_H_ -- --#ifdef __cplusplus --extern "C" { --#endif -- --/****************************************************** --* SDIO Constants --******************************************************/ --/* CurrentSdiodProgGuide r23 */ -- --/* Base registers */ --#define SDIO_CORE ( (uint32_t)(SDIO_BASE_ADDRESS + 0x00) ) --#define SDIO_INT_STATUS ( (uint32_t)(SDIO_BASE_ADDRESS + 0x20) ) --#define SDIO_TO_SB_MAILBOX ( (uint32_t)(SDIO_BASE_ADDRESS + 0x40) ) --#define SDIO_TO_SB_MAILBOX_DATA ( (uint32_t)(SDIO_BASE_ADDRESS + 0x48) ) --#define SDIO_TO_HOST_MAILBOX_DATA ( (uint32_t)(SDIO_BASE_ADDRESS + 0x4C) ) --#define SDIO_TO_SB_MAIL_BOX ( (uint32_t)(SDIO_BASE_ADDRESS + 0x40) ) --#define SDIO_INT_HOST_MASK ( (uint32_t)(SDIO_BASE_ADDRESS + 0x24) ) --#define SDIO_FUNCTION_INT_MASK ( (uint32_t)(SDIO_BASE_ADDRESS + 0x34) ) -- --/* SDIO Function 0 (SDIO Bus) register addresses */ -- --/* SDIO Device CCCR offsets */ --/* TODO: What does CIS/CCCR stand for? */ --/* CCCR accesses do not require backpane clock */ --#define SDIOD_CCCR_REV ( (uint32_t)0x00 ) /* CCCR/SDIO Revision */ --#define SDIOD_CCCR_SDREV ( (uint32_t)0x01 ) /* SD Revision */ --#define SDIOD_CCCR_IOEN ( (uint32_t)0x02 ) /* I/O Enable */ --#define SDIOD_CCCR_IORDY ( (uint32_t)0x03 ) /* I/O Ready */ --#define SDIOD_CCCR_INTEN ( (uint32_t)0x04 ) /* Interrupt Enable */ --#define SDIOD_CCCR_INTPEND ( (uint32_t)0x05 ) /* Interrupt Pending */ --#define SDIOD_CCCR_IOABORT ( (uint32_t)0x06 ) /* I/O Abort */ --#define SDIOD_CCCR_BICTRL ( (uint32_t)0x07 ) /* Bus Interface control */ --#define SDIOD_CCCR_CAPABLITIES ( (uint32_t)0x08 ) /* Card Capabilities */ --#define SDIOD_CCCR_CISPTR_0 ( (uint32_t)0x09 ) /* Common CIS Base Address Pointer Register 0 (LSB) */ --#define SDIOD_CCCR_CISPTR_1 ( (uint32_t)0x0A ) /* Common CIS Base Address Pointer Register 1 */ --#define SDIOD_CCCR_CISPTR_2 ( (uint32_t)0x0B ) /* Common CIS Base Address Pointer Register 2 (MSB - only bit 1 valid)*/ --#define SDIOD_CCCR_BUSSUSP ( (uint32_t)0x0C ) /* */ --#define SDIOD_CCCR_FUNCSEL ( (uint32_t)0x0D ) /* */ --#define SDIOD_CCCR_EXECFLAGS ( (uint32_t)0x0E ) /* */ --#define SDIOD_CCCR_RDYFLAGS ( (uint32_t)0x0F ) /* */ --#define SDIOD_CCCR_BLKSIZE_0 ( (uint32_t)0x10 ) /* Function 0 (Bus) SDIO Block Size Register 0 (LSB) */ --#define SDIOD_CCCR_BLKSIZE_1 ( (uint32_t)0x11 ) /* Function 0 (Bus) SDIO Block Size Register 1 (MSB) */ --#define SDIOD_CCCR_POWER_CONTROL ( (uint32_t)0x12 ) /* Power Control */ --#define SDIOD_CCCR_SPEED_CONTROL ( (uint32_t)0x13 ) /* Bus Speed Select (control device entry into high-speed clocking mode) */ --#define SDIOD_CCCR_UHS_I ( (uint32_t)0x14 ) /* UHS-I Support */ --#define SDIOD_CCCR_DRIVE ( (uint32_t)0x15 ) /* Drive Strength */ --#define SDIOD_CCCR_INTEXT ( (uint32_t)0x16 ) /* Interrupt Extension */ --#define SDIOD_CCCR_BRCM_CARDCAP ( (uint32_t)0xF0 ) /* Brcm Card Capability */ --#define SDIOD_SEP_INT_CTL ( (uint32_t)0xF2 ) /* Separate Interrupt Control*/ --#define SDIOD_CCCR_F1INFO ( (uint32_t)0x100 ) /* Function 1 (Backplane) Info */ --#define SDIOD_CCCR_F1HP ( (uint32_t)0x102 ) /* Function 1 (Backplane) High Power */ --#define SDIOD_CCCR_F1CISPTR_0 ( (uint32_t)0x109 ) /* Function 1 (Backplane) CIS Base Address Pointer Register 0 (LSB) */ --#define SDIOD_CCCR_F1CISPTR_1 ( (uint32_t)0x10A ) /* Function 1 (Backplane) CIS Base Address Pointer Register 1 */ --#define SDIOD_CCCR_F1CISPTR_2 ( (uint32_t)0x10B ) /* Function 1 (Backplane) CIS Base Address Pointer Register 2 (MSB - only bit 1 valid) */ --#define SDIOD_CCCR_F1BLKSIZE_0 ( (uint32_t)0x110 ) /* Function 1 (Backplane) SDIO Block Size Register 0 (LSB) */ --#define SDIOD_CCCR_F1BLKSIZE_1 ( (uint32_t)0x111 ) /* Function 1 (Backplane) SDIO Block Size Register 1 (MSB) */ --#define SDIOD_CCCR_F2INFO ( (uint32_t)0x200 ) /* Function 2 (WLAN Data FIFO) Info */ --#define SDIOD_CCCR_F2HP ( (uint32_t)0x202 ) /* Function 2 (WLAN Data FIFO) High Power */ --#define SDIOD_CCCR_F2CISPTR_0 ( (uint32_t)0x209 ) /* Function 2 (WLAN Data FIFO) CIS Base Address Pointer Register 0 (LSB) */ --#define SDIOD_CCCR_F2CISPTR_1 ( (uint32_t)0x20A ) /* Function 2 (WLAN Data FIFO) CIS Base Address Pointer Register 1 */ --#define SDIOD_CCCR_F2CISPTR_2 ( (uint32_t)0x20B ) /* Function 2 (WLAN Data FIFO) CIS Base Address Pointer Register 2 (MSB - only bit 1 valid) */ --#define SDIOD_CCCR_F2BLKSIZE_0 ( (uint32_t)0x210 ) /* Function 2 (WLAN Data FIFO) SDIO Block Size Register 0 (LSB) */ --#define SDIOD_CCCR_F2BLKSIZE_1 ( (uint32_t)0x211 ) /* Function 2 (WLAN Data FIFO) SDIO Block Size Register 1 (MSB) */ --#define SDIOD_CCCR_F3INFO ( (uint32_t)0x300 ) /* Function 3 (Bluetooth Data FIFO) Info */ --#define SDIOD_CCCR_F3HP ( (uint32_t)0x302 ) /* Function 3 (Bluetooth Data FIFO) High Power */ --#define SDIOD_CCCR_F3CISPTR_0 ( (uint32_t)0x309 ) /* Function 3 (Bluetooth Data FIFO) CIS Base Address Pointer Register 0 (LSB) */ --#define SDIOD_CCCR_F3CISPTR_1 ( (uint32_t)0x30A ) /* Function 3 (Bluetooth Data FIFO) CIS Base Address Pointer Register 1 */ --#define SDIOD_CCCR_F3CISPTR_2 ( (uint32_t)0x30B ) /* Function 3 (Bluetooth Data FIFO) CIS Base Address Pointer Register 2 (MSB - only bit 1 valid) */ --#define SDIOD_CCCR_F3BLKSIZE_0 ( (uint32_t)0x310 ) /* Function 3 (Bluetooth Data FIFO) SDIO Block Size Register 0 (LSB) */ --#define SDIOD_CCCR_F3BLKSIZE_1 ( (uint32_t)0x311 ) /* Function 3 (Bluetooth Data FIFO) SDIO Block Size Register 1 (MSB) */ -- -- --/* SDIO Function 1 (Backplane) register addresses */ --/* Addresses 0x00000000 - 0x0000FFFF are directly access the backplane -- * throught the backplane window. Addresses above 0x0000FFFF are -- * registers relating to backplane access, and do not require a backpane -- * clock to access them -- */ --#define SDIO_GPIO_SELECT ( (uint32_t)0x10005 ) --#define SDIO_GPIO_OUTPUT ( (uint32_t)0x10006 ) --#define SDIO_GPIO_ENABLE ( (uint32_t)0x10007 ) --#define SDIO_FUNCTION2_WATERMARK ( (uint32_t)0x10008 ) --#define SDIO_DEVICE_CONTROL ( (uint32_t)0x10009 ) --#define SDIO_BACKPLANE_ADDRESS_LOW ( (uint32_t)0x1000A ) --#define SDIO_BACKPLANE_ADDRESS_MID ( (uint32_t)0x1000B ) --#define SDIO_BACKPLANE_ADDRESS_HIGH ( (uint32_t)0x1000C ) --#define SDIO_FRAME_CONTROL ( (uint32_t)0x1000D ) --#define SDIO_CHIP_CLOCK_CSR ( (uint32_t)0x1000E ) --#define SDIO_PULL_UP ( (uint32_t)0x1000F ) --#define SDIO_READ_FRAME_BC_LOW ( (uint32_t)0x1001B ) --#define SDIO_READ_FRAME_BC_HIGH ( (uint32_t)0x1001C ) --#define SDIO_WAKEUP_CTRL ( (uint32_t)0x1001E ) --#define SDIO_SLEEP_CSR ( (uint32_t)0x1001F ) --#define I_HMB_SW_MASK ( (uint32_t)0x000000F0 ) --#define I_HMB_FRAME_IND (1 << 6) --#define I_HMB_HOST_INT (1 << 7) --#define FRAME_AVAILABLE_MASK I_HMB_SW_MASK -- --/****************************************************** --* Bit Masks --******************************************************/ -- --/* SDIOD_CCCR_REV Bits */ --#define SDIO_REV_SDIOID_MASK ( (uint32_t)0xF0 ) /* SDIO spec revision number */ --#define SDIO_REV_CCCRID_MASK ( (uint32_t)0x0F ) /* CCCR format version number */ -- --/* SDIOD_CCCR_SDREV Bits */ --#define SD_REV_PHY_MASK ( (uint32_t)0x0F ) /* SD format version number */ -- --/* SDIOD_CCCR_IOEN Bits */ --#define SDIO_FUNC_ENABLE_1 ( (uint32_t)0x02 ) /* function 1 I/O enable */ --#define SDIO_FUNC_ENABLE_2 ( (uint32_t)0x04 ) /* function 2 I/O enable */ --#define SDIO_FUNC_ENABLE_3 ( (uint32_t)0x08 ) /* function 3 I/O enable */ -- --/* SDIOD_CCCR_IORDY Bits */ --#define SDIO_FUNC_READY_1 ( (uint32_t)0x02 ) /* function 1 I/O ready */ --#define SDIO_FUNC_READY_2 ( (uint32_t)0x04 ) /* function 2 I/O ready */ --#define SDIO_FUNC_READY_3 ( (uint32_t)0x08 ) /* function 3 I/O ready */ -- --/* SDIOD_CCCR_INTEN Bits */ --#define INTR_CTL_MASTER_EN ( (uint32_t)0x01 ) /* interrupt enable master */ --#define INTR_CTL_FUNC1_EN ( (uint32_t)0x02 ) /* interrupt enable for function 1 */ --#define INTR_CTL_FUNC2_EN ( (uint32_t)0x04 ) /* interrupt enable for function 2 */ -- --/* SDIOD_SEP_INT_CTL Bits */ --#define SEP_INTR_CTL_MASK ( (uint32_t)0x01 ) /* out-of-band interrupt mask */ --#define SEP_INTR_CTL_EN ( (uint32_t)0x02 ) /* out-of-band interrupt output enable */ --#define SEP_INTR_CTL_POL ( (uint32_t)0x04 ) /* out-of-band interrupt polarity */ -- --/* SDIOD_CCCR_INTPEND Bits */ --#define INTR_STATUS_FUNC1 ( (uint32_t)0x02 ) /* interrupt pending for function 1 */ --#define INTR_STATUS_FUNC2 ( (uint32_t)0x04 ) /* interrupt pending for function 2 */ --#define INTR_STATUS_FUNC3 ( (uint32_t)0x08 ) /* interrupt pending for function 3 */ -- --/* SDIOD_CCCR_IOABORT Bits */ --#define IO_ABORT_RESET_ALL ( (uint32_t)0x08 ) /* I/O card reset */ --#define IO_ABORT_FUNC_MASK ( (uint32_t)0x07 ) /* abort selction: function x */ -- --/* SDIOD_CCCR_BICTRL Bits */ --#define BUS_CARD_DETECT_DIS ( (uint32_t)0x80 ) /* Card Detect disable */ --#define BUS_SPI_CONT_INTR_CAP ( (uint32_t)0x40 ) /* support continuous SPI interrupt */ --#define BUS_SPI_CONT_INTR_EN ( (uint32_t)0x20 ) /* continuous SPI interrupt enable */ --#define BUS_SD_DATA_WIDTH_MASK ( (uint32_t)0x03 ) /* bus width mask */ --#define BUS_SD_DATA_WIDTH_4BIT ( (uint32_t)0x02 ) /* bus width 4-bit mode */ --#define BUS_SD_DATA_WIDTH_1BIT ( (uint32_t)0x00 ) /* bus width 1-bit mode */ -- --/* SDIOD_CCCR_CAPABLITIES Bits */ --#define SDIO_CAP_4BLS ( (uint32_t)0x80 ) /* 4-bit support for low speed card */ --#define SDIO_CAP_LSC ( (uint32_t)0x40 ) /* low speed card */ --#define SDIO_CAP_E4MI ( (uint32_t)0x20 ) /* enable interrupt between block of data in 4-bit mode */ --#define SDIO_CAP_S4MI ( (uint32_t)0x10 ) /* support interrupt between block of data in 4-bit mode */ --#define SDIO_CAP_SBS ( (uint32_t)0x08 ) /* support suspend/resume */ --#define SDIO_CAP_SRW ( (uint32_t)0x04 ) /* support read wait */ --#define SDIO_CAP_SMB ( (uint32_t)0x02 ) /* support multi-block transfer */ --#define SDIO_CAP_SDC ( (uint32_t)0x01 ) /* Support Direct commands during multi-byte transfer */ -- --/* SDIOD_CCCR_POWER_CONTROL Bits */ --#define SDIO_POWER_SMPC ( (uint32_t)0x01 ) /* supports master power control (RO) */ --#define SDIO_POWER_EMPC ( (uint32_t)0x02 ) /* enable master power control (allow > 200mA) (RW) */ -- --/* SDIOD_CCCR_SPEED_CONTROL Bits */ --#define SDIO_SPEED_SHS ( (uint32_t)0x01 ) /* supports high-speed [clocking] mode (RO) */ --#define SDIO_SPEED_EHS ( (uint32_t)0x02 ) /* enable high-speed [clocking] mode (RW) */ -- --/* SDIOD_CCCR_BRCM_CARDCAP Bits */ --#define SDIOD_CCCR_BRCM_CARDCAP_CMD14_SUPPORT ( (uint32_t)0x02 ) /* Supports CMD14 */ --#define SDIOD_CCCR_BRCM_CARDCAP_CMD14_EXT ( (uint32_t)0x04 ) /* CMD14 is allowed in FSM command state */ --#define SDIOD_CCCR_BRCM_CARDCAP_CMD_NODEC ( (uint32_t)0x08 ) /* sdiod_aos does not decode any command */ -- --/* SDIO_FUNCTION_INT_MASK Bits*/ --#define SDIO_FUNC_MASK_F1 ( (uint32_t)0x01 ) /* interrupt mask enable for function 1 */ --#define SDIO_FUNC_MASK_F2 ( (uint32_t)0x02 ) /* interrupt mask enable for function 2 */ -- --/* SDIO_DEVICE_CONTROL Bits */ --#define SDIO_DATA_PAD_ISO ( (uint32_t)0x08 ) /* isolate internal SDIO data bus signals */ -- --/* SDIO_CHIP_CLOCK_CSR Bits */ --#define SBSDIO_FORCE_ALP ( (uint32_t)0x01 ) /* Force ALP request to backplane */ --#define SBSDIO_FORCE_HT ( (uint32_t)0x02 ) /* Force HT request to backplane */ --#define SBSDIO_FORCE_ILP ( (uint32_t)0x04 ) /* Force ILP request to backplane */ --#define SBSDIO_ALP_AVAIL_REQ ( (uint32_t)0x08 ) /* Make ALP ready (power up xtal) */ --#define SBSDIO_HT_AVAIL_REQ ( (uint32_t)0x10 ) /* Make HT ready (power up PLL) */ --#define SBSDIO_FORCE_HW_CLKREQ_OFF ( (uint32_t)0x20 ) /* Squelch clock requests from HW */ --#define SBSDIO_ALP_AVAIL ( (uint32_t)0x40 ) /* Status: ALP is ready */ --#define SBSDIO_HT_AVAIL ( (uint32_t)0x80 ) /* Status: HT is ready */ --#define SBSDIO_Rev8_HT_AVAIL ( (uint32_t)0x40 ) --#define SBSDIO_Rev8_ALP_AVAIL ( (uint32_t)0x80 ) -- --/* SDIO_FRAME_CONTROL Bits */ --#define SFC_RF_TERM ( (uint32_t)(1 << 0) ) /* Read Frame Terminate */ --#define SFC_WF_TERM ( (uint32_t)(1 << 1) ) /* Write Frame Terminate */ --#define SFC_CRC4WOOS ( (uint32_t)(1 << 2) ) /* HW reports CRC error for write out of sync */ --#define SFC_ABORTALL ( (uint32_t)(1 << 3) ) /* Abort cancels all in-progress frames */ -- --/* SDIO_TO_SB_MAIL_BOX bits corresponding to intstatus bits */ --#define SMB_NAK ( (uint32_t)(1 << 0) ) /* To SB Mailbox Frame NAK */ --#define SMB_INT_ACK ( (uint32_t)(1 << 1) ) /* To SB Mailbox Host Interrupt ACK */ --#define SMB_USE_OOB ( (uint32_t)(1 << 2) ) /* To SB Mailbox Use OOB Wakeup */ --#define SMB_DEV_INT ( (uint32_t)(1 << 3) ) /* To SB Mailbox Miscellaneous Interrupt */ -- --/* SDIO_WAKEUP_CTRL bits */ --#define SBSDIO_WCTRL_WAKE_TILL_ALP_AVAIL ( (uint32_t)(1 << 0) ) /* WakeTillAlpAvail bit */ --#define SBSDIO_WCTRL_WAKE_TILL_HT_AVAIL ( (uint32_t)(1 << 1) ) /* WakeTillHTAvail bit */ -- --/* SDIO_SLEEP_CSR bits */ --#define SBSDIO_SLPCSR_KEEP_SDIO_ON ( (uint32_t)(1 << 0) ) /* KeepSdioOn bit */ --#define SBSDIO_SLPCSR_DEVICE_ON ( (uint32_t)(1 << 1) ) /* DeviceOn bit */ -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_SDIO_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_spi.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_spi.h -deleted file mode 100644 -index 45c418e303..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/bus_protocols/whd_spi.h -+++ /dev/null -@@ -1,122 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#ifndef INCLUDED_WHD_SPI_H_ --#define INCLUDED_WHD_SPI_H_ -- --#ifdef __cplusplus --extern "C" { --#endif -- --/****************************************************** --* SPI Constants --******************************************************/ --/* GSPI v1 */ --#define SPI_FRAME_CONTROL ( (uint32_t)0x1000D ) -- --/* Register addresses */ --#define SPI_BUS_CONTROL ( (uint32_t)0x0000 ) --#define SPI_RESPONSE_DELAY ( (uint32_t)0x0001 ) --#define SPI_STATUS_ENABLE ( (uint32_t)0x0002 ) --#define SPI_RESET_BP ( (uint32_t)0x0003 ) /* (corerev >= 1) */ --#define SPI_INTERRUPT_REGISTER ( (uint32_t)0x0004 ) /* 16 bits - Interrupt status */ --#define SPI_INTERRUPT_ENABLE_REGISTER ( (uint32_t)0x0006 ) /* 16 bits - Interrupt mask */ --#define SPI_STATUS_REGISTER ( (uint32_t)0x0008 ) /* 32 bits */ --#define SPI_FUNCTION1_INFO ( (uint32_t)0x000C ) /* 16 bits */ --#define SPI_FUNCTION2_INFO ( (uint32_t)0x000E ) /* 16 bits */ --#define SPI_FUNCTION3_INFO ( (uint32_t)0x0010 ) /* 16 bits */ --#define SPI_READ_TEST_REGISTER ( (uint32_t)0x0014 ) /* 32 bits */ --#define SPI_RESP_DELAY_F0 ( (uint32_t)0x001c ) /* 8 bits (corerev >= 3) */ --#define SPI_RESP_DELAY_F1 ( (uint32_t)0x001d ) /* 8 bits (corerev >= 3) */ --#define SPI_RESP_DELAY_F2 ( (uint32_t)0x001e ) /* 8 bits (corerev >= 3) */ --#define SPI_RESP_DELAY_F3 ( (uint32_t)0x001f ) /* 8 bits (corerev >= 3) */ -- --/****************************************************** --* Bit Masks --******************************************************/ -- --/* GSPI */ --#define SPI_READ_TEST_REGISTER_VALUE ( (uint32_t)0xFEEDBEAD ) --#define SPI_READ_TEST_REG_LSB ( ( (SPI_READ_TEST_REGISTER_VALUE) ) & 0xff ) --#define SPI_READ_TEST_REG_LSB_SFT1 ( ( (SPI_READ_TEST_REGISTER_VALUE << 1) ) & 0xff ) --#define SPI_READ_TEST_REG_LSB_SFT2 ( ( (SPI_READ_TEST_REGISTER_VALUE << 1) + 1 ) & 0xff ) --#define SPI_READ_TEST_REG_LSB_SFT3 ( ( (SPI_READ_TEST_REGISTER_VALUE + 1) << 1 ) & 0xff ) -- --/* SPI_BUS_CONTROL Bits */ --#define WORD_LENGTH_32 ( (uint32_t)0x01 ) /* 0/1 16/32 bit word length */ --#define ENDIAN_BIG ( (uint32_t)0x02 ) /* 0/1 Little/Big Endian */ --#define CLOCK_PHASE ( (uint32_t)0x04 ) /* 0/1 clock phase delay */ --#define CLOCK_POLARITY ( (uint32_t)0x08 ) /* 0/1 Idle state clock polarity is low/high */ --#define HIGH_SPEED_MODE ( (uint32_t)0x10 ) /* 1/0 High Speed mode / Normal mode */ --#define INTERRUPT_POLARITY_HIGH ( (uint32_t)0x20 ) /* 1/0 Interrupt active polarity is high/low */ --#define WAKE_UP ( (uint32_t)0x80 ) /* 0/1 Wake-up command from Host to WLAN */ -- --/* SPI_RESPONSE_DELAY Bit mask */ --#define RESPONSE_DELAY_MASK 0xFF /* Configurable rd response delay in multiples of 8 bits */ -- --/* SPI_STATUS_ENABLE Bits */ --#define STATUS_ENABLE ( (uint32_t)0x01 ) /* 1/0 Status sent/not sent to host after read/write */ --#define INTR_WITH_STATUS ( (uint32_t)0x02 ) /* 0/1 Do-not / do-interrupt if status is sent */ --#define RESP_DELAY_ALL ( (uint32_t)0x04 ) /* Applicability of resp delay to F1 or all func's read */ --#define DWORD_PKT_LEN_EN ( (uint32_t)0x08 ) /* Packet len denoted in dwords instead of bytes */ --#define CMD_ERR_CHK_EN ( (uint32_t)0x20 ) /* Command error check enable */ --#define DATA_ERR_CHK_EN ( (uint32_t)0x40 ) /* Data error check enable */ -- --/* SPI_RESET_BP Bits*/ --#define RESET_ON_WLAN_BP_RESET ( (uint32_t)0x04 ) /* enable reset for WLAN backplane */ --#define RESET_SPI ( (uint32_t)0x80 ) /* reset the above enabled logic */ -- --/* SPI_INTERRUPT_REGISTER and SPI_INTERRUPT_ENABLE_REGISTER Bits */ --#define DATA_UNAVAILABLE ( (uint32_t)0x0001 ) /* Requested data not available; Clear by writing a "1" */ --#define F2_F3_FIFO_RD_UNDERFLOW ( (uint32_t)0x0002 ) --#define F2_F3_FIFO_WR_OVERFLOW ( (uint32_t)0x0004 ) --#define COMMAND_ERROR ( (uint32_t)0x0008 ) /* Cleared by writing 1 */ --#define DATA_ERROR ( (uint32_t)0x0010 ) /* Cleared by writing 1 */ --#define F2_PACKET_AVAILABLE ( (uint32_t)0x0020 ) --#define F3_PACKET_AVAILABLE ( (uint32_t)0x0040 ) --#define F1_OVERFLOW ( (uint32_t)0x0080 ) /* Due to last write. Bkplane has pending write requests */ --#define MISC_INTR0 ( (uint32_t)0x0100 ) --#define MISC_INTR1 ( (uint32_t)0x0200 ) --#define MISC_INTR2 ( (uint32_t)0x0400 ) --#define MISC_INTR3 ( (uint32_t)0x0800 ) --#define MISC_INTR4 ( (uint32_t)0x1000 ) --#define F1_INTR ( (uint32_t)0x2000 ) --#define F2_INTR ( (uint32_t)0x4000 ) --#define F3_INTR ( (uint32_t)0x8000 ) -- --/* SPI_STATUS_REGISTER Bits */ --#define STATUS_DATA_NOT_AVAILABLE ( (uint32_t)0x00000001 ) --#define STATUS_UNDERFLOW ( (uint32_t)0x00000002 ) --#define STATUS_OVERFLOW ( (uint32_t)0x00000004 ) --#define STATUS_F2_INTR ( (uint32_t)0x00000008 ) --#define STATUS_F3_INTR ( (uint32_t)0x00000010 ) --#define STATUS_F2_RX_READY ( (uint32_t)0x00000020 ) --#define STATUS_F3_RX_READY ( (uint32_t)0x00000040 ) --#define STATUS_HOST_CMD_DATA_ERR ( (uint32_t)0x00000080 ) --#define STATUS_F2_PKT_AVAILABLE ( (uint32_t)0x00000100 ) --#define STATUS_F2_PKT_LEN_MASK ( (uint32_t)0x000FFE00 ) --#define STATUS_F2_PKT_LEN_SHIFT ( (uint32_t)9 ) --#define STATUS_F3_PKT_AVAILABLE ( (uint32_t)0x00100000 ) --#define STATUS_F3_PKT_LEN_MASK ( (uint32_t)0xFFE00000 ) --#define STATUS_F3_PKT_LEN_SHIFT ( (uint32_t)21 ) -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_SPI_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_ap.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_ap.h -deleted file mode 100644 -index 903ef23760..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_ap.h -+++ /dev/null -@@ -1,102 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides prototypes / declarations for APSTA functionality -- */ --#ifndef INCLUDED_WHD_AP_H --#define INCLUDED_WHD_AP_H -- --#include "whd.h" --#include "cyabs_rtos.h" -- --#ifdef __cplusplus --extern "C" { --#endif -- --/****************************************************** --* Macros --******************************************************/ --#define AMPDU_RX_FACTOR_8K 0 /* max receive AMPDU length is 8kb */ --#define AMPDU_RX_FACTOR_16K 1 /* max receive AMPDU length is 16kb */ --#define AMPDU_RX_FACTOR_32K 2 /* max receive AMPDU length is 32kb */ --#define AMPDU_RX_FACTOR_64K 3 /* max receive AMPDU length is 64kb */ --#define AMPDU_RX_FACTOR_INVALID 0xff /* invalid rx factor; ignore */ --#define AMPDU_MPDU_AUTO (-1) /* Auto number of mpdu in ampdu */ -- -- --#define BANDWIDTH_20MHZ (20) /* 802.11n, 802.11ac 20Mhz Bandwidth */ --#define BANDWIDTH_40MHZ (40) /* 802.11n, 802.11ac 40Mhz Bandwidth */ --#define BANDWIDTH_80MHZ (80) /* 802.11ac 80Mhz Bandwidth */ -- --#define WHD_WIFI_CONFIG_AP_MAX_ASSOC 5 -- --#define CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(buff, \ -- sema) if (buff == \ -- NULL){ WPRINT_WHD_ERROR( ("Buffer alloc failed in %s at %d \n", \ -- __func__, __LINE__) ); \ -- whd_assert("Buffer alloc failed\n", 0 == 1); \ -- (void)cy_rtos_deinit_semaphore(sema); \ -- return WHD_BUFFER_ALLOC_FAIL; } -- --#define CHECK_RETURN_WITH_SEMAPHORE(expr, sema) { whd_result_t check_res = (expr); if (check_res != WHD_SUCCESS) \ -- { WPRINT_WHD_ERROR( ("Command failed in %s at %d \n", __func__, \ -- __LINE__) ); \ -- whd_assert("Command failed\n", 0 == 1); \ -- (void)cy_rtos_deinit_semaphore(sema); \ -- return check_res; } } -- --/****************************************************** --* Structures --******************************************************/ --typedef struct whd_ap_int_info --{ -- whd_bool_t ap_is_up; -- whd_bool_t is_waiting_event; -- cy_semaphore_t whd_wifi_sleep_flag; -- --} whd_ap_int_info_t; -- --/****************************************************** --* Function prototypes --******************************************************/ --extern whd_result_t whd_wifi_set_block_ack_window_size_common(whd_interface_t interface, uint16_t ap_win_size, -- uint16_t sta_win_size); --extern whd_result_t whd_wifi_set_ampdu_parameters_common(whd_interface_t interface, uint8_t ba_window_size, -- int8_t ampdu_mpdu, uint8_t rx_factor); --extern void whd_wifi_set_ap_is_up(whd_driver_t whd_driver, whd_bool_t new_state); --extern whd_bool_t whd_wifi_get_ap_is_up(whd_driver_t whd_driver); --void whd_ap_info_init(whd_driver_t whd_driver); --whd_result_t whd_wifi_set_block_ack_window_size(whd_interface_t ifp); -- -- --/** Set the AMPDU parameters for both Soft AP and STA -- * -- * Sets various AMPDU parameters for Soft AP and STA to ensure that the number of buffers dedicated to AMPDUs does -- * not exceed the resources of the chip. Both Soft AP and STA interfaces must be down. -- * -- * @return WHD_SUCCESS : if the AMPDU parameters were successfully set -- * WHD_ERROR : if the AMPDU parameters were not successfully set -- */ --extern whd_result_t whd_wifi_set_ampdu_parameters(whd_interface_t ifp); -- --#ifdef __cplusplus --} /*extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_AP_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_buffer_api.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_buffer_api.h -deleted file mode 100644 -index 60eecaa927..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_buffer_api.h -+++ /dev/null -@@ -1,151 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides prototypes / declarations for common APSTA functionality -- */ --#ifndef _WHD_INTERNAL_BUFFER_API_H_ --#define _WHD_INTERNAL_BUFFER_API_H_ -- --#include "whd.h" --#include "whd_int.h" -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Macros --******************************************************/ -- --/****************************************************** --* Structures --******************************************************/ -- --/****************************************************** --* Function prototypes --******************************************************/ --/** Allocates a packet buffer -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * Attempts to allocate a packet buffer of the size requested. It can do this -- * by allocating a pre-existing packet from a pool, using a static buffer, -- * or by dynamically allocating memory. The method of allocation does not -- * concern WHD, however it must match the way the network stack expects packet -- * buffers to be allocated. -- * -- * @param buffer : A pointer which receives the allocated packet buffer handle -- * @param direction : Indicates transmit/receive direction that the packet buffer is -- * used for. This may be needed if tx/rx pools are separate. -- * @param size : The number of bytes to allocate. -- * @param wait : Whether to wait for a packet buffer to be available -- * -- * @return : WHD_SUCCESS or error code -- * -- */ --whd_result_t whd_host_buffer_get(whd_driver_t whd_driver, whd_buffer_t *buffer, whd_buffer_dir_t direction, -- uint16_t size, uint32_t wait); -- --/** Releases a packet buffer -- * -- * Implemented in the port layer interface, which will be specific to the -- * buffering scheme in use. -- * This function is used by WHD to indicate that it no longer requires -- * a packet buffer. The buffer can then be released back into a pool for -- * reuse, or the dynamically allocated memory can be freed, according to -- * how the packet was allocated. -- * Returns void since WHD cannot do anything about failures -- * -- * @param buffer : The handle of the packet buffer to be released -- * @param direction : Indicates transmit/receive direction that the packet buffer has -- * been used for. This might be needed if tx/rx pools are separate. -- * -- */ --whd_result_t whd_buffer_release(whd_driver_t whd_driver, whd_buffer_t buffer, whd_buffer_dir_t direction); -- --/** Retrieves the current pointer of a packet buffer -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * Since packet buffers usually need to be created with space at the -- * front for additional headers, this function allows WHD to get -- * the current 'front' location pointer. -- * -- * @param buffer : The handle of the packet buffer whose pointer is to be retrieved -- * -- * @return : The packet buffer's current pointer. -- */ --uint8_t *whd_buffer_get_current_piece_data_pointer(whd_driver_t whd_driver, whd_buffer_t buffer); -- --/** Retrieves the size of a packet buffer -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * Since packet buffers usually need to be created with space at the -- * front for additional headers, the memory block used to contain a packet buffer -- * will often be larger than the current size of the packet buffer data. -- * This function allows WHD to retrieve the current size of a packet buffer's data. -- * -- * @param buffer : The handle of the packet buffer whose size is to be retrieved -- * -- * @return : The size of the packet buffer. -- */ --uint16_t whd_buffer_get_current_piece_size(whd_driver_t whd_driver, whd_buffer_t buffer); -- --/** Sets the current size of a WHD packet -- * -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * This function sets the current length of a WHD packet buffer -- * -- * @param buffer : The packet to be modified -- * @param size : The new size of the packet buffer -- * -- * @return : WHD_SUCCESS or error code -- */ --whd_result_t whd_buffer_set_size(whd_driver_t whd_driver, whd_buffer_t buffer, uint16_t size); -- --/** Moves the current pointer of a packet buffer -- * -- * Implemented in the port layer interface which is specific to the buffering scheme in use. -- * -- * Since packet buffers usually need to be created with space at the front for additional headers, -- * this function allows WHD to move the current 'front' location pointer so that it has space to -- * add headers to transmit packets, and so that the network stack does not see the internal WHD -- * headers on received packets. -- * -- * @param buffer : A pointer to the handle of the current packet buffer for which the -- * current pointer will be moved. On return this may contain a pointer -- * to a newly allocated packet buffer which has been daisy chained to -- * the front of the given one. This would be the case if the given packet -- * buffer didn't have enough space at the front. -- * @param add_remove_amount : This is the number of bytes to move the current pointer of the packet -- * buffer - a negative value increases the space for headers at the front -- * of the packet, a positive value decreases the space. -- * -- * @return : WHD_SUCCESS or error code -- */ --whd_result_t whd_buffer_add_remove_at_front(whd_driver_t whd_driver, whd_buffer_t *buffer, int32_t add_remove_amount); --#ifdef __cplusplus --} /*extern "C" */ --#endif -- --#endif /* ifndef _WHD_INTERNAL_BUFFER_API_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_cdc_bdc.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_cdc_bdc.h -deleted file mode 100644 -index 8026b31522..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_cdc_bdc.h -+++ /dev/null -@@ -1,158 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#ifndef INCLUDED_WHD_CDC_BDC_H --#define INCLUDED_WHD_CDC_BDC_H -- --#include "whd.h" --#include "cyabs_rtos.h" --#include "whd_events_int.h" --#include "whd_types_int.h" -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Constants --******************************************************/ -- --/* CDC flag definition taken from bcmcdc.h */ --#define CDCF_IOC_SET (0x02) /** 0=get, 1=set cmd */ --#define WHD_EVENT_HANDLER_LIST_SIZE (5) /** Maximum number of simultaneously registered event handlers */ --#define WHD_SDALIGN 32 -- --/* CDC flag definitions taken from bcmcdc.h */ --#define CDCF_IOC_ERROR (0x01) /** 0=success, 1=ioctl cmd failed */ --#define CDCF_IOC_IF_MASK (0xF000) /** I/F index */ --#define CDCF_IOC_IF_SHIFT (12) /** # of bits of shift for I/F Mask */ --#define CDCF_IOC_ID_MASK (0xFFFF0000) /** used to uniquely id an ioctl req/resp pairing */ --#define CDCF_IOC_ID_SHIFT (16) /** # of bits of shift for ID Mask */ -- --#define DATA_AFTER_HEADER(x) ( (void *)(&x[1]) ) -- --#define BDC_HEADER_LEN (4) -- --/****************************************************** --* Enumerations --******************************************************/ -- --typedef enum sdpcm_command_type_enum --{ -- CDC_GET = 0x00, -- CDC_SET = CDCF_IOC_SET --} cdc_command_type_t; -- --/****************************************************** --* Structures --******************************************************/ --#pragma pack(1) --typedef struct --{ -- uint32_t cmd; /* ioctl command value */ -- uint32_t len; /* lower 16: output buflen; upper 16: input buflen (excludes header) */ -- uint32_t flags; /* flag defns given in bcmcdc.h */ -- uint32_t status; /* status code returned from the device */ --} cdc_header_t; -- --typedef struct --{ -- uint8_t flags; /* Flags */ -- uint8_t priority; /* 802.1d Priority (low 3 bits) */ -- uint8_t flags2; -- uint8_t data_offset; /* Offset from end of BDC header to packet data, in 4-uint8_t words. -- * Leaves room for optional headers.*/ --} bdc_header_t; -- --typedef struct --{ -- whd_mac_t destination_address; -- whd_mac_t source_address; -- uint16_t ethertype; --} ethernet_header_t; -- --#pragma pack() -- --/** Event list element structure -- * -- * events : A pointer to a whd_event_num_t array that is terminated with a WLC_E_NONE event -- * handler: A pointer to the whd_event_handler_t function that will receive the event -- * handler_user_data : User provided data that will be passed to the handler when a matching event occurs -- */ --typedef struct --{ -- whd_bool_t event_set; -- whd_event_num_t events[WHD_MAX_EVENT_SUBSCRIPTION]; -- whd_event_handler_t handler; -- void *handler_user_data; -- uint8_t ifidx; --} event_list_elem_t; -- --/** @endcond */ -- --typedef struct whd_cdc_info --{ -- /* Event list variables */ -- event_list_elem_t whd_event_list[WHD_EVENT_HANDLER_LIST_SIZE]; -- cy_semaphore_t event_list_mutex; -- -- /* IOCTL variables*/ -- uint16_t requested_ioctl_id; -- cy_semaphore_t ioctl_mutex; -- whd_buffer_t ioctl_response; -- cy_semaphore_t ioctl_sleep; -- --} whd_cdc_bdc_info_t; -- --/****************************************************** --* Function Declarations --******************************************************/ -- --whd_result_t whd_cdc_bdc_info_init(whd_driver_t whd_driver); --void whd_cdc_bdc_info_deinit(whd_driver_t whd_driver); -- --whd_result_t whd_cdc_send_iovar(whd_interface_t ifp, cdc_command_type_t type, -- whd_buffer_t send_buffer_hnd, -- whd_buffer_t *response_buffer_hnd); -- --whd_result_t whd_cdc_send_ioctl(whd_interface_t ifp, cdc_command_type_t type, uint32_t command, -- whd_buffer_t send_buffer_hnd, -- whd_buffer_t *response_buffer_hnd); -- --void *whd_cdc_get_iovar_buffer(whd_driver_t whd_driver, -- whd_buffer_t *buffer, -- uint16_t data_length, -- const char *name); --void whd_network_send_ethernet_data(whd_interface_t ifp, whd_buffer_t buffer); -- --void *whd_cdc_get_ioctl_buffer(whd_driver_t whd_driver, -- whd_buffer_t *buffer, -- uint16_t data_length); -- --void whd_process_cdc(whd_driver_t whd_driver, whd_buffer_t buffer); -- --void whd_process_bdc(whd_driver_t whd_driver, whd_buffer_t buffer); -- --void whd_process_bdc_event(whd_driver_t whd_driver, whd_buffer_t buffer, uint16_t size); -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_CDC_BDC_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_chip.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_chip.h -deleted file mode 100644 -index 6958775460..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_chip.h -+++ /dev/null -@@ -1,393 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#ifndef INCLUDED_WHD_CHIP_H --#define INCLUDED_WHD_CHIP_H -- --#include "cyabs_rtos.h" /* For cy_semaphore_t */ -- --#include "whd_endian.h" --#include "whd.h" --#include "whd_wifi_api.h" -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Constants --******************************************************/ --#define WHD_WLAN_WAKE_TIMEOUT (10000) --#define WHD_SHARED_MEMORY_POLLING_DELAY (10) --#define SICF_CPUHALT (0x0020) -- --/****************************************************** --* Enumerations --******************************************************/ --/** -- * Enumerated list of aggregate codes and edit WHD_COUNTRY_AGGREGATE_CUSTOMER for supporting new aggregate -- * as per customer like XZ/278 -- */ --typedef enum --{ -- WHD_COUNTRY_AGGREGATE_XA_0 = MK_CNTRY('X', 'A', 0), -- WHD_COUNTRY_AGGREGATE_XT_0 = MK_CNTRY('X', 'T', 0), -- WHD_COUNTRY_AGGREGATE_XV_0 = MK_CNTRY('X', 'V', 0), -- WHD_COUNTRY_AGGREGATE_CUSTOMER = MK_CNTRY('X', 'Z', 278), --} whd_aggregate_code_t; -- --typedef enum --{ -- /* Note : If changing this, core_base_address must be changed also */ -- WLAN_ARM_CORE = 0, SOCRAM_CORE = 1, SDIOD_CORE = 2 --} device_core_t; -- --typedef enum --{ -- WLAN_DOWN, WLAN_UP, WLAN_OFF --} wlan_state_t; -- --typedef enum --{ -- WLAN_CORE_FLAG_NONE, WLAN_CORE_FLAG_CPU_HALT, --} wlan_core_flag_t; -- --/** -- * Enumeration of AKM (authentication and key management) suites. Table 8-140 802.11mc D3.0. -- */ --typedef enum --{ -- WHD_AKM_RESERVED = 0, -- WHD_AKM_8021X = 1, /**< WPA2 enterprise */ -- WHD_AKM_PSK = 2, /**< WPA2 PSK */ -- WHD_AKM_FT_8021X = 3, /**< 802.11r Fast Roaming enterprise */ -- WHD_AKM_FT_PSK = 4, /**< 802.11r Fast Roaming PSK */ -- WHD_AKM_8021X_SHA256 = 5, -- WHD_AKM_PSK_SHA256 = 6, -- WHD_AKM_TDLS = 7, /**< Tunneled Direct Link Setup */ -- WHD_AKM_SAE_SHA256 = 8, -- WHD_AKM_FT_SAE_SHA256 = 9, -- WHD_AKM_AP_PEER_KEY_SHA256 = 10, -- WHD_AKM_SUITEB_8021X_HMAC_SHA256 = 11, -- WHD_AKM_SUITEB_8021X_HMAC_SHA384 = 12, -- WHD_AKM_SUITEB_FT_8021X_HMAC_SHA384 = 13, --} whd_akm_suite_t; -- --/** -- * Enumeration of cipher suites. Table 8-138 802.11mc D3.0. -- */ --typedef enum --{ -- WHD_CIPHER_GROUP = 0, /**< Use group cipher suite */ -- WHD_CIPHER_WEP_40 = 1, /**< WEP-40 */ -- WHD_CIPHER_TKIP = 2, /**< TKIP */ -- WHD_CIPHER_RESERVED = 3, /**< Reserved */ -- WHD_CIPHER_CCMP_128 = 4, /**< CCMP-128 - default pairwise and group cipher suite in an RSNA */ -- WHD_CIPHER_WEP_104 = 5, /**< WEP-104 - also known as WEP-128 */ -- WHD_CIPHER_BIP_CMAC_128 = 6, /**< BIP-CMAC-128 - default management frame cipher suite */ -- WHD_CIPHER_GROUP_DISALLOWED = 7, /**< Group address traffic not allowed */ -- WHD_CIPHER_GCMP_128 = 8, /**< GCMP-128 - default for 60 GHz STAs */ -- WHD_CIPHER_GCMP_256 = 9, /**< GCMP-256 - introduced for Suite B */ -- WHD_CIPHER_CCMP_256 = 10, /**< CCMP-256 - introduced for suite B */ -- WHD_CIPHER_BIP_GMAC_128 = 11, /**< BIP-GMAC-128 - introduced for suite B */ -- WHD_CIPHER_BIP_GMAC_256 = 12, /**< BIP-GMAC-256 - introduced for suite B */ -- WHD_CIPHER_BIP_CMAC_256 = 13, /**< BIP-CMAC-256 - introduced for suite B */ --} whd_80211_cipher_t; -- --/****************************************************** --* Structures --******************************************************/ -- --typedef struct whd_chip_info --{ -- uint16_t chip_id; -- whd_bool_t save_restore_enable; -- --} whd_chip_info_t; -- --typedef struct --{ -- wlan_state_t state; -- whd_country_code_t country_code; -- whd_aggregate_code_t aggregate_code; -- uint32_t keep_wlan_awake; --} whd_wlan_status_t; -- --#pragma pack(1) -- --/* 802.11 Information Element structures */ -- --/* Country Information */ --#define COUNTRY_INFO_IE_MINIMUM_LENGTH (6) -- --typedef struct --{ -- uint8_t first_chan_num; -- uint8_t num_chans; -- uint8_t max_tx_pwr_level; --} country_chan_info_t; -- --/* Structures for TLVs with 8-bit type and 8-bit length */ --typedef struct --{ -- uint8_t type; -- uint8_t length; --} whd_tlv8_header_t; -- --typedef struct --{ -- uint8_t type; -- uint8_t length; -- uint8_t data[1]; --} whd_tlv8_data_t; -- --typedef struct --{ -- whd_tlv8_header_t tlv_header; /* id, length */ -- char ccode[2]; /* dot11CountryString MIB octet 1~2, two letter country code */ -- uint8_t env; /* dot11CountryString MIB octet 3, indicate indoor/outdoor environment */ -- country_chan_info_t country_chan_info[1]; /* At least one country channel info triples */ --} country_info_ie_fixed_portion_t; -- --/* Robust Secure Network */ --typedef struct --{ -- whd_tlv8_header_t tlv_header; /* id, length */ -- uint16_t version; -- uint32_t group_key_suite; /* See whd_80211_cipher_t for values */ -- uint16_t pairwise_suite_count; -- uint32_t pairwise_suite_list[1]; --} rsn_ie_fixed_portion_t; -- --#define RSN_IE_MINIMUM_LENGTH (8) -- --typedef struct --{ -- whd_tlv8_header_t tlv_header; /* id, length */ -- uint8_t oui[4]; --} vendor_specific_ie_header_t; -- --#define VENDOR_SPECIFIC_IE_MINIMUM_LENGTH (4) -- --/* WPA IE */ --typedef struct --{ -- vendor_specific_ie_header_t vendor_specific_header; -- uint16_t version; -- uint32_t multicast_suite; -- uint16_t unicast_suite_count; -- uint8_t unicast_suite_list[1][4]; --} wpa_ie_fixed_portion_t; -- --#define WPA_IE_MINIMUM_LENGTH (12) -- --typedef struct --{ -- uint16_t akm_suite_count; -- uint32_t akm_suite_list[1]; --} akm_suite_portion_t; -- --typedef struct --{ -- whd_tlv8_header_t tlv_header; /* id, length */ -- uint16_t ht_capabilities_info; -- uint8_t ampdu_parameters; -- uint8_t rx_mcs[10]; -- uint16_t rxhighest_supported_data_rate; -- uint8_t tx_supported_mcs_set; -- uint8_t tx_mcs_info[3]; -- uint16_t ht_extended_capabilities; -- uint32_t transmit_beam_forming_capabilities; -- uint8_t antenna_selection_capabilities; --} ht_capabilities_ie_t; -- --#define HT_CAPABILITIES_INFO_LDPC_CODING_CAPABILITY (1 << 0) --#define HT_CAPABILITIES_INFO_SUPPORTED_CHANNEL_WIDTH_SET (1 << 1) --#define HT_CAPABILITIES_INFO_SM_POWER_SAVE_OFFSET (1 << 2) --#define HT_CAPABILITIES_INFO_SM_POWER_SAVE_MASK (3 << 2) --#define HT_CAPABILITIES_INFO_HT_GREENFIELD (1 << 4) --#define HT_CAPABILITIES_INFO_SHORT_GI_FOR_20MHZ (1 << 5) --#define HT_CAPABILITIES_INFO_SHORT_GI_FOR_40MHZ (1 << 6) --#define HT_CAPABILITIES_INFO_TX_STBC (1 << 7) --#define HT_CAPABILITIES_INFO_RX_STBC_OFFSET (1 << 8) --#define HT_CAPABILITIES_INFO_RX_STBC_MASK (3 << 8) --#define HT_CAPABILITIES_INFO_HT_DELAYED_BLOCK_ACK (1 << 10) --#define HT_CAPABILITIES_INFO_MAXIMUM_A_MSDU_LENGTH (1 << 11) --#define HT_CAPABILITIES_INFO_DSSS_CCK_MODE_IN_40MHZ (1 << 12) --/* bit 13 reserved */ --#define HT_CAPABILITIES_INFO_40MHZ_INTOLERANT (1 << 14) --#define HT_CAPABILITIES_INFO_L_SIG_TXOP_PROTECTION_SUPPORT (1 << 15) -- --typedef unsigned int uint; --typedef struct --{ -- uint buf; -- uint buf_size; -- uint idx; -- uint out_idx; /* output index */ --} hnd_log_t; -- --#define CBUF_LEN 128 -- --typedef struct --{ -- /* Virtual UART -- * When there is no UART (e.g. Quickturn), the host should write a complete -- * input line directly into cbuf and then write the length into vcons_in. -- * This may also be used when there is a real UART (at risk of conflicting with -- * the real UART). vcons_out is currently unused. -- */ -- volatile uint vcons_in; -- volatile uint vcons_out; -- -- /* Output (logging) buffer -- * Console output is written to a ring buffer log_buf at index log_idx. -- * The host may read the output when it sees log_idx advance. -- * Output will be lost if the output wraps around faster than the host polls. -- */ -- hnd_log_t log; -- -- /* Console input line buffer -- * Characters are read one at a time into cbuf until is received, then -- * the buffer is processed as a command line. Also used for virtual UART. -- */ -- uint cbuf_idx; -- char cbuf[CBUF_LEN]; --} hnd_cons_t; -- --typedef struct wifi_console --{ -- uint count; /* Poll interval msec counter */ -- uint log_addr; /* Log struct address (fixed) */ -- hnd_log_t log; /* Log struct (host copy) */ -- uint bufsize; /* Size of log buffer */ -- char *buf; /* Log buffer (host copy) */ -- uint last; /* Last buffer read index */ --} wifi_console_t; -- --typedef struct --{ -- uint flags; -- uint trap_addr; -- uint assert_exp_addr; -- uint assert_file_addr; -- uint assert_line; -- uint console_addr; -- uint msgtrace_addr; -- uint fwid; --} wlan_shared_t; -- --/* Buffer size to be allocated to read wlan log */ --#define WLAN_LOG_BUF_LEN (4 * 1024) -- --#define WHD_IOCTL_LOG_SIZE 64 --#define WHD_IOVAR_STRING_SIZE 128 --#define WHD_MAX_DATA_SIZE 64 -- --#define WHD_IOCTL_LOG_ADD(x, y, z) whd_ioctl_log_add(x, y, z) --#define WHD_IOCTL_LOG_ADD_EVENT(w, x, y, z) whd_ioctl_log_add_event(w, x, y, z) --#define WHD_IOCTL_PRINT(x) whd_ioctl_print(x) -- --typedef struct --{ -- uint32_t ioct_log; -- uint8_t is_this_event; -- uint8_t data[WHD_MAX_DATA_SIZE]; -- uint32_t data_size; -- uint16_t flag; -- uint32_t reason; --}whd_ioctl_log_t; -- --void whd_ioctl_log_add(whd_driver_t whd_driver, uint32_t cmd, whd_buffer_t buffer); --void whd_ioctl_log_add_event(whd_driver_t whd_driver, uint32_t cmd, uint16_t flag, uint32_t data); -- --whd_result_t whd_ioctl_print(whd_driver_t whd_driver); -- --#pragma pack() -- --typedef struct whd_internal_info --{ -- whd_wlan_status_t whd_wlan_status; -- wifi_console_t *c; -- wifi_console_t console; -- wlan_shared_t sh; -- uint32_t console_addr; -- whd_scan_result_callback_t scan_result_callback; -- whd_scan_result_t *whd_scan_result_ptr; -- /* The semaphore used to wait for completion of a join; -- * whd_wifi_join_halt uses this to release waiting threads (if any) */ -- cy_semaphore_t *active_join_semaphore; -- whd_bool_t active_join_mutex_initted; -- cy_semaphore_t active_join_mutex; -- uint con_lastpos; -- whd_bool_t whd_wifi_p2p_go_is_up; -- uint32_t whd_join_status[3]; -- --} whd_internal_info_t; -- --#pragma pack(1) -- --typedef struct --{ -- char abbrev[3]; -- uint8_t rev; -- uint8_t data[64]; --} whd_country_info_t; -- --#pragma pack() -- --void whd_internal_info_init(whd_driver_t whd_driver); -- --/****************************************************** --* Function Declarations --******************************************************/ -- --extern void whd_wifi_chip_info_init(whd_driver_t whd_driver); --extern whd_result_t whd_wlan_bus_complete_ds_wake(whd_driver_t whd_driver, whd_bool_t wake_from_firmware, -- uint32_t wake_event_indication_addr, uint32_t wake_indication_addr, -- uint32_t sdio_control_addr); --extern whd_result_t whd_wifi_set_custom_country_code(whd_interface_t ifp, const whd_country_info_t *country_code); -- --/* Device core control functions */ --extern whd_result_t whd_disable_device_core(whd_driver_t whd_driver, device_core_t core_id, wlan_core_flag_t core_flag); --extern whd_result_t whd_reset_device_core(whd_driver_t whd_driver, device_core_t core_id, wlan_core_flag_t core_flag); --extern whd_result_t whd_reset_core(whd_driver_t whd_driver, device_core_t core_id, uint32_t bits, uint32_t resetbits); --extern whd_result_t whd_wlan_armcore_run(whd_driver_t whd_driver, device_core_t core_id, wlan_core_flag_t core_flag); --extern whd_result_t whd_device_core_is_up(whd_driver_t whd_driver, device_core_t core_id); -- --/* Chip specific functions */ --extern whd_result_t whd_allow_wlan_bus_to_sleep(whd_driver_t whd_driver); --extern whd_result_t whd_ensure_wlan_bus_is_up(whd_driver_t whd_driver); -- --extern whd_result_t whd_chip_specific_init(whd_driver_t whd_driver); --extern whd_result_t whd_chip_specific_socsram_init(whd_driver_t whd_driver); --extern whd_result_t whd_wifi_read_wlan_log(whd_driver_t whd_driver, char *buffer, uint32_t buffer_size); --extern whd_result_t whd_wifi_print_whd_log(whd_driver_t whd_driver); --extern whd_result_t whd_wifi_read_wlan_log_unsafe(whd_driver_t whd_driver, uint32_t wlan_shared_address, char *buffer, -- uint32_t buffer_size); -- --extern void whd_wifi_peek(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, uint8_t *value); --extern void whd_wifi_poke(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, uint32_t value); --extern uint32_t whd_wifi_get_btc_params(whd_driver_t whd_driver, uint32_t address, whd_interface_t interface); -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_CHIP_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_chip_constants.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_chip_constants.h -deleted file mode 100644 -index b50ce1579d..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_chip_constants.h -+++ /dev/null -@@ -1,84 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#ifndef INCLUDED_CHIP_CONSTANTS_H_ --#define INCLUDED_CHIP_CONSTANTS_H_ -- --#include "whd.h" -- --#ifdef __cplusplus --extern "C" { --#endif -- --typedef enum chip_var --{ -- BUS_CREDIT_DIFF = 1, -- CHIP_RAM_SIZE, -- ATCM_RAM_BASE_ADDRESS, -- SOCRAM_SRMEM_SIZE, -- CHANSPEC_BAND_MASK, -- CHANSPEC_BAND_2G, -- CHANSPEC_BAND_5G, -- CHANSPEC_BAND_SHIFT, -- CHANSPEC_BW_10, -- CHANSPEC_BW_20, -- CHANSPEC_BW_40, -- CHANSPEC_BW_MASK, -- CHANSPEC_BW_SHIFT, -- CHANSPEC_CTL_SB_LOWER, -- CHANSPEC_CTL_SB_UPPER, -- CHANSPEC_CTL_SB_NONE, -- CHANSPEC_CTL_SB_MASK --} chip_var_t; -- --#define VERIFY_RESULT(x) { whd_result_t verify_result = WHD_SUCCESS; verify_result = (x); \ -- if (verify_result != WHD_SUCCESS){ \ -- WPRINT_WHD_ERROR( ("Function %s failed at line %d \n", __func__, __LINE__) ); \ -- return verify_result; } } --#define GET_C_VAR(whd_driver, var) get_whd_var(whd_driver, var) -- --uint32_t get_whd_var(whd_driver_t whd_driver, chip_var_t var); -- --whd_result_t get_chip_max_bus_data_credit_diff(uint16_t, uint32_t *); --whd_result_t get_chip_ram_size(uint16_t, uint32_t *); --whd_result_t get_atcm_ram_base_address(uint16_t, uint32_t *); --whd_result_t get_socsram_srmem_size(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_band_mask(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_band_2G(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_band_5G(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_band_shift(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_bw_10(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_bw_20(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_bw_40(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_bw_mask(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_bw_shift(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_ctl_sb_lower(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_ctl_sb_upper(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_ctl_sb_none(uint16_t, uint32_t *); --whd_result_t get_wl_chanspec_ctl_sb_mask(uint16_t, uint32_t *); -- --uint32_t whd_chip_set_chip_id(whd_driver_t whd_driver, uint16_t id); --uint16_t whd_chip_get_chip_id(whd_driver_t whd_driver); -- --#undef CHIP_FIRMWARE_SUPPORTS_PM_LIMIT_IOVAR -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_CHIP_CONSTANTS_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_debug.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_debug.h -deleted file mode 100644 -index fe955f1c29..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_debug.h -+++ /dev/null -@@ -1,140 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include --#include --#include --#include "whd.h" -- --#ifndef INCLUDED_WHD_DEBUG_H --#define INCLUDED_WHD_DEBUG_H -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Macros --******************************************************/ --#define WPRINT_ENABLE_WHD_ERROR --#define WPRINT_ENABLE_WHD_INFO --#define WPRINT_ENABLE_WHD_DEBUG -- --#define WHD_ENABLE_STATS --#define WHD_LOGGING_BUFFER_ENABLE -- --#if defined (__GNUC__) --#define WHD_TRIGGER_BREAKPOINT( ) do { __asm__ ("bkpt"); } while (0) -- --#elif defined (__IAR_SYSTEMS_ICC__) --#define WHD_TRIGGER_BREAKPOINT( ) do { __asm("bkpt 0"); } while (0) -- --#else --#define WHD_TRIGGER_BREAKPOINT( ) --#endif -- --#ifdef WPRINT_ENABLE_ERROR --#define WPRINT_ERROR(args) do { WPRINT_MACRO(args); } while (0) --#define whd_assert(error_string, assertion) do { if (!(assertion) ){ WHD_TRIGGER_BREAKPOINT(); } } while (0) --#define whd_minor_assert(error_string, \ -- assertion) do { if (!(assertion) ) WPRINT_MACRO( (error_string) ); } while (0) --#else --#define whd_assert(error_string, \ -- assertion) do { if (!(assertion) ){ WPRINT_MACRO( (error_string) ); } } while (0) --#define whd_minor_assert(error_string, assertion) do { (void)(assertion); } while (0) --#endif -- --/****************************************************** --* Print declarations --******************************************************/ --/* IF MFG TEST is enabled then disable all LOGGING VIA UART as -- + * this interrupts communication between WL TOOL and MFG Test APP -- + * via STDIO UART causing Wrong Message Exchange and failure. -- + */ --#ifdef WLAN_MFG_FIRMWARE --#define WPRINT_MACRO(args) --#else --#if defined(WHD_LOGGING_BUFFER_ENABLE) --#define WPRINT_MACRO(args) do { whd_buffer_printf args; } while (0 == 1) --#else --#define WPRINT_MACRO(args) do { printf args;} while (0 == 1) --#endif --#endif -- -- --/* WICED printing macros for Wiced Wi-Fi Driver*/ --#ifdef WPRINT_ENABLE_WHD_INFO --#define WPRINT_WHD_INFO(args) WPRINT_MACRO(args) --#else --#define WPRINT_WHD_INFO(args) --#endif -- --#ifdef WPRINT_ENABLE_WHD_DEBUG --#define WPRINT_WHD_DEBUG(args) WPRINT_MACRO(args) --#else --#define WPRINT_WHD_DEBUG(args) --#endif -- --#ifdef WPRINT_ENABLE_WHD_ERROR --#define WPRINT_WHD_ERROR(args) WPRINT_MACRO(args); --#else --#define WPRINT_WHD_ERROR(args) --#endif -- --#ifdef WPRINT_ENABLE_WHD_DATA_LOG --#define WPRINT_WHD_DATA_LOG(args) WPRINT_MACRO(args) --#else --#define WPRINT_WHD_DATA_LOG(args) --#endif -- --#define WHD_STATS_INCREMENT_VARIABLE(whd_driver, var) \ -- do { whd_driver->whd_stats.var++; } while (0) -- --#define WHD_STATS_CONDITIONAL_INCREMENT_VARIABLE(whd_driver, condition, var) \ -- do { if (condition){ whd_driver->whd_stats.var++; }} while (0) -- --#if (defined(__GNUC__) && (__GNUC__ >= 6) ) --#define __FUNCTION__ __func__ --#endif -- -- --void whd_init_stats(whd_driver_t whd_driver); --void whd_print_logbuffer(void); -- -- --#ifdef WHD_LOGGING_BUFFER_ENABLE --#define LOGGING_BUFFER_SIZE (4 * 1024) --int whd_buffer_printf(const char *format, ...); -- --typedef struct --{ -- uint32_t buffer_write; -- uint32_t buffer_read; -- char buffer[LOGGING_BUFFER_SIZE + 1]; -- whd_bool_t roll_over; -- whd_bool_t over_write; --} whd_logging_t; --#else --#define whd_print_logbuffer() --#endif /* WHD_LOGGING_BUFFER_ENABLE */ -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* ifndef INCLUDED_WHD_DEBUG_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_endian.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_endian.h -deleted file mode 100644 -index c68fc0e69a..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_endian.h -+++ /dev/null -@@ -1,69 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ --/* -- * Byte order utilities -- * -- * This file by default provides proper behavior on little-endian architectures. -- * On big-endian architectures, IL_BIGENDIAN should be defined. -- */ -- --#ifndef INCLUDED_WHD_ENDIAN_H --#define INCLUDED_WHD_ENDIAN_H -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/* Reverse the bytes in a 16-bit value */ --#define SWAP16(val) \ -- ( (uint16_t)( ( ( (uint16_t)(val) & (uint16_t)0x00ffU ) << 8 ) | \ -- ( ( (uint16_t)(val) & (uint16_t)0xff00U ) >> 8 ) ) ) -- --/* Reverse the bytes in a 32-bit value */ --#define SWAP32(val) \ -- ( (uint32_t)( ( ( (uint32_t)(val) & (uint32_t)0x000000ffU ) << 24 ) | \ -- ( ( (uint32_t)(val) & (uint32_t)0x0000ff00U ) << 8 ) | \ -- ( ( (uint32_t)(val) & (uint32_t)0x00ff0000U ) >> 8 ) | \ -- ( ( (uint32_t)(val) & (uint32_t)0xff000000U ) >> 24 ) ) ) -- --#ifdef IL_BIGENDIAN --#define htod32(i) SWAP32(i) --#define htod16(i) SWAP16(i) --#define dtoh32(i) SWAP32(i) --#define dtoh16(i) SWAP16(i) --#define hton16(i) (i) --#define hton32(i) (i) --#define ntoh16(i) (i) --#define ntoh32(i) (i) --#else /* IL_BIGENDIAN */ --#define htod32(i) (i) --#define htod16(i) (i) --#define dtoh32(i) (i) --#define dtoh16(i) (i) --#define hton16(i) SWAP16(i) --#define hton32(i) SWAP32(i) --#define ntoh16(i) SWAP16(i) --#define ntoh32(i) SWAP32(i) --#endif /* IL_BIGENDIAN */ -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* INCLUDED_WHD_ENDIAN_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_events_int.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_events_int.h -deleted file mode 100644 -index a61e8d0c92..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_events_int.h -+++ /dev/null -@@ -1,464 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Header for Event detection -- * -- * Provides constants and prototypes for functions that allow both -- * whd and user applications to receive event callbacks. -- */ -- --#include "whd.h" -- --#ifndef INCLUDED_WHD_EVENTS_INT_H --#define INCLUDED_WHD_EVENTS_INT_H -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* @cond Typedefs --******************************************************/ -- --/** -- * Enumerated list of event types -- */ --typedef enum --{ -- WLC_E_NONE = 0x7FFFFFFE, -- WLC_E_SET_SSID = 0 /** indicates status of set SSID */, -- WLC_E_JOIN = 1, /** differentiates join IBSS from found (WLC_E_START) IBSS */ -- WLC_E_START = 2, /** STA founded an IBSS or AP started a BSS */ -- WLC_E_AUTH = 3, /** 802.11 AUTH request */ -- WLC_E_AUTH_IND = 4, /** 802.11 AUTH indication */ -- WLC_E_DEAUTH = 5, /** 802.11 DEAUTH request */ -- WLC_E_DEAUTH_IND = 6, /** 802.11 DEAUTH indication */ -- WLC_E_ASSOC = 7, /** 802.11 ASSOC request */ -- WLC_E_ASSOC_IND = 8, /** 802.11 ASSOC indication */ -- WLC_E_REASSOC = 9, /** 802.11 REASSOC request */ -- WLC_E_REASSOC_IND = 10, /** 802.11 REASSOC indication */ -- WLC_E_DISASSOC = 11, /** 802.11 DISASSOC request */ -- WLC_E_DISASSOC_IND = 12, /** 802.11 DISASSOC indication */ -- WLC_E_QUIET_START = 13, /** 802.11h Quiet period started */ -- WLC_E_QUIET_END = 14, /** 802.11h Quiet period ended */ -- WLC_E_BEACON_RX = 15, /** BEACONS received/lost indication */ -- WLC_E_LINK = 16, /** generic link indication */ -- WLC_E_MIC_ERROR = 17, /** TKIP MIC error occurred */ -- WLC_E_NDIS_LINK = 18, /** NDIS style link indication */ -- WLC_E_ROAM = 19, /** roam attempt occurred: indicate status & reason */ -- WLC_E_TXFAIL = 20, /** change in dot11FailedCount (txfail) */ -- WLC_E_PMKID_CACHE = 21, /** WPA2 pmkid cache indication */ -- WLC_E_RETROGRADE_TSF = 22, /** current AP's TSF value went backward */ -- WLC_E_PRUNE = 23, /** AP was pruned from join list for reason */ -- WLC_E_AUTOAUTH = 24, /** report AutoAuth table entry match for join attempt */ -- WLC_E_EAPOL_MSG = 25, /** Event encapsulating an EAPOL message */ -- WLC_E_SCAN_COMPLETE = 26, /** Scan results are ready or scan was aborted */ -- WLC_E_ADDTS_IND = 27, /** indicate to host addts fail/success */ -- WLC_E_DELTS_IND = 28, /** indicate to host delts fail/success */ -- WLC_E_BCNSENT_IND = 29, /** indicate to host of beacon transmit */ -- WLC_E_BCNRX_MSG = 30, /** Send the received beacon up to the host */ -- WLC_E_BCNLOST_MSG = 31, /** indicate to host loss of beacon */ -- WLC_E_ROAM_PREP = 32, /** before attempting to roam */ -- WLC_E_PFN_NET_FOUND = 33, /** PFN network found event */ -- WLC_E_PFN_NET_LOST = 34, /** PFN network lost event */ -- WLC_E_RESET_COMPLETE = 35, WLC_E_JOIN_START = 36, WLC_E_ROAM_START = 37, WLC_E_ASSOC_START = 38, -- WLC_E_IBSS_ASSOC = 39, WLC_E_RADIO = 40, WLC_E_PSM_WATCHDOG = 41, /** PSM microcode watchdog fired */ -- WLC_E_CCX_ASSOC_START = 42, /** CCX association start */ -- WLC_E_CCX_ASSOC_ABORT = 43, /** CCX association abort */ -- WLC_E_PROBREQ_MSG = 44, /** probe request received */ -- WLC_E_SCAN_CONFIRM_IND = 45, WLC_E_PSK_SUP = 46, /** WPA Handshake */ -- WLC_E_COUNTRY_CODE_CHANGED = 47, WLC_E_EXCEEDED_MEDIUM_TIME = 48, /** WMMAC excedded medium time */ -- WLC_E_ICV_ERROR = 49, /** WEP ICV error occurred */ -- WLC_E_UNICAST_DECODE_ERROR = 50, /** Unsupported unicast encrypted frame */ -- WLC_E_MULTICAST_DECODE_ERROR = 51, /** Unsupported multicast encrypted frame */ -- WLC_E_TRACE = 52, WLC_E_BTA_HCI_EVENT = 53, /** BT-AMP HCI event */ -- WLC_E_IF = 54, /** I/F change (for wlan host notification) */ -- WLC_E_P2P_DISC_LISTEN_COMPLETE = 55, /** P2P Discovery listen state expires */ -- WLC_E_RSSI = 56, /** indicate RSSI change based on configured levels */ -- WLC_E_PFN_BEST_BATCHING = 57, /** PFN best network batching event */ -- WLC_E_EXTLOG_MSG = 58, WLC_E_ACTION_FRAME = 59, /** Action frame reception */ -- WLC_E_ACTION_FRAME_COMPLETE = 60, /** Action frame Tx complete */ -- WLC_E_PRE_ASSOC_IND = 61, /** assoc request received */ -- WLC_E_PRE_REASSOC_IND = 62, /** re-assoc request received */ -- WLC_E_CHANNEL_ADOPTED = 63, /** channel adopted (xxx: obsoleted) */ -- WLC_E_AP_STARTED = 64, /** AP started */ -- WLC_E_DFS_AP_STOP = 65, /** AP stopped due to DFS */ -- WLC_E_DFS_AP_RESUME = 66, /** AP resumed due to DFS */ -- WLC_E_WAI_STA_EVENT = 67, /** WAI stations event */ -- WLC_E_WAI_MSG = 68, /** event encapsulating an WAI message */ -- WLC_E_ESCAN_RESULT = 69, /** escan result event */ -- WLC_E_ACTION_FRAME_OFF_CHAN_COMPLETE = 70, /** action frame off channel complete *//* NOTE - This used to be WLC_E_WAKE_EVENT */ -- WLC_E_PROBRESP_MSG = 71, /** probe response received */ -- WLC_E_P2P_PROBREQ_MSG = 72, /** P2P Probe request received */ -- WLC_E_DCS_REQUEST = 73, WLC_E_FIFO_CREDIT_MAP = 74, /** credits for D11 FIFOs. [AC0,AC1,AC2,AC3,BC_MC,ATIM] */ -- WLC_E_ACTION_FRAME_RX = 75, /** Received action frame event WITH wl_event_rx_frame_data_t header */ -- WLC_E_WAKE_EVENT = 76, /** Wake Event timer fired, used for wake WLAN test mode */ -- WLC_E_RM_COMPLETE = 77, /** Radio measurement complete */ -- WLC_E_HTSFSYNC = 78, /** Synchronize TSF with the host */ -- WLC_E_OVERLAY_REQ = 79, /** request an overlay IOCTL/iovar from the host */ -- WLC_E_CSA_COMPLETE_IND = 80, WLC_E_EXCESS_PM_WAKE_EVENT = 81, /** excess PM Wake Event to inform host */ -- WLC_E_PFN_SCAN_NONE = 82, /** no PFN networks around */ -- WLC_E_PFN_SCAN_ALLGONE = 83, /** last found PFN network gets lost */ -- WLC_E_GTK_PLUMBED = 84, WLC_E_ASSOC_IND_NDIS = 85, /** 802.11 ASSOC indication for NDIS only */ -- WLC_E_REASSOC_IND_NDIS = 86, /** 802.11 REASSOC indication for NDIS only */ -- WLC_E_ASSOC_REQ_IE = 87, WLC_E_ASSOC_RESP_IE = 88, WLC_E_ASSOC_RECREATED = 89, /** association recreated on resume */ -- WLC_E_ACTION_FRAME_RX_NDIS = 90, /** rx action frame event for NDIS only */ -- WLC_E_AUTH_REQ = 91, /** authentication request received */ -- WLC_E_TDLS_PEER_EVENT = 92, /** discovered peer, connected/disconnected peer */ -- WLC_E_MESH_DHCP_SUCCESS = 92, /** DHCP handshake successful for a mesh interface */ -- WLC_E_SPEEDY_RECREATE_FAIL = 93, /** fast assoc recreation failed */ -- WLC_E_NATIVE = 94, /** port-specific event and payload (e.g. NDIS) */ -- WLC_E_PKTDELAY_IND = 95, /** event for tx pkt delay suddently jump */ -- WLC_E_AWDL_AW = 96, /** AWDL AW period starts */ -- WLC_E_AWDL_ROLE = 97, /** AWDL Master/Slave/NE master role event */ -- WLC_E_AWDL_EVENT = 98, /** Generic AWDL event */ -- WLC_E_NIC_AF_TXS = 99, /** NIC AF txstatus */ -- WLC_E_NAN = 100, /** NAN event */ -- WLC_E_BEACON_FRAME_RX = 101, WLC_E_SERVICE_FOUND = 102, /** desired service found */ -- WLC_E_GAS_FRAGMENT_RX = 103, /** GAS fragment received */ -- WLC_E_GAS_COMPLETE = 104, /** GAS sessions all complete */ -- WLC_E_P2PO_ADD_DEVICE = 105, /** New device found by p2p offload */ -- WLC_E_P2PO_DEL_DEVICE = 106, /** device has been removed by p2p offload */ -- WLC_E_WNM_STA_SLEEP = 107, /** WNM event to notify STA enter sleep mode */ -- WLC_E_TXFAIL_THRESH = 108, /** Indication of MAC tx failures (exhaustion of 802.11 retries) exceeding threshold(s) */ -- WLC_E_PROXD = 109, /** Proximity Detection event */ -- WLC_E_IBSS_COALESCE = 110, /** IBSS Coalescing */ -- WLC_E_MESH_PAIRED = 110, /** Mesh peer found and paired */ -- WLC_E_AWDL_RX_PRB_RESP = 111, /** AWDL RX Probe response */ -- WLC_E_AWDL_RX_ACT_FRAME = 112, /** AWDL RX Action Frames */ -- WLC_E_AWDL_WOWL_NULLPKT = 113, /** AWDL Wowl nulls */ -- WLC_E_AWDL_PHYCAL_STATUS = 114, /** AWDL Phycal status */ -- WLC_E_AWDL_OOB_AF_STATUS = 115, /** AWDL OOB AF status */ -- WLC_E_AWDL_SCAN_STATUS = 116, /** Interleaved Scan status */ -- WLC_E_AWDL_AW_START = 117, /** AWDL AW Start */ -- WLC_E_AWDL_AW_END = 118, /** AWDL AW End */ -- WLC_E_AWDL_AW_EXT = 119, /** AWDL AW Extensions */ -- WLC_E_AWDL_PEER_CACHE_CONTROL = 120, WLC_E_CSA_START_IND = 121, WLC_E_CSA_DONE_IND = 122, -- WLC_E_CSA_FAILURE_IND = 123, WLC_E_CCA_CHAN_QUAL = 124, /** CCA based channel quality report */ -- WLC_E_BSSID = 125, /** to report change in BSSID while roaming */ -- WLC_E_TX_STAT_ERROR = 126, /** tx error indication */ -- WLC_E_BCMC_CREDIT_SUPPORT = 127, /** credit check for BCMC supported */ -- WLC_E_PSTA_PRIMARY_INTF_IND = 128, /** psta primary interface indication */ -- WLC_E_BT_WIFI_HANDOVER_REQ = 130, /* Handover Request Initiated */ -- WLC_E_SPW_TXINHIBIT = 131, /* Southpaw TxInhibit notification */ -- WLC_E_FBT_AUTH_REQ_IND = 132, /* FBT Authentication Request Indication */ -- WLC_E_RSSI_LQM = 133, /* Enhancement addition for WLC_E_RSSI */ -- WLC_E_PFN_GSCAN_FULL_RESULT = 134, /* Full probe/beacon (IEs etc) results */ -- WLC_E_PFN_SWC = 135, /* Significant change in rssi of bssids being tracked */ -- WLC_E_AUTHORIZED = 136, /* a STA been authroized for traffic */ -- WLC_E_PROBREQ_MSG_RX = 137, /* probe req with wl_event_rx_frame_data_t header */ -- WLC_E_PFN_SCAN_COMPLETE = 138, /* PFN completed scan of network list */ -- WLC_E_RMC_EVENT = 139, /* RMC Event */ -- WLC_E_DPSTA_INTF_IND = 140, /* DPSTA interface indication */ -- WLC_E_RRM = 141, /* RRM Event */ -- WLC_E_ULP = 146, /* ULP entry event */ -- WLC_E_TKO = 151, /* TCP Keep Alive Offload Event */ -- WLC_E_LAST = 152, /* highest val + 1 for range checking */ --} whd_event_num_t; -- --#define WLC_SUP_STATUS_OFFSET (256) --#define WLC_DOT11_SC_STATUS_OFFSET (512) --/** -- * Enumerated list of event status codes -- * @note : WLC_SUP values overlap other values, so it is necessary -- * to check the event type -- */ --typedef enum --{ -- WLC_E_STATUS_SUCCESS = 0, /** operation was successful */ -- WLC_E_STATUS_FAIL = 1, /** operation failed */ -- WLC_E_STATUS_TIMEOUT = 2, /** operation timed out */ -- WLC_E_STATUS_NO_NETWORKS = 3, /** failed due to no matching network found */ -- WLC_E_STATUS_ABORT = 4, /** operation was aborted */ -- WLC_E_STATUS_NO_ACK = 5, /** protocol failure: packet not ack'd */ -- WLC_E_STATUS_UNSOLICITED = 6, /** AUTH or ASSOC packet was unsolicited */ -- WLC_E_STATUS_ATTEMPT = 7, /** attempt to assoc to an auto auth configuration */ -- WLC_E_STATUS_PARTIAL = 8, /** scan results are incomplete */ -- WLC_E_STATUS_NEWSCAN = 9, /** scan aborted by another scan */ -- WLC_E_STATUS_NEWASSOC = 10, /** scan aborted due to assoc in progress */ -- WLC_E_STATUS_11HQUIET = 11, /** 802.11h quiet period started */ -- WLC_E_STATUS_SUPPRESS = 12, /** user disabled scanning (WLC_SET_SCANSUPPRESS) */ -- WLC_E_STATUS_NOCHANS = 13, /** no allowable channels to scan */ -- WLC_E_STATUS_CCXFASTRM = 14, /** scan aborted due to CCX fast roam */ -- WLC_E_STATUS_CS_ABORT = 15, /** abort channel select */ -- -- /* for WLC_SUP messages */ -- WLC_SUP_DISCONNECTED = 0 + WLC_SUP_STATUS_OFFSET, WLC_SUP_CONNECTING = 1 + WLC_SUP_STATUS_OFFSET, -- WLC_SUP_IDREQUIRED = 2 + WLC_SUP_STATUS_OFFSET, WLC_SUP_AUTHENTICATING = 3 + WLC_SUP_STATUS_OFFSET, -- WLC_SUP_AUTHENTICATED = 4 + WLC_SUP_STATUS_OFFSET, WLC_SUP_KEYXCHANGE = 5 + WLC_SUP_STATUS_OFFSET, -- WLC_SUP_KEYED = 6 + WLC_SUP_STATUS_OFFSET, WLC_SUP_TIMEOUT = 7 + WLC_SUP_STATUS_OFFSET, -- WLC_SUP_LAST_BASIC_STATE = 8 + WLC_SUP_STATUS_OFFSET, -- /* Extended supplicant authentication states */ -- WLC_SUP_KEYXCHANGE_WAIT_M1 = WLC_SUP_AUTHENTICATED, /** Waiting to receive handshake msg M1 */ -- WLC_SUP_KEYXCHANGE_PREP_M2 = WLC_SUP_KEYXCHANGE, /** Preparing to send handshake msg M2 */ -- WLC_SUP_KEYXCHANGE_WAIT_M3 = WLC_SUP_LAST_BASIC_STATE, /** Waiting to receive handshake msg M3 */ -- WLC_SUP_KEYXCHANGE_PREP_M4 = 9 + WLC_SUP_STATUS_OFFSET, /** Preparing to send handshake msg M4 */ -- WLC_SUP_KEYXCHANGE_WAIT_G1 = 10 + WLC_SUP_STATUS_OFFSET, /** Waiting to receive handshake msg G1 */ -- WLC_SUP_KEYXCHANGE_PREP_G2 = 11 + WLC_SUP_STATUS_OFFSET, /** Preparing to send handshake msg G2 */ -- -- WLC_DOT11_SC_SUCCESS = 0 + WLC_DOT11_SC_STATUS_OFFSET, /* Successful */ -- WLC_DOT11_SC_FAILURE = 1 + WLC_DOT11_SC_STATUS_OFFSET, /* Unspecified failure */ -- WLC_DOT11_SC_CAP_MISMATCH = 10 + WLC_DOT11_SC_STATUS_OFFSET, /* Cannot support all requested capabilities in the Capability Information field */ -- WLC_DOT11_SC_REASSOC_FAIL = 11 + WLC_DOT11_SC_STATUS_OFFSET, /* Reassociation denied due to inability to confirm that association exists */ -- WLC_DOT11_SC_ASSOC_FAIL = 12 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to reason outside the scope of this standard */ -- WLC_DOT11_SC_AUTH_MISMATCH = 13 + WLC_DOT11_SC_STATUS_OFFSET, /* Responding station does not support the specified authentication algorithm */ -- WLC_DOT11_SC_AUTH_SEQ = 14 + WLC_DOT11_SC_STATUS_OFFSET, /* Received an Authentication frame with authentication transaction sequence number out of expected sequence */ -- WLC_DOT11_SC_AUTH_CHALLENGE_FAIL = 15 + WLC_DOT11_SC_STATUS_OFFSET, /* Authentication rejected because of challenge failure */ -- WLC_DOT11_SC_AUTH_TIMEOUT = 16 + WLC_DOT11_SC_STATUS_OFFSET, /* Authentication rejected due to timeout waiting for next frame in sequence */ -- WLC_DOT11_SC_ASSOC_BUSY_FAIL = 17 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied because AP is unable to handle additional associated stations */ -- WLC_DOT11_SC_ASSOC_RATE_MISMATCH = 18 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to requesting station not supporting all of the data rates in the BSSBasicRateSet parameter */ -- WLC_DOT11_SC_ASSOC_SHORT_REQUIRED = 19 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to requesting station not supporting the Short Preamble option */ -- WLC_DOT11_SC_ASSOC_PBCC_REQUIRED = 20 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to requesting station not supporting the PBCC Modulation option */ -- WLC_DOT11_SC_ASSOC_AGILITY_REQUIRED = 21 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to requesting station not supporting the Channel Agility option */ -- WLC_DOT11_SC_ASSOC_SPECTRUM_REQUIRED = 22 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied because Spectrum Management capability is required. */ -- WLC_DOT11_SC_ASSOC_BAD_POWER_CAP = 23 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied because the info in the Power Cap element is unacceptable. */ -- WLC_DOT11_SC_ASSOC_BAD_SUP_CHANNELS = 24 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied because the info in the Supported Channel element is unacceptable */ -- WLC_DOT11_SC_ASSOC_SHORTSLOT_REQUIRED = 25 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to requesting station not supporting the Short Slot Time option */ -- WLC_DOT11_SC_ASSOC_ERPBCC_REQUIRED = 26 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to requesting station not supporting the ER-PBCC Modulation option */ -- WLC_DOT11_SC_ASSOC_DSSOFDM_REQUIRED = 27 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to requesting station not supporting the DSS-OFDM option */ -- WLC_DOT11_SC_DECLINED = 37 + WLC_DOT11_SC_STATUS_OFFSET, /* request declined */ -- WLC_DOT11_SC_INVALID_PARAMS = 38 + WLC_DOT11_SC_STATUS_OFFSET, /* One or more params have invalid values */ -- WLC_DOT11_SC_INVALID_AKMP = 43 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to invalid AKMP */ -- WLC_DOT11_SC_INVALID_MDID = 54 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to invalid MDID */ -- WLC_DOT11_SC_INVALID_FTIE = 55 + WLC_DOT11_SC_STATUS_OFFSET, /* Association denied due to invalid FTIE */ -- -- WLC_E_STATUS_FORCE_32_BIT = 0x7FFFFFFE /** Force enum to be stored in 32 bit variable */ --} whd_event_status_t; -- --#define WLC_E_PRUNE_REASON_OFFSET (256) --#define WLC_E_SUP_REASON_OFFSET (512) --#define WLC_E_DOT11_RC_REASON_OFFSET (768) -- --/** -- * Enumerated list of event reason codes -- * @note : Several values overlap other values, so it is necessary -- * to check the event type -- */ --typedef enum --{ -- /* roam reason codes */ -- WLC_E_REASON_INITIAL_ASSOC = 0, /** initial assoc */ -- WLC_E_REASON_LOW_RSSI = 1, /** roamed due to low RSSI */ -- WLC_E_REASON_DEAUTH = 2, /** roamed due to DEAUTH indication */ -- WLC_E_REASON_DISASSOC = 3, /** roamed due to DISASSOC indication */ -- WLC_E_REASON_BCNS_LOST = 4, /** roamed due to lost beacons */ -- WLC_E_REASON_FAST_ROAM_FAILED = 5, /** roamed due to fast roam failure */ -- WLC_E_REASON_DIRECTED_ROAM = 6, /** roamed due to request by AP */ -- WLC_E_REASON_TSPEC_REJECTED = 7, /** roamed due to TSPEC rejection */ -- WLC_E_REASON_BETTER_AP = 8, /** roamed due to finding better AP */ -- -- /* NAN sub-events comes as a reason code with event as WLC_E_NAN */ -- WLC_E_NAN_EVENT_STATUS_CHG = 9, /* generated on any change in nan_mac status */ -- WLC_E_NAN_EVENT_MERGE = 10, /* Merged to a NAN cluster */ -- WLC_E_NAN_EVENT_STOP = 11, /* NAN stopped */ -- WLC_E_NAN_EVENT_P2P = 12, /* NAN P2P EVENT */ -- -- /* XXX: Dont use below four events: They will be cleanup, use WL_NAN_EVENT_POST_DISC */ -- WLC_E_NAN_EVENT_WINDOW_BEGIN_P2P = 13, /* Event for begin of P2P further availability window */ -- WLC_E_NAN_EVENT_WINDOW_BEGIN_MESH = 14, WLC_E_NAN_EVENT_WINDOW_BEGIN_IBSS = 15, -- WLC_E_NAN_EVENT_WINDOW_BEGIN_RANGING = 16, WLC_E_NAN_EVENT_POST_DISC = 17, /* Event for post discovery data */ -- WLC_E_NAN_EVENT_DATA_IF_ADD = 18, /* Event for Data IF add */ -- WLC_E_NAN_EVENT_DATA_PEER_ADD = 19, /* Event for peer add */ -- -- /* nan 2.0 */ -- WLC_E_NAN_EVENT_DATA_IND = 20, /* Data Indication to Host */ -- WLC_E_NAN_EVENT_DATA_CONF = 21, /* Data Response to Host */ -- WLC_E_NAN_EVENT_SDF_RX = 22, /* entire service discovery frame */ -- WLC_E_NAN_EVENT_DATA_END = 23, WLC_E_NAN_EVENT_BCN_RX = 24, /* received beacon payload */ -- -- /* prune reason codes */ -- WLC_E_PRUNE_ENCR_MISMATCH = 1 + WLC_E_PRUNE_REASON_OFFSET, /** encryption mismatch */ -- WLC_E_PRUNE_BCAST_BSSID = 2 + WLC_E_PRUNE_REASON_OFFSET, /** AP uses a broadcast BSSID */ -- WLC_E_PRUNE_MAC_DENY = 3 + WLC_E_PRUNE_REASON_OFFSET, /** STA's MAC addr is in AP's MAC deny list */ -- WLC_E_PRUNE_MAC_NA = 4 + WLC_E_PRUNE_REASON_OFFSET, /** STA's MAC addr is not in AP's MAC allow list */ -- WLC_E_PRUNE_REG_PASSV = 5 + WLC_E_PRUNE_REASON_OFFSET, /** AP not allowed due to regulatory restriction */ -- WLC_E_PRUNE_SPCT_MGMT = 6 + WLC_E_PRUNE_REASON_OFFSET, /** AP does not support STA locale spectrum mgmt */ -- WLC_E_PRUNE_RADAR = 7 + WLC_E_PRUNE_REASON_OFFSET, /** AP is on a radar channel of STA locale */ -- WLC_E_RSN_MISMATCH = 8 + WLC_E_PRUNE_REASON_OFFSET, /** STA does not support AP's RSN */ -- WLC_E_PRUNE_NO_COMMON_RATES = 9 + WLC_E_PRUNE_REASON_OFFSET, /** No rates in common with AP */ -- WLC_E_PRUNE_BASIC_RATES = 10 + WLC_E_PRUNE_REASON_OFFSET, /** STA does not support all basic rates of BSS */ -- WLC_E_PRUNE_CCXFAST_PREVAP = 11 + WLC_E_PRUNE_REASON_OFFSET, /** CCX FAST ROAM: prune previous AP */ -- WLC_E_PRUNE_CIPHER_NA = 12 + WLC_E_PRUNE_REASON_OFFSET, /** BSS's cipher not supported */ -- WLC_E_PRUNE_KNOWN_STA = 13 + WLC_E_PRUNE_REASON_OFFSET, /** AP is already known to us as a STA */ -- WLC_E_PRUNE_CCXFAST_DROAM = 14 + WLC_E_PRUNE_REASON_OFFSET, /** CCX FAST ROAM: prune unqualified AP */ -- WLC_E_PRUNE_WDS_PEER = 15 + WLC_E_PRUNE_REASON_OFFSET, /** AP is already known to us as a WDS peer */ -- WLC_E_PRUNE_QBSS_LOAD = 16 + WLC_E_PRUNE_REASON_OFFSET, /** QBSS LOAD - AAC is too low */ -- WLC_E_PRUNE_HOME_AP = 17 + WLC_E_PRUNE_REASON_OFFSET, /** prune home AP */ -- WLC_E_PRUNE_AP_BLOCKED = 18 + WLC_E_PRUNE_REASON_OFFSET, /** prune blocked AP */ -- WLC_E_PRUNE_NO_DIAG_SUPPORT = 19 + WLC_E_PRUNE_REASON_OFFSET, /** prune due to diagnostic mode not supported */ -- -- /* WPA failure reason codes carried in the WLC_E_PSK_SUP event */ -- WLC_E_SUP_OTHER = 0 + WLC_E_SUP_REASON_OFFSET, /** Other reason */ -- WLC_E_SUP_DECRYPT_KEY_DATA = 1 + WLC_E_SUP_REASON_OFFSET, /** Decryption of key data failed */ -- WLC_E_SUP_BAD_UCAST_WEP128 = 2 + WLC_E_SUP_REASON_OFFSET, /** Illegal use of ucast WEP128 */ -- WLC_E_SUP_BAD_UCAST_WEP40 = 3 + WLC_E_SUP_REASON_OFFSET, /** Illegal use of ucast WEP40 */ -- WLC_E_SUP_UNSUP_KEY_LEN = 4 + WLC_E_SUP_REASON_OFFSET, /** Unsupported key length */ -- WLC_E_SUP_PW_KEY_CIPHER = 5 + WLC_E_SUP_REASON_OFFSET, /** Unicast cipher mismatch in pairwise key */ -- WLC_E_SUP_MSG3_TOO_MANY_IE = 6 + WLC_E_SUP_REASON_OFFSET, /** WPA IE contains > 1 RSN IE in key msg 3 */ -- WLC_E_SUP_MSG3_IE_MISMATCH = 7 + WLC_E_SUP_REASON_OFFSET, /** WPA IE mismatch in key message 3 */ -- WLC_E_SUP_NO_INSTALL_FLAG = 8 + WLC_E_SUP_REASON_OFFSET, /** INSTALL flag unset in 4-way msg */ -- WLC_E_SUP_MSG3_NO_GTK = 9 + WLC_E_SUP_REASON_OFFSET, /** encapsulated GTK missing from msg 3 */ -- WLC_E_SUP_GRP_KEY_CIPHER = 10 + WLC_E_SUP_REASON_OFFSET, /** Multicast cipher mismatch in group key */ -- WLC_E_SUP_GRP_MSG1_NO_GTK = 11 + WLC_E_SUP_REASON_OFFSET, /** encapsulated GTK missing from group msg 1 */ -- WLC_E_SUP_GTK_DECRYPT_FAIL = 12 + WLC_E_SUP_REASON_OFFSET, /** GTK decrypt failure */ -- WLC_E_SUP_SEND_FAIL = 13 + WLC_E_SUP_REASON_OFFSET, /** message send failure */ -- WLC_E_SUP_DEAUTH = 14 + WLC_E_SUP_REASON_OFFSET, /** received FC_DEAUTH */ -- WLC_E_SUP_WPA_PSK_TMO = 15 + WLC_E_SUP_REASON_OFFSET, /** WPA PSK 4-way handshake timeout */ -- -- DOT11_RC_RESERVED = 0 + WLC_E_DOT11_RC_REASON_OFFSET, /* d11 RC reserved */ -- DOT11_RC_UNSPECIFIED = 1 + WLC_E_DOT11_RC_REASON_OFFSET, /* Unspecified reason */ -- DOT11_RC_AUTH_INVAL = 2 + WLC_E_DOT11_RC_REASON_OFFSET, /* Previous authentication no longer valid */ -- DOT11_RC_DEAUTH_LEAVING = 3 + WLC_E_DOT11_RC_REASON_OFFSET, /* Deauthenticated because sending station is leaving (or has left) IBSS or ESS */ -- DOT11_RC_INACTIVITY = 4 + WLC_E_DOT11_RC_REASON_OFFSET, /* Disassociated due to inactivity */ -- DOT11_RC_BUSY = 5 + WLC_E_DOT11_RC_REASON_OFFSET, /* Disassociated because AP is unable to handle all currently associated stations */ -- DOT11_RC_INVAL_CLASS_2 = 6 + WLC_E_DOT11_RC_REASON_OFFSET, /* Class 2 frame received from nonauthenticated station */ -- DOT11_RC_INVAL_CLASS_3 = 7 + WLC_E_DOT11_RC_REASON_OFFSET, /* Class 3 frame received from nonassociated station */ -- DOT11_RC_DISASSOC_LEAVING = 8 + WLC_E_DOT11_RC_REASON_OFFSET, /* Disassociated because sending station is leaving (or has left) BSS */ -- DOT11_RC_NOT_AUTH = 9 + WLC_E_DOT11_RC_REASON_OFFSET, /* Station requesting (re)association is not * authenticated with responding station */ -- DOT11_RC_BAD_PC = 10 + WLC_E_DOT11_RC_REASON_OFFSET, /* Unacceptable power capability element */ -- DOT11_RC_BAD_CHANNELS = 11 + WLC_E_DOT11_RC_REASON_OFFSET, /* Unacceptable supported channels element */ -- /* 12 is unused */ -- /* XXX 13-23 are WPA/802.11i reason codes defined in proto/wpa.h */ -- /* 32-39 are QSTA specific reasons added in 11e */ -- DOT11_RC_UNSPECIFIED_QOS = 32 + WLC_E_DOT11_RC_REASON_OFFSET, /* unspecified QoS-related reason */ -- DOT11_RC_INSUFFCIENT_BW = 33 + WLC_E_DOT11_RC_REASON_OFFSET, /* QAP lacks sufficient bandwidth */ -- DOT11_RC_EXCESSIVE_FRAMES = 34 + WLC_E_DOT11_RC_REASON_OFFSET, /* excessive number of frames need ack */ -- DOT11_RC_TX_OUTSIDE_TXOP = 35 + WLC_E_DOT11_RC_REASON_OFFSET, /* transmitting outside the limits of txop */ -- DOT11_RC_LEAVING_QBSS = 36 + WLC_E_DOT11_RC_REASON_OFFSET, /* QSTA is leaving the QBSS (or restting) */ -- DOT11_RC_BAD_MECHANISM = 37 + WLC_E_DOT11_RC_REASON_OFFSET, /* does not want to use the mechanism */ -- DOT11_RC_SETUP_NEEDED = 38 + WLC_E_DOT11_RC_REASON_OFFSET, /* mechanism needs a setup */ -- DOT11_RC_TIMEOUT = 39 + WLC_E_DOT11_RC_REASON_OFFSET, /* timeout */ -- DOT11_RC_MAX = 23 + WLC_E_DOT11_RC_REASON_OFFSET, /* Reason codes > 23 are reserved */ -- -- WLC_E_REASON_FORCE_32_BIT = 0x7FFFFFFE /** Force enum to be stored in 32 bit variable */ --} whd_event_reason_t; -- --typedef enum --{ -- WLC_E_NAN_EVENT_START = 1, /* NAN cluster started */ -- WLC_E_NAN_EVENT_JOIN = 2, /* Joined to a NAN cluster */ -- WLC_E_NAN_EVENT_ROLE = 3, /* Role or State changed */ -- WLC_E_NAN_EVENT_SCAN_COMPLETE = 4, WLC_E_NAN_EVENT_DISCOVERY_RESULT = 5, WLC_E_NAN_EVENT_REPLIED = 6, -- WLC_E_NAN_EVENT_TERMINATED = 7, /* the instance ID will be present in the ev data */ -- WLC_E_NAN_EVENT_RECEIVE = 8 -- --} whd_nan_events_t; -- --/** -- * Event handler prototype definition -- * -- * @param[out] whd_event_header_t : whd event header -- * @param[out] uint8_t* : event data -- * @param[out] handler_user_data : semaphore data -- */ --typedef void *(*whd_event_handler_t)(whd_interface_t ifp, const whd_event_header_t *event_header, -- const uint8_t *event_data, void *handler_user_data); --/** @endcond */ -- -- --extern whd_result_t whd_management_set_event_handler_locally(whd_interface_t ifp, -- const whd_event_num_t *event_nums, -- whd_event_handler_t handler_func, -- void *handler_user_data, uint16_t *event_index); -- --extern whd_result_t whd_management_set_event_handler(whd_interface_t ifp, const whd_event_num_t *event_nums, -- whd_event_handler_t handler_func, -- void *handler_user_data, uint16_t *event_index); -- --extern uint32_t whd_wifi_set_event_handler(whd_interface_t ifp, const uint32_t *event_type, -- whd_event_handler_t handler_func, -- void *handler_user_data, uint16_t *event_index); -- --extern uint32_t whd_wifi_deregister_event_handler(whd_interface_t ifp, uint16_t event_index); -- --/** @cond */ -- --//extern void* whd_rrm_report_handler( const whd_event_header_t* event_header, const uint8_t* event_data, void* handler_user_data ); -- --extern void *whd_nan_scan_handler(const whd_event_header_t *event_header, const uint8_t *event_data, -- void *handler_user_data); -- --#define WHD_MSG_IFNAME_MAX 16 -- --/* Maximum number of events registered at a time */ --#define WHD_MAX_EVENT_SUBSCRIPTION 33 -- --#define WHD_EVENT_NOT_REGISTERED 0xFF --/* Enum to index and find the entry of paricular event registered */ --typedef enum --{ -- WHD_SCAN_EVENT_ENTRY = 0, -- WHD_JOIN_EVENT_ENTRY, -- WHD_AP_EVENT_ENTRY, -- WHD_P2P_EVENT_ENTRY, -- WHD_EVENT_ENTRY_MAX --} whd_event_entry_t; -- --#pragma pack(1) --typedef struct whd_event_eth_hdr --{ -- uint16_t subtype; /** Vendor specific..32769 */ -- uint16_t length; -- uint8_t version; /** Version is 0 */ -- uint8_t oui[3]; /** OUI */ -- uint16_t usr_subtype; /** user specific Data */ --} whd_event_eth_hdr_t; -- --typedef struct whd_event_ether_header --{ -- whd_mac_t destination_address; -- whd_mac_t source_address; -- uint16_t ethertype; --} whd_event_ether_header_t; -- --struct whd_event_msg --{ -- uint16_t version; -- uint16_t flags; /* see flags below */ -- uint32_t event_type; /* Message (see below) */ -- uint32_t status; /* Status code (see below) */ -- uint32_t reason; /* Reason code (if applicable) */ -- uint32_t auth_type; /* WLC_E_AUTH */ -- uint32_t datalen; /* data buf */ -- whd_mac_t addr; /* Station address (if applicable) */ -- char ifname[WHD_MSG_IFNAME_MAX]; /* name of the packet incoming interface */ -- uint8_t ifidx; /* destination OS i/f index */ -- uint8_t bsscfgidx; /* source bsscfg index */ --}; -- --/* used by driver msgs */ --typedef struct whd_event --{ -- whd_event_ether_header_t eth; -- whd_event_eth_hdr_t eth_evt_hdr; -- whd_event_header_t whd_event; -- /* data portion follows */ --} whd_event_t; -- --#pragma pack() -- --/** @endcond */ -- --/** @} */ -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* ifndef INCLUDED_WHD_EVENTS_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_int.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_int.h -deleted file mode 100644 -index 142c0f231a..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_int.h -+++ /dev/null -@@ -1,113 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Header for whd_driver structure -- */ -- --#ifndef INCLUDED_WHD_INT_H --#define INCLUDED_WHD_INT_H -- --#include "whd_thread.h" --#include "whd_sdpcm.h" --#include "whd_cdc_bdc.h" --#include "whd_chip.h" --#include "whd_ap.h" --#include "whd_debug.h" -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --typedef struct --{ -- uint32_t tx_total; /* Total number of TX packets sent from WHD */ -- uint32_t rx_total; /* Total number of RX packets received at WHD */ -- uint32_t tx_no_mem; /* Number of times WHD could not send due to no buffer */ -- uint32_t rx_no_mem; /* Number of times WHD could not receive due to no buffer */ -- uint32_t tx_fail; /* Number of times TX packet failed */ -- uint32_t no_credit; /* Number of times WHD could not send due to no credit */ -- uint32_t flow_control; /* Number of times WHD Flow control is enabled */ -- uint32_t internal_host_buffer_fail_with_timeout; /* Internal host buffer get failed after timeout */ --} whd_stats_t; -- --#define WHD_INTERFACE_MAX 3 --typedef enum --{ -- WHD_INVALID_ROLE = 0, -- WHD_STA_ROLE = 1, /**< STA or Client Interface */ -- WHD_AP_ROLE = 2, /**< softAP Interface */ -- WHD_P2P_ROLE = 3, /**< P2P Interface */ --} whd_interface_role_t; -- -- --struct whd_interface --{ -- whd_driver_t whd_driver; -- uint8_t ifidx; -- uint8_t bsscfgidx; -- -- char if_name[WHD_MSG_IFNAME_MAX]; -- whd_interface_role_t role; -- whd_mac_t mac_addr; -- uint8_t event_reg_list[WHD_EVENT_ENTRY_MAX]; -- whd_bool_t state; --}; -- --struct whd_driver --{ -- whd_interface_t iflist[WHD_INTERFACE_MAX]; -- uint8_t if2ifp[WHD_INTERFACE_MAX]; -- -- /* Bus variables */ -- struct whd_bus_info *bus_if; -- struct whd_bus_priv *bus_priv; -- struct whd_bus_common_info *bus_common_info; -- whd_buffer_funcs_t *buffer_if; -- whd_netif_funcs_t *network_if; -- whd_resource_source_t *resource_if; -- -- whd_bool_t bus_gspi_32bit; -- -- whd_thread_info_t thread_info; -- whd_cdc_bdc_info_t cdc_bdc_info; -- whd_sdpcm_info_t sdpcm_info; -- whd_internal_info_t internal_info; -- whd_ap_int_info_t ap_info; -- whd_chip_info_t chip_info; -- -- whd_stats_t whd_stats; -- whd_country_code_t country; -- -- whd_ioctl_log_t whd_ioctl_log[WHD_IOCTL_LOG_SIZE]; -- int whd_ioctl_log_index; --}; -- --whd_result_t whd_add_interface(whd_driver_t whd_driver, uint8_t bsscfgidx, uint8_t ifidx, -- const char *name, whd_mac_t *mac_addr, whd_interface_t *ifpp); -- --whd_result_t whd_add_primary_interface(whd_driver_t whd_driver, whd_interface_t *ifpp); -- --whd_interface_t whd_get_primary_interface(whd_driver_t whd_driver); -- -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* INCLUDED_WHD_INT_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_network_if.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_network_if.h -deleted file mode 100644 -index 8cd531eaa5..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_network_if.h -+++ /dev/null -@@ -1,76 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides prototypes / declarations for common APSTA functionality -- */ --#ifndef _WHD_INTERNAL_NETWORK_API_H_ --#define _WHD_INTERNAL_NETWORK_API_H_ -- --#include "whd.h" --#include "whd_int.h" -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Macros --******************************************************/ -- --/****************************************************** --* Structures --******************************************************/ -- --/****************************************************** --* Function prototypes --******************************************************/ --/** Called by WHD to pass received data to the network stack -- * -- * -- * Packets received from the Wi-Fi network by WHD are forwarded to by calling function ptr which -- * must be implemented in the network interface. Ethernet headers -- * are present at the start of these packet buffers. -- * -- * This function is called asynchronously in the context of the -- * WHD thread whenever new data has arrived. -- * Packet buffers are allocated within WHD, and ownership is transferred -- * to the network stack. The network stack or application is thus -- * responsible for releasing the packet buffers. -- * Most packet buffering systems have a pointer to the 'current point' within -- * the packet buffer. When this function is called, the pointer points -- * to the start of the Ethernet header. There is other inconsequential data -- * before the Ethernet header. -- * -- * It is preferable that the (whd_network_process_ethernet_data)() function simply puts -- * the received packet on a queue for processing by another thread. This avoids the -- * WHD thread being unnecessarily tied up which would delay other packets -- * being transmitted or received. -- * -- * @param interface : The interface on which the packet was received. -- * @param buffer : Handle of the packet which has just been received. Responsibility for -- * releasing this buffer is transferred from WHD at this point. -- * -- */ --whd_result_t whd_network_process_ethernet_data(whd_interface_t ifp, whd_buffer_t buffer); --#ifdef __cplusplus --} /*extern "C" */ --#endif -- --#endif /* ifndef _WHD_INTERNAL_NETWORK_API_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_poll.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_poll.h -deleted file mode 100644 -index 8bdc3e790e..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_poll.h -+++ /dev/null -@@ -1,93 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Header for using WHD with no RTOS or network stack -- * -- * It is possible to use these WHD without any operating system. To do this, -- * the user application is required to periodically use the functions in this -- * file to allow WHD to send and receive data across the SPI/SDIO bus. -- * -- */ -- --#include "whd.h" -- --#ifndef INCLUDED_WHD_POLL_H --#define INCLUDED_WHD_POLL_H -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Function declarations --******************************************************/ -- -- --/** Sends the first queued packet -- * -- * Checks the queue to determine if there is any packets waiting -- * to be sent. If there are, then it sends the first one. -- * -- * This function is normally used by the WHD Thread, but can be -- * called periodically by systems which have no RTOS to ensure -- * packets get sent. -- * -- * @return 1 : packet was sent -- * 0 : no packet sent -- */ --extern int8_t whd_thread_send_one_packet(whd_driver_t whd_driver); -- -- --/** Receives a packet if one is waiting -- * -- * Checks the wifi chip fifo to determine if there is any packets waiting -- * to be received. If there are, then it receives the first one, and calls -- * the callback @ref whd_sdpcm_process_rx_packet (in whd_sdpcm.c). -- * -- * This function is normally used by the WHD Thread, but can be -- * called periodically by systems which have no RTOS to ensure -- * packets get received properly. -- * -- * @return 1 : packet was received -- * 0 : no packet waiting -- */ --extern int8_t whd_thread_receive_one_packet(whd_driver_t whd_driver); -- -- --/** Sends and Receives all waiting packets -- * -- * Repeatedly calls whd_thread_send_one_packet and whd_thread_receive_one_packet -- * to send and receive packets, until there are no more packets waiting to -- * be transferred. -- * -- * This function is normally used by the WHD Thread, but can be -- * called periodically by systems which have no RTOS to ensure -- * packets get send and received properly. -- * -- * @return 1 : packet was sent or received -- * 0 : no packet was sent or received -- */ --extern int8_t whd_thread_poll_all(whd_driver_t whd_driver); -- -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* ifndef INCLUDED_WHD_POLL_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_resource_if.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_resource_if.h -deleted file mode 100644 -index ae83312bf4..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_resource_if.h -+++ /dev/null -@@ -1,55 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides prototypes / declarations for common APSTA functionality -- */ --#ifndef _WHD_INTERNAL_RESOURCE_API_H_ --#define _WHD_INTERNAL_RESOURCE_API_H_ -- --#include "whd.h" --#include "whd_int.h" --#include "whd_resource_api.h" -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Macros --******************************************************/ -- --/****************************************************** --* Structures --******************************************************/ -- --/****************************************************** --* Function prototypes --******************************************************/ --uint32_t whd_resource_size(whd_driver_t whd_driver, whd_resource_type_t resource, uint32_t *size_out); --uint32_t whd_get_resource_block_size(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *size_out); --uint32_t whd_get_resource_no_of_blocks(whd_driver_t whd_drv, whd_resource_type_t type, uint32_t *block_count); --uint32_t whd_get_resource_block(whd_driver_t whd_driver, whd_resource_type_t type, -- uint32_t blockno, const uint8_t **data, uint32_t *size_out); -- --#ifdef __cplusplus --} /*extern "C" */ --#endif -- --#endif /* ifndef _WHD_INTERNAL_RESOURCE_API_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_sdpcm.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_sdpcm.h -deleted file mode 100644 -index 5a7424b04c..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_sdpcm.h -+++ /dev/null -@@ -1,124 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides whd with function prototypes for IOCTL commands, -- * and for communicating with the SDPCM module -- * -- */ -- --#ifndef INCLUDED_WHD_SDPCM_H --#define INCLUDED_WHD_SDPCM_H -- --#include "whd.h" --#include "whd_events_int.h" --#include "cyabs_rtos.h" --#include "whd_network_types.h" --#include "whd_types_int.h" --#include "whd_cdc_bdc.h" -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Constants --******************************************************/ --typedef enum --{ -- DATA_HEADER = 2, -- ASYNCEVENT_HEADER = 1, -- CONTROL_HEADER = 0 --} sdpcm_header_type_t; -- --/****************************************************** --* Macros --******************************************************/ -- --#define BUS_HEADER_LEN (12) --#define IOCTL_OFFSET (sizeof(whd_buffer_header_t) + 12 + 16) -- --/****************************************************** --* Structures --******************************************************/ --typedef struct whd_sdpcm_info --{ -- /* Bus data credit variables */ -- uint8_t packet_transmit_sequence_number; -- uint8_t last_bus_data_credit; -- uint8_t credit_diff; -- uint8_t largest_credit_diff; -- -- /* Packet send queue variables */ -- cy_semaphore_t send_queue_mutex; -- whd_buffer_t send_queue_head; -- whd_buffer_t send_queue_tail; -- --} whd_sdpcm_info_t; -- --typedef struct --{ -- whd_buffer_header_t buffer_header; -- uint8_t bus_header[BUS_HEADER_LEN]; --} bus_common_header_t; -- --#pragma pack(1) --typedef struct --{ -- bus_common_header_t common; -- cdc_header_t cdc_header; --} control_header_t; -- --typedef struct --{ -- bus_common_header_t common; -- uint8_t _padding[2]; -- bdc_header_t bdc_header; --} data_header_t; --#pragma pack() -- --/****************************************************** --* Function declarations --******************************************************/ -- --extern void whd_sdpcm_process_rx_packet(whd_driver_t whd_driver, whd_buffer_t buffer); --extern whd_result_t whd_sdpcm_init(whd_driver_t whd_driver); --extern void whd_sdpcm_quit(whd_driver_t whd_driver); --extern void whd_sdpcm_bus_vars_init(whd_driver_t whd_driver); --extern void whd_sdpcm_quit(whd_driver_t whd_driver); --extern whd_bool_t whd_sdpcm_has_tx_packet(whd_driver_t whd_driver); -- --extern whd_result_t whd_sdpcm_get_packet_to_send(whd_driver_t whd_driver, whd_buffer_t *buffer); --extern void whd_sdpcm_update_credit(whd_driver_t whd_driver, uint8_t *data); --extern uint8_t whd_sdpcm_get_available_credits(whd_driver_t whd_driver); --extern void whd_update_host_interface_to_bss_index_mapping(whd_driver_t whd_driver, whd_interface_t interface, -- uint32_t bssid_index); -- --extern void whd_send_to_bus(whd_driver_t whd_driver, whd_buffer_t buffer, -- sdpcm_header_type_t header_type); -- --/****************************************************** --* Global variables --******************************************************/ -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_SDPCM_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_thread.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_thread.h -deleted file mode 100644 -index 248b1f8c42..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_thread.h -+++ /dev/null -@@ -1,92 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * The whd Thread allows thread safe access to the whd hardware bus -- * This is an whd internal file and should not be used by functions outside whd. -- * -- * This file provides prototypes for functions which allow multiple threads to use the whd hardware bus (SDIO or SPI) -- * This is achieved by having a single thread (the "whd Thread") which queues messages to be sent, sending -- * them sequentially, as well as receiving messages as they arrive. -- * -- * Messages to be sent come from the @ref whd_sdpcm_send_common function in whd_sdpcm.c . The messages already -- * contain SDPCM headers, but not any bus headers (GSPI), and are passed via a queue -- * This function can be called from any thread. -- * -- * Messages are received by way of a callback supplied by in whd_sdpcm.c - whd_sdpcm_process_rx_packet -- * Received messages are delivered in the context of the whd Thread, so the callback function needs to avoid blocking. -- * -- */ --#include "cyabs_rtos.h" --#include "whd.h" -- --#ifndef INCLUDED_WHD_THREAD_H_ --#define INCLUDED_WHD_THREAD_H_ -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Constants --******************************************************/ --#define WHD_THREAD_RX_BOUND (20) -- --typedef struct whd_thread_info --{ -- -- volatile whd_bool_t thread_quit_flag; -- volatile whd_bool_t whd_inited; -- cy_thread_t whd_thread; -- cy_semaphore_t transceive_semaphore; -- volatile whd_bool_t bus_interrupt; -- void *thread_stack_start; -- uint32_t thread_stack_size; -- cy_thread_priority_t thread_priority; -- --} whd_thread_info_t; -- --void whd_thread_info_init(whd_driver_t whd_driver, whd_init_config_t *whd_init_config); -- --/** Initialises the whd Thread -- * -- * Initialises the whd thread, and its flags/semaphores, -- * then starts it running -- * -- * @return whd result code -- */ --extern whd_result_t whd_thread_init(whd_driver_t whd_driver); -- -- --/** Terminates the whd Thread -- * -- * Sets a flag then wakes the whd Thread to force it to terminate. -- * -- */ --extern void whd_thread_quit(whd_driver_t whd_driver); -- -- --extern void whd_thread_notify(whd_driver_t whd_driver); --extern void whd_thread_notify_irq(whd_driver_t whd_driver); -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_THREAD_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_thread_internal.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_thread_internal.h -deleted file mode 100644 -index ec46ebdddc..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_thread_internal.h -+++ /dev/null -@@ -1,55 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#ifndef INCLUDED_WHD_THREAD_INTERNAL_H --#define INCLUDED_WHD_THREAD_INTERNAL_H -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --#include "whd_debug.h" --#include "whd_int.h" -- --/****************************************************** --* Macros --******************************************************/ -- --#define WHD_WLAN_KEEP_AWAKE(whd_driver) \ -- do { \ -- whd_result_t verify_result; \ -- whd_driver->internal_info.whd_wlan_status.keep_wlan_awake++; \ -- verify_result = whd_ensure_wlan_bus_is_up(whd_driver); \ -- whd_assert("Could not bring bus up", (verify_result == WHD_SUCCESS) ); \ -- } while (0) --#define WHD_WLAN_LET_SLEEP(whd_driver) \ -- do { \ -- whd_driver->internal_info.whd_wlan_status.keep_wlan_awake--; \ -- if (whd_driver->internal_info.whd_wlan_status.keep_wlan_awake == 0) \ -- whd_thread_notify(whd_driver); \ -- } while (0) --#define WHD_WLAN_MAY_SLEEP() \ -- ( (whd_driver->internal_info.whd_wlan_status.keep_wlan_awake == 0) && \ -- (whd_driver->internal_info.whd_wlan_status.state == WLAN_UP) ) -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_THREAD_INTERNAL_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_types_int.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_types_int.h -deleted file mode 100644 -index 4f1d384247..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_types_int.h -+++ /dev/null -@@ -1,407 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Defines common constants used with WHD within src folder -- * -- */ -- --#ifndef INCLUDED_WHD_TYPES_INT_H_ --#define INCLUDED_WHD_TYPES_INT_H_ -- --#include --#include --#include -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/****************************************************** --* Macros --******************************************************/ --#define MAX_BUS_HEADER_SIZE 4 -- --/** -- * The size of an Ethernet header -- */ --#define WHD_ETHERNET_SIZE (14) -- --/** -- * Ethernet Ethertypes -- */ --#define WHD_ETHERTYPE_IPv4 0x0800 --#define WHD_ETHERTYPE_IPv6 0x86DD --#define WHD_ETHERTYPE_ARP 0x0806 --#define WHD_ETHERTYPE_RARP 0x8035 --#define WHD_ETHERTYPE_EAPOL 0x888E --#define WHD_ETHERTYPE_DOT1AS 0x88F7 --#define WHD_ETHERTYPE_8021Q 0x8100 -- --/* bss_info_cap_t flags */ --#define WL_BSS_FLAGS_FROM_BEACON 0x01 /* bss_info derived from beacon */ --#define WL_BSS_FLAGS_FROM_CACHE 0x02 /* bss_info collected from cache */ --#define WL_BSS_FLAGS_RSSI_ONCHANNEL 0x04 /* rssi info received on channel (vs offchannel) */ --#define WL_BSS_FLAGS_HS20 0x08 /* hotspot 2.0 capable */ --#define WL_BSS_FLAGS_RSSI_INVALID 0x10 /* BSS contains invalid RSSI */ --#define WL_BSS_FLAGS_RSSI_INACCURATE 0x20 /* BSS contains inaccurate RSSI */ --#define WL_BSS_FLAGS_SNR_INVALID 0x40 /* BSS contains invalid SNR */ --#define WL_BSS_FLAGS_NF_INVALID 0x80 /* BSS contains invalid noise floor */ -- --#define HT_CAPABILITIES_IE_LENGTH (26) --#define DOT11_OUI_LEN (3)/** Length in bytes of 802.11 OUI*/ -- --#define WHD_ETHER_ADDR_STR_LEN (18) --#define WHD_ETHER_ADDR_LEN (6) -- --#define CHECK_IOCTL_BUFFER(buff) if (buff == \ -- NULL){ WPRINT_WHD_ERROR( ("Buffer alloc failed in function %s at line %d \n", \ -- __func__, __LINE__) ); \ -- return WHD_BUFFER_ALLOC_FAIL; } --#define CHECK_RETURN(expr) { \ -- whd_result_t check_res = (expr); \ -- if (check_res != WHD_SUCCESS) \ -- { \ -- WPRINT_WHD_ERROR( ("Function %s failed at line %d checkres = %u \n", \ -- __func__, __LINE__, \ -- (unsigned int)check_res) ); \ -- return check_res; \ -- } \ --} -- --#define CHECK_RETURN_UNSUPPORTED_OK(expr) { whd_result_t check_res = (expr); \ -- if (check_res != WHD_SUCCESS) \ -- { \ -- return check_res; \ -- } \ --} --#define CHECK_RETURN_UNSUPPORTED_CONTINUE(expr) { whd_result_t check_res = (expr); \ -- if (check_res != WHD_SUCCESS && check_res != WHD_WLAN_UNSUPPORTED) \ -- { \ -- return check_res; \ -- } \ --} --#define RETURN_WITH_ASSERT(expr) { whd_result_t check_res = (expr); \ -- whd_assert("Command failed\n", check_res == WHD_SUCCESS); \ -- return check_res; } -- --#define CHECK_RETURN_IGNORE(expr) { whd_result_t check_res = (expr); \ -- if (check_res != WHD_SUCCESS) \ -- { \ -- } \ --} -- --#define CHECK_IFP_NULL(ifp) if (ifp == \ -- NULL){ WPRINT_WHD_ERROR( ( \ -- "Interface is not up/NULL and failed in function %s at line %d \n", \ -- __func__, __LINE__) ); \ -- return WHD_UNKNOWN_INTERFACE; } -- --#define CHECK_DRIVER_NULL(driver) if (driver == \ -- NULL){ WPRINT_WHD_ERROR( ( \ -- "WHD driver is not up/NULL and failed in function %s at line %d \n", \ -- __func__, __LINE__) ); \ -- return WHD_DOES_NOT_EXIST; } -- --#define MIN_OF(x, y) ( (x) < (y) ? (x) : (y) ) --#define MAX_OF(x, y) ( (x) > (y) ? (x) : (y) ) -- --#ifndef ROUND_UP --#define ROUND_UP(x, y) ( (x) % (y) ? (x) + (y) - ( (x) % (y) ) : (x) ) --#endif -- --#ifndef DIV_ROUND_UP --#define DIV_ROUND_UP(m, n) ( ( (m) + (n) - 1 ) / (n) ) --#endif -- --#define WHD_WRITE_16(pointer, value) (*( (uint16_t *)pointer ) = value) --#define WHD_WRITE_32(pointer, value) (*( (uint32_t *)pointer ) = value) --#define WHD_READ_16(pointer) *( (uint16_t *)pointer ) --#define WHD_READ_32(pointer) *( (uint32_t *)pointer ) -- --/** -- * Macro for checking for NULL MAC addresses -- */ --#define NULL_MAC(a) ( ( ( ( (unsigned char *)a )[0] ) == 0 ) && \ -- ( ( ( (unsigned char *)a )[1] ) == 0 ) && \ -- ( ( ( (unsigned char *)a )[2] ) == 0 ) && \ -- ( ( ( (unsigned char *)a )[3] ) == 0 ) && \ -- ( ( ( (unsigned char *)a )[4] ) == 0 ) && \ -- ( ( ( (unsigned char *)a )[5] ) == 0 ) ) -- --/** -- * Macro for checking for Broadcast address -- */ --#define BROADCAST_ID(a) ( ( ( ( (unsigned char *)a )[0] ) == 255 ) && \ -- ( ( ( (unsigned char *)a )[1] ) == 255 ) && \ -- ( ( ( (unsigned char *)a )[2] ) == 255 ) && \ -- ( ( ( (unsigned char *)a )[3] ) == 255 ) && \ -- ( ( ( (unsigned char *)a )[4] ) == 255 ) && \ -- ( ( ( (unsigned char *)a )[5] ) == 255 ) ) -- --/* Suppress unused variable warning occurring due to an assert which is disabled in release mode */ --#define REFERENCE_DEBUG_ONLY_VARIABLE(x) ( (void)(x) ) -- --/* Suppress unused parameter warning */ --#define UNUSED_PARAMETER(x) ( (void)(x) ) -- --/* Suppress unused variable warning */ --#define UNUSED_VARIABLE(x) ( (void)(x) ) -- --#if defined (__IAR_SYSTEMS_ICC__) --#define DISABLE_COMPILER_WARNING(x) _Pragma(#x) --#define ENABLE_COMPILER_WARNING(x) _Pragma(#x) --#else --#define DISABLE_COMPILER_WARNING(x) --#define ENABLE_COMPILER_WARNING(x) --#endif -- --/****************************************************** --* Type Definitions --******************************************************/ -- --/****************************************************** --* Constants --******************************************************/ -- --/****************************************************** --* Structures and Enumerations --******************************************************/ --#pragma pack(1) --typedef struct --{ -- whd_buffer_queue_ptr_t queue_next; -- char bus_header[MAX_BUS_HEADER_SIZE]; --} whd_buffer_header_t; --#pragma pack() -- --/* 802.11 Information Element Identification Numbers (as per section 8.4.2.1 of 802.11-2012) */ --typedef enum --{ -- DOT11_IE_ID_SSID = 0, -- DOT11_IE_ID_SUPPORTED_RATES = 1, -- DOT11_IE_ID_FH_PARAMETER_SET = 2, -- DOT11_IE_ID_DSSS_PARAMETER_SET = 3, -- DOT11_IE_ID_CF_PARAMETER_SET = 4, -- DOT11_IE_ID_TIM = 5, -- DOT11_IE_ID_IBSS_PARAMETER_SET = 6, -- DOT11_IE_ID_COUNTRY = 7, -- DOT11_IE_ID_HOPPING_PATTERN_PARAMETERS = 8, -- DOT11_IE_ID_HOPPING_PATTERN_TABLE = 9, -- DOT11_IE_ID_REQUEST = 10, -- DOT11_IE_ID_BSS_LOAD = 11, -- DOT11_IE_ID_EDCA_PARAMETER_SET = 12, -- DOT11_IE_ID_TSPEC = 13, -- DOT11_IE_ID_TCLAS = 14, -- DOT11_IE_ID_SCHEDULE = 15, -- DOT11_IE_ID_CHALLENGE_TEXT = 16, -- /* 17-31 Reserved */ -- DOT11_IE_ID_POWER_CONSTRAINT = 32, -- DOT11_IE_ID_POWER_CAPABILITY = 33, -- DOT11_IE_ID_TPC_REQUEST = 34, -- DOT11_IE_ID_TPC_REPORT = 35, -- DOT11_IE_ID_SUPPORTED_CHANNELS = 36, -- DOT11_IE_ID_CHANNEL_SWITCH_ANNOUNCEMENT = 37, -- DOT11_IE_ID_MEASUREMENT_REQUEST = 38, -- DOT11_IE_ID_MEASUREMENT_REPORT = 39, -- DOT11_IE_ID_QUIET = 40, -- DOT11_IE_ID_IBSS_DFS = 41, -- DOT11_IE_ID_ERP = 42, -- DOT11_IE_ID_TS_DELAY = 43, -- DOT11_IE_ID_TCLAS_PROCESSING = 44, -- DOT11_IE_ID_HT_CAPABILITIES = 45, -- DOT11_IE_ID_QOS_CAPABILITY = 46, -- /* 47 Reserved */ -- DOT11_IE_ID_RSN = 48, -- /* 49 Reserved */ -- DOT11_IE_ID_EXTENDED_SUPPORTED_RATES = 50, -- DOT11_IE_ID_AP_CHANNEL_REPORT = 51, -- DOT11_IE_ID_NEIGHBOR_REPORT = 52, -- DOT11_IE_ID_RCPI = 53, -- DOT11_IE_ID_MOBILITY_DOMAIN = 54, -- DOT11_IE_ID_FAST_BSS_TRANSITION = 55, -- DOT11_IE_ID_TIMEOUT_INTERVAL = 56, -- DOT11_IE_ID_RIC_DATA = 57, -- DOT11_IE_ID_DSE_REGISTERED_LOCATION = 58, -- DOT11_IE_ID_SUPPORTED_OPERATING_CLASSES = 59, -- DOT11_IE_ID_EXTENDED_CHANNEL_SWITCH_ANNOUNCEMENT = 60, -- DOT11_IE_ID_HT_OPERATION = 61, -- DOT11_IE_ID_SECONDARY_CHANNEL_OFFSET = 62, -- DOT11_IE_ID_BSS_AVERAGE_ACCESS_DELAY = 63, -- DOT11_IE_ID_ANTENNA = 64, -- DOT11_IE_ID_RSNI = 65, -- DOT11_IE_ID_MEASUREMENT_PILOT_TRANSMISSION = 66, -- DOT11_IE_ID_BSS_AVAILABLE_ADMISSION_CAPACITY = 67, -- DOT11_IE_ID_BSS_AC_ACCESS_DELAY = 68, -- DOT11_IE_ID_TIME_ADVERTISEMENT = 69, -- DOT11_IE_ID_RM_ENABLED_CAPABILITIES = 70, -- DOT11_IE_ID_MULTIPLE_BSSID = 71, -- DOT11_IE_ID_20_40_BSS_COEXISTENCE = 72, -- DOT11_IE_ID_20_40_BSS_INTOLERANT_CHANNEL_REPORT = 73, -- DOT11_IE_ID_OVERLAPPING_BSS_SCAN_PARAMETERS = 74, -- DOT11_IE_ID_RIC_DESCRIPTOR = 75, -- DOT11_IE_ID_MANAGEMENT_MIC = 76, -- DOT11_IE_ID_EVENT_REQUEST = 78, -- DOT11_IE_ID_EVENT_REPORT = 79, -- DOT11_IE_ID_DIAGNOSTIC_REQUEST = 80, -- DOT11_IE_ID_DIAGNOSTIC_REPORT = 81, -- DOT11_IE_ID_LOCATION_PARAMETERS = 82, -- DOT11_IE_ID_NONTRANSMITTED_BSSID_CAPABILITY = 83, -- DOT11_IE_ID_SSID_LIST = 84, -- DOT11_IE_ID_MULTIPLE_BSSID_INDEX = 85, -- DOT11_IE_ID_FMS_DESCRIPTOR = 86, -- DOT11_IE_ID_FMS_REQUEST = 87, -- DOT11_IE_ID_FMS_RESPONSE = 88, -- DOT11_IE_ID_QOS_TRAFFIC_CAPABILITY = 89, -- DOT11_IE_ID_BSS_MAX_IDLE_PERIOD = 90, -- DOT11_IE_ID_TFS_REQUEST = 91, -- DOT11_IE_ID_TFS_RESPONSE = 92, -- DOT11_IE_ID_WNM_SLEEP_MODE = 93, -- DOT11_IE_ID_TIM_BROADCAST_REQUEST = 94, -- DOT11_IE_ID_TIM_BROADCAST_RESPONSE = 95, -- DOT11_IE_ID_COLLOCATED_INTERFERENCE_REPORT = 96, -- DOT11_IE_ID_CHANNEL_USAGE = 97, -- DOT11_IE_ID_TIME_ZONE = 98, -- DOT11_IE_ID_DMS_REQUEST = 99, -- DOT11_IE_ID_DMS_RESPONSE = 100, -- DOT11_IE_ID_LINK_IDENTIFIER = 101, -- DOT11_IE_ID_WAKEUP_SCHEDULE = 102, -- /* 103 Reserved */ -- DOT11_IE_ID_CHANNEL_SWITCH_TIMING = 104, -- DOT11_IE_ID_PTI_CONTROL = 105, -- DOT11_IE_ID_TPU_BUFFER_STATUS = 106, -- DOT11_IE_ID_INTERWORKING = 107, -- DOT11_IE_ID_ADVERTISMENT_PROTOCOL = 108, -- DOT11_IE_ID_EXPEDITED_BANDWIDTH_REQUEST = 109, -- DOT11_IE_ID_QOS_MAP_SET = 110, -- DOT11_IE_ID_ROAMING_CONSORTIUM = 111, -- DOT11_IE_ID_EMERGENCY_ALERT_IDENTIFIER = 112, -- DOT11_IE_ID_MESH_CONFIGURATION = 113, -- DOT11_IE_ID_MESH_ID = 114, -- DOT11_IE_ID_MESH_LINK_METRIC_REPORT = 115, -- DOT11_IE_ID_CONGESTION_NOTIFICATION = 116, -- DOT11_IE_ID_MESH_PEERING_MANAGEMENT = 117, -- DOT11_IE_ID_MESH_CHANNEL_SWITCH_PARAMETERS = 118, -- DOT11_IE_ID_MESH_AWAKE_WINDOW = 119, -- DOT11_IE_ID_BEACON_TIMING = 120, -- DOT11_IE_ID_MCCAOP_SETUP_REQUEST = 121, -- DOT11_IE_ID_MCCAOP_SETUP_REPLY = 122, -- DOT11_IE_ID_MCCAOP_ADVERTISMENT = 123, -- DOT11_IE_ID_MCCAOP_TEARDOWN = 124, -- DOT11_IE_ID_GANN = 125, -- DOT11_IE_ID_RANN = 126, -- DOT11_IE_ID_EXTENDED_CAPABILITIES = 127, -- /* 128-129 Reserved */ -- DOT11_IE_ID_PREQ = 130, -- DOT11_IE_ID_PREP = 131, -- DOT11_IE_ID_PERR = 132, -- /* 133-136 Reserved */ -- DOT11_IE_ID_PXU = 137, -- DOT11_IE_ID_PXUC = 138, -- DOT11_IE_ID_AUTHENTICATED_MESH_PEERING_EXCHANGE = 139, -- DOT11_IE_ID_MIC = 140, -- DOT11_IE_ID_DESTINATION_URI = 141, -- DOT11_IE_ID_U_APSD_COEXISTENCE = 142, -- /* 143-173 Reserved */ -- DOT11_IE_ID_MCCAOP_ADVERTISMENT_OVERVIEW = 174, -- /* 175-220 Reserved */ -- DOT11_IE_ID_VENDOR_SPECIFIC = 221, -- /* 222-255 Reserved */ --} dot11_ie_id_t; -- --uint32_t whd_wifi_get_iovar_value(whd_interface_t ifp, const char *iovar, uint32_t *value); --uint32_t whd_wifi_set_iovar_buffers(whd_interface_t ifp, const char *iovar, const void **in_buffers, -- const uint16_t *lengths, const uint8_t num_buffers); --uint32_t whd_wifi_set_iovar_value(whd_interface_t ifp, const char *iovar, uint32_t value); -- --/** Sends an IOVAR command -- * -- * @param ifp : Pointer to handle instance of whd interface -- * @param iovar : IOVAR name -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_iovar_void(whd_interface_t ifp, const char *iovar); -- --/** Sends an IOVAR command -- * -- * @param ifp : Pointer to handle instance of whd interface -- * @param iovar : IOVAR name -- * @param buffer : Handle for a packet buffer containing the data value to be sent. -- * @param buffer_length : Length of out_buffer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_iovar_buffer(whd_interface_t ifp, const char *iovar, void *buffer, uint16_t buffer_length); -- --/** Sends an IOVAR command -- * -- * @param ifp : Pointer to handle instance of whd interface -- * @param iovar : IOVAR name -- * @param in_buffers : Handle for a packet buffers containing the data value to be sent. -- * @param in_buffer_lengths : Length of in_buffers -- * @param num_buffers : Number of handle buffers -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_iovar_buffers(whd_interface_t ifp, const char *iovar, const void **in_buffers, -- const uint16_t *in_buffer_lengths, const uint8_t num_buffers); -- --/** Sends an IOVAR command -- * -- * @param ifp : Pointer to handle instance of whd interface -- * @param iovar : IOVAR name -- * @param out_buffer : Pointer to receive the handle for the packet buffer containing the response data value received -- * @param out_length : Length of out_buffer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_get_iovar_buffer(whd_interface_t ifp, const char *iovar_name, uint8_t *out_buffer, -- uint16_t out_length); -- --/** Sends an IOVAR command -- * -- * @param ifp : Pointer to handle instance of whd interface -- * @param iovar : IOVAR name -- * @param buffer : Handle for a packet buffer containing the data value to be sent. -- * @param buffer_length : Length of out_buffer -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_iovar_buffer(whd_interface_t ifp, const char *iovar, void *buffer, uint16_t buffer_length); -- --/** Sends an IOVAR command -- * -- * @param ifp : Pointer to handle instance of whd interface -- * @param iovar : IOVAR name -- * @param in_buffers : Handle for a packet buffers containing the data value to be sent. -- * @param in_buffer_lengths : Length of in_buffers -- * @param num_buffers : Number of handle buffers -- * -- * @return WHD_SUCCESS or Error code -- */ --extern uint32_t whd_wifi_set_iovar_buffers(whd_interface_t ifp, const char *iovar, const void **in_buffers, -- const uint16_t *in_buffer_lengths, const uint8_t num_buffers); -- --extern uint32_t whd_wifi_set_mac_address(whd_interface_t ifp, whd_mac_t mac); -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif /* ifndef INCLUDED_WHD_TYPES_INT_H_ */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_utils.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_utils.h -deleted file mode 100644 -index de34f9c272..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_utils.h -+++ /dev/null -@@ -1,182 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** -- * @file WHD utilities -- * -- * Utilities to help do specialized (not general purpose) WHD specific things -- */ --#include "whd_chip.h" --#include "whd_events_int.h" --#include "whd_types_int.h" -- --#ifndef INCLUDED_WHD_UTILS_H_ --#define INCLUDED_WHD_UTILS_H_ -- --#ifdef __cplusplus --extern "C" { --#endif -- --/** Searches for a specific WiFi Information Element in a byte array -- * -- * Traverse a string of 1-byte tag/1-byte length/variable-length value -- * triples, returning a pointer to the substring whose first element -- * matches tag -- * -- * @note : This function has been copied directly from the standard Broadcom host driver file wl/exe/wlu.c -- * -- * -- * @param tlv_buf : The byte array containing the Information Elements (IEs) -- * @param buflen : The length of the tlv_buf byte array -- * @param key : The Information Element tag to search for -- * -- * @return NULL : if no matching Information Element was found -- * Non-Null : Pointer to the start of the matching Information Element -- */ -- --whd_tlv8_header_t *whd_parse_tlvs(const whd_tlv8_header_t *tlv_buf, uint32_t buflen, dot11_ie_id_t key); -- --/** Checks if a WiFi Information Element is a WPA entry -- * -- * Is this body of this tlvs entry a WPA entry? If -- * not update the tlvs buffer pointer/length -- * -- * @note : This function has been copied directly from the standard Broadcom host driver file wl/exe/wlu.c -- * -- * @param wpaie : The byte array containing the Information Element (IE) -- * @param tlvs : The larger IE array to be updated if not a WPA IE -- * @param tlvs_len : The current length of larger IE array -- * -- * @return WHD_TRUE : if IE matches the WPA OUI (Organizationally Unique Identifier) and its type = 1 -- * WHD_FALSE : otherwise -- */ --whd_bool_t whd_is_wpa_ie(vendor_specific_ie_header_t *wpaie, whd_tlv8_header_t **tlvs, uint32_t *tlvs_len); -- --/** Searches for a specific WiFi Information Element in a byte array -- * -- * Traverse a string of 1-byte tag/1-byte length/variable-length value -- * triples, returning a pointer to the substring whose first element -- * matches tag -- * -- * @note : This function has been copied directly from the standard Broadcom host driver file wl/exe/wlu.c -- * -- * -- * @param tlv_buf : The byte array containing the Information Elements (IEs) -- * @param buflen : The length of the tlv_buf byte array -- * @param key : The Information Element tag to search for -- * -- * @return NULL : if no matching Information Element was found -- * Non-Null : Pointer to the start of the matching Information Element -- */ --whd_tlv8_header_t *whd_parse_dot11_tlvs(const whd_tlv8_header_t *tlv_buf, uint32_t buflen, dot11_ie_id_t key); -- --/****************************************************** --* Debug helper functionality --******************************************************/ --#ifdef WPRINT_ENABLE_WHD_DEBUG --const char *whd_event_to_string(whd_event_num_t var); --char *whd_ssid_to_string(uint8_t *value, uint8_t length, char *ssid_buf, uint8_t ssid_buf_len); --const char *whd_status_to_string(whd_event_status_t status); --const char *whd_reason_to_string(whd_event_reason_t reason); --char *whd_ether_ntoa(const uint8_t *ea, char *buf, uint8_t buf_len); --#endif /* ifdef WPRINT_ENABLE_WHD_DEBUG */ -- --/** -- ****************************************************************************** -- * Prints partial details of a scan result on a single line -- * @param[in] record : A pointer to the whd_scan_result_t record -- * -- */ --extern void whd_print_scan_result(whd_scan_result_t *record); -- --/** -- ****************************************************************************** -- * Convert a security bitmap to string -- * @param[in] security : security of type whd_security_t -- * @param[in] out_str : a character array to store output -- * @param[in] out_str_len : length of out_str char array -- * -- */ --extern void whd_convert_security_type_to_string(whd_security_t security, char *out_str, uint16_t out_str_len); -- --/*! -- ****************************************************************************** -- * Convert an IOCTL to a string. -- * -- * @param[in] cmd The ioct_log value. -- * @param[out] ioctl_str The string value after conversion. -- * @param[out] ioctl_str_len The string length of the IOCTL string. -- * -- * @result -- */ --void whd_ioctl_to_string(uint32_t cmd, char *ioctl_str, uint16_t ioctl_str_len); -- --/*! -- ****************************************************************************** -- * Convert event, status and reason value coming from firmware to string. -- * -- * @param[in] cmd The event value in numeric form. -- * @param[in] flag The status value in numeric form. -- * @param[in] reason The reson value in numeric form. -- * @param[out] ioctl_str The string representation of event, status and reason. -- * @param[out] ioctl_str_len The str_len of ioctl_str. -- * -- * @result -- */ --void whd_event_info_to_string(uint32_t cmd, uint16_t flag, uint32_t reason, char *ioctl_str, uint16_t ioctl_str_len); -- --/*! -- ****************************************************************************** -- * Prints Hexdump and ASCII dump for data passed as argument. -- * -- * @param[in] data The data which has to be converted into hex and ascii format. -- * @param[in] data_len The length of data. -- * -- * @result -- */ --void whd_hexdump(uint8_t *data, uint32_t data_len); -- --extern wl_chanspec_t whd_channel_to_wl_band(whd_driver_t whd_driver, uint32_t channel); -- --/*! -- ****************************************************************************** -- * Convert an ipv4 string to a uint32_t. -- * -- * @param[in] ip4addr : IP address in string format -- * @param[in] len : length of the ip address string -- * @param[out] dest : IP address format in uint32 -- * -- * @return -- */ --bool whd_str_to_ip(const char *ip4addr, size_t len, void *dest); -- --/*! -- ****************************************************************************** -- * Print binary IPv4 address to a string. -- * String must contain enough room for full address, 16 bytes exact. -- * @param[in] ip4addr : IPv4 address -- * @param[out] p : ipv4 address in string format -- * -- * @return -- */ --uint8_t whd_ip4_to_string(const void *ip4addr, char *p); -- --#ifdef __cplusplus --} /* extern "C" */ --#endif --#endif -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_wifi_p2p.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_wifi_p2p.h -deleted file mode 100644 -index b74dc87112..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_wifi_p2p.h -+++ /dev/null -@@ -1,49 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include "cyabs_rtos.h" /* For semaphores */ --#include "whd.h" -- -- --#ifndef INCLUDED_WHD_WIFI_P2P_H --#define INCLUDED_WHD_WIFI_P2P_H -- -- --#ifdef __cplusplus --extern "C" --{ --#endif -- --/** @cond !ADDTHIS*/ -- --/** -- * Set whether the p2p GO is up or not -- * @param is_up : specify whether the p2p GO is up currently or not -- */ --extern void whd_wifi_p2p_set_go_is_up(whd_driver_t whd_driver, whd_bool_t is_up); -- --/** -- * @return WHD_TRUE if the P2P GO is currently up -- */ --extern whd_bool_t whd_wifi_p2p_is_go_up(whd_driver_t whd_driver); -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif /* ifndef INCLUDED_WHD_WIFI_P2P_H */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_wlioctl.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_wlioctl.h -deleted file mode 100644 -index a75bee913f..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/include/whd_wlioctl.h -+++ /dev/null -@@ -1,3763 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ --/* -- * Custom OID/ioctl definitions for -- * 802.11abg Networking Device Driver -- */ --#ifndef INCLUDED_WHD_WLIOCTL_H --#define INCLUDED_WHD_WLIOCTL_H -- --#ifdef __cplusplus --extern "C" --{ --#endif --/* These are the flags in the BSS Capability Information field as defined in section 7.3.1.4 of IEEE Std 802.11-2007 */ --#define DOT11_CAP_ESS (0x0001) /** Extended service set capability */ --#define DOT11_CAP_IBSS (0x0002) /** Ad-hoc capability (Independent Basic Service Set) */ --#define DOT11_CAP_PRIVACY (0x0010) /** Privacy subfield - indicates data confidentiality is required for all data frames exchanged */ -- --#define CH_MAX_2G_CHANNEL (14) /* Max channel in 2G band */ --#define MAX_WFDS_SVC_NAME_LEN (200) /* maximum service_name length */ -- --#define ACTION_FRAME_SIZE 1040 --typedef uint16_t chanspec_t; --#define ETHER_ADDR_LEN 6 -- --typedef struct ether_addr --{ -- uint8_t octet[ETHER_ADDR_LEN]; --} wl_ether_addr_t; --struct wl_ether_header --{ -- uint8_t ether_dhost[ETHER_ADDR_LEN]; -- uint8_t ether_shost[ETHER_ADDR_LEN]; -- uint16_t ether_type; --}; --typedef struct wl_action_frame --{ -- wl_ether_addr_t da; -- uint16_t len; -- uint32_t packetId; -- uint8_t data[ACTION_FRAME_SIZE]; --} wl_action_frame_t; -- --typedef struct wl_af_params --{ -- uint32_t channel; -- int32_t dwell_time; -- struct ether_addr BSSID; -- wl_action_frame_t action_frame; --} wl_af_params_t; -- --#define WL_WIFI_AF_PARAMS_SIZE sizeof(struct wl_af_params) -- --/* ether types */ --#define ETHER_TYPE_LEN 2 --#define ETHER_TYPE_MIN 0x0600 /* Anything less than MIN is a length */ --#define ETHER_TYPE_IP 0x0800 /* IP */ --#define ETHER_TYPE_ARP 0x0806 /* ARP */ --#define ETHER_TYPE_8021Q 0x8100 /* 802.1Q */ --#define ETHER_TYPE_802_1X 0x888e /* 802.1x */ --#define ETHER_TYPE_WAI 0x88b4 /* WAPI WAI */ --#define ETHER_TYPE_802_1X_PREAUTH 0x88c7 /* 802.1x preauthentication */ --#define WL_WIFI_ACTION_FRAME_SIZE sizeof(struct wl_action_frame) --#define BWL_DEFAULT_PACKING -- --#define RWL_ACTION_WIFI_CATEGORY 127 --#define RWL_WIFI_OUI_BYTE1 0x90 --#define RWL_WIFI_OUI_BYTE2 0x4C --#define RWL_WIFI_OUI_BYTE3 0x0F --#define RWL_WIFI_ACTION_FRAME_SIZE sizeof(struct dot11_action_wifi_vendor_specific) --#define RWL_WIFI_DEFAULT 0x00 --#define RWL_WIFI_FIND_MY_PEER 0x09 --#define RWL_WIFI_FOUND_PEER 0x0A --#define RWL_ACTION_WIFI_FRAG_TYPE 0x55 -- --typedef struct ssid_info --{ -- uint8_t ssid_len; -- uint8_t ssid[32]; --} ssid_info_t; --typedef struct cnt_rx --{ -- uint32_t cnt_rxundec; -- uint32_t cnt_rxframe; --} cnt_rx_t; --#define RWL_REF_MAC_ADDRESS_OFFSET 17 --#define RWL_DUT_MAC_ADDRESS_OFFSET 23 --#define RWL_WIFI_CLIENT_CHANNEL_OFFSET 50 --#define RWL_WIFI_SERVER_CHANNEL_OFFSET 51 --#define WL_BSS_INFO_VERSION 109 --#define MCSSET_LEN 16 -- --typedef struct wlc_ssid --{ -- uint32_t SSID_len; -- uint8_t SSID[32]; --} wlc_ssid_t; --#define WL_BSSTYPE_INFRA 1 --#define WL_BSSTYPE_INDEP 0 --#define WL_BSSTYPE_ANY 2 --#define WL_SCANFLAGS_PASSIVE 0x01 --#define WL_SCANFLAGS_PROHIBITED 0x04 --typedef struct wl_scan_params --{ -- wlc_ssid_t ssid; -- wl_ether_addr_t bssid; -- int8_t bss_type; -- int8_t scan_type; -- int32_t nprobes; -- int32_t active_time; -- int32_t passive_time; -- int32_t home_time; -- int32_t channel_num; -- uint16_t channel_list[1]; --} wl_scan_params_t; --#define WL_SCAN_PARAMS_FIXED_SIZE (64) --#define WL_SCAN_PARAMS_COUNT_MASK (0x0000ffff) --#define WL_SCAN_PARAMS_NSSID_SHIFT (16) --#define WL_SCAN_ACTION_START (1) --#define WL_SCAN_ACTION_CONTINUE (2) --#define WL_SCAN_ACTION_ABORT (3) --#define ISCAN_REQ_VERSION (1) --typedef struct wl_iscan_params --{ -- uint32_t version; -- uint16_t action; -- uint16_t scan_duration; -- wl_scan_params_t params; --} wl_iscan_params_t; --#define WL_ISCAN_PARAMS_FIXED_SIZE (offsetof(wl_iscan_params_t, params) + sizeof(wlc_ssid_t) ) --typedef struct wl_scan_results --{ -- uint32_t buflen; -- uint32_t version; -- uint32_t count; -- wl_bss_info_t bss_info[1]; --} wl_scan_results_t; --#define WL_SCAN_RESULTS_FIXED_SIZE (12) --#define WL_SCAN_RESULTS_SUCCESS (0) --#define WL_SCAN_RESULTS_PARTIAL (1) --#define WL_SCAN_RESULTS_PENDING (2) --#define WL_SCAN_RESULTS_ABORTED (3) --#define WL_SCAN_RESULTS_NO_MEM (4) --#define ESCAN_REQ_VERSION 1 --typedef struct wl_escan_params --{ -- uint32_t version; -- uint16_t action; -- uint16_t sync_id; -- wl_scan_params_t params; --} wl_escan_params_t; --#define WL_ESCAN_PARAMS_FIXED_SIZE (offsetof(wl_escan_params_t, params) + sizeof(wlc_ssid_t) ) --typedef struct wl_escan_result --{ -- uint32_t buflen; -- uint32_t version; -- uint16_t sync_id; -- uint16_t bss_count; -- wl_bss_info_t bss_info[1]; --} wl_escan_result_t; --#define WL_ESCAN_RESULTS_FIXED_SIZE (sizeof(wl_escan_result_t) - sizeof(wl_bss_info_t) ) --typedef struct wl_iscan_results --{ -- uint32_t status; -- wl_scan_results_t results; --} wl_iscan_results_t; --#define WL_ISCAN_RESULTS_FIXED_SIZE \ -- (WL_SCAN_RESULTS_FIXED_SIZE + offsetof(wl_iscan_results_t, results) ) --#define WL_MAXRATES_IN_SET 16 /* max # of rates in a rateset */ --typedef struct wl_rateset --{ -- uint32_t count; /* # rates in this set */ -- uint8_t rates[WL_MAXRATES_IN_SET]; /* rates in 500kbps units w/hi bit set if basic */ --} wl_rateset_t; -- --typedef struct wl_rateset_args --{ -- uint32_t count; /* # rates in this set */ -- uint8_t rates[WL_MAXRATES_IN_SET]; /* rates in 500kbps units w/hi bit set if basic */ -- uint8_t mcs[WL_MAXRATES_IN_SET]; /* supported mcs index bit map */ --} wl_rateset_args_t; -- --#define WL_RSPEC_RATE_MASK 0x000000FF /* rate or HT MCS value */ --#define WL_RSPEC_VHT_MCS_MASK 0x0000000F /* VHT MCS value */ --#define WL_RSPEC_VHT_NSS_MASK 0x000000F0 /* VHT Nss value */ --#define WL_RSPEC_VHT_NSS_SHIFT 4 /* VHT Nss value shift */ --#define WL_RSPEC_TXEXP_MASK 0x00000300 --#define WL_RSPEC_TXEXP_SHIFT 8 --#define WL_RSPEC_BW_MASK 0x00070000 /* bandwidth mask */ --#define WL_RSPEC_BW_SHIFT 16 /* bandwidth shift */ --#define WL_RSPEC_STBC 0x00100000 /* STBC encoding, Nsts = 2 x Nss */ --#define WL_RSPEC_TXBF 0x00200000 /* bit indicates TXBF mode */ --#define WL_RSPEC_LDPC 0x00400000 /* bit indicates adv coding in use */ --#define WL_RSPEC_SGI 0x00800000 /* Short GI mode */ --#define WL_RSPEC_ENCODING_MASK 0x03000000 /* Encoding of Rate/MCS field */ --#define WL_RSPEC_OVERRIDE_RATE 0x40000000 /* bit indicate to override mcs only */ --#define WL_RSPEC_OVERRIDE_MODE 0x80000000 /* bit indicates override both rate & mode */ --#define WL_RSPEC_BW_UNSPECIFIED 0 --#define WL_RSPEC_BW_20MHZ 0x00010000 --#define WL_RSPEC_BW_40MHZ 0x00020000 --#define WL_RSPEC_BW_80MHZ 0x00030000 --#define WL_RSPEC_BW_160MHZ 0x00040000 --#define WL_RSPEC_BW_10MHZ 0x00050000 --#define WL_RSPEC_BW_5MHZ 0x00060000 --#define WL_RSPEC_BW_2P5MHZ 0x00070000 --#define WL_RSPEC_ENCODE_RATE 0x00000000 /* Legacy rate is stored in RSPEC_RATE_MASK */ --#define WL_RSPEC_ENCODE_HT 0x01000000 /* HT MCS is stored in RSPEC_RATE_MASK */ --#define WL_RSPEC_ENCODE_VHT 0x02000000 /* VHT MCS and Nss is stored in RSPEC_RATE_MASK */ -- --typedef struct wl_uint32_list --{ -- uint32_t count; -- uint32_t element[1]; --} wl_uint32_list_t; -- --typedef struct wl_join_scan_params --{ -- uint8_t scan_type; /* 0 use default, active or passive scan */ -- int32_t nprobes; /* -1 use default, number of probes per channel */ -- int32_t active_time; /* -1 use default, dwell time per channel for -- * active scanning -- */ -- int32_t passive_time; /* -1 use default, dwell time per channel -- * for passive scanning -- */ -- int32_t home_time; /* -1 use default, dwell time for the home channel -- * between channel scans -- */ --} wl_join_scan_params_t; -- --#define NRATE_MCS_INUSE (0x00000080) --#define NRATE_RATE_MASK (0x0000007f) --#define NRATE_STF_MASK (0x0000ff00) --#define NRATE_STF_SHIFT (8) --#define NRATE_OVERRIDE (0x80000000) --#define NRATE_OVERRIDE_MCS_ONLY (0x40000000) --#define NRATE_SGI_MASK (0x00800000) --#define NRATE_SGI_SHIFT (23) --#define NRATE_LDPC_CODING (0x00400000) --#define NRATE_LDPC_SHIFT (22) --#define NRATE_BCMC_OVERRIDE (0x00200000) --#define NRATE_BCMC_SHIFT (21) --#define NRATE_STF_SISO (0) --#define NRATE_STF_CDD (1) --#define NRATE_STF_STBC (2) --#define NRATE_STF_SDM (3) --#define ANTENNA_NUM_1 (1) --#define ANTENNA_NUM_2 (2) --#define ANTENNA_NUM_3 (3) --#define ANTENNA_NUM_4 (4) --#define ANT_SELCFG_AUTO (0x80) --#define ANT_SELCFG_MASK (0x33) --#define ANT_SELCFG_MAX (4) --#define ANT_SELCFG_TX_UNICAST (0) --#define ANT_SELCFG_RX_UNICAST (1) --#define ANT_SELCFG_TX_DEF (2) --#define ANT_SELCFG_RX_DEF (3) --typedef struct --{ -- uint8_t ant_config[ANT_SELCFG_MAX]; -- uint8_t num_antcfg; --} wlc_antselcfg_t; --#define HIGHEST_SINGLE_STREAM_MCS (7) --#define WLC_CNTRY_BUF_SZ (4) --typedef struct wl_country --{ -- char country_abbrev[WLC_CNTRY_BUF_SZ]; -- int32_t rev; -- char ccode[WLC_CNTRY_BUF_SZ]; --} wl_country_t; --typedef struct wl_channels_in_country --{ -- uint32_t buflen; -- uint32_t band; -- int8_t country_abbrev[WLC_CNTRY_BUF_SZ]; -- uint32_t count; -- uint32_t channel[1]; --} wl_channels_in_country_t; --typedef struct wl_country_list --{ -- uint32_t buflen; -- uint32_t band_set; -- uint32_t band; -- uint32_t count; -- int8_t country_abbrev[1]; --} wl_country_list_t; --#define WL_NUM_RPI_BINS 8 --#define WL_RM_TYPE_BASIC 1 --#define WL_RM_TYPE_CCA 2 --#define WL_RM_TYPE_RPI 3 --#define WL_RM_FLAG_PARALLEL (1 << 0) --#define WL_RM_FLAG_LATE (1 << 1) --#define WL_RM_FLAG_INCAPABLE (1 << 2) --#define WL_RM_FLAG_REFUSED (1 << 3) --typedef struct wl_rm_req_elt --{ -- int8_t type; -- int8_t flags; -- wl_chanspec_t chanspec; -- uint32_t token; -- uint32_t tsf_h; -- uint32_t tsf_l; -- uint32_t dur; --} wl_rm_req_elt_t; --typedef struct wl_rm_req --{ -- uint32_t token; -- uint32_t count; -- void *cb; -- void *cb_arg; -- wl_rm_req_elt_t req[1]; --} wl_rm_req_t; --#define WL_RM_REQ_FIXED_LEN offsetof(wl_rm_req_t, req) --typedef struct wl_rm_rep_elt --{ -- int8_t type; -- int8_t flags; -- wl_chanspec_t chanspec; -- uint32_t token; -- uint32_t tsf_h; -- uint32_t tsf_l; -- uint32_t dur; -- uint32_t len; -- uint8_t data[1]; --} wl_rm_rep_elt_t; --#define WL_RM_REP_ELT_FIXED_LEN 24 --#define WL_RPI_REP_BIN_NUM 8 --typedef struct wl_rm_rpi_rep --{ -- uint8_t rpi[WL_RPI_REP_BIN_NUM]; -- int8_t rpi_max[WL_RPI_REP_BIN_NUM]; --} wl_rm_rpi_rep_t; --typedef struct wl_rm_rep --{ -- uint32_t token; -- uint32_t len; -- wl_rm_rep_elt_t rep[1]; --} wl_rm_rep_t; --#define WL_RM_REP_FIXED_LEN 8 --#define CRYPTO_ALGO_OFF 0 --#define CRYPTO_ALGO_WEP1 1 --#define CRYPTO_ALGO_TKIP 2 --#define CRYPTO_ALGO_WEP128 3 --#define CRYPTO_ALGO_AES_CCM 4 --#define CRYPTO_ALGO_AES_OCB_MSDU 5 --#define CRYPTO_ALGO_AES_OCB_MPDU 6 --#define CRYPTO_ALGO_NALG 7 --#define WSEC_GEN_MIC_ERROR 0x0001 --#define WSEC_GEN_REPLAY 0x0002 --#define WSEC_GEN_ICV_ERROR 0x0004 --#define WL_SOFT_KEY (1 << 0) --#define WL_PRIMARY_KEY (1 << 1) --#define WL_KF_RES_4 (1 << 4) --#define WL_KF_RES_5 (1 << 5) --#define WL_IBSS_PEER_GROUP_KEY (1 << 6) --#define DOT11_MAX_KEY_SIZE 32 --typedef struct wl_wsec_key --{ -- uint32_t index; -- uint32_t len; -- uint8_t data[DOT11_MAX_KEY_SIZE]; -- uint32_t pad_1[18]; -- uint32_t algo; -- uint32_t flags; -- uint32_t pad_2[2]; -- int32_t pad_3; -- int32_t iv_initialized; -- int32_t pad_4; -- struct -- { -- uint32_t hi; -- uint16_t lo; -- } rxiv; -- uint32_t pad_5[2]; -- wl_ether_addr_t ea; --} wl_wsec_key_t; --#define WSEC_MIN_PSK_LEN 8 --#define WSEC_MAX_PSK_LEN 64 --#define WSEC_PASSPHRASE (1 << 0) --typedef struct --{ -- uint16_t key_len; -- uint16_t flags; -- uint8_t key[WSEC_MAX_PSK_LEN]; --} wsec_pmk_t; -- --#define WSEC_MAX_SAE_PASSWORD_LEN 128 --typedef struct --{ -- uint16_t password_len; /* octets in key materials */ -- uint8_t password[WSEC_MAX_SAE_PASSWORD_LEN]; /* maximum key len for SAE passphrase */ --} wsec_sae_password_t; -- --#define OPEN_AUTH 0x0000 --#define SHARED_AUTH 0x0001 --//#define WEP_ENABLED 0x0001 // moved to whd_types.h --//#define TKIP_ENABLED 0x0002 --//#define AES_ENABLED 0x0004 -- --typedef enum --{ -- AUTH_ALGO_80211_OPEN = 1, AUTH_ALGO_80211_SHARED_KEY = 2, AUTH_ALGO_WPA = 3, AUTH_ALGO_WPA_PSK = 4, -- AUTH_ALGO_WPA_NONE = 5, AUTH_ALGO_RSNA = 6, AUTH_ALGO_RSNA_PSK = 7, --} AUTH_ALGORITHM; -- --#define WSEC_SWFLAG 0x0008 --#define CKIP_KP_ENABLED 0x0010 --#define CKIP_MIC_ENABLED 0x0020 --#define SES_OW_ENABLED 0x0040 --#define FIPS_ENABLED 0x0080 --#define SMS4_ENABLED 0x0100 -- --#define MFP_NONE 0x0000 --#define MFP_CAPABLE 0x0200 --#define MFP_REQUIRED 0x0400 --#define MFP_SHA256 0x0800 /* a special configuration for STA for WIFI test tool */ -- --#define WPA_AUTH_DISABLED 0x0000 --#define WPA_AUTH_NONE 0x0001 --#define WPA_AUTH_UNSPECIFIED 0x0002 --#define WPA_AUTH_PSK 0x0004 --#define WPA_AUTH_CCKM 0x0008 --#define WPA2_AUTH_CCKM 0x0010 --#define WPA2_AUTH_UNSPECIFIED 0x0040 --#define WPA2_AUTH_PSK 0x0080 --#define BRCM_AUTH_PSK 0x0100 --#define BRCM_AUTH_DPT 0x0200 --#define WPA_AUTH_WAPI 0x0400 --#define WPA2_AUTH_MFP 0x1000 /* MFP (11w) in contrast to CCX */ -- --#define WPA2_AUTH_1X_SHA256 0x1000 /* 1X with SHA256 key derivation */ --#define WPA2_AUTH_TPK 0x2000 /* TDLS Peer Key */ --#define WPA2_AUTH_FT 0x4000 /* Fast Transition. */ --#define WPA2_AUTH_PSK_SHA256 0x8000 /* PSK with SHA256 key derivation */ --#define WPA2_AUTH_FILS_SHA256 0x10000 /* FILS with SHA256 key derivation */ --#define WPA2_AUTH_FILS_SHA384 0x20000 /* FILS with SHA384 key derivation */ --#define WPA2_AUTH_IS_FILS(auth) ( (auth) & (WPA2_AUTH_FILS_SHA256 | WPA2_AUTH_FILS_SHA384) ) --#define WPA3_AUTH_SAE_PSK 0x40000 /* SAE authentication with SHA-256 */ --#define WPA3_AUTH_SAE_FBT 0x80000 /* FT authentication over SAE */ --#define WPA3_AUTH_OWE 0x100000 /* OWE */ --#define WPA_AUTH_PFN_ANY 0xffffffff /* for PFN, match only ssid */ -- --#define MAXPMKID 16 --#define WPA2_PMKID_LEN 16 --typedef struct _pmkid --{ -- wl_ether_addr_t BSSID; -- uint8_t PMKID[WPA2_PMKID_LEN]; --} pmkid_t; --typedef struct _pmkid_list --{ -- uint32_t npmkid; -- pmkid_t pmkid[1]; --} pmkid_list_t; --typedef struct _pmkid_cand --{ -- wl_ether_addr_t BSSID; -- uint8_t preauth; --} pmkid_cand_t; --typedef struct _pmkid_cand_list --{ -- uint32_t npmkid_cand; -- pmkid_cand_t pmkid_cand[1]; --} pmkid_cand_list_t; --typedef struct wl_led_info --{ -- uint32_t index; -- uint32_t behavior; -- uint8_t activehi; --} wl_led_info_t; --struct wl_dot11_assoc_req --{ -- uint16_t capability; -- uint16_t listen; --}; --struct wl_dot11_assoc_resp --{ -- uint16_t capability; -- uint16_t status; -- uint16_t aid; --}; --typedef struct wl_assoc_info --{ -- uint32_t req_len; -- uint32_t resp_len; -- uint32_t flags; -- struct wl_dot11_assoc_req req; -- wl_ether_addr_t reassoc_bssid; -- struct wl_dot11_assoc_resp resp; --} wl_assoc_info_t; --#define WLC_ASSOC_REQ_IS_REASSOC 0x01 --typedef struct --{ -- uint32_t byteoff; -- uint32_t nbytes; -- uint16_t buf[1]; --} srom_rw_t; --typedef struct --{ -- uint32_t source; -- uint32_t byteoff; -- uint32_t nbytes; --} cis_rw_t; --#define WLC_CIS_DEFAULT 0 --#define WLC_CIS_SROM 1 --#define WLC_CIS_OTP 2 --typedef struct --{ -- uint32_t byteoff; -- uint32_t val; -- uint32_t size; -- uint32_t band; --} rw_reg_t; --#define WL_ATTEN_APP_INPUT_PCL_OFF 0 --#define WL_ATTEN_PCL_ON 1 --#define WL_ATTEN_PCL_OFF 2 --typedef struct --{ -- uint16_t auto_ctrl; -- uint16_t bb; -- uint16_t radio; -- uint16_t txctl1; --} atten_t; --struct wme_tx_params_s --{ -- uint8_t short_retry; -- uint8_t short_fallback; -- uint8_t long_retry; -- uint8_t long_fallback; -- uint16_t max_rate; --}; --typedef struct wme_tx_params_s wme_tx_params_t; --#define WL_WME_TX_PARAMS_IO_BYTES (sizeof(wme_tx_params_t) * AC_COUNT) --#define WL_PWRIDX_PCL_OFF -2 --#define WL_PWRIDX_PCL_ON -1 --#define WL_PWRIDX_LOWER_LIMIT -2 --#define WL_PWRIDX_UPPER_LIMIT 63 --typedef struct --{ -- uint32_t val; -- wl_ether_addr_t ea; --} scb_val_t; --#define BCM_MAC_STATUS_INDICATION (0x40010200L) --typedef struct --{ -- uint16_t ver; -- uint16_t len; -- uint16_t cap; -- uint32_t flags; -- uint32_t idle; -- wl_ether_addr_t ea; -- wl_rateset_t rateset; -- uint32_t in; -- uint32_t listen_interval_inms; -- uint32_t tx_pkts; -- uint32_t tx_failures; -- uint32_t rx_ucast_pkts; -- uint32_t rx_mcast_pkts; -- uint32_t tx_rate; -- uint32_t rx_rate; --} sta_info_t; --#define WL_OLD_STAINFO_SIZE offsetof(sta_info_t, tx_pkts) --#define WL_STA_VER 2 --#define WL_STA_BRCM 0x1 --#define WL_STA_WME 0x2 --#define WL_STA_ABCAP 0x4 --#define WL_STA_AUTHE 0x8 --#define WL_STA_ASSOC 0x10 --#define WL_STA_AUTHO 0x20 --#define WL_STA_WDS 0x40 --#define WL_STA_WDS_LINKUP 0x80 --#define WL_STA_PS 0x100 --#define WL_STA_APSD_BE 0x200 --#define WL_STA_APSD_BK 0x400 --#define WL_STA_APSD_VI 0x800 --#define WL_STA_APSD_VO 0x1000 --#define WL_STA_N_CAP 0x2000 --#define WL_STA_SCBSTATS 0x4000 --#define WL_WDS_LINKUP WL_STA_WDS_LINKUP --typedef struct channel_info --{ -- int32_t hw_channel; -- int32_t target_channel; -- int32_t scan_channel; --} channel_info_t; --struct mac_list --{ -- uint32_t count; -- wl_ether_addr_t ea[1]; --}; --typedef struct get_pktcnt --{ -- uint32_t rx_good_pkt; -- uint32_t rx_bad_pkt; -- uint32_t tx_good_pkt; -- uint32_t tx_bad_pkt; -- uint32_t rx_ocast_good_pkt; --} get_pktcnt_t; --typedef struct wl_ioctl --{ -- uint32_t cmd; -- void *buf; -- uint32_t len; -- uint8_t set; -- uint32_t used; -- uint32_t needed; --} wl_ioctl_t; --typedef struct wlc_rev_info --{ -- uint32_t vendorid; -- uint32_t deviceid; -- uint32_t radiorev; -- uint32_t chiprev; -- uint32_t corerev; -- uint32_t boardid; -- uint32_t boardvendor; -- uint32_t boardrev; -- uint32_t driverrev; -- uint32_t ucoderev; -- uint32_t bus; -- uint32_t chipnum; -- uint32_t phytype; -- uint32_t phyrev; -- uint32_t anarev; --} wlc_rev_info_t; --#define WL_REV_INFO_LEGACY_LENGTH 48 --#define WL_BRAND_MAX 10 --typedef struct wl_instance_info --{ -- uint32_t instance; -- int8_t brand[WL_BRAND_MAX]; --} wl_instance_info_t; --typedef struct wl_txfifo_sz --{ -- uint8_t fifo; -- uint8_t size; --} wl_txfifo_sz_t; --#define WLC_IOV_NAME_LEN 30 --typedef struct wlc_iov_trx_s --{ -- uint8_t module; -- uint8_t type; -- int8_t name[WLC_IOV_NAME_LEN]; --} wlc_iov_trx_t; -- --/* Event mask ext support */ --typedef enum event_msgs_ext_command --{ -- EVENTMSGS_NONE = 0, EVENTMSGS_SET_BIT = 1, EVENTMSGS_RESET_BIT = 2, EVENTMSGS_SET_MASK = 3 --} event_msgs_ext_command_t; -- --#define EVENTMSGS_VER 1 -- --/* len- for SET it would be mask size from the application to the firmware */ --/* for GET it would be actual firmware mask size */ --/* maxgetsize - is only used for GET. indicate max mask size that the */ --/* application can read from the firmware */ --typedef struct eventmsgs_ext --{ -- uint8_t ver; -- uint8_t command; -- uint8_t len; -- uint8_t maxgetsize; -- uint8_t mask[1]; --} eventmsgs_ext_t; -- --#define IOVAR_STR_ACTFRAME "actframe" --#define IOVAR_STR_BSS "bss" --#define IOVAR_STR_BSS_RATESET "bss_rateset" --#define IOVAR_STR_CSA "csa" --#define IOVAR_STR_AMPDU_TID "ampdu_tid" --#define IOVAR_STR_APSTA "apsta" --#define IOVAR_STR_ALLMULTI "allmulti" --#define IOVAR_STR_COUNTRY "country" --#define IOVAR_STR_EVENT_MSGS "event_msgs" --#define IOVAR_STR_EVENT_MSGS_EXT "event_msgs_ext" --#define IOVAR_STR_ESCAN "escan" --#define IOVAR_STR_SUP_WPA "sup_wpa" --#define IOVAR_STR_CUR_ETHERADDR "cur_etheraddr" --#define IOVAR_STR_QTXPOWER "qtxpower" --#define IOVAR_STR_MCAST_LIST "mcast_list" --#define IOVAR_STR_PM2_SLEEP_RET "pm2_sleep_ret" --#define IOVAR_STR_PM_LIMIT "pm_limit" --#define IOVAR_STR_LISTEN_INTERVAL_BEACON "bcn_li_bcn" --#define IOVAR_STR_LISTEN_INTERVAL_DTIM "bcn_li_dtim" --#define IOVAR_STR_LISTEN_INTERVAL_ASSOC "assoc_listen" --#define IOVAR_PSPOLL_PERIOD "pspoll_prd" --#define IOVAR_STR_VENDOR_IE "vndr_ie" --#define IOVAR_STR_TX_GLOM "bus:txglom" --#define IOVAR_STR_ACTION_FRAME "actframe" --#define IOVAR_STR_AC_PARAMS_STA "wme_ac_sta" --#define IOVAR_STR_COUNTERS "counters" --#define IOVAR_STR_PKT_FILTER_ADD "pkt_filter_add" --#define IOVAR_STR_PKT_FILTER_DELETE "pkt_filter_delete" --#define IOVAR_STR_PKT_FILTER_ENABLE "pkt_filter_enable" --#define IOVAR_STR_PKT_FILTER_MODE "pkt_filter_mode" --#define IOVAR_STR_PKT_FILTER_LIST "pkt_filter_list" --#define IOVAR_STR_PKT_FILTER_STATS "pkt_filter_stats" --#define IOVAR_STR_PKT_FILTER_CLEAR_STATS "pkt_filter_clear_stats" --#define IOVAR_STR_DUTY_CYCLE_CCK "dutycycle_cck" --#define IOVAR_STR_DUTY_CYCLE_OFDM "dutycycle_ofdm" --#define IOVAR_STR_MKEEP_ALIVE "mkeep_alive" --#define IOVAR_STR_VERSION "ver" --#define IOVAR_STR_SUP_WPA2_EAPVER "sup_wpa2_eapver" --#define IOVAR_STR_ROAM_OFF "roam_off" --#define IOVAR_STR_CLOSEDNET "closednet" --#define IOVAR_STR_P2P_DISC "p2p_disc" --#define IOVAR_STR_P2P_DEV "p2p_dev" --#define IOVAR_STR_P2P_IF "p2p_if" --#define IOVAR_STR_P2P_IFADD "p2p_ifadd" --#define IOVAR_STR_P2P_IFDEL "p2p_ifdel" --#define IOVAR_STR_P2P_IFUPD "p2p_ifupd" --#define IOVAR_STR_P2P_SCAN "p2p_scan" --#define IOVAR_STR_P2P_STATE "p2p_state" --#define IOVAR_STR_P2P_SSID "p2p_ssid" --#define IOVAR_STR_P2P_IP_ADDR "p2p_ip_addr" --#define IOVAR_STR_NRATE "nrate" --#define IOVAR_STR_BGRATE "bg_rate" --#define IOVAR_STR_ARATE "a_rate" --#define IOVAR_STR_NMODE "nmode" --#define IOVAR_STR_MAX_ASSOC "maxassoc" --#define IOVAR_STR_2G_MULTICAST_RATE "2g_mrate" --#define IOVAR_STR_2G_RATE "2g_rate" --#define IOVAR_STR_MPC "mpc" --#define IOVAR_STR_IBSS_JOIN "IBSS_join_only" --#define IOVAR_STR_AMPDU_BA_WINDOW_SIZE "ampdu_ba_wsize" --#define IOVAR_STR_AMPDU_MPDU "ampdu_mpdu" --#define IOVAR_STR_AMPDU_RX "ampdu_rx" --#define IOVAR_STR_AMPDU_RX_FACTOR "ampdu_rx_factor" --#define IOVAR_STR_AMPDU_HOST_REORDER "ampdu_hostreorder" --#define IOVAR_STR_MIMO_BW_CAP "mimo_bw_cap" --#define IOVAR_STR_RMC_ACKREQ "rmc_ackreq" --#define IOVAR_STR_RMC_STATUS "rmc_status" --#define IOVAR_STR_RMC_COUNTS "rmc_stats" --#define IOVAR_STR_RMC_ROLE "rmc_role" --#define IOVAR_STR_HT40_INTOLERANCE "intol40" --#define IOVAR_STR_RAND "rand" --#define IOVAR_STR_SSID "ssid" --#define IOVAR_STR_WSEC "wsec" --#define IOVAR_STR_WPA_AUTH "wpa_auth" --#define IOVAR_STR_INTERFACE_REMOVE "interface_remove" --#define IOVAR_STR_SUP_WPA_TMO "sup_wpa_tmo" --#define IOVAR_STR_JOIN "join" --#define IOVAR_STR_TLV "tlv" --#define IOVAR_STR_NPHY_ANTSEL "nphy_antsel" --#define IOVAR_STR_AVB_TIMESTAMP_ADDR "avb_timestamp_addr" --#define IOVAR_STR_BSS_MAX_ASSOC "bss_maxassoc" --#define IOVAR_STR_RM_REQ "rm_req" --#define IOVAR_STR_RM_REP "rm_rep" --#define IOVAR_STR_PSPRETEND_RETRY_LIMIT "pspretend_retry_limit" --#define IOVAR_STR_PSPRETEND_THRESHOLD "pspretend_threshold" --#define IOVAR_STR_SWDIV_TIMEOUT "swdiv_timeout" --#define IOVAR_STR_RESET_CNTS "reset_cnts" --#define IOVAR_STR_PHYRATE_LOG "phyrate_log" --#define IOVAR_STR_PHYRATE_LOG_SIZE "phyrate_log_size" --#define IOVAR_STR_PHYRATE_LOG_DUMP "phyrate_dump" --#define IOVAR_STR_SCAN_ASSOC_TIME "scan_assoc_time" --#define IOVAR_STR_SCAN_UNASSOC_TIME "scan_unassoc_time" --#define IOVAR_STR_SCAN_PASSIVE_TIME "scan_passive_time" --#define IOVAR_STR_SCAN_HOME_TIME "scan_home_time" --#define IOVAR_STR_SCAN_NPROBES "scan_nprobes" --#define IOVAR_STR_AUTOCOUNTRY "autocountry" --#define IOVAR_STR_CAP "cap" --#define IOVAR_STR_MPDU_PER_AMPDU "ampdu_mpdu" --#define IOVAR_STR_VHT_FEATURES "vht_features" --#define IOVAR_STR_CHANSPEC "chanspec" -- --#define IOVAR_STR_WOWL "wowl" --#define IOVAR_STR_WOWL_OS "wowl_os" --#define IOVAR_STR_WOWL_KEEP_ALIVE "wowl_keepalive" --#define IOVAR_STR_WOWL_PATTERN "wowl_pattern" --#define IOVAR_STR_WOWL_PATTERN_CLR "clr" --#define IOVAR_STR_WOWL_PATTERN_ADD "add" --#define IOVAR_STR_WOWL_ARP_HOST_IP "wowl_arp_hostip" --#define IOVAR_STR_ULP_WAIT "ulp_wait" --#define IOVAR_STR_ULP "ulp" -- --#define IOVAR_STR_PNO_ON "pfn" --#define IOVAR_STR_PNO_ADD "pfn_add" --#define IOVAR_STR_PNO_SET "pfn_set" --#define IOVAR_STR_PNO_CLEAR "pfnclear" --#define IOVAR_STR_SCAN_CACHE_CLEAR "scancache_clear" --#define MCS_SETLEN 16 -- --#define IOVAR_STR_RRM "rrm" --#define IOVAR_STR_RRM_NOISE_REQ "rrm_noise_req" --#define IOVAR_STR_RRM_NBR_REQ "rrm_nbr_req" --#define IOVAR_STR_RRM_LM_REQ "rrm_lm_req" --#define IOVAR_STR_RRM_STAT_REQ "rrm_stat_req" --#define IOVAR_STR_RRM_FRAME_REQ "rrm_frame_req" --#define IOVAR_STR_RRM_CHLOAD_REQ "rrm_chload_req" --#define IOVAR_STR_RRM_BCN_REQ "rrm_bcn_req" --#define IOVAR_STR_RRM_NBR_LIST "rrm_nbr_list" --#define IOVAR_STR_RRM_NBR_ADD "rrm_nbr_add_nbr" --#define IOVAR_STR_RRM_NBR_DEL "rrm_nbr_del_nbr" --#define IOVAR_STR_RRM_BCNREQ_THRTL_WIN "rrm_bcn_req_thrtl_win" --#define IOVAR_STR_RRM_BCNREQ_MAXOFF_TIME "rrm_bcn_req_max_off_chan_time" --#define IOVAR_STR_RRM_BCNREQ_TRFMS_PRD "rrm_bcn_req_traff_meas_per" -- --#define IOVAR_STR_WNM "wnm" --#define IOVAR_STR_BSSTRANS_QUERY "wnm_bsstrans_query" --#define IOVAR_STR_BSSTRANS_RESP "wnm_bsstrans_resp" -- --#define IOVAR_STR_MESH_ADD_ROUTE "mesh_add_route" --#define IOVAR_STR_MESH_DEL_ROUTE "mesh_del_route" --#define IOVAR_STR_MESH_FIND "mesh_find" --#define IOVAR_STR_MESH_FILTER "mesh_filter" --#define IOVAR_STR_MESH_PEER "mesh_peer" --#define IOVAR_STR_MESH_PEER_STATUS "mesh_peer_status" --#define IOVAR_STR_MESH_DELFILTER "mesh_delfilter" --#define IOVAR_STR_MESH_MAX_PEERS "mesh_max_peers" -- --#define IOVAR_STR_FBT_OVER_DS "fbtoverds" --#define IOVAR_STR_FBT_CAPABILITIES "fbt_cap" -- --#define IOVAR_STR_MFP "mfp" -- --#define IOVAR_STR_OTPRAW "otpraw" --#define IOVAR_NAN "nan" --#define IOVAR_STR_CLMLOAD "clmload" --#define IOVAR_STR_CLMLOAD_STATUS "clmload_status" --#define IOVAR_STR_CLMVER "clmver" --#define IOVAR_STR_MEMUSE "memuse" -- --#define IOVAR_STR_LDPC_CAP "ldpc_cap" --#define IOVAR_STR_LDPC_TX "ldpc_tx" --#define IOVAR_STR_SGI_RX "sgi_rx" --#define IOVAR_STR_SGI_TX "sgi_tx" -- --#define IOVAR_STR_APIVTW_OVERRIDE "brcmapivtwo" -- --#define IOVAR_STR_BWTE_BWTE_GCI_MASK "bwte_gci_mask" --#define IOVAR_STR_BWTE_GCI_SENDMSG "bwte_gci_sendm" --#define IOVAR_STR_WD_DISABLE "wd_disable" --#define IOVAR_STR_DLTRO "dltro" --#define IOVAR_STR_SAE_PASSWORD "sae_password" -- --#define IOVAR_STR_BTC_LESCAN_PARAMS "btc_lescan_params" -- --#define IOVAR_STR_ARP_VERSION "arp_version" --#define IOVAR_STR_ARP_PEERAGE "arp_peerage" --#define IOVAR_STR_ARPOE "arpoe" --#define IOVAR_STR_ARP_OL "arp_ol" --#define IOVAR_STR_ARP_TABLE_CLEAR "arp_table_clear" --#define IOVAR_STR_ARP_HOSTIP "arp_hostip" --#define IOVAR_STR_ARP_HOSTIP_CLEAR "arp_hostip_clear" --#define IOVAR_STR_ARP_STATS "arp_stats" --#define IOVAR_STR_ARP_STATS_CLEAR "arp_stats_clear" --#define IOVAR_STR_TKO "tko" -- --/* This value derived from the above strings, which appear maxed out in the 20s */ --#define IOVAR_NAME_STR_MAX_SIZE 32 -- --#define WLC_IOCTL_MAGIC (0x14e46c77) --#define WLC_IOCTL_VERSION (1) --#define WLC_IOCTL_SMLEN (256) --#define WLC_IOCTL_MEDLEN (1536) --#define WLC_IOCTL_MAXLEN (8192) -- --#define WLC_GET_MAGIC ( (uint32_t)0 ) --#define WLC_GET_VERSION ( (uint32_t)1 ) --#define WLC_UP ( (uint32_t)2 ) --#define WLC_DOWN ( (uint32_t)3 ) --#define WLC_GET_LOOP ( (uint32_t)4 ) --#define WLC_SET_LOOP ( (uint32_t)5 ) --#define WLC_DUMP ( (uint32_t)6 ) --#define WLC_GET_MSGLEVEL ( (uint32_t)7 ) --#define WLC_SET_MSGLEVEL ( (uint32_t)8 ) --#define WLC_GET_PROMISC ( (uint32_t)9 ) --#define WLC_SET_PROMISC ( (uint32_t)10 ) --#define WLC_GET_RATE ( (uint32_t)12 ) --#define WLC_GET_INSTANCE ( (uint32_t)14 ) --#define WLC_GET_INFRA ( (uint32_t)19 ) --#define WLC_SET_INFRA ( (uint32_t)20 ) --#define WLC_GET_AUTH ( (uint32_t)21 ) --#define WLC_SET_AUTH ( (uint32_t)22 ) --#define WLC_GET_BSSID ( (uint32_t)23 ) --#define WLC_SET_BSSID ( (uint32_t)24 ) --#define WLC_GET_SSID ( (uint32_t)25 ) --#define WLC_SET_SSID ( (uint32_t)26 ) --#define WLC_RESTART ( (uint32_t)27 ) --#define WLC_GET_CHANNEL ( (uint32_t)29 ) --#define WLC_SET_CHANNEL ( (uint32_t)30 ) --#define WLC_GET_SRL ( (uint32_t)31 ) --#define WLC_SET_SRL ( (uint32_t)32 ) --#define WLC_GET_LRL ( (uint32_t)33 ) --#define WLC_SET_LRL ( (uint32_t)34 ) --#define WLC_GET_PLCPHDR ( (uint32_t)35 ) --#define WLC_SET_PLCPHDR ( (uint32_t)36 ) --#define WLC_GET_RADIO ( (uint32_t)37 ) --#define WLC_SET_RADIO ( (uint32_t)38 ) --#define WLC_GET_PHYTYPE ( (uint32_t)39 ) --#define WLC_DUMP_RATE ( (uint32_t)40 ) --#define WLC_SET_RATE_PARAMS ( (uint32_t)41 ) --#define WLC_GET_KEY ( (uint32_t)44 ) --#define WLC_SET_KEY ( (uint32_t)45 ) --#define WLC_GET_REGULATORY ( (uint32_t)46 ) --#define WLC_SET_REGULATORY ( (uint32_t)47 ) --#define WLC_GET_PASSIVE_SCAN ( (uint32_t)48 ) --#define WLC_SET_PASSIVE_SCAN ( (uint32_t)49 ) --#define WLC_SCAN ( (uint32_t)50 ) --#define WLC_SCAN_RESULTS ( (uint32_t)51 ) --#define WLC_DISASSOC ( (uint32_t)52 ) --#define WLC_REASSOC ( (uint32_t)53 ) --#define WLC_GET_ROAM_TRIGGER ( (uint32_t)54 ) --#define WLC_SET_ROAM_TRIGGER ( (uint32_t)55 ) --#define WLC_GET_ROAM_DELTA ( (uint32_t)56 ) --#define WLC_SET_ROAM_DELTA ( (uint32_t)57 ) --#define WLC_GET_ROAM_SCAN_PERIOD ( (uint32_t)58 ) --#define WLC_SET_ROAM_SCAN_PERIOD ( (uint32_t)59 ) --#define WLC_EVM ( (uint32_t)60 ) --#define WLC_GET_TXANT ( (uint32_t)61 ) --#define WLC_SET_TXANT ( (uint32_t)62 ) --#define WLC_GET_ANTDIV ( (uint32_t)63 ) --#define WLC_SET_ANTDIV ( (uint32_t)64 ) --#define WLC_GET_CLOSED ( (uint32_t)67 ) --#define WLC_SET_CLOSED ( (uint32_t)68 ) --#define WLC_GET_MACLIST ( (uint32_t)69 ) --#define WLC_SET_MACLIST ( (uint32_t)70 ) --#define WLC_GET_RATESET ( (uint32_t)71 ) --#define WLC_SET_RATESET ( (uint32_t)72 ) --#define WLC_LONGTRAIN ( (uint32_t)74 ) --#define WLC_GET_BCNPRD ( (uint32_t)75 ) --#define WLC_SET_BCNPRD ( (uint32_t)76 ) --#define WLC_GET_DTIMPRD ( (uint32_t)77 ) --#define WLC_SET_DTIMPRD ( (uint32_t)78 ) --#define WLC_GET_SROM ( (uint32_t)79 ) --#define WLC_SET_SROM ( (uint32_t)80 ) --#define WLC_GET_WEP_RESTRICT ( (uint32_t)81 ) --#define WLC_SET_WEP_RESTRICT ( (uint32_t)82 ) --#define WLC_GET_COUNTRY ( (uint32_t)83 ) --#define WLC_SET_COUNTRY ( (uint32_t)84 ) --#define WLC_GET_PM ( (uint32_t)85 ) --#define WLC_SET_PM ( (uint32_t)86 ) --#define WLC_GET_WAKE ( (uint32_t)87 ) --#define WLC_SET_WAKE ( (uint32_t)88 ) --#define WLC_GET_FORCELINK ( (uint32_t)90 ) --#define WLC_SET_FORCELINK ( (uint32_t)91 ) --#define WLC_FREQ_ACCURACY ( (uint32_t)92 ) --#define WLC_CARRIER_SUPPRESS ( (uint32_t)93 ) --#define WLC_GET_PHYREG ( (uint32_t)94 ) --#define WLC_SET_PHYREG ( (uint32_t)95 ) --#define WLC_GET_RADIOREG ( (uint32_t)96 ) --#define WLC_SET_RADIOREG ( (uint32_t)97 ) --#define WLC_GET_REVINFO ( (uint32_t)98 ) --#define WLC_GET_UCANTDIV ( (uint32_t)99 ) --#define WLC_SET_UCANTDIV ( (uint32_t)100 ) --#define WLC_R_REG ( (uint32_t)101 ) --#define WLC_W_REG ( (uint32_t)102 ) --#define WLC_GET_MACMODE ( (uint32_t)105 ) --#define WLC_SET_MACMODE ( (uint32_t)106 ) --#define WLC_GET_MONITOR ( (uint32_t)107 ) --#define WLC_SET_MONITOR ( (uint32_t)108 ) --#define WLC_GET_GMODE ( (uint32_t)109 ) --#define WLC_SET_GMODE ( (uint32_t)110 ) --#define WLC_GET_LEGACY_ERP ( (uint32_t)111 ) --#define WLC_SET_LEGACY_ERP ( (uint32_t)112 ) --#define WLC_GET_RX_ANT ( (uint32_t)113 ) --#define WLC_GET_CURR_RATESET ( (uint32_t)114 ) --#define WLC_GET_SCANSUPPRESS ( (uint32_t)115 ) --#define WLC_SET_SCANSUPPRESS ( (uint32_t)116 ) --#define WLC_GET_AP ( (uint32_t)117 ) --#define WLC_SET_AP ( (uint32_t)118 ) --#define WLC_GET_EAP_RESTRICT ( (uint32_t)119 ) --#define WLC_SET_EAP_RESTRICT ( (uint32_t)120 ) --#define WLC_SCB_AUTHORIZE ( (uint32_t)121 ) --#define WLC_SCB_DEAUTHORIZE ( (uint32_t)122 ) --#define WLC_GET_WDSLIST ( (uint32_t)123 ) --#define WLC_SET_WDSLIST ( (uint32_t)124 ) --#define WLC_GET_ATIM ( (uint32_t)125 ) --#define WLC_SET_ATIM ( (uint32_t)126 ) --#define WLC_GET_RSSI ( (uint32_t)127 ) --#define WLC_GET_PHYANTDIV ( (uint32_t)128 ) --#define WLC_SET_PHYANTDIV ( (uint32_t)129 ) --#define WLC_AP_RX_ONLY ( (uint32_t)130 ) --#define WLC_GET_TX_PATH_PWR ( (uint32_t)131 ) --#define WLC_SET_TX_PATH_PWR ( (uint32_t)132 ) --#define WLC_GET_WSEC ( (uint32_t)133 ) --#define WLC_SET_WSEC ( (uint32_t)134 ) --#define WLC_GET_PHY_NOISE ( (uint32_t)135 ) --#define WLC_GET_BSS_INFO ( (uint32_t)136 ) --#define WLC_GET_PKTCNTS ( (uint32_t)137 ) --#define WLC_GET_LAZYWDS ( (uint32_t)138 ) --#define WLC_SET_LAZYWDS ( (uint32_t)139 ) --#define WLC_GET_BANDLIST ( (uint32_t)140 ) --#define WLC_GET_BAND ( (uint32_t)141 ) --#define WLC_SET_BAND ( (uint32_t)142 ) --#define WLC_SCB_DEAUTHENTICATE ( (uint32_t)143 ) --#define WLC_GET_SHORTSLOT ( (uint32_t)144 ) --#define WLC_GET_SHORTSLOT_OVERRIDE ( (uint32_t)145 ) --#define WLC_SET_SHORTSLOT_OVERRIDE ( (uint32_t)146 ) --#define WLC_GET_SHORTSLOT_RESTRICT ( (uint32_t)147 ) --#define WLC_SET_SHORTSLOT_RESTRICT ( (uint32_t)148 ) --#define WLC_GET_GMODE_PROTECTION ( (uint32_t)149 ) --#define WLC_GET_GMODE_PROTECTION_OVERRIDE ( (uint32_t)150 ) --#define WLC_SET_GMODE_PROTECTION_OVERRIDE ( (uint32_t)151 ) --#define WLC_UPGRADE ( (uint32_t)152 ) --#define WLC_GET_IGNORE_BCNS ( (uint32_t)155 ) --#define WLC_SET_IGNORE_BCNS ( (uint32_t)156 ) --#define WLC_GET_SCB_TIMEOUT ( (uint32_t)157 ) --#define WLC_SET_SCB_TIMEOUT ( (uint32_t)158 ) --#define WLC_GET_ASSOCLIST ( (uint32_t)159 ) --#define WLC_GET_CLK ( (uint32_t)160 ) --#define WLC_SET_CLK ( (uint32_t)161 ) --#define WLC_GET_UP ( (uint32_t)162 ) --#define WLC_OUT ( (uint32_t)163 ) --#define WLC_GET_WPA_AUTH ( (uint32_t)164 ) --#define WLC_SET_WPA_AUTH ( (uint32_t)165 ) --#define WLC_GET_UCFLAGS ( (uint32_t)166 ) --#define WLC_SET_UCFLAGS ( (uint32_t)167 ) --#define WLC_GET_PWRIDX ( (uint32_t)168 ) --#define WLC_SET_PWRIDX ( (uint32_t)169 ) --#define WLC_GET_TSSI ( (uint32_t)170 ) --#define WLC_GET_SUP_RATESET_OVERRIDE ( (uint32_t)171 ) --#define WLC_SET_SUP_RATESET_OVERRIDE ( (uint32_t)172 ) --#define WLC_GET_PROTECTION_CONTROL ( (uint32_t)178 ) --#define WLC_SET_PROTECTION_CONTROL ( (uint32_t)179 ) --#define WLC_GET_PHYLIST ( (uint32_t)180 ) --#define WLC_ENCRYPT_STRENGTH ( (uint32_t)181 ) --#define WLC_DECRYPT_STATUS ( (uint32_t)182 ) --#define WLC_GET_KEY_SEQ ( (uint32_t)183 ) --#define WLC_GET_SCAN_CHANNEL_TIME ( (uint32_t)184 ) --#define WLC_SET_SCAN_CHANNEL_TIME ( (uint32_t)185 ) --#define WLC_GET_SCAN_UNASSOC_TIME ( (uint32_t)186 ) --#define WLC_SET_SCAN_UNASSOC_TIME ( (uint32_t)187 ) --#define WLC_GET_SCAN_HOME_TIME ( (uint32_t)188 ) --#define WLC_SET_SCAN_HOME_TIME ( (uint32_t)189 ) --#define WLC_GET_SCAN_NPROBES ( (uint32_t)190 ) --#define WLC_SET_SCAN_NPROBES ( (uint32_t)191 ) --#define WLC_GET_PRB_RESP_TIMEOUT ( (uint32_t)192 ) --#define WLC_SET_PRB_RESP_TIMEOUT ( (uint32_t)193 ) --#define WLC_GET_ATTEN ( (uint32_t)194 ) --#define WLC_SET_ATTEN ( (uint32_t)195 ) --#define WLC_GET_SHMEM ( (uint32_t)196 ) --#define WLC_SET_SHMEM ( (uint32_t)197 ) --#define WLC_SET_WSEC_TEST ( (uint32_t)200 ) --#define WLC_SCB_DEAUTHENTICATE_FOR_REASON ( (uint32_t)201 ) --#define WLC_TKIP_COUNTERMEASURES ( (uint32_t)202 ) --#define WLC_GET_PIOMODE ( (uint32_t)203 ) --#define WLC_SET_PIOMODE ( (uint32_t)204 ) --#define WLC_SET_ASSOC_PREFER ( (uint32_t)205 ) --#define WLC_GET_ASSOC_PREFER ( (uint32_t)206 ) --#define WLC_SET_ROAM_PREFER ( (uint32_t)207 ) --#define WLC_GET_ROAM_PREFER ( (uint32_t)208 ) --#define WLC_SET_LED ( (uint32_t)209 ) --#define WLC_GET_LED ( (uint32_t)210 ) --#define WLC_GET_INTERFERENCE_MODE ( (uint32_t)211 ) --#define WLC_SET_INTERFERENCE_MODE ( (uint32_t)212 ) --#define WLC_GET_CHANNEL_QA ( (uint32_t)213 ) --#define WLC_START_CHANNEL_QA ( (uint32_t)214 ) --#define WLC_GET_CHANNEL_SEL ( (uint32_t)215 ) --#define WLC_START_CHANNEL_SEL ( (uint32_t)216 ) --#define WLC_GET_VALID_CHANNELS ( (uint32_t)217 ) --#define WLC_GET_FAKEFRAG ( (uint32_t)218 ) --#define WLC_SET_FAKEFRAG ( (uint32_t)219 ) --#define WLC_GET_PWROUT_PERCENTAGE ( (uint32_t)220 ) --#define WLC_SET_PWROUT_PERCENTAGE ( (uint32_t)221 ) --#define WLC_SET_BAD_FRAME_PREEMPT ( (uint32_t)222 ) --#define WLC_GET_BAD_FRAME_PREEMPT ( (uint32_t)223 ) --#define WLC_SET_LEAP_LIST ( (uint32_t)224 ) --#define WLC_GET_LEAP_LIST ( (uint32_t)225 ) --#define WLC_GET_CWMIN ( (uint32_t)226 ) --#define WLC_SET_CWMIN ( (uint32_t)227 ) --#define WLC_GET_CWMAX ( (uint32_t)228 ) --#define WLC_SET_CWMAX ( (uint32_t)229 ) --#define WLC_GET_WET ( (uint32_t)230 ) --#define WLC_SET_WET ( (uint32_t)231 ) --#define WLC_GET_PUB ( (uint32_t)232 ) --#define WLC_GET_KEY_PRIMARY ( (uint32_t)235 ) --#define WLC_SET_KEY_PRIMARY ( (uint32_t)236 ) --#define WLC_GET_ACI_ARGS ( (uint32_t)238 ) --#define WLC_SET_ACI_ARGS ( (uint32_t)239 ) --#define WLC_UNSET_CALLBACK ( (uint32_t)240 ) --#define WLC_SET_CALLBACK ( (uint32_t)241 ) --#define WLC_GET_RADAR ( (uint32_t)242 ) --#define WLC_SET_RADAR ( (uint32_t)243 ) --#define WLC_SET_SPECT_MANAGMENT ( (uint32_t)244 ) --#define WLC_GET_SPECT_MANAGMENT ( (uint32_t)245 ) --#define WLC_WDS_GET_REMOTE_HWADDR ( (uint32_t)246 ) --#define WLC_WDS_GET_WPA_SUP ( (uint32_t)247 ) --#define WLC_SET_CS_SCAN_TIMER ( (uint32_t)248 ) --#define WLC_GET_CS_SCAN_TIMER ( (uint32_t)249 ) --#define WLC_MEASURE_REQUEST ( (uint32_t)250 ) --#define WLC_INIT ( (uint32_t)251 ) --#define WLC_SEND_QUIET ( (uint32_t)252 ) --#define WLC_KEEPALIVE ( (uint32_t)253 ) --#define WLC_SEND_PWR_CONSTRAINT ( (uint32_t)254 ) --#define WLC_UPGRADE_STATUS ( (uint32_t)255 ) --#define WLC_CURRENT_PWR ( (uint32_t)256 ) --#define WLC_GET_SCAN_PASSIVE_TIME ( (uint32_t)257 ) --#define WLC_SET_SCAN_PASSIVE_TIME ( (uint32_t)258 ) --#define WLC_LEGACY_LINK_BEHAVIOR ( (uint32_t)259 ) --#define WLC_GET_CHANNELS_IN_COUNTRY ( (uint32_t)260 ) --#define WLC_GET_COUNTRY_LIST ( (uint32_t)261 ) --#define WLC_GET_VAR ( (uint32_t)262 ) --#define WLC_SET_VAR ( (uint32_t)263 ) --#define WLC_NVRAM_GET ( (uint32_t)264 ) --#define WLC_NVRAM_SET ( (uint32_t)265 ) --#define WLC_NVRAM_DUMP ( (uint32_t)266 ) --#define WLC_REBOOT ( (uint32_t)267 ) --#define WLC_SET_WSEC_PMK ( (uint32_t)268 ) --#define WLC_GET_AUTH_MODE ( (uint32_t)269 ) --#define WLC_SET_AUTH_MODE ( (uint32_t)270 ) --#define WLC_GET_WAKEENTRY ( (uint32_t)271 ) --#define WLC_SET_WAKEENTRY ( (uint32_t)272 ) --#define WLC_NDCONFIG_ITEM ( (uint32_t)273 ) --#define WLC_NVOTPW ( (uint32_t)274 ) --#define WLC_OTPW ( (uint32_t)275 ) --#define WLC_IOV_BLOCK_GET ( (uint32_t)276 ) --#define WLC_IOV_MODULES_GET ( (uint32_t)277 ) --#define WLC_SOFT_RESET ( (uint32_t)278 ) --#define WLC_GET_ALLOW_MODE ( (uint32_t)279 ) --#define WLC_SET_ALLOW_MODE ( (uint32_t)280 ) --#define WLC_GET_DESIRED_BSSID ( (uint32_t)281 ) --#define WLC_SET_DESIRED_BSSID ( (uint32_t)282 ) --#define WLC_DISASSOC_MYAP ( (uint32_t)283 ) --#define WLC_GET_NBANDS ( (uint32_t)284 ) --#define WLC_GET_BANDSTATES ( (uint32_t)285 ) --#define WLC_GET_WLC_BSS_INFO ( (uint32_t)286 ) --#define WLC_GET_ASSOC_INFO ( (uint32_t)287 ) --#define WLC_GET_OID_PHY ( (uint32_t)288 ) --#define WLC_SET_OID_PHY ( (uint32_t)289 ) --#define WLC_SET_ASSOC_TIME ( (uint32_t)290 ) --#define WLC_GET_DESIRED_SSID ( (uint32_t)291 ) --#define WLC_GET_CHANSPEC ( (uint32_t)292 ) --#define WLC_GET_ASSOC_STATE ( (uint32_t)293 ) --#define WLC_SET_PHY_STATE ( (uint32_t)294 ) --#define WLC_GET_SCAN_PENDING ( (uint32_t)295 ) --#define WLC_GET_SCANREQ_PENDING ( (uint32_t)296 ) --#define WLC_GET_PREV_ROAM_REASON ( (uint32_t)297 ) --#define WLC_SET_PREV_ROAM_REASON ( (uint32_t)298 ) --#define WLC_GET_BANDSTATES_PI ( (uint32_t)299 ) --#define WLC_GET_PHY_STATE ( (uint32_t)300 ) --#define WLC_GET_BSS_WPA_RSN ( (uint32_t)301 ) --#define WLC_GET_BSS_WPA2_RSN ( (uint32_t)302 ) --#define WLC_GET_BSS_BCN_TS ( (uint32_t)303 ) --#define WLC_GET_INT_DISASSOC ( (uint32_t)304 ) --#define WLC_SET_NUM_PEERS ( (uint32_t)305 ) --#define WLC_GET_NUM_BSS ( (uint32_t)306 ) --#define WLC_GET_WSEC_PMK ( (uint32_t)318 ) --#define WLC_GET_RANDOM_BYTES ( (uint32_t)319 ) --#define WLC_LAST ( (uint32_t)320 ) -- --#define EPICTRL_COOKIE 0xABADCEDE --#define CMN_IOCTL_OFF 0x180 --#define WL_OID_BASE 0xFFE41420 --#define OID_WL_GETINSTANCE (WL_OID_BASE + WLC_GET_INSTANCE) --#define OID_WL_GET_FORCELINK (WL_OID_BASE + WLC_GET_FORCELINK) --#define OID_WL_SET_FORCELINK (WL_OID_BASE + WLC_SET_FORCELINK) --#define OID_WL_ENCRYPT_STRENGTH (WL_OID_BASE + WLC_ENCRYPT_STRENGTH) --#define OID_WL_DECRYPT_STATUS (WL_OID_BASE + WLC_DECRYPT_STATUS) --#define OID_LEGACY_LINK_BEHAVIOR (WL_OID_BASE + WLC_LEGACY_LINK_BEHAVIOR) --#define OID_WL_NDCONFIG_ITEM (WL_OID_BASE + WLC_NDCONFIG_ITEM) --#define OID_STA_CHANSPEC (WL_OID_BASE + WLC_GET_CHANSPEC) --#define OID_STA_NBANDS (WL_OID_BASE + WLC_GET_NBANDS) --#define OID_STA_GET_PHY (WL_OID_BASE + WLC_GET_OID_PHY) --#define OID_STA_SET_PHY (WL_OID_BASE + WLC_SET_OID_PHY) --#define OID_STA_ASSOC_TIME (WL_OID_BASE + WLC_SET_ASSOC_TIME) --#define OID_STA_DESIRED_SSID (WL_OID_BASE + WLC_GET_DESIRED_SSID) --#define OID_STA_SET_PHY_STATE (WL_OID_BASE + WLC_SET_PHY_STATE) --#define OID_STA_SCAN_PENDING (WL_OID_BASE + WLC_GET_SCAN_PENDING) --#define OID_STA_SCANREQ_PENDING (WL_OID_BASE + WLC_GET_SCANREQ_PENDING) --#define OID_STA_GET_ROAM_REASON (WL_OID_BASE + WLC_GET_PREV_ROAM_REASON) --#define OID_STA_SET_ROAM_REASON (WL_OID_BASE + WLC_SET_PREV_ROAM_REASON) --#define OID_STA_GET_PHY_STATE (WL_OID_BASE + WLC_GET_PHY_STATE) --#define OID_STA_INT_DISASSOC (WL_OID_BASE + WLC_GET_INT_DISASSOC) --#define OID_STA_SET_NUM_PEERS (WL_OID_BASE + WLC_SET_NUM_PEERS) --#define OID_STA_GET_NUM_BSS (WL_OID_BASE + WLC_GET_NUM_BSS) --#define WL_DECRYPT_STATUS_SUCCESS 1 --#define WL_DECRYPT_STATUS_FAILURE 2 --#define WL_DECRYPT_STATUS_UNKNOWN 3 --#define WLC_UPGRADE_SUCCESS 0 --#define WLC_UPGRADE_PENDING 1 --typedef struct --{ -- int8_t *name; -- void *param; --} ndconfig_item_t; --typedef struct _wl_assoc_result --{ -- unsigned long associated; -- unsigned long NDIS_auth; -- unsigned long NDIS_infra; --} wl_assoc_result_t; --#define WL_RADIO_SW_DISABLE (1 << 0) --#define WL_RADIO_HW_DISABLE (1 << 1) --#define WL_RADIO_MPC_DISABLE (1 << 2) --#define WL_RADIO_COUNTRY_DISABLE (1 << 3) --#define WL_TXPWR_OVERRIDE (1U << 31) --#define WL_PHY_PAVARS_LEN (6) --#define WL_DIAG_INTERRUPT (1) --#define WL_DIAG_LOOPBACK (2) --#define WL_DIAG_MEMORY (3) --#define WL_DIAG_LED (4) --#define WL_DIAG_REG (5) --#define WL_DIAG_SROM (6) --#define WL_DIAG_DMA (7) --#define WL_DIAGERR_SUCCESS (0) --#define WL_DIAGERR_FAIL_TO_RUN (1) --#define WL_DIAGERR_NOT_SUPPORTED (2) --#define WL_DIAGERR_INTERRUPT_FAIL (3) --#define WL_DIAGERR_LOOPBACK_FAIL (4) --#define WL_DIAGERR_SROM_FAIL (5) --#define WL_DIAGERR_SROM_BADCRC (6) --#define WL_DIAGERR_REG_FAIL (7) --#define WL_DIAGERR_MEMORY_FAIL (8) --#define WL_DIAGERR_NOMEM (9) --#define WL_DIAGERR_DMA_FAIL (10) --#define WL_DIAGERR_MEMORY_TIMEOUT (11) --#define WL_DIAGERR_MEMORY_BADPATTERN (12) --#define WLC_BAND_AUTO (0) --#define WLC_BAND_5G (1) --#define WLC_BAND_2G (2) --#define WLC_BAND_ALL (3) --#define WL_CHAN_FREQ_RANGE_2G (0) --#define WL_CHAN_FREQ_RANGE_5GL (1) --#define WL_CHAN_FREQ_RANGE_5GM (2) --#define WL_CHAN_FREQ_RANGE_5GH (3) --#define WLC_PHY_TYPE_A (0) --#define WLC_PHY_TYPE_B (1) --#define WLC_PHY_TYPE_G (2) --#define WLC_PHY_TYPE_N (4) --#define WLC_PHY_TYPE_LP (5) --#define WLC_PHY_TYPE_SSN (6) --#define WLC_PHY_TYPE_NULL (0xf) --#define WLC_MACMODE_DISABLED (0) --#define WLC_MACMODE_DENY (1) --#define WLC_MACMODE_ALLOW (2) --#define GMODE_LEGACY_B (0) --#define GMODE_AUTO (1) --#define GMODE_ONLY (2) --#define GMODE_B_DEFERRED (3) --#define GMODE_PERFORMANCE (4) --#define GMODE_LRS (5) --#define GMODE_MAX (6) --#define WLC_PLCP_AUTO (-1) --#define WLC_PLCP_SHORT (0) --#define WLC_PLCP_LONG (1) --#define WLC_PROTECTION_AUTO (-1) --#define WLC_PROTECTION_OFF (0) --#define WLC_PROTECTION_ON (1) --#define WLC_PROTECTION_MMHDR_ONLY (2) --#define WLC_PROTECTION_CTS_ONLY (3) --#define WLC_PROTECTION_CTL_OFF (0) --#define WLC_PROTECTION_CTL_LOCAL (1) --#define WLC_PROTECTION_CTL_OVERLAP (2) --#define WLC_N_PROTECTION_OFF (0) --#define WLC_N_PROTECTION_OPTIONAL (1) --#define WLC_N_PROTECTION_20IN40 (2) --#define WLC_N_PROTECTION_MIXEDMODE (3) --#define WLC_N_PREAMBLE_MIXEDMODE (0) --#define WLC_N_PREAMBLE_GF (1) --#define WLC_N_BW_20ALL (0) --#define WLC_N_BW_40ALL (1) --#define WLC_N_BW_20IN2G_40IN5G (2) --#define WLC_N_TXRX_CHAIN0 (0) --#define WLC_N_TXRX_CHAIN1 (1) --#define WLC_N_SGI_20 (0x01) --#define WLC_N_SGI_40 (0x02) --#define PM_OFF (0) --#define PM_MAX (1) --#define PM_FAST (2) --#define PM_FORCE_OFF (3) --#define INTERFERE_NONE (0) --#define NON_WLAN (1) --#define WLAN_MANUAL (2) --#define WLAN_AUTO (3) --#define AUTO_ACTIVE (1 << 7) --typedef struct wl_aci_args --{ -- int32_t enter_aci_thresh; -- int32_t exit_aci_thresh; -- int32_t usec_spin; -- int32_t glitch_delay; -- uint16_t nphy_adcpwr_enter_thresh; -- uint16_t nphy_adcpwr_exit_thresh; -- uint16_t nphy_repeat_ctr; -- uint16_t nphy_num_samples; -- uint16_t nphy_undetect_window_sz; -- uint16_t nphy_b_energy_lo_aci; -- uint16_t nphy_b_energy_md_aci; -- uint16_t nphy_b_energy_hi_aci; --} wl_aci_args_t; --#define WL_ACI_ARGS_LEGACY_LENGTH 16 --typedef struct --{ -- int32_t npulses; -- int32_t ncontig; -- int32_t min_pw; -- int32_t max_pw; -- uint16_t thresh0; -- uint16_t thresh1; -- uint16_t blank; -- uint16_t fmdemodcfg; -- int32_t npulses_lp; -- int32_t min_pw_lp; -- int32_t max_pw_lp; -- int32_t min_fm_lp; -- int32_t max_deltat_lp; -- int32_t min_deltat; -- int32_t max_deltat; -- uint16_t autocorr; -- uint16_t st_level_time; -- uint16_t t2_min; -- uint32_t version; --} wl_radar_args_t; --#define WL_RADAR_ARGS_VERSION 1 --#define WL_RADAR_DETECTOR_OFF 0 --#define WL_RADAR_DETECTOR_ON 1 --#define WL_RADAR_SIMULATED 2 --#define WL_RSSI_ANT_VERSION 1 --#define WL_RSSI_ANT_MAX 4 --typedef struct --{ -- uint32_t version; -- uint32_t count; -- int8_t rssi_ant[WL_RSSI_ANT_MAX]; --} wl_rssi_ant_t; --#define WL_DFS_CACSTATE_IDLE 0 --#define WL_DFS_CACSTATE_PREISM_CAC 1 --#define WL_DFS_CACSTATE_ISM 2 --#define WL_DFS_CACSTATE_CSA 3 --#define WL_DFS_CACSTATE_POSTISM_CAC 4 --#define WL_DFS_CACSTATE_PREISM_OOC 5 --#define WL_DFS_CACSTATE_POSTISM_OOC 6 --#define WL_DFS_CACSTATES 7 --typedef struct --{ -- uint32_t state; -- uint32_t duration; -- wl_chanspec_t chanspec_cleared; -- uint16_t pad; --} wl_dfs_status_t; --#define NUM_PWRCTRL_RATES 12 --typedef struct --{ -- uint8_t txpwr_band_max[NUM_PWRCTRL_RATES]; -- uint8_t txpwr_limit[NUM_PWRCTRL_RATES]; -- uint8_t txpwr_local_max; -- uint8_t txpwr_local_constraint; -- uint8_t txpwr_chan_reg_max; -- uint8_t txpwr_target[2][NUM_PWRCTRL_RATES]; -- uint8_t txpwr_est_Pout[2]; -- uint8_t txpwr_opo[NUM_PWRCTRL_RATES]; -- uint8_t txpwr_bphy_cck_max[NUM_PWRCTRL_RATES]; -- uint8_t txpwr_bphy_ofdm_max; -- uint8_t txpwr_aphy_max[NUM_PWRCTRL_RATES]; -- int8_t txpwr_antgain[2]; -- uint8_t txpwr_est_Pout_gofdm; --} tx_power_legacy_t; --#define WL_TX_POWER_RATES 45 --#define WL_TX_POWER_CCK_FIRST 0 --#define WL_TX_POWER_CCK_NUM 4 --#define WL_TX_POWER_OFDM_FIRST 4 --#define WL_TX_POWER_OFDM_NUM 8 --#define WL_TX_POWER_MCS_SISO_NUM 8 --#define WL_TX_POWER_MCS20_FIRST 12 --#define WL_TX_POWER_MCS20_NUM 16 --#define WL_TX_POWER_MCS40_FIRST 28 --#define WL_TX_POWER_MCS40_NUM 17 --#define WL_TX_POWER_MCS20SISO_NUM 8 --#define WL_TX_POWER_MCS40_LAST 44 --#define WL_TX_POWER_F_ENABLED 1 --#define WL_TX_POWER_F_HW 2 --#define WL_TX_POWER_F_MIMO 4 --#define WL_TX_POWER_F_SISO 8 --#define WL_TX_POWER_F_40M_CAP 16 -- --#define MAX_QTX_POWER 32 --typedef struct --{ -- uint32_t flags; -- wl_chanspec_t chanspec; -- wl_chanspec_t local_chanspec; -- uint8_t local_max; -- uint8_t local_constraint; -- int8_t antgain[2]; -- uint8_t rf_cores; -- uint8_t est_Pout[4]; -- uint8_t est_Pout_cck; -- uint8_t user_limit[WL_TX_POWER_RATES]; -- uint8_t reg_limit[WL_TX_POWER_RATES]; -- uint8_t board_limit[WL_TX_POWER_RATES]; -- uint8_t target[WL_TX_POWER_RATES]; --} tx_power_t; --typedef struct tx_inst_power --{ -- uint8_t txpwr_est_Pout[2]; -- uint8_t txpwr_est_Pout_gofdm; --} tx_inst_power_t; --#define WLC_MEASURE_TPC 1 --#define WLC_MEASURE_CHANNEL_BASIC 2 --#define WLC_MEASURE_CHANNEL_CCA 3 --#define WLC_MEASURE_CHANNEL_RPI 4 --#define SPECT_MNGMT_OFF 0 --#define SPECT_MNGMT_LOOSE_11H 1 --#define SPECT_MNGMT_STRICT_11H 2 --#define SPECT_MNGMT_STRICT_11D 3 --#define SPECT_MNGMT_LOOSE_11H_D 4 --#define WL_CHAN_VALID_HW (1 << 0) --#define WL_CHAN_VALID_SW (1 << 1) --#define WL_CHAN_BAND_5G (1 << 2) --#define WL_CHAN_RADAR (1 << 3) --#define WL_CHAN_INACTIVE (1 << 4) --#define WL_CHAN_PASSIVE (1 << 5) --#define WL_CHAN_RESTRICTED (1 << 6) --#define WL_BTC_DISABLE 0 --#define WL_BTC_ENABLE (1 << 0) --#define WL_BTC_PREMPT (1 << 1) --#define WL_BTC_PARTIAL (1 << 2) --#define WL_BTC_DEFAULT (1 << 3) --#define WL_BTC_HYBRID (WL_BTC_ENABLE | WL_BTC_PARTIAL) --#define WL_INF_BTC_DISABLE 0 --#define WL_INF_BTC_ENABLE 1 --#define WL_INF_BTC_AUTO 3 --#define WL_BTC_DEFWIRE 0 --#define WL_BTC_2WIRE 2 --#define WL_BTC_3WIRE 3 --#define WL_BTC_4WIRE 4 --#define WL_BTC_FLAG_PREMPT (1 << 0) --#define WL_BTC_FLAG_BT_DEF (1 << 1) --#define WL_BTC_FLAG_ACTIVE_PROT (1 << 2) --#define WL_BTC_FLAG_SIM_RSP (1 << 3) --#define WL_BTC_FLAG_PS_PROTECT (1 << 4) --#define WL_BTC_FLAG_SIM_TX_LP (1 << 5) --#define WL_BTC_FLAG_ECI (1 << 6) --#define WL_ERROR_VAL 0x00000001 --#define WL_TRACE_VAL 0x00000002 --#define WL_PRHDRS_VAL 0x00000004 --#define WL_PRPKT_VAL 0x00000008 --#define WL_INFORM_VAL 0x00000010 --#define WL_TMP_VAL 0x00000020 --#define WL_OID_VAL 0x00000040 --#define WL_RATE_VAL 0x00000080 --#define WL_ASSOC_VAL 0x00000100 --#define WL_PRUSR_VAL 0x00000200 --#define WL_PS_VAL 0x00000400 --#define WL_TXPWR_VAL 0x00000800 --#define WL_PORT_VAL 0x00001000 --#define WL_DUAL_VAL 0x00002000 --#define WL_WSEC_VAL 0x00004000 --#define WL_WSEC_DUMP_VAL 0x00008000 --#define WL_LOG_VAL 0x00010000 --#define WL_NRSSI_VAL 0x00020000 --#define WL_LOFT_VAL 0x00040000 --#define WL_REGULATORY_VAL 0x00080000 --#define WL_PHYCAL_VAL 0x00100000 --#define WL_RADAR_VAL 0x00200000 --#define WL_MPC_VAL 0x00400000 --#define WL_APSTA_VAL 0x00800000 --#define WL_DFS_VAL 0x01000000 --#define WL_BA_VAL 0x02000000 --#define WL_NITRO_VAL 0x04000000 --#define WL_MBSS_VAL 0x04000000 --#define WL_CAC_VAL 0x08000000 --#define WL_AMSDU_VAL 0x10000000 --#define WL_AMPDU_VAL 0x20000000 --#define WL_FFPLD_VAL 0x40000000 --#define WL_NIN_VAL 0x80000000 --#define WL_DPT_VAL 0x00000001 --#define WL_SCAN_VAL 0x00000002 --#define WL_WOWL_VAL 0x00000004 --#define WL_COEX_VAL 0x00000008 --#define WL_RTDC_VAL 0x00000010 --#define WL_BTA_VAL 0x00000040 --#define WL_LED_NUMGPIO 16 --#define WL_LED_OFF 0 --#define WL_LED_ON 1 --#define WL_LED_ACTIVITY 2 --#define WL_LED_RADIO 3 --#define WL_LED_ARADIO 4 --#define WL_LED_BRADIO 5 --#define WL_LED_BGMODE 6 --#define WL_LED_WI1 7 --#define WL_LED_WI2 8 --#define WL_LED_WI3 9 --#define WL_LED_ASSOC 10 --#define WL_LED_INACTIVE 11 --#define WL_LED_ASSOCACT 12 --#define WL_LED_NUMBEHAVIOR 13 --#define WL_LED_BEH_MASK 0x7f --#define WL_LED_AL_MASK 0x80 --#define WL_NUMCHANNELS 64 --#define WL_NUMCHANSPECS 100 --#define WL_WDS_WPA_ROLE_AUTH 0 --#define WL_WDS_WPA_ROLE_SUP 1 --#define WL_WDS_WPA_ROLE_AUTO 255 --#define WL_EVENTING_MASK_LEN ( (WLC_E_LAST + 7) / 8 ) -- --#define VNDR_IE_CMD_LEN 4 --#define VNDR_IE_BEACON_FLAG 0x1 --#define VNDR_IE_PRBRSP_FLAG 0x2 --#define VNDR_IE_ASSOCRSP_FLAG 0x4 --#define VNDR_IE_AUTHRSP_FLAG 0x8 --#define VNDR_IE_PRBREQ_FLAG 0x10 --#define VNDR_IE_ASSOCREQ_FLAG 0x20 --#define VNDR_IE_CUSTOM_FLAG 0x100 --#define VNDR_IE_INFO_HDR_LEN (sizeof(uint32_t) ) --struct wl_vndr_ie --{ -- uint8_t id; -- uint8_t len; -- uint8_t oui[3]; -- uint8_t data[1]; --}; --typedef struct wl_vndr_ie wl_vndr_ie_t; --typedef struct --{ -- uint32_t pktflag; -- wl_vndr_ie_t vndr_ie_data; --} vndr_ie_info_t; --typedef struct --{ -- int32_t iecount; -- vndr_ie_info_t vndr_ie_list[1]; --} vndr_ie_buf_t; --typedef struct --{ -- int8_t cmd[VNDR_IE_CMD_LEN]; -- vndr_ie_buf_t vndr_ie_buffer; --} vndr_ie_setbuf_t; --#define WL_JOIN_PREF_RSSI 1 --#define WL_JOIN_PREF_WPA 2 --#define WL_JOIN_PREF_BAND 3 --#define WLJP_BAND_ASSOC_PREF 255 --#define WL_WPA_ACP_MCS_ANY "\x00\x00\x00\x00" --struct tsinfo_arg --{ -- uint8_t octets[3]; --}; --#define NFIFO 6 --#define WL_CNT_T_VERSION 6 --#define WL_CNT_EXT_T_VERSION 1 --#define WL_PHYRATE_LOG_SIZE 1200 -- --typedef struct --{ -- uint16_t version; /* see definition of WL_CNT_T_VERSION */ -- uint16_t length; /* length of entire structure */ -- -- /* transmit stat counters */ -- uint32_t txframe; /* tx data frames */ -- uint32_t txbyte; /* tx data bytes */ -- uint32_t txretrans; /* tx mac retransmits */ -- uint32_t txerror; /* tx data errors (derived: sum of others) */ -- uint32_t txctl; /* tx management frames */ -- uint32_t txprshort; /* tx short preamble frames */ -- uint32_t txserr; /* tx status errors */ -- uint32_t txnobuf; /* tx out of buffers errors */ -- uint32_t txnoassoc; /* tx discard because we're not associated */ -- uint32_t txrunt; /* tx runt frames */ -- uint32_t txchit; /* tx header cache hit (fastpath) */ -- uint32_t txcmiss; /* tx header cache miss (slowpath) */ -- -- /* transmit chip error counters */ -- uint32_t txuflo; /* tx fifo underflows */ -- uint32_t txphyerr; /* tx phy errors (indicated in tx status) */ -- uint32_t txphycrs; /* PR8861/8963 counter */ -- -- /* receive stat counters */ -- uint32_t rxframe; /* rx data frames */ -- uint32_t rxbyte; /* rx data bytes */ -- uint32_t rxerror; /* rx data errors (derived: sum of others) */ -- uint32_t rxctl; /* rx management frames */ -- uint32_t rxnobuf; /* rx out of buffers errors */ -- uint32_t rxnondata; /* rx non data frames in the data channel errors */ -- uint32_t rxbadds; /* rx bad DS errors */ -- uint32_t rxbadcm; /* rx bad control or management frames */ -- uint32_t rxfragerr; /* rx fragmentation errors */ -- uint32_t rxrunt; /* rx runt frames */ -- uint32_t rxgiant; /* rx giant frames */ -- uint32_t rxnoscb; /* rx no scb error */ -- uint32_t rxbadproto; /* rx invalid frames */ -- uint32_t rxbadsrcmac; /* rx frames with Invalid Src Mac */ -- uint32_t rxbadda; /* rx frames tossed for invalid da */ -- uint32_t rxfilter; /* rx frames filtered out */ -- -- /* receive chip error counters */ -- uint32_t rxoflo; /* rx fifo overflow errors */ -- uint32_t rxuflo[NFIFO]; /* rx dma descriptor underflow errors */ -- -- uint32_t d11cnt_txrts_off; /* d11cnt txrts value when reset d11cnt */ -- uint32_t d11cnt_rxcrc_off; /* d11cnt rxcrc value when reset d11cnt */ -- uint32_t d11cnt_txnocts_off; /* d11cnt txnocts value when reset d11cnt */ -- -- /* misc counters */ -- uint32_t dmade; /* tx/rx dma descriptor errors */ -- uint32_t dmada; /* tx/rx dma data errors */ -- uint32_t dmape; /* tx/rx dma descriptor protocol errors */ -- uint32_t reset; /* reset count */ -- uint32_t tbtt; /* cnts the TBTT int's */ -- uint32_t txdmawar; /* # occurrences of PR15420 workaround */ -- uint32_t pkt_callback_reg_fail; /* callbacks register failure */ -- -- /* MAC counters: 32-bit version of d11.h's macstat_t */ -- uint32_t txallfrm; /* total number of frames sent, incl. Data, ACK, RTS, CTS, -- * Control Management (includes retransmissions) -- */ -- uint32_t txrtsfrm; /* number of RTS sent out by the MAC */ -- uint32_t txctsfrm; /* number of CTS sent out by the MAC */ -- uint32_t txackfrm; /* number of ACK frames sent out */ -- uint32_t txdnlfrm; /* Not used */ -- uint32_t txbcnfrm; /* beacons transmitted */ -- uint32_t txfunfl[8]; /* per-fifo tx underflows */ -- uint32_t txtplunfl; /* Template underflows (mac was too slow to transmit ACK/CTS -- * or BCN) -- */ -- uint32_t txphyerror; /* Transmit phy error, type of error is reported in tx-status for -- * driver enqueued frames -- */ -- uint32_t rxfrmtoolong; /* Received frame longer than legal limit (2346 bytes) */ -- uint32_t rxfrmtooshrt; /* Received frame did not contain enough bytes for its frame type */ -- uint32_t rxinvmachdr; /* Either the protocol version != 0 or frame type not -- * data/control/management -- */ -- uint32_t rxbadfcs; /* number of frames for which the CRC check failed in the MAC */ -- uint32_t rxbadplcp; /* parity check of the PLCP header failed */ -- uint32_t rxcrsglitch; /* PHY was able to correlate the preamble but not the header */ -- uint32_t rxstrt; /* Number of received frames with a good PLCP -- * (i.e. passing parity check) -- */ -- uint32_t rxdfrmucastmbss; /* Number of received DATA frames with good FCS and matching RA */ -- uint32_t rxmfrmucastmbss; /* number of received mgmt frames with good FCS and matching RA */ -- uint32_t rxcfrmucast; /* number of received CNTRL frames with good FCS and matching RA */ -- uint32_t rxrtsucast; /* number of unicast RTS addressed to the MAC (good FCS) */ -- uint32_t rxctsucast; /* number of unicast CTS addressed to the MAC (good FCS) */ -- uint32_t rxackucast; /* number of ucast ACKS received (good FCS) */ -- uint32_t rxdfrmocast; /* number of received DATA frames (good FCS and not matching RA) */ -- uint32_t rxmfrmocast; /* number of received MGMT frames (good FCS and not matching RA) */ -- uint32_t rxcfrmocast; /* number of received CNTRL frame (good FCS and not matching RA) */ -- uint32_t rxrtsocast; /* number of received RTS not addressed to the MAC */ -- uint32_t rxctsocast; /* number of received CTS not addressed to the MAC */ -- uint32_t rxdfrmmcast; /* number of RX Data multicast frames received by the MAC */ -- uint32_t rxmfrmmcast; /* number of RX Management multicast frames received by the MAC */ -- uint32_t rxcfrmmcast; /* number of RX Control multicast frames received by the MAC -- * (unlikely to see these) -- */ -- uint32_t rxbeaconmbss; /* beacons received from member of BSS */ -- uint32_t rxdfrmucastobss; /* number of unicast frames addressed to the MAC from -- * other BSS (WDS FRAME) -- */ -- uint32_t rxbeaconobss; /* beacons received from other BSS */ -- uint32_t rxrsptmout; /* Number of response timeouts for transmitted frames -- * expecting a response -- */ -- uint32_t bcntxcancl; /* transmit beacons canceled due to receipt of beacon (IBSS) */ -- uint32_t rxf0ovfl; /* Number of receive fifo 0 overflows */ -- uint32_t rxf1ovfl; /* Number of receive fifo 1 overflows (obsolete) */ -- uint32_t rxf2ovfl; /* Number of receive fifo 2 overflows (obsolete) */ -- uint32_t txsfovfl; /* Number of transmit status fifo overflows (obsolete) */ -- uint32_t pmqovfl; /* Number of PMQ overflows */ -- uint32_t rxcgprqfrm; /* Number of received Probe requests that made it into -- * the PRQ fifo -- */ -- uint32_t rxcgprsqovfl; /* Rx Probe Request Que overflow in the AP */ -- uint32_t txcgprsfail; /* Tx Probe Response Fail. AP sent probe response but did -- * not get ACK -- */ -- uint32_t txcgprssuc; /* Tx Probe Response Success (ACK was received) */ -- uint32_t prs_timeout; /* Number of probe requests that were dropped from the PRQ -- * fifo because a probe response could not be sent out within -- * the time limit defined in M_PRS_MAXTIME -- */ -- uint32_t rxnack; /* XXX Number of NACKS received (Afterburner) */ -- uint32_t frmscons; /* XXX Number of frames completed without transmission because of an -- * Afterburner re-queue -- */ -- uint32_t txnack; /* XXX Number of NACKs transmitted (Afterburner) */ -- uint32_t txglitch_nack; /* obsolete */ -- uint32_t txburst; /* obsolete */ -- -- /* 802.11 MIB counters, pp. 614 of 802.11 reaff doc. */ -- uint32_t txfrag; /* dot11TransmittedFragmentCount */ -- uint32_t txmulti; /* dot11MulticastTransmittedFrameCount */ -- uint32_t txfail; /* dot11FailedCount */ -- uint32_t txretry; /* dot11RetryCount */ -- uint32_t txretrie; /* dot11MultipleRetryCount */ -- uint32_t rxdup; /* dot11FrameduplicateCount */ -- uint32_t txrts; /* dot11RTSSuccessCount */ -- uint32_t txnocts; /* dot11RTSFailureCount */ -- uint32_t txnoack; /* dot11ACKFailureCount */ -- uint32_t rxfrag; /* dot11ReceivedFragmentCount */ -- uint32_t rxmulti; /* dot11MulticastReceivedFrameCount */ -- uint32_t rxcrc; /* dot11FCSErrorCount */ -- uint32_t txfrmsnt; /* dot11TransmittedFrameCount (bogus MIB?) */ -- uint32_t rxundec; /* dot11WEPUndecryptableCount */ -- -- /* WPA2 counters (see rxundec for DecryptFailureCount) */ -- uint32_t tkipmicfaill; /* TKIPLocalMICFailures */ -- uint32_t tkipcntrmsr; /* TKIPCounterMeasuresInvoked */ -- uint32_t tkipreplay; /* TKIPReplays */ -- uint32_t ccmpfmterr; /* CCMPFormatErrors */ -- uint32_t ccmpreplay; /* CCMPReplays */ -- uint32_t ccmpundec; /* CCMPDecryptErrors */ -- uint32_t fourwayfail; /* FourWayHandshakeFailures */ -- uint32_t wepundec; /* dot11WEPUndecryptableCount */ -- uint32_t wepicverr; /* dot11WEPICVErrorCount */ -- uint32_t decsuccess; /* DecryptSuccessCount */ -- uint32_t tkipicverr; /* TKIPICVErrorCount */ -- uint32_t wepexcluded; /* dot11WEPExcludedCount */ -- -- uint32_t rxundec_mcst; /* dot11WEPUndecryptableCount */ -- -- /* WPA2 counters (see rxundec for DecryptFailureCount) */ -- uint32_t tkipmicfaill_mcst; /* TKIPLocalMICFailures */ -- uint32_t tkipcntrmsr_mcst; /* TKIPCounterMeasuresInvoked */ -- uint32_t tkipreplay_mcst; /* TKIPReplays */ -- uint32_t ccmpfmterr_mcst; /* CCMPFormatErrors */ -- uint32_t ccmpreplay_mcst; /* CCMPReplays */ -- uint32_t ccmpundec_mcst; /* CCMPDecryptErrors */ -- uint32_t fourwayfail_mcst; /* FourWayHandshakeFailures */ -- uint32_t wepundec_mcst; /* dot11WEPUndecryptableCount */ -- uint32_t wepicverr_mcst; /* dot11WEPICVErrorCount */ -- uint32_t decsuccess_mcst; /* DecryptSuccessCount */ -- uint32_t tkipicverr_mcst; /* TKIPICVErrorCount */ -- uint32_t wepexcluded_mcst; /* dot11WEPExcludedCount */ -- -- uint32_t txchanrej; /* Tx frames suppressed due to channel rejection */ -- uint32_t txexptime; /* Tx frames suppressed due to timer expiration */ -- uint32_t psmwds; /* Count PSM watchdogs */ -- uint32_t phywatchdog; /* Count Phy watchdogs (triggered by ucode) */ -- -- /* MBSS counters, AP only */ -- uint32_t prq_entries_handled; /* PRQ entries read in */ -- uint32_t prq_undirected_entries; /* which were bcast bss & ssid */ -- uint32_t prq_bad_entries; /* which could not be translated to info */ -- uint32_t atim_suppress_count; /* TX suppressions on ATIM fifo */ -- uint32_t bcn_template_not_ready; /* Template marked in use on send bcn ... */ -- uint32_t bcn_template_not_ready_done; /* ...but "DMA done" interrupt rcvd */ -- uint32_t late_tbtt_dpc; /* TBTT DPC did not happen in time */ -- -- /* per-rate receive stat counters */ -- uint32_t rx1mbps; /* packets rx at 1Mbps */ -- uint32_t rx2mbps; /* packets rx at 2Mbps */ -- uint32_t rx5mbps5; /* packets rx at 5.5Mbps */ -- uint32_t rx6mbps; /* packets rx at 6Mbps */ -- uint32_t rx9mbps; /* packets rx at 9Mbps */ -- uint32_t rx11mbps; /* packets rx at 11Mbps */ -- uint32_t rx12mbps; /* packets rx at 12Mbps */ -- uint32_t rx18mbps; /* packets rx at 18Mbps */ -- uint32_t rx24mbps; /* packets rx at 24Mbps */ -- uint32_t rx36mbps; /* packets rx at 36Mbps */ -- uint32_t rx48mbps; /* packets rx at 48Mbps */ -- uint32_t rx54mbps; /* packets rx at 54Mbps */ -- uint32_t rx108mbps; /* packets rx at 108mbps */ -- uint32_t rx162mbps; /* packets rx at 162mbps */ -- uint32_t rx216mbps; /* packets rx at 216 mbps */ -- uint32_t rx270mbps; /* packets rx at 270 mbps */ -- uint32_t rx324mbps; /* packets rx at 324 mbps */ -- uint32_t rx378mbps; /* packets rx at 378 mbps */ -- uint32_t rx432mbps; /* packets rx at 432 mbps */ -- uint32_t rx486mbps; /* packets rx at 486 mbps */ -- uint32_t rx540mbps; /* packets rx at 540 mbps */ -- -- /* pkteng rx frame stats */ -- uint32_t pktengrxducast; /* unicast frames rxed by the pkteng code */ -- uint32_t pktengrxdmcast; /* multicast frames rxed by the pkteng code */ -- -- uint32_t rfdisable; /* count of radio disables */ -- uint32_t bphy_rxcrsglitch; /* PHY count of bphy glitches */ -- -- uint32_t txmpdu_sgi; /* count for sgi transmit */ -- uint32_t rxmpdu_sgi; /* count for sgi received */ -- uint32_t txmpdu_stbc; /* count for stbc transmit */ -- uint32_t rxmpdu_stbc; /* count for stbc received */ --} wl_cnt_ver_six_t; -- --typedef struct --{ -- uint16_t version; /* see definition of WL_CNT_T_VERSION */ -- uint16_t length; /* length of entire structure */ -- -- /* transmit stat counters */ -- uint32_t txframe; /* tx data frames */ -- uint32_t txbyte; /* tx data bytes */ -- uint32_t txretrans; /* tx mac retransmits */ -- uint32_t txerror; /* tx data errors (derived: sum of others) */ -- uint32_t txctl; /* tx management frames */ -- uint32_t txprshort; /* tx short preamble frames */ -- uint32_t txserr; /* tx status errors */ -- uint32_t txnobuf; /* tx out of buffers errors */ -- uint32_t txnoassoc; /* tx discard because we're not associated */ -- uint32_t txrunt; /* tx runt frames */ -- uint32_t txchit; /* tx header cache hit (fastpath) */ -- uint32_t txcmiss; /* tx header cache miss (slowpath) */ -- -- /* transmit chip error counters */ -- uint32_t txuflo; /* tx fifo underflows */ -- uint32_t txphyerr; /* tx phy errors (indicated in tx status) */ -- uint32_t txphycrs; /* PR8861/8963 counter */ -- -- /* receive stat counters */ -- uint32_t rxframe; /* rx data frames */ -- uint32_t rxbyte; /* rx data bytes */ -- uint32_t rxerror; /* rx data errors (derived: sum of others) */ -- uint32_t rxctl; /* rx management frames */ -- uint32_t rxnobuf; /* rx out of buffers errors */ -- uint32_t rxnondata; /* rx non data frames in the data channel errors */ -- uint32_t rxbadds; /* rx bad DS errors */ -- uint32_t rxbadcm; /* rx bad control or management frames */ -- uint32_t rxfragerr; /* rx fragmentation errors */ -- uint32_t rxrunt; /* rx runt frames */ -- uint32_t rxgiant; /* rx giant frames */ -- uint32_t rxnoscb; /* rx no scb error */ -- uint32_t rxbadproto; /* rx invalid frames */ -- uint32_t rxbadsrcmac; /* rx frames with Invalid Src Mac */ -- uint32_t rxbadda; /* rx frames tossed for invalid da */ -- uint32_t rxfilter; /* rx frames filtered out */ -- -- /* receive chip error counters */ -- uint32_t rxoflo; /* rx fifo overflow errors */ -- uint32_t rxuflo[NFIFO]; /* rx dma descriptor underflow errors */ -- -- uint32_t d11cnt_txrts_off; /* d11cnt txrts value when reset d11cnt */ -- uint32_t d11cnt_rxcrc_off; /* d11cnt rxcrc value when reset d11cnt */ -- uint32_t d11cnt_txnocts_off; /* d11cnt txnocts value when reset d11cnt */ -- -- /* misc counters */ -- uint32_t dmade; /* tx/rx dma descriptor errors */ -- uint32_t dmada; /* tx/rx dma data errors */ -- uint32_t dmape; /* tx/rx dma descriptor protocol errors */ -- uint32_t reset; /* reset count */ -- uint32_t tbtt; /* cnts the TBTT int's */ -- uint32_t txdmawar; /* # occurrences of PR15420 workaround */ -- uint32_t pkt_callback_reg_fail; /* callbacks register failure */ -- -- /* MAC counters: 32-bit version of d11.h's macstat_t */ -- uint32_t txallfrm; /* total number of frames sent, incl. Data, ACK, RTS, CTS, -- * Control Management (includes retransmissions) -- */ -- uint32_t txrtsfrm; /* number of RTS sent out by the MAC */ -- uint32_t txctsfrm; /* number of CTS sent out by the MAC */ -- uint32_t txackfrm; /* number of ACK frames sent out */ -- uint32_t txdnlfrm; /* Not used */ -- uint32_t txbcnfrm; /* beacons transmitted */ -- uint32_t txfunfl[8]; /* per-fifo tx underflows */ -- uint32_t txtplunfl; /* Template underflows (mac was too slow to transmit ACK/CTS -- * or BCN) -- */ -- uint32_t txphyerror; /* Transmit phy error, type of error is reported in tx-status for -- * driver enqueued frames -- */ -- uint32_t rxfrmtoolong; /* Received frame longer than legal limit (2346 bytes) */ -- uint32_t rxfrmtooshrt; /* Received frame did not contain enough bytes for its frame type */ -- uint32_t rxinvmachdr; /* Either the protocol version != 0 or frame type not -- * data/control/management -- */ -- uint32_t rxbadfcs; /* number of frames for which the CRC check failed in the MAC */ -- uint32_t rxbadplcp; /* parity check of the PLCP header failed */ -- uint32_t rxcrsglitch; /* PHY was able to correlate the preamble but not the header */ -- uint32_t rxstrt; /* Number of received frames with a good PLCP -- * (i.e. passing parity check) -- */ -- uint32_t rxdfrmucastmbss; /* Number of received DATA frames with good FCS and matching RA */ -- uint32_t rxmfrmucastmbss; /* number of received mgmt frames with good FCS and matching RA */ -- uint32_t rxcfrmucast; /* number of received CNTRL frames with good FCS and matching RA */ -- uint32_t rxrtsucast; /* number of unicast RTS addressed to the MAC (good FCS) */ -- uint32_t rxctsucast; /* number of unicast CTS addressed to the MAC (good FCS) */ -- uint32_t rxackucast; /* number of ucast ACKS received (good FCS) */ -- uint32_t rxdfrmocast; /* number of received DATA frames (good FCS and not matching RA) */ -- uint32_t rxmfrmocast; /* number of received MGMT frames (good FCS and not matching RA) */ -- uint32_t rxcfrmocast; /* number of received CNTRL frame (good FCS and not matching RA) */ -- uint32_t rxrtsocast; /* number of received RTS not addressed to the MAC */ -- uint32_t rxctsocast; /* number of received CTS not addressed to the MAC */ -- uint32_t rxdfrmmcast; /* number of RX Data multicast frames received by the MAC */ -- uint32_t rxmfrmmcast; /* number of RX Management multicast frames received by the MAC */ -- uint32_t rxcfrmmcast; /* number of RX Control multicast frames received by the MAC -- * (unlikely to see these) -- */ -- uint32_t rxbeaconmbss; /* beacons received from member of BSS */ -- uint32_t rxdfrmucastobss; /* number of unicast frames addressed to the MAC from -- * other BSS (WDS FRAME) -- */ -- uint32_t rxbeaconobss; /* beacons received from other BSS */ -- uint32_t rxrsptmout; /* Number of response timeouts for transmitted frames -- * expecting a response -- */ -- uint32_t bcntxcancl; /* transmit beacons canceled due to receipt of beacon (IBSS) */ -- uint32_t rxf0ovfl; /* Number of receive fifo 0 overflows */ -- uint32_t rxf1ovfl; /* Number of receive fifo 1 overflows (obsolete) */ -- uint32_t rxf2ovfl; /* Number of receive fifo 2 overflows (obsolete) */ -- uint32_t txsfovfl; /* Number of transmit status fifo overflows (obsolete) */ -- uint32_t pmqovfl; /* Number of PMQ overflows */ -- uint32_t rxcgprqfrm; /* Number of received Probe requests that made it into -- * the PRQ fifo -- */ -- uint32_t rxcgprsqovfl; /* Rx Probe Request Que overflow in the AP */ -- uint32_t txcgprsfail; /* Tx Probe Response Fail. AP sent probe response but did -- * not get ACK -- */ -- uint32_t txcgprssuc; /* Tx Probe Response Success (ACK was received) */ -- uint32_t prs_timeout; /* Number of probe requests that were dropped from the PRQ -- * fifo because a probe response could not be sent out within -- * the time limit defined in M_PRS_MAXTIME -- */ -- uint32_t rxnack; /* obsolete */ -- uint32_t frmscons; /* obsolete */ -- uint32_t txnack; /* obsolete */ -- uint32_t txglitch_nack; /* obsolete */ -- uint32_t txburst; /* obsolete */ -- -- /* 802.11 MIB counters, pp. 614 of 802.11 reaff doc. */ -- uint32_t txfrag; /* dot11TransmittedFragmentCount */ -- uint32_t txmulti; /* dot11MulticastTransmittedFrameCount */ -- uint32_t txfail; /* dot11FailedCount */ -- uint32_t txretry; /* dot11RetryCount */ -- uint32_t txretrie; /* dot11MultipleRetryCount */ -- uint32_t rxdup; /* dot11FrameduplicateCount */ -- uint32_t txrts; /* dot11RTSSuccessCount */ -- uint32_t txnocts; /* dot11RTSFailureCount */ -- uint32_t txnoack; /* dot11ACKFailureCount */ -- uint32_t rxfrag; /* dot11ReceivedFragmentCount */ -- uint32_t rxmulti; /* dot11MulticastReceivedFrameCount */ -- uint32_t rxcrc; /* dot11FCSErrorCount */ -- uint32_t txfrmsnt; /* dot11TransmittedFrameCount (bogus MIB?) */ -- uint32_t rxundec; /* dot11WEPUndecryptableCount */ -- -- /* WPA2 counters (see rxundec for DecryptFailureCount) */ -- uint32_t tkipmicfaill; /* TKIPLocalMICFailures */ -- uint32_t tkipcntrmsr; /* TKIPCounterMeasuresInvoked */ -- uint32_t tkipreplay; /* TKIPReplays */ -- uint32_t ccmpfmterr; /* CCMPFormatErrors */ -- uint32_t ccmpreplay; /* CCMPReplays */ -- uint32_t ccmpundec; /* CCMPDecryptErrors */ -- uint32_t fourwayfail; /* FourWayHandshakeFailures */ -- uint32_t wepundec; /* dot11WEPUndecryptableCount */ -- uint32_t wepicverr; /* dot11WEPICVErrorCount */ -- uint32_t decsuccess; /* DecryptSuccessCount */ -- uint32_t tkipicverr; /* TKIPICVErrorCount */ -- uint32_t wepexcluded; /* dot11WEPExcludedCount */ -- -- uint32_t txchanrej; /* Tx frames suppressed due to channel rejection */ -- uint32_t psmwds; /* Count PSM watchdogs */ -- uint32_t phywatchdog; /* Count Phy watchdogs (triggered by ucode) */ -- -- /* MBSS counters, AP only */ -- uint32_t prq_entries_handled; /* PRQ entries read in */ -- uint32_t prq_undirected_entries; /* which were bcast bss & ssid */ -- uint32_t prq_bad_entries; /* which could not be translated to info */ -- uint32_t atim_suppress_count; /* TX suppressions on ATIM fifo */ -- uint32_t bcn_template_not_ready; /* Template marked in use on send bcn ... */ -- uint32_t bcn_template_not_ready_done; /* ...but "DMA done" interrupt rcvd */ -- uint32_t late_tbtt_dpc; /* TBTT DPC did not happen in time */ -- -- /* per-rate receive stat counters */ -- uint32_t rx1mbps; /* packets rx at 1Mbps */ -- uint32_t rx2mbps; /* packets rx at 2Mbps */ -- uint32_t rx5mbps5; /* packets rx at 5.5Mbps */ -- uint32_t rx6mbps; /* packets rx at 6Mbps */ -- uint32_t rx9mbps; /* packets rx at 9Mbps */ -- uint32_t rx11mbps; /* packets rx at 11Mbps */ -- uint32_t rx12mbps; /* packets rx at 12Mbps */ -- uint32_t rx18mbps; /* packets rx at 18Mbps */ -- uint32_t rx24mbps; /* packets rx at 24Mbps */ -- uint32_t rx36mbps; /* packets rx at 36Mbps */ -- uint32_t rx48mbps; /* packets rx at 48Mbps */ -- uint32_t rx54mbps; /* packets rx at 54Mbps */ -- uint32_t rx108mbps; /* packets rx at 108mbps */ -- uint32_t rx162mbps; /* packets rx at 162mbps */ -- uint32_t rx216mbps; /* packets rx at 216 mbps */ -- uint32_t rx270mbps; /* packets rx at 270 mbps */ -- uint32_t rx324mbps; /* packets rx at 324 mbps */ -- uint32_t rx378mbps; /* packets rx at 378 mbps */ -- uint32_t rx432mbps; /* packets rx at 432 mbps */ -- uint32_t rx486mbps; /* packets rx at 486 mbps */ -- uint32_t rx540mbps; /* packets rx at 540 mbps */ -- -- /* pkteng rx frame stats */ -- uint32_t pktengrxducast; /* unicast frames rxed by the pkteng code */ -- uint32_t pktengrxdmcast; /* multicast frames rxed by the pkteng code */ -- -- uint32_t rfdisable; /* count of radio disables */ -- uint32_t bphy_rxcrsglitch; /* PHY count of bphy glitches */ -- -- uint32_t txexptime; /* Tx frames suppressed due to timer expiration */ -- -- uint32_t txmpdu_sgi; /* count for sgi transmit */ -- uint32_t rxmpdu_sgi; /* count for sgi received */ -- uint32_t txmpdu_stbc; /* count for stbc transmit */ -- uint32_t rxmpdu_stbc; /* count for stbc received */ -- -- uint32_t rxundec_mcst; /* dot11WEPUndecryptableCount */ -- -- /* WPA2 counters (see rxundec for DecryptFailureCount) */ -- uint32_t tkipmicfaill_mcst; /* TKIPLocalMICFailures */ -- uint32_t tkipcntrmsr_mcst; /* TKIPCounterMeasuresInvoked */ -- uint32_t tkipreplay_mcst; /* TKIPReplays */ -- uint32_t ccmpfmterr_mcst; /* CCMPFormatErrors */ -- uint32_t ccmpreplay_mcst; /* CCMPReplays */ -- uint32_t ccmpundec_mcst; /* CCMPDecryptErrors */ -- uint32_t fourwayfail_mcst; /* FourWayHandshakeFailures */ -- uint32_t wepundec_mcst; /* dot11WEPUndecryptableCount */ -- uint32_t wepicverr_mcst; /* dot11WEPICVErrorCount */ -- uint32_t decsuccess_mcst; /* DecryptSuccessCount */ -- uint32_t tkipicverr_mcst; /* TKIPICVErrorCount */ -- uint32_t wepexcluded_mcst; /* dot11WEPExcludedCount */ -- -- uint32_t dma_hang; /* count for stbc received */ --} wl_cnt_ver_seven_t; -- --typedef struct --{ -- uint16_t version; /* see definition of WL_CNT_T_VERSION */ -- uint16_t length; /* length of entire structure */ -- -- /* transmit stat counters */ -- uint32_t txframe; /* tx data frames */ -- uint32_t txbyte; /* tx data bytes */ -- uint32_t txretrans; /* tx mac retransmits */ -- uint32_t txerror; /* tx data errors (derived: sum of others) */ -- uint32_t txctl; /* tx management frames */ -- uint32_t txprshort; /* tx short preamble frames */ -- uint32_t txserr; /* tx status errors */ -- uint32_t txnobuf; /* tx out of buffers errors */ -- uint32_t txnoassoc; /* tx discard because we're not associated */ -- uint32_t txrunt; /* tx runt frames */ -- uint32_t txchit; /* tx header cache hit (fastpath) */ -- uint32_t txcmiss; /* tx header cache miss (slowpath) */ -- -- /* transmit chip error counters */ -- uint32_t txuflo; /* tx fifo underflows */ -- uint32_t txphyerr; /* tx phy errors (indicated in tx status) */ -- uint32_t txphycrs; /* PR8861/8963 counter */ -- -- /* receive stat counters */ -- uint32_t rxframe; /* rx data frames */ -- uint32_t rxbyte; /* rx data bytes */ -- uint32_t rxerror; /* rx data errors (derived: sum of others) */ -- uint32_t rxctl; /* rx management frames */ -- uint32_t rxnobuf; /* rx out of buffers errors */ -- uint32_t rxnondata; /* rx non data frames in the data channel errors */ -- uint32_t rxbadds; /* rx bad DS errors */ -- uint32_t rxbadcm; /* rx bad control or management frames */ -- uint32_t rxfragerr; /* rx fragmentation errors */ -- uint32_t rxrunt; /* rx runt frames */ -- uint32_t rxgiant; /* rx giant frames */ -- uint32_t rxnoscb; /* rx no scb error */ -- uint32_t rxbadproto; /* rx invalid frames */ -- uint32_t rxbadsrcmac; /* rx frames with Invalid Src Mac */ -- uint32_t rxbadda; /* rx frames tossed for invalid da */ -- uint32_t rxfilter; /* rx frames filtered out */ -- -- /* receive chip error counters */ -- uint32_t rxoflo; /* rx fifo overflow errors */ -- uint32_t rxuflo[NFIFO]; /* rx dma descriptor underflow errors */ -- -- uint32_t d11cnt_txrts_off; /* d11cnt txrts value when reset d11cnt */ -- uint32_t d11cnt_rxcrc_off; /* d11cnt rxcrc value when reset d11cnt */ -- uint32_t d11cnt_txnocts_off; /* d11cnt txnocts value when reset d11cnt */ -- -- /* misc counters */ -- uint32_t dmade; /* tx/rx dma descriptor errors */ -- uint32_t dmada; /* tx/rx dma data errors */ -- uint32_t dmape; /* tx/rx dma descriptor protocol errors */ -- uint32_t reset; /* reset count */ -- uint32_t tbtt; /* cnts the TBTT int's */ -- uint32_t txdmawar; /* # occurrences of PR15420 workaround */ -- uint32_t pkt_callback_reg_fail; /* callbacks register failure */ -- -- /* MAC counters: 32-bit version of d11.h's macstat_t */ -- uint32_t txallfrm; /* total number of frames sent, incl. Data, ACK, RTS, CTS, -- * Control Management (includes retransmissions) -- */ -- uint32_t txrtsfrm; /* number of RTS sent out by the MAC */ -- uint32_t txctsfrm; /* number of CTS sent out by the MAC */ -- uint32_t txackfrm; /* number of ACK frames sent out */ -- uint32_t txdnlfrm; /* Not used */ -- uint32_t txbcnfrm; /* beacons transmitted */ -- uint32_t txfunfl[6]; /* per-fifo tx underflows */ -- uint32_t rxtoolate; /* receive too late */ -- uint32_t txfbw; /* transmit at fallback bw (dynamic bw) */ -- uint32_t txtplunfl; /* Template underflows (mac was too slow to transmit ACK/CTS -- * or BCN) -- */ -- uint32_t txphyerror; /* Transmit phy error, type of error is reported in tx-status for -- * driver enqueued frames -- */ -- uint32_t rxfrmtoolong; /* Received frame longer than legal limit (2346 bytes) */ -- uint32_t rxfrmtooshrt; /* Received frame did not contain enough bytes for its frame type */ -- uint32_t rxinvmachdr; /* Either the protocol version != 0 or frame type not -- * data/control/management -- */ -- uint32_t rxbadfcs; /* number of frames for which the CRC check failed in the MAC */ -- uint32_t rxbadplcp; /* parity check of the PLCP header failed */ -- uint32_t rxcrsglitch; /* PHY was able to correlate the preamble but not the header */ -- uint32_t rxstrt; /* Number of received frames with a good PLCP -- * (i.e. passing parity check) -- */ -- uint32_t rxdfrmucastmbss; /* Number of received DATA frames with good FCS and matching RA */ -- uint32_t rxmfrmucastmbss; /* number of received mgmt frames with good FCS and matching RA */ -- uint32_t rxcfrmucast; /* number of received CNTRL frames with good FCS and matching RA */ -- uint32_t rxrtsucast; /* number of unicast RTS addressed to the MAC (good FCS) */ -- uint32_t rxctsucast; /* number of unicast CTS addressed to the MAC (good FCS) */ -- uint32_t rxackucast; /* number of ucast ACKS received (good FCS) */ -- uint32_t rxdfrmocast; /* number of received DATA frames (good FCS and not matching RA) */ -- uint32_t rxmfrmocast; /* number of received MGMT frames (good FCS and not matching RA) */ -- uint32_t rxcfrmocast; /* number of received CNTRL frame (good FCS and not matching RA) */ -- uint32_t rxrtsocast; /* number of received RTS not addressed to the MAC */ -- uint32_t rxctsocast; /* number of received CTS not addressed to the MAC */ -- uint32_t rxdfrmmcast; /* number of RX Data multicast frames received by the MAC */ -- uint32_t rxmfrmmcast; /* number of RX Management multicast frames received by the MAC */ -- uint32_t rxcfrmmcast; /* number of RX Control multicast frames received by the MAC -- * (unlikely to see these) -- */ -- uint32_t rxbeaconmbss; /* beacons received from member of BSS */ -- uint32_t rxdfrmucastobss; /* number of unicast frames addressed to the MAC from -- * other BSS (WDS FRAME) -- */ -- uint32_t rxbeaconobss; /* beacons received from other BSS */ -- uint32_t rxrsptmout; /* Number of response timeouts for transmitted frames -- * expecting a response -- */ -- uint32_t bcntxcancl; /* transmit beacons canceled due to receipt of beacon (IBSS) */ -- uint32_t rxf0ovfl; /* Number of receive fifo 0 overflows */ -- uint32_t rxf1ovfl; /* Number of receive fifo 1 overflows (obsolete) */ -- uint32_t rxf2ovfl; /* Number of receive fifo 2 overflows (obsolete) */ -- uint32_t txsfovfl; /* Number of transmit status fifo overflows (obsolete) */ -- uint32_t pmqovfl; /* Number of PMQ overflows */ -- uint32_t rxcgprqfrm; /* Number of received Probe requests that made it into -- * the PRQ fifo -- */ -- uint32_t rxcgprsqovfl; /* Rx Probe Request Que overflow in the AP */ -- uint32_t txcgprsfail; /* Tx Probe Response Fail. AP sent probe response but did -- * not get ACK -- */ -- uint32_t txcgprssuc; /* Tx Probe Response Success (ACK was received) */ -- uint32_t prs_timeout; /* Number of probe requests that were dropped from the PRQ -- * fifo because a probe response could not be sent out within -- * the time limit defined in M_PRS_MAXTIME -- */ -- uint32_t rxnack; /* obsolete */ -- uint32_t frmscons; /* obsolete */ -- uint32_t txnack; /* obsolete */ -- uint32_t rxback; /* blockack rxcnt */ -- uint32_t txback; /* blockack txcnt */ -- -- /* 802.11 MIB counters, pp. 614 of 802.11 reaff doc. */ -- uint32_t txfrag; /* dot11TransmittedFragmentCount */ -- uint32_t txmulti; /* dot11MulticastTransmittedFrameCount */ -- uint32_t txfail; /* dot11FailedCount */ -- uint32_t txretry; /* dot11RetryCount */ -- uint32_t txretrie; /* dot11MultipleRetryCount */ -- uint32_t rxdup; /* dot11FrameduplicateCount */ -- uint32_t txrts; /* dot11RTSSuccessCount */ -- uint32_t txnocts; /* dot11RTSFailureCount */ -- uint32_t txnoack; /* dot11ACKFailureCount */ -- uint32_t rxfrag; /* dot11ReceivedFragmentCount */ -- uint32_t rxmulti; /* dot11MulticastReceivedFrameCount */ -- uint32_t rxcrc; /* dot11FCSErrorCount */ -- uint32_t txfrmsnt; /* dot11TransmittedFrameCount (bogus MIB?) */ -- uint32_t rxundec; /* dot11WEPUndecryptableCount */ -- -- /* WPA2 counters (see rxundec for DecryptFailureCount) */ -- uint32_t tkipmicfaill; /* TKIPLocalMICFailures */ -- uint32_t tkipcntrmsr; /* TKIPCounterMeasuresInvoked */ -- uint32_t tkipreplay; /* TKIPReplays */ -- uint32_t ccmpfmterr; /* CCMPFormatErrors */ -- uint32_t ccmpreplay; /* CCMPReplays */ -- uint32_t ccmpundec; /* CCMPDecryptErrors */ -- uint32_t fourwayfail; /* FourWayHandshakeFailures */ -- uint32_t wepundec; /* dot11WEPUndecryptableCount */ -- uint32_t wepicverr; /* dot11WEPICVErrorCount */ -- uint32_t decsuccess; /* DecryptSuccessCount */ -- uint32_t tkipicverr; /* TKIPICVErrorCount */ -- uint32_t wepexcluded; /* dot11WEPExcludedCount */ -- -- uint32_t txchanrej; /* Tx frames suppressed due to channel rejection */ -- uint32_t psmwds; /* Count PSM watchdogs */ -- uint32_t phywatchdog; /* Count Phy watchdogs (triggered by ucode) */ -- -- /* MBSS counters, AP only */ -- uint32_t prq_entries_handled; /* PRQ entries read in */ -- uint32_t prq_undirected_entries; /* which were bcast bss & ssid */ -- uint32_t prq_bad_entries; /* which could not be translated to info */ -- uint32_t atim_suppress_count; /* TX suppressions on ATIM fifo */ -- uint32_t bcn_template_not_ready; /* Template marked in use on send bcn ... */ -- uint32_t bcn_template_not_ready_done; /* ...but "DMA done" interrupt rcvd */ -- uint32_t late_tbtt_dpc; /* TBTT DPC did not happen in time */ -- -- /* per-rate receive stat counters */ -- uint32_t rx1mbps; /* packets rx at 1Mbps */ -- uint32_t rx2mbps; /* packets rx at 2Mbps */ -- uint32_t rx5mbps5; /* packets rx at 5.5Mbps */ -- uint32_t rx6mbps; /* packets rx at 6Mbps */ -- uint32_t rx9mbps; /* packets rx at 9Mbps */ -- uint32_t rx11mbps; /* packets rx at 11Mbps */ -- uint32_t rx12mbps; /* packets rx at 12Mbps */ -- uint32_t rx18mbps; /* packets rx at 18Mbps */ -- uint32_t rx24mbps; /* packets rx at 24Mbps */ -- uint32_t rx36mbps; /* packets rx at 36Mbps */ -- uint32_t rx48mbps; /* packets rx at 48Mbps */ -- uint32_t rx54mbps; /* packets rx at 54Mbps */ -- uint32_t rx108mbps; /* packets rx at 108mbps */ -- uint32_t rx162mbps; /* packets rx at 162mbps */ -- uint32_t rx216mbps; /* packets rx at 216 mbps */ -- uint32_t rx270mbps; /* packets rx at 270 mbps */ -- uint32_t rx324mbps; /* packets rx at 324 mbps */ -- uint32_t rx378mbps; /* packets rx at 378 mbps */ -- uint32_t rx432mbps; /* packets rx at 432 mbps */ -- uint32_t rx486mbps; /* packets rx at 486 mbps */ -- uint32_t rx540mbps; /* packets rx at 540 mbps */ -- -- /* pkteng rx frame stats */ -- uint32_t pktengrxducast; /* unicast frames rxed by the pkteng code */ -- uint32_t pktengrxdmcast; /* multicast frames rxed by the pkteng code */ -- -- uint32_t rfdisable; /* count of radio disables */ -- uint32_t bphy_rxcrsglitch; /* PHY count of bphy glitches */ -- uint32_t bphy_badplcp; -- -- uint32_t txexptime; /* Tx frames suppressed due to timer expiration */ -- -- uint32_t txmpdu_sgi; /* count for sgi transmit */ -- uint32_t rxmpdu_sgi; /* count for sgi received */ -- uint32_t txmpdu_stbc; /* count for stbc transmit */ -- uint32_t rxmpdu_stbc; /* count for stbc received */ -- -- uint32_t rxundec_mcst; /* dot11WEPUndecryptableCount */ -- -- /* WPA2 counters (see rxundec for DecryptFailureCount) */ -- uint32_t tkipmicfaill_mcst; /* TKIPLocalMICFailures */ -- uint32_t tkipcntrmsr_mcst; /* TKIPCounterMeasuresInvoked */ -- uint32_t tkipreplay_mcst; /* TKIPReplays */ -- uint32_t ccmpfmterr_mcst; /* CCMPFormatErrors */ -- uint32_t ccmpreplay_mcst; /* CCMPReplays */ -- uint32_t ccmpundec_mcst; /* CCMPDecryptErrors */ -- uint32_t fourwayfail_mcst; /* FourWayHandshakeFailures */ -- uint32_t wepundec_mcst; /* dot11WEPUndecryptableCount */ -- uint32_t wepicverr_mcst; /* dot11WEPICVErrorCount */ -- uint32_t decsuccess_mcst; /* DecryptSuccessCount */ -- uint32_t tkipicverr_mcst; /* TKIPICVErrorCount */ -- uint32_t wepexcluded_mcst; /* dot11WEPExcludedCount */ -- -- uint32_t dma_hang; /* count for dma hang */ -- uint32_t reinit; /* count for reinit */ -- -- uint32_t pstatxucast; /* count of ucast frames xmitted on all psta assoc */ -- uint32_t pstatxnoassoc; /* count of txnoassoc frames xmitted on all psta assoc */ -- uint32_t pstarxucast; /* count of ucast frames received on all psta assoc */ -- uint32_t pstarxbcmc; /* count of bcmc frames received on all psta */ -- uint32_t pstatxbcmc; /* count of bcmc frames transmitted on all psta */ -- -- uint32_t cso_passthrough; /* hw cso required but passthrough */ -- uint32_t cso_normal; /* hw cso hdr for normal process */ -- uint32_t chained; /* number of frames chained */ -- uint32_t chainedsz1; /* number of chain size 1 frames */ -- uint32_t unchained; /* number of frames not chained */ -- uint32_t maxchainsz; /* max chain size so far */ -- uint32_t currchainsz; /* current chain size */ -- -- uint32_t rxdrop20s; /* drop secondary cnt */ -- --} wl_cnt_ver_eight_t; -- --/* per-rate receive stat counters subset of full counters */ --typedef struct --{ -- uint32_t rx1mbps; /* packets rx at 1Mbps */ -- uint32_t rx2mbps; /* packets rx at 2Mbps */ -- uint32_t rx5mbps5; /* packets rx at 5.5Mbps */ -- uint32_t rx6mbps; /* packets rx at 6Mbps */ -- uint32_t rx9mbps; /* packets rx at 9Mbps */ -- uint32_t rx11mbps; /* packets rx at 11Mbps */ -- uint32_t rx12mbps; /* packets rx at 12Mbps */ -- uint32_t rx18mbps; /* packets rx at 18Mbps */ -- uint32_t rx24mbps; /* packets rx at 24Mbps */ -- uint32_t rx36mbps; /* packets rx at 36Mbps */ -- uint32_t rx48mbps; /* packets rx at 48Mbps */ -- uint32_t rx54mbps; /* packets rx at 54Mbps */ -- uint32_t rx108mbps; /* packets rx at 108mbps */ -- uint32_t rx162mbps; /* packets rx at 162mbps */ -- uint32_t rx216mbps; /* packets rx at 216 mbps */ -- uint32_t rx270mbps; /* packets rx at 270 mbps */ --} whd_phyrate_counters_t; -- --typedef struct --{ -- uint32_t count; -- uint8_t log[WL_PHYRATE_LOG_SIZE]; --} whd_phyrate_log_t; -- --typedef struct --{ -- uint16_t version; /* see definition of WL_CNT_T_VERSION */ -- uint16_t length; /* length of entire structure */ -- -- /* transmit stat counters */ -- uint32_t txframe; /* tx data frames */ -- uint32_t txbyte; /* tx data bytes */ -- uint32_t txretrans; /* tx mac retransmits */ -- uint32_t txerror; /* tx data errors (derived: sum of others) */ -- uint32_t txctl; /* tx management frames */ -- uint32_t txprshort; /* tx short preamble frames */ -- uint32_t txserr; /* tx status errors */ -- uint32_t txnobuf; /* tx out of buffers errors */ -- uint32_t txnoassoc; /* tx discard because we're not associated */ -- uint32_t txrunt; /* tx runt frames */ -- uint32_t txchit; /* tx header cache hit (fastpath) */ -- uint32_t txcmiss; /* tx header cache miss (slowpath) */ -- -- /* transmit chip error counters */ -- uint32_t txuflo; /* tx fifo underflows */ -- uint32_t txphyerr; /* tx phy errors (indicated in tx status) */ -- uint32_t txphycrs; /* PR8861/8963 counter */ -- -- /* receive stat counters */ -- uint32_t rxframe; /* rx data frames */ -- uint32_t rxbyte; /* rx data bytes */ -- uint32_t rxerror; /* rx data errors (derived: sum of others) */ -- uint32_t rxctl; /* rx management frames */ -- uint32_t rxnobuf; /* rx out of buffers errors */ -- uint32_t rxnondata; /* rx non data frames in the data channel errors */ -- uint32_t rxbadds; /* rx bad DS errors */ -- uint32_t rxbadcm; /* rx bad control or management frames */ -- uint32_t rxfragerr; /* rx fragmentation errors */ -- uint32_t rxrunt; /* rx runt frames */ -- uint32_t rxgiant; /* rx giant frames */ -- uint32_t rxnoscb; /* rx no scb error */ -- uint32_t rxbadproto; /* rx invalid frames */ -- uint32_t rxbadsrcmac; /* rx frames with Invalid Src Mac */ -- uint32_t rxbadda; /* rx frames tossed for invalid da */ -- uint32_t rxfilter; /* rx frames filtered out */ -- -- /* receive chip error counters */ -- uint32_t rxoflo; /* rx fifo overflow errors */ -- uint32_t rxuflo[NFIFO]; /* rx dma descriptor underflow errors */ -- -- uint32_t d11cnt_txrts_off; /* d11cnt txrts value when reset d11cnt */ -- uint32_t d11cnt_rxcrc_off; /* d11cnt rxcrc value when reset d11cnt */ -- uint32_t d11cnt_txnocts_off; /* d11cnt txnocts value when reset d11cnt */ -- -- /* misc counters */ -- uint32_t dmade; /* tx/rx dma descriptor errors */ -- uint32_t dmada; /* tx/rx dma data errors */ -- uint32_t dmape; /* tx/rx dma descriptor protocol errors */ -- uint32_t reset; /* reset count */ -- uint32_t tbtt; /* cnts the TBTT int's */ -- uint32_t txdmawar; /* # occurrences of PR15420 workaround */ -- uint32_t pkt_callback_reg_fail; /* callbacks register failure */ -- -- /* MAC counters: 32-bit version of d11.h's macstat_t */ -- uint32_t txallfrm; /* total number of frames sent, incl. Data, ACK, RTS, CTS, -- * Control Management (includes retransmissions) -- */ -- uint32_t txrtsfrm; /* number of RTS sent out by the MAC */ -- uint32_t txctsfrm; /* number of CTS sent out by the MAC */ -- uint32_t txackfrm; /* number of ACK frames sent out */ -- uint32_t txdnlfrm; /* Not used */ -- uint32_t txbcnfrm; /* beacons transmitted */ -- uint32_t txfunfl[6]; /* per-fifo tx underflows */ -- uint32_t rxtoolate; /* receive too late */ -- uint32_t txfbw; /* transmit at fallback bw (dynamic bw) */ -- uint32_t txtplunfl; /* Template underflows (mac was too slow to transmit ACK/CTS -- * or BCN) -- */ -- uint32_t txphyerror; /* Transmit phy error, type of error is reported in tx-status for -- * driver enqueued frames -- */ -- uint32_t rxfrmtoolong; /* Received frame longer than legal limit (2346 bytes) */ -- uint32_t rxfrmtooshrt; /* Received frame did not contain enough bytes for its frame type */ -- uint32_t rxinvmachdr; /* Either the protocol version != 0 or frame type not -- * data/control/management -- */ -- uint32_t rxbadfcs; /* number of frames for which the CRC check failed in the MAC */ -- uint32_t rxbadplcp; /* parity check of the PLCP header failed */ -- uint32_t rxcrsglitch; /* PHY was able to correlate the preamble but not the header */ -- uint32_t rxstrt; /* Number of received frames with a good PLCP -- * (i.e. passing parity check) -- */ -- uint32_t rxdfrmucastmbss; /* Number of received DATA frames with good FCS and matching RA */ -- uint32_t rxmfrmucastmbss; /* number of received mgmt frames with good FCS and matching RA */ -- uint32_t rxcfrmucast; /* number of received CNTRL frames with good FCS and matching RA */ -- uint32_t rxrtsucast; /* number of unicast RTS addressed to the MAC (good FCS) */ -- uint32_t rxctsucast; /* number of unicast CTS addressed to the MAC (good FCS) */ -- uint32_t rxackucast; /* number of ucast ACKS received (good FCS) */ -- uint32_t rxdfrmocast; /* number of received DATA frames (good FCS and not matching RA) */ -- uint32_t rxmfrmocast; /* number of received MGMT frames (good FCS and not matching RA) */ -- uint32_t rxcfrmocast; /* number of received CNTRL frame (good FCS and not matching RA) */ -- uint32_t rxrtsocast; /* number of received RTS not addressed to the MAC */ -- uint32_t rxctsocast; /* number of received CTS not addressed to the MAC */ -- uint32_t rxdfrmmcast; /* number of RX Data multicast frames received by the MAC */ -- uint32_t rxmfrmmcast; /* number of RX Management multicast frames received by the MAC */ -- uint32_t rxcfrmmcast; /* number of RX Control multicast frames received by the MAC -- * (unlikely to see these) -- */ -- uint32_t rxbeaconmbss; /* beacons received from member of BSS */ -- uint32_t rxdfrmucastobss; /* number of unicast frames addressed to the MAC from -- * other BSS (WDS FRAME) -- */ -- uint32_t rxbeaconobss; /* beacons received from other BSS */ -- uint32_t rxrsptmout; /* Number of response timeouts for transmitted frames -- * expecting a response -- */ -- uint32_t bcntxcancl; /* transmit beacons canceled due to receipt of beacon (IBSS) */ -- uint32_t rxf0ovfl; /* Number of receive fifo 0 overflows */ -- uint32_t rxf1ovfl; /* Number of receive fifo 1 overflows (obsolete) */ -- uint32_t rxf2ovfl; /* Number of receive fifo 2 overflows (obsolete) */ -- uint32_t txsfovfl; /* Number of transmit status fifo overflows (obsolete) */ -- uint32_t pmqovfl; /* Number of PMQ overflows */ -- uint32_t rxcgprqfrm; /* Number of received Probe requests that made it into -- * the PRQ fifo -- */ -- uint32_t rxcgprsqovfl; /* Rx Probe Request Que overflow in the AP */ -- uint32_t txcgprsfail; /* Tx Probe Response Fail. AP sent probe response but did -- * not get ACK -- */ -- uint32_t txcgprssuc; /* Tx Probe Response Success (ACK was received) */ -- uint32_t prs_timeout; /* Number of probe requests that were dropped from the PRQ -- * fifo because a probe response could not be sent out within -- * the time limit defined in M_PRS_MAXTIME -- */ -- uint32_t rxnack; /* obsolete */ -- uint32_t frmscons; /* obsolete */ -- uint32_t txnack; /* obsolete */ -- uint32_t rxback; /* blockack rxcnt */ -- uint32_t txback; /* blockack txcnt */ -- -- /* 802.11 MIB counters, pp. 614 of 802.11 reaff doc. */ -- uint32_t txfrag; /* dot11TransmittedFragmentCount */ -- uint32_t txmulti; /* dot11MulticastTransmittedFrameCount */ -- uint32_t txfail; /* dot11FailedCount */ -- uint32_t txretry; /* dot11RetryCount */ -- uint32_t txretrie; /* dot11MultipleRetryCount */ -- uint32_t rxdup; /* dot11FrameduplicateCount */ -- uint32_t txrts; /* dot11RTSSuccessCount */ -- uint32_t txnocts; /* dot11RTSFailureCount */ -- uint32_t txnoack; /* dot11ACKFailureCount */ -- uint32_t rxfrag; /* dot11ReceivedFragmentCount */ -- uint32_t rxmulti; /* dot11MulticastReceivedFrameCount */ -- uint32_t rxcrc; /* dot11FCSErrorCount */ -- uint32_t txfrmsnt; /* dot11TransmittedFrameCount (bogus MIB?) */ -- uint32_t rxundec; /* dot11WEPUndecryptableCount */ -- -- /* WPA2 counters (see rxundec for DecryptFailureCount) */ -- uint32_t tkipmicfaill; /* TKIPLocalMICFailures */ -- uint32_t tkipcntrmsr; /* TKIPCounterMeasuresInvoked */ -- uint32_t tkipreplay; /* TKIPReplays */ -- uint32_t ccmpfmterr; /* CCMPFormatErrors */ -- uint32_t ccmpreplay; /* CCMPReplays */ -- uint32_t ccmpundec; /* CCMPDecryptErrors */ -- uint32_t fourwayfail; /* FourWayHandshakeFailures */ -- uint32_t wepundec; /* dot11WEPUndecryptableCount */ -- uint32_t wepicverr; /* dot11WEPICVErrorCount */ -- uint32_t decsuccess; /* DecryptSuccessCount */ -- uint32_t tkipicverr; /* TKIPICVErrorCount */ -- uint32_t wepexcluded; /* dot11WEPExcludedCount */ -- -- uint32_t txchanrej; /* Tx frames suppressed due to channel rejection */ -- uint32_t psmwds; /* Count PSM watchdogs */ -- uint32_t phywatchdog; /* Count Phy watchdogs (triggered by ucode) */ -- -- /* MBSS counters, AP only */ -- uint32_t prq_entries_handled; /* PRQ entries read in */ -- uint32_t prq_undirected_entries; /* which were bcast bss & ssid */ -- uint32_t prq_bad_entries; /* which could not be translated to info */ -- uint32_t atim_suppress_count; /* TX suppressions on ATIM fifo */ -- uint32_t bcn_template_not_ready; /* Template marked in use on send bcn ... */ -- uint32_t bcn_template_not_ready_done; /* ...but "DMA done" interrupt rcvd */ -- uint32_t late_tbtt_dpc; /* TBTT DPC did not happen in time */ -- -- /* per-rate receive stat counters */ -- uint32_t rx1mbps; /* packets rx at 1Mbps */ -- uint32_t rx2mbps; /* packets rx at 2Mbps */ -- uint32_t rx5mbps5; /* packets rx at 5.5Mbps */ -- uint32_t rx6mbps; /* packets rx at 6Mbps */ -- uint32_t rx9mbps; /* packets rx at 9Mbps */ -- uint32_t rx11mbps; /* packets rx at 11Mbps */ -- uint32_t rx12mbps; /* packets rx at 12Mbps */ -- uint32_t rx18mbps; /* packets rx at 18Mbps */ -- uint32_t rx24mbps; /* packets rx at 24Mbps */ -- uint32_t rx36mbps; /* packets rx at 36Mbps */ -- uint32_t rx48mbps; /* packets rx at 48Mbps */ -- uint32_t rx54mbps; /* packets rx at 54Mbps */ -- uint32_t rx108mbps; /* packets rx at 108mbps */ -- uint32_t rx162mbps; /* packets rx at 162mbps */ -- uint32_t rx216mbps; /* packets rx at 216 mbps */ -- uint32_t rx270mbps; /* packets rx at 270 mbps */ -- uint32_t rx324mbps; /* packets rx at 324 mbps */ -- uint32_t rx378mbps; /* packets rx at 378 mbps */ -- uint32_t rx432mbps; /* packets rx at 432 mbps */ -- uint32_t rx486mbps; /* packets rx at 486 mbps */ -- uint32_t rx540mbps; /* packets rx at 540 mbps */ -- -- /* pkteng rx frame stats */ -- uint32_t pktengrxducast; /* unicast frames rxed by the pkteng code */ -- uint32_t pktengrxdmcast; /* multicast frames rxed by the pkteng code */ -- -- uint32_t rfdisable; /* count of radio disables */ -- uint32_t bphy_rxcrsglitch; /* PHY count of bphy glitches */ -- uint32_t bphy_badplcp; -- -- uint32_t txexptime; /* Tx frames suppressed due to timer expiration */ -- -- uint32_t txmpdu_sgi; /* count for sgi transmit */ -- uint32_t rxmpdu_sgi; /* count for sgi received */ -- uint32_t txmpdu_stbc; /* count for stbc transmit */ -- uint32_t rxmpdu_stbc; /* count for stbc received */ -- -- uint32_t rxundec_mcst; /* dot11WEPUndecryptableCount */ -- -- /* WPA2 counters (see rxundec for DecryptFailureCount) */ -- uint32_t tkipmicfaill_mcst; /* TKIPLocalMICFailures */ -- uint32_t tkipcntrmsr_mcst; /* TKIPCounterMeasuresInvoked */ -- uint32_t tkipreplay_mcst; /* TKIPReplays */ -- uint32_t ccmpfmterr_mcst; /* CCMPFormatErrors */ -- uint32_t ccmpreplay_mcst; /* CCMPReplays */ -- uint32_t ccmpundec_mcst; /* CCMPDecryptErrors */ -- uint32_t fourwayfail_mcst; /* FourWayHandshakeFailures */ -- uint32_t wepundec_mcst; /* dot11WEPUndecryptableCount */ -- uint32_t wepicverr_mcst; /* dot11WEPICVErrorCount */ -- uint32_t decsuccess_mcst; /* DecryptSuccessCount */ -- uint32_t tkipicverr_mcst; /* TKIPICVErrorCount */ -- uint32_t wepexcluded_mcst; /* dot11WEPExcludedCount */ -- -- uint32_t dma_hang; /* count for dma hang */ -- uint32_t reinit; /* count for reinit */ -- -- uint32_t pstatxucast; /* count of ucast frames xmitted on all psta assoc */ -- uint32_t pstatxnoassoc; /* count of txnoassoc frames xmitted on all psta assoc */ -- uint32_t pstarxucast; /* count of ucast frames received on all psta assoc */ -- uint32_t pstarxbcmc; /* count of bcmc frames received on all psta */ -- uint32_t pstatxbcmc; /* count of bcmc frames transmitted on all psta */ -- -- uint32_t cso_passthrough; /* hw cso required but passthrough */ -- uint32_t cso_normal; /* hw cso hdr for normal process */ -- uint32_t chained; /* number of frames chained */ -- uint32_t chainedsz1; /* number of chain size 1 frames */ -- uint32_t unchained; /* number of frames not chained */ -- uint32_t maxchainsz; /* max chain size so far */ -- uint32_t currchainsz; /* current chain size */ -- uint32_t rxdrop20s; /* drop secondary cnt */ -- uint32_t pciereset; /* Secondary Bus Reset issued by driver */ -- uint32_t cfgrestore; /* configspace restore by driver */ -- uint32_t reinitreason[8]; /* reinitreason counters; 0: Unknown reason */ -- uint32_t rxrtry; /* num of received packets with retry bit on */ --} wl_cnt_ver_ten_t; -- --typedef struct --{ -- uint16_t version; -- uint16_t length; -- uint32_t rxampdu_sgi; -- uint32_t rxampdu_stbc; -- uint32_t rxmpdu_sgi; -- uint32_t rxmpdu_stbc; -- uint32_t rxmcs0_40M; -- uint32_t rxmcs1_40M; -- uint32_t rxmcs2_40M; -- uint32_t rxmcs3_40M; -- uint32_t rxmcs4_40M; -- uint32_t rxmcs5_40M; -- uint32_t rxmcs6_40M; -- uint32_t rxmcs7_40M; -- uint32_t rxmcs32_40M; -- uint32_t txfrmsnt_20Mlo; -- uint32_t txfrmsnt_20Mup; -- uint32_t txfrmsnt_40M; -- uint32_t rx_20ul; --} wl_cnt_ext_t; --#define WL_RXDIV_STATS_T_VERSION 1 --typedef struct --{ -- uint16_t version; -- uint16_t length; -- uint32_t rxant[4]; --} wl_rxdiv_stats_t; --#define WL_DELTA_STATS_T_VERSION 1 --typedef struct --{ -- uint16_t version; -- uint16_t length; -- uint32_t txframe; -- uint32_t txbyte; -- uint32_t txretrans; -- uint32_t txfail; -- uint32_t rxframe; -- uint32_t rxbyte; -- uint32_t rx1mbps; -- uint32_t rx2mbps; -- uint32_t rx5mbps5; -- uint32_t rx6mbps; -- uint32_t rx9mbps; -- uint32_t rx11mbps; -- uint32_t rx12mbps; -- uint32_t rx18mbps; -- uint32_t rx24mbps; -- uint32_t rx36mbps; -- uint32_t rx48mbps; -- uint32_t rx54mbps; -- uint32_t rx108mbps; -- uint32_t rx162mbps; -- uint32_t rx216mbps; -- uint32_t rx270mbps; -- uint32_t rx324mbps; -- uint32_t rx378mbps; -- uint32_t rx432mbps; -- uint32_t rx486mbps; -- uint32_t rx540mbps; --} wl_delta_stats_t; --#define WL_WME_CNT_VERSION 1 --typedef struct --{ -- uint32_t packets; -- uint32_t bytes; --} wl_traffic_stats_t; --#define AC_COUNT 4 --typedef struct --{ -- uint16_t version; -- uint16_t length; -- wl_traffic_stats_t tx[AC_COUNT]; -- wl_traffic_stats_t tx_failed[AC_COUNT]; -- wl_traffic_stats_t rx[AC_COUNT]; -- wl_traffic_stats_t rx_failed[AC_COUNT]; -- wl_traffic_stats_t forward[AC_COUNT]; -- wl_traffic_stats_t tx_expired[AC_COUNT]; --} wl_wme_cnt_t; -- --#define WL_MKEEP_ALIVE_VERSION 1 --#define WL_MKEEP_ALIVE_FIXED_LEN offsetof(wl_mkeep_alive_pkt_t, data) --#define WL_MKEEP_ALIVE_PRECISION 500 -- --#define WLC_BA_CNT_VERSION 1 --typedef struct wlc_ba_cnt --{ -- uint16_t version; -- uint16_t length; -- uint32_t txpdu; -- uint32_t txsdu; -- uint32_t txfc; -- uint32_t txfci; -- uint32_t txretrans; -- uint32_t txbatimer; -- uint32_t txdrop; -- uint32_t txaddbareq; -- uint32_t txaddbaresp; -- uint32_t txdelba; -- uint32_t txba; -- uint32_t txbar; -- uint32_t txpad[4]; -- uint32_t rxpdu; -- uint32_t rxqed; -- uint32_t rxdup; -- uint32_t rxnobuf; -- uint32_t rxaddbareq; -- uint32_t rxaddbaresp; -- uint32_t rxdelba; -- uint32_t rxba; -- uint32_t rxbar; -- uint32_t rxinvba; -- uint32_t rxbaholes; -- uint32_t rxunexp; -- uint32_t rxpad[4]; --} wlc_ba_cnt_t; --struct ampdu_tid_control --{ -- uint8_t tid; -- uint8_t enable; --}; --struct wl_msglevel2 --{ -- uint32_t low; -- uint32_t high; --}; --struct ampdu_ea_tid --{ -- wl_ether_addr_t ea; -- uint8_t tid; --}; --struct ampdu_retry_tid --{ -- uint8_t tid; -- uint8_t retry; --}; --struct ampdu_ba_sizes --{ -- uint8_t ba_tx_wsize; -- uint8_t ba_rx_wsize; --}; --#define DPT_DISCOVERY_MANUAL 0x01 --#define DPT_DISCOVERY_AUTO 0x02 --#define DPT_DISCOVERY_SCAN 0x04 --#define DPT_PATHSEL_AUTO 0 --#define DPT_PATHSEL_DIRECT 1 --#define DPT_PATHSEL_APPATH 2 --#define DPT_DENY_LIST_ADD 1 --#define DPT_DENY_LIST_REMOVE 2 --#define DPT_MANUAL_EP_CREATE 1 --#define DPT_MANUAL_EP_MODIFY 2 --#define DPT_MANUAL_EP_DELETE 3 --typedef struct dpt_iovar --{ -- wl_ether_addr_t ea; -- uint8_t mode; -- uint32_t pad; --} dpt_iovar_t; --#define DPT_STATUS_ACTIVE 0x01 --#define DPT_STATUS_AES 0x02 --#define DPT_STATUS_FAILED 0x04 --#define DPT_FNAME_LEN 48 --typedef struct dpt_status --{ -- uint8_t status; -- uint8_t fnlen; -- uint8_t name[DPT_FNAME_LEN]; -- uint32_t rssi; -- sta_info_t sta; --} dpt_status_t; --typedef struct dpt_list --{ -- uint32_t num; -- dpt_status_t status[1]; --} dpt_list_t; --typedef struct dpt_fname --{ -- uint8_t len; -- uint8_t name[DPT_FNAME_LEN]; --} dpt_fname_t; --#define BDD_FNAME_LEN 32 --typedef struct bdd_fname --{ -- uint8_t len; -- uint8_t name[BDD_FNAME_LEN]; --} bdd_fname_t; --struct ts_list --{ -- int32_t count; -- struct tsinfo_arg tsinfo[1]; --}; --typedef struct tspec_arg --{ -- uint16_t version; -- uint16_t length; -- uint32_t flag; -- struct tsinfo_arg tsinfo; -- uint16_t nom_msdu_size; -- uint16_t max_msdu_size; -- uint32_t min_srv_interval; -- uint32_t max_srv_interval; -- uint32_t inactivity_interval; -- uint32_t suspension_interval; -- uint32_t srv_start_time; -- uint32_t min_data_rate; -- uint32_t mean_data_rate; -- uint32_t peak_data_rate; -- uint32_t max_burst_size; -- uint32_t delay_bound; -- uint32_t min_phy_rate; -- uint16_t surplus_bw; -- uint16_t medium_time; -- uint8_t dialog_token; --} tspec_arg_t; --typedef struct tspec_per_sta_arg --{ -- wl_ether_addr_t ea; -- struct tspec_arg ts; --} tspec_per_sta_arg_t; --typedef struct wme_max_bandwidth --{ -- uint32_t ac[AC_COUNT]; --} wme_max_bandwidth_t; --#define WL_WME_MBW_PARAMS_IO_BYTES (sizeof(wme_max_bandwidth_t) ) --#define TSPEC_ARG_VERSION 2 --#define TSPEC_ARG_LENGTH 55 --#define TSPEC_DEFAULT_DIALOG_TOKEN 42 --#define TSPEC_DEFAULT_SBW_FACTOR 0x3000 --#define TSPEC_PENDING 0 --#define TSPEC_ACCEPTED 1 --#define TSPEC_REJECTED 2 --#define TSPEC_UNKNOWN 3 --#define TSPEC_STATUS_MASK 7 --#define WL_WLAN_ASSOC_REASON_NORMAL_NETWORK 0 --#define WL_WLAN_ASSOC_REASON_ROAM_FROM_CELLULAR_NETWORK 1 --#define WL_WLAN_ASSOC_REASON_ROAM_FROM_LAN 2 --#define WL_WLAN_ASSOC_REASON_MAX 2 --#define WL_SWFL_ABBFL 0x0001 --#define WL_SWFL_ABENCORE 0x0002 --#define WL_SWFL_NOHWRADIO 0x0004 --#define WL_LIFETIME_MAX 0xFFFF --typedef struct wl_lifetime --{ -- uint32_t ac; -- uint32_t lifetime; --} wl_lifetime_t; --typedef struct wl_chan_switch --{ -- uint8_t mode; -- uint8_t count; -- wl_chanspec_t chspec; -- uint8_t reg; --} wl_chan_switch_t; --#define WLC_ROAM_TRIGGER_DEFAULT 0 --#define WLC_ROAM_TRIGGER_BANDWIDTH 1 --#define WLC_ROAM_TRIGGER_DISTANCE 2 --#define WLC_ROAM_TRIGGER_MAX_VALUE 2 --enum --{ -- PFN_LIST_ORDER, PFN_RSSI --}; --#define SORT_CRITERIA_BIT 0 --#define AUTO_NET_SWITCH_BIT 1 --#define ENABLE_BKGRD_SCAN_BIT 2 --#define IMMEDIATE_SCAN_BIT 3 --#define AUTO_CONNECT_BIT 4 --#define IMMEDIATE_EVENT_BIT 8 --#define SUPPRESS_SSID_BIT 9 --#define ENABLE_NET_OFFLOAD_BIT 10 --#define SORT_CRITERIA_MASK 0x01 --#define AUTO_NET_SWITCH_MASK 0x02 --#define ENABLE_BKGRD_SCAN_MASK 0x04 --#define IMMEDIATE_SCAN_MASK 0x08 --#define AUTO_CONNECT_MASK 0x10 --#define PFN_VERSION 2 -- --/* PFN network info structure */ --typedef struct wl_pfn_subnet_info --{ -- struct ether_addr BSSID; -- uint8_t channel; /* channel number only */ -- uint8_t SSID_len; -- uint8_t SSID[32]; --} wl_pfn_subnet_info_t; -- --typedef struct wl_pfn_net_info --{ -- wl_pfn_subnet_info_t pfnsubnet; -- int16_t RSSI; /* receive signal strength (in dBm) */ -- uint16_t timestamp; /* age in seconds */ --} wl_pfn_net_info_t; -- --/* used to report exactly one scan result */ --/* plus reports detailed scan info in bss_info */ --typedef struct wl_pfn_scanresult --{ -- uint32_t version; -- uint32_t status; -- uint32_t count; -- wl_pfn_net_info_t netinfo; -- wl_bss_info_t bss_info; --} wl_pfn_scanresult_t; -- --/* PFN data structure */ --typedef struct wl_pfn_param --{ -- int32_t version; /* PNO parameters version */ -- int32_t scan_freq; /* Scan frequency */ -- int32_t lost_network_timeout; /* Timeout in sec. to declare -- * discovered network as lost -- */ -- int16_t flags; /* Bit field to control features -- * of PFN such as sort criteria auto -- * enable switch and background scan -- */ -- int16_t rssi_margin; /* Margin to avoid jitter for choosing a -- * PFN based on RSSI sort criteria -- */ -- uint8_t bestn; /* number of best networks in each scan */ -- uint8_t mscan; /* number of scans recorded */ -- uint8_t repeat; /* Minimum number of scan intervals -- * before scan frequency changes in adaptive scan -- */ -- uint8_t exp; /* Exponent of 2 for maximum scan interval */ -- -- int32_t slow_freq; /* slow scan period */ --} wl_pfn_param_t; -- --typedef struct wl_pfn_bssid --{ -- struct ether_addr macaddr; -- /* Bit4: suppress_lost, Bit3: suppress_found */ -- uint16_t flags; --} wl_pfn_bssid_t; -- --typedef struct wl_pfn_cfg --{ -- uint32_t reporttype; -- int32_t channel_num; -- uint16_t channel_list[WL_NUMCHANNELS]; -- uint32_t flags; --} wl_pfn_cfg_t; -- --/* for use with wl_pfn.flags */ --#define WL_PFN_HIDDEN_MASK 0x4 --#define WL_PFN_SUPPRESSLOST_MASK 0x10 -- --typedef struct wl_pfn --{ -- wlc_ssid_t ssid; /* ssid name and its length */ -- int32_t flags; /* bit2: hidden */ -- int32_t infra; /* BSS Vs IBSS */ -- int32_t auth; /* Open Vs Closed */ -- int32_t wpa_auth; /* WPA type */ -- int32_t wsec; /* wsec value */ --} wl_pfn_t; -- --#define TOE_TX_CSUM_OL 0x00000001 --#define TOE_RX_CSUM_OL 0x00000002 --#define TOE_ERRTEST_TX_CSUM 0x00000001 --#define TOE_ERRTEST_RX_CSUM 0x00000002 --#define TOE_ERRTEST_RX_CSUM2 0x00000004 --struct toe_ol_stats_t --{ -- uint32_t tx_summed; -- uint32_t tx_iph_fill; -- uint32_t tx_tcp_fill; -- uint32_t tx_udp_fill; -- uint32_t tx_icmp_fill; -- uint32_t rx_iph_good; -- uint32_t rx_iph_bad; -- uint32_t rx_tcp_good; -- uint32_t rx_tcp_bad; -- uint32_t rx_udp_good; -- uint32_t rx_udp_bad; -- uint32_t rx_icmp_good; -- uint32_t rx_icmp_bad; -- uint32_t tx_tcp_errinj; -- uint32_t tx_udp_errinj; -- uint32_t tx_icmp_errinj; -- uint32_t rx_tcp_errinj; -- uint32_t rx_udp_errinj; -- uint32_t rx_icmp_errinj; --}; --#define ARP_OL_AGENT 0x00000001 --#define ARP_OL_SNOOP 0x00000002 --#define ARP_OL_HOST_AUTO_REPLY 0x00000004 --#define ARP_OL_PEER_AUTO_REPLY 0x00000008 --#define ARP_ERRTEST_REPLY_PEER 0x1 --#define ARP_ERRTEST_REPLY_HOST 0x2 --#define ARP_MULTIHOMING_MAX 8 --typedef struct arp_ol_stats --{ -- uint32_t host_ip_entries; -- uint32_t host_ip_overflow; -- uint32_t arp_table_entries; -- uint32_t arp_table_overflow; -- uint32_t host_request; -- uint32_t host_reply; -- uint32_t host_service; -- uint32_t peer_request; -- uint32_t peer_request_drop; -- uint32_t peer_reply; -- uint32_t peer_reply_drop; -- uint32_t peer_service; --}arp_ol_stats_t; --typedef struct wl_keep_alive_pkt --{ -- uint32_t period_msec; -- uint16_t len_bytes; -- uint8_t data[1]; --} wl_keep_alive_pkt_t; --#define WL_KEEP_ALIVE_FIXED_LEN offsetof(wl_keep_alive_pkt_t, data) --typedef enum wl_pkt_filter_type --{ -- WL_PKT_FILTER_TYPE_PATTERN_MATCH --} wl_pkt_filter_type_t; --#define WL_PKT_FILTER_TYPE wl_pkt_filter_type_t --typedef struct wl_pkt_filter_pattern --{ -- uint32_t offset; -- uint32_t size_bytes; -- uint8_t mask_and_pattern[1]; --} wl_pkt_filter_pattern_t; --typedef struct wl_pkt_filter --{ -- uint32_t id; -- uint32_t type; -- uint32_t negate_match; -- union -- { -- wl_pkt_filter_pattern_t pattern; -- } u; --} wl_pkt_filter_t; --#define WL_PKT_FILTER_FIXED_LEN offsetof(wl_pkt_filter_t, u) --#define WL_PKT_FILTER_PATTERN_FIXED_LEN offsetof(wl_pkt_filter_pattern_t, mask_and_pattern) --typedef struct wl_pkt_filter_enable --{ -- uint32_t id; -- uint32_t enable; --} wl_pkt_filter_enable_t; --typedef struct wl_pkt_filter_list --{ -- uint32_t num; -- wl_pkt_filter_t filter[1]; --} wl_pkt_filter_list_t; --#define WL_PKT_FILTER_LIST_FIXED_LEN offsetof(wl_pkt_filter_list_t, filter) --typedef struct wl_pkt_filter_stats --{ -- uint32_t num_pkts_matched; -- uint32_t num_pkts_forwarded; -- uint32_t num_pkts_discarded; --} wl_pkt_filter_stats_t; --typedef struct wl_seq_cmd_ioctl --{ -- uint32_t cmd; -- uint32_t len; --} wl_seq_cmd_ioctl_t; --#define WL_SEQ_CMD_ALIGN_BYTES 4 --#define WL_SEQ_CMDS_GET_IOCTL_FILTER(cmd) \ -- ( ( (cmd) == WLC_GET_MAGIC ) || \ -- ( (cmd) == WLC_GET_VERSION ) || \ -- ( (cmd) == WLC_GET_AP ) || \ -- ( (cmd) == WLC_GET_INSTANCE ) ) --#define WL_PKTENG_PER_TX_START 0x01 --#define WL_PKTENG_PER_TX_STOP 0x02 --#define WL_PKTENG_PER_RX_START 0x04 --#define WL_PKTENG_PER_RX_WITH_ACK_START 0x05 --#define WL_PKTENG_PER_TX_WITH_ACK_START 0x06 --#define WL_PKTENG_PER_RX_STOP 0x08 --#define WL_PKTENG_PER_MASK 0xff --#define WL_PKTENG_SYNCHRONOUS 0x100 --typedef struct wl_pkteng --{ -- uint32_t flags; -- uint32_t delay; -- uint32_t nframes; -- uint32_t length; -- uint8_t seqno; -- wl_ether_addr_t dest; -- wl_ether_addr_t src; --} wl_pkteng_t; --#define NUM_80211b_RATES 4 --#define NUM_80211ag_RATES 8 --#define NUM_80211n_RATES 32 --#define NUM_80211_RATES (NUM_80211b_RATES + NUM_80211ag_RATES + NUM_80211n_RATES) --typedef struct wl_pkteng_stats --{ -- uint32_t lostfrmcnt; -- int32_t rssi; -- int32_t snr; -- uint16_t rxpktcnt[NUM_80211_RATES + 1]; --} wl_pkteng_stats_t; --typedef struct wl_sslpnphy_papd_debug_data --{ -- uint8_t psat_pwr; -- uint8_t psat_indx; -- uint8_t final_idx; -- uint8_t start_idx; -- int32_t min_phase; -- int32_t voltage; -- int8_t temperature; --} wl_sslpnphy_papd_debug_data_t; --typedef struct wl_sslpnphy_debug_data --{ -- int16_t papdcompRe[64]; -- int16_t papdcompIm[64]; --} wl_sslpnphy_debug_data_t; --typedef struct wl_sslpnphy_spbdump_data --{ -- uint16_t tbl_length; -- int16_t spbreal[256]; -- int16_t spbimg[256]; --} wl_sslpnphy_spbdump_data_t; --typedef struct wl_sslpnphy_percal_debug_data --{ -- uint32_t cur_idx; -- uint32_t tx_drift; -- uint8_t prev_cal_idx; -- uint32_t percal_ctr; -- int32_t nxt_cal_idx; -- uint32_t force_1idxcal; -- uint32_t onedxacl_req; -- int32_t last_cal_volt; -- int8_t last_cal_temp; -- uint32_t vbat_ripple; -- uint32_t exit_route; -- int32_t volt_winner; --} wl_sslpnphy_percal_debug_data_t; --#define WL_WOWL_MAGIC (1 << 0) --#define WL_WOWL_NET (1 << 1) --#define WL_WOWL_DIS (1 << 2) --#define WL_WOWL_RETR (1 << 3) --#define WL_WOWL_BCN (1 << 4) --#define WL_WOWL_TST (1 << 5) --#define WL_WOWL_TRAFFIC (1 << 12) --#define WL_WOWL_BCAST (1 << 15) --#define WL_WOWL_GTK (0x441f) --#define WL_WOWL_DEAUTH (0x1F) --#define WL_WOWL_ALL (0x541E) -- --#define MAGIC_PKT_MINLEN 102 --typedef struct --{ -- uint32_t masksize; -- uint32_t offset; -- uint32_t patternoffset; -- uint32_t patternsize; --} wl_wowl_pattern_t; --typedef struct --{ -- uint32_t count; -- wl_wowl_pattern_t pattern[1]; --} wl_wowl_pattern_list_t; --typedef struct --{ -- uint8_t pci_wakeind; -- uint16_t ucode_wakeind; --} wl_wowl_wakeind_t; --typedef struct wl_txrate_class --{ -- uint8_t init_rate; -- uint8_t min_rate; -- uint8_t max_rate; --} wl_txrate_class_t; --#define WL_DELAYMODE_DEFER 0 --#define WL_DELAYMODE_FORCE 1 --#define WL_DELAYMODE_AUTO 2 --#define WLC_OBSS_SCAN_PASSIVE_DWELL_DEFAULT 100 --#define WLC_OBSS_SCAN_PASSIVE_DWELL_MIN 5 --#define WLC_OBSS_SCAN_PASSIVE_DWELL_MAX 1000 --#define WLC_OBSS_SCAN_ACTIVE_DWELL_DEFAULT 20 --#define WLC_OBSS_SCAN_ACTIVE_DWELL_MIN 10 --#define WLC_OBSS_SCAN_ACTIVE_DWELL_MAX 1000 --#define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_DEFAULT 300 --#define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MIN 10 --#define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MAX 900 --#define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_DEFAULT 5 --#define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MIN 5 --#define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MAX 100 --#define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_DEFAULT 200 --#define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MIN 200 --#define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MAX 10000 --#define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_DEFAULT 20 --#define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MIN 20 --#define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MAX 10000 --#define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_DEFAULT 25 --#define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MIN 0 --#define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MAX 100 --typedef struct wl_obss_scan_arg --{ -- int16_t passive_dwell; -- int16_t active_dwell; -- int16_t bss_widthscan_interval; -- int16_t passive_total; -- int16_t active_total; -- int16_t chanwidth_transition_delay; -- int16_t activity_threshold; --} wl_obss_scan_arg_t; --#define WL_OBSS_SCAN_PARAM_LEN sizeof(wl_obss_scan_arg_t) --#define WL_MIN_NUM_OBSS_SCAN_ARG 7 --#define WL_COEX_INFO_MASK 0x07 --#define WL_COEX_INFO_REQ 0x01 --#define WL_COEX_40MHZ_INTOLERANT 0x02 --#define WL_COEX_WIDTH20 0x04 --typedef struct wl_action_obss_coex_req --{ -- uint8_t info; -- uint8_t num; -- uint8_t ch_list[1]; --} wl_action_obss_coex_req_t; --#define MAX_RSSI_LEVELS 8 --typedef struct wl_rssi_event --{ -- uint32_t rate_limit_msec; -- uint8_t num_rssi_levels; -- int8_t rssi_levels[MAX_RSSI_LEVELS]; --} wl_rssi_event_t; --#define WLFEATURE_DISABLE_11N 0x00000001 --#define WLFEATURE_DISABLE_11N_STBC_TX 0x00000002 --#define WLFEATURE_DISABLE_11N_STBC_RX 0x00000004 --#define WLFEATURE_DISABLE_11N_SGI_TX 0x00000008 --#define WLFEATURE_DISABLE_11N_SGI_RX 0x00000010 --#define WLFEATURE_DISABLE_11N_AMPDU_TX 0x00000020 --#define WLFEATURE_DISABLE_11N_AMPDU_RX 0x00000040 --#define WLFEATURE_DISABLE_11N_GF 0x00000080 -- --#pragma pack(1) -- --typedef struct sta_prbreq_wps_ie_hdr --{ -- wl_ether_addr_t staAddr; -- uint16_t ieLen; --} sta_prbreq_wps_ie_hdr_t; -- --typedef struct sta_prbreq_wps_ie_data --{ -- sta_prbreq_wps_ie_hdr_t hdr; -- uint8_t ieData[1]; --} sta_prbreq_wps_ie_data_t; -- --typedef struct sta_prbreq_wps_ie_list --{ -- uint32_t totLen; -- uint8_t ieDataList[1]; --} sta_prbreq_wps_ie_list_t; -- --/* EDCF related items from 802.11.h */ -- --/* ACI from 802.11.h */ --#define EDCF_AIFSN_MIN 1 /* AIFSN minimum value */ --#define EDCF_AIFSN_MAX 15 /* AIFSN maximum value */ --#define EDCF_AIFSN_MASK 0x0f /* AIFSN mask */ --#define EDCF_ACM_MASK 0x10 /* ACM mask */ --#define EDCF_ACI_MASK 0x60 /* ACI mask */ --#define EDCF_ACI_SHIFT 5 /* ACI shift */ --#define EDCF_AIFSN_SHIFT 12 /* 4 MSB(0xFFF) in ifs_ctl for AC idx */ -- --/* ECW from 802.11.h */ --#define EDCF_ECW_MIN 0 /* cwmin/cwmax exponent minimum value */ --#define EDCF_ECW_MAX 15 /* cwmin/cwmax exponent maximum value */ --#define EDCF_ECW2CW(exp) ( (1 << (exp) ) - 1 ) --#define EDCF_ECWMIN_MASK 0x0f /* cwmin exponent form mask */ --#define EDCF_ECWMAX_MASK 0xf0 /* cwmax exponent form mask */ --#define EDCF_ECWMAX_SHIFT 4 /* cwmax exponent form shift */ -- --/* TXOP from 802.11.h */ --#define EDCF_TXOP_MIN 0 /* TXOP minimum value */ --#define EDCF_TXOP_MAX 65535 /* TXOP maximum value */ --#define EDCF_TXOP2USEC(txop) ( (txop) << 5 ) -- --#define EDCF_ACPARAM --struct edcf_acparam --{ -- uint8_t ACI; -- uint8_t ECW; -- uint16_t TXOP; /* stored in network order (ls octet first) */ --}; --typedef struct edcf_acparam edcf_acparam_t; -- --/* Stop packing structures */ --#pragma pack() -- --/* discovery state */ --typedef struct wl_p2p_disc_st --{ -- uint8_t state; /* see p2p_discovery_state_t */ -- uint16_t chanspec; /* valid in listen state */ -- uint16_t dwell_time_ms; /* valid in listen state, in ms */ --} wl_p2p_disc_st_t; -- --/* scan request */ --typedef struct wl_p2p_scan --{ -- uint8_t type; /* 'S' for WLC_SCAN, 'E' for "escan" */ -- uint8_t reserved[3]; -- /* scan or escan parms... */ --} wl_p2p_scan_t; -- --/* escan request */ --typedef struct --{ -- uint8_t type; /* 'S' for WLC_SCAN, 'E' for "escan" */ -- uint8_t reserved[3]; -- -- /* escan params */ -- wl_escan_params_t escan; --} wl_p2p_escan_t; -- --/* i/f request */ --typedef struct wl_p2p_if --{ -- struct ether_addr mac_address; -- uint8_t interface_type; -- uint16_t chan_spec; --} wl_p2p_if_t; -- --/* i/f query */ --typedef struct wl_p2p_ifq --{ -- uint32_t bsscfgidx; -- char ifname[16]; --} wl_p2p_ifq_t; -- --/* OppPS & CTWindow */ --typedef struct wl_p2p_ops --{ -- uint8_t ops; /* 0: disable 1: enable */ -- uint8_t ctw; /* >= 10 */ --} wl_p2p_ops_t; -- --/* absence and presence request */ --typedef struct wl_p2p_sched_desc --{ -- uint32_t start; -- uint32_t interval; -- uint32_t duration; -- uint32_t count; /* see count */ --} wl_p2p_sched_desc_t; -- --typedef struct wl_p2p_sched --{ -- uint8_t type; /* see schedule type */ -- uint8_t action; /* see schedule action */ -- uint8_t option; /* see schedule option */ -- wl_p2p_sched_desc_t desc[1]; --} wl_p2p_sched_t; -- --/* schedule type */ --#define WL_P2P_SCHED_TYPE_ABS 0 /* Scheduled Absence */ --#define WL_P2P_SCHED_TYPE_REQ_ABS 1 /* Requested Absence */ --#define WL_P2P_SCHED_TYPE_REQ_PSC 2 /* Requested Presence */ -- --/* schedule action during absence periods (for WL_P2P_SCHED_ABS type) */ --#define WL_P2P_SCHED_ACTION_NONE 0 /* no action */ --#define WL_P2P_SCHED_ACTION_DOZE 1 /* doze */ --#define WL_P2P_SCHED_ACTION_RESET 255 /* reset */ -- --/* schedule option - WL_P2P_SCHED_TYPE_ABS */ --#define WL_P2P_SCHED_OPTION_NORMAL 0 /* normal start/interval/duration/count in time */ --#define WL_P2P_SCHED_OPTION_BCNPCT 1 /* percentage of beacon interval */ -- --typedef struct wl_p2p_wfds_hash --{ -- uint32_t advt_id; -- uint16_t nw_cfg_method; -- uint8_t wfds_hash[6]; -- uint8_t name_len; -- uint8_t service_name[MAX_WFDS_SVC_NAME_LEN]; --} wl_p2p_wfds_hash_t; -- --#define P2P_IP_ALLOC_LEN 12 --/* Definitions for Reliable Multicast */ --/* NOTE: RMC structures should not be packed */ -- --#define WL_RMC_CNT_VERSION (1) --#define WL_RMC_TR_VERSION (1) --#define WL_RMC_MAX_CLIENT (32) --#define WL_RMC_FLAG_INBLACKLIST (1) --#define WL_RMC_FLAG_ACTIVEACKER (2) --#define WL_RMC_FLAG_RELMCAST (4) --#define WL_RMC_FLAG_MASTER_TX (8) --#define WL_RMC_MAX_TABLE_ENTRY (8) -- --#define WL_RMC_VER (1) --#define WL_RMC_INDEX_ACK_ALL (255) --#define WL_RMC_NUM_OF_MC_STREAMS (4) --#define WL_RMC_MAX_TRS_PER_GROUP (1) --#define WL_RMC_MAX_TRS_IN_ACKALL (1) --#define WL_RMC_ACK_MCAST0 (0x02) --#define WL_RMC_ACK_MCAST_ALL (0x01) --#define WL_RMC_ACTF_TIME_MIN (300) /* time in ms */ --#define WL_RMC_ACTF_TIME_MAX (20000) /* time in ms */ --#define WL_RMC_MAX_NUM_TRS (32) /* maximun transmitters allowed */ --#define WL_RMC_ARTMO_MIN (350) /* time in ms */ --#define WL_RMC_ARTMO_MAX (40000) /* time in ms */ -- --enum rmc_opcodes --{ -- RELMCAST_ENTRY_OP_DISABLE = 0, /* Disable multi-cast group */ -- RELMCAST_ENTRY_OP_DELETE = 1, /* Delete multi-cast group */ -- RELMCAST_ENTRY_OP_ENABLE = 2, /* Enable multi-cast group */ -- RELMCAST_ENTRY_OP_ACK_ALL = 3 /* Enable ACK ALL bit in AMT */ --}; -- --/* RMC operational modes */ --enum rmc_modes --{ -- WL_RMC_MODE_RECEIVER = 0, /* Receiver mode by default */ -- WL_RMC_MODE_TRANSMITTER = 1, /* Transmitter mode using wl ackreq */ -- WL_RMC_MODE_INITIATOR = 2 /* Initiator mode using wl ackreq */ --}; -- --/* Each RMC mcast client info */ --typedef struct wl_relmcast_client --{ -- uint8_t flag; /* status of client such as AR, R, or blacklisted */ -- int16_t rssi; /* rssi value of RMC client */ -- struct ether_addr addr; /* mac address of RMC client */ --} wl_relmcast_client_t; -- --/* RMC Counters */ --typedef struct wl_rmc_cnts --{ -- uint16_t version; /* see definition of WL_CNT_T_VERSION */ -- uint16_t length; /* length of entire structure */ -- uint16_t dupcnt; /* counter for duplicate rmc MPDU */ -- uint16_t ackreq_err; /* counter for wl ackreq error */ -- uint16_t af_tx_err; /* error count for action frame transmit */ -- uint16_t null_tx_err; /* error count for rmc null frame transmit */ -- uint16_t af_unicast_tx_err; /* error count for rmc unicast frame transmit */ -- uint16_t mc_no_amt_slot; /* No mcast AMT entry available */ -- /* Unused. Keep for rom compatibility */ -- uint16_t mc_no_glb_slot; /* No mcast entry available in global table */ -- uint16_t mc_not_mirrored; /* mcast group is not mirrored */ -- uint16_t mc_existing_tr; /* mcast group is already taken by transmitter */ -- uint16_t mc_exist_in_amt; /* mcast group is already programmed in amt */ -- /* Unused. Keep for rom compatibility */ -- uint16_t mc_not_exist_in_gbl; /* mcast group is not in global table */ -- uint16_t mc_not_exist_in_amt; /* mcast group is not in AMT table */ -- uint16_t mc_utilized; /* mcast addressed is already taken */ -- uint16_t mc_taken_other_tr; /* multi-cast addressed is already taken */ -- uint32_t rmc_rx_frames_mac; /* no of mc frames received from mac */ -- uint32_t rmc_tx_frames_mac; /* no of mc frames transmitted to mac */ -- uint32_t mc_null_ar_cnt; /* no. of times NULL AR is received */ -- uint32_t mc_ar_role_selected; /* no. of times took AR role */ -- uint32_t mc_ar_role_deleted; /* no. of times AR role cancelled */ -- uint32_t mc_noacktimer_expired; /* no. of times noack timer expired */ -- uint16_t mc_no_wl_clk; /* no wl clk detected when trying to access amt */ -- uint16_t mc_tr_cnt_exceeded; /* No of transmitters in the network exceeded */ --} wl_rmc_cnts_t; -- --/* RMC Status */ --typedef struct wl_relmcast_st --{ -- uint8_t ver; /* version of RMC */ -- uint8_t num; /* number of clients detected by transmitter */ -- wl_relmcast_client_t clients[WL_RMC_MAX_CLIENT]; -- uint16_t err; /* error status (used in infra) */ -- uint16_t actf_time; /* action frame time period */ --} wl_relmcast_status_t; -- --/* Entry for each STA/node */ --typedef struct wl_rmc_entry --{ -- /* operation on multi-cast entry such add, -- * delete, ack-all -- */ -- int8_t flag; -- struct ether_addr addr; /* multi-cast group mac address */ --} wl_rmc_entry_t; -- --/* RMC table */ --typedef struct wl_rmc_entry_table --{ -- uint8_t index; /* index to a particular mac entry in table */ -- uint8_t opcode; /* opcodes or operation on entry */ -- wl_rmc_entry_t entry[WL_RMC_MAX_TABLE_ENTRY]; --} wl_rmc_entry_table_t; -- --typedef struct wl_rmc_trans_elem --{ -- struct ether_addr tr_mac; /* transmitter mac */ -- struct ether_addr ar_mac; /* ar mac */ -- uint16_t artmo; /* AR timeout */ -- uint8_t amt_idx; /* amt table entry */ -- uint16_t flag; /* entry will be acked, not acked, programmed, full etc */ --} wl_rmc_trans_elem_t; -- --/* RMC transmitters */ --typedef struct wl_rmc_trans_in_network --{ -- uint8_t ver; /* version of RMC */ -- uint8_t num_tr; /* number of transmitters in the network */ -- wl_rmc_trans_elem_t trs[WL_RMC_MAX_NUM_TRS]; --} wl_rmc_trans_in_network_t; -- --/* To update vendor specific ie for RMC */ --typedef struct wl_rmc_vsie --{ -- uint8_t oui[3]; -- uint16_t payload; /* IE Data Payload */ --} wl_rmc_vsie_t; -- --/* WLC_E_ULP event data */ --#define WL_ULP_EVENT_VERSION 1 --#define WL_ULP_DISABLE_CONSOLE 1 /* Disable console message on ULP entry */ --#define WL_ULP_UCODE_DOWNLOAD 2 /* Download ULP ucode file */ --#define WL_ULP_ENTRY 3 /* inform ulp entry to Host during warmboot */ -- --typedef struct wl_ulp_event --{ -- uint16_t version; -- uint16_t ulp_dongle_action; --} wl_ulp_event_t; -- --/* clm download */ --#define DLOAD_HANDLER_VER 1 /* Downloader version */ --#define DLOAD_FLAG_VER_MASK 0xf000 /* Downloader version mask */ --#define DLOAD_FLAG_VER_SHIFT 12 /* Downloader version shift */ -- --#define DL_CRC_NOT_INUSE 0x0001 --#define DL_BEGIN 0x0002 --#define DL_END 0x0004 -- --enum --{ -- DL_TYPE_UCODE = 1, DL_TYPE_CLM = 2 --}; -- --struct wl_dload_data --{ -- uint16_t flag; -- uint16_t dload_type; -- uint32_t len; -- uint32_t crc; -- uint8_t data[1]; --}; --typedef struct wl_dload_data wl_dload_data_t; -- --struct wl_clm_dload_info --{ -- uint32_t ds_id; -- uint32_t clm_total_len; -- uint32_t num_chunks; -- uint32_t chunk_len; -- uint32_t chunk_offset; -- uint8_t data_chunk[1]; --}; --typedef struct wl_clm_dload_info wl_clm_dload_info_t; -- --#pragma pack(1) --typedef struct mesh_peer_info --{ -- uint16_t mesh_peer_prot_id; -- uint16_t local_link_id; -- uint16_t peer_link_id; -- uint16_t peer_aid; -- uint8_t state; --} mesh_peer_info_t; -- --typedef struct mesh_peer_info_ext --{ -- mesh_peer_info_t peer_info; -- uint16_t local_aid; -- struct ether_addr ea; -- uint32_t entry_state; -- int32_t rssi; --} mesh_peer_info_ext_t; -- --typedef struct mesh_peer_info_dump --{ -- uint32_t buflen; -- uint32_t version; -- uint32_t count; /* number of results */ -- mesh_peer_info_ext_t mpi_ext[1]; --} mesh_peer_info_dump_t; -- --#define WL_CHANSPEC_CTL_SB_LLL 0x0000 --#define WL_CHANSPEC_CTL_SB_LLU 0x0100 --#define WL_CHANSPEC_CTL_SB_LUL 0x0200 --#define WL_CHANSPEC_CTL_SB_LUU 0x0300 --#define WL_CHANSPEC_CTL_SB_ULL 0x0400 --#define WL_CHANSPEC_CTL_SB_ULU 0x0500 --#define WL_CHANSPEC_CTL_SB_UUL 0x0600 --#define WL_CHANSPEC_CTL_SB_UUU 0x0700 --#define WL_CHANSPEC_CTL_SB_LL WL_CHANSPEC_CTL_SB_LLL --#define WL_CHANSPEC_CTL_SB_LU WL_CHANSPEC_CTL_SB_LLU --#define WL_CHANSPEC_CTL_SB_UL WL_CHANSPEC_CTL_SB_LUL --#define WL_CHANSPEC_CTL_SB_UU WL_CHANSPEC_CTL_SB_LUU --#define WL_CHANSPEC_CTL_SB_L WL_CHANSPEC_CTL_SB_LLL --#define WL_CHANSPEC_CTL_SB_U WL_CHANSPEC_CTL_SB_LLU --#define INVCHANSPEC 255 --#define WL_CHANSPEC_CTL_SB_SHIFT 8 --#define WL_CHANSPEC_BW_5 0x0000 --#define WL_CHANSPEC_BW_80 0x2000 --#define WL_CHANSPEC_BW_160 0x2800 --#define WL_CHANSPEC_BW_8080 0x3000 -- --struct ether_addr; --struct wl_join_scan_params; -- --typedef struct wl_assoc_params --{ -- struct ether_addr bssid; -- uint16_t bssid_cnt; -- uint32_t chanspec_num; -- chanspec_t chanspec_list[1]; --} wl_assoc_params_t; --#define WL_ASSOC_PARAMS_FIXED_SIZE (sizeof(wl_assoc_params_t) - sizeof(wl_chanspec_t) ) --typedef wl_assoc_params_t wl_reassoc_params_t; --#define WL_REASSOC_PARAMS_FIXED_SIZE WL_ASSOC_PARAMS_FIXED_SIZE --typedef wl_assoc_params_t wl_join_assoc_params_t; --#define WL_JOIN_ASSOC_PARAMS_FIXED_SIZE WL_ASSOC_PARAMS_FIXED_SIZE --typedef struct wl_join_params --{ -- wlc_ssid_t ssid; -- struct wl_assoc_params params; --} wl_join_params_t; --#define WL_JOIN_PARAMS_FIXED_SIZE (sizeof(wl_join_params_t) - sizeof(wl_chanspec_t) ) -- --/* extended join params */ --typedef struct wl_extjoin_params --{ -- wlc_ssid_t ssid; /* {0, ""}: wildcard scan */ -- struct wl_join_scan_params scan_params; -- wl_join_assoc_params_t assoc_params; /* optional field, but it must include the fixed portion -- * of the wl_join_assoc_params_t struct when it does -- * present. -- */ --} wl_extjoin_params_t; --#define WL_EXTJOIN_PARAMS_FIXED_SIZE (sizeof(wl_extjoin_params_t) - sizeof(chanspec_t) ) -- --#define WLC_SET_CUSTOM_COUNTRY ( (uint32_t)320 ) -- --/* WLC_GET_AUTH, WLC_SET_AUTH values */ --#define WL_AUTH_OPEN_SYSTEM 0 /* d11 open authentication */ --#define WL_AUTH_SHARED_KEY 1 /* d11 shared authentication */ --#define WL_AUTH_OPEN_SHARED 2 /* try open, then shared if open failed w/rc 13 */ --#define WL_AUTH_SAE 3 /* Simultaneous Authentication of Equals (SAE) */ -- --/** ARP offload statistics */ --struct whd_arp_stats_s --{ -- uint32_t version; /**< WLAN version */ -- uint32_t peerage; /**< Current peer age-out time */ -- uint32_t arpoe; /**< Agent enabled state */ -- uint32_t features_enabled; /**< ARP Feature Flags @ref CY_ARP_OL_AGENT_ENABLE, etc. */ -- arp_ol_stats_t stats; /**< Current stats */ -- uint32_t host_ip_list[ARP_MULTIHOMING_MAX]; /**< host_ip addresses in one call */ --}; -- --#pragma pack() -- --/* TCP Keepalive offload related defintions should not be added inside -- * pragma pack to avoid functionality breakage. -- */ --/* -- * TCP keepalive offload definitions -- */ --#define MAX_TKO_CONN 4 --#define IPV4_ADDR_LEN 4 /* IPV4 address length */ -- --/* Default TCP Keepalive retry parameters. */ --#define TCP_KEEPALIVE_OFFLOAD_INTERVAL_SEC (20) --#define TCP_KEEPALIVE_OFFLOAD_RETRY_COUNT (3) --#define TCP_KEEPALIVE_OFFLOAD_RETRY_INTERVAL_SEC (3) -- --/* common iovar struct */ --typedef struct wl_tko --{ -- uint16_t subcmd_id; /* subcommand id */ -- uint16_t len; /* total length of data[] */ -- uint8_t data[1]; /* subcommand data */ --} wl_tko_t; -- --/* subcommand ids */ --#define WL_TKO_SUBCMD_MAX_TCP 0 /* max TCP connections supported */ --#define WL_TKO_SUBCMD_PARAM 1 /* configure offload common parameters */ --#define WL_TKO_SUBCMD_CONNECT 2 /* TCP connection info */ --#define WL_TKO_SUBCMD_ENABLE 3 /* enable/disable */ --#define WL_TKO_SUBCMD_STATUS 4 /* TCP connection status */ -- --/* WL_TKO_SUBCMD_MAX_CONNECT subcommand data */ --typedef struct wl_tko_max_tcp --{ -- uint8_t max; /* max TCP connections supported */ -- uint8_t pad[3]; /* 4-byte struct alignment */ --} wl_tko_max_tcp_t; -- --/* WL_TKO_SUBCMD_PARAM subcommand data */ --typedef struct wl_tko_param --{ -- uint16_t interval; /* keepalive tx interval (secs) */ -- uint16_t retry_interval; /* keepalive retry interval (secs) */ -- uint16_t retry_count; /* retry_count */ -- uint8_t pad[2]; /* 4-byte struct alignment */ --} wl_tko_param_t; -- --/* WL_TKO_SUBCMD_CONNECT subcommand data -- * invoke with unique 'index' for each TCP connection -- */ --typedef struct wl_tko_connect --{ -- uint8_t index; /* TCP connection index, 0 to max-1 */ -- uint8_t ip_addr_type; /* 0 - IPv4, 1 - IPv6 */ -- uint16_t local_port; /* local port */ -- uint16_t remote_port; /* remote port */ -- uint32_t local_seq; /* local sequence number */ -- uint32_t remote_seq; /* remote sequence number */ -- uint16_t request_len; /* TCP keepalive request packet length */ -- uint16_t response_len; /* TCP keepalive response packet length */ -- uint8_t data[1]; /* variable length field containing local/remote IPv4/IPv6, -- * TCP keepalive request packet, TCP keepalive response packet -- * For IPv4, length is 4 * 2 + request_length + response_length -- * offset 0 - local IPv4 -- * offset 4 - remote IPv4 -- * offset 8 - TCP keepalive request packet -- * offset 8+request_length - TCP keepalive response packet -- * For IPv6, length is 16 * 2 + request_length + response_length -- * offset 0 - local IPv6 -- * offset 16 - remote IPv6 -- * offset 32 - TCP keepalive request packet -- * offset 32+request_length - TCP keepalive response packet -- */ --} wl_tko_connect_t; -- --/* WL_TKO_SUBCMD_CONNECT subcommand data to GET configured info for specific index */ --typedef struct wl_tko_get_connect --{ -- uint8_t index; /* TCP connection index, 0 to max-1 */ -- uint8_t pad[3]; /* 4-byte struct alignment */ --} wl_tko_get_connect_t; -- --typedef struct wl_tko_enable --{ -- uint8_t enable; /* 1 - enable, 0 - disable */ -- uint8_t pad[3]; /* 4-byte struct alignment */ --} wl_tko_enable_t; -- --/* WL_TKO_SUBCMD_STATUS subcommand data */ --/* must be invoked before tko is disabled else status is unavailable */ --typedef struct wl_tko_status --{ -- uint8_t count; /* number of status entries (i.e. equals -- * max TCP connections supported) -- */ -- uint8_t status[1]; /* variable length field contain status for -- * each TCP connection index -- */ --} wl_tko_status_t; --/** Get/Set TKO intervals & retrys */ --struct whd_tko_retry --{ -- uint16_t tko_interval; /**< How often to send (in seconds) */ -- uint16_t tko_retry_count; /**< Max times to retry if original fails */ -- uint16_t tko_retry_interval; /**< Wait time between retries (in seconds) */ --}; -- --/** Status values used in conjunction with whd_tko_status_t */ --typedef enum --{ -- TKO_STATUS_NORMAL = 0, /**< TCP connection normal, no error */ -- TKO_STATUS_NO_RESPONSE = 1, /**< no response to TCP keepalive */ -- TKO_STATUS_NO_TCP_ACK_FLAG = 2, /**< TCP ACK flag not set */ -- TKO_STATUS_UNEXPECT_TCP_FLAG = 3, /**< unexpect TCP flags set other than ACK */ -- TKO_STATUS_SEQ_NUM_INVALID = 4, /**< ACK != sequence number */ -- TKO_STATUS_REMOTE_SEQ_NUM_INVALID = 5, /**< SEQ > remote sequence number */ -- TKO_STATUS_TCP_DATA = 6, /**< TCP data available */ -- TKO_STATUS_UNAVAILABLE = 255, /**< not used/configured */ --} tko_status_t; -- --/** Status of each TCP connection */ --struct whd_tko_status --{ -- uint8_t count; /**< number of status entries */ -- uint8_t status[MAX_TKO_CONN]; /**< each TCP status */ --}; -- --/** Struct to query FW for current TKO configuation */ --struct whd_tko_connect --{ -- uint8_t index; /**< TCP connection index, 0 to max-1 */ -- uint8_t ip_addr_type; /**< 0 - IPv4, 1 - IPv6 */ -- uint16_t local_port; /**< local port */ -- uint16_t remote_port; /**< remote port */ -- uint32_t local_seq; /**< local sequence number */ -- uint32_t remote_seq; /**< remote sequence number */ -- uint16_t request_len; /**< TCP keepalive request packet length */ -- uint16_t response_len; /**< TCP keepalive response packet length */ -- uint8_t data[1]; /**< variable length field containing local/remote IPv4/IPv6, -- * TCP keepalive request packet, TCP keepalive response packet -- * For IPv4, length is 4 * 2 + request_length + response_length -- * offset 0 - local IPv4 -- * offset 4 - remote IPv4 -- * offset 8 - TCP keepalive request packet -- * offset 8+request_length - TCP keepalive response packet -- * For IPv6, length is 16 * 2 + request_length + response_length -- * offset 0 - local IPv6 -- * offset 16 - remote IPv6 -- * offset 32 - TCP keepalive request packet -- * offset 32+request_length - TCP keepalive response packet -- */ --}; -- --#ifdef __cplusplus --} /* extern "C" */ --#endif -- --#endif -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_ap.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_ap.c -deleted file mode 100644 -index 719b88497a..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_ap.c -+++ /dev/null -@@ -1,772 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides generic APSTA functionality that chip specific files use -- */ --#include "whd_debug.h" --#include "whd_ap.h" --#include "bus_protocols/whd_chip_reg.h" --#include "whd_chip_constants.h" --#include "whd_chip.h" --#include "whd_sdpcm.h" --#include "whd_thread_internal.h" --#include "whd_events_int.h" --#include "whd_int.h" --#include "whd_utils.h" --#include "whd_wifi_api.h" --#include "whd_buffer_api.h" --#include "whd_wlioctl.h" -- --/****************************************************** --** @cond Constants --*******************************************************/ -- --#define WLC_EVENT_MSG_LINK (0x01) --#define RATE_SETTING_11_MBPS (11000000 / 500000) --#define AMPDU_AP_DEFAULT_BA_WSIZE 8 --#define AMPDU_STA_DEFAULT_BA_WSIZE 8 --#define AMPDU_STA_DEFAULT_MPDU 4 /* STA default num MPDU per AMPDU */ --#define WEP40_KEY_LENGTH 5 --#define WEP104_KEY_LENGTH 13 --#define FORMATTED_ASCII_WEP40_KEY_LENGTH 28 /* For 5 bytes key */ --#define FORMATTED_ASCII_WEP104_KEY_LENGTH 60 /* For 13 bytes key */ -- --/****************************************************** --** Enumerations --*******************************************************/ --typedef enum --{ -- BSS_AP = 3, -- BSS_STA = 2, -- BSS_UP = 1, -- BSS_DOWN = 0 --} bss_arg_option_t; -- --typedef enum --{ -- WEP_OPEN_SYSTEM_AUTHENTICATION = 0, -- WEP_SHARED_KEY_AUTHENTICATION = 1 --} wep_authentication_type_t; -- --/****************************************************** -- * * Function Declarations -- * ******************************************************/ --static void *whd_handle_apsta_event(whd_interface_t ifp, const whd_event_header_t *event_header, -- const uint8_t *event_data, void *handler_user_data); -- --/****************************************************** -- * Variables Definitions -- *****************************************************/ --static const whd_event_num_t apsta_events[] = { WLC_E_IF, WLC_E_LINK, WLC_E_NONE }; --/****************************************************** --* Function Definitions --******************************************************/ -- --void whd_ap_info_init(whd_driver_t whd_driver) --{ -- whd_driver->ap_info.ap_is_up = WHD_FALSE; -- whd_driver->ap_info.is_waiting_event = WHD_FALSE; --} -- --void whd_wifi_set_ap_is_up(whd_driver_t whd_driver, whd_bool_t new_state) --{ -- if (whd_driver->ap_info.ap_is_up != new_state) -- { -- whd_driver->ap_info.ap_is_up = new_state; -- } --} -- --whd_bool_t whd_wifi_get_ap_is_up(whd_driver_t whd_driver) --{ -- return whd_driver->ap_info.ap_is_up; --} -- --whd_result_t whd_wifi_set_block_ack_window_size_common(whd_interface_t ifp, uint16_t ap_win_size, uint16_t sta_win_size) --{ -- whd_result_t retval; -- uint16_t block_ack_window_size = ap_win_size; -- -- /* If the AP interface is already up then don't change the Block Ack window size */ -- if (ifp->role == WHD_AP_ROLE) -- { -- return WHD_SUCCESS; -- } -- -- if (ifp->role == WHD_STA_ROLE) -- { -- block_ack_window_size = sta_win_size; -- } -- -- retval = whd_wifi_set_iovar_value(ifp, IOVAR_STR_AMPDU_BA_WINDOW_SIZE, ( uint32_t )block_ack_window_size); -- -- whd_assert("set_block_ack_window_size: Failed to set block ack window size\r\n", retval == WHD_SUCCESS); -- -- return retval; --} -- --whd_result_t whd_wifi_set_ampdu_parameters_common(whd_interface_t ifp, uint8_t ba_window_size, int8_t ampdu_mpdu, -- uint8_t rx_factor) --{ -- CHECK_RETURN(whd_wifi_set_iovar_value(ifp, IOVAR_STR_AMPDU_BA_WINDOW_SIZE, ba_window_size) ); -- -- /* Set number of MPDUs available for AMPDU */ -- CHECK_RETURN(whd_wifi_set_iovar_value(ifp, IOVAR_STR_AMPDU_MPDU, ( uint32_t )ampdu_mpdu) ); -- -- if (rx_factor != AMPDU_RX_FACTOR_INVALID) -- { -- CHECK_RETURN(whd_wifi_set_iovar_value(ifp, IOVAR_STR_AMPDU_RX_FACTOR, rx_factor) ); -- } -- return WHD_SUCCESS; --} -- --/** Sets the chip specific AMPDU parameters for AP and STA -- * For SDK 3.0, and beyond, each chip will need it's own function for setting AMPDU parameters. -- */ --whd_result_t whd_wifi_set_ampdu_parameters(whd_interface_t ifp) --{ -- whd_driver_t whd_driver = ifp->whd_driver; -- /* Get the chip number */ -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- -- if ( (wlan_chip_id == 43012) || (wlan_chip_id == 43455) ) -- { -- return whd_wifi_set_ampdu_parameters_common(ifp, AMPDU_STA_DEFAULT_BA_WSIZE, AMPDU_MPDU_AUTO, -- AMPDU_RX_FACTOR_64K); -- } -- else if (wlan_chip_id == 43909) -- { -- return whd_wifi_set_ampdu_parameters_common(ifp, AMPDU_STA_DEFAULT_BA_WSIZE, AMPDU_MPDU_AUTO, -- AMPDU_RX_FACTOR_INVALID); -- } -- else -- { -- return whd_wifi_set_ampdu_parameters_common(ifp, AMPDU_STA_DEFAULT_BA_WSIZE, AMPDU_STA_DEFAULT_MPDU, -- AMPDU_RX_FACTOR_8K); -- } --} -- --/* All chips */ --static void *whd_handle_apsta_event(whd_interface_t ifp, const whd_event_header_t *event_header, -- const uint8_t *event_data, void *handler_user_data) --{ -- whd_driver_t whd_driver = ifp->whd_driver; -- whd_ap_int_info_t *ap; -- -- UNUSED_PARAMETER(event_header); -- UNUSED_PARAMETER(event_data); -- UNUSED_PARAMETER(handler_user_data); -- -- ap = &whd_driver->ap_info; -- -- if (ap->is_waiting_event == WHD_TRUE) -- { -- if ( (event_header->event_type == (whd_event_num_t)WLC_E_LINK) || -- (event_header->event_type == WLC_E_IF) ) -- { -- whd_result_t result; -- result = cy_rtos_set_semaphore(&ap->whd_wifi_sleep_flag, WHD_FALSE); -- WPRINT_WHD_DEBUG( ("%s failed to post AP link semaphore at %d\n", __func__, __LINE__) ); -- REFERENCE_DEBUG_ONLY_VARIABLE(result); -- } -- } -- return handler_user_data; --} -- --/* All chips */ --uint32_t whd_wifi_init_ap(whd_interface_t ifp, whd_ssid_t *ssid, whd_security_t auth_type, -- const uint8_t *security_key, uint8_t key_length, uint8_t channel) --{ -- whd_driver_t whd_driver; -- whd_bool_t wait_for_interface = WHD_FALSE; -- whd_result_t result; -- whd_buffer_t response; -- whd_buffer_t buffer; -- whd_interface_t prim_ifp; -- whd_ap_int_info_t *ap; -- uint32_t *data; -- uint32_t bss_index; -- uint16_t wlan_chip_id; -- uint16_t event_entry = (uint16_t)0xFF; -- -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- ap = &whd_driver->ap_info; -- -- prim_ifp = whd_get_primary_interface(whd_driver); -- if (prim_ifp == NULL) -- { -- WPRINT_WHD_ERROR( ("%s failed at %d \n", __func__, __LINE__) ); -- return WHD_UNKNOWN_INTERFACE; -- } -- -- /* Turn off APSTA when creating AP mode on primary interface */ -- if (ifp == prim_ifp) -- { -- CHECK_RETURN(whd_wifi_set_ioctl_buffer(prim_ifp, WLC_DOWN, NULL, 0) ); -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)4, IOVAR_STR_APSTA); -- CHECK_IOCTL_BUFFER(data); -- *data = 0; -- result = whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- if ( (result != WHD_SUCCESS) && (result != WHD_WLAN_UNSUPPORTED) ) -- { -- WPRINT_WHD_ERROR( ("Could not turn off apsta\n") ); -- return result; -- } -- CHECK_RETURN(whd_wifi_set_ioctl_buffer(prim_ifp, WLC_UP, NULL, 0) ); -- } -- -- bss_index = ifp->bsscfgidx; -- /* Get the Chip Number */ -- wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- -- /* Configuration need to come from some structure whd_driver */ --#if 0 -- uint32_t *auth; -- uint16_t length; --#endif -- -- ifp->role = WHD_AP_ROLE; -- -- if (wlan_chip_id == 4334) -- { -- if (auth_type == WHD_SECURITY_WEP_PSK) -- { -- WPRINT_WHD_ERROR( ("WEP auth type is not allowed , %s failed at line %d \n", __func__, __LINE__) ); -- return WHD_WEP_NOT_ALLOWED; -- } -- } -- if ( ( (auth_type == WHD_SECURITY_WPA_TKIP_PSK) || (auth_type == WHD_SECURITY_WPA2_AES_PSK) || -- (auth_type == WHD_SECURITY_WPA2_MIXED_PSK) ) && -- ( (key_length < (uint8_t)8) || (key_length > (uint8_t)64) ) ) -- { -- WPRINT_WHD_INFO( ("Error: WPA security key length must be between 8 and 64\n") ); -- return WHD_WPA_KEYLEN_BAD; -- } -- -- /* Need to decide on the wep configuration */ --#if 0 -- else if ( ( (auth_type == WHD_SECURITY_WEP_PSK) || (auth_type == WHD_SECURITY_WEP_SHARED) ) && -- ( (key_length != FORMATTED_ASCII_WEP40_KEY_LENGTH) && -- (key_length != FORMATTED_ASCII_WEP104_KEY_LENGTH) ) ) -- { -- WPRINT_WHD_INFO( ("Error: WEP security Key length must be either 5 / 13 bytes\n") ); -- return WHD_WEP_KEYLEN_BAD; -- } --#endif -- if ( (whd_wifi_get_ap_is_up(whd_driver) == WHD_TRUE) ) -- { -- WPRINT_WHD_INFO( ("Error: Soft AP or Wi-Fi Direct group owner already up\n") ); -- return WHD_AP_ALREADY_UP; -- } -- --/* if (wlan_chip_id == 4334 || wlan_chip_id == 43340 || wlan_chip_id == 43342 ) -- { -- if ( whd_wifi_set_block_ack_window_size( ifp ) != WHD_SUCCESS ) -- { -- return WHD_SET_BLOCK_ACK_WINDOW_FAIL; -- } -- }*/ -- -- /* Query bss state (does it exist? if so is it UP?) */ -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)4, IOVAR_STR_BSS); -- CHECK_IOCTL_BUFFER(data); -- -- if ( (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *data = htod32( (uint32_t)CHIP_AP_INTERFACE ); -- } -- else -- { -- *data = htod32( (uint32_t)bss_index ); -- } -- -- if ( (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- if (whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) != WHD_SUCCESS) -- { -- /* Note: We don't need to release the response packet since the iovar failed */ -- wait_for_interface = WHD_TRUE; -- } -- else -- { -- /* Check if the BSS is already UP, if so return */ -- uint32_t *data2 = (uint32_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- *data2 = dtoh32 (*data2); -- if (*data2 == (uint32_t)BSS_UP) -- { -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- whd_wifi_set_ap_is_up(whd_driver, WHD_TRUE); -- ap->is_waiting_event = WHD_FALSE; -- return WHD_SUCCESS; -- } -- else -- { -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- } -- } -- } -- -- if (whd_cdc_send_iovar(prim_ifp, CDC_GET, buffer, &response) != WHD_SUCCESS) -- { -- /* Note: We don't need to release the response packet since the iovar failed */ -- wait_for_interface = WHD_TRUE; -- } -- else -- { -- /* Check if the BSS is already UP, if so return */ -- uint32_t *data2 = (uint32_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- *data2 = dtoh32 (*data2); -- if (*data2 == (uint32_t)BSS_UP) -- { -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- whd_wifi_set_ap_is_up(whd_driver, WHD_TRUE); -- ap->is_waiting_event = WHD_FALSE; -- return WHD_SUCCESS; -- } -- else -- { -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- } -- } -- -- CHECK_RETURN(cy_rtos_init_semaphore(&ap->whd_wifi_sleep_flag, 1, 0) ); -- -- ap->is_waiting_event = WHD_TRUE; -- /* Register for interested events */ -- CHECK_RETURN_WITH_SEMAPHORE(whd_management_set_event_handler(ifp, apsta_events, whd_handle_apsta_event, -- NULL, &event_entry), &ap->whd_wifi_sleep_flag); -- if (event_entry >= WHD_EVENT_HANDLER_LIST_SIZE) -- { -- WPRINT_WHD_DEBUG( ("Event handler registration failed for AP events in function %s and line %d\n", -- __func__, __LINE__) ); -- return WHD_UNFINISHED; -- } -- ifp->event_reg_list[WHD_AP_EVENT_ENTRY] = event_entry; -- -- if (wait_for_interface == WHD_TRUE) -- { -- CHECK_RETURN_WITH_SEMAPHORE(cy_rtos_get_semaphore(&ap->whd_wifi_sleep_flag, (uint32_t)10000, -- WHD_FALSE), &ap->whd_wifi_sleep_flag); -- } -- ap->is_waiting_event = WHD_FALSE; -- -- if (prim_ifp == ifp) -- { -- /* Set AP mode */ -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)4); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(data, &ap->whd_wifi_sleep_flag); -- *data = 1; /* Turn on AP */ -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_AP, buffer, 0), -- &ap->whd_wifi_sleep_flag); -- } --#if 0 -- if (whd_wifi_set_block_ack_window_size(ifp) != WHD_SUCCESS) -- { -- return WHD_SET_BLOCK_ACK_WINDOW_FAIL; -- } --#endif -- -- if (NULL_MAC(ifp->mac_addr.octet) ) -- { -- /* Change the AP MAC address to be different from STA MAC */ -- if ( (result = whd_wifi_get_mac_address(prim_ifp, &ifp->mac_addr) ) != WHD_SUCCESS ) -- { -- WPRINT_WHD_INFO ( (" Get STA MAC address failed result=%" PRIu32 "\n", result) ); -- return result; -- } -- else -- { -- WPRINT_WHD_INFO ( (" Get STA MAC address success\n") ); -- } -- } -- -- if ( (result = whd_wifi_set_mac_address(ifp, ifp->mac_addr) ) != WHD_SUCCESS ) -- { -- WPRINT_WHD_INFO ( (" Set AP MAC address failed result=%" PRIu32 "\n", result) ); -- return result; -- } -- -- /* Set the SSID */ -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)40, "bsscfg:" IOVAR_STR_SSID); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(data, &ap->whd_wifi_sleep_flag); -- if (wlan_chip_id == 4334) -- { -- data[0] = htod32( (uint32_t)CHIP_AP_INTERFACE ); /* Set the bsscfg index */ -- } -- else -- { -- data[0] = htod32(bss_index); /* Set the bsscfg index */ -- } -- data[1] = htod32(ssid->length); /* Set the ssid length */ -- memcpy(&data[2], (uint8_t *)ssid->value, ssid->length); -- if ( (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0), &ap->whd_wifi_sleep_flag); -- } -- else -- { -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_iovar(prim_ifp, CDC_SET, buffer, 0), &ap->whd_wifi_sleep_flag); -- } -- -- /* Set the channel */ -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)4); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(data, &ap->whd_wifi_sleep_flag); -- *data = htod32(channel); -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_CHANNEL, buffer, 0), -- &ap->whd_wifi_sleep_flag); -- -- /* Need to decide on the wep configuration */ --#if 0 -- if ( (auth_type == WHD_SECURITY_WEP_PSK) || (auth_type == WHD_SECURITY_WEP_SHARED) ) -- { -- for (length = 0; length < key_length; length = (uint16_t)(length + 2 + security_key[1]) ) -- { -- const whd_wep_key_t *in_key = (const whd_wep_key_t *)&security_key[length]; -- wl_wsec_key_t *out_key = (wl_wsec_key_t *)whd_cdc_get_ioctl_buffer(&buffer, sizeof(wl_wsec_key_t) ); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(out_key, &ap->whd_wifi_sleep_flag); -- memset(out_key, 0, sizeof(wl_wsec_key_t) ); -- out_key->index = in_key->index; -- out_key->len = in_key->length; -- memcpy(out_key->data, in_key->data, in_key->length); -- switch (in_key->length) -- { -- case WEP40_KEY_LENGTH: -- out_key->algo = (uint32_t)CRYPTO_ALGO_WEP1; -- break; -- case WEP104_KEY_LENGTH: -- out_key->algo = (uint32_t)CRYPTO_ALGO_WEP128; -- break; -- default: -- whd_buffer_release(whd_driver, buffer, WHD_NETWORK_TX); -- return WHD_INVALID_KEY; -- } -- /* Set the first entry as primary key by default */ -- -- if (length == 0) -- { -- out_key->flags |= WL_PRIMARY_KEY; -- } -- out_key->index = htod32(out_key->index); -- out_key->len = htod32(out_key->len); -- out_key->algo = htod32(out_key->algo); -- out_key->flags = htod32(out_key->flags); -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_KEY, buffer, -- NULL), &ap->whd_wifi_sleep_flag); -- } -- -- /* Set authentication type */ -- auth = (uint32_t *)whd_cdc_get_ioctl_buffer(&buffer, (uint16_t)4); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(auth, &ap->whd_wifi_sleep_flag); -- if (auth_type == WHD_SECURITY_WEP_SHARED) -- { -- *auth = WEP_SHARED_KEY_AUTHENTICATION; /* 1 = Shared Key authentication */ -- } -- else -- { -- *auth = WEP_OPEN_SYSTEM_AUTHENTICATION; /* 0 = Open System authentication */ -- } -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_AUTH, buffer, -- 0), &ap->whd_wifi_sleep_flag); -- } --#endif -- -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, "bsscfg:" IOVAR_STR_WSEC); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(data, &ap->whd_wifi_sleep_flag); -- if ( (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- data[0] = htod32( (uint32_t)CHIP_AP_INTERFACE ); -- } -- else -- { -- data[0] = htod32(bss_index); -- } -- if ( (auth_type & WPS_ENABLED) != 0 ) -- { -- data[1] = htod32( (uint32_t)( (auth_type & (~WPS_ENABLED) ) | SES_OW_ENABLED ) ); -- } -- else -- { -- data[1] = htod32( (uint32_t)auth_type ); -- } -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_iovar(prim_ifp, CDC_SET, buffer, 0), &ap->whd_wifi_sleep_flag); -- if (wlan_chip_id == 4334) -- { -- if (auth_type != WHD_SECURITY_OPEN) -- { -- wsec_pmk_t *psk; -- -- /* Set the wpa auth */ -- data = -- (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, "bsscfg:" IOVAR_STR_WPA_AUTH); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(data, &ap->whd_wifi_sleep_flag); -- data[0] = htod32( (uint32_t)CHIP_AP_INTERFACE ); -- data[1] = htod32( (uint32_t)(auth_type == WHD_SECURITY_WPA_TKIP_PSK) ? -- (WPA_AUTH_PSK) : (WPA2_AUTH_PSK | WPA_AUTH_PSK) ); -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_iovar(prim_ifp, CDC_SET, buffer, 0), &ap->whd_wifi_sleep_flag); -- -- /* Set the passphrase */ -- psk = (wsec_pmk_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, sizeof(wsec_pmk_t) ); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(psk, &ap->whd_wifi_sleep_flag); -- memcpy(psk->key, security_key, key_length); -- psk->key_len = htod16(key_length); -- psk->flags = htod16( (uint16_t)WSEC_PASSPHRASE ); -- CHECK_RETURN(cy_rtos_delay_milliseconds(1) ); -- /* Delay required to allow radio firmware to be ready to receive PMK and avoid intermittent failure */ -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_WSEC_PMK, buffer, 0), -- &ap->whd_wifi_sleep_flag); -- } -- } -- else -- { -- if ( (auth_type != WHD_SECURITY_OPEN) && (auth_type != WHD_SECURITY_WEP_PSK) && -- (auth_type != WHD_SECURITY_WEP_SHARED) ) -- { -- wsec_pmk_t *psk; -- -- /* Set the wpa auth */ -- data = -- (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, "bsscfg:" IOVAR_STR_WPA_AUTH); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(data, &ap->whd_wifi_sleep_flag); -- if ( (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- data[0] = htod32( (uint32_t)CHIP_AP_INTERFACE ); -- } -- else -- { -- data[0] = htod32(bss_index); -- } -- data[1] = -- htod32( (uint32_t)(auth_type == -- WHD_SECURITY_WPA_TKIP_PSK) ? (WPA_AUTH_PSK) : (WPA2_AUTH_PSK | WPA_AUTH_PSK) ); -- if ( (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0), &ap->whd_wifi_sleep_flag); -- } -- else -- { -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_iovar(prim_ifp, CDC_SET, buffer, 0), -- &ap->whd_wifi_sleep_flag); -- } -- -- /* Set the passphrase */ -- psk = (wsec_pmk_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, sizeof(wsec_pmk_t) ); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(psk, &ap->whd_wifi_sleep_flag); -- memcpy(psk->key, security_key, key_length); -- psk->key_len = htod16(key_length); -- psk->flags = htod16( (uint16_t)WSEC_PASSPHRASE ); -- CHECK_RETURN(cy_rtos_delay_milliseconds(1) ); -- /* Delay required to allow radio firmware to be ready to receive PMK and avoid intermittent failure */ -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_WSEC_PMK, buffer, -- 0), &ap->whd_wifi_sleep_flag); -- } -- } -- -- /* Set the multicast transmission rate to 11 Mbps rather than the default 1 Mbps */ -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)4, IOVAR_STR_2G_MULTICAST_RATE); -- CHECK_IOCTL_BUFFER(data); -- *data = htod32( (uint32_t)RATE_SETTING_11_MBPS ); -- if ( (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- result = whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL); -- whd_assert("start_ap: Failed to set multicast transmission rate\r\n", result == WHD_SUCCESS); -- } -- else -- { -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL), &ap->whd_wifi_sleep_flag); -- } -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_start_ap(whd_interface_t ifp) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- uint16_t wlan_chip_id; -- whd_ap_int_info_t *ap; -- whd_interface_t prim_ifp; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- prim_ifp = whd_get_primary_interface(whd_driver); -- -- if (prim_ifp == NULL) -- { -- return WHD_UNKNOWN_INTERFACE; -- } -- -- ap = &whd_driver->ap_info; -- /* Get the Chip Number */ -- wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- -- ap->is_waiting_event = WHD_TRUE; -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, IOVAR_STR_BSS); -- CHECK_IOCTL_BUFFER_WITH_SEMAPHORE(data, &ap->whd_wifi_sleep_flag); -- -- if ( (wlan_chip_id == 43012) || (wlan_chip_id == 43362) || (wlan_chip_id == 43455) || (wlan_chip_id == 43430) ) -- { -- data[0] = htod32(ifp->bsscfgidx); -- } -- else -- { -- data[0] = htod32( (uint32_t)CHIP_AP_INTERFACE ); -- } -- -- data[1] = htod32( (uint32_t)BSS_UP ); -- CHECK_RETURN_WITH_SEMAPHORE(whd_cdc_send_iovar(prim_ifp, CDC_SET, buffer, 0), &ap->whd_wifi_sleep_flag); -- -- /* Wait until AP is brought up */ -- CHECK_RETURN_WITH_SEMAPHORE(cy_rtos_get_semaphore(&ap->whd_wifi_sleep_flag, (uint32_t)10000, -- WHD_FALSE), &ap->whd_wifi_sleep_flag); -- ap->is_waiting_event = WHD_FALSE; -- -- whd_wifi_set_ap_is_up(whd_driver, WHD_TRUE); -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_stop_ap(whd_interface_t ifp) --{ -- uint32_t *data; -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_result_t result; -- whd_result_t result2; -- whd_interface_t prim_ifp; -- whd_driver_t whd_driver; -- whd_ap_int_info_t *ap; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- ap = &whd_driver->ap_info; -- -- prim_ifp = whd_get_primary_interface(whd_driver); -- -- if (prim_ifp == NULL) -- { -- return WHD_UNKNOWN_INTERFACE; -- } -- -- /* Get Chip Number */ -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- if ( (wlan_chip_id == 43012) || (wlan_chip_id == 43362) || (wlan_chip_id == 43455) || (wlan_chip_id == 43430) ) -- { -- /* Query bss state (does it exist? if so is it UP?) */ -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)4, IOVAR_STR_BSS); -- CHECK_IOCTL_BUFFER(data); -- *data = ifp->bsscfgidx; -- } -- else -- { -- /* Query bss state (does it exist? if so is it UP?) */ -- data = whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)4, IOVAR_STR_BSS); -- CHECK_IOCTL_BUFFER(data); -- *data = htod32( (uint32_t)CHIP_AP_INTERFACE ); -- } -- result = whd_cdc_send_iovar(prim_ifp, CDC_GET, buffer, &response); -- if (result == WHD_WLAN_NOTFOUND) -- { -- /* AP interface does not exist - i.e. it is down */ -- whd_wifi_set_ap_is_up(whd_driver, WHD_FALSE); -- return WHD_SUCCESS; -- } -- -- CHECK_RETURN(result); -- -- *data = dtoh32(*(uint32_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response) ); -- if (data[0] != (uint32_t)BSS_UP) -- { -- /* AP interface indicates it is not up - i.e. it is down */ -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- whd_wifi_set_ap_is_up(whd_driver, WHD_FALSE); -- return WHD_SUCCESS; -- } -- -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- ap->is_waiting_event = WHD_TRUE; -- /* set BSS down */ -- if ( (wlan_chip_id == 43012) || (wlan_chip_id == 43362) || (wlan_chip_id == 43455) || (wlan_chip_id == 43430) ) -- { -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, IOVAR_STR_BSS); -- CHECK_IOCTL_BUFFER(data); -- data[0] = htod32(ifp->bsscfgidx); -- data[1] = htod32( (uint32_t)BSS_DOWN ); -- CHECK_RETURN(whd_cdc_send_iovar(prim_ifp, CDC_SET, buffer, 0) ); -- } -- else -- { -- data = whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, IOVAR_STR_BSS); -- CHECK_IOCTL_BUFFER(data); -- data[0] = htod32( (uint32_t)CHIP_AP_INTERFACE ); -- data[1] = htod32( (uint32_t)BSS_DOWN ); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0) ); -- } -- if ( (wlan_chip_id != 43430) && (wlan_chip_id != 43455) ) -- { -- result = cy_rtos_get_semaphore(&ap->whd_wifi_sleep_flag, (uint32_t)10000, WHD_FALSE); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error getting a semaphore, %s failed at %d \n", __func__, __LINE__) ); -- return result; -- } -- } -- /* Disable AP mode only if AP is on primary interface */ -- if (prim_ifp == ifp) -- { -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)4); -- CHECK_IOCTL_BUFFER(data); -- *data = 0; -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_AP, buffer, 0) ); -- } -- /* Wait until AP is brought down */ -- result = cy_rtos_get_semaphore(&ap->whd_wifi_sleep_flag, (uint32_t)10000, WHD_FALSE); -- ap->is_waiting_event = WHD_FALSE; -- result2 = cy_rtos_deinit_semaphore(&ap->whd_wifi_sleep_flag); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error getting a semaphore, %s failed at %d \n", __func__, __LINE__) ); -- return result; -- } -- if (result2 != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error deleting semaphore, %s failed at %d \n", __func__, __LINE__) ); -- return result2; -- } -- -- CHECK_RETURN(whd_wifi_deregister_event_handler(ifp, ifp->event_reg_list[WHD_AP_EVENT_ENTRY]) ); -- ifp->event_reg_list[WHD_AP_EVENT_ENTRY] = WHD_EVENT_NOT_REGISTERED; -- whd_wifi_set_ap_is_up(whd_driver, WHD_FALSE); -- -- ifp->role = WHD_INVALID_ROLE; -- return WHD_SUCCESS; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_buffer_api.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_buffer_api.c -deleted file mode 100644 -index 966cf51968..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_buffer_api.c -+++ /dev/null -@@ -1,220 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides generic APSTA functionality that chip specific files use -- */ -- --#include "whd_debug.h" --#include "whd_buffer_api.h" -- --/****************************************************** --** @cond Constants --*******************************************************/ -- --/****************************************************** --** Enumerations --*******************************************************/ -- --/****************************************************** --** Function Declarations --*******************************************************/ -- --/****************************************************** -- * Variables Definitions -- *****************************************************/ -- --/****************************************************** --* Function Definitions --******************************************************/ --/** Allocates a packet buffer -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * Attempts to allocate a packet buffer of the size requested. It can do this -- * by allocating a pre-existing packet from a pool, using a static buffer, -- * or by dynamically allocating memory. The method of allocation does not -- * concern WHD, however it must match the way the network stack expects packet -- * buffers to be allocated. -- * -- * @param buffer : A pointer which receives the allocated packet buffer handle -- * @param direction : Indicates transmit/receive direction that the packet buffer is -- * used for. This may be needed if tx/rx pools are separate. -- * @param size : The number of bytes to allocate. -- * @param wait : Whether to wait for a packet buffer to be available -- * -- * @return : WHD_SUCCESS or error code -- * -- */ --whd_result_t whd_host_buffer_get(whd_driver_t whd_driver, whd_buffer_t *buffer, whd_buffer_dir_t direction, -- uint16_t size, uint32_t wait) --{ -- if (whd_driver->buffer_if->whd_host_buffer_get) -- { -- return whd_driver->buffer_if->whd_host_buffer_get(buffer, direction, size, wait); -- } -- else -- { -- WPRINT_WHD_INFO( ("Function pointers not provided .\n") ); -- } -- -- return WHD_WLAN_NOFUNCTION; --} -- --/** Releases a packet buffer -- * -- * Implemented in the port layer interface, which will be specific to the -- * buffering scheme in use. -- * This function is used by WHD to indicate that it no longer requires -- * a packet buffer. The buffer can then be released back into a pool for -- * reuse, or the dynamically allocated memory can be freed, according to -- * how the packet was allocated. -- * Returns void since WHD cannot do anything about failures -- * -- * @param buffer : The handle of the packet buffer to be released -- * @param direction : Indicates transmit/receive direction that the packet buffer has -- * been used for. This might be needed if tx/rx pools are separate. -- * -- */ --whd_result_t whd_buffer_release(whd_driver_t whd_driver, whd_buffer_t buffer, whd_buffer_dir_t direction) --{ -- if (whd_driver->buffer_if->whd_buffer_release) -- { -- whd_driver->buffer_if->whd_buffer_release(buffer, direction); -- return WHD_SUCCESS; -- } -- else -- { -- WPRINT_WHD_INFO( ("Function pointers not provided .\n") ); -- } -- -- return WHD_WLAN_NOFUNCTION; --} -- --/** Retrieves the current pointer of a packet buffer -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * Since packet buffers usually need to be created with space at the -- * front for additional headers, this function allows WHD to get -- * the current 'front' location pointer. -- * -- * @param buffer : The handle of the packet buffer whose pointer is to be retrieved -- * -- * @return : The packet buffer's current pointer. -- */ --uint8_t *whd_buffer_get_current_piece_data_pointer(whd_driver_t whd_driver, whd_buffer_t buffer) --{ -- if (whd_driver->buffer_if->whd_buffer_get_current_piece_data_pointer) -- { -- return whd_driver->buffer_if->whd_buffer_get_current_piece_data_pointer(buffer); -- } -- else -- { -- WPRINT_WHD_INFO( ("Function pointers not provided .\n") ); -- } -- -- return NULL; --} -- --/** Retrieves the size of a packet buffer -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * Since packet buffers usually need to be created with space at the -- * front for additional headers, the memory block used to contain a packet buffer -- * will often be larger than the current size of the packet buffer data. -- * This function allows WHD to retrieve the current size of a packet buffer's data. -- * -- * @param buffer : The handle of the packet buffer whose size is to be retrieved -- * -- * @return : The size of the packet buffer. -- */ --uint16_t whd_buffer_get_current_piece_size(whd_driver_t whd_driver, whd_buffer_t buffer) --{ -- if (whd_driver->buffer_if->whd_buffer_get_current_piece_size) -- { -- return whd_driver->buffer_if->whd_buffer_get_current_piece_size(buffer); -- } -- else -- { -- WPRINT_WHD_INFO( ("Function pointers not provided .\n") ); -- } -- -- return 0; --} -- --/** Sets the current size of a WHD packet -- * -- * -- * Implemented in the port layer interface which is specific to the -- * buffering scheme in use. -- * This function sets the current length of a WHD packet buffer -- * -- * @param buffer : The packet to be modified -- * @param size : The new size of the packet buffer -- * -- * @return : WHD_SUCCESS or error code -- */ --whd_result_t whd_buffer_set_size(whd_driver_t whd_driver, whd_buffer_t buffer, uint16_t size) --{ -- if (whd_driver->buffer_if->whd_buffer_set_size) -- { -- return whd_driver->buffer_if->whd_buffer_set_size(buffer, size); -- } -- else -- { -- WPRINT_WHD_INFO( ("Function pointers not provided .\n") ); -- } -- -- return WHD_WLAN_NOFUNCTION; --} -- --/** Moves the current pointer of a packet buffer -- * -- * Implemented in the port layer interface which is specific to the buffering scheme in use. -- * -- * Since packet buffers usually need to be created with space at the front for additional headers, -- * this function allows WHD to move the current 'front' location pointer so that it has space to -- * add headers to transmit packets, and so that the network stack does not see the internal WHD -- * headers on received packets. -- * -- * @param buffer : A pointer to the handle of the current packet buffer for which the -- * current pointer will be moved. On return this may contain a pointer -- * to a newly allocated packet buffer which has been daisy chained to -- * the front of the given one. This would be the case if the given packet -- * buffer didn't have enough space at the front. -- * @param add_remove_amount : This is the number of bytes to move the current pointer of the packet -- * buffer - a negative value increases the space for headers at the front -- * of the packet, a positive value decreases the space. -- * -- * @return : WHD_SUCCESS or error code -- */ --whd_result_t whd_buffer_add_remove_at_front(whd_driver_t whd_driver, whd_buffer_t *buffer, int32_t add_remove_amount) --{ -- if (whd_driver->buffer_if->whd_buffer_add_remove_at_front) -- { -- return whd_driver->buffer_if->whd_buffer_add_remove_at_front(buffer, add_remove_amount); -- } -- else -- { -- WPRINT_WHD_INFO( ("Function pointers not provided .\n") ); -- } -- -- return WHD_WLAN_NOFUNCTION; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_cdc_bdc.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_cdc_bdc.c -deleted file mode 100644 -index 9a4e11b488..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_cdc_bdc.c -+++ /dev/null -@@ -1,723 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include --#include "whd_int.h" --#include "whd_cdc_bdc.h" --#include "whd_events_int.h" --#include "cyabs_rtos.h" --#include "whd_network_types.h" --#include "whd_types_int.h" --#include "whd_wlioctl.h" --#include "whd_thread_internal.h" --#include "whd_buffer_api.h" --#include "whd_network_if.h" -- --/****************************************************** --* Constants --******************************************************/ -- --#define BDC_PROTO_VER (2) /** Version number of BDC header */ --#define BDC_FLAG_VER_SHIFT (4) /** Number of bits to shift BDC version number in the flags field */ --#define BDC_FLAG2_IF_MASK (0x0f) -- --#define ETHER_TYPE_BRCM (0x886C) /** Broadcom Ethertype for identifying event packets - Copied from DHD include/proto/ethernet.h */ --#define BRCM_OUI "\x00\x10\x18" /** Broadcom OUI (Organizationally Unique Identifier): Used in the proprietary(221) IE (Information Element) in all Broadcom devices */ -- --/* QoS related definitions (type of service) */ --#define IPV4_DSCP_OFFSET (15) /** Offset for finding the DSCP field in an IPv4 header */ -- --#define IOCTL_OFFSET (sizeof(whd_buffer_header_t) + 12 + 16) --#define WHD_IOCTL_PACKET_TIMEOUT (0xFFFFFFFF) --#define WHD_IOCTL_TIMEOUT_MS (5000) /** Need to give enough time for coming out of Deep sleep (was 400) */ --#define WHD_IOCTL_MAX_TX_PKT_LEN (1500) -- --/****************************************************** --* Macros --******************************************************/ -- --/****************************************************** --* Local Structures --******************************************************/ -- --/****************************************************** --* Static Variables --******************************************************/ -- --static const uint8_t dscp_to_wmm_qos[] = --{ 0, 0, 0, 0, 0, 0, 0, 0, /* 0 - 7 */ -- 1, 1, 1, 1, 1, 1, 1, /* 8 - 14 */ -- 1, 1, 1, 1, 1, 1, 1, /* 15 - 21 */ -- 1, 1, 0, 0, 0, 0, 0, /* 22 - 28 */ -- 0, 0, 0, 5, 5, 5, 5, /* 29 - 35 */ -- 5, 5, 5, 5, 5, 5, 5, /* 36 - 42 */ -- 5, 5, 5, 5, 5, 7, 7, /* 43 - 49 */ -- 7, 7, 7, 7, 7, 7, 7, /* 50 - 56 */ -- 7, 7, 7, 7, 7, 7, 7, /* 57 - 63 */ --}; -- --/****************************************************** --* Static Function Prototypes --******************************************************/ -- --static uint8_t whd_map_dscp_to_priority(whd_driver_t whd_driver, uint8_t dscp_val); -- --/****************************************************** --* Static Functions --******************************************************/ -- --/** Map a DSCP value from an IP header to a WMM QoS priority -- * -- * @param dscp_val : DSCP value from IP header -- * -- * @return wmm_qos : WMM priority -- * -- */ --static uint8_t whd_map_dscp_to_priority(whd_driver_t whd_driver, uint8_t val) --{ -- uint8_t dscp_val = (uint8_t)(val >> 2); /* DSCP field is the high 6 bits of the second byte of an IPv4 header */ -- -- return dscp_to_wmm_qos[dscp_val]; --} -- --void whd_cdc_bdc_info_deinit(whd_driver_t whd_driver) --{ -- whd_cdc_bdc_info_t *cdc_bdc_info = &whd_driver->cdc_bdc_info; -- -- /* Delete the sleep mutex */ -- (void)cy_rtos_deinit_semaphore(&cdc_bdc_info->ioctl_sleep); -- -- /* Delete the queue mutex. */ -- (void)cy_rtos_deinit_semaphore(&cdc_bdc_info->ioctl_mutex); -- -- /* Delete the event list management mutex */ -- (void)cy_rtos_deinit_semaphore(&cdc_bdc_info->event_list_mutex); --} -- --whd_result_t whd_cdc_bdc_info_init(whd_driver_t whd_driver) --{ -- whd_cdc_bdc_info_t *cdc_bdc_info = &whd_driver->cdc_bdc_info; -- -- /* Create the mutex protecting the packet send queue */ -- if (cy_rtos_init_semaphore(&cdc_bdc_info->ioctl_mutex, 1, 0) != WHD_SUCCESS) -- { -- return WHD_SEMAPHORE_ERROR; -- } -- if (cy_rtos_set_semaphore(&cdc_bdc_info->ioctl_mutex, WHD_FALSE) != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error setting semaphore in %s at %d \n", __func__, __LINE__) ); -- return WHD_SEMAPHORE_ERROR; -- } -- -- /* Create the event flag which signals the whd thread needs to wake up */ -- if (cy_rtos_init_semaphore(&cdc_bdc_info->ioctl_sleep, 1, 0) != WHD_SUCCESS) -- { -- cy_rtos_deinit_semaphore(&cdc_bdc_info->ioctl_mutex); -- return WHD_SEMAPHORE_ERROR; -- } -- -- /* Create semaphore to protect event list management */ -- if (cy_rtos_init_semaphore(&cdc_bdc_info->event_list_mutex, 1, 0) != WHD_SUCCESS) -- { -- cy_rtos_deinit_semaphore(&cdc_bdc_info->ioctl_sleep); -- cy_rtos_deinit_semaphore(&cdc_bdc_info->ioctl_mutex); -- return WHD_SEMAPHORE_ERROR; -- } -- if (cy_rtos_set_semaphore(&cdc_bdc_info->event_list_mutex, WHD_FALSE) != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error setting semaphore in %s at %d \n", __func__, __LINE__) ); -- return WHD_SEMAPHORE_ERROR; -- } -- -- /* Initialise the list of event handler functions */ -- memset(cdc_bdc_info->whd_event_list, 0, sizeof(cdc_bdc_info->whd_event_list) ); -- -- return WHD_SUCCESS; --} -- --/** Sends an IOCTL command -- * -- * Sends a I/O Control command to the Broadcom 802.11 device. -- * The data which is set or retrieved must be in a format structure which is appropriate for the particular -- * I/O control being sent. These structures can only be found in the DHD source code such as wl/exe/wlu.c. -- * The I/O control will always respond with a packet buffer which may contain data in a format specific to -- * the I/O control being used. -- * -- * @Note: The caller is responsible for releasing the response buffer. -- * @Note: The function blocks until the IOCTL has completed -- * @Note: Only one IOCTL may happen simultaneously. -- * -- * @param type : CDC_SET or CDC_GET - indicating whether to set or get the I/O control -- * @param send_buffer_hnd : A handle for a packet buffer containing the data value to be sent. -- * @param response_buffer_hnd : A pointer which will receive the handle for the packet buffer -- * containing the response data value received. -- * @param interface : Which interface to send the iovar to (WHD_STA_INTERFACE or WHD_AP_INTERFACE) -- * -- * @return WHD result code -- */ --whd_result_t whd_cdc_send_ioctl(whd_interface_t ifp, cdc_command_type_t type, uint32_t command, -- whd_buffer_t send_buffer_hnd, -- whd_buffer_t *response_buffer_hnd) --{ -- -- uint32_t data_length; -- uint32_t flags; -- uint32_t requested_ioctl_id; -- whd_result_t retval; -- control_header_t *send_packet; -- cdc_header_t *cdc_header; -- uint32_t bss_index = ifp->bsscfgidx; -- whd_driver_t whd_driver = ifp->whd_driver; -- whd_cdc_bdc_info_t *cdc_bdc_info = &whd_driver->cdc_bdc_info; -- -- /* Validate the command value */ -- if (command > INT_MAX) -- { -- WPRINT_WHD_ERROR( ("The ioctl command value is invalid\n") ); -- return WHD_BADARG; -- } -- -- /* Acquire mutex which prevents multiple simultaneous IOCTLs */ -- retval = cy_rtos_get_semaphore(&cdc_bdc_info->ioctl_mutex, CY_RTOS_NEVER_TIMEOUT, WHD_FALSE); -- if (retval != WHD_SUCCESS) -- { -- CHECK_RETURN(whd_buffer_release(whd_driver, send_buffer_hnd, WHD_NETWORK_TX) ); -- return retval; -- } -- -- /* Count request ioctl ID after acquiring ioctl mutex */ -- requested_ioctl_id = (uint32_t)(++cdc_bdc_info->requested_ioctl_id); -- -- /* Get the data length and cast packet to a CDC BUS header */ -- data_length = -- (uint32_t)(whd_buffer_get_current_piece_size(whd_driver, -- send_buffer_hnd) - sizeof(bus_common_header_t) - -- sizeof(cdc_header_t) ); -- -- send_packet = (control_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, send_buffer_hnd); -- -- WHD_IOCTL_LOG_ADD(ifp->whd_driver, command, send_buffer_hnd); -- -- /* Check if IOCTL is actually IOVAR */ -- if ( (command == WLC_SET_VAR) || (command == WLC_GET_VAR) ) -- { -- uint8_t *data = (uint8_t *)DATA_AFTER_HEADER(send_packet); -- uint8_t *ptr = data; -- -- /* Calculate the offset added to compensate for IOVAR string creating unaligned data section */ -- while (*ptr == 0) -- { -- ptr++; -- } -- if (data != ptr) -- { -- data_length -= (uint32_t)(ptr - data); -- memmove(data, ptr, data_length); -- CHECK_RETURN(whd_buffer_set_size(whd_driver, send_buffer_hnd, -- (uint16_t)(data_length + sizeof(bus_common_header_t) + -- sizeof(cdc_header_t) ) ) ); -- } -- } -- -- /* Prepare the CDC header */ -- send_packet->cdc_header.cmd = htod32(command); -- send_packet->cdc_header.len = htod32(data_length); -- -- send_packet->cdc_header.flags = ( (requested_ioctl_id << CDCF_IOC_ID_SHIFT) -- & CDCF_IOC_ID_MASK ) | type | bss_index << CDCF_IOC_IF_SHIFT; -- send_packet->cdc_header.flags = htod32(send_packet->cdc_header.flags); -- -- send_packet->cdc_header.status = 0; -- -- /* Manufacturing test can receive big buffers, but sending big buffers causes a wlan firmware error */ -- /* Even though data portion needs to be truncated, cdc_header should have the actual length of the ioctl packet */ -- if (whd_buffer_get_current_piece_size(whd_driver, send_buffer_hnd) > WHD_IOCTL_MAX_TX_PKT_LEN) -- { -- CHECK_RETURN(whd_buffer_set_size(whd_driver, send_buffer_hnd, WHD_IOCTL_MAX_TX_PKT_LEN) ); -- } -- -- /* Store the length of the data and the IO control header and pass "down" */ -- whd_send_to_bus(whd_driver, send_buffer_hnd, CONTROL_HEADER); -- -- -- /* Wait till response has been received */ -- retval = cy_rtos_get_semaphore(&cdc_bdc_info->ioctl_sleep, (uint32_t)WHD_IOCTL_TIMEOUT_MS, WHD_FALSE); -- if (retval != WHD_SUCCESS) -- { -- /* Release the mutex since ioctl response will no longer be referenced. */ -- CHECK_RETURN(cy_rtos_set_semaphore(&cdc_bdc_info->ioctl_mutex, WHD_FALSE) ); -- return retval; -- } -- -- cdc_header = (cdc_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, cdc_bdc_info->ioctl_response); -- flags = dtoh32(cdc_header->flags); -- -- retval = (whd_result_t)(WLAN_ENUM_OFFSET - dtoh32(cdc_header->status) ); -- -- /* Check if the caller wants the response */ -- if (response_buffer_hnd != NULL) -- { -- *response_buffer_hnd = cdc_bdc_info->ioctl_response; -- CHECK_RETURN(whd_buffer_add_remove_at_front(whd_driver, response_buffer_hnd, sizeof(cdc_header_t) ) ); -- } -- else -- { -- CHECK_RETURN(whd_buffer_release(whd_driver, cdc_bdc_info->ioctl_response, WHD_NETWORK_RX) ); -- } -- -- cdc_bdc_info->ioctl_response = NULL; -- -- /* Release the mutex since ioctl response will no longer be referenced. */ -- CHECK_RETURN(cy_rtos_set_semaphore(&cdc_bdc_info->ioctl_mutex, WHD_FALSE) ); -- -- /* Check whether the IOCTL response indicates it failed. */ -- if ( (flags & CDCF_IOC_ERROR) != 0 ) -- { -- if (response_buffer_hnd != NULL) -- { -- CHECK_RETURN(whd_buffer_release(whd_driver, *response_buffer_hnd, WHD_NETWORK_RX) ); -- *response_buffer_hnd = NULL; -- } -- whd_minor_assert("IOCTL failed\n", 0 != 0); -- return retval; -- } -- -- return WHD_SUCCESS; --} -- --/** Sets/Gets an I/O Variable (IOVar) -- * -- * This function either sets or retrieves the value of an I/O variable from the Broadcom 802.11 device. -- * The data which is set or retrieved must be in a format structure which is appropriate for the particular -- * I/O variable being accessed. These structures can only be found in the DHD source code such as wl/exe/wlu.c. -- * -- * @Note: The function blocks until the I/O variable read/write has completed -- * -- * @param type : CDC_SET or CDC_GET - indicating whether to set or get the I/O variable value -- * @param send_buffer_hnd : A handle for a packet buffer containing the data value to be sent. -- * @param response_buffer_hnd : A pointer which will receive the handle for the packet buffer -- * containing the response data value received. -- * @param interface : Which interface to send the iovar to (AP or STA) -- * -- * @return WHD result code -- */ --whd_result_t whd_cdc_send_iovar(whd_interface_t ifp, cdc_command_type_t type, -- whd_buffer_t send_buffer_hnd, -- whd_buffer_t *response_buffer_hnd) --{ -- if (type == CDC_SET) -- { -- return whd_cdc_send_ioctl(ifp, CDC_SET, (uint32_t)WLC_SET_VAR, send_buffer_hnd, response_buffer_hnd); -- } -- else -- { -- return whd_cdc_send_ioctl(ifp, CDC_GET, (uint32_t)WLC_GET_VAR, send_buffer_hnd, response_buffer_hnd); -- } --} -- --/** A helper function to easily acquire and initialise a buffer destined for use as an iovar -- * -- * @param buffer : A pointer to a whd_buffer_t object where the created buffer will be stored -- * @param data_length : The length of space reserved for user data -- * @param name : The name of the iovar -- * -- * @return A pointer to the start of user data with data_length space available -- */ --void *whd_cdc_get_iovar_buffer(whd_driver_t whd_driver, -- whd_buffer_t *buffer, -- uint16_t data_length, -- const char *name) --{ -- uint32_t name_length = (uint32_t)strlen(name) + 1; /* + 1 for terminating null */ -- uint32_t name_length_alignment_offset = (64 - name_length) % sizeof(uint32_t); -- -- if (whd_host_buffer_get(whd_driver, buffer, WHD_NETWORK_TX, -- (unsigned short)(IOCTL_OFFSET + data_length + name_length + name_length_alignment_offset), -- (unsigned long)WHD_IOCTL_PACKET_TIMEOUT) == WHD_SUCCESS) -- { -- uint8_t *data = (whd_buffer_get_current_piece_data_pointer(whd_driver, *buffer) + IOCTL_OFFSET); -- memset(data, 0, name_length_alignment_offset); -- memcpy(data + name_length_alignment_offset, name, name_length); -- return (data + name_length + name_length_alignment_offset); -- } -- else -- { -- WPRINT_WHD_ERROR( ("Error - failed to allocate a packet buffer for IOVAR\n") ); -- return NULL; -- } --} -- --/** Sends a data packet. -- * -- * This function should be called by the bottom of the network stack in order for it -- * to send an ethernet frame. -- * The function prepends a BDC header, before sending to @ref whd_send_to_bus where -- * the BUS header will be added -- * -- * @param buffer : The ethernet packet buffer to be sent -- * @param interface : the interface over which to send the packet (AP or STA) -- * -- */ --/* Returns immediately - whd_buffer_tx_completed will be called once the transmission has finished */ --void whd_network_send_ethernet_data(whd_interface_t ifp, whd_buffer_t buffer) --{ -- data_header_t *packet; -- whd_result_t result; -- uint8_t *dscp = NULL; -- uint8_t priority = 0; -- uint8_t whd_tos_map[8] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }; -- whd_driver_t whd_driver = ifp->whd_driver; -- ethernet_header_t *ethernet_header = (ethernet_header_t *)whd_buffer_get_current_piece_data_pointer( -- whd_driver, buffer); -- uint16_t ether_type; -- -- ether_type = ntoh16(ethernet_header->ethertype); -- if ( (ether_type == WHD_ETHERTYPE_IPv4) || (ether_type == WHD_ETHERTYPE_DOT1AS) ) -- { -- dscp = (uint8_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer) + IPV4_DSCP_OFFSET; -- } -- -- WPRINT_WHD_DATA_LOG( ("Wcd:> DATA pkt 0x%08lX len %d\n", (unsigned long)buffer, -- (int)whd_buffer_get_current_piece_size(whd_driver, buffer) ) ); -- -- -- /* Add link space at front of packet */ -- result = whd_buffer_add_remove_at_front(whd_driver, &buffer, -(int)(sizeof(data_header_t) ) ); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_DEBUG( ("Unable to adjust header space\n") ); -- result = whd_buffer_release(ifp->whd_driver, buffer, WHD_NETWORK_TX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- return; -- } -- -- packet = (data_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer); -- -- if (ifp->bsscfgidx > WHD_INTERFACE_MAX) -- { -- WPRINT_WHD_DEBUG( ("No interface for packet send\n") ); -- result = whd_buffer_release(ifp->whd_driver, buffer, WHD_NETWORK_TX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- return; -- } -- -- /* Prepare the BDC header */ -- packet->bdc_header.flags = 0; -- packet->bdc_header.flags = (uint8_t)(BDC_PROTO_VER << BDC_FLAG_VER_SHIFT); -- /* If it's an IPv4 packet set the BDC header priority based on the DSCP field */ -- if ( ( (ether_type == WHD_ETHERTYPE_IPv4) || (ether_type == WHD_ETHERTYPE_DOT1AS) ) && (dscp != NULL) ) -- { -- if (*dscp != 0) /* If it's equal 0 then it's best effort traffic and nothing needs to be done */ -- { -- priority = whd_map_dscp_to_priority(whd_driver, *dscp); -- } -- } -- -- /* If STA interface, re-map prio to the prio allowed by the AP, regardless of whether it's an IPv4 packet */ -- if (ifp->role == WHD_STA_ROLE) -- { -- packet->bdc_header.priority = whd_tos_map[priority]; -- } -- else -- { -- packet->bdc_header.priority = priority; -- } -- -- packet->bdc_header.flags2 = ifp->bsscfgidx; -- packet->bdc_header.data_offset = 0; -- -- /* Add the length of the BDC header and pass "down" */ -- whd_send_to_bus(whd_driver, buffer, DATA_HEADER); -- --} -- --/** A helper function to easily acquire and initialise a buffer destined for use as an ioctl -- * -- * @param buffer : A pointer to a whd_buffer_t object where the created buffer will be stored -- * @param data_length : The length of space reserved for user data -- * -- * @return A pointer to the start of user data with data_length space available -- */ --void *whd_cdc_get_ioctl_buffer(whd_driver_t whd_driver, -- whd_buffer_t *buffer, -- uint16_t data_length) --{ -- if ( (uint32_t)IOCTL_OFFSET + data_length > USHRT_MAX ) -- { -- WPRINT_WHD_ERROR( ("The reserved ioctl buffer length is over %u\n", USHRT_MAX) ); -- return NULL; -- } -- if (whd_host_buffer_get(whd_driver, buffer, WHD_NETWORK_TX, (unsigned short)(IOCTL_OFFSET + data_length), -- (unsigned long)WHD_IOCTL_PACKET_TIMEOUT) == WHD_SUCCESS) -- { -- return (whd_buffer_get_current_piece_data_pointer(whd_driver, *buffer) + IOCTL_OFFSET); -- } -- else -- { -- WPRINT_WHD_ERROR( ("Error - failed to allocate a packet buffer for IOCTL\n") ); -- return NULL; -- } --} -- --/** Processes CDC header information received in the RX packet and sets IOCTL response buffer -- * -- * @param whd_driver : WHD driver instance -- * @param buffer : A pointer to a whd_buffer_t object where the created buffer will be stored -- */ -- --void whd_process_cdc(whd_driver_t whd_driver, whd_buffer_t buffer) --{ -- uint32_t flags; -- uint16_t id; -- whd_cdc_bdc_info_t *cdc_bdc_info = &whd_driver->cdc_bdc_info; -- whd_result_t result; -- cdc_header_t *cdc_header = (cdc_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer); -- whd_result_t ioctl_mutex_res; -- -- flags = dtoh32(cdc_header->flags); -- id = (uint16_t)( (flags & CDCF_IOC_ID_MASK) >> CDCF_IOC_ID_SHIFT ); -- -- /* Validate request ioctl ID and check if whd_cdc_send_ioctl is still waiting for response*/ -- if ( ( (ioctl_mutex_res = cy_rtos_get_semaphore(&cdc_bdc_info->ioctl_mutex, 0, WHD_FALSE) ) != WHD_SUCCESS ) && -- (id == cdc_bdc_info->requested_ioctl_id) ) -- { -- /* Save the response packet in a variable */ -- cdc_bdc_info->ioctl_response = buffer; -- -- WPRINT_WHD_DATA_LOG( ("Wcd:< Procd pkt 0x%08lX: IOCTL Response\n", (unsigned long)buffer) ); -- -- /* Wake the thread which sent the IOCTL/IOVAR so that it will resume */ -- result = cy_rtos_set_semaphore(&cdc_bdc_info->ioctl_sleep, WHD_FALSE); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("Error setting semaphore in %s at %d \n", __func__, __LINE__) ); -- -- } -- else -- { -- WPRINT_WHD_ERROR( ("Received buffer request ID: %d (expectation: %d)\n", -- id, cdc_bdc_info->requested_ioctl_id) ); -- if (ioctl_mutex_res == WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("whd_cdc_send_ioctl is already timed out, drop the buffer\n") ); -- result = cy_rtos_set_semaphore(&cdc_bdc_info->ioctl_mutex, WHD_FALSE); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error setting semaphore in %s at %d \n", __func__, __LINE__) ); -- } -- } -- else -- { -- WPRINT_WHD_ERROR( ("Received a response for a different IOCTL - retry\n") ); -- } -- -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- } --} -- --/** Processes BDC header information received in the RX packet and sends data to network stack -- * -- * @param whd_driver : WHD driver instance -- * @param buffer : A pointer to a whd_buffer_t object where the created buffer will be stored -- */ -- --void whd_process_bdc(whd_driver_t whd_driver, whd_buffer_t buffer) --{ -- int32_t headers_len_below_payload; -- uint32_t ip_data_start_add; -- uint32_t bssid_index; -- whd_interface_t ifp; -- whd_result_t result; -- bdc_header_t *bdc_header = (bdc_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer); -- -- /* Calculate where the payload is */ -- headers_len_below_payload = -- (int32_t)( (int32_t)BDC_HEADER_LEN + (int32_t)(bdc_header->data_offset << 2) ); -- -- /* Move buffer pointer past gSPI, BUS, BCD headers and padding, -- * so that the network stack or 802.11 monitor sees only the payload */ -- if (WHD_SUCCESS != whd_buffer_add_remove_at_front(whd_driver, &buffer, headers_len_below_payload) ) -- { -- WPRINT_WHD_ERROR( ("No space for headers without chaining. this should never happen\n") ); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- -- return; -- } -- -- /* It is preferable to have IP data at address aligned to 4 bytes. IP data startes after ethernet header */ -- ip_data_start_add = -- (uint32_t )whd_buffer_get_current_piece_data_pointer(whd_driver, buffer) + WHD_ETHERNET_SIZE; -- if ( ( (ip_data_start_add >> 2) << 2 ) != ip_data_start_add ) -- { -- WPRINT_WHD_DATA_LOG( ("IP data not aligned to 4 bytes %lx\n", ip_data_start_add) ); -- } -- -- WPRINT_WHD_DATA_LOG( ("Wcd:< Procd pkt 0x%08lX\n", (unsigned long)buffer) ); -- bssid_index = (uint32_t)(bdc_header->flags2 & BDC_FLAG2_IF_MASK); -- ifp = whd_driver->iflist[bssid_index]; -- -- /* Send packet to bottom of network stack */ -- result = whd_network_process_ethernet_data(ifp, buffer); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("%s failed at %d \n", __func__, __LINE__) ); --} -- --/** Processes BDC header information and extracts the event packets -- * Event Packets are decoded to determine which event occurred, and the event handler list is consulted -- * and the appropriate event handler is called -- * -- * @param whd_driver : WHD driver instance -- * @param buffer : A pointer to a whd_buffer_t object where the created buffer will be stored -- * @param size : Size of the complete packet received from WLAN device -- */ --void whd_process_bdc_event(whd_driver_t whd_driver, whd_buffer_t buffer, uint16_t size) --{ -- uint16_t ether_type; -- whd_event_header_t *whd_event; -- whd_event_t *event; -- whd_cdc_bdc_info_t *cdc_bdc_info = &whd_driver->cdc_bdc_info; -- whd_result_t result; -- bdc_header_t *bdc_header = (bdc_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer); -- uint16_t i; -- uint16_t j; -- -- event = (whd_event_t *)&bdc_header[bdc_header->data_offset + 1]; -- -- ether_type = ntoh16(event->eth.ethertype); -- -- /* If frame is truly an event, it should have EtherType equal to the Broadcom type. */ -- if (ether_type != (uint16_t)ETHER_TYPE_BRCM) -- { -- WPRINT_WHD_DEBUG( ("Error - received a channel 1 packet which was not BRCM ethertype\n") ); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- return; -- } -- -- /* If ethertype is correct, the contents of the ethernet packet -- * are a structure of type bcm_event_t -- */ -- -- /* Check that the OUI matches the Broadcom OUI */ -- if (0 != memcmp(BRCM_OUI, &event->eth_evt_hdr.oui[0], (size_t)DOT11_OUI_LEN) ) -- { -- WPRINT_WHD_DEBUG( ("Event OUI mismatch\n") ); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- return; -- } -- -- whd_event = &event->whd_event; -- -- /* Search for the event type in the list of event handler functions -- * event data is stored in network endianness -- */ -- whd_event->flags = ntoh16(whd_event->flags); -- whd_event->event_type = (whd_event_num_t)ntoh32(whd_event->event_type); -- whd_event->status = (whd_event_status_t)ntoh32(whd_event->status); -- whd_event->reason = (whd_event_reason_t)ntoh32(whd_event->reason); -- whd_event->auth_type = ntoh32(whd_event->auth_type); -- whd_event->datalen = ntoh32(whd_event->datalen); -- -- /* Ensure data length is correct */ -- if (whd_event->datalen > -- (uint32_t)(size - ( (char *)DATA_AFTER_HEADER(event) - (char *)bdc_header ) ) ) -- { -- WPRINT_WHD_ERROR( ( -- "Error - (data length received [%d] > expected data length [%d]). Bus header packet size = [%d]. Ignoring the packet\n", -- (int)whd_event->datalen, -- size - ( (char *)DATA_AFTER_HEADER(event) - (char *)bdc_header ), -- size) ); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- -- return; -- } -- -- /* This is necessary because people who defined event statuses and reasons overlapped values. */ -- if (whd_event->event_type == WLC_E_PSK_SUP) -- { -- whd_event->status = (whd_event_status_t)( (int)whd_event->status + WLC_SUP_STATUS_OFFSET ); -- whd_event->reason = (whd_event_reason_t)( (int)whd_event->reason + WLC_E_SUP_REASON_OFFSET ); -- } -- else if (whd_event->event_type == WLC_E_PRUNE) -- { -- whd_event->reason = (whd_event_reason_t)( (int)whd_event->reason + WLC_E_PRUNE_REASON_OFFSET ); -- } -- else if ( (whd_event->event_type == WLC_E_DISASSOC) || (whd_event->event_type == WLC_E_DEAUTH) ) -- { -- whd_event->status = (whd_event_status_t)( (int)whd_event->status + WLC_DOT11_SC_STATUS_OFFSET ); -- whd_event->reason = (whd_event_reason_t)( (int)whd_event->reason + WLC_E_DOT11_RC_REASON_OFFSET ); -- } -- -- /* do any needed debug logging of event */ -- WHD_IOCTL_LOG_ADD_EVENT(whd_driver, whd_event->event_type, whd_event->status, -- whd_event->reason); -- -- if (cy_rtos_get_semaphore(&cdc_bdc_info->event_list_mutex, CY_RTOS_NEVER_TIMEOUT, WHD_FALSE) != WHD_SUCCESS) -- { -- WPRINT_WHD_DEBUG( ("Failed to obtain mutex for event list access!\n") ); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- return; -- } -- -- for (i = 0; i < (uint16_t)WHD_EVENT_HANDLER_LIST_SIZE; i++) -- { -- if (cdc_bdc_info->whd_event_list[i].event_set) -- { -- for (j = 0; cdc_bdc_info->whd_event_list[i].events[j] != WLC_E_NONE; ++j) -- { -- if ( (cdc_bdc_info->whd_event_list[i].events[j] == whd_event->event_type) && -- (cdc_bdc_info->whd_event_list[i].ifidx == whd_event->ifidx) ) -- { -- /* Correct event type has been found - call the handler function and exit loop */ -- cdc_bdc_info->whd_event_list[i].handler_user_data = -- cdc_bdc_info->whd_event_list[i].handler(whd_driver->iflist[whd_event->bsscfgidx], -- whd_event, -- (uint8_t *)DATA_AFTER_HEADER( -- event), -- cdc_bdc_info->whd_event_list[i].handler_user_data); -- break; -- } -- } -- } -- } -- -- result = cy_rtos_set_semaphore(&cdc_bdc_info->event_list_mutex, WHD_FALSE); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("Error setting semaphore in %s at %d \n", __func__, __LINE__) ); -- -- WPRINT_WHD_DATA_LOG( ("Wcd:< Procd pkt 0x%08lX: Evnt %d (%d bytes)\n", (unsigned long)buffer, -- (int)whd_event->event_type, size) ); -- -- /* Release the event packet buffer */ -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_chip.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_chip.c -deleted file mode 100644 -index 64ffb07e56..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_chip.c -+++ /dev/null -@@ -1,1456 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include --#include "bus_protocols/whd_chip_reg.h" --#include "bus_protocols/whd_sdio.h" --#include "bus_protocols/whd_bus_common.h" --#include "bus_protocols/whd_bus_protocol_interface.h" --#include "whd_chip_constants.h" --#include "whd_cdc_bdc.h" --#include "whd_thread_internal.h" --#include "whd_buffer_api.h" --#include "whd_debug.h" --#include "whd_utils.h" --#include "whd_wifi_api.h" --#include "whd_chip.h" --#include "whd.h" --#include "whd_wlioctl.h" -- --/****************************************************** --* Macros --******************************************************/ --#define SPINWAIT_POLL_PERIOD 10 -- --#define SPINWAIT(exp, us) { \ -- uint countdown = (us) + (SPINWAIT_POLL_PERIOD - 1); \ -- while ( (exp) && (countdown >= SPINWAIT_POLL_PERIOD) ){ \ -- cy_rtos_delay_milliseconds(SPINWAIT_POLL_PERIOD); \ -- countdown -= SPINWAIT_POLL_PERIOD; \ -- } \ --} --/****************************************************** --* Constants --******************************************************/ -- --#define PLATFORM_WLAN_RAM_BASE (0x0) --#define WLAN_BUS_UP_ATTEMPTS (1000) --#define HT_AVAIL_WAIT_MS (1) --#define KSO_WAIT_MS (1) --#define KSO_WAKE_MS (3) --#define MAX_KSO_ATTEMPTS (64) -- --#define AI_IOCTRL_OFFSET (0x408) --#define SICF_FGC (0x0002) --#define SICF_CLOCK_EN (0x0001) --#define AI_RESETCTRL_OFFSET (0x800) --#define AI_RESETSTATUS_OFFSET (0x804) --#define AIRC_RESET (1) --#define WRAPPER_REGISTER_OFFSET (0x100000) -- --#define WLAN_SHARED_VERSION_MASK (0x00ff) --#define WLAN_SHARED_VERSION (0x0001) --#define WPRINT_WHD_DEBUG_DS(args) WPRINT_WHD_DEBUG(args) -- --/****************************************************** --* Structures --******************************************************/ -- --/****************************************************** --* Variables --******************************************************/ -- --static const uint32_t cm3_core_base_address[] = --{ ( uint32_t )(WLAN_ARMCM3_BASE_ADDRESS + WRAPPER_REGISTER_OFFSET), -- ( uint32_t )(SOCSRAM_BASE_ADDRESS + WRAPPER_REGISTER_OFFSET), ( uint32_t )(SDIO_BASE_ADDRESS) }; -- --static const uint32_t cr4_core_base_address[] = --{ ( uint32_t )(WLAN_ARMCR4_BASE_ADDRESS + WRAPPER_REGISTER_OFFSET), -- ( uint32_t )(SOCSRAM_BASE_ADDRESS + WRAPPER_REGISTER_OFFSET), ( uint32_t )(SDIO_BASE_ADDRESS) }; -- --/****************************************************** --* Static Function Declarations --******************************************************/ --static whd_bool_t whd_is_fw_sr_capable(whd_driver_t whd_driver); --static whd_result_t whd_kso_enable(whd_driver_t whd_driver, whd_bool_t enable); --static uint32_t whd_get_core_address(whd_driver_t whd_driver, device_core_t core_id); -- --static whd_result_t whd_enable_save_restore(whd_driver_t whd_driver); -- --/****************************************************** --* Function definitions --******************************************************/ --void whd_internal_info_init(whd_driver_t whd_driver) --{ -- whd_internal_info_t *internal_info = &whd_driver->internal_info; -- -- internal_info->whd_wlan_status.state = WLAN_OFF; -- internal_info->whd_wlan_status.country_code = WHD_COUNTRY_AUSTRALIA; -- internal_info->whd_wlan_status.aggregate_code = WHD_COUNTRY_AGGREGATE_XV_0; -- internal_info->whd_wlan_status.keep_wlan_awake = 0; -- internal_info->console_addr = 0; -- internal_info->scan_result_callback = NULL; -- internal_info->whd_scan_result_ptr = NULL; -- internal_info->active_join_mutex_initted = WHD_FALSE; -- internal_info->active_join_semaphore = NULL; -- internal_info->con_lastpos = 0; -- internal_info->whd_wifi_p2p_go_is_up = WHD_FALSE; --} -- --/* -- * Returns the base address of the core identified by the provided coreId -- */ --uint32_t whd_get_core_address(whd_driver_t whd_driver, device_core_t core_id) --{ -- uint16_t chip_id = whd_chip_get_chip_id(whd_driver); -- -- if (chip_id == 43455) -- return cr4_core_base_address[(int)core_id]; -- else -- return cm3_core_base_address[(int)core_id]; --} -- --/* -- * Returns WHD_SUCCESS is the core identified by the provided coreId is up, otherwise WHD result code -- */ --whd_result_t whd_device_core_is_up(whd_driver_t whd_driver, device_core_t core_id) --{ -- uint8_t regdata; -- uint32_t base; -- whd_result_t result; -- -- base = whd_get_core_address(whd_driver, core_id); -- -- /* Read the IO control register */ -- result = whd_bus_read_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, ®data); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- /* Verify that the clock is enabled and something else is not on */ -- if ( (regdata & (SICF_FGC | SICF_CLOCK_EN) ) != ( uint8_t )SICF_CLOCK_EN ) -- { -- return WHD_CORE_CLOCK_NOT_ENABLED; -- } -- -- /* Read the reset control and verify it is not in reset */ -- result = whd_bus_read_backplane_value(whd_driver, base + AI_RESETCTRL_OFFSET, (uint8_t)1, ®data); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- if ( (regdata & AIRC_RESET) != 0 ) -- { -- return WHD_CORE_IN_RESET; -- } -- -- return WHD_SUCCESS; --} -- --/* -- * Resets the core identified by the provided coreId -- */ --whd_result_t whd_reset_core(whd_driver_t whd_driver, device_core_t core_id, uint32_t bits, uint32_t resetbits) --{ -- uint32_t base = whd_get_core_address(whd_driver, core_id); -- whd_result_t result; -- uint8_t regdata; -- uint32_t loop_counter = 10; -- -- /* ensure there are no pending backplane operations */ -- SPINWAIT( ( ( (result = whd_bus_read_backplane_value(whd_driver, base + AI_RESETSTATUS_OFFSET, (uint8_t)1, -- ®data) ) == WHD_SUCCESS ) && regdata != 0 ), 300 ); -- -- /* put core into reset state */ -- result = whd_bus_write_backplane_value(whd_driver, base + AI_RESETCTRL_OFFSET, (uint8_t)1, ( uint32_t )AIRC_RESET); -- (void)cy_rtos_delay_milliseconds( (uint32_t)10 ); /* Ignore return - nothing can be done if it fails */ -- -- /* ensure there are no pending backplane operations */ -- SPINWAIT( ( ( (result = whd_bus_read_backplane_value(whd_driver, base + AI_RESETSTATUS_OFFSET, (uint8_t)1, -- ®data) ) == WHD_SUCCESS ) && regdata != 0 ), 300 ); -- -- result = whd_bus_write_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, -- (bits | resetbits | SICF_FGC | SICF_CLOCK_EN) ); -- -- /* ensure there are no pending backplane operations */ -- SPINWAIT( ( ( (result = whd_bus_read_backplane_value(whd_driver, base + AI_RESETSTATUS_OFFSET, (uint8_t)1, -- ®data) ) == WHD_SUCCESS ) && regdata != 0 ), 300 ); -- -- while ( ( (result = whd_bus_read_backplane_value(whd_driver, base + AI_RESETCTRL_OFFSET, (uint8_t)1, -- ®data) ) == WHD_SUCCESS ) && regdata != 0 && -- --loop_counter != 0 ) -- { -- /* ensure there are no pending backplane operations */ -- SPINWAIT( ( ( (result = whd_bus_read_backplane_value(whd_driver, base + AI_RESETSTATUS_OFFSET, (uint8_t)1, -- ®data) ) == WHD_SUCCESS ) && regdata != 0 ), 300 ); -- /* take core out of reset */ -- result = whd_bus_write_backplane_value(whd_driver, base + AI_RESETCTRL_OFFSET, (uint8_t)1, (uint32_t)0); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- /* ensure there are no pending backplane operations */ -- SPINWAIT( ( ( (result = whd_bus_read_backplane_value(whd_driver, base + AI_RESETSTATUS_OFFSET, (uint8_t)1, -- ®data) ) == WHD_SUCCESS ) && regdata != 0 ), 300 ); -- } -- -- result = whd_bus_write_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, (bits | SICF_CLOCK_EN) ); -- -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); /* Ignore return - nothing can be done if it fails */ -- -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- return WHD_SUCCESS; --} -- --/* -- * Disables the core identified by the provided coreId -- */ --whd_result_t whd_disable_device_core(whd_driver_t whd_driver, device_core_t core_id, wlan_core_flag_t core_flag) --{ -- uint32_t base = whd_get_core_address(whd_driver, core_id); -- whd_result_t result; -- uint8_t junk; -- uint8_t regdata; -- -- /* Read the reset control */ -- result = whd_bus_read_backplane_value(whd_driver, base + AI_RESETCTRL_OFFSET, (uint8_t)1, &junk); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- /* Read the reset control and check if it is already in reset */ -- result = whd_bus_read_backplane_value(whd_driver, base + AI_RESETCTRL_OFFSET, (uint8_t)1, ®data); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- if ( (regdata & AIRC_RESET) != 0 ) -- { -- /* Core already in reset */ -- return WHD_SUCCESS; -- } -- -- /* Write 0 to the IO control and read it back */ -- result = -- whd_bus_write_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, -- (core_flag == WLAN_CORE_FLAG_CPU_HALT) ? SICF_CPUHALT : 0); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- result = whd_bus_read_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, &junk); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); -- -- result = whd_bus_write_backplane_value(whd_driver, base + AI_RESETCTRL_OFFSET, (uint8_t)1, ( uint32_t )AIRC_RESET); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); -- -- return result; --} -- --/* -- * Resets the core identified by the provided coreId -- */ --whd_result_t whd_reset_device_core(whd_driver_t whd_driver, device_core_t core_id, wlan_core_flag_t core_flag) --{ -- uint32_t base = whd_get_core_address(whd_driver, core_id); -- whd_result_t result; -- uint8_t junk; -- -- result = whd_disable_device_core(whd_driver, core_id, core_flag); -- if (result != WHD_SUCCESS) -- { -- return result; -- } -- -- result = -- whd_bus_write_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, -- ( uint32_t )(SICF_FGC | SICF_CLOCK_EN | -- ( (core_flag == WLAN_CORE_FLAG_CPU_HALT) ? SICF_CPUHALT : 0 ) ) ); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- result = whd_bus_read_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, &junk); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- result = whd_bus_write_backplane_value(whd_driver, base + AI_RESETCTRL_OFFSET, (uint8_t)1, 0); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); -- -- result = -- whd_bus_write_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, -- ( uint32_t )(SICF_CLOCK_EN | -- ( (core_flag == WLAN_CORE_FLAG_CPU_HALT) ? SICF_CPUHALT : 0 ) ) ); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- result = whd_bus_read_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, &junk); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ) -- return result; -- } -- -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); -- -- return result; --} -- --/* -- * Release ARM core to run instructions -- */ --whd_result_t whd_wlan_armcore_run(whd_driver_t whd_driver, device_core_t core_id, wlan_core_flag_t core_flag) --{ -- uint32_t base = whd_get_core_address(whd_driver, core_id); -- whd_result_t result; -- uint8_t junk; -- -- /* Only work for WLAN arm core! */ -- if (WLAN_ARM_CORE != core_id) -- { -- return WHD_UNSUPPORTED; -- } -- -- result = -- whd_bus_write_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, -- ( uint32_t )(SICF_FGC | SICF_CLOCK_EN | -- ( (core_flag == WLAN_CORE_FLAG_CPU_HALT) ? SICF_CPUHALT : 0 ) ) ); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ) -- return result; -- } -- -- result = whd_bus_read_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, &junk); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ) -- return result; -- } -- -- result = whd_bus_write_backplane_value(whd_driver, base + AI_RESETCTRL_OFFSET, (uint8_t)1, 0); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ) -- return result; -- } -- -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); -- -- result = -- whd_bus_write_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, -- ( uint32_t )(SICF_CLOCK_EN | -- ( (core_flag == WLAN_CORE_FLAG_CPU_HALT) ? SICF_CPUHALT : 0 ) ) ); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- result = whd_bus_read_backplane_value(whd_driver, base + AI_IOCTRL_OFFSET, (uint8_t)1, &junk); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- return result; -- } -- -- (void)cy_rtos_delay_milliseconds( (uint32_t)1 ); -- -- return result; --} -- --whd_result_t whd_wifi_read_wlan_log_unsafe(whd_driver_t whd_driver, uint32_t wlan_shared_address, char *buffer, -- uint32_t buffer_size) --{ -- char ch; -- uint32_t n; -- uint32_t index; -- uint32_t address; -- whd_result_t result = WHD_WLAN_ERROR; -- whd_internal_info_t *internal_info = &whd_driver->internal_info; -- wifi_console_t *c = internal_info->c; -- -- c = &internal_info->console; -- -- if (internal_info->console_addr == 0) -- { -- uint shared_addr; -- -- address = wlan_shared_address; -- result = whd_bus_read_backplane_value(whd_driver, address, 4, (uint8_t *)&shared_addr); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- goto done; -- } -- -- result = whd_bus_transfer_backplane_bytes(whd_driver, BUS_READ, shared_addr, sizeof(wlan_shared_t), -- (uint8_t *)&internal_info->sh); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_transfer_backplane_bytes failed\n", __FUNCTION__, __LINE__) ); -- goto done; -- } -- -- internal_info->sh.flags = dtoh32(internal_info->sh.flags); -- internal_info->sh.trap_addr = dtoh32(internal_info->sh.trap_addr); -- internal_info->sh.assert_exp_addr = dtoh32(internal_info->sh.assert_exp_addr); -- internal_info->sh.assert_file_addr = dtoh32(internal_info->sh.assert_file_addr); -- internal_info->sh.assert_line = dtoh32(internal_info->sh.assert_line); -- internal_info->sh.console_addr = dtoh32(internal_info->sh.console_addr); -- internal_info->sh.msgtrace_addr = dtoh32(internal_info->sh.msgtrace_addr); -- -- if ( (internal_info->sh.flags & WLAN_SHARED_VERSION_MASK) != WLAN_SHARED_VERSION ) -- { -- WPRINT_WHD_ERROR( ("Readconsole: WLAN shared version is not valid sh.flags %x\n\r", -- internal_info->sh.flags) ); -- result = WHD_WLAN_INVALID; -- goto done; -- } -- internal_info->console_addr = internal_info->sh.console_addr; -- } -- -- /* Read console log struct */ -- address = internal_info->console_addr + offsetof(hnd_cons_t, log); -- result = whd_bus_transfer_backplane_bytes(whd_driver, BUS_READ, address, sizeof(c->log), (uint8_t *)&c->log); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_transfer_backplane_bytes failed\n", __FUNCTION__, __LINE__) ); -- goto done; -- } -- -- /* Allocate console buffer (one time only) */ -- if (c->buf == NULL) -- { -- c->bufsize = dtoh32(c->log.buf_size); -- c->buf = malloc(c->bufsize); -- if (c->buf == NULL) -- { -- WPRINT_WHD_ERROR( ("%s:%d c->buf IS null \n", __FUNCTION__, __LINE__) ); -- result = WHD_WLAN_NOMEM; -- goto done; -- } -- } -- -- /* Retrieve last read position */ -- c->last = whd_driver->internal_info.con_lastpos; -- -- index = dtoh32(c->log.idx); -- -- /* Protect against corrupt value */ -- if (index > c->bufsize) -- { -- WPRINT_WHD_ERROR( ("%s:%d index > c->bufsize \n", __FUNCTION__, __LINE__) ); -- result = WHD_WLAN_BUFTOOSHORT; -- goto done; -- } -- -- /* Skip reading the console buffer if the index pointer has not moved */ -- if (index == c->last) -- { -- result = WHD_SUCCESS; -- goto done; -- } -- -- /* Read the console buffer */ -- /* xxx this could optimize and read only the portion of the buffer needed, but -- * it would also have to handle wrap-around. -- */ -- address = dtoh32(c->log.buf); -- result = whd_bus_transfer_backplane_bytes(whd_driver, BUS_READ, address, c->bufsize, (uint8_t *)c->buf); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_transfer_backplane_bytes failed\n", __FUNCTION__, __LINE__) ); -- goto done; -- } -- -- while (c->last != index) -- { -- for (n = 0; n < buffer_size - 2; n++) -- { -- if (c->last == index) -- { -- /* This would output a partial line. Instead, back up -- * the buffer pointer and output this line next time around. -- */ -- if (c->last >= n) -- { -- c->last -= n; -- } -- else -- { -- c->last = c->bufsize - n; -- } -- /* Save last read position */ -- whd_driver->internal_info.con_lastpos = c->last; -- -- result = WHD_SUCCESS; -- goto done; -- } -- ch = c->buf[c->last]; -- c->last = (c->last + 1) % c->bufsize; -- if (ch == '\n') -- { -- break; -- } -- buffer[n] = ch; -- } -- if (n > 0) -- { -- if (buffer[n - 1] == '\r') -- n--; -- buffer[n] = 0; -- WPRINT_MACRO( ("CONSOLE: %s\n", buffer) ); -- } -- } -- /* Save last read position */ -- whd_driver->internal_info.con_lastpos = c->last; -- result = WHD_SUCCESS; -- --done: return result; --} -- --void whd_wifi_peek(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, uint8_t *value) --{ -- uint8_t status; -- -- WHD_WLAN_KEEP_AWAKE(whd_driver); -- -- status = whd_bus_read_backplane_value(whd_driver, address, register_length, value); -- -- if (status != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: Error reading interrupt status\n", __FUNCTION__) ); -- } -- -- WHD_WLAN_LET_SLEEP(whd_driver); --} -- --void whd_wifi_poke(whd_driver_t whd_driver, uint32_t address, uint8_t register_length, uint32_t value) --{ -- uint8_t status; -- -- WHD_WLAN_KEEP_AWAKE(whd_driver); -- -- status = whd_bus_write_backplane_value(whd_driver, address, register_length, value); -- -- if (status != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: Error clearing the interrupt status\n", __FUNCTION__) ); -- } -- -- WHD_WLAN_LET_SLEEP(whd_driver); --} -- --void whd_ioctl_log_add(whd_driver_t whd_driver, uint32_t cmd, whd_buffer_t buffer) --{ -- uint8_t *data = (whd_buffer_get_current_piece_data_pointer(whd_driver, buffer) + IOCTL_OFFSET); -- size_t data_size = whd_buffer_get_current_piece_size(whd_driver, buffer); -- -- whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].ioct_log = cmd; -- whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].is_this_event = 0; -- whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].data_size = MIN_OF( -- WHD_MAX_DATA_SIZE, data_size); -- memset(whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].data, 0, WHD_MAX_DATA_SIZE); -- memcpy(whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].data, data, -- whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].data_size); -- -- whd_driver->whd_ioctl_log_index++; --} -- --void whd_ioctl_log_add_event(whd_driver_t whd_driver, uint32_t cmd, uint16_t flag, uint32_t reason) --{ -- whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].is_this_event = 1; -- whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].ioct_log = cmd; -- whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].flag = flag; -- whd_driver->whd_ioctl_log[whd_driver->whd_ioctl_log_index % WHD_IOCTL_LOG_SIZE].reason = reason; -- -- whd_driver->whd_ioctl_log_index++; -- --} -- --whd_result_t whd_ioctl_print(whd_driver_t whd_driver) --{ -- int i; -- uint8_t *data = NULL; -- size_t iovar_string_size = 0; -- -- for (i = 0; i < WHD_IOCTL_LOG_SIZE; i++) -- { -- char iovar[WHD_IOVAR_STRING_SIZE] = {0}; -- data = whd_driver->whd_ioctl_log[i].data; -- -- if ( (whd_driver->whd_ioctl_log[i].ioct_log == WLC_SET_VAR) || -- (whd_driver->whd_ioctl_log[i].ioct_log == WLC_GET_VAR) ) -- { -- while (!*data) -- { -- whd_driver->whd_ioctl_log[i].data_size--; -- data++; -- } -- -- if (strlen( (char *)data ) <= WHD_IOVAR_STRING_SIZE) -- strncpy(iovar, (char *)data, strlen( (char *)data ) ); -- -- iovar_string_size = strlen( (const char *)data ); -- data += iovar_string_size; -- whd_driver->whd_ioctl_log[i].data_size -= iovar_string_size; -- } -- -- if (whd_driver->whd_ioctl_log[i].is_this_event == 1) -- { -- whd_event_info_to_string(whd_driver->whd_ioctl_log[i].ioct_log, whd_driver->whd_ioctl_log[i].flag, -- whd_driver->whd_ioctl_log[i].reason, iovar, sizeof(iovar) - 1); -- WPRINT_MACRO( ("\n<- E:%" PRIu32 "\t\t\tS:%d\t\t\t\tR:%" PRIu32 "\n%s\n", -- whd_driver->whd_ioctl_log[i].ioct_log, -- whd_driver->whd_ioctl_log[i].flag, whd_driver->whd_ioctl_log[i].reason, iovar) ); -- } -- else if (whd_driver->whd_ioctl_log[i].ioct_log == WLC_SET_VAR) -- { -- WPRINT_MACRO( ("\n-> %s\n", iovar) ); -- whd_hexdump(data, whd_driver->whd_ioctl_log[i].data_size); -- } -- else if (whd_driver->whd_ioctl_log[i].ioct_log == WLC_GET_VAR) -- { -- WPRINT_MACRO( ("\n<- %s\n", iovar) ); -- whd_hexdump(data, whd_driver->whd_ioctl_log[i].data_size); -- } -- else if (whd_driver->whd_ioctl_log[i].ioct_log != 0) -- { -- whd_ioctl_to_string(whd_driver->whd_ioctl_log[i].ioct_log, iovar, sizeof(iovar) - 1); -- WPRINT_MACRO( ("\n%s:%" PRIu32 "\n", iovar, whd_driver->whd_ioctl_log[i].ioct_log) ); -- whd_hexdump(data, whd_driver->whd_ioctl_log[i].data_size); -- } -- } -- -- memset(whd_driver->whd_ioctl_log, 0, sizeof(whd_driver->whd_ioctl_log) ); -- whd_driver->whd_ioctl_log_index = 0; -- return WHD_SUCCESS; --} -- --void whd_wifi_chip_info_init(whd_driver_t whd_driver) --{ -- whd_driver->chip_info.save_restore_enable = WHD_FALSE; --} -- --whd_result_t whd_wifi_set_custom_country_code(whd_interface_t ifp, const whd_country_info_t *country_code) --{ -- whd_driver_t whd_driver = ifp->whd_driver; -- -- /* Get chip number */ -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- if (wlan_chip_id == 43362) -- { -- whd_buffer_t buffer; -- whd_result_t result; -- whd_country_info_t *data; -- data = (whd_country_info_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, -- (uint16_t)sizeof(whd_country_info_t) + 10); -- if (data == NULL) -- { -- whd_assert("Could not get buffer for IOCTL", 0 != 0); -- return WHD_BUFFER_ALLOC_FAIL; -- } -- memcpy(data, country_code, sizeof(whd_country_info_t) ); -- result = whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_CUSTOM_COUNTRY, buffer, NULL); -- return result; -- } -- else -- { -- UNUSED_PARAMETER(country_code); -- return WHD_UNSUPPORTED; -- } --} -- --whd_result_t whd_chip_specific_socsram_init(whd_driver_t whd_driver) --{ -- /* Get chip number */ -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- if (wlan_chip_id == 43430) -- { -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, SOCSRAM_BANKX_INDEX, 4, 0x3) ); -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, SOCSRAM_BANKX_PDA, 4, 0) ); -- return WHD_SUCCESS; -- } -- else -- { -- return WHD_SUCCESS; -- } --} -- --whd_result_t whd_chip_specific_init(whd_driver_t whd_driver) --{ -- /* Get chip number */ -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- if ( (wlan_chip_id == 4334) || (wlan_chip_id == 43362) ) -- { -- return WHD_SUCCESS; -- } -- else -- { -- return whd_enable_save_restore(whd_driver); -- } --} -- --whd_result_t whd_allow_wlan_bus_to_sleep(whd_driver_t whd_driver) --{ -- /* Get chip number */ -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- if ( (wlan_chip_id == 4334) || (wlan_chip_id == 43362) ) -- { -- /* Clear HT clock request */ -- if (whd_bus_is_up(whd_driver) == WHD_TRUE) -- { -- whd_bus_set_state(whd_driver, WHD_FALSE); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_CHIP_CLOCK_CSR, -- (uint8_t)1, 0) ); -- /* Bus specific sleep routine */ -- return whd_bus_sleep(whd_driver); -- } -- else -- { -- return WHD_SUCCESS; -- } -- } -- else -- { -- /* Clear HT clock request */ -- if (whd_bus_is_up(whd_driver) == WHD_TRUE) -- { -- whd_bus_set_state(whd_driver, WHD_FALSE); -- if (whd_driver->chip_info.save_restore_enable == WHD_FALSE) -- { -- return whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_CHIP_CLOCK_CSR, -- (uint8_t)1, 0); -- } -- else -- { -- return whd_kso_enable(whd_driver, WHD_FALSE); -- } -- } -- else -- { -- return WHD_SUCCESS; -- } -- } --} -- --whd_result_t whd_wifi_read_wlan_log(whd_driver_t whd_driver, char *buffer, uint32_t buffer_size) --{ -- whd_result_t result; -- uint32_t wlan_shared_address; -- uint16_t wlan_chip_id = 0; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- whd_ioctl_print(whd_driver); -- -- wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- if (wlan_chip_id == 43362) -- { -- return whd_wifi_read_wlan_log_unsafe(whd_driver, ( (GET_C_VAR(whd_driver, CHIP_RAM_SIZE) + -- PLATFORM_WLAN_RAM_BASE) - 4 ), buffer, buffer_size); -- } -- else if (wlan_chip_id == 43909) -- { -- result = whd_ensure_wlan_bus_is_up(whd_driver); -- if (result != WHD_SUCCESS) -- { -- return result; -- } -- result = whd_wifi_read_wlan_log_unsafe(whd_driver, ( (GET_C_VAR(whd_driver, CHIP_RAM_SIZE) + -- PLATFORM_WLAN_RAM_BASE) - 4 ), buffer, buffer_size); -- whd_thread_notify(whd_driver); -- return result; -- } -- else if ( (wlan_chip_id == 4334) || (wlan_chip_id == 4390) ) -- { -- return WHD_UNSUPPORTED; -- } -- else -- { -- /* Backplane access needs HT clock. So, disabling bus sleep */ -- WHD_WLAN_KEEP_AWAKE(whd_driver); -- /* FW populates the last word of RAM with wlan_shared_t struct address */ -- if (whd_is_fw_sr_capable(whd_driver) == WHD_TRUE) -- { -- wlan_shared_address = PLATFORM_WLAN_RAM_BASE + GET_C_VAR(whd_driver, CHIP_RAM_SIZE) - -- GET_C_VAR(whd_driver, SOCRAM_SRMEM_SIZE) - 4; -- } -- else -- { -- wlan_shared_address = PLATFORM_WLAN_RAM_BASE + GET_C_VAR(whd_driver, CHIP_RAM_SIZE) - 4; -- } -- result = whd_wifi_read_wlan_log_unsafe(whd_driver, wlan_shared_address, buffer, buffer_size); -- WHD_WLAN_LET_SLEEP(whd_driver); -- return result; -- } -- --} -- --uint32_t whd_wifi_print_whd_log(whd_driver_t whd_driver) --{ -- whd_result_t result; -- char *buffer = NULL; -- -- whd_ioctl_print(whd_driver); -- -- if ( (buffer = malloc(WLAN_LOG_BUF_LEN) ) == NULL ) -- { -- WPRINT_WHD_ERROR( ("Memory allocation failed for log buffer in %s \n", __FUNCTION__) ); -- return WHD_MALLOC_FAILURE; -- } -- -- result = whd_wifi_read_wlan_log(whd_driver, buffer, WLAN_LOG_BUF_LEN); -- if (result == WHD_SUCCESS) -- { -- whd_print_logbuffer(); // This is not supported yet. -- } -- free(buffer); -- CHECK_RETURN(result); -- return result; --} -- --whd_result_t whd_ensure_wlan_bus_is_up(whd_driver_t whd_driver) --{ -- uint8_t csr = 0; -- uint32_t attempts = ( uint32_t )WLAN_BUS_UP_ATTEMPTS; -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- -- /* Ensure HT clock is up */ -- if (whd_bus_is_up(whd_driver) == WHD_TRUE) -- { -- return WHD_SUCCESS; -- } -- -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) ) -- { -- /* Bus specific wakeup routine */ -- CHECK_RETURN(whd_bus_wakeup(whd_driver) ); -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_CHIP_CLOCK_CSR, -- (uint8_t)1, (uint32_t)SBSDIO_HT_AVAIL_REQ) ); -- do -- { -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_CHIP_CLOCK_CSR, -- (uint8_t)1, &csr) ); -- --attempts; -- } while ( ( (csr & SBSDIO_HT_AVAIL) == 0 ) && (attempts != 0) && -- (cy_rtos_delay_milliseconds( (uint32_t)1 ), 1 == 1) ); -- -- if (attempts == 0) -- { -- WPRINT_WHD_ERROR( ("SDIO bus failed to come up , %s failed at %d \n", __func__, __LINE__) ); -- return WHD_SDIO_BUS_UP_FAIL; -- } -- else -- { -- whd_bus_set_state(whd_driver, WHD_TRUE); -- return WHD_SUCCESS; -- } -- } -- else -- { -- if (whd_driver->chip_info.save_restore_enable == WHD_FALSE) -- { -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_CHIP_CLOCK_CSR, -- (uint8_t)1, (uint32_t)SBSDIO_HT_AVAIL_REQ) ); -- do -- { -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_CHIP_CLOCK_CSR, -- (uint8_t)sizeof(csr), &csr) ); -- --attempts; -- } while ( ( (csr & SBSDIO_HT_AVAIL) == 0 ) && (attempts != 0) && -- (cy_rtos_delay_milliseconds( ( uint32_t )HT_AVAIL_WAIT_MS ), 1 == 1) ); -- -- if (attempts == 0) -- { -- WPRINT_WHD_ERROR( ("SDIO bus failed to come up , %s failed at %d \n", __func__, __LINE__) ); -- return WHD_SDIO_BUS_UP_FAIL; -- } -- else -- { -- whd_bus_set_state(whd_driver, WHD_TRUE); -- return WHD_SUCCESS; -- } -- } -- else -- { -- if (whd_kso_enable(whd_driver, WHD_TRUE) == WHD_SUCCESS) -- { -- whd_bus_set_state(whd_driver, WHD_TRUE); -- return WHD_SUCCESS; -- } -- else -- { -- WPRINT_WHD_ERROR( ("SDIO bus failed to come up , %s failed at %d \n", __func__, __LINE__) ); -- return WHD_SDIO_BUS_UP_FAIL; -- } -- } -- } --} -- --static whd_bool_t whd_is_fw_sr_capable(whd_driver_t whd_driver) --{ -- uint32_t core_capext; -- uint32_t retention_ctl = 0; -- uint32_t srctrl = 0; -- whd_bool_t save_restore_capable = WHD_FALSE; -- whd_result_t result = WHD_SUCCESS; -- -- /* Get chip number */ -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- -- if (wlan_chip_id == 43430) -- { -- /* check if fw initialized sr engine */ -- if (whd_bus_read_backplane_value(whd_driver, (uint32_t)CHIPCOMMON_SR_CONTROL1, (uint8_t)4, -- (uint8_t *)&srctrl) != WHD_SUCCESS) -- { -- return WHD_FALSE; -- } -- if (srctrl != 0) -- { -- return WHD_TRUE; -- } -- else -- { -- return WHD_FALSE; -- } -- } -- else if ( (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- /* check if fw initialized sr engine */ -- result = whd_bus_read_backplane_value(whd_driver, (uint32_t)CHIPCOMMON_CORE_CAPEXT_ADDR, (uint8_t)4, -- (uint8_t *)&core_capext); -- if (result != WHD_SUCCESS) -- { -- return WHD_FALSE; -- } -- -- if ( (core_capext & CHIPCOMMON_CORE_CAPEXT_SR_SUPPORTED) != 0 ) -- { -- result = whd_bus_read_backplane_value(whd_driver, (uint32_t)CHIPCOMMON_CORE_RETENTION_CTL, (uint8_t)4, -- (uint8_t *)&retention_ctl); -- if (result != WHD_SUCCESS) -- { -- return WHD_FALSE; -- } -- if ( (retention_ctl & (CHIPCOMMON_CORE_RCTL_MACPHY_DISABLE | CHIPCOMMON_CORE_RCTL_LOGIC_DISABLE) ) == 0 ) -- { -- save_restore_capable = WHD_TRUE; -- } -- } -- return save_restore_capable; -- } -- else -- { -- /* check if fw initialized sr engine */ -- result = whd_bus_read_backplane_value(whd_driver, (uint32_t)RETENTION_CTL, (uint8_t)sizeof(retention_ctl), -- (uint8_t *)&retention_ctl); -- if (result != WHD_SUCCESS) -- { -- return WHD_FALSE; -- } -- if ( (retention_ctl & (RCTL_MACPHY_DISABLE | RCTL_LOGIC_DISABLE) ) == 0 ) -- { -- save_restore_capable = WHD_TRUE; -- } -- return save_restore_capable; -- } --} -- --static whd_result_t whd_enable_save_restore(whd_driver_t whd_driver) --{ -- uint8_t data; -- /* Get chip number */ -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- -- if (whd_is_fw_sr_capable(whd_driver) == WHD_TRUE) -- { -- if ( (wlan_chip_id == 43012) || (wlan_chip_id == 43455) ) -- { -- /* Configure WakeupCtrl register to set AlpAvail request bit in chipClockCSR register -- * after the sdiod core is powered on. -- */ -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_WAKEUP_CTRL, -- (uint8_t)sizeof(data), &data) ); -- data |= SBSDIO_WCTRL_WAKE_TILL_ALP_AVAIL; -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_WAKEUP_CTRL, -- (uint8_t)sizeof(data), data) ); -- } -- else -- { -- /* Configure WakeupCtrl register to set HtAvail request bit in chipClockCSR register -- * after the sdiod core is powered on. -- */ -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_WAKEUP_CTRL, -- (uint8_t)1, &data) ); -- data |= SBSDIO_WCTRL_WAKE_TILL_HT_AVAIL; -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_WAKEUP_CTRL, -- (uint8_t)1, data) ); -- } -- -- /* Set brcmCardCapability to noCmdDecode mode. -- * It makes sdiod_aos to wakeup host for any activity of cmd line, even though -- * module won't decode cmd or respond -- */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, (uint32_t)SDIOD_CCCR_BRCM_CARDCAP, -- (uint8_t)1, SDIOD_CCCR_BRCM_CARDCAP_CMD_NODEC) ); -- if ( (wlan_chip_id == 43012) || (wlan_chip_id == 43455) ) -- { -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_CHIP_CLOCK_CSR, -- (uint8_t)1, SBSDIO_HT_AVAIL_REQ) ); -- } -- else -- { -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_CHIP_CLOCK_CSR, -- (uint8_t)1, (uint32_t)SBSDIO_FORCE_HT) ); -- } -- -- /* Enable KeepSdioOn (KSO) bit for normal operation */ -- if ( (wlan_chip_id == 43012) || (wlan_chip_id == 43455) ) -- { -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, -- (uint8_t)sizeof(data), &data) ); -- } -- else -- { -- CHECK_RETURN(whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, -- (uint8_t)1, &data) ); -- } -- if ( (data & SBSDIO_SLPCSR_KEEP_SDIO_ON) == 0 ) -- { -- data |= SBSDIO_SLPCSR_KEEP_SDIO_ON; -- if ( (wlan_chip_id == 43012) || (wlan_chip_id == 43455) ) -- { -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, -- (uint8_t)sizeof(data), data) ); -- } -- else -- { -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, -- (uint8_t)1, data) ); -- } -- } -- -- /* SPI bus can be configured for sleep by default. -- * KSO bit solely controls the wlan chip sleep -- */ -- CHECK_RETURN(whd_bus_sleep(whd_driver) ); -- -- /* Put SPI interface block to sleep */ -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, SDIO_PULL_UP, (uint8_t)1, 0xf) ); -- -- whd_driver->chip_info.save_restore_enable = WHD_TRUE; -- } -- else -- { -- whd_driver->chip_info.save_restore_enable = WHD_FALSE; -- } -- -- return WHD_SUCCESS; --} -- --static whd_result_t whd_kso_enable(whd_driver_t whd_driver, whd_bool_t enable) --{ -- uint8_t write_value = 0; -- uint8_t read_value = 0; -- uint8_t compare_value; -- uint8_t bmask; -- uint32_t attempts = ( uint32_t )MAX_KSO_ATTEMPTS; -- whd_result_t result; -- /* Get chip number */ -- -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- if (enable == WHD_TRUE) -- { -- write_value |= SBSDIO_SLPCSR_KEEP_SDIO_ON; -- } -- -- /* 1st KSO write goes to AOS wake up core if device is asleep */ -- /* Possibly device might not respond to this cmd. So, don't check return value here */ -- if ( (wlan_chip_id == 43430) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- /* 2 Sequential writes to KSO bit are required for SR module to wakeup, both write can fail */ -- CHECK_RETURN_IGNORE(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, -- (uint8_t)1, -- write_value) ); -- CHECK_RETURN_IGNORE(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, -- (uint8_t)1, -- write_value) ); -- if (enable == WHD_TRUE) -- { -- /* device WAKEUP through KSO: -- * write bit 0 & read back until -- * both bits 0(kso bit) & 1 (dev on status) are set -- */ -- compare_value = SBSDIO_SLPCSR_KEEP_SDIO_ON | SBSDIO_SLPCSR_DEVICE_ON; -- bmask = compare_value; -- } -- else -- { -- /* Put device to sleep, turn off KSO */ -- compare_value = 0; -- /* Check for bit0 only, bit1(devon status) may not get cleared right away */ -- bmask = SBSDIO_SLPCSR_KEEP_SDIO_ON; -- } -- } -- else -- { -- CHECK_RETURN_IGNORE(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, -- (uint8_t)1, write_value) ); -- -- /* In case of 43012 chip, the chip could go down immediately after KSO bit is cleared. -- * So the further reads of KSO register could fail. Thereby just bailing out immediately -- * after clearing KSO bit, to avoid polling of KSO bit. -- */ -- if (enable == WHD_FALSE) -- { -- return WHD_SUCCESS; -- } -- -- /* 2 Sequential writes to KSO bit are required for SR module to wakeup */ -- CHECK_RETURN_IGNORE(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, -- (uint8_t)1, write_value) ); -- -- /* device WAKEUP through KSO: -- * write bit 0 & read back until -- * both bits 0(kso bit) & 1 (dev on status) are set -- */ -- compare_value = SBSDIO_SLPCSR_KEEP_SDIO_ON | SBSDIO_SLPCSR_DEVICE_ON; -- bmask = compare_value; -- } -- -- while (attempts != 0) -- { -- /* Reliable KSO bit set/clr: -- * Sdiod sleep write access appears to be in sync with PMU 32khz clk -- * just one write attempt may fail,(same is with read ?) -- * in any case, read it back until it matches written value -- */ -- result = whd_bus_read_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, (uint8_t)1, -- &read_value); -- if ( ( (read_value & bmask) == compare_value ) && (result == WHD_SUCCESS) && (read_value != 0xFF) ) -- { -- break; -- } -- -- cy_rtos_delay_milliseconds( ( uint32_t )KSO_WAIT_MS ); -- -- CHECK_RETURN_IGNORE(whd_bus_write_register_value(whd_driver, BACKPLANE_FUNCTION, (uint32_t)SDIO_SLEEP_CSR, -- (uint8_t)1, write_value) ); -- attempts--; -- } -- -- if (attempts == 0) -- { -- WPRINT_WHD_ERROR( ("SDIO bus failed to come up , %s failed at %d \n", __func__, __LINE__) ); -- return WHD_SDIO_BUS_UP_FAIL; -- } -- else -- { -- return WHD_SUCCESS; -- } --} -- --void whd_wlan_wake_from_host(whd_driver_t whd_driver); -- --void whd_wlan_wake_from_host(whd_driver_t whd_driver) --{ -- uint32_t val32 = 0; -- whd_result_t result; -- -- result = whd_bus_read_backplane_value(whd_driver, D11_MACCONTROL_REG, D11_MACCONTROL_REG_SIZE, (uint8_t *)&val32); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- } -- WPRINT_WHD_DEBUG( ("%s: %d:before: maccontrol: 0x%08x\n", __FUNCTION__, __LINE__, (unsigned int)val32) ); -- -- val32 = val32 | D11_MACCONTROL_REG_WAKE; -- result = whd_bus_write_backplane_value(whd_driver, D11_MACCONTROL_REG, D11_MACCONTROL_REG_SIZE, val32); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_write_backplane_value failed\n", __FUNCTION__, __LINE__) ); -- } -- result = whd_bus_read_backplane_value(whd_driver, D11_MACCONTROL_REG, D11_MACCONTROL_REG_SIZE, (uint8_t *)&val32); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s:%d whd_bus_read_backplane_value failed\n", __FUNCTION__, __LINE__) ) -- } -- WPRINT_WHD_DEBUG( ("%s: %d:after: maccontrol: 0x%08x\n", __FUNCTION__, __LINE__, (unsigned int)val32) ); --} -- --whd_result_t whd_wlan_bus_complete_ds_wake(whd_driver_t whd_driver, whd_bool_t wake_from_firmware, -- uint32_t wake_event_indication_addr, uint32_t wake_indication_addr, -- uint32_t sdio_control_addr) --{ -- uint32_t val = 0; -- uint32_t val1 = 0; -- uint32_t count = 0; -- int32_t timeout = 0; -- /* Get chip number */ -- -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- -- if (wlan_chip_id == 43012) -- { -- WPRINT_WHD_DEBUG_DS( ("%s: enter: wake_fr_fw=%d\n", __func__, (int )wake_from_firmware) ); -- -- /* Need to do for all wake causes */ -- while (WHD_SUCCESS != -- whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IOEN, (uint8_t)1, SDIO_FUNC_ENABLE_1) ) -- { -- WPRINT_WHD_DEBUG( ("Retry IOEN write\n") ); -- cy_rtos_delay_milliseconds(10); -- } -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(wake_event_indication_addr), 2, -- (uint8_t *)&val) ); -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(wake_indication_addr), 2, (uint8_t *)&val) ); -- -- if (WHD_TRUE == wake_from_firmware) -- { -- WPRINT_WHD_DEBUG_DS( ("%s: CCCR written\n", __func__) ); -- -- /* Read DS1 CTRL STATUS SHM to Check whether HOST MAIL BOX interrupt is triggered due to TX/RX -- * For RX Cases , Value will be DS1_SLEEP -- * For TX Cases, Value will be MAC ON or RADIO_PHY_ON -- */ -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(M_DS1_CTRL_STATUS), (uint8_t)2, -- (uint8_t *)&val) ); -- if (val == DS1_SLEEP) -- { -- /* HUDI communication to inform D11 to Process and Exit DS1 not required for D11 Wake cases -- * Simply update PMU Resource Mask and Re-download firmware for this case -- */ -- WPRINT_WHD_DEBUG_DS( ("%s: D11 wake detected\n", __func__) ); -- -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, PMU_MINRESMASK, 1, -- DEFAULT_43012_MIN_RES_MASK) ); -- -- return WHD_SUCCESS; -- } -- -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, D11SHM_ADDR(M_DS1_CTRL_SDIO), 2, -- C_DS1_CTRL_SDIO_DS1_EXIT | C_DS1_CTRL_REQ_VALID) ); -- WPRINT_WHD_DEBUG_DS( ("%s: SDIO ctl written\n", __func__) ); -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(M_DS1_CTRL_SDIO), (uint8_t)2, -- (uint8_t *)&val) ); -- WPRINT_WHD_DEBUG_DS( ("%s: M_DS1_CTRL_SDIO = [%x]\n", __func__, (int )val) ); -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11_MACCONTROL_REG, (uint8_t)2, (uint8_t *)&val1) ); -- WPRINT_WHD_DEBUG_DS( ("%s: before setting wake = [%x]\n", __func__, (int )val1) ); -- -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, D11_MACCONTROL_REG, 2, -- val1 | D11_MACCONTROL_REG_WAKE) ); -- WPRINT_WHD_DEBUG_DS( ("%s: After setting wake= [%x]\n", __func__, (int )val1) ); -- -- while (!(val & C_DS1_CTRL_PROC_DONE) ) -- { -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(M_DS1_CTRL_SDIO), (uint8_t)2, -- (uint8_t *)&val) ); -- count++; -- if (count == 1000) -- { -- WPRINT_WHD_ERROR( ("%s: sdio timed out! Aborting\n", __func__) ); -- return WHD_TIMEOUT; -- } -- } -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(M_DS1_CTRL_SDIO), (uint8_t)2, -- (uint8_t *)&val) ); -- WPRINT_WHD_DEBUG_DS( ("%s: M_DS1_CTRL_SDIO after poll = [%x]\n", __func__, (int )val) ); -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11_MACCONTROL_REG, (uint8_t)2, (uint8_t *)&val1) ); -- WPRINT_WHD_DEBUG_DS( ("%s: D11_MACCONTROL_REG before Clear = [%x]\n", __func__, (int )val1) ); -- -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, D11_MACCONTROL_REG, 2, -- val1 & D11_MACCONTROL_CLEAR_WAKE) ); -- WPRINT_WHD_DEBUG_DS( ("%s: D11_MACCONTROL_REG after Clear = [%x]\n", __func__, (int )val1) ); -- -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, PMU_MINRESMASK, 1, DEFAULT_43012_MIN_RES_MASK) ); -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, PMU_MINRESMASK, (uint8_t)1, (uint8_t *)&val1) ); -- -- WPRINT_WHD_DEBUG_DS( ("%s: PMU_MINRESMASK = [%x]\n", __func__, (int )val1) ); -- } -- else -- { -- while (WHD_SUCCESS != whd_ensure_wlan_bus_is_up(whd_driver) ) -- { -- WPRINT_WHD_DEBUG_DS( ("Retrying bus is up\n") ); -- } -- -- WPRINT_WHD_DEBUG_DS( ("write backplane\n") ); -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(sdio_control_addr), 2, (uint8_t *)&val) ); -- -- while (WHD_SUCCESS != -- whd_bus_write_backplane_value(whd_driver, D11SHM_ADDR(sdio_control_addr), 2, -- val | C_DS1_CTRL_SDIO_DS1_EXIT | C_DS1_CTRL_REQ_VALID) ) -- { -- WPRINT_WHD_DEBUG_DS( ("Retrying backplane write; addr=%x\n", -- (unsigned int )D11SHM_ADDR(sdio_control_addr) ) ); -- cy_rtos_delay_milliseconds(100); -- } -- -- WPRINT_WHD_DEBUG_DS( ("wake host\n") ); -- whd_wlan_wake_from_host(whd_driver); -- -- WPRINT_WHD_DEBUG_DS( ("poll for timeout\n") ); -- /* Poll for PROC_DONE to be set by ucode; timeout after a good amount of time */ -- for (timeout = WHD_WLAN_WAKE_TIMEOUT * 10, val = 0; timeout >= 0; -- timeout -= WHD_SHARED_MEMORY_POLLING_DELAY) -- { -- whd_result_t read_result = -- whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(sdio_control_addr), 2, (uint8_t *)&val); -- -- if ( (WHD_SUCCESS != read_result) || !( (val) & C_DS1_CTRL_PROC_DONE ) ) -- { -- cy_rtos_delay_milliseconds (WHD_SHARED_MEMORY_POLLING_DELAY); -- } -- else -- { -- /* success! */ -- WPRINT_WHD_DEBUG_DS( ("Ucode has posted DONE\n") ); -- break; -- } -- } -- -- WPRINT_WHD_DEBUG_DS( ("%s: %d: 0x%08x\n", __func__, __LINE__, (unsigned int)val) ); -- -- if ( (timeout < 0) && !(val & C_DS1_CTRL_PROC_DONE) ) -- { -- WPRINT_WHD_ERROR( ("%s: Failed to enter DS1 Exit state!\n", __func__) ); -- return WHD_TIMEOUT; -- } -- } -- WPRINT_WHD_DEBUG_DS( ("successfully completed DS wake sequence\n") ); -- return WHD_SUCCESS; -- } -- else -- { -- UNUSED_PARAMETER(wake_from_firmware); -- UNUSED_PARAMETER(wake_event_indication_addr); -- UNUSED_PARAMETER(wake_indication_addr); -- UNUSED_PARAMETER(sdio_control_addr); -- -- WPRINT_WHD_DEBUG( ("%s: enter\n", __FUNCTION__) ); -- -- CHECK_RETURN(whd_bus_write_register_value(whd_driver, BUS_FUNCTION, SDIOD_CCCR_IOEN, (uint8_t)1, -- SDIO_FUNC_ENABLE_1) ); -- WPRINT_WHD_DEBUG( ("%s: CCCR written\n", __FUNCTION__) ); -- -- /* Read DS1 CTRL STATUS SHM to Check whether HOST MAIL BOX interrupt is triggered due to TX/RX -- * For RX Cases , Value will be DS1_SLEEP -- * For TX Cases, Value will be MAC ON or RADIO_PHY_ON -- */ -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(M_DS1_CTRL_STATUS), (uint8_t)2, -- (uint8_t *)&val) ); -- if (val == DS1_SLEEP) -- { -- /* HUDI communication to inform D11 to Process and Exit DS1 not required for D11 Wake cases -- * Simply update PMU Resource Mask and Re-download firmware for this case -- */ -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, PMU_MINRESMASK, 1, DEFAULT_43012_MIN_RES_MASK) ); -- return WHD_SUCCESS; -- } -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, D11SHM_ADDR(M_DS1_CTRL_SDIO), 2, -- C_DS1_CTRL_SDIO_DS1_EXIT | C_DS1_CTRL_REQ_VALID) ); -- WPRINT_WHD_DEBUG( ("%s: SDIO ctl written\n", __FUNCTION__) ); -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR( -- M_DS1_CTRL_SDIO), (uint8_t)2, (uint8_t *)&val) ); -- WPRINT_WHD_DEBUG( ("%s: M_DS1_CTRL_SDIO = [%x]\n", __FUNCTION__, (int)val) ); -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11_MACCONTROL_REG, (uint8_t)2, (uint8_t *)&val1) ); -- WPRINT_WHD_DEBUG( ("%s: before setting wake = [%x]\n", __FUNCTION__, (int)val1) ); -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, D11_MACCONTROL_REG, 2, -- val1 | D11_MACCONTROL_REG_WAKE) ); -- WPRINT_WHD_DEBUG( ("%s: After setting wake= [%x]\n", __FUNCTION__, (int)val1) ); -- -- while (!(val & C_DS1_CTRL_PROC_DONE) ) -- { -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR(M_DS1_CTRL_SDIO), (uint8_t)2, -- (uint8_t *)&val) ); -- count++; -- if (count == 1000) -- { -- WPRINT_WHD_ERROR( ("%s: sdio timed out! Aborting\n", __FUNCTION__) ); -- return WHD_TIMEOUT; -- } -- } -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11SHM_ADDR( -- M_DS1_CTRL_SDIO), (uint8_t)2, (uint8_t *)&val) ); -- WPRINT_WHD_DEBUG( ("%s: M_DS1_CTRL_SDIO after poll = [%x]\n", __FUNCTION__, (int)val) ); -- -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, D11_MACCONTROL_REG, (uint8_t)2, (uint8_t *)&val1) ); -- WPRINT_WHD_DEBUG( ("%s: D11_MACCONTROL_REG before Clear = [%x]\n", __FUNCTION__, (int)val1) ); -- -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, D11_MACCONTROL_REG, 2, -- val1 & D11_MACCONTROL_CLEAR_WAKE) ); -- WPRINT_WHD_DEBUG( ("%s: D11_MACCONTROL_REG after Clear = [%x]\n", __FUNCTION__, (int)val1) ); -- -- CHECK_RETURN(whd_bus_write_backplane_value(whd_driver, PMU_MINRESMASK, 1, DEFAULT_43012_MIN_RES_MASK) ); -- CHECK_RETURN(whd_bus_read_backplane_value(whd_driver, PMU_MINRESMASK, (uint8_t)1, (uint8_t *)&val1) ); -- WPRINT_WHD_DEBUG( ("%s: PMU_MINRESMASK = [%x]\n", __FUNCTION__, (int)val1) ); -- return WHD_SUCCESS; -- } --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_chip_constants.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_chip_constants.c -deleted file mode 100644 -index a01a29fb0a..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_chip_constants.c -+++ /dev/null -@@ -1,362 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include "whd_chip_constants.h" --#include "whd_wlioctl.h" --#include "whd_int.h" --#include "whd_types_int.h" -- -- --/****************************************************** --* Function Definitions --******************************************************/ -- --uint32_t whd_chip_set_chip_id(whd_driver_t whd_driver, uint16_t id) --{ -- whd_driver->chip_info.chip_id = id; -- -- return 0; --} -- --uint16_t whd_chip_get_chip_id(whd_driver_t whd_driver) --{ -- return whd_driver->chip_info.chip_id; --} -- --uint32_t get_whd_var(whd_driver_t whd_driver, chip_var_t var) --{ -- uint32_t val = 0; -- -- uint16_t wlan_chip_id = whd_chip_get_chip_id(whd_driver); -- switch (var) -- { -- case BUS_CREDIT_DIFF: -- CHECK_RETURN(get_chip_max_bus_data_credit_diff(wlan_chip_id, &val) ); -- break; -- case CHIP_RAM_SIZE: -- CHECK_RETURN(get_chip_ram_size(wlan_chip_id, &val) ); -- break; -- case ATCM_RAM_BASE_ADDRESS: -- CHECK_RETURN(get_atcm_ram_base_address(wlan_chip_id, &val) ); -- break; -- case SOCRAM_SRMEM_SIZE: -- CHECK_RETURN(get_socsram_srmem_size(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_BAND_MASK: -- CHECK_RETURN(get_wl_chanspec_band_mask(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_BAND_2G: -- CHECK_RETURN(get_wl_chanspec_band_2G(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_BAND_5G: -- CHECK_RETURN(get_wl_chanspec_band_5G(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_BAND_SHIFT: -- CHECK_RETURN(get_wl_chanspec_band_shift(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_BW_10: -- CHECK_RETURN(get_wl_chanspec_bw_10(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_BW_20: -- CHECK_RETURN(get_wl_chanspec_bw_20(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_BW_40: -- CHECK_RETURN(get_wl_chanspec_bw_40(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_BW_MASK: -- CHECK_RETURN(get_wl_chanspec_bw_mask(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_BW_SHIFT: -- CHECK_RETURN(get_wl_chanspec_bw_shift(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_CTL_SB_LOWER: -- CHECK_RETURN(get_wl_chanspec_ctl_sb_lower(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_CTL_SB_UPPER: -- CHECK_RETURN(get_wl_chanspec_ctl_sb_upper(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_CTL_SB_NONE: -- CHECK_RETURN(get_wl_chanspec_ctl_sb_none(wlan_chip_id, &val) ); -- break; -- case CHANSPEC_CTL_SB_MASK: -- CHECK_RETURN(get_wl_chanspec_ctl_sb_mask(wlan_chip_id, &val) ); -- break; -- default: -- break; -- } -- -- return val; --} -- --whd_result_t get_chip_max_bus_data_credit_diff(uint16_t wlan_chip_id, uint32_t *credit_diff) --{ -- *credit_diff = 0; -- if (wlan_chip_id == 43362) -- { -- *credit_diff = 7; -- } -- else if (wlan_chip_id == 43455) -- { -- *credit_diff = 50; -- } -- else -- { -- *credit_diff = 20; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_chip_ram_size(uint16_t wlan_chip_id, uint32_t *size) --{ -- *size = 0; -- if ( (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) || (wlan_chip_id == 43430) ) -- { -- *size = (512 * 1024); -- } -- else if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4390) ) -- { -- *size = 0x3C000; -- } -- else if (wlan_chip_id == 43909) -- { -- *size = 0x90000; -- } -- else if (wlan_chip_id == 43012) -- { -- *size = 0xA0000; -- } -- else -- { -- *size = 0x80000; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_atcm_ram_base_address(uint16_t wlan_chip_id, uint32_t *size) --{ -- *size = 0; -- if (wlan_chip_id == 43455) -- { -- *size = 0x198000; -- } -- else -- { -- *size = 0; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_socsram_srmem_size(uint16_t wlan_chip_id, uint32_t *mem_size) --{ -- *mem_size = 0; -- if ( (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *mem_size = (32 * 1024); -- } -- else if (wlan_chip_id == 43430) -- { -- *mem_size = (64 * 1024); -- } -- else -- { -- *mem_size = 0; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_band_mask(uint16_t wlan_chip_id, uint32_t *band_mask) --{ -- *band_mask = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *band_mask = 0xf000; -- } -- else -- { -- *band_mask = 0xc000; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_band_2G(uint16_t wlan_chip_id, uint32_t *band_2g) --{ -- *band_2g = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *band_2g = 0x2000; -- } -- else -- { -- *band_2g = 0x0000; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_band_5G(uint16_t wlan_chip_id, uint32_t *band_5g) --{ -- *band_5g = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *band_5g = 0x1000; -- } -- else -- { -- *band_5g = 0xc000; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_band_shift(uint16_t wlan_chip_id, uint32_t *band_shift) --{ -- *band_shift = 0; -- if ( (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *band_shift = 12; -- } -- else -- { -- *band_shift = 14; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_bw_10(uint16_t wlan_chip_id, uint32_t *bw_10) --{ -- *bw_10 = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *bw_10 = 0x0400; -- } -- else -- { -- *bw_10 = 0x0800; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_bw_20(uint16_t wlan_chip_id, uint32_t *bw_20) --{ -- *bw_20 = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *bw_20 = 0x0800; -- } -- else -- { -- *bw_20 = 0x1000; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_bw_40(uint16_t wlan_chip_id, uint32_t *bw_40) --{ -- *bw_40 = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *bw_40 = 0x0C00; -- } -- else -- { -- *bw_40 = 0x1800; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_bw_mask(uint16_t wlan_chip_id, uint32_t *bw_mask) --{ -- *bw_mask = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *bw_mask = 0x0C00; -- } -- else -- { -- *bw_mask = 0x3800; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_bw_shift(uint16_t wlan_chip_id, uint32_t *bw_shift) --{ -- *bw_shift = 0; -- if ( (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *bw_shift = 10; -- } -- else -- { -- *bw_shift = 11; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_ctl_sb_lower(uint16_t wlan_chip_id, uint32_t *sb_lower) --{ -- *sb_lower = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *sb_lower = 0x0100; -- } -- else -- { -- *sb_lower = WL_CHANSPEC_CTL_SB_LLL; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_ctl_sb_upper(uint16_t wlan_chip_id, uint32_t *sb_upper) --{ -- *sb_upper = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *sb_upper = 0x0200; -- } -- else -- { -- *sb_upper = WL_CHANSPEC_CTL_SB_LLU; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_ctl_sb_none(uint16_t wlan_chip_id, uint32_t *sb_none) --{ -- *sb_none = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *sb_none = 0x0300; -- } -- else -- { -- *sb_none = WL_CHANSPEC_CTL_SB_LLL; -- } -- return WHD_SUCCESS; --} -- --whd_result_t get_wl_chanspec_ctl_sb_mask(uint16_t wlan_chip_id, uint32_t *sb_mask) --{ -- *sb_mask = 0; -- if ( (wlan_chip_id == 43362) || (wlan_chip_id == 4334) || (wlan_chip_id == 43340) || (wlan_chip_id == 43342) ) -- { -- *sb_mask = 0x0300; -- } -- else -- { -- *sb_mask = 0x0700; -- } -- return WHD_SUCCESS; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_clm.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_clm.c -deleted file mode 100644 -index dfeec0ab02..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_clm.c -+++ /dev/null -@@ -1,172 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides generic clm blob file download functionality -- */ -- --#include --#include "whd_clm.h" --#include "whd_wlioctl.h" --#include "whd_cdc_bdc.h" --#include "whd_debug.h" --#include "whd_int.h" --#include "whd_buffer_api.h" --#include "whd_resource_if.h" --#include "whd_resource_api.h" --#include "whd_types_int.h" -- --/****************************************************** --* @cond Constants --******************************************************/ -- --/* -- Generic interface for downloading required data onto the dongle -- */ --static int whd_download_wifi_clm_image(whd_interface_t ifp, const char *iovar, uint16_t flag, uint16_t dload_type, -- unsigned char *dload_buf, uint32_t len) --{ -- wl_dload_data_t *dload_ptr = (wl_dload_data_t *)dload_buf; -- unsigned int dload_data_offset; -- whd_buffer_t buffer; -- uint8_t *iov_data; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- dload_data_offset = offsetof(wl_dload_data_t, data); -- dload_ptr->flag = htod16( (DLOAD_HANDLER_VER << DLOAD_FLAG_VER_SHIFT) | flag ); -- dload_ptr->dload_type = htod16(dload_type); -- dload_ptr->len = htod32(len - dload_data_offset); -- -- dload_ptr->crc = 0; -- -- whd_assert("dload buffer too large", len < 0xffffffff - 8); -- len = len + 8 - (len % 8); -- -- iov_data = (uint8_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)len, iovar); -- CHECK_IOCTL_BUFFER(iov_data); -- memcpy(iov_data, (uint8_t *)dload_ptr, len); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); -- return WHD_SUCCESS; --} -- --whd_result_t whd_process_clm_data(whd_interface_t ifp) --{ -- whd_result_t ret = WHD_SUCCESS; -- uint32_t clm_blob_size; -- unsigned int size2alloc, data_offset; -- unsigned char *chunk_buf; -- uint16_t dl_flag = DL_BEGIN; -- unsigned int chunk_len; -- uint32_t size_read; -- uint8_t *image; -- uint32_t blocks_count = 0; -- uint16_t datalen = 0; -- uint32_t i, j, num_buff; -- unsigned int transfer_progress; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- /* clm file size is the initial datalen value which is decremented */ -- ret = whd_resource_size(whd_driver, WHD_RESOURCE_WLAN_CLM, &clm_blob_size); -- -- if (ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Fatal error: download_resource doesn't exist\n") ); -- return ret; -- } -- -- ret = whd_get_resource_no_of_blocks(whd_driver, WHD_RESOURCE_WLAN_CLM, &blocks_count); -- if (ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Fatal error: download_resource blocks count not know\n") ); -- return ret; -- } -- -- data_offset = offsetof(wl_dload_data_t, data); -- size2alloc = data_offset + BLOCK_SIZE; -- -- -- if ( (chunk_buf = (unsigned char *)malloc(size2alloc) ) != NULL ) -- { -- memset(chunk_buf, 0, size2alloc); -- transfer_progress = 0; -- for (i = 0; i < blocks_count; i++) -- { -- whd_get_resource_block(whd_driver, WHD_RESOURCE_WLAN_CLM, i, (const uint8_t **)&image, &size_read); -- -- num_buff = (size_read + BLOCK_SIZE - 1) / BLOCK_SIZE; -- if (blocks_count != 1) -- transfer_progress = 0; -- -- for (j = 0; j < num_buff; j++) -- { -- if (size_read >= BLOCK_SIZE) -- chunk_len = BLOCK_SIZE; -- else -- chunk_len = (int)size_read; -- memcpy(chunk_buf + data_offset, &image[transfer_progress], chunk_len); -- -- if (datalen + chunk_len == clm_blob_size) -- { -- dl_flag |= DL_END; -- } -- -- ret = whd_download_wifi_clm_image(ifp, IOVAR_STR_CLMLOAD, dl_flag, DL_TYPE_CLM, chunk_buf, -- data_offset + chunk_len); -- dl_flag &= (uint16_t) ~DL_BEGIN; -- transfer_progress += chunk_len; -- size_read = size_read - chunk_len; -- datalen += chunk_len; -- } -- } -- -- free(chunk_buf); -- if (ret != WHD_SUCCESS) -- { -- whd_result_t ret_clmload_status; -- whd_buffer_t buffer; -- whd_buffer_t response; -- void *data; -- -- WPRINT_WHD_DEBUG( ("clmload (%" PRIu32 " byte file) failed with return %" PRIu32 "; ", clm_blob_size, -- ret) ); -- data = (int *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, 4, IOVAR_STR_CLMLOAD_STATUS); -- CHECK_IOCTL_BUFFER(data); -- ret_clmload_status = whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response); -- if (ret_clmload_status != WHD_SUCCESS) -- { -- WPRINT_WHD_DEBUG( ("clmload_status failed with return %lu\n", ret_clmload_status) ); -- } -- else -- { -- uint8_t *clmload_status = (uint8_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- if (clmload_status != NULL) -- { -- WPRINT_WHD_DEBUG( ("clmload_status is %d\n", *clmload_status) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- } -- } -- } -- } -- else -- { -- WPRINT_WHD_ERROR( ("Memory allocation failure, %s failed at %d \n", __func__, __LINE__) ); -- ret = WHD_MALLOC_FAILURE; -- } -- -- return ret; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_debug.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_debug.c -deleted file mode 100644 -index 577ea86d87..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_debug.c -+++ /dev/null -@@ -1,62 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include "whd_debug.h" --#include "whd_int.h" --#include "bus_protocols/whd_bus_protocol_interface.h" -- --/****************************************************** --* Constants --******************************************************/ -- --/****************************************************** --* Structures --******************************************************/ -- --/****************************************************** --* Variables --******************************************************/ -- --/****************************************************** --* Function definitions --******************************************************/ --void whd_init_stats(whd_driver_t whd_driver) --{ -- memset(&whd_driver->whd_stats, 0, sizeof(whd_driver->whd_stats) ); --} -- --uint32_t whd_print_stats(whd_driver_t whd_driver, whd_bool_t reset_after_print) --{ -- CHECK_DRIVER_NULL(whd_driver); -- -- WPRINT_MACRO( ("WHD Stats.. \n" -- "tx_total:%" PRIu32 ", rx_total:%" PRIu32 ", tx_no_mem:%" PRIu32 ", rx_no_mem:%" PRIu32 "\n" -- "tx_fail:%" PRIu32 ", no_credit:%" PRIu32 ", flow_control:%" PRIu32 "\n", -- whd_driver->whd_stats.tx_total, whd_driver->whd_stats.rx_total, -- whd_driver->whd_stats.tx_no_mem, whd_driver->whd_stats.rx_no_mem, -- whd_driver->whd_stats.tx_fail, whd_driver->whd_stats.no_credit, -- whd_driver->whd_stats.flow_control) ); -- -- if (reset_after_print == WHD_TRUE) -- { -- memset(&whd_driver->whd_stats, 0, sizeof(whd_driver->whd_stats) ); -- } -- -- CHECK_RETURN(whd_bus_print_stats(whd_driver, reset_after_print) ); -- return WHD_SUCCESS; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_events.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_events.c -deleted file mode 100644 -index 0d7b764400..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_events.c -+++ /dev/null -@@ -1,475 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include "whd_int.h" --#include "whd_cdc_bdc.h" --#include "whd_events_int.h" --#include "cyabs_rtos.h" --#include "whd_network_types.h" --#include "whd_types_int.h" --#include "whd_wlioctl.h" --#include "whd_thread_internal.h" --#include "whd_buffer_api.h" -- --/****************************************************** --* Constants --******************************************************/ --/****************************************************** --* Macros --******************************************************/ --/* bit map related macros */ --#define NBBY 8 /* 8 bits per byte */ --#define setbit(a, i) ( ( (uint8_t *)a )[(int)(i) / (int)(NBBY)] |= (uint8_t)(1 << ( (i) % NBBY ) ) ) --#define clrbit(a, i) ( ( (uint8_t *)a )[(int)(i) / (int)(NBBY)] &= (uint8_t) ~(1 << ( (i) % NBBY ) ) ) --#define isset(a, i) ( ( (const uint8_t *)a )[(int)(i) / (int)(NBBY)]& (1 << ( (i) % NBBY ) ) ) --#define isclr(a, i) ( ( ( (const uint8_t *)a )[(int)(i) / (int)(NBBY)]& (1 << ( (i) % NBBY ) ) ) == 0 ) -- --/****************************************************** --* Local Structures --******************************************************/ -- --/****************************************************** --* Static Variables --******************************************************/ -- --/****************************************************** --* Static Function Prototypes --******************************************************/ --/* helper function for event messages ext API */ --static uint8_t *whd_management_alloc_event_msgs_buffer(whd_interface_t ifp, whd_buffer_t *buffer); --static uint8_t whd_find_number_of_events(const whd_event_num_t *event_nums); -- --/****************************************************** --* Static Functions --******************************************************/ -- --static uint8_t whd_find_number_of_events(const whd_event_num_t *event_nums) --{ -- uint8_t count = 0; -- -- while (*event_nums != WLC_E_NONE) -- { -- count++; -- event_nums++; -- -- if (count >= WHD_MAX_EVENT_SUBSCRIPTION) -- return 0; -- } -- return count + 1; --} -- --/** -- * Registers locally a handler to receive event callbacks. -- * Does not notify Wi-Fi about event subscription change. -- * Can be used to refresh local callbacks (e.g. after deep-sleep) -- * if Wi-Fi is already notified about them. -- * -- * This function registers a callback handler to be notified when -- * a particular event is received. -- * -- * @note : Currently there is a limit to the number of simultaneously -- * registered events -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param event_nums An array of event types that is to trigger the handler. -- * The array must be terminated with a WLC_E_NONE event -- * See @ref whd_event_num_t for available events -- * @param handler_func A function pointer to the new handler callback, -- * or NULL if callbacks are to be disabled for the given event type -- * @param handler_user_data A pointer value which will be passed to the event handler function -- * at the time an event is triggered (NULL is allowed) -- * @param[out] *event_index entry where the event handler is registered in the list -- * -- * @return WHD result code -- */ --whd_result_t whd_management_set_event_handler_locally(whd_interface_t ifp, const whd_event_num_t *event_nums, -- whd_event_handler_t handler_func, -- void *handler_user_data, uint16_t *event_index) --{ -- uint16_t entry = (uint16_t)0xFF; -- uint16_t i; -- whd_driver_t whd_driver = ifp->whd_driver; -- whd_cdc_bdc_info_t *cdc_bdc_info = &whd_driver->cdc_bdc_info; -- uint8_t num_of_events; -- num_of_events = whd_find_number_of_events(event_nums); -- -- if (num_of_events <= 1) -- { -- WPRINT_WHD_ERROR( ("Exceeded the maximum event subscription/no event subscribed\n") ); -- return WHD_UNFINISHED; -- } -- -- /* Find an existing matching entry OR the next empty entry */ -- for (i = 0; i < (uint16_t)WHD_EVENT_HANDLER_LIST_SIZE; i++) -- { -- /* Find a matching event list OR the first empty event entry */ -- if (!(memcmp(cdc_bdc_info->whd_event_list[i].events, event_nums, -- num_of_events * (sizeof(whd_event_num_t) ) ) ) ) -- { -- /* Check if all the data already matches */ -- if ( (cdc_bdc_info->whd_event_list[i].handler == handler_func) && -- (cdc_bdc_info->whd_event_list[i].handler_user_data == handler_user_data) && -- (cdc_bdc_info->whd_event_list[i].ifidx == ifp->ifidx) ) -- { -- /* send back the entry where the handler is added */ -- *event_index = i; -- return WHD_SUCCESS; -- } -- } -- else if ( (entry == (uint16_t)0xFF) && (cdc_bdc_info->whd_event_list[i].event_set == WHD_FALSE) ) -- { -- entry = i; -- } -- } -- -- /* Check if handler function was provided */ -- if (handler_func != NULL) -- { -- /* Check if an empty entry was not found */ -- if (entry == (uint16_t)0xFF) -- { -- WPRINT_WHD_DEBUG( ("Out of space in event handlers table - try increasing WHD_EVENT_HANDLER_LIST_SIZE\n") ); -- return WHD_OUT_OF_EVENT_HANDLER_SPACE; -- } -- -- /* Add the new handler in at the free space */ -- memcpy (cdc_bdc_info->whd_event_list[entry].events, event_nums, num_of_events * (sizeof(whd_event_num_t) ) ); -- cdc_bdc_info->whd_event_list[entry].handler = handler_func; -- cdc_bdc_info->whd_event_list[entry].handler_user_data = handler_user_data; -- cdc_bdc_info->whd_event_list[entry].ifidx = ifp->ifidx; -- cdc_bdc_info->whd_event_list[entry].event_set = WHD_TRUE; -- -- /* send back the entry where the handler is added */ -- *event_index = entry; -- } -- else -- { -- WPRINT_WHD_ERROR( ("Event handler callback function is NULL/not provided to register\n") ); -- return WHD_BADARG; -- } -- -- return WHD_SUCCESS; --} -- --/* allocates memory for the needed iovar and returns a pointer to the event mask */ --static uint8_t *whd_management_alloc_event_msgs_buffer(whd_interface_t ifp, whd_buffer_t *buffer) --{ -- uint16_t i; -- uint16_t j; -- whd_bool_t use_extended_evt = WHD_FALSE; -- uint32_t max_event = 0; -- eventmsgs_ext_t *eventmsgs_ext_data = NULL; -- uint32_t *data = NULL; -- whd_driver_t whd_driver = ifp->whd_driver; -- whd_cdc_bdc_info_t *cdc_bdc_info = &whd_driver->cdc_bdc_info; -- -- /* Check to see if event that's set requires more than 128 bit */ -- for (i = 0; i < (uint16_t)WHD_EVENT_HANDLER_LIST_SIZE; i++) -- { -- if (cdc_bdc_info->whd_event_list[i].event_set) -- { -- for (j = 0; cdc_bdc_info->whd_event_list[i].events[j] != WLC_E_NONE; j++) -- { -- uint32_t event_value = cdc_bdc_info->whd_event_list[i].events[j]; -- if (event_value > 127) -- { -- use_extended_evt = WHD_TRUE; -- if (event_value > max_event) -- { -- max_event = event_value; -- } -- /* keep going to get highest value */ -- } -- } -- } -- } -- -- if (WHD_FALSE == use_extended_evt) -- { -- /* use old iovar for backwards compat */ -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, buffer, (uint16_t)WL_EVENTING_MASK_LEN + 4, -- "bsscfg:" IOVAR_STR_EVENT_MSGS); -- -- if (NULL == data) -- { -- return NULL; -- } -- -- data[0] = ifp->bsscfgidx; -- -- return (uint8_t *)&data[1]; -- } -- else -- { -- uint8_t mask_len = (uint8_t)( (max_event + 8) / 8 ); -- data = -- (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, buffer, -- (uint16_t)(sizeof(eventmsgs_ext_t) + mask_len + 4), -- "bsscfg:" IOVAR_STR_EVENT_MSGS_EXT); -- -- if (NULL == data) -- { -- return NULL; -- } -- -- data[0] = ifp->bsscfgidx; -- -- eventmsgs_ext_data = (eventmsgs_ext_t *)&data[1]; -- -- memset(eventmsgs_ext_data, 0, sizeof(*eventmsgs_ext_data) ); -- eventmsgs_ext_data->ver = EVENTMSGS_VER; -- eventmsgs_ext_data->command = EVENTMSGS_SET_MASK; -- eventmsgs_ext_data->len = mask_len; -- return eventmsgs_ext_data->mask; -- } --} -- --/** -- * Registers a handler to receive event callbacks. -- * Subscribe locally and notify Wi-Fi about subscription. -- * -- * This function registers a callback handler to be notified when -- * a particular event is received. -- * -- * @note : Currently there is a limit to the number of simultaneously -- * registered events -- * -- * @param ifp Pointer to handle instance of whd interface -- * @param event_nums An array of event types that is to trigger the handler. -- * The array must be terminated with a WLC_E_NONE event -- * See @ref whd_event_num_t for available events -- * @param handler_func A function pointer to the new handler callback -- * @param handler_user_data A pointer value which will be passed to the event handler function -- * at the time an event is triggered (NULL is allowed) -- * @param[out] *event_index entry where the event handler is registered in the list -- * -- * @return WHD result code -- */ --whd_result_t whd_management_set_event_handler(whd_interface_t ifp, const whd_event_num_t *event_nums, -- whd_event_handler_t handler_func, -- void *handler_user_data, uint16_t *event_index) --{ -- whd_buffer_t buffer; -- uint8_t *event_mask; -- uint16_t i; -- uint16_t j; -- whd_result_t res; -- whd_driver_t whd_driver; -- whd_cdc_bdc_info_t *cdc_bdc_info; -- whd_interface_t prim_ifp; -- -- if (ifp == NULL) -- { -- return WHD_UNKNOWN_INTERFACE; -- } -- -- if (!event_nums || !event_index) -- { -- WPRINT_WHD_ERROR( ("Event list to be registered is NULL/Event index is NULL") ); -- return WHD_BADARG; -- } -- -- whd_driver = ifp->whd_driver; -- cdc_bdc_info = &whd_driver->cdc_bdc_info; -- prim_ifp = whd_get_primary_interface(whd_driver); -- -- if (prim_ifp == NULL) -- { -- return WHD_UNKNOWN_INTERFACE; -- } -- -- /* Acquire mutex preventing multiple threads accessing the handler at the same time */ -- res = cy_rtos_get_semaphore(&cdc_bdc_info->event_list_mutex, CY_RTOS_NEVER_TIMEOUT, WHD_FALSE); -- if (res != WHD_SUCCESS) -- { -- return res; -- } -- -- /* Set event handler locally */ -- res = whd_management_set_event_handler_locally(ifp, event_nums, handler_func, handler_user_data, event_index); -- if (res != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error in setting event handler locally, %s failed at %d \n", __func__, __LINE__) ); -- goto set_event_handler_exit; -- } -- -- /* Send the new event mask value to the wifi chip */ -- event_mask = whd_management_alloc_event_msgs_buffer(ifp, &buffer); -- -- if (NULL == event_mask) -- { -- res = WHD_BUFFER_UNAVAILABLE_PERMANENT; -- WPRINT_WHD_ERROR( ("Buffer unavailable permanently, %s failed at %d \n", __func__, __LINE__) ); -- goto set_event_handler_exit; -- } -- -- /* Keep the wlan awake while we set the event_msgs */ -- WHD_WLAN_KEEP_AWAKE(whd_driver); -- -- /* Set the event bits for each event from every handler */ -- memset(event_mask, 0, (size_t)WL_EVENTING_MASK_LEN); -- for (i = 0; i < (uint16_t)WHD_EVENT_HANDLER_LIST_SIZE; i++) -- { -- if (cdc_bdc_info->whd_event_list[i].event_set) -- { -- for (j = 0; cdc_bdc_info->whd_event_list[i].events[j] != WLC_E_NONE; j++) -- { -- setbit(event_mask, cdc_bdc_info->whd_event_list[i].events[j]); -- } -- } -- } -- -- /* set the event_list_mutex from calling thread before sending iovar -- * as the RX thread also waits on this Mutex when an ASYNC Event received -- * causing deadlock -- */ -- CHECK_RETURN(cy_rtos_set_semaphore(&cdc_bdc_info->event_list_mutex, WHD_FALSE) ); -- -- CHECK_RETURN(whd_cdc_send_iovar(prim_ifp, CDC_SET, buffer, 0) ); -- -- /* The wlan chip can sleep from now on */ -- WHD_WLAN_LET_SLEEP(whd_driver); -- return WHD_SUCCESS; -- --set_event_handler_exit: -- CHECK_RETURN(cy_rtos_set_semaphore(&cdc_bdc_info->event_list_mutex, WHD_FALSE) ); -- return res; --} -- --whd_result_t whd_wifi_set_event_handler(whd_interface_t ifp, const uint32_t *event_type, -- whd_event_handler_t handler_func, -- void *handler_user_data, uint16_t *event_index) --{ -- whd_buffer_t buffer; -- uint8_t *event_mask; -- uint16_t i; -- uint16_t j; -- whd_result_t res; -- whd_driver_t whd_driver; -- whd_cdc_bdc_info_t *cdc_bdc_info; -- whd_interface_t prim_ifp; -- -- if (ifp == NULL) -- { -- return WHD_UNKNOWN_INTERFACE; -- } -- -- if (!event_type || !event_index) -- { -- WPRINT_WHD_ERROR( ("Event list to be registered is NULL/Event index is NULL") ); -- return WHD_BADARG; -- } -- -- whd_driver = ifp->whd_driver; -- cdc_bdc_info = &whd_driver->cdc_bdc_info; -- prim_ifp = whd_get_primary_interface(whd_driver); -- -- if (prim_ifp == NULL) -- { -- return WHD_UNKNOWN_INTERFACE; -- } -- -- /* Acquire mutex preventing multiple threads accessing the handler at the same time */ -- res = cy_rtos_get_semaphore(&cdc_bdc_info->event_list_mutex, CY_RTOS_NEVER_TIMEOUT, WHD_FALSE); -- if (res != WHD_SUCCESS) -- { -- return res; -- } -- -- /* Set event handler locally */ -- res = whd_management_set_event_handler_locally(ifp, (whd_event_num_t *)event_type, handler_func, handler_user_data, -- event_index); -- if (res != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error in setting event handler locally, %s failed at %d \n", __func__, __LINE__) ); -- goto set_event_handler_exit; -- } -- -- /* Send the new event mask value to the wifi chip */ -- event_mask = whd_management_alloc_event_msgs_buffer(ifp, &buffer); -- -- if (NULL == event_mask) -- { -- res = WHD_BUFFER_UNAVAILABLE_PERMANENT; -- WPRINT_WHD_ERROR( ("Buffer unavailable permanently, %s failed at %d \n", __func__, __LINE__) ); -- goto set_event_handler_exit; -- } -- -- /* Keep the wlan awake while we set the event_msgs */ -- WHD_WLAN_KEEP_AWAKE(whd_driver); -- -- /* Set the event bits for each event from every handler */ -- memset(event_mask, 0, (size_t)WL_EVENTING_MASK_LEN); -- for (i = 0; i < (uint16_t)WHD_EVENT_HANDLER_LIST_SIZE; i++) -- { -- if (cdc_bdc_info->whd_event_list[i].event_set) -- { -- for (j = 0; cdc_bdc_info->whd_event_list[i].events[j] != WLC_E_NONE; j++) -- { -- setbit(event_mask, cdc_bdc_info->whd_event_list[i].events[j]); -- } -- } -- } -- -- /* set the event_list_mutex from calling thread before sending iovar -- * as the RX thread also waits on this Mutex when an ASYNC Event received -- * causing deadlock -- */ -- CHECK_RETURN(cy_rtos_set_semaphore(&cdc_bdc_info->event_list_mutex, WHD_FALSE) ); -- -- CHECK_RETURN(whd_cdc_send_iovar(prim_ifp, CDC_SET, buffer, 0) ); -- -- /* The wlan chip can sleep from now on */ -- WHD_WLAN_LET_SLEEP(whd_driver); -- return WHD_SUCCESS; -- --set_event_handler_exit: -- CHECK_RETURN(cy_rtos_set_semaphore(&cdc_bdc_info->event_list_mutex, WHD_FALSE) ); -- return res; --} -- --uint32_t whd_wifi_deregister_event_handler(whd_interface_t ifp, uint16_t event_index) --{ -- whd_driver_t whd_driver; -- whd_cdc_bdc_info_t *cdc_bdc_info; -- -- if (ifp == NULL) -- { -- return WHD_UNKNOWN_INTERFACE; -- } -- -- whd_driver = ifp->whd_driver; -- cdc_bdc_info = &whd_driver->cdc_bdc_info; -- -- if (event_index < WHD_EVENT_HANDLER_LIST_SIZE) -- { -- memset(cdc_bdc_info->whd_event_list[event_index].events, 0xFF, -- (sizeof(cdc_bdc_info->whd_event_list[event_index].events) ) ); -- cdc_bdc_info->whd_event_list[event_index].handler = NULL; -- cdc_bdc_info->whd_event_list[event_index].handler_user_data = NULL; -- cdc_bdc_info->whd_event_list[event_index].event_set = WHD_FALSE; -- return WHD_SUCCESS; -- } -- if (event_index == 0xFF) -- { -- WPRINT_WHD_INFO( ("Event handler not registered \n") ); -- return WHD_SUCCESS; -- } -- WPRINT_WHD_DEBUG( ("Invalid event index received to deregister the event handler \n") ); -- return WHD_BADARG; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_logging.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_logging.c -deleted file mode 100644 -index 2766f75111..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_logging.c -+++ /dev/null -@@ -1,112 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include --#include --#include --#include "whd_debug.h" -- --#ifdef WHD_LOGGING_BUFFER_ENABLE -- --#ifndef LOGGING_BUFFER_SIZE --#error LOGGING_BUFFER_SIZE is not defined --#endif /* LOGGING_BUFFER_SIZE */ --whd_logging_t logbuf; -- --int whd_buffer_printf(const char *format, ...) --{ -- int potential_num_written = 0; -- va_list args; -- va_start (args, format); -- -- potential_num_written = vsnprintf (&(logbuf.buffer[logbuf.buffer_write]), -- (size_t)(LOGGING_BUFFER_SIZE - (logbuf.buffer_write) ) + 1, format, args); -- -- if (potential_num_written > (int)(LOGGING_BUFFER_SIZE - (logbuf.buffer_write) ) ) -- { -- /* full print did not fit in buffer - wipe what was just written -- and reprint at start of buffer -- */ -- memset(&(logbuf.buffer[logbuf.buffer_write]), 0xf, (size_t)(LOGGING_BUFFER_SIZE - (logbuf.buffer_write) ) ); -- -- logbuf.buffer_write = 0; -- potential_num_written = vsnprintf (&(logbuf.buffer[logbuf.buffer_write]), -- (size_t)(LOGGING_BUFFER_SIZE - (logbuf.buffer_write) ) + 1, format, args); -- -- logbuf.buffer_write += (unsigned)potential_num_written; -- logbuf.buffer_write %= LOGGING_BUFFER_SIZE; -- -- if (logbuf.roll_over) -- logbuf.over_write = WHD_TRUE; -- -- logbuf.roll_over = WHD_TRUE; -- -- if ( (logbuf.roll_over) && (logbuf.buffer_read < (logbuf.buffer_write) ) ) -- { -- logbuf.buffer_read = logbuf.buffer_write; -- } -- if (logbuf.over_write && (logbuf.buffer_read != (logbuf.buffer_write) ) ) -- { -- logbuf.buffer_read = (logbuf.buffer_write); -- } -- } -- else -- { -- logbuf.buffer_write += (unsigned)potential_num_written; -- -- if ( (logbuf.buffer_write) >= LOGGING_BUFFER_SIZE ) -- { -- logbuf.buffer_write %= LOGGING_BUFFER_SIZE; -- -- if (logbuf.roll_over) -- logbuf.over_write = WHD_TRUE; -- -- logbuf.roll_over = WHD_TRUE; -- } -- -- if (logbuf.roll_over && (logbuf.buffer_read < logbuf.buffer_write) ) -- { -- logbuf.buffer_read = logbuf.buffer_write; -- } -- if (logbuf.over_write && (logbuf.buffer_read != logbuf.buffer_write) ) -- { -- logbuf.buffer_read = logbuf.buffer_write; -- } -- } -- -- va_end (args); -- return potential_num_written; --} -- --void whd_print_logbuffer(void) --{ -- while (logbuf.roll_over || logbuf.over_write || (logbuf.buffer_read != logbuf.buffer_write) ) -- { -- logbuf.roll_over = logbuf.over_write = WHD_FALSE; -- -- while (logbuf.buffer[logbuf.buffer_read] == 0xf) -- { -- logbuf.buffer_read = (logbuf.buffer_read + 1) % LOGGING_BUFFER_SIZE; -- } -- -- putchar(logbuf.buffer[logbuf.buffer_read]); -- logbuf.buffer_read = (logbuf.buffer_read + 1) % LOGGING_BUFFER_SIZE; -- } --} -- --#endif /* ifdef WHD_LOGGING_BUFFER_ENABLE */ -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_management.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_management.c -deleted file mode 100644 -index 7530b7b811..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_management.c -+++ /dev/null -@@ -1,478 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Implements initialisation and other management functions for WHD system -- * -- */ -- --#include --#include --#include "bus_protocols/whd_bus_common.h" --#include "bus_protocols/whd_bus_protocol_interface.h" --#include "whd_debug.h" --#include "whd_events_int.h" --#include "whd_int.h" --#include "whd_chip.h" --#include "whd_sdpcm.h" --#include "whd_wifi_api.h" --#include "whd_clm.h" --#include "whd_wlioctl.h" --#include "whd_types_int.h" -- --/****************************************************** --* Constants --******************************************************/ -- --#define MAX_POST_SET_COUNTRY_RETRY 3 -- --#define MINIMUM_WHD_STACK_SIZE (1024 + 1200 + 2500) -- --#define DEFAULT_PM2_SLEEP_RET_TIME 200 --/****************************************************** --* Static Variables --******************************************************/ -- --/****************************************************** --* Function definitions --******************************************************/ --whd_result_t whd_management_wifi_platform_init(whd_driver_t whd_driver, whd_country_code_t country, -- whd_bool_t resume_after_deep_sleep); --void whd_wifi_bus_irq_handle(void *handler_arg, uint32_t event); -- --whd_interface_t whd_get_primary_interface(whd_driver_t whd_driver) --{ -- if (whd_driver->iflist[0] != NULL) -- { -- return whd_driver->iflist[0]; -- } -- return NULL; --} -- --whd_result_t whd_add_interface(whd_driver_t whd_driver, uint8_t bsscfgidx, uint8_t ifidx, -- const char *name, whd_mac_t *mac_addr, whd_interface_t *ifpp) --{ -- whd_interface_t ifp; -- -- if (!whd_driver || !ifpp) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- if (bsscfgidx < WHD_INTERFACE_MAX) -- { -- if (whd_driver->iflist[bsscfgidx] != NULL) -- { -- *ifpp = whd_driver->iflist[bsscfgidx]; -- return WHD_SUCCESS; -- } -- -- if ( (ifp = (whd_interface_t)malloc(sizeof(struct whd_interface) ) ) != NULL ) -- { -- memset(ifp, 0, (sizeof(struct whd_interface) ) ); -- *ifpp = ifp; -- ifp->whd_driver = whd_driver; -- -- /* Add a interface name */ -- /* strncpy doesn't terminate with null if the src string is long */ -- ifp->if_name[WHD_MSG_IFNAME_MAX - 1] = '\0'; -- strncpy(ifp->if_name, name, sizeof(ifp->if_name) - 1); -- memset(ifp->event_reg_list, WHD_EVENT_NOT_REGISTERED, sizeof(ifp->event_reg_list) ); -- /* Primary interface takes 0 as default */ -- ifp->ifidx = ifidx; -- ifp->bsscfgidx = bsscfgidx; -- -- if (mac_addr != NULL) -- memcpy(ifp->mac_addr.octet, mac_addr->octet, sizeof(whd_mac_t) ); -- else -- memset(ifp->mac_addr.octet, 0, sizeof(whd_mac_t) ); -- -- whd_driver->iflist[bsscfgidx] = ifp; -- whd_driver->if2ifp[ifidx] = bsscfgidx; -- } -- else -- { -- return WHD_MALLOC_FAILURE; -- } -- -- return WHD_SUCCESS; -- } -- return WHD_INVALID_INTERFACE; --} -- --whd_result_t whd_add_primary_interface(whd_driver_t whd_driver, whd_interface_t *ifpp) --{ -- return whd_add_interface(whd_driver, 0, 0, "wlan0", NULL, ifpp); --} -- --uint32_t whd_add_secondary_interface(whd_driver_t whd_driver, whd_mac_t *mac_addr, whd_interface_t *ifpp) --{ -- return whd_add_interface(whd_driver, 1, 1, "wlan1", mac_addr, ifpp); --} -- --uint32_t whd_init(whd_driver_t *whd_driver_ptr, whd_init_config_t *whd_init_config, -- whd_resource_source_t *resource_ops, whd_buffer_funcs_t *buffer_ops, -- whd_netif_funcs_t *network_ops) --{ -- whd_driver_t whd_drv; -- -- if (!whd_driver_ptr || !buffer_ops || !network_ops || !resource_ops || !whd_init_config) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- if (whd_init_config->thread_stack_size < MINIMUM_WHD_STACK_SIZE) -- { -- WPRINT_WHD_INFO( ("Stack size is less than minimum stack size required.\n") ); -- return WHD_WLAN_BUFTOOSHORT; -- } -- -- if ( (whd_drv = (whd_driver_t)malloc(sizeof(struct whd_driver) ) ) != NULL ) -- { -- memset(whd_drv, 0, sizeof(struct whd_driver) ); -- *whd_driver_ptr = whd_drv; -- whd_drv->buffer_if = buffer_ops; -- whd_drv->network_if = network_ops; -- whd_drv->resource_if = resource_ops; -- whd_bus_common_info_init(whd_drv); -- whd_thread_info_init(whd_drv, whd_init_config); -- whd_cdc_bdc_info_init(whd_drv); -- whd_internal_info_init(whd_drv); -- whd_ap_info_init(whd_drv); -- //whd_wifi_sleep_info_init(whd_drv); -- whd_wifi_chip_info_init(whd_drv); -- -- whd_drv->bus_gspi_32bit = WHD_FALSE; -- -- if (whd_init_config->country == 0) -- whd_drv->country = WHD_COUNTRY_UNITED_STATES; -- else -- whd_drv->country = whd_init_config->country; -- } -- else -- { -- return WHD_MALLOC_FAILURE; -- } -- return WHD_SUCCESS; --} -- --uint32_t whd_deinit(whd_interface_t ifp) --{ -- uint8_t i; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- if (whd_driver->internal_info.whd_wlan_status.state == WLAN_UP) -- { -- CHECK_RETURN(whd_wifi_set_ioctl_buffer(ifp, WLC_DOWN, NULL, 0) ); -- whd_driver->internal_info.whd_wlan_status.state = WLAN_DOWN; -- } -- for (i = 0; i < WHD_INTERFACE_MAX; i++) -- { -- if (whd_driver->iflist[i] != NULL) -- { -- free(whd_driver->iflist[i]); -- whd_driver->iflist[i] = NULL; -- } -- } -- -- whd_cdc_bdc_info_deinit(whd_driver); -- whd_bus_common_info_deinit(whd_driver); --#ifdef WLAN_BUS_TYPE_SDIO -- whd_bus_sdio_detach(whd_driver); --#endif --#ifdef WLAN_BUS_TYPE_SPI -- whd_bus_spi_detach(whd_driver); --#endif -- free(whd_driver); -- -- return WHD_SUCCESS; --} -- --/** -- * Initialize Wi-Fi platform -- * -- * - Initializes the required parts of the hardware platform -- * i.e. pins for SDIO/SPI, interrupt, reset, power etc. -- * -- * - Initializes the WHD thread which arbitrates access -- * to the SDIO/SPI bus -- * -- * @return WHD_SUCCESS if initialization is successful, error code otherwise -- */ -- --whd_result_t whd_management_wifi_platform_init(whd_driver_t whd_driver, whd_country_code_t country, -- whd_bool_t resume_after_deep_sleep) --{ -- whd_result_t retval; -- -- whd_driver->internal_info.whd_wlan_status.country_code = country; -- -- if (resume_after_deep_sleep == WHD_TRUE) -- { -- retval = ( whd_result_t )whd_bus_resume_after_deep_sleep(whd_driver); -- } -- else -- { -- whd_bus_init_stats(whd_driver); -- retval = ( whd_result_t )whd_bus_init(whd_driver); -- } -- -- if (retval != WHD_SUCCESS) -- { -- /* May have been due to user abort */ -- WPRINT_WHD_INFO( ("Could not initialize bus\n") ); -- return retval; -- } -- -- /* WLAN device is now powered up. Change state from OFF to DOWN */ -- whd_driver->internal_info.whd_wlan_status.state = WLAN_DOWN; -- -- -- retval = whd_thread_init(whd_driver); -- if (retval != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Could not initialize WHD thread\n") ); -- return retval; -- } -- -- return WHD_SUCCESS; --} -- --/** -- * Turn on the Wi-Fi device -- * -- * - Initialize Wi-Fi device -- * -- * - Program various WiFi parameters and modes -- * -- * @return WHD_SUCCESS if initialization is successful, error code otherwise -- */ --uint32_t whd_wifi_on(whd_driver_t whd_driver, whd_interface_t *ifpp) --{ -- wl_country_t *country_struct; -- uint32_t *ptr; -- whd_result_t retval; -- whd_buffer_t buffer; -- uint8_t *event_mask; -- uint32_t *data; -- uint32_t counter; -- whd_interface_t ifp; -- -- if (!whd_driver || !ifpp) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- if (whd_driver->internal_info.whd_wlan_status.state == WLAN_UP) -- { -- return WHD_SUCCESS; -- } -- -- whd_init_stats(whd_driver); -- -- -- retval = whd_management_wifi_platform_init(whd_driver, whd_driver->country, WHD_FALSE); -- if (retval != WHD_SUCCESS) -- { -- WPRINT_WHD_INFO( ("Could not initialize wifi platform\n") ); -- return retval; -- } -- -- whd_add_primary_interface(whd_driver, ifpp); -- ifp = *ifpp; -- -- /* Download blob file if exists */ -- retval = whd_process_clm_data(ifp); -- if (retval != WHD_SUCCESS) -- { -- WPRINT_MACRO( ("****************************************************\n" -- "** ERROR: WLAN: could not download clm_blob file\n" -- "** FATAL ERROR: system unusable, CLM blob file not found or corrupted.\n" -- "****************************************************\n") ); -- return retval; -- } -- -- /* Turn off SDPCM TX Glomming */ -- /* Note: This is only required for later chips. -- * The 4319 has glomming off by default however the 43362 has it on by default. -- */ -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)4, IOVAR_STR_TX_GLOM); -- if (data == NULL) -- { -- whd_assert("Could not get buffer for IOVAR", 0 != 0); -- return WHD_BUFFER_ALLOC_FAIL; -- } -- *data = 0; -- retval = whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- if ( (retval != WHD_SUCCESS) && (retval != WHD_WLAN_UNSUPPORTED) ) -- { -- /* Note: System may time out here if bus interrupts are not working properly */ -- WPRINT_WHD_ERROR( ("Could not turn off TX glomming\n") ); -- return retval; -- } -- -- /* Turn APSTA on */ -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)sizeof(*data), IOVAR_STR_APSTA); -- if (data == NULL) -- { -- whd_assert("Could not get buffer for IOVAR", 0 != 0); -- return WHD_BUFFER_ALLOC_FAIL; -- } -- *data = htod32( (uint32_t)1 ); -- /* This will fail on manufacturing test build since it does not have APSTA available */ -- retval = whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- if (retval == WHD_WLAN_UNSUPPORTED) -- { -- WPRINT_WHD_DEBUG( ("Firmware does not support APSTA\n") ); -- } -- else if (retval != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Could not turn on APSTA\n") ); -- return retval; -- } -- -- /* Send set country command */ -- /* This is the first time that the WLAN chip is required to respond -- * in it's normal run mode. -- * If you are porting a new system and it stalls here, it could -- * be one of the following problems: -- * - Bus interrupt not triggering properly - the WLAN chip is unable to signal the host that there is data available. -- * - Timing problems - if the timeouts on semaphores are not working correctly, then the -- * system might think that the IOCTL has timed out much faster than it should do. -- * -- */ -- -- country_struct = (wl_country_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)sizeof(wl_country_t), -- IOVAR_STR_COUNTRY); -- if (country_struct == NULL) -- { -- whd_assert("Could not get buffer for IOCTL", 0 != 0); -- return WHD_BUFFER_ALLOC_FAIL; -- } -- memset(country_struct, 0, sizeof(wl_country_t) ); -- -- ptr = (uint32_t *)country_struct->ccode; -- *ptr = (uint32_t)whd_driver->internal_info.whd_wlan_status.country_code & 0x0000ffff; -- ptr = (uint32_t *)country_struct->country_abbrev; -- *ptr = (uint32_t)whd_driver->internal_info.whd_wlan_status.country_code & 0x0000ffff; -- country_struct->rev = (int32_t)( (whd_driver->internal_info.whd_wlan_status.country_code & 0xffff0000) >> 16 ); -- -- /* if regrev is 0 then set regrev to -1 so the FW will use any NVRAM/OTP configured aggregate -- * to choose the regrev. If there is no aggregate configured then the FW will try to use regrev 0. -- */ -- if (country_struct->rev == 0) -- { -- country_struct->rev = (int32_t)htod32(-1); -- } -- retval = whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- if (retval != WHD_SUCCESS) -- { -- /* Could not set wifi country */ -- WPRINT_WHD_ERROR( ("Could not set Country code\n") ); -- return retval; -- } -- -- /* NOTE: The set country command requires time to process on the WLAN firmware and -- * the following IOCTL may fail on initial attempts therefore we try a few times */ -- -- /* Set the event mask, indicating initially we do not want any asynchronous events */ -- for (counter = 0, retval = WHD_PENDING; retval != WHD_SUCCESS && counter < (uint32_t)MAX_POST_SET_COUNTRY_RETRY; -- ++counter) -- { -- event_mask = (uint8_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)WL_EVENTING_MASK_LEN, -- IOVAR_STR_EVENT_MSGS); -- if (event_mask == NULL) -- { -- whd_assert("Could not get buffer for IOVAR", 0 != 0); -- return WHD_BUFFER_ALLOC_FAIL; -- } -- memset(event_mask, 0, (size_t)WL_EVENTING_MASK_LEN); -- retval = whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- } -- if (retval != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Could not set Event mask\n") ); -- return retval; -- } -- -- /* Send UP command */ -- CHECK_RETURN(whd_wifi_set_up(ifp) ); -- -- whd_wifi_enable_powersave_with_throughput(ifp, DEFAULT_PM2_SLEEP_RET_TIME); -- /* Set the GMode */ -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)4); -- if (data == NULL) -- { -- whd_assert("Could not get buffer for IOCTL", 0 != 0); -- return WHD_BUFFER_ALLOC_FAIL; -- } -- *data = htod32( (uint32_t)GMODE_AUTO ); -- retval = whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_GMODE, buffer, 0); -- if (retval != WHD_SUCCESS) -- { -- /* Note: System may time out here if bus interrupts are not working properly */ -- WPRINT_WHD_ERROR( ("Error setting gmode\n") ); -- return retval; -- } -- -- return WHD_SUCCESS; --} -- --/** -- * Turn off the Wi-Fi device -- * -- * - De-Initialises the required parts of the hardware platform -- * i.e. pins for SDIO/SPI, interrupt, reset, power etc. -- * -- * - De-Initialises the WHD thread which arbitrates access -- * to the SDIO/SPI bus -- * -- * @return WHD_SUCCESS if deinitialization is successful, error code otherwise -- */ --uint32_t whd_wifi_off(whd_interface_t ifp) --{ -- whd_result_t retval; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- if (whd_driver->internal_info.whd_wlan_status.state == WLAN_OFF) -- { -- return WHD_SUCCESS; -- } -- -- /* Disable SDIO/SPI interrupt */ -- whd_bus_irq_enable(whd_driver, WHD_FALSE); -- whd_thread_quit(whd_driver); -- -- retval = whd_bus_deinit(whd_driver); -- if (retval != WHD_SUCCESS) -- { -- WPRINT_WHD_DEBUG( ("Error de-initializing bus\n") ); -- return retval; -- } -- -- whd_driver->internal_info.whd_wlan_status.state = WLAN_OFF; -- return WHD_SUCCESS; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_network_if.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_network_if.c -deleted file mode 100644 -index 9877cd26a8..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_network_if.c -+++ /dev/null -@@ -1,85 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides generic APSTA functionality that chip specific files use -- */ -- --#include "whd_debug.h" --#include "whd_network_if.h" -- --/****************************************************** -- * * @cond Constants -- * ******************************************************/ -- --/****************************************************** -- * * Enumerations -- * ******************************************************/ -- --/****************************************************** --** Function Declarations --*******************************************************/ -- --/****************************************************** -- * Variables Definitions -- *****************************************************/ -- --/****************************************************** --* Function Definitions --******************************************************/ --/** Called by WHD to pass received data to the network stack -- * -- * -- * Packets received from the Wi-Fi network by WHD are forwarded to by calling function ptr which -- * must be implemented in the network interface. Ethernet headers -- * are present at the start of these packet buffers. -- * -- * This function is called asynchronously in the context of the -- * WHD thread whenever new data has arrived. -- * Packet buffers are allocated within WHD, and ownership is transferred -- * to the network stack. The network stack or application is thus -- * responsible for releasing the packet buffers. -- * Most packet buffering systems have a pointer to the 'current point' within -- * the packet buffer. When this function is called, the pointer points -- * to the start of the Ethernet header. There is other inconsequential data -- * before the Ethernet header. -- * -- * It is preferable that the (whd_network_process_ethernet_data)() function simply puts -- * the received packet on a queue for processing by another thread. This avoids the -- * WHD thread being unnecessarily tied up which would delay other packets -- * being transmitted or received. -- * -- * @param interface : The interface on which the packet was received. -- * @param buffer : Handle of the packet which has just been received. Responsibility for -- * releasing this buffer is transferred from WHD at this point. -- * -- */ --whd_result_t whd_network_process_ethernet_data(whd_interface_t ifp, whd_buffer_t buffer) --{ -- whd_driver_t whd_driver = ifp->whd_driver; -- if (whd_driver->network_if->whd_network_process_ethernet_data) -- { -- whd_driver->network_if->whd_network_process_ethernet_data(ifp, buffer); -- return WHD_SUCCESS; -- } -- else -- { -- WPRINT_WHD_INFO( ("Function pointers not provided .\n") ); -- } -- return WHD_WLAN_NOFUNCTION; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_resource_if.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_resource_if.c -deleted file mode 100644 -index b49f586d06..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_resource_if.c -+++ /dev/null -@@ -1,103 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides generic APSTA functionality that chip specific files use -- */ -- --#include "whd_debug.h" --#include "whd_int.h" --#include "whd_resource_if.h" -- --/****************************************************** -- * * @cond Constants -- * ******************************************************/ -- --/****************************************************** -- * * Enumerations -- * ******************************************************/ -- --/****************************************************** -- * * Function Declarations -- * ******************************************************/ -- --/****************************************************** -- * Variables Definitions -- *****************************************************/ -- --/****************************************************** --* Function Definitions --******************************************************/ --uint32_t whd_resource_size(whd_driver_t whd_driver, whd_resource_type_t resource, uint32_t *size_out) --{ -- if (whd_driver->resource_if->whd_resource_size) -- { -- return whd_driver->resource_if->whd_resource_size(whd_driver, resource, size_out); -- } -- else -- { -- WPRINT_WHD_ERROR( ("Function pointers not provided .\n") ); -- } -- -- return WHD_WLAN_NOFUNCTION; --} -- --uint32_t whd_get_resource_block_size(whd_driver_t whd_driver, whd_resource_type_t type, uint32_t *size_out) --{ -- -- if (whd_driver->resource_if->whd_get_resource_block_size) -- { -- return whd_driver->resource_if->whd_get_resource_block_size(whd_driver, type, size_out); -- } -- else -- { -- WPRINT_WHD_ERROR( ("Function pointers not provided .\n") ); -- } -- -- return WHD_WLAN_NOFUNCTION; --} -- --uint32_t whd_get_resource_no_of_blocks(whd_driver_t whd_driver, whd_resource_type_t type, uint32_t *block_count) --{ -- if (whd_driver->resource_if->whd_get_resource_no_of_blocks) -- { -- return whd_driver->resource_if->whd_get_resource_no_of_blocks(whd_driver, type, block_count); -- } -- else -- { -- WPRINT_WHD_ERROR( ("Function pointers not provided .\n") ); -- } -- -- return WHD_WLAN_NOFUNCTION; --} -- --uint32_t whd_get_resource_block(whd_driver_t whd_driver, whd_resource_type_t type, -- uint32_t blockno, const uint8_t **data, uint32_t *size_out) --{ -- -- if (whd_driver->resource_if->whd_get_resource_block) -- { -- return whd_driver->resource_if->whd_get_resource_block(whd_driver, type, blockno, data, size_out); -- } -- else -- { -- WPRINT_WHD_ERROR( ("Function pointers not provided .\n") ); -- } -- -- return WHD_WLAN_NOFUNCTION; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_sdpcm.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_sdpcm.c -deleted file mode 100644 -index 5e392696a2..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_sdpcm.c -+++ /dev/null -@@ -1,618 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Provides an implementation of the Broadcom SDPCM protocol. -- * The Broadcom SDPCM protocol provides multiplexing of Wireless Data frames, -- * I/O Control functions (IOCTL), and Asynchronous Event signalling. -- * It is required when communicating with Broadcom 802.11 devices. -- * -- */ --#include "whd_sdpcm.h" --#include "bus_protocols/whd_bus_protocol_interface.h" --#include "whd_endian.h" --#include "whd_chip_constants.h" --#include "whd_chip.h" --#include "whd_thread_internal.h" --#include "whd_debug.h" --#include "whd_events_int.h" --#include "whd_wifi_api.h" --#include "whd_buffer_api.h" --#include "whd_network_if.h" --#include "whd_wlioctl.h" --#include "whd_types_int.h" --#include "whd_endian.h" -- --/****************************************************** --* @cond Constants --******************************************************/ -- --#define ETHER_TYPE_BRCM (0x886C) /** Broadcom Ethertype for identifying event packets - Copied from DHD include/proto/ethernet.h */ --#define BRCM_OUI "\x00\x10\x18" /** Broadcom OUI (Organizationally Unique Identifier): Used in the proprietary(221) IE (Information Element) in all Broadcom devices */ --#define BCM_MSG_IFNAME_MAX (16) /** Maximum length of an interface name in a wl_event_msg_t structure*/ -- --#define BDC_FLAG2_IF_MASK (0x0f) -- --#define SDPCM_HEADER_LEN (12) -- --/* Event flags */ --#define WLC_EVENT_MSG_LINK (0x01) /** link is up */ --#define WLC_EVENT_MSG_FLUSHTXQ (0x02) /** flush tx queue on MIC error */ --#define WLC_EVENT_MSG_GROUP (0x04) /** group MIC error */ --#define WLC_EVENT_MSG_UNKBSS (0x08) /** unknown source bsscfg */ --#define WLC_EVENT_MSG_UNKIF (0x10) /** unknown source OS i/f */ -- --/****************************************************** --* Macros --******************************************************/ -- --/****************************************************** --* Local Structures --******************************************************/ -- --#pragma pack(1) -- --/*TODO: Keep this typedef? (in preference to the defines above */ --#if 0 --typedef struct --{ -- uint16_t control_id; -- uint8_t interface_index : 4; -- uint16_t reserved : 10; -- uint8_t set : 1; -- uint8_t error : 1; --}sdpcm_cdc_flags_t; --#endif /* if 0 */ --typedef struct --{ -- uint8_t sequence; -- uint8_t channel_and_flags; -- uint8_t next_length; -- uint8_t header_length; -- uint8_t wireless_flow_control; -- uint8_t bus_data_credit; -- uint8_t _reserved[2]; --} sdpcm_sw_header_t; -- --/* -- * SDPCM header definitions -- */ --typedef struct --{ -- uint16_t frametag[2]; -- sdpcm_sw_header_t sw_header; --} sdpcm_header_t; -- --typedef struct bcmeth_hdr --{ -- uint16_t subtype; /** Vendor specific..32769 */ -- uint16_t length; -- uint8_t version; /** Version is 0 */ -- uint8_t oui[3]; /** Broadcom OUI */ -- uint16_t usr_subtype; /** user specific Data */ --} sdpcm_bcmeth_header_t; -- --/* these fields are stored in network order */ --typedef struct --{ -- -- uint16_t version; /** Version 1 has fields up to ifname. -- * Version 2 has all fields including ifidx and bss_cfg_idx */ -- uint16_t flags; /** see flags */ -- uint32_t event_type; /** Message */ -- uint32_t status; /** Status code */ -- uint32_t reason; /** Reason code (if applicable) */ -- uint32_t auth_type; /** WLC_E_AUTH */ -- uint32_t datalen; /** data buf */ -- whd_mac_t addr; /** Station address (if applicable) */ -- char ifname[BCM_MSG_IFNAME_MAX]; /** name of the packet incoming interface */ -- uint8_t ifidx; /** destination OS i/f index */ -- uint8_t bss_cfg_idx; /** source bsscfg index */ --} sdpcm_raw_event_header_t; -- --/* used by driver msgs */ --typedef struct bcm_event --{ -- ethernet_header_t ether; -- sdpcm_bcmeth_header_t bcmeth; -- union -- { -- whd_event_header_t whd; -- sdpcm_raw_event_header_t raw; -- } event; --} sdpcm_bcm_event_t; -- --#pragma pack() -- --/****************************************************** --* Static Variables --******************************************************/ -- --/****************************************************** --* SDPCM Logging --* --* Enable this section to allow logging of SDPCM packets --* into a buffer for later perusal --* --* See sdpcm_log and next_sdpcm_log_pos --* --******************************************************/ --/** @cond */ -- --#if 0 -- --#define SDPCM_LOG_SIZE 30 --#define SDPCM_LOG_HEADER_SIZE (0x60) -- --typedef enum { UNUSED, LOG_TX, LOG_RX } sdpcm_log_direction_t; --typedef enum { IOCTL, DATA, EVENT } sdpcm_log_type_t; -- --typedef struct SDPCM_log_entry_struct --{ -- sdpcm_log_direction_t direction; -- sdpcm_log_type_t type; -- unsigned long time; -- unsigned long length; -- unsigned char header[SDPCM_LOG_HEADER_SIZE]; --}sdpcm_log_entry_t; -- --static int next_sdpcm_log_pos = 0; --static sdpcm_log_entry_t sdpcm_log[SDPCM_LOG_SIZE]; -- --static void add_sdpcm_log_entry(sdpcm_log_direction_t dir, sdpcm_log_type_t type, unsigned long length, char *eth_data) --{ -- -- sdpcm_log[next_sdpcm_log_pos].direction = dir; -- sdpcm_log[next_sdpcm_log_pos].type = type; -- cy_rtos_get_time(&sdpcm_log[next_sdpcm_log_pos].time); -- sdpcm_log[next_sdpcm_log_pos].length = length; -- memcpy(sdpcm_log[next_sdpcm_log_pos].header, eth_data, SDPCM_LOG_HEADER_SIZE); -- next_sdpcm_log_pos++; -- if (next_sdpcm_log_pos >= SDPCM_LOG_SIZE) -- { -- next_sdpcm_log_pos = 0; -- } --} -- --#else --#define add_sdpcm_log_entry(dir, type, length, eth_data) --#endif -- --/** @endcond */ -- --/****************************************************** --* Static Function Prototypes --******************************************************/ --static whd_buffer_t whd_sdpcm_get_next_buffer_in_queue(whd_driver_t whd_driver, whd_buffer_t buffer); --static void whd_sdpcm_set_next_buffer_in_queue(whd_driver_t whd_driver, whd_buffer_t buffer, -- whd_buffer_t prev_buffer); --extern void whd_wifi_log_event(whd_driver_t whd_driver, const whd_event_header_t *event_header, -- const uint8_t *event_data); --/****************************************************** --* Function definitions --******************************************************/ -- --/** Initialises the SDPCM protocol handler -- * -- * Initialises mutex and semaphore flags needed by the SDPCM handler. -- * Also initialises the list of event handlers. This function is called -- * from the @ref whd_thread_init function. -- * -- * @return WHD result code -- */ -- --whd_result_t whd_sdpcm_init(whd_driver_t whd_driver) --{ -- whd_sdpcm_info_t *sdpcm_info = &whd_driver->sdpcm_info; -- -- /* Create the sdpcm packet queue semaphore */ -- if (cy_rtos_init_semaphore(&sdpcm_info->send_queue_mutex, 1, 0) != WHD_SUCCESS) -- { -- return WHD_SEMAPHORE_ERROR; -- } -- if (cy_rtos_set_semaphore(&sdpcm_info->send_queue_mutex, WHD_FALSE) != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Error setting semaphore in %s at %d \n", __func__, __LINE__) ); -- return WHD_SEMAPHORE_ERROR; -- } -- -- /* Packet send queue variables */ -- sdpcm_info->send_queue_head = (whd_buffer_t)NULL; -- sdpcm_info->send_queue_tail = (whd_buffer_t)NULL; -- -- whd_sdpcm_bus_vars_init(whd_driver); -- -- return WHD_SUCCESS; --} -- --/* Re-initialize the bus variables after deep sleep */ --void whd_sdpcm_bus_vars_init(whd_driver_t whd_driver) --{ -- whd_sdpcm_info_t *sdpcm_info = &whd_driver->sdpcm_info; -- -- /* Bus data credit variables */ -- sdpcm_info->credit_diff = 0; -- sdpcm_info->largest_credit_diff = 0; -- -- sdpcm_info->packet_transmit_sequence_number = 0; -- sdpcm_info->last_bus_data_credit = (uint8_t)1; --} -- --/** Initialises the SDPCM protocol handler -- * -- * De-initialises mutex and semaphore flags needed by the SDPCM handler. -- * This function is called from the @ref whd_thread_func function when it is exiting. -- */ --void whd_sdpcm_quit(whd_driver_t whd_driver) --{ -- whd_sdpcm_info_t *sdpcm_info = &whd_driver->sdpcm_info; -- whd_result_t result; -- -- /* Delete the SDPCM queue mutex */ -- (void)cy_rtos_deinit_semaphore(&sdpcm_info->send_queue_mutex); /* Ignore return - not much can be done about failure */ -- -- /* Free any left over packets in the queue */ -- while (sdpcm_info->send_queue_head != NULL) -- { -- whd_buffer_t buf = whd_sdpcm_get_next_buffer_in_queue(whd_driver, sdpcm_info->send_queue_head); -- result = whd_buffer_release(whd_driver, sdpcm_info->send_queue_head, WHD_NETWORK_TX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- sdpcm_info->send_queue_head = buf; -- } --} -- --void whd_sdpcm_update_credit(whd_driver_t whd_driver, uint8_t *data) --{ -- sdpcm_sw_header_t *header = (sdpcm_sw_header_t *)(data + 4); -- whd_sdpcm_info_t *sdpcm_info = &whd_driver->sdpcm_info; -- -- if ( (header->channel_and_flags & 0x0f) < (uint8_t)3 ) -- { -- sdpcm_info->credit_diff = (uint8_t)(header->bus_data_credit - sdpcm_info->last_bus_data_credit); -- WPRINT_WHD_DATA_LOG( ("credit update =%d\n ", header->bus_data_credit) ); -- if (sdpcm_info->credit_diff <= GET_C_VAR(whd_driver, BUS_CREDIT_DIFF) ) -- { -- sdpcm_info->last_bus_data_credit = header->bus_data_credit; -- } -- else -- { -- if (sdpcm_info->credit_diff > sdpcm_info->largest_credit_diff) -- { -- sdpcm_info->largest_credit_diff = sdpcm_info->credit_diff; -- } -- } -- } -- -- whd_bus_set_flow_control(whd_driver, header->wireless_flow_control); --} -- --/** Processes and directs incoming SDPCM packets -- * -- * This function receives SDPCM packets from the Broadcom 802.11 device and decodes the SDPCM header -- * to determine where the packet should be directed. -- * -- * Control packets (IOCTL/IOVAR) / Data Packets/ Event Packets are passed to CDC/BDC layer -- * and the appropriate event handler is called. -- * -- * @param buffer : The SDPCM packet buffer received from the Broadcom 802.11 device -- * -- */ --void whd_sdpcm_process_rx_packet(whd_driver_t whd_driver, whd_buffer_t buffer) --{ -- bus_common_header_t *packet; -- uint16_t size; -- uint16_t size_inv; -- sdpcm_header_t sdpcm_header; -- whd_result_t result; -- -- packet = (bus_common_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer); -- -- memcpy(&sdpcm_header, packet->bus_header, BUS_HEADER_LEN); -- -- sdpcm_header.frametag[0] = dtoh16(sdpcm_header.frametag[0]); -- sdpcm_header.frametag[1] = dtoh16(sdpcm_header.frametag[1]); -- -- /* Extract the total SDPCM packet size from the first two frametag bytes */ -- size = sdpcm_header.frametag[0]; -- -- /* Check that the second two frametag bytes are the binary inverse of the size */ -- size_inv = (uint16_t) ~size; /* Separate variable due to GCC Bug 38341 */ -- if (sdpcm_header.frametag[1] != size_inv) -- { -- WPRINT_WHD_DEBUG( ("Received a packet with a frametag which is wrong\n") ); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- return; -- } -- -- /* Check whether the packet is big enough to contain the SDPCM header (or) it's too big to handle */ -- if ( (size < (uint16_t)SDPCM_HEADER_LEN) || (size > whd_buffer_get_current_piece_size(whd_driver, buffer) ) ) -- { -- whd_minor_assert("Packet size invalid", 0 == 1); -- WPRINT_WHD_DEBUG( ( -- "Received a packet that is too small to contain anything useful (or) too big. Packet Size = [%d]\n", -- size) ); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- return; -- } -- -- /* Get address of packet->sdpcm_header.frametag indirectly to avoid IAR's unaligned address warning */ -- whd_sdpcm_update_credit(whd_driver, -- (uint8_t *)&sdpcm_header.sw_header - sizeof(sdpcm_header.frametag) ); -- -- if (size == (uint16_t)SDPCM_HEADER_LEN) -- { -- /* This is a flow control update packet with no data - release it. */ -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- -- return; -- } -- -- /* Check the SDPCM channel to decide what to do with packet. */ -- switch (sdpcm_header.sw_header.channel_and_flags & 0x0f) -- { -- case CONTROL_HEADER: /* IOCTL/IOVAR reply packet */ -- { -- add_sdpcm_log_entry(LOG_RX, IOCTL, whd_buffer_get_current_piece_size(whd_driver, buffer), -- (char *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer) ); -- -- /* Check that packet size is big enough to contain the CDC header as well as the SDPCM header */ -- if (sdpcm_header.frametag[0] < -- (sizeof(sdpcm_header.frametag) + sizeof(sdpcm_sw_header_t) + sizeof(cdc_header_t) ) ) -- { -- /* Received a too-short SDPCM packet! */ -- WPRINT_WHD_DEBUG( ("Received a too-short SDPCM packet!\n") ); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- -- break; -- } -- -- /* Move SDPCM header and Buffer header to pass onto next layer */ -- whd_buffer_add_remove_at_front(whd_driver, &buffer, -- (int32_t)(sizeof(whd_buffer_header_t) + -- sdpcm_header.sw_header.header_length) ); -- -- whd_process_cdc(whd_driver, buffer); -- } -- -- break; -- -- case DATA_HEADER: -- { -- /* Check that the packet is big enough to contain SDPCM & BDC headers */ -- if (sdpcm_header.frametag[0] <= -- (sizeof(sdpcm_header.frametag) + sizeof(sdpcm_sw_header_t) + sizeof(bdc_header_t) ) ) -- { -- WPRINT_WHD_ERROR( ("Packet too small to contain SDPCM + BDC headers\n") ); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- -- break; -- } -- -- /* Move SDPCM header and Buffer header to pass onto next layer */ -- whd_buffer_add_remove_at_front(whd_driver, &buffer, -- (int32_t)(sizeof(whd_buffer_header_t) + -- sdpcm_header.sw_header.header_length) ); -- -- whd_process_bdc(whd_driver, buffer); -- -- } -- break; -- -- case ASYNCEVENT_HEADER: -- { -- -- /* Move SDPCM header and Buffer header to pass onto next layer */ -- whd_buffer_add_remove_at_front(whd_driver, &buffer, -- (int32_t)(sizeof(whd_buffer_header_t) + -- sdpcm_header.sw_header.header_length) ); -- -- whd_process_bdc_event(whd_driver, buffer, size); -- } -- break; -- -- default: -- whd_minor_assert("SDPCM packet of unknown channel received - dropping packet", 0 != 0); -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_RX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ); -- break; -- } --} -- --whd_bool_t whd_sdpcm_has_tx_packet(whd_driver_t whd_driver) --{ -- if (whd_driver->sdpcm_info.send_queue_head != NULL) -- { -- return WHD_TRUE; -- } -- -- return WHD_FALSE; --} -- --whd_result_t whd_sdpcm_get_packet_to_send(whd_driver_t whd_driver, whd_buffer_t *buffer) --{ -- bus_common_header_t *packet; -- sdpcm_header_t sdpcm_header; -- whd_sdpcm_info_t *sdpcm_info = &whd_driver->sdpcm_info; -- whd_result_t result; -- -- if (sdpcm_info->send_queue_head != NULL) -- { -- /* Check if we're being flow controlled */ -- if (whd_bus_is_flow_controlled(whd_driver) == WHD_TRUE) -- { -- WHD_STATS_INCREMENT_VARIABLE(whd_driver, flow_control); -- return WHD_FLOW_CONTROLLED; -- } -- -- /* Check if we have enough bus data credits spare */ -- if (sdpcm_info->packet_transmit_sequence_number == sdpcm_info->last_bus_data_credit) -- { -- WHD_STATS_INCREMENT_VARIABLE(whd_driver, no_credit); -- return WHD_NO_CREDITS; -- } -- -- /* There is a packet waiting to be sent - send it then fix up queue and release packet */ -- if (cy_rtos_get_semaphore(&sdpcm_info->send_queue_mutex, CY_RTOS_NEVER_TIMEOUT, WHD_FALSE) != WHD_SUCCESS) -- { -- /* Could not obtain mutex, push back the flow control semaphore */ -- WPRINT_WHD_ERROR( ("Error manipulating a semaphore, %s failed at %d \n", __func__, __LINE__) ); -- return WHD_SEMAPHORE_ERROR; -- } -- -- /* Pop the head off and set the new send_queue head */ -- *buffer = sdpcm_info->send_queue_head; -- sdpcm_info->send_queue_head = whd_sdpcm_get_next_buffer_in_queue(whd_driver, *buffer); -- if (sdpcm_info->send_queue_head == NULL) -- { -- sdpcm_info->send_queue_tail = NULL; -- } -- result = cy_rtos_set_semaphore(&sdpcm_info->send_queue_mutex, WHD_FALSE); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("Error setting semaphore in %s at %d \n", __func__, __LINE__) ); -- -- -- /* Set the sequence number */ -- packet = (bus_common_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, *buffer); -- memcpy(&sdpcm_header, packet->bus_header, BUS_HEADER_LEN); -- sdpcm_header.sw_header.sequence = sdpcm_info->packet_transmit_sequence_number; -- memcpy(packet->bus_header, &sdpcm_header, BUS_HEADER_LEN); -- sdpcm_info->packet_transmit_sequence_number++; -- -- return WHD_SUCCESS; -- } -- else -- { -- return WHD_NO_PACKET_TO_SEND; -- } --} -- --/** Returns the number of bus credits available -- * -- * @return The number of bus credits available -- */ --uint8_t whd_sdpcm_get_available_credits(whd_driver_t whd_driver) --{ -- return (uint8_t)(whd_driver->sdpcm_info.last_bus_data_credit - -- whd_driver->sdpcm_info.packet_transmit_sequence_number); --} -- --/** Writes SDPCM headers and sends packet to WHD Thread -- * -- * Prepends the given packet with a new SDPCM header, -- * then passes the packet to the WHD thread via a queue -- * -- * This function is called by @ref whd_network_send_ethernet_data and @ref whd_cdc_send_ioctl -- * -- * @param buffer : The handle of the packet buffer to send -- * @param header_type : DATA_HEADER, ASYNCEVENT_HEADER or CONTROL_HEADER - indicating what type of SDPCM packet this is. -- */ -- --void whd_send_to_bus(whd_driver_t whd_driver, whd_buffer_t buffer, -- sdpcm_header_type_t header_type) --{ -- uint16_t size; -- bus_common_header_t *packet = -- (bus_common_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer); -- sdpcm_header_t sdpcm_header; -- whd_sdpcm_info_t *sdpcm_info = &whd_driver->sdpcm_info; -- whd_result_t result; -- -- size = whd_buffer_get_current_piece_size(whd_driver, buffer); -- -- size = (uint16_t)(size - (uint16_t)sizeof(whd_buffer_header_t) ); -- -- /* Prepare the SDPCM header */ -- memset( (uint8_t *)&sdpcm_header, 0, sizeof(sdpcm_header_t) ); -- sdpcm_header.sw_header.channel_and_flags = (uint8_t)header_type; -- sdpcm_header.sw_header.header_length = -- (header_type == DATA_HEADER) ? sizeof(sdpcm_header_t) + 2 : sizeof(sdpcm_header_t); -- sdpcm_header.sw_header.sequence = 0; /* Note: The real sequence will be written later */ -- sdpcm_header.frametag[0] = size; -- sdpcm_header.frametag[1] = (uint16_t) ~size; -- -- memcpy(packet->bus_header, &sdpcm_header, BUS_HEADER_LEN); -- -- add_sdpcm_log_entry(LOG_TX, (header_type == DATA_HEADER) ? DATA : (header_type == CONTROL_HEADER) ? IOCTL : EVENT, -- whd_buffer_get_current_piece_size(whd_driver, buffer), -- (char *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer) ); -- -- /* Add the length of the SDPCM header and pass "down" */ -- if (cy_rtos_get_semaphore(&sdpcm_info->send_queue_mutex, CY_RTOS_NEVER_TIMEOUT, WHD_FALSE) != WHD_SUCCESS) -- { -- /* Could not obtain mutex */ -- /* Fatal error */ -- result = whd_buffer_release(whd_driver, buffer, WHD_NETWORK_TX); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("buffer release failed in %s at %d \n", __func__, __LINE__) ) -- return; -- } -- -- whd_sdpcm_set_next_buffer_in_queue(whd_driver, NULL, buffer); -- if (sdpcm_info->send_queue_tail != NULL) -- { -- whd_sdpcm_set_next_buffer_in_queue(whd_driver, buffer, sdpcm_info->send_queue_tail); -- } -- sdpcm_info->send_queue_tail = buffer; -- if (sdpcm_info->send_queue_head == NULL) -- { -- sdpcm_info->send_queue_head = buffer; -- } -- result = cy_rtos_set_semaphore(&sdpcm_info->send_queue_mutex, WHD_FALSE); -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("Error setting semaphore in %s at %d \n", __func__, __LINE__) ); -- -- whd_thread_notify(whd_driver); --} -- --/****************************************************** --* Static Functions --******************************************************/ -- --static whd_buffer_t whd_sdpcm_get_next_buffer_in_queue(whd_driver_t whd_driver, whd_buffer_t buffer) --{ -- whd_buffer_header_t *packet = (whd_buffer_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, buffer); -- return packet->queue_next; --} -- --/** Sets the next buffer in the send queue -- * -- * The send queue is a linked list of packet buffers where the 'next' pointer -- * is stored in the first 4 bytes of the buffer content. -- * This function sets that pointer. -- * -- * @param buffer : handle of packet in the send queue -- * prev_buffer : handle of new packet whose 'next' pointer will point to 'buffer' -- */ --static void whd_sdpcm_set_next_buffer_in_queue(whd_driver_t whd_driver, whd_buffer_t buffer, whd_buffer_t prev_buffer) --{ -- whd_buffer_header_t *packet = -- (whd_buffer_header_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, prev_buffer); -- packet->queue_next = buffer; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_thread.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_thread.c -deleted file mode 100644 -index 1ce8cbefe7..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_thread.c -+++ /dev/null -@@ -1,346 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Allows thread safe access to the WHD WiFi Driver (WHD) hardware bus -- * -- * This file provides functions which allow multiple threads to use the WHD hardware bus (SDIO or SPI) -- * This is achieved by having a single thread (the "WHD Thread") which queues messages to be sent, sending -- * them sequentially, as well as receiving messages as they arrive. -- * -- * Messages to be sent come from the @ref whd_sdpcm_send_common function in whd_sdpcm.c . The messages already -- * contain SDPCM headers, but not any bus headers (GSPI), and are passed to the whd_thread_send_data function. -- * This function can be called from any thread. -- * -- * Messages are received by way of a callback supplied by in SDPCM.c - whd_sdpcm_process_rx_packet -- * Received messages are delivered in the context of the WHD Thread, so the callback function needs to avoid blocking. -- * -- * It is also possible to use these functions without any operating system, by periodically calling the whd_thread_send_one_packet, -- * @ref whd_thread_receive_one_packet or @ref whd_thread_poll_all functions -- * -- */ --#include "stdlib.h" --#include "whd_debug.h" --#include "whd_thread.h" --#include "bus_protocols/whd_bus_protocol_interface.h" --#include "cyabs_rtos.h" --#include "whd_int.h" --#include "whd_chip.h" --#include "whd_poll.h" --#include "whd_sdpcm.h" --#include "whd_buffer_api.h" -- --/****************************************************** --* Static Function Prototypes --******************************************************/ --static void whd_thread_func(whd_thread_arg_t thread_input); -- --/****************************************************** --* Global Functions --******************************************************/ --void whd_thread_info_init(whd_driver_t whd_driver, whd_init_config_t *whd_init_config) --{ -- memset(&whd_driver->thread_info, 0, sizeof(whd_driver->thread_info) ); -- whd_driver->thread_info.thread_stack_start = whd_init_config->thread_stack_start; -- whd_driver->thread_info.thread_stack_size = whd_init_config->thread_stack_size; -- whd_driver->thread_info.thread_priority = (cy_thread_priority_t)whd_init_config->thread_priority; --} -- --/** Initialises the WHD Thread -- * -- * Initialises the WHD thread, and its flags/semaphores, -- * then starts it running -- * -- * @return WHD_SUCCESS : if initialisation succeeds -- * otherwise, a result code -- */ --whd_result_t whd_thread_init(whd_driver_t whd_driver) --{ -- whd_result_t retval; -- -- retval = whd_sdpcm_init(whd_driver); -- -- if (retval != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Could not initialize SDPCM codec\n") ); -- /* Lint: Reachable after hitting assert & globals not defined due to error */ -- return retval; -- } -- -- /* Create the event flag which signals the WHD thread needs to wake up */ -- retval = cy_rtos_init_semaphore(&whd_driver->thread_info.transceive_semaphore, 1, 0); -- if (retval != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Could not initialize WHD thread semaphore\n") ); -- /* Lint: Reachable after hitting assert & globals not defined due to error */ -- return retval; -- } -- -- retval = cy_rtos_create_thread(&whd_driver->thread_info.whd_thread, (cy_thread_entry_fn_t)whd_thread_func, -- "WHD", whd_driver->thread_info.thread_stack_start, -- whd_driver->thread_info.thread_stack_size, -- whd_driver->thread_info.thread_priority, (cy_thread_arg_t)whd_driver); -- if (retval != WHD_SUCCESS) -- { -- /* Could not start WHD main thread */ -- WPRINT_WHD_ERROR( ("Could not start WHD thread\n") ); -- return retval; -- } -- -- /* Ready now. Indicate it here and in thread, whatever be executed first. */ -- whd_driver->thread_info.whd_inited = WHD_TRUE; -- -- return WHD_SUCCESS; --} -- --/** Sends the first queued packet -- * -- * Checks the queue to determine if there is any packets waiting -- * to be sent. If there are, then it sends the first one. -- * -- * This function is normally used by the WHD Thread, but can be -- * called periodically by systems which have no RTOS to ensure -- * packets get sent. -- * -- * @return 1 : packet was sent -- * 0 : no packet sent -- */ --int8_t whd_thread_send_one_packet(whd_driver_t whd_driver) --{ -- whd_buffer_t tmp_buf_hnd = NULL; -- whd_result_t result; -- -- if (whd_sdpcm_get_packet_to_send(whd_driver, &tmp_buf_hnd) != WHD_SUCCESS) -- { -- /* Failed to get a packet */ -- return 0; -- } -- -- /* Ensure the wlan backplane bus is up */ -- result = whd_ensure_wlan_bus_is_up(whd_driver); -- if (result != WHD_SUCCESS) -- { -- whd_assert("Could not bring bus back up", 0 != 0); -- CHECK_RETURN(whd_buffer_release(whd_driver, tmp_buf_hnd, WHD_NETWORK_TX) ); -- return 0; -- } -- -- WPRINT_WHD_DATA_LOG( ("Wcd:> Sending pkt 0x%08lX\n", (unsigned long)tmp_buf_hnd) ); -- if (whd_bus_send_buffer(whd_driver, tmp_buf_hnd) != WHD_SUCCESS) -- { -- WHD_STATS_INCREMENT_VARIABLE(whd_driver, tx_fail); -- return 0; -- } -- -- WHD_STATS_INCREMENT_VARIABLE(whd_driver, tx_total); -- return (int8_t)1; --} -- --/** Receives a packet if one is waiting -- * -- * Checks the wifi chip fifo to determine if there is any packets waiting -- * to be received. If there are, then it receives the first one, and calls -- * the callback @ref whd_sdpcm_process_rx_packet (in whd_sdpcm.c). -- * -- * This function is normally used by the WHD Thread, but can be -- * called periodically by systems which have no RTOS to ensure -- * packets get received properly. -- * -- * @return 1 : packet was received -- * 0 : no packet waiting -- */ --int8_t whd_thread_receive_one_packet(whd_driver_t whd_driver) --{ -- /* Check if there is a packet ready to be received */ -- whd_buffer_t recv_buffer; -- if (whd_bus_read_frame(whd_driver, &recv_buffer) != WHD_SUCCESS) -- { -- /* Failed to read a packet */ -- return 0; -- } -- -- if (recv_buffer != NULL) /* Could be null if it was only a credit update */ -- { -- -- WPRINT_WHD_DATA_LOG( ("Wcd:< Rcvd pkt 0x%08lX\n", (unsigned long)recv_buffer) ); -- WHD_STATS_INCREMENT_VARIABLE(whd_driver, rx_total); -- -- /* Send received buffer up to SDPCM layer */ -- whd_sdpcm_process_rx_packet(whd_driver, recv_buffer); -- } -- return (int8_t)1; --} -- --/** Sends and Receives all waiting packets -- * -- * Calls whd_thread_send_one_packet and whd_thread_receive_one_packet -- * once to send and receive packets, until there are no more packets waiting to -- * be transferred. -- * -- * This function is normally used by the WHD Thread, but can be -- * called periodically by systems which have no RTOS to ensure -- * packets get send and received properly. -- * -- * Note: do not loop in here, to avoid overwriting previously rx-ed packets -- */ --int8_t whd_thread_poll_all(whd_driver_t whd_driver) --{ -- int8_t result = 0; -- result |= whd_thread_send_one_packet(whd_driver); -- result |= whd_thread_receive_one_packet(whd_driver); -- return result; --} -- --/** Terminates the WHD Thread -- * -- * Sets a flag then wakes the WHD Thread to force it to terminate. -- * -- */ --void whd_thread_quit(whd_driver_t whd_driver) --{ -- whd_thread_info_t *thread_info = &whd_driver->thread_info; -- whd_result_t result; -- -- /* signal main thread and wake it */ -- thread_info->thread_quit_flag = WHD_TRUE; -- result = cy_rtos_set_semaphore(&thread_info->transceive_semaphore, WHD_FALSE); -- if (result == WHD_SUCCESS) -- { -- /* Wait for the WHD thread to end */ -- cy_rtos_join_thread(&thread_info->whd_thread); -- } -- else -- { -- WPRINT_WHD_ERROR( ("Error setting semaphore in %s at %d \n", __func__, __LINE__) ); -- } -- -- /* Delete the semaphore */ -- /* Ignore return - not much can be done about failure */ -- (void)cy_rtos_deinit_semaphore(&thread_info->transceive_semaphore); --} -- --/** -- * Informs WHD of an interrupt -- * -- * This function should be called from the SDIO/SPI interrupt function -- * and usually indicates newly received data is available. -- * It wakes the WHD Thread, forcing it to check the send/receive -- * -- */ --/* ignore failure since there is nothing that can be done about it in a ISR */ --void whd_thread_notify_irq(whd_driver_t whd_driver) --{ -- whd_driver->thread_info.bus_interrupt = WHD_TRUE; -- -- /* just wake up the main thread and let it deal with the data */ -- if (whd_driver->thread_info.whd_inited == WHD_TRUE) -- { -- (void)cy_rtos_set_semaphore(&whd_driver->thread_info.transceive_semaphore, WHD_TRUE); -- } --} -- --void whd_thread_notify(whd_driver_t whd_driver) --{ -- /* just wake up the main thread and let it deal with the data */ -- if (whd_driver->thread_info.whd_inited == WHD_TRUE) -- { -- /* Ignore return - not much can be done about failure */ -- (void)cy_rtos_set_semaphore(&whd_driver->thread_info.transceive_semaphore, WHD_FALSE); -- } --} -- --/****************************************************** --* Static Functions --******************************************************/ -- --/** The WHD Thread function -- * -- * This is the main loop of the WHD Thread. -- * It simply calls @ref whd_thread_poll_all to send/receive all waiting packets, then goes -- * to sleep. The sleep has a 100ms timeout, causing the send/receive queues to be -- * checked 10 times per second in case an interrupt is missed. -- * Once the quit flag has been set, flags/mutexes are cleaned up, and the function exits. -- * -- * @param thread_input : unused parameter needed to match thread prototype. -- * -- */ --static void whd_thread_func(whd_thread_arg_t thread_input) --{ -- int8_t rx_status; -- int8_t tx_status; -- uint8_t rx_cnt; -- -- whd_driver_t whd_driver = ( whd_driver_t )thread_input; -- whd_thread_info_t *thread_info = &whd_driver->thread_info; -- -- WPRINT_WHD_DATA_LOG( ("Started whd Thread\n") ); -- -- /* Interrupts may be enabled inside thread. To make sure none lost set flag now. */ -- thread_info->whd_inited = WHD_TRUE; -- -- while (thread_info->thread_quit_flag != WHD_TRUE) -- { -- rx_cnt = 0; -- /* Check if we were woken by interrupt */ -- if ( (thread_info->bus_interrupt == WHD_TRUE) || -- (whd_bus_use_status_report_scheme(whd_driver) ) ) -- { -- thread_info->bus_interrupt = WHD_FALSE; -- -- /* Check if the interrupt indicated there is a packet to read */ -- if (whd_bus_packet_available_to_read(whd_driver) != 0) -- { -- /* Receive all available packets */ -- do -- { -- rx_status = whd_thread_receive_one_packet(whd_driver); -- rx_cnt++; -- } while (rx_status != 0 && rx_cnt < WHD_THREAD_RX_BOUND); -- } -- } -- -- /* Send all queued packets */ -- do -- { -- tx_status = whd_thread_send_one_packet(whd_driver); -- } while (tx_status != 0); -- -- if (rx_cnt >= WHD_THREAD_RX_BOUND) -- { -- thread_info->bus_interrupt = WHD_TRUE; -- continue; -- } -- -- /* Sleep till WLAN do something */ -- whd_bus_wait_for_wlan_event(whd_driver, &thread_info->transceive_semaphore); -- WPRINT_WHD_DATA_LOG( ("whd Thread: Woke\n") ); -- } -- -- /* Set flag before releasing objects */ -- thread_info->whd_inited = WHD_FALSE; -- -- /* Reset the quit flag */ -- thread_info->thread_quit_flag = WHD_FALSE; -- -- whd_sdpcm_quit(whd_driver); -- -- WPRINT_WHD_DATA_LOG( ("Stopped whd Thread\n") ); -- -- /* Ignore return - not much can be done about failure */ -- (void)cy_rtos_exit_thread(); --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_utils.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_utils.c -deleted file mode 100644 -index 1d0c136569..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_utils.c -+++ /dev/null -@@ -1,877 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** -- * @file WHD utilities -- * -- * Utilities to help do specialized (not general purpose) WHD specific things -- */ --#include "whd_debug.h" --#include "whd_utils.h" --#include "whd_chip_constants.h" --#include "whd_endian.h" --#include "whd_int.h" -- --#define UNSIGNED_CHAR_TO_CHAR(uch) ( (uch)& 0x7f ) -- --#define RSPEC_KBPS_MASK (0x7f) --#define RSPEC_500KBPS(rate) ( (rate)& RSPEC_KBPS_MASK ) --#define RSPEC_TO_KBPS(rate) (RSPEC_500KBPS( (rate) ) * (unsigned int)500) -- --#define OTP_WORD_SIZE 16 /* Word size in bits */ --#define WPA_OUI_TYPE1 "\x00\x50\xF2\x01" /** WPA OUI */ -- --/****************************************************** --* Static Variables --******************************************************/ --whd_tlv8_data_t *whd_tlv_find_tlv8(const uint8_t *message, uint32_t message_length, uint8_t type); -- --whd_tlv8_data_t *whd_tlv_find_tlv8(const uint8_t *message, uint32_t message_length, uint8_t type) --{ -- while (message_length != 0) -- { -- uint8_t current_tlv_type = message[0]; -- uint16_t current_tlv_length = (uint16_t)(message[1] + 2); -- -- /* Check if we've overrun the buffer */ -- if (current_tlv_length > message_length) -- { -- return NULL; -- } -- -- /* Check if we've found the type we are looking for */ -- if (current_tlv_type == type) -- { -- return (whd_tlv8_data_t *)message; -- } -- -- /* Skip current TLV */ -- message += current_tlv_length; -- message_length -= current_tlv_length; -- } -- return 0; --} -- --inline whd_tlv8_header_t *whd_parse_tlvs(const whd_tlv8_header_t *tlv_buf, uint32_t buflen, -- dot11_ie_id_t key) --{ -- return (whd_tlv8_header_t *)whd_tlv_find_tlv8( (const uint8_t *)tlv_buf, buflen, key ); --} -- --whd_bool_t whd_is_wpa_ie(vendor_specific_ie_header_t *wpaie, whd_tlv8_header_t **tlvs, uint32_t *tlvs_len) --{ -- whd_tlv8_header_t *prev_tlvs = *tlvs; -- whd_tlv8_header_t *new_tlvs = *tlvs; -- vendor_specific_ie_header_t *ie = wpaie; -- -- /* If the contents match the WPA_OUI and type=1 */ -- if ( (ie->tlv_header.length >= (uint8_t)VENDOR_SPECIFIC_IE_MINIMUM_LENGTH) && -- (memcmp(ie->oui, WPA_OUI_TYPE1, sizeof(ie->oui) ) == 0) ) -- { -- /* Found the WPA IE */ -- return WHD_TRUE; -- } -- -- /* calculate the next ie address */ -- new_tlvs = (whd_tlv8_header_t *)( ( (uint8_t *)ie ) + ie->tlv_header.length + sizeof(whd_tlv8_header_t) ); -- -- /* check the rest of length of buffer */ -- if (*tlvs_len < (uint32_t)( ( (uint8_t *)new_tlvs ) - ( (uint8_t *)prev_tlvs ) ) ) -- { -- /* set rest of length to zero to avoid buffer overflow */ -- *tlvs_len = 0; -- } -- else -- { -- /* point to the next ie */ -- *tlvs = new_tlvs; -- -- /* tlvs now points to the beginning of next IE pointer, and *ie points to one or more TLV further -- * down from the *prev_tlvs. So the tlvs_len need to be adjusted by prev_tlvs instead of *ie */ -- *tlvs_len -= (uint32_t)( ( (uint8_t *)*tlvs ) - ( (uint8_t *)prev_tlvs ) ); -- } -- -- return WHD_FALSE; --} -- --whd_tlv8_header_t *whd_parse_dot11_tlvs(const whd_tlv8_header_t *tlv_buf, uint32_t buflen, dot11_ie_id_t key) --{ -- return (whd_tlv8_header_t *)whd_tlv_find_tlv8( (const uint8_t *)tlv_buf, buflen, key ); --} -- --#ifdef WPRINT_ENABLE_WHD_DEBUG --char *whd_ssid_to_string(uint8_t *value, uint8_t length, char *ssid_buf, uint8_t ssid_buf_len) --{ -- memset(ssid_buf, 0, ssid_buf_len); -- -- if (ssid_buf_len > 0) -- { -- memcpy(ssid_buf, value, ssid_buf_len < length ? ssid_buf_len : length); -- } -- -- return ssid_buf; --} -- --/* When adding new events, update this switch statement to print correct string */ --#define CASE_RETURN_STRING(value) case value: \ -- return # value; -- --#define CASE_RETURN(value) case value: \ -- break; -- --const char *whd_event_to_string(whd_event_num_t value) --{ -- switch (value) -- { -- CASE_RETURN_STRING(WLC_E_ULP) -- CASE_RETURN(WLC_E_BT_WIFI_HANDOVER_REQ) -- CASE_RETURN(WLC_E_SPW_TXINHIBIT) -- CASE_RETURN(WLC_E_FBT_AUTH_REQ_IND) -- CASE_RETURN(WLC_E_RSSI_LQM) -- CASE_RETURN(WLC_E_PFN_GSCAN_FULL_RESULT) -- CASE_RETURN(WLC_E_PFN_SWC) -- CASE_RETURN(WLC_E_AUTHORIZED) -- CASE_RETURN(WLC_E_PROBREQ_MSG_RX) -- CASE_RETURN(WLC_E_RMC_EVENT) -- CASE_RETURN(WLC_E_DPSTA_INTF_IND) -- CASE_RETURN_STRING(WLC_E_NONE) -- CASE_RETURN_STRING(WLC_E_SET_SSID) -- CASE_RETURN(WLC_E_PFN_BEST_BATCHING) -- CASE_RETURN(WLC_E_JOIN) -- CASE_RETURN(WLC_E_START) -- CASE_RETURN_STRING(WLC_E_AUTH) -- CASE_RETURN(WLC_E_AUTH_IND) -- CASE_RETURN(WLC_E_DEAUTH) -- CASE_RETURN_STRING(WLC_E_DEAUTH_IND) -- CASE_RETURN(WLC_E_ASSOC) -- CASE_RETURN(WLC_E_ASSOC_IND) -- CASE_RETURN(WLC_E_REASSOC) -- CASE_RETURN(WLC_E_REASSOC_IND) -- CASE_RETURN(WLC_E_DISASSOC) -- CASE_RETURN_STRING(WLC_E_DISASSOC_IND) -- CASE_RETURN(WLC_E_ROAM) -- CASE_RETURN(WLC_E_ROAM_PREP) -- CASE_RETURN(WLC_E_ROAM_START) -- CASE_RETURN(WLC_E_QUIET_START) -- CASE_RETURN(WLC_E_QUIET_END) -- CASE_RETURN(WLC_E_BEACON_RX) -- CASE_RETURN_STRING(WLC_E_LINK) -- CASE_RETURN_STRING(WLC_E_RRM) -- CASE_RETURN(WLC_E_MIC_ERROR) -- CASE_RETURN(WLC_E_NDIS_LINK) -- CASE_RETURN(WLC_E_TXFAIL) -- CASE_RETURN(WLC_E_PMKID_CACHE) -- CASE_RETURN(WLC_E_RETROGRADE_TSF) -- CASE_RETURN(WLC_E_PRUNE) -- CASE_RETURN(WLC_E_AUTOAUTH) -- CASE_RETURN(WLC_E_EAPOL_MSG) -- CASE_RETURN(WLC_E_SCAN_COMPLETE) -- CASE_RETURN(WLC_E_ADDTS_IND) -- CASE_RETURN(WLC_E_DELTS_IND) -- CASE_RETURN(WLC_E_BCNSENT_IND) -- CASE_RETURN(WLC_E_BCNRX_MSG) -- CASE_RETURN(WLC_E_BCNLOST_MSG) -- CASE_RETURN_STRING(WLC_E_PFN_NET_FOUND) -- CASE_RETURN(WLC_E_PFN_NET_LOST) -- CASE_RETURN(WLC_E_RESET_COMPLETE) -- CASE_RETURN(WLC_E_JOIN_START) -- CASE_RETURN(WLC_E_ASSOC_START) -- CASE_RETURN(WLC_E_IBSS_ASSOC) -- CASE_RETURN(WLC_E_RADIO) -- CASE_RETURN(WLC_E_PSM_WATCHDOG) -- CASE_RETURN(WLC_E_CCX_ASSOC_START) -- CASE_RETURN(WLC_E_CCX_ASSOC_ABORT) -- CASE_RETURN(WLC_E_PROBREQ_MSG) -- CASE_RETURN(WLC_E_SCAN_CONFIRM_IND) -- CASE_RETURN_STRING(WLC_E_PSK_SUP) -- CASE_RETURN(WLC_E_COUNTRY_CODE_CHANGED) -- CASE_RETURN(WLC_E_EXCEEDED_MEDIUM_TIME) -- CASE_RETURN(WLC_E_ICV_ERROR) -- CASE_RETURN(WLC_E_UNICAST_DECODE_ERROR) -- CASE_RETURN(WLC_E_MULTICAST_DECODE_ERROR) -- CASE_RETURN(WLC_E_TRACE) -- CASE_RETURN(WLC_E_BTA_HCI_EVENT) -- CASE_RETURN(WLC_E_IF) -- CASE_RETURN(WLC_E_P2P_DISC_LISTEN_COMPLETE) -- CASE_RETURN(WLC_E_RSSI) -- CASE_RETURN_STRING(WLC_E_PFN_SCAN_COMPLETE) -- CASE_RETURN(WLC_E_EXTLOG_MSG) -- CASE_RETURN(WLC_E_ACTION_FRAME) -- CASE_RETURN(WLC_E_ACTION_FRAME_COMPLETE) -- CASE_RETURN(WLC_E_PRE_ASSOC_IND) -- CASE_RETURN(WLC_E_PRE_REASSOC_IND) -- CASE_RETURN(WLC_E_CHANNEL_ADOPTED) -- CASE_RETURN(WLC_E_AP_STARTED) -- CASE_RETURN(WLC_E_DFS_AP_STOP) -- CASE_RETURN(WLC_E_DFS_AP_RESUME) -- CASE_RETURN(WLC_E_WAI_STA_EVENT) -- CASE_RETURN(WLC_E_WAI_MSG) -- CASE_RETURN_STRING(WLC_E_ESCAN_RESULT) -- CASE_RETURN(WLC_E_ACTION_FRAME_OFF_CHAN_COMPLETE) -- CASE_RETURN(WLC_E_PROBRESP_MSG) -- CASE_RETURN(WLC_E_P2P_PROBREQ_MSG) -- CASE_RETURN(WLC_E_DCS_REQUEST) -- CASE_RETURN(WLC_E_FIFO_CREDIT_MAP) -- CASE_RETURN(WLC_E_ACTION_FRAME_RX) -- CASE_RETURN(WLC_E_WAKE_EVENT) -- CASE_RETURN(WLC_E_RM_COMPLETE) -- CASE_RETURN(WLC_E_HTSFSYNC) -- CASE_RETURN(WLC_E_OVERLAY_REQ) -- CASE_RETURN_STRING(WLC_E_CSA_COMPLETE_IND) -- CASE_RETURN(WLC_E_EXCESS_PM_WAKE_EVENT) -- CASE_RETURN(WLC_E_PFN_SCAN_NONE) -- CASE_RETURN(WLC_E_PFN_SCAN_ALLGONE) -- CASE_RETURN(WLC_E_GTK_PLUMBED) -- CASE_RETURN(WLC_E_ASSOC_IND_NDIS) -- CASE_RETURN(WLC_E_REASSOC_IND_NDIS) -- CASE_RETURN(WLC_E_ASSOC_REQ_IE) -- CASE_RETURN(WLC_E_ASSOC_RESP_IE) -- CASE_RETURN(WLC_E_ASSOC_RECREATED) -- CASE_RETURN(WLC_E_ACTION_FRAME_RX_NDIS) -- CASE_RETURN(WLC_E_AUTH_REQ) -- CASE_RETURN(WLC_E_TDLS_PEER_EVENT) -- CASE_RETURN(WLC_E_SPEEDY_RECREATE_FAIL) -- CASE_RETURN(WLC_E_NATIVE) -- CASE_RETURN(WLC_E_PKTDELAY_IND) -- CASE_RETURN(WLC_E_AWDL_AW) -- CASE_RETURN(WLC_E_AWDL_ROLE) -- CASE_RETURN(WLC_E_AWDL_EVENT) -- CASE_RETURN(WLC_E_NIC_AF_TXS) -- CASE_RETURN(WLC_E_NAN) -- CASE_RETURN(WLC_E_BEACON_FRAME_RX) -- CASE_RETURN(WLC_E_SERVICE_FOUND) -- CASE_RETURN(WLC_E_GAS_FRAGMENT_RX) -- CASE_RETURN(WLC_E_GAS_COMPLETE) -- CASE_RETURN(WLC_E_P2PO_ADD_DEVICE) -- CASE_RETURN(WLC_E_P2PO_DEL_DEVICE) -- CASE_RETURN(WLC_E_WNM_STA_SLEEP) -- CASE_RETURN(WLC_E_TXFAIL_THRESH) -- CASE_RETURN(WLC_E_PROXD) -- CASE_RETURN(WLC_E_IBSS_COALESCE) -- CASE_RETURN(WLC_E_AWDL_RX_PRB_RESP) -- CASE_RETURN(WLC_E_AWDL_RX_ACT_FRAME) -- CASE_RETURN(WLC_E_AWDL_WOWL_NULLPKT) -- CASE_RETURN(WLC_E_AWDL_PHYCAL_STATUS) -- CASE_RETURN(WLC_E_AWDL_OOB_AF_STATUS) -- CASE_RETURN(WLC_E_AWDL_SCAN_STATUS) -- CASE_RETURN(WLC_E_AWDL_AW_START) -- CASE_RETURN(WLC_E_AWDL_AW_END) -- CASE_RETURN(WLC_E_AWDL_AW_EXT) -- CASE_RETURN(WLC_E_AWDL_PEER_CACHE_CONTROL) -- CASE_RETURN(WLC_E_CSA_START_IND) -- CASE_RETURN(WLC_E_CSA_DONE_IND) -- CASE_RETURN(WLC_E_CSA_FAILURE_IND) -- CASE_RETURN(WLC_E_CCA_CHAN_QUAL) -- CASE_RETURN(WLC_E_BSSID) -- CASE_RETURN(WLC_E_TX_STAT_ERROR) -- CASE_RETURN(WLC_E_BCMC_CREDIT_SUPPORT) -- CASE_RETURN(WLC_E_PSTA_PRIMARY_INTF_IND) -- case WLC_E_LAST: -- default: -- return "Unknown"; -- -- break; -- } -- -- return "Unknown"; --} -- --const char *whd_status_to_string(whd_event_status_t status) --{ -- switch (status) -- { -- CASE_RETURN_STRING(WLC_E_STATUS_SUCCESS) -- CASE_RETURN_STRING(WLC_E_STATUS_FAIL) -- CASE_RETURN_STRING(WLC_E_STATUS_TIMEOUT) -- CASE_RETURN_STRING(WLC_E_STATUS_NO_NETWORKS) -- CASE_RETURN_STRING(WLC_E_STATUS_ABORT) -- CASE_RETURN_STRING(WLC_E_STATUS_NO_ACK) -- CASE_RETURN_STRING(WLC_E_STATUS_UNSOLICITED) -- CASE_RETURN_STRING(WLC_E_STATUS_ATTEMPT) -- CASE_RETURN_STRING(WLC_E_STATUS_PARTIAL) -- CASE_RETURN_STRING(WLC_E_STATUS_NEWSCAN) -- CASE_RETURN_STRING(WLC_E_STATUS_NEWASSOC) -- CASE_RETURN_STRING(WLC_E_STATUS_11HQUIET) -- CASE_RETURN_STRING(WLC_E_STATUS_SUPPRESS) -- CASE_RETURN_STRING(WLC_E_STATUS_NOCHANS) -- CASE_RETURN_STRING(WLC_E_STATUS_CCXFASTRM) -- CASE_RETURN_STRING(WLC_E_STATUS_CS_ABORT) -- CASE_RETURN_STRING(WLC_SUP_DISCONNECTED) -- CASE_RETURN_STRING(WLC_SUP_CONNECTING) -- CASE_RETURN_STRING(WLC_SUP_IDREQUIRED) -- CASE_RETURN_STRING(WLC_SUP_AUTHENTICATING) -- CASE_RETURN_STRING(WLC_SUP_AUTHENTICATED) -- CASE_RETURN_STRING(WLC_SUP_KEYXCHANGE) -- CASE_RETURN_STRING(WLC_SUP_KEYED) -- CASE_RETURN_STRING(WLC_SUP_TIMEOUT) -- CASE_RETURN_STRING(WLC_SUP_LAST_BASIC_STATE) -- CASE_RETURN_STRING(WLC_SUP_KEYXCHANGE_PREP_M4) -- CASE_RETURN_STRING(WLC_SUP_KEYXCHANGE_WAIT_G1) -- CASE_RETURN_STRING(WLC_SUP_KEYXCHANGE_PREP_G2) -- CASE_RETURN_STRING(WLC_DOT11_SC_SUCCESS) -- CASE_RETURN_STRING(WLC_DOT11_SC_FAILURE) -- CASE_RETURN_STRING(WLC_DOT11_SC_CAP_MISMATCH) -- CASE_RETURN_STRING(WLC_DOT11_SC_REASSOC_FAIL) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_FAIL) -- CASE_RETURN_STRING(WLC_DOT11_SC_AUTH_MISMATCH) -- CASE_RETURN_STRING(WLC_DOT11_SC_AUTH_SEQ) -- CASE_RETURN_STRING(WLC_DOT11_SC_AUTH_CHALLENGE_FAIL) -- CASE_RETURN_STRING(WLC_DOT11_SC_AUTH_TIMEOUT) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_BUSY_FAIL) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_RATE_MISMATCH) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_SHORT_REQUIRED) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_PBCC_REQUIRED) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_AGILITY_REQUIRED) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_SPECTRUM_REQUIRED) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_BAD_POWER_CAP) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_BAD_SUP_CHANNELS) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_SHORTSLOT_REQUIRED) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_ERPBCC_REQUIRED) -- CASE_RETURN_STRING(WLC_DOT11_SC_ASSOC_DSSOFDM_REQUIRED) -- CASE_RETURN_STRING(WLC_DOT11_SC_DECLINED) -- CASE_RETURN_STRING(WLC_DOT11_SC_INVALID_PARAMS) -- CASE_RETURN_STRING(WLC_DOT11_SC_INVALID_AKMP) -- CASE_RETURN_STRING(WLC_DOT11_SC_INVALID_MDID) -- CASE_RETURN_STRING(WLC_DOT11_SC_INVALID_FTIE) -- case WLC_E_STATUS_FORCE_32_BIT: -- default: -- break; -- } -- return "Unknown"; --} -- --const char *whd_reason_to_string(whd_event_reason_t reason) --{ -- switch (reason) -- { -- CASE_RETURN_STRING(WLC_E_REASON_INITIAL_ASSOC) -- CASE_RETURN_STRING(WLC_E_REASON_LOW_RSSI) -- CASE_RETURN_STRING(WLC_E_REASON_DEAUTH) -- CASE_RETURN_STRING(WLC_E_REASON_DISASSOC) -- CASE_RETURN_STRING(WLC_E_REASON_BCNS_LOST) -- CASE_RETURN_STRING(WLC_E_REASON_FAST_ROAM_FAILED) -- CASE_RETURN_STRING(WLC_E_REASON_DIRECTED_ROAM) -- CASE_RETURN_STRING(WLC_E_REASON_TSPEC_REJECTED) -- CASE_RETURN_STRING(WLC_E_REASON_BETTER_AP) -- CASE_RETURN_STRING(WLC_E_PRUNE_ENCR_MISMATCH) -- CASE_RETURN_STRING(WLC_E_PRUNE_BCAST_BSSID) -- CASE_RETURN_STRING(WLC_E_PRUNE_MAC_DENY) -- CASE_RETURN_STRING(WLC_E_PRUNE_MAC_NA) -- CASE_RETURN_STRING(WLC_E_PRUNE_REG_PASSV) -- CASE_RETURN_STRING(WLC_E_PRUNE_SPCT_MGMT) -- CASE_RETURN_STRING(WLC_E_PRUNE_RADAR) -- CASE_RETURN_STRING(WLC_E_RSN_MISMATCH) -- CASE_RETURN_STRING(WLC_E_PRUNE_NO_COMMON_RATES) -- CASE_RETURN_STRING(WLC_E_PRUNE_BASIC_RATES) -- CASE_RETURN_STRING(WLC_E_PRUNE_CCXFAST_PREVAP) -- CASE_RETURN_STRING(WLC_E_PRUNE_CIPHER_NA) -- CASE_RETURN_STRING(WLC_E_PRUNE_KNOWN_STA) -- CASE_RETURN_STRING(WLC_E_PRUNE_CCXFAST_DROAM) -- CASE_RETURN_STRING(WLC_E_PRUNE_WDS_PEER) -- CASE_RETURN_STRING(WLC_E_PRUNE_QBSS_LOAD) -- CASE_RETURN_STRING(WLC_E_PRUNE_HOME_AP) -- CASE_RETURN_STRING(WLC_E_PRUNE_AP_BLOCKED) -- CASE_RETURN_STRING(WLC_E_PRUNE_NO_DIAG_SUPPORT) -- CASE_RETURN_STRING(WLC_E_SUP_OTHER) -- CASE_RETURN_STRING(WLC_E_SUP_DECRYPT_KEY_DATA) -- CASE_RETURN_STRING(WLC_E_SUP_BAD_UCAST_WEP128) -- CASE_RETURN_STRING(WLC_E_SUP_BAD_UCAST_WEP40) -- CASE_RETURN_STRING(WLC_E_SUP_UNSUP_KEY_LEN) -- CASE_RETURN_STRING(WLC_E_SUP_PW_KEY_CIPHER) -- CASE_RETURN_STRING(WLC_E_SUP_MSG3_TOO_MANY_IE) -- CASE_RETURN_STRING(WLC_E_SUP_MSG3_IE_MISMATCH) -- CASE_RETURN_STRING(WLC_E_SUP_NO_INSTALL_FLAG) -- CASE_RETURN_STRING(WLC_E_SUP_MSG3_NO_GTK) -- CASE_RETURN_STRING(WLC_E_SUP_GRP_KEY_CIPHER) -- CASE_RETURN_STRING(WLC_E_SUP_GRP_MSG1_NO_GTK) -- CASE_RETURN_STRING(WLC_E_SUP_GTK_DECRYPT_FAIL) -- CASE_RETURN_STRING(WLC_E_SUP_SEND_FAIL) -- CASE_RETURN_STRING(WLC_E_SUP_DEAUTH) -- CASE_RETURN_STRING(WLC_E_SUP_WPA_PSK_TMO) -- CASE_RETURN_STRING(DOT11_RC_RESERVED) -- CASE_RETURN_STRING(DOT11_RC_UNSPECIFIED) -- CASE_RETURN_STRING(DOT11_RC_AUTH_INVAL) -- CASE_RETURN_STRING(DOT11_RC_DEAUTH_LEAVING) -- CASE_RETURN_STRING(DOT11_RC_INACTIVITY) -- CASE_RETURN_STRING(DOT11_RC_BUSY) -- CASE_RETURN_STRING(DOT11_RC_INVAL_CLASS_2) -- CASE_RETURN_STRING(DOT11_RC_INVAL_CLASS_3) -- CASE_RETURN_STRING(DOT11_RC_DISASSOC_LEAVING) -- CASE_RETURN_STRING(DOT11_RC_NOT_AUTH) -- CASE_RETURN_STRING(DOT11_RC_BAD_PC) -- CASE_RETURN_STRING(DOT11_RC_BAD_CHANNELS) -- CASE_RETURN_STRING(DOT11_RC_UNSPECIFIED_QOS) -- CASE_RETURN_STRING(DOT11_RC_INSUFFCIENT_BW) -- CASE_RETURN_STRING(DOT11_RC_EXCESSIVE_FRAMES) -- CASE_RETURN_STRING(DOT11_RC_TX_OUTSIDE_TXOP) -- CASE_RETURN_STRING(DOT11_RC_LEAVING_QBSS) -- CASE_RETURN_STRING(DOT11_RC_BAD_MECHANISM) -- CASE_RETURN_STRING(DOT11_RC_SETUP_NEEDED) -- CASE_RETURN_STRING(DOT11_RC_TIMEOUT) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_STATUS_CHG) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_MERGE) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_STOP) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_P2P) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_WINDOW_BEGIN_P2P) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_WINDOW_BEGIN_MESH) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_WINDOW_BEGIN_IBSS) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_WINDOW_BEGIN_RANGING) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_POST_DISC) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_DATA_IF_ADD) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_DATA_PEER_ADD) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_DATA_IND) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_DATA_CONF) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_SDF_RX) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_DATA_END) -- CASE_RETURN_STRING(WLC_E_NAN_EVENT_BCN_RX) -- case DOT11_RC_MAX: -- case WLC_E_REASON_FORCE_32_BIT: -- default: -- break; -- } -- -- return "Unknown"; --} -- --char *whd_ether_ntoa(const uint8_t *ea, char *buf, uint8_t buf_len) --{ -- const char hex[] = -- { -- '0', '1', '2', '3', '4', '5', '6', '7', -- '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' -- }; -- char *output = buf; -- const uint8_t *octet = ea; -- -- if (buf_len < WHD_ETHER_ADDR_STR_LEN) -- { -- if (buf_len > 0) -- { -- /* buffer too short */ -- buf[0] = '\0'; -- } -- return buf; -- } -- -- for (; octet != &ea[WHD_ETHER_ADDR_LEN]; octet++) -- { -- *output++ = hex[(*octet >> 4) & 0xf]; -- *output++ = hex[*octet & 0xf]; -- *output++ = ':'; -- } -- -- *(output - 1) = '\0'; -- -- return buf; --} -- --#endif /* WPRINT_ENABLE_WHD_DEBUG */ -- --void whd_convert_security_type_to_string(whd_security_t security, char *out_str, uint16_t out_str_len) --{ -- if (security == WHD_SECURITY_OPEN) -- { -- strncat(out_str, " Open", out_str_len); -- } -- if (security & WEP_ENABLED) -- { -- strncat(out_str, " WEP", out_str_len); -- } -- if (security & WPA3_SECURITY) -- { -- strncat(out_str, " WPA3", out_str_len); -- } -- if (security & WPA2_SECURITY) -- { -- strncat(out_str, " WPA2", out_str_len); -- } -- if (security & WPA_SECURITY) -- { -- strncat(out_str, " WPA", out_str_len); -- } -- if (security & AES_ENABLED) -- { -- strncat(out_str, " AES", out_str_len); -- } -- if (security & TKIP_ENABLED) -- { -- strncat(out_str, " TKIP", out_str_len); -- } -- if (security & SHARED_ENABLED) -- { -- strncat(out_str, " SHARED", out_str_len); -- } -- if (security & ENTERPRISE_ENABLED) -- { -- strncat(out_str, " Enterprise", out_str_len); -- } -- if (security & WPS_ENABLED) -- { -- strncat(out_str, " WPS", out_str_len); -- } -- if (security & FBT_ENABLED) -- { -- strncat(out_str, " FBT", out_str_len); -- } -- if (security & IBSS_ENABLED) -- { -- strncat(out_str, " IBSS", out_str_len); -- } -- if (security == WHD_SECURITY_UNKNOWN) -- { -- strncat(out_str, " Unknown", out_str_len); -- } -- if (!(security & ENTERPRISE_ENABLED) && (security != WHD_SECURITY_OPEN) && -- (security != WHD_SECURITY_UNKNOWN) ) -- { -- strncat(out_str, " PSK", out_str_len); -- } --} -- --/*! -- ****************************************************************************** -- * Prints partial details of a scan result on a single line -- * -- * @param[in] record A pointer to the whd_scan_result_t record -- * -- */ -- --void whd_print_scan_result(whd_scan_result_t *record) --{ -- const char *str = NULL; -- char sec_type_string[40] = { 0 }; -- -- switch (record->bss_type) -- { -- case WHD_BSS_TYPE_ADHOC: -- str = "Adhoc"; -- break; -- -- case WHD_BSS_TYPE_INFRASTRUCTURE: -- str = "Infra"; -- break; -- -- case WHD_BSS_TYPE_ANY: -- str = "Any"; -- break; -- -- case WHD_BSS_TYPE_MESH: -- case WHD_BSS_TYPE_UNKNOWN: -- str = "Unknown"; -- break; -- -- default: -- str = "?"; -- break; -- } -- -- UNUSED_PARAMETER(str); -- WPRINT_MACRO( ("%5s ", str) ); -- WPRINT_MACRO( ("%02X:%02X:%02X:%02X:%02X:%02X ", record->BSSID.octet[0], record->BSSID.octet[1], -- record->BSSID.octet[2], record->BSSID.octet[3], record->BSSID.octet[4], -- record->BSSID.octet[5]) ); -- -- if (record->flags & WHD_SCAN_RESULT_FLAG_RSSI_OFF_CHANNEL) -- { -- WPRINT_MACRO( ("OFF ") ); -- } -- else -- { -- WPRINT_MACRO( ("%d ", record->signal_strength) ); -- } -- -- if (record->max_data_rate < 100000) -- { -- WPRINT_MACRO( (" %.1f ", (double)(record->max_data_rate / 1000.0) ) ); -- } -- else -- { -- WPRINT_MACRO( ("%.1f ", (double)(record->max_data_rate / 1000.0) ) ); -- } -- WPRINT_MACRO( (" %3d ", record->channel) ); -- -- whd_convert_security_type_to_string(record->security, sec_type_string, (sizeof(sec_type_string) - 1) ); -- -- WPRINT_MACRO( ("%-20s ", sec_type_string) ); -- WPRINT_MACRO( (" %-32s ", record->SSID.value) ); -- -- if (record->ccode[0] != '\0') -- { -- WPRINT_MACRO( ("%c%c ", record->ccode[0], record->ccode[1]) ); -- } -- else -- { -- WPRINT_MACRO( (" ") ); -- } -- -- if (record->flags & WHD_SCAN_RESULT_FLAG_BEACON) -- { -- WPRINT_MACRO( (" %-15s", " BEACON") ); -- } -- else -- { -- WPRINT_MACRO( (" %-15s", " PROBE ") ); -- } -- WPRINT_MACRO( ("\n") ); --} -- --void whd_hexdump(uint8_t *data, uint32_t data_len) --{ -- uint32_t i; -- uint8_t buff[17] = {0}; -- -- UNUSED_PARAMETER(buff); -- for (i = 0; i < data_len; i++) -- { -- if ( (i % 16) == 0 ) -- { -- if (i != 0) -- { -- WPRINT_MACRO( (" %s\n", buff) ); -- } -- WPRINT_MACRO( ("%04" PRIx32 " ", i) ); -- } -- WPRINT_MACRO( (" %02x", data[i]) ); -- -- if ( (data[i] < 0x20) || (data[i] > 0x7e) ) -- { -- buff[i % 16] = '.'; -- } -- else -- { -- buff[i % 16] = data[i]; -- } -- buff[(i % 16) + 1] = '\0'; -- } -- while ( (i % 16) != 0 ) -- { -- WPRINT_MACRO( (" ") ); -- i++; -- } -- WPRINT_MACRO( (" %s\n", buff) ); --} -- --void whd_ioctl_to_string(uint32_t cmd, char *ioctl_str, uint16_t ioctl_str_len) --{ -- if (cmd == 2) -- { -- strncpy(ioctl_str, "WLC_UP", ioctl_str_len); -- } -- else if (cmd == 20) -- { -- strncpy(ioctl_str, "WLC_SET_INFRA", ioctl_str_len); -- } -- else if (cmd == 22) -- { -- strncpy(ioctl_str, "WLC_SET_AUTH", ioctl_str_len); -- } -- else if (cmd == 26) -- { -- strncpy(ioctl_str, "WLC_SET_SSID", ioctl_str_len); -- } -- else if (cmd == 52) -- { -- strncpy(ioctl_str, "WLC_DISASSOC", ioctl_str_len); -- } -- else if (cmd == 55) -- { -- strncpy(ioctl_str, "WLC_SET_ROAM_TRIGGER", ioctl_str_len); -- } -- else if (cmd == 57) -- { -- strncpy(ioctl_str, "WLC_SET_ROAM_DELTA", ioctl_str_len); -- } -- else if (cmd == 59) -- { -- strncpy(ioctl_str, "WLC_SET_ROAM_SCAN_PERIOD", ioctl_str_len); -- } -- else if (cmd == 110) -- { -- strncpy(ioctl_str, "WLC_SET_GMODE", ioctl_str_len); -- } -- else if (cmd == 116) -- { -- strncpy(ioctl_str, "WLC_SET_SCANSUPPRESS", ioctl_str_len); -- } -- else if (cmd == 134) -- { -- strncpy(ioctl_str, "WLC_SET_WSEC", ioctl_str_len); -- } -- else if (cmd == 165) -- { -- strncpy(ioctl_str, "WLC_SET_WPA_AUTH", ioctl_str_len); -- } -- else if (cmd == 268) -- { -- strncpy(ioctl_str, "WLC_SET_WSEC_PMK", ioctl_str_len); -- } --} -- --void whd_event_info_to_string(uint32_t cmd, uint16_t flag, uint32_t reason, char *ioctl_str, uint16_t ioctl_str_len) --{ -- if (cmd == 0) -- { -- strncpy(ioctl_str, "WLC_E_SET_SSID", ioctl_str_len); -- } -- else if (cmd == 3) -- { -- strncpy(ioctl_str, "WLC_E_AUTH ", ioctl_str_len); -- } -- else if (cmd == 16) -- { -- strncpy(ioctl_str, "WLC_E_LINK ", ioctl_str_len); -- } -- else if (cmd == 46) -- { -- strncpy(ioctl_str, "WLC_E_PSK_SUP ", ioctl_str_len); -- } -- else if (cmd == 54) -- { -- strncpy(ioctl_str, "WLC_E_IF ", ioctl_str_len); -- } -- else if (cmd == 69) -- { -- strncpy(ioctl_str, "WLC_E_ESCAN_RESULT", ioctl_str_len); -- } -- -- if (flag == 0) -- { -- strncat(ioctl_str, " WLC_E_STATUS_SUCCESS", ioctl_str_len); -- } -- if (flag == 8) -- { -- strncat(ioctl_str, " WLC_E_STATUS_PARTIAL", ioctl_str_len); -- } -- else if (flag == 262) -- { -- strncat(ioctl_str, " WLC_SUP_KEYED ", ioctl_str_len); -- } -- -- if (reason == 0) -- { -- strncat(ioctl_str, " WLC_E_REASON_INITIAL_ASSOC", ioctl_str_len); -- } -- else if (reason == 512) -- { -- strncat(ioctl_str, " WLC_E_SUP_OTHER", ioctl_str_len); -- } --} -- --bool whd_str_to_ip(const char *ip4addr, size_t len, void *dest) --{ -- uint8_t *addr = dest; -- -- if (len > 16) // Too long, not possible -- { -- return false; -- } -- -- uint8_t stringLength = 0, byteCount = 0; -- -- //Iterate over each component of the IP. The exit condition is in the middle of the loop -- while (true) -- { -- -- //No valid character (IPv4 addresses don't have implicit 0, that is x.y..z being read as x.y.0.z) -- if ( (stringLength == len) || (ip4addr[stringLength] < '0') || (ip4addr[stringLength] > '9') ) -- { -- return false; -- } -- -- //For each component, we convert it to the raw value -- uint16_t byte = 0; -- while (stringLength < len && ip4addr[stringLength] >= '0' && ip4addr[stringLength] <= '9') -- { -- byte *= 10; -- byte += ip4addr[stringLength++] - '0'; -- -- //We go over the maximum value for an IPv4 component -- if (byte > 0xff) -- { -- return false; -- } -- } -- -- //Append the component -- addr[byteCount++] = (uint8_t)byte; -- -- //If we're at the end, we leave the loop. It's the only way to reach the `true` output -- if (byteCount == 4) -- { -- break; -- } -- -- //If the next character is invalid, we return false -- if ( (stringLength == len) || (ip4addr[stringLength++] != '.') ) -- { -- return false; -- } -- } -- -- return stringLength == len || ip4addr[stringLength] == '\0'; --} -- --static void whd_ipv4_itoa(char *string, uint8_t byte) --{ -- char *baseString = string; -- -- //Write the digits to the buffer from the least significant to the most -- // This is the incorrect order but we will swap later -- do -- { -- *string++ = '0' + byte % 10; -- byte /= 10; -- } while (byte); -- -- //We put the final \0, then go back one step on the last digit for the swap -- *string-- = '\0'; -- -- //We now swap the digits -- while (baseString < string) -- { -- uint8_t tmp = *string; -- *string-- = *baseString; -- *baseString++ = tmp; -- } --} -- --uint8_t whd_ip4_to_string(const void *ip4addr, char *p) --{ -- uint8_t outputPos = 0; -- const uint8_t *byteArray = ip4addr; -- -- for (uint8_t component = 0; component < 4; ++component) -- { -- //Convert the byte to string -- whd_ipv4_itoa(&p[outputPos], byteArray[component]); -- -- //Move outputPos to the end of the string -- while (p[outputPos] != '\0') -- { -- outputPos += 1; -- } -- -- //Append a dot if this is not the last digit -- if (component < 3) -- { -- p[outputPos++] = '.'; -- } -- } -- // Return length of generated string, excluding the terminating null character -- return outputPos; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi.c -deleted file mode 100644 -index 43cc162cbb..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi.c -+++ /dev/null -@@ -1,111 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * -- * Implements functions called by WHD user APIs, but not directly exposed to user -- * -- * This file provides functions which are not directly exposed to user but, called by end-user functions which allow actions such as -- * seting the MAC address, getting channel info, etc -- */ -- --#include "whd_ap.h" --#include "whd_chip_constants.h" --#include "whd_debug.h" --#include "whd_events_int.h" --#include "whd_cdc_bdc.h" --#include "whd_thread_internal.h" --#include "whd_utils.h" --#include "whd_wifi_api.h" --#include "whd_wlioctl.h" -- --/****************************************************** --* @cond Constants --******************************************************/ --#define MAC_ADDRESS_LOCALLY_ADMINISTERED_BIT 0x02 -- --/****************************************************** --* Local Structures --******************************************************/ -- -- -- --/****************************************************** --* Variables --******************************************************/ --void (*whd_wifi_link_update_callback)(void) = NULL; -- --/****************************************************** --* Function definitions --******************************************************/ -- --uint32_t whd_wifi_set_mac_address(whd_interface_t ifp, whd_mac_t mac) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- /* AP interface needs to come up with MAC different from STA */ --#ifdef APOLLO_AUDIO -- -- /* Work around the issue of asking API to set one address and it sets a different address. -- * This will cause any comparison of set and get mac address to fail. TODO: move twiddling this -- * bit to a higher level. -- */ -- if (0) --#else -- if (ifp->role == WHD_AP_ROLE) --#endif -- { -- whd_mac_t ap_mac_address; -- -- memcpy(&ap_mac_address, &mac, sizeof(whd_mac_t) ); -- if (ap_mac_address.octet[0] & MAC_ADDRESS_LOCALLY_ADMINISTERED_BIT) -- { -- ap_mac_address.octet[0] &= (uint8_t) ~(MAC_ADDRESS_LOCALLY_ADMINISTERED_BIT); -- } -- else -- { -- ap_mac_address.octet[0] |= MAC_ADDRESS_LOCALLY_ADMINISTERED_BIT; -- } -- -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, sizeof(whd_mac_t), IOVAR_STR_CUR_ETHERADDR); -- CHECK_IOCTL_BUFFER(data); -- memcpy(data, &ap_mac_address, sizeof(whd_mac_t) ); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); -- -- if (memcmp(&mac, &ap_mac_address, sizeof(whd_mac_t) ) != 0) -- { -- WPRINT_WHD_INFO( (" STA MAC address : %02x:%02x:%02x:%02x:%02x:%02x \n" -- " AP MAC address : %02x:%02x:%02x:%02x:%02x:%02x \n", -- mac.octet[0], mac.octet[1], mac.octet[2], -- mac.octet[3], mac.octet[4], mac.octet[3], -- ap_mac_address.octet[0], ap_mac_address.octet[1], ap_mac_address.octet[2], -- ap_mac_address.octet[3], ap_mac_address.octet[4], ap_mac_address.octet[3]) ); -- } -- } -- else -- { -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, sizeof(whd_mac_t), IOVAR_STR_CUR_ETHERADDR); -- CHECK_IOCTL_BUFFER(data); -- memcpy(data, &mac, sizeof(whd_mac_t) ); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); -- } -- -- return WHD_SUCCESS; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi_api.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi_api.c -deleted file mode 100644 -index a570639cdd..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi_api.c -+++ /dev/null -@@ -1,4375 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --/** @file -- * Implements user functions for controlling the Wi-Fi system -- * -- * This file provides end-user functions which allow actions such as scanning for -- * Wi-Fi networks, joining Wi-Fi networks, getting the MAC address, etc -- * -- */ -- --#include --#include "whd_version.h" --#include "whd_chip_constants.h" --#include "whd_cdc_bdc.h" --#include "whd_thread_internal.h" --#include "whd_debug.h" --#include "whd_utils.h" --#include "whd_wifi_api.h" --#include "whd_buffer_api.h" --#include "whd_wlioctl.h" --#include "whd_types.h" --#include "whd_types_int.h" -- --/****************************************************** --* Constants --******************************************************/ --#define WL_CHANSPEC_CHAN_MASK (0x00ff) --#define CHSPEC_CHANNEL(chspec) ( (uint8_t)( (chspec) & WL_CHANSPEC_CHAN_MASK ) ) --#define CH20MHZ_CHSPEC(channel) (chanspec_t)( (chanspec_t)(channel) | GET_C_VAR(whd_driver, CHANSPEC_BW_20) | \ -- GET_C_VAR(whd_driver, CHANSPEC_CTL_SB_NONE) | \ -- ( ( (channel) <= CH_MAX_2G_CHANNEL ) ? GET_C_VAR(whd_driver, \ -- CHANSPEC_BAND_2G) \ -- : GET_C_VAR(whd_driver, CHANSPEC_BAND_5G) ) ) -- --#define MAX_SUPPORTED_MCAST_ENTRIES (10) --#define WLC_EVENT_MSG_LINK (0x01) -- --#define JOIN_ASSOCIATED (uint32_t)(1 << 0) --#define JOIN_AUTHENTICATED (uint32_t)(1 << 1) --#define JOIN_LINK_READY (uint32_t)(1 << 2) --#define JOIN_SECURITY_COMPLETE (uint32_t)(1 << 3) --#define JOIN_SSID_SET (uint32_t)(1 << 4) --#define JOIN_NO_NETWORKS (uint32_t)(1 << 5) --#define JOIN_EAPOL_KEY_M1_TIMEOUT (uint32_t)(1 << 6) --#define JOIN_EAPOL_KEY_M3_TIMEOUT (uint32_t)(1 << 7) --#define JOIN_EAPOL_KEY_G1_TIMEOUT (uint32_t)(1 << 8) --#define JOIN_EAPOL_KEY_FAILURE (uint32_t)(1 << 9) -- --#define JOIN_SECURITY_FLAGS_MASK (JOIN_SECURITY_COMPLETE | JOIN_EAPOL_KEY_M1_TIMEOUT | JOIN_EAPOL_KEY_M3_TIMEOUT | \ -- JOIN_EAPOL_KEY_G1_TIMEOUT | JOIN_EAPOL_KEY_FAILURE) -- --#define DEFAULT_JOIN_ATTEMPT_TIMEOUT (7000) /* Overall join attempt timeout in milliseconds. */ --#define DEFAULT_EAPOL_KEY_PACKET_TIMEOUT (2500) /* Timeout when waiting for EAPOL key packet M1 or M3 in milliseconds.*/ -- /* Some APs may be slow to provide M1 and 1000 ms is not long enough for edge of cell. */ --#ifndef DEFAULT_PM2_SLEEP_RET_TIME --#define DEFAULT_PM2_SLEEP_RET_TIME (200) --#endif -- --#define PM2_SLEEP_RET_TIME_MIN (10) /* Minimum return-to-sleep in milliseconds */ --#define PM2_SLEEP_RET_TIME_MAX (2000) /* Maximum return-to-sleep in milliseconds */ --#define NULL_FRAMES_WITH_PM_SET_LIMIT (100) /* NULL_FRAMES_WITH_PM_SET_LIMIT */ --#define RSPEC_KBPS_MASK (0x7f) --#define RSPEC_500KBPS(rate) ( (rate) & RSPEC_KBPS_MASK ) --#define RSPEC_TO_KBPS(rate) (RSPEC_500KBPS( (rate) ) * (unsigned int)500) --#define UNSIGNED_CHAR_TO_CHAR(uch) ( (uch) & 0x7f ) -- --/****************************************************** --* Local Structures --******************************************************/ -- --#pragma pack(1) -- --typedef struct --{ -- uint32_t entry_count; -- whd_mac_t macs[1]; --} mcast_list_t; -- --typedef struct --{ -- int32_t rssi; -- whd_mac_t macs; --} client_rssi_t; -- --typedef struct --{ -- whd_sync_scan_result_t *aps; -- uint32_t count; -- uint32_t offset; -- cy_semaphore_t scan_semaphore; --} whd_scan_userdata_t; -- --#pragma pack() -- --/****************************************************** --* Static Variables --******************************************************/ -- --/* LOOK: !!!When adding events below, please modify whd_event_to_string!!! */ --const whd_event_num_t join_events[] = --{ -- WLC_E_SET_SSID, WLC_E_LINK, WLC_E_AUTH, WLC_E_DEAUTH_IND, WLC_E_DISASSOC_IND, WLC_E_PSK_SUP, WLC_E_CSA_COMPLETE_IND, -- WLC_E_NONE --}; --static const whd_event_num_t scan_events[] = { WLC_E_ESCAN_RESULT, WLC_E_NONE }; -- --/* Values are in 100's of Kbit/sec (1 = 100Kbit/s). Arranged as: -- * [Bit index] -- * [0] = 20Mhz only -- * [0] = Long GI -- * [1] = Short GI -- * [1] = 40MHz support -- * [0] = Long GI -- * [1] = Short GI -- */ --static const uint16_t mcs_data_rate_lookup_table[32][2][2] = --{ -- [0] = -- { -- { 65, 72}, -- { 135, 150} -- }, -- [1] = -- { -- { 130, 144}, -- { 270, 300} -- }, -- [2] = -- { -- { 195, 217}, -- { 405, 450} -- }, -- [3] = -- { -- { 260, 289}, -- { 540, 600} -- }, -- [4] = -- { -- { 390, 433}, -- { 810, 900} -- }, -- [5] = -- { -- { 520, 578}, -- { 1080, 1200} -- }, -- [6] = -- { -- { 585, 650}, -- { 1215, 1350} -- }, -- [7] = -- { -- { 650, 722}, -- { 1350, 1500} -- }, -- [8] = -- { -- { 130, 144}, -- { 270, 300} -- }, -- [9] = -- { -- { 260, 289}, -- { 540, 600} -- }, -- [10] = -- { -- { 390, 433}, -- { 810, 900} -- }, -- [11] = -- { -- { 520, 578}, -- { 1080, 1200} -- }, -- [12] = -- { -- { 780, 867}, -- { 1620, 1800} -- }, -- [13] = -- { -- { 1040, 1156}, -- { 2160, 2400} -- }, -- [14] = -- { -- { 1170, 1300}, -- { 2430, 2700} -- }, -- [15] = -- { -- { 1300, 1444}, -- { 2700, 3000} -- }, -- [16] = -- { -- { 195, 217}, -- { 405, 450} -- }, -- [17] = -- { -- { 390, 433}, -- { 810, 900} -- }, -- [18] = -- { -- { 585, 650}, -- { 1215, 1350} -- }, -- [19] = -- { -- { 780, 867}, -- { 1620, 1800} -- }, -- [20] = -- { -- { 1170, 1300}, -- { 2430, 2700} -- }, -- [21] = -- { -- { 1560, 1733}, -- { 3240, 3600} -- }, -- [22] = -- { -- { 1755, 1950}, -- { 3645, 4050} -- }, -- [23] = -- { -- { 1950, 2167}, -- { 4050, 4500} -- }, -- [24] = -- { -- { 260, 288}, -- { 540, 600} -- }, -- [25] = -- { -- { 520, 576}, -- { 1080, 1200} -- }, -- [26] = -- { -- { 780, 868}, -- { 1620, 1800} -- }, -- [27] = -- { -- { 1040, 1156}, -- { 2160, 2400} -- }, -- [28] = -- { -- { 1560, 1732}, -- { 3240, 3600} -- }, -- [29] = -- { -- { 2080, 2312}, -- { 4320, 4800} -- }, -- [30] = -- { -- { 2340, 2600}, -- { 4860, 5400} -- }, -- [31] = -- { -- { 2600, 2888}, -- { 5400, 6000} -- }, --}; -- -- --/****************************************************** --* Static Function prototypes --******************************************************/ --static void *whd_wifi_join_events_handler(whd_interface_t ifp, const whd_event_header_t *event_header, -- const uint8_t *event_data, void *handler_user_data); --static void *whd_wifi_scan_events_handler(whd_interface_t ifp, const whd_event_header_t *event_header, -- const uint8_t *event_data, -- void *handler_user_data); --static uint32_t whd_wifi_prepare_join(whd_interface_t ifp, -- whd_security_t security, -- const uint8_t *security_key, -- uint8_t key_length, -- cy_semaphore_t *semaphore); --static uint32_t whd_wifi_check_join_status(whd_interface_t ifp); --static void whd_wifi_active_join_deinit(whd_interface_t ifp, cy_semaphore_t *stack_semaphore, -- whd_result_t result); --static uint32_t whd_wifi_active_join_init(whd_interface_t ifp, whd_security_t auth_type, -- const uint8_t *security_key, uint8_t key_length, -- cy_semaphore_t *semaphore); -- --/** Sets the current EAPOL key timeout for the given interface -- * -- * @param interface : the interface for which we want to set the EAPOL key timeout -- * eapol_key_timeout : EAPOL key timeout value -- * -- * @return WHD_SUCCESS : if success -- * Error code : error code to indicate the type of error -- */ --static uint32_t whd_wifi_set_supplicant_key_timeout(whd_interface_t ifp, int32_t eapol_key_timeout); -- --/****************************************************** --* Function definitions --******************************************************/ --inline wl_chanspec_t whd_channel_to_wl_band(whd_driver_t whd_driver, uint32_t channel) --{ -- return ( ( (channel) <= CH_MAX_2G_CHANNEL ) ? (uint16_t)GET_C_VAR(whd_driver, CHANSPEC_BAND_2G) : -- (uint16_t)GET_C_VAR(whd_driver, CHANSPEC_BAND_5G) ); --} -- --uint32_t whd_wifi_set_up(whd_interface_t ifp) --{ -- whd_mac_t mac; -- char version[200]; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- if (whd_driver->internal_info.whd_wlan_status.state == WLAN_UP) -- { -- WPRINT_WHD_INFO( ("whd_wifi_set_up: already up.\n") ); -- return WHD_SUCCESS; -- } -- -- /* Send UP command */ -- CHECK_RETURN(whd_wifi_set_ioctl_buffer(ifp, WLC_UP, NULL, 0) ); -- -- if (whd_wifi_get_mac_address(ifp, &mac) == WHD_SUCCESS) -- { -- WPRINT_MACRO( ("WLAN MAC Address : %02X:%02X:%02X:%02X:%02X:%02X\n", mac.octet[0], mac.octet[1], mac.octet[2], -- mac.octet[3], mac.octet[4], mac.octet[5]) ); -- } -- -- if (whd_wifi_get_wifi_version(ifp, version, sizeof(version) ) == WHD_SUCCESS) -- { -- WPRINT_MACRO( ("WLAN Firmware : %s", version) ); -- } -- -- /* minimize bootloader usage and start time from UART output */ -- if (whd_wifi_get_clm_version(ifp, version, sizeof(version) ) == WHD_SUCCESS) -- { -- WPRINT_MACRO( ("WLAN CLM : %s\n", version) ); -- } -- -- WPRINT_MACRO( ("WHD VERSION : " WHD_VERSION) ); -- WPRINT_MACRO( (" : " WHD_BRANCH) ); --#if defined(__ARMCC_VERSION) -- WPRINT_MACRO( (" : ARM CLANG %u", __ARMCC_VERSION) ); --#elif defined(__ICCARM__) -- WPRINT_MACRO( (" : IAR %u", __VER__) ); --#elif defined(__GNUC__) -- WPRINT_MACRO( (" : GCC %u.%u", __GNUC__, __GNUC_MINOR__) ); --#else -- WPRINT_MACRO( (" : UNKNOWN CC") ); --#endif -- WPRINT_MACRO( (" : " WHD_DATE "\n") ); -- -- /* Update wlan status */ -- whd_driver->internal_info.whd_wlan_status.state = WLAN_UP; -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_set_down(whd_interface_t ifp) --{ -- whd_driver_t whd_driver = ifp->whd_driver; -- -- if (whd_driver->internal_info.whd_wlan_status.state != WLAN_UP) -- { -- WPRINT_WHD_INFO( ("whd_wifi_set_down: already down.\n") ); -- return WHD_INTERFACE_NOT_UP; -- } -- -- /* Send DOWN command */ -- CHECK_RETURN(whd_wifi_set_ioctl_buffer(ifp, WLC_DOWN, NULL, 0) ); -- -- /* Update wlan status */ -- whd_driver->internal_info.whd_wlan_status.state = WLAN_DOWN; -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_set_channel(whd_interface_t ifp, uint32_t channel) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- wl_chan_switch_t *chan_switch; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- /* Map P2P interface to either STA or AP interface depending if it's running as group owner or client */ -- if (ifp->role == WHD_P2P_ROLE) -- { -- if (whd_driver->internal_info.whd_wifi_p2p_go_is_up == WHD_TRUE) -- { -- ifp->role = WHD_AP_ROLE; -- } -- else -- { -- ifp->role = WHD_STA_ROLE; -- } -- } -- -- switch (ifp->role) -- { -- case WHD_STA_ROLE: -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, sizeof(uint32_t) ); -- CHECK_IOCTL_BUFFER(data); -- *data = htod32(channel); -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_GET, WLC_SET_CHANNEL, buffer, NULL) ); -- break; -- -- case WHD_AP_ROLE: -- chan_switch = (wl_chan_switch_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, sizeof(wl_chan_switch_t), -- IOVAR_STR_CSA); -- CHECK_IOCTL_BUFFER(chan_switch); -- chan_switch->chspec = -- ( wl_chanspec_t )(GET_C_VAR(whd_driver, -- CHANSPEC_BW_20) | GET_C_VAR(whd_driver, CHANSPEC_CTL_SB_NONE) | channel); -- chan_switch->chspec |= whd_channel_to_wl_band(whd_driver, channel); -- chan_switch->chspec = htod16(chan_switch->chspec); -- chan_switch->count = 1; -- chan_switch->mode = 1; -- chan_switch->reg = 0; -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0) ); -- break; -- case WHD_P2P_ROLE: -- case WHD_INVALID_ROLE: -- default: -- whd_assert("Bad interface", 0 != 0); -- return WHD_UNKNOWN_INTERFACE; -- } -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_get_channel(whd_interface_t ifp, uint32_t *channel) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- channel_info_t *channel_info; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- if (channel == NULL) -- return WHD_BADARG; -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- CHECK_IOCTL_BUFFER(whd_cdc_get_ioctl_buffer(whd_driver, &buffer, sizeof(channel_info_t) ) ); -- -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_GET, WLC_GET_CHANNEL, buffer, &response) ); -- -- channel_info = (channel_info_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- *channel = (uint32_t)channel_info->hw_channel; -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_enable_supplicant(whd_interface_t ifp, whd_security_t auth_type) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- uint32_t bss_index = 0; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- /* Map the interface to a BSS index */ -- bss_index = ifp->bsscfgidx; -- -- /* Set supplicant variable - mfg app doesn't support these iovars, so don't care if return fails */ -- data = whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, "bsscfg:" IOVAR_STR_SUP_WPA); -- CHECK_IOCTL_BUFFER(data); -- data[0] = bss_index; -- data[1] = (uint32_t)( ( ( (auth_type & WPA_SECURITY) != 0 ) || -- ( (auth_type & WPA2_SECURITY) != 0 ) || -- (auth_type & WPA3_SECURITY) != 0 ) ? 1 : 0 ); -- (void)whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_set_supplicant_key_timeout(whd_interface_t ifp, int32_t eapol_key_timeout) --{ -- whd_buffer_t buffer; -- int32_t *data; -- uint32_t bss_index = 0; -- whd_driver_t whd_driver = (whd_driver_t)ifp->whd_driver; -- -- /* Map the interface to a BSS index */ -- bss_index = ifp->bsscfgidx; -- -- data = whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, "bsscfg:" IOVAR_STR_SUP_WPA_TMO); -- CHECK_IOCTL_BUFFER(data); -- data[0] = (int32_t)bss_index; -- data[1] = eapol_key_timeout; -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_set_passphrase(whd_interface_t ifp, const uint8_t *security_key, uint8_t key_length) --{ -- whd_buffer_t buffer; -- whd_driver_t whd_driver; -- wsec_pmk_t *psk; -- -- if (!ifp || !security_key) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- whd_driver = ifp->whd_driver; -- CHECK_DRIVER_NULL(whd_driver); -- -- psk = (wsec_pmk_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, sizeof(wsec_pmk_t) ); -- CHECK_IOCTL_BUFFER(psk); -- -- memset(psk, 0, sizeof(wsec_pmk_t) ); -- memcpy(psk->key, security_key, key_length); -- psk->key_len = htod16(key_length); -- psk->flags = htod16( (uint16_t)WSEC_PASSPHRASE ); -- -- /* Delay required to allow radio firmware to be ready to receive PMK and avoid intermittent failure */ -- CHECK_RETURN(cy_rtos_delay_milliseconds(1) ); -- -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_WSEC_PMK, buffer, 0) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_sae_password(whd_interface_t ifp, const uint8_t *security_key, uint8_t key_length) --{ -- whd_buffer_t buffer; -- whd_driver_t whd_driver; -- wsec_sae_password_t *sae_password; -- -- if (!ifp || !security_key) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- whd_driver = ifp->whd_driver; -- CHECK_DRIVER_NULL(whd_driver); -- -- sae_password = (wsec_sae_password_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, -- sizeof(wsec_sae_password_t), -- IOVAR_STR_SAE_PASSWORD); -- CHECK_IOCTL_BUFFER(sae_password); -- memset(sae_password, 0, sizeof(wsec_sae_password_t) ); -- memcpy(sae_password->password, security_key, key_length); -- sae_password->password_len = htod16(key_length); -- /* Delay required to allow radio firmware to be ready to receive PMK and avoid intermittent failure */ -- cy_rtos_delay_milliseconds(1); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_enable_sup_set_passphrase(whd_interface_t ifp, const uint8_t *security_key_psk, uint8_t psk_length, -- whd_security_t auth_type) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- uint32_t bss_index = 0; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- if ( (psk_length > (uint8_t)WSEC_MAX_PSK_LEN) || -- (psk_length < (uint8_t)WSEC_MIN_PSK_LEN) ) -- { -- return WHD_INVALID_KEY; -- } -- -- /* Map the interface to a BSS index */ -- bss_index = ifp->bsscfgidx; -- -- /* Set supplicant variable - mfg app doesn't support these iovars, so don't care if return fails */ -- data = whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, "bsscfg:" IOVAR_STR_SUP_WPA); -- CHECK_IOCTL_BUFFER(data); -- data[0] = bss_index; -- data[1] = (uint32_t)( ( ( (auth_type & WPA_SECURITY) != 0 ) || -- ( (auth_type & WPA2_SECURITY) != 0 ) || -- (auth_type & WPA3_SECURITY) != 0 ) ? 1 : 0 ); -- (void)whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- -- CHECK_RETURN(whd_wifi_set_passphrase(ifp, security_key_psk, psk_length) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_get_rssi(whd_interface_t ifp, int32_t *rssi) --{ -- CHECK_IFP_NULL(ifp); -- -- if (rssi == NULL) -- return WHD_BADARG; -- if (ifp->role == WHD_STA_ROLE) -- { -- return whd_wifi_get_ioctl_buffer(ifp, WLC_GET_RSSI, (uint8_t *)rssi, sizeof(*rssi) ); -- } -- return WHD_BADARG; --} -- --uint32_t whd_wifi_get_ap_client_rssi(whd_interface_t ifp, int32_t *rssi, const whd_mac_t *client_mac) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- client_rssi_t *client_rssi; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- /* WLAN expects buffer size to be 4-byte aligned */ -- client_rssi = -- (client_rssi_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, ROUND_UP(sizeof(client_rssi_t), -- sizeof(uint32_t) ) ); -- CHECK_IOCTL_BUFFER(client_rssi); -- -- memcpy(&client_rssi->macs, client_mac, sizeof(*client_mac) ); -- client_rssi->rssi = 0; -- -- CHECK_RETURN_UNSUPPORTED_OK(whd_cdc_send_ioctl(ifp, CDC_GET, WLC_GET_RSSI, buffer, &response) ); -- -- memcpy(rssi, whd_buffer_get_current_piece_data_pointer(whd_driver, response), sizeof(int32_t) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- return WHD_SUCCESS; --} -- --/** Callback for join events -- * This is called when the WLC_E_SET_SSID event is received, -- * indicating that the system has joined successfully. -- * Wakes the thread which was doing the join, allowing it to resume. -- */ --static void *whd_wifi_join_events_handler(whd_interface_t ifp, const whd_event_header_t *event_header, -- const uint8_t *event_data, -- void *handler_user_data) --{ -- cy_semaphore_t *semaphore = (cy_semaphore_t *)handler_user_data; -- whd_bool_t join_attempt_complete = WHD_FALSE; -- whd_driver_t whd_driver = ifp->whd_driver; -- whd_result_t result; -- -- UNUSED_PARAMETER(event_data); -- -- if (event_header->bsscfgidx >= WHD_INTERFACE_MAX) -- { -- WPRINT_WHD_DEBUG( ("%s: event_header: Bad interface\n", __FUNCTION__) ); -- return NULL; -- } -- -- switch (event_header->event_type) -- { -- case WLC_E_PSK_SUP: -- /* Ignore WLC_E_PSK_SUP event if link is not up */ -- if ( (whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] & JOIN_LINK_READY) != 0 ) -- { -- if (event_header->status == WLC_SUP_KEYED) -- { -- /* Successful WPA key exchange */ -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] &= ~JOIN_SECURITY_FLAGS_MASK; -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] |= JOIN_SECURITY_COMPLETE; -- } -- else -- { -- /* join has completed with an error */ -- join_attempt_complete = WHD_TRUE; -- if ( (event_header->status == WLC_SUP_KEYXCHANGE_WAIT_M1) && -- (event_header->reason == WLC_E_SUP_WPA_PSK_TMO) ) -- { -- /* A timeout waiting for M1 may occur at the edge of the cell or if the AP is particularly slow. */ -- WPRINT_WHD_DEBUG( ("Supplicant M1 timeout event\n") ); -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] |= JOIN_EAPOL_KEY_M1_TIMEOUT; -- } -- else if ( (event_header->status == WLC_SUP_KEYXCHANGE_WAIT_M3) && -- (event_header->reason == WLC_E_SUP_WPA_PSK_TMO) ) -- { -- /* A timeout waiting for M3 is an indicator that the passphrase may be incorrect. */ -- WPRINT_WHD_DEBUG( ("Supplicant M3 timeout event\n") ); -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] |= JOIN_EAPOL_KEY_M3_TIMEOUT; -- } -- else if ( (event_header->status == WLC_SUP_KEYXCHANGE_WAIT_G1) && -- (event_header->reason == WLC_E_SUP_WPA_PSK_TMO) ) -- { -- /* A timeout waiting for G1 (group key) may occur at the edge of the cell. */ -- WPRINT_WHD_DEBUG( ("Supplicant G1 timeout event\n") ); -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] |= JOIN_EAPOL_KEY_G1_TIMEOUT; -- } -- else -- { -- WPRINT_WHD_DEBUG( ("Unsuccessful supplicant event; status=0x%" PRIu32 "\n", -- event_header->status) ); -- /* Unknown failure during EAPOL key handshake */ -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] |= JOIN_EAPOL_KEY_FAILURE; -- } -- } -- } -- break; -- -- case WLC_E_SET_SSID: -- if (event_header->status == WLC_E_STATUS_SUCCESS) -- { -- /* SSID has been successfully set. */ -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] |= JOIN_SSID_SET; -- } -- /* We don't bail out on this event or things like WPS won't work if the AP is rebooting after configuration */ -- else if (event_header->status == WLC_E_STATUS_NO_NETWORKS) -- { -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] |= JOIN_NO_NETWORKS; -- } -- else -- { -- join_attempt_complete = WHD_TRUE; -- } -- break; -- -- case WLC_E_LINK: -- if ( (event_header->flags & WLC_EVENT_MSG_LINK) != 0 ) -- { -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] |= JOIN_LINK_READY; -- } -- else -- { -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] &= ~JOIN_LINK_READY; -- } -- break; -- -- case WLC_E_DEAUTH_IND: -- case WLC_E_DISASSOC_IND: -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] &= -- ~(JOIN_AUTHENTICATED | JOIN_LINK_READY); -- break; -- -- case WLC_E_AUTH: -- if (event_header->status == WLC_E_STATUS_SUCCESS) -- { -- whd_driver->internal_info.whd_join_status[event_header->bsscfgidx] |= JOIN_AUTHENTICATED; -- } -- else if (event_header->status == WLC_E_STATUS_UNSOLICITED) -- { -- WPRINT_WHD_DEBUG( ("Ignore UNSOLICITED pkt event\n") ); -- } -- else -- { -- /* We cannot authenticate. Perhaps we're blocked or at the edge of a cell. */ -- join_attempt_complete = WHD_TRUE; -- } -- break; -- -- case WLC_E_CSA_COMPLETE_IND: -- if (event_header->datalen >= sizeof(wl_chan_switch_t) ) -- { -- wl_chan_switch_t *wl_csa = (wl_chan_switch_t *)event_data; -- UNUSED_PARAMETER(wl_csa); -- WPRINT_WHD_INFO( ("CSA event => chan %d\n", (dtoh16(wl_csa->chspec) & 0xff) ) ); -- } -- break; -- -- /* Note - These are listed to keep gcc pedantic checking happy */ -- case WLC_E_RRM: -- case WLC_E_NONE: -- case WLC_E_ROAM: -- case WLC_E_JOIN: -- case WLC_E_START: -- case WLC_E_AUTH_IND: -- case WLC_E_DEAUTH: -- case WLC_E_ASSOC: -- case WLC_E_ASSOC_IND: -- case WLC_E_REASSOC: -- case WLC_E_REASSOC_IND: -- case WLC_E_DISASSOC: -- case WLC_E_QUIET_START: -- case WLC_E_QUIET_END: -- case WLC_E_BEACON_RX: -- case WLC_E_MIC_ERROR: -- case WLC_E_NDIS_LINK: -- case WLC_E_TXFAIL: -- case WLC_E_PMKID_CACHE: -- case WLC_E_RETROGRADE_TSF: -- case WLC_E_PRUNE: -- case WLC_E_AUTOAUTH: -- case WLC_E_EAPOL_MSG: -- case WLC_E_SCAN_COMPLETE: -- case WLC_E_ADDTS_IND: -- case WLC_E_DELTS_IND: -- case WLC_E_BCNSENT_IND: -- case WLC_E_BCNRX_MSG: -- case WLC_E_BCNLOST_MSG: -- case WLC_E_ROAM_PREP: -- case WLC_E_PFN_NET_FOUND: -- case WLC_E_PFN_NET_LOST: -- case WLC_E_RESET_COMPLETE: -- case WLC_E_JOIN_START: -- case WLC_E_ROAM_START: -- case WLC_E_ASSOC_START: -- case WLC_E_IBSS_ASSOC: -- case WLC_E_RADIO: -- case WLC_E_PSM_WATCHDOG: -- case WLC_E_CCX_ASSOC_START: -- case WLC_E_CCX_ASSOC_ABORT: -- case WLC_E_PROBREQ_MSG: -- case WLC_E_SCAN_CONFIRM_IND: -- case WLC_E_COUNTRY_CODE_CHANGED: -- case WLC_E_EXCEEDED_MEDIUM_TIME: -- case WLC_E_ICV_ERROR: -- case WLC_E_UNICAST_DECODE_ERROR: -- case WLC_E_MULTICAST_DECODE_ERROR: -- case WLC_E_TRACE: -- case WLC_E_BTA_HCI_EVENT: -- case WLC_E_IF: -- case WLC_E_PFN_BEST_BATCHING: -- case WLC_E_RSSI: -- case WLC_E_EXTLOG_MSG: -- case WLC_E_ACTION_FRAME: -- case WLC_E_ACTION_FRAME_COMPLETE: -- case WLC_E_PRE_ASSOC_IND: -- case WLC_E_PRE_REASSOC_IND: -- case WLC_E_CHANNEL_ADOPTED: -- case WLC_E_AP_STARTED: -- case WLC_E_DFS_AP_STOP: -- case WLC_E_DFS_AP_RESUME: -- case WLC_E_WAI_STA_EVENT: -- case WLC_E_WAI_MSG: -- case WLC_E_ESCAN_RESULT: -- case WLC_E_ACTION_FRAME_OFF_CHAN_COMPLETE: -- case WLC_E_PROBRESP_MSG: -- case WLC_E_P2P_PROBREQ_MSG: -- case WLC_E_DCS_REQUEST: -- case WLC_E_FIFO_CREDIT_MAP: -- case WLC_E_ACTION_FRAME_RX: -- case WLC_E_WAKE_EVENT: -- case WLC_E_RM_COMPLETE: -- case WLC_E_HTSFSYNC: -- case WLC_E_OVERLAY_REQ: -- case WLC_E_EXCESS_PM_WAKE_EVENT: -- case WLC_E_PFN_SCAN_NONE: -- case WLC_E_PFN_SCAN_ALLGONE: -- case WLC_E_GTK_PLUMBED: -- case WLC_E_ASSOC_IND_NDIS: -- case WLC_E_REASSOC_IND_NDIS: -- case WLC_E_ASSOC_REQ_IE: -- case WLC_E_ASSOC_RESP_IE: -- case WLC_E_ASSOC_RECREATED: -- case WLC_E_ACTION_FRAME_RX_NDIS: -- case WLC_E_AUTH_REQ: -- case WLC_E_TDLS_PEER_EVENT: -- case WLC_E_SPEEDY_RECREATE_FAIL: -- case WLC_E_NATIVE: -- case WLC_E_PKTDELAY_IND: -- case WLC_E_AWDL_AW: -- case WLC_E_AWDL_ROLE: -- case WLC_E_AWDL_EVENT: -- case WLC_E_NIC_AF_TXS: -- case WLC_E_NAN: -- case WLC_E_BEACON_FRAME_RX: -- case WLC_E_SERVICE_FOUND: -- case WLC_E_GAS_FRAGMENT_RX: -- case WLC_E_GAS_COMPLETE: -- case WLC_E_P2PO_ADD_DEVICE: -- case WLC_E_P2PO_DEL_DEVICE: -- case WLC_E_WNM_STA_SLEEP: -- case WLC_E_TXFAIL_THRESH: -- case WLC_E_PROXD: -- case WLC_E_IBSS_COALESCE: -- case WLC_E_AWDL_RX_PRB_RESP: -- case WLC_E_AWDL_RX_ACT_FRAME: -- case WLC_E_AWDL_WOWL_NULLPKT: -- case WLC_E_AWDL_PHYCAL_STATUS: -- case WLC_E_AWDL_OOB_AF_STATUS: -- case WLC_E_AWDL_SCAN_STATUS: -- case WLC_E_AWDL_AW_START: -- case WLC_E_AWDL_AW_END: -- case WLC_E_AWDL_AW_EXT: -- case WLC_E_AWDL_PEER_CACHE_CONTROL: -- case WLC_E_CSA_START_IND: -- case WLC_E_CSA_DONE_IND: -- case WLC_E_CSA_FAILURE_IND: -- case WLC_E_CCA_CHAN_QUAL: -- case WLC_E_BSSID: -- case WLC_E_TX_STAT_ERROR: -- case WLC_E_BCMC_CREDIT_SUPPORT: -- case WLC_E_PSTA_PRIMARY_INTF_IND: -- case WLC_E_P2P_DISC_LISTEN_COMPLETE: -- case WLC_E_BT_WIFI_HANDOVER_REQ: -- case WLC_E_SPW_TXINHIBIT: -- case WLC_E_FBT_AUTH_REQ_IND: -- case WLC_E_RSSI_LQM: -- case WLC_E_PFN_GSCAN_FULL_RESULT: -- case WLC_E_PFN_SWC: -- case WLC_E_AUTHORIZED: -- case WLC_E_PROBREQ_MSG_RX: -- case WLC_E_PFN_SCAN_COMPLETE: -- case WLC_E_RMC_EVENT: -- case WLC_E_DPSTA_INTF_IND: -- case WLC_E_ULP: -- case WLC_E_LAST: -- default: -- whd_assert("Received event which was not registered\n", 0 != 0); -- break; -- } -- -- if (whd_wifi_is_ready_to_transceive(ifp) == WHD_SUCCESS) -- { -- join_attempt_complete = WHD_TRUE; -- } -- -- if (join_attempt_complete == WHD_TRUE) -- { -- if (semaphore != NULL) -- { -- result = cy_rtos_get_semaphore(&whd_driver->internal_info.active_join_mutex, CY_RTOS_NEVER_TIMEOUT, -- WHD_FALSE); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Get semaphore failed in %s at %d \n", __func__, __LINE__) ); -- } -- if (whd_driver->internal_info.active_join_semaphore != NULL) -- { -- whd_assert("Unexpected semaphore\n", whd_driver->internal_info.active_join_semaphore == semaphore); -- result = cy_rtos_set_semaphore(whd_driver->internal_info.active_join_semaphore, WHD_FALSE); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Set semaphore failed in %s at %d \n", __func__, __LINE__) ); -- } -- } -- result = cy_rtos_set_semaphore(&whd_driver->internal_info.active_join_mutex, WHD_FALSE); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Set semaphore failed in %s at %d \n", __func__, __LINE__) ); -- } -- } -- return NULL; -- } -- else -- { -- return handler_user_data; -- } --} -- --/* Do any needed preparation prior to launching a join */ --static uint32_t whd_wifi_active_join_init(whd_interface_t ifp, whd_security_t auth_type, const uint8_t *security_key, -- uint8_t key_length, cy_semaphore_t *semaphore) --{ -- whd_driver_t whd_driver = ifp->whd_driver; -- -- if (whd_driver->internal_info.active_join_mutex_initted == WHD_FALSE) -- { -- CHECK_RETURN(cy_rtos_init_semaphore(&whd_driver->internal_info.active_join_mutex, 1, 0) ); -- whd_driver->internal_info.active_join_mutex_initted = WHD_TRUE; -- CHECK_RETURN(cy_rtos_set_semaphore(&whd_driver->internal_info.active_join_mutex, WHD_FALSE) ); -- } -- -- CHECK_RETURN(cy_rtos_get_semaphore(&whd_driver->internal_info.active_join_mutex, CY_RTOS_NEVER_TIMEOUT, -- WHD_FALSE) ); -- whd_driver->internal_info.active_join_semaphore = semaphore; -- CHECK_RETURN(cy_rtos_set_semaphore(&whd_driver->internal_info.active_join_mutex, WHD_FALSE) ); -- -- CHECK_RETURN(whd_wifi_prepare_join(ifp, auth_type, security_key, key_length, semaphore) ); -- return WHD_SUCCESS; --} -- --static uint32_t whd_wifi_prepare_join(whd_interface_t ifp, whd_security_t auth_type, -- const uint8_t *security_key, uint8_t key_length, -- cy_semaphore_t *semaphore) --{ -- whd_buffer_t buffer; -- uint32_t auth_mfp = WL_MFP_NONE; -- whd_result_t retval = WHD_SUCCESS; -- whd_result_t check_result = WHD_SUCCESS; -- uint16_t a; -- uint32_t *data; -- uint32_t *wpa_auth; -- uint32_t bss_index = 0; -- uint32_t auth; -- whd_driver_t whd_driver = ifp->whd_driver; -- uint16_t event_entry = 0xFF; -- -- (void)bss_index; -- if ( (auth_type == WHD_SECURITY_WPA2_FBT_ENT) || (auth_type == WHD_SECURITY_IBSS_OPEN) || -- (auth_type == WHD_SECURITY_WPA2_FBT_PSK) ) -- { -- return WHD_UNKNOWN_SECURITY_TYPE; -- } -- if ( ( ( (key_length > (uint8_t)WSEC_MAX_PSK_LEN) || (key_length < (uint8_t)WSEC_MIN_PSK_LEN) ) && -- ( (auth_type == WHD_SECURITY_WPA_TKIP_PSK) || (auth_type == WHD_SECURITY_WPA_AES_PSK) || -- (auth_type == WHD_SECURITY_WPA2_AES_PSK) || (auth_type == WHD_SECURITY_WPA2_TKIP_PSK) || -- (auth_type == WHD_SECURITY_WPA2_MIXED_PSK) ) ) || -- ( (key_length > (uint8_t)WSEC_MAX_SAE_PASSWORD_LEN) && -- ( (auth_type == WHD_SECURITY_WPA3_SAE) || (auth_type == WHD_SECURITY_WPA3_WPA2_PSK) ) ) ) -- { -- return WHD_INVALID_KEY; -- } -- -- (void)auth_type, (void)security_key, (void)key_length, (void)semaphore; -- -- /* Clear the current join status */ -- whd_driver->internal_info.whd_join_status[ifp->bsscfgidx] = 0; -- -- /* Setting wsec will overwrite mfp setting in older branches, store value before setting wsec */ -- CHECK_RETURN(whd_wifi_get_iovar_value(ifp, IOVAR_STR_MFP, &auth_mfp) ); -- -- /* Set Wireless Security Type */ -- CHECK_RETURN(whd_wifi_set_ioctl_value(ifp, WLC_SET_WSEC, (uint32_t)(auth_type & 0xFF) ) ); -- -- /* Map the interface to a BSS index */ -- bss_index = ifp->bsscfgidx; -- -- /* Set supplicant variable - mfg app doesn't support these iovars, so don't care if return fails */ -- data = whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, "bsscfg:" IOVAR_STR_SUP_WPA); -- CHECK_IOCTL_BUFFER(data); -- data[0] = htod32(bss_index); -- data[1] = -- htod32( ( uint32_t )( ( ( (auth_type & WPA_SECURITY) != 0 ) || ( (auth_type & WPA2_SECURITY) != 0 ) || -- (auth_type & WPA3_SECURITY) != 0 ) ? 1 : 0 ) ); -- (void)whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- -- /* Set the EAPOL version to whatever the AP is using (-1) */ -- data = whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)8, "bsscfg:" IOVAR_STR_SUP_WPA2_EAPVER); -- CHECK_IOCTL_BUFFER(data); -- data[0] = htod32(bss_index); -- data[1] = htod32( ( uint32_t )-1 ); -- (void)whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- -- /* Send WPA Key */ -- switch (auth_type) -- { -- case WHD_SECURITY_OPEN: -- case WHD_SECURITY_WPS_SECURE: -- break; -- -- case WHD_SECURITY_WPA_TKIP_PSK: -- case WHD_SECURITY_WPA_AES_PSK: -- case WHD_SECURITY_WPA_MIXED_PSK: -- case WHD_SECURITY_WPA2_AES_PSK: -- case WHD_SECURITY_WPA2_TKIP_PSK: -- case WHD_SECURITY_WPA2_MIXED_PSK: -- case WHD_SECURITY_WPA2_WPA_AES_PSK: -- case WHD_SECURITY_WPA2_WPA_MIXED_PSK: -- /* Set the EAPOL key packet timeout value, otherwise unsuccessful supplicant events aren't reported. If the IOVAR is unsupported then continue. */ -- CHECK_RETURN_UNSUPPORTED_CONTINUE(whd_wifi_set_supplicant_key_timeout(ifp, -- DEFAULT_EAPOL_KEY_PACKET_TIMEOUT) ); -- CHECK_RETURN(whd_wifi_set_passphrase(ifp, security_key, key_length) ); -- break; -- -- case WHD_SECURITY_WPA3_SAE: -- case WHD_SECURITY_WPA3_WPA2_PSK: -- /* Set the EAPOL key packet timeout value, otherwise unsuccessful supplicant events aren't reported. If the IOVAR is unsupported then continue. */ -- CHECK_RETURN_UNSUPPORTED_CONTINUE(whd_wifi_set_supplicant_key_timeout(ifp, -- DEFAULT_EAPOL_KEY_PACKET_TIMEOUT) ); -- CHECK_RETURN(whd_wifi_sae_password(ifp, security_key, key_length) ); -- break; -- -- case WHD_SECURITY_WPA_TKIP_ENT: -- case WHD_SECURITY_WPA_AES_ENT: -- case WHD_SECURITY_WPA_MIXED_ENT: -- case WHD_SECURITY_WPA2_TKIP_ENT: -- case WHD_SECURITY_WPA2_AES_ENT: -- case WHD_SECURITY_WPA2_MIXED_ENT: --#if 0 -- case WHD_SECURITY_WPA2_FBT_ENT: -- /* Disable eapol timer by setting to value 0 */ -- CHECK_RETURN_UNSUPPORTED_CONTINUE(whd_wifi_set_supplicant_key_timeout(ifp, 0) ); -- break; --#endif -- case WHD_SECURITY_WEP_PSK: -- case WHD_SECURITY_WEP_SHARED: -- for (a = 0; a < key_length; a = ( uint16_t )(a + 2 + security_key[1]) ) -- { -- const whd_wep_key_t *in_key = (const whd_wep_key_t *)&security_key[a]; -- wl_wsec_key_t *out_key = -- (wl_wsec_key_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, sizeof(wl_wsec_key_t) ); -- CHECK_IOCTL_BUFFER(out_key); -- memset(out_key, 0, sizeof(wl_wsec_key_t) ); -- out_key->index = in_key->index; -- out_key->len = in_key->length; -- memcpy(out_key->data, in_key->data, in_key->length); -- switch (in_key->length) -- { -- case 5: -- out_key->algo = (uint32_t)CRYPTO_ALGO_WEP1; -- break; -- -- case 13: -- out_key->algo = (uint32_t)CRYPTO_ALGO_WEP128; -- break; -- -- case 16: -- /* default to AES-CCM */ -- out_key->algo = (uint32_t)CRYPTO_ALGO_AES_CCM; -- break; -- -- case 32: -- out_key->algo = (uint32_t)CRYPTO_ALGO_TKIP; -- break; -- -- default: -- CHECK_RETURN(whd_buffer_release(whd_driver, buffer, WHD_NETWORK_TX) ); -- return WHD_INVALID_KEY; -- } -- /* Set the first entry as primary key by default */ -- if (a == 0) -- { -- out_key->flags |= WL_PRIMARY_KEY; -- } -- out_key->index = htod32(out_key->index); -- out_key->len = htod32(out_key->len); -- out_key->algo = htod32(out_key->algo); -- out_key->flags = htod32(out_key->flags); -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_KEY, buffer, NULL) ); -- } -- break; -- -- case WHD_SECURITY_FORCE_32_BIT: -- case WHD_SECURITY_UNKNOWN: -- default: -- whd_assert("whd_wifi_prepare_join: Unsupported security type\n", 0 != 0); -- break; -- } -- /* Set infrastructure mode */ -- CHECK_RETURN(whd_wifi_set_ioctl_value(ifp, WLC_SET_INFRA, ( (auth_type & IBSS_ENABLED) == 0 ) ? 1 : 0) ); -- -- /* Set authentication type */ -- if (auth_type == WHD_SECURITY_WEP_SHARED) -- { -- auth = WL_AUTH_SHARED_KEY; -- } -- else if ( (auth_type == WHD_SECURITY_WPA3_SAE) || (auth_type == WHD_SECURITY_WPA3_WPA2_PSK) ) -- { -- auth = WL_AUTH_SAE; -- } -- else -- { -- auth = WL_AUTH_OPEN_SYSTEM; -- } -- CHECK_RETURN(whd_wifi_set_ioctl_value(ifp, WLC_SET_AUTH, auth) ); -- -- /* From PMF cert test plan, -- * 2.2 Out of Box Requirements -- * When WPA2 security is enabled on the DUT, then by defaults the DUT shall: -- * Enable Robust Management Frame Protection Capable (MFPC) functionality -- */ -- if ( (auth_type == WHD_SECURITY_WPA3_SAE) || (auth_type == WHD_SECURITY_WPA3_WPA2_PSK) || -- auth_type & WPA2_SECURITY ) -- { -- auth_mfp = WL_MFP_CAPABLE; -- } -- -- check_result = whd_wifi_set_iovar_value(ifp, IOVAR_STR_MFP, auth_mfp); -- if (check_result != WHD_SUCCESS) -- { -- WPRINT_WHD_DEBUG( ("Older chipsets might not support MFP..Ignore result\n") ); -- } -- -- /* Set WPA authentication mode */ -- wpa_auth = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)4); -- CHECK_IOCTL_BUFFER(wpa_auth); -- -- switch (auth_type) -- { --#if 0 -- case WHD_SECURITY_IBSS_OPEN: -- /* IBSS does not get authenticated onto an AP */ -- whd_driver->internal_info.whd_join_status[ifp->bsscfgidx] |= JOIN_AUTHENTICATED; --#endif -- /* intentional fall-thru */ -- /* Disables Eclipse static analysis warning */ -- /* no break */ -- /* Fall-Through */ -- case WHD_SECURITY_OPEN: -- case WHD_SECURITY_WPS_SECURE: -- *wpa_auth = WPA_AUTH_DISABLED; -- /* Open Networks do not have to complete security */ -- whd_driver->internal_info.whd_join_status[ifp->bsscfgidx] |= JOIN_SECURITY_COMPLETE; -- break; -- -- case WHD_SECURITY_WPA_TKIP_PSK: -- case WHD_SECURITY_WPA_AES_PSK: -- case WHD_SECURITY_WPA_MIXED_PSK: -- *wpa_auth = (uint32_t)WPA_AUTH_PSK; -- break; -- -- case WHD_SECURITY_WPA2_AES_PSK: -- case WHD_SECURITY_WPA2_TKIP_PSK: -- case WHD_SECURITY_WPA2_MIXED_PSK: -- case WHD_SECURITY_WPA2_WPA_AES_PSK: -- case WHD_SECURITY_WPA2_WPA_MIXED_PSK: -- *wpa_auth = (uint32_t)WPA2_AUTH_PSK; -- break; -- -- case WHD_SECURITY_WPA3_SAE: -- case WHD_SECURITY_WPA3_WPA2_PSK: -- *wpa_auth = (uint32_t)WPA3_AUTH_SAE_PSK; -- break; -- -- case WHD_SECURITY_WPA_TKIP_ENT: -- case WHD_SECURITY_WPA_AES_ENT: -- case WHD_SECURITY_WPA_MIXED_ENT: -- *wpa_auth = (uint32_t)WPA_AUTH_UNSPECIFIED; -- break; -- -- case WHD_SECURITY_WPA2_TKIP_ENT: -- case WHD_SECURITY_WPA2_AES_ENT: -- case WHD_SECURITY_WPA2_MIXED_ENT: -- *wpa_auth = (uint32_t)WPA2_AUTH_UNSPECIFIED; -- break; --#if 0 -- case WHD_SECURITY_WPA2_FBT_ENT: -- *wpa_auth = ( uint32_t )(WPA2_AUTH_UNSPECIFIED | WPA2_AUTH_FT); -- break; --#endif -- case WHD_SECURITY_WEP_PSK: -- case WHD_SECURITY_WEP_SHARED: -- *wpa_auth = WPA_AUTH_DISABLED; -- whd_driver->internal_info.whd_join_status[ifp->bsscfgidx] |= JOIN_SECURITY_COMPLETE; -- break; -- -- case WHD_SECURITY_UNKNOWN: -- case WHD_SECURITY_FORCE_32_BIT: -- default: -- WPRINT_WHD_DEBUG( ("Unsupported Security type\n") ); -- *wpa_auth = WPA_AUTH_DISABLED; -- break; -- } -- *wpa_auth = htod32(*wpa_auth); -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_WPA_AUTH, buffer, 0) ); -- -- if (ifp->event_reg_list[WHD_JOIN_EVENT_ENTRY] != WHD_EVENT_NOT_REGISTERED) -- { -- whd_wifi_deregister_event_handler(ifp, ifp->event_reg_list[WHD_JOIN_EVENT_ENTRY]); -- ifp->event_reg_list[WHD_JOIN_EVENT_ENTRY] = WHD_EVENT_NOT_REGISTERED; -- } -- -- CHECK_RETURN(whd_management_set_event_handler(ifp, join_events, whd_wifi_join_events_handler, (void *)semaphore, -- &event_entry) ); -- if (event_entry >= WHD_EVENT_ENTRY_MAX) -- { -- WPRINT_WHD_ERROR( ("Join events registration failed in function %s and line %d", __func__, __LINE__) ); -- return WHD_UNFINISHED; -- } -- ifp->event_reg_list[WHD_JOIN_EVENT_ENTRY] = event_entry; -- whd_assert("Set join Event handler failed\n", retval == WHD_SUCCESS); -- -- return WHD_SUCCESS; --} -- --/* do any needed tear down after join -- * @param stack_semaphore - semaphore used to control execution if client_semaphore is NULL -- * @param client_semaphore - semaphore used to control execution if client passes this in -- */ --static void whd_wifi_active_join_deinit(whd_interface_t ifp, cy_semaphore_t *stack_semaphore, whd_result_t result) --{ -- whd_driver_t whd_driver = ifp->whd_driver; -- whd_result_t val; -- /* deinit join specific variables, with protection from mutex */ -- -- val = cy_rtos_get_semaphore(&whd_driver->internal_info.active_join_mutex, CY_RTOS_NEVER_TIMEOUT, WHD_FALSE); -- if (val != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("Get semaphore failed in %s at %d \n", __func__, __LINE__) ); -- -- whd_driver->internal_info.active_join_semaphore = NULL; -- -- cy_rtos_deinit_semaphore(stack_semaphore); -- -- if (WHD_SUCCESS != result) -- { -- WPRINT_WHD_INFO( ("Failed join (err %" PRIu32 ")\n", result) ); -- ifp->role = WHD_INVALID_ROLE; -- } -- -- val = cy_rtos_set_semaphore(&whd_driver->internal_info.active_join_mutex, WHD_FALSE); -- if (val != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("Get semaphore failed in %s at %d \n", __func__, __LINE__) ); -- -- /* we forced the chip to be up during join, now let it sleep */ -- WHD_WLAN_LET_SLEEP(whd_driver); --} -- --static uint32_t whd_wifi_join_wait_for_complete(whd_interface_t ifp, cy_semaphore_t *semaphore) --{ -- whd_result_t result; -- uint32_t start_time; -- uint32_t current_time; -- whd_bool_t done = WHD_FALSE; -- -- cy_rtos_get_time(&start_time); -- -- while (!done) -- { -- result = cy_rtos_get_semaphore(semaphore, DEFAULT_JOIN_ATTEMPT_TIMEOUT / 10, WHD_FALSE); -- whd_assert("Get semaphore failed", (result == CY_RSLT_SUCCESS) || (result == CY_RTOS_TIMEOUT) ); -- REFERENCE_DEBUG_ONLY_VARIABLE(result); -- -- result = whd_wifi_is_ready_to_transceive(ifp); -- if (result == WHD_SUCCESS) -- { -- break; -- } -- -- cy_rtos_get_time(¤t_time); -- done = (whd_bool_t)( (current_time - start_time) >= DEFAULT_JOIN_ATTEMPT_TIMEOUT ); -- } -- -- if (result != WHD_SUCCESS) -- { -- CHECK_RETURN(whd_wifi_leave(ifp) ); -- WPRINT_WHD_INFO( ("%s: not ready to transceive (err %" PRIu32 "); left network\n", __func__, result) ); -- } -- -- return result; --} -- --static uint32_t whd_wifi_check_join_status(whd_interface_t ifp) --{ -- whd_driver_t whd_driver = ifp->whd_driver; -- -- if ( (uint32_t)ifp->bsscfgidx >= WHD_INTERFACE_MAX ) -- { -- WPRINT_WHD_ERROR( ("%s: Bad interface %d\n", __FUNCTION__, ifp->bsscfgidx) ); -- return WHD_INVALID_JOIN_STATUS; -- } -- switch (whd_driver->internal_info.whd_join_status[ifp->bsscfgidx]) -- { -- case JOIN_NO_NETWORKS: -- return WHD_NETWORK_NOT_FOUND; -- -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_EAPOL_KEY_M1_TIMEOUT: -- return WHD_EAPOL_KEY_PACKET_M1_TIMEOUT; -- -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_EAPOL_KEY_M3_TIMEOUT: -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_SSID_SET | JOIN_EAPOL_KEY_M3_TIMEOUT: -- return WHD_EAPOL_KEY_PACKET_M3_TIMEOUT; -- -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_EAPOL_KEY_G1_TIMEOUT: -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_SSID_SET | JOIN_EAPOL_KEY_G1_TIMEOUT: -- return WHD_EAPOL_KEY_PACKET_G1_TIMEOUT; -- -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_EAPOL_KEY_FAILURE: -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_SSID_SET | JOIN_EAPOL_KEY_FAILURE: -- return WHD_EAPOL_KEY_FAILURE; -- -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_SSID_SET | JOIN_SECURITY_COMPLETE: -- return WHD_SUCCESS; -- -- case 0: -- case JOIN_SECURITY_COMPLETE: /* For open/WEP */ -- return WHD_NOT_AUTHENTICATED; -- -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_SECURITY_COMPLETE: -- return WHD_JOIN_IN_PROGRESS; -- -- case JOIN_AUTHENTICATED | JOIN_LINK_READY: -- case JOIN_AUTHENTICATED | JOIN_LINK_READY | JOIN_SSID_SET: -- return WHD_NOT_KEYED; -- -- default: -- return WHD_INVALID_JOIN_STATUS; -- } --} -- --uint32_t whd_wifi_join_specific(whd_interface_t ifp, const whd_scan_result_t *ap, const uint8_t *security_key, -- uint8_t key_length) --{ -- whd_buffer_t buffer; -- cy_semaphore_t join_semaphore; -- whd_result_t result; -- wl_extjoin_params_t *ext_join_params; -- wl_join_params_t *join_params; -- whd_security_t security = ap->security; -- uint16_t wl_band_for_channel = 0; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- /* Keep WLAN awake while joining */ -- WHD_WLAN_KEEP_AWAKE(whd_driver); -- ifp->role = WHD_STA_ROLE; -- -- if (ap->bss_type == WHD_BSS_TYPE_MESH) -- { -- return WHD_UNSUPPORTED; -- } -- -- if (ap->bss_type == WHD_BSS_TYPE_ADHOC) -- { -- security |= IBSS_ENABLED; -- } -- -- if (NULL_MAC(ap->BSSID.octet) ) -- { -- WPRINT_WHD_ERROR( ("NULL address is not allowed/valid\n") ); -- return WHD_BADARG; -- } -- -- if (BROADCAST_ID(ap->BSSID.octet) ) -- { -- WPRINT_WHD_ERROR( ("Broadcast address is not allowed/valid in join with specific BSSID of AP\n") ); -- return WHD_BADARG; -- } -- -- if ( (ap->SSID.length == 0) || (ap->SSID.length > (size_t)SSID_NAME_SIZE) ) -- { -- WPRINT_WHD_ERROR( ("%s: failure: SSID length error\n", __func__) ); -- return WHD_WLAN_BADSSIDLEN; -- } -- -- CHECK_RETURN(cy_rtos_init_semaphore(&join_semaphore, 1, 0) ); -- result = whd_wifi_active_join_init(ifp, security, security_key, key_length, &join_semaphore); -- -- if (result == WHD_SUCCESS) -- { -- /* Check if soft AP is running, if so, move its current channel to the the destination AP */ -- if ( (ifp->role == WHD_AP_ROLE) && (whd_wifi_is_ready_to_transceive(ifp) == WHD_SUCCESS) ) -- { -- uint32_t current_softap_channel = 0; -- CHECK_RETURN(whd_wifi_get_channel(ifp, ¤t_softap_channel) ); -- if (current_softap_channel != ap->channel) -- { -- CHECK_RETURN(whd_wifi_set_channel(ifp, ap->channel) ); -- WPRINT_WHD_DEBUG( ("WARN: moving soft-AP channel from %" PRIu32 " to %d due to STA join\n", -- current_softap_channel, ap->channel) ); -- cy_rtos_delay_milliseconds(100); -- } -- } -- -- else -- { -- if (ap->bss_type == WHD_BSS_TYPE_ADHOC) -- { -- CHECK_RETURN(whd_wifi_set_channel(ifp, ap->channel) ); -- } -- } -- -- /* Join network */ -- ext_join_params = -- (wl_extjoin_params_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, sizeof(wl_extjoin_params_t), "join"); -- CHECK_IOCTL_BUFFER(ext_join_params); -- memset(ext_join_params, 0, sizeof(wl_extjoin_params_t) ); -- -- ext_join_params->ssid.SSID_len = ap->SSID.length; -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- memcpy(ext_join_params->ssid.SSID, ap->SSID.value, ext_join_params->ssid.SSID_len); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- memcpy(&ext_join_params->assoc_params.bssid, &ap->BSSID, sizeof(whd_mac_t) ); -- ext_join_params->scan_params.scan_type = 0; -- ext_join_params->scan_params.active_time = -1; -- ext_join_params->scan_params.home_time = -1; -- ext_join_params->scan_params.nprobes = -1; -- ext_join_params->scan_params.passive_time = -1; -- ext_join_params->assoc_params.bssid_cnt = 0; -- if (ap->channel) -- { -- ext_join_params->assoc_params.chanspec_num = (uint32_t)1; -- ext_join_params->assoc_params.chanspec_list[0] = -- (wl_chanspec_t)htod16( (ap->channel | -- GET_C_VAR(whd_driver, CHANSPEC_BW_20) | GET_C_VAR(whd_driver, -- CHANSPEC_CTL_SB_NONE) ) ); -- -- /* set band properly */ -- wl_band_for_channel = whd_channel_to_wl_band(whd_driver, ap->channel); -- -- ext_join_params->assoc_params.chanspec_list[0] |= wl_band_for_channel; -- } -- result = whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0); -- -- WPRINT_WHD_INFO( ("%s: set_ssid result (err %" PRIu32 "); left network\n", __func__, result) ); -- -- /* Some firmware, e.g. for 4390, does not support the join IOVAR, so use the older IOCTL call instead */ -- if (result == WHD_WLAN_UNSUPPORTED) -- { -- join_params = -- (wl_join_params_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, sizeof(wl_join_params_t) ); -- CHECK_IOCTL_BUFFER(join_params); -- memset(join_params, 0, sizeof(wl_join_params_t) ); -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- memcpy(&join_params->ssid, &ext_join_params->ssid, sizeof(wlc_ssid_t) ); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- memcpy(&join_params->params.bssid, &ap->BSSID, sizeof(whd_mac_t) ); -- join_params->params.bssid_cnt = 0; -- if (ap->channel) -- { -- join_params->params.chanspec_num = (uint32_t)1; -- join_params->params.chanspec_list[0] = -- (wl_chanspec_t)htod16( (ap->channel | -- GET_C_VAR(whd_driver, -- CHANSPEC_BW_20) | GET_C_VAR(whd_driver, CHANSPEC_CTL_SB_NONE) ) ); -- -- /* set band properly */ -- join_params->params.chanspec_list[0] |= wl_band_for_channel; -- } -- result = whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_SSID, buffer, 0); -- } -- -- if (result == WHD_SUCCESS) -- { -- -- uint16_t chip_id = whd_chip_get_chip_id(whd_driver); -- -- result = whd_wifi_join_wait_for_complete(ifp, &join_semaphore); -- -- if (chip_id == 43455) -- { -- /* For 11 AC MAX throughput set the frame burst and MPDU per AMPDU */ -- CHECK_RETURN(whd_wifi_set_iovar_value(ifp, IOVAR_STR_MPDU_PER_AMPDU, 64) ); -- } -- -- } -- else -- { -- WPRINT_WHD_INFO( ("%s:3 not ready to transceive (err %" PRIu32 "); left network\n", __func__, result) ); -- } -- } -- else -- { -- WPRINT_WHD_INFO( ("%s: active join init failed: (%" PRIu32 ")\n", __FUNCTION__, result) ); -- } -- /* clean up from the join attempt */ -- whd_wifi_active_join_deinit(ifp, &join_semaphore, result); -- -- CHECK_RETURN(result); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_join(whd_interface_t ifp, const whd_ssid_t *ssid, whd_security_t auth_type, -- const uint8_t *security_key, uint8_t key_length) --{ -- cy_semaphore_t join_sema; -- whd_result_t result; -- whd_buffer_t buffer; -- wlc_ssid_t *ssid_params; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- if (ssid == NULL) -- { -- WPRINT_WHD_ERROR( ("%s: failure: ssid is null\n", __func__) ); -- return WHD_BADARG; -- } -- -- if ( (ssid->length == 0) || (ssid->length > (size_t)SSID_NAME_SIZE) ) -- { -- WPRINT_WHD_ERROR( ("%s: failure: SSID length error\n", __func__) ); -- return WHD_WLAN_BADSSIDLEN; -- } -- -- /* Keep WLAN awake while joining */ -- WHD_WLAN_KEEP_AWAKE(whd_driver); -- ifp->role = WHD_STA_ROLE; -- -- CHECK_RETURN(cy_rtos_init_semaphore(&join_sema, 1, 0) ); -- result = whd_wifi_active_join_init(ifp, auth_type, security_key, key_length, &join_sema); -- -- if (result == WHD_SUCCESS) -- { -- /* Join network */ -- ssid_params = (struct wlc_ssid *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, sizeof(wlc_ssid_t) ); -- CHECK_IOCTL_BUFFER(ssid_params); -- memset(ssid_params, 0, sizeof(wlc_ssid_t) ); -- ssid_params->SSID_len = htod32(ssid->length); -- memcpy(ssid_params->SSID, ssid->value, ssid_params->SSID_len); -- result = whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_SSID, buffer, 0); -- -- if (result == WHD_SUCCESS) -- { -- result = whd_wifi_join_wait_for_complete(ifp, &join_sema); -- } -- } -- -- /* clean up from the join attempt */ -- whd_wifi_active_join_deinit(ifp, &join_sema, result); -- -- return result; --} -- --uint32_t whd_wifi_leave(whd_interface_t ifp) --{ -- whd_result_t result = WHD_SUCCESS; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- /* If interface is greater than max return error */ -- if (ifp->bsscfgidx >= WHD_INTERFACE_MAX) -- { -- WPRINT_WHD_ERROR( ("%s: Bad interface 2\n", __FUNCTION__) ); -- return WHD_BADARG; -- } -- if (ifp->event_reg_list[WHD_JOIN_EVENT_ENTRY] != WHD_EVENT_NOT_REGISTERED) -- { -- CHECK_RETURN(whd_wifi_deregister_event_handler(ifp, ifp->event_reg_list[WHD_JOIN_EVENT_ENTRY]) ); -- ifp->event_reg_list[WHD_JOIN_EVENT_ENTRY] = WHD_EVENT_NOT_REGISTERED; -- } -- -- /* Disassociate from AP */ -- result = whd_wifi_set_ioctl_buffer(ifp, WLC_DISASSOC, NULL, 0); -- -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_DEBUG( ("whd_sdpcm_send_ioctl(WLC_DISASSOC) failed:%" PRIu32 "\r\n", result) ); -- } -- -- whd_driver->internal_info.whd_join_status[ifp->bsscfgidx] = 0; -- ifp->role = WHD_INVALID_ROLE; -- return WHD_SUCCESS; --} -- --/** Handles scan result events -- * -- * This function receives scan record events, and parses them into a better format, then passes the results -- * to the user application. -- * -- * @param event_header : The event details -- * @param event_data : The data for the event which contains the scan result structure -- * @param handler_user_data: data which will be passed to user application -- * -- * @returns : handler_user_data parameter -- * -- */ --static void *whd_wifi_scan_events_handler(whd_interface_t ifp, const whd_event_header_t *event_header, -- const uint8_t *event_data, -- void *handler_user_data) --{ -- whd_scan_result_t *record; -- wl_escan_result_t *eresult; -- wl_bss_info_t *bss_info; -- uint16_t chanspec; -- uint32_t version; -- whd_tlv8_header_t *cp; -- uint32_t len; -- uint16_t ie_offset; -- uint32_t bss_info_length; -- country_info_ie_fixed_portion_t *country_info_ie; -- rsn_ie_fixed_portion_t *rsnie; -- wpa_ie_fixed_portion_t *wpaie = NULL; -- uint8_t rate_num; -- ht_capabilities_ie_t *ht_capabilities_ie = NULL; -- uint32_t count_tmp = 0; -- uint16_t temp16; -- uint16_t bss_count; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- if (whd_driver->internal_info.scan_result_callback == NULL) -- { -- return handler_user_data; -- } -- -- if (event_header->status == WLC_E_STATUS_SUCCESS) -- { -- whd_driver->internal_info.scan_result_callback(NULL, handler_user_data, WHD_SCAN_COMPLETED_SUCCESSFULLY); -- whd_driver->internal_info.scan_result_callback = NULL; -- whd_wifi_deregister_event_handler(ifp, ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY]); -- ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY] = WHD_EVENT_NOT_REGISTERED; -- return handler_user_data; -- } -- if ( (event_header->status == WLC_E_STATUS_NEWSCAN) || (event_header->status == WLC_E_STATUS_NEWASSOC) || -- (event_header->status == WLC_E_STATUS_ABORT) ) -- { -- whd_driver->internal_info.scan_result_callback(NULL, handler_user_data, WHD_SCAN_ABORTED); -- whd_driver->internal_info.scan_result_callback = NULL; -- whd_wifi_deregister_event_handler(ifp, ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY]); -- ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY] = WHD_EVENT_NOT_REGISTERED; -- return handler_user_data; -- } -- -- if (event_header->status != WLC_E_STATUS_PARTIAL) -- { -- return handler_user_data; -- } -- -- eresult = (wl_escan_result_t *)event_data; -- bss_info = &eresult->bss_info[0]; -- bss_count = dtoh16(eresult->bss_count); -- -- version = dtoh32(WHD_READ_32(&bss_info->version) ); -- whd_minor_assert("wl_bss_info_t has wrong version", version == WL_BSS_INFO_VERSION); -- -- /* PNO bss info doesn't contain the correct bss info version */ -- if (version != WL_BSS_INFO_VERSION) -- { -- whd_minor_assert("Invalid bss_info version returned by firmware\n", version != WL_BSS_INFO_VERSION); -- -- return handler_user_data; -- } -- -- whd_minor_assert("More than one result returned by firmware", bss_count == 1); -- if (bss_count != 1) -- { -- return handler_user_data; -- } -- -- /* -- * check the SSID length and bssinfo ie offset for buffer overflow -- */ -- bss_info->ie_offset = dtoh16(bss_info->ie_offset); -- bss_info->ie_length = dtoh32(bss_info->ie_length); -- if ( (bss_info->SSID_len > sizeof(bss_info->SSID) ) || (bss_info->ie_offset < sizeof(wl_bss_info_t) ) || -- (bss_info->ie_offset > (sizeof(wl_bss_info_t) + bss_info->ie_length) ) ) -- { -- WPRINT_WHD_ERROR( ("Invalid bss length check %s: SSID_len:%d,ie_len:%" PRIu32 ",ie_off:%d\n", __FUNCTION__, -- bss_info->SSID_len, bss_info->ie_length, bss_info->ie_offset) ); -- whd_minor_assert(" bss length check failed\n", bss_info->SSID_len != sizeof(bss_info->SSID) ); -- return handler_user_data; -- } -- -- /* Safe to access *whd_scan_result_ptr, as whd_scan_result_ptr == NULL case is handled above */ -- record = (whd_scan_result_t *)(whd_driver->internal_info.whd_scan_result_ptr); -- -- /* -- * Totally ignore off channel results. This can only happen with DSSS (1 and 2 Mb). It is better to -- * totally ignore it when it happens. It is hard to argue it is "significant" given that it can't -- * happen in 5G with OFDM (or other 2G modulations). This is left here so that it could be -- * passed as a scan result for debugging only. -- */ -- if (!(bss_info->flags & WL_BSS_FLAGS_RSSI_ONCHANNEL) ) -- { -- record->flags |= WHD_SCAN_RESULT_FLAG_RSSI_OFF_CHANNEL; -- /* Comment out this return statement to pass along an off channel result for debugging */ -- return handler_user_data; -- } -- -- /* Copy the SSID into the output record structure */ -- record->SSID.length = (uint8_t)MIN_OF(sizeof(record->SSID.value), bss_info->SSID_len); -- memset(record->SSID.value, 0, sizeof(record->SSID.value) ); -- memcpy(record->SSID.value, bss_info->SSID, record->SSID.length); -- -- /* Copy the BSSID into the output record structure */ -- memcpy( (void *)record->BSSID.octet, (const void *)bss_info->BSSID.octet, sizeof(bss_info->BSSID.octet) ); -- -- /* Copy the RSSI into the output record structure */ -- record->signal_strength = ( int16_t )dtoh16( (WHD_READ_16(&bss_info->RSSI) ) ); -- -- /* Find maximum data rate and put it in the output record structure */ -- record->max_data_rate = 0; -- count_tmp = WHD_READ_32(&bss_info->rateset.count); -- if (count_tmp > 16) -- { -- count_tmp = 16; -- } -- --#ifdef WPRINT_ENABLE_WHD_DEBUG -- /* print out scan results info */ -- { -- char ea_buf[WHD_ETHER_ADDR_STR_LEN]; -- char ssid_buf[SSID_NAME_SIZE + 1]; -- -- WPRINT_WHD_DEBUG( ("Scan result: channel=%d signal=%d ssid=%s bssid=%s\n", record->channel, -- record->signal_strength, -- whd_ssid_to_string(record->SSID.value, record->SSID.length, ssid_buf, -- (uint8_t)sizeof(ssid_buf) ), -- whd_ether_ntoa( (const uint8_t *)bss_info->BSSID.octet, ea_buf, sizeof(ea_buf) ) ) ); -- } --#endif /* WPRINT_ENABLE_WHD_DEBUG */ -- -- for (rate_num = 0; rate_num < count_tmp; rate_num++) -- { -- uint32_t rate = RSPEC_TO_KBPS(bss_info->rateset.rates[rate_num]); -- if (record->max_data_rate < rate) -- { -- record->max_data_rate = rate; -- } -- } -- -- bss_info->capability = dtoh16(bss_info->capability); -- -- /* Write the BSS type into the output record structure */ -- record->bss_type = -- ( (bss_info->capability & DOT11_CAP_ESS) != -- 0 ) ? WHD_BSS_TYPE_INFRASTRUCTURE : ( (bss_info->capability & DOT11_CAP_IBSS) != -- 0 ) ? WHD_BSS_TYPE_ADHOC : WHD_BSS_TYPE_UNKNOWN; -- -- /* Determine the network security. -- * Some of this section has been copied from the standard broadcom host driver file wl/exe/wlu.c function wl_dump_wpa_rsn_ies -- */ -- -- ie_offset = WHD_READ_16(&bss_info->ie_offset); -- cp = (whd_tlv8_header_t *)( ( (uint8_t *)bss_info ) + ie_offset ); -- len = WHD_READ_32(&bss_info->ie_length); -- bss_info_length = WHD_READ_32(&bss_info->length); -- -- record->ie_ptr = (uint8_t *)cp; -- record->ie_len = len; -- -- /* Validate the length of the IE section */ -- if ( (ie_offset > bss_info_length) || (len > bss_info_length - ie_offset) ) -- { -- whd_minor_assert("Invalid ie length", 1 == 0); -- return handler_user_data; -- } -- -- /* Find an RSN IE (Robust-Security-Network Information-Element) */ -- rsnie = (rsn_ie_fixed_portion_t *)whd_parse_dot11_tlvs(cp, len, DOT11_IE_ID_RSN); -- -- /* Find a WPA IE */ -- if (rsnie == NULL) -- { -- whd_tlv8_header_t *parse = cp; -- uint32_t parse_len = len; -- while ( (wpaie = -- (wpa_ie_fixed_portion_t *)whd_parse_tlvs(parse, parse_len, DOT11_IE_ID_VENDOR_SPECIFIC) ) != 0 ) -- { -- if (whd_is_wpa_ie( (vendor_specific_ie_header_t *)wpaie, &parse, &parse_len ) != WHD_FALSE) -- { -- break; -- } -- } -- } -- -- temp16 = WHD_READ_16(&bss_info->capability); -- -- /* Check if AP is configured for RSN */ -- if ( (rsnie != NULL) && -- (rsnie->tlv_header.length >= RSN_IE_MINIMUM_LENGTH + rsnie->pairwise_suite_count * sizeof(uint32_t) ) ) -- { -- uint16_t a; -- uint32_t group_key_suite; -- akm_suite_portion_t *akm_suites; -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- akm_suites = (akm_suite_portion_t *)&(rsnie->pairwise_suite_list[rsnie->pairwise_suite_count]); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- for (a = 0; a < akm_suites->akm_suite_count; ++a) -- { -- uint32_t akm_suite_list_item = ntoh32(akm_suites->akm_suite_list[a]) & 0xFF; -- if (akm_suite_list_item == (uint32_t)WHD_AKM_PSK) -- { -- record->security |= WPA2_SECURITY; -- } -- if (akm_suite_list_item == (uint32_t)WHD_AKM_SAE_SHA256) -- { -- record->security |= WPA3_SECURITY; -- } -- if (akm_suite_list_item == (uint32_t)WHD_AKM_8021X) -- { -- record->security |= ENTERPRISE_ENABLED; -- } -- if (akm_suite_list_item == (uint32_t)WHD_AKM_FT_8021X) -- { -- record->security |= FBT_ENABLED; -- record->security |= ENTERPRISE_ENABLED; -- } -- if (akm_suite_list_item == (uint32_t)WHD_AKM_FT_PSK) -- { -- record->security |= FBT_ENABLED; -- } -- } -- -- group_key_suite = ntoh32(rsnie->group_key_suite) & 0xFF; -- /* Check the RSN contents to see if there are any references to TKIP cipher (2) in the group key or pairwise keys, */ -- /* If so it must be mixed mode. */ -- if (group_key_suite == (uint32_t)WHD_CIPHER_TKIP) -- { -- record->security |= TKIP_ENABLED; -- } -- if (group_key_suite == (uint32_t)WHD_CIPHER_CCMP_128) -- { -- record->security |= AES_ENABLED; -- } -- -- for (a = 0; a < rsnie->pairwise_suite_count; ++a) -- { -- uint32_t pairwise_suite_list_item = ntoh32(rsnie->pairwise_suite_list[a]) & 0xFF; -- if (pairwise_suite_list_item == (uint32_t)WHD_CIPHER_TKIP) -- { -- record->security |= TKIP_ENABLED; -- } -- -- if (pairwise_suite_list_item == (uint32_t)WHD_CIPHER_CCMP_128) -- { -- record->security |= AES_ENABLED; -- } -- } -- } -- /* Check if AP is configured for WPA */ -- else if ( (wpaie != NULL) && -- (wpaie->vendor_specific_header.tlv_header.length >= -- WPA_IE_MINIMUM_LENGTH + wpaie->unicast_suite_count * sizeof(uint32_t) ) ) -- { -- uint16_t a; -- uint32_t group_key_suite; -- akm_suite_portion_t *akm_suites; -- -- record->security = (whd_security_t)WPA_SECURITY; -- group_key_suite = ntoh32(wpaie->multicast_suite) & 0xFF; -- if (group_key_suite == (uint32_t)WHD_CIPHER_TKIP) -- { -- record->security |= TKIP_ENABLED; -- } -- if (group_key_suite == (uint32_t)WHD_CIPHER_CCMP_128) -- { -- record->security |= AES_ENABLED; -- } -- -- akm_suites = (akm_suite_portion_t *)&(wpaie->unicast_suite_list[wpaie->unicast_suite_count]); -- for (a = 0; a < akm_suites->akm_suite_count; ++a) -- { -- uint32_t akm_suite_list_item = ntoh32(akm_suites->akm_suite_list[a]) & 0xFF; -- if (akm_suite_list_item == (uint32_t)WHD_AKM_8021X) -- { -- record->security |= ENTERPRISE_ENABLED; -- } -- } -- -- for (a = 0; a < wpaie->unicast_suite_count; ++a) -- { -- if (wpaie->unicast_suite_list[a][3] == (uint32_t)WHD_CIPHER_CCMP_128) -- { -- record->security |= AES_ENABLED; -- } -- } -- } -- /* Check if AP is configured for WEP, that is, if the capabilities field indicates privacy, then security supports WEP */ -- else if ( (temp16 & DOT11_CAP_PRIVACY) != 0 ) -- { -- record->security = WHD_SECURITY_WEP_PSK; -- } -- else -- { -- /* Otherwise no security */ -- record->security = WHD_SECURITY_OPEN; -- } -- -- /* Update the maximum data rate with 11n rates from the HT Capabilities IE */ -- ht_capabilities_ie = (ht_capabilities_ie_t *)whd_parse_tlvs(cp, len, DOT11_IE_ID_HT_CAPABILITIES); -- if ( (ht_capabilities_ie != NULL) && (ht_capabilities_ie->tlv_header.length == HT_CAPABILITIES_IE_LENGTH) ) -- { -- uint8_t a; -- uint8_t supports_40mhz = -- (ht_capabilities_ie->ht_capabilities_info & HT_CAPABILITIES_INFO_SUPPORTED_CHANNEL_WIDTH_SET) != 0 ? 1 : 0; -- uint8_t short_gi[2] = -- { (ht_capabilities_ie->ht_capabilities_info & HT_CAPABILITIES_INFO_SHORT_GI_FOR_20MHZ) != 0 ? 1 : 0, -- (ht_capabilities_ie->ht_capabilities_info & HT_CAPABILITIES_INFO_SHORT_GI_FOR_40MHZ) != 0 ? 1 : 0 }; -- -- /* Find highest bit from MCS info */ -- for (a = 31; a != 0xFF; --a) -- { -- if ( (ht_capabilities_ie->rx_mcs[a / 8] & (1 << (a % 8) ) ) != 0 ) -- { -- break; -- } -- } -- if (a != 0xFF) -- { -- record->max_data_rate = -- ( uint32_t )(100UL * mcs_data_rate_lookup_table[a][supports_40mhz][short_gi[supports_40mhz]]); -- } -- } -- -- if (bss_info->flags & WL_BSS_FLAGS_FROM_BEACON) -- { -- record->flags |= WHD_SCAN_RESULT_FLAG_BEACON; -- } -- -- /* Get the channel for pre-N and control channel for n/HT or later */ -- chanspec = dtoh16(WHD_READ_16(&bss_info->chanspec) ); -- if (bss_info->n_cap) -- { -- /* Check control channel first.The channel that chanspec reports is the center frequency which might not be the same as -- * the 20 MHz channel that the beacons is on (primary or control channel) if it's an 802.11n/AC 40MHz or wider channel. -- */ -- record->channel = bss_info->ctl_ch; -- } -- else -- { -- /* 11 a/b/g and 20MHz bandwidth only */ -- record->channel = ( ( uint8_t )(chanspec & WL_CHANSPEC_CHAN_MASK) ); -- } -- -- /* Find country info IE (Country-Information Information-Element) */ -- country_info_ie = (country_info_ie_fixed_portion_t *)whd_parse_dot11_tlvs(cp, len, DOT11_IE_ID_COUNTRY); -- if ( (country_info_ie != NULL) && (country_info_ie->tlv_header.length >= COUNTRY_INFO_IE_MINIMUM_LENGTH) ) -- { -- record->ccode[0] = UNSIGNED_CHAR_TO_CHAR(country_info_ie->ccode[0]); -- record->ccode[1] = UNSIGNED_CHAR_TO_CHAR(country_info_ie->ccode[1]); -- } -- record->band = -- ( (chanspec & -- GET_C_VAR(whd_driver, -- CHANSPEC_BAND_MASK) ) == -- GET_C_VAR(whd_driver, CHANSPEC_BAND_2G) ? WHD_802_11_BAND_2_4GHZ : WHD_802_11_BAND_5GHZ ); -- -- whd_driver->internal_info.scan_result_callback(&whd_driver->internal_info.whd_scan_result_ptr, handler_user_data, -- WHD_SCAN_INCOMPLETE); -- -- /* whd_driver->internal_info.scan_result_callback() can make whd_scan_result_ptr to NULL */ -- if (whd_driver->internal_info.whd_scan_result_ptr == NULL) -- { -- whd_driver->internal_info.scan_result_callback(NULL, handler_user_data, WHD_SCAN_ABORTED); -- whd_driver->internal_info.scan_result_callback = NULL; -- whd_wifi_deregister_event_handler(ifp, ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY]); -- ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY] = WHD_EVENT_NOT_REGISTERED; -- } -- -- return handler_user_data; --} -- --static void whd_scan_count_handler(whd_scan_result_t **result_ptr, void *user_data, whd_scan_status_t status) --{ -- uint32_t result; -- whd_scan_userdata_t *scan_userdata = (whd_scan_userdata_t *)user_data; -- -- /* finished scan, either succesfully or through an abort */ -- if (status != WHD_SCAN_INCOMPLETE) -- { -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- result = cy_rtos_set_semaphore(&scan_userdata->scan_semaphore, WHD_FALSE); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("Set semaphore failed in %s at %d \n", __func__, __LINE__) ); -- return; -- } -- -- /* just count the available networks */ -- scan_userdata->offset += 1; -- -- memset(*result_ptr, 0, sizeof(whd_scan_result_t) ); -- return; --} -- --static void whd_scan_result_handler(whd_scan_result_t **result_ptr, void *user_data, whd_scan_status_t status) --{ -- uint32_t result; -- whd_sync_scan_result_t *record; -- whd_scan_userdata_t *scan_userdata = (whd_scan_userdata_t *)user_data; -- whd_scan_result_t *current_result = (whd_scan_result_t *)(*result_ptr); -- -- /* finished scan, either succesfully or through an abort */ -- if (status != WHD_SCAN_INCOMPLETE) -- { -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- result = cy_rtos_set_semaphore(&scan_userdata->scan_semaphore, WHD_FALSE); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- if (result != WHD_SUCCESS) -- WPRINT_WHD_ERROR( ("Set semaphore failed in %s at %d \n", __func__, __LINE__) ); -- return; -- } -- -- /* can't really keep anymore scan results */ -- if (scan_userdata->offset == scan_userdata->count) -- { -- /*Offset and the count requested is reached. return with out saving the record details */ -- memset(*result_ptr, 0, sizeof(whd_scan_result_t) ); -- return; -- } -- -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- /* Safe to access *whd_scan_result_ptr, as whd_scan_result_ptr == NULL case is handled above */ -- record = (whd_sync_scan_result_t *)(&scan_userdata->aps[scan_userdata->offset]); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- -- /* Copy the SSID into the output record structure */ -- record->SSID.length = current_result->SSID.length; -- memset(record->SSID.value, 0, sizeof(record->SSID.value) ); -- memcpy(record->SSID.value, current_result->SSID.value, record->SSID.length); -- -- /* Copy the BSSID into the output record structure */ -- memcpy( (void *)record->BSSID.octet, (const void *)current_result->BSSID.octet, -- sizeof(current_result->BSSID.octet) ); -- -- record->security = current_result->security; -- record->signal_strength = current_result->signal_strength; -- record->channel = current_result->channel; -- -- scan_userdata->offset += 1; -- memset(*result_ptr, 0, sizeof(whd_scan_result_t) ); -- return; --} -- --uint32_t whd_wifi_scan_synch(whd_interface_t ifp, -- whd_sync_scan_result_t *scan_result, -- uint32_t count -- ) --{ -- uint32_t result; -- whd_scan_result_t *scan_result_ptr; -- whd_scan_userdata_t scan_userdata; -- scan_userdata.count = count; -- scan_userdata.aps = scan_result; -- scan_userdata.offset = 0; -- -- if (!ifp || !scan_result) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- CHECK_RETURN(cy_rtos_init_semaphore(&scan_userdata.scan_semaphore, 1, 0) ); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- -- whd_scan_result_callback_t handler = (count == 0) -- ? whd_scan_count_handler : whd_scan_result_handler; -- -- scan_result_ptr = (whd_scan_result_t *)malloc(sizeof(whd_scan_result_t) ); -- if (scan_result_ptr == NULL) -- { -- goto error; -- } -- memset(scan_result_ptr, 0, sizeof(whd_scan_result_t) ); -- -- if (whd_wifi_scan(ifp, WHD_SCAN_TYPE_ACTIVE, WHD_BSS_TYPE_ANY, NULL, NULL, NULL, NULL, -- handler, (whd_scan_result_t *)scan_result_ptr, &scan_userdata) != WHD_SUCCESS) -- { -- WPRINT_WHD_INFO( ("Failed scan \n") ); -- goto error; -- } -- -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- result = cy_rtos_get_semaphore(&scan_userdata.scan_semaphore, CY_RTOS_NEVER_TIMEOUT, WHD_FALSE); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- whd_assert("Get semaphore failed", (result == CY_RSLT_SUCCESS) || (result == CY_RTOS_TIMEOUT) ); -- -- DISABLE_COMPILER_WARNING(diag_suppress = Pa039) -- result = cy_rtos_deinit_semaphore(&scan_userdata.scan_semaphore); -- ENABLE_COMPILER_WARNING(diag_suppress = Pa039) -- if (WHD_SUCCESS != result) -- { -- WPRINT_WHD_INFO( ("Failed join (err %" PRIu32 ")\n", result) ); -- } -- if (scan_result_ptr != NULL) -- { -- free(scan_result_ptr); -- scan_result_ptr = NULL; -- } -- return scan_userdata.offset; -- -- --error: -- if (scan_result_ptr != NULL) -- { -- free(scan_result_ptr); -- scan_result_ptr = NULL; -- } -- -- return WHD_MALLOC_FAILURE; --} -- --/* -- * NOTE: search references of function wlu_get in wl/exe/wlu.c to find what format the returned IOCTL data is. -- */ --uint32_t whd_wifi_scan(whd_interface_t ifp, -- whd_scan_type_t scan_type, -- whd_bss_type_t bss_type, -- const whd_ssid_t *optional_ssid, -- const whd_mac_t *optional_mac, -- const uint16_t *optional_channel_list, -- const whd_scan_extended_params_t *optional_extended_params, -- whd_scan_result_callback_t callback, -- whd_scan_result_t *result_ptr, -- void *user_data -- ) --{ -- whd_buffer_t buffer; -- wl_escan_params_t *scan_params; -- uint16_t param_size = offsetof(wl_escan_params_t, params) + WL_SCAN_PARAMS_FIXED_SIZE; -- uint16_t channel_list_size = 0; -- whd_driver_t whd_driver = ifp->whd_driver; -- uint16_t event_entry = 0xFF; -- -- whd_assert("Bad args", callback != NULL); -- -- if ( (result_ptr == NULL) || (callback == NULL) ) -- { -- return WHD_BADARG; -- } -- -- if (!( (scan_type == WHD_SCAN_TYPE_ACTIVE) || (scan_type == WHD_SCAN_TYPE_PASSIVE) || -- (scan_type == WHD_SCAN_TYPE_PROHIBITED_CHANNELS) || (scan_type == WHD_SCAN_TYPE_NO_BSSID_FILTER) ) ) -- return WHD_BADARG; -- -- if (!( (bss_type == WHD_BSS_TYPE_INFRASTRUCTURE) || (bss_type == WHD_BSS_TYPE_ADHOC) || -- (bss_type == WHD_BSS_TYPE_ANY) ) ) -- return WHD_BADARG; -- -- /* Determine size of channel_list, and add it to the parameter size so correct sized buffer can be allocated */ -- if (optional_channel_list != NULL) -- { -- /* Look for entry with channel number 0, which suggests the end of channel_list */ -- for (channel_list_size = 0; optional_channel_list[channel_list_size] != 0; channel_list_size++) -- { -- } -- param_size = ( uint16_t )(param_size + channel_list_size * sizeof(uint16_t) ); -- } -- -- if (ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY] != WHD_EVENT_NOT_REGISTERED) -- { -- whd_wifi_deregister_event_handler(ifp, ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY]); -- ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY] = WHD_EVENT_NOT_REGISTERED; -- } -- CHECK_RETURN(whd_management_set_event_handler(ifp, scan_events, whd_wifi_scan_events_handler, user_data, -- &event_entry) ); -- if (event_entry >= WHD_MAX_EVENT_SUBSCRIPTION) -- { -- WPRINT_WHD_ERROR( ("scan_events registration failed in function %s and line %d", __func__, __LINE__) ); -- return WHD_UNFINISHED; -- } -- ifp->event_reg_list[WHD_SCAN_EVENT_ENTRY] = event_entry; -- /* Allocate a buffer for the IOCTL message */ -- scan_params = (wl_escan_params_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, param_size, IOVAR_STR_ESCAN); -- CHECK_IOCTL_BUFFER(scan_params); -- -- /* Clear the scan parameters structure */ -- memset(scan_params, 0, param_size); -- -- /* Fill in the appropriate details of the scan parameters structure */ -- scan_params->version = htod32(ESCAN_REQ_VERSION); -- scan_params->action = htod16(WL_SCAN_ACTION_START); -- scan_params->params.scan_type = (int8_t)scan_type; -- scan_params->params.bss_type = (int8_t)bss_type; -- -- /* Fill out the SSID parameter if provided */ -- if (optional_ssid != NULL) -- { -- scan_params->params.ssid.SSID_len = htod32(optional_ssid->length); -- memcpy(scan_params->params.ssid.SSID, optional_ssid->value, scan_params->params.ssid.SSID_len); -- } -- -- /* Fill out the BSSID parameter if provided */ -- if (optional_mac != NULL) -- { -- memcpy(scan_params->params.bssid.octet, optional_mac, sizeof(whd_mac_t) ); -- } -- else -- { -- memset(scan_params->params.bssid.octet, 0xff, sizeof(whd_mac_t) ); -- } -- -- /* Fill out the extended parameters if provided */ -- if (optional_extended_params != NULL) -- { -- scan_params->params.nprobes = (int32_t)htod32(optional_extended_params->number_of_probes_per_channel); -- scan_params->params.active_time = -- (int32_t)htod32(optional_extended_params->scan_active_dwell_time_per_channel_ms); -- scan_params->params.passive_time = (int32_t)htod32( -- optional_extended_params->scan_passive_dwell_time_per_channel_ms); -- scan_params->params.home_time = (int32_t)htod32( -- optional_extended_params->scan_home_channel_dwell_time_between_channels_ms); -- } -- else -- { -- scan_params->params.nprobes = (int32_t)htod32(-1); -- scan_params->params.active_time = (int32_t)htod32(-1); -- scan_params->params.passive_time = (int32_t)htod32(-1); -- scan_params->params.home_time = (int32_t)htod32(-1); -- } -- -- /* Copy the channel list parameter if provided */ -- if ( (channel_list_size > 0) && (optional_channel_list != NULL) ) -- { -- int i; -- -- for (i = 0; i < channel_list_size; i++) -- { -- scan_params->params.channel_list[i] = htod16(CH20MHZ_CHSPEC(optional_channel_list[i]) ); -- } -- scan_params->params.channel_num = (int32_t)htod32(channel_list_size); -- } -- -- whd_driver->internal_info.scan_result_callback = callback; -- whd_driver->internal_info.whd_scan_result_ptr = result_ptr; -- -- /* Send the Incremental Scan IOVAR message - blocks until the response is received */ -- -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_stop_scan(whd_interface_t ifp) --{ -- whd_buffer_t buffer; -- wl_escan_params_t *scan_params; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- whd_driver = ifp->whd_driver; -- CHECK_DRIVER_NULL(whd_driver) -- -- /* Allocate a buffer for the IOCTL message */ -- scan_params = (wl_escan_params_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, sizeof(wl_escan_params_t), -- IOVAR_STR_ESCAN); -- CHECK_IOCTL_BUFFER(scan_params); -- /* Clear the scan parameters structure */ -- memset(scan_params, 0, sizeof(wl_escan_params_t) ); -- -- /* Fill in the appropriate details of the scan parameters structure */ -- scan_params->version = htod32(ESCAN_REQ_VERSION); -- scan_params->action = htod16(WL_SCAN_ACTION_ABORT); -- -- /* Send the Scan IOVAR message to abort scan*/ -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_SET, buffer, 0) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_deauth_sta(whd_interface_t ifp, whd_mac_t *mac, whd_dot11_reason_code_t reason) --{ -- whd_result_t result; -- scb_val_t *scb_val; -- whd_buffer_t buffer1; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- if (mac == NULL) -- { -- uint8_t *buffer = NULL; -- whd_maclist_t *clients = NULL; -- const whd_mac_t *current; -- wl_bss_info_t ap_info; -- whd_security_t sec; -- uint32_t max_clients = 0; -- size_t size = 0; -- -- result = whd_wifi_ap_get_max_assoc(ifp, &max_clients); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Failed to get max number of associated clients\n") ); -- max_clients = 5; -- } -- -- size = (sizeof(uint32_t) + (max_clients * sizeof(whd_mac_t) ) ); -- buffer = calloc(1, size); -- -- if (buffer == NULL) -- { -- WPRINT_WHD_ERROR( ("Unable to allocate memory for associated clients list, %s failed at line %d \n", -- __func__, __LINE__) ); -- return WHD_MALLOC_FAILURE; -- } -- -- clients = (whd_maclist_t *)buffer; -- clients->count = max_clients; -- memset(&ap_info, 0, sizeof(wl_bss_info_t) ); -- -- result = whd_wifi_get_associated_client_list(ifp, clients, (uint16_t)size); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Failed to get client list, %s failed at line %d \n", __func__, __LINE__) ); -- free(buffer); -- return result; -- } -- -- current = &clients->mac_list[0]; -- result = whd_wifi_get_ap_info(ifp, &ap_info, &sec); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Function %s failed at line %d \n", __func__, __LINE__) ); -- free(buffer); -- return result; -- } -- -- -- while ( (clients->count > 0) && (!(NULL_MAC(current->octet) ) ) ) -- { -- if (memcmp(current->octet, &(ap_info.BSSID), sizeof(whd_mac_t) ) != 0) -- { -- WPRINT_WHD_INFO( ("Deauthenticating STA MAC: %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n", current->octet[0], -- current->octet[1], current->octet[2], current->octet[3], current->octet[4], -- current->octet[5]) ); -- -- scb_val = (scb_val_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer1, sizeof(scb_val_t) ); -- if (scb_val == NULL) -- { -- WPRINT_WHD_ERROR( ("Buffer alloc failed in function %s at line %d \n", __func__, __LINE__) ); -- free(buffer); -- return WHD_BUFFER_ALLOC_FAIL; -- } -- memset( (char *)scb_val, 0, sizeof(scb_val_t) ); -- memcpy( (char *)&scb_val->ea, (char *)current, sizeof(whd_mac_t) ); -- scb_val->val = (uint32_t)reason; -- result = whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SCB_DEAUTHENTICATE_FOR_REASON, buffer1, 0); -- -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Failed to deauth client\n") ); -- } -- } -- -- --clients->count; -- ++current; -- } -- -- free(buffer); -- -- return WHD_SUCCESS; -- } -- -- scb_val = (scb_val_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer1, sizeof(scb_val_t) ); -- CHECK_IOCTL_BUFFER(scb_val); -- memset( (char *)scb_val, 0, sizeof(scb_val_t) ); -- memcpy( (char *)&scb_val->ea, (char *)mac, sizeof(whd_mac_t) ); -- scb_val->val = (uint32_t)reason; -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SCB_DEAUTHENTICATE_FOR_REASON, buffer1, 0) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_get_mac_address(whd_interface_t ifp, whd_mac_t *mac) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- if (mac == NULL) -- return WHD_BADARG; -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- CHECK_IOCTL_BUFFER(whd_cdc_get_iovar_buffer(whd_driver, &buffer, sizeof(whd_mac_t), IOVAR_STR_CUR_ETHERADDR) ); -- -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- memcpy(mac, whd_buffer_get_current_piece_data_pointer(whd_driver, response), sizeof(whd_mac_t) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_get_bssid(whd_interface_t ifp, whd_mac_t *bssid) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_result_t result; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- if (bssid == NULL) -- return WHD_BADARG; -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- if ( (ifp->role == WHD_STA_ROLE) || (ifp->role == WHD_AP_ROLE) ) -- { -- memset(bssid, 0, sizeof(whd_mac_t) ); -- CHECK_IOCTL_BUFFER(whd_cdc_get_ioctl_buffer(whd_driver, &buffer, sizeof(whd_mac_t) ) ); -- if ( (result = -- whd_cdc_send_ioctl(ifp, CDC_GET, WLC_GET_BSSID, buffer, &response) ) == WHD_SUCCESS ) -- { -- memcpy(bssid->octet, whd_buffer_get_current_piece_data_pointer(whd_driver, response), sizeof(whd_mac_t) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- } -- return result; -- } -- else if (ifp->role == WHD_INVALID_ROLE) -- { -- WPRINT_WHD_ERROR( ("STA not associated with AP\n") ); -- return WHD_WLAN_NOTASSOCIATED; -- } -- else -- { -- return WHD_UNSUPPORTED; -- } --} -- --uint32_t whd_wifi_ap_get_max_assoc(whd_interface_t ifp, uint32_t *max_assoc) --{ -- if (!ifp || !max_assoc) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- return whd_wifi_get_iovar_value(ifp, IOVAR_STR_MAX_ASSOC, max_assoc); --} -- --uint32_t whd_wifi_get_associated_client_list(whd_interface_t ifp, void *client_list_buffer, uint16_t buffer_length) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_result_t result; -- whd_maclist_t *data = NULL; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- /* Check if soft AP interface is up, if not, return a count of 0 as a result */ -- result = whd_wifi_is_ready_to_transceive(ifp); -- if ( (result == WHD_SUCCESS) && (ifp->role == WHD_AP_ROLE) ) -- { -- data = (whd_maclist_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, buffer_length); -- CHECK_IOCTL_BUFFER(data); -- memset(data, 0, buffer_length); -- data->count = htod32( ( (whd_maclist_t *)client_list_buffer )->count ); -- -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_GET, WLC_GET_ASSOCLIST, buffer, &response) ); -- -- memcpy(client_list_buffer, (void *)whd_buffer_get_current_piece_data_pointer(whd_driver, -- response), -- (size_t)MIN_OF(whd_buffer_get_current_piece_size(whd_driver, response), buffer_length) ); -- -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- } -- else if (result == WHD_INTERFACE_NOT_UP) -- { -- /* not up, so can't have associated clients */ -- ( (whd_maclist_t *)client_list_buffer )->count = 0; -- } -- else -- { -- WPRINT_WHD_ERROR( ("Invalid Interface\n") ); -- return WHD_INVALID_INTERFACE; -- } -- return result; --} -- --uint32_t whd_wifi_get_ap_info(whd_interface_t ifp, wl_bss_info_t *ap_info, whd_security_t *security) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- uint32_t *data; -- uint32_t security_value; /* hold misc security values */ -- whd_driver_t whd_driver; -- CHECK_IFP_NULL(ifp); -- -- if ( (ap_info == NULL) || (security == NULL) ) -- return WHD_BADARG; -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- /* Read the BSS info */ -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, WLC_IOCTL_SMLEN); -- CHECK_IOCTL_BUFFER(data); -- *data = WLC_IOCTL_SMLEN; -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_GET, WLC_GET_BSS_INFO, buffer, &response) ); -- -- memcpy(ap_info, (void *)(whd_buffer_get_current_piece_data_pointer(whd_driver, response) + 4), -- sizeof(wl_bss_info_t) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- /* Read the WSEC setting */ -- CHECK_RETURN(whd_wifi_get_ioctl_value(ifp, WLC_GET_WSEC, &security_value) ); -- security_value = security_value & SECURITY_MASK; -- *security = ( whd_security_t )(security_value); -- -- if (*security == WHD_SECURITY_WEP_PSK) -- { -- /* Read the WEP auth setting */ -- CHECK_RETURN(whd_wifi_get_ioctl_value(ifp, WLC_GET_AUTH, &security_value) ); -- -- if (security_value == SHARED_AUTH) -- { -- *security |= SHARED_ENABLED; -- } -- } -- else if ( (*security & (TKIP_ENABLED | AES_ENABLED) ) != 0 ) -- { -- /* Read the WPA auth setting */ -- CHECK_RETURN(whd_wifi_get_ioctl_value(ifp, WLC_GET_WPA_AUTH, &security_value) ); -- -- if (security_value == WPA2_AUTH_PSK) -- { -- *security |= WPA2_SECURITY; -- } -- else if (security_value == WPA_AUTH_PSK) -- { -- *security |= WPA_SECURITY; -- } -- } -- else if (*security != WHD_SECURITY_OPEN) -- { -- *security = WHD_SECURITY_UNKNOWN; -- WPRINT_WHD_ERROR( ("Unknown security type, %s failed at line %d \n", __func__, __LINE__) ); -- return WHD_UNKNOWN_SECURITY_TYPE; -- } -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_enable_powersave(whd_interface_t ifp) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- whd_driver_t whd_driver; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- /* Set legacy powersave mode - PM1 */ -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)4); -- CHECK_IOCTL_BUFFER(data); -- *data = htod32( (uint32_t)PM1_POWERSAVE_MODE ); -- -- RETURN_WITH_ASSERT(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_PM, buffer, NULL) ); --} -- --uint32_t whd_wifi_get_powersave_mode(whd_interface_t ifp, uint32_t *value) --{ -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- if (value == NULL) -- return WHD_BADARG; -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- return whd_wifi_get_ioctl_value(ifp, WLC_GET_PM, value); --} -- --uint32_t whd_wifi_enable_powersave_with_throughput(whd_interface_t ifp, uint16_t return_to_sleep_delay_ms) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- whd_driver_t whd_driver; -- uint16_t chip_id; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- if (return_to_sleep_delay_ms < PM2_SLEEP_RET_TIME_MIN) -- { -- WPRINT_WHD_ERROR( ("Delay too short, %s failed at line %d \n", __func__, __LINE__) ); -- return WHD_DELAY_TOO_SHORT; -- } -- else if (return_to_sleep_delay_ms > PM2_SLEEP_RET_TIME_MAX) -- { -- WPRINT_WHD_ERROR( ("Delay too long, %s failed at line %d \n", __func__, __LINE__) ); -- return WHD_DELAY_TOO_LONG; -- } -- -- /* Set the maximum time to wait before going back to sleep */ -- CHECK_RETURN(whd_wifi_set_iovar_value(ifp, IOVAR_STR_PM2_SLEEP_RET, -- (uint32_t)(return_to_sleep_delay_ms / 10) * 10) ); -- chip_id = whd_chip_get_chip_id(whd_driver); -- -- if (chip_id == 43362) -- { -- CHECK_RETURN(whd_wifi_set_iovar_value(ifp, IOVAR_STR_PM_LIMIT, NULL_FRAMES_WITH_PM_SET_LIMIT) ); -- } -- -- /* set PM2 fast return to sleep powersave mode */ -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)4); -- CHECK_IOCTL_BUFFER(data); -- *data = htod32( (uint32_t)PM2_POWERSAVE_MODE ); -- -- RETURN_WITH_ASSERT(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_PM, buffer, NULL) ); --} -- --uint32_t whd_wifi_disable_powersave(whd_interface_t ifp) --{ -- whd_buffer_t buffer; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- uint32_t *data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)4); -- -- CHECK_IOCTL_BUFFER(data); -- *data = htod32( (uint32_t)NO_POWERSAVE_MODE ); -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_SET, WLC_SET_PM, buffer, NULL) ); -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_register_multicast_address(whd_interface_t ifp, const whd_mac_t *mac) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- uint16_t a; -- mcast_list_t *orig_mcast_list; -- mcast_list_t *new_mcast_list; -- whd_driver_t whd_driver; -- -- if (!ifp || !mac) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- /* Get the current multicast list */ -- CHECK_IOCTL_BUFFER(whd_cdc_get_iovar_buffer(whd_driver, &buffer, -- sizeof(uint32_t) + MAX_SUPPORTED_MCAST_ENTRIES * -- sizeof(whd_mac_t), IOVAR_STR_MCAST_LIST) ); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- /* Verify address is not currently registered */ -- orig_mcast_list = (mcast_list_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- orig_mcast_list->entry_count = dtoh32(orig_mcast_list->entry_count); -- for (a = 0; a < orig_mcast_list->entry_count; ++a) -- { -- /* Check if any address matches */ -- if (0 == memcmp(mac, &orig_mcast_list->macs[a], sizeof(whd_mac_t) ) ) -- { -- /* A matching address has been found so we can stop now. */ -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- return WHD_SUCCESS; -- } -- } -- -- /* Add the provided address to the list and write the new multicast list */ -- new_mcast_list = (mcast_list_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, -- ( uint16_t )(sizeof(uint32_t) + -- (orig_mcast_list->entry_count + 1) * -- sizeof(whd_mac_t) ), IOVAR_STR_MCAST_LIST); -- CHECK_IOCTL_BUFFER(new_mcast_list); -- new_mcast_list->entry_count = orig_mcast_list->entry_count; -- memcpy(new_mcast_list->macs, orig_mcast_list->macs, orig_mcast_list->entry_count * sizeof(whd_mac_t) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- memcpy(&new_mcast_list->macs[new_mcast_list->entry_count], mac, sizeof(whd_mac_t) ); -- ++new_mcast_list->entry_count; -- new_mcast_list->entry_count = htod32(new_mcast_list->entry_count); -- RETURN_WITH_ASSERT(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); --} -- --uint32_t whd_wifi_unregister_multicast_address(whd_interface_t ifp, const whd_mac_t *mac) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- uint16_t a; -- mcast_list_t *orig_mcast_list; -- whd_driver_t whd_driver; -- -- if (!ifp || !mac) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- /* Get the current multicast list */ -- CHECK_IOCTL_BUFFER(whd_cdc_get_iovar_buffer(whd_driver, &buffer, -- sizeof(uint32_t) + MAX_SUPPORTED_MCAST_ENTRIES * -- sizeof(whd_mac_t), IOVAR_STR_MCAST_LIST) ); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- /* Find the address, assuming it is part of the list */ -- orig_mcast_list = (mcast_list_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- orig_mcast_list->entry_count = dtoh32(orig_mcast_list->entry_count); -- if (orig_mcast_list->entry_count != 0) -- { -- mcast_list_t *new_mcast_list = (mcast_list_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, -- ( uint16_t )(sizeof(uint32_t) + -- (orig_mcast_list-> -- entry_count - 1) * -- sizeof(whd_mac_t) ), -- IOVAR_STR_MCAST_LIST); -- CHECK_IOCTL_BUFFER(new_mcast_list); -- -- for (a = 0; a < orig_mcast_list->entry_count; ++a) -- { -- WPRINT_WHD_INFO( ("MAC: %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\n", orig_mcast_list->macs[a].octet[0], -- orig_mcast_list->macs[a].octet[1], orig_mcast_list->macs[a].octet[2], -- orig_mcast_list->macs[a].octet[3], orig_mcast_list->macs[a].octet[4], -- orig_mcast_list->macs[a].octet[5]) ); -- if (0 == memcmp(mac, &orig_mcast_list->macs[a], sizeof(whd_mac_t) ) ) -- { -- /* Copy the existing list up to the matching address */ -- memcpy(new_mcast_list->macs, orig_mcast_list->macs, a * sizeof(whd_mac_t) ); -- -- /* Skip the current address and copy the remaining entries */ -- memcpy(&new_mcast_list->macs[a], &orig_mcast_list->macs[a + 1], -- ( size_t )(orig_mcast_list->entry_count - a - 1) * sizeof(whd_mac_t) ); -- -- new_mcast_list->entry_count = orig_mcast_list->entry_count - 1; -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- new_mcast_list->entry_count = htod32(new_mcast_list->entry_count); -- RETURN_WITH_ASSERT(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); -- } -- } -- /* There was something in the list, but the request MAC wasn't there */ -- CHECK_RETURN(whd_buffer_release(whd_driver, buffer, WHD_NETWORK_TX) ); -- } -- /* If we get here than the address wasn't in the list or the list was empty */ -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- WPRINT_WHD_ERROR( ("whd_wifi_unregister_multicast_address address not registered yet \n") ); -- return WHD_DOES_NOT_EXIST; --} -- --uint32_t whd_wifi_set_listen_interval(whd_interface_t ifp, uint8_t listen_interval, -- whd_listen_interval_time_unit_t time_unit) --{ -- uint8_t listen_interval_dtim; -- -- CHECK_IFP_NULL(ifp); -- -- switch (time_unit) -- { -- case WHD_LISTEN_INTERVAL_TIME_UNIT_DTIM: -- { -- listen_interval_dtim = listen_interval; -- break; -- } -- case WHD_LISTEN_INTERVAL_TIME_UNIT_BEACON: -- { -- /* If the wake interval measured in DTIMs is set to 0, the wake interval is measured in beacon periods */ -- listen_interval_dtim = 0; -- -- /* The wake period is measured in beacon periods, set the value as required */ -- CHECK_RETURN(whd_wifi_set_iovar_value(ifp, IOVAR_STR_LISTEN_INTERVAL_BEACON, listen_interval) ); -- break; -- } -- default: -- WPRINT_WHD_ERROR( ("whd_wifi_set_listen_interval: Invalid Time unit specified \n") ); -- return WHD_BADARG; -- } -- -- CHECK_RETURN(whd_wifi_set_iovar_value(ifp, IOVAR_STR_LISTEN_INTERVAL_DTIM, listen_interval_dtim) ); -- -- CHECK_RETURN(whd_wifi_set_iovar_value(ifp, IOVAR_STR_LISTEN_INTERVAL_ASSOC, listen_interval) ); -- -- return WHD_SUCCESS; -- --} -- --uint32_t whd_wifi_get_listen_interval(whd_interface_t ifp, whd_listen_interval_t *li) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- int *data; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- if (li == NULL) -- return WHD_BADARG; -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- data = (int *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, 4, IOVAR_STR_LISTEN_INTERVAL_BEACON); -- CHECK_IOCTL_BUFFER(data); -- memset(data, 0, 1); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- memcpy( (uint8_t *)&(li->beacon), (char *)whd_buffer_get_current_piece_data_pointer(whd_driver, response), 1 ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- data = (int *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, 4, IOVAR_STR_LISTEN_INTERVAL_DTIM); -- CHECK_IOCTL_BUFFER(data); -- memset(data, 0, 1); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- memcpy( (uint8_t *)&(li->dtim), (char *)whd_buffer_get_current_piece_data_pointer(whd_driver, response), 1 ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- data = (int *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, 4, IOVAR_STR_LISTEN_INTERVAL_ASSOC); -- CHECK_IOCTL_BUFFER(data); -- memset(data, 0, 4); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- memcpy( (uint16_t *)&(li->assoc), (char *)whd_buffer_get_current_piece_data_pointer(whd_driver, response), 2 ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_is_ready_to_transceive(whd_interface_t ifp) --{ -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- switch (ifp->role) -- { -- case WHD_AP_ROLE: -- return (whd_wifi_get_ap_is_up(whd_driver) == WHD_TRUE) ? WHD_SUCCESS : WHD_INTERFACE_NOT_UP; -- -- case WHD_STA_ROLE: -- return whd_wifi_check_join_status(ifp); -- -- /* Disables Eclipse static analysis warning */ -- /* No break needed due to returns in all case paths */ -- /* no break */ -- /* Fall Through */ -- case WHD_P2P_ROLE: -- case WHD_INVALID_ROLE: -- -- default: -- return WHD_UNKNOWN_INTERFACE; -- } --} -- --uint32_t whd_wifi_get_acparams(whd_interface_t ifp, edcf_acparam_t *acp) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_driver_t whd_driver; -- -- if (!ifp || !acp) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- int *data = (int *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, 64, IOVAR_STR_AC_PARAMS_STA); -- -- CHECK_IOCTL_BUFFER(data); -- memset(data, 0, 64); -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- memcpy( (char *)acp, (char *)whd_buffer_get_current_piece_data_pointer(whd_driver, response), -- (sizeof(edcf_acparam_t) * 4) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_manage_custom_ie(whd_interface_t ifp, whd_custom_ie_action_t action, const uint8_t *oui, -- uint8_t subtype, const void *data, uint16_t length, uint16_t which_packets) --{ -- whd_buffer_t buffer; -- vndr_ie_setbuf_t *ie_setbuf; -- uint32_t *iovar_data; -- whd_driver_t whd_driver; -- -- if (!ifp || !oui || !data) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- whd_assert("Bad Args", oui != NULL); -- -- iovar_data = -- (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)(sizeof(vndr_ie_setbuf_t) + length + 4), -- "bsscfg:" IOVAR_STR_VENDOR_IE); -- CHECK_IOCTL_BUFFER(iovar_data); -- *iovar_data = ifp->bsscfgidx; -- ie_setbuf = (vndr_ie_setbuf_t *)(iovar_data + 1); -- -- /* Copy the vndr_ie SET command ("add"/"del") to the buffer */ -- if (action == WHD_ADD_CUSTOM_IE) -- { -- memcpy( (char *)ie_setbuf->cmd, "add", 3 ); -- } -- else -- { -- memcpy( (char *)ie_setbuf->cmd, "del", 3 ); -- } -- ie_setbuf->cmd[3] = 0; -- -- /* Set the values */ -- ie_setbuf->vndr_ie_buffer.iecount = (int32_t)htod32(1); -- -- ie_setbuf->vndr_ie_buffer.vndr_ie_list[0].pktflag = htod32(which_packets); -- ie_setbuf->vndr_ie_buffer.vndr_ie_list[0].vndr_ie_data.id = 0xdd; -- ie_setbuf->vndr_ie_buffer.vndr_ie_list[0].vndr_ie_data.len = -- ( uint8_t )(length + sizeof(ie_setbuf->vndr_ie_buffer.vndr_ie_list[0].vndr_ie_data.oui) + 1); /* +1: one byte for sub type */ -- -- /* Stop lint warning about vndr_ie_list array element not yet being defined */ -- memcpy(ie_setbuf->vndr_ie_buffer.vndr_ie_list[0].vndr_ie_data.oui, oui, (size_t)WIFI_IE_OUI_LENGTH); -- -- ie_setbuf->vndr_ie_buffer.vndr_ie_list[0].vndr_ie_data.data[0] = subtype; -- -- memcpy(&ie_setbuf->vndr_ie_buffer.vndr_ie_list[0].vndr_ie_data.data[1], data, length); -- -- RETURN_WITH_ASSERT(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); --} -- --uint32_t whd_wifi_send_action_frame(whd_interface_t ifp, whd_af_params_t *af_params) --{ -- whd_buffer_t buffer; -- whd_af_params_t *af_frame; -- whd_driver_t whd_driver; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- af_frame = (whd_af_params_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, WL_WIFI_AF_PARAMS_SIZE, -- IOVAR_STR_ACTION_FRAME); -- CHECK_IOCTL_BUFFER (af_frame); -- memcpy(af_frame, af_params, WL_WIFI_AF_PARAMS_SIZE); -- RETURN_WITH_ASSERT(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); --} -- --uint32_t whd_wifi_set_ioctl_value(whd_interface_t ifp, uint32_t ioctl, uint32_t value) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)sizeof(value) ); -- CHECK_IOCTL_BUFFER(data); -- *data = htod32(value); -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_SET, ioctl, buffer, 0) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_get_ioctl_value(whd_interface_t ifp, uint32_t ioctl, uint32_t *value) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- CHECK_IOCTL_BUFFER(whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)sizeof(*value) ) ); -- CHECK_RETURN_UNSUPPORTED_OK(whd_cdc_send_ioctl(ifp, CDC_GET, ioctl, buffer, &response) ); -- -- *value = dtoh32(*(uint32_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response) ); -- -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_set_ioctl_buffer(whd_interface_t ifp, uint32_t ioctl, void *in_buffer, uint16_t in_buffer_length) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, in_buffer_length); -- CHECK_IOCTL_BUFFER(data); -- -- memcpy(data, in_buffer, in_buffer_length); -- -- CHECK_RETURN(whd_cdc_send_ioctl(ifp, CDC_SET, ioctl, buffer, NULL) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_get_ioctl_buffer(whd_interface_t ifp, uint32_t ioctl, uint8_t *out_buffer, uint16_t out_length) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- whd_buffer_t response; -- whd_result_t result; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- data = (uint32_t *)whd_cdc_get_ioctl_buffer(whd_driver, &buffer, out_length); -- CHECK_IOCTL_BUFFER(data); -- memcpy(data, out_buffer, out_length); -- -- result = whd_cdc_send_ioctl(ifp, CDC_GET, ioctl, buffer, &response); -- -- /* it worked: copy the result to the output buffer */ -- if (WHD_SUCCESS == result) -- { -- data = (uint32_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- *data = dtoh32(*data); -- memcpy(out_buffer, data, out_length); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- } -- -- CHECK_RETURN(result); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_set_iovar_void(whd_interface_t ifp, const char *iovar) --{ -- whd_buffer_t buffer; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)0, iovar); -- -- return whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL); --} -- --uint32_t whd_wifi_set_iovar_value(whd_interface_t ifp, const char *iovar, uint32_t value) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)sizeof(value), iovar); -- CHECK_IOCTL_BUFFER(data); -- *data = htod32(value); -- return whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL); --} -- --uint32_t whd_wifi_get_iovar_value(whd_interface_t ifp, const char *iovar, uint32_t *value) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- CHECK_IOCTL_BUFFER(whd_cdc_get_iovar_buffer(whd_driver, &buffer, 4, iovar) ); -- CHECK_RETURN_UNSUPPORTED_OK(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- *value = dtoh32(*(uint32_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_set_iovar_buffer(whd_interface_t ifp, const char *iovar, void *in_buffer, uint16_t in_buffer_length) --{ -- return whd_wifi_set_iovar_buffers(ifp, iovar, (const void **)&in_buffer, (const uint16_t *)&in_buffer_length, 1); --} -- --uint32_t whd_wifi_get_iovar_buffer(whd_interface_t ifp, const char *iovar_name, uint8_t *out_buffer, -- uint16_t out_length) --{ -- uint32_t *data; -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_result_t result; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- data = whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)out_length, iovar_name); -- CHECK_IOCTL_BUFFER(data); -- -- result = whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response); -- -- /* it worked: copy the result to the output buffer */ -- if (WHD_SUCCESS == result) -- { -- data = (uint32_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- *data = dtoh32(*data); -- memcpy(out_buffer, data, out_length); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- } -- -- return result; --} -- --/* -- * format an iovar buffer -- */ --static whd_result_t --whd_iovar_mkbuf(const char *name, char *data, uint32_t datalen, char *iovar_buf, uint16_t buflen) --{ -- uint32_t iovar_len; -- -- iovar_len = strlen(name) + 1; -- -- /* check for overflow */ -- if ( (iovar_len + datalen) > buflen ) -- { -- return WHD_BADARG; -- } -- -- /* copy data to the buffer past the end of the iovar name string */ -- if (datalen > 0) -- memmove(&iovar_buf[iovar_len], data, datalen); -- -- /* copy the name to the beginning of the buffer */ -- strncpy(iovar_buf, name, (iovar_len - 1) ); -- -- return WHD_SUCCESS; --} -- --whd_result_t whd_wifi_get_iovar_buffer_with_param(whd_interface_t ifp, const char *iovar_name, void *param, -- uint32_t paramlen, uint8_t *out_buffer, uint32_t out_length) --{ -- uint32_t *data; -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_result_t result; -- whd_driver_t whd_driver; -- -- if (!ifp || !iovar_name || !param || !out_buffer) -- { -- WPRINT_WHD_ERROR( ("Invalid param in func %s at line %d \n", -- __func__, __LINE__) ); -- return WHD_WLAN_BADARG; -- } -- -- whd_driver = (whd_driver_t)ifp->whd_driver; -- -- /* Format the input string */ -- result = whd_iovar_mkbuf(iovar_name, param, paramlen, (char *)out_buffer, (uint16_t)out_length); -- if (result != WHD_SUCCESS) -- return result; -- -- data = whd_cdc_get_ioctl_buffer(whd_driver, &buffer, (uint16_t)out_length); -- -- if (data == NULL) -- return WHD_WLAN_NOMEM; -- -- memcpy(data, out_buffer, out_length); -- -- result = (whd_result_t)whd_cdc_send_ioctl(ifp, CDC_GET, WLC_GET_VAR, buffer, &response); -- -- if (result == WHD_SUCCESS) -- { -- memcpy(out_buffer, whd_buffer_get_current_piece_data_pointer(whd_driver, response), -- (size_t)MIN_OF(whd_buffer_get_current_piece_size(whd_driver, response), out_length) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- } -- -- return result; --} -- --uint32_t whd_wifi_set_iovar_buffers(whd_interface_t ifp, const char *iovar, const void **in_buffers, -- const uint16_t *lengths, const uint8_t num_buffers) --{ -- whd_buffer_t buffer; -- uint32_t *data; -- int tot_in_buffer_length = 0; -- uint8_t buffer_num = 0; -- whd_driver_t whd_driver = ifp->whd_driver; -- -- /* get total length of all buffers: they will be copied into memory one after the other. */ -- for (; buffer_num < num_buffers; buffer_num++) -- { -- tot_in_buffer_length += lengths[buffer_num]; -- } -- -- /* get a valid buffer */ -- data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)tot_in_buffer_length, iovar); -- CHECK_IOCTL_BUFFER(data); -- -- /* copy all data into buffer */ -- for (buffer_num = 0; buffer_num < num_buffers; buffer_num++) -- { -- memcpy(data, in_buffers[buffer_num], lengths[buffer_num]); -- data += lengths[buffer_num]; -- } -- -- /* send iovar */ -- return whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL); --} -- --uint32_t whd_wifi_get_clm_version(whd_interface_t ifp, char *version, uint8_t length) --{ -- whd_result_t result; -- -- CHECK_IFP_NULL(ifp); -- -- if (version == NULL) -- return WHD_BADARG; -- -- version[0] = '\0'; -- -- result = whd_wifi_get_iovar_buffer(ifp, IOVAR_STR_CLMVER, (uint8_t *)version, length); -- if ( (result == WHD_SUCCESS) && version[0] ) -- { -- uint8_t version_length; -- char *p; -- -- version_length = strlen(version); -- -- /* -2 becase \0 termination needs a char and strlen doesn't include length of \0 */ -- if (version_length > length - 2) -- version_length = length - 2; -- version[version_length + 1] = '\0'; -- -- /* Replace all newline/linefeed characters with space character */ -- p = version; -- while ( (p = strchr(p, '\n') ) != NULL ) -- { -- *p = ' '; -- } -- } -- -- CHECK_RETURN(result); -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_get_wifi_version(whd_interface_t ifp, char *buf, uint8_t length) --{ -- whd_result_t result; -- uint8_t ver_len; -- -- CHECK_IFP_NULL(ifp); -- -- if (buf == NULL) -- return WHD_BADARG; -- -- result = whd_wifi_get_iovar_buffer(ifp, IOVAR_STR_VERSION, (uint8_t *)buf, length); -- -- ver_len = strlen(buf); -- -- if (ver_len > length - 2) -- ver_len = length - 2; -- -- if ( (ver_len > 1) && (buf[ver_len + 1] == '\n') ) -- { -- buf[ver_len + 1] = '\0'; -- } -- -- CHECK_RETURN(result); -- return WHD_SUCCESS; --} -- --uint32_t whd_network_get_ifidx_from_ifp(whd_interface_t ifp, uint8_t *ifidx) --{ -- CHECK_IFP_NULL(ifp); -- -- if (!ifidx) -- return WHD_BADARG; -- -- *ifidx = ifp->ifidx; -- -- return WHD_SUCCESS; --} -- --uint32_t whd_network_get_bsscfgidx_from_ifp(whd_interface_t ifp, uint8_t *bsscfgidx) --{ -- CHECK_IFP_NULL(ifp); -- -- if (!bsscfgidx) -- return WHD_BADARG; -- -- *bsscfgidx = ifp->bsscfgidx; -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_ap_set_beacon_interval(whd_interface_t ifp, uint16_t interval) --{ -- CHECK_IFP_NULL(ifp); -- -- CHECK_RETURN(whd_wifi_set_ioctl_value(ifp, WLC_SET_BCNPRD, interval) ); -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_ap_set_dtim_interval(whd_interface_t ifp, uint16_t interval) --{ -- CHECK_IFP_NULL(ifp); -- -- CHECK_RETURN(whd_wifi_set_ioctl_value(ifp, WLC_SET_DTIMPRD, interval) ); -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_get_bss_info(whd_interface_t ifp, wl_bss_info_t *bi) --{ -- whd_buffer_t buffer, response; -- uint32_t result; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- CHECK_DRIVER_NULL(whd_driver); -- -- if (bi == NULL) -- return WHD_BADARG; -- -- if (whd_cdc_get_ioctl_buffer(whd_driver, &buffer, WLC_IOCTL_SMLEN) == NULL) -- { -- WPRINT_WHD_INFO( ("%s: Unable to malloc WLC_GET_BSS_INFO buffer\n", __FUNCTION__) ); -- return WHD_SUCCESS; -- } -- result = whd_cdc_send_ioctl(ifp, CDC_GET, WLC_GET_BSS_INFO, buffer, &response); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_INFO( ("%s: WLC_GET_BSS_INFO Failed\n", __FUNCTION__) ); -- return result; -- } -- -- memcpy(bi, whd_buffer_get_current_piece_data_pointer(whd_driver, response) + 4, sizeof(wl_bss_info_t) ); -- -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- -- return WHD_SUCCESS; --} -- --uint32_t whd_wifi_set_coex_config(whd_interface_t ifp, whd_coex_config_t *coex_config) --{ -- return whd_wifi_set_iovar_buffer(ifp, IOVAR_STR_BTC_LESCAN_PARAMS, &coex_config->le_scan_params, -- sizeof(whd_btc_lescan_params_t) ); --} -- --/* -- * ARP Offload version -- * ARP version in the WLAN Firmware -- * -- * @param[in] ifp - whd interface Instance -- * @param[out] version - pointer to store version # -- * -- * @return @ref whd_result_t -- */ --whd_result_t whd_arp_version(whd_interface_t ifp, uint32_t *value) --{ -- CHECK_IFP_NULL(ifp); -- -- return whd_wifi_get_iovar_value(ifp, IOVAR_STR_ARP_VERSION, value); --} -- --whd_result_t whd_arp_peerage_get(whd_interface_t ifp, uint32_t *value) --{ -- CHECK_IFP_NULL(ifp); -- -- return whd_wifi_get_iovar_value(ifp, IOVAR_STR_ARP_PEERAGE, value); --} -- --whd_result_t whd_arp_peerage_set(whd_interface_t ifp, uint32_t value) --{ -- CHECK_IFP_NULL(ifp); -- -- return whd_wifi_set_iovar_value(ifp, IOVAR_STR_ARP_PEERAGE, value); --} -- --whd_result_t whd_arp_arpoe_get(whd_interface_t ifp, uint32_t *value) --{ -- CHECK_IFP_NULL(ifp); -- -- return whd_wifi_get_iovar_value(ifp, IOVAR_STR_ARPOE, value); --} -- --whd_result_t whd_arp_arpoe_set(whd_interface_t ifp, uint32_t value) --{ -- CHECK_IFP_NULL(ifp); -- -- return whd_wifi_set_iovar_value(ifp, IOVAR_STR_ARPOE, value); --} -- --whd_result_t whd_arp_cache_clear(whd_interface_t ifp) --{ -- whd_result_t whd_ret; -- CHECK_IFP_NULL(ifp); -- -- whd_ret = whd_wifi_set_iovar_void(ifp, IOVAR_STR_ARP_TABLE_CLEAR); -- return whd_ret; --} -- --whd_result_t whd_arp_features_get(whd_interface_t ifp, uint32_t *features) --{ -- if ( (ifp == NULL) || (features == NULL) ) -- { -- return WHD_BADARG; -- } -- -- if (whd_wifi_get_iovar_buffer(ifp, IOVAR_STR_ARP_OL, (uint8_t *)features, sizeof(uint32_t) ) != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s() failed to get arp_ol for features\n", __func__) ); -- return WHD_IOCTL_FAIL; -- } -- -- return WHD_SUCCESS; --} -- --whd_result_t whd_arp_features_set(whd_interface_t ifp, uint32_t features) --{ -- CHECK_IFP_NULL(ifp); -- -- return whd_wifi_set_iovar_buffer(ifp, IOVAR_STR_ARP_OL, (uint8_t *)&features, sizeof(features) ); --} -- --whd_result_t whd_arp_features_print(uint32_t features, const char *title) --{ -- if (title != NULL) -- { -- WPRINT_MACRO( ("%s\n", title) ); -- } -- WPRINT_MACRO( (" features : 0x%x\n", (int)features) ); -- WPRINT_MACRO( (" agent_enabled: (0x%x) %s\n", (int)(features & ARP_OL_AGENT), -- (features & ARP_OL_AGENT) ? "Enabled" : " disabled") ); -- WPRINT_MACRO( (" snoop_enabled: (0x%x) %s\n", (int)(features & ARP_OL_SNOOP), -- (features & ARP_OL_SNOOP) ? "Enabled" : " disabled") ); -- WPRINT_MACRO( (" host_auto_reply_enabled: (0x%x) %s\n", (int)(features & ARP_OL_HOST_AUTO_REPLY), -- (features & ARP_OL_HOST_AUTO_REPLY) ? "Enabled" : " disabled") ); -- WPRINT_MACRO( (" peer_auto_reply_enabled: (0x%x) %s\n", (int)(features & ARP_OL_PEER_AUTO_REPLY), -- (features & ARP_OL_PEER_AUTO_REPLY) ? "Enabled" : " disabled") ); -- -- return WHD_SUCCESS; --} -- --whd_result_t whd_arp_hostip_list_add(whd_interface_t ifp, uint32_t *host_ipv4_list, uint32_t count) --{ -- uint32_t filled = 0; -- uint32_t current_ipv4_list[ARP_MULTIHOMING_MAX]; -- CHECK_IFP_NULL(ifp); -- -- whd_result_t whd_ret = WHD_SUCCESS; -- if (host_ipv4_list == NULL) -- { -- WPRINT_WHD_ERROR( ("%s() BAD ARGS ifp:%p host_ipv4_list:%u count %d\n", __func__, ifp, (int)host_ipv4_list, -- (int)count) ); -- return WHD_BADARG; -- } -- /* check if unique */ -- whd_ret = whd_arp_hostip_list_get(ifp, ARP_MULTIHOMING_MAX, current_ipv4_list, &filled); -- if ( (whd_ret == WHD_SUCCESS) && (filled > 0) ) -- { -- uint32_t curr_index; -- uint32_t new_index; -- -- for (curr_index = 0; curr_index < filled; curr_index++) -- { -- for (new_index = 0; new_index < count; new_index++) -- { -- WPRINT_WHD_DEBUG( ("%s() curr:%ld of %ld curr:0x%lx new:%ld of %ld:0x%lx\n", __func__, curr_index, -- filled, current_ipv4_list[curr_index], -- new_index, count, host_ipv4_list[new_index]) ); -- if (current_ipv4_list[curr_index] == host_ipv4_list[new_index]) -- { -- /* decrement count */ -- count--; -- if (new_index < count) -- { -- /* copy next one down */ -- WPRINT_WHD_DEBUG( ("move %ld (+1) of %ld \n", new_index, count) ); -- host_ipv4_list[new_index] = host_ipv4_list[new_index + 1]; -- -- } -- break; -- } -- } -- } -- } -- else if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_DEBUG( ("%s() whd_arp_hostip_list_get() failed:%d\n", __func__, (int)whd_ret) ); -- } -- -- if (count > 0) -- { -- uint32_t new_index; -- WPRINT_WHD_DEBUG( ("%s() whd_wifi_set_iovar_buffer( %p, %lx)\n", __func__, host_ipv4_list, count) ); -- for (new_index = 0; new_index < count; new_index++) -- { -- WPRINT_WHD_DEBUG( (" 0x%lx\n", host_ipv4_list[new_index]) ); -- } -- whd_ret = whd_wifi_set_iovar_buffer(ifp, IOVAR_STR_ARP_HOSTIP, host_ipv4_list, (count * sizeof(uint32_t) ) ); -- if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("Failed to set arp_hostip 0x%x error:%d\n", (int)host_ipv4_list[0], (int)whd_ret) ); -- } -- } -- return whd_ret; --} -- --whd_result_t whd_arp_hostip_list_add_string(whd_interface_t ifp, const char *ip_addr) --{ -- /* convert string to uint32_t */ -- uint32_t addr; -- CHECK_IFP_NULL(ifp); -- -- whd_str_to_ip(ip_addr, strlen(ip_addr), &addr); -- -- return whd_arp_hostip_list_add(ifp, &addr, 1); --} -- --whd_result_t whd_arp_hostip_list_clear_id(whd_interface_t ifp, uint32_t ipv4_addr) --{ -- whd_result_t whd_ret; -- uint32_t filled; -- uint32_t host_ipv4_list[ARP_MULTIHOMING_MAX]; -- CHECK_IFP_NULL(ifp); -- -- if (ipv4_addr == 0x00l) -- { -- return WHD_BADARG; -- } -- memset(host_ipv4_list, 0x00, sizeof(host_ipv4_list) ); -- whd_ret = whd_arp_hostip_list_get(ifp, ARP_MULTIHOMING_MAX, host_ipv4_list, &filled); -- if ( (whd_ret == WHD_SUCCESS) && (filled > 0) ) -- { -- uint32_t index; -- -- /* clear the list in the WLAN processor */ -- whd_ret = whd_wifi_set_iovar_void(ifp, IOVAR_STR_ARP_HOSTIP_CLEAR); -- if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%d %s() whd_wifi_set_iovar_void() failed:%d\n", __LINE__, __func__, (int)whd_ret) ); -- return whd_ret; -- } -- -- /* remove the one address from the list and re-write arp_hostip list */ -- for (index = 0; index < filled; index++) -- { -- WPRINT_WHD_DEBUG( ("%d %s() drop() 0x%lx == 0x%lx ? %s\n", __LINE__, __func__, host_ipv4_list[index], -- ipv4_addr, (host_ipv4_list[index] == ipv4_addr) ? "DROP" : "") ); -- if (host_ipv4_list[index] == ipv4_addr) -- { -- uint32_t drop; -- /* drop this one, move rest up */ -- for (drop = index; drop < (filled - 1); drop++) -- { -- host_ipv4_list[drop] = host_ipv4_list[drop + 1]; -- } -- filled--; -- /* IP addresses must be added one at a time */ -- for (drop = 0; drop < filled; drop++) -- { -- whd_ret = whd_arp_hostip_list_add(ifp, &host_ipv4_list[drop], sizeof(uint32_t) ); -- } -- break; -- } -- } -- } -- else if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_DEBUG( ("%s() whd_arp_hostip_list_get() failed:%d\n", __func__, (int)whd_ret) ); -- } -- return WHD_SUCCESS; --} -- --whd_result_t whd_arp_hostip_list_clear_id_string(whd_interface_t ifp, const char *ip_addr) --{ -- /* convert string to uint32_t */ -- uint32_t addr; -- CHECK_IFP_NULL(ifp); -- -- whd_str_to_ip(ip_addr, strlen(ip_addr), &addr); -- -- return whd_arp_hostip_list_clear_id(ifp, addr); --} -- --whd_result_t whd_arp_hostip_list_clear(whd_interface_t ifp) --{ -- CHECK_IFP_NULL(ifp); -- return whd_wifi_set_iovar_void(ifp, IOVAR_STR_ARP_HOSTIP_CLEAR); --} -- --whd_result_t whd_arp_hostip_list_get(whd_interface_t ifp, uint32_t count, uint32_t *host_ipv4_list, uint32_t *filled) --{ -- whd_result_t whd_ret = WHD_SUCCESS; -- uint32_t temp[ARP_MULTIHOMING_MAX]; -- arp_ol_stats_t arp_stats; /* WL struct, not ours! */ -- CHECK_IFP_NULL(ifp); -- -- if ( (host_ipv4_list == NULL) || (filled == NULL) ) -- { -- return WHD_BADARG; -- } -- -- /* set up the buffer to retrieve the stats data */ -- memset(&arp_stats, 0x00, sizeof(arp_ol_stats_t) ); -- whd_ret = whd_wifi_get_iovar_buffer(ifp, "arp_stats", (uint8_t *)&arp_stats, sizeof(arp_ol_stats_t) ); -- if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s() failed to get arp_stats\n", __func__) ); -- return WHD_IOCTL_FAIL; -- } -- -- *filled = 0; -- whd_ret = whd_wifi_get_iovar_buffer(ifp, IOVAR_STR_ARP_HOSTIP, (uint8_t *)&temp, sizeof(temp) ); -- /* transfer the info */ -- if (whd_ret == WHD_SUCCESS) -- { -- uint32_t index; -- for (index = 0; (index < count) && (index < arp_stats.host_ip_entries); index++) -- { -- /* only IPv4 !!! */ -- if (htod32(temp[index]) != 0L) -- { -- host_ipv4_list[*filled] = temp[index]; -- *filled = *filled + 1; -- } -- } -- } -- return whd_ret; --} -- --whd_result_t whd_arp_stats_clear(whd_interface_t ifp) --{ -- whd_result_t whd_ret; -- CHECK_IFP_NULL(ifp); -- whd_ret = whd_wifi_set_iovar_void(ifp, IOVAR_STR_ARP_STATS_CLEAR); -- return whd_ret; --} -- --whd_result_t whd_arp_stats_get(whd_interface_t ifp, whd_arp_stats_t *arp_stats) --{ -- whd_result_t whd_ret; -- uint32_t filled; -- static whd_arp_stats_t arp_stats_test; /* read twice to make sure we match */ -- CHECK_IFP_NULL(ifp); -- -- if (arp_stats == NULL) -- { -- return WHD_BADARG; -- } -- -- /* set up the buffer to retreive the data */ -- memcpy(&arp_stats_test, arp_stats, sizeof(whd_arp_stats_t) ); -- memset(arp_stats, 0xFF, sizeof(whd_arp_stats_t) ); -- -- /* read multiple times to make sure we got valid data */ -- do -- { -- /* get them until they match */ -- whd_ret = -- whd_wifi_get_iovar_buffer(ifp, IOVAR_STR_ARP_STATS, (uint8_t *)&arp_stats->stats, -- sizeof(arp_ol_stats_t) ); -- if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s() failed to get arp_stats\n", __func__) ); -- return WHD_IOCTL_FAIL; -- } -- /* get all feature info in one call */ -- whd_ret = -- whd_wifi_get_iovar_buffer(ifp, IOVAR_STR_ARP_OL, (uint8_t *)&arp_stats->features_enabled, -- sizeof(arp_stats->features_enabled) ); -- if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s() failed to get arp_ol\n", __func__) ); -- return WHD_IOCTL_FAIL; -- } -- whd_ret = whd_wifi_get_iovar_value(ifp, IOVAR_STR_ARP_VERSION, &(arp_stats->version) ); -- if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s() failed to get arp_version\n", __func__) ); -- return WHD_IOCTL_FAIL; -- } -- whd_ret = whd_wifi_get_iovar_value(ifp, IOVAR_STR_ARP_PEERAGE, &(arp_stats->peerage) ); -- if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s() failed to get arp_peerage\n", __func__) ); -- return WHD_IOCTL_FAIL; -- } -- whd_ret = whd_wifi_get_iovar_value(ifp, IOVAR_STR_ARPOE, &(arp_stats->arpoe) ); -- if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s() failed to get some settings\n", __func__) ); -- return WHD_IOCTL_FAIL; -- } -- -- /* set endian correctly */ -- arp_stats->stats.host_ip_entries = dtoh32(arp_stats->stats.host_ip_entries); -- arp_stats->stats.host_ip_overflow = dtoh32(arp_stats->stats.host_ip_overflow); -- arp_stats->stats.arp_table_entries = dtoh32(arp_stats->stats.arp_table_entries); -- arp_stats->stats.arp_table_overflow = dtoh32(arp_stats->stats.arp_table_overflow); -- arp_stats->stats.host_request = dtoh32(arp_stats->stats.host_request); -- arp_stats->stats.host_reply = dtoh32(arp_stats->stats.host_reply); -- arp_stats->stats.host_service = dtoh32(arp_stats->stats.host_service); -- arp_stats->stats.peer_request = dtoh32(arp_stats->stats.peer_request); -- arp_stats->stats.peer_request_drop = dtoh32(arp_stats->stats.peer_request_drop); -- arp_stats->stats.peer_reply = dtoh32(arp_stats->stats.peer_reply); -- arp_stats->stats.peer_reply_drop = dtoh32(arp_stats->stats.peer_reply_drop); -- arp_stats->stats.peer_service = dtoh32(arp_stats->stats.peer_service); -- -- whd_ret = whd_arp_hostip_list_get(ifp, ARP_MULTIHOMING_MAX, arp_stats->host_ip_list, &filled); -- if (whd_ret != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s() failed to get host_ip_list\n", __func__) ); -- return WHD_IOCTL_FAIL; -- } -- -- if (memcmp(&arp_stats_test, arp_stats, sizeof(whd_arp_stats_t) ) == 0) -- { -- break; -- } -- -- memcpy(&arp_stats_test, arp_stats, sizeof(whd_arp_stats_t) ); -- } while (1); -- -- return whd_ret; --} -- --whd_result_t whd_arp_stats_print(whd_arp_stats_t *arp_stats, const char *title) --{ -- uint32_t index; -- -- if (arp_stats == NULL) -- { -- return WHD_BADARG; -- } -- -- if (title != NULL) -- { -- WPRINT_MACRO( ("%s\n", title) ); -- } -- WPRINT_MACRO( (" version: 0x%lx\n", (unsigned long int)arp_stats->version) ); -- WPRINT_MACRO( (" host_ip_entries: %d\n", (int)arp_stats->stats.host_ip_entries) ); -- WPRINT_MACRO( (" host_ip_overflow: %d\n", (int)arp_stats->stats.host_ip_overflow) ); -- WPRINT_MACRO( (" arp_table_entries: %d\n", (int)arp_stats->stats.arp_table_entries) ); -- WPRINT_MACRO( (" arp_table_overflow: %d\n", (int)arp_stats->stats.arp_table_overflow) ); -- WPRINT_MACRO( (" host_request: %d\n", (int)arp_stats->stats.host_request) ); -- WPRINT_MACRO( (" host_reply: %d\n", (int)arp_stats->stats.host_reply) ); -- WPRINT_MACRO( (" host_service: %d\n", (int)arp_stats->stats.host_service) ); -- WPRINT_MACRO( (" peer_request: %d\n", (int)arp_stats->stats.peer_request) ); -- WPRINT_MACRO( (" peer_request_drop: %d\n", (int)arp_stats->stats.peer_request_drop) ); -- WPRINT_MACRO( (" peer_reply: %d\n", (int)arp_stats->stats.peer_reply) ); -- WPRINT_MACRO( (" peer_reply_drop: %d\n", (int)arp_stats->stats.peer_reply_drop) ); -- WPRINT_MACRO( (" peer_service: %d\n", (int)arp_stats->stats.peer_service) ); -- WPRINT_MACRO( (" peerage: %d\n", (int)arp_stats->peerage) ); -- WPRINT_MACRO( (" arpoe: %d %s\n", (int)arp_stats->arpoe, -- (arp_stats->arpoe != 0) ? "Enabled" : " disabled") ); -- -- whd_arp_features_print(arp_stats->features_enabled, NULL); -- -- if (arp_stats->stats.host_ip_entries > 0) -- { -- WPRINT_MACRO( ("WLAN Device Host IP entries\n") ); -- for (index = 0; index < arp_stats->stats.host_ip_entries; index++) -- { -- uint32_t ipv4_addr = arp_stats->host_ip_list[index]; -- char ipv4_string[32]; -- memset(ipv4_string, 0x00, sizeof(ipv4_string) ); -- whd_ip4_to_string(&ipv4_addr, ipv4_string); -- WPRINT_MACRO( (" %d of %d IPV4: 0x%x %s\n", (int)index, (int)arp_stats->stats.host_ip_entries, -- (int)arp_stats->host_ip_list[index], ipv4_string) ); -- } -- } -- return WHD_SUCCESS; --} -- --whd_result_t --whd_wifi_toggle_packet_filter(whd_interface_t ifp, uint8_t filter_id, whd_bool_t enable) --{ -- whd_buffer_t buffer; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- wl_pkt_filter_enable_t *data = (wl_pkt_filter_enable_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, -- sizeof(wl_pkt_filter_enable_t), -- IOVAR_STR_PKT_FILTER_ENABLE); -- CHECK_IOCTL_BUFFER(data); -- data->id = (uint32_t)filter_id; -- data->enable = (uint32_t)enable; -- RETURN_WITH_ASSERT(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); --} -- --whd_result_t --whd_pf_enable_packet_filter(whd_interface_t ifp, uint8_t filter_id) --{ -- return whd_wifi_toggle_packet_filter(ifp, filter_id, WHD_TRUE); --} -- --whd_result_t --whd_pf_disable_packet_filter(whd_interface_t ifp, uint8_t filter_id) --{ -- return whd_wifi_toggle_packet_filter(ifp, filter_id, WHD_FALSE); --} -- --whd_result_t --whd_pf_add_packet_filter(whd_interface_t ifp, const whd_packet_filter_t *settings) --{ -- wl_pkt_filter_t *packet_filter; -- whd_driver_t whd_driver; -- whd_buffer_t buffer; -- uint32_t buffer_length = -- (uint32_t)( (2 * (uint32_t)settings->mask_size) + WL_PKT_FILTER_FIXED_LEN + WL_PKT_FILTER_PATTERN_FIXED_LEN ); -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- packet_filter = (wl_pkt_filter_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)buffer_length, -- IOVAR_STR_PKT_FILTER_ADD); -- CHECK_IOCTL_BUFFER(packet_filter); -- -- /* Copy filter entries */ -- packet_filter->id = settings->id; -- packet_filter->type = 0; -- packet_filter->negate_match = settings->rule; -- packet_filter->u.pattern.offset = (uint32_t)settings->offset; -- packet_filter->u.pattern.size_bytes = settings->mask_size; -- -- /* Copy mask */ -- memcpy(packet_filter->u.pattern.mask_and_pattern, settings->mask, settings->mask_size); -- -- /* Copy filter pattern */ -- memcpy(packet_filter->u.pattern.mask_and_pattern + settings->mask_size, settings->pattern, settings->mask_size); -- -- RETURN_WITH_ASSERT(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); --} -- --whd_result_t --whd_pf_remove_packet_filter(whd_interface_t ifp, uint8_t filter_id) --{ -- whd_buffer_t buffer; -- whd_driver_t whd_driver; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- uint32_t *data = (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, sizeof(uint32_t), -- IOVAR_STR_PKT_FILTER_DELETE); -- CHECK_IOCTL_BUFFER(data); -- *data = (uint32_t)filter_id; -- RETURN_WITH_ASSERT(whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL) ); --} -- --whd_result_t --whd_pf_get_packet_filter_stats(whd_interface_t ifp, uint8_t filter_id, whd_pkt_filter_stats_t *stats) --{ -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_driver_t whd_driver; -- -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- uint32_t *data = -- (uint32_t *)whd_cdc_get_iovar_buffer(whd_driver, &buffer, sizeof(uint32_t) + sizeof(wl_pkt_filter_stats_t), -- IOVAR_STR_PKT_FILTER_STATS); -- CHECK_IOCTL_BUFFER(data); -- -- memset(data, 0, sizeof(uint32_t) + sizeof(wl_pkt_filter_stats_t) ); -- *data = (uint32_t)filter_id; -- -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- memcpy( (char *)stats, (char *)whd_buffer_get_current_piece_data_pointer(whd_driver, response), -- (sizeof(wl_pkt_filter_stats_t) ) ); -- -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_TX) ); -- -- return WHD_SUCCESS; --} -- --whd_result_t --whd_wifi_clear_packet_filter_stats(whd_interface_t ifp, uint32_t filter_id) --{ -- RETURN_WITH_ASSERT(whd_wifi_set_iovar_value(ifp, IOVAR_STR_PKT_FILTER_CLEAR_STATS, (uint32_t)filter_id) ); --} -- --whd_result_t --whd_pf_get_packet_filter_mask_and_pattern(whd_interface_t ifp, uint8_t filter_id, uint32_t max_size, uint8_t *mask, -- uint8_t *pattern, uint32_t *size_out) --{ -- whd_bool_t enabled_list; -- whd_driver_t whd_driver; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- for (enabled_list = WHD_FALSE; enabled_list <= WHD_TRUE; enabled_list++) -- { -- -- whd_buffer_t buffer; -- whd_buffer_t response; -- uint32_t *data; -- wl_pkt_filter_list_t *filter_list; -- wl_pkt_filter_t *filter_ptr; -- uint32_t i; -- wl_pkt_filter_t *in_filter; -- -- data = whd_cdc_get_iovar_buffer(whd_driver, &buffer, PACKET_FILTER_LIST_BUFFER_MAX_LEN, -- IOVAR_STR_PKT_FILTER_LIST); -- CHECK_IOCTL_BUFFER(data); -- *data = (uint32_t)enabled_list; -- -- CHECK_RETURN(whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response) ); -- -- filter_list = (wl_pkt_filter_list_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- filter_ptr = filter_list->filter; -- for (i = 0; i < filter_list->num; i++) -- { -- in_filter = filter_ptr; -- -- if (in_filter->id == filter_id) -- { -- *size_out = MIN_OF(in_filter->u.pattern.size_bytes, max_size); -- memcpy (mask, in_filter->u.pattern.mask_and_pattern, *size_out); -- memcpy (pattern, in_filter->u.pattern.mask_and_pattern + in_filter->u.pattern.size_bytes, *size_out); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_RX) ); -- if (*size_out < in_filter->u.pattern.size_bytes) -- { -- return WHD_PARTIAL_RESULTS; -- } -- return WHD_SUCCESS; -- } -- -- /* Update WL filter pointer */ -- filter_ptr = -- (wl_pkt_filter_t *)( (char *)filter_ptr + -- (WL_PKT_FILTER_FIXED_LEN + WL_PKT_FILTER_PATTERN_FIXED_LEN + 2 * -- in_filter->u.pattern.size_bytes) ); -- -- /* WLAN returns word-aligned filter list */ -- filter_ptr = (wl_pkt_filter_t *)ROUND_UP( (unsigned long)filter_ptr, 4 ); -- } -- } -- return WHD_FILTER_NOT_FOUND; --} -- --/* Set/Get TKO retry & interval parameters */ --whd_result_t --whd_tko_param(whd_interface_t ifp, whd_tko_retry_t *whd_retry, int set) --{ -- uint32_t len = 0; -- uint8_t *data = NULL; -- wl_tko_t *tko = NULL; -- whd_buffer_t buffer; -- whd_buffer_t response; -- wl_tko_param_t *wl_param_p = NULL; -- whd_result_t result = WHD_SUCCESS; -- whd_driver_t whd_driver; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- len = (int)(WHD_PAYLOAD_MTU - strlen(IOVAR_STR_TKO) - 1); -- data = (uint8_t * )whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)len, IOVAR_STR_TKO); -- if (data == NULL) -- { -- WPRINT_WHD_ERROR( ("%s: Failed to get iovar buf\n", __func__) ); -- return WHD_IOCTL_FAIL; -- } -- -- tko = (wl_tko_t *)data; -- tko->subcmd_id = WL_TKO_SUBCMD_PARAM; -- tko->len = TKO_DATA_OFFSET; -- wl_param_p = (wl_tko_param_t *)tko->data; -- tko->len += sizeof(wl_tko_param_t); -- -- tko->subcmd_id = htod16(tko->subcmd_id); -- tko->len = htod16(tko->len); -- -- if (set) -- { -- /* SET parameters */ -- -- /* Set defaults if needed */ -- wl_param_p->interval = whd_retry->tko_interval == -- 0 ? TCP_KEEPALIVE_OFFLOAD_INTERVAL_SEC : whd_retry->tko_interval; -- wl_param_p->retry_count = whd_retry->tko_retry_count == -- 0 ? TCP_KEEPALIVE_OFFLOAD_RETRY_COUNT : whd_retry->tko_retry_count; -- wl_param_p->retry_interval = whd_retry->tko_retry_interval == -- 0 ? TCP_KEEPALIVE_OFFLOAD_RETRY_INTERVAL_SEC : whd_retry->tko_retry_interval; -- -- result = whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: Cannot set params\n", __func__) ); -- } -- } -- else -- { -- /* GET paramters */ -- wl_tko_param_t tko_param_real; -- -- result = whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response); -- if (result == WHD_SUCCESS) -- { -- wl_param_p = &tko_param_real; -- memcpy( (char *)wl_param_p, -- (char *)whd_buffer_get_current_piece_data_pointer(whd_driver, response) + TKO_DATA_OFFSET, -- (sizeof(wl_tko_param_t) ) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_TX) ); -- -- /* Copy items from wl level struct to higher level struct */ -- whd_retry->tko_interval = wl_param_p->interval; -- whd_retry->tko_retry_interval = wl_param_p->retry_interval; -- whd_retry->tko_retry_count = wl_param_p->retry_count; -- } -- else -- { -- WPRINT_WHD_ERROR( ("%s: Cannot get params.\n", __func__) ); -- } -- } -- -- return result; --} -- --/* Query Status */ --whd_result_t --whd_tko_get_status(whd_interface_t ifp, whd_tko_status_t *whd_status) --{ -- whd_result_t result = WHD_SUCCESS; -- uint32_t len = 0; -- uint8_t *data = NULL; -- wl_tko_t *tko = NULL; -- whd_buffer_t buffer; -- whd_buffer_t response; -- whd_driver_t whd_driver; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- /* Get a buffer */ -- len = (int)(100 - strlen(IOVAR_STR_TKO) - 1); -- data = (uint8_t * )whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)len, IOVAR_STR_TKO); -- CHECK_IOCTL_BUFFER(data); -- -- /* Fill buffer with request */ -- tko = (wl_tko_t *)data; -- tko->subcmd_id = WL_TKO_SUBCMD_STATUS; -- tko->len = TKO_DATA_OFFSET; -- -- tko->len += sizeof(wl_tko_status_t); -- -- tko->subcmd_id = htod16(tko->subcmd_id); -- tko->len = htod16(tko->len); -- -- /* Make request and get result */ -- result = whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: send iovar failed\n", __func__) ); -- return result; -- } -- -- /* Parse result */ -- tko = (wl_tko_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- len = htod16(tko->len); -- -- if (len >= MAX_TKO_CONN + 1) /* MAX_TKO status's + 1 for the count */ -- { -- memcpy(whd_status, tko->data, MAX_TKO_CONN + 1); -- } -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_TX) ); -- return result; --} -- --/* Query FW for number tko max tcp connections */ --whd_result_t --whd_tko_max_assoc(whd_interface_t ifp, uint8_t *max) --{ -- uint32_t len = 0; -- uint8_t *data = NULL; -- wl_tko_t *tko = NULL; -- whd_buffer_t buffer; -- whd_buffer_t response; -- wl_tko_max_tcp_t *tko_max_tcp = NULL; -- wl_tko_max_tcp_t tcp_result; -- whd_driver_t whd_driver; -- whd_result_t result = WHD_SUCCESS; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- len = (int)(100 - strlen(IOVAR_STR_TKO) - 1); -- data = (uint8_t * )whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)len, IOVAR_STR_TKO); -- CHECK_IOCTL_BUFFER(data); -- -- tko = (wl_tko_t *)data; -- -- tko->subcmd_id = WL_TKO_SUBCMD_MAX_TCP; -- tko->len = TKO_DATA_OFFSET; -- -- tko_max_tcp = (wl_tko_max_tcp_t *)tko->data; -- tko->len += sizeof(wl_tko_max_tcp_t); -- -- tko->subcmd_id = htod16(tko->subcmd_id); -- tko->len = htod16(tko->len); -- -- result = whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: send iovar failed\n", __func__) ); -- return result; -- } -- tko_max_tcp = &tcp_result; -- memcpy( (char *)tko_max_tcp, -- (char *)whd_buffer_get_current_piece_data_pointer(whd_driver, response) + TKO_DATA_OFFSET, -- (sizeof(wl_tko_max_tcp_t) ) ); -- CHECK_RETURN(whd_buffer_release(whd_driver, response, WHD_NETWORK_TX) ); -- -- *max = tko_max_tcp->max; -- return WHD_SUCCESS; --} -- --/* Exercise GET of wl_tko_connect_t IOVAR */ --/* Given a index, return info about that index */ --whd_result_t --whd_tko_get_FW_connect(whd_interface_t ifp, uint8_t index, whd_tko_connect_t *whd_connect, uint16_t buflen) --{ -- uint32_t len = 0; -- uint8_t *data = NULL; -- wl_tko_t *tko = NULL; -- wl_tko_connect_t *connect = NULL; -- whd_result_t result = WHD_SUCCESS; -- whd_buffer_t response; -- whd_buffer_t buffer; -- whd_driver_t whd_driver; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- CHECK_DRIVER_NULL(whd_driver); -- -- len = (int)(WHD_PAYLOAD_MTU - strlen(IOVAR_STR_TKO) - 1); -- data = (uint8_t * )whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)len, IOVAR_STR_TKO); -- CHECK_IOCTL_BUFFER(data); -- -- tko = (wl_tko_t *)data; -- -- tko->subcmd_id = WL_TKO_SUBCMD_CONNECT; -- tko->len = offsetof(wl_tko_t, data); -- connect = (wl_tko_connect_t *)tko->data; -- connect->index = index; -- -- tko->subcmd_id = htod16(tko->subcmd_id); -- tko->len = htod16(tko->len); -- -- result = whd_cdc_send_iovar(ifp, CDC_GET, buffer, &response); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: send iovar failed\n", __func__) ); -- return result; -- } -- tko = (wl_tko_t *)whd_buffer_get_current_piece_data_pointer(whd_driver, response); -- tko->subcmd_id = dtoh16(tko->subcmd_id); -- tko->len = dtoh16(tko->len); -- -- if (tko->subcmd_id != WL_TKO_SUBCMD_CONNECT) -- { -- WPRINT_WHD_ERROR( ("%s: IOVAR returned garbage!\n", __func__) ); -- return WHD_BADARG; -- } -- connect = (wl_tko_connect_t *)tko->data; -- if (tko->len >= sizeof(*connect) ) -- { -- connect->local_port = dtoh16(connect->local_port); -- connect->remote_port = dtoh16(connect->remote_port); -- connect->local_seq = dtoh32(connect->local_seq); -- connect->remote_seq = dtoh32(connect->remote_seq); -- if (connect->ip_addr_type != 0) -- { -- WPRINT_WHD_ERROR( ("%s: Address type not IPV4\n", __func__) ); -- return WHD_BADARG; -- } -- if (connect->ip_addr_type == 0) -- { -- /* IPv4 */ -- uint16_t mylen; -- mylen = sizeof(wl_tko_connect_t) + (2 * IPV4_ADDR_LEN) + connect->request_len + connect->response_len; -- if (buflen < mylen) -- { -- WPRINT_WHD_ERROR( ("%s: Buf len (%d) too small , need %d\n", __func__, buflen, mylen) ); -- return WHD_BADARG; -- } -- -- /* -- * Assumes whd_tko_connect_t and wl_tko_connect_t are the same. -- * If/when they become different (due to different FW versions, etc) than -- * this may have to be copied field by field instead. -- */ -- memcpy(whd_connect, connect, MIN_OF(mylen, buflen) ); -- } -- } -- return WHD_SUCCESS; --} -- --whd_result_t --whd_tko_toggle(whd_interface_t ifp, whd_bool_t enable) --{ -- uint32_t len = 0; -- uint8_t *data = NULL; -- wl_tko_t *tko = NULL; -- whd_buffer_t buffer; -- wl_tko_enable_t *tko_enable = NULL; -- whd_driver_t whd_driver; -- whd_result_t result; -- CHECK_IFP_NULL(ifp); -- -- whd_driver = ifp->whd_driver; -- -- -- -- len = (int)(WHD_PAYLOAD_MTU - strlen(IOVAR_STR_TKO) - 1); -- data = (uint8_t * )whd_cdc_get_iovar_buffer(whd_driver, &buffer, (uint16_t)len, IOVAR_STR_TKO); -- CHECK_IOCTL_BUFFER(data); -- -- tko = (wl_tko_t *)data; -- -- tko->subcmd_id = WL_TKO_SUBCMD_ENABLE; -- tko->len = TKO_DATA_OFFSET; -- -- tko_enable = (wl_tko_enable_t *)tko->data; -- tko_enable->enable = enable; -- -- tko->len += sizeof(wl_tko_enable_t); -- -- tko->subcmd_id = htod16(tko->subcmd_id); -- tko->len = htod16(tko->len); -- -- /* invoke SET iovar */ -- result = whd_cdc_send_iovar(ifp, CDC_SET, buffer, NULL); -- if (result != WHD_SUCCESS) -- { -- WPRINT_WHD_ERROR( ("%s: tko %s FAILED\n", __func__, (enable == WHD_TRUE ? "enable" : "disable") ) ); -- return result; -- } -- else -- { -- WPRINT_WHD_ERROR( ("%s: Successfully %s\n", __func__, (enable == WHD_TRUE ? "enabled" : "disabled") ) ); -- } -- return result; --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi_p2p.c b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi_p2p.c -deleted file mode 100644 -index 53eea0d341..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/src/whd_wifi_p2p.c -+++ /dev/null -@@ -1,45 +0,0 @@ --/* -- * Copyright 2020 Cypress Semiconductor Corporation -- * SPDX-License-Identifier: Apache-2.0 -- * -- * Licensed under the Apache License, Version 2.0 (the "License"); -- * you may not use this file except in compliance with the License. -- * You may obtain a copy of the License at -- * -- * http://www.apache.org/licenses/LICENSE-2.0 -- * -- * Unless required by applicable law or agreed to in writing, software -- * distributed under the License is distributed on an "AS IS" BASIS, -- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- * See the License for the specific language governing permissions and -- * limitations under the License. -- */ -- --#include "whd_ap.h" --#include "whd_chip_constants.h" --#include "whd_debug.h" --#include "whd_events_int.h" --#include "whd_sdpcm.h" --#include "whd_thread_internal.h" --#include "whd_utils.h" --#include "whd_wifi_api.h" --#include "whd_wifi_p2p.h" -- -- --/****************************************************** --* @cond Constants --******************************************************/ -- --whd_bool_t whd_wifi_p2p_is_go_up(whd_driver_t whd_driver) --{ -- return whd_driver->internal_info.whd_wifi_p2p_go_is_up; --} -- --void whd_wifi_p2p_set_go_is_up(whd_driver_t whd_driver, whd_bool_t is_up) --{ -- if (whd_driver->internal_info.whd_wifi_p2p_go_is_up != is_up) -- { -- whd_driver->internal_info.whd_wifi_p2p_go_is_up = is_up; -- } --} -- -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/version.txt b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/version.txt -deleted file mode 100644 -index 167a59886f..0000000000 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/version.txt -+++ /dev/null -@@ -1 +0,0 @@ --1.91.2.3926 -diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/whd_config.h b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/whd_config.h -index c0e890ac7f..cc442a6e44 100644 ---- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/whd_config.h -+++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_NICLA_VISION/COMPONENT_WHD/whd_config.h -@@ -22,45 +22,40 @@ - #ifndef __WHD_CONFIG__ - #define __WHD_CONFIG__ - --#include "cyhal_gpio.h" - #include "whd_types.h" - #include "stm32h7xx_hal.h" - #include - --#define WHD_COUNTRY WHD_COUNTRY_AUSTRALIA -- --/* Internal thread config */ --#define WHD_THREAD_STACK_SIZE 5120 --#define WHD_THREAD_PRIORITY osPriorityHigh -+/* disable WPRINT_MACRO */ -+#define WHD_PRINT_DISABLE - - /* please define your configuration , either SDIO or SPI */ - #define CY_WHD_CONFIG_USE_SDIO - //#define CY_WHD_CONFIG_USE_SPI - --/* Set Timeout for your platform */ --#define WLAN_POWER_UP_DELAY_MS 3000 --#define SDIO_ENUMERATION_TIMEOUT_MS 500 -- -+/* select resource implementation */ - #define USES_RESOURCE_GENERIC_FILESYSTEM - --#define BSP_LED1 {GPIOK,{.Pin= GPIO_PIN_5 , .Mode = GPIO_MODE_OUTPUT_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_LOW}} --#define BSP_LED2 {GPIOK,{.Pin= GPIO_PIN_6 , .Mode = GPIO_MODE_OUTPUT_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_LOW}} --#define BSP_LED3 {GPIOK,{.Pin= GPIO_PIN_7 , .Mode = GPIO_MODE_OUTPUT_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_LOW}} -+/* if not defined default value is 2 */ -+#define CY_WIFI_OOB_INTR_PRIORITY 0 - --/* power pin */ --#define WIFI_WL_REG_ON {GPIOJ,{.Pin= GPIO_PIN_1, .Mode = GPIO_MODE_OUTPUT_PP , .Pull = GPIO_PULLUP , .Speed= GPIO_SPEED_FREQ_LOW}} --//#define WIFI_32K_CLK {GPIOA,{.Pin= GPIO_PIN_8, .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_LOW , .Alternate = GPIO_AF0_MCO}} -+#define CYBSP_WIFI_HOST_WAKE_IRQ_EVENT CYHAL_GPIO_IRQ_FALL -+#define CYBSP_WIFI_HOST_WAKE CYBSP_SDIO_OOB_IRQ - --#define WIFI_SDIO_CMD {GPIOD,{.Pin= GPIO_PIN_7 , .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_PULLUP , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF11_SDIO2}} --#define WIFI_SDIO_CLK {GPIOC,{.Pin= GPIO_PIN_1 , .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF9_SDIO2}} --#define WIFI_SDIO_D0 {GPIOB,{.Pin= GPIO_PIN_14, .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_PULLUP , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF9_SDIO2}} --#define WIFI_SDIO_D1 {GPIOB,{.Pin= GPIO_PIN_15, .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_PULLUP , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF9_SDIO2}} --#define WIFI_SDIO_D2 {GPIOG,{.Pin= GPIO_PIN_11, .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_PULLUP , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF10_SDIO2}} --#define WIFI_SDIO_D3 {GPIOB,{.Pin= GPIO_PIN_4 , .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_PULLUP , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF9_SDIO2}} --#define WIFI_SDIO_OOB_IRQ {GPIOJ,{.Pin= GPIO_PIN_5 , .Mode = GPIO_MODE_IT_FALLING , .Pull = GPIO_PULLUP , .Speed= GPIO_SPEED_FREQ_VERY_HIGH}} -+#define BSP_LED1 {GPIOK,{.Pin= GPIO_PIN_5 , .Mode = GPIO_MODE_OUTPUT_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_LOW}} -+#define BSP_LED2 {GPIOK,{.Pin= GPIO_PIN_6 , .Mode = GPIO_MODE_OUTPUT_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_LOW}} -+#define BSP_LED3 {GPIOK,{.Pin= GPIO_PIN_7 , .Mode = GPIO_MODE_OUTPUT_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_LOW}} - --#ifndef CYHAL_NC_PIN_VALUE --#define CYHAL_NC_PIN_VALUE ( (cyhal_gpio_t)0xFFFFFFFF ) --#endif -+/* power pin */ -+#define WIFI_WL_REG_ON {GPIOJ,{.Pin= GPIO_PIN_1, .Mode = GPIO_MODE_OUTPUT_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_LOW}} -+//#define WIFI_32K_CLK {GPIOA,{.Pin= GPIO_PIN_8, .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_LOW , .Alternate = GPIO_AF0_MCO}} -+ -+#define WIFI_SDIO_CMD {GPIOD,{.Pin= GPIO_PIN_2 , .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF12_SDIO1}} -+#define WIFI_SDIO_CLK {GPIOC,{.Pin= GPIO_PIN_12, .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF12_SDIO1}} -+#define WIFI_SDIO_D0 {GPIOC,{.Pin= GPIO_PIN_8 , .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF12_SDIO1}} -+#define WIFI_SDIO_D1 {GPIOC,{.Pin= GPIO_PIN_9 , .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF12_SDIO1}} -+#define WIFI_SDIO_D2 {GPIOC,{.Pin= GPIO_PIN_10, .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF12_SDIO1}} -+#define WIFI_SDIO_D3 {GPIOC,{.Pin= GPIO_PIN_11, .Mode = GPIO_MODE_AF_PP , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_VERY_HIGH, .Alternate = GPIO_AF12_SDIO1}} -+#define WIFI_SDIO_OOB_IRQ {GPIOJ,{.Pin= GPIO_PIN_5, .Mode = GPIO_MODE_IT_FALLING , .Pull = GPIO_NOPULL , .Speed= GPIO_SPEED_FREQ_VERY_HIGH}} - - #endif --- -2.25.1 - diff --git a/patches/0114-Nicla-Vision-Set-WiFi-as-default-interface.patch b/patches/0114-Nicla-Vision-Set-WiFi-as-default-interface.patch index eee68149e..19ea11009 100644 --- a/patches/0114-Nicla-Vision-Set-WiFi-as-default-interface.patch +++ b/patches/0114-Nicla-Vision-Set-WiFi-as-default-interface.patch @@ -1,7 +1,7 @@ From bb43009e3650270c078a3177d87a256725468be8 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Fri, 17 Sep 2021 15:46:29 +0200 -Subject: [PATCH 114/138] Nicla Vision: Set WiFi as default interface +Subject: [PATCH 114/157] Nicla Vision: Set WiFi as default interface --- targets/targets.json | 3 ++- @@ -22,5 +22,5 @@ index eb83ff264e..4458fbb207 100644 "components_add": [ "QSPIF", -- -2.25.1 +2.36.0 diff --git a/patches/0115-Nicla-Vision-enable-I2C_TIMING_VALUE_ALGO.patch b/patches/0115-Nicla-Vision-enable-I2C_TIMING_VALUE_ALGO.patch index b4de4e404..38170d5fd 100644 --- a/patches/0115-Nicla-Vision-enable-I2C_TIMING_VALUE_ALGO.patch +++ b/patches/0115-Nicla-Vision-enable-I2C_TIMING_VALUE_ALGO.patch @@ -1,7 +1,7 @@ From 3497578cddc9b5b048e1a9c35cac17ff3bf9cdd1 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Mon, 20 Sep 2021 17:30:54 +0200 -Subject: [PATCH 115/138] Nicla Vision: enable I2C_TIMING_VALUE_ALGO +Subject: [PATCH 115/157] Nicla Vision: enable I2C_TIMING_VALUE_ALGO --- targets/targets.json | 3 ++- @@ -22,5 +22,5 @@ index 4458fbb207..884f508e46 100644 "components_add": [ "QSPIF", -- -2.25.1 +2.36.0 diff --git a/patches/0116-Nicla-Vision-tune-LWIP-mem-size.patch b/patches/0116-Nicla-Vision-tune-LWIP-mem-size.patch index 9de814425..3f14ff75e 100644 --- a/patches/0116-Nicla-Vision-tune-LWIP-mem-size.patch +++ b/patches/0116-Nicla-Vision-tune-LWIP-mem-size.patch @@ -1,7 +1,7 @@ From 50fde62150c50372001e6bf9e1245efbb9d6869d Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Fri, 24 Dec 2021 09:53:40 +0100 -Subject: [PATCH 116/138] Nicla Vision: tune LWIP mem size +Subject: [PATCH 116/157] Nicla Vision: tune LWIP mem size --- connectivity/lwipstack/mbed_lib.json | 3 +++ @@ -22,5 +22,5 @@ index 6e725819b4..71df8d5449 100644 "mem-size": 36560 }, -- -2.25.1 +2.36.0 diff --git a/patches/0117-Nicla-Vision-fix-wifi-bug-related-to-SDMMC2.patch b/patches/0117-Nicla-Vision-fix-wifi-bug-related-to-SDMMC2.patch index b6a5f340f..01c2aa6d4 100644 --- a/patches/0117-Nicla-Vision-fix-wifi-bug-related-to-SDMMC2.patch +++ b/patches/0117-Nicla-Vision-fix-wifi-bug-related-to-SDMMC2.patch @@ -1,7 +1,7 @@ From 04f1d23ea3bc8fcb747191ef147c139e1da1b951 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Mon, 6 Dec 2021 15:16:08 +0100 -Subject: [PATCH 117/138] Nicla Vision: fix wifi bug related to SDMMC2 +Subject: [PATCH 117/157] Nicla Vision: fix wifi bug related to SDMMC2 Enable flow control + enable SDMMC2 clk before any operation @@ -72,5 +72,5 @@ index 9044e87180..521917c8de 100644 } -- -2.25.1 +2.36.0 diff --git a/patches/0118-Nicla-Vision-fix-LPUART-at-baudrates-higher-than-960.patch b/patches/0118-Nicla-Vision-fix-LPUART-at-baudrates-higher-than-960.patch index 0b71a62dc..0c1b83d69 100644 --- a/patches/0118-Nicla-Vision-fix-LPUART-at-baudrates-higher-than-960.patch +++ b/patches/0118-Nicla-Vision-fix-LPUART-at-baudrates-higher-than-960.patch @@ -1,7 +1,7 @@ From fe2e94ce3c2f211caa693c72e950a1b8551ed6f7 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Wed, 27 Oct 2021 15:30:07 +0200 -Subject: [PATCH 118/138] Nicla Vision: fix LPUART at baudrates higher than +Subject: [PATCH 118/157] Nicla Vision: fix LPUART at baudrates higher than 9600 --- @@ -23,5 +23,5 @@ index 884f508e46..6702b659f4 100644 "components_add": [ "QSPIF", -- -2.25.1 +2.36.0 diff --git a/patches/0119-TEMP-Remove-log-from-.gitignore-file.patch b/patches/0119-TEMP-Remove-log-from-.gitignore-file.patch index b0d77a710..63da3d765 100644 --- a/patches/0119-TEMP-Remove-log-from-.gitignore-file.patch +++ b/patches/0119-TEMP-Remove-log-from-.gitignore-file.patch @@ -1,7 +1,7 @@ From 86184757e34954fe60e2c81f9d3c08c86566dbbc Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 19 Jan 2022 10:24:06 +0100 -Subject: [PATCH 119/138] TEMP: Remove log from .gitignore file +Subject: [PATCH 119/157] TEMP: Remove log from .gitignore file --- .gitignore | 1 - @@ -20,5 +20,5 @@ index 3e907cf52c..7a68e77ae8 100644 # Icetea related file test_suite.json -- -2.25.1 +2.36.0 diff --git a/patches/0120-Initial-import-of-plug-trust-library-to-COMPONENT_SE.patch b/patches/0120-Initial-import-of-plug-trust-library-to-COMPONENT_SE.patch index ef6223bb8..2c487511b 100644 --- a/patches/0120-Initial-import-of-plug-trust-library-to-COMPONENT_SE.patch +++ b/patches/0120-Initial-import-of-plug-trust-library-to-COMPONENT_SE.patch @@ -1,7 +1,7 @@ From 406c6ddcf2456647c316c7b4054149de15de7476 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 18 Jan 2022 14:00:46 +0100 -Subject: [PATCH 120/138] Initial import of plug & trust library to +Subject: [PATCH 120/157] Initial import of plug & trust library to COMPONENT_SE050 --- @@ -625,334 +625,334 @@ index 0000000000..fb71b7bf10 --- /dev/null +++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_H7/COMPONENT_SE050/README.rst @@ -0,0 +1,328 @@ -+Introduction on Plug & Trust Middleware Mini Package -+==================================================================== -+ -+Plug and Trust middleware mini package contains the minimum files required to -+connect to SE05x using t1oi2c protocol. The package is tested on -+*Raspberry-Pi* with ``T=1 overI2C``. -+ -+The complete Plug and Trust middleware package can be downloaded from -+https://www.nxp.com/products/:SE050. The package has support for other -+platforms. -+ -+- iMX6UL, iMX8MQ - Linux -+- Freedom K64F, i.MX RT 1060, LPC55S - FreeRTOS/Without RTOS -+- Hikey 960 - Android -+- Windows PC(Visual Studio) -+ -+It also includes other api usage examples, ssscli (command line tool to use -+SE05x), cloud connectivity examples, openssl engine, pkcs11 interface, AWS -+Greengrass, OPCUA and more. More details regarding SE05x and other detailed -+application notes can be found at https://www.nxp.com/products/:SE050 / -+https://www.nxp.com/products/:SE051. -+ -+ -+Change Log -+------------------------------------------------------------- -+Refer ChangeLog.md -+ -+ -+ -+Folder structure of the Mini Pacakge -+------------------------------------------------------------- -+ -+The folder structure of mini package is as under:: -+ -+ ├───ecc_example -+ ├───hostlib -+ │ └───hostLib -+ │ ├───inc -+ │ ├───libCommon -+ │ │ ├───infra -+ │ │ ├───nxScp -+ │ │ └───smCom -+ │ │ └───T1oI2C -+ │ ├───mbedtls -+ │ │ └───src -+ │ ├───platform -+ │ │ ├───generic -+ │ │ ├───inc -+ │ │ ├───linux -+ │ │ └───rsp -+ │ ├───se05x -+ │ │ └───src -+ │ └───se05x_03_xx_xx -+ └───sss -+ ├───ex -+ │ ├───ecc -+ │ ├───inc -+ │ └───src -+ ├───inc -+ ├───plugin -+ │ └───mbedtls -+ ├───port -+ │ └───default -+ └───src -+ ├───keystore -+ ├───mbedtls -+ ├───openssl -+ └───se05x -+ -+Important folders are as under: -+ -+:ecc_example: ecc sign and verify example. (Tested on Raspberry Pi with openssl 1.1.1) -+ -+:hostlib: This folder contains the common part of host library e.g. ``T=1oI2C`` communication -+ protocol stack, SE050 APIs, etc. -+ -+:sss: This folder contains the **SSS APIs** interface to the Application Layer. -+ -+ -+Prerequisite -+------------------------------------------------------------- -+- Linux should be running on the Raspberry Pi development board, -+ the release was tested with Raspbian Buster (``4.19.75-v7l+``) -+- SE050 or SE051 connected to i2c-1 port of Raspberry Pi. -+ -+ -+ECC example -+------------------------------------------------------------- -+ -+This example demonstrates Elliptic Curve Cryptography sign and verify -+operation using SSS APIs. (``/sss/ex/ecc/ex_sss_ecc.c``) Execute the command -+below to test the ecc example:: -+ -+ cd ecc_example -+ mkdir build -+ cd build -+ cmake .. -+ cmake --build . -+ ./ex_ecc -+ -+ -+Build Applications using Mini Package -+------------------------------------------------------------- -+ -+Use the source file in `sss/ex` folder to open the session to se05x. -+Applications code should start with function `ex_sss_entry`:: -+ -+ sss_status_t ex_sss_entry(ex_sss_boot_ctx_t *pCtx) -+ -+Refer the example `ecc_example`. -+Example File - `/sss/ex/ecc/ex_sss_ecc.c` -+ -+ -+Use the below macros in ``fsl_sss_ftr.h`` file to enable support for either SE050 or SE051. :: -+ -+ /** SE050 */ -+ #define SSS_HAVE_SE05X_VER_03_XX 1 -+ -+ /** SE051 */ -+ #define SSS_HAVE_SE05X_VER_06_00 0 -+ -+ -+To enable authenticated session to SE05x, make the following changes, -+ -+1. Enable any host crypto (Mbedtls or openssl or User crypto) in -+ ``fsl_sss_ftr.h`` file. Refer, -+ -+- For Openssl: Refer section - *Openssl host crypto in mini package* -+- For Mbedtls: Refer section - *Mbedtls host crypto in mini package* -+- For User Crypto: Refer section - *User host crypto in mini package* -+ -+ -+2. Enable the below macros in ``fsl_sss_ftr.h`` file: -+ -+- ``#define SSS_HAVE_SCP_SCP03_SSS 1`` -+- ``#define SSSFTR_SE05X_AuthSession 1`` -+ -+3. Below settings can be used to authenticate with SE (Refer SE050 - User -+ Guidelines in https://www.nxp.com/products/:SE050 for more details on session -+ authentication) -+ -+- ``SSS_HAVE_SE05X_AUTH_USERID`` -+- ``SSS_HAVE_SE05X_AUTH_AESKEY`` -+- ``SSS_HAVE_SE05X_AUTH_ECKEY`` -+- ``SSS_HAVE_SE05X_AUTH_PLATFSCP03`` -+- ``SSS_HAVE_SE05X_AUTH_USERID_PLATFSCP03`` -+- ``SSS_HAVE_SE05X_AUTH_AESKEY_PLATFSCP03`` -+- ``SSS_HAVE_SE05X_AUTH_ECKEY_PLATFSCP03`` -+ -+ -+4. Include the below source files for autheticated session open, -+ -+- ``sss/ex/src/ex_sss_scp03_auth.c`` -+- ``sss/src/se05x/fsl_sss_se05x_eckey.c`` -+- ``sss/src/se05x/fsl_sss_se05x_scp03.c`` -+- ``hostlib/hostLib/libCommon/nxScp/nxScp03_Com.c`` -+ -+ -+Openssl host crypto in mini package -+------------------------------------------------------------- -+ -+Enable/disable the openssl host crypto by changing the below definition in -+``fsl_sss_ftr.h`` file:: -+ -+ /** Use OpenSSL as host crypto */ -+ #define SSS_HAVE_HOSTCRYPTO_OPENSSL 1 -+ -+Include the below files for openssl host crypto support -+- ``sss/src/openssl/fsl_sss_openssl_apis.c`` -+- ``sss/src/keystore/keystore_cmn.c`` -+- ``sss/src/keystore/keystore_openssl.c`` -+- ``sss/src/keystore/keystore_pc.c`` -+ -+Link the openssl library (version 1.1) as, -+ TARGET_LINK_LIBRARIES(${PROJECT_NAME} ssl crypto) -+ -+ -+Mbedtls host crypto in mini package -+------------------------------------------------------------- -+ -+Enable/disable the mbedtls host crypto by changing the below definition in -+``fsl_sss_ftr.h`` file:: -+ -+ /** Use mbedTLS as host crypto */ -+ #define SSS_HAVE_HOSTCRYPTO_MBEDTLS 1 -+ -+Include the below file for mbedtls host crypto support, -+ -+- ``sss/src/mbedtls/fsl_sss_mbedtls_apis.c`` -+- ``sss/src/keystore/keystore_pc.c`` -+- ``sss/src/keystore/keystore_cmn.c`` -+ -+Mbedtls applications depend on the following files to use se05x for crypto -+operations. Include the following files for compilation along with the mbedtls -+stack. (Tested with mbedtls-2.16.2). Mbedtls client server example using the -+below files is expalined in the next section, -+ -+- ``/hostlib/hostLib/mbedtls/src/ecdh_alt.c`` -+- ``/hostlib/hostLib/mbedtls/src/rsa_alt.c`` -+- ``/sss/plugin/mbedtls/ecdh_alt_ax.c`` -+- ``/sss/plugin/mbedtls/sss_mbedtls.c`` -+- ``/sss/plugin/mbedtls/sss_mbedtls_rsa.c`` -+- ``/sss/plugin/mbedtls/port/ksdk/ecp_curves_alt.c`` -+- ``/sss/plugin/mbedtls/port/ksdk/ecp_alt.c`` -+ -+Note: Exclude the file ``mbedtls/library/ecdh.c`` from mbedtls stack for compilation. -+ -+Also add compile defination ``MBEDTLS_CONFIG_FILE`` to use the correct mbedtls config file:: -+ -+ TARGET_COMPILE_DEFINITIONS( -+ ${PROJECT_NAME} -+ PUBLIC -+ MBEDTLS_CONFIG_FILE=\"sss_mbedtls_x86_config.h\" -+ ) -+ -+.. note:: -+ -+ Remove linking the openssl library in ``ecc_example/CMakeLists.txt``, if -+ the example is built for mbedtls, ``TARGET_LINK_LIBRARIES(${PROJECT_NAME} -+ ssl crypto)`` -+ -+ -+ -+TLS Client Server Example using MbedTLS stack -+------------------------------------------------------------- -+ -+This example demonstrates TLS client server connection using mbedtls stack. -+(``mbedtls_cli_srv``). Mbedtls client example is modified to use the -+client key and certificates from secure element. Modified mbedtls client -+example - ``sss/ex/mbedtls/ex_sss_ssl2.c`` -+ -+Prerequisite for the demo: -+ -+- Copy mbedtls (``mbedtls-2.16.2``) stack to ``ext/`` location, -+- client key provisoned inside SE050 with key id ``0x20181001``, -+- client certificate provisoned inside SE050 with key id ``0x20181002``, -+- Root CA public key provisoned inside SE050 with key id ``0x7DCCBB22``, -+ -+Enable mbedtls host crypto in ``fsl_sss_ftr.h`` file. Execute the command -+below to build mbedtls client and server examples:: -+ -+ cd mbedtls_cli_srv -+ mkdir build -+ cd build -+ cmake .. -+ cmake --build . -+ -+ -+Run mbedtls server as:: -+ -+ ./ssl2_server exchanges=1 \ -+ force_version=tls1_2 \ -+ debug_level=1 \ -+ ca_file= \ -+ auth_mode=required \ -+ key_file= \ -+ crt_file= -+ -+Run mbedtls client as:: -+ -+ ./ssl2_client server_name=localhost \ -+ exchanges=1 \ -+ force_version=tls1_2 \ -+ debug_level=1 \ -+ ca_file= \ -+ auth_mode=required \ -+ key_file=none \ -+ crt_file=none \ -+ force_ciphersuite=TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA \ -+ curves=secp256r1 none -+ -+ -+ -+User host crypto in mini package -+------------------------------------------------------------- -+ -+Enable/disable the user host crypto by changing the below definition in ``fsl_sss_ftr.h`` file:: -+ -+ #define SSS_HAVE_HOSTCRYPTO_USER 1 -+ -+On enabling HOSTCRYPTO_USER, the user has to implement the required cryptographic function. -+Implement the functions declared in file ``sss/inc/fsl_sss_user_apis.h``. -+ -+Refer Openssl host crypto implementation in - ``sss/src/mbedtls/fsl_sss_openssl_apis.c``. -+Refer Mbedtls host crypto implementation in - ``sss/src/mbedtls/fsl_sss_mbedtls_apis.c``. -+ -+ -+ -+Port Mini package to different platform -+------------------------------------------------------------- -+ -+To port the mini package to different platform, the i2c interface needs to be -+ported. Exsisting implementation for i2c read/write on Raspberry Pi is in - -+``hostlib/hostLib/platform/linux/i2c_a7.c``. -+ -+Other file that may require porting is - -+``hostlib/hostLib/platform/generic/sm_timer.c`` -+ -+ -+ -+Memory Details -+------------------------------------------------------------- -+ -+Memory details of ex_ecc example on Raspberry Pi built with, -+ -+- No hostcrypto -+- Plain session -+ -+:: -+ -+ Text segment -- 184505 Bytes -+ Data segment -- 416 Bytes -+ Bss segment --- 2808 Bytes -+ Total -------- 187729 Bytes -+ -+ -+Memory details of ex_ecc example on Raspberry Pi built with -+ -+- Openssl hostcrypto -+- PlatformSCP + ECKey (EXFL_SE050_AUTH_ECKey_PlatfSCP03 ) session -+ -+:: -+ -+ Text segment -- 292336 Bytes -+ Data segment -- 1116 Bytes -+ Bss segment --- 3692 Bytes -+ Total -------- 297144 Bytes -+ ++Introduction on Plug & Trust Middleware Mini Package ++==================================================================== ++ ++Plug and Trust middleware mini package contains the minimum files required to ++connect to SE05x using t1oi2c protocol. The package is tested on ++*Raspberry-Pi* with ``T=1 overI2C``. ++ ++The complete Plug and Trust middleware package can be downloaded from ++https://www.nxp.com/products/:SE050. The package has support for other ++platforms. ++ ++- iMX6UL, iMX8MQ - Linux ++- Freedom K64F, i.MX RT 1060, LPC55S - FreeRTOS/Without RTOS ++- Hikey 960 - Android ++- Windows PC(Visual Studio) ++ ++It also includes other api usage examples, ssscli (command line tool to use ++SE05x), cloud connectivity examples, openssl engine, pkcs11 interface, AWS ++Greengrass, OPCUA and more. More details regarding SE05x and other detailed ++application notes can be found at https://www.nxp.com/products/:SE050 / ++https://www.nxp.com/products/:SE051. ++ ++ ++Change Log ++------------------------------------------------------------- ++Refer ChangeLog.md ++ ++ ++ ++Folder structure of the Mini Pacakge ++------------------------------------------------------------- ++ ++The folder structure of mini package is as under:: ++ ++ ├───ecc_example ++ ├───hostlib ++ │ └───hostLib ++ │ ├───inc ++ │ ├───libCommon ++ │ │ ├───infra ++ │ │ ├───nxScp ++ │ │ └───smCom ++ │ │ └───T1oI2C ++ │ ├───mbedtls ++ │ │ └───src ++ │ ├───platform ++ │ │ ├───generic ++ │ │ ├───inc ++ │ │ ├───linux ++ │ │ └───rsp ++ │ ├───se05x ++ │ │ └───src ++ │ └───se05x_03_xx_xx ++ └───sss ++ ├───ex ++ │ ├───ecc ++ │ ├───inc ++ │ └───src ++ ├───inc ++ ├───plugin ++ │ └───mbedtls ++ ├───port ++ │ └───default ++ └───src ++ ├───keystore ++ ├───mbedtls ++ ├───openssl ++ └───se05x ++ ++Important folders are as under: ++ ++:ecc_example: ecc sign and verify example. (Tested on Raspberry Pi with openssl 1.1.1) ++ ++:hostlib: This folder contains the common part of host library e.g. ``T=1oI2C`` communication ++ protocol stack, SE050 APIs, etc. ++ ++:sss: This folder contains the **SSS APIs** interface to the Application Layer. ++ ++ ++Prerequisite ++------------------------------------------------------------- ++- Linux should be running on the Raspberry Pi development board, ++ the release was tested with Raspbian Buster (``4.19.75-v7l+``) ++- SE050 or SE051 connected to i2c-1 port of Raspberry Pi. ++ ++ ++ECC example ++------------------------------------------------------------- ++ ++This example demonstrates Elliptic Curve Cryptography sign and verify ++operation using SSS APIs. (``/sss/ex/ecc/ex_sss_ecc.c``) Execute the command ++below to test the ecc example:: ++ ++ cd ecc_example ++ mkdir build ++ cd build ++ cmake .. ++ cmake --build . ++ ./ex_ecc ++ ++ ++Build Applications using Mini Package ++------------------------------------------------------------- ++ ++Use the source file in `sss/ex` folder to open the session to se05x. ++Applications code should start with function `ex_sss_entry`:: ++ ++ sss_status_t ex_sss_entry(ex_sss_boot_ctx_t *pCtx) ++ ++Refer the example `ecc_example`. ++Example File - `/sss/ex/ecc/ex_sss_ecc.c` ++ ++ ++Use the below macros in ``fsl_sss_ftr.h`` file to enable support for either SE050 or SE051. :: ++ ++ /** SE050 */ ++ #define SSS_HAVE_SE05X_VER_03_XX 1 ++ ++ /** SE051 */ ++ #define SSS_HAVE_SE05X_VER_06_00 0 ++ ++ ++To enable authenticated session to SE05x, make the following changes, ++ ++1. Enable any host crypto (Mbedtls or openssl or User crypto) in ++ ``fsl_sss_ftr.h`` file. Refer, ++ ++- For Openssl: Refer section - *Openssl host crypto in mini package* ++- For Mbedtls: Refer section - *Mbedtls host crypto in mini package* ++- For User Crypto: Refer section - *User host crypto in mini package* ++ ++ ++2. Enable the below macros in ``fsl_sss_ftr.h`` file: ++ ++- ``#define SSS_HAVE_SCP_SCP03_SSS 1`` ++- ``#define SSSFTR_SE05X_AuthSession 1`` ++ ++3. Below settings can be used to authenticate with SE (Refer SE050 - User ++ Guidelines in https://www.nxp.com/products/:SE050 for more details on session ++ authentication) ++ ++- ``SSS_HAVE_SE05X_AUTH_USERID`` ++- ``SSS_HAVE_SE05X_AUTH_AESKEY`` ++- ``SSS_HAVE_SE05X_AUTH_ECKEY`` ++- ``SSS_HAVE_SE05X_AUTH_PLATFSCP03`` ++- ``SSS_HAVE_SE05X_AUTH_USERID_PLATFSCP03`` ++- ``SSS_HAVE_SE05X_AUTH_AESKEY_PLATFSCP03`` ++- ``SSS_HAVE_SE05X_AUTH_ECKEY_PLATFSCP03`` ++ ++ ++4. Include the below source files for autheticated session open, ++ ++- ``sss/ex/src/ex_sss_scp03_auth.c`` ++- ``sss/src/se05x/fsl_sss_se05x_eckey.c`` ++- ``sss/src/se05x/fsl_sss_se05x_scp03.c`` ++- ``hostlib/hostLib/libCommon/nxScp/nxScp03_Com.c`` ++ ++ ++Openssl host crypto in mini package ++------------------------------------------------------------- ++ ++Enable/disable the openssl host crypto by changing the below definition in ++``fsl_sss_ftr.h`` file:: ++ ++ /** Use OpenSSL as host crypto */ ++ #define SSS_HAVE_HOSTCRYPTO_OPENSSL 1 ++ ++Include the below files for openssl host crypto support ++- ``sss/src/openssl/fsl_sss_openssl_apis.c`` ++- ``sss/src/keystore/keystore_cmn.c`` ++- ``sss/src/keystore/keystore_openssl.c`` ++- ``sss/src/keystore/keystore_pc.c`` ++ ++Link the openssl library (version 1.1) as, ++ TARGET_LINK_LIBRARIES(${PROJECT_NAME} ssl crypto) ++ ++ ++Mbedtls host crypto in mini package ++------------------------------------------------------------- ++ ++Enable/disable the mbedtls host crypto by changing the below definition in ++``fsl_sss_ftr.h`` file:: ++ ++ /** Use mbedTLS as host crypto */ ++ #define SSS_HAVE_HOSTCRYPTO_MBEDTLS 1 ++ ++Include the below file for mbedtls host crypto support, ++ ++- ``sss/src/mbedtls/fsl_sss_mbedtls_apis.c`` ++- ``sss/src/keystore/keystore_pc.c`` ++- ``sss/src/keystore/keystore_cmn.c`` ++ ++Mbedtls applications depend on the following files to use se05x for crypto ++operations. Include the following files for compilation along with the mbedtls ++stack. (Tested with mbedtls-2.16.2). Mbedtls client server example using the ++below files is expalined in the next section, ++ ++- ``/hostlib/hostLib/mbedtls/src/ecdh_alt.c`` ++- ``/hostlib/hostLib/mbedtls/src/rsa_alt.c`` ++- ``/sss/plugin/mbedtls/ecdh_alt_ax.c`` ++- ``/sss/plugin/mbedtls/sss_mbedtls.c`` ++- ``/sss/plugin/mbedtls/sss_mbedtls_rsa.c`` ++- ``/sss/plugin/mbedtls/port/ksdk/ecp_curves_alt.c`` ++- ``/sss/plugin/mbedtls/port/ksdk/ecp_alt.c`` ++ ++Note: Exclude the file ``mbedtls/library/ecdh.c`` from mbedtls stack for compilation. ++ ++Also add compile defination ``MBEDTLS_CONFIG_FILE`` to use the correct mbedtls config file:: ++ ++ TARGET_COMPILE_DEFINITIONS( ++ ${PROJECT_NAME} ++ PUBLIC ++ MBEDTLS_CONFIG_FILE=\"sss_mbedtls_x86_config.h\" ++ ) ++ ++.. note:: ++ ++ Remove linking the openssl library in ``ecc_example/CMakeLists.txt``, if ++ the example is built for mbedtls, ``TARGET_LINK_LIBRARIES(${PROJECT_NAME} ++ ssl crypto)`` ++ ++ ++ ++TLS Client Server Example using MbedTLS stack ++------------------------------------------------------------- ++ ++This example demonstrates TLS client server connection using mbedtls stack. ++(``mbedtls_cli_srv``). Mbedtls client example is modified to use the ++client key and certificates from secure element. Modified mbedtls client ++example - ``sss/ex/mbedtls/ex_sss_ssl2.c`` ++ ++Prerequisite for the demo: ++ ++- Copy mbedtls (``mbedtls-2.16.2``) stack to ``ext/`` location, ++- client key provisoned inside SE050 with key id ``0x20181001``, ++- client certificate provisoned inside SE050 with key id ``0x20181002``, ++- Root CA public key provisoned inside SE050 with key id ``0x7DCCBB22``, ++ ++Enable mbedtls host crypto in ``fsl_sss_ftr.h`` file. Execute the command ++below to build mbedtls client and server examples:: ++ ++ cd mbedtls_cli_srv ++ mkdir build ++ cd build ++ cmake .. ++ cmake --build . ++ ++ ++Run mbedtls server as:: ++ ++ ./ssl2_server exchanges=1 \ ++ force_version=tls1_2 \ ++ debug_level=1 \ ++ ca_file= \ ++ auth_mode=required \ ++ key_file= \ ++ crt_file= ++ ++Run mbedtls client as:: ++ ++ ./ssl2_client server_name=localhost \ ++ exchanges=1 \ ++ force_version=tls1_2 \ ++ debug_level=1 \ ++ ca_file= \ ++ auth_mode=required \ ++ key_file=none \ ++ crt_file=none \ ++ force_ciphersuite=TLS-ECDH-ECDSA-WITH-AES-128-CBC-SHA \ ++ curves=secp256r1 none ++ ++ ++ ++User host crypto in mini package ++------------------------------------------------------------- ++ ++Enable/disable the user host crypto by changing the below definition in ``fsl_sss_ftr.h`` file:: ++ ++ #define SSS_HAVE_HOSTCRYPTO_USER 1 ++ ++On enabling HOSTCRYPTO_USER, the user has to implement the required cryptographic function. ++Implement the functions declared in file ``sss/inc/fsl_sss_user_apis.h``. ++ ++Refer Openssl host crypto implementation in - ``sss/src/mbedtls/fsl_sss_openssl_apis.c``. ++Refer Mbedtls host crypto implementation in - ``sss/src/mbedtls/fsl_sss_mbedtls_apis.c``. ++ ++ ++ ++Port Mini package to different platform ++------------------------------------------------------------- ++ ++To port the mini package to different platform, the i2c interface needs to be ++ported. Exsisting implementation for i2c read/write on Raspberry Pi is in - ++``hostlib/hostLib/platform/linux/i2c_a7.c``. ++ ++Other file that may require porting is - ++``hostlib/hostLib/platform/generic/sm_timer.c`` ++ ++ ++ ++Memory Details ++------------------------------------------------------------- ++ ++Memory details of ex_ecc example on Raspberry Pi built with, ++ ++- No hostcrypto ++- Plain session ++ ++:: ++ ++ Text segment -- 184505 Bytes ++ Data segment -- 416 Bytes ++ Bss segment --- 2808 Bytes ++ Total -------- 187729 Bytes ++ ++ ++Memory details of ex_ecc example on Raspberry Pi built with ++ ++- Openssl hostcrypto ++- PlatformSCP + ECKey (EXFL_SE050_AUTH_ECKey_PlatfSCP03 ) session ++ ++:: ++ ++ Text segment -- 292336 Bytes ++ Data segment -- 1116 Bytes ++ Bss segment --- 3692 Bytes ++ Total -------- 297144 Bytes ++ diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_H7/COMPONENT_SE050/ecc_example/CMakeLists.txt b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_H7/COMPONENT_SE050/ecc_example/CMakeLists.txt new file mode 100644 index 0000000000..5f35c06dd1 @@ -81110,5 +81110,5 @@ index 0000000000..50b2affed4 + +#endif // SSS_HAVE_APPLET_SE05X_IOT -- -2.25.1 +2.36.0 diff --git a/patches/0121-Port-sss-hostLib-to-mbed-os.patch b/patches/0121-Port-sss-hostLib-to-mbed-os.patch index 321c807d1..e14ad9e82 100644 --- a/patches/0121-Port-sss-hostLib-to-mbed-os.patch +++ b/patches/0121-Port-sss-hostLib-to-mbed-os.patch @@ -1,7 +1,7 @@ From 97718d517e09cab6dfdd1bbd1e4f530b8af30c51 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 18 Jan 2022 14:59:17 +0100 -Subject: [PATCH 121/138] Port sss hostLib to mbed-os +Subject: [PATCH 121/157] Port sss hostLib to mbed-os --- .../hostlib/hostLib/libCommon/log/nxLog.c | 41 +- @@ -1179,5 +1179,5 @@ index 7613140051..cabfdff7d3 100644 memset(context, 0, sizeof(*context)); } -- -2.25.1 +2.36.0 diff --git a/patches/0122-Do-not-build-ecdh.c-from-mbedtls-stack-if-MBEDTLS_EC.patch b/patches/0122-Do-not-build-ecdh.c-from-mbedtls-stack-if-MBEDTLS_EC.patch index 2fc3cabab..9caf5c6d4 100644 --- a/patches/0122-Do-not-build-ecdh.c-from-mbedtls-stack-if-MBEDTLS_EC.patch +++ b/patches/0122-Do-not-build-ecdh.c-from-mbedtls-stack-if-MBEDTLS_EC.patch @@ -1,7 +1,7 @@ From 6028f880d17340e000e1b5fa8018c3694ec61078 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 19 Jan 2022 14:17:07 +0100 -Subject: [PATCH 122/138] Do not build ecdh.c from mbedtls stack if +Subject: [PATCH 122/157] Do not build ecdh.c from mbedtls stack if MBEDTLS_ECDH_ALT is defined --- @@ -28,5 +28,5 @@ index 9dfa868063..6cb53b4015 100644 +#endif /* MBEDTLS_ECDH_ALT */ #endif /* MBEDTLS_ECDH_C */ -- -2.25.1 +2.36.0 diff --git a/patches/0123-Enable-MBEDTLS-alternative-implementation-over-SSS.patch b/patches/0123-Enable-MBEDTLS-alternative-implementation-over-SSS.patch index d59cd4d0e..66b0a5be4 100644 --- a/patches/0123-Enable-MBEDTLS-alternative-implementation-over-SSS.patch +++ b/patches/0123-Enable-MBEDTLS-alternative-implementation-over-SSS.patch @@ -1,7 +1,7 @@ From 92234090ae976558fdc7f517a8f836db1110ca42 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 19 Jan 2022 14:18:07 +0100 -Subject: [PATCH 123/138] Enable MBEDTLS alternative implementation over SSS +Subject: [PATCH 123/157] Enable MBEDTLS alternative implementation over SSS --- .../COMPONENT_SE050/sss/inc/fsl_sss_ftr_default.h | 4 ++-- @@ -30,5 +30,5 @@ index 7ad9a873d2..0113d794bc 100644 #if (( 0 \ + SSS_HAVE_MBEDTLS_ALT_SSS \ -- -2.25.1 +2.36.0 diff --git a/patches/0124-Enable-DEBUG-log-by-default.-To-disable-it-define-FL.patch b/patches/0124-Enable-DEBUG-log-by-default.-To-disable-it-define-FL.patch index bb4b415e2..4cf3cd502 100644 --- a/patches/0124-Enable-DEBUG-log-by-default.-To-disable-it-define-FL.patch +++ b/patches/0124-Enable-DEBUG-log-by-default.-To-disable-it-define-FL.patch @@ -1,7 +1,7 @@ From 11dca5dd86027089be9bb6aad7beac41e0d86cf6 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Feb 2022 09:52:58 +0100 -Subject: [PATCH 124/138] Enable DEBUG log by default. To disable it define +Subject: [PATCH 124/157] Enable DEBUG log by default. To disable it define FLOW_SILENT macro --- @@ -22,5 +22,5 @@ index 9e37d5616b..1b0cee9dea 100644 /* Same as NX_LOG_ENABLE_DEFAULT_DEBUG but for Info Level */ #define NX_LOG_ENABLE_DEFAULT_INFO 1 -- -2.25.1 +2.36.0 diff --git a/patches/0125-Add-1ms-delays-to-let-communication-work-also-with-d.patch b/patches/0125-Add-1ms-delays-to-let-communication-work-also-with-d.patch index 7f222c084..f021b4e3d 100644 --- a/patches/0125-Add-1ms-delays-to-let-communication-work-also-with-d.patch +++ b/patches/0125-Add-1ms-delays-to-let-communication-work-also-with-d.patch @@ -1,7 +1,7 @@ From abbf7d3e64a63f7c41b23e5ecaf932d3c337e21f Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Feb 2022 09:53:57 +0100 -Subject: [PATCH 125/138] Add 1ms delays to let communication work also with +Subject: [PATCH 125/157] Add 1ms delays to let communication work also with debug disabled --- @@ -49,5 +49,5 @@ index 4ee1665c42..5f375185d2 100644 } } while (ret != I2C_OK); -- -2.25.1 +2.36.0 diff --git a/patches/0126-Make-i2c-and-resets-pin-configurable.patch b/patches/0126-Make-i2c-and-resets-pin-configurable.patch index 9f00702f1..8ab14583a 100644 --- a/patches/0126-Make-i2c-and-resets-pin-configurable.patch +++ b/patches/0126-Make-i2c-and-resets-pin-configurable.patch @@ -1,7 +1,7 @@ From 877b8109c62677b86b73dd5cef05c039dff065eb Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Feb 2022 10:10:46 +0100 -Subject: [PATCH 126/138] Make i2c and resets pin configurable +Subject: [PATCH 126/157] Make i2c and resets pin configurable --- .../COMPONENT_SE050/hostlib/hostLib/platform/se05x_i2c.cpp | 4 ++-- @@ -42,5 +42,5 @@ index 1c6af5a24e..0d7ffcac8c 100644 void se05x_ic_reset(void) { -- -2.25.1 +2.36.0 diff --git a/patches/0127-Add-missing-__MBED__-define-to-avoid-build-mbedtls-k.patch b/patches/0127-Add-missing-__MBED__-define-to-avoid-build-mbedtls-k.patch index 46bc18356..1688e873f 100644 --- a/patches/0127-Add-missing-__MBED__-define-to-avoid-build-mbedtls-k.patch +++ b/patches/0127-Add-missing-__MBED__-define-to-avoid-build-mbedtls-k.patch @@ -1,7 +1,7 @@ From 3b2f1241d3347b9f6679ac0b822f405bb5a664e7 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Feb 2022 10:02:13 +0100 -Subject: [PATCH 127/138] Add missing __MBED__ define to avoid build mbedtls +Subject: [PATCH 127/157] Add missing __MBED__ define to avoid build mbedtls keystore --- @@ -85,5 +85,5 @@ index b8d4e82cfc..614e8f0abb 100644 uint32_t i; for (i = 0; i < keyStore->max_object_count; i++) { -- -2.25.1 +2.36.0 diff --git a/patches/0128-Moved-COMPONENT_SE050-from-TARGET_PORTENTA_H7-to-STM.patch b/patches/0128-Moved-COMPONENT_SE050-from-TARGET_PORTENTA_H7-to-STM.patch index ad2aa73f9..9881df2a5 100644 --- a/patches/0128-Moved-COMPONENT_SE050-from-TARGET_PORTENTA_H7-to-STM.patch +++ b/patches/0128-Moved-COMPONENT_SE050-from-TARGET_PORTENTA_H7-to-STM.patch @@ -1,7 +1,7 @@ From fa21a14868766a83c1adca0d34b2330f279fbe93 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Feb 2022 14:23:36 +0100 -Subject: [PATCH 128/138] Moved COMPONENT_SE050 from TARGET_PORTENTA_H7 to +Subject: [PATCH 128/157] Moved COMPONENT_SE050 from TARGET_PORTENTA_H7 to STM32H747xI plugAndTrust: rename log folder to nxlog and revert 86184757e34 @@ -862,5 +862,5 @@ similarity index 100% rename from targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_PORTENTA_H7/COMPONENT_SE050/sss/src/se05x/fsl_sss_se05x_scp03.c rename to targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/COMPONENT_SE050/sss/src/se05x/fsl_sss_se05x_scp03.c -- -2.25.1 +2.36.0 diff --git a/patches/0129-NICLA_VISION-Enable-component-SE050.patch b/patches/0129-NICLA_VISION-Enable-component-SE050.patch index 31685cdfb..89e1998b8 100644 --- a/patches/0129-NICLA_VISION-Enable-component-SE050.patch +++ b/patches/0129-NICLA_VISION-Enable-component-SE050.patch @@ -1,7 +1,7 @@ From 2b7a490c622e0e78b155ae19119259c45435fc22 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Feb 2022 14:24:59 +0100 -Subject: [PATCH 129/138] NICLA_VISION: Enable component SE050 +Subject: [PATCH 129/157] NICLA_VISION: Enable component SE050 --- targets/targets.json | 3 ++- @@ -22,5 +22,5 @@ index 6702b659f4..5e036861cf 100644 "macros_add": [ "MBEDTLS_FS_IO", -- -2.25.1 +2.36.0 diff --git a/patches/0130-NICLA_VISION-Add-configuration-macros-used-for-APDU-.patch b/patches/0130-NICLA_VISION-Add-configuration-macros-used-for-APDU-.patch index 5b1806d4e..0466742ed 100644 --- a/patches/0130-NICLA_VISION-Add-configuration-macros-used-for-APDU-.patch +++ b/patches/0130-NICLA_VISION-Add-configuration-macros-used-for-APDU-.patch @@ -1,7 +1,7 @@ From b1fb8c15671daecb88e22bcb320db93abfef1fe6 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Feb 2022 14:26:18 +0100 -Subject: [PATCH 130/138] NICLA_VISION: Add configuration macros used for APDU +Subject: [PATCH 130/157] NICLA_VISION: Add configuration macros used for APDU communication protocol --- @@ -24,5 +24,5 @@ index 5e036861cf..f2429fba17 100644 "device_has_add": [ "USBDEVICE", -- -2.25.1 +2.36.0 diff --git a/patches/0131-NICLA_VISION-Add-configuration-for-reset-pin-and-i2c.patch b/patches/0131-NICLA_VISION-Add-configuration-for-reset-pin-and-i2c.patch index cffb008de..6306ba21d 100644 --- a/patches/0131-NICLA_VISION-Add-configuration-for-reset-pin-and-i2c.patch +++ b/patches/0131-NICLA_VISION-Add-configuration-for-reset-pin-and-i2c.patch @@ -1,7 +1,7 @@ From 958d8b763ceadd44a82d907e2d09194fb4e2b299 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Feb 2022 14:30:07 +0100 -Subject: [PATCH 131/138] NICLA_VISION: Add configuration for reset pin and i2c +Subject: [PATCH 131/157] NICLA_VISION: Add configuration for reset pin and i2c --- targets/targets.json | 16 ++++++++++++++++ @@ -35,5 +35,5 @@ index f2429fba17..43e830d147 100644 }, "overrides": { -- -2.25.1 +2.36.0 diff --git a/patches/0132-NICLA_VISION-DISABLE-debug-log-with-FLOW_SILENT-macr.patch b/patches/0132-NICLA_VISION-DISABLE-debug-log-with-FLOW_SILENT-macr.patch index edd2ca6bd..f64e792da 100644 --- a/patches/0132-NICLA_VISION-DISABLE-debug-log-with-FLOW_SILENT-macr.patch +++ b/patches/0132-NICLA_VISION-DISABLE-debug-log-with-FLOW_SILENT-macr.patch @@ -1,7 +1,7 @@ From 595d3a1549244e709c75980a4d8f9a8cfcedb529 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Feb 2022 15:04:02 +0100 -Subject: [PATCH 132/138] NICLA_VISION: DISABLE debug log with FLOW_SILENT +Subject: [PATCH 132/157] NICLA_VISION: DISABLE debug log with FLOW_SILENT macro --- @@ -23,5 +23,5 @@ index 43e830d147..e0e4a8b6d8 100644 "device_has_add": [ "USBDEVICE", -- -2.25.1 +2.36.0 diff --git a/patches/0133-NICLA_VISION-Add-overload-for-TLSSocketWrapper-set_c.patch b/patches/0133-NICLA_VISION-Add-overload-for-TLSSocketWrapper-set_c.patch index b7a714939..d2ef3ed26 100644 --- a/patches/0133-NICLA_VISION-Add-overload-for-TLSSocketWrapper-set_c.patch +++ b/patches/0133-NICLA_VISION-Add-overload-for-TLSSocketWrapper-set_c.patch @@ -1,7 +1,7 @@ From eba7646c8e678dc21eed4e853015d84023125a42 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 16 Feb 2022 14:57:11 +0100 -Subject: [PATCH 133/138] NICLA_VISION: Add overload for +Subject: [PATCH 133/157] NICLA_VISION: Add overload for TLSSocketWrapper::set_client_cert_key() --- @@ -83,5 +83,5 @@ index 8202151eb7..c0b33dacee 100644 nsapi_error_t TLSSocketWrapper::start_handshake(bool first_call) { -- -2.25.1 +2.36.0 diff --git a/patches/0134-TLSSocketWrapper-store-SE050-keystore-pointer-and-ke.patch b/patches/0134-TLSSocketWrapper-store-SE050-keystore-pointer-and-ke.patch index 23a025927..40dcbe36e 100644 --- a/patches/0134-TLSSocketWrapper-store-SE050-keystore-pointer-and-ke.patch +++ b/patches/0134-TLSSocketWrapper-store-SE050-keystore-pointer-and-ke.patch @@ -1,7 +1,7 @@ From 46d6734251e56fccfccf78e53821ff297c30be28 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 21 Feb 2022 11:32:33 +0100 -Subject: [PATCH 134/138] TLSSocketWrapper: store SE050 keystore pointer and +Subject: [PATCH 134/157] TLSSocketWrapper: store SE050 keystore pointer and keyObject --- @@ -88,5 +88,5 @@ index c0b33dacee..48135fabf4 100644 #endif /* MBEDTLS_X509_CRT_PARSE_C */ } -- -2.25.1 +2.36.0 diff --git a/patches/0135-TLSSocketWrapper-Force-correct-cipher-suite-for-SE05.patch b/patches/0135-TLSSocketWrapper-Force-correct-cipher-suite-for-SE05.patch index a6b7e5366..f2f6c3337 100644 --- a/patches/0135-TLSSocketWrapper-Force-correct-cipher-suite-for-SE05.patch +++ b/patches/0135-TLSSocketWrapper-Force-correct-cipher-suite-for-SE05.patch @@ -1,7 +1,7 @@ From e317b33bcfdba8f083937eaf10d655c33689e2f5 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 21 Feb 2022 11:33:44 +0100 -Subject: [PATCH 135/138] TLSSocketWrapper: Force correct cipher suite for +Subject: [PATCH 135/157] TLSSocketWrapper: Force correct cipher suite for SE050 integration --- @@ -23,5 +23,5 @@ index 48135fabf4..0826d05346 100644 _sss_ks_ptr = &deviceCtx->ks; -- -2.25.1 +2.36.0 diff --git a/patches/0136-TLSSocketWrapper-Associate-SE050-ecdh-context-to-mbe.patch b/patches/0136-TLSSocketWrapper-Associate-SE050-ecdh-context-to-mbe.patch index bd22c2144..a4224902f 100644 --- a/patches/0136-TLSSocketWrapper-Associate-SE050-ecdh-context-to-mbe.patch +++ b/patches/0136-TLSSocketWrapper-Associate-SE050-ecdh-context-to-mbe.patch @@ -1,7 +1,7 @@ From 83821906a0030586667e13946a23acfbce81b01f Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 21 Feb 2022 11:34:40 +0100 -Subject: [PATCH 136/138] TLSSocketWrapper: Associate SE050 ecdh context to +Subject: [PATCH 136/157] TLSSocketWrapper: Associate SE050 ecdh context to mbedtls --- @@ -26,5 +26,5 @@ index 0826d05346..58f47b54c8 100644 // callers of mbedtls_ssl_set_bio_ctx and there should be only one ssl context. If these rules don't apply, // these defines can't be used. -- -2.25.1 +2.36.0 diff --git a/patches/0137-TLSSocketWrapper-Add-function-to-append-a-certificat.patch b/patches/0137-TLSSocketWrapper-Add-function-to-append-a-certificat.patch index e5307b4d8..62515f1d0 100644 --- a/patches/0137-TLSSocketWrapper-Add-function-to-append-a-certificat.patch +++ b/patches/0137-TLSSocketWrapper-Add-function-to-append-a-certificat.patch @@ -1,7 +1,7 @@ From 8b8098c97702bfdac98f7b20a4c84ba1012b4b61 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 22 Feb 2022 14:16:16 +0100 -Subject: [PATCH 137/138] TLSSocketWrapper: Add function to append a +Subject: [PATCH 137/157] TLSSocketWrapper: Add function to append a certificate to an existing ca chain --- @@ -83,5 +83,5 @@ index 58f47b54c8..6665f64cc0 100644 { #if !defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_FS_IO) -- -2.25.1 +2.36.0 diff --git a/patches/0138-Initialize-sss_object-and-sss_keystore-to-nullptr.patch b/patches/0138-Initialize-sss_object-and-sss_keystore-to-nullptr.patch index 9dadbaa3d..0492b0cc5 100644 --- a/patches/0138-Initialize-sss_object-and-sss_keystore-to-nullptr.patch +++ b/patches/0138-Initialize-sss_object-and-sss_keystore-to-nullptr.patch @@ -1,7 +1,7 @@ From 93fe1076c69864d512fff20472dc9e3bf1793327 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 2 Mar 2022 11:31:01 +0100 -Subject: [PATCH 138/138] Initialize sss_object and sss_keystore to nullptr +Subject: [PATCH 138/157] Initialize sss_object and sss_keystore to nullptr --- connectivity/netsocket/include/netsocket/TLSSocketWrapper.h | 4 ++-- @@ -23,5 +23,5 @@ index 13365428fd..2dc3b4b000 100644 DRBG_CTX _drbg; -- -2.25.1 +2.36.0 diff --git a/patches/0139-RP2040-fix-high-speed-uart-by-enabling-FIFO-timeout.patch b/patches/0139-RP2040-fix-high-speed-uart-by-enabling-FIFO-timeout.patch index 653d25c25..1e6981c6d 100644 --- a/patches/0139-RP2040-fix-high-speed-uart-by-enabling-FIFO-timeout.patch +++ b/patches/0139-RP2040-fix-high-speed-uart-by-enabling-FIFO-timeout.patch @@ -1,7 +1,8 @@ -From 9f9ee8b95b2a8c0d89dd8254cab720c319828aa4 Mon Sep 17 00:00:00 2001 +From 9ab6d5b194ad85cdf94af3f503a31fc259aa5ae5 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 7 Feb 2022 17:52:46 +0100 -Subject: [PATCH] RP2040: fix high speed uart by enabling FIFO + timeout +Subject: [PATCH 139/157] RP2040: fix high speed uart by enabling FIFO + + timeout --- .../pico-sdk/rp2_common/hardware_uart/include/hardware/uart.h | 3 ++- @@ -45,5 +46,5 @@ index 8d95f6c2a3..a6f01a6063 100644 void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) -- -2.25.1 +2.36.0 diff --git a/patches/0140-Fix-Ethernet-pins-configuration.patch b/patches/0140-Fix-Ethernet-pins-configuration.patch index e818b10e8..b3077ecf1 100644 --- a/patches/0140-Fix-Ethernet-pins-configuration.patch +++ b/patches/0140-Fix-Ethernet-pins-configuration.patch @@ -1,7 +1,7 @@ From 88e1023c6fb7197e529d3054b2dcb4bbdee8b73f Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Mon, 28 Mar 2022 11:02:58 +0200 -Subject: [PATCH 140/150] Fix Ethernet pins configuration +Subject: [PATCH 140/157] Fix Ethernet pins configuration --- .../TARGET_PORTENTA_H7/stm32h7_eth_init.c | 32 ++++++++++++++++--- @@ -65,5 +65,5 @@ index 3fbac0555f..643fc5acd3 100644 GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; -- -2.25.1 +2.36.0 diff --git a/patches/0141-COMPONENT_SE050-Add-defines-to-exclude-DES-functions.patch b/patches/0141-COMPONENT_SE050-Add-defines-to-exclude-DES-functions.patch index 42aee445a..aec1728be 100644 --- a/patches/0141-COMPONENT_SE050-Add-defines-to-exclude-DES-functions.patch +++ b/patches/0141-COMPONENT_SE050-Add-defines-to-exclude-DES-functions.patch @@ -1,7 +1,7 @@ From 15dbc037d15641b09507b65deb9dba43a3c193f3 Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 17 Mar 2022 10:05:32 +0100 -Subject: [PATCH 141/150] COMPONENT_SE050: Add defines to exclude DES functions +Subject: [PATCH 141/157] COMPONENT_SE050: Add defines to exclude DES functions if MBEDTLS_DES_C module is not enabled --- @@ -38,5 +38,5 @@ index 614e8f0abb..20cd12d46c 100644 case kAlgorithm_SSS_DES_ECB: case kAlgorithm_SSS_DES3_CBC: -- -2.25.1 +2.36.0 diff --git a/patches/0142-Add-build-options-to-allow-to-disable-device-functio.patch b/patches/0142-Add-build-options-to-allow-to-disable-device-functio.patch index 95ab470b5..cd8febe9f 100644 --- a/patches/0142-Add-build-options-to-allow-to-disable-device-functio.patch +++ b/patches/0142-Add-build-options-to-allow-to-disable-device-functio.patch @@ -1,7 +1,7 @@ From 006f588decaf7e097f6b0cb67460a97b2643cb04 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 24 Aug 2021 17:02:47 +0200 -Subject: [PATCH 142/150] Add build options to allow to disable device +Subject: [PATCH 142/157] Add build options to allow to disable device functionalities i.e DEVICE_ANALOGOUT --- @@ -75,5 +75,5 @@ index 6f17147886..8415007dd9 100644 struct flash_s { /* nothing to be stored for now */ -- -2.25.1 +2.36.0 diff --git a/patches/0143-MCUboot-PORTENTA_H7_M7-Change-ST-HAL-configuration-r.patch b/patches/0143-MCUboot-PORTENTA_H7_M7-Change-ST-HAL-configuration-r.patch index 25a41f7fe..3b7f7b8c4 100644 --- a/patches/0143-MCUboot-PORTENTA_H7_M7-Change-ST-HAL-configuration-r.patch +++ b/patches/0143-MCUboot-PORTENTA_H7_M7-Change-ST-HAL-configuration-r.patch @@ -1,7 +1,7 @@ From 4b16b9a73aad76923101b705c35becf67a2fa447 Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 24 Aug 2021 17:03:39 +0200 -Subject: [PATCH 143/150] MCUboot:PORTENTA_H7_M7:Change ST HAL configuration +Subject: [PATCH 143/157] MCUboot:PORTENTA_H7_M7:Change ST HAL configuration removing unnecessary modules --- @@ -98,5 +98,5 @@ index afcfc24210..524bb2dd52 100644 /* ########################## Oscillator Values adaptation ####################*/ /** -- -2.25.1 +2.36.0 diff --git a/patches/0144-Add-build-option-to-allow-FATFS-customization-remove.patch b/patches/0144-Add-build-option-to-allow-FATFS-customization-remove.patch index ecb444cb5..8e1b202f0 100644 --- a/patches/0144-Add-build-option-to-allow-FATFS-customization-remove.patch +++ b/patches/0144-Add-build-option-to-allow-FATFS-customization-remove.patch @@ -1,7 +1,7 @@ From e15600c6af3c5d042af46864ebb19032d8a997ad Mon Sep 17 00:00:00 2001 From: pennam Date: Tue, 24 Aug 2021 17:04:35 +0200 -Subject: [PATCH 144/150] Add build option to allow FATFS customization: remove +Subject: [PATCH 144/157] Add build option to allow FATFS customization: remove mkfs --- @@ -67,5 +67,5 @@ index 3006a24530..ee0db9bde1 100644 int FATFileSystem::remove(const char *path) { -- -2.25.1 +2.36.0 diff --git a/patches/0145-Optimize-HAL_RCCEx_PeriphCLKConfig-using-only-HAL-en.patch b/patches/0145-Optimize-HAL_RCCEx_PeriphCLKConfig-using-only-HAL-en.patch index d52a55c1c..e505363bd 100644 --- a/patches/0145-Optimize-HAL_RCCEx_PeriphCLKConfig-using-only-HAL-en.patch +++ b/patches/0145-Optimize-HAL_RCCEx_PeriphCLKConfig-using-only-HAL-en.patch @@ -1,7 +1,7 @@ From c9ea188ab6fedefa03443a6cb336e70e809a34da Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 26 Aug 2021 15:40:48 +0200 -Subject: [PATCH 145/150] Optimize HAL_RCCEx_PeriphCLKConfig using only HAL +Subject: [PATCH 145/157] Optimize HAL_RCCEx_PeriphCLKConfig using only HAL enabled modules --- @@ -221,5 +221,5 @@ index afde46b3b8..c349750263 100644 if (status == HAL_OK) { -- -2.25.1 +2.36.0 diff --git a/patches/0146-MCUboot-PORTENTA_H7_M7-Remove-HSI-CSI-LSI-HSI48-supp.patch b/patches/0146-MCUboot-PORTENTA_H7_M7-Remove-HSI-CSI-LSI-HSI48-supp.patch index ea7022a2d..9c9444344 100644 --- a/patches/0146-MCUboot-PORTENTA_H7_M7-Remove-HSI-CSI-LSI-HSI48-supp.patch +++ b/patches/0146-MCUboot-PORTENTA_H7_M7-Remove-HSI-CSI-LSI-HSI48-supp.patch @@ -1,7 +1,7 @@ From 6df4a3d8af6d4b954bda1635006ea62ec9df0dd7 Mon Sep 17 00:00:00 2001 From: pennam Date: Thu, 26 Aug 2021 15:42:18 +0200 -Subject: [PATCH 146/150] MCUboot:PORTENTA_H7_M7:Remove HSI,CSI,LSI,HSI48 +Subject: [PATCH 146/157] MCUboot:PORTENTA_H7_M7:Remove HSI,CSI,LSI,HSI48 support from HAL_RCC_OscConfig --- @@ -29,5 +29,5 @@ index b5e93c78b9..eb5485dc7d 100644 if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) { -- -2.25.1 +2.36.0 diff --git a/patches/0147-MCUBoot-PORTENTA_H7_M7-Add-linker-sections-to-store-.patch b/patches/0147-MCUBoot-PORTENTA_H7_M7-Add-linker-sections-to-store-.patch index f96e2f248..5b91d24b7 100644 --- a/patches/0147-MCUBoot-PORTENTA_H7_M7-Add-linker-sections-to-store-.patch +++ b/patches/0147-MCUBoot-PORTENTA_H7_M7-Add-linker-sections-to-store-.patch @@ -1,7 +1,7 @@ From 669637a00509686bfe313bc2cdb3f597314d5510 Mon Sep 17 00:00:00 2001 From: pennam Date: Wed, 4 Aug 2021 09:33:11 +0200 -Subject: [PATCH 147/150] MCUBoot:PORTENTA_H7_M7:Add linker sections to store +Subject: [PATCH 147/157] MCUBoot:PORTENTA_H7_M7:Add linker sections to store boot configuration and gain space --- @@ -61,5 +61,5 @@ index 68280f4757..41c72141ed 100644 KEEP(*(.eh_frame*)) -- -2.25.1 +2.36.0 diff --git a/patches/0148-Add-build-option-DEVICE_SERIAL_FC-preventing-build-i.patch b/patches/0148-Add-build-option-DEVICE_SERIAL_FC-preventing-build-i.patch index bbc22b642..3d34cbd3f 100644 --- a/patches/0148-Add-build-option-DEVICE_SERIAL_FC-preventing-build-i.patch +++ b/patches/0148-Add-build-option-DEVICE_SERIAL_FC-preventing-build-i.patch @@ -1,7 +1,7 @@ From f9a49286a17f8394ff0071fb8cc2cd5c0de9cf68 Mon Sep 17 00:00:00 2001 From: pennam Date: Mon, 14 Mar 2022 09:39:31 +0100 -Subject: [PATCH 148/150] Add build option DEVICE_SERIAL_FC preventing build if +Subject: [PATCH 148/157] Add build option DEVICE_SERIAL_FC preventing build if flow control is disabled --- @@ -37,5 +37,5 @@ index 7c21d12e9c..33a049c844 100644 return ret; } -- -2.25.1 +2.36.0 diff --git a/patches/0149-MCUboot-PORTENTA_H7_M7-Remove-FATFS-mkdir-and-rename.patch b/patches/0149-MCUboot-PORTENTA_H7_M7-Remove-FATFS-mkdir-and-rename.patch index 74ea331c3..85f2af945 100644 --- a/patches/0149-MCUboot-PORTENTA_H7_M7-Remove-FATFS-mkdir-and-rename.patch +++ b/patches/0149-MCUboot-PORTENTA_H7_M7-Remove-FATFS-mkdir-and-rename.patch @@ -1,7 +1,7 @@ From f52fb039b673a3c137340680e42a14246444e7b9 Mon Sep 17 00:00:00 2001 From: pennam Date: Fri, 18 Mar 2022 14:57:45 +0100 -Subject: [PATCH 149/150] MCUboot:PORTENTA_H7_M7:Remove FATFS mkdir and rename +Subject: [PATCH 149/157] MCUboot:PORTENTA_H7_M7:Remove FATFS mkdir and rename --- storage/filesystem/fat/include/fat/FATFileSystem.h | 4 ++++ @@ -65,5 +65,5 @@ index ee0db9bde1..62bb099804 100644 int FATFileSystem::stat(const char *path, struct stat *st) { -- -2.25.1 +2.36.0 diff --git a/patches/0150-Fix-Only-return-true-for-uart_is_writeable-if-the-TX.patch b/patches/0150-Fix-Only-return-true-for-uart_is_writeable-if-the-TX.patch index 546300a66..890c3fbb6 100644 --- a/patches/0150-Fix-Only-return-true-for-uart_is_writeable-if-the-TX.patch +++ b/patches/0150-Fix-Only-return-true-for-uart_is_writeable-if-the-TX.patch @@ -1,7 +1,7 @@ From f0b1b6c7375568f3256d09287956dc0649b46b20 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Tue, 29 Mar 2022 13:01:34 +0200 -Subject: [PATCH 150/150] Fix: Only return true for 'uart_is_writeable' if the +Subject: [PATCH 150/157] Fix: Only return true for 'uart_is_writeable' if the TX FIFO is empty. This allows the Arduino_Braccio_plusplus library to work again, since it depends on precisely trimmed timeouts to change data direction on the RS485 lines. @@ -45,5 +45,5 @@ index a6f01a6063..4b2398b397 100644 \ No newline at end of file +#endif -- -2.25.1 +2.36.0 diff --git a/patches/0151-MCUboot-PORTENTA_H7_M7-Remove-LittleFS-format-reform.patch b/patches/0151-MCUboot-PORTENTA_H7_M7-Remove-LittleFS-format-reform.patch new file mode 100644 index 000000000..05afa54d7 --- /dev/null +++ b/patches/0151-MCUboot-PORTENTA_H7_M7-Remove-LittleFS-format-reform.patch @@ -0,0 +1,102 @@ +From 5c6217a65136ee255e5ba67bc86dd0909b25cc78 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Mon, 4 Apr 2022 10:12:28 +0200 +Subject: [PATCH 151/157] MCUboot:PORTENTA_H7_M7:Remove LittleFS format, + reformat, rename + +--- + .../filesystem/littlefs/include/littlefs/LittleFileSystem.h | 6 ++++++ + storage/filesystem/littlefs/source/LittleFileSystem.cpp | 4 ++++ + 2 files changed, 10 insertions(+) + +diff --git a/storage/filesystem/littlefs/include/littlefs/LittleFileSystem.h b/storage/filesystem/littlefs/include/littlefs/LittleFileSystem.h +index c1e3a3c299..0051f18da6 100644 +--- a/storage/filesystem/littlefs/include/littlefs/LittleFileSystem.h ++++ b/storage/filesystem/littlefs/include/littlefs/LittleFileSystem.h +@@ -65,6 +65,7 @@ public: + + virtual ~LittleFileSystem(); + ++#if !defined(TARGET_PORTENTA_H7_M7) || !defined(MCUBOOT_BOOTLOADER_BUILD) + /** Format a block device with the LittleFileSystem. + * + * The block device to format should be mounted when this function is called. +@@ -94,6 +95,7 @@ public: + lfs_size_t block_size = MBED_LFS_BLOCK_SIZE, + lfs_size_t lookahead = MBED_LFS_LOOKAHEAD); + ++#endif + /** Mount a file system to a block device. + * + * @param bd Block device to mount to. +@@ -107,6 +109,7 @@ public: + */ + virtual int unmount(); + ++#if !defined(TARGET_PORTENTA_H7_M7) || !defined(MCUBOOT_BOOTLOADER_BUILD) + /** Reformat a file system. Results in an empty and mounted file system. + * + * @param bd +@@ -118,6 +121,7 @@ public: + * @return 0 on success, negative error code on failure + */ + virtual int reformat(mbed::BlockDevice *bd); ++#endif + + /** Remove a file from the file system. + * +@@ -126,6 +130,7 @@ public: + */ + virtual int remove(const char *path); + ++#if !defined(TARGET_PORTENTA_H7_M7) || !defined(MCUBOOT_BOOTLOADER_BUILD) + /** Rename a file in the file system. + * + * @param path The name of the file to rename. +@@ -133,6 +138,7 @@ public: + * @return 0 on success, negative error code on failure + */ + virtual int rename(const char *path, const char *newpath); ++#endif + + /** Store information about the file in a stat structure + * +diff --git a/storage/filesystem/littlefs/source/LittleFileSystem.cpp b/storage/filesystem/littlefs/source/LittleFileSystem.cpp +index 752fa99aa5..3b808cf017 100644 +--- a/storage/filesystem/littlefs/source/LittleFileSystem.cpp ++++ b/storage/filesystem/littlefs/source/LittleFileSystem.cpp +@@ -241,6 +241,7 @@ int LittleFileSystem::unmount() + return res; + } + ++#if !defined(TARGET_PORTENTA_H7_M7) || !defined(MCUBOOT_BOOTLOADER_BUILD) + int LittleFileSystem::format(BlockDevice *bd, + lfs_size_t read_size, lfs_size_t prog_size, + lfs_size_t block_size, lfs_size_t lookahead) +@@ -338,6 +339,7 @@ int LittleFileSystem::reformat(BlockDevice *bd) + _mutex.unlock(); + return 0; + } ++#endif + + int LittleFileSystem::remove(const char *filename) + { +@@ -349,6 +351,7 @@ int LittleFileSystem::remove(const char *filename) + return lfs_toerror(err); + } + ++#if !defined(TARGET_PORTENTA_H7_M7) || !defined(MCUBOOT_BOOTLOADER_BUILD) + int LittleFileSystem::rename(const char *oldname, const char *newname) + { + _mutex.lock(); +@@ -358,6 +361,7 @@ int LittleFileSystem::rename(const char *oldname, const char *newname) + _mutex.unlock(); + return lfs_toerror(err); + } ++#endif + + int LittleFileSystem::mkdir(const char *name, mode_t mode) + { +-- +2.36.0 + diff --git a/patches/0152-MCUboot-PORTENTA_H7_Move-libc-rodata-after-bootloade.patch b/patches/0152-MCUboot-PORTENTA_H7_Move-libc-rodata-after-bootloade.patch new file mode 100644 index 000000000..d1c4b2664 --- /dev/null +++ b/patches/0152-MCUboot-PORTENTA_H7_Move-libc-rodata-after-bootloade.patch @@ -0,0 +1,34 @@ +From d679e96b0176e20371244583a3d03ecea4d041c7 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Tue, 5 Apr 2022 16:43:07 +0200 +Subject: [PATCH 152/157] MCUboot:PORTENTA_H7_Move libc rodata after bootloader + data to gain flash space + +--- + .../TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_STM32H747xI_CM7/TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_STM32H747xI_CM7/TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld +index 41c72141ed..0a54d17c76 100644 +--- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_STM32H747xI_CM7/TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld ++++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_STM32H747xI_CM7/TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld +@@ -114,7 +114,6 @@ SECTIONS + *(.dtors) + + #if defined(MCUBOOT_BOOTLOADER_BUILD) && defined(TARGET_PORTENTA_H7_M7) +- *lib*.o(.rodata*) + *ltrans0*.o(.rodata*) + *ltrans1*.o(.rodata*) + *ltrans2*.o(.rodata*) +@@ -123,6 +122,8 @@ SECTIONS + + . = ABSOLUTE(0x0801F000); + KEEP(*(.bootloader_version)) ++ ++ *lib*.o(.rodata*) + #endif + + *(.rodata*) +-- +2.36.0 + diff --git a/patches/0153-NICLA_VISION-Add-device-name-in-target.json.patch b/patches/0153-NICLA_VISION-Add-device-name-in-target.json.patch new file mode 100644 index 000000000..a4c06ed6d --- /dev/null +++ b/patches/0153-NICLA_VISION-Add-device-name-in-target.json.patch @@ -0,0 +1,26 @@ +From 5f65d73a8d028e4f1c0d8cc74b686292a9a8ecfb Mon Sep 17 00:00:00 2001 +From: pennam +Date: Wed, 6 Apr 2022 13:55:55 +0200 +Subject: [PATCH 153/157] NICLA_VISION:Add device name in target.json + +--- + targets/targets.json | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/targets/targets.json b/targets/targets.json +index e0e4a8b6d8..2afaaf214f 100644 +--- a/targets/targets.json ++++ b/targets/targets.json +@@ -3544,7 +3544,8 @@ + ], + "features": [ + "BLE" +- ] ++ ], ++ "device_name": "STM32H747XIHx" + }, + "PORTENTA_H7_M4": { + "inherits": ["PORTENTA_H7"], +-- +2.36.0 + diff --git a/patches/0154-MCUboot-NICLA_VISION-linker-file-Reserve-space-for-k.patch b/patches/0154-MCUboot-NICLA_VISION-linker-file-Reserve-space-for-k.patch new file mode 100644 index 000000000..b5a92ad55 --- /dev/null +++ b/patches/0154-MCUboot-NICLA_VISION-linker-file-Reserve-space-for-k.patch @@ -0,0 +1,44 @@ +From f61549af517c2d7f953ed03be7a01f229be4dc36 Mon Sep 17 00:00:00 2001 +From: pennam +Date: Wed, 6 Apr 2022 13:56:50 +0200 +Subject: [PATCH 154/157] MCUboot:NICLA_VISION: linker file:Reserve space for + keys and bootloader id + +--- + .../TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_STM32H747xI_CM7/TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_STM32H747xI_CM7/TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld +index 0a54d17c76..3e84731230 100644 +--- a/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_STM32H747xI_CM7/TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld ++++ b/targets/TARGET_STM/TARGET_STM32H7/TARGET_STM32H747xI/TARGET_STM32H747xI_CM7/TOOLCHAIN_GCC_ARM/STM32H747xI_CM7.ld +@@ -46,7 +46,7 @@ MEMORY + } + + +-#if defined(MCUBOOT_BOOTLOADER_BUILD) && defined(TARGET_PORTENTA_H7_M7) ++#if defined(MCUBOOT_BOOTLOADER_BUILD) && ( defined(TARGET_PORTENTA_H7_M7) || defined(TARGET_NICLA_VISION)) + _ConfigStart = 0x0802F000; + _IdentificationStart = 0x080002F0; + _EncryptKeyStart = 0x08000300; +@@ -88,7 +88,7 @@ SECTIONS + .text : + { + KEEP(*(.isr_vector)) +-#if defined(MCUBOOT_BOOTLOADER_BUILD) && defined(TARGET_PORTENTA_H7_M7) ++#if defined(MCUBOOT_BOOTLOADER_BUILD) && ( defined(TARGET_PORTENTA_H7_M7) || defined(TARGET_NICLA_VISION)) + . = ABSOLUTE(0x080002F0); + KEEP(*(.bootloader_identification)) + KEEP(*(.signing_key)) +@@ -113,7 +113,7 @@ SECTIONS + *(SORT(.dtors.*)) + *(.dtors) + +-#if defined(MCUBOOT_BOOTLOADER_BUILD) && defined(TARGET_PORTENTA_H7_M7) ++#if defined(MCUBOOT_BOOTLOADER_BUILD) && ( defined(TARGET_PORTENTA_H7_M7) || defined(TARGET_NICLA_VISION)) + *ltrans0*.o(.rodata*) + *ltrans1*.o(.rodata*) + *ltrans2*.o(.rodata*) +-- +2.36.0 + diff --git a/patches/0155-ST-CAN-allow-sending-CAN-remote-frames.patch b/patches/0155-ST-CAN-allow-sending-CAN-remote-frames.patch new file mode 100644 index 000000000..a8b872ad2 --- /dev/null +++ b/patches/0155-ST-CAN-allow-sending-CAN-remote-frames.patch @@ -0,0 +1,29 @@ +From e8e2086a58f7a824c12f9f8c1a04c7ae4e05200f Mon Sep 17 00:00:00 2001 +From: Martino Facchin +Date: Tue, 10 May 2022 18:07:10 +0200 +Subject: [PATCH 155/157] ST: CAN: allow sending CAN remote frames + +--- + targets/TARGET_STM/can_api.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/targets/TARGET_STM/can_api.c b/targets/TARGET_STM/can_api.c +index ad00e39a2b..a5715f2b0d 100644 +--- a/targets/TARGET_STM/can_api.c ++++ b/targets/TARGET_STM/can_api.c +@@ -408,7 +408,11 @@ int can_write(can_t *obj, CAN_Message msg, int cc) + TxHeader.IdType = FDCAN_EXTENDED_ID; + } + +- TxHeader.TxFrameType = FDCAN_DATA_FRAME; ++ if (msg.type == CANData) { ++ TxHeader.TxFrameType = FDCAN_DATA_FRAME; ++ } else { ++ TxHeader.TxFrameType = FDCAN_REMOTE_FRAME; ++ } + TxHeader.DataLength = msg.len << 16; + TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE; + TxHeader.BitRateSwitch = FDCAN_BRS_OFF; +-- +2.36.0 + diff --git a/patches/0100-Add-Portenta-X8-target.patch b/patches/0156-Add-Portenta-X8-target.patch similarity index 99% rename from patches/0100-Add-Portenta-X8-target.patch rename to patches/0156-Add-Portenta-X8-target.patch index ceb327d86..3ce5e8814 100644 --- a/patches/0100-Add-Portenta-X8-target.patch +++ b/patches/0156-Add-Portenta-X8-target.patch @@ -1,7 +1,7 @@ -From 7ec48c32338a6aba090a90aafc45602d8c02e050 Mon Sep 17 00:00:00 2001 +From 23b27170e02699482e86d7d104a743ed385c7dfa Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 18 Jan 2022 16:53:27 +0100 -Subject: [PATCH 100/101] Add Portenta X8 target +Subject: [PATCH 156/157] Add Portenta X8 target --- .../TARGET_PORTENTA_X8/CMakeLists.txt | 16 + @@ -999,10 +999,10 @@ index 0000000000..1cce05b2e2 + +#endif diff --git a/targets/targets.json b/targets/targets.json -index ffd3eb1efd..3dc63e01a9 100644 +index 2afaaf214f..415ef47f7f 100644 --- a/targets/targets.json +++ b/targets/targets.json -@@ -3509,6 +3509,37 @@ +@@ -3565,6 +3565,37 @@ "MPU" ] }, @@ -1040,7 +1040,7 @@ index ffd3eb1efd..3dc63e01a9 100644 "MCU_STM32H750xB": { "inherits": [ "MCU_STM32H7" -@@ -3527,7 +3558,8 @@ +@@ -3583,7 +3614,8 @@ ], "overrides": { "system_power_supply": "PWR_LDO_SUPPLY" @@ -1051,5 +1051,5 @@ index ffd3eb1efd..3dc63e01a9 100644 "MCU_STM32H7A3xIQ": { "inherits": [ -- -2.34.1 +2.36.0 diff --git a/patches/0101-PortentaX8-remove-MPU-support.patch b/patches/0157-PortentaX8-remove-MPU-support.patch similarity index 77% rename from patches/0101-PortentaX8-remove-MPU-support.patch rename to patches/0157-PortentaX8-remove-MPU-support.patch index f3f6bd51a..ecc82ca2e 100644 --- a/patches/0101-PortentaX8-remove-MPU-support.patch +++ b/patches/0157-PortentaX8-remove-MPU-support.patch @@ -1,17 +1,17 @@ -From 90b7c9bc390ea5caeda97d0443d8a488233db1b3 Mon Sep 17 00:00:00 2001 +From 2e10d655f2b90972531bda55a89d177babcfda8d Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 25 Jan 2022 17:17:58 +0100 -Subject: [PATCH 101/101] PortentaX8: remove MPU support +Subject: [PATCH 157/157] PortentaX8: remove MPU support --- targets/targets.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/targets/targets.json b/targets/targets.json -index 3dc63e01a9..0c4657d626 100644 +index 415ef47f7f..677b43ed83 100644 --- a/targets/targets.json +++ b/targets/targets.json -@@ -3529,7 +3529,12 @@ +@@ -3585,7 +3585,12 @@ "macros_add": [ "MBEDTLS_FS_IO", "MBEDTLS_SHA1_C", @@ -26,5 +26,5 @@ index 3dc63e01a9..0c4657d626 100644 "detect_code": ["0813"], "overrides": { -- -2.34.1 +2.36.0 From c0ae0943fa8f177df7a1ba950e7904b237791159 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Tue, 10 May 2022 18:18:22 +0200 Subject: [PATCH 43/50] Add PortentaX8 to full package distribution --- full.variables | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/full.variables b/full.variables index 36dbcc332..58b6f0a77 100644 --- a/full.variables +++ b/full.variables @@ -1,5 +1,5 @@ export FLAVOUR="" -export VARIANTS=("NANO_RP2040_CONNECT ARDUINO_NANO33BLE RASPBERRY_PI_PICO PORTENTA_H7_M7 PORTENTA_H7_M4 EDGE_CONTROL NICLA NICLA_VISION") -export FQBNS=("edge_control nanorp2040connect nano33ble pico envie_m7 envie_m4 nicla_sense nicla_vision") +export VARIANTS=("NANO_RP2040_CONNECT ARDUINO_NANO33BLE RASPBERRY_PI_PICO PORTENTA_H7_M7 PORTENTA_H7_M4 EDGE_CONTROL NICLA NICLA_VISION PORTENTA_X8") +export FQBNS=("edge_control nanorp2040connect nano33ble pico envie_m7 envie_m4 nicla_sense nicla_vision portenta_x8") export LIBRARIES=("") export BOOTLOADERS=("nano33ble PORTENTA_H7 EDGE_CONTROL NICLA NICLA_VISION") From 20f4ee841ad5f3d1a3cc0422fbd9a7ea7b192cb8 Mon Sep 17 00:00:00 2001 From: Giampaolo Mancini Date: Tue, 10 May 2022 18:43:42 +0200 Subject: [PATCH 44/50] Enable WDT on Nano 33 Ble and Nicla Sense --- variants/ARDUINO_NANO33BLE/conf/mbed_app.json | 5 +++-- variants/NICLA/conf/mbed_app.json | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/variants/ARDUINO_NANO33BLE/conf/mbed_app.json b/variants/ARDUINO_NANO33BLE/conf/mbed_app.json index ddbdf49d1..279ca8808 100644 --- a/variants/ARDUINO_NANO33BLE/conf/mbed_app.json +++ b/variants/ARDUINO_NANO33BLE/conf/mbed_app.json @@ -1,6 +1,7 @@ { "macros": [ - "NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS=8" + "NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS=8", + "NRFX_WDT_ENABLED=1" ], "target_overrides": { "*": { @@ -15,4 +16,4 @@ "target.mbed_app_start": "0x10000" } } -} \ No newline at end of file +} diff --git a/variants/NICLA/conf/mbed_app.json b/variants/NICLA/conf/mbed_app.json index aace3cc95..319560887 100644 --- a/variants/NICLA/conf/mbed_app.json +++ b/variants/NICLA/conf/mbed_app.json @@ -3,7 +3,8 @@ "MBED_HEAP_STATS_ENABLED=1", "MBED_STACK_STATS_ENABLED=1", "MBED_MEM_TRACING_ENABLED=1", - "NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS=8" + "NRFX_GPIOTE_CONFIG_NUM_OF_LOW_POWER_EVENTS=8", + "NRFX_WDT_ENABLED=1" ], "target_overrides": { "*": { @@ -38,4 +39,4 @@ "target.macros_remove": ["CONFIG_GPIO_AS_PINRESET"] } } -} \ No newline at end of file +} From e89f02f719b4cd41da8eb60d7987e93e245dc789 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 11 May 2022 09:19:18 +0200 Subject: [PATCH 45/50] Add watchdog patches for nRF52 boards --- ...nable-Watchdog-for-ARDUINO_NANO33BLE.patch | 24 ++++++++++ patches/0159-Enable-Watchdog-for-NICLA.patch | 48 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 patches/0158-Enable-Watchdog-for-ARDUINO_NANO33BLE.patch create mode 100644 patches/0159-Enable-Watchdog-for-NICLA.patch diff --git a/patches/0158-Enable-Watchdog-for-ARDUINO_NANO33BLE.patch b/patches/0158-Enable-Watchdog-for-ARDUINO_NANO33BLE.patch new file mode 100644 index 000000000..74e184046 --- /dev/null +++ b/patches/0158-Enable-Watchdog-for-ARDUINO_NANO33BLE.patch @@ -0,0 +1,24 @@ +From 2230dbfabcbdb1d6fc861a2475937cf407b184a9 Mon Sep 17 00:00:00 2001 +From: Giampaolo Mancini +Date: Fri, 29 Apr 2022 17:12:22 +0200 +Subject: [PATCH 158/159] Enable Watchdog for ARDUINO_NANO33BLE + +--- + targets/targets.json | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/targets/targets.json b/targets/targets.json +index 677b43ed83..45a6e1f001 100644 +--- a/targets/targets.json ++++ b/targets/targets.json +@@ -6937,6 +6937,7 @@ + "components_remove": [ + "QSPIF" + ], ++ "device_has_add": ["WATCHDOG"], + "device_has_remove": [ + "QSPI", + "ITM" +-- +2.36.0 + diff --git a/patches/0159-Enable-Watchdog-for-NICLA.patch b/patches/0159-Enable-Watchdog-for-NICLA.patch new file mode 100644 index 000000000..e70ccfcbc --- /dev/null +++ b/patches/0159-Enable-Watchdog-for-NICLA.patch @@ -0,0 +1,48 @@ +From 6959b7db85d808b747949b528289eb9220eae0d5 Mon Sep 17 00:00:00 2001 +From: Giampaolo Mancini +Date: Fri, 29 Apr 2022 17:13:01 +0200 +Subject: [PATCH 159/159] Enable Watchdog for NICLA + +--- + .../TARGET_MCU_NRF52832/config/sdk_config.h | 12 ++++++++++++ + targets/targets.json | 1 + + 2 files changed, 13 insertions(+) + +diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/config/sdk_config.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/config/sdk_config.h +index b1112d715a..dea0276ddb 100644 +--- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/config/sdk_config.h ++++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52832/config/sdk_config.h +@@ -4487,6 +4487,18 @@ + #define NRFX_WDT_CONFIG_LOG_LEVEL 3 + #endif + ++ ++// NRFX_WDT_CONFIG_NO_IRQ - Remove WDT IRQ handling from WDT driver. ++//========================================================== ++ ++// <0=> Include WDT IRQ handling ++// <1=> Remove WDT IRQ handling ++ ++#ifndef NRFX_WDT_CONFIG_NO_IRQ ++#define NRFX_WDT_CONFIG_NO_IRQ 1 ++#endif ++ ++ + // NRFX_WDT_CONFIG_INFO_COLOR - ANSI escape code prefix. + + // <0=> Default +diff --git a/targets/targets.json b/targets/targets.json +index 45a6e1f001..a42b64a071 100644 +--- a/targets/targets.json ++++ b/targets/targets.json +@@ -6763,6 +6763,7 @@ + "components_add": [ + "FLASHIAP" + ], ++ "device_has_add": ["WATCHDOG"], + "release_versions": ["5"], + "device_name": "nRF52832_xxAA", + "macros_add": [ +-- +2.36.0 + From aa688fb5e5df5891b520b428dadf9132dd8649a7 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Fri, 1 Apr 2022 18:16:17 +0200 Subject: [PATCH 46/50] Fix pulseIn() bug when pin state is HIGH --- cores/arduino/wiring_pulse.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cores/arduino/wiring_pulse.cpp b/cores/arduino/wiring_pulse.cpp index acd080841..4a2cb48d6 100644 --- a/cores/arduino/wiring_pulse.cpp +++ b/cores/arduino/wiring_pulse.cpp @@ -243,21 +243,23 @@ unsigned long pulseIn(PinName pin, PinStatus state, unsigned long timeout) unsigned long startMicros = micros(); + uint32_t target = state ? mask : 0; + // wait for any previous pulse to end - while ((*reg_in & mask) == state) { + while ((*reg_in & mask) == target) { if (micros() - startMicros > timeout) return 0; } // wait for the pulse to start - while ((*reg_in & mask) != state) { + while ((*reg_in & mask) != target) { if (micros() - startMicros > timeout) return 0; } unsigned long start = micros(); // wait for the pulse to stop - while ((*reg_in & mask) == state) { + while ((*reg_in & mask) == target) { if (micros() - startMicros > timeout) return 0; } From d21e3f2a6aaaea770c1e548d151becb1be21fdb1 Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Thu, 21 Apr 2022 18:10:28 +0200 Subject: [PATCH 47/50] attachInterrupt(): check that the irq was not already detached --- cores/arduino/Interrupts.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cores/arduino/Interrupts.cpp b/cores/arduino/Interrupts.cpp index a3b6e1e11..e9003ce22 100644 --- a/cores/arduino/Interrupts.cpp +++ b/cores/arduino/Interrupts.cpp @@ -29,6 +29,7 @@ void detachInterrupt(PinName interruptNum) { void detachInterrupt(pin_size_t interruptNum) { if ((interruptNum < PINS_COUNT) && (digitalPinToInterruptObj(interruptNum) != NULL)) { delete digitalPinToInterruptObj(interruptNum); + digitalPinToInterruptObj(interruptNum) = nullptr; } } @@ -57,7 +58,9 @@ void attachInterruptParam(pin_size_t interruptNum, voidFuncPtrParam func, PinSta if (interruptNum >= PINS_COUNT) { return; } - detachInterrupt(interruptNum); + if (digitalPinToInterruptObj(interruptNum) != nullptr) { + detachInterrupt(interruptNum); + } mbed::InterruptIn* irq = new mbed::InterruptIn(digitalPinToPinName(interruptNum)); if (mode == CHANGE) { irq->rise(mbed::callback(func, param)); From 165a8ee29b1c1c3d391526d2fd5fa0bb5fcb8e1c Mon Sep 17 00:00:00 2001 From: giulcioffi Date: Tue, 26 Apr 2022 09:46:35 +0200 Subject: [PATCH 48/50] Add ArduinoTimer::reset() --- cores/arduino/timer.cpp | 4 ++++ cores/arduino/timer.h | 1 + 2 files changed, 5 insertions(+) diff --git a/cores/arduino/timer.cpp b/cores/arduino/timer.cpp index 6a58694f8..4d6b60474 100644 --- a/cores/arduino/timer.cpp +++ b/cores/arduino/timer.cpp @@ -30,4 +30,8 @@ void ArduinoTimer::start() { void ArduinoTimer::stop() { timer->obj->stop(); +} + +void ArduinoTimer::reset() { + timer->obj->reset(); } \ No newline at end of file diff --git a/cores/arduino/timer.h b/cores/arduino/timer.h index 0b6a436be..9f7dac29f 100644 --- a/cores/arduino/timer.h +++ b/cores/arduino/timer.h @@ -18,6 +18,7 @@ namespace arduino { ~ArduinoTimer(); void start(); void stop(); + void reset(); private: mbed_timer* timer = NULL; From b5649ad5639201940397086dbdc727081a552ecf Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 11 May 2022 09:54:44 +0200 Subject: [PATCH 49/50] Add MLC library to packager script --- nano.variables | 2 +- nicla.variables | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nano.variables b/nano.variables index 96e46ebf5..1cba7139a 100644 --- a/nano.variables +++ b/nano.variables @@ -1,5 +1,5 @@ export FLAVOUR="nano" export VARIANTS=("NANO_RP2040_CONNECT ARDUINO_NANO33BLE") export FQBNS=("nanorp2040connect nano33ble") -export LIBRARIES=("PDM SPI Wire MRI USBHID USBMSD ThreadDebug Scheduler SFU Nano33BLE_System SocketWrapper") +export LIBRARIES=("PDM SPI Wire MRI USBHID USBMSD ThreadDebug Scheduler SFU Nano33BLE_System SocketWrapper MLC") export BOOTLOADERS=("nano33ble") diff --git a/nicla.variables b/nicla.variables index f956d728a..99cb98d22 100644 --- a/nicla.variables +++ b/nicla.variables @@ -1,5 +1,5 @@ export FLAVOUR="nicla" export VARIANTS=("NICLA NICLA_VISION") export FQBNS=("nicla_sense nicla_vision") -export LIBRARIES=("SPI Wire Scheduler Nicla_System WiFi ea_malloc openamp_arduino STM32H747_System ThreadDebug GC2145 Himax_HM01B0 PDM KernelDebug RPC USBHID Camera rpclib USBHOST mbed-memory-status USBMSD SocketWrapper MRI SE05X") +export LIBRARIES=("SPI Wire Scheduler Nicla_System WiFi ea_malloc openamp_arduino STM32H747_System ThreadDebug GC2145 Himax_HM01B0 PDM KernelDebug RPC USBHID Camera rpclib USBHOST mbed-memory-status USBMSD SocketWrapper MRI SE05X MLC") export BOOTLOADERS=("NICLA NICLA_VISION") From 0fc6d7417ff8d648258bf4b1508759f300ae3ab2 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 16 May 2022 09:12:36 +0200 Subject: [PATCH 50/50] Release 3.1.1 --- package_full.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package_full.sh b/package_full.sh index 9d5ab3362..f4bc91436 100755 --- a/package_full.sh +++ b/package_full.sh @@ -1,5 +1,5 @@ #Get version from git(hub) tag -export VERSION="3.0.1" +export VERSION="3.1.1" FLAVOURS=`ls *.variables`

    `^4PvH|VQ_$kH{~6{SAVvt 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