From cc853de5f3c75fe557b8601e4b51ec72c64077e5 Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Sun, 30 Jun 2024 08:01:51 +0800 Subject: [PATCH] Update cherryusb to v1.3.1 (#9122) * fix(hpmicro): remove duplicate usb variable * update(cherryusb): update to v1.3.1 --- .../board/linker_scripts/flash_rtt.ld | 6 - components/drivers/usb/cherryusb/Kconfig | 20 +- .../drivers/usb/cherryusb/Kconfig.cherryusb | 20 +- components/drivers/usb/cherryusb/README.md | 37 +- components/drivers/usb/cherryusb/README_zh.md | 39 +- components/drivers/usb/cherryusb/SConscript | 19 +- components/drivers/usb/cherryusb/VERSION | 2 +- .../drivers/usb/cherryusb/cherryusb.cmake | 41 +- .../usb/cherryusb/cherryusb_config_template.h | 19 +- .../usb/cherryusb/class/audio/usbh_audio.c | 34 +- .../drivers/usb/cherryusb/class/cdc/usb_cdc.h | 2 +- .../usb/cherryusb/class/cdc/usbd_cdc_ecm.c | 12 +- .../usb/cherryusb/class/cdc/usbh_cdc_acm.c | 21 +- .../usb/cherryusb/class/cdc/usbh_cdc_ecm.c | 37 +- .../usb/cherryusb/class/cdc/usbh_cdc_ecm.h | 3 +- .../usb/cherryusb/class/cdc/usbh_cdc_ncm.c | 46 +- .../usb/cherryusb/class/cdc/usbh_cdc_ncm.h | 3 +- .../usb/cherryusb/class/hid/usbh_hid.c | 42 +- .../usb/cherryusb/class/hub/usbh_hub.c | 75 +- .../usb/cherryusb/class/msc/usbh_msc.c | 35 +- .../cherryusb/class/vendor/net/usbh_asix.c | 99 +- .../cherryusb/class/vendor/net/usbh_asix.h | 3 +- .../cherryusb/class/vendor/net/usbh_rtl8152.c | 52 +- .../cherryusb/class/vendor/net/usbh_rtl8152.h | 3 +- .../class/vendor/serial/usbh_ch34x.c | 28 +- .../class/vendor/serial/usbh_cp210x.c | 42 +- .../cherryusb/class/vendor/serial/usbh_ftdi.c | 51 +- .../class/vendor/serial/usbh_pl2303.c | 28 +- .../usb/cherryusb/class/video/usb_video.h | 368 ++- .../usb/cherryusb/class/video/usbd_video.c | 5 +- .../usb/cherryusb/class/video/usbd_video.h | 2 +- .../usb/cherryusb/class/video/usbh_video.c | 28 +- .../usb/cherryusb/class/wireless/usbd_rndis.c | 8 +- .../cherryusb/class/wireless/usbh_bluetooth.c | 9 +- .../usb/cherryusb/class/wireless/usbh_rndis.c | 74 +- .../usb/cherryusb/class/wireless/usbh_rndis.h | 6 +- .../drivers/usb/cherryusb/common/usb_hc.h | 1 + .../drivers/usb/cherryusb/common/usb_memcpy.h | 91 + .../drivers/usb/cherryusb/core/usbd_core.c | 25 +- .../drivers/usb/cherryusb/core/usbd_core.h | 1 + .../drivers/usb/cherryusb/core/usbh_core.c | 230 +- .../drivers/usb/cherryusb/core/usbh_core.h | 10 +- .../drivers/usb/cherryusb/demo/CherryUSB.h264 | Bin 0 -> 20750 bytes .../drivers/usb/cherryusb/demo/CherryUSB.jpg | Bin 0 -> 24775 bytes .../usb/cherryusb/demo/CherryUSB_64x48.YUYV | 1 + .../audio_v1_mic_speaker_multichan_template.c | 4 +- .../audio_v2_mic_speaker_multichan_template.c | 2 +- .../usb/cherryusb/demo/cdc_ecm_template.c | 5 +- .../usb/cherryusb/demo/cdc_rndis_template.c | 7 +- .../usb/cherryusb/demo/cherryusb_h264.h | 1734 ++++++++++++++ .../usb/cherryusb/demo/cherryusb_mjpeg.h | 2067 +++++++++++++++++ .../usb/cherryusb/demo/cherryusb_yuyv.h | 514 ++++ .../demo/hid_custom_inout_template.c | 5 + .../drivers/usb/cherryusb/demo/pic_data.h | 1146 --------- .../drivers/usb/cherryusb/demo/usb_host.c | 828 +------ .../demo/video_audiov1_hid_template.c | 513 ++++ .../demo/video_static_h264_template.c | 249 ++ .../demo/video_static_mjpeg_template.c | 51 +- .../demo/video_static_yuyv_template.c | 251 ++ .../cherryusb/platform/rtthread/usbh_dfs.c | 2 +- .../cherryusb/platform/rtthread/usbh_lwip.c | 43 +- .../drivers/usb/cherryusb/port/dwc2/README.md | 8 + .../usb/cherryusb/port/dwc2/usb_glue_esp.c | 4 +- .../usb/cherryusb/port/dwc2/usb_glue_hc.c | 26 + .../usb/cherryusb/port/dwc2/usb_hc_dwc2.c | 34 +- .../usb/cherryusb/port/ehci/usb_ehci_priv.h | 16 +- .../usb/cherryusb/port/ehci/usb_hc_ehci.c | 12 +- .../drivers/usb/cherryusb/port/musb/README.md | 10 +- .../usb/cherryusb/port/musb/usb_dc_musb.c | 220 +- .../usb/cherryusb/port/musb/usb_glue_bk.c | 321 +++ .../usb/cherryusb/port/musb/usb_glue_es.c | 53 + .../usb/cherryusb/port/musb/usb_glue_sunxi.c | 56 +- .../usb/cherryusb/port/musb/usb_hc_musb.c | 135 +- .../usb/cherryusb/port/musb/usb_musb_reg.h | 15 + 74 files changed, 7278 insertions(+), 2731 deletions(-) create mode 100644 components/drivers/usb/cherryusb/common/usb_memcpy.h create mode 100644 components/drivers/usb/cherryusb/demo/CherryUSB.h264 create mode 100644 components/drivers/usb/cherryusb/demo/CherryUSB.jpg create mode 100644 components/drivers/usb/cherryusb/demo/CherryUSB_64x48.YUYV create mode 100644 components/drivers/usb/cherryusb/demo/cherryusb_h264.h create mode 100644 components/drivers/usb/cherryusb/demo/cherryusb_mjpeg.h create mode 100644 components/drivers/usb/cherryusb/demo/cherryusb_yuyv.h delete mode 100644 components/drivers/usb/cherryusb/demo/pic_data.h create mode 100644 components/drivers/usb/cherryusb/demo/video_audiov1_hid_template.c create mode 100644 components/drivers/usb/cherryusb/demo/video_static_h264_template.c create mode 100644 components/drivers/usb/cherryusb/demo/video_static_yuyv_template.c create mode 100644 components/drivers/usb/cherryusb/port/dwc2/usb_glue_hc.c create mode 100644 components/drivers/usb/cherryusb/port/musb/usb_glue_bk.c create mode 100644 components/drivers/usb/cherryusb/port/musb/usb_glue_es.c diff --git a/bsp/hpmicro/hpm6750evk2/board/linker_scripts/flash_rtt.ld b/bsp/hpmicro/hpm6750evk2/board/linker_scripts/flash_rtt.ld index a95394ba71..5317b8a6f8 100644 --- a/bsp/hpmicro/hpm6750evk2/board/linker_scripts/flash_rtt.ld +++ b/bsp/hpmicro/hpm6750evk2/board/linker_scripts/flash_rtt.ld @@ -111,12 +111,6 @@ SECTIONS KEEP (*(.fini)) . = ALIGN(8); - /* section information for usbh class */ - . = ALIGN(8); - __usbh_class_info_start__ = .; - KEEP(*(.usbh_class_info)) - __usbh_class_info_end__ = .; - /********************************************* * * RT-Thread related sections - Start diff --git a/components/drivers/usb/cherryusb/Kconfig b/components/drivers/usb/cherryusb/Kconfig index fdd5bbc7e8..3e9ce5f1d9 100644 --- a/components/drivers/usb/cherryusb/Kconfig +++ b/components/drivers/usb/cherryusb/Kconfig @@ -36,12 +36,16 @@ if RT_USING_CHERRYUSB bool "dwc2_at" config RT_CHERRYUSB_DEVICE_DWC2_GD bool "dwc2_gd" + config RT_CHERRYUSB_DEVICE_DWC2_HC + bool "dwc2_hc" config RT_CHERRYUSB_DEVICE_DWC2_CUSTOM bool "dwc2_custom" - config RT_CHERRYUSB_DEVICE_MUSB_STANDARD - bool "musb_standard" + config RT_CHERRYUSB_DEVICE_MUSB_ES + bool "musb_es" config RT_CHERRYUSB_DEVICE_MUSB_SUNXI bool "musb_sunxi" + config RT_CHERRYUSB_DEVICE_MUSB_BK + bool "musb_bk" config RT_CHERRYUSB_DEVICE_MUSB_CUSTOM bool "musb_custom" config RT_CHERRYUSB_DEVICE_BL @@ -170,10 +174,12 @@ if RT_USING_CHERRYUSB bool "dwc2_esp" config RT_CHERRYUSB_HOST_DWC2_CUSTOM bool "dwc2_custom" - config RT_CHERRYUSB_HOST_MUSB_STANDARD - bool "musb_standard" + config RT_CHERRYUSB_HOST_MUSB_ES + bool "musb_es" config RT_CHERRYUSB_HOST_MUSB_SUNXI bool "musb_sunxi" + config RT_CHERRYUSB_HOST_MUSB_BK + bool "musb_bk" config RT_CHERRYUSB_HOST_MUSB_CUSTOM bool "musb_custom" config RT_CHERRYUSB_HOST_PUSB2 @@ -242,7 +248,7 @@ if RT_USING_CHERRYUSB prompt "Enable usb asix driver" select RT_USING_LWIP select RT_USING_LWIP212 - select CONFIG_USBHOST_PLATFORM_CDC_ASIX + select CONFIG_USBHOST_PLATFORM_ASIX default n config RT_CHERRYUSB_HOST_RTL8152 @@ -250,7 +256,7 @@ if RT_USING_CHERRYUSB prompt "Enable usb rtl8152 driver" select RT_USING_LWIP select RT_USING_LWIP212 - select CONFIG_USBHOST_PLATFORM_CDC_RTL8152 + select CONFIG_USBHOST_PLATFORM_RTL8152 default n config RT_CHERRYUSB_HOST_FTDI @@ -285,7 +291,7 @@ if RT_USING_CHERRYUSB config CONFIG_USBHOST_PLATFORM_ASIX bool - config CONFIG_USBHOST_PLATFORM_RTL152 + config CONFIG_USBHOST_PLATFORM_RTL8152 bool config CHERRYUSB_HOST_TEMPLATE diff --git a/components/drivers/usb/cherryusb/Kconfig.cherryusb b/components/drivers/usb/cherryusb/Kconfig.cherryusb index 1f667e733a..4d44a7506d 100644 --- a/components/drivers/usb/cherryusb/Kconfig.cherryusb +++ b/components/drivers/usb/cherryusb/Kconfig.cherryusb @@ -36,12 +36,16 @@ if CHERRYUSB bool "dwc2_at" config CHERRYUSB_DEVICE_DWC2_GD bool "dwc2_gd" + config CHERRYUSB_DEVICE_DWC2_HC + bool "dwc2_hc" config CHERRYUSB_DEVICE_DWC2_CUSTOM bool "dwc2_custom" - config CHERRYUSB_DEVICE_MUSB_STANDARD - bool "musb_standard" + config CHERRYUSB_DEVICE_MUSB_ES + bool "musb_es" config CHERRYUSB_DEVICE_MUSB_SUNXI bool "musb_sunxi" + config CHERRYUSB_DEVICE_MUSB_BK + bool "musb_bk" config CHERRYUSB_DEVICE_MUSB_CUSTOM bool "musb_custom" config CHERRYUSB_DEVICE_BL @@ -168,12 +172,16 @@ if CHERRYUSB bool "dwc2_st" config CHERRYUSB_HOST_DWC2_ESP bool "dwc2_esp" + config CHERRYUSB_HOST_DWC2_HC + bool "dwc2_hc" config CHERRYUSB_HOST_DWC2_CUSTOM bool "dwc2_custom" - config CHERRYUSB_HOST_MUSB_STANDARD - bool "musb_standard" + config CHERRYUSB_HOST_MUSB_ES + bool "musb_es" config CHERRYUSB_HOST_MUSB_SUNXI bool "musb_sunxi" + config CHERRYUSB_HOST_MUSB_BK + bool "musb_bk" config CHERRYUSB_HOST_MUSB_CUSTOM bool "musb_custom" config CHERRYUSB_HOST_PUSB2 @@ -274,7 +282,7 @@ if CHERRYUSB config USBHOST_PLATFORM_ASIX bool - config USBHOST_PLATFORM_RTL152 + config USBHOST_PLATFORM_RTL8152 bool config CHERRYUSB_HOST_TEMPLATE @@ -295,7 +303,7 @@ if CHERRYUSB depends on CHERRYUSB_HOST_HID config TEST_USBH_MSC int - prompt "demo for test msc, do not enable because it has used dfs instead" + prompt "demo for test msc" default 0 depends on CHERRYUSB_HOST_MSC endif diff --git a/components/drivers/usb/cherryusb/README.md b/components/drivers/usb/cherryusb/README.md index 77daee4b14..d79df88751 100644 --- a/components/drivers/usb/cherryusb/README.md +++ b/components/drivers/usb/cherryusb/README.md @@ -94,8 +94,8 @@ CherryUSB Host Stack has the following functions: - Support Communication Device Class (CDC_ACM, CDC_ECM) - Support Human Interface Device (HID) - Support Mass Storage Class (MSC) -- Support USB Video CLASS (commercial charge) -- Support USB Audio CLASS (commercial charge) +- Support USB Video CLASS (UVC1.0、UVC1.5) +- Support USB Audio CLASS (UAC1.0) - Support Remote NDIS (RNDIS) - Support USB Bluetooth class (support nimble and zephyr bluetooth stack, support **CLASS:0xE0** or vendor class like cdc acm) - Support Vendor class @@ -115,7 +115,7 @@ CherryUSB Host Stack resource usage (GCC 10.2 with -O2): |usbh_hid.c | ~1000 | 128 | 4 + sizeof(struct usbh_hid) * x | 0 | |usbh_video.c | ~3700 | 128 | 4 + sizeof(struct usbh_video) * x | 0 | |usbh_audio.c | ~3100 | 128 | 4 + sizeof(struct usbh_audio) * x | 0 | -|usbh_rndis.c | ~3900 | 4096 + 2 * 2048 | sizeof(struct usbh_rndis) * 1 | 0 | +|usbh_rndis.c | ~3900 | 4096 + 2 * 2048(default)| sizeof(struct usbh_rndis) * 1 | 0 | |usbh_cdc_ecm.c | ~2500 | 2 * 1514 | sizeof(struct usbh_cdc_ecm) * 1 | 0 | |usbh_bluetooth.c | ~2300 | 2 * 2048(default) | sizeof(struct usbh_bluetooth) * 1 | 0 | @@ -148,7 +148,7 @@ Only standard and commercial USB IP are listed. | OHCI(intel) | none | OHCI | × | | EHCI(intel) | none | EHCI | √ | | XHCI(intel) | none | XHCI | √ | -| UHCI(intel) | none | UHCI | × | +| UHCI(intel) | none | UHCI | × | | DWC2(synopsys) | DWC2 | DWC2 | √ | | MUSB(mentor) | MUSB | MUSB | √ | | FOTG210(faraday)| FOTG210 | EHCI | √ | @@ -173,17 +173,22 @@ USB basic concepts and how the CherryUSB Device stack is implemented, see [Cherr | Manufacturer | CHIP or Series | USB IP| Repo Url | Support version | Support status | |:--------------------:|:------------------:|:-----:|:--------:|:------------------:|:-------------:| |Bouffalolab | BL702/BL616/BL808 | bouffalolab/ehci|[bouffalo_sdk](https://github.com/CherryUSB/bouffalo_sdk)|<= latest | Long-term | -|ST | STM32F1x | fsdev |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | -|ST | STM32F4/STM32H7 | dwc2 |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | -|HPMicro | HPM6750 | hpm/ehci |[hpm_sdk](https://github.com/CherryUSB/hpm_sdk)|<= latest | Long-term | -|Essemi | ES32F36xx | musb |[es32f369_repo](https://github.com/CherryUSB/cherryusb_es32)|<= latest | Long-term | -|Phytium | e2000 | pusb2/xhci |[phytium_repo](https://gitee.com/phytium_embedded/phytium-free-rtos-sdk)|v0.10.2 | Long-term | -|artinchip | d12x/d13x/d21x | aic/ehci/ohci |[luban-lite](https://gitee.com/artinchip/luban-lite)|<= latest | Long-term | -|Espressif | esp32s2/esp32s3 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | the same with ST | -|AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with Essemi | -|WCH | CH32V307/ch58x | ch32_usbfs/ch32_usbhs/ch58x |[wch_repo](https://github.com/CherryUSB/cherryusb_wch)|<= v0.10.2 | TBD | -|Nordicsemi | Nrf52840 | nrf5x |[nrf5x_repo](https://github.com/CherryUSB/cherryusb_nrf5x)|<= v0.10.2 | No more updated | -|Raspberry pi | rp2040 | rp2040 |[pico-examples](https://github.com/CherryUSB/pico-examples)|<= v0.10.2 | No more updated | +|ST | STM32F1x | fsdev |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | +|ST | STM32F4/STM32H7 | dwc2 |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | +|HPMicro | HPM6750 | hpm/ehci |[hpm_sdk](https://github.com/CherryUSB/hpm_sdk)|<= latest | Long-term | +|Essemi | ES32F36xx | musb |[es32f369_repo](https://github.com/CherryUSB/cherryusb_es32)|<= latest | Long-term | +|Phytium | e2000 | pusb2/xhci |[phytium_repo](https://gitee.com/phytium_embedded/phytium-free-rtos-sdk)|v0.10.2 | Long-term | +|Artinchip | d12x/d13x/d21x | aic/ehci/ohci |[luban-lite](https://gitee.com/artinchip/luban-lite)|<= latest | Long-term | +|Espressif | esp32s2/esp32s3 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | the same with ST | +|AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with Essemi | +|Bekencorp | bk7256/bk7258 | musb |[bk_idk](https://github.com/CherryUSB/bk_idk)| v0.7.0 | the same with Essemi | +|Sophgo | cv18xx | dwc2 |[cvi_alios_open](https://github.com/CherryUSB/cvi_alios_open)| v0.7.0 | the same with ST | +|WCH | CH32V307/ch58x | ch32_usbfs/ch32_usbhs/ch58x |[wch_repo](https://github.com/CherryUSB/cherryusb_wch)|<= v0.10.2 | TBD | +|Raspberry pi | rp2040 | rp2040 |[pico-examples](https://github.com/CherryUSB/pico-examples)|<= v0.10.2 | No more updated | + +## Commercial Support + +Refer to https://cherryusb.readthedocs.io/zh-cn/latest/support/index.html. ## Contact @@ -193,4 +198,4 @@ CherryUSB discord: https://discord.com/invite/wFfvrSAey8. Thanks to the following companies for their support (in no particular order). - \ No newline at end of file + \ No newline at end of file diff --git a/components/drivers/usb/cherryusb/README_zh.md b/components/drivers/usb/cherryusb/README_zh.md index a59649e0bb..0aee5a75f7 100644 --- a/components/drivers/usb/cherryusb/README_zh.md +++ b/components/drivers/usb/cherryusb/README_zh.md @@ -94,8 +94,8 @@ CherryUSB Host 协议栈当前实现以下功能: - 支持 Communication Device Class (CDC_ACM, CDC_ECM) - 支持 Human Interface Device (HID) - 支持 Mass Storage Class (MSC) -- Support USB Video CLASS(商业收费) -- Support USB Audio CLASS(商业收费) +- Support USB Video CLASS (UVC1.0、UVC1.5) +- Support USB Audio CLASS (UAC1.0) - 支持 Remote NDIS (RNDIS) - 支持 USB Bluetooth (支持 nimble and zephyr bluetooth 协议栈,支持 **CLASS: 0xE0** 或者厂家自定义类,类似于 cdc acm 功能) - 支持 Vendor 类 class @@ -115,7 +115,7 @@ CherryUSB Host 协议栈资源占用说明(GCC 10.2 with -O2): |usbh_hid.c | ~1000 | 128 | 4 + sizeof(struct usbh_hid) * x | 0 | |usbh_video.c | ~3700 | 128 | 4 + sizeof(struct usbh_video) * x | 0 | |usbh_audio.c | ~3100 | 128 | 4 + sizeof(struct usbh_audio) * x | 0 | -|usbh_rndis.c | ~3900 | 4096 + 2 * 2048 | sizeof(struct usbh_rndis) * 1 | 0 | +|usbh_rndis.c | ~3900 | 4096 + 2 * 2048(default)| sizeof(struct usbh_rndis) * 1 | 0 | |usbh_cdc_ecm.c | ~2500 | 2 * 1514 | sizeof(struct usbh_cdc_ecm) * 1 | 0 | |usbh_bluetooth.c | ~2300 | 2 * 2048(default) | sizeof(struct usbh_bluetooth) * 1 | 0 | @@ -148,7 +148,7 @@ x 受以下宏影响: | OHCI(intel) | none | OHCI | × | | EHCI(intel) | none | EHCI | √ | | XHCI(intel) | none | XHCI | √ | -| UHCI(intel) | none | UHCI | × | +| UHCI(intel) | none | UHCI | × | | DWC2(synopsys) | DWC2 | DWC2 | √ | | MUSB(mentor) | MUSB | MUSB | √ | | FOTG210(faraday)| FOTG210 | EHCI | √ | @@ -174,19 +174,24 @@ CherryUSB 快速入门、USB 基本概念,API 手册,Class 基本概念和 | Manufacturer | CHIP or Series | USB IP| Repo Url | Support version | Support status | |:--------------------:|:------------------:|:-----:|:--------:|:------------------:|:-------------:| |Bouffalolab | BL702/BL616/BL808 | bouffalolab/ehci|[bouffalo_sdk](https://github.com/CherryUSB/bouffalo_sdk)|<= latest | Long-term | -|ST | STM32F1x | fsdev |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | -|ST | STM32F4/STM32H7 | dwc2 |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | -|HPMicro | HPM6750 | hpm/ehci |[hpm_sdk](https://github.com/CherryUSB/hpm_sdk)|<= latest | Long-term | -|Essemi | ES32F36xx | musb |[es32f369_repo](https://github.com/CherryUSB/cherryusb_es32)|<= latest | Long-term | -|Phytium | e2000 | pusb2/xhci |[phytium_repo](https://gitee.com/phytium_embedded/phytium-free-rtos-sdk)|v0.10.2 | Long-term | -|artinchip | d12x/d13x/d21x | aic/ehci/ohci |[luban-lite](https://gitee.com/artinchip/luban-lite)|<= latest | Long-term | -|Espressif | esp32s2/esp32s3 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | the same with ST | -|AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with Essemi | -|WCH | CH32V307/ch58x | ch32_usbfs/ch32_usbhs/ch58x |[wch_repo](https://github.com/CherryUSB/cherryusb_wch)|<= v0.10.2 | TBD | -|Nordicsemi | Nrf52840 | nrf5x |[nrf5x_repo](https://github.com/CherryUSB/cherryusb_nrf5x)|<= v0.10.2 | No more updated | -|Raspberry pi | rp2040 | rp2040 |[pico-examples](https://github.com/CherryUSB/pico-examples)|<= v0.10.2 | No more updated | +|ST | STM32F1x | fsdev |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | +|ST | STM32F4/STM32H7 | dwc2 |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | +|HPMicro | HPM6750 | hpm/ehci |[hpm_sdk](https://github.com/CherryUSB/hpm_sdk)|<= latest | Long-term | +|Essemi | ES32F36xx | musb |[es32f369_repo](https://github.com/CherryUSB/cherryusb_es32)|<= latest | Long-term | +|Phytium | e2000 | pusb2/xhci |[phytium_repo](https://gitee.com/phytium_embedded/phytium-free-rtos-sdk)|v0.10.2 | Long-term | +|Artinchip | d12x/d13x/d21x | aic/ehci/ohci |[luban-lite](https://gitee.com/artinchip/luban-lite)|<= latest | Long-term | +|Espressif | esp32s2/esp32s3 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | the same with ST | +|AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with Essemi | +|Bekencorp | bk7256/bk7258 | musb |[bk_idk](https://github.com/CherryUSB/bk_idk)| v0.7.0 | the same with Essemi | +|Sophgo | cv18xx | dwc2 |[cvi_alios_open](https://github.com/CherryUSB/cvi_alios_open)| v0.7.0 | the same with ST | +|WCH | CH32V307/ch58x | ch32_usbfs/ch32_usbhs/ch58x |[wch_repo](https://github.com/CherryUSB/cherryusb_wch)|<= v0.10.2 | TBD | +|Raspberry pi | rp2040 | rp2040 |[pico-examples](https://github.com/CherryUSB/pico-examples)|<= v0.10.2 | No more updated | -## Contact +## 商业支持 + +参考 https://cherryusb.readthedocs.io/zh-cn/latest/support/index.html。 + +## 联系 CherryUSB QQ 群:642693751 CherryUSB 微信群:与我联系后邀请加入 @@ -195,4 +200,4 @@ CherryUSB 微信群:与我联系后邀请加入 感谢以下企业支持(顺序不分先后)。 - + diff --git a/components/drivers/usb/cherryusb/SConscript b/components/drivers/usb/cherryusb/SConscript index 1bdb16d503..ee4dc91116 100644 --- a/components/drivers/usb/cherryusb/SConscript +++ b/components/drivers/usb/cherryusb/SConscript @@ -40,13 +40,20 @@ if GetDepend(['RT_CHERRYUSB_DEVICE']): if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_GD']): src += Glob('port/dwc2/usb_dc_dwc2.c') src += Glob('port/dwc2/usb_glue_gd.c') + if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_HC']): + src += Glob('port/dwc2/usb_dc_dwc2.c') + src += Glob('port/dwc2/usb_glue_hc.c') if GetDepend(['RT_CHERRYUSB_DEVICE_DWC2_CUSTOM']): src += Glob('port/dwc2/usb_dc_dwc2.c') - if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_STANDARD']): + if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_ES']): src += Glob('port/musb/usb_dc_musb.c') + src += Glob('port/musb/usb_glue_es.c') if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_SUNXI']): src += Glob('port/musb/usb_dc_musb.c') src += Glob('port/musb/usb_glue_sunxi.c') + if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_BK']): + src += Glob('port/musb/usb_dc_musb.c') + src += Glob('port/musb/usb_glue_bk.c') if GetDepend(['RT_CHERRYUSB_DEVICE_MUSB_CUSTOM']): src += Glob('port/musb/usb_dc_musb.c') if GetDepend(['RT_CHERRYUSB_DEVICE_BL']): @@ -151,9 +158,15 @@ if GetDepend(['RT_CHERRYUSB_HOST']): src += Glob('port/dwc2/usb_hc_dwc2.c') if GetDepend(['RT_CHERRYUSB_HOST_MUSB_STANDARD']): src += Glob('port/musb/usb_hc_musb.c') + if GetDepend(['RT_CHERRYUSB_HOST_MUSB_ES']): + src += Glob('port/musb/usb_hc_musb.c') + src += Glob('port/musb/usb_glue_es.c') if GetDepend(['RT_CHERRYUSB_HOST_MUSB_SUNXI']): src += Glob('port/musb/usb_hc_musb.c') src += Glob('port/musb/usb_glue_sunxi.c') + if GetDepend(['RT_CHERRYUSB_HOST_MUSB_BK']): + src += Glob('port/musb/usb_hc_musb.c') + src += Glob('port/musb/usb_glue_bk.c') if GetDepend(['RT_CHERRYUSB_HOST_MUSB_CUSTOM']): src += Glob('port/musb/usb_hc_musb.c') @@ -197,8 +210,8 @@ if GetDepend(['RT_CHERRYUSB_HOST']): if GetDepend('RT_CHERRYUSB_HOST_CDC_ECM') \ or GetDepend('RT_CHERRYUSB_HOST_CDC_RNDIS') \ or GetDepend('RT_CHERRYUSB_HOST_CDC_NCM') \ - or GetDepend('RT_CHERRYUSB_HOST_CDC_ASIX') \ - or GetDepend('RT_CHERRYUSB_HOST_CDC_RTL8152'): + or GetDepend('RT_CHERRYUSB_HOST_ASIX') \ + or GetDepend('RT_CHERRYUSB_HOST_RTL8152'): src += Glob('platform/rtthread/usbh_lwip.c') src += Glob('platform/rtthread/usb_msh.c') diff --git a/components/drivers/usb/cherryusb/VERSION b/components/drivers/usb/cherryusb/VERSION index f976d5d979..8a0bfa806e 100644 --- a/components/drivers/usb/cherryusb/VERSION +++ b/components/drivers/usb/cherryusb/VERSION @@ -1,5 +1,5 @@ VERSION_MAJOR = 1 VERSION_MINOR = 3 -PATCHLEVEL = 0 +PATCHLEVEL = 1 VERSION_TWEAK = 0 EXTRAVERSION = 0 diff --git a/components/drivers/usb/cherryusb/cherryusb.cmake b/components/drivers/usb/cherryusb/cherryusb.cmake index 6a78e9dc47..d8451d219d 100644 --- a/components/drivers/usb/cherryusb/cherryusb.cmake +++ b/components/drivers/usb/cherryusb/cherryusb.cmake @@ -71,26 +71,39 @@ if(CONFIG_CHERRYUSB_DEVICE) endif() if(DEFINED CONFIG_CHERRYUSB_DEVICE_DCD) - if("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "dwc2_st") + if("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "fsdev") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/fsdev/usb_dc_fsdev.c) + elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "dwc2_st") list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_dc_dwc2.c) list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_glue_st.c) elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "dwc2_esp") list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_dc_dwc2.c) list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_glue_esp.c) - elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "dwc2_aic") - list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_dc_dwc2.c) - list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_glue_aic.c) elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "dwc2_at") list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_dc_dwc2.c) list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_glue_at.c) - elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "fsdev") - list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/fsdev/usb_dc_fsdev.c) + elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "dwc2_gd") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_dc_dwc2.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_glue_gd.c) + elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "dwc2_hc") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_dc_dwc2.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_glue_hc.c) + elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "musb_es") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_dc_musb.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_glue_es.c) + elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "musb_sunxi") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_dc_musb.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_glue_sunxi.c) + elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "musb_bk") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_dc_musb.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_glue_bk.c) elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "hpm") list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/hpm/usb_dc_hpm.c) elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "bl") list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/bouffalolab/usb_dc_bl.c) - elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "musb") - list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_dc_musb.c) + elseif("${CONFIG_CHERRYUSB_DEVICE_DCD}" STREQUAL "aic") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/aic/usb_dc_aic.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/aic/usb_dc_aic_ll.c) endif() endif() @@ -223,8 +236,18 @@ if(CONFIG_CHERRYUSB_HOST) elseif("${CONFIG_CHERRYUSB_HOST_HCD}" STREQUAL "dwc2_esp") list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_hc_dwc2.c) list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_glue_esp.c) - elseif("${CONFIG_CHERRYUSB_HOST_HCD}" STREQUAL "musb") + elseif("${CONFIG_CHERRYUSB_HOST_HCD}" STREQUAL "dwc2_hc") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_hc_dwc2.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/dwc2/usb_glue_hc.c) + elseif("${CONFIG_CHERRYUSB_HOST_HCD}" STREQUAL "musb_es") list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_hc_musb.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_glue_es.c) + elseif("${CONFIG_CHERRYUSB_HOST_HCD}" STREQUAL "musb_sunxi") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_hc_musb.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_glue_sunxi.c) + elseif("${CONFIG_CHERRYUSB_HOST_HCD}" STREQUAL "musb_bk") + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_hc_musb.c) + list(APPEND cherryusb_srcs ${CMAKE_CURRENT_LIST_DIR}/port/musb/usb_glue_bk.c) endif() endif() diff --git a/components/drivers/usb/cherryusb/cherryusb_config_template.h b/components/drivers/usb/cherryusb/cherryusb_config_template.h index cba9fc4dbf..493f8a4e93 100644 --- a/components/drivers/usb/cherryusb/cherryusb_config_template.h +++ b/components/drivers/usb/cherryusb/cherryusb_config_template.h @@ -6,8 +6,8 @@ #ifndef CHERRYUSB_CONFIG_H #define CHERRYUSB_CONFIG_H -#define CHERRYUSB_VERSION 0x010300 -#define CHERRYUSB_VERSION_STR "v1.3.0" +#define CHERRYUSB_VERSION 0x010301 +#define CHERRYUSB_VERSION_STR "v1.3.1" /* ================ USB common Configuration ================ */ @@ -168,6 +168,17 @@ #define CONFIG_USBHOST_CDC_NCM_ETH_MAX_TX_SIZE (2048) #endif +/* This parameter affects usb performance, and depends on (TCP_WND)tcp eceive windows size, + * you can change to 2K ~ 16K and must be larger than TCP RX windows size in order to avoid being overflow. + */ +#ifndef CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE +#define CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE (2048) +#endif +/* Because lwip do not support multi pbuf at a time, so increasing this variable has no performance improvement */ +#ifndef CONFIG_USBHOST_ASIX_ETH_MAX_TX_SIZE +#define CONFIG_USBHOST_ASIX_ETH_MAX_TX_SIZE (2048) +#endif + /* This parameter affects usb performance, and depends on (TCP_WND)tcp eceive windows size, * you can change to 2K ~ 16K and must be larger than TCP RX windows size in order to avoid being overflow. */ @@ -203,7 +214,11 @@ //#define CONFIG_USBDEV_FSDEV_PMA_ACCESS 2 // maybe 1 or 2, many chips may have a difference /* ---------------- DWC2 Configuration ---------------- */ +/* (5 * number of control endpoints + 8) + ((largest USB packet used / 4) + 1 for + * status information) + (2 * number of OUT endpoints) + 1 for Global NAK + */ // #define CONFIG_USB_DWC2_RXALL_FIFO_SIZE (1024 / 4) +/* IN Endpoints Max packet Size / 4 */ // #define CONFIG_USB_DWC2_TX0_FIFO_SIZE (64 / 4) // #define CONFIG_USB_DWC2_TX1_FIFO_SIZE (512 / 4) // #define CONFIG_USB_DWC2_TX2_FIFO_SIZE (64 / 4) diff --git a/components/drivers/usb/cherryusb/class/audio/usbh_audio.c b/components/drivers/usb/cherryusb/class/audio/usbh_audio.c index 8687e9a4a6..223c340b87 100644 --- a/components/drivers/usb/cherryusb/class/audio/usbh_audio.c +++ b/components/drivers/usb/cherryusb/class/audio/usbh_audio.c @@ -57,7 +57,7 @@ static void usbh_audio_class_free(struct usbh_audio *audio_class) int usbh_audio_open(struct usbh_audio *audio_class, const char *name, uint32_t samp_freq) { - struct usb_setup_packet *setup = audio_class->hport->setup; + struct usb_setup_packet *setup; struct usb_endpoint_descriptor *ep_desc; uint8_t mult; uint16_t mps; @@ -65,6 +65,11 @@ int usbh_audio_open(struct usbh_audio *audio_class, const char *name, uint32_t s uint8_t intf = 0xff; uint8_t altsetting = 1; + if (!audio_class || !audio_class->hport) { + return -USB_ERR_INVAL; + } + setup = audio_class->hport->setup; + if (audio_class->is_opened) { return 0; } @@ -129,12 +134,17 @@ freq_found: int usbh_audio_close(struct usbh_audio *audio_class, const char *name) { - struct usb_setup_packet *setup = audio_class->hport->setup; + struct usb_setup_packet *setup; struct usb_endpoint_descriptor *ep_desc; int ret; uint8_t intf = 0xff; uint8_t altsetting = 1; + if (!audio_class || !audio_class->hport) { + return -USB_ERR_INVAL; + } + setup = audio_class->hport->setup; + for (size_t i = 0; i < audio_class->module_num; i++) { if (strcmp(name, audio_class->module[i].name) == 0) { intf = audio_class->module[i].data_intf; @@ -172,12 +182,17 @@ int usbh_audio_close(struct usbh_audio *audio_class, const char *name) int usbh_audio_set_volume(struct usbh_audio *audio_class, const char *name, uint8_t ch, uint8_t volume) { - struct usb_setup_packet *setup = audio_class->hport->setup; + struct usb_setup_packet *setup; int ret; uint8_t intf = 0xff; uint8_t feature_id = 0xff; uint16_t volume_hex; + if (!audio_class || !audio_class->hport) { + return -USB_ERR_INVAL; + } + setup = audio_class->hport->setup; + for (size_t i = 0; i < audio_class->module_num; i++) { if (strcmp(name, audio_class->module[i].name) == 0) { intf = audio_class->ctrl_intf; @@ -205,11 +220,16 @@ int usbh_audio_set_volume(struct usbh_audio *audio_class, const char *name, uint int usbh_audio_set_mute(struct usbh_audio *audio_class, const char *name, uint8_t ch, bool mute) { - struct usb_setup_packet *setup = audio_class->hport->setup; + struct usb_setup_packet *setup; int ret; uint8_t intf = 0xff; uint8_t feature_id = 0xff; + if (!audio_class || !audio_class->hport) { + return -USB_ERR_INVAL; + } + setup = audio_class->hport->setup; + for (size_t i = 0; i < audio_class->module_num; i++) { if (strcmp(name, audio_class->module[i].name) == 0) { intf = audio_class->ctrl_intf; @@ -367,9 +387,9 @@ static int usbh_audio_ctrl_connect(struct usbh_hubport *hport, uint8_t intf) audio_class->module[format_offset].altsetting[cur_alt_setting].sampfreq_num = desc->bSamFreqType; for (uint8_t j = 0; j < desc->bSamFreqType; j++) { - audio_class->module[format_offset].altsetting[cur_alt_setting].sampfreq[j] = (uint32_t)(p[10 + j] << 16) | - (uint32_t)(p[9 + j] << 8) | - (uint32_t)(p[8 + j] << 0); + audio_class->module[format_offset].altsetting[cur_alt_setting].sampfreq[j] = (uint32_t)(p[10 + j * 3] << 16) | + (uint32_t)(p[9 + j * 3] << 8) | + (uint32_t)(p[8 + j * 3] << 0); } if (cur_alt_setting == (hport->config.intf[intf + 1].altsetting_num - 1)) { format_offset++; diff --git a/components/drivers/usb/cherryusb/class/cdc/usb_cdc.h b/components/drivers/usb/cherryusb/class/cdc/usb_cdc.h index b8a544f3f3..2bf0a17a51 100644 --- a/components/drivers/usb/cherryusb/class/cdc/usb_cdc.h +++ b/components/drivers/usb/cherryusb/class/cdc/usb_cdc.h @@ -588,7 +588,7 @@ eth_statistics, wMaxSegmentSize, wNumberMCFilters, bNumberPowerFilters, str_idx) CDC_FUNC_DESC_ETHERNET_NETWORKING, /* Ethernet Networking functional descriptor subtype */\ str_idx, /* Device's MAC string index */\ DBVAL_BE(eth_statistics), /* Ethernet statistics (bitmap) */\ - WBVAL(wMaxPacketSize),/* wMaxSegmentSize: Ethernet Maximum Segment size, typically 1514 bytes */\ + WBVAL(wMaxSegmentSize),/* wMaxSegmentSize: Ethernet Maximum Segment size, typically 1514 bytes */\ WBVAL(wNumberMCFilters), /* wNumberMCFilters: the number of multicast filters */\ bNumberPowerFilters, /* bNumberPowerFilters: the number of wakeup power filters */\ 0x07, /* bLength */ \ diff --git a/components/drivers/usb/cherryusb/class/cdc/usbd_cdc_ecm.c b/components/drivers/usb/cherryusb/class/cdc/usbd_cdc_ecm.c index 1fca9cadce..b0c1217d75 100644 --- a/components/drivers/usb/cherryusb/class/cdc/usbd_cdc_ecm.c +++ b/components/drivers/usb/cherryusb/class/cdc/usbd_cdc_ecm.c @@ -167,7 +167,7 @@ void usbd_cdc_ecm_start_read_next(void) { g_cdc_ecm_rx_data_length = 0; g_cdc_ecm_rx_data_buffer = NULL; - usbd_ep_start_read(0, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr, g_cdc_ecm_rx_buffer, usbd_get_ep_mps(busid, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr)); + usbd_ep_start_read(0, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr, g_cdc_ecm_rx_buffer, usbd_get_ep_mps(0, cdc_ecm_ep_data[CDC_ECM_OUT_EP_IDX].ep_addr)); } #ifdef CONFIG_USBDEV_CDC_ECM_USING_LWIP @@ -183,7 +183,7 @@ struct pbuf *usbd_cdc_ecm_eth_rx(void) usbd_cdc_ecm_start_read_next(); return NULL; } - memcpy(p->payload, (uint8_t *)g_cdc_ecm_rx_buffer, g_cdc_ecm_rx_data_length); + usb_memcpy(p->payload, (uint8_t *)g_cdc_ecm_rx_buffer, g_cdc_ecm_rx_data_length); p->len = g_cdc_ecm_rx_data_length; USB_LOG_DBG("rxlen:%d\r\n", g_cdc_ecm_rx_data_length); @@ -206,13 +206,11 @@ int usbd_cdc_ecm_eth_tx(struct pbuf *p) buffer = g_cdc_ecm_tx_buffer; for (q = p; q != NULL; q = q->next) { - memcpy(buffer, q->payload, q->len); + usb_memcpy(buffer, q->payload, q->len); buffer += q->len; } - g_cdc_ecm_tx_data_length = p->tot_len; - - return usbd_cdc_ecm_start_write(g_cdc_ecm_tx_buffer, g_cdc_ecm_tx_data_length); + return usbd_cdc_ecm_start_write(g_cdc_ecm_tx_buffer, p->tot_len); } #endif @@ -244,4 +242,4 @@ void usbd_cdc_ecm_set_connect_speed(uint32_t speed[2]) __WEAK void usbd_cdc_ecm_data_recv_done(uint8_t *buf, uint32_t len) { -} \ No newline at end of file +} diff --git a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_acm.c b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_acm.c index 05184af81c..c2c953ae8e 100644 --- a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_acm.c +++ b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_acm.c @@ -44,7 +44,12 @@ static void usbh_cdc_acm_class_free(struct usbh_cdc_acm *cdc_acm_class) int usbh_cdc_acm_set_line_coding(struct usbh_cdc_acm *cdc_acm_class, struct cdc_line_coding *line_coding) { - struct usb_setup_packet *setup = cdc_acm_class->hport->setup; + struct usb_setup_packet *setup; + + if (!cdc_acm_class || !cdc_acm_class->hport) { + return -USB_ERR_INVAL; + } + setup = cdc_acm_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CDC_REQUEST_SET_LINE_CODING; @@ -59,9 +64,14 @@ int usbh_cdc_acm_set_line_coding(struct usbh_cdc_acm *cdc_acm_class, struct cdc_ int usbh_cdc_acm_get_line_coding(struct usbh_cdc_acm *cdc_acm_class, struct cdc_line_coding *line_coding) { - struct usb_setup_packet *setup = cdc_acm_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!cdc_acm_class || !cdc_acm_class->hport) { + return -USB_ERR_INVAL; + } + setup = cdc_acm_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CDC_REQUEST_GET_LINE_CODING; setup->wValue = 0; @@ -78,7 +88,12 @@ int usbh_cdc_acm_get_line_coding(struct usbh_cdc_acm *cdc_acm_class, struct cdc_ int usbh_cdc_acm_set_line_state(struct usbh_cdc_acm *cdc_acm_class, bool dtr, bool rts) { - struct usb_setup_packet *setup = cdc_acm_class->hport->setup; + struct usb_setup_packet *setup; + + if (!cdc_acm_class || !cdc_acm_class->hport) { + return -USB_ERR_INVAL; + } + setup = cdc_acm_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CDC_REQUEST_SET_CONTROL_LINE_STATE; diff --git a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ecm.c b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ecm.c index 5e3ae7bc71..ad05d5164c 100644 --- a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ecm.c +++ b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ecm.c @@ -32,7 +32,12 @@ static struct usbh_cdc_ecm g_cdc_ecm_class; static int usbh_cdc_ecm_set_eth_packet_filter(struct usbh_cdc_ecm *cdc_ecm_class, uint16_t filter_value) { - struct usb_setup_packet *setup = cdc_ecm_class->hport->setup; + struct usb_setup_packet *setup; + + if (!cdc_ecm_class || !cdc_ecm_class->hport) { + return -USB_ERR_INVAL; + } + setup = cdc_ecm_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CDC_REQUEST_SET_ETHERNET_PACKET_FILTER; @@ -188,7 +193,7 @@ get_mac: } USB_LOG_INFO("Set CDC ECM packet filter:%04x\r\n", CONFIG_USBHOST_CDC_ECM_PKT_FILTER); - memcpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); + strncpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); USB_LOG_INFO("Register CDC ECM Class:%s\r\n", hport->config.intf[intf].devname); @@ -246,30 +251,33 @@ find_class: usb_osal_msleep(100); goto find_class; } + usb_osal_msleep(128); } g_cdc_ecm_rx_length = 0; while (1) { - usbh_bulk_urb_fill(&g_cdc_ecm_class.bulkin_urb, g_cdc_ecm_class.hport, g_cdc_ecm_class.bulkin, &g_cdc_ecm_rx_buffer[g_cdc_ecm_rx_length], CONFIG_USBHOST_CDC_ECM_ETH_MAX_SIZE, USB_OSAL_WAITING_FOREVER, NULL, NULL); + usbh_bulk_urb_fill(&g_cdc_ecm_class.bulkin_urb, g_cdc_ecm_class.hport, g_cdc_ecm_class.bulkin, g_cdc_ecm_rx_buffer, CONFIG_USBHOST_CDC_ECM_ETH_MAX_SIZE, USB_OSAL_WAITING_FOREVER, NULL, NULL); ret = usbh_submit_urb(&g_cdc_ecm_class.bulkin_urb); if (ret < 0) { goto find_class; } - g_cdc_ecm_rx_length += g_cdc_ecm_class.bulkin_urb.actual_length; + g_cdc_ecm_rx_length = g_cdc_ecm_class.bulkin_urb.actual_length; - if (g_cdc_ecm_rx_length % USB_GET_MAXPACKETSIZE(g_cdc_ecm_class.bulkin->wMaxPacketSize)) { + /* A transfer is complete because last packet is a short packet. + * Short packet is not zero, match g_cdc_ecm_rx_length % USB_GET_MAXPACKETSIZE(g_cdc_ecm_class.bulkin->wMaxPacketSize). + * Short packet is zero, check if g_cdc_ecm_class.bulkin_urb.actual_length < transfer_size, for example transfer is complete with size is 512 < 1514. + * This case is always true + */ + if (g_cdc_ecm_rx_length % USB_GET_MAXPACKETSIZE(g_cdc_ecm_class.bulkin->wMaxPacketSize) || + (g_cdc_ecm_class.bulkin_urb.actual_length < CONFIG_USBHOST_CDC_ECM_ETH_MAX_SIZE)) { USB_LOG_DBG("rxlen:%d\r\n", g_cdc_ecm_rx_length); usbh_cdc_ecm_eth_input(g_cdc_ecm_rx_buffer, g_cdc_ecm_rx_length); g_cdc_ecm_rx_length = 0; } else { - /* read continue util read short packet */ - if (g_cdc_ecm_rx_length > CONFIG_USBHOST_CDC_ECM_ETH_MAX_SIZE) { - USB_LOG_ERR("Rx packet is overflow\r\n"); - g_cdc_ecm_rx_length = 0; - } + /* There's no way to run here. */ } } // clang-format off @@ -279,16 +287,17 @@ delete: // clang-format on } -int usbh_cdc_ecm_eth_output(uint8_t *buf, uint32_t buflen) +uint8_t *usbh_cdc_ecm_get_eth_txbuf(void) { - uint8_t *buffer = g_cdc_ecm_tx_buffer; + return g_cdc_ecm_tx_buffer; +} +int usbh_cdc_ecm_eth_output(uint32_t buflen) +{ if (g_cdc_ecm_class.connect_status == false) { return -USB_ERR_NOTCONN; } - memcpy(buffer, buf, buflen); - USB_LOG_DBG("txlen:%d\r\n", buflen); usbh_bulk_urb_fill(&g_cdc_ecm_class.bulkout_urb, g_cdc_ecm_class.hport, g_cdc_ecm_class.bulkout, g_cdc_ecm_tx_buffer, buflen, USB_OSAL_WAITING_FOREVER, NULL, NULL); diff --git a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ecm.h b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ecm.h index d965ac88a5..6e8dbc7f95 100644 --- a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ecm.h +++ b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ecm.h @@ -38,7 +38,8 @@ int usbh_cdc_ecm_get_connect_status(struct usbh_cdc_ecm *cdc_ecm_class); void usbh_cdc_ecm_run(struct usbh_cdc_ecm *cdc_ecm_class); void usbh_cdc_ecm_stop(struct usbh_cdc_ecm *cdc_ecm_class); -int usbh_cdc_ecm_eth_output(uint8_t *buf, uint32_t buflen); +uint8_t *usbh_cdc_ecm_get_eth_txbuf(void); +int usbh_cdc_ecm_eth_output(uint32_t buflen); void usbh_cdc_ecm_eth_input(uint8_t *buf, uint32_t buflen); void usbh_cdc_ecm_rx_thread(void *argument); diff --git a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ncm.c b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ncm.c index 4f13f791ea..99e8871e96 100644 --- a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ncm.c +++ b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ncm.c @@ -33,9 +33,14 @@ static struct usbh_cdc_ncm g_cdc_ncm_class; static int usbh_cdc_ncm_get_ntb_parameters(struct usbh_cdc_ncm *cdc_ncm_class, struct cdc_ncm_ntb_parameters *param) { - struct usb_setup_packet *setup = cdc_ncm_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!cdc_ncm_class || !cdc_ncm_class->hport) { + return -USB_ERR_INVAL; + } + setup = cdc_ncm_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CDC_REQUEST_GET_NTB_PARAMETERS; setup->wValue = 0; @@ -206,7 +211,7 @@ get_mac: } } - memcpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); + strncpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); USB_LOG_INFO("Register CDC NCM Class:%s\r\n", hport->config.intf[intf].devname); @@ -248,6 +253,11 @@ void usbh_cdc_ncm_rx_thread(void *argument) { uint32_t g_cdc_ncm_rx_length; int ret; +#if CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE <= (16 * 1024) + uint32_t transfer_size = CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE; +#else + uint32_t transfer_size = (16 * 1024); +#endif USB_LOG_INFO("Create cdc ncm rx thread\r\n"); // clang-format off @@ -268,7 +278,7 @@ find_class: g_cdc_ncm_rx_length = 0; while (1) { - usbh_bulk_urb_fill(&g_cdc_ncm_class.bulkin_urb, g_cdc_ncm_class.hport, g_cdc_ncm_class.bulkin, &g_cdc_ncm_rx_buffer[g_cdc_ncm_rx_length], (CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE > (16 * 1024)) ? (16 * 1024) : CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE, USB_OSAL_WAITING_FOREVER, NULL, NULL); + usbh_bulk_urb_fill(&g_cdc_ncm_class.bulkin_urb, g_cdc_ncm_class.hport, g_cdc_ncm_class.bulkin, &g_cdc_ncm_rx_buffer[g_cdc_ncm_rx_length], transfer_size, USB_OSAL_WAITING_FOREVER, NULL, NULL); ret = usbh_submit_urb(&g_cdc_ncm_class.bulkin_urb); if (ret < 0) { goto find_class; @@ -276,7 +286,12 @@ find_class: g_cdc_ncm_rx_length += g_cdc_ncm_class.bulkin_urb.actual_length; - if (g_cdc_ncm_rx_length % USB_GET_MAXPACKETSIZE(g_cdc_ncm_class.bulkin->wMaxPacketSize)) { + /* A transfer is complete because last packet is a short packet. + * Short packet is not zero, match g_cdc_ncm_rx_length % USB_GET_MAXPACKETSIZE(g_cdc_ncm_class.bulkin->wMaxPacketSize). + * Short packet is zero, check if g_cdc_ncm_class.bulkin_urb.actual_length < transfer_size, for example transfer is complete with size is 1024 < 2048. + */ + if ((g_cdc_ncm_rx_length % USB_GET_MAXPACKETSIZE(g_cdc_ncm_class.bulkin->wMaxPacketSize)) || + (g_cdc_ncm_class.bulkin_urb.actual_length < transfer_size)) { USB_LOG_DBG("rxlen:%d\r\n", g_cdc_ncm_rx_length); struct cdc_ncm_nth16 *nth16 = (struct cdc_ncm_nth16 *)&g_cdc_ncm_rx_buffer[0]; @@ -309,11 +324,15 @@ find_class: } g_cdc_ncm_rx_length = 0; - } else { - if (g_cdc_ncm_rx_length > CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE) { - USB_LOG_ERR("Rx packet is overflow\r\n"); - g_cdc_ncm_rx_length = 0; +#if CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE <= (16 * 1024) + if (g_cdc_ncm_rx_length == CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE) { +#else + if ((g_cdc_ncm_rx_length + (16 * 1024)) > CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE) { +#endif + USB_LOG_ERR("Rx packet is overflow, please ruduce tcp window size or increase CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE\r\n"); + while (1) { + } } } } @@ -324,9 +343,13 @@ delete: // clang-format on } -int usbh_cdc_ncm_eth_output(uint8_t *buf, uint32_t buflen) +uint8_t *usbh_cdc_ncm_get_eth_txbuf(void) +{ + return &g_cdc_ncm_tx_buffer[16]; +} + +int usbh_cdc_ncm_eth_output(uint32_t buflen) { - uint8_t *buffer; struct cdc_ncm_ndp16_datagram *ndp16_datagram; if (g_cdc_ncm_class.connect_status == false) { @@ -355,9 +378,6 @@ int usbh_cdc_ncm_eth_output(uint8_t *buf, uint32_t buflen) ndp16_datagram->wDatagramIndex = 0; ndp16_datagram->wDatagramLength = 0; - buffer = &g_cdc_ncm_tx_buffer[16]; - memcpy(buffer, buf, buflen); - USB_LOG_DBG("txlen:%d\r\n", nth16->wBlockLength); usbh_bulk_urb_fill(&g_cdc_ncm_class.bulkout_urb, g_cdc_ncm_class.hport, g_cdc_ncm_class.bulkout, g_cdc_ncm_tx_buffer, nth16->wBlockLength, USB_OSAL_WAITING_FOREVER, NULL, NULL); diff --git a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ncm.h b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ncm.h index 5f069401fa..e9b3e8e055 100644 --- a/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ncm.h +++ b/components/drivers/usb/cherryusb/class/cdc/usbh_cdc_ncm.h @@ -42,7 +42,8 @@ int usbh_cdc_ncm_get_connect_status(struct usbh_cdc_ncm *cdc_ncm_class); void usbh_cdc_ncm_run(struct usbh_cdc_ncm *cdc_ncm_class); void usbh_cdc_ncm_stop(struct usbh_cdc_ncm *cdc_ncm_class); -int usbh_cdc_ncm_eth_output(uint8_t *buf, uint32_t buflen); +uint8_t *usbh_cdc_ncm_get_eth_txbuf(void); +int usbh_cdc_ncm_eth_output(uint32_t buflen); void usbh_cdc_ncm_eth_input(uint8_t *buf, uint32_t buflen); void usbh_cdc_ncm_rx_thread(void *argument); diff --git a/components/drivers/usb/cherryusb/class/hid/usbh_hid.c b/components/drivers/usb/cherryusb/class/hid/usbh_hid.c index f3b2546f22..1761ba6f58 100644 --- a/components/drivers/usb/cherryusb/class/hid/usbh_hid.c +++ b/components/drivers/usb/cherryusb/class/hid/usbh_hid.c @@ -44,9 +44,14 @@ static void usbh_hid_class_free(struct usbh_hid *hid_class) static int usbh_hid_get_report_descriptor(struct usbh_hid *hid_class, uint8_t *buffer) { - struct usb_setup_packet *setup = hid_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!hid_class || !hid_class->hport) { + return -USB_ERR_INVAL; + } + setup = hid_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_STANDARD | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = USB_REQUEST_GET_DESCRIPTOR; setup->wValue = HID_DESCRIPTOR_TYPE_HID_REPORT << 8; @@ -63,7 +68,12 @@ static int usbh_hid_get_report_descriptor(struct usbh_hid *hid_class, uint8_t *b int usbh_hid_set_idle(struct usbh_hid *hid_class, uint8_t report_id, uint8_t duration) { - struct usb_setup_packet *setup = hid_class->hport->setup; + struct usb_setup_packet *setup; + + if (!hid_class || !hid_class->hport) { + return -USB_ERR_INVAL; + } + setup = hid_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = HID_REQUEST_SET_IDLE; @@ -76,9 +86,14 @@ int usbh_hid_set_idle(struct usbh_hid *hid_class, uint8_t report_id, uint8_t dur int usbh_hid_get_idle(struct usbh_hid *hid_class, uint8_t *buffer) { - struct usb_setup_packet *setup = hid_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!hid_class || !hid_class->hport) { + return -USB_ERR_INVAL; + } + setup = hid_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = HID_REQUEST_GET_IDLE; setup->wValue = 0; @@ -95,7 +110,12 @@ int usbh_hid_get_idle(struct usbh_hid *hid_class, uint8_t *buffer) int usbh_hid_set_protocol(struct usbh_hid *hid_class, uint8_t protocol) { - struct usb_setup_packet *setup = hid_class->hport->setup; + struct usb_setup_packet *setup; + + if (!hid_class || !hid_class->hport) { + return -USB_ERR_INVAL; + } + setup = hid_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = HID_REQUEST_SET_PROTOCOL; @@ -108,7 +128,12 @@ int usbh_hid_set_protocol(struct usbh_hid *hid_class, uint8_t protocol) int usbh_hid_set_report(struct usbh_hid *hid_class, uint8_t report_type, uint8_t report_id, uint8_t *buffer, uint32_t buflen) { - struct usb_setup_packet *setup = hid_class->hport->setup; + struct usb_setup_packet *setup; + + if (!hid_class || !hid_class->hport) { + return -USB_ERR_INVAL; + } + setup = hid_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = HID_REQUEST_SET_REPORT; @@ -121,7 +146,12 @@ int usbh_hid_set_report(struct usbh_hid *hid_class, uint8_t report_type, uint8_t int usbh_hid_get_report(struct usbh_hid *hid_class, uint8_t report_type, uint8_t report_id, uint8_t *buffer, uint32_t buflen) { - struct usb_setup_packet *setup = hid_class->hport->setup; + struct usb_setup_packet *setup; + + if (!hid_class || !hid_class->hport) { + return -USB_ERR_INVAL; + } + setup = hid_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = HID_REQUEST_GET_REPORT; diff --git a/components/drivers/usb/cherryusb/class/hub/usbh_hub.c b/components/drivers/usb/cherryusb/class/hub/usbh_hub.c index 6755b8594c..1745d8c0b3 100644 --- a/components/drivers/usb/cherryusb/class/hub/usbh_hub.c +++ b/components/drivers/usb/cherryusb/class/hub/usbh_hub.c @@ -27,13 +27,6 @@ extern void usbh_hubport_release(struct usbh_hubport *hport); static const char *speed_table[] = { "error-speed", "low-speed", "full-speed", "high-speed", "wireless-speed", "super-speed", "superplus-speed" }; -#ifdef CONFIG_USBHOST_XHCI -struct usbh_hubport *usbh_get_roothub_port(unsigned int port) -{ - return &roothub.child[port - 1]; -} -#endif - #if CONFIG_USBHOST_MAX_EXTHUBS > 0 static struct usbh_hub g_hub_class[CONFIG_USBHOST_MAX_EXTHUBS]; static uint32_t g_devinuse = 0; @@ -373,8 +366,6 @@ static int usbh_hub_connect(struct usbh_hubport *hport, uint8_t intf) hub->connected = true; snprintf(hport->config.intf[intf].devname, CONFIG_USBHOST_DEV_NAMELEN, DEV_FORMAT, hub->index); - usb_slist_add_tail(&hub->bus->hub_list, &hub->list); - USB_LOG_INFO("Register HUB Class:%s\r\n", hport->config.intf[intf].devname); hub->int_buffer = g_hub_intbuf[hub->bus->busid][hub->index - 1]; @@ -412,7 +403,6 @@ static int usbh_hub_disconnect(struct usbh_hubport *hport, uint8_t intf) if (hport->config.intf[intf].devname[0] != '\0') { USB_LOG_INFO("Unregister HUB Class:%s\r\n", hport->config.intf[intf].devname); - usb_slist_remove(&hub->bus->hub_list, &hub->list); } usbh_hub_class_free(hub); @@ -421,18 +411,6 @@ static int usbh_hub_disconnect(struct usbh_hubport *hport, uint8_t intf) } #endif -static void usbh_hubport_enumerate_thread(void *argument) -{ - struct usbh_hubport *child = (struct usbh_hubport *)argument; - - if (usbh_enumerate(child) < 0) { - /** release child sources */ - usbh_hubport_release(child); - USB_LOG_ERR("Port %u enumerate fail\r\n", child->port); - } - usb_osal_thread_delete(NULL); -} - static void usbh_hub_events(struct usbh_hub *hub) { struct usbh_hubport *child; @@ -444,13 +422,16 @@ static void usbh_hub_events(struct usbh_hub *hub) uint16_t feat; uint8_t speed; int ret; + size_t flags; if (!hub->connected) { return; } + flags = usb_osal_enter_critical_section(); portchange_index = hub->int_buffer[0]; hub->int_buffer[0] &= ~portchange_index; + usb_osal_leave_critical_section(flags); for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) { USB_LOG_DBG("Port change:0x%02x\r\n", portchange_index); @@ -562,25 +543,9 @@ static void usbh_hub_events(struct usbh_hub *hub) speed = USB_SPEED_HIGH; } else if (portstatus & HUB_PORT_STATUS_LOW_SPEED) { speed = USB_SPEED_LOW; - } -#ifdef CONFIG_USBHOST_XHCI - else { - extern uint8_t usbh_get_port_speed(struct usbh_hub * hub, const uint8_t port); - - /* USB3.0 speed cannot get from portstatus, checkout port speed instead */ - uint8_t super_speed = usbh_get_port_speed(hub, port + 1); - if (super_speed > USB_SPEED_HIGH) { - /* assert that when using USB 3.0 ports, attached device must also be USB 3.0 speed */ - speed = super_speed; - } else { - speed = USB_SPEED_FULL; - } - } -#else - else { + } else { speed = USB_SPEED_FULL; } -#endif child = &hub->child[port]; /** release child sources first */ @@ -596,8 +561,11 @@ static void usbh_hub_events(struct usbh_hub *hub) USB_LOG_INFO("New %s device on Bus %u, Hub %u, Port %u connected\r\n", speed_table[speed], hub->bus->busid, hub->index, port + 1); - /* create disposable thread to enumerate device on current hport, do not block hub thread */ - usb_osal_thread_create("usbh_enum", CONFIG_USBHOST_PSC_STACKSIZE, CONFIG_USBHOST_PSC_PRIO + 1, usbh_hubport_enumerate_thread, (void *)child); + if (usbh_enumerate(child) < 0) { + /** release child sources */ + usbh_hubport_release(child); + USB_LOG_ERR("Port %u enumerate fail\r\n", child->port); + } } else { child = &hub->child[port]; /** release child sources */ @@ -648,6 +616,17 @@ void usbh_hub_thread_wakeup(struct usbh_hub *hub) int usbh_hub_initialize(struct usbh_bus *bus) { char thread_name[32] = { 0 }; + struct usbh_hub *hub; + + hub = &bus->hcd.roothub; + hub->connected = true; + hub->index = 1; + hub->is_roothub = true; + hub->parent = NULL; + hub->hub_addr = 1; + hub->hub_desc.bNbrPorts = CONFIG_USBHOST_MAX_RHPORTS; + hub->int_buffer = bus->hcd.roothub_intbuf; + hub->bus = bus; bus->hub_mq = usb_osal_mq_create(7); if (bus->hub_mq == NULL) { @@ -666,21 +645,17 @@ int usbh_hub_initialize(struct usbh_bus *bus) int usbh_hub_deinitialize(struct usbh_bus *bus) { - usb_slist_t *hub_list; struct usbh_hubport *hport; + struct usbh_hub *hub; size_t flags; flags = usb_osal_enter_critical_section(); - usb_slist_for_each(hub_list, &bus->hub_list) - { - struct usbh_hub *hub = usb_slist_entry(hub_list, struct usbh_hub, list); + hub = &bus->hcd.roothub; + for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) { + hport = &hub->child[port]; - for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) { - hport = &hub->child[port]; - - usbh_hubport_release(hport); - } + usbh_hubport_release(hport); } usb_hc_deinit(bus); diff --git a/components/drivers/usb/cherryusb/class/msc/usbh_msc.c b/components/drivers/usb/cherryusb/class/msc/usbh_msc.c index 71e8e53370..42e12d9cb5 100644 --- a/components/drivers/usb/cherryusb/class/msc/usbh_msc.c +++ b/components/drivers/usb/cherryusb/class/msc/usbh_msc.c @@ -13,6 +13,8 @@ #define DEV_FORMAT "/dev/sd%c" +#define MSC_INQUIRY_TIMEOUT 500 + USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_msc_buf[64]; static struct usbh_msc g_msc_class[CONFIG_USBHOST_MAX_MSC_CLASS]; @@ -46,7 +48,12 @@ static void usbh_msc_class_free(struct usbh_msc *msc_class) static int usbh_msc_get_maxlun(struct usbh_msc *msc_class, uint8_t *buffer) { - struct usb_setup_packet *setup = msc_class->hport->setup; + struct usb_setup_packet *setup; + + if (!msc_class || !msc_class->hport) { + return -USB_ERR_INVAL; + } + setup = msc_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = MSC_REQUEST_GET_MAX_LUN; @@ -113,14 +120,14 @@ static inline int usbh_msc_bulk_out_transfer(struct usbh_msc *msc_class, uint8_t return ret; } -static int usbh_bulk_cbw_csw_xfer(struct usbh_msc *msc_class, struct CBW *cbw, struct CSW *csw, uint8_t *buffer) +static int usbh_bulk_cbw_csw_xfer(struct usbh_msc *msc_class, struct CBW *cbw, struct CSW *csw, uint8_t *buffer, uint32_t timeout) { int nbytes; usbh_msc_cbw_dump(cbw); /* Send the CBW */ - nbytes = usbh_msc_bulk_out_transfer(msc_class, (uint8_t *)cbw, USB_SIZEOF_MSC_CBW, CONFIG_USBHOST_MSC_TIMEOUT); + nbytes = usbh_msc_bulk_out_transfer(msc_class, (uint8_t *)cbw, USB_SIZEOF_MSC_CBW, timeout); if (nbytes < 0) { USB_LOG_ERR("cbw transfer error\r\n"); goto __err_exit; @@ -128,16 +135,16 @@ static int usbh_bulk_cbw_csw_xfer(struct usbh_msc *msc_class, struct CBW *cbw, s if (cbw->dDataLength != 0) { if (cbw->CB[0] == SCSI_CMD_WRITE10) { - nbytes = usbh_msc_bulk_out_transfer(msc_class, buffer, cbw->dDataLength, CONFIG_USBHOST_MSC_TIMEOUT); + nbytes = usbh_msc_bulk_out_transfer(msc_class, buffer, cbw->dDataLength, timeout); } else if (cbw->CB[0] == SCSI_CMD_READCAPACITY10) { - nbytes = usbh_msc_bulk_in_transfer(msc_class, buffer, cbw->dDataLength, CONFIG_USBHOST_MSC_TIMEOUT); + nbytes = usbh_msc_bulk_in_transfer(msc_class, buffer, cbw->dDataLength, timeout); if (nbytes >= 0) { /* Save the capacity information */ msc_class->blocknum = GET_BE32(&buffer[0]) + 1; msc_class->blocksize = GET_BE32(&buffer[4]); } } else { - nbytes = usbh_msc_bulk_in_transfer(msc_class, buffer, cbw->dDataLength, CONFIG_USBHOST_MSC_TIMEOUT); + nbytes = usbh_msc_bulk_in_transfer(msc_class, buffer, cbw->dDataLength, timeout); } if (nbytes < 0) { @@ -148,7 +155,7 @@ static int usbh_bulk_cbw_csw_xfer(struct usbh_msc *msc_class, struct CBW *cbw, s /* Receive the CSW */ memset(csw, 0, USB_SIZEOF_MSC_CSW); - nbytes = usbh_msc_bulk_in_transfer(msc_class, (uint8_t *)csw, USB_SIZEOF_MSC_CSW, CONFIG_USBHOST_MSC_TIMEOUT); + nbytes = usbh_msc_bulk_in_transfer(msc_class, (uint8_t *)csw, USB_SIZEOF_MSC_CSW, timeout); if (nbytes < 0) { USB_LOG_ERR("csw transfer error\r\n"); goto __err_exit; @@ -182,7 +189,7 @@ static inline int usbh_msc_scsi_testunitready(struct usbh_msc *msc_class) cbw->bCBLength = SCSICMD_TESTUNITREADY_SIZEOF; cbw->CB[0] = SCSI_CMD_TESTUNITREADY; - return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, NULL); + return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, NULL, MSC_INQUIRY_TIMEOUT); } static inline int usbh_msc_scsi_requestsense(struct usbh_msc *msc_class) @@ -200,7 +207,7 @@ static inline int usbh_msc_scsi_requestsense(struct usbh_msc *msc_class) cbw->CB[0] = SCSI_CMD_REQUESTSENSE; cbw->CB[4] = SCSIRESP_FIXEDSENSEDATA_SIZEOF; - return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, g_msc_buf); + return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, g_msc_buf, MSC_INQUIRY_TIMEOUT); } static inline int usbh_msc_scsi_inquiry(struct usbh_msc *msc_class) @@ -218,7 +225,7 @@ static inline int usbh_msc_scsi_inquiry(struct usbh_msc *msc_class) cbw->CB[0] = SCSI_CMD_INQUIRY; cbw->CB[4] = SCSIRESP_INQUIRY_SIZEOF; - return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, g_msc_buf); + return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, g_msc_buf, MSC_INQUIRY_TIMEOUT); } static inline int usbh_msc_scsi_readcapacity10(struct usbh_msc *msc_class) @@ -235,7 +242,7 @@ static inline int usbh_msc_scsi_readcapacity10(struct usbh_msc *msc_class) cbw->bCBLength = SCSICMD_READCAPACITY10_SIZEOF; cbw->CB[0] = SCSI_CMD_READCAPACITY10; - return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, g_msc_buf); + return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, g_msc_buf, MSC_INQUIRY_TIMEOUT); } static inline void usbh_msc_modeswitch(struct usbh_msc *msc_class, const uint8_t *message) @@ -247,7 +254,7 @@ static inline void usbh_msc_modeswitch(struct usbh_msc *msc_class, const uint8_t memcpy(g_msc_buf, message, 31); - usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, NULL); + usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, NULL, MSC_INQUIRY_TIMEOUT); } static int usbh_msc_connect(struct usbh_hubport *hport, uint8_t intf) @@ -380,7 +387,7 @@ int usbh_msc_scsi_write10(struct usbh_msc *msc_class, uint32_t start_sector, con SET_BE32(&cbw->CB[2], start_sector); SET_BE16(&cbw->CB[7], nsectors); - return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, (uint8_t *)buffer); + return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, (uint8_t *)buffer, CONFIG_USBHOST_MSC_TIMEOUT); } int usbh_msc_scsi_read10(struct usbh_msc *msc_class, uint32_t start_sector, const uint8_t *buffer, uint32_t nsectors) @@ -400,7 +407,7 @@ int usbh_msc_scsi_read10(struct usbh_msc *msc_class, uint32_t start_sector, cons SET_BE32(&cbw->CB[2], start_sector); SET_BE16(&cbw->CB[7], nsectors); - return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, (uint8_t *)buffer); + return usbh_bulk_cbw_csw_xfer(msc_class, cbw, (struct CSW *)g_msc_buf, (uint8_t *)buffer, CONFIG_USBHOST_MSC_TIMEOUT); } void usbh_msc_modeswitch_enable(struct usbh_msc_modeswitch_config *config) diff --git a/components/drivers/usb/cherryusb/class/vendor/net/usbh_asix.c b/components/drivers/usb/cherryusb/class/vendor/net/usbh_asix.c index 62d78ec377..9d3e973f22 100644 --- a/components/drivers/usb/cherryusb/class/vendor/net/usbh_asix.c +++ b/components/drivers/usb/cherryusb/class/vendor/net/usbh_asix.c @@ -14,10 +14,9 @@ #define DEV_FORMAT "/dev/asix" static struct usbh_asix g_asix_class; -#define CONFIG_USBHOST_ASIX_ETH_MAX_SIZE (1514U + 8) -static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_rx_buffer[CONFIG_USBHOST_ASIX_ETH_MAX_SIZE]; -static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_tx_buffer[CONFIG_USBHOST_ASIX_ETH_MAX_SIZE]; +static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_rx_buffer[CONFIG_USBHOST_ASIX_ETH_MAX_TX_SIZE]; +static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_tx_buffer[CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE]; static USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_inttx_buffer[16]; USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t g_asix_buf[32]; @@ -56,9 +55,14 @@ static int usbh_asix_read_cmd(struct usbh_asix *asix_class, void *data, uint16_t size) { - struct usb_setup_packet *setup = asix_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!asix_class || !asix_class->hport) { + return -USB_ERR_INVAL; + } + setup = asix_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = cmd; setup->wValue = value; @@ -81,7 +85,12 @@ static int usbh_asix_write_cmd(struct usbh_asix *asix_class, void *data, uint16_t size) { - struct usb_setup_packet *setup = asix_class->hport->setup; + struct usb_setup_packet *setup; + + if (!asix_class || !asix_class->hport) { + return -USB_ERR_INVAL; + } + setup = asix_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = cmd; @@ -263,6 +272,15 @@ static int usbh_asix_write_gpio(struct usbh_asix *asix_class, uint16_t value, in static void usbh_asix_set_multicast(struct usbh_asix *asix_class) { uint16_t rx_ctl = AX_DEFAULT_RX_CTL | AX_RX_CTL_AM; +#if CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE == 4096 + rx_ctl |= AX_RX_CTL_MFB_4096; +#elif CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE == 8192 + rx_ctl |= AX_RX_CTL_MFB_8192; +#elif CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE == 16384 + rx_ctl |= AX_RX_CTL_MFB_16384; +#else + rx_ctl |= AX_RX_CTL_MFB_2048; +#endif const uint8_t multi_filter[] = { 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x40 }; usbh_asix_write_cmd(asix_class, AX_CMD_WRITE_MULTI_FILTER, 0, 0, (uint8_t *)multi_filter, AX_MCAST_FILTER_SIZE); @@ -589,7 +607,7 @@ static int usbh_asix_connect(struct usbh_hubport *hport, uint8_t intf) USB_LOG_INFO("Init %s done\r\n", asix_class->name); - memcpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); + strncpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); USB_LOG_INFO("Register ASIX Class:%s\r\n", hport->config.intf[intf].devname); usbh_asix_run(asix_class); @@ -655,6 +673,12 @@ void usbh_asix_rx_thread(void *argument) int ret; uint16_t len; uint16_t len_crc; + uint32_t data_offset; +#if CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE <= (16 * 1024) + uint32_t transfer_size = CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE; +#else + uint32_t transfer_size = (16 * 1024); +#endif USB_LOG_INFO("Create asix rx thread\r\n"); // clang-format off @@ -671,11 +695,12 @@ find_class: usb_osal_msleep(100); goto find_class; } + usb_osal_msleep(128); } g_asix_rx_length = 0; while (1) { - usbh_bulk_urb_fill(&g_asix_class.bulkin_urb, g_asix_class.hport, g_asix_class.bulkin, &g_asix_rx_buffer[g_asix_rx_length], CONFIG_USBHOST_ASIX_ETH_MAX_SIZE, USB_OSAL_WAITING_FOREVER, NULL, NULL); + usbh_bulk_urb_fill(&g_asix_class.bulkin_urb, g_asix_class.hport, g_asix_class.bulkin, &g_asix_rx_buffer[g_asix_rx_length], transfer_size, USB_OSAL_WAITING_FOREVER, NULL, NULL); ret = usbh_submit_urb(&g_asix_class.bulkin_urb); if (ret < 0) { goto find_class; @@ -683,24 +708,43 @@ find_class: g_asix_rx_length += g_asix_class.bulkin_urb.actual_length; - if (g_asix_rx_length % USB_GET_MAXPACKETSIZE(g_asix_class.bulkin->wMaxPacketSize)) { - len = ((uint16_t)g_asix_rx_buffer[0] | ((uint16_t)(g_asix_rx_buffer[1]) << 8)) & 0x7ff; - len_crc = g_asix_rx_buffer[2] | ((uint16_t)(g_asix_rx_buffer[3]) << 8); - - if (len != (~len_crc & 0x7ff)) { - USB_LOG_ERR("asix rx header error\r\n"); - continue; - } - + /* A transfer is complete because last packet is a short packet. + * Short packet is not zero, match g_asix_rx_length % USB_GET_MAXPACKETSIZE(g_asix_class.bulkin->wMaxPacketSize). + * Short packet is zero, check if g_asix_class.bulkin_urb.actual_length < transfer_size, for example transfer is complete with size is 1024 < 2048. + */ + if (g_asix_rx_length % USB_GET_MAXPACKETSIZE(g_asix_class.bulkin->wMaxPacketSize) || + (g_asix_class.bulkin_urb.actual_length < transfer_size)) { USB_LOG_DBG("rxlen:%d\r\n", g_asix_rx_length); - uint8_t *buf = (uint8_t *)&g_asix_rx_buffer[4]; - usbh_asix_eth_input(buf, len); - g_asix_rx_length = 0; + data_offset = 0; + while (g_asix_rx_length > 0) { + len = ((uint16_t)g_asix_rx_buffer[data_offset + 0] | ((uint16_t)(g_asix_rx_buffer[data_offset + 1]) << 8)) & 0x7ff; + len_crc = g_asix_rx_buffer[data_offset + 2] | ((uint16_t)(g_asix_rx_buffer[data_offset + 3]) << 8); + + if (len != (~len_crc & 0x7ff)) { + USB_LOG_ERR("rx header error\r\n"); + g_asix_rx_length = 0; + continue; + } + + uint8_t *buf = (uint8_t *)&g_asix_rx_buffer[data_offset + 4]; + usbh_asix_eth_input(buf, len); + g_asix_rx_length -= (len + 4); + data_offset += (len + 4); + + if (g_asix_rx_length < 4) { + g_asix_rx_length = 0; + } + } } else { - if (g_asix_rx_length > CONFIG_USBHOST_ASIX_ETH_MAX_SIZE) { - USB_LOG_ERR("Rx packet is overflow\r\n"); - g_asix_rx_length = 0; +#if CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE <= (16 * 1024) + if (g_asix_rx_length == CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE) { +#else + if ((g_asix_rx_length + (16 * 1024)) > CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE) { +#endif + USB_LOG_ERR("Rx packet is overflow, please ruduce tcp window size or increase CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE\r\n"); + while (1) { + } } } } @@ -711,18 +755,19 @@ delete: // clang-format on } -int usbh_asix_eth_output(uint8_t *buf, uint32_t buflen) +uint8_t *usbh_asix_get_eth_txbuf(void) +{ + return &g_asix_tx_buffer[4]; +} + +int usbh_asix_eth_output(uint32_t buflen) { uint16_t actual_len; - uint8_t *buffer; if (g_asix_class.connect_status == false) { return -USB_ERR_NOTCONN; } - buffer = &g_asix_tx_buffer[4]; - memcpy(buffer, buf, buflen); - g_asix_tx_buffer[0] = buflen & 0xff; g_asix_tx_buffer[1] = (buflen >> 8) & 0xff; g_asix_tx_buffer[2] = ~g_asix_tx_buffer[0]; diff --git a/components/drivers/usb/cherryusb/class/vendor/net/usbh_asix.h b/components/drivers/usb/cherryusb/class/vendor/net/usbh_asix.h index 9f34e570a6..8b0b5d98fd 100644 --- a/components/drivers/usb/cherryusb/class/vendor/net/usbh_asix.h +++ b/components/drivers/usb/cherryusb/class/vendor/net/usbh_asix.h @@ -165,7 +165,8 @@ int usbh_asix_get_connect_status(struct usbh_asix *asix_class); void usbh_asix_run(struct usbh_asix *asix_class); void usbh_asix_stop(struct usbh_asix *asix_class); -int usbh_asix_eth_output(uint8_t *buf, uint32_t buflen); +uint8_t *usbh_asix_get_eth_txbuf(void); +int usbh_asix_eth_output(uint32_t buflen); void usbh_asix_eth_input(uint8_t *buf, uint32_t buflen); void usbh_asix_rx_thread(void *argument); diff --git a/components/drivers/usb/cherryusb/class/vendor/net/usbh_rtl8152.c b/components/drivers/usb/cherryusb/class/vendor/net/usbh_rtl8152.c index 3bd68a1dfd..dde665db1e 100644 --- a/components/drivers/usb/cherryusb/class/vendor/net/usbh_rtl8152.c +++ b/components/drivers/usb/cherryusb/class/vendor/net/usbh_rtl8152.c @@ -946,9 +946,14 @@ static int usbh_rtl8152_read_regs(struct usbh_rtl8152 *rtl8152_class, uint16_t size, void *data) { - struct usb_setup_packet *setup = rtl8152_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!rtl8152_class || !rtl8152_class->hport) { + return -USB_ERR_INVAL; + } + setup = rtl8152_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = RTL8152_REQ_GET_REGS; setup->wValue = value; @@ -970,7 +975,12 @@ static int usbh_rtl8152_write_regs(struct usbh_rtl8152 *rtl8152_class, uint16_t size, void *data) { - struct usb_setup_packet *setup = rtl8152_class->hport->setup; + struct usb_setup_packet *setup; + + if (!rtl8152_class || !rtl8152_class->hport) { + return -USB_ERR_INVAL; + } + setup = rtl8152_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = RTL8152_REQ_SET_REGS; @@ -2080,7 +2090,7 @@ static int usbh_rtl8152_connect(struct usbh_hubport *hport, uint8_t intf) } } - memcpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); + strncpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); USB_LOG_INFO("Register RTL8152 Class:%s\r\n", hport->config.intf[intf].devname); @@ -2124,6 +2134,11 @@ void usbh_rtl8152_rx_thread(void *argument) int ret; uint16_t len; uint16_t data_offset; +#if CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE <= (16 * 1024) + uint32_t transfer_size = CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE; +#else + uint32_t transfer_size = (16 * 1024); +#endif USB_LOG_INFO("Create rtl8152 rx thread\r\n"); // clang-format off @@ -2154,7 +2169,7 @@ find_class: g_rtl8152_rx_length = 0; while (1) { - usbh_bulk_urb_fill(&g_rtl8152_class.bulkin_urb, g_rtl8152_class.hport, g_rtl8152_class.bulkin, &g_rtl8152_rx_buffer[g_rtl8152_rx_length], (CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE > (16 * 1024)) ? (16 * 1024) : CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE, USB_OSAL_WAITING_FOREVER, NULL, NULL); + usbh_bulk_urb_fill(&g_rtl8152_class.bulkin_urb, g_rtl8152_class.hport, g_rtl8152_class.bulkin, &g_rtl8152_rx_buffer[g_rtl8152_rx_length], transfer_size, USB_OSAL_WAITING_FOREVER, NULL, NULL); ret = usbh_submit_urb(&g_rtl8152_class.bulkin_urb); if (ret < 0) { goto find_class; @@ -2162,7 +2177,12 @@ find_class: g_rtl8152_rx_length += g_rtl8152_class.bulkin_urb.actual_length; - if (g_rtl8152_rx_length % USB_GET_MAXPACKETSIZE(g_rtl8152_class.bulkin->wMaxPacketSize)) { + /* A transfer is complete because last packet is a short packet. + * Short packet is not zero, match g_rtl8152_rx_length % USB_GET_MAXPACKETSIZE(g_rtl8152_class.bulkin->wMaxPacketSize). + * Short packet is zero, check if g_rtl8152_class.bulkin_urb.actual_length < transfer_size, for example transfer is complete with size is 1024 < 2048. + */ + if (g_rtl8152_rx_length % USB_GET_MAXPACKETSIZE(g_rtl8152_class.bulkin->wMaxPacketSize) || + (g_rtl8152_class.bulkin_urb.actual_length < transfer_size)) { data_offset = 0; USB_LOG_DBG("rxlen:%d\r\n", g_rtl8152_rx_length); @@ -2185,9 +2205,14 @@ find_class: } } } else { - if (g_rtl8152_rx_length > CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE) { - USB_LOG_ERR("Rx packet is overflow\r\n"); - g_rtl8152_rx_length = 0; +#if CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE <= (16 * 1024) + if (g_rtl8152_rx_length == CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE) { +#else + if ((g_rtl8152_rx_length + (16 * 1024)) > CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE) { +#endif + USB_LOG_ERR("Rx packet is overflow, please ruduce tcp window size or increase CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE\r\n"); + while (1) { + } } } } @@ -2198,9 +2223,13 @@ delete: // clang-format on } -int usbh_rtl8152_eth_output(uint8_t *buf, uint32_t buflen) +uint8_t *usbh_rtl8152_get_eth_txbuf(void) +{ + return (g_rtl8152_tx_buffer + sizeof(struct tx_desc)); +} + +int usbh_rtl8152_eth_output(uint32_t buflen) { - uint8_t *buffer; struct tx_desc *tx_desc; if (g_rtl8152_class.connect_status == false) { @@ -2211,9 +2240,6 @@ int usbh_rtl8152_eth_output(uint8_t *buf, uint32_t buflen) tx_desc->opts1 = buflen | TX_FS | TX_LS; tx_desc->opts2 = 0; - buffer = g_rtl8152_tx_buffer + sizeof(struct tx_desc); - memcpy(buffer, buf, buflen); - USB_LOG_DBG("txlen:%d\r\n", buflen + sizeof(struct tx_desc)); usbh_bulk_urb_fill(&g_rtl8152_class.bulkout_urb, g_rtl8152_class.hport, g_rtl8152_class.bulkout, g_rtl8152_tx_buffer, buflen + sizeof(struct tx_desc), USB_OSAL_WAITING_FOREVER, NULL, NULL); diff --git a/components/drivers/usb/cherryusb/class/vendor/net/usbh_rtl8152.h b/components/drivers/usb/cherryusb/class/vendor/net/usbh_rtl8152.h index a9aa794355..9d593b9126 100644 --- a/components/drivers/usb/cherryusb/class/vendor/net/usbh_rtl8152.h +++ b/components/drivers/usb/cherryusb/class/vendor/net/usbh_rtl8152.h @@ -56,7 +56,8 @@ int usbh_rtl8152_get_connect_status(struct usbh_rtl8152 *rtl8152_class); void usbh_rtl8152_run(struct usbh_rtl8152 *rtl8152_class); void usbh_rtl8152_stop(struct usbh_rtl8152 *rtl8152_class); -int usbh_rtl8152_eth_output(uint8_t *buf, uint32_t buflen); +uint8_t *usbh_rtl8152_get_eth_txbuf(void); +int usbh_rtl8152_eth_output(uint32_t buflen); void usbh_rtl8152_eth_input(uint8_t *buf, uint32_t buflen); void usbh_rtl8152_rx_thread(void *argument); diff --git a/components/drivers/usb/cherryusb/class/vendor/serial/usbh_ch34x.c b/components/drivers/usb/cherryusb/class/vendor/serial/usbh_ch34x.c index 6321d81339..7c275e170d 100644 --- a/components/drivers/usb/cherryusb/class/vendor/serial/usbh_ch34x.c +++ b/components/drivers/usb/cherryusb/class/vendor/serial/usbh_ch34x.c @@ -90,9 +90,14 @@ static int usbh_ch34x_get_baudrate_div(uint32_t baudrate, uint8_t *factor, uint8 static int usbh_ch34x_get_version(struct usbh_ch34x *ch34x_class) { - struct usb_setup_packet *setup = ch34x_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!ch34x_class || !ch34x_class->hport) { + return -USB_ERR_INVAL; + } + setup = ch34x_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = CH34X_READ_VERSION; setup->wValue = 0; @@ -110,7 +115,12 @@ static int usbh_ch34x_get_version(struct usbh_ch34x *ch34x_class) static int usbh_ch34x_flow_ctrl(struct usbh_ch34x *ch34x_class) { - struct usb_setup_packet *setup = ch34x_class->hport->setup; + struct usb_setup_packet *setup; + + if (!ch34x_class || !ch34x_class->hport) { + return -USB_ERR_INVAL; + } + setup = ch34x_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = CH34X_WRITE_REG; @@ -123,12 +133,17 @@ static int usbh_ch34x_flow_ctrl(struct usbh_ch34x *ch34x_class) int usbh_ch34x_set_line_coding(struct usbh_ch34x *ch34x_class, struct cdc_line_coding *line_coding) { - struct usb_setup_packet *setup = ch34x_class->hport->setup; + struct usb_setup_packet *setup; uint16_t reg_value = 0; uint16_t value = 0; uint8_t factor = 0; uint8_t divisor = 0; + if (!ch34x_class || !ch34x_class->hport) { + return -USB_ERR_INVAL; + } + setup = ch34x_class->hport->setup; + memcpy((uint8_t *)&ch34x_class->line_coding, line_coding, sizeof(struct cdc_line_coding)); /* refer to https://github.com/WCHSoftGroup/ch341ser_linux/blob/main/driver/ch341.c */ @@ -197,7 +212,12 @@ int usbh_ch34x_get_line_coding(struct usbh_ch34x *ch34x_class, struct cdc_line_c int usbh_ch34x_set_line_state(struct usbh_ch34x *ch34x_class, bool dtr, bool rts) { - struct usb_setup_packet *setup = ch34x_class->hport->setup; + struct usb_setup_packet *setup; + + if (!ch34x_class || !ch34x_class->hport) { + return -USB_ERR_INVAL; + } + setup = ch34x_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = CH34X_MODEM_CTRL; diff --git a/components/drivers/usb/cherryusb/class/vendor/serial/usbh_cp210x.c b/components/drivers/usb/cherryusb/class/vendor/serial/usbh_cp210x.c index e27161bdec..ae882fb60f 100644 --- a/components/drivers/usb/cherryusb/class/vendor/serial/usbh_cp210x.c +++ b/components/drivers/usb/cherryusb/class/vendor/serial/usbh_cp210x.c @@ -42,7 +42,12 @@ static void usbh_cp210x_class_free(struct usbh_cp210x *cp210x_class) static int usbh_cp210x_enable(struct usbh_cp210x *cp210x_class) { - struct usb_setup_packet *setup = cp210x_class->hport->setup; + struct usb_setup_packet *setup; + + if (!cp210x_class || !cp210x_class->hport) { + return -USB_ERR_INVAL; + } + setup = cp210x_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CP210X_IFC_ENABLE; @@ -55,7 +60,12 @@ static int usbh_cp210x_enable(struct usbh_cp210x *cp210x_class) static int usbh_cp210x_set_flow(struct usbh_cp210x *cp210x_class) { - struct usb_setup_packet *setup = cp210x_class->hport->setup; + struct usb_setup_packet *setup; + + if (!cp210x_class || !cp210x_class->hport) { + return -USB_ERR_INVAL; + } + setup = cp210x_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CP210X_SET_FLOW; @@ -70,7 +80,12 @@ static int usbh_cp210x_set_flow(struct usbh_cp210x *cp210x_class) static int usbh_cp210x_set_chars(struct usbh_cp210x *cp210x_class) { - struct usb_setup_packet *setup = cp210x_class->hport->setup; + struct usb_setup_packet *setup; + + if (!cp210x_class || !cp210x_class->hport) { + return -USB_ERR_INVAL; + } + setup = cp210x_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CP210X_SET_CHARS; @@ -87,7 +102,12 @@ static int usbh_cp210x_set_chars(struct usbh_cp210x *cp210x_class) static int usbh_cp210x_set_baudrate(struct usbh_cp210x *cp210x_class, uint32_t baudrate) { - struct usb_setup_packet *setup = cp210x_class->hport->setup; + struct usb_setup_packet *setup; + + if (!cp210x_class || !cp210x_class->hport) { + return -USB_ERR_INVAL; + } + setup = cp210x_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CP210X_SET_BAUDRATE; @@ -101,9 +121,14 @@ static int usbh_cp210x_set_baudrate(struct usbh_cp210x *cp210x_class, uint32_t b static int usbh_cp210x_set_data_format(struct usbh_cp210x *cp210x_class, uint8_t databits, uint8_t parity, uint8_t stopbits) { - struct usb_setup_packet *setup = cp210x_class->hport->setup; + struct usb_setup_packet *setup; uint16_t value; + if (!cp210x_class || !cp210x_class->hport) { + return -USB_ERR_INVAL; + } + setup = cp210x_class->hport->setup; + value = ((databits & 0x0F) << 8) | ((parity & 0x0f) << 4) | ((stopbits & 0x03) << 0); setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_INTERFACE; @@ -117,9 +142,14 @@ static int usbh_cp210x_set_data_format(struct usbh_cp210x *cp210x_class, uint8_t static int usbh_cp210x_set_mhs(struct usbh_cp210x *cp210x_class, uint8_t dtr, uint8_t rts, uint8_t dtr_mask, uint8_t rts_mask) { - struct usb_setup_packet *setup = cp210x_class->hport->setup; + struct usb_setup_packet *setup; uint16_t value; + if (!cp210x_class || !cp210x_class->hport) { + return -USB_ERR_INVAL; + } + setup = cp210x_class->hport->setup; + value = ((dtr & 0x01) << 0) | ((rts & 0x01) << 1) | ((dtr_mask & 0x01) << 8) | ((rts_mask & 0x01) << 9); setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_INTERFACE; diff --git a/components/drivers/usb/cherryusb/class/vendor/serial/usbh_ftdi.c b/components/drivers/usb/cherryusb/class/vendor/serial/usbh_ftdi.c index c84d2d8c01..ba5aae5ede 100644 --- a/components/drivers/usb/cherryusb/class/vendor/serial/usbh_ftdi.c +++ b/components/drivers/usb/cherryusb/class/vendor/serial/usbh_ftdi.c @@ -71,7 +71,12 @@ static void usbh_ftdi_caculate_baudrate(uint32_t *itdf_divisor, uint32_t actual_ int usbh_ftdi_reset(struct usbh_ftdi *ftdi_class) { - struct usb_setup_packet *setup = ftdi_class->hport->setup; + struct usb_setup_packet *setup; + + if (!ftdi_class || !ftdi_class->hport) { + return -USB_ERR_INVAL; + } + setup = ftdi_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = SIO_RESET_REQUEST; @@ -84,7 +89,12 @@ int usbh_ftdi_reset(struct usbh_ftdi *ftdi_class) static int usbh_ftdi_set_modem(struct usbh_ftdi *ftdi_class, uint16_t value) { - struct usb_setup_packet *setup = ftdi_class->hport->setup; + struct usb_setup_packet *setup; + + if (!ftdi_class || !ftdi_class->hport) { + return -USB_ERR_INVAL; + } + setup = ftdi_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = SIO_SET_MODEM_CTRL_REQUEST; @@ -97,11 +107,16 @@ static int usbh_ftdi_set_modem(struct usbh_ftdi *ftdi_class, uint16_t value) static int usbh_ftdi_set_baudrate(struct usbh_ftdi *ftdi_class, uint32_t baudrate) { - struct usb_setup_packet *setup = ftdi_class->hport->setup; + struct usb_setup_packet *setup; uint32_t itdf_divisor; uint16_t value; uint8_t baudrate_high; + if (!ftdi_class || !ftdi_class->hport) { + return -USB_ERR_INVAL; + } + setup = ftdi_class->hport->setup; + usbh_ftdi_caculate_baudrate(&itdf_divisor, baudrate); value = itdf_divisor & 0xFFFF; baudrate_high = (itdf_divisor >> 16) & 0xff; @@ -123,10 +138,15 @@ static int usbh_ftdi_set_data_format(struct usbh_ftdi *ftdi_class, uint8_t datab * D11-D12 STOP_BIT_1=0, STOP_BIT_15=1, STOP_BIT_2=2 * D14 BREAK_OFF=0, BREAK_ON=1 **/ + struct usb_setup_packet *setup; + uint16_t value; - uint16_t value = ((isbreak & 0x01) << 14) | ((stopbits & 0x03) << 11) | ((parity & 0x0f) << 8) | (databits & 0x0f); + if (!ftdi_class || !ftdi_class->hport) { + return -USB_ERR_INVAL; + } + setup = ftdi_class->hport->setup; - struct usb_setup_packet *setup = ftdi_class->hport->setup; + value = ((isbreak & 0x01) << 14) | ((stopbits & 0x03) << 11) | ((parity & 0x0f) << 8) | (databits & 0x0f); setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = SIO_SET_DATA_REQUEST; @@ -139,7 +159,12 @@ static int usbh_ftdi_set_data_format(struct usbh_ftdi *ftdi_class, uint8_t datab static int usbh_ftdi_set_latency_timer(struct usbh_ftdi *ftdi_class, uint16_t value) { - struct usb_setup_packet *setup = ftdi_class->hport->setup; + struct usb_setup_packet *setup; + + if (!ftdi_class || !ftdi_class->hport) { + return -USB_ERR_INVAL; + } + setup = ftdi_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = SIO_SET_LATENCY_TIMER_REQUEST; @@ -152,7 +177,12 @@ static int usbh_ftdi_set_latency_timer(struct usbh_ftdi *ftdi_class, uint16_t va static int usbh_ftdi_set_flow_ctrl(struct usbh_ftdi *ftdi_class, uint16_t value) { - struct usb_setup_packet *setup = ftdi_class->hport->setup; + struct usb_setup_packet *setup; + + if (!ftdi_class || !ftdi_class->hport) { + return -USB_ERR_INVAL; + } + setup = ftdi_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = SIO_SET_FLOW_CTRL_REQUEST; @@ -165,9 +195,14 @@ static int usbh_ftdi_set_flow_ctrl(struct usbh_ftdi *ftdi_class, uint16_t value) static int usbh_ftdi_read_modem_status(struct usbh_ftdi *ftdi_class) { - struct usb_setup_packet *setup = ftdi_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!ftdi_class || !ftdi_class->hport) { + return -USB_ERR_INVAL; + } + setup = ftdi_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_VENDOR | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = SIO_POLL_MODEM_STATUS_REQUEST; setup->wValue = 0x0000; diff --git a/components/drivers/usb/cherryusb/class/vendor/serial/usbh_pl2303.c b/components/drivers/usb/cherryusb/class/vendor/serial/usbh_pl2303.c index 2305f44597..c64a1c3331 100644 --- a/components/drivers/usb/cherryusb/class/vendor/serial/usbh_pl2303.c +++ b/components/drivers/usb/cherryusb/class/vendor/serial/usbh_pl2303.c @@ -131,7 +131,12 @@ static int usbh_pl2303_do(struct usbh_pl2303 *pl2303_class, uint8_t req_type, uint8_t request, uint16_t value, uint16_t index, uint16_t length) { - struct usb_setup_packet *setup = pl2303_class->hport->setup; + struct usb_setup_packet *setup; + + if (!pl2303_class || !pl2303_class->hport) { + return -USB_ERR_INVAL; + } + setup = pl2303_class->hport->setup; setup->bmRequestType = req_type; setup->bRequest = request; @@ -144,7 +149,12 @@ static int usbh_pl2303_do(struct usbh_pl2303 *pl2303_class, int usbh_pl2303_set_line_coding(struct usbh_pl2303 *pl2303_class, struct cdc_line_coding *line_coding) { - struct usb_setup_packet *setup = pl2303_class->hport->setup; + struct usb_setup_packet *setup; + + if (!pl2303_class || !pl2303_class->hport) { + return -USB_ERR_INVAL; + } + setup = pl2303_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CDC_REQUEST_SET_LINE_CODING; @@ -159,9 +169,14 @@ int usbh_pl2303_set_line_coding(struct usbh_pl2303 *pl2303_class, struct cdc_lin int usbh_pl2303_get_line_coding(struct usbh_pl2303 *pl2303_class, struct cdc_line_coding *line_coding) { - struct usb_setup_packet *setup = pl2303_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!pl2303_class || !pl2303_class->hport) { + return -USB_ERR_INVAL; + } + setup = pl2303_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CDC_REQUEST_GET_LINE_CODING; setup->wValue = 0; @@ -178,7 +193,12 @@ int usbh_pl2303_get_line_coding(struct usbh_pl2303 *pl2303_class, struct cdc_lin int usbh_pl2303_set_line_state(struct usbh_pl2303 *pl2303_class, bool dtr, bool rts) { - struct usb_setup_packet *setup = pl2303_class->hport->setup; + struct usb_setup_packet *setup; + + if (!pl2303_class || !pl2303_class->hport) { + return -USB_ERR_INVAL; + } + setup = pl2303_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = CDC_REQUEST_SET_CONTROL_LINE_STATE; diff --git a/components/drivers/usb/cherryusb/class/video/usb_video.h b/components/drivers/usb/cherryusb/class/video/usb_video.h index 4997526baa..ff36fece09 100644 --- a/components/drivers/usb/cherryusb/class/video/usb_video.h +++ b/components/drivers/usb/cherryusb/class/video/usb_video.h @@ -806,14 +806,15 @@ struct video_still_probe_and_commit_controls { struct video_cs_if_vc_header_descriptor { uint8_t bLength; uint8_t bDescriptorType; - uint16_t bcdVDC; + uint8_t bDescriptorSubType; + uint16_t bcdUVC; uint16_t wTotalLength; uint32_t dwClockFrequency; uint8_t bInCollection; uint8_t baInterfaceNr[]; } __PACKED; -#define VIDEO_SIZEOF_VC_HEADER_DESC(n) (11 + n) +#define VIDEO_SIZEOF_VC_HEADER_DESC(n) (12 + n) struct video_cs_if_vc_input_terminal_descriptor { uint8_t bLength; @@ -860,6 +861,22 @@ struct video_cs_if_vc_output_terminal_descriptor { #define VIDEO_SIZEOF_VC_OUTPUT_TERMINAL_DESC 9 +struct video_cs_if_vc_extension_unit_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubType; + uint8_t bUnitID; + uint8_t guidExtensionCode[16]; + uint8_t bNumControls; + uint8_t bNrInPins; + // uint8_t baSourceID[]; + uint8_t bControlSize; + // uint8_t bmControls[] + uint8_t iExtension; +} __PACKED; + +#define VIDEO_SIZEOF_VC_EXTENSION_UNIT_DESC(p, n) (24 + p + n) + struct video_cs_ep_vc_ep_descriptor { uint8_t bLength; uint8_t bDescriptorType; @@ -922,7 +939,7 @@ struct video_cs_if_vs_frame_uncompressed_descriptor { uint8_t bLength; uint8_t bDescriptorType; uint8_t bDescriptorSubType; - uint8_t bFormatIndex; + uint8_t bFrameIndex; uint8_t bmCapabilities; uint16_t wWidth; uint16_t wHeight; @@ -931,10 +948,10 @@ struct video_cs_if_vs_frame_uncompressed_descriptor { uint32_t dwMaxVideoFrameBufferSize; uint32_t dwDefaultFrameInterval; uint8_t bFrameIntervalType; - uint32_t dwFrameInterval; + uint32_t dwFrameInterval[]; } __PACKED; -#define VIDEO_SIZEOF_VS_FRAME_UNCOMPRESSED_DESC 30 +#define VIDEO_SIZEOF_VS_FRAME_UNCOMPRESSED_DESC(n) (26 + 4 * (n)) struct video_cs_if_vs_format_mjpeg_descriptor { uint8_t bLength; @@ -956,7 +973,7 @@ struct video_cs_if_vs_frame_mjpeg_descriptor { uint8_t bLength; uint8_t bDescriptorType; uint8_t bDescriptorSubType; - uint8_t bFormatIndex; + uint8_t bFrameIndex; uint8_t bmCapabilities; uint16_t wWidth; uint16_t wHeight; @@ -965,11 +982,48 @@ struct video_cs_if_vs_frame_mjpeg_descriptor { uint32_t dwMaxVideoFrameBufferSize; uint32_t dwDefaultFrameInterval; uint8_t bFrameIntervalType; - uint32_t dwFrameInterval1; - uint32_t dwFrameInterval2; + uint32_t dwFrameInterval[]; } __PACKED; -#define VIDEO_SIZEOF_VS_FRAME_MJPEG_DESC(n) (26 + n) +#define VIDEO_SIZEOF_VS_FRAME_MJPEG_DESC(n) (26 + 4 * (n)) + +/* H264 Payload - 3.1.1. H264 Video Format Descriptor */ +struct video_cs_if_vs_format_h26x_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubType; + uint8_t bFormatIndex; + uint8_t bNumFrameDescriptors; + uint8_t guidFormat[16]; + uint8_t bBitsPerPixel; + uint8_t bDefaultFrameIndex; + uint8_t bAspectRatioX; + uint8_t bAspectRatioY; + uint8_t bmInterfaceFlags; + uint8_t bCopyProtect; + uint8_t bVariableSize; +} __PACKED; + +#define VIDEO_SIZEOF_VS_FORMAT_H264_DESC 28 + +/* H264 Payload - 3.1.2. H264 Video Frame Descriptor */ +struct video_cs_if_vs_frame_h26x_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubType; + uint8_t bFrameIndex; + uint8_t bmCapabilities; + uint16_t wWidth; + uint16_t wHeight; + uint32_t dwMinBitRate; + uint32_t dwMaxBitRate; + uint32_t dwDefaultFrameInterval; + uint8_t bFrameIntervalType; + uint32_t dwBytesPerLine; + uint32_t dwFrameInterval[]; +} __PACKED; + +#define VIDEO_SIZEOF_VS_FRAME_H264_DESC(n) (26 + 4 * (n)) struct video_cs_if_vs_colorformat_descriptor { uint8_t bLength; @@ -1041,74 +1095,145 @@ struct video_autoexposure_mode { #define VIDEO_GUID_YUY2 0x59, 0x55, 0x59, 0x32, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 #define VIDEO_GUID_NV12 0x4E, 0x56, 0x31, 0x32, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 +#define VIDEO_GUID_NV21 0x4E, 0x56, 0x32, 0x31, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 #define VIDEO_GUID_M420 0x4D, 0x34, 0x32, 0x30, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 #define VIDEO_GUID_I420 0x49, 0x34, 0x32, 0x30, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 +#define VIDEO_GUID_H264 0x48, 0x32, 0x36, 0x34, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 + +#define VIDEO_VC_TERMINAL_LEN (13 + 18 + 12 + 9) + +/*Length of template descriptor: 81 bytes*/ +#define VIDEO_VC_DESCRIPTOR_LEN (8 + 9 + VIDEO_VC_TERMINAL_LEN + 7 + 5) +#define VIDEO_VC_NOEP_DESCRIPTOR_LEN (8 + 9 + VIDEO_VC_TERMINAL_LEN) // clang-format off -#define VIDEO_VC_DESCRIPTOR_INIT(bFirstInterface, bNumEndpoints, bcdUVC, wTotalLength, dwClockFrequency, stridx) \ - /* Interface Association Descriptor */ \ - 0x08, \ - USB_DESCRIPTOR_TYPE_INTERFACE_ASSOCIATION, \ - bFirstInterface, \ - 0x02, \ - USB_DEVICE_CLASS_VIDEO, \ - VIDEO_SC_VIDEO_INTERFACE_COLLECTION, \ - 0x00, \ - 0x00, \ - /* VideoControl Interface Descriptor */ \ - 0x09, /* bLength */ \ - USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType */ \ - 0x00, /* bInterfaceNumber */ \ - 0x00, /* bAlternateSetting */ \ - bNumEndpoints, /* bNumEndpoints:1 endpoint (interrupt endpoint) */ \ - USB_DEVICE_CLASS_VIDEO, /* bInterfaceClass : CC_VIDEO */ \ - VIDEO_SC_VIDEOCONTROL, /* bInterfaceSubClass : SC_VIDEOCONTROL */ \ - VIDEO_PC_PROTOCOL_UNDEFINED, /* bInterfaceProtocol : PC_PROTOCOL_UNDEFINED */ \ - stridx, /* iInterface:Index to string descriptor that contains the string */ \ - /*Class-specific VideoControl Interface Descriptor */ \ - 0x0d, /* bLength */ \ - 0x24, /* bDescriptorType : CS_INTERFACE */ \ - VIDEO_VC_HEADER_DESCRIPTOR_SUBTYPE, /* bDescriptorSubType : VC_HEADER subtype */ \ - WBVAL(bcdUVC), /* bcdUVC : Revision of class specification that this device is based upon.*/ \ - WBVAL(wTotalLength), /* wTotalLength */ \ - DBVAL(dwClockFrequency), /* dwClockFrequency : 0x005b8d80 -> 6,000,000 == 6MHz*/ \ - 0x01, /* bInCollection : Number of streaming interfaces. */ \ - (uint8_t)(bFirstInterface + 1), /* baInterfaceNr(0) : VideoStreaming interface 1 belongs to this VideoControl interface.*/ \ - /* Input Terminal 1 -> Processing Unit 2 -> Output Terminal 3 */ \ - 0x12, \ - 0x24, \ - VIDEO_VC_INPUT_TERMINAL_DESCRIPTOR_SUBTYPE, \ - 0x01, /* bTerminalID */ \ - WBVAL(VIDEO_ITT_CAMERA), /* wTerminalType : 0x0201 Camera Sensor*/ \ - 0x00, /* bAssocTerminal */ \ - 0x00, /* iTerminal */ \ - WBVAL(0x0000), /* wObjectiveFocalLengthMin */ \ - WBVAL(0x0000), /* wObjectiveFocalLengthMax */ \ - WBVAL(0x0000), /* wOcularFocalLength */ \ - 0x03, /* bControlSize */ \ - 0x00, 0x00, 0x00, /* bmControls */ \ - 0x0c, \ - 0x24, \ - VIDEO_VC_PROCESSING_UNIT_DESCRIPTOR_SUBTYPE, \ - 0x02, /* bUnitID */ \ - 0x01, /* bSourceID */ \ - 0x00, 0x00, /* wMaxMultiplier */ \ - 0x02, /* bControlSize */ \ - 0x00, 0x00, /* bmControls */ \ - 0x00, /* iProcessing */ \ - 0x00, /* bmVideoStandards */ \ - 0x09, \ - 0x24, \ - VIDEO_VC_OUTPUT_TERMINAL_DESCRIPTOR_SUBTYPE, \ - 0x03, /* bTerminalID */ \ - WBVAL(VIDEO_TT_STREAMING), \ - 0x00, /* bAssocTerminal */ \ - 0x02, /* bSourceID */ \ - 0x00 /* iTerminal */ +#define VIDEO_VC_DESCRIPTOR_INIT(bFirstInterface, bEndpointAddress, bcdUVC, wTotalLength, dwClockFrequency, stridx) \ + /* Interface Association Descriptor */ \ + 0x08, \ + USB_DESCRIPTOR_TYPE_INTERFACE_ASSOCIATION, \ + bFirstInterface, \ + 0x02, \ + USB_DEVICE_CLASS_VIDEO, \ + VIDEO_SC_VIDEO_INTERFACE_COLLECTION, \ + 0x00, \ + 0x00, /* VideoControl Interface Descriptor */ \ + 0x09, /* bLength */ \ + USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType */ \ + 0x00, /* bInterfaceNumber */ \ + 0x00, /* bAlternateSetting */ \ + 0x01, /* bNumEndpoints:1 endpoint (interrupt endpoint) */ \ + USB_DEVICE_CLASS_VIDEO, /* bInterfaceClass : CC_VIDEO */ \ + VIDEO_SC_VIDEOCONTROL, /* bInterfaceSubClass : SC_VIDEOCONTROL */ \ + VIDEO_PC_PROTOCOL_UNDEFINED, /* bInterfaceProtocol : PC_PROTOCOL_UNDEFINED */ \ + stridx, /* iInterface:Index to string descriptor that contains the string */ /*Class-specific VideoControl Interface Descriptor */ \ + 0x0d, /* bLength */ \ + 0x24, /* bDescriptorType : CS_INTERFACE */ \ + VIDEO_VC_HEADER_DESCRIPTOR_SUBTYPE, /* bDescriptorSubType : VC_HEADER subtype */ \ + WBVAL(bcdUVC), /* bcdUVC : Revision of class specification that this device is based upon.*/ \ + WBVAL(wTotalLength), /* wTotalLength */ \ + DBVAL(dwClockFrequency), /* dwClockFrequency : 0x005b8d80 -> 6,000,000 == 6MHz*/ \ + 0x01, /* bInCollection : Number of streaming interfaces. */ \ + (uint8_t)(bFirstInterface + 1), /* baInterfaceNr(0) : VideoStreaming interface 1 belongs to this VideoControl interface.*/ /* Input Terminal 1 -> Processing Unit 2 -> Output Terminal 3 */ \ + 0x12, \ + 0x24, \ + VIDEO_VC_INPUT_TERMINAL_DESCRIPTOR_SUBTYPE, \ + 0x01, /* bTerminalID */ \ + WBVAL(VIDEO_ITT_CAMERA), /* wTerminalType : 0x0201 Camera Sensor*/ \ + 0x00, /* bAssocTerminal */ \ + 0x00, /* iTerminal */ \ + WBVAL(0x0000), /* wObjectiveFocalLengthMin */ \ + WBVAL(0x0000), /* wObjectiveFocalLengthMax */ \ + WBVAL(0x0000), /* wOcularFocalLength */ \ + 0x03, /* bControlSize */ \ + 0x00, 0x00, 0x00, /* bmControls */ \ + 0x0c, \ + 0x24, \ + VIDEO_VC_PROCESSING_UNIT_DESCRIPTOR_SUBTYPE, \ + 0x02, /* bUnitID */ \ + 0x01, /* bSourceID */ \ + 0x00, 0x00, /* wMaxMultiplier */ \ + 0x02, /* bControlSize */ \ + 0x00, 0x00, /* bmControls */ \ + 0x00, /* iProcessing */ \ + 0x00, /* bmVideoStandards */ \ + 0x09, \ + 0x24, \ + VIDEO_VC_OUTPUT_TERMINAL_DESCRIPTOR_SUBTYPE, \ + 0x03, /* bTerminalID */ \ + WBVAL(VIDEO_TT_STREAMING), \ + 0x00, /* bAssocTerminal */ \ + 0x02, /* bSourceID */ \ + 0x00, /* iTerminal */ \ + 0x07, /* bLength */ \ + USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType */ \ + bEndpointAddress, /* bEndpointAddress */ \ + 0x03, /* bmAttributes */ \ + 0x10, 0x00, /* wMaxPacketSize */ \ + 0x08, /* bInterval */ \ + /* Class-specific VC Interrupt Endpoint Descriptor */ \ + 0x05, 0x25, 0x03, 0x10, 0x00 + +#define VIDEO_VC_NOEP_DESCRIPTOR_INIT(bFirstInterface, bEndpointAddress, bcdUVC, wTotalLength, dwClockFrequency, stridx) \ + /* Interface Association Descriptor */ \ + 0x08, \ + USB_DESCRIPTOR_TYPE_INTERFACE_ASSOCIATION, \ + bFirstInterface, \ + 0x02, \ + USB_DEVICE_CLASS_VIDEO, \ + VIDEO_SC_VIDEO_INTERFACE_COLLECTION, \ + 0x00, \ + 0x00, /* VideoControl Interface Descriptor */ \ + 0x09, /* bLength */ \ + USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType */ \ + 0x00, /* bInterfaceNumber */ \ + 0x00, /* bAlternateSetting */ \ + 0x00, /* bNumEndpoints:1 endpoint (interrupt endpoint) */ \ + USB_DEVICE_CLASS_VIDEO, /* bInterfaceClass : CC_VIDEO */ \ + VIDEO_SC_VIDEOCONTROL, /* bInterfaceSubClass : SC_VIDEOCONTROL */ \ + VIDEO_PC_PROTOCOL_UNDEFINED, /* bInterfaceProtocol : PC_PROTOCOL_UNDEFINED */ \ + stridx, /* iInterface:Index to string descriptor that contains the string */ /*Class-specific VideoControl Interface Descriptor */ \ + 0x0d, /* bLength */ \ + 0x24, /* bDescriptorType : CS_INTERFACE */ \ + VIDEO_VC_HEADER_DESCRIPTOR_SUBTYPE, /* bDescriptorSubType : VC_HEADER subtype */ \ + WBVAL(bcdUVC), /* bcdUVC : Revision of class specification that this device is based upon.*/ \ + WBVAL(wTotalLength), /* wTotalLength */ \ + DBVAL(dwClockFrequency), /* dwClockFrequency : 0x005b8d80 -> 6,000,000 == 6MHz*/ \ + 0x01, /* bInCollection : Number of streaming interfaces. */ \ + (uint8_t)(bFirstInterface + 1), /* baInterfaceNr(0) : VideoStreaming interface 1 belongs to this VideoControl interface.*/ /* Input Terminal 1 -> Processing Unit 2 -> Output Terminal 3 */ \ + 0x12, \ + 0x24, \ + VIDEO_VC_INPUT_TERMINAL_DESCRIPTOR_SUBTYPE, \ + 0x01, /* bTerminalID */ \ + WBVAL(VIDEO_ITT_CAMERA), /* wTerminalType : 0x0201 Camera Sensor*/ \ + 0x00, /* bAssocTerminal */ \ + 0x00, /* iTerminal */ \ + WBVAL(0x0000), /* wObjectiveFocalLengthMin */ \ + WBVAL(0x0000), /* wObjectiveFocalLengthMax */ \ + WBVAL(0x0000), /* wOcularFocalLength */ \ + 0x03, /* bControlSize */ \ + 0x00, 0x00, 0x00, /* bmControls */ \ + 0x0c, \ + 0x24, \ + VIDEO_VC_PROCESSING_UNIT_DESCRIPTOR_SUBTYPE, \ + 0x02, /* bUnitID */ \ + 0x01, /* bSourceID */ \ + 0x00, 0x00, /* wMaxMultiplier */ \ + 0x02, /* bControlSize */ \ + 0x00, 0x00, /* bmControls */ \ + 0x00, /* iProcessing */ \ + 0x00, /* bmVideoStandards */ \ + 0x09, \ + 0x24, \ + VIDEO_VC_OUTPUT_TERMINAL_DESCRIPTOR_SUBTYPE, \ + 0x03, /* bTerminalID */ \ + WBVAL(VIDEO_TT_STREAMING), \ + 0x00, /* bAssocTerminal */ \ + 0x02, /* bSourceID */ \ + 0x00 /* iTerminal */ \ #define VIDEO_VS_DESCRIPTOR_INIT(bInterfaceNumber, bAlternateSetting, bNumEndpoints) \ /* Video Streaming (VS) Interface Descriptor */ \ - 0x09, /* bLength */ \ + 0x09, /* bLength */ \ USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType : INTERFACE */ \ bInterfaceNumber, /* bInterfaceNumber: Index of this interface */ \ bAlternateSetting, /* bAlternateSetting: Index of this alternate setting */ \ @@ -1118,21 +1243,37 @@ struct video_autoexposure_mode { 0x00, /* bInterfaceProtocol : PC_PROTOCOL_UNDEFINED */ \ 0x00 /* iInterface : unused */ -#define VIDEO_VS_HEADER_DESCRIPTOR_INIT(bNumFormats, wTotalLength, bEndpointAddress, ...) \ - /*Class-specific VideoStream Header Descriptor (Input) */ \ - 0x0d + PP_NARG(__VA_ARGS__), \ - 0x24, \ - VIDEO_VS_INPUT_HEADER_DESCRIPTOR_SUBTYPE, \ - bNumFormats, /* bNumFormats : One format descriptor follows. */ \ - WBVAL(wTotalLength), \ - bEndpointAddress, \ - 0x00, /* bmInfo : No dynamic format change supported. */ \ - 0x03, /* bTerminalLink : This VideoStreaming interface supplies terminal ID 2 (Output Terminal). */ \ - 0x00, /* bStillCaptureMethod : Device supports still image capture method 0. */ \ - 0x00, /* bTriggerSupport : Hardware trigger supported for still image capture */ \ - 0x00, /* bTriggerUsage : Hardware trigger should initiate a still image capture. */ \ - PP_NARG(__VA_ARGS__), /* bControlSize : Size of the bmaControls field */ \ - __VA_ARGS__ /* bmaControls : No VideoStreaming specific controls are supported.*/ +#define VIDEO_VS_INPUT_HEADER_DESCRIPTOR_INIT(bNumFormats, wTotalLength, bEndpointAddress, ...) \ + /*Class-specific VideoStream Header Descriptor (Input) */ \ + 0x0d + PP_NARG(__VA_ARGS__), \ + 0x24, \ + VIDEO_VS_INPUT_HEADER_DESCRIPTOR_SUBTYPE, \ + bNumFormats, /* bNumFormats : One format descriptor follows. */ \ + WBVAL(wTotalLength), \ + bEndpointAddress, \ + 0x00, /* bmInfo : No dynamic format change supported. */ \ + 0x03, /* bTerminalLink : This VideoStreaming interface supplies terminal ID 2 (Output Terminal). */ \ + 0x00, /* bStillCaptureMethod : Device supports still image capture method 0. */ \ + 0x00, /* bTriggerSupport : Hardware trigger supported for still image capture */ \ + 0x00, /* bTriggerUsage : Hardware trigger should initiate a still image capture. */ \ + 0x01, /* bControlSize : Size of the bmaControls field */ \ + __VA_ARGS__ /* bmaControls : No VideoStreaming specific controls are supported.*/ + +#define VIDEO_VS_OUTPUT_HEADER_DESCRIPTOR_INIT(bNumFormats, wTotalLength, bEndpointAddress, ...) \ + /*Class-specific VideoStream Header Descriptor (Input) */ \ + 0x0d + PP_NARG(__VA_ARGS__), \ + 0x24, \ + VIDEO_VS_OUTPUT_HEADER_DESCRIPTOR_SUBTYPE, \ + bNumFormats, /* bNumFormats : One format descriptor follows. */ \ + WBVAL(wTotalLength), \ + bEndpointAddress, \ + 0x00, /* bmInfo : No dynamic format change supported. */ \ + 0x03, /* bTerminalLink : This VideoStreaming interface supplies terminal ID 2 (Output Terminal). */ \ + 0x00, /* bStillCaptureMethod : Device supports still image capture method 0. */ \ + 0x00, /* bTriggerSupport : Hardware trigger supported for still image capture */ \ + 0x00, /* bTriggerUsage : Hardware trigger should initiate a still image capture. */ \ + PP_NARG(__VA_ARGS__), /* bControlSize : Size of the bmaControls field */ \ + __VA_ARGS__ /* bmaControls : No VideoStreaming specific controls are supported.*/ #define VIDEO_VS_FORMAT_UNCOMPRESSED_DESCRIPTOR_INIT(bFormatIndex, bNumFrameDescriptors, GUIDFormat) \ /*Payload Format(UNCOMPRESSED) Descriptor */ \ @@ -1142,7 +1283,7 @@ struct video_autoexposure_mode { bFormatIndex, /* bFormatIndex : First (and only) format descriptor */ \ bNumFrameDescriptors, /* bNumFrameDescriptors : One frame descriptor for this format follows. */ \ GUIDFormat, /* GUID Format YUY2 {32595559-0000-0010-8000-00AA00389B71} */ \ - 0x0c, /* bBitsPerPixel : Number of bits per pixel used to specify color in the decoded video frame - 16 for yuy2*/ \ + 0x10, /* bBitsPerPixel : Number of bits per pixel used to specify color in the decoded video frame - 16 for yuy2*/ \ 0x01, /* bDefaultFrameIndex : Default frame index is 1. */ \ 0x00, /* bAspectRatioX : Non-interlaced stream not required. */ \ 0x00, /* bAspectRatioY : Non-interlaced stream not required. */ \ @@ -1150,8 +1291,8 @@ struct video_autoexposure_mode { 0x00 /* bCopyProtect : No restrictions imposed on the duplication of this video stream. */ #define VIDEO_VS_FRAME_UNCOMPRESSED_DESCRIPTOR_INIT(bFrameIndex, wWidth, wHeight, dwMinBitRate, dwMaxBitRate, \ - dwMaxVideoFrameBufferSize, dwDefaultFrameInterval, dwFrameInterval) \ - 0x1e, \ + dwMaxVideoFrameBufferSize, dwDefaultFrameInterval, bFrameIntervalType, ...) \ + 0x1a + PP_NARG(__VA_ARGS__), \ 0x24, \ VIDEO_VS_FRAME_UNCOMPRESSED_DESCRIPTOR_SUBTYPE, \ bFrameIndex, \ @@ -1161,13 +1302,13 @@ struct video_autoexposure_mode { DBVAL(dwMinBitRate), \ DBVAL(dwMaxBitRate), \ DBVAL(dwMaxVideoFrameBufferSize), \ - DBVAL(dwDefaultFrameInterval), \ - 0x01, \ - DBVAL(dwFrameInterval) + dwDefaultFrameInterval, /* dwDefaultFrameInterval : 1,000,000 * 100ns -> 10 FPS */ \ + bFrameIntervalType, /* bFrameIntervalType : Indicates how the frame interval can be programmed. 0: Continuous frame interval 1..255: The number of discrete frame */ \ + __VA_ARGS__ #define VIDEO_VS_FORMAT_MJPEG_DESCRIPTOR_INIT(bFormatIndex, bNumFrameDescriptors) \ /*Payload Format(MJPEG) Descriptor */ \ - 0x0b, /* bLength */ \ + 0x0b, /* bLength */ \ 0x24, /* bDescriptorType : CS_INTERFACE */ \ 0x06, /* bDescriptorSubType : VS_FORMAT_MJPEG subtype */ \ bFormatIndex, /* bFormatIndex : First (and only) format descriptor */ \ @@ -1181,7 +1322,7 @@ struct video_autoexposure_mode { #define VIDEO_VS_FRAME_MJPEG_DESCRIPTOR_INIT(bFrameIndex, wWidth, wHeight, dwMinBitRate, dwMaxBitRate, \ dwMaxVideoFrameBufferSize, dwDefaultFrameInterval, bFrameIntervalType, ...) \ - 0x1a + PP_NARG(__VA_ARGS__), /* bLength */ \ + 0x1a + PP_NARG(__VA_ARGS__), /* bLength */ \ 0x24, /* bDescriptorType : CS_INTERFACE */ \ VIDEO_VS_FRAME_MJPEG_DESCRIPTOR_SUBTYPE, /* bDescriptorSubType : VS_FRAME_MJPEG */ \ bFrameIndex, /* bFrameIndex : First (and only) frame descriptor */ \ @@ -1194,5 +1335,46 @@ struct video_autoexposure_mode { dwDefaultFrameInterval, /* dwDefaultFrameInterval : 1,000,000 * 100ns -> 10 FPS */ \ bFrameIntervalType, /* bFrameIntervalType : Indicates how the frame interval can be programmed. 0: Continuous frame interval 1..255: The number of discrete frame */ \ __VA_ARGS__ + +#define VIDEO_VS_FORMAT_H264_DESCRIPTOR_INIT(bFormatIndex, bNumFrameDescriptors) \ + /*Payload Format(H.264) Descriptor */ \ + 0x1c, /* bLength */ \ + 0x24, /* bDescriptorType : CS_INTERFACE */ \ + VIDEO_VS_FORMAT_FRAME_BASED_DESCRIPTOR_SUBTYPE, /* bDescriptorSubType : VS_FORMAT_FRAME_BASED subtype */\ + bFormatIndex, /* bFormatIndex : First (and only) format descriptor */ \ + bNumFrameDescriptors, /* bNumFrameDescriptors : One frame descriptor for this format follows. */ \ + VIDEO_GUID_H264, \ + 0x00, /* bmFlags : Uses fixed size samples.. */ \ + 0x01, /* bDefaultFrameIndex : Default frame index is 1. */ \ + 0x00, /* bAspectRatioX : Non-interlaced stream – not required. */ \ + 0x00, /* bAspectRatioY : Non-interlaced stream – not required. */ \ + 0x00, /* bmInterlaceFlags : Non-interlaced stream */ \ + 0x00, /* bCopyProtect : No restrictions imposed on the duplication of this video stream. */ \ + 0x00 /* Variable size: False */ + +#define VIDEO_VS_FRAME_H264_DESCRIPTOR_INIT(bFrameIndex, wWidth, wHeight, dwMinBitRate, dwMaxBitRate, \ + dwDefaultFrameInterval, bFrameIntervalType, ...) \ + 0x1a + PP_NARG(__VA_ARGS__), /* bLength */ \ + 0x24, /* bDescriptorType : CS_INTERFACE */ \ + VIDEO_VS_FRAME_FRAME_BASED_DESCRIPTOR_SUBTYPE, /* bDescriptorSubType : VS_FRAME_BASED */ \ + bFrameIndex, /* bFrameIndex : First (and only) frame descriptor */ \ + 0x00, /* bmCapabilities : Still images using capture method 0 are supported at this frame setting.D1: Fixed frame-rate. */ \ + WBVAL(wWidth), /* wWidth (2bytes): Width of frame is 128 pixels. */ \ + WBVAL(wHeight), /* wHeight (2bytes): Height of frame is 64 pixels. */ \ + DBVAL(dwMinBitRate), /* dwMinBitRate (4bytes): Min bit rate in bits/s */ \ + DBVAL(dwMaxBitRate), /* dwMaxBitRate (4bytes): Max bit rate in bits/s */ \ + dwDefaultFrameInterval, /* dwDefaultFrameInterval : 1,000,000 * 100ns -> 10 FPS */ \ + bFrameIntervalType, /* bFrameIntervalType : Indicates how the frame interval can be programmed. 0: Continuous frame interval 1..255: The number of discrete frame */ \ + DBVAL(0x00), /* dwBytesPerLine (4bytes) */ \ + __VA_ARGS__ + +#define VIDEO_VS_COLOR_MATCHING_DESCRIPTOR_INIT() \ + 0x06, /* bLength */ \ + 0x24, /* bDescriptorType : CS_INTERFACE */ \ + VIDEO_VS_COLORFORMAT_DESCRIPTOR_SUBTYPE, /* bDescriptorSubType : VS_COLORFORMAT */ \ + 0x01, /* bColorPrimaries */ \ + 0x01, /* bTransferCharacteristics */ \ + 0x04 /* bMatrixCoefficients */ + // clang-format on #endif /*USB_VIDEO_H */ \ No newline at end of file diff --git a/components/drivers/usb/cherryusb/class/video/usbd_video.c b/components/drivers/usb/cherryusb/class/video/usbd_video.c index 07059ee0d7..b11fa6ad31 100644 --- a/components/drivers/usb/cherryusb/class/video/usbd_video.c +++ b/components/drivers/usb/cherryusb/class/video/usbd_video.c @@ -295,8 +295,7 @@ static int usbd_video_control_unit_terminal_request_handler(uint8_t busid, struc case VIDEO_PU_BRIGHTNESS_CONTROL: switch (setup->bRequest) { case VIDEO_REQUEST_SET_CUR: { - uint16_t wBrightness = (uint16_t)(*data)[1] << 8 | (uint16_t)(*data)[0]; - USB_LOG_INFO("Video set brightness:%d\r\n", wBrightness); + //uint16_t wBrightness = (uint16_t)(*data)[1] << 8 | (uint16_t)(*data)[0]; } break; case VIDEO_REQUEST_GET_CUR: { uint16_t wBrightness = 0x0080; @@ -762,7 +761,7 @@ struct usbd_interface *usbd_video_init_intf(uint8_t busid, struct usbd_interface return intf; } -uint32_t usbd_video_mjpeg_payload_fill(uint8_t busid, uint8_t *input, uint32_t input_len, uint8_t *output, uint32_t *out_len) +uint32_t usbd_video_payload_fill(uint8_t busid, uint8_t *input, uint32_t input_len, uint8_t *output, uint32_t *out_len) { uint32_t packets; uint32_t last_packet_size; diff --git a/components/drivers/usb/cherryusb/class/video/usbd_video.h b/components/drivers/usb/cherryusb/class/video/usbd_video.h index 5044af69bc..14636fbc4b 100644 --- a/components/drivers/usb/cherryusb/class/video/usbd_video.h +++ b/components/drivers/usb/cherryusb/class/video/usbd_video.h @@ -20,7 +20,7 @@ struct usbd_interface *usbd_video_init_intf(uint8_t busid, struct usbd_interface void usbd_video_open(uint8_t busid, uint8_t intf); void usbd_video_close(uint8_t busid, uint8_t intf); -uint32_t usbd_video_mjpeg_payload_fill(uint8_t busid, uint8_t *input, uint32_t input_len, uint8_t *output, uint32_t *out_len); +uint32_t usbd_video_payload_fill(uint8_t busid, uint8_t *input, uint32_t input_len, uint8_t *output, uint32_t *out_len); #ifdef __cplusplus } diff --git a/components/drivers/usb/cherryusb/class/video/usbh_video.c b/components/drivers/usb/cherryusb/class/video/usbh_video.c index 0691066881..0d3f79f7f2 100644 --- a/components/drivers/usb/cherryusb/class/video/usbh_video.c +++ b/components/drivers/usb/cherryusb/class/video/usbh_video.c @@ -59,10 +59,15 @@ static void usbh_video_class_free(struct usbh_video *video_class) int usbh_video_get(struct usbh_video *video_class, uint8_t request, uint8_t intf, uint8_t entity_id, uint8_t cs, uint8_t *buf, uint16_t len) { - struct usb_setup_packet *setup = video_class->hport->setup; + struct usb_setup_packet *setup; int ret; uint8_t retry; + if (!video_class || !video_class->hport) { + return -USB_ERR_INVAL; + } + setup = video_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_IN | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = request; setup->wValue = cs << 8; @@ -91,9 +96,14 @@ int usbh_video_get(struct usbh_video *video_class, uint8_t request, uint8_t intf int usbh_video_set(struct usbh_video *video_class, uint8_t request, uint8_t intf, uint8_t entity_id, uint8_t cs, uint8_t *buf, uint16_t len) { - struct usb_setup_packet *setup = video_class->hport->setup; + struct usb_setup_packet *setup; int ret; + if (!video_class || !video_class->hport) { + return -USB_ERR_INVAL; + } + setup = video_class->hport->setup; + setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_INTERFACE; setup->bRequest = request; setup->wValue = cs << 8; @@ -136,7 +146,7 @@ int usbh_video_open(struct usbh_video *video_class, uint16_t wHeight, uint8_t altsetting) { - struct usb_setup_packet *setup = video_class->hport->setup; + struct usb_setup_packet *setup; struct usb_endpoint_descriptor *ep_desc; uint8_t mult; uint16_t mps; @@ -146,6 +156,11 @@ int usbh_video_open(struct usbh_video *video_class, uint8_t frameidx = 0; uint8_t step; + if (!video_class || !video_class->hport) { + return -USB_ERR_INVAL; + } + setup = video_class->hport->setup; + if (video_class->is_opened) { return 0; } @@ -265,9 +280,14 @@ errout: int usbh_video_close(struct usbh_video *video_class) { - struct usb_setup_packet *setup = video_class->hport->setup; + struct usb_setup_packet *setup; int ret = 0; + if (!video_class || !video_class->hport) { + return -USB_ERR_INVAL; + } + setup = video_class->hport->setup; + USB_LOG_INFO("Close video device\r\n"); video_class->is_opened = false; diff --git a/components/drivers/usb/cherryusb/class/wireless/usbd_rndis.c b/components/drivers/usb/cherryusb/class/wireless/usbd_rndis.c index aaea5431a4..c357b25a2c 100644 --- a/components/drivers/usb/cherryusb/class/wireless/usbd_rndis.c +++ b/components/drivers/usb/cherryusb/class/wireless/usbd_rndis.c @@ -217,7 +217,7 @@ static int rndis_query_cmd_handler(uint8_t *data, uint32_t len) case OID_GEN_MAXIMUM_FRAME_SIZE: case OID_GEN_TRANSMIT_BLOCK_SIZE: case OID_GEN_RECEIVE_BLOCK_SIZE: - RNDIS_INQUIRY_PUT_LE32(0x05DC); + RNDIS_INQUIRY_PUT_LE32(0x05DC); /* mtu 1500 */ infomation_len = 4; break; case OID_GEN_VENDOR_ID: @@ -255,7 +255,7 @@ static int rndis_query_cmd_handler(uint8_t *data, uint32_t len) infomation_len = 4; break; case OID_GEN_MAXIMUM_TOTAL_SIZE: - RNDIS_INQUIRY_PUT_LE32(CONFIG_USBDEV_RNDIS_ETH_MAX_FRAME_SIZE + CONFIG_USBDEV_RNDIS_RESP_BUFFER_SIZE); + RNDIS_INQUIRY_PUT_LE32(0x0616); /* 1514 + 44 */ infomation_len = 4; break; case OID_GEN_MEDIA_CONNECT_STATUS: @@ -488,7 +488,7 @@ struct pbuf *usbd_rndis_eth_rx(void) if (p == NULL) { return NULL; } - memcpy(p->payload, (uint8_t *)g_rndis_rx_data_buffer, g_rndis_rx_data_length); + usb_memcpy(p->payload, (uint8_t *)g_rndis_rx_data_buffer, g_rndis_rx_data_length); p->len = g_rndis_rx_data_length; USB_LOG_DBG("rxlen:%d\r\n", g_rndis_rx_data_length); @@ -518,7 +518,7 @@ int usbd_rndis_eth_tx(struct pbuf *p) buffer = (uint8_t *)(g_rndis_tx_buffer + sizeof(rndis_data_packet_t)); for (q = p; q != NULL; q = q->next) { - memcpy(buffer, q->payload, q->len); + usb_memcpy(buffer, q->payload, q->len); buffer += q->len; } diff --git a/components/drivers/usb/cherryusb/class/wireless/usbh_bluetooth.c b/components/drivers/usb/cherryusb/class/wireless/usbh_bluetooth.c index 4c223dbfd6..e73eeb0385 100644 --- a/components/drivers/usb/cherryusb/class/wireless/usbh_bluetooth.c +++ b/components/drivers/usb/cherryusb/class/wireless/usbh_bluetooth.c @@ -96,7 +96,7 @@ static int usbh_bluetooth_connect(struct usbh_hubport *hport, uint8_t intf) } USB_LOG_INFO("Bluetooth select altsetting 0\r\n"); #endif - snprintf(hport->config.intf[intf].devname, CONFIG_USBHOST_DEV_NAMELEN, DEV_FORMAT); + strncpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); USB_LOG_INFO("Register Bluetooth Class:%s\r\n", hport->config.intf[intf].devname); usbh_bluetooth_run(bluetooth_class); return ret; @@ -234,7 +234,12 @@ delete : static int usbh_bluetooth_hci_cmd(uint8_t *buffer, uint32_t buflen) { struct usbh_bluetooth *bluetooth_class = &g_bluetooth_class; - struct usb_setup_packet *setup = bluetooth_class->hport->setup; + struct usb_setup_packet *setup; + + if (!bluetooth_class || !bluetooth_class->hport) { + return -USB_ERR_INVAL; + } + setup = bluetooth_class->hport->setup; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_CLASS | USB_REQUEST_RECIPIENT_DEVICE; setup->bRequest = 0x00; diff --git a/components/drivers/usb/cherryusb/class/wireless/usbh_rndis.c b/components/drivers/usb/cherryusb/class/wireless/usbh_rndis.c index 969e6e53a5..e722e50ceb 100644 --- a/components/drivers/usb/cherryusb/class/wireless/usbh_rndis.c +++ b/components/drivers/usb/cherryusb/class/wireless/usbh_rndis.c @@ -40,11 +40,16 @@ static int usbh_rndis_get_notification(struct usbh_rndis *rndis_class) static int usbh_rndis_init_msg_transfer(struct usbh_rndis *rndis_class) { - struct usb_setup_packet *setup = rndis_class->hport->setup; + struct usb_setup_packet *setup; int ret = 0; rndis_initialize_msg_t *cmd; rndis_initialize_cmplt_t *resp; + if (!rndis_class || !rndis_class->hport) { + return -USB_ERR_INVAL; + } + setup = rndis_class->hport->setup; + cmd = (rndis_initialize_msg_t *)g_rndis_buf; cmd->MessageType = REMOTE_NDIS_INITIALIZE_MSG; @@ -82,16 +87,26 @@ static int usbh_rndis_init_msg_transfer(struct usbh_rndis *rndis_class) return ret; } + rndis_class->max_transfer_pkts = resp->MaxPacketsPerTransfer; + rndis_class->max_transfer_size = resp->MaxTransferSize; + USB_LOG_INFO("MaxPacketsPerTransfer:%d\r\n", resp->MaxPacketsPerTransfer); + USB_LOG_INFO("MaxTransferSize:%d\r\n", resp->MaxTransferSize); + return ret; } int usbh_rndis_query_msg_transfer(struct usbh_rndis *rndis_class, uint32_t oid, uint32_t query_len, uint8_t *info, uint32_t *info_len) { - struct usb_setup_packet *setup = rndis_class->hport->setup; + struct usb_setup_packet *setup; int ret = 0; rndis_query_msg_t *cmd; rndis_query_cmplt_t *resp; + if (!rndis_class || !rndis_class->hport) { + return -USB_ERR_INVAL; + } + setup = rndis_class->hport->setup; + cmd = (rndis_query_msg_t *)g_rndis_buf; cmd->MessageType = REMOTE_NDIS_QUERY_MSG; @@ -138,11 +153,16 @@ int usbh_rndis_query_msg_transfer(struct usbh_rndis *rndis_class, uint32_t oid, static int usbh_rndis_set_msg_transfer(struct usbh_rndis *rndis_class, uint32_t oid, uint8_t *info, uint32_t info_len) { - struct usb_setup_packet *setup = rndis_class->hport->setup; + struct usb_setup_packet *setup; int ret = 0; rndis_set_msg_t *cmd; rndis_set_cmplt_t *resp; + if (!rndis_class || !rndis_class->hport) { + return -USB_ERR_INVAL; + } + setup = rndis_class->hport->setup; + cmd = (rndis_set_msg_t *)g_rndis_buf; cmd->MessageType = REMOTE_NDIS_SET_MSG; @@ -205,11 +225,16 @@ int usbh_rndis_get_connect_status(struct usbh_rndis *rndis_class) int usbh_rndis_keepalive(struct usbh_rndis *rndis_class) { - struct usb_setup_packet *setup = rndis_class->hport->setup; + struct usb_setup_packet *setup; int ret = 0; rndis_keepalive_msg_t *cmd; rndis_keepalive_cmplt_t *resp; + if (!rndis_class || !rndis_class->hport) { + return -USB_ERR_INVAL; + } + setup = rndis_class->hport->setup; + cmd = (rndis_keepalive_msg_t *)g_rndis_buf; cmd->MessageType = REMOTE_NDIS_KEEPALIVE_MSG; @@ -382,7 +407,7 @@ static int usbh_rndis_connect(struct usbh_hubport *hport, uint8_t intf) rndis_class->mac[4], rndis_class->mac[5]); - memcpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); + strncpy(hport->config.intf[intf].devname, DEV_FORMAT, CONFIG_USBHOST_DEV_NAMELEN); USB_LOG_INFO("Register RNDIS Class:%s\r\n", hport->config.intf[intf].devname); usbh_rndis_run(rndis_class); @@ -429,6 +454,11 @@ void usbh_rndis_rx_thread(void *argument) uint32_t pmg_offset; rndis_data_packet_t *pmsg; rndis_data_packet_t temp; +#if CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE <= (16 * 1024) + uint32_t transfer_size = CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE; +#else + uint32_t transfer_size = (16 * 1024); +#endif USB_LOG_INFO("Create rndis rx thread\r\n"); // clang-format off @@ -445,17 +475,23 @@ find_class: usb_osal_msleep(100); goto find_class; } + usb_osal_msleep(128); } g_rndis_rx_length = 0; while (1) { - usbh_bulk_urb_fill(&g_rndis_class.bulkin_urb, g_rndis_class.hport, g_rndis_class.bulkin, g_rndis_rx_buffer, (CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE > (16 * 1024)) ? (16 * 1024) : CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE, USB_OSAL_WAITING_FOREVER, NULL, NULL); + usbh_bulk_urb_fill(&g_rndis_class.bulkin_urb, g_rndis_class.hport, g_rndis_class.bulkin, &g_rndis_rx_buffer[g_rndis_rx_length], transfer_size, USB_OSAL_WAITING_FOREVER, NULL, NULL); ret = usbh_submit_urb(&g_rndis_class.bulkin_urb); if (ret < 0) { goto find_class; } g_rndis_rx_length += g_rndis_class.bulkin_urb.actual_length; + + /* A transfer is complete because last packet is a short packet. + * Short packet is not zero, match g_rndis_rx_length % USB_GET_MAXPACKETSIZE(g_rndis_class.bulkin->wMaxPacketSize). + * Short packet cannot be zero. + */ if (g_rndis_rx_length % USB_GET_MAXPACKETSIZE(g_rndis_class.bulkin->wMaxPacketSize)) { pmg_offset = 0; @@ -468,7 +504,7 @@ find_class: /* Not word-aligned case */ if (pmg_offset & 0x3) { - memcpy(&temp, pmsg, sizeof(rndis_data_packet_t)); + usb_memcpy(&temp, pmsg, sizeof(rndis_data_packet_t)); pmsg = &temp; } @@ -490,9 +526,14 @@ find_class: } } } else { - if (g_rndis_rx_length > CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE) { - USB_LOG_ERR("Rx packet is overflow\r\n"); - g_rndis_rx_length = 0; +#if CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE <= (16 * 1024) + if (g_rndis_rx_length == CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE) { +#else + if ((g_rndis_rx_length + (16 * 1024)) > CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE) { +#endif + USB_LOG_ERR("Rx packet is overflow, please ruduce tcp window size or increase CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE\r\n"); + while (1) { + } } } } @@ -504,9 +545,13 @@ delete: // clang-format on } -int usbh_rndis_eth_output(uint8_t *buf, uint32_t buflen) +uint8_t *usbh_rndis_get_eth_txbuf(void) +{ + return (g_rndis_tx_buffer + sizeof(rndis_data_packet_t)); +} + +int usbh_rndis_eth_output(uint32_t buflen) { - uint8_t *buffer; rndis_data_packet_t *hdr; uint32_t len; @@ -522,12 +567,9 @@ int usbh_rndis_eth_output(uint8_t *buf, uint32_t buflen) hdr->DataOffset = sizeof(rndis_data_packet_t) - sizeof(rndis_generic_msg_t); hdr->DataLength = buflen; - buffer = (uint8_t *)(g_rndis_tx_buffer + sizeof(rndis_data_packet_t)); - memcpy(buffer, buf, buflen); - len = hdr->MessageLength; /* if message length is the multiple of wMaxPacketSize, we should add a short packet to tell device transfer is over. */ - if (!(hdr->MessageLength % g_rndis_class.bulkout->wMaxPacketSize)) { + if (!(len % g_rndis_class.bulkout->wMaxPacketSize)) { len += 1; } diff --git a/components/drivers/usb/cherryusb/class/wireless/usbh_rndis.h b/components/drivers/usb/cherryusb/class/wireless/usbh_rndis.h index be56e4004e..17a400067f 100644 --- a/components/drivers/usb/cherryusb/class/wireless/usbh_rndis.h +++ b/components/drivers/usb/cherryusb/class/wireless/usbh_rndis.h @@ -22,6 +22,9 @@ struct usbh_rndis { uint8_t minor; uint32_t request_id; + uint32_t tx_offset; + uint32_t max_transfer_pkts; /* max packets in one transfer */ + uint32_t max_transfer_size; /* max size in one transfer */ uint32_t link_speed; bool connect_status; @@ -40,7 +43,8 @@ int usbh_rndis_keepalive(struct usbh_rndis *rndis_class); void usbh_rndis_run(struct usbh_rndis *rndis_class); void usbh_rndis_stop(struct usbh_rndis *rndis_class); -int usbh_rndis_eth_output(uint8_t *buf, uint32_t buflen); +uint8_t *usbh_rndis_get_eth_txbuf(void); +int usbh_rndis_eth_output(uint32_t buflen); void usbh_rndis_eth_input(uint8_t *buf, uint32_t buflen); void usbh_rndis_rx_thread(void *argument); diff --git a/components/drivers/usb/cherryusb/common/usb_hc.h b/components/drivers/usb/cherryusb/common/usb_hc.h index adfddbea77..c4e2a16dc9 100644 --- a/components/drivers/usb/cherryusb/common/usb_hc.h +++ b/components/drivers/usb/cherryusb/common/usb_hc.h @@ -34,6 +34,7 @@ struct usbh_iso_frame_packet { * Structure containing the USB Urb configuration. */ struct usbh_urb { + usb_slist_t list; void *hcpriv; struct usbh_hubport *hport; struct usb_endpoint_descriptor *ep; diff --git a/components/drivers/usb/cherryusb/common/usb_memcpy.h b/components/drivers/usb/cherryusb/common/usb_memcpy.h new file mode 100644 index 0000000000..85cac3116f --- /dev/null +++ b/components/drivers/usb/cherryusb/common/usb_memcpy.h @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2024, sakumisu + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef USB_MEMCPY_H +#define USB_MEMCPY_H + +#include +#include + +#define ALIGN_UP_DWORD(x) ((uint32_t)(uintptr_t)(x) & (sizeof(uint32_t) - 1)) + +static inline void dword2array(char *addr, uint32_t w) +{ + addr[0] = w; + addr[1] = w >> 8; + addr[2] = w >> 16; + addr[3] = w >> 24; +} + +static inline void *usb_memcpy(void *s1, const void *s2, size_t n) +{ + char *b1 = (char *)s1; + const char *b2 = (const char *)s2; + uint32_t *w1; + const uint32_t *w2; + + if (ALIGN_UP_DWORD(b1) == ALIGN_UP_DWORD(b2)) { + while (ALIGN_UP_DWORD(b1) != 0 && n > 0) { + *b1++ = *b2++; + --n; + } + + w1 = (uint32_t *)b1; + w2 = (const uint32_t *)b2; + + while (n >= 4 * sizeof(uint32_t)) { + *w1++ = *w2++; + *w1++ = *w2++; + *w1++ = *w2++; + *w1++ = *w2++; + n -= 4 * sizeof(uint32_t); + } + + while (n >= sizeof(uint32_t)) { + *w1++ = *w2++; + n -= sizeof(uint32_t); + } + + b1 = (char *)w1; + b2 = (const char *)w2; + + while (n--) { + *b1++ = *b2++; + } + } else { + while (n > 0 && ALIGN_UP_DWORD(b2) != 0) { + *b1++ = *b2++; + --n; + } + + w2 = (const uint32_t *)b2; + + while (n >= 4 * sizeof(uint32_t)) { + dword2array(b1, *w2++); + b1 += sizeof(uint32_t); + dword2array(b1, *w2++); + b1 += sizeof(uint32_t); + dword2array(b1, *w2++); + b1 += sizeof(uint32_t); + dword2array(b1, *w2++); + b1 += sizeof(uint32_t); + n -= 4 * sizeof(uint32_t); + } + + while (n >= sizeof(uint32_t)) { + dword2array(b1, *w2++); + b1 += sizeof(uint32_t); + n -= sizeof(uint32_t); + } + + b2 = (const char *)w2; + + while (n--) { + *b1++ = *b2++; + } + } + return s1; +} +#endif diff --git a/components/drivers/usb/cherryusb/core/usbd_core.c b/components/drivers/usb/cherryusb/core/usbd_core.c index 375c123c8c..e072d8a2a5 100644 --- a/components/drivers/usb/cherryusb/core/usbd_core.c +++ b/components/drivers/usb/cherryusb/core/usbd_core.c @@ -57,7 +57,7 @@ USB_NOCACHE_RAM_SECTION struct usbd_core_priv { #ifdef CONFIG_USBDEV_TEST_MODE bool test_req; #endif - struct usbd_interface *intf[8]; + struct usbd_interface *intf[16]; uint8_t intf_offset; struct usbd_tx_rx_msg tx_msg[CONFIG_USBDEV_EP_NUM]; @@ -98,7 +98,7 @@ static bool is_device_configured(uint8_t busid) */ static bool usbd_set_endpoint(uint8_t busid, const struct usb_endpoint_descriptor *ep) { - USB_LOG_INFO("Open ep:0x%02x type:%u mps:%u\r\n", + USB_LOG_DBG("Open ep:0x%02x type:%u mps:%u\r\n", ep->bEndpointAddress, USB_GET_ENDPOINT_TYPE(ep->bmAttributes), USB_GET_MAXPACKETSIZE(ep->wMaxPacketSize)); @@ -125,7 +125,7 @@ static bool usbd_set_endpoint(uint8_t busid, const struct usb_endpoint_descripto */ static bool usbd_reset_endpoint(uint8_t busid, const struct usb_endpoint_descriptor *ep) { - USB_LOG_INFO("Close ep:0x%02x type:%u\r\n", + USB_LOG_DBG("Close ep:0x%02x type:%u\r\n", ep->bEndpointAddress, USB_GET_ENDPOINT_TYPE(ep->bmAttributes)); @@ -177,8 +177,6 @@ static bool usbd_get_descriptor(uint8_t busid, uint16_t type_index, uint8_t **da break; case USB_DESCRIPTOR_TYPE_STRING: if (index == USB_OSDESC_STRING_DESC_INDEX) { - USB_LOG_INFO("read MS OS 2.0 descriptor string\r\n"); - if (!g_usbd_core[busid].descriptors->msosv1_descriptor) { found = false; break; @@ -244,8 +242,6 @@ static bool usbd_get_descriptor(uint8_t busid, uint16_t type_index, uint8_t **da break; case USB_DESCRIPTOR_TYPE_BINARY_OBJECT_STORE: - USB_LOG_INFO("read BOS descriptor string\r\n"); - if (!g_usbd_core[busid].descriptors->bos_descriptor) { found = false; break; @@ -283,8 +279,6 @@ static bool usbd_get_descriptor(uint8_t busid, uint16_t type_index, uint8_t **da index = LO_BYTE(type_index); if ((type == USB_DESCRIPTOR_TYPE_STRING) && (index == USB_OSDESC_STRING_DESC_INDEX)) { - USB_LOG_INFO("read MS OS 2.0 descriptor string\r\n"); - if (!g_usbd_core[busid].msosv1_desc) { return false; } @@ -295,8 +289,6 @@ static bool usbd_get_descriptor(uint8_t busid, uint16_t type_index, uint8_t **da return true; } else if (type == USB_DESCRIPTOR_TYPE_BINARY_OBJECT_STORE) { - USB_LOG_INFO("read BOS descriptor string\r\n"); - if (!g_usbd_core[busid].bos_desc) { return false; } @@ -623,8 +615,6 @@ static bool usbd_std_interface_req_handler(uint8_t busid, struct usb_setup_packe case USB_REQUEST_GET_DESCRIPTOR: if (type == 0x22) { /* HID_DESCRIPTOR_TYPE_HID_REPORT */ - USB_LOG_INFO("read hid report descriptor\r\n"); - for (uint8_t i = 0; i < g_usbd_core[busid].intf_offset; i++) { struct usbd_interface *intf = g_usbd_core[busid].intf[i]; @@ -813,7 +803,6 @@ static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *s if (setup->bRequest == g_usbd_core[busid].descriptors->msosv1_descriptor->vendor_code) { switch (setup->wIndex) { case 0x04: - USB_LOG_INFO("get Compat ID\r\n"); desclen = g_usbd_core[busid].descriptors->msosv1_descriptor->compat_id[0] + (g_usbd_core[busid].descriptors->msosv1_descriptor->compat_id[1] << 8) + (g_usbd_core[busid].descriptors->msosv1_descriptor->compat_id[2] << 16) + @@ -824,7 +813,6 @@ static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *s *len = desclen; return 0; case 0x05: - USB_LOG_INFO("get Compat id properties\r\n"); desclen = g_usbd_core[busid].descriptors->msosv1_descriptor->comp_id_property[setup->wValue][0] + (g_usbd_core[busid].descriptors->msosv1_descriptor->comp_id_property[setup->wValue][1] << 8) + (g_usbd_core[busid].descriptors->msosv1_descriptor->comp_id_property[setup->wValue][2] << 16) + @@ -843,8 +831,6 @@ static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *s if (setup->bRequest == g_usbd_core[busid].descriptors->msosv2_descriptor->vendor_code) { switch (setup->wIndex) { case WINUSB_REQUEST_GET_DESCRIPTOR_SET: - USB_LOG_INFO("GET MS OS 2.0 Descriptor\r\n"); - desclen = g_usbd_core[busid].descriptors->msosv2_descriptor->compat_id_len; *data = (uint8_t *)g_usbd_core[busid].descriptors->msosv2_descriptor->compat_id; //memcpy(*data, g_usbd_core[busid].descriptors->msosv2_descriptor->compat_id, desclen); @@ -859,8 +845,6 @@ static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *s if (setup->bRequest == g_usbd_core[busid].descriptors->webusb_url_descriptor->vendor_code) { switch (setup->wIndex) { case WINUSB_REQUEST_GET_DESCRIPTOR_SET: - USB_LOG_INFO("GET Webusb url Descriptor\r\n"); - desclen = g_usbd_core[busid].descriptors->webusb_url_descriptor->string_len; *data = (uint8_t *)g_usbd_core[busid].descriptors->webusb_url_descriptor->string; //memcpy(*data, g_usbd_core[busid].descriptors->webusb_url_descriptor->string, desclen); @@ -877,7 +861,6 @@ static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *s if (setup->bRequest == g_usbd_core[busid].msosv1_desc->vendor_code) { switch (setup->wIndex) { case 0x04: - USB_LOG_INFO("get Compat ID\r\n"); *data = (uint8_t *)g_usbd_core[busid].msosv1_desc->compat_id; desclen = g_usbd_core[busid].msosv1_desc->compat_id[0] + (g_usbd_core[busid].msosv1_desc->compat_id[1] << 8) + @@ -887,7 +870,6 @@ static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *s *len = desclen; return 0; case 0x05: - USB_LOG_INFO("get Compat id properties\r\n"); *data = (uint8_t *)g_usbd_core[busid].msosv1_desc->comp_id_property[setup->wValue]; desclen = g_usbd_core[busid].msosv1_desc->comp_id_property[setup->wValue][0] + (g_usbd_core[busid].msosv1_desc->comp_id_property[setup->wValue][1] << 8) + @@ -905,7 +887,6 @@ static int usbd_vendor_request_handler(uint8_t busid, struct usb_setup_packet *s if (setup->bRequest == g_usbd_core[busid].msosv2_desc->vendor_code) { switch (setup->wIndex) { case WINUSB_REQUEST_GET_DESCRIPTOR_SET: - USB_LOG_INFO("GET MS OS 2.0 Descriptor\r\n"); *data = (uint8_t *)g_usbd_core[busid].msosv2_desc->compat_id; //memcpy(*data, g_usbd_core[busid].msosv2_desc->compat_id, g_usbd_core[busid].msosv2_desc->compat_id_len); *len = g_usbd_core[busid].msosv2_desc->compat_id_len; diff --git a/components/drivers/usb/cherryusb/core/usbd_core.h b/components/drivers/usb/cherryusb/core/usbd_core.h index a1a943ecfe..01335f2faf 100644 --- a/components/drivers/usb/cherryusb/core/usbd_core.h +++ b/components/drivers/usb/cherryusb/core/usbd_core.h @@ -22,6 +22,7 @@ extern "C" { #include "usb_list.h" #include "usb_log.h" #include "usb_dc.h" +#include "usb_memcpy.h" enum usbd_event_type { /* USB DCD IRQ */ diff --git a/components/drivers/usb/cherryusb/core/usbh_core.c b/components/drivers/usb/cherryusb/core/usbh_core.c index cda801c33b..d1fc769d50 100644 --- a/components/drivers/usb/cherryusb/core/usbh_core.c +++ b/components/drivers/usb/cherryusb/core/usbh_core.c @@ -81,13 +81,9 @@ static int __usbh_free_devaddr(struct usbh_devaddr_map *devgen, uint8_t devaddr) static int usbh_free_devaddr(struct usbh_hubport *hport) { -#ifndef CONFIG_USBHOST_XHCI if (hport->dev_addr > 0) { __usbh_free_devaddr(&hport->bus->devgen, hport->dev_addr); } -#endif - - hport->dev_addr = 0; return 0; } @@ -398,23 +394,12 @@ int usbh_enumerate(struct usbh_hubport *hport) /* Reconfigure EP0 with the correct maximum packet size */ ep->wMaxPacketSize = ep_mps; -#ifdef CONFIG_USBHOST_XHCI - extern int usbh_get_xhci_devaddr(usbh_pipe_t * pipe); - - /* Assign a function address to the device connected to this port */ - dev_addr = usbh_get_xhci_devaddr(hport->ep0); - if (dev_addr < 0) { - USB_LOG_ERR("Failed to allocate devaddr,errorcode:%d\r\n", ret); - goto errout; - } -#else /* Assign a function address to the device connected to this port */ dev_addr = usbh_allocate_devaddr(&hport->bus->devgen); if (dev_addr < 0) { USB_LOG_ERR("Failed to allocate devaddr,errorcode:%d\r\n", ret); goto errout; } -#endif /* Set the USB device address */ setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_STANDARD | USB_REQUEST_RECIPIENT_DEVICE; @@ -617,8 +602,6 @@ void usbh_hubport_release(struct usbh_hubport *hport) static void usbh_bus_init(struct usbh_bus *bus, uint8_t busid, uint32_t reg_base) { - struct usbh_hub *hub; - memset(bus, 0, sizeof(struct usbh_bus)); bus->busid = busid; bus->hcd.hcd_id = busid; @@ -627,20 +610,6 @@ static void usbh_bus_init(struct usbh_bus *bus, uint8_t busid, uint32_t reg_base /* devaddr 1 is for roothub */ bus->devgen.next = 2; - usb_slist_init(&bus->hub_list); - - hub = &bus->hcd.roothub; - hub->connected = true; - hub->index = 1; - hub->is_roothub = true; - hub->parent = NULL; - hub->hub_addr = 1; - hub->hub_desc.bNbrPorts = CONFIG_USBHOST_MAX_RHPORTS; - hub->int_buffer = bus->hcd.roothub_intbuf; - hub->bus = bus; - - usb_slist_init(&bus->hub_list); - usb_slist_add_tail(&bus->hub_list, &hub->list); usb_slist_add_tail(&g_bus_head, &bus->list); } @@ -684,7 +653,6 @@ int usbh_deinitialize(uint8_t busid) usbh_hub_deinitialize(bus); - usb_slist_init(&bus->hub_list); usb_slist_remove(&g_bus_head, &bus->list); return 0; @@ -757,24 +725,29 @@ int usbh_set_interface(struct usbh_hubport *hport, uint8_t intf, uint8_t altsett return usbh_control_transfer(hport, setup, NULL); } -void *usbh_find_class_instance(const char *devname) +static void *usbh_list_all_interface_name(struct usbh_hub *hub, const char *devname) { struct usbh_hubport *hport; - usb_slist_t *hub_list; - usb_slist_t *bus_list; + struct usbh_hub *hub_next; + void *priv; - usb_slist_for_each(bus_list, &g_bus_head) - { - struct usbh_bus *bus = usb_slist_entry(bus_list, struct usbh_bus, list); - usb_slist_for_each(hub_list, &bus->hub_list) - { - struct usbh_hub *hub = usb_slist_entry(hub_list, struct usbh_hub, list); - for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) { - hport = &hub->child[port]; - if (hport->connected) { - for (uint8_t itf = 0; itf < hport->config.config_desc.bNumInterfaces; itf++) { - if ((strncmp(hport->config.intf[itf].devname, devname, CONFIG_USBHOST_DEV_NAMELEN) == 0) && hport->config.intf[itf].priv) - return hport->config.intf[itf].priv; + for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) { + hport = &hub->child[port]; + if (hport->connected) { + for (uint8_t itf = 0; itf < hport->config.config_desc.bNumInterfaces; itf++) { + if (hport->config.intf[itf].class_driver && hport->config.intf[itf].class_driver->driver_name) { + if ((strncmp(hport->config.intf[itf].devname, devname, CONFIG_USBHOST_DEV_NAMELEN) == 0) && hport->config.intf[itf].priv) + return hport->config.intf[itf].priv; + + if (strcmp(hport->config.intf[itf].class_driver->driver_name, "hub") == 0) { + hub_next = hport->config.intf[itf].priv; + + if (hub_next && hub_next->connected) { + priv = usbh_list_all_interface_name(hub_next, devname); + if (priv) { + return priv; + } + } } } } @@ -783,11 +756,101 @@ void *usbh_find_class_instance(const char *devname) return NULL; } +static void usbh_list_all_interface_driver(struct usbh_hub *hub) +{ + struct usbh_hubport *hport; + struct usbh_hub *hub_next; + + for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) { + hport = &hub->child[port]; + if (hport->connected) { + for (uint8_t itf = 0; itf < hport->config.config_desc.bNumInterfaces; itf++) { + if (hport->config.intf[itf].class_driver && hport->config.intf[itf].class_driver->driver_name) { + for (uint8_t j = 0; j < hub->index; j++) { + USB_LOG_RAW("\t"); + } + + USB_LOG_RAW("|__Port %u, dev addr:0x%02x, If %u, ClassDriver=%s\r\n", + hport->port, + hport->dev_addr, + itf, + hport->config.intf[itf].class_driver->driver_name); + + if (strcmp(hport->config.intf[itf].class_driver->driver_name, "hub") == 0) { + hub_next = hport->config.intf[itf].priv; + + if (hub_next && hub_next->connected) { + usbh_list_all_interface_driver(hub_next); + } + } + } + } + } + } +} + +static void usbh_list_all_interface_desc(struct usbh_bus *bus, struct usbh_hub *hub) +{ + struct usbh_hubport *hport; + struct usbh_hub *hub_next; + + for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) { + hport = &hub->child[port]; + if (hport->connected) { + USB_LOG_RAW("\r\nBus %u, Hub %u, Port %u, dev addr:0x%02x, VID:PID 0x%04x:0x%04x\r\n", + bus->busid, + hub->index, + hport->port, + hport->dev_addr, + hport->device_desc.idVendor, + hport->device_desc.idProduct); + usbh_print_hubport_info(hport); + + for (uint8_t itf = 0; itf < hport->config.config_desc.bNumInterfaces; itf++) { + if (hport->config.intf[itf].class_driver && hport->config.intf[itf].class_driver->driver_name) { + if (strcmp(hport->config.intf[itf].class_driver->driver_name, "hub") == 0) { + hub_next = hport->config.intf[itf].priv; + + if (hub_next && hub_next->connected) { + usbh_list_all_interface_desc(bus, hub_next); + } + } + } + } + } + } +} + +void *usbh_find_class_instance(const char *devname) +{ + usb_slist_t *bus_list; + struct usbh_hub *hub; + struct usbh_bus *bus; + void *priv; + size_t flags; + + flags = usb_osal_enter_critical_section(); + usb_slist_for_each(bus_list, &g_bus_head) + { + bus = usb_slist_entry(bus_list, struct usbh_bus, list); + hub = &bus->hcd.roothub; + + priv = usbh_list_all_interface_name(hub, devname); + if (priv) { + usb_osal_leave_critical_section(flags); + return priv; + } + } + usb_osal_leave_critical_section(flags); + return NULL; +} + int lsusb(int argc, char **argv) { - usb_slist_t *hub_list; usb_slist_t *bus_list; - struct usbh_hubport *hport; + struct usbh_hub *hub; + struct usbh_bus *bus; + size_t flags; if (argc < 2) { USB_LOG_RAW("Usage: lsusb [options]...\r\n"); @@ -810,69 +873,36 @@ int lsusb(int argc, char **argv) return 0; } + flags = usb_osal_enter_critical_section(); + + if (strcmp(argv[1], "-V") == 0) { + USB_LOG_RAW("CherryUSB Version %s\r\n", CHERRYUSB_VERSION_STR); + } + if (strcmp(argv[1], "-t") == 0) { usb_slist_for_each(bus_list, &g_bus_head) { - struct usbh_bus *bus = usb_slist_entry(bus_list, struct usbh_bus, list); - usb_slist_for_each(hub_list, &bus->hub_list) - { - struct usbh_hub *hub = usb_slist_entry(hub_list, struct usbh_hub, list); + bus = usb_slist_entry(bus_list, struct usbh_bus, list); + hub = &bus->hcd.roothub; - if (hub->is_roothub) { - USB_LOG_RAW("/: Bus %u, Hub %u, ports=%u, is roothub\r\n", - bus->busid, - hub->index, - hub->hub_desc.bNbrPorts); - } else { - USB_LOG_RAW("/: Bus %u, Hub %u, ports=%u, mounted on Hub %02u:Port %u\r\n", - bus->busid, - hub->index, - hub->hub_desc.bNbrPorts, - hub->parent->parent->index, - hub->parent->port); - } - - for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) { - hport = &hub->child[port]; - if (hport->connected) { - for (uint8_t i = 0; i < hport->config.config_desc.bNumInterfaces; i++) { - if (hport->config.intf[i].class_driver && hport->config.intf[i].class_driver->driver_name) { - USB_LOG_RAW("\t|__Port %u, dev addr:0x%02x, If %u, ClassDriver=%s\r\n", - hport->port, - hport->dev_addr, - i, - hport->config.intf[i].class_driver->driver_name); - } - } - } - } - } + USB_LOG_RAW("/: Bus %u, Hub %u, ports=%u, is roothub\r\n", + bus->busid, + hub->index, + hub->hub_desc.bNbrPorts); + usbh_list_all_interface_driver(hub); } } if (strcmp(argv[1], "-v") == 0) { usb_slist_for_each(bus_list, &g_bus_head) { - struct usbh_bus *bus = usb_slist_entry(bus_list, struct usbh_bus, list); - usb_slist_for_each(hub_list, &bus->hub_list) - { - struct usbh_hub *hub = usb_slist_entry(hub_list, struct usbh_hub, list); - for (uint8_t port = 0; port < hub->hub_desc.bNbrPorts; port++) { - hport = &hub->child[port]; - if (hport->connected) { - USB_LOG_RAW("Bus %u, Hub %02u, Port %u, dev addr:0x%02x, VID:PID 0x%04x:0x%04x\r\n", - bus->busid, - hub->index, - hport->port, - hport->dev_addr, - hport->device_desc.idVendor, - hport->device_desc.idProduct); - usbh_print_hubport_info(hport); - } - } - } + bus = usb_slist_entry(bus_list, struct usbh_bus, list); + hub = &bus->hcd.roothub; + + usbh_list_all_interface_desc(bus, hub); } } + usb_osal_leave_critical_section(flags); return 0; } diff --git a/components/drivers/usb/cherryusb/core/usbh_core.h b/components/drivers/usb/cherryusb/core/usbh_core.h index 9ce081fc5d..3210988575 100644 --- a/components/drivers/usb/cherryusb/core/usbh_core.h +++ b/components/drivers/usb/cherryusb/core/usbh_core.h @@ -20,6 +20,7 @@ #include "usb_hc.h" #include "usb_osal.h" #include "usbh_hub.h" +#include "usb_memcpy.h" #ifdef __cplusplus extern "C" { @@ -51,10 +52,10 @@ extern "C" { ep = ep_desc; \ USB_LOG_INFO("Ep=%02x Attr=%02u Mps=%d Interval=%02u Mult=%02u\r\n", \ ep_desc->bEndpointAddress, \ - USB_GET_ENDPOINT_TYPE(ep_desc->bmAttributes), \ + ep_desc->bmAttributes, \ USB_GET_MAXPACKETSIZE(ep_desc->wMaxPacketSize), \ ep_desc->bInterval, \ - USB_GET_MULT(ep_desc->bmAttributes)); \ + USB_GET_MULT(ep_desc->wMaxPacketSize)); \ } while (0) struct usbh_class_info { @@ -109,16 +110,12 @@ struct usbh_hubport { struct usb_setup_packet *setup; struct usbh_hub *parent; struct usbh_bus *bus; -#ifdef CONFIG_USBHOST_XHCI - uint32_t protocol; /* port protocol, for xhci, some ports are USB2.0, others are USB3.0 */ -#endif struct usb_endpoint_descriptor ep0; struct usbh_urb ep0_urb; usb_osal_mutex_t mutex; }; struct usbh_hub { - usb_slist_t list; bool connected; bool is_roothub; uint8_t index; @@ -159,7 +156,6 @@ struct usbh_bus { struct usbh_devaddr_map devgen; usb_osal_thread_t hub_thread; usb_osal_mq_t hub_mq; - usb_slist_t hub_list; }; static inline void usbh_control_urb_fill(struct usbh_urb *urb, diff --git a/components/drivers/usb/cherryusb/demo/CherryUSB.h264 b/components/drivers/usb/cherryusb/demo/CherryUSB.h264 new file mode 100644 index 0000000000000000000000000000000000000000..93d8ccf1c9d8b6a543d708208d7bbdac44d09295 GIT binary patch literal 20750 zcmeIZWpEuyllObX%xK{eTTB)+qb;_WnVFecvY63AiWxn*O&d&N(cGkZ;sxnRk000nU0{}tk0)IA7#~H{tNNzj;00sd6br|4QsaFBK zd6*n-4H0*~H6S5gUo)0P_S<$B#2XT6=79?&C#Nnw$66a7b7 z5i!~iK!MLfZ`TYA_1}DitZiH^42>LsObiUnv`h?4zdD*YIM{H~(>psm(>a+M7+PEC zTG3hC8Posb(wR6|TDy`h^?4Y9c7{eg%s>M}Jqv4na~?)c22KW` zu9dEZtGyu)g9|e!g9{@gGtknI$HdSDXz!@^)?x$N*t@=UeLHH~8SpUDF}!tpI{+ zw-9s<+^nq(d6*b!7#V>^y7ms*HumPGHorW618i-yt&NQA4IOxBnSc%^c5gl2Kukaj zYin~|leaVNzl=;kdka(jw_yGKl?R0uPT3`o`vAVqy5RscmU$ z^>zxh*Eh5>)OU2?`M~fiOgr6QIkhviH+k!Br?365+x>OjPM=5L&Io9!_m7AAqJdZ?p8Kh_^|6W9izy3EGnu+LP)7_jH!@n&Bv!OMIm_x|Srv4;pg*>2qNBJX=zmqXpi_C{*_3Uyc~M ztv+=F89H9of_qhz=o}`!vK&fl9zp5^_=)F@x)>Dek*93w-L~naoCAEw!4XduVucq+ zLh9Y(cDd|sbhE*OoC;Kgz9T6T3V%R7Cp(&OrKu&N5EEf(U^?#2%dr6s=t*LMVa2d2 zB_b#e=GzlTYip{v%()Ri-<{2nJJOxZ-!H?&NBm||9T(?m;g(q?=TbH(*?67Y$E0pR z6lrHwL#Noi4q0?JjF{ka{KDuk?+KdgK9{`7PJzsa4_6#YR1nQ0{>4%HG@VYA4_vv# zq=P-_&Z?-zkM6L5^ghS_be^ip{8do$wLN}e@%9<9Zxg2!iep#Hp0cFO-KjW{2-f!3 zYX|@a0#%155poX_%+fQ*gXNeF)~_YwBzune_2=ZSn>&6Y!8b-^yfB+&4%L+}EQa5< zp3hn?gB+GWFVV}W#fAM~?yj9PMqYE+!K~5+J-Y)uwXp_lq_mN49Z&>VHij%WC*WHE z63@tZ??%55r4txa0ojux*zWtozmOug!5x)>BpMJofQ=;{!1BY?%=7=K&hr(Pha^CI zm7DNUKTEEFgJED6jp{R<9UMciax!kni*p3+gkxrcsg$zSE9{>WI)V1NWOe9vw@5O} zK-jVW`Peb%YFn{P$E?1OM1CUj=oM)d<0Vj!oJwg#Hx8^$XPz!QrZ^(J{vr0swq!Oc z`bCmM-Tr~VH`F<{HU-khkcjhGPV<4}!3G!c+?0KT)%Bz*^GDqV8Ilt*swcq?1iOjR ztbK=jL}n5`KQ>H&t_97H<#h~*gvaNH_UvA%nocAe1f!JL{I(FB?>8;ow4BhXh37RZ z41QRH3CvO7VMlN2ZA!hWW!HG|R`3F0kE?OIAk^iq#87#uM?OSpsaAu2nz~>ut!yV* z|7tmD^)BYu91T{by{P&jDH?RoH)2d!wF*vRk^}F!$650hkQs$m-Fj)5(=K|JMoadR zUxcwVl-JGk!eQV#^!tFl!x6mo(2L!Q=LANa2827MpcCYi*&iqkyc8%@R#l7U&<6J} zL+#w-59*p81cZ*}LPVFT9*&tX`Q(iD#kLC@&`r~i@oeQD@7MW{=-CxAKp>vBoVP=GfcsN$ZAq3MMAAsj%M${Yea(-F7$uCS0 zneF%;(}(^cirKCd#U?T5oLO@9O8hfu;GP7#k2bYhX$0A-uUlz#_k1t3mfutwHc)UG z`wVYU*N!EKy$q_gG9_2eRM$2P*mgk^5(ZqcT91RTbShX_@a$Qe^0!gL2V*CQ22VSm z8DFqn_0Wr;-B`=1iqVV?7<^H~j(`YYsd>*|>1v51k?EA&Ww~bR zxuyMco;>BFJa4>>*J|ASjx>CW(}^&Y)TCsp$R495(~Q!>#aKVt0qxuc9G{W$NZ*ZW zR1JeiP}Y~ZfXIqK*-$AB^Pf>h?m^_EHHhOP?xLUdo7^v%rP;}ziAogj2ilT#9@_zI z++p%JbC;tK-RO;$uOZ;}C{i2hFSKaF#1MI!5?MrsktYOq;vFrgFd#!*@z;I$np|k) zTq;*QGqgtI3ri6(M#&WNIpuBO?nck8o0zCu$aGAYmtvqdPNA<=4a34EaWm6)G6?Ez zW($iU-+)5jFEh(`bDnz!<`q?;G#s9>9gmTO6skfNad#Dl`j^BU%ro_-DexL81~&~z zW2~(TVa2L4;ZU$@6~nMc1U~gj7nENMP9zgw)|CcH55vKbX3i4Oi$4@J^Sk8yRFB*G zSpmmTC5z>DZ%Nq*A=GgarkXWO>;^iKqvGt1d$o?XvA4-le%RapB`e>4N|4MEPS6@f z9ir=y<9n2BGF6}gEaYBTWmVjSXpraGBtJBpk9Q!AnVT*C!K2LRiKlr(GsyG;R`)C-PW5 zAn(5C$pND7Wm$MDkwb>`0<#k+N*N)-#RO)Q1(u4`VV&(OUMOz}?y7n}oQ^*<)QnU! zY3HbfyIEnj!xt|_36gDAm`=<0O}dr(d};4-#Yg(~jZ)_a?=NL-j8{B6Jmxo;B_`0=5y2xKZg_M#ZIUbd5wM2xS50- z#I6G+#pfV?MdXsaljgvY`LqYYdV0L80LLVc_>9X!VvJoLZ#b)H=li*{*oq?0Ta@{SG%epiH#{obT@FriY5`a#NpZrrztrvYxX_$)H!?NJO*e zQIe)6wW5kGNvJDn(hjI?vqS+b9tY5|f~9(^IIgbn1}~q|m{C>xVpn!!4X@vN>xB8W z`Fvp+weR-SK?0_E!UFuxiMv^@k#T^xopcn;mi8#7$RFc6FUT4ta?Vm23lT+BINNYI z^P809H#EM@WFXvY3zf@>o^@vBGo(Kble{?Y(*3km47cJ#Dp#wUTXuq=^@-ao1|?;MVljH) zV=Cl9D@-bNygeB-cS#MfMx;C2x8MQ1*-Jv;`zO5peeq)a7)FwSL!!o6iK*ra0HKgLHibsEzC%PGFSPSj!>`@ zVXNQnFm~cL_HjG9&cfea z(?RCK3qJBrO!&Sd-7ftx!xqlx>Ib@&Z)3~jW^`53>A{iE#yFTX!9ck2A%{@Ga2_QO z0Gko*Nfx`lB~V-X1H$%>0O>Lq)HwVu?jfD+IB2s>QrBtu5~aT_was zkj#D;Q?XcKfW9)%1jPfb*u`|Pg46k;^2GTr>SNY@7RvL>$g2$#66(v5e6eryS^FNx z7s;aglSbWGDLB_AeXh@+V5%EixJXqLgl1OVBJW^>x&X#fdws!QrM#bhP$Y{G6A1a5 z9wMJl72x|*;)greeDWG!+R?RrVK2-Si=gwVg~D?Vo0Y9&8XIe`w6=0S&_qXe$CaC$ zUG|7ydRAjAdkmQso{HyQ7wI{@ zEj4M7gHxeL@NniJ^Ka9px0!t0yq!loq4|J@%5S6`^2q_q6qbcN{oe z#j27Cb6c9w?$6^oNBe46y2Sxvm?j29x-a5joFbBh^*Q4R6=dl2<%M26?kP2d(`n>+ zqc6H;h*$O-%V1Z@K1r`X5x*nEy2CfN&?EH(9`%gqTwaHP+bZ2Vm9cdfep-_=_~NbF z@WkEd*peU_h|E3REy%WEAG`7pQ8lb^)qf26E-U=x!lse@>Jn(LzPxX+0!8oslOamF z$Aa183n|!a4(cKLt4nNT%B(0|0gQC{l3=$^Xch(@2sB>SdJ%Tu9geObwa?OgdP~z) z5*Hg$FPTZ|RL;;bu8=gAb7NW99bdD{O0tR`(w8Rf%6|RxKtxxiKw6(txQ`1akPZ-w zH<%0v{xq?}9=XmQMZD0Z#<|h*IR-pDC>Xr9wDC@T< z&4zlW%6(GT%2gu~%dU5{2%$y0TY0P}_-mq#TUWhJ7HUu`UC?$F5mDr2UnCpiCC8%h zuFHR1)R{2tYHl5OIHWg@gW7whIGsQf$>|->m7lND=;mZDuO^GFDak1NW2L(%G*nDZ zHDY-LgP?}mo3&K&qWEs5ru1#(z-0aW8m^YiwC9rSQjBbsQ=I!ch1ufbv+c0cA_{Y; z^%CiRR$U+^0X~YCq3Jd+-&Ckt2Y0XtPu_$;rO(lNEe!6T`$5KET(8u*_@Zk)_o<{T znOV~Km{GYQOCgsk!OQrT9{1}Waqlt+=o76~v*86sSOHDPiTqB+_bsEkBABUQde;k^Gj>RTeX!tNv=EFVXN<9D*>G&S-R5_`*R1R>JQ! z2RU$%>pv#an?zuDUTOsx(LtJokt>4PA<$>3#UpLiwtgU9r{ms2GYB$Y@w3-l9~SAh zcZDx+hZdg`2btOQOgQRefzSzVGYGNTJ>3=!B~eV{J)Pz&Jxr-Q%I9f{V=D6@>!cz& z+Qb+45Ou$tB_gShHyRdit!@~GI5VH@=lhL$!h89011o560`D7(j4veya^=u#;b4aM zbbT);R;|kXjF_9+TOKv#w)-wk?9)YEZ)@VCqGN#{Y@Qd6CzwR$)#K;IcbqaE1ffieJD$ zvJ=u(Lvu7aF5lKzXsULq;95H+eDX_tzt+3FJH_y_5>uF($=LXC;AqrTF#W29RhdU> z#~sX3OnmMbx1~1@G7+TNWJ*qmCC~^lCK3-CR>s5bJGf>o#PVob5lcwT6T-!>1Vw+v zVD5{*c}f5}I1{^h&(^9&8+h55Gyql~av|reyF^msc#+GkREjR$qbXs+F{J~b+R*^{ ztdn96TAlT-#)oUKz4Um6!OBIb@Yn%eci?^ltI2TKEG$;Lx6#a?(b_rXg=43^2AN@^^!E&e3FBDP6wu8M(u|G5YNv zzEb)=rpM;t*Jx}(VT^#<4nIc5;)23woe^vbWQ~mw~=ffQS+?At`hu3#h^_ ztRtm6?6b+G%pNylK`(tX6YoZRg0m@2aXTEmv$WR z2?qm8&qcz)p_{Dv^-K8VgXqo{t(bFzEQGlG$*K}M>?;nh6FOJ>);Cp?Uj0W;R$S&% z-1U4EI_RkO6K`ln)dCLU0}%f)6OfeZQOQ))xpd0AA}j9PB_d4E{S=|efUdbbn%Rd{WTvvf5)g7(!eU26 z&`z930U#Mt)c5Jouh+uU83A~O>FRsJJqKRi4qKly8g~;=HMJ!4*q{Uv`bPDC!cw`E zrxdD3lIOmMPkC=5?stQ)pf%{(JOM;RzoAu*Nc#r(E=5dOSR-jRV#lbD1BJS~hu~8X z>jR$SC|+na^V(VGpxu6SH6Rs8f1j=B68!!%DBuj_TTEksW;12yCoD*RYsWeAeR|Og z9m&@2$8MKq0#Cn$0H>T%H)`X|t^1wR zA%@j-4QR%AwS|5-wCm@l#yMEpVCm?1bA5ITnde=3njIXPW)*9-8TSE>PDv=@xDI2^ zaE>&&$V8rskA<|2q9cZ!fT8E!fOgY3XhI5tf?n^1AzAhw(06SxmV6|7)t!3|=baf= zk<>2(MaZ>hfzPf_k4&cF1IQ-Jp?B_>iH11mjR_8D_o+dr8f zN=JG$Hgins%Ip?Op;~BMySvNZVvr&POXcJJ$aa@j@BK>kGp2w*gU?FgLWuDiMz=j8dI zNHs17L@8ow@{Xur2#CbIyXHlMcR4jw)H)b(c%jm^iLmO+bIF*JU$Gx1rn*X5{Ri(V zW?AN8fMoE&wPFPeGtd!w4~Z0HGx?)x65`a zXbNghSCl)GP6NoA?S|eyt^5)uY9GNHn(Li>cv@TgSY8{Rlb$F;AueR^#mb`dm>0&I zwf6c6yB`}U^zH-tyfgp+N!Bi!iEp#Q9cCy&AS7AVrcDG-^Wf}GY=h*80w|gz6;!90 z3ZlNj`RqZsE#fuS0k!SYUI>6igI?OISUoY+x^Vd<9B+5_lJ_*7hjuSPogpM;wi+~P zsw&eQav2LGEJ#u)PW|qZO3IX#BKN3Y38+1StQYc%q=g^1yr$Pd|$n^AuTQKL;U+;i`; zZ${ej;Mv;4>Xqhowoctzh0iofLJFWNz6Mor?Yks$J&vgTCX>gkJvhsX4@Uz+opn4NjWQH&q_*vqy$o1JQkaZu4IYVtmmtphjtPF zAoX3-jIh^{fd{Pxi2;*D^jf*bhysCS(_lhg9Z>-2YG9{(PPll_$i!GtS?aWd;^C|A zmdo^k*+uIsMv$nGOgJbZ9J{1x^yRn56~p6>9_mT)ei>hk%uvzL%Z4>T-9y;Jpvad0U0_kl|hxG)ligNH~U>E~1_^;$ ze7zMgQf)fhBhlU(aaSCk`c=Z1eByO`yd)Da&eoU-O-1 zBI*+8*g z><%cRaKcapGv%jWGiDN}VB6Mxqp0Jyp%WynOl|AO!dSzjp>!jOm8h=jO5%9A;WIvatrFAY_Ma}H>r6e?TZE7fR^O>N$JRLta! zC1cDjru5jYd>{1^OS0~xTNUm(^Vi!Z)yc#xZ3ICfdpL{E$0kV^3JBdES(^&KP?Z|= zinN!GK`asjzU7TVazU!e9EI&z+8{;q^qqKlr}fX&7^X_|nzsAKL*>YufI+!v$RGbW z%rc=3scv&E+Id$2sV}%zmd(0`R89k*8vL~^Ho1Ep)6-{cbyN8$h?|Dflj4D|h0b9C zAYi$?V_u1G5V~4(#%I}%S4U*{$Ymp*7=8t<$!L@#{GN2uUa*3J0SQX&^ZFby@4W2NJU&>Nr4VWT|#Gp`m7XNri%1Ah_~KVPuCXH}@Cya8$Mi%8 z`MhL*JRBd>)wDC2Qxcxf#UZU#20)k4u4=xpk4#Y->y&3>M;x4+eu)R{{O>|scABu= zlJ&7E$FK^O$7LUCRDEpwfliM%Ls=*8?Nhg2&8 z-O;5`nx@Y>O=UvHgk)NVb+{wX+}XT2_Au-W=}E64`R{RJb1AV-?@AXi)mZ8=jw{Pp zR8WgV4T$%b@d^LKxHKdv_<(wU}ZG z*+{!&cLBRkKi8xJ8;7m;OlTJMaNFxs(>672JL5~@=OA6ikm@xtMh6;bi;XU`Y(~GL zvGaok0`kasvymmzN=YO!&K~_#lmH-zHF4NohF%c|gH;AeD!zF1QtWz!lO9~)gG-$v zC9^Cjy61d+MxiE49=XLL9c0%A?ZT)c&5-=QF(&1!?c7F!ik^0H6mi-#H(*YeQ?2ttz44y zW-khy16)alM!g&7kwAh1w+;NTuC!8jjH6dU+v@GDlH8TcdB6k^F>}3i9~r$QqGWi#$O%R3 zX^%>lMCStE**;AFZM4XN5m>Ur4EkzN{`dC$EkgJm8{RLCrWbvybOoLH7x45_QycU= zVet2cyRU(-YzB_&G=i3kKQde=u=UCvaboo4N@&;w*_kH>;8Hc^&xHNJnWFgj0jFQ7 z5b@m)?a?}w;L-8AV`3O@44esY?%4)mPhmAxMn36;c*EaEv7n}_Z#_)`V_db`wS@C0+Gc%t#Ne8D%`yjNT;-sbQy$lXGC9SG>YaJ zcGLyJ8&e3Z`RJe)O;67(o z9ThLcFFMX%I3TDDm$HZO)*bpOSA11hOwH@29(~euQRT{n_&G!qb&7&|6%1)WkSZNI6$ZV}Yvs4>h1CyQ}~x3W-7S~r~i`6U8nS7v#R{7k}tW4-89S6{OrW9~|>oQuUpFJu(Y(CM4+{f1d1%(1@s!YARhAD6AD&*;Gqp3Lv z4z@CVdXUl+GiFm{_=F#{pfIZl+4c0cn~UZ(c3x9<8(&unK?`@11H&T*Zz|$_0&j~e z1J^78$Gh;lX%vnL%O8mgQ804=ED^=H(mM(`0<*RQGQx4^^l6YEO-2S}fcv?@V%DvqjTH@$!0U<4&dDpuXN z$zaA2G?|pTLL>Bo0z91E7dG>%T=EC20Y>xE(@MelT4HwMGzwgh+XSMhwko$24P_0; zmO$>k$nn*?qR5ZPlIPbZhMokbI>scz*8!iVb!@7Un7f&a_hP6w#iCw@n6LxDvT`%4 zg@@`AH()

6V6xF=*N}6YNlz@@CwbAv@Va9d&s(n?=+yPf18|$*g!w<0eXe_E<8| zo6U~TjT$}9I=G!%qV`C`^7%X&hH1plaF$)S)=0B|o^bBOFKCbDaueU{@wRI}0<_^v zBd;*5J@`uukQW`$24T@JyxY)VR;bFukiG0-=wjwYhEdz)*%2@J*m`MN5OSR0%g6qV zy8O6mE?UsZzWOBl4YrGv10nx&cwc1ZL zTX%Pyw=vx|DK^!${d3EYBaEW3{0TyOcB73Zmm^W zKUw64N;3(m6HIROD=OWVls=2g-a+u8jUU%WFA1&3uYZ*!P`1}E->AsGjNabL^E4cX zc9{dHMG%q2;5r*R9KU^Hnpwa}m+QqMx2AqPYjZzH`EkKS_DMfDsCa#!z-6yFp>oHV zCv~|PYku*4B=FO+A=g6!ggW2-OO}J$P@ErZ;^S8XCsoh)%^BPLX;rcE3zT$@ahm~f z*Z_|T&Bc8eKwB?u^`QC6BjNO%Svzq?1e$DA1k|It4d&&GxXd;5b>b>;QRe7*+Fx8P zk7>QNxOa$IH@n>^;ucwFzNfZ%Dhxh42*xcz0}66vt$$o4{qct&M*!0-6q0{v3=2P4 zD!ziY!r9!?YKc}-g{2TkrGrG2?@j@9=~3){N`G4|VuID8i6tq^4vHYkAg+XlMkFPE z%apI7%hy03I{Opd5V;m}d-P@lHRIj%`4r`k-Cu7QIEuvDJ*w_S=j;uL;(Ld!N{4rq z$v(!f2Fn~m#0C0yXRl}yHMp(lQ;4oZ?BxN=*{tRTuRw@>0+)-*{^s=X*#G+KuKxDU@%R-gse9Li-G0SJ;;x zuE&Ch`-w9q-J+Hs62?oI2 zu|TAoV$@wHONB6V394#+Ank9mta4wROA24^$qFDKV4}x8tJd4MecKj}fQCJqWNjlc=X;f7$1fnfA8M*1ilkYD_Ua($}p&j3V>M7IL7n`EiWiO#7l z@51Mmtd*Hg`=i)cxd6aZU-+tpTTO25q*zDun@3nD?R43!ij(!*`ham|XB4hoB@E^r zaftTWWw140!Id+9R;9Jc>ilA6LN1v_jPIrUH}k_)!;R9r5JL(0&r<`3SD{p$Bh5OE z*~nEvBG)k;R=)S(Z4+Ljf_DA4%Co}nx{12P76@K|2m();A8eW|4;?#qQZ%`P8{bqq4xn+ zcArbO$!)Sjb?F0++=bUAc_n^M(+9LwUwA#A)zIXXNO z)Z_T~L>DFfT>(<9Z;l5|^~UcV5awd2E6ypDzdkw*eFl}><9w|~Wxd@I2zhVO>?y=Q z^!n}rjtOqv9DV&pv5*w)NC0|RU2UEHVIg|JpA2~tlNtiKRI{<2ShW#+--UbAd_H{% z6gQ_40T}E(8HO|my1m_VlWH2wxSkZJNm7{;eKWB3?SCx63MURZrvCIE6tW?IHy=!Y2`Jj_af>Ewd& z!%4I1ds@$Ds7Z~Q^voGcTu}~nuUvUWg>D{xa@c3d9IwqZd_}Q%K7t1zrad^AaW;M}i_5S-GNXJ9!6xqtuYDiuy zVe&&ew$C0Y;)a>~ybDee-#P7Ov8O@YOX zv)W2Ybv}8-!eYc6BD;?~%+`YwhJFth${;uV0QjI$1nWI$CXMIukZUPu%-pxC{jqU+ zdTkh)TIFUVD*B=;0=r0{wlHfi3^USQ(N{4zSsEzPyZtzNKMwb!6T^80iR2wW0LrRT zqbIP5CD)ndJ$0vUjD^-sn}dxr^F8~dCH+1~DzX~T+1H{LJnOD&DWDgqQC$kY_Y*atLw1u zs=t!0202Iy$TL63tI#pzWpJ#n0dy5J?vEDQFJ#gb&9=oF*GD|DTFnf>q+r@ z`gBqyRMlqtCy2Qm5QZ%hDc)L((WS8WU1v_YpLK|lf}Ax9bNlfspbec{VZkmW;tD=W z$5=F&o4-F-?6>J4@3V#SMAHM?O1bFu+Oj z+kH%KupkuQq-!OeCL0jnuP!A@_NXc>VmP9TqKTA(?C@&PecTGldOpB-p-2pVv{$~u zXA3I^qUN)i`8waf^E##lZ)daW|3>^pmxt?1F=@-~ZdQPYF2u>Zs+%;mLVI(3j`#=H z*hZBsLEty`^V_#&FQyM~q#IkZric?VQd-%&xcT*of`Tm5Ix!wdMGWj5KuKPA75nJ8 z^=k79wBbW;tnMdfpsJ!__tm zTcs^61X!_&+i}J31`m_D?k=Zf9(d~8MKh=qIOL~YgAGbF!VPIj@7C@Yg z5|S3Q!viNYnV8AlT||5QnW^k1$Eg|$;O^cSJCA3bfH?IRop$NFj76p}W*Ha z+YlVOR8l!1B{jr!Xuro`b$k;L?)2R@mAWmEB9mg;yh+FW3^Ic@5Is&#;Mhp8OI(DFUXbGPaWeLn^^|0rq z#tQ65oX=RvO)(&40iGe^-29&3+WHEz7yP z*-6BBpz?;Lo6c6eT&?I^KZqHquwLJHlhkeT^2L@8WMs94^Y}Lq3XH_PL(GTUlBA!- zLS|Qy$(4bKC%mAbp_+EWs;&yU_z4ti#t4Kz!Nm@3r7j`xxt4JUv&oO7N=wp+{3UHdRdW|b}81W9#k|pw^j0! z8&L}g19;w9n=qR@<*0krfc;G;R&Z;=8nrFR#rOs(z4%8SC(GqN#u^DK(z(G&0?m;A zxQ36)h$P`tlm$wt(Jq`LYOA0h?j(dm+zjsQ9j>mif)p)9*;{I7~9- zEGs(Q&Aafy>tZu78W=hfCMRJ(GO~e5V%)*Ns7*#uR6J0Elro)`C{YvA%0Wkx^k$?!V1;;K$9(XfEC(BceS9*X#RN&;)aR0&mx!M;XNWgLbw4ZvHgf)leQG_ zgebl{@{{IecsAeN0QdJYOW&N`n@tBxeSSQw*dDRbNQr(J?tX}H*D+3XyIILTt$JK; z`N9BHP>6j+JY8+aCLZGs>VOJ-do-+{&d|d_EqEoE+F{+r%b?r6uoB=9OEX*-yJ-a( zecL*PsZxgPb_pY)u&4XXiWJd(OdXUx8qI90b3!Q;-@hE-X{~>1HSzQJLE7=6$irBh829mHQ+I`F=ohGLAc6JDH8dH%-PU@mTZSgF`FgftR~u zI*9~3q|=JH-pKa3DpB(AlO1o*#Ri{pIFi|IZvKYffK%pB%V2OUsd#?SAKv6V3r zezsgCEkDKP(CIuzbGj*>bDIm@%idn}p&Y#1xtbQHC_d*H8h(6POuoi_iodIJCbTgu zuSLuEe^z@sT7=ljHs|eXHlmstH+7&xBXQ)S?Dzay2k}k!N71+K#y&Wlnn(8(emp55@Q@Ov|KSzh|# zng@dLG>1@ShZ)Ri;4!PQfWnv5CN&n3+CeE*wEpO6QR^Td1cZdLV72wL7{NqTkR)95TSXVEuXxO%9-~r*Qtq@VdYs1_kQOK$VwlrgcZu>rHeE-B^ zEJT?+3xArQX;4;EO~O7U=yU;zfP_%&KnYjxpL_8r6?ETAF|-}{-MEX)u~(Ztc*x@% zWBK!WCIqkVJ%>v)i0}NJf@xs1@e@u-o5^Y@=QZLqFGk=v4ugSQ+QH_KfB*Bd@C~{# zo=Yo05W9iCCe0-hKEZ}FxMG^QLb=OMTAe@!6Fr+W$ZA&`WROl7MTY+FFto%WlM69L zCsKk4FbtE#cn@<~@0t7~L@DYE4y@*!B|LAC8^#KRPD{&8gU5p@z^P6FzpIMRI<^dl zK5i>d(ofMT2DSs%rL_y1kI4F3!t9em;Ue|QOOJzN=uqpcK2O#zFk>P7vs%e6vWw@& zudg@-Qb{dDUmsN4i;aQOt=Wcz*(u;wEq&e;_y zw6ndchzJwk-Mi-V+#Yz;I%QiZ2aAWcO_Eyv5#=&$w-}RMmLI8%u_^B3QcUD6G36t zwmSZlV9IhRxJ|;=cAx!|vdQ$Da_sj=wb((*Pe_XZqPSY7ddzx!~7l_78!qh zF61HmN!%zw&J@vShW7RmY#TITZbbk9)#eYs%s~;1x3QpF zgYAYTZ2;7|zpNmc`@cql1@bZg0MP8eO^3fm`Qt-F0NB&-G0y%zMtuB^SPgF{f8l?z4k$};<$l}f{|i6u!{7M7ybTHADT^&;=dz6GXFnB{1^4#)cfz$|IqG#XyE^cbbl%9cdS`|)9k-8@Gr%_MezIS0?GPI zu>Ud%{G-=@^qTtjm+n7${VM~1K3o61U;lZ({_}qQXFc%Gdf=b+>p$z)-@C7W*0295 z1OM!|{@HK+RU!D-=IZ~#eyiiHWc0tke*HW3f3H69ck2IMeIV-+_-6({{tWehzI=sw z-RA!j3Z4%5RSWyG#`W)Sf!`&r-|7Ez$Nm3O9f0u;{%fjGs{VlfS=#z{=>J)90PgiK lCKv#?{+s$gU%bNb{fi2+@f-R-SPL}$Ss#l23krqz{{Zg7LKy%6 literal 0 HcmV?d00001 diff --git a/components/drivers/usb/cherryusb/demo/CherryUSB.jpg b/components/drivers/usb/cherryusb/demo/CherryUSB.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e0943f55583253927816ddf44377a95549f52d62 GIT binary patch literal 24775 zcmeIa2Ut|gmMGk0$uvmLP0m>XMN*S zl&nZn6bXOR&AA89xnb^q@0&OCX853}+O>AAP^+p|)mpVrrcdSpWa`Rl$^Z-uOaLQ* z4gffL15gB9Bq1dyCB8^bMovw6k%mc>m5G6YNrqpLT~tj@Q$s~gSxMK-%T5>KZlt8_ z0CRM|6A&B{tZfsU_TXNs*ZttTr;T7xQd2Y0Fiz;+2HO!{d4jH0K9-Pj~Rr8 z0RmtGF|dFbC!GL#00sa92Lo{K2MYre8wVE;S*c70z`(@B!Mkt)7xNSd3ki&gg^dFw zr%a?`)iW?ms-d_jBCdbSD-TypLOwaaeE}p2w)G6Q4`E|hunQg8QmoxZwnK}7{yB#P zq_PfL&a{SV)tdv2=hBv(j$dtA7fiu|i9nwR5rX)nIQ8e}@kH(2^z zIERNyh-K}LaCEsR>(`%kZvMt>)OzbudashyLa7Cfb0L)e{*{vBiT`8jY)@Bj_ zhnJ5Q+1%xt;<@^&owJ(Z0M7i>sDXS+c_eXxX15sIs2vC(^11CbmGgbSoXDJfBvV9u zCPu650f}Jg8e&i27Dq`pCWw0#1i}Qd{KMo_$Ph~NACWux-M4qB3qHr}n_u06Wx1#P(_2zz-3#ql)yv6s| zLK2}>J^#~h_iy9B)Dil>=>Pi(e=vXfgJvfT)I^43FHF$6AO;RBmpTDFdz5}&k9vwq z*m^r7SenGi)cOgg-i>9nw@~{YU#8MIsEhx(b`7PrXG)pdRw98^%Fj|rrL+z@)tSFp zeGLn#GKIegE#zC)sm9hXBQ^H>slq1zqOgRsUZ)Csil1WsR9|(@>uafy%K%be1GJ&I zt2+OS8a+vz?~nf?0-s2{$LvO<6E&z-J-UwYo;WJU5sdQ^1maLn^b5x?odNIC% zC09$H=Np&FZ@p>vQYoxVJduF-Nr1I8UE5dwjBdV*itc{1e2(A;v!u;XxHNe|o~vk4;~)(&w8QnzVaX20 zi0)|3d_*)j*rD+W#8^e%l5-)G>DwT<3f6)|rK&Gm-Qa=w0oG9zQ}TByCZ&59aJA`ge3mPAh&dJ7drMy2@x zjSBL3rK!^OC|yr^#X*7F0;HtOQZD^@E z+08~3kHiw+^{;Dch}^2jBi+bvh^M)<9SO;Za<{+y+4BDSB%_Lgp*OpoxedMGw(y9# zeDtsy+a<5zvVlBv$I=_Nf*#e3rYuBVHYm|S56q?cX*?D*ajVI(REJFI0>gt)T};ra zuX)z#@IQ*<@9F|pphvruN=n*e7N7yHwns4)ji+dF+!`D5rE+xEz5oR zcKx$5HRQU7hlOqHVbKE@v#WFu##vN0(;65X# zBz%L3-2WK>7OiuL5s(!hh-z))Aq)uH16n7<~>7^&4cO&hk@Qanr(-VM-OpMSW6SpX6RA1Omn!yyN6`%#C7)GGQ{GjBhPU5}UN2aLr3Umeh zpHzk@38+x$W`ybNw60lWO(}jM;g%7!A#o=Ql4YH*$XM5Fz3c&ronT(bCP=nKZlE>^ zbeyVp!X5onn2B2{ZGDXH;NhrQ72$Q<#4)jiJZ^7S728S6=>EEWr8_!Sjd`l`3lpzI zsRJ0SCoK&mb8l94_u`~mp3MjlAQ@18GL>J8w^!(`8sbl%y*i0))*eM8_3Qvns1Ca< z8i7ytLAWNXuwQi97!rb2eq0yFwB$fdm+mW58Pyx7+3DelSupm~_5V>s;mg!BFYoxu(QD;b_{faL4byl=Sk^ni&Y2%F_rg5D2&!7C9} z&WI#1qPGD*m`wT!V$cAUE5lz-?~my9AsVX%A<3x5w) zt!?~6*tcrQ$cDjv;MhlP4BLF-K2AnDlV_y-vmaWDUq;g?y43@`_xNa5Jz4wYqRplz zS0py2Ix4aTWuKn_sEWvLSglUH{0I_PSh9Ab4w|h9=zcC5^@`QuO2ee>n)!V>@twkMn24syM|^=c-Iim6k#~TyHN%$38EOIG%Zi@G4kiFn#)D+7Lme} z`eYh7ziol}<%r=M|MM;1d?~uXH)57wE6vaT8wLX}>H*29AWSBpt|eI^_7lK8@Uls1 zC=_SdQh+$&Iljk(VWxR4$BJ@=XPPv^3mx~|qvPXQK8+)aKhK$wfkF|DUn4#+g)!ZB~Qf;r>m)LyjnGM zuhnNt`-0u0>TlgjRl>s~UH`hEVFW}H7qzueGTt!Q@LItMU8Hc< z;%mxM>9RHD!JcQ9AA=S)%@|O$-{47yCDmJ)3|l&W281*-py*+F<4`Cg^bQ{_FKrZc z6ez|CVjI;JM~~*yc}O+(L&ld-%%ZV{x}(53QS}W{DA{TLgXS(=nn5*$LPuzTmMU6~ z#Q$DI(q_C77rk$NGg54UN>r4r2ac`RGsTY98H_Ama{TrJ6ER`<JuFnE!P~~)!tq#&{sjP$F8(M z;6*T)Lam*GLN~W5foZ**kx!)F`!bEvA%bNkHDMmVlwgDTcpq^=#1fOwPPAN0B6?!W zDPPVp)f7H~`0!qj*^pMabl%#DZNMVeSzy&mLk-)e3|ISNPsFNDfSDbxq%^$CCP5iT zh2Xw8x5q+^pxb3L_q@a9W3em<_9tbj2zpv#gir3|gNe0kJ0V6rHKQ-tG~T&UQ;X)) zcmqdeABNPLOMa_|kT7#27uM2QOnCjo$WML;)IlUprs7X^(w*v5chb+?vc1VOjA@0} zI^*9G23ei}&T^{QUF z@jOwqr?c${LKNYsDG`Dy4jXVe~hL6YhfOH*Rbfjqkj`IZhBa2wkkVEzJ->ss%4@knp;p0Utc zNoDG0Hecy4CB<~4jRYhE0&!oN#k)D{GMHa{R2Z^6Vc<1haWTM>#Ihe|VHHSIp4ZqX z&)j%ZxCY!Q|9Zmskh5|5XhUDrUyMy5x{r0Z9RPV0qQNS5AW$^&q%_0mLj1+*BwqWsnMivic~7@|zRUYU2pccL zh!<2XPYDbmit@YE9WrIc`o(K{q%a}`Z{JdVxu?UeDVB1x|BW`(-zy{IYE-+zkCJRn zMX2p1`U-K;*6vGpKjwHC)2_zFlC#ZrUkJhzj_=T2Wp045L<@&85K&9kN3VMflElAN zE{bOyiGdPBP2LDV{pqCd7oD+zwi_tzp5awSzGKj1dPonK?YK(G*^+`hoS?M#QTcv7 zq;N_$A_xap=`t?6KS*3sOVAH9mzokq&Yj(4-H%H-OcGA?{;rf2%4kOZ4j=!$ zWb;?MS5TR`fIM-jIH#|JzhT5|?YY5m4kTPfKglpm1>Y%QnKVGo6um=08y3U<5LO8( zDvZ>S)!+(=iB0npzy#CEgx#okYXjZ4OLlK>QpSK9^19}{Q+t4d(i#r1mb>tR=Y37- z5S73*PrZJNzg~eS;yG&04sKc#NCK_xz~fE;f{Tt2#$(G)hOTZkw?y&}g^j8)CB5(~ zhfkv(8s7PFhs=wbk)sx@5tlRr63pQ({j#&k3DJAMG$;RW$6@&x2baB#68EALl}y7V zaveA$aJFYa@o}n~? z7wQmg8KIB3_zE(X@)`O64b}sWhke$RB&ONBlO*SNfRt>$3&})sA{&F-})X z4D`kw!GSgl3csm1o*r)PE6h^|o@K}}fRw0J6*~f3chy~Zj!2FW$NCXd^uy1|k32od ztTZgll&rRqcE_XZERXm(x>JIQZuzw>H82n>S*?}%){%PUcL@Ku(~8&7{({=rT*K?b z7x~IaJ|;eaj-CyShs#oxJ_&Mb(v+Hr+ieKp$1X^-9>X&5<+N85+3ag!d$QLz4u$wDTV|o` z&WMRaK0iOF+O9^4A?U2-1?dhbyg+Zr6kcH5jQfnACP5WwVs3&k{$j-QAwrbllIUe# zdG-m*#E}sb+PxEiIyTyVyi00H+A3L2xh3O$ZEF#>S9<<1p#1zge=&Q&c8Q?(EB7^e zU*4DNh)oiLq&9WZh<605v`Y)|hj=(FL%mimX9ryGuLUJ}&26fM)LAc87;qIfcF}b{FA)U>HKmmW~Vly%f9#~gzhcNCHSQEsWF}VS4K%eM#0i`hAGWzX8a)z6O~`J9y2W$}JbIu>9)fFW>G8j`hs?HT6}!}yKG zJMolsHDtY3KFrn>cT1$>tD>G6s#eIQJyx0Oe9tpju(5daAvwn%%Do|zqI%nJiIhBi zZAdtampNPCcV8?8dX*l0&s>rkzjs$_r*>{ycPWRaSDgGCV5)g0*hLD?R%B#{O>1)!s!gJI6G(N)%0e}DJ1c7cHVSh2@;E6@<3y;oI2aN$_t_RHbC*r z%Wjmbf#N%5MepnO<=!arzh6!@!mhx1hn?nmp2UwloryO9@2n^f8aFLL1*}cwn?FJt)FLo=cYqU}QQJQEL{3~th ze=3jpb1?BOgCaY4+7u-E?=C z!L9ON3p5PKf%F}?Y!o4#l*22{{r9}J7PFSGwQz3hff_khM81w(j`n(Vu$tKgj--;$igoOUFgUmwVDgx0c%3vBwn1L&iNQX}%5$pYf6>;~BKy$iGRMNnk}ZZd{k_26#Q-*qEF}4bekn9iIT!?7R4*NCeX5Nt4;O z@t8X{OD6-rr|Jv-g1#ck?-y!K(#|(c&T&@#^tpg>p=a+b< zw@o$rBf0{Vo&_yZ;i334a+Lj?UU@LZ`wMsffO#-{Zj-s!B>6lAkLk3r*mNQ~BNhmr z5>b`kJPZoxvc#=S$%w=>9VAY5P+zvI##KuY2gy~oU^7xL%aaq zcV0@j!d6t5Xro|C6Zthz^1F!co+$E8bhUB&qX+iFG$R)TnfDp_7|{+T9{bT>rVYf6 z(h~sDmLb}?WcoK3+G?d+{mkD<2u|mXN!hBXcUKLef%GF~$+Rmev~$`{51lmozr9*B z;z*69+U0Z#u=g%TJJfT1-L@jJzwDncN=o4DhQ&Feu zjhEF;#v5-qhIiF0V(yy5JO?4H{mKz5Qi)a!U;3eI$42jeX;!6e$kS`iViC%o(PQ`r z6eBm$4LbA>x!p*qDNt(dNza~s%abf7Q`4gVD)!7&Jw(w}l9=nn;gt8vs{%JWXf&D4 z?>DoxK)<#stHADsEyf@t$E{`*p}7BuyFZ{VB=vA{_9T`d=j(ShhHWcBz`k&J-5z8l zWDZRnnlO7EDm!r-Y?CTqMvOtuBD#0KR4T{#p(r;%37{yJPGA`&TTK-Gsp8I0(6T*~ zV&?gQZbpY26RXnS)Ojhi9+TJn3)+RNbGkphb)4b9c4KX^CH}PJ>atEJ!9z}w2e!w; zz@309Mkliy{Bh1QKYTT0QpDIuM=HoKs zPso^M^{Y&cPPzLaOv*Qo#EWlGn#@!D1kmX8bi<;hS7W3sz32NFQ7myqKsjKt<`#;z z(iJ^#Qxut+s0K>^5eeeB{0b{gZ4;e`%g+b0TTcM9iFL^W4Ni94^@|@2;%@n?zy0`6 ziSCc0HGc7R_-9A-dvq%nL*U{^-=3z0xw8D6VAT9PD8s&~@S`0_cSPQ<9L*O~Y! z)Sel~O!>^-9!6-pnJ?ELc5kFzRdgo>27{x#pZ~F>;7I4-o?)~sN^{gu>xLm*=u~CY z8(3h`|B+D3vu#(LeRBC&$nOb`dL3^*k{Mo9`lsm83(L~2Rtxh8^gLf4-4wr(8{PmRAl6(ry{+#`jP6 z>B)On6UC@ywUGPv(=wdkJ~99Wo>-i#k-(5 z90MiC`N)*hJv#JkkIs$`)tbyp1OibGBGf>nrn*WMGG+AX^T604-;4kgN2NBl%8Z0` zAAb1{)0Y$lEz0boqp#hdRvJOIim^Vc`m-yTHAKo0Y%&AhlBvujbziD3g<4wA5<5tl z!UhDxG5KbR!3|;22 zngrkOdFde(_D<&^u?v9o1+)?#)vzhCCSOeK70g0T$Hz_*u2lcgG4ED2(=wAby?dw2 z8YdgH{QJ!bE0&jHESd_zB#cjP-Bvv`jm^35X=&PXJnVY0A}wxJna`$ExLcz`OYx`a z#TeWAm$iK&{F#Aam)~a!a~3566YU0G#tYF_&*O?;;>a@;#`RE^YD2C?#QFk-lDZFY z?_W^H2wD6dQ7(_%PHmKnw#BA;->Ioyn0(F8kCE3k$lBPVir8D0FI7suHtn7PqHv1= zRrA7I>h>r?{^CPJ^~=A(k@njRZPbUDt#zA%_&8Nqy$0q>N+e{j08KColf)5^h(uOb zUWOawUud6%mL}>^B3gPX3Bi&RauKf+K98%>?g9%$iR~TjTiEg%u@!;MeTu~P2S(tC z@7i_1IQz)vm-$Zw?D6<}=XM-3q_~u*kiIOI!%NQ}Y!D;~)bNiOXqcGUz9AJD)Y183 ztw3~5ouj&sq|vpk;kv{gpV2yli>*eVG079$mz7*RkM86COc7pC5T^akN`p%nvq&z0 zH|~10QHgjh;iAWxD^@XPNH1&3no`sjhH_Gywy7g41jy6_|fAqXFwpD#OqR&eSl+ci0U#^t-M zSH^bm{qct`x?e~JAR9lBZh$mAXW z(ts#b8Y6~o2@QbzPoSDZ5%@$X=Fg~Zp->?K{*0<`aU6*X3GgRW$d*pILIV7WtA7O* zlI=gCLQ3^NUx2_~JrDLp^Rx3zM+Gm@j_9I-A;6c0;j2AV$CQ zG9!IWN4uc(W&6mGjJZfxbE=|dlJQ0X4YE1!8{MSXO{;I?m4;%ca$`4-+r8vD+$a?tr{GKmWwe#pe3TqGbA zj*PU;y>|j=d6INL7^crb#lwNT+eS7Yf&rVKMcxuC>yee~WQo{<(!!2jKEV=5(zV7P z$t36E9A1>SX)xCa3_J{ZSSzfEw2gPp4P9VcvbrHs|zLtE0s`OGu ztJs|e1{q7!PY+vli!+5NLGmKDUhH(^GDSktaZ2GBo*21F{s0ZGYxbEX-{irli;s}f zAbi|{;nJY!Txv1^dv*{dYUgKEkSQ|sh$Wvdhj{BXkY+h~mXa;6Er_~i053NY;w+$~ zKMG(cBUQeUQY+6AYO+S@&5{pd;hR79dV2>GVcdRr0_d~28eJU&wC;H-*U82C8H+51 z-?ZAnl$-%%m$0Jft-uQaFsP`>NTmv$R#v&hbxZUIWSH=}kghT}a&SA+U8AsgqnBk4 z{A}-5FBzibx4X5b*O^$oD3EN(1zsIqycYf1i$ZttQEc>2aLAYLAMmlqdfUZT4Da;X zVLr0UZ5xJ|XTt;C5SLr0j}#jS(an0$nSeI03l6 zYG9fUHe5!8IHb6dFNhAnAy?=HlIj|i zXv*jj9E3<+cBTn;HmSN<9(72xmZdwbek>+V5B2KhgAlO4#9Jd5 zbvYT{RON6(c?~uNQ#wjL9R65*2WJTQVy!qwVjhG{|Ml?sY5+kCa(C}AG8i$ls?6i; zeot@}7cp@>Fafwqbfxz`^!()QE0iOL6@6xqgXbmogtB-+|rfs z1#J+*sS+`BV3bI9U9ZswRwv{a+0)p^fa5gQ_VxbD=Nwtf5{K*jts)F6P>{q!hUGe_ z@XsXt5^ci#wu;n>iQ3`8kQpSz`>6qkoB$qAXJJwS#~390s#_f~-| z;~?Uv?9)FKG%?I`AH{mneaI;(Zh4+d&|FQAdkg4Rj*a^&f|jP~SXf6#OGW!ecrlp% zzI-L^{Okj|ooV*0%|;xEv9*#@)r=|K#S3JMox-%e5gnYgoW+t;Ch+IePDhg!WNx{& z47~n;2rLse;b1G3>~rK`$-~zv>1b7`z>$fGKs4$1;`Q2Z16z{#1`-($OIaDB#_bi@y*Ji zylx5(+{BT@xh*tak4+I-8-f@_cQ19YR*9A*N=$t38OqU7ZFhY*7?Aa(x{!P9v zWCo_oFf;T*Q<+99-g>zqYusxB;`5N*8CcNqfMI%P6ZY+xrn3HZSWDGQ)uWC55YK@m^Pg%o9-|i9sB>gfyth>LH6`R^j;MDU}|~i$d3B1 zr&Z#)u=GF7`I;pLrnhQpanb&3+P5@7m8sE>}=5aqNv8zz(>hgK=?Qyhupv!c* z9?s-nD!|mIkBUy~8pte9VN;QHyyNo!rNQ|e6`CH^K-rIhqec~Ot2*Y?EmT`OP^NW* zN-ukbvd;Sy!$##Pf$q~4k7YLUkQde9)+(eI`&u^jj-J?M75u!>WftRBxy1bDHczi? z<0nXI$hjJr;D6(aZQ$4VSD%b^&~sX|?I^VYI@@#tuo^r8boZP^uMaRKwfvrK4IHay ze$xX6TV$b(FdT6#r;FDC_yC9r-n)yu%QBxTJ7S>2u12_W5z`g+@36Fzv`ovf3Qhp; zYxB~eb&8&XEM$CD5BR6S0>uI^U#5LgDwGGms2>;^(TedHi<` zb4acLZm?6Geng$6PsU#PV=A^T?Eu)?pnjj`wD3DGb7zuT=+LI@p|WC_`Heo9z->GK z3&$yfF~CmpeR63rxWwiu8Z{3ydt7?x;c_2V-2II86To`vMNYiS61GDTN|hP0eyJ?5 ztqu83I(TJ+mEPAW_laanpPxv2G+D%wDW7grnXMgg7l>5P(arXhlIv_zVyi@$kY4gO zs$fqxWzTu5_DI=!Ih`!V+@{|6yRzF`iPFwX0N%=x2n&DSRbDnaR`+CJR|}tE{pQGO zdC6QwMJ;xnM&u%EC8&Lr7XiOT7OPDnVYnzKv3Gx+@W!Dm?3n4n5kY12KHc1o7i2UI z=jEy#b<;$81v^&Gcl}ubGP+5L$;>ROP^()t(~I3kVn1P{lt?)?f>m%=aX_jm+j1eZ z3jq0m@O+Hb)eCA4+;P>DP0h`4TzI>#DBHr6ZCAr8H>lHvqlN*0&{c-VvBXOeR*_e< z6$8VB!w^STCwW`JcNW=`RtTbGc)K`|UnoHz@tuvjn!k)bivUDPo44TFVuJ=$$A8sw ztjjfRw4<}H2^OP?vJ44ae9pmNm+dv)Z0w5>V&dX%RQTy{oy_d0BLH3HVOXnn1B0K3JN9}`F7OD`&WqbMCSWE$Vk3q$VyY9bsMinSkk2CE2m?6L6$4B zO=Ya&nl-Jt#GGtq43oi@K9ezBo3M}+m)F8EbEB(LhMZtgUpaXmFhm9pKl}oPJA5%VkTi&A;b}TQ_kJDoGi5g zNGX5j;WP9O|Lw-O$?w@;E{~%=RbWuoj{ItYt;O)ysux0nzWts0CjgW5z5>k{FE7Q( z=YTYE8R!-vGn2NN#xIZXw?DcFhzbl0keVH0qTc4}PAsf{{p9lL3;3vabC{Hq#z1p( zr)_hf0Pp(I{f}v8W;nZ1$eX9q*?(%D3Y-<=$gm=@G#PF>(TyL~&`lc!E&F0g*y3BE zzjodEo3>P?*W4QrqL1!Fc;$VJ0M9`XcOPxK^TNwbxCa@14kT?4gWpIq)7H4``Q zi=%4(j@`5X%?Z-l7DtAd?4ZC=Z&KXV;y^}tpei*`aPKMp-)}_zFAI3}jZ^ti-F@dG zdHVGP>oM*}s~d;;_JV~~s7=Z+o%)UE79NE6&g?+1QG*}dDr!5akfqC&lGv@qU%LS{ zK%Y|DJ1Os)=E-+5rx-9h!T(c=l%F4G`^1RgH@e=i%|cKnMN3V_f2m`ZkHi&dz5#Kx5|DQx0dE59}jL1e*!(26v&g&%cvM@xKLMkwI42g?o9 zIL117;-REcSTcdn7rQ`1W+c@N_%6;8D{B>eTjqY+P;Cq$o;J@Hd`?c_+Y)(&hR|~4 zgqv>92V~$AM0J6cf&Ygf6WBwn|7k^jeFL9^4?*TXDoakUi1(2sw480s`wo=knRL-% zto)LOnso~zn<9K(@=}uyzj?Ashlo5(UpcXg?xa3RAIa4H9xU~kwt*BzO^S9rca^6+ zxzoQoPS;slAUiPqZE*>?1y6o*VevL)@y0W|C zBF;`1`{%p&dQ9CB4zk`f8F$I{KGUi#O;^-mD3_v#PFfTK_x#p^JwagtL1t3 ztqhLuiT}~YsLv6V;FjYtq|0c8DKFJ zAc)&fMy!%MX(UPbqrp;kB;x%_Cz*`2Z*5XVmt{$X2I-=Y~voVK6?2DTp%i zGn^WnEpUnOS`pKJKPE`lN5#Q|1Jkjdsge`Gwk7%1n)Gx5=BQx{tRI@4Gb8%MmT9I9 z4l`p$jtUnffci82ZJT$U6P8V8u8S6nPD`~7)Qt)sP4fSo{qaO9j)clQ>y84EW6Pe- z8-YzJ7o&|4S+^%mAL-v~v?ZSass&kZAEyOyod9es6bKqBJFbFl?LE$x)v%d4h_ z0r0yvOf)MBtc6XNuif-B^~hJe7v)m=nPY2iI#Ixkc#vVl`g!hRD8yl<-|M=*;Lsb+*0C>g2j<=&JeJprWN1~yO@HD)v6SMA<^asLGH zlGp{?J37&6l+=^#k##TbltI5y+hCOzcwF}8k}b=c4B>{?HJZiRd*WY3-+pMf_otp* zzAMt@aNx4;__RBOM9nB)o`o(_J%6Ymzr%qR=4nAUU4)QW9m+Y7U|z!|PKNlG}|2u%XdXmCX_!pLsuEc#N?j{uQy&fwUNcPVI9PW0)jGPrY=B zS?Plbv;Evo%R71ZjIKYE6jbtg7yi{W`}=$->6qYCtd4_9A8)I4pJ^uM39nMYkMEr( zB2CAP9QZxpjfv2L%j$#iqJ6?NQ_?lWK~1t-u@ViAw<^SlqNwIvi$QK8x#uiqLyvoWtb)`PdiT2jIV9*pHFCWuz&H+%y%Ow=FSDV9r`5?TbckpzF^FY#J$-S%h1 z`edrTGJ!{__0#TVCm+srgZtB&+XU@$#<-G=!!82I5#svh^(!dHl2)EMNb>2iM{l@& zVZg8}F9_bP&c9Y_$KU!i4;-=F5it)9FbljAzr^`0go*$eT(dW$U517HfRkv10bCBb zan&pg;k{l4K_0HCh)gW*lj1m_-EYs%2h(C_57_^mNfV#(LF;edpFkL+zXw%gbatRu zVjlXQ!H^ei-;`sGxRB(DAaB#}Dy?}(>OMk#oXs!)x6dVAx=7vV7_e~rTEb7N>rcO0 z`1~@>==$xPc@G7q^6$^w^z2iAVion%v8|is-GSw&oTFe*!Y6xAXJmh3F8&s?i}#0> zpOAj|*%PsaI6kg19Rq=PSIKUvo;eR&z9<|ZhVFV;L~pbauGh(Ix8pJwTi(Wt{A#hj z+9tYDeN`5|qI(t!jOV$UQxgeW8ajY{E`2%6{}mHkn(Uf!WBwiUcHGBjhX~Yp z!`He}kl%sG7E;W;7sE4mkh@s++)e9yxD8_c<{OIptR~!Nj-t>p$Fs$b_N<4JP&I6i z*0+%nk+tZ+D(hc5Nyn*XC*&-S8DK0x#Pni5@8P2$4wg_l8W24cr$eFQmbBwB1Z0=d zM?34!D$a=XC+X92{XpMjEBmbGlJ-M?JT*P=q508uizfN=m*uii&jnB*CjhNm3pnTQ z$+-sTn>ijEHgFVMFKHY}^o60Xk0}qQcv&#aC}R@aM2~+ftnWK4bJfs%-kWv+O~YRl zsi9fEYBWUv8>K?Vn;>uK{Q`p9>=APAR-J@QnSkgCfY&T(OlYU*IAiH0;kmngzr2ZT z{KDByI@BdLgIUx&==ZJHDlI_aU{$&3>4c(3-Sv|fsziI^F&R3!6dnwJyHd#PAAOF| z`6)p%^u0fHgC%GVQOrIc`!`5PUt{E!eht{v@3x{Zr4gU;A4wHTe;9h1H2F~kNVH{L z+DPEfa$@+GM8R_YZleyWb5c?L6j8lDl4pnT{=A>7jl02UE`0C3Dp9{&x#4qMDZtu_D4b O?J~M)XQgFNX8u1_Aa>0000000000|~|00000000000000000000000000000~},~0000000000000000000000000000|~|00000000000000000000000000000~},~0000000000000000000000000000||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~.|000000000Y00}-167}00}00}00000000001111111110-0}00}/5};/}00}R111111111.}.|000000000~Z//}*~5|/~7}//}/1}002*2000104000541)01,2}22}17}9.}22}R000000000.}.|0000000002000000000000RVgsDq/Tlu^/,00000000000.000000000.}.}0000000000000000000000000000000000-00+0000000000000000000000.}UXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXS~rwakakakakakakakakakakakakakakhpmhhhhhhhhhhhhhhwrwakakakakakakakakakakakakakakhpmhhhhhhhhhhhhhhwqwakakbkksipinkshkiphpgnckakakhmmhhkƓqlpsm“pmkhhhwtzdidididhdhdidhcidhdhdidididignniiihihhhhiiiiizx|pupupupupupupupupupupupupupuqvvuuuuuuuuuuuuuu{~~000003000004000000000000000000-00000ā/00000^/000000}~01.5030/0-1400./.00++.1004-400-02010Ā/0+240^/00+000~0-50309h314001.00dрU100,hwaddr_len = 6; memcpy(netif->hwaddr, mac, 6); + netif->hwaddr[5] = ~netif->hwaddr[5]; /* device mac can't same as host. */ netif = netif_add(netif, &ipaddr, &netmask, &gateway, NULL, cdc_ecm_if_init, netif_input); netif_set_default(netif); @@ -264,14 +265,14 @@ struct usbd_interface intf0; struct usbd_interface intf1; /* ecm only supports in linux, and you should input the following command - * + * * sudo ifconfig enxaabbccddeeff up * sudo dhcpclient enxaabbccddeeff */ void cdc_ecm_init(uint8_t busid, uint32_t reg_base) { cdc_ecm_lwip_init(); - + usbd_desc_register(busid, cdc_ecm_descriptor); usbd_add_interface(busid, usbd_cdc_ecm_init_intf(&intf0, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP)); usbd_add_interface(busid, usbd_cdc_ecm_init_intf(&intf1, CDC_INT_EP, CDC_OUT_EP, CDC_IN_EP)); diff --git a/components/drivers/usb/cherryusb/demo/cdc_rndis_template.c b/components/drivers/usb/cherryusb/demo/cdc_rndis_template.c index 032ea710f2..cb4aef620a 100644 --- a/components/drivers/usb/cherryusb/demo/cdc_rndis_template.c +++ b/components/drivers/usb/cherryusb/demo/cdc_rndis_template.c @@ -143,7 +143,11 @@ static rt_err_t rt_usbd_rndis_control(rt_device_t dev, int cmd, void *args) /* get mac address */ if (args) - rt_memcpy(args, mac, 6); + { + uint8_t *mac_dev = (uint8_t *)args; + rt_memcpy(mac_dev, mac, 6); + mac_dev[5] = ~mac_dev[5]; /* device mac can't same as host. */ + } else return -RT_ERROR; @@ -247,6 +251,7 @@ void rndis_lwip_init(void) netif->hwaddr_len = 6; memcpy(netif->hwaddr, mac, 6); + netif->hwaddr[5] = ~netif->hwaddr[5]; /* device mac can't same as host. */ netif = netif_add(netif, &ipaddr, &netmask, &gateway, NULL, rndisif_init, netif_input); netif_set_default(netif); diff --git a/components/drivers/usb/cherryusb/demo/cherryusb_h264.h b/components/drivers/usb/cherryusb/demo/cherryusb_h264.h new file mode 100644 index 0000000000..bb774d2db9 --- /dev/null +++ b/components/drivers/usb/cherryusb/demo/cherryusb_h264.h @@ -0,0 +1,1734 @@ +//ffmpeg -loop 1 -i CherryUSB.jpg -c:v libx264 -t 10 -pix_fmt yuv420p -vf "scale=640:480" CherryUSB.h264 + +const unsigned char cherryusb_h264[20750] = { + 0x00, 0x00, 0x00, 0x01, 0x67, 0x64, 0x00, 0x1E, 0xAC, 0xD9, 0x40, 0xA0, + 0x3D, 0xBF, 0xF0, 0x01, 0xD0, 0x01, 0xA2, 0x94, 0x00, 0x00, 0x03, 0x00, + 0x04, 0x00, 0x00, 0x03, 0x00, 0xC8, 0x3C, 0x58, 0xB6, 0x58, 0x00, 0x00, + 0x00, 0x01, 0x68, 0xEB, 0xE3, 0xCB, 0x22, 0xC0, 0x00, 0x00, 0x01, 0x06, + 0x05, 0xFF, 0xFF, 0x9D, 0xDC, 0x45, 0xE9, 0xBD, 0xE6, 0xD9, 0x48, 0xB7, + 0x96, 0x2C, 0xD8, 0x20, 0xD9, 0x23, 0xEE, 0xEF, 0x78, 0x32, 0x36, 0x34, + 0x20, 0x2D, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x20, 0x31, 0x36, 0x34, 0x20, + 0x2D, 0x20, 0x48, 0x2E, 0x32, 0x36, 0x34, 0x2F, 0x4D, 0x50, 0x45, 0x47, + 0x2D, 0x34, 0x20, 0x41, 0x56, 0x43, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x63, + 0x20, 0x2D, 0x20, 0x43, 0x6F, 0x70, 0x79, 0x6C, 0x65, 0x66, 0x74, 0x20, + 0x32, 0x30, 0x30, 0x33, 0x2D, 0x32, 0x30, 0x32, 0x34, 0x20, 0x2D, 0x20, + 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x76, + 0x69, 0x64, 0x65, 0x6F, 0x6C, 0x61, 0x6E, 0x2E, 0x6F, 0x72, 0x67, 0x2F, + 0x78, 0x32, 0x36, 0x34, 0x2E, 0x68, 0x74, 0x6D, 0x6C, 0x20, 0x2D, 0x20, + 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x3A, 0x20, 0x63, 0x61, 0x62, + 0x61, 0x63, 0x3D, 0x31, 0x20, 0x72, 0x65, 0x66, 0x3D, 0x33, 0x20, 0x64, + 0x65, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3D, 0x31, 0x3A, 0x30, 0x3A, 0x30, + 0x20, 0x61, 0x6E, 0x61, 0x6C, 0x79, 0x73, 0x65, 0x3D, 0x30, 0x78, 0x33, + 0x3A, 0x30, 0x78, 0x31, 0x31, 0x33, 0x20, 0x6D, 0x65, 0x3D, 0x68, 0x65, + 0x78, 0x20, 0x73, 0x75, 0x62, 0x6D, 0x65, 0x3D, 0x37, 0x20, 0x70, 0x73, + 0x79, 0x3D, 0x31, 0x20, 0x70, 0x73, 0x79, 0x5F, 0x72, 0x64, 0x3D, 0x31, + 0x2E, 0x30, 0x30, 0x3A, 0x30, 0x2E, 0x30, 0x30, 0x20, 0x6D, 0x69, 0x78, + 0x65, 0x64, 0x5F, 0x72, 0x65, 0x66, 0x3D, 0x31, 0x20, 0x6D, 0x65, 0x5F, + 0x72, 0x61, 0x6E, 0x67, 0x65, 0x3D, 0x31, 0x36, 0x20, 0x63, 0x68, 0x72, + 0x6F, 0x6D, 0x61, 0x5F, 0x6D, 0x65, 0x3D, 0x31, 0x20, 0x74, 0x72, 0x65, + 0x6C, 0x6C, 0x69, 0x73, 0x3D, 0x31, 0x20, 0x38, 0x78, 0x38, 0x64, 0x63, + 0x74, 0x3D, 0x31, 0x20, 0x63, 0x71, 0x6D, 0x3D, 0x30, 0x20, 0x64, 0x65, + 0x61, 0x64, 0x7A, 0x6F, 0x6E, 0x65, 0x3D, 0x32, 0x31, 0x2C, 0x31, 0x31, + 0x20, 0x66, 0x61, 0x73, 0x74, 0x5F, 0x70, 0x73, 0x6B, 0x69, 0x70, 0x3D, + 0x31, 0x20, 0x63, 0x68, 0x72, 0x6F, 0x6D, 0x61, 0x5F, 0x71, 0x70, 0x5F, + 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x3D, 0x2D, 0x32, 0x20, 0x74, 0x68, + 0x72, 0x65, 0x61, 0x64, 0x73, 0x3D, 0x31, 0x32, 0x20, 0x6C, 0x6F, 0x6F, + 0x6B, 0x61, 0x68, 0x65, 0x61, 0x64, 0x5F, 0x74, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x73, 0x3D, 0x32, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x64, 0x5F, + 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x3D, 0x30, 0x20, 0x6E, 0x72, + 0x3D, 0x30, 0x20, 0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x74, 0x65, 0x3D, + 0x31, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6C, 0x61, 0x63, 0x65, 0x64, + 0x3D, 0x30, 0x20, 0x62, 0x6C, 0x75, 0x72, 0x61, 0x79, 0x5F, 0x63, 0x6F, + 0x6D, 0x70, 0x61, 0x74, 0x3D, 0x30, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x6E, 0x65, 0x64, 0x5F, 0x69, 0x6E, 0x74, 0x72, 0x61, + 0x3D, 0x30, 0x20, 0x62, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x73, 0x3D, 0x33, + 0x20, 0x62, 0x5F, 0x70, 0x79, 0x72, 0x61, 0x6D, 0x69, 0x64, 0x3D, 0x32, + 0x20, 0x62, 0x5F, 0x61, 0x64, 0x61, 0x70, 0x74, 0x3D, 0x31, 0x20, 0x62, + 0x5F, 0x62, 0x69, 0x61, 0x73, 0x3D, 0x30, 0x20, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x3D, 0x31, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x62, + 0x3D, 0x31, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x5F, 0x67, 0x6F, 0x70, 0x3D, + 0x30, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x70, 0x3D, 0x32, 0x20, + 0x6B, 0x65, 0x79, 0x69, 0x6E, 0x74, 0x3D, 0x32, 0x35, 0x30, 0x20, 0x6B, + 0x65, 0x79, 0x69, 0x6E, 0x74, 0x5F, 0x6D, 0x69, 0x6E, 0x3D, 0x32, 0x35, + 0x20, 0x73, 0x63, 0x65, 0x6E, 0x65, 0x63, 0x75, 0x74, 0x3D, 0x34, 0x30, + 0x20, 0x69, 0x6E, 0x74, 0x72, 0x61, 0x5F, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x3D, 0x30, 0x20, 0x72, 0x63, 0x5F, 0x6C, 0x6F, 0x6F, 0x6B, + 0x61, 0x68, 0x65, 0x61, 0x64, 0x3D, 0x34, 0x30, 0x20, 0x72, 0x63, 0x3D, + 0x63, 0x72, 0x66, 0x20, 0x6D, 0x62, 0x74, 0x72, 0x65, 0x65, 0x3D, 0x31, + 0x20, 0x63, 0x72, 0x66, 0x3D, 0x32, 0x33, 0x2E, 0x30, 0x20, 0x71, 0x63, + 0x6F, 0x6D, 0x70, 0x3D, 0x30, 0x2E, 0x36, 0x30, 0x20, 0x71, 0x70, 0x6D, + 0x69, 0x6E, 0x3D, 0x30, 0x20, 0x71, 0x70, 0x6D, 0x61, 0x78, 0x3D, 0x36, + 0x39, 0x20, 0x71, 0x70, 0x73, 0x74, 0x65, 0x70, 0x3D, 0x34, 0x20, 0x69, + 0x70, 0x5F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x3D, 0x31, 0x2E, 0x34, 0x30, + 0x20, 0x61, 0x71, 0x3D, 0x31, 0x3A, 0x31, 0x2E, 0x30, 0x30, 0x00, 0x80, + 0x00, 0x00, 0x01, 0x65, 0x88, 0x84, 0x00, 0x6F, 0xE9, 0x47, 0x26, 0x6E, + 0x0B, 0xFB, 0xDE, 0x71, 0x6A, 0xCF, 0x9E, 0xDD, 0xF0, 0x2F, 0x88, 0x1F, + 0xC2, 0x88, 0xBF, 0x0D, 0xED, 0xB1, 0x68, 0x49, 0x48, 0xD1, 0x34, 0x8E, + 0xF2, 0x6E, 0x97, 0x53, 0x24, 0x04, 0x5E, 0xE5, 0x57, 0x2D, 0xFE, 0xCB, + 0x97, 0x4D, 0xC6, 0x70, 0x23, 0x03, 0x20, 0xEF, 0x3B, 0xB9, 0xA6, 0x1E, + 0x63, 0x80, 0x67, 0xBB, 0x88, 0x7F, 0xAF, 0xA6, 0x07, 0x81, 0xA4, 0x3C, + 0x2E, 0xB7, 0x77, 0x12, 0x5F, 0x4F, 0xB8, 0x29, 0x1D, 0x98, 0x2E, 0x78, + 0x08, 0x6A, 0x93, 0x7E, 0x40, 0xF0, 0x7B, 0xD3, 0xF5, 0x5A, 0x38, 0x35, + 0xE3, 0x8D, 0xB5, 0x90, 0x48, 0xE4, 0x4A, 0x9E, 0x6E, 0x9A, 0x77, 0xDA, + 0x42, 0x8D, 0xE0, 0xB6, 0x1B, 0xCC, 0x95, 0x37, 0x49, 0x99, 0xED, 0xBF, + 0xBE, 0x28, 0x52, 0xDD, 0xBC, 0x59, 0xBF, 0x6C, 0xF8, 0x3C, 0xCC, 0xD1, + 0xC4, 0x7F, 0x31, 0x51, 0xFC, 0xAA, 0x23, 0x91, 0x9B, 0xDF, 0xB4, 0x7F, + 0x72, 0xC7, 0xF2, 0xCF, 0xEE, 0xBA, 0x67, 0xC7, 0xBA, 0x26, 0xA6, 0x9C, + 0x0E, 0xD1, 0xC7, 0xB8, 0xE8, 0xC6, 0x5F, 0xD2, 0x5B, 0xC8, 0xF9, 0x2E, + 0x6D, 0x2F, 0x5D, 0x8B, 0x11, 0x9E, 0xDB, 0x3F, 0xAC, 0xF6, 0x61, 0x6D, + 0x23, 0xCC, 0xFA, 0x5C, 0x51, 0x83, 0x9C, 0xD7, 0x03, 0xF9, 0x3D, 0xE3, + 0x4B, 0xE2, 0xCE, 0xA6, 0x7F, 0xED, 0x11, 0x2A, 0x73, 0x26, 0x90, 0xEC, + 0x30, 0xC2, 0x6E, 0x4E, 0xC2, 0x20, 0x30, 0xBF, 0xFF, 0x5A, 0x87, 0xC5, + 0x58, 0x55, 0x2E, 0x74, 0xD2, 0x7E, 0x9F, 0x74, 0xAC, 0xB3, 0xFB, 0x01, + 0xB5, 0x41, 0x40, 0x22, 0xD8, 0x66, 0xC1, 0x30, 0x54, 0xB6, 0x10, 0xD3, + 0x71, 0x2F, 0x7A, 0xE4, 0x2F, 0x4B, 0x77, 0x84, 0x80, 0x26, 0x04, 0x0E, + 0xEE, 0xD9, 0x92, 0x44, 0xDA, 0xCD, 0x88, 0xB6, 0x7A, 0x93, 0xE6, 0x3B, + 0x72, 0xF6, 0x61, 0xA0, 0x04, 0x86, 0x76, 0xA6, 0x58, 0x43, 0xC3, 0x0F, + 0x54, 0x1F, 0x44, 0x34, 0x12, 0xF1, 0x25, 0xEC, 0xD1, 0x79, 0x2C, 0xB4, + 0x21, 0x27, 0x47, 0x45, 0x35, 0xB7, 0x32, 0xED, 0xC5, 0xA4, 0xA1, 0x70, + 0x02, 0x84, 0xC4, 0x97, 0x35, 0x09, 0x36, 0x15, 0x6E, 0xAC, 0x21, 0x1E, + 0xA9, 0x87, 0x3F, 0xE7, 0x48, 0x13, 0xBD, 0xB9, 0xB6, 0x6D, 0xA1, 0xF6, + 0x48, 0xF1, 0xE6, 0xD6, 0x9D, 0x51, 0xEC, 0x61, 0xD2, 0xA5, 0xE9, 0xAD, + 0x16, 0x1D, 0x0E, 0xAA, 0x68, 0xB2, 0x93, 0x93, 0x7D, 0x6C, 0x7A, 0x9E, + 0xB1, 0x51, 0x78, 0xAD, 0xCA, 0x4A, 0xB8, 0xF5, 0x98, 0xC6, 0x32, 0x5B, + 0x64, 0x21, 0x8D, 0x72, 0x6E, 0xB3, 0x2E, 0x54, 0xC2, 0xE0, 0x06, 0xA8, + 0xF8, 0xCC, 0x0E, 0x95, 0x80, 0xED, 0xFE, 0x31, 0x74, 0xD8, 0x7D, 0x02, + 0xA2, 0x7B, 0xD7, 0x98, 0xE2, 0x38, 0x27, 0x10, 0x3F, 0x1D, 0x0B, 0xA9, + 0x89, 0x21, 0xA6, 0x8F, 0x3D, 0x48, 0x90, 0x75, 0x4C, 0xEF, 0x9C, 0x2E, + 0x46, 0x3F, 0x04, 0x57, 0xAB, 0x68, 0xBF, 0x38, 0x97, 0xF8, 0x6E, 0xA8, + 0xBB, 0x82, 0x2E, 0xEB, 0xA6, 0x24, 0xF9, 0xA1, 0x73, 0xEF, 0xD8, 0x2A, + 0xB1, 0x6B, 0xFF, 0x42, 0x4A, 0xFF, 0xBE, 0x94, 0xD9, 0xDA, 0xF7, 0xFD, + 0x0E, 0xC6, 0xE2, 0x1A, 0xAC, 0x07, 0x39, 0xE6, 0x5E, 0x73, 0x29, 0xAB, + 0xAD, 0x7B, 0x76, 0xA9, 0x96, 0x21, 0x0A, 0x71, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x01, 0x07, 0xB5, 0x13, 0x49, 0x88, 0xF9, 0x01, 0x87, 0x35, + 0xC4, 0xD7, 0x3D, 0x17, 0x75, 0xA0, 0x03, 0xC7, 0x5E, 0x4F, 0x76, 0x50, + 0xF1, 0x16, 0xA3, 0xE8, 0xD2, 0xE6, 0x7A, 0x7B, 0x1D, 0x96, 0x1E, 0xAA, + 0x31, 0x10, 0x1C, 0x8A, 0x70, 0x98, 0x39, 0x59, 0xDD, 0x90, 0x35, 0x65, + 0xAA, 0xE3, 0xFD, 0xF0, 0xBB, 0xF3, 0x86, 0x74, 0xDC, 0x56, 0xDB, 0x2F, + 0x4F, 0x5A, 0x93, 0x8A, 0xC9, 0x33, 0xC2, 0xB4, 0xD7, 0x67, 0x10, 0xDF, + 0x74, 0xE5, 0x16, 0xB1, 0x61, 0x02, 0xF0, 0xF8, 0x00, 0xFC, 0xBD, 0x36, + 0x84, 0xE1, 0x99, 0xBD, 0x24, 0xE3, 0xEA, 0x27, 0x84, 0x6D, 0xB8, 0x88, + 0xDC, 0xBA, 0x95, 0x1D, 0x6C, 0x00, 0x96, 0xF0, 0x25, 0x3E, 0xF8, 0xCE, + 0xC3, 0xCB, 0x9C, 0x1E, 0x67, 0x2A, 0x20, 0x38, 0x97, 0x8C, 0x37, 0xF9, + 0xC7, 0x8B, 0x90, 0x24, 0x10, 0xBD, 0x0B, 0xEC, 0xAD, 0x01, 0x96, 0x64, + 0x21, 0x74, 0x03, 0xCF, 0x96, 0xEA, 0x0A, 0x40, 0x09, 0xB3, 0xD8, 0x40, + 0xC9, 0xB2, 0xA4, 0x81, 0x44, 0x52, 0x06, 0x1E, 0x13, 0xFF, 0x51, 0xD1, + 0x80, 0x5B, 0xF0, 0x98, 0xAF, 0x0B, 0x09, 0x30, 0x33, 0x46, 0x8E, 0xC6, + 0x69, 0xD6, 0xCA, 0xCF, 0x14, 0xB1, 0x76, 0x67, 0xB7, 0xA4, 0x93, 0x75, + 0x02, 0xC0, 0x0B, 0x33, 0x32, 0x09, 0xB0, 0x4B, 0x71, 0x62, 0xA7, 0xC7, + 0xD7, 0x43, 0xEE, 0x08, 0x80, 0xF3, 0x36, 0x74, 0xC2, 0x7B, 0x6C, 0x97, + 0x6A, 0x9D, 0x0D, 0xE5, 0x73, 0xE8, 0xFB, 0xBF, 0xD7, 0x79, 0x71, 0xAF, + 0xDC, 0x2E, 0x33, 0x5B, 0xE9, 0x0F, 0x26, 0xEE, 0x45, 0xFB, 0x7E, 0x8D, + 0x6E, 0x91, 0x7E, 0x41, 0xB6, 0x10, 0x9A, 0x29, 0x66, 0x2E, 0xD0, 0x20, + 0xB2, 0x9C, 0x33, 0xD4, 0xAD, 0xED, 0x27, 0xEC, 0x1F, 0xF5, 0xC9, 0x47, + 0x4E, 0x71, 0xAB, 0xD6, 0x8E, 0x8F, 0xFE, 0x4A, 0x39, 0x5B, 0x73, 0xFA, + 0x1E, 0x81, 0x89, 0x77, 0x92, 0xB4, 0x99, 0x06, 0x80, 0x65, 0x21, 0x3A, + 0xED, 0x51, 0x5D, 0xFA, 0x23, 0xFA, 0x70, 0x1B, 0x0E, 0xF1, 0x69, 0x38, + 0xE1, 0x36, 0x79, 0xEE, 0xB1, 0x9E, 0xC9, 0xB5, 0xE1, 0x25, 0x0F, 0x76, + 0x22, 0x12, 0x7D, 0x1E, 0xE5, 0x05, 0x38, 0x68, 0x66, 0xD6, 0x73, 0xBF, + 0x7B, 0x8C, 0x9E, 0x97, 0x1D, 0x40, 0x18, 0x09, 0x84, 0x61, 0x6C, 0x2C, + 0xC9, 0xDC, 0xE0, 0x15, 0x05, 0x95, 0xFB, 0xFD, 0xFA, 0xBE, 0xA0, 0xC5, + 0x4B, 0xB3, 0xC0, 0x0F, 0x70, 0x0D, 0x66, 0x99, 0x92, 0xA5, 0xBD, 0x88, + 0x1A, 0xC3, 0xF6, 0xBB, 0xC2, 0x2D, 0x3A, 0x08, 0x9A, 0xA7, 0xF1, 0xB3, + 0xDD, 0x30, 0x82, 0x17, 0xCA, 0x95, 0x33, 0x8E, 0xC3, 0x0A, 0xCE, 0xF7, + 0x2F, 0x70, 0xAC, 0x7E, 0xB2, 0x50, 0xDF, 0x3E, 0x1C, 0xDD, 0x1C, 0x85, + 0x0A, 0xED, 0xB2, 0x1A, 0xC1, 0x05, 0x5B, 0x51, 0xF4, 0x47, 0x12, 0x3E, + 0x2B, 0xCD, 0x34, 0x8E, 0x5E, 0x59, 0xB2, 0x02, 0x4E, 0xD3, 0xF2, 0x36, + 0xAC, 0xB0, 0xBE, 0x23, 0xE0, 0xA3, 0x6D, 0xD2, 0x6E, 0x19, 0x91, 0x00, + 0x00, 0x03, 0x01, 0xCA, 0xB1, 0x9B, 0xFE, 0x59, 0x82, 0x0F, 0x54, 0x64, + 0xC2, 0xD8, 0xB8, 0x15, 0xD1, 0x6E, 0xBC, 0x42, 0xD2, 0x16, 0x26, 0x20, + 0xF8, 0x3C, 0xD0, 0x36, 0xA4, 0xD9, 0x10, 0x31, 0x43, 0xDE, 0x7A, 0xC5, + 0x2C, 0x33, 0x9B, 0xF2, 0xC4, 0xDB, 0xCE, 0xAB, 0xE7, 0x98, 0xFE, 0x44, + 0x17, 0x5C, 0x57, 0xE0, 0x6B, 0xA4, 0x8B, 0x09, 0x0B, 0xBF, 0x63, 0xC6, + 0x20, 0xC5, 0xCC, 0x8C, 0x3E, 0xB6, 0x08, 0xDA, 0xC2, 0x54, 0xF1, 0x1E, + 0x66, 0x3A, 0x64, 0x1F, 0xE5, 0xAC, 0x02, 0xD1, 0x26, 0xD2, 0xA0, 0x34, + 0x29, 0x64, 0x7E, 0x53, 0x27, 0x58, 0xDE, 0x59, 0xA8, 0xD7, 0x13, 0xCA, + 0xE9, 0xF3, 0x89, 0x72, 0x7B, 0x94, 0xEA, 0xB5, 0xB9, 0xFA, 0x41, 0x43, + 0xEC, 0xD7, 0x88, 0x46, 0xDC, 0x2A, 0xFA, 0xED, 0x32, 0x16, 0x3F, 0x51, + 0x66, 0xE9, 0x47, 0xE4, 0xA7, 0xB7, 0x14, 0x69, 0x9C, 0xED, 0x1C, 0x71, + 0x51, 0xFB, 0xF9, 0xE0, 0x40, 0xEC, 0x2F, 0x38, 0x53, 0x9D, 0x01, 0x05, + 0xFC, 0xE3, 0x77, 0xE4, 0x88, 0xD1, 0x89, 0xFC, 0x40, 0x58, 0x06, 0x97, + 0x0E, 0x5A, 0xEB, 0x98, 0xF5, 0x97, 0x8D, 0x8C, 0x9C, 0x40, 0x8E, 0xDA, + 0xFD, 0x98, 0x04, 0xB6, 0xED, 0x2F, 0xE4, 0x7D, 0x64, 0x80, 0x3D, 0x39, + 0xDD, 0xD0, 0x05, 0x42, 0x9C, 0x75, 0xFA, 0x20, 0xF1, 0x25, 0x66, 0x2B, + 0xE1, 0x94, 0x51, 0x82, 0x9F, 0x3E, 0x98, 0xFE, 0x32, 0x05, 0x9E, 0xBE, + 0x1D, 0xBF, 0xD4, 0xEB, 0x83, 0x88, 0x54, 0xA0, 0x79, 0x27, 0xA9, 0x68, + 0x91, 0xF1, 0x3A, 0x9F, 0x51, 0xB6, 0x55, 0x40, 0xD5, 0x13, 0x04, 0x7D, + 0x1E, 0xE6, 0xFB, 0x70, 0xB4, 0x5E, 0x9B, 0x1E, 0xA0, 0x59, 0xFF, 0xE3, + 0x9B, 0xB5, 0xF9, 0x3F, 0xFE, 0x2D, 0x6D, 0xAA, 0x58, 0xB7, 0xE1, 0x11, + 0x1B, 0x31, 0xC6, 0x65, 0xF7, 0x12, 0xDF, 0xED, 0x49, 0x22, 0x7E, 0x64, + 0xB2, 0x5E, 0x9E, 0x4A, 0xDD, 0xF0, 0x59, 0xDF, 0xE1, 0x64, 0x37, 0xE6, + 0x02, 0x95, 0x95, 0xC8, 0x79, 0x17, 0xBC, 0xED, 0x87, 0xF4, 0x60, 0xAF, + 0x35, 0x35, 0x1C, 0x73, 0x36, 0xB9, 0xA5, 0xE4, 0x12, 0x8B, 0xCA, 0x92, + 0xD1, 0x21, 0xCA, 0xEF, 0xC0, 0xFD, 0x31, 0xFF, 0xE3, 0x34, 0xD9, 0xDD, + 0xE8, 0x91, 0xC0, 0x65, 0xCD, 0x1B, 0x38, 0x0F, 0xC3, 0xC1, 0xFA, 0xC5, + 0x0D, 0x5F, 0xB8, 0xB4, 0x3A, 0x59, 0x15, 0xBA, 0x14, 0x00, 0xCA, 0xFE, + 0x5A, 0x18, 0x8C, 0x05, 0x84, 0x35, 0xB3, 0x28, 0x40, 0xB0, 0x79, 0x6D, + 0x1A, 0x49, 0x9E, 0x76, 0x98, 0xC1, 0x6D, 0xDF, 0x69, 0x7D, 0xE3, 0x5F, + 0xE8, 0xD8, 0x26, 0x99, 0x4D, 0x52, 0x3E, 0x94, 0x70, 0x7E, 0xDE, 0x93, + 0xD8, 0xE5, 0x4C, 0x0C, 0xBB, 0x76, 0xEE, 0x44, 0x07, 0x4B, 0xD2, 0x4A, + 0x9A, 0x45, 0xE7, 0x31, 0x6D, 0x32, 0xD5, 0x55, 0xD9, 0xF2, 0xCF, 0xC7, + 0x25, 0xEA, 0x2D, 0xD7, 0xF2, 0x0B, 0x3F, 0x66, 0x57, 0xCD, 0xC6, 0xF6, + 0x59, 0x8E, 0xB3, 0x30, 0x7C, 0x86, 0x9F, 0x90, 0xD7, 0x84, 0x8D, 0xAF, + 0x85, 0x50, 0x89, 0x4B, 0x5C, 0x6B, 0xE8, 0x8E, 0x66, 0x7B, 0x86, 0x26, + 0xCE, 0xB3, 0x0E, 0xD0, 0x45, 0x7B, 0x46, 0x56, 0x63, 0xB9, 0x7B, 0xF3, + 0x33, 0x4C, 0x38, 0x25, 0xFD, 0x21, 0xAB, 0x54, 0xF9, 0xC8, 0xBD, 0x98, + 0x60, 0xFB, 0xBE, 0x00, 0x37, 0x3C, 0x8A, 0x52, 0xF6, 0xD7, 0xF3, 0xCE, + 0x05, 0xC2, 0x14, 0xB8, 0x6D, 0xFF, 0x88, 0x04, 0x73, 0x11, 0x4B, 0xE1, + 0x5B, 0xFE, 0x2D, 0x13, 0x44, 0x22, 0x05, 0xA4, 0x5D, 0x49, 0x9F, 0x21, + 0x65, 0x8D, 0xEE, 0x1E, 0xF8, 0x48, 0xBF, 0xBB, 0xEF, 0x09, 0x01, 0xCB, + 0x3B, 0x94, 0xF5, 0xC6, 0x1D, 0x5D, 0x3B, 0x13, 0x26, 0x3B, 0x58, 0xF4, + 0x3D, 0xD5, 0x2D, 0x66, 0xD0, 0xD9, 0xDB, 0x8C, 0x91, 0x66, 0x98, 0x27, + 0x52, 0xA1, 0xAE, 0xBD, 0x04, 0x7B, 0x66, 0xFD, 0xBC, 0xE2, 0x16, 0x12, + 0xE3, 0x10, 0x2E, 0x32, 0x16, 0xF3, 0x47, 0x02, 0xF6, 0x76, 0x89, 0xFF, + 0xB1, 0xB7, 0xCC, 0x44, 0xAB, 0x93, 0xD5, 0xD4, 0x72, 0x4F, 0x0D, 0x5B, + 0xBD, 0x6A, 0xD9, 0xDA, 0x88, 0xAA, 0x20, 0x43, 0xC3, 0xF3, 0x9E, 0xAE, + 0xE6, 0xA1, 0xFD, 0xC4, 0xC8, 0xD8, 0x54, 0x59, 0x07, 0x5C, 0x74, 0xFD, + 0x18, 0x75, 0xED, 0x0F, 0x43, 0x53, 0xB1, 0x88, 0xDA, 0x1B, 0xE6, 0x53, + 0xCB, 0xC7, 0xDB, 0x47, 0x74, 0x6B, 0x9E, 0x62, 0xD4, 0x27, 0x1C, 0xB8, + 0x27, 0xCA, 0xE2, 0x64, 0x24, 0x91, 0x6F, 0x6E, 0xA7, 0x0A, 0x47, 0xB1, + 0x9E, 0x0B, 0x11, 0x17, 0xB4, 0x54, 0x8A, 0x18, 0xCD, 0x41, 0x4E, 0xC5, + 0x4C, 0xA6, 0xAE, 0xF5, 0x42, 0xD1, 0x98, 0x22, 0xF3, 0xB5, 0xAC, 0x86, + 0x4C, 0xCC, 0x0B, 0x09, 0x24, 0x9E, 0xD6, 0x1E, 0x2F, 0x48, 0xFA, 0xA6, + 0xBA, 0x40, 0x78, 0xA1, 0xE8, 0x5B, 0x93, 0xE3, 0xE8, 0xAF, 0x0B, 0x30, + 0xB1, 0x50, 0x17, 0x7A, 0xF9, 0x6D, 0x29, 0xB8, 0x05, 0x43, 0xBF, 0xEE, + 0x8A, 0x59, 0x9F, 0xCC, 0x22, 0x7A, 0x02, 0xD1, 0xA1, 0x58, 0x77, 0x7F, + 0x1B, 0xF4, 0xE0, 0x13, 0xE1, 0xE7, 0xE2, 0x39, 0xAE, 0xEB, 0xC5, 0xC7, + 0x90, 0x9F, 0xA5, 0x73, 0xD3, 0x42, 0x25, 0x75, 0x0B, 0x42, 0x6F, 0x11, + 0x5B, 0x05, 0xC1, 0xEB, 0x39, 0xC3, 0x8E, 0x50, 0x98, 0x2A, 0x85, 0x53, + 0x0A, 0x06, 0xE7, 0x8A, 0xB0, 0xB1, 0x93, 0xD1, 0x46, 0xB9, 0x6A, 0x14, + 0xBC, 0x7A, 0xC9, 0xF3, 0x71, 0x32, 0x73, 0x1F, 0x28, 0x3D, 0xEA, 0x35, + 0xF1, 0xE6, 0xE9, 0x1B, 0x6E, 0xDF, 0xC5, 0x5E, 0xB0, 0x23, 0x26, 0x3C, + 0x3D, 0x6C, 0x02, 0xED, 0xB9, 0x79, 0x03, 0xF5, 0xD8, 0x01, 0xFD, 0x26, + 0x41, 0x73, 0xBC, 0x58, 0xF6, 0xB4, 0x2A, 0xB8, 0xAE, 0x07, 0xDE, 0xDD, + 0x9C, 0x52, 0xF2, 0x2E, 0x23, 0x39, 0x50, 0xEE, 0x87, 0xDB, 0x97, 0x93, + 0xF5, 0xEE, 0xD1, 0xA8, 0x43, 0x17, 0x67, 0xCD, 0xEF, 0xC1, 0x68, 0x6A, + 0x2C, 0x7A, 0x49, 0xFB, 0xEE, 0x52, 0x17, 0xC4, 0x01, 0x19, 0xC3, 0xA4, + 0x51, 0x00, 0x8E, 0xF9, 0x50, 0x35, 0x3E, 0xB0, 0x10, 0x88, 0xCB, 0x62, + 0x85, 0xA0, 0x95, 0x27, 0xAC, 0x31, 0x05, 0x8B, 0x47, 0x41, 0xD5, 0x57, + 0x41, 0xDB, 0xA8, 0x5B, 0x0A, 0x77, 0x73, 0xAF, 0xFE, 0x29, 0xF6, 0x1E, + 0xF8, 0xB1, 0xC5, 0x34, 0xEF, 0xD0, 0xFA, 0xB7, 0xB3, 0xCD, 0xB2, 0x32, + 0x5F, 0xA1, 0x58, 0x8B, 0x7A, 0x6E, 0x16, 0xBE, 0x0C, 0xA9, 0xDB, 0x8E, + 0x42, 0x25, 0xE2, 0xAF, 0x69, 0xD4, 0x52, 0xC6, 0xD2, 0x7A, 0xAC, 0x80, + 0x90, 0xBE, 0xC4, 0x79, 0x1D, 0x0F, 0xAA, 0xAA, 0x29, 0x60, 0xC9, 0x3E, + 0xE2, 0x38, 0x9F, 0x17, 0xD9, 0xDE, 0x9D, 0x30, 0x78, 0x8C, 0xD8, 0xDB, + 0x0B, 0x85, 0xEA, 0x3A, 0x8C, 0xF9, 0x44, 0x56, 0x59, 0xA3, 0xB0, 0xD6, + 0x5A, 0x03, 0xEB, 0x8A, 0x93, 0xA0, 0x3C, 0xF1, 0x74, 0xB7, 0x99, 0x17, + 0x38, 0x6E, 0x7D, 0xC7, 0x98, 0x2F, 0xBB, 0xEC, 0x7D, 0xA7, 0x66, 0xBF, + 0x7C, 0x0A, 0x52, 0x46, 0x77, 0x39, 0x6E, 0xEE, 0x1D, 0x57, 0xEE, 0x53, + 0x7D, 0x3C, 0xFE, 0xB0, 0x02, 0x61, 0x67, 0xB3, 0x1A, 0x23, 0xA7, 0xCB, + 0xB6, 0xFE, 0x80, 0x45, 0x2E, 0xAF, 0xFB, 0x7D, 0xB3, 0x7B, 0x1A, 0xAE, + 0x03, 0x9E, 0xE5, 0x55, 0x1F, 0x24, 0xEE, 0x0C, 0xA9, 0xC9, 0x9B, 0xC5, + 0x39, 0xE1, 0xD9, 0xD8, 0xA1, 0x5A, 0x65, 0x56, 0x8B, 0x1F, 0xA4, 0x92, + 0xD1, 0x5B, 0x21, 0x7E, 0xCF, 0x4E, 0x5C, 0xF6, 0xD2, 0x0B, 0xCA, 0x18, + 0xB5, 0x02, 0x24, 0x1D, 0x39, 0x22, 0xFF, 0x0E, 0x3B, 0x4A, 0xF8, 0x4C, + 0x39, 0x1A, 0x4F, 0x4E, 0xE7, 0x05, 0x36, 0xEF, 0xED, 0xE6, 0x53, 0x0B, + 0x32, 0x52, 0x0E, 0xFD, 0x1B, 0x35, 0x23, 0x67, 0x18, 0xAB, 0xAB, 0x63, + 0xB5, 0x6F, 0x96, 0xBC, 0x35, 0xCD, 0x30, 0x57, 0xEE, 0x27, 0xAD, 0xA5, + 0x8B, 0x52, 0x9A, 0x80, 0x46, 0xA4, 0x43, 0xBC, 0xD3, 0x35, 0x06, 0xBE, + 0x54, 0xF5, 0xBA, 0x79, 0xF6, 0x58, 0x2B, 0x19, 0x1B, 0x8F, 0x84, 0xAD, + 0x59, 0xAB, 0x04, 0x3F, 0xF8, 0xEC, 0xF6, 0xC4, 0x2A, 0x25, 0xF3, 0xE2, + 0x63, 0x21, 0xD5, 0xB6, 0x7E, 0x34, 0xDC, 0x62, 0x77, 0x58, 0xAB, 0xCA, + 0x7E, 0xC6, 0xCD, 0x8C, 0xBA, 0x7D, 0xEC, 0x97, 0x5D, 0x5D, 0x2B, 0x54, + 0x58, 0x71, 0x23, 0x89, 0x79, 0x24, 0x97, 0xE5, 0x02, 0x71, 0xBA, 0x49, + 0xA6, 0x0A, 0x1C, 0x39, 0x20, 0x75, 0xAF, 0x35, 0xB2, 0xE3, 0xA9, 0x93, + 0xB5, 0xA7, 0xF6, 0x1C, 0xA5, 0x29, 0x67, 0x31, 0x59, 0x5F, 0xF2, 0xE6, + 0x50, 0xE1, 0xDF, 0x1C, 0xC7, 0x6F, 0xE3, 0xEE, 0x33, 0xFF, 0xBA, 0xF1, + 0xD9, 0xDC, 0x12, 0xC6, 0xF7, 0xEF, 0x74, 0x49, 0x09, 0xBA, 0xD1, 0x6C, + 0x04, 0xF8, 0x76, 0x3C, 0xBA, 0x51, 0xB8, 0x31, 0xC8, 0x3E, 0xBE, 0x24, + 0xCE, 0x03, 0x71, 0x2D, 0xEC, 0x91, 0xA8, 0x83, 0x15, 0xF5, 0xA4, 0x86, + 0x6F, 0x11, 0x8D, 0xD7, 0x6D, 0x57, 0x17, 0x0E, 0x11, 0x46, 0x44, 0xA0, + 0x65, 0xCC, 0x9E, 0xAA, 0x4B, 0x4A, 0xAA, 0x13, 0x3F, 0xE2, 0x98, 0x20, + 0x0B, 0xFF, 0xBB, 0x2A, 0x78, 0xEE, 0x62, 0x6F, 0x9E, 0xB0, 0xFD, 0x06, + 0x83, 0x1A, 0x32, 0x52, 0x48, 0x1B, 0xFC, 0xCE, 0x13, 0xA4, 0xA8, 0xA7, + 0x9A, 0xFF, 0xC4, 0x1E, 0xE3, 0xA6, 0xCA, 0x32, 0xBD, 0xCE, 0xE7, 0x72, + 0x47, 0xC1, 0x72, 0x67, 0x25, 0x45, 0xCA, 0x3C, 0x14, 0xE6, 0x45, 0x0E, + 0x92, 0x73, 0xCA, 0xA1, 0x39, 0x18, 0xEE, 0x40, 0xD2, 0xD3, 0x0F, 0x12, + 0xEC, 0xF7, 0xEF, 0xB7, 0x62, 0x73, 0xBC, 0xEB, 0xF0, 0xF8, 0xD5, 0x3C, + 0x54, 0xFA, 0x9A, 0x3B, 0xBC, 0x7A, 0x7A, 0xA0, 0x95, 0x42, 0x6F, 0xEE, + 0x7A, 0xD6, 0x15, 0x29, 0x29, 0xAF, 0x54, 0xA9, 0x14, 0x85, 0xFB, 0x9A, + 0x06, 0xEA, 0xBC, 0x09, 0x9A, 0x2B, 0x94, 0x73, 0x25, 0x08, 0x3C, 0xAB, + 0xB3, 0x20, 0xB3, 0x45, 0xC2, 0xA0, 0x81, 0xA6, 0xFA, 0x04, 0xBA, 0x7E, + 0x49, 0x41, 0xC3, 0x4E, 0x1C, 0xE9, 0xE9, 0x48, 0xA9, 0x1D, 0xDC, 0xAB, + 0x3F, 0xE5, 0xB8, 0xC1, 0x92, 0xE4, 0xDB, 0xEB, 0x40, 0x09, 0x16, 0x48, + 0x21, 0xC3, 0xF1, 0x8D, 0x18, 0xE7, 0x07, 0xBD, 0x9D, 0x9F, 0x68, 0x9D, + 0x29, 0xF2, 0x2D, 0xC0, 0x6F, 0x23, 0x3B, 0x84, 0x93, 0xB1, 0x9C, 0xCE, + 0x40, 0xFF, 0xF4, 0x5B, 0xF6, 0xCF, 0x27, 0x97, 0x1B, 0x2E, 0x0B, 0x1E, + 0xFB, 0xE7, 0x86, 0xE9, 0x6C, 0xB8, 0xBB, 0x33, 0x0F, 0x85, 0x4F, 0xF4, + 0xA5, 0x16, 0x75, 0x07, 0x0A, 0xD1, 0x8A, 0x92, 0xDF, 0x47, 0xA7, 0x74, + 0xCB, 0x76, 0xED, 0xCB, 0x6C, 0x4C, 0xDF, 0xF0, 0xD8, 0x83, 0xDE, 0x36, + 0x2E, 0x8B, 0x42, 0xAD, 0x32, 0x25, 0x89, 0xCE, 0x2B, 0x2F, 0x73, 0xE1, + 0x18, 0x8F, 0x42, 0xA6, 0x8E, 0x60, 0xB9, 0xBD, 0x8F, 0xA5, 0x09, 0x72, + 0x48, 0x70, 0x73, 0x93, 0xE5, 0x61, 0x77, 0x44, 0xC3, 0x79, 0x9C, 0x01, + 0xD7, 0x8B, 0xA6, 0x4D, 0x3E, 0xD1, 0xD1, 0x81, 0x19, 0x24, 0xE4, 0xAC, + 0xC9, 0xD5, 0x37, 0x8B, 0x3F, 0x79, 0x82, 0x02, 0xE3, 0xA5, 0x70, 0x71, + 0x3D, 0x7A, 0x66, 0xF4, 0xAB, 0xC0, 0x7C, 0x39, 0x95, 0xBD, 0x31, 0xCA, + 0x97, 0xD1, 0x30, 0x1F, 0xE1, 0x34, 0xA1, 0x1F, 0x53, 0x65, 0xD8, 0x11, + 0xA4, 0x00, 0x0A, 0x9D, 0x8F, 0x7D, 0x25, 0x92, 0xE0, 0xE3, 0x41, 0xB4, + 0xAC, 0xC9, 0x05, 0x71, 0xF8, 0x1E, 0x0F, 0xF3, 0x87, 0x02, 0x67, 0x8B, + 0xF8, 0x93, 0xFA, 0x9C, 0x37, 0xED, 0x86, 0xE2, 0xAD, 0x4A, 0x61, 0x6E, + 0xD3, 0x18, 0x5E, 0x88, 0x70, 0xF4, 0xCD, 0xD5, 0x17, 0xE3, 0xEC, 0xCF, + 0x44, 0x7B, 0x58, 0x88, 0x68, 0x42, 0x25, 0x73, 0xE6, 0x16, 0x54, 0xA9, + 0x53, 0xC8, 0x2F, 0xB0, 0xA4, 0x68, 0x11, 0x7C, 0x13, 0xA9, 0x78, 0x69, + 0xCA, 0xAF, 0x3A, 0x77, 0xF2, 0xB0, 0xEE, 0x77, 0xF8, 0x8E, 0x4D, 0x9F, + 0xF9, 0x9F, 0x11, 0xFD, 0xFE, 0xCD, 0xFF, 0x70, 0x32, 0x0F, 0x12, 0xFE, + 0xEC, 0x52, 0xA9, 0x81, 0xBA, 0xF0, 0xBE, 0xE7, 0x39, 0x90, 0x4A, 0xA8, + 0xF9, 0xEE, 0xB8, 0x61, 0x92, 0x4B, 0x0B, 0x79, 0xB9, 0x63, 0x3B, 0x56, + 0x4E, 0x09, 0xB2, 0xB8, 0xBB, 0x3B, 0x24, 0x58, 0x53, 0x43, 0xD5, 0xDE, + 0x7A, 0x8D, 0xF8, 0x0A, 0x86, 0xC1, 0x00, 0x67, 0x4B, 0xE7, 0xC6, 0x87, + 0xA3, 0x4B, 0x7F, 0xFC, 0xC9, 0x27, 0x98, 0x45, 0x22, 0x1E, 0x43, 0x81, + 0x69, 0xEB, 0x10, 0xF1, 0xD3, 0xA6, 0x1D, 0x83, 0x29, 0x1D, 0x8B, 0x77, + 0xB3, 0x4E, 0x7E, 0xD0, 0xDB, 0xE5, 0x61, 0x71, 0xFE, 0x38, 0xA7, 0x9E, + 0x47, 0x8C, 0x2E, 0x80, 0xB4, 0x07, 0x1C, 0x77, 0x8A, 0xD6, 0x50, 0xB5, + 0x32, 0xCF, 0xCF, 0xBE, 0xB0, 0x6F, 0x6E, 0x77, 0xEA, 0x5D, 0x14, 0x10, + 0x7B, 0x1B, 0x51, 0xD2, 0xD6, 0xDC, 0x7C, 0x94, 0xDB, 0xFD, 0x5A, 0x37, + 0xAD, 0x28, 0x0C, 0xAC, 0x1B, 0x85, 0x54, 0x2F, 0xF1, 0x9A, 0x1C, 0x7B, + 0xA8, 0x81, 0x9C, 0x75, 0xFD, 0x38, 0x1E, 0xE4, 0x1A, 0xA5, 0x41, 0x9A, + 0x02, 0x2F, 0x3F, 0x1E, 0x8F, 0x8F, 0x9B, 0xDF, 0x85, 0x36, 0x25, 0xAB, + 0x1D, 0x60, 0x2B, 0xC7, 0x71, 0xBB, 0x33, 0x81, 0xDF, 0xAE, 0x60, 0xD9, + 0x94, 0xF6, 0x55, 0xBA, 0xB1, 0x86, 0x63, 0x03, 0xF5, 0xF2, 0x2E, 0x56, + 0x09, 0xD5, 0xAF, 0xD5, 0x97, 0x91, 0xDA, 0xD6, 0x78, 0x8C, 0x05, 0xF0, + 0xC6, 0x7F, 0x8D, 0x68, 0xA2, 0xB8, 0x47, 0x70, 0x58, 0xB4, 0xD2, 0x7E, + 0xED, 0x9C, 0x77, 0x41, 0x24, 0x7C, 0x48, 0x40, 0x52, 0x64, 0x03, 0x40, + 0x33, 0xD3, 0x03, 0x48, 0xFA, 0xE7, 0x94, 0x75, 0xD2, 0x8A, 0x07, 0xFA, + 0x40, 0x28, 0x4C, 0x7B, 0x23, 0x71, 0xC1, 0xA0, 0x60, 0x18, 0xBC, 0xBB, + 0xFF, 0x98, 0x0E, 0x5B, 0xC4, 0xEC, 0x77, 0xF8, 0xE9, 0xAD, 0x60, 0x8C, + 0x6D, 0x21, 0x7A, 0xEF, 0x84, 0x80, 0x02, 0x10, 0xD3, 0xC3, 0x98, 0xD5, + 0xFE, 0x4C, 0xD7, 0x62, 0xE3, 0x5A, 0x4C, 0x01, 0xEA, 0xEF, 0x43, 0xFB, + 0x04, 0x8B, 0x33, 0x86, 0x6B, 0xAA, 0xD4, 0x69, 0xF7, 0x9E, 0x3F, 0x3C, + 0x3E, 0xC0, 0xEC, 0xE5, 0x89, 0xA5, 0x00, 0xB7, 0xB0, 0xAA, 0x24, 0xAF, + 0x0B, 0xBD, 0x0F, 0x35, 0x69, 0x72, 0x6B, 0xC2, 0x38, 0x8E, 0x23, 0xEE, + 0xF9, 0x2D, 0xB6, 0x42, 0xF8, 0x39, 0x1A, 0x3B, 0xA9, 0x59, 0x4A, 0x95, + 0xD7, 0xE3, 0x5D, 0x08, 0x7B, 0xFD, 0xD0, 0x60, 0xEC, 0xE9, 0x5A, 0x17, + 0x61, 0xA9, 0x84, 0x47, 0x16, 0x68, 0x64, 0x21, 0x61, 0xFE, 0x48, 0x03, + 0x3A, 0x45, 0x4A, 0x1F, 0xB6, 0xA1, 0xD0, 0x0D, 0xAF, 0x25, 0x14, 0x2F, + 0xAE, 0xA7, 0x7E, 0x3D, 0x7B, 0x99, 0xB3, 0x1F, 0xD4, 0x9B, 0x26, 0xA4, + 0xCE, 0xFE, 0x61, 0xAD, 0x0E, 0xF4, 0x73, 0xE1, 0xDC, 0x03, 0xF4, 0x98, + 0x80, 0x97, 0xFF, 0xE8, 0x0E, 0xC3, 0x0D, 0x92, 0x7B, 0x0C, 0xB8, 0xBB, + 0x2F, 0x0F, 0xC4, 0x85, 0xEC, 0xC4, 0xCD, 0x60, 0xF3, 0xF5, 0x8A, 0x04, + 0x71, 0x55, 0xF9, 0x76, 0xAD, 0x37, 0xC2, 0xA7, 0x4E, 0xDF, 0x51, 0x64, + 0x90, 0x7F, 0x59, 0xB7, 0xFC, 0x3C, 0xB8, 0x75, 0xBB, 0x95, 0x4A, 0x85, + 0x10, 0x3C, 0xD4, 0xC2, 0x42, 0x37, 0xE1, 0x73, 0x92, 0xDD, 0xFA, 0x8C, + 0xB1, 0xCC, 0x53, 0xF4, 0xC7, 0xED, 0x06, 0x19, 0x9F, 0x8B, 0xEE, 0xF2, + 0x70, 0xB8, 0x26, 0xF4, 0xF3, 0x20, 0x73, 0x5B, 0xDC, 0xE9, 0x64, 0xDD, + 0x07, 0x2F, 0x7B, 0xE8, 0x30, 0x8E, 0x4C, 0xC4, 0x6C, 0x33, 0x7C, 0x90, + 0x24, 0x03, 0xD6, 0xA1, 0x12, 0xEB, 0x14, 0xFF, 0x78, 0x92, 0x8D, 0x99, + 0xD6, 0x46, 0x2E, 0xA6, 0x09, 0x4C, 0xAE, 0xDB, 0x42, 0xC2, 0x60, 0x89, + 0x9F, 0x15, 0x1C, 0x01, 0x08, 0x1C, 0x9F, 0xE0, 0xA8, 0x18, 0x85, 0xF8, + 0x1A, 0x61, 0x42, 0x2B, 0x80, 0xDB, 0xD8, 0x9C, 0xBB, 0xB9, 0xF4, 0x97, + 0x3B, 0x37, 0x21, 0xC5, 0x25, 0x68, 0x9A, 0xD3, 0xA1, 0xCB, 0xED, 0x1B, + 0x43, 0x4C, 0x17, 0x77, 0xB8, 0xAD, 0x8A, 0xF8, 0x3F, 0xBA, 0x78, 0xDD, + 0x98, 0x58, 0x62, 0x0F, 0x90, 0xB9, 0x5F, 0xB0, 0xC7, 0x63, 0xF1, 0x85, + 0x0E, 0x79, 0x55, 0x85, 0x2D, 0x80, 0xAC, 0x0B, 0x4D, 0xD9, 0x68, 0x06, + 0x74, 0x05, 0xDA, 0xF6, 0x16, 0x30, 0x0D, 0x83, 0x2C, 0x92, 0xA2, 0xD6, + 0x4B, 0x0B, 0xDC, 0x01, 0x6B, 0x5B, 0xCC, 0xEB, 0x2E, 0x9E, 0x0E, 0xBB, + 0xE1, 0xA7, 0x70, 0x8C, 0x98, 0xF6, 0x32, 0xF1, 0x1C, 0xE0, 0x4D, 0x70, + 0x09, 0x84, 0xB7, 0xD8, 0xD1, 0x96, 0x1C, 0xDD, 0x07, 0xE7, 0xFA, 0xB6, + 0x57, 0xE7, 0x70, 0x29, 0xB6, 0xE3, 0x29, 0x6A, 0xCB, 0xC4, 0xD3, 0xAE, + 0x80, 0x9A, 0xDF, 0xAE, 0x59, 0x8D, 0x0E, 0xAD, 0xF5, 0xE5, 0x5E, 0x1F, + 0x08, 0x46, 0xC2, 0xBC, 0x3D, 0x6F, 0xD1, 0x40, 0xB3, 0x8F, 0x67, 0xBC, + 0xDE, 0x7F, 0x68, 0xD9, 0xB3, 0x11, 0xB0, 0x78, 0x13, 0xE6, 0x54, 0x0E, + 0x11, 0x52, 0x50, 0xFE, 0x4A, 0xB7, 0x94, 0x4A, 0xCF, 0x8E, 0x1C, 0xF5, + 0xAE, 0xC9, 0xF2, 0xB5, 0x68, 0x32, 0xE6, 0x5D, 0xE3, 0xED, 0xBF, 0x74, + 0x9C, 0xB8, 0xD0, 0x02, 0x73, 0x7D, 0x99, 0x76, 0xEE, 0x08, 0x21, 0x51, + 0x62, 0xED, 0xD7, 0xAE, 0xF1, 0xDE, 0x2C, 0x61, 0xA1, 0x9E, 0xDC, 0xDE, + 0x98, 0x47, 0xDF, 0x55, 0x4F, 0x57, 0x83, 0x17, 0x9C, 0x7B, 0x95, 0xB7, + 0xAF, 0xD2, 0xD3, 0xB8, 0x17, 0x7C, 0x87, 0x01, 0x12, 0x89, 0x73, 0x6A, + 0xBB, 0xB1, 0x3E, 0x11, 0x81, 0xE3, 0x9A, 0x99, 0xC6, 0xE1, 0xA1, 0x09, + 0x9F, 0xE8, 0xA3, 0x8B, 0x5A, 0x98, 0x32, 0xE7, 0x78, 0x98, 0x78, 0xA9, + 0x10, 0x6E, 0xA1, 0xA9, 0xA2, 0xFF, 0xD3, 0x16, 0xBB, 0x78, 0x80, 0xE4, + 0x74, 0xE5, 0xBB, 0x46, 0x09, 0xEB, 0x5E, 0xFE, 0x8D, 0x7B, 0xF0, 0xB2, + 0xA6, 0x4B, 0x49, 0x04, 0xCE, 0x1C, 0x9D, 0x5D, 0x7A, 0xD8, 0x52, 0xB9, + 0xA7, 0x59, 0xB5, 0x0B, 0xEA, 0xDA, 0x0C, 0x26, 0xB9, 0x0D, 0x2A, 0x63, + 0x39, 0xBC, 0xF5, 0x44, 0x04, 0x83, 0xA2, 0x34, 0x4F, 0x83, 0x48, 0x62, + 0xAC, 0x77, 0xA9, 0xF2, 0xC1, 0xE0, 0xA2, 0xFC, 0xAB, 0xAD, 0x98, 0x33, + 0x4A, 0x67, 0xED, 0x31, 0x57, 0xB7, 0x9F, 0x53, 0xA2, 0x2A, 0x95, 0x7E, + 0x67, 0xF7, 0x2F, 0x1B, 0xA3, 0xE7, 0x22, 0xC5, 0xDC, 0x01, 0x02, 0xFC, + 0x2D, 0x6E, 0xBA, 0x65, 0xF2, 0x15, 0x8A, 0xA6, 0x2C, 0xBF, 0xEE, 0x52, + 0xE5, 0x9D, 0xC3, 0xE3, 0x7A, 0xCC, 0x6D, 0x75, 0x99, 0xF5, 0xCC, 0xE9, + 0x58, 0x98, 0xB8, 0xEF, 0x01, 0xA6, 0x2C, 0xE8, 0x48, 0xBE, 0x6E, 0x85, + 0xBA, 0x98, 0x2D, 0x50, 0x8E, 0xCF, 0xB0, 0xB0, 0x98, 0x2F, 0x98, 0x62, + 0xF9, 0xB6, 0x46, 0xE3, 0xA5, 0xBC, 0xD3, 0x76, 0x4B, 0xB8, 0x53, 0xB1, + 0x1C, 0x9D, 0x08, 0x64, 0x53, 0xB4, 0x6B, 0xF5, 0x4B, 0xAD, 0x78, 0x10, + 0x93, 0x62, 0xE2, 0xD4, 0x46, 0xB8, 0xB6, 0xD3, 0xD6, 0x6E, 0x53, 0x7F, + 0x12, 0x19, 0x65, 0x5A, 0xA0, 0x7B, 0xF4, 0x9F, 0x24, 0x1B, 0xD5, 0x79, + 0x14, 0xA8, 0x16, 0xDB, 0x99, 0xE8, 0x37, 0x7A, 0x75, 0x91, 0xAC, 0xD8, + 0xA7, 0x58, 0x38, 0xB0, 0x7B, 0x8E, 0x1E, 0x4B, 0x69, 0x19, 0x9E, 0xAB, + 0x99, 0xD8, 0xB5, 0xE5, 0x1B, 0xC2, 0x1C, 0xFA, 0xF1, 0xB8, 0xD3, 0x68, + 0x87, 0x6B, 0xBA, 0xD7, 0x15, 0xA6, 0x2B, 0xA2, 0x40, 0xA1, 0x75, 0xFB, + 0xE1, 0x2F, 0x56, 0x8A, 0xE0, 0x27, 0x7F, 0x82, 0x0B, 0x40, 0x15, 0x30, + 0xFC, 0xFE, 0xE9, 0x7C, 0xCA, 0x46, 0x88, 0xA2, 0x64, 0x48, 0x6B, 0xD2, + 0x82, 0x20, 0xE5, 0x7A, 0x35, 0xCD, 0xD6, 0xCE, 0x4D, 0x03, 0xA2, 0x12, + 0xA5, 0x8E, 0xBF, 0x56, 0x64, 0x95, 0x4F, 0x47, 0xCB, 0x5B, 0x53, 0x5E, + 0x57, 0x51, 0xF1, 0x4A, 0x57, 0xCA, 0xBC, 0xE0, 0x82, 0x8E, 0xDE, 0x6E, + 0x48, 0xD9, 0xBF, 0xC0, 0x8C, 0xF5, 0x68, 0xEA, 0x76, 0xFB, 0x29, 0x7A, + 0xEC, 0x5C, 0xCF, 0x7D, 0x49, 0xD4, 0xCD, 0x83, 0x7C, 0xD6, 0xC5, 0x52, + 0x2B, 0x80, 0x1D, 0x03, 0x5F, 0xA9, 0x78, 0x6B, 0x73, 0xEF, 0xE0, 0x93, + 0xE7, 0x6D, 0x14, 0xDC, 0x07, 0x44, 0x46, 0xCD, 0x34, 0x6C, 0x2F, 0xA7, + 0x1D, 0xC1, 0x93, 0x01, 0xF1, 0x03, 0x1D, 0x68, 0x84, 0x95, 0x72, 0xC5, + 0x2A, 0x51, 0x1A, 0x43, 0x73, 0xC6, 0x78, 0x7F, 0x25, 0x0C, 0x34, 0xAE, + 0x35, 0x48, 0xC8, 0xBE, 0xB1, 0xB7, 0x67, 0xF5, 0x82, 0xF7, 0xBB, 0x7E, + 0x00, 0x3E, 0x14, 0xD9, 0xF7, 0x81, 0xC1, 0x5A, 0xEF, 0xB4, 0x40, 0x11, + 0x4B, 0x1C, 0xC4, 0xBB, 0x80, 0x21, 0x52, 0xE3, 0x43, 0xF4, 0x9F, 0x33, + 0x3F, 0x79, 0x63, 0xDE, 0xB8, 0x81, 0x21, 0xCC, 0xA3, 0x1A, 0x1E, 0x8A, + 0x35, 0xC0, 0x8F, 0x14, 0x50, 0x0C, 0xA7, 0xCA, 0x0D, 0x36, 0x1F, 0xC3, + 0xB3, 0xEA, 0xA1, 0x0B, 0x06, 0xE0, 0xC9, 0xD1, 0x9C, 0xB9, 0x45, 0x0A, + 0xE5, 0xFE, 0xB4, 0x41, 0x31, 0x14, 0x01, 0xB9, 0x44, 0x10, 0xAF, 0x87, + 0x38, 0x05, 0x14, 0xD6, 0x2B, 0x48, 0x8D, 0x71, 0x5A, 0xE3, 0xC9, 0x0E, + 0xF5, 0x9C, 0x1B, 0xF7, 0x08, 0x30, 0x42, 0x33, 0xF4, 0x40, 0x38, 0xB3, + 0xF5, 0xEB, 0xA8, 0x61, 0xBE, 0xC1, 0x8B, 0xDC, 0xE4, 0x89, 0xA9, 0xF1, + 0x22, 0x86, 0x6A, 0x70, 0xC4, 0xD1, 0x75, 0x63, 0x17, 0x01, 0x2E, 0x42, + 0xE4, 0x30, 0x43, 0x36, 0x72, 0xFC, 0xF7, 0xA8, 0xCB, 0x97, 0x27, 0xD4, + 0x1C, 0xFC, 0xEF, 0xA5, 0x55, 0xFA, 0xD3, 0x58, 0xFB, 0x52, 0xA4, 0x5D, + 0x48, 0x16, 0x57, 0x3F, 0x10, 0x60, 0x9A, 0x0E, 0x75, 0x70, 0x94, 0xA9, + 0xC4, 0x21, 0xC2, 0xFE, 0xF0, 0x96, 0x0F, 0x5B, 0xD0, 0xB8, 0x65, 0xA9, + 0xE3, 0xDE, 0xE1, 0x65, 0x88, 0x77, 0x33, 0xEE, 0xE9, 0xA5, 0x82, 0xCF, + 0x7D, 0x0C, 0x7E, 0x81, 0x3C, 0x20, 0xAF, 0x2D, 0xF6, 0x85, 0xF9, 0xB8, + 0xA8, 0x67, 0xF3, 0x49, 0xC8, 0xA2, 0x51, 0x14, 0xB4, 0x0B, 0x09, 0xCC, + 0xE7, 0x61, 0x81, 0xF3, 0xD1, 0xDE, 0x6E, 0xAD, 0x82, 0x66, 0x33, 0xB9, + 0xBE, 0x52, 0x1F, 0x3E, 0x37, 0x88, 0xDE, 0x01, 0x06, 0x33, 0x67, 0x2B, + 0x8E, 0xD1, 0x65, 0x09, 0xA4, 0xC7, 0x18, 0x72, 0x27, 0xDF, 0xA1, 0xE6, + 0x3E, 0xAE, 0x7C, 0xCF, 0x23, 0x8F, 0xAB, 0x08, 0xA2, 0x2B, 0xF9, 0x99, + 0xDF, 0xDE, 0x92, 0x60, 0x2A, 0x1A, 0xFD, 0xB7, 0x70, 0xF3, 0xCA, 0xFC, + 0x97, 0x80, 0xB9, 0xE5, 0xB0, 0xE0, 0xF7, 0xDD, 0x8C, 0xAE, 0xFB, 0x8E, + 0xE3, 0x9A, 0x2D, 0xEE, 0x45, 0x6E, 0x57, 0xB4, 0xFE, 0x4F, 0x68, 0x1B, + 0x88, 0x2C, 0x03, 0x14, 0x54, 0xFB, 0xCC, 0xAE, 0x4E, 0x4A, 0x64, 0x3E, + 0x7F, 0xAB, 0xE6, 0xB4, 0xAD, 0xAE, 0x0D, 0xC7, 0xF5, 0xC3, 0x4C, 0x78, + 0xC6, 0x2D, 0xEA, 0xDD, 0xA6, 0xCD, 0x8E, 0xB6, 0x1C, 0x6F, 0xB5, 0x35, + 0x08, 0x71, 0xA8, 0x0A, 0xE3, 0xB7, 0x5A, 0x16, 0x1E, 0x32, 0xC5, 0x10, + 0x08, 0x1D, 0xE8, 0x16, 0x3A, 0xF2, 0xA4, 0xBA, 0x5A, 0xAF, 0x6B, 0x26, + 0x00, 0x3B, 0x72, 0xEF, 0x30, 0x77, 0x0B, 0x01, 0xE3, 0x94, 0xD9, 0x15, + 0x0F, 0x72, 0x43, 0x61, 0x5A, 0x13, 0x75, 0x68, 0xED, 0xAE, 0xE4, 0x5C, + 0xD9, 0xB9, 0xB2, 0x76, 0xAF, 0x3B, 0xDF, 0xEF, 0x1F, 0xFC, 0x82, 0x96, + 0x28, 0xDF, 0xC5, 0xDC, 0xE6, 0xD3, 0x30, 0xFE, 0xDD, 0x91, 0xA7, 0x9A, + 0x9E, 0x31, 0xB8, 0xFA, 0xEA, 0x75, 0x66, 0xB9, 0xA6, 0xD4, 0xFF, 0x5E, + 0x17, 0xB0, 0xA4, 0x24, 0x72, 0x3C, 0x87, 0x39, 0xA9, 0x22, 0xF1, 0x75, + 0x93, 0xE3, 0x62, 0xD0, 0x01, 0xD1, 0x86, 0x5D, 0xB9, 0x69, 0x26, 0x1F, + 0x17, 0x41, 0xB8, 0x05, 0xCF, 0x45, 0x94, 0x02, 0x8A, 0xAD, 0x3D, 0x38, + 0x81, 0xCA, 0xDF, 0x6F, 0x43, 0x35, 0xFB, 0x69, 0xAF, 0x92, 0x1F, 0x2B, + 0x3D, 0x88, 0x3B, 0x40, 0x55, 0x07, 0x2F, 0xF4, 0x30, 0x6B, 0x81, 0x1D, + 0xE2, 0xEF, 0x1E, 0x02, 0xCA, 0xD5, 0x92, 0xE2, 0xF9, 0x37, 0xBC, 0x5A, + 0x2D, 0x85, 0xF3, 0xC6, 0x97, 0xC8, 0x03, 0xB6, 0x88, 0xF2, 0x51, 0x77, + 0x61, 0xDB, 0x23, 0xB3, 0x75, 0xF2, 0xA2, 0x3C, 0x55, 0xAC, 0x14, 0x4C, + 0xC4, 0x5D, 0x49, 0x68, 0x39, 0xD3, 0x60, 0x00, 0x2A, 0xE5, 0x5C, 0x01, + 0x56, 0x60, 0x99, 0x6B, 0x02, 0xB2, 0x9F, 0x19, 0xB3, 0x80, 0x3B, 0xE7, + 0xBE, 0xAC, 0xED, 0xDD, 0x30, 0x6E, 0x78, 0x43, 0xBF, 0xF5, 0xF3, 0x80, + 0x4C, 0x59, 0xDB, 0xE4, 0x59, 0x8E, 0xE0, 0xFE, 0xAB, 0x19, 0xF0, 0xEE, + 0xB6, 0xFB, 0x60, 0x71, 0xFF, 0x54, 0x5B, 0xB6, 0x0E, 0x32, 0x2F, 0xF6, + 0xBD, 0xFC, 0x7E, 0xE5, 0x2F, 0xAB, 0x64, 0x91, 0xA1, 0x28, 0xA4, 0x0A, + 0x3E, 0x0E, 0x78, 0x1F, 0xB7, 0x30, 0x93, 0x4C, 0x7A, 0xEB, 0xD3, 0xA3, + 0x28, 0x47, 0xD0, 0x6B, 0x35, 0x7A, 0x87, 0x58, 0x66, 0x73, 0x58, 0x75, + 0x58, 0x27, 0x02, 0x4B, 0xE1, 0xE0, 0xB6, 0xED, 0x2D, 0x80, 0x0D, 0x75, + 0xCE, 0x8E, 0x13, 0x10, 0xA1, 0xFE, 0x33, 0xC7, 0xBF, 0xFC, 0xA7, 0xC0, + 0x0D, 0x7E, 0xC0, 0x53, 0x26, 0x71, 0xB4, 0xEB, 0x59, 0xA0, 0x1E, 0x04, + 0xA4, 0xDB, 0xE4, 0x2B, 0xDA, 0x7E, 0xFB, 0x11, 0x46, 0xF3, 0x76, 0x1E, + 0xC6, 0x17, 0x7D, 0xCD, 0xDC, 0x86, 0xAA, 0x4A, 0x69, 0x72, 0xC4, 0x0C, + 0xE9, 0xB1, 0x24, 0xD0, 0x84, 0x29, 0x1D, 0xB9, 0x71, 0xEC, 0x14, 0x2C, + 0x13, 0x90, 0xAE, 0x00, 0x07, 0x31, 0xBC, 0x88, 0x82, 0x03, 0xEA, 0xD0, + 0x0E, 0x9E, 0x54, 0x60, 0xC6, 0x9B, 0x11, 0x16, 0x7B, 0xDB, 0xFE, 0x77, + 0xD8, 0x66, 0x75, 0xB5, 0x75, 0xDB, 0xDE, 0x35, 0xB1, 0xE3, 0x91, 0xBB, + 0xA2, 0x00, 0x8C, 0x0F, 0xE3, 0xFA, 0x95, 0x8D, 0x24, 0xD9, 0x39, 0xE4, + 0xDA, 0x03, 0x72, 0xDE, 0x77, 0x8A, 0xD9, 0xDB, 0x5D, 0xD2, 0x82, 0x66, + 0x54, 0x83, 0x21, 0x82, 0xE6, 0x1F, 0xBB, 0x4B, 0x2F, 0xF9, 0x1C, 0xD8, + 0x32, 0xC2, 0xEF, 0x9E, 0xEC, 0x1C, 0x8E, 0xE1, 0x64, 0x15, 0xE3, 0x49, + 0xA5, 0xE6, 0x87, 0x60, 0xF1, 0x13, 0x50, 0xBC, 0x29, 0x78, 0xA3, 0x3F, + 0x66, 0x7B, 0x0C, 0x7A, 0x31, 0x82, 0xE9, 0xEB, 0xFF, 0x29, 0x81, 0xFB, + 0x9C, 0x92, 0xA4, 0x1D, 0xB3, 0x5C, 0xE3, 0x07, 0x15, 0xCD, 0x02, 0x71, + 0xCC, 0xFB, 0x8D, 0x92, 0x1B, 0x02, 0x0A, 0xC2, 0xBB, 0x79, 0x44, 0xA0, + 0x36, 0x21, 0xEE, 0x29, 0x9F, 0x76, 0x41, 0x16, 0xE9, 0x78, 0xD9, 0xE7, + 0x1B, 0x1E, 0x1B, 0x25, 0xF2, 0xB5, 0x40, 0xD6, 0x41, 0x25, 0xE5, 0x93, + 0xDB, 0x4D, 0x87, 0xA3, 0x89, 0x38, 0xDD, 0x6F, 0xD8, 0x55, 0x07, 0x87, + 0x3C, 0xC0, 0xA1, 0xB1, 0xCB, 0x78, 0xC5, 0x65, 0x8C, 0x4C, 0x50, 0x77, + 0x72, 0x1E, 0xDF, 0xD6, 0x83, 0xEE, 0x90, 0x4A, 0xC5, 0xC0, 0x64, 0x81, + 0x30, 0x2F, 0xB8, 0x41, 0x21, 0x29, 0x0E, 0x95, 0x97, 0x89, 0xCD, 0x9F, + 0x20, 0x58, 0x38, 0x44, 0x60, 0x4B, 0x61, 0xCC, 0x82, 0xDA, 0xDF, 0x64, + 0x7B, 0x7E, 0xAF, 0xA8, 0x38, 0x8F, 0x74, 0x92, 0x08, 0x69, 0xE3, 0x6F, + 0x24, 0x39, 0x3D, 0x18, 0x18, 0x30, 0xF9, 0x32, 0xD8, 0x44, 0x0B, 0xF6, + 0x95, 0x0C, 0x5D, 0x25, 0x6D, 0x76, 0x48, 0x5E, 0xB4, 0x15, 0x59, 0x3F, + 0x04, 0x1D, 0x04, 0xE7, 0x9B, 0xED, 0x84, 0x4E, 0x1A, 0x15, 0x07, 0x62, + 0x78, 0x49, 0x74, 0x74, 0xC2, 0x25, 0xBA, 0xFF, 0x90, 0x8B, 0xD2, 0xFA, + 0x46, 0xE5, 0xE3, 0x2D, 0x47, 0x77, 0xB7, 0x50, 0x05, 0x48, 0x7B, 0xEE, + 0xDE, 0x55, 0x14, 0x0A, 0xFF, 0x1A, 0x3E, 0x76, 0x14, 0x3B, 0xBE, 0xE3, + 0xAA, 0x59, 0x68, 0xC5, 0x63, 0xFB, 0x7D, 0x36, 0x1B, 0x33, 0xAC, 0x1B, + 0xE0, 0xA5, 0x11, 0x2E, 0x08, 0xAD, 0x8C, 0x13, 0x17, 0x26, 0xFD, 0x0F, + 0xB3, 0xCF, 0xAA, 0x9E, 0x41, 0xDE, 0x53, 0xA4, 0xAC, 0x53, 0x49, 0x63, + 0x59, 0x8F, 0x4A, 0x74, 0x10, 0xC3, 0x19, 0xDE, 0x07, 0x60, 0x6D, 0x6C, + 0xFC, 0x3B, 0xE0, 0xCF, 0x0C, 0x04, 0x77, 0x4A, 0x4B, 0x06, 0x80, 0xC8, + 0x80, 0xC9, 0xBE, 0x86, 0x91, 0xCA, 0x4D, 0xF9, 0x48, 0xF7, 0xBC, 0x98, + 0xF2, 0xE4, 0x97, 0xFE, 0xCD, 0x78, 0x31, 0x80, 0x95, 0xE2, 0x31, 0x7A, + 0x65, 0x0D, 0x5C, 0x22, 0x1D, 0x3E, 0x17, 0x44, 0xEE, 0x0F, 0x7A, 0x9C, + 0x3A, 0xE6, 0x25, 0x75, 0x49, 0x9A, 0x40, 0x16, 0x7A, 0x7F, 0x23, 0x6A, + 0x3D, 0x42, 0xE2, 0xD6, 0x9D, 0x5D, 0xFE, 0xC4, 0xFF, 0x70, 0x0C, 0x25, + 0xF3, 0xC9, 0x16, 0x1C, 0xCB, 0xD5, 0x59, 0x6C, 0x0B, 0x05, 0x34, 0x20, + 0x1D, 0xFB, 0x9E, 0x00, 0x97, 0x9A, 0x7C, 0xB0, 0x32, 0xA8, 0xC0, 0xDB, + 0xEF, 0x3E, 0xDD, 0x50, 0x48, 0x77, 0xC1, 0x45, 0x44, 0x2F, 0x3C, 0xFC, + 0x8C, 0xF9, 0xF7, 0xDA, 0x5A, 0x73, 0xDB, 0x7C, 0x5D, 0x9E, 0x02, 0xB8, + 0x58, 0x15, 0x46, 0xD1, 0x4E, 0x13, 0x98, 0x0F, 0xDF, 0xC9, 0x33, 0xDF, + 0xC8, 0x44, 0x02, 0x50, 0xDB, 0x21, 0x60, 0x8D, 0xC8, 0x27, 0xEB, 0xE0, + 0x7A, 0x27, 0x04, 0xD3, 0x6C, 0x12, 0xC8, 0x61, 0x6B, 0x52, 0x13, 0x6A, + 0x34, 0xDE, 0x10, 0x32, 0xAD, 0x85, 0xAB, 0x01, 0x26, 0x50, 0x1F, 0xA9, + 0x75, 0x0E, 0x02, 0xC0, 0x1A, 0xFB, 0x41, 0x20, 0x25, 0x0F, 0x8E, 0xC3, + 0xD4, 0x89, 0xA3, 0xF5, 0x44, 0xD4, 0x9D, 0x84, 0x1C, 0xA7, 0x9C, 0x5B, + 0xE7, 0x44, 0xC4, 0xEA, 0x7E, 0x7F, 0x74, 0xE3, 0x56, 0x9D, 0xB8, 0xE6, + 0x95, 0x12, 0x5D, 0x5E, 0x49, 0x62, 0x37, 0x07, 0x42, 0x0D, 0xC6, 0xCE, + 0x63, 0xE8, 0x0A, 0x2A, 0x78, 0xAE, 0x99, 0xA7, 0x5B, 0x8D, 0x26, 0xA2, + 0x28, 0x0C, 0x99, 0x28, 0x68, 0x48, 0x82, 0xF6, 0x1D, 0x53, 0x5E, 0xCA, + 0x7D, 0xBA, 0xD1, 0x20, 0x0E, 0x14, 0xF6, 0x2D, 0x57, 0x8C, 0x9B, 0xAA, + 0x00, 0xC3, 0x4B, 0x22, 0x1F, 0xA7, 0xB3, 0x4A, 0x6A, 0xCD, 0x72, 0x31, + 0x63, 0x1A, 0x07, 0x12, 0xE6, 0xE7, 0x0D, 0x80, 0xA6, 0x92, 0x80, 0x04, + 0xA1, 0x75, 0x48, 0xA7, 0x6E, 0xD5, 0xFF, 0xC0, 0xB5, 0x74, 0x5F, 0xBE, + 0xEC, 0xF4, 0xC8, 0x4B, 0x85, 0x2F, 0xF9, 0xA0, 0x54, 0x78, 0x87, 0x28, + 0x56, 0x02, 0x00, 0xF0, 0x01, 0xAA, 0x91, 0xB8, 0x84, 0x5D, 0xBA, 0x29, + 0xC0, 0x4E, 0x17, 0x06, 0x83, 0x6F, 0x75, 0xD7, 0x26, 0xE9, 0x2F, 0x46, + 0xF2, 0x60, 0x4A, 0xDE, 0xDF, 0x9D, 0x03, 0xDC, 0x9D, 0x68, 0xD3, 0xA0, + 0x75, 0xA9, 0xD7, 0x4F, 0x9A, 0xE8, 0x0C, 0xC5, 0x82, 0x85, 0x2C, 0x27, + 0xE2, 0x2E, 0x3E, 0x4C, 0xC1, 0xDC, 0xD4, 0x14, 0xDA, 0x3B, 0xBE, 0x6F, + 0x01, 0xF6, 0xE3, 0x36, 0x78, 0xE9, 0xCC, 0xF1, 0xB6, 0xB4, 0x01, 0x0A, + 0xE2, 0xD2, 0xDB, 0xA1, 0xA5, 0x1D, 0x79, 0x0A, 0x97, 0x3C, 0xA2, 0x31, + 0xD1, 0x2A, 0x2D, 0x7B, 0xEF, 0xCC, 0x50, 0x20, 0x93, 0xFD, 0xE4, 0x51, + 0xC6, 0xE1, 0xD7, 0xD0, 0x4D, 0x50, 0xBB, 0x06, 0x80, 0x15, 0x35, 0x89, + 0x71, 0x9C, 0xFE, 0x93, 0xE9, 0x59, 0x34, 0x50, 0x33, 0x17, 0xFC, 0x0A, + 0x5D, 0x03, 0xD7, 0x13, 0xB4, 0xE0, 0x26, 0x58, 0x06, 0x08, 0x09, 0xCA, + 0xA4, 0x7E, 0xCB, 0xA5, 0xE6, 0x5A, 0x95, 0x59, 0x3D, 0x4B, 0x8E, 0xCE, + 0xC9, 0xF5, 0x09, 0x19, 0x86, 0x64, 0xF4, 0x3F, 0xF4, 0xB6, 0x9F, 0xF6, + 0x69, 0xE5, 0x3C, 0x38, 0xDB, 0xEF, 0xF1, 0xB2, 0xF4, 0xDF, 0xAF, 0xEC, + 0x21, 0xD1, 0xCA, 0xD2, 0xD2, 0x14, 0x72, 0x2F, 0xC9, 0x70, 0x68, 0x89, + 0x2B, 0x06, 0xB7, 0x5C, 0x74, 0xF5, 0x39, 0xDB, 0x52, 0x03, 0x46, 0x74, + 0x65, 0xF8, 0x18, 0xB1, 0x62, 0x96, 0xCA, 0xDF, 0x3D, 0xCA, 0xF7, 0x49, + 0x3C, 0x53, 0xDB, 0x4B, 0xD0, 0xA1, 0xCC, 0xA1, 0xA4, 0x38, 0x72, 0x9B, + 0x68, 0x0C, 0x2F, 0xDB, 0x0D, 0x0B, 0x57, 0x99, 0xB5, 0xCE, 0x70, 0x77, + 0x3C, 0x61, 0xC3, 0x3A, 0x74, 0x91, 0x36, 0x69, 0xDF, 0x20, 0x6A, 0x31, + 0xF4, 0xE3, 0x14, 0xEB, 0xCB, 0xE6, 0x82, 0x7A, 0x5A, 0x3A, 0xCA, 0xAC, + 0xB7, 0x6D, 0x75, 0x75, 0xF6, 0xF5, 0xF0, 0xF7, 0x06, 0xA4, 0x7F, 0xB0, + 0xEF, 0xA0, 0x87, 0x89, 0x9B, 0x6E, 0x92, 0x6E, 0xE2, 0x93, 0x34, 0x0B, + 0x2E, 0x55, 0x43, 0x8C, 0xED, 0xB5, 0x15, 0xD7, 0x65, 0xD7, 0x24, 0x98, + 0xA8, 0x68, 0x52, 0x2A, 0x3F, 0x35, 0x24, 0xBD, 0x27, 0xBF, 0x91, 0x26, + 0x1E, 0x30, 0xC4, 0xF9, 0x64, 0x2D, 0xE2, 0x67, 0x86, 0xD1, 0x4B, 0x05, + 0x27, 0x2F, 0x62, 0xFE, 0x30, 0x98, 0x50, 0xF9, 0x00, 0xC6, 0xF5, 0x64, + 0xCF, 0x98, 0xEC, 0x46, 0xF4, 0xC2, 0xA2, 0xF1, 0x0B, 0x7F, 0x9E, 0x8A, + 0xAF, 0x97, 0xC7, 0x4F, 0x07, 0x1F, 0x3B, 0xE7, 0x6C, 0x1D, 0x38, 0x63, + 0x2F, 0x10, 0x25, 0x5C, 0x80, 0x00, 0xA0, 0x25, 0xA1, 0x2F, 0x77, 0xBF, + 0xD5, 0x8F, 0x05, 0xF1, 0x3E, 0x91, 0x87, 0x84, 0xBE, 0x80, 0xB3, 0x13, + 0xF6, 0x1F, 0xFC, 0x9A, 0x0B, 0x8B, 0x82, 0xE7, 0xEE, 0x36, 0x86, 0xC5, + 0xBC, 0x01, 0x3C, 0xA9, 0xF4, 0x9C, 0x0F, 0xFB, 0x67, 0x6A, 0x75, 0x97, + 0xC1, 0x9E, 0xC2, 0x43, 0x99, 0x2A, 0xD9, 0xB8, 0xDF, 0xF8, 0xF8, 0xA5, + 0xE3, 0x30, 0x4B, 0x1F, 0x03, 0x9A, 0x3F, 0x3E, 0x4D, 0x37, 0xF8, 0x9B, + 0xB6, 0x7F, 0xFF, 0x2A, 0xE8, 0x91, 0xA6, 0x23, 0x51, 0xA3, 0xCA, 0xCE, + 0x16, 0x75, 0x27, 0xE1, 0x6F, 0xA8, 0xF9, 0xBD, 0xA7, 0x14, 0x11, 0x06, + 0x7C, 0xD4, 0x1C, 0xF9, 0x3A, 0x47, 0x7A, 0xD0, 0xFA, 0x52, 0xF1, 0xE2, + 0xB8, 0x47, 0xBA, 0xAA, 0x52, 0xF4, 0x15, 0x7E, 0x81, 0xD5, 0x9D, 0x38, + 0xB8, 0x71, 0xED, 0x63, 0x3B, 0x74, 0x81, 0x4E, 0x91, 0x51, 0xE8, 0xC0, + 0x72, 0x1E, 0x76, 0x93, 0xF5, 0xC1, 0xC1, 0x31, 0xD7, 0x52, 0x3F, 0x07, + 0x24, 0x5C, 0xF2, 0xC8, 0x46, 0x27, 0x91, 0xB3, 0xA4, 0xEC, 0x2A, 0x09, + 0x1E, 0x21, 0x47, 0x7F, 0xC1, 0xD8, 0x46, 0x87, 0xE6, 0x3A, 0x5C, 0x58, + 0x5A, 0xBF, 0x31, 0x1A, 0x3E, 0x07, 0x9B, 0xE4, 0x21, 0x17, 0xB6, 0xAE, + 0xA2, 0x25, 0x32, 0x98, 0xFF, 0x18, 0xFA, 0xD1, 0xD3, 0xC1, 0xAC, 0x36, + 0x83, 0xCA, 0xF8, 0xAF, 0xD6, 0x35, 0xD8, 0x09, 0x20, 0x25, 0x0C, 0x87, + 0xB4, 0x47, 0xA6, 0xD9, 0xD0, 0xEF, 0x98, 0xF3, 0x8D, 0x36, 0xA8, 0xFF, + 0xEB, 0x52, 0x72, 0x8B, 0x78, 0xAE, 0xFF, 0x25, 0xC1, 0xB1, 0xDE, 0x55, + 0xF0, 0x0D, 0xA5, 0x0F, 0x9C, 0x73, 0x38, 0xE1, 0x2D, 0x24, 0x5F, 0x88, + 0xB3, 0x85, 0x9F, 0x2C, 0xF7, 0xDC, 0x72, 0x58, 0x13, 0x53, 0x5A, 0x76, + 0xF4, 0x29, 0xE5, 0xD2, 0x76, 0xC8, 0x10, 0x5D, 0xBE, 0x65, 0x7F, 0x80, + 0xBC, 0x40, 0x49, 0x68, 0x5A, 0x4D, 0x04, 0xB7, 0xBA, 0xB6, 0x76, 0x80, + 0x3D, 0xBC, 0xBC, 0xC6, 0x35, 0xFF, 0xB7, 0xFD, 0x97, 0xFC, 0x29, 0x89, + 0x05, 0xF2, 0x50, 0xF9, 0x47, 0xAD, 0x8F, 0xA4, 0x33, 0xD9, 0xD0, 0xBA, + 0x5E, 0xE7, 0xC7, 0x1F, 0xC2, 0xFB, 0xB7, 0x27, 0x62, 0xF9, 0x84, 0xC6, + 0x7E, 0x5C, 0x00, 0x00, 0x4A, 0x36, 0xC1, 0x2C, 0xD1, 0xAA, 0xD6, 0x44, + 0xBF, 0x6A, 0x11, 0x86, 0x01, 0x23, 0x9F, 0x6F, 0x69, 0xB9, 0x1E, 0xFC, + 0xD8, 0x04, 0x38, 0x76, 0x37, 0xCA, 0x26, 0x0E, 0x41, 0x11, 0x5D, 0xCD, + 0xAF, 0x2A, 0xEF, 0x9E, 0x53, 0x46, 0x81, 0x87, 0xA5, 0x38, 0x86, 0x1B, + 0xBB, 0x48, 0xB3, 0x6F, 0x84, 0xB4, 0xBE, 0x4C, 0x7E, 0x0D, 0x00, 0xDA, + 0x64, 0xC5, 0x2D, 0xB1, 0x92, 0x62, 0x47, 0x12, 0xB5, 0x8B, 0x52, 0x97, + 0x1A, 0x7F, 0x7B, 0x38, 0xAB, 0x28, 0x2C, 0xC0, 0xEB, 0x72, 0xFE, 0x86, + 0xC0, 0x88, 0x23, 0xAD, 0x71, 0x5C, 0x2C, 0x9B, 0x59, 0x58, 0xD4, 0x39, + 0x51, 0x9D, 0xD9, 0x23, 0x35, 0x0F, 0x4B, 0x11, 0x76, 0xC7, 0x7B, 0x4A, + 0x55, 0x57, 0x29, 0xB0, 0x45, 0xF9, 0x12, 0xA3, 0x1E, 0x2B, 0x7C, 0x86, + 0x6F, 0xD9, 0xA4, 0xA8, 0x4C, 0x43, 0xFB, 0x8C, 0x45, 0xEA, 0x19, 0xDF, + 0x81, 0x65, 0x98, 0x8F, 0xB8, 0xC6, 0x7B, 0xAA, 0x42, 0xAC, 0xC4, 0x84, + 0xA5, 0xDA, 0xDA, 0xA0, 0x36, 0x1E, 0xFE, 0x44, 0xF4, 0x02, 0x78, 0xD2, + 0xAF, 0x58, 0x60, 0x41, 0x6A, 0x8B, 0xA3, 0xB1, 0xD3, 0xBA, 0x2C, 0x08, + 0x9B, 0xA4, 0x19, 0x7B, 0xCC, 0x2A, 0x25, 0xF0, 0xFF, 0x8B, 0xA3, 0x88, + 0xC9, 0x50, 0xBF, 0xF6, 0xCE, 0x83, 0x30, 0x46, 0x66, 0xE2, 0x47, 0x1B, + 0xF1, 0x7F, 0xAD, 0xAA, 0x66, 0x5F, 0x94, 0x04, 0xA0, 0x5F, 0xCC, 0x5B, + 0xB0, 0x6B, 0xB5, 0x26, 0x6F, 0x56, 0x5E, 0x18, 0xE9, 0xB1, 0x68, 0xE3, + 0xEF, 0x7A, 0xBC, 0x44, 0xF0, 0x5C, 0xAB, 0x88, 0xA6, 0x07, 0xAF, 0xA3, + 0x86, 0xAF, 0x3B, 0xE9, 0x78, 0x96, 0x3B, 0xFB, 0xCD, 0x5A, 0xC9, 0xA9, + 0x20, 0xE4, 0x6D, 0x8E, 0x3E, 0xB6, 0x4D, 0x40, 0xD3, 0xDC, 0x4B, 0x8A, + 0xD4, 0xB7, 0x22, 0xC6, 0x2C, 0xE2, 0xB7, 0x9F, 0x43, 0x15, 0x8D, 0x07, + 0xA5, 0x27, 0x9E, 0xA3, 0xA2, 0xF7, 0x59, 0x00, 0xDD, 0xD8, 0xC1, 0x18, + 0xE9, 0x1E, 0x4F, 0x8C, 0x7B, 0xE0, 0xA6, 0x71, 0xA0, 0x6A, 0x25, 0x67, + 0x1B, 0x4F, 0x02, 0xE2, 0xA2, 0xED, 0xBE, 0x01, 0x48, 0x56, 0x2C, 0x4C, + 0xDA, 0x43, 0x9F, 0x54, 0x38, 0xB3, 0x93, 0xCF, 0x08, 0x42, 0xF3, 0x13, + 0x01, 0x41, 0x6E, 0xEE, 0xA0, 0x70, 0x0F, 0x1D, 0x64, 0x44, 0xA8, 0xD4, + 0x0B, 0x9C, 0x95, 0x08, 0xA1, 0xE9, 0x04, 0x94, 0x2B, 0x25, 0x23, 0x6B, + 0x59, 0xF0, 0x7D, 0x45, 0x28, 0x00, 0x15, 0x6F, 0x93, 0xA7, 0xAC, 0x30, + 0xC5, 0x8F, 0xEF, 0x2D, 0xFA, 0xBA, 0x86, 0x06, 0xA1, 0x51, 0x4D, 0x1B, + 0xDE, 0x8E, 0x75, 0xD4, 0x9E, 0x03, 0x8E, 0xB2, 0x10, 0x77, 0x84, 0x9F, + 0x7A, 0x52, 0xCA, 0x72, 0x7A, 0x33, 0x16, 0xCA, 0x57, 0x6C, 0xB3, 0xA2, + 0x7A, 0xE1, 0x44, 0x95, 0x4C, 0xC6, 0x64, 0x3F, 0xAB, 0x67, 0x06, 0xBE, + 0xBF, 0xF9, 0x16, 0xF6, 0x0F, 0xF6, 0xC4, 0xA0, 0x38, 0xAE, 0xAD, 0x7B, + 0xBC, 0xA9, 0x0F, 0xE7, 0xD5, 0xB1, 0xC6, 0x22, 0x6F, 0x9E, 0x2C, 0xE4, + 0x7B, 0x14, 0x7F, 0x70, 0xAF, 0x24, 0x55, 0x57, 0x9F, 0x9D, 0xE7, 0x6E, + 0x4B, 0x63, 0xCD, 0xAB, 0x06, 0x5F, 0x48, 0x92, 0x18, 0x2A, 0x2E, 0xAB, + 0xDB, 0x3E, 0x6A, 0xC4, 0xA3, 0x72, 0x7C, 0x5F, 0xA8, 0x40, 0xCA, 0x2B, + 0xF8, 0xB9, 0xD5, 0x44, 0x7E, 0xEC, 0x64, 0x7C, 0x2D, 0x6C, 0x23, 0x64, + 0x32, 0x49, 0x8F, 0xDF, 0xAE, 0x5C, 0xCD, 0x53, 0x1E, 0x6D, 0xB9, 0xCA, + 0x95, 0xA4, 0xB5, 0x21, 0x84, 0x02, 0xDE, 0x85, 0xC0, 0x7B, 0xA1, 0x8B, + 0x48, 0xC4, 0xCD, 0xD1, 0xCF, 0xA8, 0xAD, 0x9A, 0xD4, 0x74, 0x54, 0xEB, + 0xFF, 0x61, 0xE3, 0x78, 0xD4, 0xEA, 0x6A, 0xF2, 0xBC, 0xFF, 0x15, 0x86, + 0x46, 0x43, 0x4F, 0x8B, 0x02, 0x1F, 0x0B, 0x38, 0x4A, 0x69, 0x8F, 0xF3, + 0xAA, 0xFB, 0xDD, 0x65, 0xED, 0xBF, 0xC4, 0x2B, 0xD2, 0x48, 0xC7, 0x4F, + 0x81, 0x15, 0x9E, 0x89, 0x46, 0x89, 0xF3, 0xB7, 0xDF, 0x00, 0xB5, 0xFA, + 0x8A, 0xFA, 0xEB, 0x62, 0xC2, 0xED, 0x9E, 0x30, 0xE0, 0xE2, 0xFC, 0x42, + 0x43, 0xA4, 0x23, 0x4A, 0xE7, 0x1E, 0x71, 0x58, 0xD4, 0xED, 0x07, 0xA1, + 0xF5, 0x65, 0x61, 0x69, 0x8E, 0x2A, 0x9C, 0x07, 0x46, 0x87, 0x22, 0x65, + 0x59, 0xF7, 0xA7, 0x9E, 0x30, 0x67, 0xD6, 0x89, 0x62, 0x43, 0xEE, 0xDC, + 0x91, 0xE3, 0x54, 0xEC, 0x81, 0x15, 0xD3, 0x6A, 0x74, 0x5D, 0x86, 0xFD, + 0x1B, 0x18, 0xBD, 0xD2, 0xF9, 0x92, 0x75, 0xDE, 0xAC, 0xA4, 0x5E, 0x30, + 0x5F, 0xBF, 0x16, 0x0A, 0xB7, 0xC8, 0x13, 0x32, 0xB6, 0xB2, 0x1F, 0x69, + 0x68, 0x10, 0x0B, 0xB7, 0xCD, 0xBD, 0x20, 0x2D, 0xAC, 0x62, 0x0F, 0x1E, + 0xF0, 0xB5, 0x22, 0x45, 0x34, 0x27, 0x27, 0x67, 0x2B, 0x50, 0x00, 0x0F, + 0xA0, 0xCF, 0x5C, 0x3B, 0xA2, 0x08, 0xB4, 0x7F, 0xD1, 0x21, 0xF9, 0xE8, + 0xAE, 0xDF, 0x7A, 0x87, 0x0A, 0xFD, 0xD1, 0x71, 0xBE, 0xD0, 0x61, 0x66, + 0xFD, 0xB1, 0xCA, 0x0F, 0x6E, 0x2A, 0x36, 0xF5, 0xBF, 0x3B, 0x72, 0xC6, + 0xB5, 0x59, 0xA8, 0x88, 0x63, 0x3A, 0x06, 0x9C, 0xF2, 0x84, 0x8A, 0xAE, + 0xD6, 0xA4, 0xBF, 0xFD, 0xDD, 0x78, 0xF7, 0x29, 0x13, 0x61, 0x6B, 0x15, + 0xAF, 0x90, 0x39, 0x14, 0x6B, 0xBC, 0xBE, 0xE5, 0x1B, 0xD5, 0x59, 0xDC, + 0x08, 0xCA, 0xEC, 0x8D, 0x8E, 0x32, 0x8D, 0x74, 0x98, 0xF8, 0x93, 0x3A, + 0x7F, 0xAE, 0xA4, 0x30, 0x16, 0x76, 0xD5, 0x8E, 0x0D, 0xA1, 0x0B, 0xB4, + 0xF2, 0x8C, 0xF8, 0x16, 0x26, 0xF9, 0x96, 0x14, 0x8B, 0x89, 0x2F, 0x9E, + 0x9F, 0x55, 0xFD, 0xFF, 0xC5, 0x40, 0xCE, 0x72, 0x8A, 0x4C, 0x2A, 0x72, + 0xA8, 0xA3, 0xBA, 0xB7, 0x93, 0xDD, 0x04, 0x31, 0x72, 0x04, 0x56, 0x79, + 0x1A, 0xE1, 0x6E, 0xB6, 0x14, 0xAF, 0xE4, 0xB0, 0x97, 0x44, 0x6B, 0x9E, + 0xD6, 0x7C, 0xD9, 0x46, 0x70, 0xB7, 0x7A, 0x00, 0x00, 0x60, 0xD2, 0x51, + 0x92, 0x49, 0xD3, 0xFB, 0xB5, 0x40, 0x36, 0xE8, 0xE3, 0xA0, 0xA3, 0x2C, + 0xB3, 0xB7, 0x98, 0x3F, 0xD9, 0x38, 0x32, 0x00, 0x09, 0x5A, 0x5F, 0x69, + 0x7B, 0xD5, 0x38, 0x21, 0xB9, 0x99, 0xEB, 0xB6, 0x1E, 0xBC, 0x54, 0x51, + 0x0C, 0x6A, 0x03, 0x15, 0xC8, 0x09, 0xAE, 0xF2, 0x30, 0xB8, 0x9F, 0x23, + 0x11, 0xEF, 0x38, 0xEC, 0x3C, 0x1F, 0x3F, 0xC5, 0xAF, 0x09, 0x4B, 0xBD, + 0x60, 0xE4, 0xCD, 0x8F, 0x7F, 0x5C, 0x93, 0xF4, 0x39, 0x7D, 0x63, 0xB1, + 0x44, 0x16, 0x3F, 0x48, 0xB5, 0xE7, 0x3E, 0x23, 0xD1, 0x09, 0x08, 0x95, + 0x5B, 0x26, 0x1D, 0xD8, 0x02, 0x03, 0x7A, 0x66, 0xA9, 0x6C, 0x8F, 0xA0, + 0xC7, 0x08, 0xF7, 0xD5, 0x4C, 0x98, 0xA3, 0xA5, 0x77, 0x4F, 0x8C, 0xB5, + 0x95, 0x2E, 0x38, 0x01, 0x60, 0x13, 0x39, 0xFE, 0x14, 0x98, 0x50, 0x8F, + 0xB0, 0xA6, 0x69, 0xA6, 0xF6, 0xDA, 0x45, 0x36, 0x89, 0xA9, 0x1A, 0xF9, + 0x75, 0xD4, 0x95, 0x2F, 0xD2, 0x2C, 0x21, 0x52, 0xC3, 0xEB, 0x4D, 0xFC, + 0x51, 0xA6, 0x6A, 0xD9, 0x5C, 0xC5, 0x8A, 0x45, 0x8E, 0x9D, 0x84, 0xB9, + 0xD3, 0xC0, 0xC2, 0x84, 0xA8, 0x27, 0x76, 0x15, 0x59, 0x03, 0x69, 0x40, + 0x2F, 0xDF, 0x67, 0x32, 0x46, 0xD6, 0x36, 0x8C, 0x00, 0x34, 0x08, 0xE0, + 0x3F, 0x2A, 0x3F, 0xE7, 0x50, 0xF0, 0xDB, 0xFC, 0x4D, 0x44, 0xF2, 0x37, + 0x44, 0xB4, 0x45, 0xEF, 0x95, 0x1E, 0x71, 0xFF, 0xA3, 0x6D, 0x4A, 0x2D, + 0x2D, 0xD3, 0x87, 0xFE, 0x30, 0xF1, 0xC5, 0xBB, 0xDC, 0x76, 0x16, 0x5D, + 0xA0, 0xF2, 0x33, 0x41, 0x57, 0x3A, 0x1D, 0xE6, 0x73, 0x00, 0x00, 0xF4, + 0xF8, 0x24, 0x30, 0x9E, 0x0E, 0xF9, 0x90, 0x0D, 0x4E, 0x10, 0x63, 0x55, + 0x89, 0x05, 0x65, 0x3D, 0x3E, 0x66, 0x23, 0x22, 0xC7, 0x88, 0xF6, 0xDE, + 0x77, 0xA7, 0x2B, 0x48, 0x74, 0x40, 0x7A, 0xA1, 0x98, 0x8C, 0xA2, 0x80, + 0x64, 0x8C, 0x57, 0x28, 0x79, 0x31, 0x8A, 0x0A, 0x12, 0xC9, 0x1B, 0xA9, + 0x2C, 0xE4, 0x46, 0xA7, 0x4A, 0xB0, 0xEE, 0xD7, 0x05, 0xB5, 0x70, 0x41, + 0xF0, 0x90, 0xB7, 0xB1, 0x1F, 0xD7, 0x74, 0x13, 0x02, 0x27, 0x58, 0xE3, + 0x7F, 0xDD, 0xB2, 0x13, 0xFB, 0xB9, 0xBD, 0x7F, 0xA4, 0x2A, 0x33, 0x26, + 0xB8, 0xAB, 0xCF, 0x33, 0xBB, 0x69, 0x2F, 0x18, 0xBC, 0x3F, 0x4D, 0x62, + 0x96, 0xAB, 0x9F, 0xF9, 0x8F, 0xBC, 0x53, 0xF9, 0x3A, 0xA5, 0xE0, 0xBD, + 0xD2, 0x5B, 0x25, 0x47, 0x6D, 0x70, 0x42, 0x02, 0x06, 0xC4, 0x3A, 0xA8, + 0xF1, 0xCF, 0xD2, 0x24, 0xD9, 0xA6, 0x1F, 0x7A, 0xFB, 0x36, 0xB9, 0xA7, + 0x90, 0x2A, 0xAC, 0x64, 0xC5, 0x45, 0xBE, 0xAC, 0xCF, 0x05, 0xDA, 0x22, + 0x00, 0xAA, 0xA4, 0xCE, 0x06, 0x3B, 0x06, 0x5A, 0x4F, 0xEC, 0x8A, 0xE5, + 0x6D, 0x70, 0x0F, 0x8F, 0x3D, 0xC6, 0xEE, 0x7E, 0x7F, 0x9B, 0xC7, 0xD5, + 0xB3, 0x65, 0x9A, 0x4C, 0x3E, 0x69, 0xBE, 0x81, 0x94, 0x07, 0xA1, 0x52, + 0x68, 0x03, 0x07, 0x78, 0x5C, 0x52, 0xED, 0xC9, 0xEB, 0x9F, 0x68, 0x2D, + 0x88, 0xB2, 0xBD, 0x79, 0xA8, 0xE5, 0x19, 0xAF, 0x06, 0x63, 0x42, 0xDF, + 0xAD, 0xA0, 0x36, 0xDF, 0x0F, 0xAE, 0x2C, 0x0C, 0x9A, 0x87, 0xA3, 0xAD, + 0x92, 0x98, 0xC2, 0xE0, 0x16, 0x7D, 0x80, 0xCF, 0xDE, 0xE2, 0x57, 0xEC, + 0x86, 0x3C, 0x2C, 0x3A, 0x7D, 0x27, 0xFA, 0x3F, 0xBB, 0x2E, 0x74, 0xD9, + 0x00, 0x41, 0x6D, 0xDC, 0xE5, 0x64, 0x6C, 0xEE, 0x53, 0xEB, 0x6E, 0xDD, + 0xF2, 0xCE, 0xFD, 0x53, 0x11, 0xBA, 0x3F, 0x22, 0x71, 0x32, 0x2B, 0x10, + 0x28, 0xFA, 0xD5, 0x2D, 0xF7, 0x77, 0xC9, 0x68, 0x6D, 0xC8, 0x83, 0x98, + 0xFB, 0x13, 0x99, 0x2B, 0x20, 0x04, 0xC4, 0xE5, 0x98, 0x1D, 0x72, 0x35, + 0xF9, 0x7B, 0xF0, 0x40, 0xC8, 0xCC, 0x77, 0x68, 0x9F, 0x9E, 0x92, 0xFC, + 0xF1, 0xF9, 0x24, 0xD2, 0x73, 0x42, 0xAF, 0x30, 0x30, 0x0F, 0x07, 0x5A, + 0x56, 0xE0, 0xD7, 0x22, 0x3E, 0xD8, 0x50, 0xDB, 0xD8, 0x1D, 0x03, 0xAD, + 0x7D, 0x6A, 0x6E, 0x40, 0xE1, 0xA2, 0x1A, 0x4C, 0x6B, 0x3E, 0xF2, 0x0C, + 0xA7, 0x9A, 0x86, 0x4D, 0x75, 0x5B, 0x2F, 0x2B, 0xA1, 0x40, 0x9D, 0x20, + 0xD4, 0xD9, 0x77, 0xD9, 0xAF, 0xDA, 0x63, 0xF7, 0x88, 0xAF, 0x7B, 0xBE, + 0x3E, 0x01, 0x5B, 0x42, 0xA9, 0x97, 0xC3, 0x99, 0x36, 0x7A, 0xE0, 0x5F, + 0x3C, 0x2C, 0x07, 0x73, 0x59, 0x15, 0xA9, 0xF6, 0x1C, 0x04, 0x50, 0xF3, + 0x30, 0x30, 0x27, 0x36, 0xA6, 0xFE, 0x6C, 0x32, 0x43, 0x2E, 0x4D, 0x03, + 0xA1, 0x9D, 0x15, 0x2F, 0xC5, 0xD9, 0x9C, 0x4A, 0x38, 0x1F, 0x22, 0x6E, + 0xB1, 0x2A, 0x3C, 0x83, 0xBD, 0x9A, 0x2B, 0xC2, 0x25, 0x9A, 0x72, 0x70, + 0x89, 0x89, 0x6A, 0xF8, 0x97, 0xA7, 0x42, 0x5E, 0x01, 0x1B, 0x52, 0x0F, + 0x8A, 0x25, 0xEB, 0x99, 0xF6, 0xF9, 0xF2, 0xB6, 0x26, 0xCF, 0xA6, 0x61, + 0xA0, 0x1C, 0x37, 0x04, 0x1A, 0x0C, 0x06, 0xB8, 0x47, 0x36, 0x9E, 0xEF, + 0x72, 0xBA, 0x92, 0x9C, 0x06, 0xD6, 0x75, 0x6F, 0xC6, 0x86, 0xDA, 0xA7, + 0xBF, 0x7E, 0xFD, 0xEE, 0x5E, 0x1C, 0x7D, 0x72, 0x11, 0xFD, 0x05, 0x9A, + 0x76, 0x77, 0x77, 0x93, 0xF0, 0x00, 0x01, 0xB2, 0x44, 0x02, 0x50, 0x5A, + 0x3F, 0x23, 0x0E, 0x97, 0x4D, 0x9C, 0x96, 0x74, 0x52, 0xA4, 0x98, 0x83, + 0x1C, 0x1A, 0x80, 0x69, 0xDE, 0x9B, 0xF0, 0x4F, 0xEF, 0x23, 0x3D, 0x56, + 0xA9, 0x88, 0xBC, 0xB1, 0x64, 0x20, 0x78, 0x89, 0xC1, 0xB2, 0x3F, 0x8A, + 0x4D, 0x32, 0x8E, 0x5C, 0xE0, 0x29, 0xF0, 0xCF, 0xEC, 0x39, 0x3A, 0xE2, + 0x82, 0x96, 0xEA, 0x38, 0x40, 0x19, 0x88, 0x78, 0xE5, 0xB9, 0x18, 0x7A, + 0x98, 0x63, 0x18, 0x29, 0xCF, 0x17, 0xA7, 0x57, 0xD0, 0x50, 0xFA, 0xB3, + 0x59, 0x80, 0x60, 0x9D, 0x14, 0x43, 0x67, 0x2F, 0x1E, 0xDD, 0x3B, 0x83, + 0xC1, 0x53, 0xE7, 0x27, 0xDE, 0xFB, 0xF1, 0xE2, 0x35, 0xE8, 0x04, 0x53, + 0xC6, 0x2B, 0xCC, 0x8C, 0x2A, 0xFE, 0x6F, 0x59, 0x3D, 0xD2, 0x8A, 0x07, + 0xCA, 0x76, 0x84, 0x08, 0xE1, 0xEC, 0xBD, 0x8B, 0xFD, 0x96, 0xA8, 0x24, + 0xFB, 0x96, 0xB0, 0xB4, 0x0C, 0x74, 0x60, 0x12, 0x56, 0x83, 0x0C, 0xC2, + 0xB9, 0x4F, 0x6D, 0xB7, 0x2D, 0x68, 0x6B, 0x21, 0xF1, 0x9D, 0xEF, 0x69, + 0x4B, 0xA1, 0x81, 0x89, 0x41, 0x51, 0xE4, 0x68, 0x29, 0xBC, 0x1A, 0x06, + 0xA0, 0xF6, 0xCB, 0xD8, 0x82, 0xFE, 0x6C, 0xE0, 0xF4, 0x69, 0x15, 0xF8, + 0xD8, 0x54, 0x00, 0xA9, 0xAD, 0x2D, 0xDC, 0xF4, 0x97, 0xF1, 0x36, 0xEA, + 0xD1, 0x22, 0x88, 0x8D, 0x04, 0x16, 0x8C, 0x48, 0xBD, 0x5F, 0xEE, 0x60, + 0x3C, 0x37, 0x6E, 0x42, 0x92, 0x05, 0x09, 0x71, 0x00, 0x14, 0xDB, 0x2F, + 0x73, 0xBE, 0x12, 0xDA, 0x89, 0x12, 0x0F, 0x2F, 0x6C, 0xB7, 0xE2, 0x64, + 0xCF, 0x3E, 0x69, 0x95, 0x9E, 0x87, 0xC9, 0xA9, 0x67, 0x0D, 0x4F, 0x04, + 0x5B, 0x16, 0x3A, 0xB4, 0x75, 0x7A, 0x3F, 0x17, 0x5C, 0x17, 0xF5, 0xF1, + 0x5A, 0x17, 0xFE, 0x85, 0x5F, 0x0C, 0x7C, 0x79, 0x3E, 0x6E, 0x24, 0x89, + 0xB6, 0x56, 0x74, 0x51, 0x45, 0xFE, 0x54, 0x39, 0x62, 0x91, 0xE6, 0x98, + 0x88, 0xB2, 0x55, 0x20, 0x7B, 0x14, 0x4B, 0x11, 0xB9, 0xD4, 0xF0, 0xC0, + 0x69, 0x4F, 0x88, 0xCF, 0x43, 0x4F, 0xBB, 0xCC, 0x60, 0x3C, 0x8D, 0xF0, + 0x7B, 0x37, 0x7F, 0x39, 0xE7, 0x15, 0x72, 0x65, 0x2F, 0x24, 0xF5, 0x06, + 0x40, 0xF9, 0x1A, 0x92, 0xA2, 0x29, 0x17, 0xEF, 0xF8, 0xAC, 0xD9, 0x16, + 0x5A, 0x35, 0xB6, 0x15, 0xED, 0xB0, 0xAD, 0x35, 0x58, 0x12, 0xA8, 0x46, + 0x64, 0x22, 0xE9, 0xDC, 0x1C, 0xA7, 0x0D, 0xF2, 0x7D, 0x37, 0xCB, 0xEE, + 0x43, 0x6C, 0xAC, 0x2A, 0xE0, 0xF3, 0xE4, 0x88, 0x3F, 0x68, 0x0D, 0x1D, + 0x99, 0x60, 0xF5, 0x8A, 0xE3, 0x4F, 0x3E, 0x35, 0x74, 0xB7, 0x18, 0x3B, + 0x88, 0x31, 0x9C, 0x52, 0xC5, 0xE6, 0xD2, 0x9C, 0x5E, 0x32, 0x91, 0xA7, + 0x37, 0x24, 0xC1, 0x50, 0xE6, 0x00, 0xE6, 0xFC, 0xE8, 0xDF, 0x4B, 0x85, + 0xB8, 0xCC, 0x6F, 0xE7, 0x68, 0x2C, 0xDA, 0x62, 0x1B, 0xBE, 0xB6, 0x9A, + 0x9B, 0xE2, 0x5D, 0x71, 0xC0, 0x94, 0xAB, 0x94, 0xD7, 0x06, 0x78, 0xCF, + 0x0F, 0xB6, 0x5D, 0x15, 0xCE, 0xC8, 0xB7, 0x2D, 0xA9, 0x66, 0xF3, 0x9F, + 0x70, 0xCE, 0xA3, 0x13, 0x38, 0x40, 0x03, 0x85, 0x00, 0xA4, 0x25, 0x3E, + 0xA0, 0x10, 0x49, 0x9B, 0xAC, 0x23, 0x4A, 0x15, 0xF0, 0xFB, 0x82, 0x58, + 0x55, 0x00, 0x01, 0x0E, 0xB3, 0x93, 0x18, 0xC1, 0x65, 0x7E, 0x8C, 0xEA, + 0xCA, 0xB1, 0x64, 0x97, 0x58, 0x81, 0x1C, 0x2F, 0x4B, 0x38, 0x62, 0x1F, + 0xD2, 0x7C, 0x3B, 0x04, 0xCA, 0xDB, 0xC0, 0x45, 0xAB, 0xD6, 0x35, 0x11, + 0x61, 0xF1, 0x3F, 0x3F, 0x66, 0x89, 0x68, 0xDB, 0x7C, 0xA2, 0xA9, 0x45, + 0xBF, 0x25, 0xF5, 0x64, 0xBE, 0x44, 0x12, 0x45, 0x26, 0x5F, 0x3A, 0x0F, + 0x02, 0x20, 0xBD, 0x5E, 0xA8, 0x71, 0xD3, 0x49, 0xE7, 0xF7, 0x6D, 0x99, + 0xAD, 0x9A, 0xDB, 0x0C, 0x4A, 0x45, 0x2D, 0xAA, 0x09, 0x6F, 0xC4, 0x20, + 0x0A, 0xE8, 0xCA, 0xC4, 0x95, 0x6E, 0xF5, 0xED, 0x7F, 0xD8, 0x4A, 0x7B, + 0xC8, 0x00, 0x5E, 0xA6, 0x29, 0x11, 0xB8, 0xB1, 0xF5, 0xDA, 0xE9, 0xC3, + 0x8E, 0xA4, 0x42, 0xD6, 0xCC, 0x2D, 0x1F, 0x49, 0x44, 0x96, 0x4E, 0xAA, + 0xB8, 0x0E, 0x16, 0x1A, 0x94, 0x5B, 0xE2, 0x07, 0x34, 0x78, 0x1D, 0x0A, + 0xB0, 0xDB, 0x4A, 0x7F, 0x38, 0xA8, 0x85, 0xD7, 0x00, 0xF4, 0x4A, 0x89, + 0x8E, 0x19, 0xD0, 0x3D, 0x49, 0x0F, 0x07, 0x04, 0x71, 0x85, 0x34, 0xE0, + 0x55, 0xDD, 0xB5, 0xF1, 0x0F, 0xDB, 0xF3, 0x73, 0x23, 0xD1, 0x5D, 0xC3, + 0x75, 0x6C, 0x8A, 0x30, 0xCB, 0x38, 0x13, 0xA8, 0x2B, 0x44, 0x60, 0xB4, + 0x84, 0x80, 0xCB, 0x1D, 0x77, 0x3C, 0x58, 0xB1, 0x42, 0x5B, 0x23, 0x63, + 0x5A, 0x4D, 0xE7, 0xDE, 0x2D, 0x2C, 0x1A, 0x3C, 0x9A, 0x7F, 0x84, 0x8C, + 0x6D, 0x69, 0x3F, 0x22, 0xAE, 0x85, 0x81, 0xC6, 0x43, 0xC9, 0x4E, 0x20, + 0x8B, 0x47, 0xD4, 0x1D, 0x78, 0x82, 0x89, 0x47, 0x6B, 0x62, 0x9C, 0x80, + 0x4F, 0x62, 0x97, 0x21, 0x98, 0x0C, 0x82, 0x8D, 0xD1, 0x54, 0x6F, 0xD4, + 0x7C, 0xB0, 0x35, 0x96, 0x77, 0xA6, 0x81, 0xD6, 0xC6, 0x16, 0x83, 0xE4, + 0x13, 0x8D, 0xC8, 0xCD, 0x0A, 0x25, 0xEB, 0x9D, 0x2F, 0xB2, 0x02, 0x40, + 0x28, 0x73, 0x40, 0xBB, 0x43, 0x1D, 0xBF, 0xE1, 0x7F, 0xFE, 0xB8, 0x69, + 0xF2, 0xC6, 0xDE, 0x2E, 0xA6, 0xC0, 0xA5, 0xF2, 0x0C, 0x2F, 0x4B, 0xD3, + 0xE1, 0x2F, 0x3D, 0x8A, 0x0C, 0xF9, 0x65, 0xE6, 0xFF, 0x85, 0xFF, 0x37, + 0x64, 0x75, 0xE0, 0x2C, 0x42, 0x6D, 0xDA, 0xC9, 0x9D, 0x79, 0xD1, 0x18, + 0x62, 0xAE, 0x75, 0x1A, 0x91, 0x63, 0x51, 0xAB, 0x2C, 0x37, 0x42, 0x38, + 0x33, 0xD1, 0xC8, 0x0B, 0x9A, 0x5D, 0x52, 0xF0, 0x44, 0x82, 0x04, 0x32, + 0x8E, 0x40, 0xE9, 0x00, 0xEF, 0xA3, 0x2A, 0x0E, 0x1D, 0x7B, 0xEB, 0x73, + 0x13, 0xC0, 0x55, 0x0C, 0x14, 0x1C, 0xC2, 0x91, 0x91, 0x31, 0xF6, 0x64, + 0x77, 0x1E, 0x1A, 0xF9, 0x37, 0xCA, 0x0A, 0xEF, 0x0A, 0x5D, 0x58, 0xCD, + 0x4E, 0x60, 0x88, 0x7F, 0x0C, 0xF9, 0x8E, 0x35, 0x12, 0x9C, 0x5B, 0xE3, + 0xFC, 0xD3, 0x00, 0x52, 0x76, 0x97, 0xF8, 0x8A, 0x58, 0x5E, 0xAE, 0xDB, + 0x1D, 0x8F, 0xD7, 0x31, 0xFB, 0x7E, 0x6A, 0x40, 0x3B, 0x8B, 0x4F, 0xD4, + 0xC7, 0x41, 0xB1, 0xB5, 0xCC, 0x06, 0x7D, 0xC6, 0x64, 0x29, 0xBD, 0x85, + 0x10, 0x48, 0x7D, 0x6F, 0x1A, 0x61, 0x25, 0xAF, 0x7B, 0x7F, 0x95, 0x24, + 0xD3, 0x5F, 0x0F, 0x61, 0x30, 0x43, 0xA2, 0xD5, 0x46, 0xFE, 0xD5, 0x5C, + 0xA8, 0xD7, 0x30, 0xE5, 0x5B, 0x41, 0x8B, 0xB7, 0x32, 0xF4, 0x05, 0xF0, + 0xCD, 0xB1, 0x5B, 0x5D, 0x2F, 0x77, 0x10, 0xE6, 0xA6, 0xF3, 0xE5, 0x80, + 0x91, 0xB2, 0x3C, 0x50, 0xC9, 0x42, 0x27, 0x2B, 0x38, 0x67, 0x13, 0x71, + 0x6D, 0x8B, 0x5F, 0x47, 0x36, 0xE9, 0xCF, 0xC0, 0x8D, 0x92, 0x6C, 0x13, + 0xFC, 0x08, 0x00, 0xF5, 0xF5, 0x0B, 0x0F, 0x47, 0xB9, 0xE4, 0xF3, 0xED, + 0x2D, 0x1E, 0x6A, 0x14, 0x78, 0x51, 0xA2, 0x68, 0x3E, 0x39, 0x08, 0xC7, + 0x78, 0xFA, 0xBB, 0x3E, 0xAD, 0xBC, 0x7E, 0x7F, 0x8D, 0xBE, 0xA2, 0x26, + 0x86, 0xD4, 0x0D, 0x31, 0x85, 0xA5, 0x2B, 0xE6, 0xA6, 0x24, 0x5A, 0xF1, + 0x14, 0xB3, 0x45, 0x58, 0x3C, 0x21, 0xDF, 0x0B, 0x56, 0x9E, 0xB1, 0xEC, + 0xA9, 0xD9, 0x94, 0xDA, 0x75, 0xD6, 0xF2, 0x74, 0x0D, 0x58, 0xCC, 0xAC, + 0x38, 0x88, 0x3E, 0xB5, 0xEB, 0x82, 0x57, 0xAF, 0xA3, 0x5B, 0x54, 0x9A, + 0xA4, 0xC2, 0x2B, 0xCE, 0xFC, 0x5D, 0x78, 0x59, 0x3B, 0x9E, 0x05, 0xE8, + 0xCB, 0x2C, 0x8E, 0xEF, 0x11, 0x12, 0xF4, 0x87, 0x06, 0x64, 0x1E, 0x9A, + 0x4C, 0x51, 0xFA, 0xE5, 0xEE, 0x72, 0xEF, 0x31, 0x9C, 0x44, 0x28, 0x92, + 0xB5, 0x38, 0xC6, 0xA9, 0x40, 0x75, 0x51, 0x0E, 0x2D, 0xD6, 0x96, 0x1C, + 0x3C, 0x78, 0xC1, 0x9B, 0x79, 0xFB, 0xD2, 0x3D, 0x41, 0xB8, 0x59, 0x6B, + 0xA0, 0xC8, 0x27, 0xE6, 0x3F, 0xC7, 0xE4, 0x84, 0xD7, 0xF8, 0x3C, 0x36, + 0x0B, 0x3C, 0x85, 0x59, 0x75, 0xD2, 0xF3, 0x7C, 0x43, 0xDE, 0x74, 0xF5, + 0x65, 0xDE, 0x5E, 0x0B, 0xB1, 0x80, 0xEC, 0x86, 0xC0, 0xDA, 0x1E, 0x4F, + 0xF6, 0xD3, 0x55, 0x2D, 0xA9, 0x61, 0x9E, 0x0F, 0xBA, 0xCB, 0xC6, 0x03, + 0x15, 0x92, 0x9A, 0x40, 0x78, 0x3B, 0xDC, 0x14, 0x93, 0x08, 0x8D, 0xC0, + 0xBE, 0x54, 0x96, 0xEF, 0x45, 0x22, 0xD7, 0x31, 0xF0, 0x4B, 0x55, 0x82, + 0x06, 0x3B, 0x1F, 0x35, 0x1C, 0xD4, 0xC6, 0x55, 0x65, 0xB1, 0xC8, 0xAC, + 0x9E, 0x5E, 0xDA, 0x6B, 0x1F, 0x13, 0x58, 0x52, 0x64, 0xE0, 0x4B, 0xD0, + 0x4E, 0xFB, 0x90, 0xD2, 0xDF, 0x90, 0xF3, 0x0C, 0x89, 0x8D, 0xC1, 0xD6, + 0x4C, 0x26, 0xF9, 0xFF, 0x3F, 0xE5, 0xFF, 0x4F, 0x7B, 0x23, 0xC7, 0x9E, + 0x5E, 0x32, 0xD5, 0xCC, 0xCC, 0x30, 0xE4, 0x12, 0x86, 0xD5, 0x5A, 0x69, + 0x2C, 0x14, 0x4A, 0x9A, 0x79, 0x90, 0x24, 0x2A, 0x0D, 0x7B, 0xE1, 0x5C, + 0x7F, 0xD5, 0xD0, 0x9B, 0x59, 0xA0, 0xC1, 0xB5, 0x35, 0xDF, 0xE4, 0x3B, + 0x96, 0x45, 0xEA, 0x85, 0x56, 0xE3, 0xA0, 0x78, 0x66, 0xA2, 0xB4, 0x95, + 0xE8, 0x83, 0x4E, 0xA5, 0x34, 0xB0, 0xCA, 0x68, 0x1B, 0x8E, 0xEF, 0x99, + 0xD5, 0xD7, 0xDA, 0x02, 0x68, 0xEC, 0xB8, 0x8A, 0x78, 0x1A, 0x9F, 0x31, + 0xDD, 0x3E, 0xB0, 0xA7, 0x47, 0x4C, 0x61, 0x8B, 0x38, 0xFD, 0xFE, 0x8C, + 0x11, 0xE6, 0x4F, 0xDC, 0xD7, 0x26, 0xF0, 0x49, 0x64, 0x39, 0xE0, 0xA8, + 0xEF, 0x57, 0x5A, 0x6E, 0xA0, 0xEE, 0xAF, 0x3E, 0x51, 0x2B, 0x59, 0x08, + 0x8D, 0x62, 0x48, 0x9D, 0xCC, 0x0B, 0x70, 0x35, 0x85, 0xC0, 0xDB, 0x14, + 0xAD, 0x31, 0x8B, 0xCD, 0x15, 0xF5, 0x1B, 0x2F, 0xDA, 0x0D, 0xE8, 0xA8, + 0x8C, 0xCC, 0xD3, 0xF0, 0xEC, 0x21, 0xC7, 0xF7, 0x4B, 0xF3, 0xDF, 0x98, + 0x49, 0xBD, 0xE7, 0xCB, 0x43, 0x18, 0xF0, 0x39, 0xDE, 0xAE, 0xD6, 0x19, + 0x2A, 0x1A, 0x2E, 0x04, 0xA3, 0x94, 0x0C, 0x5B, 0xC4, 0x29, 0x06, 0x82, + 0xEA, 0xBE, 0xDB, 0x8B, 0x7F, 0xA5, 0xC9, 0x42, 0x14, 0x11, 0x06, 0x16, + 0x6B, 0xE8, 0xF3, 0xB8, 0x15, 0x5A, 0xAA, 0x3E, 0xF9, 0xF0, 0x5D, 0x68, + 0x19, 0xFF, 0xA9, 0xAF, 0xCB, 0x67, 0x83, 0x64, 0xB4, 0x93, 0x0A, 0xAE, + 0xFA, 0xCC, 0x2B, 0x19, 0xF7, 0x4B, 0xBE, 0x0A, 0x29, 0x14, 0xE2, 0xAA, + 0x82, 0x16, 0x15, 0x33, 0xDD, 0xB9, 0x1E, 0x10, 0x11, 0x5A, 0xCE, 0x29, + 0xCD, 0x2F, 0x2D, 0x9D, 0xAD, 0xF4, 0x24, 0xD4, 0xA0, 0x66, 0xBB, 0xB9, + 0x20, 0x87, 0x25, 0x7B, 0x90, 0x16, 0x47, 0xDF, 0x07, 0x1A, 0x43, 0xF9, + 0xC1, 0xC0, 0x73, 0xB8, 0x1F, 0x19, 0x69, 0x83, 0xF9, 0x03, 0x06, 0x88, + 0x87, 0x7F, 0x66, 0x67, 0x64, 0x14, 0x46, 0x65, 0xB7, 0x6E, 0x4F, 0x88, + 0x0E, 0xAB, 0x0A, 0x4F, 0xDB, 0x22, 0x4E, 0x9D, 0x03, 0x3D, 0x7E, 0xA1, + 0x5C, 0xE2, 0xBC, 0x6C, 0xC6, 0x46, 0x02, 0xB5, 0x65, 0xAA, 0x8C, 0x24, + 0x86, 0x9A, 0x88, 0x2C, 0x90, 0xAC, 0xB4, 0x72, 0xED, 0x98, 0xB1, 0xCD, + 0x99, 0x61, 0xE6, 0x0A, 0x55, 0x27, 0xF1, 0xF6, 0x80, 0xC3, 0xCD, 0xCF, + 0x44, 0xF8, 0x04, 0x69, 0x51, 0x42, 0xA8, 0x26, 0x98, 0x58, 0xD7, 0xB7, + 0x88, 0xB4, 0x41, 0x1A, 0x07, 0x8C, 0x7C, 0x96, 0x93, 0x08, 0xD1, 0x2B, + 0xA3, 0x9B, 0x09, 0x14, 0x2C, 0x2C, 0xB6, 0xD9, 0x40, 0x4F, 0x65, 0x45, + 0xF7, 0x6C, 0x94, 0x93, 0x3F, 0x34, 0xDC, 0x1E, 0xFD, 0xFC, 0xA2, 0x3E, + 0x1C, 0xEA, 0x41, 0x66, 0xB0, 0xF7, 0x77, 0x4B, 0xDF, 0x74, 0xD1, 0x54, + 0xA1, 0x7F, 0x2F, 0xF5, 0x44, 0x2F, 0xD2, 0xA9, 0x23, 0x9E, 0xF4, 0x70, + 0xE9, 0xC1, 0x27, 0xFE, 0x98, 0xDD, 0xF0, 0x08, 0x5A, 0x52, 0xCE, 0x10, + 0xC4, 0xE9, 0x4E, 0x47, 0x0A, 0xDB, 0x54, 0x36, 0xBD, 0x57, 0x71, 0x2D, + 0xF0, 0xA3, 0xD8, 0x84, 0xFE, 0x67, 0x3E, 0xE2, 0x4B, 0x20, 0xD0, 0xE3, + 0xF3, 0x8F, 0x58, 0xC7, 0x38, 0x8E, 0x8B, 0x8A, 0xD8, 0x96, 0x80, 0x26, + 0x80, 0x81, 0x64, 0x11, 0x11, 0x27, 0x17, 0xD3, 0xAD, 0x5B, 0xC2, 0xB3, + 0x32, 0xA4, 0xD3, 0xF4, 0x88, 0xFC, 0xF0, 0xE1, 0xB9, 0xBA, 0x86, 0x0B, + 0x0A, 0xB0, 0x9C, 0xD4, 0xCA, 0x29, 0x7D, 0x16, 0x91, 0xE2, 0x45, 0xCC, + 0xEE, 0x40, 0x02, 0xA6, 0xA7, 0x9F, 0xA8, 0x10, 0x79, 0xEF, 0xF7, 0xC2, + 0x3B, 0x2C, 0xFF, 0x92, 0xD8, 0x5D, 0x50, 0xE4, 0x1D, 0x61, 0x4B, 0x0D, + 0x5E, 0x1B, 0xD2, 0x39, 0x15, 0x7C, 0x91, 0x1C, 0xD3, 0x8C, 0x28, 0x95, + 0x3E, 0xBB, 0x79, 0x30, 0x3B, 0xD6, 0x1E, 0x39, 0x19, 0x8B, 0xB5, 0xD4, + 0x11, 0x39, 0xD1, 0x6D, 0xC9, 0x96, 0xD9, 0x8E, 0x09, 0xD7, 0x00, 0x17, + 0x45, 0x54, 0x93, 0xAC, 0xF8, 0x27, 0x0B, 0x1E, 0x6A, 0xBD, 0xEA, 0x25, + 0x1F, 0xD0, 0x77, 0x9C, 0xD4, 0x01, 0xC9, 0xB9, 0x66, 0x64, 0x25, 0x00, + 0xE9, 0xB2, 0x44, 0x3A, 0x09, 0x84, 0x09, 0x37, 0x0C, 0x65, 0x40, 0xA9, + 0x3F, 0x5D, 0xB2, 0xFF, 0xC2, 0xBB, 0x0F, 0x67, 0x62, 0x6C, 0x67, 0x60, + 0x14, 0x32, 0xD1, 0x96, 0x8D, 0x14, 0x8E, 0xC4, 0x49, 0xA4, 0x74, 0x30, + 0x01, 0xD8, 0xB9, 0x9B, 0xD4, 0x4E, 0x79, 0x34, 0x42, 0x2A, 0x46, 0xCB, + 0x25, 0xBE, 0x83, 0x24, 0x9E, 0x72, 0xCF, 0x32, 0xF1, 0x98, 0xEE, 0x97, + 0xCF, 0xD6, 0x5F, 0x7E, 0xA8, 0x4B, 0x02, 0x37, 0x65, 0x2D, 0xA0, 0xBF, + 0x07, 0x7A, 0x84, 0x61, 0xE3, 0xED, 0xB5, 0x3F, 0x49, 0x3C, 0x86, 0x2C, + 0xBB, 0x72, 0xAF, 0xDA, 0xD4, 0xE1, 0xA5, 0x3B, 0xC4, 0xE6, 0x24, 0x9E, + 0xD2, 0x48, 0x31, 0x22, 0x99, 0x18, 0x9B, 0x38, 0x23, 0x84, 0x49, 0x40, + 0x53, 0xAC, 0xAD, 0x66, 0x91, 0xBB, 0x47, 0xAE, 0x37, 0x3D, 0x9C, 0xB9, + 0x2C, 0xC7, 0x7E, 0x21, 0xCF, 0xD7, 0x1A, 0xA4, 0x02, 0x35, 0x20, 0xEB, + 0x47, 0x59, 0x1D, 0xB1, 0xB9, 0x50, 0xA8, 0x04, 0xEC, 0xEE, 0xCA, 0xAC, + 0xEC, 0x03, 0x11, 0x18, 0xF1, 0xA0, 0x25, 0x7B, 0x81, 0x2A, 0xA2, 0x90, + 0x6A, 0x84, 0x51, 0x67, 0x26, 0xDB, 0xD9, 0xD4, 0xD8, 0x5C, 0x8B, 0xBE, + 0x17, 0x11, 0x58, 0xF5, 0x6B, 0x0C, 0x55, 0x69, 0x49, 0x52, 0x5C, 0xC1, + 0x38, 0xD7, 0x86, 0x28, 0x5E, 0xCB, 0xFD, 0x47, 0x39, 0x4C, 0xE6, 0x72, + 0x47, 0x29, 0x99, 0x0B, 0x2A, 0xF0, 0x71, 0x20, 0x3F, 0xED, 0x8A, 0xA3, + 0xB1, 0x09, 0x82, 0x4B, 0xDA, 0xE4, 0x2B, 0xF8, 0x03, 0xFD, 0x4B, 0x2E, + 0x5A, 0xCB, 0x99, 0x17, 0x2F, 0xD0, 0x49, 0x71, 0xDE, 0x82, 0x69, 0xC8, + 0x14, 0x14, 0x4B, 0x7C, 0x61, 0x69, 0x09, 0x9D, 0xFA, 0xB8, 0x11, 0xFD, + 0xE0, 0xD6, 0xC8, 0x5D, 0xD0, 0xA7, 0x79, 0x9E, 0x42, 0x75, 0xFC, 0x42, + 0x65, 0xAA, 0x5D, 0x04, 0x5E, 0x8C, 0x8F, 0x2E, 0x8B, 0x83, 0x39, 0xD7, + 0x07, 0xB9, 0xC3, 0x52, 0x15, 0x2C, 0x50, 0xA2, 0xDF, 0xAE, 0x57, 0x35, + 0x95, 0x46, 0xB9, 0x6B, 0x62, 0x66, 0x78, 0xAF, 0x73, 0x92, 0x08, 0xB3, + 0xB7, 0x8C, 0x8F, 0x11, 0x7A, 0xA6, 0xF4, 0xCC, 0x90, 0x3A, 0x24, 0xB1, + 0x95, 0x50, 0xD3, 0x93, 0x2A, 0xAB, 0xE6, 0x9C, 0xC7, 0xC8, 0xEA, 0xCD, + 0x11, 0x86, 0x4B, 0x92, 0x5B, 0x67, 0xB9, 0x64, 0xD5, 0x75, 0x02, 0x98, + 0x24, 0x2B, 0xAF, 0x5C, 0x89, 0xF2, 0x27, 0x04, 0x8B, 0x38, 0x81, 0x0A, + 0x9E, 0xF4, 0xAE, 0x4A, 0xC9, 0x36, 0x64, 0x15, 0xBA, 0xDB, 0xFC, 0xDD, + 0xA6, 0xF1, 0xDF, 0x96, 0xA0, 0x96, 0xD4, 0x11, 0x0B, 0x86, 0x7A, 0xD1, + 0x0E, 0x46, 0x5F, 0x59, 0x3C, 0x4B, 0x2C, 0x29, 0xB3, 0x01, 0xE3, 0x41, + 0xA2, 0xF9, 0x45, 0xED, 0xF4, 0x19, 0xA8, 0x8D, 0x4D, 0x10, 0x4A, 0xF1, + 0xF5, 0x68, 0x65, 0x7D, 0x1E, 0x69, 0x60, 0x67, 0x23, 0x44, 0xF5, 0x84, + 0x4E, 0xD4, 0x60, 0x70, 0xB2, 0x0F, 0x33, 0xC2, 0x33, 0xA9, 0xE7, 0x91, + 0x2B, 0xE2, 0x47, 0x8E, 0xFE, 0xCB, 0x32, 0x18, 0x84, 0x03, 0x9F, 0xA2, + 0x9E, 0xB2, 0x44, 0xCB, 0xB5, 0x96, 0xE1, 0x0A, 0x34, 0xF4, 0x61, 0xAC, + 0x8A, 0x47, 0x30, 0x5D, 0x70, 0xBA, 0x1E, 0xE5, 0x2B, 0xAC, 0x3E, 0x9D, + 0xF8, 0x6A, 0x10, 0x76, 0x73, 0x07, 0xEC, 0xC1, 0x7F, 0xBA, 0x6A, 0x8C, + 0xB5, 0x33, 0xD3, 0x49, 0x4B, 0x3B, 0x4F, 0xDD, 0x7F, 0x4C, 0x1B, 0x96, + 0x4A, 0x56, 0x7C, 0xDB, 0x64, 0x62, 0xD6, 0xA0, 0x94, 0xA2, 0x8E, 0xCE, + 0xED, 0x9F, 0xEA, 0xF7, 0xD7, 0xDB, 0x2B, 0x7C, 0x9B, 0x17, 0x80, 0x56, + 0xD2, 0x8A, 0x16, 0x66, 0x40, 0x30, 0xF0, 0xA0, 0xB5, 0xDF, 0xB8, 0x2C, + 0xE9, 0xF1, 0x95, 0xF1, 0x76, 0x40, 0x42, 0x73, 0x17, 0x78, 0xF6, 0x94, + 0xC5, 0x7C, 0xB8, 0x47, 0xBA, 0xEC, 0x00, 0xBD, 0x1D, 0x4C, 0x10, 0xDD, + 0x30, 0xDF, 0xFA, 0x83, 0x49, 0xC8, 0x26, 0xA8, 0xEA, 0x2D, 0x86, 0x17, + 0x2F, 0xD9, 0x19, 0xE1, 0x5C, 0x33, 0x53, 0xB1, 0xA4, 0x15, 0x50, 0xF3, + 0xC4, 0x30, 0xC1, 0x33, 0x3E, 0x10, 0x09, 0x5A, 0xE6, 0x3D, 0xE5, 0x48, + 0xA6, 0x4D, 0xBC, 0xF3, 0x69, 0xA6, 0x88, 0xED, 0x95, 0x81, 0x3F, 0x38, + 0xFD, 0x12, 0xDC, 0xFB, 0xDE, 0x6B, 0x46, 0xA6, 0xC0, 0x38, 0xDE, 0xFC, + 0x50, 0xAA, 0x0A, 0xC1, 0x24, 0x39, 0x0D, 0xA5, 0x56, 0x8B, 0xC6, 0x8D, + 0x9E, 0xD2, 0xF4, 0x6B, 0x42, 0xCE, 0x02, 0x40, 0xF1, 0xC1, 0xBF, 0x48, + 0x6B, 0x25, 0x71, 0x5A, 0x7E, 0xBB, 0xC8, 0xAC, 0x51, 0x6F, 0xE9, 0x8F, + 0x4C, 0x41, 0x09, 0x4B, 0x8F, 0x37, 0xC2, 0xC2, 0x93, 0x7F, 0x67, 0x2E, + 0xE4, 0x24, 0x18, 0x2A, 0xF5, 0x73, 0xFD, 0xBB, 0xC9, 0xEC, 0x15, 0xA8, + 0x8A, 0xA5, 0xD1, 0x31, 0x7D, 0xB7, 0x22, 0xB9, 0xC8, 0x07, 0xC0, 0xE0, + 0xFE, 0x83, 0x20, 0x01, 0x53, 0x6B, 0x7D, 0x0B, 0x80, 0xA9, 0xD3, 0x8A, + 0x72, 0x91, 0xA8, 0x00, 0x82, 0x2E, 0xDF, 0xBC, 0x57, 0x63, 0x98, 0x45, + 0xF6, 0x2A, 0x5D, 0x97, 0x0F, 0xC0, 0x03, 0x51, 0xCE, 0xA3, 0x12, 0x2E, + 0xE3, 0x4B, 0x63, 0x35, 0x78, 0xE7, 0xEA, 0x87, 0xEB, 0x70, 0x82, 0x3B, + 0xE1, 0xC5, 0x23, 0x2D, 0x7C, 0x00, 0x00, 0x03, 0x01, 0x95, 0x29, 0xBE, + 0xB6, 0xDC, 0xF6, 0x58, 0x50, 0xFE, 0xCE, 0xF7, 0xF7, 0x52, 0x3D, 0xB7, + 0xED, 0x89, 0xC1, 0x6B, 0x00, 0x2B, 0x45, 0x0E, 0x10, 0x47, 0x0B, 0xC0, + 0xB7, 0xBF, 0x75, 0xAA, 0x4E, 0x32, 0xD5, 0xD9, 0x1A, 0x9C, 0x51, 0xC5, + 0x17, 0x26, 0x6F, 0x2B, 0xFB, 0xF0, 0xBD, 0x7B, 0xEA, 0x99, 0xC9, 0xF2, + 0x32, 0x25, 0x4E, 0x63, 0x87, 0x86, 0xA9, 0xE0, 0xE9, 0x1E, 0x78, 0xE7, + 0xBA, 0x95, 0xB0, 0xE5, 0x67, 0x3D, 0x9A, 0xDC, 0xA9, 0x17, 0xD8, 0xDA, + 0x28, 0x8D, 0x20, 0x4E, 0xDC, 0x65, 0x3B, 0xFA, 0x95, 0x05, 0x5B, 0x3F, + 0xF9, 0xFE, 0x9F, 0x74, 0x5A, 0xCB, 0x93, 0x82, 0x0A, 0x96, 0xFB, 0xA3, + 0x64, 0x76, 0x59, 0x7D, 0x28, 0xBA, 0x9D, 0xE4, 0x40, 0x9B, 0xB1, 0x92, + 0x52, 0xD9, 0x29, 0x2E, 0x75, 0x93, 0xE2, 0x84, 0x0B, 0x18, 0x00, 0x7C, + 0xAF, 0x5D, 0xDA, 0xE9, 0x78, 0x00, 0xBD, 0xC5, 0x2D, 0xB2, 0xCA, 0x6B, + 0xDD, 0xFB, 0x1F, 0xD4, 0xD7, 0x6A, 0xBE, 0x22, 0x9D, 0x8C, 0x13, 0x50, + 0x8E, 0x8C, 0x07, 0xFB, 0x5B, 0x70, 0x16, 0xF3, 0xFE, 0x48, 0x4F, 0xF5, + 0x08, 0xF5, 0x96, 0xDE, 0x20, 0xDA, 0x4F, 0xEC, 0xFD, 0xD4, 0x83, 0x48, + 0x5A, 0xA4, 0x32, 0xE0, 0xBC, 0xA9, 0xC5, 0xCB, 0x33, 0x61, 0xA0, 0xBE, + 0x66, 0x8C, 0xF7, 0x10, 0x60, 0xD8, 0xC4, 0xB4, 0xBA, 0xD3, 0x8A, 0x0C, + 0x8F, 0x86, 0x09, 0x7A, 0x95, 0x5C, 0x07, 0x06, 0xCD, 0xDF, 0xC7, 0xD0, + 0x58, 0x9C, 0xFB, 0xC9, 0x42, 0x39, 0x84, 0x32, 0xD6, 0x07, 0x0F, 0x83, + 0x89, 0x91, 0x35, 0x40, 0x03, 0x9A, 0x1D, 0x53, 0x5F, 0x53, 0xF0, 0xD7, + 0xDB, 0xDE, 0xAB, 0x5E, 0x97, 0xAF, 0x6D, 0x43, 0x01, 0xB0, 0x74, 0x49, + 0x8E, 0x81, 0xE5, 0xA6, 0x08, 0xAC, 0xEC, 0x92, 0xE9, 0x99, 0xC7, 0xBD, + 0xB4, 0x0E, 0x95, 0x6E, 0xDA, 0x68, 0x6D, 0x24, 0x35, 0xE5, 0x11, 0x42, + 0x11, 0xCA, 0x1B, 0x49, 0x5C, 0x5C, 0x8D, 0x29, 0x1D, 0xBB, 0xD3, 0x81, + 0x65, 0x78, 0xA3, 0x85, 0x80, 0x2E, 0x73, 0xEE, 0x61, 0x88, 0x51, 0xBB, + 0x6B, 0x73, 0x14, 0xBA, 0x64, 0x5A, 0x67, 0xE6, 0x9C, 0xD8, 0x99, 0x57, + 0x4D, 0xC2, 0xA3, 0xF6, 0x30, 0x39, 0xA8, 0x47, 0xBE, 0x7C, 0xB1, 0xF9, + 0x46, 0xD7, 0x73, 0x64, 0x21, 0x94, 0xC5, 0xCC, 0x6E, 0xAC, 0xCC, 0xE6, + 0x57, 0x25, 0x4D, 0x94, 0xDE, 0x87, 0x4F, 0xEB, 0x05, 0x93, 0x85, 0x83, + 0xC2, 0xA0, 0xDD, 0x5D, 0x21, 0xB7, 0x7A, 0xDD, 0x63, 0x27, 0x46, 0xE0, + 0x05, 0xE7, 0xA4, 0x20, 0xAE, 0x37, 0x6E, 0xD8, 0x41, 0x17, 0x73, 0x8F, + 0x25, 0x8A, 0x96, 0xD5, 0x4A, 0x8E, 0x3D, 0x2D, 0x9F, 0x59, 0x24, 0x3E, + 0xE0, 0x01, 0x47, 0x93, 0x5F, 0xE6, 0x43, 0xFE, 0x4C, 0xE4, 0x2A, 0xB6, + 0xAE, 0xC5, 0x18, 0x98, 0xB5, 0x95, 0x43, 0xF9, 0x7C, 0x2E, 0x80, 0xBF, + 0x7A, 0x7F, 0x94, 0xC9, 0xC8, 0x13, 0xA3, 0x14, 0x76, 0x49, 0xDC, 0xC6, + 0x22, 0x10, 0xBD, 0xB5, 0x8B, 0x7E, 0xB9, 0x8A, 0x41, 0xB7, 0xBB, 0x0F, + 0xA0, 0x80, 0x9F, 0xFE, 0x68, 0x02, 0x76, 0xA3, 0xCA, 0x9A, 0x7A, 0x39, + 0xB5, 0x3A, 0x45, 0x45, 0x38, 0x73, 0x50, 0xB6, 0xF9, 0xFC, 0xCB, 0xDB, + 0x9B, 0x07, 0xA0, 0x61, 0x99, 0xFE, 0xA6, 0xBE, 0x52, 0xB8, 0xF7, 0x6F, + 0x93, 0x81, 0xEB, 0x2F, 0x02, 0xC2, 0x13, 0x7C, 0x29, 0x43, 0xA5, 0x65, + 0x9C, 0xB8, 0xF2, 0x64, 0xAB, 0x2D, 0xFD, 0x00, 0x38, 0x53, 0xE9, 0x4C, + 0xCC, 0xB6, 0x17, 0x0C, 0x0B, 0xE8, 0x1A, 0xCF, 0x4C, 0xBB, 0x5A, 0xA5, + 0x8E, 0x92, 0xAD, 0x1F, 0x87, 0xF8, 0xCD, 0xFE, 0x9C, 0x81, 0x68, 0xC6, + 0xF1, 0x7B, 0xED, 0x82, 0x9F, 0xA7, 0xD5, 0x5C, 0xC8, 0x52, 0x3A, 0xD9, + 0xFF, 0x09, 0xB4, 0xDE, 0x05, 0x6E, 0x5D, 0x62, 0x8F, 0x15, 0x2C, 0xD5, + 0x4E, 0x09, 0x00, 0x33, 0xBF, 0xD9, 0x21, 0x61, 0x99, 0x66, 0xC2, 0xB5, + 0x50, 0x2A, 0x0D, 0xD5, 0xF3, 0x02, 0x59, 0x6F, 0xEA, 0x4C, 0x83, 0x68, + 0xDC, 0x58, 0xF9, 0xA9, 0xA2, 0x24, 0x0C, 0xAE, 0x7D, 0x36, 0x00, 0x1E, + 0x1E, 0x32, 0x2F, 0x1B, 0xF0, 0xB2, 0x62, 0xE9, 0x71, 0x67, 0x32, 0x46, + 0xCD, 0x02, 0x8A, 0xFB, 0x69, 0xA0, 0x07, 0x22, 0xBE, 0xC1, 0x0C, 0x5F, + 0xFF, 0x95, 0x3A, 0x2F, 0x61, 0x1B, 0x05, 0xEF, 0xFA, 0xC0, 0x65, 0x11, + 0x87, 0x72, 0x6B, 0xAD, 0xC6, 0x50, 0x72, 0xEE, 0x4A, 0x4B, 0xFE, 0x01, + 0x7B, 0xD6, 0xBC, 0xDE, 0xF0, 0x8E, 0x24, 0x89, 0x20, 0xD0, 0x53, 0xAE, + 0x1E, 0xFB, 0x61, 0xC3, 0x17, 0x34, 0x98, 0x15, 0xAD, 0x88, 0x03, 0x9C, + 0x48, 0xCD, 0xE5, 0xF2, 0xB0, 0x4D, 0x39, 0x27, 0x2B, 0x90, 0x0A, 0x55, + 0x12, 0x06, 0x88, 0x13, 0x09, 0x1F, 0x55, 0x9A, 0xA0, 0xBC, 0x88, 0x8E, + 0xC6, 0x18, 0x43, 0x73, 0x0D, 0x73, 0x26, 0x83, 0x4C, 0x1A, 0x87, 0x80, + 0x43, 0xCC, 0x65, 0xEB, 0xBE, 0x72, 0xD4, 0xAA, 0x44, 0xC7, 0xEE, 0x5B, + 0x1A, 0xA5, 0x3D, 0x59, 0xBE, 0x5A, 0x0D, 0x7B, 0xFC, 0xB4, 0x75, 0xD0, + 0xAF, 0xD8, 0x1C, 0x30, 0xDA, 0x38, 0xAD, 0x9E, 0x25, 0x32, 0xDB, 0xFF, + 0xF9, 0xAD, 0x73, 0x6B, 0x17, 0x96, 0xBD, 0x5C, 0x84, 0xCF, 0xAF, 0x75, + 0x9D, 0xD0, 0x12, 0x9E, 0xC8, 0x27, 0x51, 0x67, 0x47, 0x87, 0xE1, 0xDE, + 0xAE, 0xAB, 0x50, 0x4E, 0x39, 0xAD, 0xD2, 0x96, 0x71, 0xD4, 0x7C, 0x07, + 0x57, 0xEA, 0x9D, 0x51, 0x1F, 0x16, 0xBE, 0xFF, 0x87, 0x56, 0x7B, 0x3D, + 0x5F, 0xCD, 0x6A, 0xAE, 0x36, 0x6C, 0x8E, 0x88, 0xE8, 0x0A, 0x5E, 0x58, + 0xB8, 0x66, 0x92, 0xCC, 0xF3, 0x66, 0x2C, 0x54, 0xFA, 0x95, 0xAC, 0xE0, + 0xDC, 0xEA, 0x62, 0x42, 0x60, 0xC8, 0xAB, 0x1E, 0xEF, 0x24, 0x8B, 0x25, + 0xF9, 0x99, 0x85, 0xE6, 0xB4, 0x70, 0xF0, 0x1A, 0x00, 0xCC, 0x54, 0x3C, + 0xE0, 0xF2, 0x6D, 0xEB, 0x8B, 0x65, 0x03, 0xB8, 0x85, 0x03, 0x2F, 0x91, + 0x66, 0x63, 0x11, 0xE1, 0x06, 0x90, 0x82, 0xCB, 0xA2, 0x80, 0xB2, 0x73, + 0xF0, 0x00, 0x21, 0x31, 0x21, 0xF7, 0x41, 0xD6, 0xE2, 0x25, 0x9A, 0xDC, + 0x96, 0x77, 0x9A, 0xBB, 0x19, 0x8B, 0xD8, 0x55, 0x6F, 0x57, 0x32, 0xEF, + 0xC7, 0x8E, 0x37, 0x36, 0x3B, 0x00, 0x20, 0xEF, 0x81, 0x0C, 0xB1, 0xD9, + 0xF7, 0x5D, 0x3C, 0x5F, 0x97, 0x92, 0x75, 0x6B, 0xF6, 0xFB, 0x0A, 0x76, + 0x5F, 0x9C, 0x50, 0x9F, 0xAF, 0xEE, 0xE0, 0xF7, 0xB6, 0x84, 0xD0, 0x57, + 0x77, 0x11, 0x3B, 0xE6, 0x55, 0x15, 0x33, 0xE5, 0x48, 0x05, 0xBE, 0xD6, + 0xDC, 0x03, 0xDF, 0x81, 0x42, 0xDD, 0xF0, 0x40, 0x36, 0x55, 0xDF, 0xD2, + 0xB2, 0xA5, 0xA9, 0x33, 0x1F, 0x3B, 0x4F, 0xDA, 0x15, 0xC3, 0xAC, 0xE9, + 0xF6, 0xD8, 0xCC, 0xB1, 0xCC, 0xB8, 0x4C, 0xE6, 0x05, 0xCB, 0x95, 0x1D, + 0xFD, 0xD3, 0xC8, 0xEB, 0xF4, 0x89, 0x2A, 0xC0, 0xCD, 0xBA, 0x60, 0xB8, + 0xA0, 0x10, 0xB1, 0x86, 0x45, 0xF5, 0x91, 0xBF, 0x6E, 0x81, 0xF9, 0x04, + 0xBD, 0xD1, 0x7E, 0xCE, 0x42, 0x72, 0xC7, 0xF7, 0x57, 0xD6, 0x44, 0x19, + 0xC2, 0x21, 0xC1, 0x47, 0xD9, 0x1E, 0xFE, 0x20, 0x0D, 0x41, 0xFC, 0x9E, + 0xAE, 0xDF, 0xCD, 0x89, 0x08, 0x30, 0xF2, 0x51, 0x65, 0xF7, 0x25, 0x6E, + 0xA9, 0xFD, 0x2B, 0xE0, 0xAB, 0x07, 0x84, 0x86, 0xA9, 0xE5, 0x3C, 0x9F, + 0xED, 0x36, 0xCA, 0xDC, 0x8A, 0xA8, 0xCC, 0x73, 0xFF, 0x57, 0xCD, 0xC1, + 0xA5, 0x5A, 0x64, 0x0C, 0xB2, 0xCE, 0x47, 0xC5, 0x8D, 0x1D, 0xD4, 0xC0, + 0x82, 0xC7, 0x7E, 0x9C, 0xD5, 0x49, 0xBC, 0x73, 0xC4, 0x27, 0xC2, 0xDA, + 0xC7, 0xF9, 0xDA, 0xCA, 0xAB, 0xBB, 0xA2, 0x7F, 0xBF, 0xA8, 0x71, 0xE1, + 0x79, 0x7F, 0xFC, 0x15, 0xBA, 0x2A, 0x38, 0x9D, 0xF1, 0xA8, 0x16, 0xB5, + 0xF1, 0x66, 0xA7, 0x4F, 0xC2, 0xCC, 0xBF, 0x2B, 0x2E, 0x94, 0x91, 0xBD, + 0x31, 0xFD, 0xD5, 0xA7, 0xDB, 0x3B, 0x76, 0x29, 0x38, 0x63, 0xD2, 0x51, + 0x24, 0x72, 0x2D, 0x14, 0x86, 0xBC, 0x03, 0x1E, 0xA0, 0xF4, 0x02, 0x57, + 0xE4, 0xAA, 0x89, 0xC5, 0x60, 0x5D, 0x6D, 0x8D, 0x42, 0x76, 0x86, 0xB9, + 0xA1, 0xBE, 0xA4, 0x4D, 0xD2, 0xAD, 0x97, 0x24, 0xE7, 0xE1, 0xF3, 0xF0, + 0x47, 0xF1, 0xCB, 0x61, 0xF6, 0x49, 0x88, 0xC1, 0x62, 0x78, 0x8A, 0xD4, + 0xC9, 0x59, 0x01, 0xC1, 0x2A, 0x1A, 0x8F, 0x6F, 0x96, 0xD0, 0x40, 0x68, + 0x2F, 0x80, 0x20, 0xB0, 0xC2, 0xF1, 0x4A, 0xBD, 0x51, 0xE2, 0x38, 0x07, + 0xC1, 0x63, 0x00, 0xEC, 0x7B, 0x44, 0xE0, 0x4A, 0x3E, 0x49, 0xE8, 0xD4, + 0x2F, 0x84, 0xBD, 0xB2, 0xF2, 0x7E, 0xFD, 0xF0, 0xB3, 0x2E, 0x40, 0xC4, + 0x57, 0x0E, 0x9C, 0xF5, 0xA4, 0x90, 0xA2, 0x7F, 0xCE, 0x6F, 0xFD, 0xE1, + 0x0E, 0xE4, 0xF1, 0x4C, 0x99, 0x43, 0xEB, 0xE4, 0x96, 0xF8, 0x5E, 0xC3, + 0x90, 0x38, 0x7C, 0xD0, 0x5C, 0x6C, 0x15, 0xEE, 0x5B, 0xD5, 0x7E, 0xD2, + 0x74, 0x83, 0xF6, 0x21, 0x02, 0xF9, 0x5C, 0x4C, 0xA4, 0xA6, 0x77, 0xC4, + 0xFD, 0x90, 0xB1, 0x43, 0x82, 0x25, 0x1D, 0xCE, 0x51, 0x3E, 0xB1, 0xC7, + 0x14, 0x57, 0x44, 0x94, 0x10, 0x0E, 0xD7, 0x12, 0xFC, 0x7C, 0xD8, 0x8E, + 0xFB, 0xD0, 0xC3, 0x96, 0x78, 0x55, 0x63, 0xE6, 0x41, 0x24, 0x5E, 0xAA, + 0x75, 0xEA, 0xB9, 0xB6, 0x67, 0x28, 0x74, 0x0D, 0xD7, 0x91, 0x2B, 0xAF, + 0xF1, 0x27, 0x57, 0xA3, 0xFB, 0x76, 0xCB, 0x56, 0x02, 0x4A, 0xE7, 0x3A, + 0xFF, 0xB2, 0x12, 0x36, 0xF7, 0xE5, 0x41, 0x88, 0x28, 0x6C, 0xBA, 0x7D, + 0x43, 0x40, 0xCB, 0xFF, 0x19, 0xFA, 0x0B, 0x32, 0x0B, 0xE0, 0x6B, 0x14, + 0xE0, 0xF6, 0x54, 0xA7, 0x24, 0x13, 0xEC, 0x41, 0x08, 0xCC, 0x5B, 0x5A, + 0xE0, 0x38, 0xFA, 0xD9, 0x8F, 0xC8, 0x83, 0x25, 0x10, 0xD2, 0x16, 0x2B, + 0x05, 0x10, 0xAC, 0x5D, 0xB8, 0xBE, 0x22, 0x59, 0xB8, 0x04, 0xE9, 0x78, + 0x3C, 0xE2, 0x6B, 0xD8, 0x9C, 0xDB, 0x02, 0x1B, 0xA1, 0xB8, 0x0D, 0x20, + 0x87, 0x7F, 0xD2, 0x8A, 0x0F, 0xD7, 0x02, 0xE4, 0xE4, 0xC4, 0xF6, 0x95, + 0xF2, 0xB2, 0x1B, 0xDC, 0x03, 0x22, 0xCB, 0xDD, 0x00, 0x32, 0x57, 0x5A, + 0xB6, 0xBA, 0xD7, 0x80, 0x40, 0xFA, 0xC6, 0xA7, 0x29, 0x20, 0x8C, 0x97, + 0x3D, 0x46, 0x53, 0xD5, 0xDE, 0xDE, 0x77, 0x40, 0x0D, 0x20, 0x99, 0x88, + 0x34, 0xB0, 0x6F, 0xCB, 0x95, 0xD4, 0x34, 0xF6, 0x48, 0x1B, 0x4A, 0xDE, + 0x67, 0x4A, 0x82, 0xD9, 0x8F, 0xCB, 0xB5, 0xD0, 0x93, 0xA1, 0xC0, 0xE7, + 0x46, 0x57, 0xF3, 0x24, 0x3E, 0x17, 0x0D, 0xF3, 0x36, 0xE1, 0xF8, 0xD3, + 0xD0, 0xA2, 0x25, 0xF6, 0xDF, 0x2F, 0xE0, 0xB7, 0x30, 0x78, 0xD5, 0x27, + 0x70, 0xEE, 0xBC, 0x67, 0x4B, 0xD8, 0x4A, 0x26, 0x5D, 0xB1, 0x29, 0x67, + 0xAA, 0x00, 0xEA, 0x4F, 0xB9, 0x82, 0x0D, 0xCC, 0x1D, 0x27, 0xF0, 0x30, + 0x4D, 0x88, 0xB5, 0x52, 0xF6, 0x37, 0xAE, 0xA7, 0xB2, 0xEF, 0xAD, 0x41, + 0x01, 0xF3, 0x25, 0x69, 0xAD, 0x40, 0xA7, 0x82, 0x16, 0x87, 0x87, 0xCC, + 0x36, 0x1E, 0x16, 0x76, 0x78, 0x0D, 0xC9, 0x76, 0x5D, 0xB1, 0xC3, 0x9B, + 0xC4, 0x56, 0x07, 0xD2, 0x5C, 0xB3, 0x9C, 0x9E, 0xD5, 0x6D, 0x1B, 0x46, + 0x39, 0x5B, 0x7E, 0xA2, 0x52, 0x54, 0x53, 0xC2, 0x3D, 0x40, 0x26, 0x0A, + 0xFD, 0x4A, 0xA1, 0x7E, 0xE2, 0x9B, 0x1D, 0x54, 0x47, 0x94, 0x00, 0x9A, + 0xE4, 0x77, 0x69, 0x7D, 0x0C, 0x5F, 0x9D, 0x76, 0xE1, 0x1D, 0x41, 0x56, + 0xC1, 0x3C, 0x73, 0x23, 0xCB, 0x93, 0xF0, 0xC3, 0x16, 0x41, 0x24, 0x64, + 0xC6, 0x7A, 0x9D, 0x5D, 0x1B, 0xC6, 0x8A, 0x9B, 0x40, 0x18, 0xF2, 0xDC, + 0x70, 0x93, 0x93, 0x1C, 0xE6, 0xD4, 0x6A, 0xB3, 0x8F, 0x9B, 0xB6, 0x83, + 0xE9, 0x34, 0x24, 0xD0, 0x88, 0xB5, 0x54, 0x37, 0xAD, 0x5A, 0xB3, 0x23, + 0xFF, 0xB0, 0x09, 0xA5, 0x89, 0xBF, 0xE4, 0xF0, 0xFA, 0x27, 0x93, 0xCC, + 0x33, 0xC6, 0x7F, 0xA6, 0xEE, 0x96, 0x28, 0xFA, 0x4C, 0x37, 0xB6, 0xA7, + 0x8A, 0x52, 0xDF, 0x7E, 0x51, 0xCD, 0xEE, 0x40, 0x9C, 0x6F, 0x21, 0x8F, + 0x0C, 0x9D, 0xD1, 0x70, 0x1F, 0x0F, 0xA7, 0x22, 0xA4, 0x24, 0xD3, 0xCA, + 0x8E, 0x21, 0xD3, 0x03, 0x91, 0xD0, 0x36, 0x71, 0x4B, 0x4B, 0xC0, 0xFC, + 0x7C, 0x92, 0x0A, 0x15, 0x91, 0xEB, 0x10, 0x7B, 0xCD, 0xFA, 0xD6, 0xB6, + 0x04, 0x1F, 0x89, 0xC3, 0x8B, 0x43, 0x9D, 0x26, 0x65, 0x34, 0x00, 0x34, + 0x5C, 0xA8, 0x0A, 0x7F, 0xCA, 0x6A, 0x4C, 0x1C, 0x7C, 0xFA, 0xA2, 0x6D, + 0x42, 0x67, 0x33, 0xC6, 0xDE, 0x5F, 0x4D, 0xB8, 0xD4, 0xD4, 0xDF, 0xCC, + 0x10, 0x2B, 0x58, 0xF6, 0xE1, 0x8E, 0x8F, 0xF2, 0xC1, 0x8C, 0x18, 0xA8, + 0x41, 0xB4, 0xA7, 0x9F, 0xE7, 0x8A, 0x16, 0x8D, 0x7B, 0x54, 0x81, 0x54, + 0x87, 0x98, 0x4C, 0x20, 0x45, 0xC5, 0xE4, 0xFB, 0xCE, 0xF9, 0xD0, 0x0B, + 0xC9, 0xC0, 0x15, 0x77, 0xDD, 0x0F, 0x23, 0x19, 0x40, 0x00, 0x07, 0x6E, + 0xB0, 0x5C, 0xC4, 0x85, 0xB9, 0x35, 0xA2, 0x77, 0x35, 0x28, 0x2B, 0xC0, + 0x61, 0x91, 0x6C, 0x5E, 0xF6, 0xBD, 0x74, 0x70, 0x77, 0x33, 0xF9, 0x38, + 0xD2, 0x6D, 0x2F, 0xE9, 0x01, 0x9A, 0x10, 0x5A, 0x20, 0x6B, 0x7F, 0xE5, + 0xD9, 0x8C, 0x25, 0x17, 0x5F, 0x0E, 0xED, 0x99, 0x8A, 0x2B, 0xA3, 0x0E, + 0xA3, 0x7E, 0xE0, 0x7A, 0x4A, 0x79, 0xF3, 0xED, 0x71, 0x31, 0x2B, 0x53, + 0x8A, 0xE6, 0xFC, 0x01, 0x85, 0xD0, 0x7F, 0xFE, 0x22, 0x96, 0x47, 0x6C, + 0x48, 0x41, 0x1A, 0xF2, 0x39, 0x4F, 0x16, 0x67, 0x4C, 0x2E, 0x00, 0xE1, + 0x86, 0x0D, 0xA1, 0x2E, 0x99, 0x2C, 0xA3, 0xEE, 0xB8, 0x21, 0x85, 0x84, + 0x20, 0x0A, 0xA9, 0x64, 0xD1, 0xBC, 0x79, 0xCC, 0x81, 0xDE, 0x83, 0x55, + 0x71, 0x5C, 0x26, 0x01, 0x99, 0x01, 0xFD, 0x40, 0x39, 0xFF, 0x66, 0xE9, + 0x2D, 0x80, 0xFE, 0x44, 0x97, 0x1D, 0x73, 0xEB, 0x18, 0x47, 0x6B, 0x9D, + 0xEA, 0x73, 0x0A, 0xD3, 0xB8, 0xEC, 0x8F, 0xC2, 0x2D, 0x2B, 0x99, 0x73, + 0x4C, 0xA9, 0x08, 0x06, 0x33, 0xAC, 0x05, 0x6F, 0x37, 0x79, 0xEE, 0xA9, + 0x28, 0x2F, 0x9C, 0x24, 0x55, 0x12, 0x59, 0xBA, 0x73, 0xFC, 0x05, 0xD7, + 0xA1, 0x01, 0x30, 0xE3, 0x23, 0x4B, 0x3E, 0xB4, 0x6C, 0xCE, 0xDB, 0x8A, + 0x28, 0xC1, 0xF0, 0x76, 0xA2, 0x56, 0x60, 0x22, 0x0F, 0x86, 0x77, 0x5C, + 0xA7, 0xA2, 0xC7, 0x1C, 0xAF, 0x08, 0x65, 0x77, 0xBC, 0x0A, 0x03, 0xF2, + 0x49, 0x93, 0xA6, 0x4D, 0x4C, 0x91, 0x6C, 0xB7, 0x6B, 0x6B, 0x28, 0xF1, + 0x54, 0xC7, 0x70, 0xBF, 0x26, 0xC6, 0x71, 0x07, 0x7D, 0x13, 0x62, 0x03, + 0xE3, 0x99, 0xF6, 0xC2, 0x20, 0x7B, 0x5E, 0xD1, 0x85, 0x49, 0xB7, 0xB8, + 0x6B, 0x79, 0xE3, 0xDF, 0x5C, 0x45, 0xE0, 0xF1, 0xF3, 0x78, 0x0D, 0x9C, + 0x85, 0xD5, 0x74, 0x34, 0x2B, 0xEC, 0x3C, 0xD3, 0xEA, 0xDB, 0x67, 0x0D, + 0x86, 0x80, 0x00, 0x64, 0x0A, 0xB0, 0x6B, 0x84, 0x7A, 0x44, 0x3A, 0x4B, + 0x68, 0xBE, 0xA9, 0x48, 0x9A, 0x2B, 0x58, 0x9E, 0xF3, 0xC2, 0x50, 0xBF, + 0xBD, 0xAA, 0x5F, 0x39, 0x1C, 0xE8, 0x7C, 0x90, 0x2D, 0x50, 0x5E, 0x5D, + 0xCE, 0x4A, 0xCF, 0xCD, 0xBE, 0x45, 0xA7, 0x17, 0xBA, 0x3C, 0xEC, 0xB4, + 0x72, 0x1C, 0x82, 0xC2, 0xB0, 0xEB, 0x67, 0x44, 0x44, 0x87, 0x4C, 0xD3, + 0x98, 0xD0, 0x3E, 0x49, 0x87, 0xF5, 0xDA, 0x95, 0x95, 0xC2, 0x7D, 0xF3, + 0x91, 0xE7, 0x09, 0xD5, 0x7A, 0x1A, 0xCA, 0x91, 0xE3, 0x5B, 0x37, 0x9E, + 0xBE, 0x1F, 0x9D, 0x0E, 0x62, 0x75, 0xD9, 0x6F, 0x9E, 0xA7, 0x53, 0x5E, + 0x6F, 0x75, 0x1C, 0x3C, 0x51, 0xF7, 0xBF, 0x74, 0x40, 0xBB, 0xEA, 0x3A, + 0x70, 0xF3, 0xB4, 0x89, 0xC2, 0x45, 0xF7, 0x12, 0x53, 0x24, 0x40, 0xCF, + 0xE4, 0x41, 0x5A, 0x01, 0x53, 0x3B, 0x38, 0xB0, 0x66, 0x5F, 0x93, 0xFB, + 0xC8, 0xCA, 0xDE, 0x1E, 0x41, 0x91, 0x58, 0x6C, 0x23, 0x7D, 0x83, 0x29, + 0x4C, 0xD1, 0xB7, 0xAF, 0xBA, 0xF7, 0xC6, 0xF2, 0xD2, 0xE0, 0xDF, 0xC4, + 0x22, 0x2F, 0xE4, 0xB1, 0xA9, 0x11, 0x96, 0x60, 0xEC, 0xC2, 0x72, 0xC8, + 0x63, 0x20, 0x25, 0x35, 0x64, 0xCB, 0x45, 0xA5, 0x68, 0xD7, 0xA1, 0x83, + 0xF3, 0xFD, 0x3F, 0xFB, 0x10, 0xD0, 0x9F, 0x26, 0x74, 0x85, 0x80, 0xC2, + 0x39, 0xC6, 0x22, 0x08, 0xE9, 0x37, 0xE6, 0x05, 0x34, 0xF7, 0x21, 0x92, + 0x7C, 0x0B, 0x2B, 0x21, 0x97, 0x39, 0x6A, 0x5B, 0x63, 0x27, 0x47, 0x25, + 0x37, 0x9D, 0xBE, 0x47, 0x13, 0xAC, 0xEA, 0x77, 0xD2, 0xB3, 0x8C, 0x4E, + 0x0C, 0x59, 0x77, 0x0D, 0x68, 0x92, 0x18, 0xE8, 0xBC, 0x10, 0x58, 0x70, + 0xFC, 0x99, 0xF5, 0xCB, 0x25, 0x9D, 0xA9, 0xA4, 0xB8, 0xFC, 0x60, 0x25, + 0x28, 0xE9, 0x23, 0xBD, 0xF3, 0x54, 0x42, 0x0A, 0x9B, 0xF7, 0x7F, 0xB2, + 0x92, 0x59, 0xB0, 0xD2, 0x4A, 0xCB, 0x26, 0xCE, 0xD0, 0x1C, 0x37, 0x71, + 0xB7, 0x12, 0x0D, 0xBB, 0xD8, 0x87, 0x24, 0xFF, 0x4C, 0x6E, 0x85, 0xED, + 0x88, 0x0F, 0xBE, 0xF4, 0x42, 0x1A, 0x9A, 0x03, 0xFA, 0xCF, 0xD5, 0x2A, + 0xF3, 0x3E, 0x61, 0x47, 0x32, 0xB9, 0x43, 0xF5, 0x0A, 0xB0, 0x84, 0x11, + 0x69, 0xD8, 0x9F, 0x8D, 0xEF, 0xE7, 0x39, 0xE1, 0xE7, 0x77, 0xCD, 0x7E, + 0x05, 0xE3, 0x15, 0x7A, 0x48, 0x38, 0x47, 0xA4, 0xAB, 0x48, 0xE2, 0x70, + 0xB6, 0xC1, 0xB4, 0x49, 0xE1, 0x04, 0x20, 0xE0, 0xDE, 0xB2, 0x9D, 0x63, + 0xE2, 0x9C, 0x39, 0x7C, 0x65, 0x10, 0xBA, 0x7B, 0x6F, 0xAA, 0xCF, 0x7A, + 0xE4, 0xC6, 0x32, 0x7A, 0x0A, 0x01, 0x27, 0xAA, 0x4C, 0xB4, 0x4A, 0x76, + 0xD2, 0xB7, 0x0E, 0x28, 0xDE, 0xDB, 0x96, 0x4A, 0xC4, 0x59, 0x53, 0xDA, + 0x15, 0x75, 0x12, 0x46, 0x13, 0x45, 0xAC, 0x01, 0xE5, 0x3E, 0x5C, 0x2E, + 0x4D, 0xE3, 0x86, 0x9F, 0xFD, 0xEA, 0x15, 0xFE, 0x27, 0x96, 0x87, 0xFB, + 0x73, 0x57, 0xF4, 0x1D, 0x37, 0x8A, 0xA9, 0x20, 0x12, 0xA5, 0x37, 0x6A, + 0x81, 0x77, 0xF9, 0x19, 0x7E, 0xED, 0x2D, 0x04, 0xBE, 0x37, 0x6E, 0xC7, + 0xAA, 0x22, 0x90, 0x61, 0x3D, 0x3B, 0x90, 0xA9, 0x24, 0xBB, 0xF7, 0xE6, + 0x9F, 0x84, 0x7C, 0x61, 0x05, 0xEE, 0x19, 0xB1, 0xF6, 0x9B, 0x5A, 0xA7, + 0x73, 0x6B, 0x1D, 0x39, 0x94, 0xFA, 0x79, 0x92, 0xB8, 0x58, 0x9F, 0x42, + 0x20, 0xAA, 0x38, 0xF1, 0xF7, 0xE1, 0x0A, 0x34, 0x16, 0x80, 0x3E, 0x8D, + 0x7A, 0x37, 0x98, 0x5D, 0x45, 0x76, 0x10, 0x0F, 0x9B, 0xAD, 0x19, 0x93, + 0xD8, 0xE0, 0xD1, 0xA6, 0xA6, 0x9F, 0x69, 0xB5, 0x47, 0x3D, 0x06, 0x54, + 0x15, 0x18, 0xA1, 0x00, 0xAB, 0xA4, 0xC2, 0xB1, 0x38, 0xCE, 0xD0, 0x6F, + 0xDE, 0xBA, 0xDD, 0x08, 0x65, 0xFA, 0xA2, 0x92, 0x61, 0x4E, 0x33, 0x20, + 0x59, 0x54, 0x7A, 0x9F, 0xB1, 0x77, 0x0D, 0x71, 0xF6, 0x80, 0xED, 0xF1, + 0x79, 0x5E, 0x81, 0xFD, 0x50, 0x57, 0xAB, 0x8B, 0x3E, 0x84, 0xBB, 0xCB, + 0x25, 0x89, 0xA5, 0xC4, 0x66, 0x64, 0xD6, 0xDB, 0x85, 0x68, 0xD7, 0x02, + 0xD1, 0x43, 0xA8, 0xE9, 0xE4, 0x27, 0x99, 0x27, 0x8F, 0x69, 0x2F, 0x74, + 0x2A, 0xA4, 0xF7, 0x2E, 0x98, 0xE6, 0x63, 0x80, 0x24, 0x7D, 0xF6, 0x18, + 0x57, 0xE0, 0xEC, 0xF8, 0xEE, 0x25, 0xFE, 0xA0, 0x85, 0x7E, 0x3F, 0x0A, + 0xBE, 0xB9, 0x21, 0xCB, 0xBE, 0xEC, 0x7E, 0x46, 0x3A, 0x57, 0xB3, 0xDF, + 0xFC, 0x95, 0xC8, 0x92, 0x4D, 0x6B, 0x8C, 0x71, 0x55, 0xE3, 0x5E, 0x0D, + 0x0A, 0x47, 0xD1, 0xF7, 0xD0, 0x54, 0xC3, 0x64, 0xFA, 0xD2, 0xA2, 0x7B, + 0x78, 0xEF, 0x25, 0x7C, 0x1C, 0x5B, 0xE4, 0xA8, 0xD5, 0x12, 0xD1, 0x1A, + 0x26, 0xEF, 0xC1, 0xCA, 0xB7, 0x55, 0x2C, 0x44, 0xB7, 0x9B, 0x97, 0xD0, + 0x14, 0x88, 0x58, 0x77, 0x06, 0xBD, 0xDD, 0x6C, 0x20, 0x1A, 0x9D, 0xAB, + 0x23, 0xBB, 0x13, 0xEB, 0xEA, 0x76, 0x13, 0x4F, 0x91, 0xD2, 0xE6, 0xE6, + 0x0E, 0x73, 0x1D, 0xD5, 0xD3, 0xA0, 0xB9, 0x75, 0xD3, 0xB3, 0x27, 0x20, + 0xE6, 0xE7, 0xCF, 0x38, 0x3D, 0x7D, 0xB5, 0x41, 0x48, 0x2B, 0x90, 0x60, + 0xBE, 0x2F, 0xBE, 0x1D, 0x10, 0xD1, 0x62, 0x15, 0x60, 0x89, 0xFA, 0xF7, + 0x2F, 0x3A, 0xDC, 0xDA, 0x2E, 0x11, 0x10, 0x6D, 0xC0, 0x7C, 0xF5, 0x9D, + 0xE2, 0x40, 0x7C, 0x37, 0x3B, 0x32, 0xF6, 0xBB, 0xDC, 0x0B, 0xA3, 0x6D, + 0x77, 0xF1, 0x3B, 0x9F, 0xB0, 0x68, 0x94, 0xE4, 0x45, 0xB3, 0x32, 0xB2, + 0xA3, 0x08, 0x55, 0xA2, 0x06, 0xEF, 0xA9, 0x2A, 0x21, 0xEE, 0xD8, 0xA3, + 0x67, 0xDA, 0x2A, 0xAF, 0xE9, 0x48, 0x92, 0x1B, 0xC3, 0xAF, 0x1D, 0x20, + 0xCC, 0xC5, 0xD1, 0x3E, 0x01, 0xC7, 0xC1, 0x2F, 0x5E, 0xC6, 0x02, 0x33, + 0xB1, 0x2E, 0xBF, 0x22, 0x9B, 0xF1, 0x92, 0x60, 0xB9, 0xEC, 0xBF, 0xA7, + 0x24, 0xB9, 0xFF, 0xB8, 0xFB, 0xFA, 0x2A, 0x2A, 0xD7, 0x2D, 0x2F, 0x00, + 0x0A, 0x27, 0x86, 0xD9, 0x98, 0x9C, 0xC1, 0x50, 0x5C, 0x58, 0xA0, 0xBD, + 0x0D, 0x74, 0xC1, 0x58, 0x9A, 0x3A, 0x06, 0x4A, 0x5C, 0x47, 0x60, 0x2D, + 0xC3, 0x91, 0x17, 0xBF, 0xAA, 0x41, 0x44, 0xC0, 0x81, 0xE4, 0x69, 0x4B, + 0xF7, 0xA6, 0x4B, 0x25, 0x4B, 0x32, 0xE2, 0xF6, 0x9C, 0x16, 0x56, 0x01, + 0xD5, 0x13, 0xC8, 0x8F, 0xD0, 0x26, 0x2C, 0x78, 0xC5, 0xDB, 0x4A, 0x09, + 0xDC, 0x1E, 0x96, 0xE3, 0x9A, 0x6B, 0x78, 0x5D, 0x8E, 0x28, 0x93, 0xD9, + 0xA3, 0x8C, 0x07, 0x49, 0xF3, 0x05, 0x1B, 0xFE, 0x10, 0x3D, 0xA7, 0xDD, + 0xD9, 0x46, 0xBF, 0x1C, 0xFF, 0x73, 0x69, 0xB9, 0xA8, 0xC4, 0x5C, 0xBB, + 0x38, 0xCA, 0x14, 0x18, 0x85, 0x7F, 0x89, 0xAB, 0x3F, 0x76, 0x29, 0xAB, + 0x09, 0xCE, 0xB2, 0xCC, 0x7D, 0xF3, 0x5C, 0xDD, 0x0A, 0x4D, 0x1A, 0x56, + 0x17, 0x98, 0xB9, 0x91, 0x01, 0xAD, 0x84, 0x7D, 0x88, 0x48, 0x3C, 0x40, + 0x7D, 0xAA, 0x7B, 0x80, 0x2F, 0x7E, 0x65, 0x6F, 0x73, 0x7A, 0x06, 0xD4, + 0xEC, 0x44, 0x60, 0xD9, 0xF8, 0x40, 0x99, 0xAE, 0x3A, 0x11, 0x60, 0x52, + 0x98, 0x99, 0x9B, 0xD5, 0x52, 0xFD, 0x4E, 0x53, 0x48, 0x36, 0x5A, 0x4D, + 0xE4, 0xCC, 0x54, 0x61, 0xB3, 0x7B, 0x1A, 0xA6, 0x7C, 0x1D, 0x81, 0x3A, + 0x0D, 0xE7, 0xF6, 0x31, 0xFD, 0xFC, 0x7A, 0x65, 0x3F, 0xF7, 0xB7, 0xE0, + 0x28, 0xFB, 0x4C, 0x9D, 0xBD, 0x87, 0xE2, 0x35, 0x5A, 0xB7, 0x7F, 0x23, + 0xAF, 0xDA, 0xF6, 0x7A, 0xED, 0xA9, 0xDE, 0x56, 0x0E, 0xBB, 0xDC, 0xA2, + 0xE6, 0xA0, 0x97, 0x22, 0x1C, 0x02, 0x52, 0x65, 0xAC, 0xE2, 0x77, 0x6E, + 0x3E, 0x3B, 0xBC, 0x14, 0xE3, 0xC9, 0x22, 0x30, 0x2A, 0x17, 0xFF, 0x28, + 0xC2, 0x23, 0xB5, 0xE3, 0x3E, 0x3F, 0x92, 0xAC, 0xC8, 0x9D, 0x9F, 0xBD, + 0x8B, 0x3D, 0x83, 0xB7, 0x1F, 0x41, 0xCD, 0x93, 0x19, 0x0E, 0xA5, 0x0B, + 0xE3, 0x4A, 0x2F, 0xD6, 0x17, 0x10, 0x38, 0x58, 0x4F, 0xA2, 0x4F, 0x05, + 0x94, 0x1F, 0xF2, 0x27, 0x2C, 0x2A, 0xD4, 0x76, 0x17, 0xB2, 0xB1, 0x86, + 0xF2, 0xE8, 0x20, 0x47, 0xBA, 0x15, 0x85, 0x0B, 0x96, 0x7B, 0xA7, 0x00, + 0x76, 0x96, 0x25, 0x3B, 0x1A, 0x0A, 0x15, 0xEE, 0x06, 0x02, 0x0F, 0x8D, + 0x4A, 0x09, 0x2D, 0x42, 0x9B, 0xF2, 0xD4, 0x4D, 0x6D, 0xFB, 0xAD, 0xEA, + 0x67, 0xDF, 0x4C, 0x7B, 0x5A, 0xF6, 0x06, 0x3B, 0x89, 0x58, 0x12, 0xC5, + 0x55, 0xB3, 0xBD, 0x14, 0x3C, 0x0C, 0xB3, 0x92, 0x9B, 0x54, 0xEC, 0x58, + 0x55, 0x60, 0x2D, 0xC2, 0x8B, 0x29, 0x2C, 0x73, 0x22, 0x3A, 0xAA, 0x61, + 0xD3, 0x7A, 0x1B, 0x9D, 0x75, 0x15, 0x16, 0x1E, 0xDE, 0x03, 0x03, 0x05, + 0xC1, 0xED, 0x95, 0x29, 0x2F, 0xB8, 0x94, 0x97, 0x34, 0x66, 0xC4, 0xD7, + 0x64, 0x7D, 0x02, 0xA4, 0x90, 0x39, 0xAB, 0x08, 0xF1, 0x64, 0x34, 0x88, + 0x81, 0x5B, 0x30, 0x77, 0xBB, 0x76, 0x98, 0x45, 0x1B, 0xEB, 0x8A, 0xDD, + 0x2F, 0x50, 0x45, 0xFE, 0xBE, 0x4B, 0x36, 0xD3, 0xC4, 0x12, 0x13, 0x7A, + 0x7A, 0xDE, 0x26, 0xEE, 0xF6, 0x46, 0x6C, 0x05, 0x64, 0x0C, 0x3E, 0xD6, + 0x70, 0x8A, 0x70, 0xF8, 0x57, 0x8E, 0xF9, 0x59, 0x84, 0xE9, 0xE2, 0x76, + 0x36, 0x04, 0x6F, 0x1F, 0xB3, 0x5A, 0xE3, 0x06, 0xDA, 0x94, 0xB7, 0x4B, + 0x62, 0x94, 0xFB, 0x3D, 0x76, 0x6D, 0xDC, 0xC6, 0x31, 0xB3, 0x49, 0x2A, + 0x24, 0xD7, 0xCA, 0xD2, 0x1E, 0x5D, 0x88, 0xC7, 0x93, 0xB7, 0x4D, 0x57, + 0x0E, 0x23, 0x8B, 0xD3, 0x29, 0xA6, 0x55, 0x12, 0x8F, 0x09, 0x5F, 0x5A, + 0x18, 0xBD, 0x88, 0xB7, 0xD6, 0xC6, 0x51, 0xAE, 0xA5, 0x50, 0x0D, 0xB1, + 0x84, 0xE2, 0x8A, 0x28, 0xC5, 0x06, 0xF1, 0xB3, 0x2A, 0x3F, 0xF5, 0x4B, + 0xDC, 0x40, 0x6A, 0x5B, 0x9C, 0xF8, 0x24, 0xF8, 0x39, 0x68, 0x9E, 0x51, + 0x6D, 0xAF, 0xC0, 0x7B, 0x6B, 0xC1, 0x1D, 0x04, 0xB5, 0x92, 0x9D, 0x15, + 0xB7, 0x30, 0xBF, 0x95, 0xD2, 0xD2, 0x0A, 0x4D, 0x31, 0x37, 0x03, 0x4A, + 0x15, 0xF8, 0x09, 0x09, 0x5A, 0xD2, 0x8E, 0x27, 0xAF, 0xFA, 0x29, 0x01, + 0xAC, 0x32, 0xEF, 0xAB, 0x55, 0x2B, 0x1F, 0x2D, 0x51, 0x08, 0x8D, 0x23, + 0xA2, 0xF1, 0xC8, 0x50, 0xB0, 0xC2, 0x2F, 0xAE, 0x67, 0xAC, 0xB7, 0x3F, + 0x64, 0x48, 0x1E, 0xBD, 0x65, 0xF1, 0x0A, 0x93, 0xFE, 0xB3, 0x09, 0x07, + 0x75, 0x50, 0x46, 0xCC, 0xF2, 0xC0, 0xA4, 0x12, 0x3E, 0x2D, 0xF0, 0xC5, + 0x5B, 0x84, 0x1C, 0xFB, 0xA0, 0xAC, 0xC5, 0x98, 0x20, 0x10, 0xF7, 0x11, + 0x3F, 0x5F, 0x5E, 0x7B, 0x28, 0x02, 0x70, 0x46, 0x98, 0xD2, 0x96, 0xE8, + 0xC1, 0xF0, 0x82, 0xE3, 0x17, 0x89, 0x5E, 0x34, 0x2C, 0xA0, 0x4B, 0xEA, + 0x17, 0x89, 0xC1, 0x2E, 0xF4, 0xD9, 0x57, 0x31, 0x6B, 0x56, 0xCF, 0x05, + 0xF6, 0x32, 0x3E, 0xC6, 0x6C, 0xA2, 0x30, 0xFA, 0x28, 0x0E, 0x1D, 0x0D, + 0x8B, 0x64, 0x3A, 0x22, 0x73, 0xCD, 0x65, 0xB9, 0x5F, 0x4B, 0x20, 0xEE, + 0x21, 0x94, 0xC2, 0x8D, 0x4E, 0x5D, 0xF3, 0x8B, 0xA0, 0x3F, 0xF8, 0xC8, + 0x3C, 0xC3, 0xAD, 0x6D, 0x81, 0xA1, 0xE6, 0xF6, 0xE2, 0x74, 0x6D, 0x63, + 0x40, 0x1C, 0x17, 0x92, 0xC4, 0x47, 0xCE, 0x8D, 0x49, 0xC7, 0x09, 0x3C, + 0xC7, 0x05, 0x8B, 0x79, 0xCF, 0x3A, 0x14, 0x72, 0xD6, 0x4A, 0xC6, 0x5E, + 0xB6, 0x1B, 0x3C, 0x52, 0xA7, 0x84, 0x12, 0x02, 0x05, 0xE9, 0x54, 0x1C, + 0x61, 0x5F, 0x75, 0xB9, 0x3D, 0x67, 0xBF, 0x2B, 0x84, 0xAF, 0x1D, 0x73, + 0x13, 0x17, 0xE8, 0x77, 0x08, 0xCC, 0x86, 0xBB, 0x1C, 0xAB, 0x16, 0x5F, + 0x8A, 0xC2, 0xA9, 0xDC, 0x02, 0xE4, 0xC5, 0x0A, 0x49, 0x04, 0x05, 0xDB, + 0xD5, 0x3B, 0xF2, 0xE6, 0x9B, 0xA6, 0x9D, 0xC6, 0xE4, 0x60, 0xA7, 0x9A, + 0x4B, 0x65, 0xE0, 0x72, 0x95, 0xCD, 0x89, 0x0A, 0xEF, 0xE9, 0x33, 0x54, + 0x27, 0x8F, 0xC6, 0x32, 0xBF, 0x29, 0xC4, 0x5C, 0xBA, 0x37, 0xDE, 0xD7, + 0x43, 0x99, 0x27, 0xC3, 0x90, 0xEA, 0x1C, 0x5E, 0xE0, 0x4E, 0xBC, 0x68, + 0x82, 0x83, 0x82, 0x3D, 0xE8, 0x3B, 0xF5, 0x8A, 0xD1, 0x2B, 0xC8, 0xFB, + 0xC6, 0xF8, 0xAE, 0x1F, 0x8A, 0x39, 0x78, 0x94, 0x22, 0xE0, 0xCF, 0x7F, + 0xF2, 0xE2, 0x3D, 0x4C, 0x3F, 0x17, 0x7E, 0xA2, 0xFC, 0x51, 0x06, 0x28, + 0xC8, 0x4A, 0xD2, 0x93, 0x3C, 0xA5, 0x5F, 0x98, 0x37, 0x23, 0x81, 0x9B, + 0x4F, 0x66, 0x96, 0xED, 0x5D, 0x19, 0xFA, 0x74, 0xBC, 0x0E, 0xEA, 0x7E, + 0x7B, 0x75, 0x9C, 0x23, 0x49, 0x38, 0x06, 0x76, 0xDD, 0x48, 0x62, 0xCD, + 0xE4, 0xF1, 0x59, 0x21, 0x98, 0xCC, 0xFC, 0x72, 0x3E, 0xC4, 0xF2, 0xE1, + 0x3F, 0x57, 0x8B, 0x0F, 0x6A, 0xF7, 0xA2, 0xA5, 0xEC, 0x6E, 0x7C, 0x0C, + 0xC2, 0x1B, 0x4F, 0xD7, 0x16, 0xE8, 0x74, 0x60, 0x02, 0x61, 0x31, 0x56, + 0x28, 0x67, 0x18, 0x57, 0x15, 0x95, 0xE8, 0xBB, 0xF4, 0x97, 0xDC, 0xFC, + 0x92, 0xA1, 0x2E, 0x60, 0xFB, 0x8F, 0x3A, 0x7A, 0x54, 0xF1, 0x3C, 0x6B, + 0x43, 0xF9, 0x50, 0xF7, 0xF2, 0xC6, 0x11, 0xEA, 0x19, 0xE5, 0xF4, 0xD4, + 0x44, 0x27, 0xA9, 0xF1, 0x39, 0xCB, 0xCC, 0xFB, 0xFE, 0xDA, 0x98, 0xF5, + 0x1B, 0xFC, 0x94, 0xF8, 0xB1, 0x77, 0x1F, 0x70, 0x65, 0xAE, 0xB4, 0x13, + 0xA5, 0x83, 0xFD, 0x5A, 0xFC, 0xEC, 0xDA, 0x05, 0xE3, 0xA0, 0x6B, 0x3E, + 0xC1, 0xBA, 0x66, 0x2A, 0xD5, 0xD0, 0x69, 0x74, 0x2E, 0x13, 0x23, 0x75, + 0x3B, 0x29, 0xC7, 0x7D, 0xA3, 0xB5, 0x05, 0xAA, 0x61, 0xC9, 0xAD, 0xDA, + 0x83, 0x35, 0x40, 0xFA, 0x5F, 0x35, 0x13, 0x64, 0xBF, 0x31, 0xB8, 0xAB, + 0xF5, 0xAD, 0x23, 0xDA, 0xA9, 0x98, 0x01, 0x35, 0x1C, 0x83, 0x1D, 0xA4, + 0x4D, 0xD0, 0x73, 0x6B, 0x37, 0xF6, 0x7F, 0xBF, 0xDA, 0x92, 0x39, 0xC6, + 0x63, 0x7D, 0xF0, 0xA6, 0x27, 0xB9, 0x88, 0x6D, 0x6A, 0x30, 0xDA, 0xE0, + 0xEC, 0xA5, 0x73, 0x39, 0xE9, 0x12, 0x27, 0x90, 0xE3, 0x05, 0x6D, 0xEE, + 0x94, 0x25, 0x37, 0xFD, 0xD1, 0x6D, 0xC2, 0xD6, 0x58, 0x36, 0x57, 0xA0, + 0x5D, 0x2A, 0xA8, 0xE1, 0x20, 0x00, 0xB3, 0x78, 0x98, 0x97, 0x0A, 0x57, + 0x84, 0x74, 0x2E, 0x7B, 0x3B, 0x58, 0x67, 0x01, 0xED, 0xAF, 0x1B, 0x74, + 0xDF, 0x1A, 0xFE, 0x55, 0xC5, 0x20, 0x76, 0x6C, 0x94, 0x0C, 0x38, 0x65, + 0xF0, 0xA7, 0xC3, 0xBA, 0x08, 0xAD, 0xA4, 0x9C, 0xEB, 0xDF, 0x7C, 0x0D, + 0x44, 0xD4, 0x39, 0x43, 0xB0, 0xBF, 0x6A, 0x09, 0xEF, 0x85, 0xED, 0x36, + 0x67, 0x41, 0x53, 0x90, 0x9A, 0xB9, 0x5A, 0x35, 0x45, 0xB4, 0xCA, 0x4B, + 0x59, 0x13, 0xC7, 0x8F, 0xD4, 0x46, 0x6F, 0x86, 0x80, 0x0D, 0x0D, 0x95, + 0xAD, 0x87, 0x5A, 0xE0, 0xF0, 0x91, 0x42, 0x96, 0x12, 0x57, 0xBF, 0x33, + 0x18, 0xC1, 0x55, 0x12, 0xB6, 0x1D, 0xF3, 0x0F, 0xDA, 0x1B, 0x76, 0x2C, + 0x3B, 0x05, 0x34, 0x27, 0x26, 0xA5, 0xE7, 0xDD, 0xCF, 0x7F, 0x6A, 0x2C, + 0x8B, 0xA9, 0x05, 0x79, 0x0B, 0xC9, 0x1F, 0x7B, 0x6C, 0xFA, 0x48, 0x55, + 0xD1, 0x9A, 0xA4, 0x92, 0x55, 0xE9, 0xF6, 0x8F, 0x07, 0x55, 0x6B, 0x84, + 0xC5, 0xC5, 0xED, 0x1B, 0xC4, 0x9E, 0xD1, 0x24, 0x63, 0xCB, 0xF8, 0x9D, + 0x85, 0x2A, 0xCE, 0x17, 0xC3, 0x62, 0x71, 0xA7, 0xAB, 0x6F, 0xB2, 0xDA, + 0xDD, 0x5C, 0x71, 0xBC, 0x9D, 0x1C, 0x20, 0x0C, 0xB2, 0x6E, 0x0E, 0x11, + 0x8B, 0xB4, 0x8A, 0x7A, 0x8D, 0x11, 0x25, 0xB2, 0x41, 0xE3, 0x5D, 0x91, + 0x86, 0xF7, 0xC6, 0x34, 0x5C, 0xC3, 0x4E, 0x35, 0x67, 0x43, 0x29, 0x98, + 0xD6, 0x0C, 0xEF, 0xA5, 0x9E, 0x64, 0xAD, 0xB3, 0xB2, 0x23, 0x38, 0xD3, + 0x42, 0x76, 0xF2, 0x06, 0x0D, 0x0F, 0x0D, 0xA9, 0x74, 0x29, 0x0B, 0xB6, + 0x83, 0xA2, 0xF2, 0xFB, 0x4B, 0x86, 0xF9, 0xC5, 0x27, 0xCB, 0xE4, 0x85, + 0xC3, 0x67, 0xC1, 0x25, 0x75, 0xC5, 0x5F, 0x38, 0x87, 0xCB, 0x7C, 0xF1, + 0x15, 0xDC, 0x56, 0xF1, 0x9E, 0x05, 0x3E, 0x81, 0xF9, 0x39, 0x78, 0x8F, + 0x01, 0x81, 0xD8, 0xF8, 0x53, 0x69, 0x85, 0x8F, 0x67, 0xFC, 0x1A, 0xAB, + 0xBD, 0x68, 0xDE, 0x89, 0x3A, 0xF5, 0x0E, 0xD4, 0x3E, 0x15, 0x85, 0xD0, + 0x1A, 0x30, 0x64, 0x51, 0x9B, 0xEA, 0xE2, 0xCB, 0x83, 0xC7, 0xFD, 0xFD, + 0x44, 0xF6, 0x14, 0x67, 0x1C, 0x78, 0xBC, 0x00, 0x42, 0x18, 0xB7, 0x2F, + 0xB3, 0x9B, 0x78, 0x8D, 0x0C, 0x95, 0x70, 0x3A, 0x87, 0xAF, 0xD4, 0x33, + 0xAF, 0x57, 0xC1, 0x72, 0x4C, 0x5B, 0x1E, 0x4F, 0x16, 0x14, 0xA0, 0x24, + 0x86, 0x6E, 0xE6, 0x5F, 0x01, 0xCA, 0x2E, 0x57, 0x11, 0x4F, 0x2F, 0xF8, + 0xEB, 0x89, 0xAB, 0x74, 0x9E, 0x3B, 0x0E, 0x99, 0x60, 0x8D, 0x49, 0x21, + 0x00, 0xCC, 0x09, 0x97, 0x31, 0xF9, 0x09, 0xF3, 0xB6, 0x7D, 0x98, 0xC9, + 0x88, 0x55, 0x8E, 0x90, 0x1A, 0x0A, 0x5D, 0xD7, 0x6D, 0x0C, 0x3E, 0x86, + 0x7A, 0x15, 0xDD, 0x05, 0x60, 0xBB, 0xBB, 0xF6, 0xB7, 0x7C, 0xFA, 0x69, + 0x00, 0x76, 0xB5, 0x53, 0x1D, 0xC1, 0xB1, 0x3F, 0x6F, 0x92, 0xAD, 0x1A, + 0x2F, 0x93, 0xE3, 0xA4, 0x4A, 0x82, 0x54, 0x76, 0x91, 0x0A, 0xBF, 0x0A, + 0x78, 0xBC, 0xC1, 0x08, 0x3F, 0x21, 0x6F, 0xF5, 0x49, 0x6A, 0x4E, 0x53, + 0xA7, 0xDA, 0x2B, 0xDD, 0xFE, 0xC4, 0x74, 0x75, 0x89, 0xCB, 0xBC, 0xFF, + 0x63, 0x3D, 0x9F, 0xE6, 0x20, 0x9D, 0xD9, 0x8B, 0x56, 0x5A, 0xAB, 0xE6, + 0x10, 0x78, 0x7D, 0xE1, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0x24, 0x6C, + 0x46, 0xFF, 0xFA, 0x59, 0xBE, 0xA9, 0x0F, 0x76, 0x3B, 0xB7, 0x2D, 0x8A, + 0xE8, 0x8A, 0x65, 0x12, 0xEB, 0xA0, 0x9D, 0x67, 0xF9, 0x30, 0x00, 0x2E, + 0x67, 0x35, 0x1A, 0xD4, 0x0B, 0x03, 0x07, 0x82, 0xEF, 0x26, 0x65, 0x10, + 0x64, 0xD9, 0x53, 0x41, 0x4F, 0x0F, 0x5D, 0x2B, 0xD2, 0xAD, 0x82, 0x57, + 0xB0, 0x56, 0x7F, 0xD1, 0x18, 0xAF, 0x3C, 0xDF, 0xE3, 0x8F, 0x95, 0x88, + 0x2D, 0xC8, 0x34, 0xE8, 0x67, 0xCF, 0x9B, 0x33, 0x73, 0xCA, 0x6A, 0xD8, + 0x24, 0xAC, 0x53, 0xBC, 0x06, 0x9E, 0xA7, 0xED, 0x65, 0x8B, 0x5E, 0x6E, + 0x3D, 0xDD, 0x69, 0x81, 0xB2, 0x2F, 0xE7, 0x2D, 0x78, 0x31, 0xCA, 0x31, + 0x68, 0xF2, 0xAE, 0xB9, 0x4A, 0x3D, 0x44, 0x19, 0xFC, 0x07, 0x47, 0xCC, + 0xCE, 0xF0, 0x16, 0xC7, 0x90, 0xE6, 0xBC, 0x85, 0x0A, 0x87, 0x47, 0x0A, + 0x80, 0x9E, 0x48, 0xA8, 0x44, 0x18, 0x0A, 0x0F, 0x72, 0x09, 0x46, 0x9B, + 0x61, 0x42, 0xD2, 0x13, 0xE8, 0xD7, 0xBE, 0x02, 0xF1, 0x76, 0x54, 0x02, + 0xBF, 0xEB, 0x6A, 0x9C, 0x6A, 0x9D, 0xA1, 0xB1, 0x5E, 0x50, 0x1A, 0xC9, + 0x5C, 0x66, 0xCA, 0x16, 0x7A, 0x5E, 0xE4, 0x81, 0x75, 0x77, 0xB6, 0x41, + 0xDB, 0x6B, 0x79, 0x17, 0x4D, 0xFF, 0xDD, 0xE0, 0x07, 0x4A, 0x4D, 0xE6, + 0x38, 0xCF, 0xE1, 0xC8, 0x15, 0xCA, 0x8C, 0xE7, 0x37, 0x1F, 0x37, 0x60, + 0x7C, 0xB3, 0xF5, 0x9F, 0x45, 0x65, 0x37, 0xBB, 0x2B, 0x2D, 0x3E, 0xEC, + 0x89, 0x22, 0x32, 0xD9, 0x0E, 0x6B, 0x49, 0x0D, 0x2E, 0xC2, 0x4C, 0xE1, + 0xA4, 0xFB, 0x6C, 0xDA, 0xBE, 0x08, 0x87, 0x01, 0xB1, 0x7A, 0x0F, 0x76, + 0x5B, 0x52, 0x01, 0x01, 0x59, 0x5A, 0x0D, 0xD9, 0x3B, 0x80, 0x87, 0x70, + 0xA0, 0x81, 0xC3, 0x84, 0x6F, 0x3F, 0x1F, 0x22, 0xA1, 0xE6, 0x45, 0xA7, + 0x72, 0x71, 0xF4, 0xAF, 0x8C, 0x8A, 0x48, 0xE6, 0xE7, 0xF5, 0x3F, 0x7D, + 0xE4, 0xC8, 0xFB, 0x5E, 0xEF, 0x37, 0xD9, 0xAD, 0x3E, 0x34, 0x9E, 0xD9, + 0xE3, 0x8A, 0xC1, 0x16, 0xB4, 0xF2, 0x7B, 0x3A, 0x03, 0x13, 0xA6, 0xC1, + 0x65, 0x3B, 0xFE, 0x28, 0x56, 0x54, 0x61, 0xE4, 0x25, 0x59, 0x48, 0x28, + 0xE2, 0x62, 0x5B, 0xB4, 0x5C, 0xC0, 0x45, 0x39, 0x9F, 0x4E, 0xB1, 0xB6, + 0xA4, 0xF2, 0x4C, 0x10, 0x73, 0x8C, 0xB8, 0x2D, 0xEF, 0x91, 0xE7, 0x9C, + 0x93, 0x9E, 0xDD, 0xF8, 0xAB, 0x4B, 0xF9, 0x92, 0xFB, 0x0B, 0xAE, 0x98, + 0x0F, 0xC0, 0xDF, 0x66, 0xF6, 0x54, 0xB1, 0x33, 0xD3, 0x21, 0x8E, 0x53, + 0xB9, 0x37, 0x7D, 0xD1, 0x86, 0x8A, 0x6F, 0x71, 0x60, 0x83, 0x29, 0x03, + 0x57, 0x51, 0x11, 0x1B, 0xB9, 0x44, 0x6F, 0x72, 0x56, 0x83, 0x97, 0xA0, + 0x25, 0x63, 0xB9, 0xA1, 0x73, 0xE7, 0x24, 0x5E, 0x38, 0x88, 0x17, 0x1E, + 0x2F, 0xFC, 0x1F, 0xDF, 0xFC, 0x66, 0xFA, 0xF6, 0x14, 0xE1, 0xDE, 0xDA, + 0x39, 0x3E, 0x75, 0x8A, 0x82, 0xFB, 0xB7, 0xDA, 0x31, 0xC9, 0x56, 0xA7, + 0x3D, 0x25, 0xE8, 0x22, 0xB8, 0x49, 0x26, 0x32, 0x8C, 0xC6, 0x6A, 0x13, + 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0x42, 0x78, 0x93, 0xFF, 0x00, + 0xB0, 0xA6, 0x2C, 0x53, 0x60, 0x86, 0x69, 0x00, 0x03, 0xBD, 0xBC, 0x12, + 0xEA, 0xFE, 0x8F, 0xFE, 0x01, 0xEA, 0x9E, 0x19, 0x51, 0x56, 0x3B, 0xA3, + 0xC4, 0xFB, 0xF1, 0xDC, 0x98, 0x55, 0x31, 0x29, 0x23, 0xDE, 0x20, 0x0F, + 0x2C, 0x01, 0xBD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x61, 0x74, 0x44, + 0x7F, 0x00, 0x40, 0xAE, 0x4A, 0xAA, 0xA1, 0x12, 0xE0, 0x82, 0xFC, 0x2D, + 0x18, 0x08, 0x1F, 0x0A, 0x2F, 0xE7, 0xA2, 0xD6, 0x13, 0x07, 0x34, 0xD0, + 0x35, 0x31, 0x43, 0xBB, 0x59, 0x8B, 0xC2, 0x56, 0x27, 0x30, 0xE6, 0x00, + 0x3E, 0x60, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x63, 0x6A, 0x44, 0x7F, + 0x00, 0x40, 0x55, 0x93, 0xE1, 0xE5, 0x2E, 0x97, 0x07, 0x00, 0x00, 0x94, + 0x82, 0x28, 0xE2, 0xE9, 0x67, 0x5A, 0xF4, 0x50, 0x04, 0xDD, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9A, 0x68, 0x49, 0xA8, 0x41, 0x68, 0x99, 0x4C, 0x08, + 0xDF, 0xFA, 0x58, 0x00, 0x01, 0x94, 0x21, 0xB2, 0x10, 0x44, 0xD4, 0x4F, + 0xA1, 0xD0, 0xBC, 0xE7, 0x5C, 0xBA, 0xE1, 0x84, 0x0E, 0x48, 0x96, 0xB6, + 0x79, 0xE7, 0x9E, 0x4F, 0x0A, 0x8A, 0xE2, 0x19, 0x0B, 0xD1, 0x7C, 0x2B, + 0x7B, 0xC2, 0xA6, 0x2B, 0xC0, 0x2A, 0x76, 0xAB, 0xB0, 0x49, 0x03, 0x04, + 0x77, 0xCB, 0x50, 0xBA, 0xEB, 0x8B, 0x66, 0x01, 0x58, 0xA8, 0xA1, 0xE6, + 0xD5, 0x08, 0xF0, 0xF9, 0x55, 0x50, 0xCE, 0x29, 0x58, 0xE7, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9E, 0x86, 0x45, 0x11, 0x2C, 0x9F, 0x00, 0x05, 0xF1, + 0xF6, 0x98, 0xA0, 0xA9, 0xC6, 0xB9, 0x00, 0x00, 0x04, 0x5D, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9E, 0xA5, 0x74, 0x44, 0x7F, 0x00, 0x07, 0x5A, 0xC5, + 0x3B, 0x30, 0xFD, 0x00, 0x00, 0x03, 0x00, 0x71, 0xC1, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x9E, 0xA7, 0x6A, 0x44, 0x7F, 0x00, 0x07, 0x52, 0xD5, 0x12, + 0x05, 0x20, 0x00, 0x00, 0x32, 0xA0, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, + 0xAC, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, + 0x01, 0x8C, 0xC9, 0x7F, 0x00, 0xBA, 0x6C, 0x10, 0xB1, 0x70, 0x7E, 0xBC, + 0x18, 0x70, 0x13, 0x44, 0x3C, 0x54, 0x00, 0x00, 0x12, 0x70, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9E, 0xCA, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x07, 0xBC, + 0x87, 0x72, 0xCC, 0x4A, 0x70, 0x00, 0x2B, 0x61, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9E, 0xE9, 0x74, 0x44, 0x7F, 0x00, 0x0A, 0x20, 0x3E, 0x30, 0x00, + 0x00, 0x08, 0x38, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xEB, 0x6A, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9A, 0xF0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, + 0xDF, 0xFA, 0x58, 0x00, 0x01, 0x94, 0x94, 0xE5, 0x47, 0xB3, 0x3E, 0xC0, + 0x06, 0xEC, 0x22, 0x1B, 0x59, 0xC0, 0x97, 0x81, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9F, 0x0E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x07, 0xEC, 0x5C, 0xF9, + 0x10, 0x7F, 0x8B, 0x32, 0xD0, 0x02, 0xA7, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9F, 0x2D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0xEA, 0x29, + 0xAC, 0x1B, 0x51, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x2F, 0x6A, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9B, 0x34, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, + 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x65, 0x1F, 0x0C, 0xB0, + 0x06, 0xF9, 0x55, 0x6B, 0x34, 0xE0, 0x0B, 0xD8, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9F, 0x52, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x50, 0xE6, 0xC4, 0x70, 0x3E, 0x61, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9F, 0x71, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x02, 0x9A, 0x0F, + 0x8C, 0x07, 0xF8, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x73, 0x6A, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x02, 0x96, 0xBD, 0x90, 0x2E, 0xE0, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9B, 0x78, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, + 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x96, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9F, 0xB5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, + 0xB7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0xBC, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0xDA, 0x45, + 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, + 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xF9, 0x74, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9F, 0xFB, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0xE0, 0x49, 0xA8, + 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, + 0x1E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, + 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x3D, 0x74, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9E, 0x3F, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0x24, + 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9E, 0x42, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x61, + 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x63, 0x6A, 0x44, 0x7F, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, + 0x9A, 0x68, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9E, 0x86, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, + 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9E, 0xA5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, + 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xA7, 0x6A, 0x44, 0x7F, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9A, 0xAC, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, + 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, + 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0xCA, 0x45, 0x15, 0x2C, 0x9F, 0x00, + 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x9E, 0xE9, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xEB, 0x6A, + 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9A, 0xF0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, + 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x0E, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9F, 0x2D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, + 0x2F, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0x34, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x52, 0x45, + 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, + 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x71, 0x74, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9F, 0x73, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0x78, 0x49, 0xA8, + 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, + 0x96, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, + 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xB5, 0x74, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9F, 0xB7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0xBC, + 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9F, 0xDA, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xF9, + 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xFB, 0x6A, 0x44, 0x7F, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, + 0x9B, 0xE0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9E, 0x1E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, + 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9E, 0x3D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x3F, 0x6A, 0x44, 0x7F, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9A, 0x24, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, + 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, + 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0x42, 0x45, 0x15, 0x2C, 0x9F, 0x00, + 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x9E, 0x61, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x63, 0x6A, + 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9A, 0x68, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, + 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0x86, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9E, 0xA5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, + 0xA7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0xAC, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0xCA, 0x45, + 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, + 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xE9, 0x74, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9E, 0xEB, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0xF0, 0x49, 0xA8, + 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, + 0x0E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, + 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x2D, 0x74, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9F, 0x2F, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0x34, + 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9F, 0x52, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x71, + 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x73, 0x6A, 0x44, 0x7F, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, + 0x9B, 0x78, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9F, 0x96, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, + 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9F, 0xB5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, + 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xB7, 0x6A, 0x44, 0x7F, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9B, 0xBC, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, + 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, + 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0xDA, 0x45, 0x15, 0x2C, 0x9F, 0x00, + 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x9F, 0xF9, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xFB, 0x6A, + 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9B, 0xE0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, + 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0x1E, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9E, 0x3D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, + 0x3F, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0x24, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0x42, 0x45, + 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, + 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x61, 0x74, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9E, 0x63, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0x68, 0x49, 0xA8, + 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, + 0x86, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, + 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xA5, 0x74, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9E, 0xA7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0xAC, + 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9E, 0xCA, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xE9, + 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xEB, 0x6A, 0x44, 0x7F, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, + 0x9A, 0xF0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9F, 0x0E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, + 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9F, 0x2D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, + 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x2F, 0x6A, 0x44, 0x7F, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9B, 0x34, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, + 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, + 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x52, 0x45, 0x15, 0x2C, 0x9F, 0x00, + 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x9F, 0x71, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x73, 0x6A, + 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9B, 0x78, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, + 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x96, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9F, 0xB5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, + 0xB7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0xBC, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0xDA, 0x45, + 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, + 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xF9, 0x74, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9F, 0xFB, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0xE0, 0x49, 0xA8, + 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, + 0x1E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, + 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x3D, 0x74, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9E, 0x3F, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0x24, + 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9E, 0x42, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x61, + 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x63, 0x6A, 0x44, 0x7F, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, + 0x9A, 0x68, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9E, 0x86, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, + 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9E, 0xA5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, + 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xA7, 0x6A, 0x44, 0x7F, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9A, 0xAC, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, + 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, + 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0xCA, 0x45, 0x15, 0x2C, 0x9F, 0x00, + 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x9E, 0xE9, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xEB, 0x6A, + 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9A, 0xF0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, + 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x0E, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9F, 0x2D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, + 0x2F, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0x34, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x52, 0x45, + 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, + 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x71, 0x74, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9F, 0x73, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0x78, 0x49, 0xA8, + 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, + 0x96, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, + 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xB5, 0x74, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9F, 0xB7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0xBC, + 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9F, 0xDA, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xF9, + 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xFB, 0x6A, 0x44, 0x7F, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, + 0x9B, 0xE0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9E, 0x1E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, + 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9E, 0x3D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x3F, 0x6A, 0x44, 0x7F, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9A, 0x24, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, + 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, + 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0x42, 0x45, 0x15, 0x2C, 0x9F, 0x00, + 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x9E, 0x61, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x63, 0x6A, + 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9A, 0x68, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, + 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0x86, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9E, 0xA5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, + 0xA7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0xAC, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0xCA, 0x45, + 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, + 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xE9, 0x74, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9E, 0xEB, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0xF0, 0x49, 0xA8, + 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, + 0x0E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, + 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x2D, 0x74, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9F, 0x2F, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0x34, + 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9F, 0x52, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x71, + 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x73, 0x6A, 0x44, 0x7F, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, + 0x9B, 0x78, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9F, 0x96, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, + 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9F, 0xB5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, + 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xB7, 0x6A, 0x44, 0x7F, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9B, 0xBC, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, + 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, + 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0xDA, 0x45, 0x15, 0x2C, 0x9F, 0x00, + 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x9F, 0xF9, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xFB, 0x6A, + 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9B, 0xE0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, + 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0x1E, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9E, 0x3D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, + 0x3F, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0x24, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, 0x42, 0x45, + 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, + 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x61, 0x74, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9E, 0x63, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0x68, 0x49, 0xA8, + 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, + 0x86, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, + 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xA5, 0x74, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9E, 0xA7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0xAC, + 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9E, 0xCA, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xE9, + 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xEB, 0x6A, 0x44, 0x7F, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x41, + 0x9A, 0xF0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, 0xFA, 0x58, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9F, 0x0E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, + 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9F, 0x2D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, + 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x2F, 0x6A, 0x44, 0x7F, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9B, 0x34, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xDF, + 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, + 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x52, 0x45, 0x15, 0x2C, 0x9F, 0x00, + 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x9F, 0x71, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x73, 0x6A, + 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9B, 0x78, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, + 0x08, 0xDF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x96, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9F, 0xB5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, + 0xB7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0xBC, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0xBF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0xDA, 0x45, + 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, + 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0xF9, 0x74, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9F, 0xFB, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0xE0, 0x49, 0xA8, + 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xBF, 0xFA, 0x58, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x9D, 0x81, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9E, + 0x1E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, + 0x00, 0x04, 0x8C, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x3D, 0x74, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9E, 0x3F, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9A, 0x24, + 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0xBF, 0xFA, 0x58, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x9D, 0x80, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9E, 0x42, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, + 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x61, + 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0x63, 0x6A, 0x44, 0x7F, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, + 0x9A, 0x68, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x08, 0x9F, 0xF3, 0x20, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x01, 0x81, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9E, 0x86, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, 0x02, + 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, + 0xA5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xA7, 0x6A, 0x44, 0x7F, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, + 0x41, 0x9A, 0xAC, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x09, 0xFF, 0xE4, + 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x04, 0x9C, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9E, 0xCA, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, 0x03, + 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x9E, 0xE9, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9E, 0xEB, 0x6A, 0x44, 0x7F, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, + 0x01, 0x41, 0x9A, 0xF0, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x09, 0x7F, + 0x87, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x11, 0xB1, 0x00, + 0x00, 0x00, 0x01, 0x41, 0x9F, 0x0E, 0x45, 0x15, 0x2C, 0x9F, 0x00, 0x00, + 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x9F, 0x2D, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x2F, 0x6A, 0x44, + 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x01, 0x41, 0x9B, 0x34, 0x49, 0xA8, 0x41, 0x6C, 0x99, 0x4C, 0x0B, + 0xFF, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x20, + 0xE0, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x52, 0x45, 0x15, 0x2C, 0x9F, + 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8D, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x9F, 0x71, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, 0x73, + 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0x78, 0x49, 0xA8, 0x41, 0x6C, 0x99, + 0x4C, 0x09, 0x3F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x01, 0xE1, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9F, 0x96, 0x45, 0x15, 0x2C, + 0x9F, 0x00, 0x00, 0x03, 0x02, 0xFA, 0xBD, 0x4E, 0x00, 0x04, 0x8C, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x9F, 0xB5, 0x74, 0x44, 0x7F, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x03, 0xFD, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9F, + 0xB7, 0x6A, 0x44, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x03, + 0xFD, 0x00, 0x00, 0x00, 0x01, 0x41, 0x9B, 0xB9, 0x49, 0xA8, 0x41, 0x6C, + 0x99, 0x4C, 0x08, 0x8F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x07, 0x1C +}; diff --git a/components/drivers/usb/cherryusb/demo/cherryusb_mjpeg.h b/components/drivers/usb/cherryusb/demo/cherryusb_mjpeg.h new file mode 100644 index 0000000000..ce92b4adc0 --- /dev/null +++ b/components/drivers/usb/cherryusb/demo/cherryusb_mjpeg.h @@ -0,0 +1,2067 @@ +const unsigned char cherryusb_mjpeg[24775] = { + 0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, + 0x01, 0x02, 0x00, 0x1D, 0x00, 0x1A, 0x00, 0x00, 0xFF, 0xDB, 0x00, 0x43, + 0x00, 0x14, 0x0E, 0x0F, 0x12, 0x0F, 0x0D, 0x14, 0x12, 0x10, 0x12, 0x17, + 0x15, 0x14, 0x18, 0x1E, 0x32, 0x21, 0x1E, 0x1C, 0x1C, 0x1E, 0x3D, 0x2C, + 0x2E, 0x24, 0x32, 0x49, 0x40, 0x4C, 0x4B, 0x47, 0x40, 0x46, 0x45, 0x50, + 0x5A, 0x73, 0x62, 0x50, 0x55, 0x6D, 0x56, 0x45, 0x46, 0x64, 0x88, 0x65, + 0x6D, 0x77, 0x7B, 0x81, 0x82, 0x81, 0x4E, 0x60, 0x8D, 0x97, 0x8C, 0x7D, + 0x96, 0x73, 0x7E, 0x81, 0x7C, 0xFF, 0xDB, 0x00, 0x43, 0x01, 0x15, 0x17, + 0x17, 0x1E, 0x1A, 0x1E, 0x3B, 0x21, 0x21, 0x3B, 0x7C, 0x53, 0x46, 0x53, + 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, + 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, + 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, + 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, + 0x7C, 0x7C, 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x01, 0xE0, 0x02, 0x80, 0x03, + 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xFF, 0xC4, 0x00, + 0x1B, 0x00, 0x01, 0x00, 0x01, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x02, 0x04, 0x05, + 0x06, 0x07, 0xFF, 0xC4, 0x00, 0x46, 0x10, 0x00, 0x01, 0x02, 0x02, 0x05, + 0x07, 0x08, 0x08, 0x06, 0x02, 0x01, 0x05, 0x01, 0x00, 0x03, 0x00, 0x01, + 0x00, 0x02, 0x03, 0x04, 0x05, 0x11, 0x12, 0x15, 0x91, 0x16, 0x21, 0x51, + 0x53, 0x54, 0x92, 0xB1, 0x13, 0x14, 0x31, 0x34, 0x52, 0x72, 0x73, 0xA1, + 0x06, 0x33, 0x35, 0x41, 0x93, 0xA2, 0xC1, 0xE1, 0x22, 0x32, 0x44, 0x61, + 0x71, 0x81, 0x63, 0x82, 0x23, 0x24, 0x42, 0x62, 0x83, 0xD1, 0xF0, 0x43, + 0xB2, 0xF1, 0xFF, 0xC4, 0x00, 0x19, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x02, 0x03, 0x04, 0x05, 0xFF, 0xC4, 0x00, 0x23, 0x11, 0x01, 0x00, + 0x02, 0x02, 0x01, 0x04, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x11, 0x02, 0x12, 0x51, 0x21, 0x31, 0x32, 0xB1, + 0x13, 0x14, 0x61, 0x03, 0x04, 0x41, 0xFF, 0xDA, 0x00, 0x0C, 0x03, 0x01, + 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3F, 0x00, 0xC7, 0x73, 0x8D, 0xA3, + 0x9C, 0xF4, 0xAA, 0x5A, 0x76, 0x93, 0x8A, 0x3B, 0xF3, 0x1F, 0xE5, 0x51, + 0x79, 0x9F, 0x6A, 0x65, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, + 0x54, 0x44, 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, + 0x44, 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, 0x44, + 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, 0x44, 0x2D, + 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, 0x44, 0x2D, 0x5B, + 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, 0x44, 0x2D, 0x5B, 0x4E, + 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, 0x44, 0x2D, 0x5B, 0x4E, 0xD2, + 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, 0x44, 0x2D, 0x5B, 0x4E, 0xD2, 0x71, + 0x4B, 0x4E, 0xD2, 0x71, 0x54, 0x44, 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, + 0x4E, 0xD2, 0x71, 0x54, 0x44, 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, + 0xD2, 0x71, 0x54, 0x44, 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, + 0x71, 0x54, 0x44, 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, + 0x54, 0x44, 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, + 0x44, 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, 0x44, + 0x2D, 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x54, 0x44, 0x2D, + 0x5B, 0x4E, 0xD2, 0x71, 0x4B, 0x4E, 0xD2, 0x71, 0x59, 0x8F, 0x64, 0x09, + 0x46, 0x43, 0x6C, 0x58, 0x5C, 0xB4, 0x57, 0xB4, 0x39, 0xD5, 0xB8, 0x80, + 0xD0, 0x7A, 0x06, 0x6F, 0x7A, 0xAC, 0x28, 0x52, 0xB1, 0xE6, 0xE5, 0x84, + 0x30, 0x43, 0x62, 0x1A, 0x9F, 0x0C, 0x93, 0xF8, 0x7F, 0xB5, 0x69, 0x8D, + 0xFF, 0x00, 0xEB, 0x0A, 0xD3, 0xB4, 0x9C, 0x52, 0xD3, 0xB4, 0x9C, 0x56, + 0x44, 0x49, 0x28, 0xAC, 0x63, 0xDF, 0xF8, 0x08, 0x67, 0xE6, 0x68, 0x70, + 0x25, 0xBF, 0xC8, 0x48, 0x72, 0x31, 0x9E, 0xD6, 0x9F, 0xC0, 0xD2, 0xFC, + 0xEC, 0x6B, 0x9E, 0x01, 0x77, 0xF0, 0x12, 0x97, 0x78, 0xE5, 0x8F, 0x69, + 0xDA, 0x4E, 0x29, 0x69, 0xDA, 0x4E, 0x2A, 0x68, 0x52, 0x71, 0xA2, 0x87, + 0x90, 0x03, 0x43, 0x1D, 0x65, 0xC5, 0xC6, 0xAB, 0x27, 0xF7, 0x55, 0xE6, + 0x71, 0x44, 0x1E, 0x58, 0xD8, 0x10, 0xC8, 0x24, 0x12, 0xE1, 0x9E, 0xA3, + 0x56, 0x6D, 0x3D, 0x09, 0x46, 0xF1, 0xCA, 0x0B, 0x4E, 0xD2, 0x71, 0x4B, + 0x4E, 0xD2, 0x71, 0x52, 0xF3, 0x48, 0xBC, 0xE7, 0x9B, 0xD9, 0x1C, 0xA7, + 0xF3, 0x9B, 0xA2, 0xBE, 0x9F, 0xE1, 0x5F, 0x16, 0x0B, 0x1B, 0x23, 0x06, + 0x28, 0x1F, 0x8D, 0xCE, 0x70, 0x26, 0xBE, 0x9A, 0xAA, 0x4A, 0x37, 0x86, + 0x3D, 0xA7, 0x69, 0x38, 0xA5, 0xA7, 0x69, 0x38, 0xAC, 0x86, 0xC1, 0x61, + 0xA3, 0xCC, 0x53, 0x99, 0xFC, 0xB0, 0x65, 0x75, 0xFB, 0xAA, 0x59, 0x13, + 0x30, 0x60, 0xCA, 0xC5, 0xB0, 0xE9, 0x47, 0xBE, 0x18, 0xAB, 0xFE, 0x52, + 0xE3, 0xF8, 0xBF, 0x71, 0xEE, 0x4A, 0x4F, 0x93, 0xAD, 0x35, 0xF6, 0x9D, + 0xA4, 0xE2, 0x96, 0x9D, 0xA4, 0xE2, 0xB3, 0xA5, 0xE0, 0x40, 0x26, 0x69, + 0xC1, 0xA6, 0x3B, 0x21, 0x80, 0x59, 0xD2, 0x2B, 0xCE, 0xA8, 0xF8, 0x30, + 0x9F, 0x29, 0x16, 0x2F, 0x20, 0xE9, 0x77, 0x30, 0x8A, 0xAB, 0x71, 0x21, + 0xF5, 0xFB, 0xB3, 0xAB, 0x49, 0xF2, 0x75, 0xA6, 0x15, 0xA7, 0x69, 0x38, + 0xA5, 0xA7, 0x69, 0x38, 0xAA, 0x22, 0xCB, 0xA5, 0xAB, 0x69, 0xDA, 0x4E, + 0x29, 0x69, 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x29, + 0x69, 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x29, 0x69, + 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x29, 0x69, 0xDA, + 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x29, 0x69, 0xDA, 0x4E, + 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x29, 0x69, 0xDA, 0x4E, 0x2A, + 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x29, 0x69, 0xDA, 0x4E, 0x2A, 0x88, + 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x29, 0x69, 0xDA, 0x4E, 0x2A, 0x88, 0x85, + 0xAB, 0x69, 0xDA, 0x4E, 0x29, 0x69, 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, + 0x69, 0xDA, 0x4E, 0x29, 0x69, 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, + 0xDA, 0x4E, 0x29, 0x69, 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, + 0x4E, 0x29, 0x69, 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, + 0x29, 0x69, 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x29, + 0x69, 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x29, 0x69, + 0xDA, 0x4E, 0x2A, 0x88, 0x85, 0xAB, 0x69, 0xDA, 0x4E, 0x2A, 0xAD, 0x71, + 0xB4, 0x33, 0x9E, 0x95, 0x6A, 0xAB, 0x7F, 0x30, 0xFE, 0x50, 0x89, 0x1D, + 0xF9, 0x8F, 0xF2, 0xA8, 0xAA, 0xEF, 0xCC, 0x7F, 0x95, 0x44, 0x24, 0x44, + 0x45, 0x50, 0x44, 0x44, 0x04, 0x44, 0x40, 0x44, 0x44, 0x04, 0x44, 0x40, + 0x44, 0x44, 0x04, 0x44, 0x40, 0x44, 0x44, 0x04, 0x44, 0x40, 0x44, 0x44, + 0x04, 0x44, 0x40, 0x44, 0x44, 0x04, 0x44, 0x40, 0x44, 0x44, 0x04, 0x44, + 0x40, 0x44, 0x44, 0x19, 0xD1, 0x9A, 0xC9, 0xD6, 0xC3, 0x88, 0xD8, 0xD0, + 0xD9, 0x10, 0x30, 0x35, 0xED, 0x88, 0xEB, 0x39, 0xC7, 0xBC, 0x15, 0x74, + 0x13, 0x2D, 0x2D, 0x35, 0x2A, 0x03, 0xDA, 0xE7, 0x35, 0xD5, 0xC5, 0x88, + 0x09, 0xB3, 0xFC, 0x05, 0xAF, 0x45, 0x6D, 0x8D, 0x3A, 0x55, 0xF4, 0x65, + 0x4B, 0x44, 0x6B, 0x44, 0xD5, 0xA7, 0x00, 0x5F, 0x0C, 0x81, 0x5F, 0xBC, + 0xD6, 0x16, 0x5B, 0xA2, 0xB2, 0x3F, 0x25, 0x11, 0xAE, 0x96, 0x68, 0x0C, + 0x68, 0x77, 0x29, 0xF9, 0x9A, 0x47, 0xED, 0xEF, 0x5A, 0xA4, 0x4B, 0x27, + 0x08, 0x99, 0xB6, 0x74, 0x69, 0x86, 0xC4, 0x96, 0x99, 0xFC, 0x60, 0xB9, + 0xF1, 0x83, 0x86, 0x6A, 0xAB, 0x19, 0xF3, 0xD4, 0xA2, 0x98, 0x88, 0xD7, + 0x4A, 0x4A, 0xB1, 0xAE, 0xAC, 0xB1, 0xAE, 0xAC, 0x68, 0xAD, 0xC5, 0x63, + 0x22, 0x96, 0x46, 0x11, 0x0D, 0x9F, 0x2A, 0xD1, 0x47, 0x09, 0x8F, 0xFF, + 0x00, 0x98, 0xB7, 0x90, 0x1F, 0xC6, 0x9C, 0x33, 0x28, 0x59, 0x62, 0x62, + 0x45, 0x90, 0x79, 0x56, 0x43, 0x89, 0x0D, 0xE4, 0xD4, 0xF3, 0x50, 0x70, + 0x3F, 0xBA, 0xC7, 0x8B, 0x1E, 0x24, 0x60, 0xC0, 0xF2, 0x2A, 0x60, 0xA9, + 0xA0, 0x00, 0x00, 0xC1, 0x44, 0xAD, 0xA4, 0x60, 0xCD, 0x88, 0x61, 0x40, + 0x93, 0x6C, 0xB9, 0x88, 0xD8, 0xAE, 0x31, 0x43, 0xDD, 0x60, 0xD6, 0x00, + 0xAA, 0xAA, 0xAB, 0xD2, 0xA5, 0x60, 0x7C, 0x27, 0xD7, 0x29, 0x3C, 0xC6, + 0xC1, 0x26, 0xB0, 0x1C, 0xFA, 0xAA, 0x1F, 0xBB, 0x56, 0xB5, 0x12, 0xD7, + 0x46, 0xD1, 0x91, 0xE1, 0x18, 0xF3, 0xA6, 0x04, 0x56, 0xC1, 0x11, 0x00, + 0x0C, 0x75, 0x76, 0x73, 0xD7, 0x9F, 0xF8, 0xF7, 0xAB, 0x0C, 0x5B, 0x12, + 0xD1, 0x9B, 0x31, 0x34, 0xD9, 0x8B, 0x4D, 0xA9, 0x8C, 0x0E, 0x2E, 0xA8, + 0xE9, 0xAC, 0xF4, 0x2D, 0x72, 0x25, 0xA7, 0xC7, 0x02, 0x22, 0x28, 0xE8, + 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, + 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, + 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, + 0x22, 0x02, 0xAB, 0x7F, 0x30, 0xFE, 0x55, 0x15, 0x5B, 0xF9, 0x87, 0xF2, + 0xA2, 0xC7, 0x76, 0xF2, 0x17, 0xA3, 0xED, 0x8D, 0x09, 0x91, 0x39, 0xC9, + 0x16, 0xDA, 0x1D, 0x55, 0x8E, 0x8A, 0xFF, 0x00, 0xB5, 0x7E, 0x4D, 0xB7, + 0x6A, 0x3B, 0x9F, 0x75, 0xB7, 0x94, 0xEA, 0x70, 0x7C, 0x36, 0xF0, 0x5A, + 0x53, 0x49, 0xCD, 0x57, 0xEB, 0x06, 0xE8, 0x5D, 0x27, 0x5C, 0x7B, 0xBE, + 0x66, 0x7F, 0xE9, 0xCF, 0x19, 0xEF, 0xE9, 0x7E, 0x4D, 0xB7, 0x6A, 0x3B, + 0x9F, 0x74, 0xC9, 0xB6, 0xED, 0x47, 0x73, 0xEE, 0xAC, 0xBD, 0x26, 0xF5, + 0x83, 0x74, 0x25, 0xE9, 0x37, 0xAC, 0x1B, 0xA1, 0x67, 0x6C, 0x38, 0x63, + 0xED, 0xE7, 0xCF, 0xA5, 0xF9, 0x36, 0xDD, 0xA8, 0xEE, 0x7D, 0xD3, 0x26, + 0xDB, 0xB5, 0x1D, 0xCF, 0xBA, 0xB2, 0xF4, 0x9B, 0xD6, 0x0D, 0xD0, 0x97, + 0xA4, 0xDE, 0xB0, 0x6E, 0x84, 0xDB, 0x0E, 0x0F, 0xB7, 0x9F, 0x3E, 0x97, + 0xE4, 0xDB, 0x76, 0xA3, 0xB9, 0xF7, 0x4C, 0x9B, 0x6E, 0xD4, 0x77, 0x3E, + 0xEA, 0xCB, 0xD2, 0x6F, 0x58, 0x37, 0x42, 0x5E, 0x93, 0x7A, 0xC1, 0xBA, + 0x13, 0x6C, 0x38, 0x3E, 0xDE, 0x7C, 0xFA, 0x5F, 0x93, 0x6D, 0xDA, 0x8E, + 0xE7, 0xDD, 0x32, 0x6D, 0xBB, 0x51, 0xDC, 0xFB, 0xAB, 0x2F, 0x49, 0xBD, + 0x60, 0xDD, 0x09, 0x7A, 0x4D, 0xEB, 0x06, 0xE8, 0x4D, 0xB0, 0xE0, 0xFB, + 0x79, 0xF3, 0xE9, 0x7E, 0x4D, 0xB7, 0x6A, 0x3B, 0x9F, 0x74, 0xC9, 0xB6, + 0xED, 0x47, 0x73, 0xEE, 0xAC, 0xBD, 0x26, 0xF5, 0x83, 0x74, 0x25, 0xE9, + 0x37, 0xAC, 0x1B, 0xA1, 0x36, 0xC3, 0x83, 0xED, 0xE7, 0xCF, 0xA5, 0xF9, + 0x36, 0xDD, 0xA8, 0xEE, 0x7D, 0xD3, 0x26, 0xDB, 0xB5, 0x1D, 0xCF, 0xBA, + 0xB2, 0xF4, 0x9B, 0xD6, 0x0D, 0xD0, 0x97, 0xA4, 0xDE, 0xB0, 0x6E, 0x84, + 0xDB, 0x0E, 0x0F, 0xB7, 0x9F, 0x3E, 0x97, 0xE4, 0xDB, 0x76, 0xA3, 0xB9, + 0xF7, 0x4C, 0x9B, 0x6E, 0xD4, 0x77, 0x3E, 0xEA, 0xCB, 0xD2, 0x6F, 0x58, + 0x37, 0x42, 0x5E, 0x93, 0x7A, 0xC1, 0xBA, 0x13, 0x6C, 0x38, 0x3E, 0xDE, + 0x7C, 0xFA, 0x5F, 0x93, 0x6D, 0xDA, 0x8E, 0xE7, 0xDD, 0x32, 0x6D, 0xBB, + 0x51, 0xDC, 0xFB, 0xAB, 0x2F, 0x49, 0xBD, 0x60, 0xDD, 0x09, 0x7A, 0x4D, + 0xEB, 0x06, 0xE8, 0x4D, 0xB0, 0xE0, 0xFB, 0x79, 0xF3, 0xE9, 0x7E, 0x4D, + 0xB7, 0x6A, 0x3B, 0x9F, 0x74, 0xC9, 0xB6, 0xED, 0x47, 0x73, 0xEE, 0xAC, + 0xBD, 0x26, 0xF5, 0x83, 0x74, 0x25, 0xE9, 0x37, 0xAC, 0x1B, 0xA1, 0x36, + 0xC3, 0x83, 0xED, 0xE7, 0xCF, 0xA5, 0xF9, 0x36, 0xDD, 0xA8, 0xEE, 0x7D, + 0xD3, 0x26, 0xDB, 0xB5, 0x1D, 0xCF, 0xBA, 0xB2, 0xF4, 0x9B, 0xD6, 0x0D, + 0xD0, 0x97, 0xA4, 0xDE, 0xB0, 0x6E, 0x84, 0xDB, 0x0E, 0x0F, 0xB7, 0x9F, + 0x3E, 0x97, 0xE4, 0xDB, 0x76, 0xA3, 0xB9, 0xF7, 0x4C, 0x9B, 0x6E, 0xD4, + 0x77, 0x3E, 0xEA, 0xCB, 0xD2, 0x6F, 0x58, 0x37, 0x42, 0x5E, 0x93, 0x7A, + 0xC1, 0xBA, 0x13, 0x6C, 0x38, 0x3E, 0xDE, 0x7C, 0xFA, 0x5F, 0x93, 0x6D, + 0xDA, 0x8E, 0xE7, 0xDD, 0x32, 0x6D, 0xBB, 0x51, 0xDC, 0xFB, 0xAB, 0x2F, + 0x49, 0xBD, 0x60, 0xDD, 0x09, 0x7A, 0x4D, 0xEB, 0x06, 0xE8, 0x4D, 0xB0, + 0xE0, 0xFB, 0x79, 0xF3, 0xE9, 0x7E, 0x4D, 0xB7, 0x6A, 0x3B, 0x9F, 0x74, + 0xC9, 0xB6, 0xED, 0x47, 0x73, 0xEE, 0xAC, 0xBD, 0x26, 0xF5, 0x83, 0x74, + 0x25, 0xE9, 0x37, 0xAC, 0x1B, 0xA1, 0x36, 0xC3, 0x83, 0xED, 0xE7, 0xCF, + 0xA5, 0xF9, 0x36, 0xDD, 0xA8, 0xEE, 0x7D, 0xD3, 0x26, 0xDB, 0xB5, 0x1D, + 0xCF, 0xBA, 0xB2, 0xF4, 0x9B, 0xD6, 0x0D, 0xD0, 0x97, 0xA4, 0xDE, 0xB0, + 0x6E, 0x84, 0xDB, 0x0E, 0x0F, 0xB7, 0x9F, 0x3E, 0x97, 0xE4, 0xDB, 0x76, + 0xA3, 0xB9, 0xF7, 0x4C, 0x9B, 0x6E, 0xD4, 0x77, 0x3E, 0xEA, 0xCB, 0xD2, + 0x6F, 0x58, 0x37, 0x42, 0x5E, 0x93, 0x7A, 0xC1, 0xBA, 0x13, 0x6C, 0x38, + 0x3E, 0xDE, 0x7C, 0xFA, 0x5F, 0x93, 0x6D, 0xDA, 0x8E, 0xE7, 0xDD, 0x32, + 0x6D, 0xBB, 0x51, 0xDC, 0xFB, 0xAB, 0x2F, 0x49, 0xBD, 0x60, 0xDD, 0x09, + 0x7A, 0x4D, 0xEB, 0x06, 0xE8, 0x4D, 0xB0, 0xE0, 0xFB, 0x79, 0xF3, 0xE9, + 0x7E, 0x4D, 0xB7, 0x6A, 0x3B, 0x9F, 0x74, 0xC9, 0xB6, 0xED, 0x47, 0x73, + 0xEE, 0xAC, 0xBD, 0x26, 0xF5, 0x83, 0x74, 0x25, 0xE9, 0x37, 0xAC, 0x1B, + 0xA1, 0x36, 0xC3, 0x83, 0xED, 0xE7, 0xCF, 0xA5, 0xF9, 0x36, 0xDD, 0xA8, + 0xEE, 0x7D, 0xD3, 0x26, 0xDB, 0xB5, 0x1D, 0xCF, 0xBA, 0xB2, 0xF4, 0x9B, + 0xD6, 0x0D, 0xD0, 0x97, 0xA4, 0xDE, 0xB0, 0x6E, 0x84, 0xDB, 0x0E, 0x0F, + 0xB7, 0x9F, 0x3E, 0x97, 0xE4, 0xDB, 0x76, 0xA3, 0xB9, 0xF7, 0x4C, 0x9B, + 0x6E, 0xD4, 0x77, 0x3E, 0xEA, 0xCB, 0xD2, 0x6F, 0x58, 0x37, 0x42, 0xCE, + 0xA2, 0xE6, 0xE3, 0x4C, 0xC4, 0x88, 0x22, 0xB8, 0x10, 0x05, 0x63, 0x30, + 0x0A, 0xC4, 0xE1, 0x33, 0x44, 0x7F, 0xAB, 0x39, 0xFF, 0x00, 0xBE, 0x98, + 0x99, 0x36, 0xDD, 0xA8, 0xEE, 0x7D, 0xD3, 0x26, 0xDB, 0xB5, 0x1D, 0xCF, + 0xBA, 0xC9, 0xA5, 0xA7, 0x23, 0xCA, 0xC4, 0x86, 0x20, 0xB8, 0x34, 0x10, + 0x49, 0xCC, 0x0A, 0xD7, 0xDE, 0xD3, 0x9A, 0xC1, 0xBA, 0x17, 0x78, 0xFE, + 0x37, 0x16, 0x4F, 0xFA, 0xB3, 0x8F, 0xFB, 0xE9, 0x3E, 0x4D, 0xB7, 0x6A, + 0x3B, 0x9F, 0x74, 0xC9, 0xB6, 0xED, 0x47, 0x73, 0xEE, 0xA0, 0xBD, 0xA7, + 0x35, 0x83, 0x74, 0x25, 0xED, 0x39, 0xAC, 0x1B, 0xA1, 0x5F, 0x80, 0xFB, + 0x79, 0xF3, 0xE9, 0x3E, 0x4D, 0xB7, 0x6A, 0x3B, 0x9F, 0x74, 0xC9, 0xB6, + 0xED, 0x47, 0x73, 0xEE, 0xA0, 0xBD, 0xA7, 0x35, 0x83, 0x74, 0x25, 0xED, + 0x39, 0xAC, 0x1B, 0xA1, 0x3E, 0x03, 0xED, 0xE7, 0xCF, 0xA4, 0xF9, 0x36, + 0xDD, 0xA8, 0xEE, 0x7D, 0xD3, 0x26, 0xDB, 0xB5, 0x1D, 0xCF, 0xBA, 0x82, + 0xF6, 0x9C, 0xD6, 0x0D, 0xD0, 0x97, 0xB4, 0xE6, 0xB0, 0x6E, 0x84, 0xF8, + 0x0F, 0xB7, 0x9F, 0x3E, 0x93, 0xE4, 0xDB, 0x76, 0xA3, 0xB9, 0xF7, 0x4C, + 0x9B, 0x6E, 0xD4, 0x77, 0x3E, 0xEA, 0x0B, 0xDA, 0x73, 0x58, 0x37, 0x42, + 0x5E, 0xD3, 0x9A, 0xC1, 0xBA, 0x13, 0xE0, 0x3E, 0xDE, 0x7C, 0xFA, 0x4F, + 0x93, 0x6D, 0xDA, 0x8E, 0xE7, 0xDD, 0x32, 0x6D, 0xBB, 0x51, 0xDC, 0xFB, + 0xA8, 0x2F, 0x69, 0xCD, 0x60, 0xDD, 0x09, 0x7B, 0x4E, 0x6B, 0x06, 0xE8, + 0x4F, 0x80, 0xFB, 0x79, 0xF3, 0xE9, 0x3E, 0x4D, 0xB7, 0x6A, 0x3B, 0x9F, + 0x74, 0xC9, 0xB6, 0xED, 0x47, 0x73, 0xEE, 0xA0, 0xBD, 0xA7, 0x35, 0x83, + 0x74, 0x25, 0xED, 0x39, 0xAC, 0x1B, 0xA1, 0x3E, 0x03, 0xED, 0xE7, 0xCF, + 0xA4, 0xF9, 0x36, 0xDD, 0xA8, 0xEE, 0x7D, 0xD3, 0x26, 0xDB, 0xB5, 0x1D, + 0xCF, 0xBA, 0x82, 0xF6, 0x9C, 0xD6, 0x0D, 0xD0, 0x97, 0xB4, 0xE6, 0xB0, + 0x6E, 0x84, 0xF8, 0x0F, 0xB7, 0x9F, 0x3E, 0x93, 0xE4, 0xDB, 0x76, 0xA3, + 0xB9, 0xF7, 0x4C, 0x9B, 0x6E, 0xD4, 0x77, 0x3E, 0xEA, 0x0B, 0xDA, 0x73, + 0x58, 0x37, 0x42, 0x5E, 0xD3, 0x9A, 0xC1, 0xBA, 0x13, 0xE0, 0x3E, 0xDE, + 0x7C, 0xFA, 0x4F, 0x93, 0x6D, 0xDA, 0x8E, 0xE7, 0xDD, 0x32, 0x6D, 0xBB, + 0x51, 0xDC, 0xFB, 0xA8, 0x2F, 0x69, 0xCD, 0x60, 0xDD, 0x09, 0x7B, 0x4E, + 0x6B, 0x06, 0xE8, 0x4F, 0x80, 0xFB, 0x79, 0xF3, 0xE9, 0x3E, 0x4D, 0xB7, + 0x6A, 0x3B, 0x9F, 0x74, 0xC9, 0xB6, 0xED, 0x47, 0x73, 0xEE, 0xA0, 0xBD, + 0xA7, 0x35, 0x83, 0x74, 0x25, 0xED, 0x39, 0xAC, 0x1B, 0xA1, 0x3E, 0x03, + 0xED, 0xE7, 0xCF, 0xA4, 0xF9, 0x36, 0xDD, 0xA8, 0xEE, 0x7D, 0xD3, 0x26, + 0xDB, 0xB5, 0x1D, 0xCF, 0xBA, 0x82, 0xF6, 0x9C, 0xD6, 0x0D, 0xD0, 0x97, + 0xB4, 0xE6, 0xB0, 0x6E, 0x84, 0xF8, 0x0F, 0xB7, 0x9F, 0x3E, 0x93, 0xE4, + 0xDB, 0x76, 0xA3, 0xB9, 0xF7, 0x4C, 0x9B, 0x6E, 0xD4, 0x77, 0x3E, 0xEA, + 0x0B, 0xDA, 0x73, 0x58, 0x37, 0x42, 0x5E, 0xD3, 0x9A, 0xC1, 0xBA, 0x13, + 0xE0, 0x3E, 0xDE, 0x7C, 0xFA, 0x4F, 0x93, 0x6D, 0xDA, 0x8E, 0xE7, 0xDD, + 0x32, 0x6D, 0xBB, 0x51, 0xDC, 0xFB, 0xA8, 0x2F, 0x69, 0xCD, 0x60, 0xDD, + 0x09, 0x7B, 0x4E, 0x6B, 0x06, 0xE8, 0x4F, 0x80, 0xFB, 0x79, 0xF3, 0xE9, + 0x3E, 0x4D, 0xB7, 0x6A, 0x3B, 0x9F, 0x74, 0xC9, 0xB6, 0xED, 0x47, 0x73, + 0xEE, 0xA0, 0xBD, 0xA7, 0x35, 0x83, 0x74, 0x25, 0xED, 0x39, 0xAC, 0x1B, + 0xA1, 0x3E, 0x03, 0xED, 0xE7, 0xCF, 0xA4, 0xF9, 0x36, 0xDD, 0xA8, 0xEE, + 0x7D, 0xD3, 0x26, 0xDB, 0xB5, 0x1D, 0xCF, 0xBA, 0x82, 0xF6, 0x9C, 0xD6, + 0x0D, 0xD0, 0x97, 0xB4, 0xE6, 0xB0, 0x6E, 0x84, 0xF8, 0x0F, 0xB7, 0x9F, + 0x3E, 0x93, 0xE4, 0xDB, 0x76, 0xA3, 0xB9, 0xF7, 0x4C, 0x9B, 0x6E, 0xD4, + 0x77, 0x3E, 0xEA, 0x0B, 0xDA, 0x73, 0x58, 0x37, 0x42, 0x5E, 0xD3, 0x9A, + 0xC1, 0xBA, 0x13, 0xE0, 0x3E, 0xDE, 0x7C, 0xFA, 0x4F, 0x93, 0x6D, 0xDA, + 0x8E, 0xE7, 0xDD, 0x32, 0x6D, 0xBB, 0x51, 0xDC, 0xFB, 0xA8, 0x2F, 0x69, + 0xCD, 0x60, 0xDD, 0x09, 0x7B, 0x4E, 0x6B, 0x06, 0xE8, 0x4F, 0x80, 0xFB, + 0x79, 0xF3, 0xE9, 0x3E, 0x4D, 0xB7, 0x6A, 0x3B, 0x9F, 0x74, 0xC9, 0xB6, + 0xED, 0x47, 0x73, 0xEE, 0xA0, 0xBD, 0xA7, 0x35, 0x83, 0x74, 0x25, 0xED, + 0x39, 0xAC, 0x1B, 0xA1, 0x3E, 0x03, 0xED, 0xE7, 0xCF, 0xA4, 0xF9, 0x36, + 0xDD, 0xA8, 0xEE, 0x7D, 0xD5, 0x91, 0x7D, 0x1F, 0x6C, 0x18, 0x4F, 0x89, + 0xCE, 0x49, 0xB0, 0xD2, 0xEA, 0xAC, 0x74, 0xD5, 0xFD, 0xAB, 0x05, 0x2D, + 0x39, 0x5F, 0xAC, 0x1B, 0xA1, 0x6F, 0x66, 0xBA, 0x9C, 0x6F, 0x0D, 0xDC, + 0x16, 0x32, 0xFE, 0x51, 0x8B, 0x78, 0x7F, 0xA7, 0x3C, 0xA7, 0xBF, 0xA2, + 0x57, 0xA9, 0x41, 0xF0, 0xDB, 0xC1, 0x73, 0x47, 0xA4, 0xAE, 0x96, 0x57, + 0xA9, 0x41, 0xF0, 0xDB, 0xC1, 0x73, 0x44, 0x1A, 0xCE, 0x65, 0xC7, 0xFA, + 0x76, 0x87, 0x9B, 0xFB, 0x79, 0x28, 0x8A, 0xB5, 0x1D, 0x09, 0x51, 0xD0, + 0xB9, 0x38, 0xA8, 0x8A, 0xB5, 0x1D, 0x09, 0x51, 0xD0, 0x82, 0x88, 0xAB, + 0x51, 0xD0, 0x95, 0x1D, 0x08, 0x28, 0x8A, 0xB5, 0x1D, 0x09, 0x51, 0xD0, + 0x82, 0x88, 0xAB, 0x51, 0xD0, 0x95, 0x1D, 0x08, 0x28, 0x8A, 0xB5, 0x1D, + 0x09, 0x51, 0xD0, 0x82, 0x88, 0xAB, 0x51, 0xD0, 0x95, 0x1D, 0x08, 0x32, + 0x20, 0xB0, 0xC4, 0x95, 0x88, 0xD6, 0x00, 0x5F, 0x68, 0x1A, 0xBD, 0xF5, + 0x2C, 0x9A, 0xC7, 0x2B, 0x14, 0x43, 0x6D, 0x79, 0xDA, 0x2B, 0x65, 0x44, + 0x8C, 0xDA, 0x0F, 0xB9, 0x6B, 0xAA, 0x3A, 0x12, 0xA3, 0xA1, 0x6A, 0x32, + 0xA5, 0xB6, 0xCE, 0x18, 0x0D, 0x6B, 0xC3, 0x6A, 0x77, 0xFC, 0xA7, 0xF2, + 0x01, 0xD1, 0x50, 0xD2, 0xB1, 0xE0, 0x86, 0x8A, 0x44, 0x81, 0x64, 0xB6, + 0xB7, 0x55, 0x57, 0x47, 0x41, 0x58, 0x95, 0x1D, 0x09, 0x51, 0xD0, 0xAE, + 0xC5, 0xB3, 0x84, 0x31, 0x10, 0x43, 0x6C, 0xC5, 0x91, 0x12, 0xB7, 0x66, + 0x15, 0x02, 0x45, 0x59, 0xAB, 0xAB, 0xF7, 0x54, 0xE6, 0xF0, 0x5D, 0x10, + 0xB3, 0x3B, 0x48, 0x01, 0xC6, 0xB3, 0xD0, 0x3D, 0xE1, 0x61, 0x54, 0x74, + 0x25, 0x47, 0x42, 0x9B, 0x7E, 0x16, 0xCC, 0x6C, 0x38, 0x71, 0x21, 0xB0, + 0x81, 0x5F, 0xE1, 0x71, 0x6B, 0x2B, 0xE9, 0xCF, 0xD0, 0xAB, 0x0E, 0x5A, + 0x09, 0xB5, 0x69, 0xA6, 0xB0, 0xEA, 0x8B, 0x43, 0xAB, 0xB2, 0x2A, 0x58, + 0x55, 0x1D, 0x09, 0x51, 0xD0, 0x97, 0xF8, 0x58, 0x7A, 0x73, 0x2A, 0x2A, + 0xD4, 0x74, 0x25, 0x47, 0x42, 0xCA, 0x28, 0x8A, 0xB5, 0x1D, 0x09, 0x51, + 0xD0, 0x82, 0x88, 0xAB, 0x51, 0xD0, 0x95, 0x1D, 0x08, 0x28, 0x8A, 0xB5, + 0x1D, 0x09, 0x51, 0xD0, 0x82, 0x88, 0xAB, 0x51, 0xD0, 0x95, 0x1D, 0x08, + 0x28, 0x8A, 0xB5, 0x1D, 0x09, 0x51, 0xD0, 0x82, 0x88, 0xAB, 0x51, 0xD0, + 0x95, 0x1D, 0x08, 0x28, 0xB6, 0x74, 0x27, 0xAD, 0x8B, 0xDD, 0x0B, 0x5B, + 0x51, 0xD0, 0xB6, 0x74, 0x27, 0xAD, 0x8B, 0xDD, 0x0B, 0x78, 0x79, 0x2E, + 0x3D, 0xD1, 0xD3, 0xDE, 0xBA, 0x17, 0x74, 0xF1, 0x5A, 0xA5, 0xB6, 0xA7, + 0x87, 0xFC, 0xD0, 0xBB, 0xA7, 0x8A, 0xD5, 0x54, 0x74, 0x2F, 0xA5, 0x87, + 0x89, 0x97, 0x75, 0x11, 0x56, 0xA3, 0xA1, 0x2A, 0x3A, 0x16, 0x99, 0x51, + 0x15, 0x6A, 0x3A, 0x12, 0xA3, 0xA1, 0x05, 0x11, 0x56, 0xA3, 0xA1, 0x2A, + 0x3A, 0x10, 0x51, 0x15, 0x6A, 0x3A, 0x12, 0xA3, 0xA1, 0x05, 0x11, 0x56, + 0xA3, 0xA1, 0x2A, 0x3A, 0x10, 0x51, 0x15, 0x6A, 0x3A, 0x12, 0xA3, 0xA1, + 0x05, 0x11, 0x56, 0xA3, 0xA1, 0x2A, 0x3A, 0x10, 0x64, 0x49, 0x80, 0xF1, + 0x1D, 0x99, 0x8B, 0x9D, 0x0F, 0xF0, 0x8D, 0x26, 0xB0, 0xB2, 0x5A, 0x2C, + 0x16, 0x30, 0x30, 0x18, 0x82, 0x08, 0x06, 0xC9, 0x16, 0x81, 0xAF, 0xDD, + 0x5F, 0xBD, 0x6B, 0xAA, 0x3A, 0x12, 0xA3, 0xA1, 0x66, 0x62, 0xDA, 0x89, + 0xA6, 0xD1, 0x8D, 0x0D, 0x7C, 0x7A, 0xB3, 0xB8, 0xB5, 0x87, 0xF0, 0xB4, + 0x07, 0x0F, 0xEB, 0xA2, 0xB5, 0x8F, 0x18, 0x36, 0xF1, 0x87, 0x55, 0x9A, + 0x89, 0x6D, 0x63, 0x37, 0xED, 0x5D, 0x7E, 0xEA, 0xD6, 0x1D, 0x47, 0x42, + 0x54, 0x74, 0x24, 0x62, 0x5B, 0x60, 0x1B, 0x2E, 0xF1, 0x30, 0xD1, 0x5B, + 0x41, 0x8A, 0xD0, 0x49, 0x23, 0x36, 0x73, 0xD0, 0xA9, 0xCD, 0xA1, 0x5B, + 0x65, 0xA8, 0x6E, 0x61, 0x2E, 0x70, 0xB0, 0x1D, 0x59, 0x20, 0x0C, 0xC5, + 0x60, 0x54, 0x74, 0x25, 0x47, 0x42, 0x6B, 0xFA, 0x5B, 0x3A, 0x2C, 0x18, + 0x70, 0xE1, 0x4C, 0x06, 0xB0, 0x12, 0x03, 0x48, 0xCF, 0x59, 0x1A, 0x7F, + 0x85, 0x80, 0xAB, 0x51, 0xD0, 0x95, 0x1D, 0x0A, 0xC4, 0x52, 0x4C, 0xA8, + 0x8A, 0xB5, 0x1D, 0x09, 0x51, 0xD0, 0xAA, 0x28, 0x8A, 0xB5, 0x1D, 0x09, + 0x51, 0xD0, 0x82, 0x88, 0xAB, 0x51, 0xD0, 0x95, 0x1D, 0x08, 0x28, 0x8A, + 0xB5, 0x1D, 0x09, 0x51, 0xD0, 0x82, 0x88, 0xAB, 0x51, 0xD0, 0x95, 0x1D, + 0x08, 0x28, 0x8A, 0xB5, 0x1D, 0x09, 0x51, 0xD0, 0x82, 0x88, 0xAB, 0x51, + 0xD0, 0x95, 0x1D, 0x08, 0x03, 0xA4, 0x2E, 0xA6, 0x6B, 0xA9, 0x46, 0xF0, + 0xDD, 0xC1, 0x72, 0xC0, 0x1A, 0xC6, 0x65, 0xD4, 0xCD, 0x75, 0x28, 0xDE, + 0x1B, 0xB8, 0x2E, 0x3F, 0xD7, 0xB3, 0xBF, 0xF1, 0xF2, 0x56, 0x57, 0xA9, + 0x41, 0xF0, 0xDB, 0xC1, 0x56, 0x00, 0x1C, 0xDE, 0x19, 0x20, 0x7E, 0x41, + 0xC1, 0x52, 0x57, 0xA9, 0x41, 0xF0, 0xDB, 0xC1, 0x56, 0x17, 0x55, 0x67, + 0x70, 0x70, 0x5C, 0x61, 0xBC, 0xFC, 0xA5, 0x8C, 0x69, 0x5A, 0x3C, 0x1A, + 0x8C, 0xD4, 0x20, 0x47, 0xEE, 0x97, 0xB5, 0x1D, 0xB5, 0x41, 0xC5, 0x79, + 0xF4, 0x7F, 0x5F, 0x13, 0xBC, 0x78, 0xA8, 0xD5, 0xA6, 0x5E, 0x8B, 0x7B, + 0x51, 0xDB, 0x54, 0x1C, 0x52, 0xF6, 0xA3, 0xB6, 0xA8, 0x38, 0xAF, 0x3A, + 0x44, 0xA1, 0xE8, 0xB7, 0xB5, 0x1D, 0xB5, 0x41, 0xC5, 0x2F, 0x6A, 0x3B, + 0x6A, 0x83, 0x8A, 0xF3, 0xA4, 0x4A, 0x1E, 0x8B, 0x7B, 0x51, 0xDB, 0x54, + 0x1C, 0x52, 0xF6, 0xA3, 0xB6, 0xA8, 0x38, 0xAF, 0x3A, 0x44, 0xA1, 0xE8, + 0xB7, 0xB5, 0x1D, 0xB5, 0x41, 0xC5, 0x2F, 0x6A, 0x3B, 0x6A, 0x83, 0x8A, + 0xF3, 0xA4, 0x4A, 0x1E, 0x8B, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x52, 0xF6, + 0xA3, 0xB6, 0xA8, 0x38, 0xAF, 0x3A, 0x44, 0xA1, 0xE8, 0xB7, 0xB5, 0x1D, + 0xB5, 0x41, 0xC5, 0x2F, 0x6A, 0x3B, 0x6A, 0x83, 0x8A, 0xF3, 0xA4, 0x4A, + 0x1E, 0x8B, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x52, 0xF6, 0xA3, 0xB6, 0xA8, + 0x38, 0xAF, 0x3A, 0x44, 0xA1, 0xE8, 0xB7, 0xB5, 0x1D, 0xB5, 0x41, 0xC5, + 0x5F, 0x0A, 0x91, 0x91, 0x8D, 0x11, 0xB0, 0xE1, 0x4C, 0x42, 0x7B, 0xDD, + 0x98, 0x00, 0x7A, 0x57, 0x9B, 0xAC, 0xEA, 0x1B, 0x35, 0x27, 0x06, 0xAD, + 0x28, 0x3D, 0x06, 0x34, 0x48, 0x50, 0x21, 0x98, 0x91, 0x5C, 0xD6, 0x30, + 0x74, 0x93, 0xEE, 0x58, 0xB7, 0xB5, 0x1D, 0xB5, 0x41, 0xC5, 0x43, 0xE9, + 0x0F, 0xB1, 0x23, 0xFF, 0x00, 0x03, 0x8A, 0xE0, 0x10, 0x7A, 0x2D, 0xED, + 0x47, 0x6D, 0x50, 0x71, 0x4B, 0xDA, 0x8E, 0xDA, 0xA0, 0xE2, 0xBC, 0xE9, + 0x12, 0x87, 0xA2, 0xDE, 0xD4, 0x76, 0xD5, 0x07, 0x14, 0xBD, 0xA8, 0xED, + 0xAA, 0x0E, 0x2B, 0xCE, 0x91, 0x28, 0x7A, 0x2D, 0xED, 0x47, 0x6D, 0x50, + 0x71, 0x4B, 0xDA, 0x8E, 0xDA, 0xA0, 0xE2, 0xBC, 0xE9, 0x12, 0x87, 0xA2, + 0xDE, 0xD4, 0x76, 0xD5, 0x07, 0x14, 0xBD, 0xA8, 0xED, 0xAA, 0x0E, 0x2B, + 0xCE, 0x91, 0x28, 0x7A, 0x2D, 0xED, 0x47, 0x6D, 0x50, 0x71, 0x4B, 0xDA, + 0x8E, 0xDA, 0xA0, 0xE2, 0xBC, 0xE9, 0x12, 0x87, 0xA2, 0xDE, 0xD4, 0x76, + 0xD5, 0x07, 0x14, 0xBD, 0xA8, 0xED, 0xAA, 0x0E, 0x2B, 0xCE, 0x91, 0x28, + 0x7A, 0x2D, 0xED, 0x47, 0x6D, 0x50, 0x71, 0x4B, 0xDA, 0x8E, 0xDA, 0xA0, + 0xE2, 0xBC, 0xE9, 0x12, 0x87, 0xA2, 0xDE, 0xD4, 0x76, 0xD5, 0x07, 0x14, + 0xBD, 0xA8, 0xED, 0xAA, 0x0E, 0x2B, 0xCE, 0x91, 0x28, 0x7A, 0x5C, 0xBC, + 0xDC, 0xAC, 0xD1, 0x22, 0x5E, 0x2B, 0x22, 0x16, 0xF4, 0xD9, 0xF7, 0x2B, + 0xEA, 0x02, 0x67, 0x37, 0x63, 0xEA, 0xB9, 0x4F, 0x43, 0xCF, 0xFD, 0x4C, + 0x5F, 0xEB, 0xEA, 0xBA, 0xCF, 0xD4, 0xFF, 0x00, 0xA7, 0xD5, 0x41, 0x4A, + 0x81, 0x9A, 0xCE, 0x3F, 0xEC, 0xFA, 0xAB, 0x26, 0x27, 0x25, 0x65, 0x48, + 0x13, 0x11, 0x59, 0x0C, 0xBB, 0x38, 0xB5, 0xEF, 0x57, 0xFE, 0xA8, 0xF7, + 0x3E, 0xAB, 0x97, 0xF4, 0xD3, 0xD7, 0x4B, 0x77, 0x4F, 0x15, 0xA1, 0xBE, + 0xBD, 0xA8, 0xED, 0xAA, 0x0E, 0x29, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x57, + 0x9D, 0xA2, 0x0F, 0x44, 0xBD, 0xA8, 0xED, 0xAA, 0x0E, 0x29, 0x7B, 0x51, + 0xDB, 0x54, 0x1C, 0x57, 0x9D, 0xA2, 0x0F, 0x44, 0xBD, 0xA8, 0xED, 0xAA, + 0x0E, 0x29, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x57, 0x9D, 0xA2, 0x0F, 0x44, + 0xBD, 0xA8, 0xED, 0xAA, 0x0E, 0x29, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x57, + 0x9D, 0xA2, 0x0F, 0x44, 0xBD, 0xA8, 0xED, 0xAA, 0x0E, 0x29, 0x7B, 0x51, + 0xDB, 0x54, 0x1C, 0x57, 0x9D, 0xA2, 0x0F, 0x44, 0xBD, 0xA8, 0xED, 0xAA, + 0x0E, 0x29, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x57, 0x9D, 0xA2, 0x0F, 0x44, + 0xBD, 0xA8, 0xED, 0xAA, 0x0E, 0x29, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x57, + 0x9D, 0xA2, 0x0F, 0x44, 0xBD, 0xA8, 0xED, 0xAA, 0x0E, 0x29, 0x7B, 0x51, + 0xDB, 0x54, 0x1C, 0x57, 0x9D, 0xA2, 0x0F, 0x44, 0xBD, 0xA8, 0xED, 0xAA, + 0x0E, 0x2B, 0x2E, 0x0C, 0x48, 0x51, 0xE1, 0x88, 0x90, 0x5C, 0xD7, 0xB0, + 0xF4, 0x11, 0xEF, 0x5E, 0x60, 0xBB, 0xFF, 0x00, 0x47, 0x3D, 0x8B, 0x2F, + 0xFC, 0x1E, 0x28, 0x32, 0x22, 0xD2, 0x52, 0x30, 0x62, 0x3A, 0x1C, 0x59, + 0x88, 0x4D, 0x7B, 0x4D, 0x44, 0x13, 0xD0, 0xAC, 0xBD, 0xA8, 0xED, 0xAA, + 0x0E, 0x2B, 0x8C, 0xA7, 0xFD, 0xB3, 0x35, 0xDF, 0x5A, 0xE4, 0x1E, 0x89, + 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x52, 0xF6, 0xA3, 0xB6, 0xA8, 0x38, 0xAF, + 0x3B, 0x44, 0x1E, 0x89, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x52, 0xF6, 0xA3, + 0xB6, 0xA8, 0x38, 0xAF, 0x3B, 0x44, 0x1E, 0x89, 0x7B, 0x51, 0xDB, 0x54, + 0x1C, 0x52, 0xF6, 0xA3, 0xB6, 0xA8, 0x38, 0xAF, 0x3B, 0x44, 0x1E, 0x89, + 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x52, 0xF6, 0xA3, 0xB6, 0xA8, 0x38, 0xAF, + 0x3B, 0x44, 0x1E, 0x89, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x52, 0xF6, 0xA3, + 0xB6, 0xA8, 0x38, 0xAF, 0x3B, 0x44, 0x1E, 0x89, 0x7B, 0x51, 0xDB, 0x54, + 0x1C, 0x52, 0xF6, 0xA3, 0xB6, 0xA8, 0x38, 0xAF, 0x3B, 0x44, 0x1E, 0x89, + 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x52, 0xF6, 0xA3, 0xB6, 0xA8, 0x38, 0xAF, + 0x3B, 0x44, 0x1E, 0x89, 0x7B, 0x51, 0xDB, 0x54, 0x1C, 0x55, 0x45, 0x2D, + 0x47, 0x13, 0x50, 0x9A, 0x84, 0x4F, 0xF2, 0xBC, 0xE9, 0x5F, 0x03, 0xD7, + 0x43, 0xEF, 0x0E, 0x28, 0x3D, 0x2E, 0x60, 0x0E, 0x6D, 0x10, 0x80, 0x3F, + 0x21, 0xE0, 0xAD, 0x9A, 0xEA, 0x51, 0xBC, 0x37, 0x70, 0x55, 0x8D, 0xD5, + 0x1F, 0xE1, 0x9E, 0x0A, 0x93, 0x5D, 0x4A, 0x37, 0x86, 0xEE, 0x0A, 0x4F, + 0x66, 0xB0, 0xF2, 0x85, 0x65, 0x7A, 0x94, 0x1F, 0x0D, 0xBC, 0x15, 0x61, + 0x75, 0x56, 0x77, 0x07, 0x05, 0x49, 0x5E, 0xA5, 0x07, 0xC3, 0x6F, 0x05, + 0x58, 0x5D, 0x55, 0x9D, 0xC1, 0xC1, 0x48, 0x33, 0xF2, 0x97, 0x9A, 0xC7, + 0xF5, 0xF1, 0x3B, 0xC7, 0x8A, 0x8D, 0x49, 0x1F, 0xD7, 0xC4, 0xEF, 0x1E, + 0x2A, 0x35, 0xA8, 0x64, 0x44, 0x44, 0x51, 0x3A, 0x3A, 0x11, 0x10, 0x6D, + 0xB9, 0x48, 0x6D, 0x73, 0x26, 0x1A, 0xE6, 0xDA, 0x9A, 0x7B, 0x2D, 0x0E, + 0xCD, 0x46, 0xB7, 0xD7, 0xA2, 0xB2, 0x07, 0xF4, 0xA4, 0x74, 0x48, 0x82, + 0x7A, 0x1B, 0x9E, 0xE8, 0xD6, 0x04, 0x5A, 0xC1, 0x89, 0x18, 0x39, 0xBE, + 0xFA, 0xAA, 0x0B, 0x4A, 0x88, 0x37, 0x32, 0x86, 0x09, 0x10, 0xE3, 0x30, + 0xB1, 0x9C, 0xA4, 0xCC, 0x32, 0xE6, 0x57, 0x55, 0x82, 0x03, 0xAB, 0xFE, + 0xB3, 0x8E, 0x1E, 0xE5, 0x64, 0x17, 0x1A, 0x99, 0x78, 0x3D, 0xAE, 0x89, + 0xCA, 0x8E, 0x4C, 0xC4, 0x70, 0x71, 0x02, 0xA3, 0xD3, 0xFB, 0x57, 0x67, + 0xA7, 0xF7, 0x5A, 0x94, 0x41, 0xB6, 0x82, 0x63, 0x0E, 0xBE, 0xFA, 0xFF, + 0x00, 0xE4, 0x67, 0x27, 0x6D, 0xC0, 0x90, 0x6D, 0x0A, 0xEA, 0xFD, 0xAA, + 0xAF, 0xF6, 0xE8, 0x56, 0x4D, 0x47, 0x6C, 0x69, 0x69, 0x90, 0x22, 0x44, + 0x79, 0x6C, 0x40, 0x47, 0x2A, 0xEB, 0x55, 0x0A, 0xCF, 0xE5, 0xD1, 0xEE, + 0x5A, 0xC4, 0x40, 0x44, 0x44, 0x04, 0x44, 0x40, 0x59, 0xB4, 0x3F, 0xB4, + 0xA0, 0xFF, 0x00, 0x2B, 0x09, 0x66, 0xD0, 0xFE, 0xD2, 0x83, 0xFC, 0xA9, + 0x3D, 0x91, 0xD9, 0x7A, 0x43, 0xEC, 0x48, 0xFD, 0xD0, 0xB8, 0x05, 0xDF, + 0xFA, 0x43, 0xEC, 0x48, 0xFD, 0xD0, 0xB8, 0x04, 0x80, 0x44, 0x45, 0x54, + 0x44, 0x44, 0x04, 0x44, 0x41, 0xB4, 0x97, 0x74, 0x6E, 0x6D, 0x29, 0xC9, + 0x44, 0x0D, 0x86, 0x0B, 0xB9, 0x40, 0xE7, 0x80, 0xDF, 0xCD, 0xEF, 0x07, + 0xA7, 0x32, 0x46, 0x9A, 0x87, 0x0A, 0x56, 0x1B, 0x60, 0x44, 0x8C, 0xD6, + 0x92, 0xFB, 0x22, 0x1C, 0x4B, 0x22, 0xAB, 0x46, 0xAA, 0xC2, 0xD5, 0xA2, + 0x0D, 0xA0, 0x6F, 0xFD, 0x43, 0x26, 0x3F, 0x0F, 0x22, 0x25, 0x80, 0x2E, + 0xAC, 0x55, 0x58, 0x87, 0x55, 0x5F, 0xCD, 0x6B, 0x56, 0x88, 0x80, 0x88, + 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x3A, 0x2F, 0x44, 0x3A, 0xD4, 0x4F, + 0xEB, 0xEA, 0xBA, 0xDF, 0xD4, 0xFF, 0x00, 0xA7, 0xD5, 0x72, 0x5E, 0x88, + 0x75, 0xA8, 0x9F, 0xD7, 0xD5, 0x75, 0xBF, 0xA9, 0xFF, 0x00, 0x4F, 0xAA, + 0xCA, 0x29, 0xFA, 0xA3, 0xDC, 0xFA, 0xAE, 0x5F, 0xD3, 0x4F, 0x5D, 0x2D, + 0xDD, 0x3C, 0x57, 0x51, 0xFA, 0xA3, 0xDC, 0xFA, 0xAE, 0x5F, 0xD3, 0x4F, + 0x5D, 0x2D, 0xDD, 0x3C, 0x56, 0x87, 0x32, 0x88, 0x88, 0xA2, 0x22, 0x20, + 0x2C, 0xC9, 0x16, 0xB2, 0x61, 0x8F, 0x95, 0x88, 0xF6, 0xB0, 0x38, 0x87, + 0xB5, 0xCE, 0xF7, 0x11, 0xD3, 0xE4, 0x4E, 0x01, 0x61, 0xA2, 0x0D, 0xCB, + 0x26, 0x1D, 0x1A, 0x58, 0xBE, 0x0F, 0x2C, 0xDA, 0xE3, 0xBA, 0xA6, 0xC2, + 0x8A, 0x18, 0x43, 0x6C, 0xB4, 0x00, 0x74, 0xF4, 0x2B, 0x18, 0xE8, 0x71, + 0x21, 0xCB, 0x40, 0x8A, 0x5A, 0xD7, 0xD6, 0xE7, 0x35, 0xEE, 0x39, 0xC3, + 0xAD, 0x9C, 0xCE, 0x3F, 0xBF, 0xFF, 0x00, 0x16, 0xA5, 0x10, 0x6E, 0x5E, + 0xE8, 0xD5, 0xC2, 0xE4, 0x22, 0x34, 0x42, 0xE5, 0x5F, 0x6C, 0x17, 0x80, + 0xDA, 0xAD, 0x7B, 0xC7, 0xBF, 0x32, 0x89, 0xC6, 0x21, 0x64, 0x3B, 0xB5, + 0xD6, 0x61, 0xD6, 0xEB, 0x60, 0x38, 0x03, 0x5D, 0xA3, 0x55, 0xAF, 0xDA, + 0xCD, 0x9E, 0x9C, 0xDD, 0x2B, 0x56, 0x88, 0x37, 0x11, 0x26, 0x60, 0x41, + 0x84, 0x79, 0x28, 0xB1, 0x18, 0xD3, 0x30, 0xF3, 0x54, 0x07, 0x59, 0xAC, + 0x54, 0xCF, 0x2A, 0xEB, 0xA9, 0x6B, 0xA7, 0x80, 0x13, 0xD3, 0x15, 0x59, + 0xAB, 0x94, 0x75, 0x56, 0x7A, 0x2A, 0xAF, 0xDC, 0xA0, 0x44, 0x04, 0x44, + 0x40, 0x44, 0x44, 0x05, 0xDF, 0xFA, 0x39, 0xEC, 0x59, 0x7F, 0xE0, 0xF1, + 0x5C, 0x02, 0xEF, 0xFD, 0x1C, 0xF6, 0x2C, 0xBF, 0xF0, 0x78, 0xA2, 0x39, + 0x1A, 0x7F, 0xDB, 0x33, 0x5D, 0xF5, 0xAE, 0x5B, 0x1A, 0x7F, 0xDB, 0x33, + 0x5D, 0xF5, 0xAE, 0x54, 0x81, 0x11, 0x14, 0x51, 0x11, 0x10, 0x16, 0x55, + 0x1E, 0x58, 0x22, 0xC5, 0xE5, 0x3F, 0x2F, 0x24, 0xFF, 0x00, 0x7D, 0x44, + 0xE6, 0x58, 0xA8, 0x83, 0x6B, 0x05, 0xD0, 0x5D, 0x2D, 0x0D, 0x90, 0xBF, + 0x09, 0x70, 0x8C, 0xD0, 0x1E, 0xE0, 0x4D, 0x65, 0xAD, 0xAB, 0x42, 0xBE, + 0x4C, 0x18, 0x30, 0xE1, 0xC3, 0x7D, 0x6D, 0x8A, 0x1B, 0x14, 0xD4, 0xD7, + 0x00, 0xE1, 0x58, 0x6D, 0x59, 0xFD, 0xC7, 0x31, 0x5A, 0x74, 0x41, 0x9D, + 0x49, 0x90, 0xE3, 0x00, 0x92, 0x6D, 0xD8, 0xA9, 0xC1, 0xCE, 0x0E, 0x77, + 0x49, 0xE9, 0x23, 0xA5, 0x60, 0xA2, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, + 0x2B, 0xE0, 0x7A, 0xE8, 0x7D, 0xE1, 0xC5, 0x58, 0xAF, 0x81, 0xEB, 0xA1, + 0xF7, 0x87, 0x14, 0x47, 0xA5, 0x46, 0xEA, 0x8F, 0xF0, 0xCF, 0x05, 0x49, + 0xAE, 0xA5, 0x1B, 0xC3, 0x77, 0x05, 0x58, 0xDD, 0x51, 0xFE, 0x19, 0xE0, + 0xA9, 0x35, 0xD4, 0xA3, 0x78, 0x6E, 0xE0, 0xA4, 0xF6, 0x6B, 0x0F, 0x28, + 0x56, 0x57, 0xA9, 0x41, 0xF0, 0xDB, 0xC1, 0x5D, 0x04, 0x57, 0x2F, 0x0C, + 0x69, 0x60, 0xE0, 0xAD, 0x95, 0xEA, 0x50, 0x7C, 0x36, 0xF0, 0x55, 0x83, + 0x9A, 0x59, 0x9D, 0xC1, 0xC1, 0x48, 0x33, 0xF2, 0x97, 0x3F, 0x17, 0xD1, + 0x58, 0x4E, 0x88, 0xE7, 0x07, 0x3C, 0x82, 0x49, 0xFC, 0xC1, 0x5B, 0x92, + 0x90, 0xF4, 0xBF, 0x78, 0x2D, 0x5C, 0x5F, 0x48, 0xA9, 0x26, 0xC5, 0x7B, + 0x44, 0x71, 0x50, 0x71, 0x03, 0xF0, 0x85, 0x6E, 0x52, 0x52, 0x7A, 0xF1, + 0xBA, 0x11, 0x96, 0xDB, 0x25, 0x21, 0xE9, 0x7E, 0xF0, 0x4C, 0x94, 0x87, + 0xA5, 0xFB, 0xC1, 0x6A, 0x72, 0x92, 0x93, 0xD7, 0x8D, 0xD0, 0x99, 0x49, + 0x49, 0xEB, 0xC6, 0xE8, 0x54, 0x6D, 0xB2, 0x52, 0x1E, 0x97, 0xEF, 0x04, + 0xC9, 0x48, 0x7A, 0x5F, 0xBC, 0x16, 0xA7, 0x29, 0x29, 0x3D, 0x78, 0xDD, + 0x09, 0x94, 0x94, 0x9E, 0xBC, 0x6E, 0x84, 0x1B, 0x6C, 0x94, 0x87, 0xA5, + 0xFB, 0xC1, 0x32, 0x52, 0x1E, 0x97, 0xEF, 0x05, 0xA9, 0xCA, 0x4A, 0x4F, + 0x5E, 0x37, 0x42, 0x65, 0x25, 0x27, 0xAF, 0x1B, 0xA1, 0x06, 0xDB, 0x25, + 0x21, 0xE9, 0x7E, 0xF0, 0x4C, 0x94, 0x87, 0xA5, 0xFB, 0xC1, 0x6A, 0x72, + 0x92, 0x93, 0xD7, 0x8D, 0xD0, 0x99, 0x49, 0x49, 0xEB, 0xC6, 0xE8, 0x41, + 0xB6, 0xC9, 0x48, 0x7A, 0x5F, 0xBC, 0x13, 0x25, 0x21, 0xE9, 0x7E, 0xF0, + 0x5A, 0x9C, 0xA4, 0xA4, 0xF5, 0xE3, 0x74, 0x26, 0x52, 0x52, 0x7A, 0xF1, + 0xBA, 0x10, 0x6D, 0xB2, 0x52, 0x1E, 0x97, 0xEF, 0x04, 0xC9, 0x48, 0x7A, + 0x5F, 0xBC, 0x16, 0xA7, 0x29, 0x29, 0x3D, 0x78, 0xDD, 0x09, 0x94, 0x94, + 0x9E, 0xBC, 0x6E, 0x84, 0x1B, 0x6C, 0x94, 0x87, 0xA5, 0xFB, 0xC1, 0x32, + 0x52, 0x1E, 0x97, 0xEF, 0x05, 0xA9, 0xCA, 0x4A, 0x4F, 0x5E, 0x37, 0x42, + 0x65, 0x25, 0x27, 0xAF, 0x1B, 0xA1, 0x06, 0xDB, 0x25, 0x21, 0xE9, 0x7E, + 0xF0, 0x52, 0xCB, 0x7A, 0x36, 0xD9, 0x68, 0xED, 0x8A, 0xC2, 0xEB, 0x4D, + 0xE8, 0xAD, 0xC1, 0x69, 0x32, 0x92, 0x93, 0xD7, 0x8D, 0xD0, 0xB2, 0xA8, + 0xCA, 0x7A, 0x7E, 0x3C, 0xFC, 0x28, 0x71, 0x62, 0x87, 0x30, 0x9C, 0xE2, + 0xC8, 0x15, 0xA8, 0x3A, 0xA9, 0xE9, 0x46, 0xCE, 0xC9, 0xBE, 0x5D, 0xE4, + 0x80, 0xE1, 0xEE, 0x5A, 0x1C, 0x94, 0x87, 0xA5, 0xFB, 0xC1, 0x6E, 0x29, + 0x99, 0x88, 0x92, 0xB4, 0x5C, 0x58, 0xD0, 0x5D, 0x65, 0xED, 0x00, 0x82, + 0xB9, 0x1C, 0xA4, 0xA4, 0xF5, 0xE3, 0x74, 0x20, 0xDB, 0x64, 0xA4, 0x3D, + 0x2F, 0xDE, 0x09, 0x92, 0x90, 0xF4, 0xBF, 0x78, 0x2D, 0x4E, 0x52, 0x52, + 0x7A, 0xF1, 0xBA, 0x13, 0x29, 0x29, 0x3D, 0x78, 0xDD, 0x0A, 0x8D, 0xB6, + 0x4A, 0x43, 0xD2, 0xFD, 0xE0, 0x99, 0x29, 0x0F, 0x4B, 0xF7, 0x82, 0xD4, + 0xE5, 0x25, 0x27, 0xAF, 0x1B, 0xA1, 0x32, 0x92, 0x93, 0xD7, 0x8D, 0xD0, + 0x83, 0x6D, 0x92, 0x90, 0xF4, 0xBF, 0x78, 0x26, 0x4A, 0x43, 0xD2, 0xFD, + 0xE0, 0xB5, 0x39, 0x49, 0x49, 0xEB, 0xC6, 0xE8, 0x4C, 0xA4, 0xA4, 0xF5, + 0xE3, 0x74, 0x20, 0xDB, 0x64, 0xA4, 0x3D, 0x2F, 0xDE, 0x09, 0x92, 0x90, + 0xF4, 0xBF, 0x78, 0x2D, 0x4E, 0x52, 0x52, 0x7A, 0xF1, 0xBA, 0x13, 0x29, + 0x29, 0x3D, 0x78, 0xDD, 0x08, 0x36, 0xD9, 0x29, 0x0F, 0x4B, 0xF7, 0x82, + 0x64, 0xA4, 0x3D, 0x2F, 0xDE, 0x0B, 0x53, 0x94, 0x94, 0x9E, 0xBC, 0x6E, + 0x84, 0xCA, 0x4A, 0x4F, 0x5E, 0x37, 0x42, 0x0D, 0xB6, 0x4A, 0x43, 0xD2, + 0xFD, 0xE0, 0x99, 0x29, 0x0F, 0x4B, 0xF7, 0x82, 0xD4, 0xE5, 0x25, 0x27, + 0xAF, 0x1B, 0xA1, 0x32, 0x92, 0x93, 0xD7, 0x8D, 0xD0, 0x83, 0x6D, 0x92, + 0x90, 0xF4, 0xBF, 0x78, 0x26, 0x4A, 0x43, 0xD2, 0xFD, 0xE0, 0xB5, 0x39, + 0x49, 0x49, 0xEB, 0xC6, 0xE8, 0x4C, 0xA4, 0xA4, 0xF5, 0xE3, 0x74, 0x20, + 0xDB, 0x64, 0xA4, 0x3D, 0x2F, 0xDE, 0x09, 0x92, 0x90, 0xF4, 0xBF, 0x78, + 0x2D, 0x4E, 0x52, 0x52, 0x7A, 0xF1, 0xBA, 0x13, 0x29, 0x29, 0x3D, 0x78, + 0xDD, 0x08, 0x3A, 0x5A, 0x2A, 0x86, 0x14, 0x74, 0x72, 0xF6, 0x56, 0x43, + 0xBA, 0x6B, 0x35, 0xAD, 0xA7, 0xEA, 0x7F, 0xD3, 0xEA, 0xB4, 0x1E, 0x8D, + 0xD2, 0xB3, 0x53, 0xD1, 0xE2, 0x36, 0x65, 0xF6, 0xC0, 0x02, 0xAC, 0xD5, + 0x54, 0xB7, 0xFF, 0x00, 0xA9, 0xFF, 0x00, 0x4F, 0xAA, 0x82, 0x9F, 0xAA, + 0x3D, 0xCF, 0xAA, 0xC2, 0xA5, 0x28, 0x68, 0x34, 0xA3, 0xE1, 0xBA, 0x33, + 0xDE, 0xDB, 0x02, 0xA1, 0x65, 0x66, 0xFE, 0xA8, 0xF7, 0x3E, 0xAB, 0x45, + 0xE9, 0x35, 0x27, 0x35, 0x21, 0x16, 0x00, 0x96, 0x89, 0x60, 0x39, 0xA6, + 0xBC, 0xC0, 0xAD, 0x0B, 0xB2, 0x46, 0x4F, 0x5D, 0x1B, 0xC9, 0x32, 0x46, + 0x4F, 0x5D, 0x1B, 0xC9, 0x68, 0x72, 0x8E, 0x93, 0xD7, 0xFC, 0xA1, 0x32, + 0x8E, 0x93, 0xD7, 0xFC, 0xA1, 0x51, 0xBE, 0xC9, 0x19, 0x3D, 0x74, 0x6F, + 0x24, 0xC9, 0x19, 0x3D, 0x74, 0x6F, 0x25, 0xA1, 0xCA, 0x3A, 0x4F, 0x5F, + 0xF2, 0x84, 0xCA, 0x3A, 0x4F, 0x5F, 0xF2, 0x84, 0x1B, 0xEC, 0x91, 0x93, + 0xD7, 0x46, 0xF2, 0x4C, 0x91, 0x93, 0xD7, 0x46, 0xF2, 0x5A, 0x1C, 0xA3, + 0xA4, 0xF5, 0xFF, 0x00, 0x28, 0x4C, 0xA3, 0xA4, 0xF5, 0xFF, 0x00, 0x28, + 0x41, 0xBE, 0xC9, 0x19, 0x3D, 0x74, 0x6F, 0x24, 0xC9, 0x19, 0x3D, 0x74, + 0x6F, 0x25, 0xA1, 0xCA, 0x3A, 0x4F, 0x5F, 0xF2, 0x84, 0xCA, 0x3A, 0x4F, + 0x5F, 0xF2, 0x84, 0x1B, 0xEC, 0x91, 0x93, 0xD7, 0x46, 0xF2, 0x4C, 0x91, + 0x93, 0xD7, 0x46, 0xF2, 0x5A, 0x1C, 0xA3, 0xA4, 0xF5, 0xFF, 0x00, 0x28, + 0x4C, 0xA3, 0xA4, 0xF5, 0xFF, 0x00, 0x28, 0x41, 0xBE, 0xC9, 0x19, 0x3D, + 0x74, 0x6F, 0x24, 0xC9, 0x19, 0x3D, 0x74, 0x6F, 0x25, 0xA1, 0xCA, 0x3A, + 0x4F, 0x5F, 0xF2, 0x84, 0xCA, 0x3A, 0x4F, 0x5F, 0xF2, 0x84, 0x1B, 0xEC, + 0x91, 0x93, 0xD7, 0x46, 0xF2, 0x4C, 0x91, 0x93, 0xD7, 0x46, 0xF2, 0x5A, + 0x1C, 0xA3, 0xA4, 0xF5, 0xFF, 0x00, 0x28, 0x4C, 0xA3, 0xA4, 0xF5, 0xFF, + 0x00, 0x28, 0x41, 0xBE, 0xC9, 0x19, 0x3D, 0x74, 0x6F, 0x24, 0xC9, 0x19, + 0x3D, 0x74, 0x6F, 0x25, 0xA1, 0xCA, 0x3A, 0x4F, 0x5F, 0xF2, 0x84, 0xCA, + 0x3A, 0x4F, 0x5F, 0xF2, 0x84, 0x1B, 0xEC, 0x91, 0x93, 0xD7, 0x46, 0xF2, + 0x5B, 0x89, 0x19, 0x46, 0x48, 0xCA, 0xB2, 0x5E, 0x1B, 0x8B, 0x9A, 0xCE, + 0x82, 0x7A, 0x57, 0x13, 0x94, 0x74, 0x9E, 0xBF, 0xE5, 0x0B, 0xAF, 0xA1, + 0x26, 0x22, 0xCD, 0x51, 0x90, 0x63, 0x46, 0x75, 0xA7, 0xBA, 0xBA, 0xCF, + 0xF6, 0xA0, 0xC4, 0x9C, 0xF4, 0x6A, 0x56, 0x72, 0x6A, 0x24, 0x78, 0x91, + 0x62, 0x07, 0x3C, 0xD6, 0x40, 0xAA, 0xA5, 0x0E, 0x48, 0xC9, 0xEB, 0xA3, + 0x79, 0x2D, 0x75, 0x2F, 0x4E, 0x4F, 0xCB, 0x52, 0x51, 0xE0, 0xC2, 0x8D, + 0x53, 0x1A, 0xEA, 0x80, 0xB2, 0x16, 0x16, 0x51, 0xD2, 0x7A, 0xFF, 0x00, + 0x94, 0x2A, 0x37, 0xD9, 0x23, 0x27, 0xAE, 0x8D, 0xE4, 0x99, 0x23, 0x27, + 0xAE, 0x8D, 0xE4, 0xB4, 0x39, 0x47, 0x49, 0xEB, 0xFE, 0x50, 0x99, 0x47, + 0x49, 0xEB, 0xFE, 0x50, 0x83, 0x7D, 0x92, 0x32, 0x7A, 0xE8, 0xDE, 0x49, + 0x92, 0x32, 0x7A, 0xE8, 0xDE, 0x4B, 0x43, 0x94, 0x74, 0x9E, 0xBF, 0xE5, + 0x09, 0x94, 0x74, 0x9E, 0xBF, 0xE5, 0x08, 0x37, 0xD9, 0x23, 0x27, 0xAE, + 0x8D, 0xE4, 0x99, 0x23, 0x27, 0xAE, 0x8D, 0xE4, 0xB4, 0x39, 0x47, 0x49, + 0xEB, 0xFE, 0x50, 0x99, 0x47, 0x49, 0xEB, 0xFE, 0x50, 0x83, 0x7D, 0x92, + 0x32, 0x7A, 0xE8, 0xDE, 0x49, 0x92, 0x32, 0x7A, 0xE8, 0xDE, 0x4B, 0x43, + 0x94, 0x74, 0x9E, 0xBF, 0xE5, 0x09, 0x94, 0x74, 0x9E, 0xBF, 0xE5, 0x08, + 0x37, 0xD9, 0x23, 0x27, 0xAE, 0x8D, 0xE4, 0x99, 0x23, 0x27, 0xAE, 0x8D, + 0xE4, 0xB4, 0x39, 0x47, 0x49, 0xEB, 0xFE, 0x50, 0x99, 0x47, 0x49, 0xEB, + 0xFE, 0x50, 0x83, 0x7D, 0x92, 0x32, 0x7A, 0xE8, 0xDE, 0x49, 0x92, 0x32, + 0x7A, 0xE8, 0xDE, 0x4B, 0x43, 0x94, 0x74, 0x9E, 0xBF, 0xE5, 0x09, 0x94, + 0x74, 0x9E, 0xBF, 0xE5, 0x08, 0x37, 0xD9, 0x23, 0x27, 0xAE, 0x8D, 0xE4, + 0x99, 0x23, 0x27, 0xAE, 0x8D, 0xE4, 0xB4, 0x39, 0x47, 0x49, 0xEB, 0xFE, + 0x50, 0x99, 0x47, 0x49, 0xEB, 0xFE, 0x50, 0x83, 0x7D, 0x92, 0x32, 0x7A, + 0xE8, 0xDE, 0x4A, 0xAD, 0xF4, 0x4E, 0x51, 0xAE, 0x0E, 0x11, 0xA2, 0xD6, + 0x0D, 0x7E, 0xE5, 0xA0, 0xCA, 0x3A, 0x4F, 0x5F, 0xF2, 0x85, 0x74, 0x3F, + 0x48, 0xA9, 0x27, 0x44, 0x63, 0x4C, 0x7C, 0xC4, 0x81, 0xF9, 0x42, 0x0E, + 0xDE, 0x38, 0xAA, 0x5A, 0x20, 0xD0, 0xC3, 0xC1, 0x5B, 0x35, 0xD4, 0xA3, + 0x78, 0x6E, 0xE0, 0xAE, 0x8C, 0x6B, 0x95, 0x88, 0x7F, 0xF0, 0x3C, 0x15, + 0xB3, 0x5D, 0x4A, 0x37, 0x86, 0xEE, 0x0B, 0x33, 0xD9, 0xAC, 0x3C, 0xA1, + 0x59, 0x5E, 0xA5, 0x07, 0xC3, 0x6F, 0x05, 0x58, 0x5D, 0x55, 0x9D, 0xC1, + 0xC1, 0x52, 0x57, 0xA9, 0x41, 0xF0, 0xDB, 0xC1, 0x56, 0x17, 0x55, 0x67, + 0x70, 0x70, 0x52, 0x0C, 0xFC, 0xA5, 0xE6, 0xB1, 0xFD, 0x7C, 0x4E, 0xF1, + 0xE2, 0xA3, 0x52, 0x47, 0xF5, 0xF1, 0x3B, 0xC7, 0x8A, 0x8D, 0x6A, 0x19, + 0x11, 0x11, 0x14, 0x44, 0x44, 0x13, 0x49, 0xC1, 0x13, 0x13, 0x50, 0xA0, + 0xB8, 0x90, 0x1E, 0xEA, 0xAB, 0x1D, 0x2B, 0x31, 0xB4, 0x74, 0x37, 0x18, + 0x45, 0xFC, 0xAC, 0x20, 0xE7, 0x96, 0x90, 0xE0, 0x09, 0xA8, 0x0A, 0xEB, + 0x1F, 0xFE, 0xF7, 0xAC, 0x08, 0x31, 0x5D, 0x02, 0x2B, 0x62, 0x32, 0xAB, + 0x4D, 0x35, 0x8A, 0xD5, 0xF0, 0x66, 0xA2, 0x40, 0x65, 0x96, 0x59, 0xAA, + 0xD5, 0xAC, 0xE3, 0xDF, 0x51, 0x1F, 0x54, 0x19, 0x30, 0xA8, 0xE0, 0x5F, + 0x66, 0x23, 0xCD, 0x5C, 0xA0, 0x68, 0x2D, 0xE8, 0x73, 0x4B, 0x49, 0x04, + 0x60, 0xA9, 0x06, 0x4E, 0x14, 0xC9, 0x86, 0xE8, 0x4F, 0x7B, 0x5A, 0x62, + 0x06, 0x38, 0x3A, 0xAA, 0xC5, 0x60, 0x90, 0x46, 0x05, 0x47, 0x0A, 0x7E, + 0x34, 0x28, 0x70, 0xE1, 0x8B, 0x2E, 0x6C, 0x37, 0x5A, 0x6D, 0xA1, 0xFC, + 0xE6, 0xFE, 0x33, 0x9C, 0x55, 0x04, 0xEC, 0x46, 0x39, 0x86, 0x1B, 0x19, + 0x0D, 0xAC, 0x75, 0xA0, 0xD6, 0x8C, 0xD5, 0xE9, 0x3E, 0xF2, 0x82, 0x56, + 0xC9, 0xB1, 0xD2, 0xC2, 0x23, 0x4B, 0xDE, 0x6C, 0x17, 0x17, 0x32, 0xA2, + 0x18, 0x74, 0x11, 0xD2, 0x3F, 0x95, 0x82, 0xB2, 0x5B, 0x38, 0xF6, 0xB4, + 0x55, 0x0E, 0x1F, 0x28, 0x1B, 0x60, 0x44, 0xA8, 0xDA, 0x02, 0xAA, 0xB4, + 0xD5, 0xD1, 0xFB, 0x2C, 0x64, 0x04, 0x44, 0x40, 0x44, 0x44, 0x05, 0x9B, + 0x43, 0xFB, 0x4A, 0x0F, 0xF2, 0xB0, 0x96, 0x6D, 0x0F, 0xED, 0x28, 0x3F, + 0xCA, 0x93, 0xD9, 0x1D, 0x97, 0xA4, 0x3E, 0xC4, 0x8F, 0xDD, 0x0B, 0x80, + 0x5D, 0xFF, 0x00, 0xA4, 0x3E, 0xC4, 0x8F, 0xDD, 0x0B, 0x80, 0x48, 0x04, + 0x44, 0x55, 0x44, 0x44, 0x40, 0x44, 0x44, 0x19, 0x02, 0x5C, 0x59, 0x95, + 0x36, 0x8F, 0xFC, 0xC4, 0x83, 0xFB, 0x7E, 0x2A, 0x94, 0xDC, 0xC1, 0x86, + 0x2C, 0x3A, 0x9E, 0x79, 0x2A, 0xDE, 0x22, 0x3A, 0xAC, 0xED, 0xB3, 0x9C, + 0xF9, 0x54, 0x7F, 0xB5, 0x0C, 0x29, 0xB7, 0x43, 0x63, 0x1A, 0x61, 0xC3, + 0x7F, 0x26, 0x6B, 0x61, 0x70, 0x35, 0xB4, 0xE3, 0x9F, 0xFB, 0x54, 0x6C, + 0xDC, 0x56, 0xC1, 0x8D, 0x08, 0x38, 0x16, 0xC6, 0x20, 0xB8, 0x91, 0x9F, + 0xFA, 0x41, 0x24, 0x58, 0x12, 0xF0, 0x4F, 0x27, 0x11, 0xF1, 0x04, 0x5B, + 0x01, 0xD5, 0x81, 0xF8, 0x41, 0x22, 0xB0, 0x3E, 0xEB, 0x11, 0x64, 0x89, + 0xE8, 0x80, 0x03, 0x62, 0x19, 0x88, 0x1B, 0x60, 0x45, 0xA8, 0xDA, 0x02, + 0xAA, 0xBF, 0x8E, 0x8C, 0xD5, 0xD5, 0x5A, 0xC6, 0x40, 0x44, 0x44, 0x04, + 0x44, 0x40, 0x44, 0x44, 0x1D, 0x17, 0xA2, 0x1D, 0x6A, 0x27, 0xF5, 0xF5, + 0x5D, 0x6F, 0xEA, 0x7F, 0xD3, 0xEA, 0xB9, 0x2F, 0x44, 0x3A, 0xD4, 0x4F, + 0xEB, 0xEA, 0xBA, 0xDF, 0xD4, 0xFF, 0x00, 0xA7, 0xD5, 0x65, 0x14, 0xFD, + 0x51, 0xEE, 0x7D, 0x57, 0x2F, 0xE9, 0xA7, 0xAE, 0x96, 0xEE, 0x9E, 0x2B, + 0xA8, 0xFD, 0x51, 0xEE, 0x7D, 0x57, 0x2F, 0xE9, 0xA7, 0xAE, 0x96, 0xEE, + 0x9E, 0x2B, 0x43, 0x99, 0x44, 0x44, 0x51, 0x11, 0x10, 0x11, 0x11, 0x06, + 0xC6, 0x5A, 0x8F, 0x6C, 0x68, 0x50, 0x1C, 0x5B, 0x14, 0x98, 0xA4, 0x82, + 0xE6, 0xD5, 0x53, 0x73, 0xD4, 0xAD, 0x14, 0x7B, 0x5D, 0x0E, 0x5D, 0xCC, + 0x88, 0x5C, 0x5E, 0x7F, 0x18, 0xAB, 0xA1, 0xB6, 0xCB, 0x41, 0x1F, 0xB6, + 0x6F, 0x30, 0xB1, 0x44, 0xC4, 0x41, 0xC8, 0xD5, 0x57, 0xFC, 0x26, 0xB6, + 0xE6, 0xFD, 0xEB, 0x52, 0x32, 0x7A, 0x33, 0x23, 0x42, 0x8A, 0xCB, 0x21, + 0xD0, 0xC1, 0x00, 0x55, 0x98, 0x82, 0x49, 0x20, 0xE2, 0x50, 0x4B, 0xCD, + 0x20, 0x34, 0xC1, 0x63, 0xDF, 0x10, 0x3A, 0x31, 0x20, 0x38, 0x00, 0x43, + 0x7F, 0x11, 0x6F, 0x47, 0xF4, 0x8C, 0x91, 0x67, 0xE0, 0x11, 0x22, 0x54, + 0xE2, 0xD7, 0x1B, 0x35, 0x81, 0x68, 0x87, 0x55, 0x50, 0x27, 0x15, 0x18, + 0x9F, 0x88, 0x03, 0x3F, 0xE3, 0x86, 0x5E, 0xCA, 0xCB, 0x1E, 0x5B, 0x59, + 0x6D, 0x66, 0xBF, 0xE3, 0xA4, 0xAB, 0x5B, 0x39, 0x10, 0x35, 0xAC, 0x73, + 0x58, 0xF6, 0x06, 0x96, 0x90, 0xE1, 0xD2, 0x09, 0xAF, 0x8A, 0x0B, 0x66, + 0xA0, 0x88, 0x11, 0x43, 0x43, 0x62, 0x36, 0xB6, 0x83, 0x65, 0xE2, 0xA2, + 0x3F, 0xFB, 0xFC, 0xA8, 0x54, 0xB1, 0xE3, 0xBA, 0x31, 0x6D, 0x6D, 0x6B, + 0x5A, 0xC6, 0xD9, 0x6B, 0x5B, 0xD0, 0x05, 0x64, 0xF1, 0x25, 0x44, 0x80, + 0x88, 0x88, 0x08, 0x88, 0x80, 0xBB, 0xFF, 0x00, 0x47, 0x3D, 0x8B, 0x2F, + 0xFC, 0x1E, 0x2B, 0x80, 0x5D, 0xFF, 0x00, 0xA3, 0x9E, 0xC5, 0x97, 0xFE, + 0x0F, 0x14, 0x47, 0x23, 0x4F, 0xFB, 0x66, 0x6B, 0xBE, 0xB5, 0xCB, 0x63, + 0x4F, 0xFB, 0x66, 0x6B, 0xBE, 0xB5, 0xCA, 0x90, 0x22, 0x22, 0x8A, 0x22, + 0x22, 0x02, 0x9A, 0x56, 0x08, 0x8F, 0x14, 0xB0, 0x92, 0x2A, 0x63, 0xDD, + 0x9B, 0xFF, 0x00, 0x16, 0x93, 0xF4, 0x50, 0xAB, 0xE0, 0xC5, 0x74, 0x08, + 0x82, 0x23, 0x2A, 0xAC, 0x56, 0x2A, 0x22, 0xB0, 0x41, 0x15, 0x11, 0x82, + 0x0C, 0x89, 0x79, 0x36, 0xC7, 0x82, 0xD7, 0x5A, 0x21, 0xEF, 0x73, 0xD8, + 0xD1, 0xA4, 0x86, 0x82, 0x07, 0xF7, 0x5D, 0x4A, 0xE6, 0xC9, 0xC3, 0x6C, + 0xB8, 0x8D, 0x15, 0xEE, 0xCC, 0xDB, 0x4E, 0x6B, 0x7A, 0x73, 0x9A, 0x9A, + 0x3C, 0x89, 0xC1, 0x42, 0xF9, 0xA7, 0x9E, 0x4C, 0x43, 0x6B, 0x61, 0x36, + 0x1B, 0xAD, 0x34, 0x32, 0xBC, 0xC7, 0x36, 0x7C, 0xE4, 0x9F, 0x70, 0x57, + 0x19, 0xE8, 0x8E, 0x8D, 0x12, 0x23, 0xDA, 0xC7, 0x08, 0x80, 0x07, 0x30, + 0x8F, 0xC3, 0x50, 0xE8, 0x1F, 0xB5, 0x55, 0x20, 0x8A, 0x30, 0x84, 0x1C, + 0x0C, 0x17, 0x38, 0xB4, 0x8A, 0xEA, 0x70, 0xCE, 0x0E, 0x8F, 0xDD, 0x46, + 0xA5, 0x8F, 0x1D, 0xD1, 0x8B, 0x6B, 0x0D, 0x6B, 0x58, 0xDB, 0x2D, 0x6B, + 0x7A, 0x1A, 0x3A, 0x7E, 0xA5, 0x44, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, + 0xAF, 0x81, 0xEB, 0xA1, 0xF7, 0x87, 0x15, 0x62, 0xBE, 0x07, 0xAE, 0x87, + 0xDE, 0x1C, 0x51, 0x1E, 0x95, 0x1B, 0xAA, 0x3F, 0xC3, 0x3C, 0x15, 0x26, + 0xBA, 0x94, 0x6F, 0x0D, 0xDC, 0x15, 0x63, 0x75, 0x47, 0xF8, 0x67, 0x82, + 0xA4, 0xD7, 0x52, 0x8D, 0xE1, 0xBB, 0x82, 0x93, 0xD9, 0xAC, 0x3C, 0xA1, + 0x59, 0x5E, 0xA5, 0x07, 0xC3, 0x6F, 0x05, 0x58, 0x5D, 0x59, 0x9D, 0xC1, + 0xC1, 0x52, 0x57, 0xA9, 0x41, 0xF0, 0xDB, 0xC1, 0x5D, 0x04, 0xD5, 0x2F, + 0x0C, 0xFF, 0x00, 0xE0, 0x38, 0x29, 0x06, 0x7E, 0x52, 0xE0, 0x23, 0x51, + 0x53, 0xA6, 0x34, 0x43, 0xC8, 0x3B, 0xF3, 0x1F, 0x78, 0xD2, 0xAC, 0xBA, + 0x67, 0x75, 0x07, 0x10, 0xBA, 0xA7, 0xFA, 0x49, 0x45, 0x87, 0xB8, 0x39, + 0xAF, 0xB4, 0x0D, 0x47, 0xFE, 0x35, 0x6E, 0x52, 0xD1, 0x5D, 0x97, 0xFC, + 0x34, 0xB6, 0x5C, 0xBD, 0xD3, 0x3B, 0xA8, 0x38, 0x84, 0xBA, 0x67, 0x75, + 0x07, 0x10, 0xBA, 0x8C, 0xA5, 0xA2, 0xBB, 0x2F, 0xF8, 0x69, 0x94, 0xB4, + 0x57, 0x65, 0xFF, 0x00, 0x0D, 0x5B, 0x91, 0xCB, 0xDD, 0x33, 0xBA, 0x83, + 0x88, 0x4B, 0xA6, 0x77, 0x50, 0x71, 0x0B, 0xA8, 0xCA, 0x5A, 0x2B, 0xB2, + 0xFF, 0x00, 0x86, 0x99, 0x4B, 0x45, 0x76, 0x5F, 0xF0, 0xD2, 0xE4, 0x72, + 0xF7, 0x4C, 0xEE, 0xA0, 0xE2, 0x12, 0xE9, 0x9D, 0xD4, 0x1C, 0x42, 0xEA, + 0x32, 0x96, 0x8A, 0xEC, 0xBF, 0xE1, 0xA6, 0x52, 0xD1, 0x5D, 0x97, 0xFC, + 0x34, 0xB9, 0x1C, 0xBD, 0xD3, 0x3B, 0xA8, 0x38, 0x84, 0xBA, 0x67, 0x75, + 0x07, 0x10, 0xBA, 0x8C, 0xA5, 0xA2, 0xBB, 0x2F, 0xF8, 0x69, 0x94, 0xB4, + 0x57, 0x65, 0xFF, 0x00, 0x0D, 0x2E, 0x47, 0x2F, 0x74, 0xCE, 0xEA, 0x0E, + 0x21, 0x2E, 0x99, 0xDD, 0x41, 0xC4, 0x2E, 0xA3, 0x29, 0x68, 0xAE, 0xCB, + 0xFE, 0x1A, 0x65, 0x2D, 0x15, 0xD9, 0x7F, 0xC3, 0x4B, 0x91, 0xCB, 0xDD, + 0x33, 0xBA, 0x83, 0x88, 0x4B, 0xA6, 0x77, 0x50, 0x71, 0x0B, 0xA8, 0xCA, + 0x5A, 0x2B, 0xB2, 0xFF, 0x00, 0x86, 0x99, 0x4B, 0x45, 0x76, 0x5F, 0xF0, + 0xD2, 0xE4, 0x72, 0xF7, 0x4C, 0xEE, 0xA0, 0xE2, 0x12, 0xE9, 0x9D, 0xD4, + 0x1C, 0x42, 0xEA, 0x32, 0x96, 0x8A, 0xEC, 0xBF, 0xE1, 0xA6, 0x52, 0xD1, + 0x5D, 0x97, 0xFC, 0x34, 0xB9, 0x1C, 0xBD, 0xD3, 0x3B, 0xA8, 0x38, 0x85, + 0x95, 0x46, 0x51, 0xF3, 0x50, 0x67, 0xA1, 0x44, 0x89, 0x04, 0xB5, 0xA0, + 0xE7, 0x35, 0x85, 0xBE, 0xCA, 0x5A, 0x2B, 0xB2, 0xFF, 0x00, 0x86, 0xA5, + 0x96, 0xA7, 0x68, 0xD9, 0xA8, 0xEC, 0x83, 0x0D, 0xAE, 0xB4, 0xF3, 0x50, + 0xAD, 0x80, 0x05, 0x06, 0x45, 0x37, 0x06, 0x24, 0x7A, 0x22, 0x34, 0x38, + 0x4D, 0x2E, 0x79, 0x02, 0xA0, 0x17, 0x15, 0x74, 0xCE, 0xEA, 0x0E, 0x21, + 0x77, 0xF3, 0x93, 0x50, 0xE4, 0xE5, 0x9F, 0x1E, 0x35, 0x66, 0x1B, 0x7A, + 0x6A, 0x15, 0xAD, 0x46, 0x52, 0xD1, 0x5D, 0x97, 0xFC, 0x34, 0x1C, 0xBD, + 0xD3, 0x3B, 0xA8, 0x38, 0x84, 0xBA, 0x67, 0x75, 0x07, 0x10, 0xBA, 0x8C, + 0xA5, 0xA2, 0xBB, 0x2F, 0xF8, 0x69, 0x94, 0xB4, 0x57, 0x65, 0xFF, 0x00, + 0x0D, 0x5B, 0x91, 0xCB, 0xDD, 0x33, 0xBA, 0x83, 0x88, 0x4B, 0xA6, 0x77, + 0x50, 0x71, 0x0B, 0xA8, 0xCA, 0x5A, 0x2B, 0xB2, 0xFF, 0x00, 0x86, 0x99, + 0x4B, 0x45, 0x76, 0x5F, 0xF0, 0xD2, 0xE4, 0x72, 0xF7, 0x4C, 0xEE, 0xA0, + 0xE2, 0x12, 0xE9, 0x9D, 0xD4, 0x1C, 0x42, 0xEA, 0x32, 0x96, 0x8A, 0xEC, + 0xBF, 0xE1, 0xA6, 0x52, 0xD1, 0x5D, 0x97, 0xFC, 0x34, 0xB9, 0x1C, 0xBD, + 0xD3, 0x3B, 0xA8, 0x38, 0x84, 0xBA, 0x67, 0x75, 0x07, 0x10, 0xBA, 0x8C, + 0xA5, 0xA2, 0xBB, 0x2F, 0xF8, 0x69, 0x94, 0xB4, 0x57, 0x65, 0xFF, 0x00, + 0x0D, 0x2E, 0x47, 0x2F, 0x74, 0xCE, 0xEA, 0x0E, 0x21, 0x2E, 0x99, 0xDD, + 0x41, 0xC4, 0x2E, 0xA3, 0x29, 0x68, 0xAE, 0xCB, 0xFE, 0x1A, 0x65, 0x2D, + 0x15, 0xD9, 0x7F, 0xC3, 0x4B, 0x91, 0xCB, 0xDD, 0x33, 0xBA, 0x83, 0x88, + 0x4B, 0xA6, 0x77, 0x50, 0x71, 0x0B, 0xA8, 0xCA, 0x5A, 0x2B, 0xB2, 0xFF, + 0x00, 0x86, 0x99, 0x4B, 0x45, 0x76, 0x5F, 0xF0, 0xD2, 0xE4, 0x72, 0xF7, + 0x4C, 0xEE, 0xA0, 0xE2, 0x12, 0xE9, 0x9D, 0xD4, 0x1C, 0x42, 0xEA, 0x32, + 0x96, 0x8A, 0xEC, 0xBF, 0xE1, 0xA6, 0x52, 0xD1, 0x5D, 0x97, 0xFC, 0x34, + 0xB9, 0x1C, 0xBD, 0xD3, 0x3B, 0xA8, 0x38, 0x84, 0xBA, 0x67, 0x75, 0x07, + 0x10, 0xBA, 0x8C, 0xA5, 0xA2, 0xBB, 0x2F, 0xF8, 0x69, 0x94, 0xB4, 0x57, + 0x65, 0xFF, 0x00, 0x0D, 0x2E, 0x46, 0x1F, 0xA3, 0x12, 0x91, 0xE5, 0xA6, + 0x9F, 0xCB, 0xC3, 0x2C, 0xB5, 0xD1, 0x5A, 0xE9, 0xBF, 0x53, 0xFE, 0x9F, + 0x55, 0x85, 0x47, 0x52, 0x92, 0x54, 0x84, 0x47, 0x09, 0x66, 0x90, 0xE6, + 0x0F, 0x7B, 0x40, 0x59, 0xBF, 0xA9, 0xFF, 0x00, 0x4F, 0xAA, 0x82, 0x9F, + 0xAA, 0x3D, 0xCF, 0xAA, 0xD0, 0x7A, 0x55, 0x21, 0x35, 0x39, 0x16, 0x01, + 0x96, 0x82, 0xE8, 0x81, 0xAD, 0x35, 0xD5, 0xEE, 0x5B, 0xFF, 0x00, 0xD5, + 0x1E, 0xE7, 0xD5, 0x62, 0xD2, 0x34, 0xBC, 0xB5, 0x1A, 0xF6, 0x36, 0x62, + 0xDD, 0x6F, 0x15, 0x8B, 0x22, 0xB5, 0xA1, 0xC5, 0xDC, 0x74, 0x96, 0xC9, + 0x11, 0x2E, 0x3A, 0x4B, 0x64, 0x88, 0xBA, 0x7C, 0xAA, 0xA3, 0xBF, 0xCB, + 0xB8, 0x99, 0x55, 0x47, 0x7F, 0x97, 0x71, 0x51, 0xCC, 0x5C, 0x74, 0x96, + 0xC9, 0x11, 0x2E, 0x3A, 0x4B, 0x64, 0x88, 0xBA, 0x7C, 0xAA, 0xA3, 0xBF, + 0xCB, 0xB8, 0x99, 0x55, 0x47, 0x7F, 0x97, 0x71, 0x07, 0x31, 0x71, 0xD2, + 0x5B, 0x24, 0x44, 0xB8, 0xE9, 0x2D, 0x92, 0x22, 0xE9, 0xF2, 0xAA, 0x8E, + 0xFF, 0x00, 0x2E, 0xE2, 0x65, 0x55, 0x1D, 0xFE, 0x5D, 0xC4, 0x1C, 0xC5, + 0xC7, 0x49, 0x6C, 0x91, 0x12, 0xE3, 0xA4, 0xB6, 0x48, 0x8B, 0xA7, 0xCA, + 0xAA, 0x3B, 0xFC, 0xBB, 0x89, 0x95, 0x54, 0x77, 0xF9, 0x77, 0x10, 0x73, + 0x17, 0x1D, 0x25, 0xB2, 0x44, 0x4B, 0x8E, 0x92, 0xD9, 0x22, 0x2E, 0x9F, + 0x2A, 0xA8, 0xEF, 0xF2, 0xEE, 0x26, 0x55, 0x51, 0xDF, 0xE5, 0xDC, 0x41, + 0xCC, 0x5C, 0x74, 0x96, 0xC9, 0x11, 0x2E, 0x3A, 0x4B, 0x64, 0x88, 0xBA, + 0x7C, 0xAA, 0xA3, 0xBF, 0xCB, 0xB8, 0x99, 0x55, 0x47, 0x7F, 0x97, 0x71, + 0x07, 0x31, 0x71, 0xD2, 0x5B, 0x24, 0x44, 0xB8, 0xE9, 0x2D, 0x92, 0x22, + 0xE9, 0xF2, 0xAA, 0x8E, 0xFF, 0x00, 0x2E, 0xE2, 0x65, 0x55, 0x1D, 0xFE, + 0x5D, 0xC4, 0x1C, 0xC5, 0xC7, 0x49, 0x6C, 0x91, 0x12, 0xE3, 0xA4, 0xB6, + 0x48, 0x8B, 0xA7, 0xCA, 0xAA, 0x3B, 0xFC, 0xBB, 0x89, 0x95, 0x54, 0x77, + 0xF9, 0x77, 0x10, 0x73, 0x17, 0x1D, 0x25, 0xB2, 0x44, 0x5D, 0x9D, 0x05, + 0x06, 0x24, 0xBD, 0x15, 0x06, 0x14, 0x66, 0x16, 0x3D, 0xB5, 0xD6, 0x0F, + 0xF2, 0xB0, 0xF2, 0xAA, 0x8E, 0xFF, 0x00, 0x2E, 0xE2, 0xDA, 0xC9, 0xCD, + 0x43, 0x9D, 0x96, 0x6C, 0x78, 0x36, 0xAC, 0x3B, 0xA2, 0xD0, 0xA8, 0xA8, + 0x39, 0x1A, 0x66, 0x89, 0x9E, 0x8F, 0x4A, 0x4C, 0x45, 0x85, 0x2C, 0xF7, + 0x31, 0xCE, 0xAC, 0x11, 0xEF, 0x58, 0x37, 0x1D, 0x25, 0xB2, 0x44, 0x5D, + 0x6C, 0xD7, 0xA4, 0x52, 0x52, 0x93, 0x0F, 0x81, 0x17, 0x95, 0xB6, 0xC3, + 0x51, 0xA9, 0xB5, 0x85, 0x0E, 0x55, 0x51, 0xDF, 0xE5, 0xDC, 0x54, 0x73, + 0x17, 0x1D, 0x25, 0xB2, 0x44, 0x4B, 0x8E, 0x92, 0xD9, 0x22, 0x2E, 0x9F, + 0x2A, 0xA8, 0xEF, 0xF2, 0xEE, 0x26, 0x55, 0x51, 0xDF, 0xE5, 0xDC, 0x41, + 0xCC, 0x5C, 0x74, 0x96, 0xC9, 0x11, 0x2E, 0x3A, 0x4B, 0x64, 0x88, 0xBA, + 0x7C, 0xAA, 0xA3, 0xBF, 0xCB, 0xB8, 0x99, 0x55, 0x47, 0x7F, 0x97, 0x71, + 0x07, 0x31, 0x71, 0xD2, 0x5B, 0x24, 0x44, 0xB8, 0xE9, 0x2D, 0x92, 0x22, + 0xE9, 0xF2, 0xAA, 0x8E, 0xFF, 0x00, 0x2E, 0xE2, 0x65, 0x55, 0x1D, 0xFE, + 0x5D, 0xC4, 0x1C, 0xC5, 0xC7, 0x49, 0x6C, 0x91, 0x12, 0xE3, 0xA4, 0xB6, + 0x48, 0x8B, 0xA7, 0xCA, 0xAA, 0x3B, 0xFC, 0xBB, 0x89, 0x95, 0x54, 0x77, + 0xF9, 0x77, 0x10, 0x73, 0x17, 0x1D, 0x25, 0xB2, 0x44, 0x4B, 0x8E, 0x92, + 0xD9, 0x22, 0x2E, 0x9F, 0x2A, 0xA8, 0xEF, 0xF2, 0xEE, 0x26, 0x55, 0x51, + 0xDF, 0xE5, 0xDC, 0x41, 0xCC, 0x5C, 0x74, 0x96, 0xC9, 0x11, 0x2E, 0x3A, + 0x4B, 0x64, 0x88, 0xBA, 0x7C, 0xAA, 0xA3, 0xBF, 0xCB, 0xB8, 0x99, 0x55, + 0x47, 0x7F, 0x97, 0x71, 0x07, 0x31, 0x71, 0xD2, 0x5B, 0x24, 0x44, 0xB8, + 0xE9, 0x2D, 0x92, 0x22, 0xE9, 0xF2, 0xAA, 0x8E, 0xFF, 0x00, 0x2E, 0xE2, + 0x65, 0x55, 0x1D, 0xFE, 0x5D, 0xC4, 0x1C, 0xC5, 0xC7, 0x49, 0x6C, 0x91, + 0x15, 0xF0, 0xA8, 0x4A, 0x45, 0xB1, 0x58, 0x4C, 0xA4, 0x4A, 0x83, 0x81, + 0x39, 0x97, 0x49, 0x95, 0x54, 0x77, 0xF9, 0x77, 0x15, 0x5B, 0xE9, 0x4D, + 0x1E, 0xE7, 0x06, 0x8E, 0x56, 0xB2, 0x6A, 0x1F, 0x83, 0xEE, 0x83, 0x6D, + 0x1B, 0x34, 0xA4, 0x4F, 0x0C, 0xF0, 0x56, 0xCD, 0x75, 0x28, 0xDE, 0x1B, + 0xB8, 0x2B, 0xA3, 0x9A, 0xE5, 0xA2, 0x1D, 0x2C, 0x3C, 0x15, 0xB3, 0x5D, + 0x4A, 0x37, 0x86, 0xEE, 0x0B, 0x33, 0xD9, 0xAC, 0x3C, 0xA1, 0x59, 0x5E, + 0xA5, 0x07, 0xC3, 0x6F, 0x05, 0x58, 0x5D, 0x55, 0x9D, 0xC1, 0xC1, 0x52, + 0x57, 0xA9, 0x41, 0xF0, 0xDB, 0xC1, 0x56, 0x17, 0x55, 0x67, 0x70, 0x70, + 0x52, 0x0C, 0xFC, 0xA5, 0xE6, 0xB1, 0xFD, 0x7C, 0x4E, 0xF1, 0xE2, 0xA3, + 0x52, 0x47, 0xF5, 0xF1, 0x3B, 0xC7, 0x8A, 0x8D, 0x6A, 0x19, 0x11, 0x11, + 0x14, 0x44, 0x44, 0x05, 0x70, 0x63, 0x9C, 0xD7, 0x38, 0x02, 0x5A, 0xDE, + 0x93, 0xA1, 0x5A, 0xB2, 0x65, 0x9E, 0xCE, 0x46, 0x3C, 0x17, 0xBC, 0x43, + 0x31, 0x03, 0x6A, 0x73, 0x81, 0xAB, 0x31, 0xFD, 0x90, 0x46, 0xC9, 0x78, + 0xD1, 0x1E, 0xD6, 0x32, 0x1B, 0x9C, 0xE7, 0x8B, 0x4D, 0x00, 0x67, 0x23, + 0x4F, 0x92, 0xA4, 0x29, 0x78, 0xD1, 0xC1, 0x30, 0xA1, 0xB9, 0xC0, 0x66, + 0x24, 0x05, 0xB0, 0x13, 0x90, 0x20, 0x34, 0x16, 0x39, 0xD1, 0x22, 0x35, + 0x8D, 0x86, 0xD2, 0xC3, 0x67, 0xA0, 0xDA, 0x24, 0x12, 0x34, 0xD4, 0x31, + 0x56, 0x4C, 0xBE, 0x5A, 0x65, 0xB6, 0x21, 0x46, 0x6C, 0x16, 0x88, 0x8E, + 0x89, 0x53, 0x83, 0xAA, 0xFC, 0x40, 0x66, 0xCC, 0x3A, 0x41, 0x15, 0x20, + 0xD7, 0xB9, 0xA5, 0xAE, 0x2D, 0x70, 0x20, 0x83, 0x51, 0x07, 0xDC, 0xA8, + 0xA4, 0x8E, 0xE6, 0xBA, 0x3B, 0xCB, 0x1E, 0xF7, 0xB4, 0x9C, 0xCE, 0x7F, + 0x49, 0xFD, 0xCA, 0x8D, 0x01, 0x11, 0x10, 0x11, 0x11, 0x01, 0x66, 0xD0, + 0xFE, 0xD2, 0x83, 0xFC, 0xAC, 0x25, 0x9B, 0x43, 0xFB, 0x4A, 0x0F, 0xF2, + 0xA4, 0xF6, 0x47, 0x65, 0xE9, 0x0F, 0xB1, 0x23, 0xF7, 0x42, 0xE0, 0x17, + 0x7F, 0xE9, 0x0F, 0xB1, 0x23, 0xF7, 0x42, 0xE0, 0x12, 0x01, 0x11, 0x15, + 0x51, 0x11, 0x10, 0x11, 0x11, 0x04, 0x86, 0x04, 0x50, 0xE8, 0x6D, 0x30, + 0xDC, 0x0C, 0x40, 0x0B, 0x05, 0x5F, 0x98, 0x1E, 0x8A, 0x95, 0xED, 0x93, + 0x98, 0x71, 0x70, 0x10, 0x5E, 0x4B, 0x5C, 0x5A, 0x45, 0x5E, 0xF1, 0xD2, + 0x3F, 0x95, 0x98, 0x67, 0x20, 0x98, 0x2C, 0x25, 0xC7, 0x94, 0x81, 0x0C, + 0x72, 0x79, 0xBD, 0xE5, 0xB5, 0x1C, 0x0D, 0x45, 0x5E, 0xE9, 0xA9, 0x78, + 0xB3, 0x0F, 0x73, 0xA2, 0xC3, 0x30, 0xF9, 0x77, 0xBC, 0x07, 0xB5, 0xC1, + 0xC0, 0x17, 0x57, 0x5B, 0x4B, 0x73, 0xE3, 0xEF, 0x41, 0xAE, 0x87, 0x2B, + 0x1E, 0x2B, 0x2D, 0xC3, 0x84, 0xF7, 0x37, 0x48, 0x1D, 0x2A, 0x25, 0xB0, + 0x73, 0xE0, 0x46, 0x74, 0x07, 0xF3, 0x93, 0x04, 0x42, 0x16, 0x48, 0x20, + 0xDA, 0xCC, 0xE2, 0x6B, 0x15, 0x0A, 0xAB, 0xCF, 0xFB, 0x67, 0x58, 0x07, + 0xA4, 0xD5, 0xD1, 0xFB, 0xA0, 0xA2, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, + 0x20, 0xE8, 0xBD, 0x10, 0xEB, 0x51, 0x3F, 0xAF, 0xAA, 0xEB, 0x7F, 0x53, + 0xFE, 0x9F, 0x55, 0xC9, 0x7A, 0x21, 0xD6, 0xA2, 0x7F, 0x5F, 0x55, 0xD6, + 0xFE, 0xA7, 0xFD, 0x3E, 0xAB, 0x28, 0xA7, 0xEA, 0x8F, 0x73, 0xEA, 0xB9, + 0x7F, 0x4D, 0x3D, 0x74, 0xB7, 0x74, 0xF1, 0x5D, 0x47, 0xEA, 0x8F, 0x73, + 0xEA, 0xB9, 0x7F, 0x4D, 0x3D, 0x74, 0xB7, 0x74, 0xF1, 0x5A, 0x1C, 0xCA, + 0x22, 0x22, 0x88, 0x88, 0x80, 0x88, 0x88, 0x0A, 0xF3, 0x06, 0x20, 0x73, + 0xDA, 0x58, 0x43, 0xA1, 0xFE, 0x61, 0x57, 0x42, 0xB1, 0x6C, 0xDF, 0x16, + 0x5D, 0xD3, 0x13, 0x51, 0xB9, 0x76, 0xD5, 0x30, 0x2A, 0x0D, 0x0D, 0x75, + 0x6D, 0xAD, 0xC0, 0x9A, 0xF3, 0x55, 0x9B, 0x3F, 0x42, 0x0C, 0x07, 0x41, + 0x8A, 0xD1, 0x0C, 0xBA, 0x1B, 0x87, 0x28, 0x2B, 0x66, 0x6F, 0xCD, 0xFC, + 0x2A, 0xC5, 0x97, 0x8D, 0x04, 0x03, 0x16, 0x1B, 0x98, 0x09, 0xAA, 0xB2, + 0x3D, 0xFA, 0x16, 0xC8, 0x52, 0x32, 0xAE, 0x78, 0x25, 0xAF, 0x60, 0x85, + 0x10, 0x18, 0x75, 0x9B, 0x5F, 0x86, 0xAB, 0x39, 0xB3, 0x0A, 0xAA, 0x01, + 0xA7, 0xFA, 0x58, 0x11, 0x1B, 0x0E, 0x1C, 0x02, 0xD6, 0xCC, 0x72, 0xAE, + 0x73, 0x81, 0xB2, 0xC0, 0x43, 0x6A, 0x15, 0xE7, 0x35, 0x81, 0x9F, 0x3F, + 0x14, 0x18, 0xE8, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0xBB, 0xFF, + 0x00, 0x47, 0x3D, 0x8B, 0x2F, 0xFC, 0x1E, 0x2B, 0x80, 0x5D, 0xFF, 0x00, + 0xA3, 0x9E, 0xC5, 0x97, 0xFE, 0x0F, 0x14, 0x47, 0x23, 0x4F, 0xFB, 0x66, + 0x6B, 0xBE, 0xB5, 0xCB, 0x63, 0x4F, 0xFB, 0x66, 0x6B, 0xBE, 0xB5, 0xCA, + 0x90, 0x22, 0x22, 0x8A, 0x22, 0x22, 0x02, 0xBE, 0x1C, 0x27, 0xC5, 0xB5, + 0xC9, 0xB0, 0xBA, 0xC3, 0x6D, 0x3A, 0xA1, 0xD0, 0x34, 0xAB, 0x16, 0x5D, + 0x1F, 0x32, 0xD9, 0x53, 0x1D, 0xCE, 0xCF, 0x6A, 0x18, 0x68, 0x6F, 0x6B, + 0xF1, 0xB4, 0x91, 0x80, 0x28, 0x20, 0x64, 0xBC, 0x67, 0xB1, 0xAE, 0x64, + 0x37, 0x39, 0xAE, 0x75, 0x90, 0x40, 0xE9, 0x3A, 0x15, 0x4C, 0xAC, 0x76, + 0xBD, 0xAC, 0x30, 0x9D, 0x69, 0xFF, 0x00, 0x94, 0x01, 0x5D, 0x7F, 0xC2, + 0xD8, 0x73, 0xB8, 0x10, 0xDA, 0xC8, 0x30, 0x63, 0x10, 0xC8, 0x6E, 0xFC, + 0x2F, 0x2C, 0xAE, 0xBA, 0xDA, 0x6B, 0x24, 0x68, 0xAC, 0xD5, 0xFC, 0x2B, + 0x79, 0x79, 0x66, 0xB2, 0xC5, 0xB6, 0x35, 0xCF, 0x6B, 0xDA, 0x5D, 0x08, + 0x3A, 0xC3, 0x6B, 0xAA, 0xA3, 0x51, 0xCF, 0x59, 0xAA, 0xA3, 0x57, 0xB9, + 0x06, 0xBE, 0x2C, 0x18, 0x90, 0x48, 0x11, 0x58, 0x5B, 0x58, 0xAC, 0x57, + 0xEF, 0x56, 0x29, 0xE3, 0x86, 0x32, 0x1C, 0x36, 0x32, 0x37, 0x2A, 0x41, + 0x24, 0xD5, 0x5D, 0x91, 0xD1, 0xD1, 0x58, 0x19, 0xF4, 0xFF, 0x00, 0x4A, + 0x04, 0x04, 0x44, 0x40, 0x44, 0x44, 0x05, 0x7C, 0x0F, 0x5D, 0x0F, 0xBC, + 0x38, 0xAB, 0x15, 0xF0, 0x3D, 0x74, 0x3E, 0xF0, 0xE2, 0x88, 0xF4, 0xA8, + 0xDD, 0x51, 0xFE, 0x19, 0xE0, 0xA9, 0x35, 0xD4, 0xA3, 0x78, 0x6E, 0xE0, + 0xAB, 0x1B, 0xAA, 0x3F, 0xC3, 0x3C, 0x15, 0x26, 0xBA, 0x94, 0x6F, 0x0D, + 0xDC, 0x14, 0x9E, 0xCD, 0x61, 0xE5, 0x0A, 0xCA, 0xF5, 0x28, 0x3E, 0x1B, + 0x78, 0x2A, 0xC2, 0xEA, 0xAC, 0xEE, 0x0E, 0x0A, 0x92, 0xBD, 0x4A, 0x0F, + 0x86, 0xDE, 0x0A, 0xE8, 0x19, 0xE5, 0xE1, 0x8F, 0xFC, 0x07, 0x05, 0x20, + 0xCF, 0xCA, 0x5E, 0x69, 0x1F, 0xD7, 0xC4, 0xEF, 0x1E, 0x2A, 0x35, 0xDF, + 0x3E, 0x80, 0x92, 0x73, 0xDC, 0xEE, 0x49, 0x82, 0xB3, 0x5F, 0xE5, 0xAD, + 0x53, 0x27, 0xA4, 0xB5, 0x70, 0xF7, 0x15, 0x65, 0xC1, 0x22, 0xEF, 0x72, + 0x7A, 0x4B, 0x57, 0x0F, 0x71, 0x32, 0x7A, 0x4B, 0x57, 0x0F, 0x71, 0x2C, + 0x70, 0x48, 0xBB, 0xDC, 0x9E, 0x92, 0xD5, 0xC3, 0xDC, 0x4C, 0x9E, 0x92, + 0xD5, 0xC3, 0xDC, 0x4B, 0x1C, 0x12, 0x2E, 0xF7, 0x27, 0xA4, 0xB5, 0x70, + 0xF7, 0x13, 0x27, 0xA4, 0xB5, 0x70, 0xF7, 0x12, 0xC7, 0x04, 0x8B, 0xBD, + 0xC9, 0xE9, 0x2D, 0x5C, 0x3D, 0xC4, 0xC9, 0xE9, 0x2D, 0x5C, 0x3D, 0xC4, + 0xB1, 0xC1, 0x22, 0xEF, 0x72, 0x7A, 0x4B, 0x57, 0x0F, 0x71, 0x32, 0x7A, + 0x4B, 0x57, 0x0F, 0x71, 0x2C, 0x70, 0x48, 0xBB, 0xDC, 0x9E, 0x92, 0xD5, + 0xC3, 0xDC, 0x4C, 0x9E, 0x92, 0xD5, 0xC3, 0xDC, 0x4B, 0x1C, 0x12, 0x2E, + 0xF7, 0x27, 0xA4, 0xB5, 0x70, 0xF7, 0x13, 0x27, 0xA4, 0xB5, 0x70, 0xF7, + 0x12, 0xC7, 0x04, 0xB3, 0x68, 0x7F, 0x69, 0x41, 0xFE, 0x57, 0x61, 0x93, + 0xD2, 0x5A, 0xB8, 0x7B, 0x8A, 0xE8, 0x74, 0x14, 0xAC, 0x27, 0x87, 0xC3, + 0x6B, 0x1A, 0xE1, 0xD0, 0x43, 0x50, 0x3D, 0x21, 0xF6, 0x24, 0x7E, 0xE8, + 0x5C, 0x02, 0xF4, 0xE9, 0x89, 0x78, 0x73, 0x30, 0x1D, 0x06, 0x2B, 0x43, + 0x98, 0xE1, 0x9C, 0x15, 0xAD, 0xC9, 0xE9, 0x2D, 0x5C, 0x3D, 0xC4, 0x1C, + 0x1A, 0x2E, 0xF7, 0x27, 0xA4, 0xB5, 0x70, 0xF7, 0x13, 0x27, 0xA4, 0xB5, + 0x70, 0xF7, 0x12, 0xC7, 0x04, 0x8B, 0xBD, 0xC9, 0xE9, 0x2D, 0x5C, 0x3D, + 0xC4, 0xC9, 0xE9, 0x2D, 0x5C, 0x3D, 0xC4, 0xB1, 0xC1, 0x22, 0xEF, 0x72, + 0x7A, 0x4B, 0x57, 0x0F, 0x71, 0x32, 0x7A, 0x4B, 0x57, 0x0F, 0x71, 0x2C, + 0x70, 0x48, 0xBB, 0xDC, 0x9E, 0x92, 0xD5, 0xC3, 0xDC, 0x4C, 0x9E, 0x92, + 0xD5, 0xC3, 0xDC, 0x4B, 0x1C, 0x12, 0x2E, 0xF7, 0x27, 0xA4, 0xB5, 0x70, + 0xF7, 0x13, 0x27, 0xA4, 0xB5, 0x70, 0xF7, 0x12, 0xC7, 0x04, 0x8B, 0xBD, + 0xC9, 0xE9, 0x2D, 0x5C, 0x3D, 0xC4, 0xC9, 0xE9, 0x2D, 0x5C, 0x3D, 0xC4, + 0xB1, 0xC1, 0x22, 0xEF, 0x72, 0x7A, 0x4B, 0x57, 0x0F, 0x71, 0x32, 0x7A, + 0x4B, 0x57, 0x0F, 0x71, 0x2C, 0x70, 0x48, 0xBB, 0xDC, 0x9E, 0x92, 0xD5, + 0xC3, 0xDC, 0x4C, 0x9E, 0x92, 0xD5, 0xC3, 0xDC, 0x4B, 0x1A, 0x4F, 0x44, + 0x3A, 0xD4, 0x4F, 0xEB, 0xEA, 0xBA, 0xDF, 0xD4, 0xFF, 0x00, 0xA7, 0xD5, + 0x62, 0x49, 0xD1, 0x50, 0x24, 0xE2, 0xDB, 0x82, 0x1A, 0xDD, 0x20, 0x36, + 0xAA, 0xD6, 0x5F, 0xEA, 0x7F, 0xD3, 0xEA, 0xA0, 0xA7, 0xEA, 0x8F, 0x73, + 0xEA, 0xB9, 0x7F, 0x4D, 0x3D, 0x74, 0xB7, 0x74, 0xF1, 0x5D, 0x47, 0xEA, + 0x8F, 0x73, 0xEA, 0xA3, 0x9A, 0xA3, 0xE5, 0x67, 0x1C, 0xD7, 0x4C, 0xC1, + 0x6C, 0x42, 0xD1, 0x50, 0xAF, 0xDC, 0xB4, 0x3C, 0xD5, 0x17, 0xA1, 0xDC, + 0x74, 0x66, 0xC7, 0x0F, 0xCD, 0x2E, 0x3A, 0x33, 0x63, 0x87, 0xE6, 0x9D, + 0x07, 0x9E, 0x22, 0xF4, 0x3B, 0x8E, 0x8C, 0xD8, 0xE1, 0xF9, 0xA5, 0xC7, + 0x46, 0x6C, 0x70, 0xFC, 0xD3, 0xA0, 0xF3, 0xC4, 0x5E, 0x87, 0x71, 0xD1, + 0x9B, 0x1C, 0x3F, 0x34, 0xB8, 0xE8, 0xCD, 0x8E, 0x1F, 0x9A, 0x74, 0x1E, + 0x78, 0x8B, 0xD0, 0xEE, 0x3A, 0x33, 0x63, 0x87, 0xE6, 0x97, 0x1D, 0x19, + 0xB1, 0xC3, 0xF3, 0x4E, 0x83, 0xCF, 0x11, 0x7A, 0x1D, 0xC7, 0x46, 0x6C, + 0x70, 0xFC, 0xD2, 0xE3, 0xA3, 0x36, 0x38, 0x7E, 0x69, 0xD0, 0x79, 0xE2, + 0x2F, 0x43, 0xB8, 0xE8, 0xCD, 0x8E, 0x1F, 0x9A, 0x5C, 0x74, 0x66, 0xC7, + 0x0F, 0xCD, 0x3A, 0x0F, 0x3C, 0x45, 0xE8, 0x77, 0x1D, 0x19, 0xB1, 0xC3, + 0xF3, 0x4B, 0x8E, 0x8C, 0xD8, 0xE1, 0xF9, 0xA7, 0x41, 0xE7, 0x88, 0xBD, + 0x0E, 0xE3, 0xA3, 0x36, 0x38, 0x7E, 0x69, 0x71, 0xD1, 0x9B, 0x1C, 0x3F, + 0x34, 0xE8, 0x3C, 0xF1, 0x77, 0xFE, 0x8E, 0x7B, 0x16, 0x5F, 0xF8, 0x3C, + 0x54, 0x97, 0x1D, 0x19, 0xB1, 0xC3, 0xF3, 0x59, 0x90, 0x20, 0x42, 0x96, + 0x84, 0x21, 0x41, 0x60, 0x63, 0x1B, 0xD0, 0xD1, 0xEE, 0x41, 0xC0, 0xD3, + 0xFE, 0xD9, 0x9A, 0xEF, 0xAD, 0x72, 0xF4, 0x68, 0xD4, 0x44, 0x84, 0x78, + 0xAE, 0x8B, 0x16, 0x59, 0x8F, 0x7B, 0x8D, 0x64, 0x9A, 0xF3, 0xAB, 0x2E, + 0x3A, 0x33, 0x63, 0x87, 0xE6, 0x97, 0x03, 0xCF, 0x11, 0x7A, 0x1D, 0xC7, + 0x46, 0x6C, 0x70, 0xFC, 0xD2, 0xE3, 0xA3, 0x36, 0x38, 0x7E, 0x69, 0xD0, + 0x79, 0xE2, 0x2F, 0x43, 0xB8, 0xE8, 0xCD, 0x8E, 0x1F, 0x9A, 0x5C, 0x74, + 0x66, 0xC7, 0x0F, 0xCD, 0x3A, 0x0F, 0x3C, 0x45, 0xE8, 0x77, 0x1D, 0x19, + 0xB1, 0xC3, 0xF3, 0x4B, 0x8E, 0x8C, 0xD8, 0xE1, 0xF9, 0xA7, 0x41, 0xE7, + 0x88, 0xBD, 0x0E, 0xE3, 0xA3, 0x36, 0x38, 0x7E, 0x69, 0x71, 0xD1, 0x9B, + 0x1C, 0x3F, 0x34, 0xE8, 0x3C, 0xF1, 0x17, 0xA1, 0xDC, 0x74, 0x66, 0xC7, + 0x0F, 0xCD, 0x2E, 0x3A, 0x33, 0x63, 0x87, 0xE6, 0x9D, 0x07, 0x9E, 0x22, + 0xF4, 0x3B, 0x8E, 0x8C, 0xD8, 0xE1, 0xF9, 0xA5, 0xC7, 0x46, 0x6C, 0x70, + 0xFC, 0xD3, 0xA0, 0xF3, 0xC4, 0x5E, 0x87, 0x71, 0xD1, 0x9B, 0x1C, 0x3F, + 0x34, 0xB8, 0xE8, 0xCD, 0x8E, 0x1F, 0x9A, 0x74, 0x1E, 0x78, 0xAF, 0x81, + 0xEB, 0xA1, 0xF7, 0x87, 0x15, 0xE8, 0x17, 0x1D, 0x19, 0xB1, 0xC3, 0xF3, + 0x41, 0x41, 0xD1, 0xA0, 0xD6, 0x25, 0x21, 0x82, 0x3F, 0x94, 0xE8, 0x32, + 0xA3, 0x75, 0x47, 0xF8, 0x67, 0x82, 0xA4, 0xD7, 0x52, 0x8D, 0xE1, 0xBB, + 0x82, 0xBA, 0x60, 0x55, 0x2D, 0x14, 0x0E, 0xC1, 0xE0, 0xAD, 0x9A, 0xEA, + 0x51, 0xBC, 0x37, 0x70, 0x52, 0x7B, 0x35, 0x87, 0x94, 0x2B, 0x2B, 0xD4, + 0xA0, 0xF8, 0x6D, 0xE0, 0xAB, 0x0B, 0xAA, 0xB3, 0xB8, 0x38, 0x2A, 0x4A, + 0xF5, 0x28, 0x3E, 0x1B, 0x78, 0x2A, 0xC2, 0xEA, 0xAC, 0xEE, 0x0E, 0x0A, + 0x41, 0x9F, 0x94, 0xBC, 0xE6, 0x34, 0xCC, 0x71, 0x1A, 0x20, 0x11, 0xA2, + 0x00, 0x1C, 0x7F, 0xEE, 0x3A, 0x55, 0x9C, 0xEA, 0x3E, 0xBE, 0x26, 0xF9, + 0x54, 0x8F, 0xEB, 0xE2, 0x77, 0x8F, 0x15, 0x1A, 0xB1, 0x10, 0xCA, 0x5E, + 0x75, 0x1F, 0x5F, 0x13, 0x7C, 0xA7, 0x3A, 0x8F, 0xAF, 0x89, 0xBE, 0x54, + 0x48, 0xAD, 0x40, 0x97, 0x9D, 0x47, 0xD7, 0xC4, 0xDF, 0x29, 0xCE, 0xA3, + 0xEB, 0xE2, 0x6F, 0x95, 0x12, 0x25, 0x40, 0x97, 0x9D, 0x47, 0xD7, 0xC4, + 0xDF, 0x29, 0xCE, 0xA3, 0xEB, 0xE2, 0x6F, 0x95, 0x12, 0xCA, 0x82, 0xD6, + 0x32, 0x51, 0xF1, 0xDD, 0x0C, 0x45, 0x70, 0x78, 0x60, 0x0E, 0x26, 0xA6, + 0xE6, 0x26, 0xBC, 0xDF, 0xC7, 0x14, 0xA8, 0x11, 0x73, 0xA8, 0xFA, 0xF8, + 0x9B, 0xE5, 0x39, 0xD4, 0x7D, 0x7C, 0x4D, 0xF2, 0xB2, 0xDC, 0xD8, 0x50, + 0xE5, 0x9F, 0x18, 0xCA, 0x34, 0x12, 0xF6, 0x00, 0xD7, 0xB9, 0xD9, 0x81, + 0x69, 0x39, 0xAA, 0x23, 0xA5, 0x56, 0x62, 0x04, 0x19, 0x56, 0x3E, 0x28, + 0x84, 0x22, 0x56, 0xE6, 0x80, 0xC7, 0x93, 0x54, 0x3A, 0xDA, 0x1D, 0x51, + 0xAA, 0xAC, 0xF9, 0xEA, 0xFE, 0x8A, 0x95, 0x05, 0x30, 0xF9, 0xD4, 0x7D, + 0x7C, 0x4D, 0xF2, 0x9C, 0xEA, 0x3E, 0xBE, 0x26, 0xF9, 0x49, 0x86, 0x86, + 0xC6, 0x35, 0x43, 0x30, 0x81, 0x00, 0x86, 0x13, 0x5D, 0x55, 0x8A, 0xD4, + 0x4A, 0xD4, 0x09, 0x79, 0xD4, 0x7D, 0x7C, 0x4D, 0xF2, 0x9C, 0xEA, 0x3E, + 0xBE, 0x26, 0xF9, 0x51, 0x22, 0x54, 0x09, 0x79, 0xD4, 0x7D, 0x7C, 0x4D, + 0xF2, 0x9C, 0xEA, 0x3E, 0xBE, 0x26, 0xF9, 0x51, 0x22, 0x54, 0x09, 0x79, + 0xD4, 0x7D, 0x7C, 0x4D, 0xF2, 0xB3, 0x68, 0x79, 0x98, 0xE6, 0x93, 0x83, + 0x5C, 0x57, 0x9C, 0xFD, 0x05, 0xC4, 0x85, 0xAD, 0x59, 0xB4, 0x3F, 0xB4, + 0xA0, 0xFF, 0x00, 0x2A, 0x4C, 0x74, 0x1D, 0x9F, 0xA4, 0x0E, 0x73, 0x68, + 0x68, 0xEE, 0x69, 0x20, 0x80, 0x33, 0x8F, 0xE5, 0x70, 0x9C, 0xEA, 0x3E, + 0xBE, 0x26, 0xF9, 0x5D, 0xD7, 0xA4, 0x3E, 0xC4, 0x8F, 0xDD, 0x0B, 0x80, + 0x41, 0x2F, 0x3A, 0x8F, 0xAF, 0x89, 0xBE, 0x53, 0x9D, 0x47, 0xD7, 0xC4, + 0xDF, 0x2A, 0x24, 0x56, 0xA0, 0x4B, 0xCE, 0xA3, 0xEB, 0xE2, 0x6F, 0x94, + 0xE7, 0x51, 0xF5, 0xF1, 0x37, 0xCA, 0x89, 0x12, 0xA0, 0x4B, 0xCE, 0xA3, + 0xEB, 0xE2, 0x6F, 0x94, 0xE7, 0x51, 0xF5, 0xF1, 0x37, 0xCA, 0x89, 0x12, + 0xA0, 0x4B, 0xCE, 0xA3, 0xEB, 0xE2, 0x6F, 0x94, 0xE7, 0x51, 0xF5, 0xF1, + 0x37, 0xCA, 0x96, 0x5A, 0x04, 0x38, 0xB2, 0x91, 0xDE, 0xF7, 0xB6, 0x1B, + 0x9A, 0xE6, 0x00, 0xE7, 0x57, 0x56, 0x7A, 0xEB, 0xE8, 0x07, 0x42, 0xCC, + 0x64, 0x94, 0xBD, 0xA8, 0x62, 0xA0, 0xF0, 0x5D, 0x00, 0x12, 0x09, 0xA8, + 0xDA, 0xAE, 0xBC, 0x54, 0xA8, 0x29, 0xAE, 0xE7, 0x51, 0xF5, 0xF1, 0x37, + 0xCA, 0x73, 0xA8, 0xFA, 0xF8, 0x9B, 0xE5, 0x4F, 0x11, 0xB0, 0xA2, 0xCB, + 0x46, 0x7B, 0x60, 0xB6, 0x11, 0x84, 0xF0, 0x01, 0x69, 0x35, 0x3A, 0xBA, + 0xF3, 0x67, 0x27, 0x3E, 0x6E, 0x2B, 0x0D, 0x2A, 0x04, 0xBC, 0xEA, 0x3E, + 0xBE, 0x26, 0xF9, 0x4E, 0x75, 0x1F, 0x5F, 0x13, 0x7C, 0xA8, 0x91, 0x5A, + 0x81, 0x2F, 0x3A, 0x8F, 0xAF, 0x89, 0xBE, 0x53, 0x9D, 0x47, 0xD7, 0xC4, + 0xDF, 0x2A, 0x24, 0x4A, 0x81, 0x2F, 0x3A, 0x8F, 0xAF, 0x89, 0xBE, 0x53, + 0x9D, 0x47, 0xD7, 0xC4, 0xDF, 0x2A, 0x24, 0x4A, 0x81, 0xD3, 0x7A, 0x25, + 0x1E, 0x2B, 0xE6, 0x22, 0x87, 0xC4, 0x73, 0x81, 0x03, 0xF3, 0x1A, 0xD7, + 0x53, 0xFA, 0x9F, 0xF4, 0xFA, 0xAE, 0x4B, 0xD1, 0x0E, 0xB5, 0x13, 0xFA, + 0xFA, 0xAE, 0xB7, 0xF5, 0x3F, 0xE9, 0xF5, 0x59, 0x14, 0xFD, 0x51, 0xEE, + 0x7D, 0x57, 0x35, 0xE9, 0x8C, 0x47, 0xC3, 0x8D, 0x2D, 0x61, 0xEE, 0x6D, + 0x6D, 0x3D, 0x06, 0xAF, 0x7A, 0xE9, 0x7F, 0x54, 0x7B, 0x9F, 0x55, 0xCB, + 0xFA, 0x69, 0xEB, 0xA5, 0xBB, 0xA7, 0x8A, 0xD0, 0xE7, 0xB9, 0xCC, 0x7D, + 0x74, 0x4D, 0xE2, 0x9C, 0xE6, 0x3E, 0xBA, 0x26, 0xF1, 0x51, 0x22, 0xB6, + 0x25, 0xE7, 0x31, 0xF5, 0xD1, 0x37, 0x8A, 0x73, 0x98, 0xFA, 0xE8, 0x9B, + 0xC5, 0x44, 0x89, 0x62, 0x5E, 0x73, 0x1F, 0x5D, 0x13, 0x78, 0xA7, 0x39, + 0x8F, 0xAE, 0x89, 0xBC, 0x54, 0x48, 0x96, 0x25, 0xE7, 0x31, 0xF5, 0xD1, + 0x37, 0x8A, 0x73, 0x98, 0xFA, 0xE8, 0x9B, 0xC5, 0x52, 0x5E, 0x18, 0x8B, + 0x31, 0x0E, 0x1B, 0x9D, 0x64, 0x3D, 0xE1, 0xA4, 0xE8, 0xAC, 0xAC, 0xB6, + 0x32, 0x1C, 0x59, 0x83, 0x0B, 0x9A, 0x06, 0x35, 0x91, 0x1A, 0x09, 0x0E, + 0x35, 0x81, 0x6A, 0xAA, 0x9D, 0x59, 0xFF, 0x00, 0xE2, 0x96, 0x53, 0x17, + 0x9C, 0xC7, 0xD7, 0x44, 0xDE, 0x29, 0xCE, 0x63, 0xEB, 0xA2, 0x6F, 0x15, + 0x9B, 0x0A, 0x5E, 0x0C, 0xD4, 0x57, 0xB3, 0x93, 0x6C, 0x00, 0xC8, 0xCD, + 0x65, 0xB6, 0x93, 0x9C, 0x17, 0x55, 0x51, 0xAC, 0x9C, 0xFE, 0xFF, 0x00, + 0xE9, 0x63, 0xC5, 0x2C, 0x89, 0x0E, 0x2D, 0x99, 0x41, 0x0F, 0x93, 0x23, + 0xF1, 0x07, 0x1F, 0xC3, 0xEE, 0xA8, 0xD6, 0x7F, 0xF8, 0x96, 0x52, 0x2E, + 0x73, 0x1F, 0x5D, 0x13, 0x78, 0xA7, 0x39, 0x8F, 0xAE, 0x89, 0xBC, 0x54, + 0x48, 0xAD, 0x89, 0x79, 0xCC, 0x7D, 0x74, 0x4D, 0xE2, 0x9C, 0xE6, 0x3E, + 0xBA, 0x26, 0xF1, 0x51, 0x22, 0x58, 0x97, 0x9C, 0xC7, 0xD7, 0x44, 0xDE, + 0x29, 0xCE, 0x63, 0xEB, 0xA2, 0x6F, 0x15, 0x12, 0x25, 0x89, 0x79, 0xCC, + 0x7D, 0x74, 0x4D, 0xE2, 0xBB, 0xBF, 0x47, 0x5C, 0x5D, 0x43, 0xC0, 0x2E, + 0x24, 0x92, 0x0E, 0x73, 0xFC, 0xAF, 0x3F, 0x5D, 0xFF, 0x00, 0xA3, 0x9E, + 0xC5, 0x97, 0xFE, 0x0F, 0x15, 0x3F, 0xE0, 0xE5, 0x29, 0xD8, 0xF1, 0x59, + 0x4B, 0xCC, 0x86, 0xC5, 0x7B, 0x45, 0xBE, 0x80, 0xE2, 0x16, 0x07, 0x39, + 0x8F, 0xAE, 0x89, 0xBC, 0x56, 0x65, 0x3F, 0xED, 0x99, 0xAE, 0xFA, 0xD7, + 0x2A, 0x25, 0xE7, 0x31, 0xF5, 0xD1, 0x37, 0x8A, 0x73, 0x98, 0xFA, 0xE8, + 0x9B, 0xC5, 0x44, 0x89, 0x62, 0x5E, 0x73, 0x1F, 0x5D, 0x13, 0x78, 0xA7, + 0x39, 0x8F, 0xAE, 0x89, 0xBC, 0x54, 0x48, 0x96, 0x25, 0xE7, 0x31, 0xF5, + 0xD1, 0x37, 0x8A, 0x73, 0x98, 0xFA, 0xE8, 0x9B, 0xC5, 0x44, 0xAA, 0xDC, + 0xEE, 0x1F, 0xCA, 0x58, 0x93, 0x9C, 0xC7, 0xD7, 0x44, 0xDE, 0x29, 0xCE, + 0x63, 0xEB, 0xA2, 0x6F, 0x15, 0x9D, 0x1A, 0x4E, 0x03, 0x23, 0x4F, 0x86, + 0xC4, 0x86, 0xE1, 0x0A, 0xBB, 0x0C, 0x16, 0xAB, 0x6F, 0xFC, 0x80, 0x7B, + 0xC5, 0x5D, 0x06, 0xAE, 0x94, 0x9A, 0x87, 0x02, 0x59, 0xCE, 0x0D, 0x96, + 0x64, 0x4A, 0xE6, 0x62, 0xB0, 0x02, 0x5D, 0x5D, 0x40, 0x8A, 0x80, 0xA8, + 0xFE, 0xEA, 0x59, 0x4C, 0x1E, 0x73, 0x1F, 0x5D, 0x13, 0x78, 0xA7, 0x39, + 0x8F, 0xAE, 0x89, 0xBC, 0x55, 0x66, 0xE1, 0x36, 0x04, 0xDC, 0x68, 0x4C, + 0x35, 0xB5, 0x8F, 0x2D, 0x07, 0xF8, 0x2A, 0x15, 0x6C, 0xA4, 0xBC, 0xE6, + 0x3E, 0xBA, 0x26, 0xF1, 0x4E, 0x73, 0x1F, 0x5D, 0x13, 0x78, 0xA8, 0x91, + 0x2C, 0x4B, 0xCE, 0x63, 0xEB, 0xA2, 0x6F, 0x14, 0xE7, 0x31, 0xF5, 0xD1, + 0x37, 0x8A, 0x89, 0x12, 0xC4, 0xBC, 0xE6, 0x3E, 0xBA, 0x26, 0xF1, 0x57, + 0xC1, 0x98, 0x8C, 0x63, 0x30, 0x18, 0xD1, 0x08, 0x2E, 0x1F, 0xF7, 0x1D, + 0x2B, 0x1D, 0x5F, 0x03, 0xD7, 0x43, 0xEF, 0x0E, 0x29, 0x63, 0xD2, 0xA3, + 0x75, 0x47, 0xF8, 0x67, 0x82, 0xA4, 0xD7, 0x52, 0x8D, 0xE1, 0xBB, 0x82, + 0xAC, 0x6E, 0xA8, 0xFF, 0x00, 0x0C, 0xF0, 0x54, 0x9A, 0xEA, 0x51, 0xBC, + 0x37, 0x70, 0x59, 0x9E, 0xCD, 0x61, 0xE5, 0x0A, 0xCA, 0xF5, 0x28, 0x3E, + 0x1B, 0x78, 0x2A, 0xC2, 0xEA, 0xAC, 0xEE, 0x0E, 0x0A, 0x92, 0xBD, 0x4A, + 0x0F, 0x86, 0xDE, 0x0A, 0xB0, 0x45, 0x72, 0xCC, 0x1F, 0xF8, 0x0E, 0x0A, + 0x41, 0x9F, 0x94, 0xBC, 0xD6, 0x3F, 0xAF, 0x89, 0xDE, 0x3C, 0x54, 0x6B, + 0x7F, 0x1B, 0xD1, 0xA9, 0x93, 0x19, 0xE7, 0x94, 0x19, 0xDC, 0x4E, 0x66, + 0x95, 0x66, 0x4C, 0xCC, 0xF6, 0xC6, 0xE9, 0x56, 0x25, 0x96, 0x8D, 0x16, + 0xF3, 0x26, 0x66, 0x7B, 0x63, 0x74, 0xA6, 0x4C, 0xCC, 0xF6, 0xC6, 0xE9, + 0x4B, 0x1A, 0x34, 0x5B, 0xCC, 0x99, 0x99, 0xED, 0x8D, 0xD2, 0x99, 0x33, + 0x33, 0xDB, 0x1B, 0xA5, 0x2C, 0x68, 0xD4, 0x90, 0xA3, 0x45, 0x82, 0x49, + 0x84, 0xF7, 0x32, 0xBC, 0xC6, 0xA3, 0xD2, 0xB7, 0x19, 0x33, 0x33, 0xDB, + 0x1B, 0xA5, 0x32, 0x66, 0x67, 0xB6, 0x37, 0x4A, 0x58, 0xD4, 0xB6, 0x6E, + 0x65, 0x85, 0xC5, 0xB1, 0xE2, 0x02, 0xF3, 0x5B, 0x88, 0x71, 0xCE, 0x55, + 0x21, 0xCC, 0x46, 0x86, 0xE7, 0x39, 0x91, 0x5E, 0x1C, 0xEF, 0xCC, 0x6B, + 0xE9, 0xFE, 0x56, 0xDF, 0x26, 0x66, 0x7B, 0x63, 0x74, 0xA6, 0x4C, 0xCC, + 0xF6, 0xC6, 0xE9, 0x4B, 0x1A, 0x47, 0xBD, 0xCF, 0x71, 0x73, 0xDC, 0x5C, + 0xE2, 0x6B, 0x24, 0x9A, 0xC9, 0x54, 0x5B, 0xCC, 0x99, 0x99, 0xED, 0x8D, + 0xD2, 0x99, 0x33, 0x33, 0xDB, 0x1B, 0xA5, 0x2C, 0x68, 0xD1, 0x6F, 0x32, + 0x66, 0x67, 0xB6, 0x37, 0x4A, 0x64, 0xCC, 0xCF, 0x6C, 0x6E, 0x94, 0xB1, + 0xA3, 0x45, 0xBC, 0xC9, 0x99, 0x9E, 0xD8, 0xDD, 0x29, 0x93, 0x33, 0x3D, + 0xB1, 0xBA, 0x52, 0xC6, 0x8D, 0x66, 0xD0, 0xFE, 0xD2, 0x83, 0xFC, 0xAC, + 0xFC, 0x99, 0x99, 0xED, 0x8D, 0xD2, 0xA7, 0x91, 0xA0, 0x66, 0x25, 0x66, + 0xA1, 0xC6, 0x73, 0xAD, 0x06, 0x9E, 0x80, 0xD2, 0x93, 0x23, 0x79, 0xE9, + 0x0F, 0xB1, 0x23, 0xF7, 0x42, 0xE0, 0x17, 0xA3, 0x52, 0xB2, 0xAF, 0x9C, + 0xA3, 0x62, 0xC0, 0x61, 0x01, 0xCE, 0x1D, 0x25, 0x72, 0xB9, 0x33, 0x33, + 0xDB, 0x1B, 0xA5, 0x06, 0x8D, 0x16, 0xF3, 0x26, 0x66, 0x7B, 0x63, 0x74, + 0xA6, 0x4C, 0xCC, 0xF6, 0xC6, 0xE9, 0x4B, 0x1A, 0x34, 0x5B, 0xCC, 0x99, + 0x99, 0xED, 0x8D, 0xD2, 0x99, 0x33, 0x33, 0xDB, 0x1B, 0xA5, 0x2C, 0x68, + 0xD1, 0x6F, 0x32, 0x66, 0x67, 0xB6, 0x37, 0x4A, 0x64, 0xCC, 0xCF, 0x6C, + 0x6E, 0x94, 0xB1, 0xA4, 0x0F, 0x70, 0x69, 0x68, 0x71, 0x0D, 0x35, 0x12, + 0x2B, 0xCC, 0x6A, 0x57, 0x88, 0xF1, 0x45, 0x55, 0x44, 0x78, 0xAA, 0xAA, + 0xB3, 0xF4, 0x55, 0xD1, 0x82, 0xDC, 0x64, 0xCC, 0xCF, 0x6C, 0x6E, 0x94, + 0xC9, 0x99, 0x9E, 0xD8, 0xDD, 0x29, 0x63, 0x4F, 0x16, 0x62, 0x34, 0x60, + 0x04, 0x58, 0xAF, 0x78, 0x1D, 0x01, 0xCE, 0x26, 0xA5, 0x1A, 0xDE, 0x64, + 0xCC, 0xCF, 0x6C, 0x6E, 0x94, 0xC9, 0x99, 0x9E, 0xD8, 0xDD, 0x29, 0x63, + 0x46, 0x8B, 0x79, 0x93, 0x33, 0x3D, 0xB1, 0xBA, 0x53, 0x26, 0x66, 0x7B, + 0x63, 0x74, 0xA5, 0x8D, 0x1A, 0x2D, 0xE6, 0x4C, 0xCC, 0xF6, 0xC6, 0xE9, + 0x4C, 0x99, 0x99, 0xED, 0x8D, 0xD2, 0x96, 0x34, 0x68, 0xB7, 0x99, 0x33, + 0x33, 0xDB, 0x1B, 0xA5, 0x32, 0x66, 0x67, 0xB6, 0x37, 0x4A, 0x58, 0x9B, + 0xD1, 0x0E, 0xB5, 0x13, 0xFA, 0xFA, 0xAE, 0xB7, 0xF5, 0x3F, 0xE9, 0xF5, + 0x5A, 0x1A, 0x06, 0x8B, 0x8D, 0x47, 0xCC, 0xB8, 0xC4, 0x36, 0x83, 0xB4, + 0x02, 0x2A, 0x5B, 0xEF, 0xD4, 0xFF, 0x00, 0xA7, 0xD5, 0x41, 0x4F, 0xD5, + 0x1E, 0xE7, 0xD5, 0x72, 0xFE, 0x9A, 0x7A, 0xE9, 0x6E, 0xE9, 0xE2, 0xBA, + 0x8F, 0xD5, 0x1E, 0xE7, 0xD5, 0x6A, 0x69, 0xEA, 0x1A, 0x35, 0x29, 0x12, + 0x13, 0xA1, 0x44, 0x63, 0x03, 0x01, 0x06, 0xD5, 0x6B, 0x43, 0x87, 0x45, + 0xD1, 0x64, 0x84, 0xD6, 0xD1, 0x0B, 0xCD, 0x32, 0x42, 0x6B, 0x68, 0x85, + 0xE6, 0x83, 0x9D, 0x45, 0xD1, 0x64, 0x84, 0xD6, 0xD1, 0x0B, 0xCD, 0x32, + 0x42, 0x6B, 0x68, 0x85, 0xE6, 0x83, 0x9D, 0x45, 0xD1, 0x64, 0x84, 0xD6, + 0xD1, 0x0B, 0xCD, 0x32, 0x42, 0x6B, 0x68, 0x85, 0xE6, 0x83, 0x9D, 0x53, + 0x3E, 0x6E, 0x61, 0xE0, 0x07, 0xC6, 0x88, 0x40, 0x20, 0x8A, 0xDD, 0xEF, + 0x1D, 0x05, 0x6F, 0x32, 0x42, 0x6B, 0x68, 0x85, 0xE6, 0x99, 0x21, 0x35, + 0xB4, 0x42, 0xF3, 0x41, 0xA2, 0x8B, 0x33, 0x1A, 0x30, 0x02, 0x2C, 0x57, + 0xBC, 0x03, 0x58, 0x0E, 0x71, 0x35, 0x24, 0x59, 0x98, 0xF1, 0x9A, 0x1B, + 0x16, 0x2B, 0xDE, 0xDA, 0xEB, 0xA8, 0x9A, 0xF3, 0xAD, 0xEE, 0x48, 0x4D, + 0x6D, 0x10, 0xBC, 0xD3, 0x24, 0x26, 0xB6, 0x88, 0x5E, 0x68, 0x39, 0xD4, + 0x5D, 0x16, 0x48, 0x4D, 0x6D, 0x10, 0xBC, 0xD3, 0x24, 0x26, 0xB6, 0x88, + 0x5E, 0x68, 0x39, 0xD4, 0x5D, 0x16, 0x48, 0x4D, 0x6D, 0x10, 0xBC, 0xD3, + 0x24, 0x26, 0xB6, 0x88, 0x5E, 0x68, 0x39, 0xD4, 0x5D, 0x16, 0x48, 0x4D, + 0x6D, 0x10, 0xBC, 0xD3, 0x24, 0x26, 0xB6, 0x88, 0x5E, 0x68, 0x39, 0xD5, + 0xDF, 0xFA, 0x39, 0xEC, 0x59, 0x7F, 0xE0, 0xF1, 0x5A, 0x2C, 0x90, 0x9A, + 0xDA, 0x21, 0x79, 0xAE, 0x96, 0x8A, 0x94, 0x7C, 0x8C, 0x84, 0x39, 0x78, + 0x8E, 0x0E, 0x73, 0x2B, 0xCE, 0x3A, 0x10, 0x71, 0x34, 0xFF, 0x00, 0xB6, + 0x66, 0xBB, 0xEB, 0x5C, 0xBA, 0xCA, 0x4B, 0xD1, 0xA9, 0x99, 0xC9, 0xF8, + 0xD3, 0x0C, 0x8D, 0x0D, 0xAD, 0x7B, 0xAB, 0x00, 0xD6, 0xB1, 0x72, 0x42, + 0x6B, 0x68, 0x85, 0xE6, 0xA8, 0xE7, 0x51, 0x74, 0x59, 0x21, 0x35, 0xB4, + 0x42, 0xF3, 0x4C, 0x90, 0x9A, 0xDA, 0x21, 0x79, 0xA8, 0x39, 0xD4, 0x5D, + 0x16, 0x48, 0x4D, 0x6D, 0x10, 0xBC, 0xD3, 0x24, 0x26, 0xB6, 0x88, 0x5E, + 0x68, 0x39, 0xD4, 0x5D, 0x16, 0x48, 0x4D, 0x6D, 0x10, 0xBC, 0xD3, 0x24, + 0x26, 0xB6, 0x88, 0x5E, 0x68, 0x34, 0x06, 0x2C, 0x42, 0xE7, 0xB8, 0xBD, + 0xD5, 0xC4, 0xFC, 0xE6, 0xBF, 0xCD, 0x9E, 0xBC, 0xFF, 0x00, 0xDA, 0x91, + 0xB3, 0x93, 0x2D, 0xB5, 0x66, 0x62, 0x28, 0xB4, 0xE2, 0xE3, 0x53, 0x8E, + 0x72, 0x7A, 0x4A, 0xDD, 0xE4, 0x84, 0xD6, 0xD1, 0x0B, 0xCD, 0x32, 0x42, + 0x6B, 0x68, 0x85, 0xE6, 0x83, 0x9D, 0x45, 0xD1, 0x64, 0x84, 0xD6, 0xD1, + 0x0B, 0xCD, 0x32, 0x42, 0x6B, 0x68, 0x85, 0xE6, 0x83, 0x9D, 0x45, 0xD1, + 0x64, 0x84, 0xD6, 0xD1, 0x0B, 0xCD, 0x32, 0x42, 0x6B, 0x68, 0x85, 0xE6, + 0x83, 0x9D, 0x45, 0xD1, 0x64, 0x84, 0xD6, 0xD1, 0x0B, 0xCD, 0x32, 0x42, + 0x6B, 0x68, 0x85, 0xE6, 0x83, 0x9D, 0x57, 0xC0, 0xF5, 0xD0, 0xFB, 0xC3, + 0x8A, 0xDF, 0xE4, 0x84, 0xD6, 0xD1, 0x0B, 0xCD, 0x5C, 0xCF, 0x44, 0xA6, + 0x98, 0xF6, 0xBB, 0x97, 0x84, 0x6A, 0x20, 0xFB, 0xD5, 0x1D, 0x4C, 0x6E, + 0xA8, 0xFF, 0x00, 0x0C, 0xF0, 0x54, 0x9A, 0xEA, 0x51, 0xBC, 0x37, 0x70, + 0x57, 0x46, 0x15, 0x4A, 0xC4, 0x1A, 0x18, 0x78, 0x2B, 0x66, 0xBA, 0x94, + 0x6F, 0x0D, 0xDC, 0x16, 0x67, 0xB3, 0x58, 0x79, 0x42, 0xB2, 0xBD, 0x4A, + 0x0F, 0x86, 0xDE, 0x0A, 0xE8, 0x1E, 0xA2, 0x1F, 0x74, 0x70, 0x56, 0xCA, + 0xF5, 0x28, 0x3E, 0x1B, 0x78, 0x2B, 0xA0, 0x7A, 0x88, 0x7D, 0xD1, 0xC1, + 0x48, 0x32, 0xF2, 0x94, 0x88, 0x88, 0xAA, 0x08, 0x88, 0x80, 0x88, 0x88, + 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, + 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, + 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, + 0x88, 0x80, 0xA3, 0xFD, 0x4F, 0xFA, 0x7D, 0x54, 0x8A, 0x3F, 0xD4, 0xFF, + 0x00, 0xA7, 0xD5, 0x49, 0x14, 0xFD, 0x51, 0xEE, 0x7D, 0x54, 0xAA, 0x2F, + 0xD5, 0x1E, 0xE7, 0xD5, 0x4A, 0xB5, 0x20, 0x88, 0x8A, 0x02, 0x22, 0x20, + 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, + 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, + 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, + 0x22, 0x02, 0x22, 0x20, 0x8E, 0x63, 0xAB, 0xC5, 0xEE, 0x1E, 0x0A, 0xC9, + 0xAE, 0xA5, 0x1B, 0xC3, 0x77, 0x05, 0x7C, 0xC7, 0x57, 0x8B, 0xDC, 0x3C, + 0x15, 0x93, 0x5D, 0x4A, 0x37, 0x86, 0xEE, 0x09, 0x3D, 0x9A, 0xC3, 0xCA, + 0x15, 0x95, 0xEA, 0x50, 0x7C, 0x36, 0xF0, 0x57, 0x40, 0xF5, 0x10, 0xFB, + 0xA3, 0x82, 0xB6, 0x57, 0xA9, 0x41, 0xF0, 0xDB, 0xC1, 0x5D, 0x03, 0xD4, + 0x43, 0xEE, 0x8E, 0x0A, 0x42, 0x65, 0xE5, 0x29, 0x11, 0x11, 0x54, 0x11, + 0x11, 0x01, 0x11, 0x10, 0x11, 0x11, 0x01, 0x11, 0x10, 0x11, 0x11, 0x01, + 0x11, 0x10, 0x11, 0x11, 0x01, 0x51, 0x55, 0x10, 0x11, 0x11, 0x01, 0x11, + 0x10, 0x11, 0x11, 0x01, 0x11, 0x10, 0x11, 0x11, 0x01, 0x11, 0x10, 0x11, + 0x11, 0x01, 0x11, 0x10, 0x11, 0x11, 0x01, 0x47, 0xFA, 0x9F, 0xF4, 0xFA, + 0xA9, 0x14, 0x7F, 0xA9, 0xFF, 0x00, 0x4F, 0xAA, 0x92, 0x29, 0xFA, 0xA3, + 0xDC, 0xFA, 0xA9, 0x54, 0x5F, 0xAA, 0x3D, 0xCF, 0xAA, 0x95, 0x6A, 0x41, + 0x11, 0x14, 0x04, 0x44, 0x40, 0x44, 0x44, 0x04, 0x44, 0x40, 0x44, 0x44, + 0x04, 0x44, 0x40, 0x44, 0x44, 0x05, 0x4A, 0xB3, 0x2A, 0xA2, 0x02, 0x22, + 0x20, 0x2A, 0x2A, 0xA2, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, + 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, + 0x08, 0xE6, 0x3A, 0xBC, 0x5E, 0xE1, 0xE0, 0xAC, 0x9A, 0xEA, 0x51, 0xBC, + 0x37, 0x70, 0x57, 0xCC, 0x75, 0x78, 0xBD, 0xC3, 0xC1, 0x59, 0x35, 0xD4, + 0xA3, 0x78, 0x6E, 0xE0, 0x93, 0xD9, 0xAC, 0x3C, 0xA1, 0x59, 0x5E, 0xA5, + 0x07, 0xC3, 0x6F, 0x05, 0x74, 0x0E, 0xAF, 0x0F, 0xB8, 0x38, 0x2B, 0x65, + 0x7A, 0x94, 0x1F, 0x0D, 0xBC, 0x15, 0x61, 0x75, 0x56, 0x77, 0x07, 0x05, + 0x21, 0x33, 0xF2, 0x94, 0x57, 0x8C, 0x98, 0xE9, 0x9A, 0x85, 0xBE, 0x12, + 0xF2, 0x92, 0xDA, 0xA0, 0xEF, 0x85, 0xE7, 0x51, 0xFD, 0x7C, 0x4E, 0xF1, + 0xE2, 0xA3, 0x55, 0x97, 0xA4, 0xDE, 0x52, 0x5B, 0x54, 0x1D, 0xF0, 0x97, + 0x94, 0x96, 0xD5, 0x07, 0x7C, 0x2F, 0x36, 0x44, 0xA1, 0xE9, 0x37, 0x94, + 0x96, 0xD5, 0x07, 0x7C, 0x25, 0xE5, 0x25, 0xB5, 0x41, 0xDF, 0x0B, 0xCD, + 0x91, 0x28, 0x7A, 0x4D, 0xE5, 0x25, 0xB5, 0x41, 0xDF, 0x09, 0x79, 0x49, + 0x6D, 0x50, 0x77, 0xC2, 0xF3, 0x64, 0x4A, 0x1E, 0x93, 0x79, 0x49, 0x6D, + 0x50, 0x77, 0xC2, 0x5E, 0x52, 0x5B, 0x54, 0x1D, 0xF0, 0xBC, 0xD9, 0x12, + 0x87, 0xA4, 0xDE, 0x52, 0x5B, 0x54, 0x1D, 0xF0, 0x97, 0x94, 0x96, 0xD5, + 0x07, 0x7C, 0x2F, 0x36, 0x44, 0xA1, 0xE9, 0x37, 0x94, 0x96, 0xD5, 0x07, + 0x7C, 0x25, 0xE5, 0x25, 0xB5, 0x41, 0xDF, 0x0B, 0xCD, 0x91, 0x28, 0x7A, + 0x4D, 0xE5, 0x25, 0xB5, 0x41, 0xDF, 0x09, 0x79, 0x49, 0x6D, 0x50, 0x77, + 0xC2, 0xF3, 0x64, 0x4A, 0x1E, 0x93, 0x79, 0x49, 0x6D, 0x50, 0x77, 0xC2, + 0x5E, 0x52, 0x5B, 0x54, 0x1D, 0xF0, 0xBC, 0xD9, 0x12, 0x87, 0xA4, 0xDE, + 0x52, 0x5B, 0x54, 0x1D, 0xF0, 0x97, 0x94, 0x96, 0xD5, 0x07, 0x7C, 0x2F, + 0x36, 0x44, 0xA1, 0xE9, 0x37, 0x94, 0x96, 0xD5, 0x07, 0x7C, 0x25, 0xE5, + 0x25, 0xB5, 0x41, 0xDF, 0x0B, 0xCD, 0x91, 0x28, 0x7A, 0x4D, 0xE5, 0x25, + 0xB5, 0x41, 0xDF, 0x09, 0x79, 0x49, 0x6D, 0x50, 0x77, 0xC2, 0xF3, 0x64, + 0x4A, 0x1E, 0x93, 0x79, 0x49, 0x6D, 0x50, 0x77, 0xC2, 0x5E, 0x52, 0x5B, + 0x54, 0x1D, 0xF0, 0xBC, 0xD9, 0x12, 0x87, 0xA4, 0xDE, 0x52, 0x5B, 0x54, + 0x1D, 0xF0, 0x97, 0x94, 0x96, 0xD5, 0x07, 0x7C, 0x2F, 0x36, 0x44, 0xA1, + 0xE9, 0x37, 0x94, 0x96, 0xD5, 0x07, 0x7C, 0x25, 0xE5, 0x25, 0xB5, 0x41, + 0xDF, 0x0B, 0xCD, 0x91, 0x28, 0x7A, 0x4D, 0xE5, 0x25, 0xB5, 0x41, 0xDF, + 0x09, 0x79, 0x49, 0x6D, 0x50, 0x77, 0xC2, 0xF3, 0x64, 0x4A, 0x1E, 0x93, + 0x79, 0x49, 0x6D, 0x50, 0x77, 0xC2, 0x5E, 0x52, 0x5B, 0x54, 0x1D, 0xF0, + 0xBC, 0xD9, 0x12, 0x87, 0xA4, 0xDE, 0x52, 0x5B, 0x54, 0x1D, 0xF0, 0x97, + 0x94, 0x96, 0xD5, 0x07, 0x7C, 0x2F, 0x36, 0x44, 0xA1, 0xE9, 0xB0, 0x66, + 0xA0, 0x4C, 0x12, 0x20, 0xC6, 0x64, 0x42, 0x3A, 0x6C, 0x9A, 0xEA, 0x57, + 0x7E, 0xA7, 0xFD, 0x3E, 0xAB, 0x93, 0xF4, 0x3C, 0x91, 0x33, 0x17, 0x3F, + 0x4D, 0x5F, 0x55, 0xD6, 0x7E, 0xA7, 0xFD, 0x3E, 0xAA, 0x0A, 0x7E, 0xA8, + 0xF7, 0x3E, 0xAA, 0x91, 0xA6, 0xA0, 0x4B, 0x90, 0x23, 0x46, 0x64, 0x32, + 0x7A, 0x2D, 0x1A, 0xAB, 0x55, 0xFD, 0x51, 0xEE, 0x7D, 0x57, 0x2F, 0xE9, + 0xA7, 0xAE, 0x96, 0xEE, 0x9E, 0x2B, 0x43, 0xA3, 0xBC, 0xA4, 0xB6, 0xA8, + 0x3B, 0xE1, 0x2F, 0x29, 0x2D, 0xAA, 0x0E, 0xF8, 0x5E, 0x6C, 0x89, 0xD0, + 0x7A, 0x4D, 0xE5, 0x25, 0xB5, 0x41, 0xDF, 0x09, 0x79, 0x49, 0x6D, 0x50, + 0x77, 0xC2, 0xF3, 0x64, 0x4E, 0x83, 0xD2, 0x6F, 0x29, 0x2D, 0xAA, 0x0E, + 0xF8, 0x4B, 0xCA, 0x4B, 0x6A, 0x83, 0xBE, 0x17, 0x9B, 0x22, 0x74, 0x1E, + 0x93, 0x79, 0x49, 0x6D, 0x50, 0x77, 0xC2, 0x5E, 0x52, 0x5B, 0x54, 0x1D, + 0xF0, 0xBC, 0xD9, 0x13, 0xA0, 0xF4, 0x9B, 0xCA, 0x4B, 0x6A, 0x83, 0xBE, + 0x12, 0xF2, 0x92, 0xDA, 0xA0, 0xEF, 0x85, 0xE6, 0xC8, 0x9D, 0x07, 0xA4, + 0xDE, 0x52, 0x5B, 0x54, 0x1D, 0xF0, 0x97, 0x94, 0x96, 0xD5, 0x07, 0x7C, + 0x2F, 0x36, 0x44, 0xE8, 0x3D, 0x26, 0xF2, 0x92, 0xDA, 0xA0, 0xEF, 0x84, + 0xBC, 0xA4, 0xB6, 0xA8, 0x3B, 0xE1, 0x79, 0xB2, 0x27, 0x41, 0xE9, 0x37, + 0x94, 0x96, 0xD5, 0x07, 0x7C, 0x25, 0xE5, 0x25, 0xB5, 0x41, 0xDF, 0x0B, + 0xCD, 0x91, 0x3A, 0x0F, 0x49, 0xBC, 0xA4, 0xB6, 0xA8, 0x3B, 0xE1, 0x2F, + 0x29, 0x2D, 0xAA, 0x0E, 0xF8, 0x5E, 0x6C, 0x89, 0xD0, 0x7A, 0x4D, 0xE5, + 0x25, 0xB5, 0x41, 0xDF, 0x09, 0x79, 0x49, 0x6D, 0x50, 0x77, 0xC2, 0xF3, + 0x64, 0x4E, 0x83, 0xD2, 0x6F, 0x29, 0x2D, 0xAA, 0x0E, 0xF8, 0x4B, 0xCA, + 0x4B, 0x6A, 0x83, 0xBE, 0x17, 0x9B, 0x22, 0x74, 0x1E, 0x93, 0x79, 0x49, + 0x6D, 0x50, 0x77, 0xC2, 0x5E, 0x52, 0x5B, 0x54, 0x1D, 0xF0, 0xBC, 0xD9, + 0x13, 0xA0, 0xF4, 0x9B, 0xCA, 0x4B, 0x6A, 0x83, 0xBE, 0x12, 0xF2, 0x92, + 0xDA, 0xA0, 0xEF, 0x85, 0xE6, 0xC8, 0x9D, 0x07, 0xA4, 0xDE, 0x52, 0x5B, + 0x54, 0x1D, 0xF0, 0x97, 0x94, 0x96, 0xD5, 0x07, 0x7C, 0x2F, 0x36, 0x44, + 0xE8, 0x3D, 0x26, 0xF2, 0x92, 0xDA, 0xA0, 0xEF, 0x84, 0xBC, 0xA4, 0xB6, + 0xA8, 0x3B, 0xE1, 0x79, 0xB2, 0x27, 0x41, 0xE9, 0x37, 0x94, 0x96, 0xD5, + 0x07, 0x7C, 0x25, 0xE5, 0x25, 0xB5, 0x41, 0xDF, 0x0B, 0xCD, 0x91, 0x3A, + 0x0F, 0x49, 0xBC, 0xA4, 0xB6, 0xA8, 0x3B, 0xE1, 0x2F, 0x29, 0x2D, 0xAA, + 0x0E, 0xF8, 0x5E, 0x6C, 0x89, 0xD0, 0x7A, 0x4D, 0xE5, 0x25, 0xB5, 0x41, + 0xDF, 0x09, 0x79, 0x49, 0x1E, 0x89, 0xA8, 0x5B, 0xE1, 0x79, 0xB2, 0xBE, + 0x07, 0xAE, 0x87, 0xDE, 0x1C, 0x53, 0xA0, 0xF4, 0xB9, 0x8C, 0xF2, 0xD1, + 0x7B, 0x87, 0x82, 0xB6, 0x6B, 0xA9, 0x46, 0xF0, 0xDD, 0xC1, 0x56, 0x37, + 0x54, 0x7F, 0x86, 0x78, 0x2A, 0x4D, 0x75, 0x28, 0xDE, 0x1B, 0xB8, 0x29, + 0x3D, 0x9A, 0xC3, 0xCA, 0x15, 0x95, 0xEA, 0x50, 0x7C, 0x36, 0xF0, 0x55, + 0x85, 0xD5, 0x59, 0xDC, 0x1C, 0x15, 0x25, 0x7A, 0x94, 0x1F, 0x0D, 0xBC, + 0x15, 0x61, 0x75, 0x56, 0x77, 0x07, 0x05, 0x20, 0xCF, 0xCA, 0x5E, 0x6B, + 0x1F, 0xD7, 0xC4, 0xEF, 0x1E, 0x2A, 0x35, 0x24, 0x7F, 0x5F, 0x13, 0xBC, + 0x78, 0xA8, 0xD6, 0xA1, 0x91, 0x11, 0x11, 0x44, 0x44, 0x40, 0x44, 0x44, + 0x04, 0x44, 0x40, 0x44, 0x44, 0x17, 0x16, 0x3C, 0x16, 0x82, 0xD7, 0x56, + 0xEC, 0xED, 0xCD, 0xD3, 0xFC, 0x2B, 0xD9, 0x2D, 0x1E, 0x25, 0xAE, 0x4E, + 0x04, 0x47, 0xD9, 0x35, 0x3A, 0xCB, 0x09, 0xAB, 0xF9, 0x59, 0xC2, 0x13, + 0xA3, 0xBA, 0x46, 0x24, 0x32, 0xD2, 0xC8, 0x6C, 0x6B, 0x5E, 0x4B, 0x80, + 0xB2, 0x43, 0x8D, 0x75, 0xE8, 0x52, 0xDA, 0xE7, 0x02, 0xB1, 0x0C, 0x46, + 0x86, 0x23, 0x3D, 0xCD, 0x74, 0x38, 0x96, 0x1F, 0x0E, 0xB3, 0xEF, 0xAF, + 0x36, 0x83, 0x5D, 0x5F, 0xDA, 0x0D, 0x64, 0x39, 0x59, 0x88, 0xCD, 0x2E, + 0x85, 0x02, 0x2B, 0xDA, 0x0D, 0x44, 0xB5, 0x84, 0x8A, 0xD4, 0x61, 0x8E, + 0x73, 0xC3, 0x03, 0x49, 0x71, 0x35, 0x06, 0x81, 0x9E, 0xBD, 0x0B, 0x72, + 0xE6, 0xB1, 0xD0, 0x08, 0x68, 0xE7, 0x56, 0x66, 0xA2, 0x1B, 0x42, 0x28, + 0x65, 0x79, 0x9B, 0x9F, 0xFB, 0x58, 0xF6, 0xDA, 0x7D, 0x21, 0x87, 0x13, + 0x94, 0x6B, 0x9A, 0x66, 0x1A, 0xE2, 0xEA, 0xF3, 0x74, 0x8A, 0xF3, 0xFE, + 0xDA, 0x50, 0x60, 0xC5, 0x97, 0x8D, 0x00, 0x03, 0x1A, 0x0C, 0x48, 0x75, + 0xF4, 0x5B, 0x69, 0x15, 0xA8, 0xD6, 0xCA, 0x1B, 0x0C, 0x08, 0x33, 0x2D, + 0x9A, 0x78, 0x6C, 0x38, 0x95, 0x06, 0xB4, 0x3C, 0x12, 0x4D, 0xA0, 0x6B, + 0x00, 0x68, 0x15, 0xE7, 0xFD, 0xD6, 0x44, 0x76, 0xC9, 0xC2, 0x70, 0x2F, + 0x84, 0xDE, 0x4F, 0x95, 0x0D, 0x69, 0x00, 0x0F, 0xC0, 0x6B, 0xAE, 0xAA, + 0x89, 0xB5, 0xEE, 0x35, 0xE9, 0x41, 0xA6, 0x0D, 0x73, 0x81, 0x20, 0x12, + 0x1A, 0x2B, 0x24, 0x0E, 0x85, 0x45, 0xB4, 0xE4, 0x65, 0xA1, 0x72, 0xB0, + 0x1E, 0xE6, 0x1E, 0x4E, 0x1B, 0x6D, 0xC4, 0x69, 0xE9, 0x26, 0x23, 0x6B, + 0xAB, 0xF8, 0x6F, 0xD5, 0x5E, 0x20, 0xC2, 0x33, 0x20, 0x4C, 0x42, 0x81, + 0x0E, 0x1D, 0xB7, 0x72, 0x76, 0x48, 0xFC, 0x59, 0x8D, 0x9F, 0x7E, 0x71, + 0x5D, 0x59, 0xC9, 0xFE, 0xD0, 0x6A, 0x14, 0xAD, 0x97, 0x8E, 0xE8, 0x46, + 0x2B, 0x60, 0xC4, 0x30, 0xC7, 0x4B, 0xC3, 0x4D, 0x43, 0xFB, 0x59, 0x14, + 0x8B, 0x61, 0xB4, 0xC2, 0xB2, 0xCB, 0x31, 0x2C, 0x9B, 0x7F, 0x84, 0x37, + 0xDF, 0x9B, 0x30, 0x26, 0xA5, 0x91, 0x11, 0x91, 0x62, 0xCD, 0xC2, 0x8F, + 0x2F, 0x19, 0xB0, 0xE0, 0x06, 0x34, 0x36, 0x25, 0xA1, 0x54, 0x30, 0x06, + 0x70, 0x46, 0x39, 0xBD, 0xFF, 0x00, 0xDA, 0x0D, 0x52, 0x2D, 0xA4, 0x38, + 0x50, 0x8C, 0x06, 0x7E, 0x08, 0x46, 0x01, 0x82, 0xE2, 0xF8, 0x86, 0xAB, + 0x41, 0xF9, 0xEA, 0xFE, 0xEB, 0xAB, 0x32, 0xBD, 0x8D, 0x96, 0x74, 0x77, + 0xB1, 0xB0, 0xE1, 0xD6, 0xC8, 0x2C, 0x2C, 0x01, 0xA1, 0xC5, 0xCE, 0x21, + 0xB6, 0xBA, 0x48, 0xAC, 0xF4, 0xE6, 0x41, 0xA8, 0x45, 0x93, 0x3E, 0xD8, + 0x6D, 0x9A, 0x22, 0x13, 0x6C, 0x8B, 0x22, 0xB0, 0x2A, 0xAA, 0xBA, 0xB3, + 0xF4, 0x13, 0x82, 0xC6, 0x40, 0x44, 0x44, 0x04, 0x44, 0x40, 0x44, 0x44, + 0x04, 0x44, 0x40, 0x44, 0x44, 0x1D, 0x17, 0xA2, 0x1D, 0x6A, 0x27, 0xF5, + 0xF5, 0x5D, 0x6F, 0xEA, 0x7F, 0xD3, 0xEA, 0xB9, 0x2F, 0x44, 0x3A, 0xD4, + 0x4F, 0xEB, 0xEA, 0xBA, 0xDF, 0xD4, 0xFF, 0x00, 0xA7, 0xD5, 0x65, 0x14, + 0xFD, 0x51, 0xEE, 0x7D, 0x57, 0x2F, 0xE9, 0xA7, 0xAE, 0x96, 0xEE, 0x9E, + 0x2B, 0xA8, 0xFD, 0x51, 0xEE, 0x7D, 0x57, 0x2F, 0xE9, 0xA7, 0xAE, 0x96, + 0xEE, 0x9E, 0x2B, 0x43, 0x99, 0x44, 0x44, 0x51, 0x11, 0x10, 0x11, 0x11, + 0x01, 0x11, 0x10, 0x11, 0x11, 0x01, 0x11, 0x10, 0x56, 0xCB, 0xAC, 0xDA, + 0xB2, 0x6C, 0xD7, 0x55, 0x75, 0x66, 0xAD, 0x5E, 0xC8, 0x11, 0xA2, 0x38, + 0x35, 0x90, 0x9E, 0xE7, 0x11, 0x58, 0x01, 0xA4, 0x92, 0x34, 0xAC, 0x98, + 0x0C, 0x31, 0xE8, 0xE7, 0xC2, 0x85, 0x53, 0xA2, 0x08, 0xC1, 0xD6, 0x6B, + 0xA8, 0x91, 0x51, 0x15, 0xAC, 0xBA, 0xC9, 0xAE, 0x0B, 0x44, 0x38, 0xD5, + 0x40, 0x86, 0xC8, 0x90, 0xED, 0xD4, 0x49, 0x19, 0xF3, 0x11, 0xA3, 0x32, + 0x0D, 0x63, 0x65, 0x63, 0xBA, 0x23, 0xA1, 0xB6, 0x04, 0x43, 0x11, 0xB9, + 0xCB, 0x43, 0x0D, 0x63, 0xFA, 0x56, 0x44, 0x86, 0xF8, 0x4E, 0xB3, 0x11, + 0x8E, 0x63, 0x87, 0xB9, 0xC2, 0xA2, 0xB7, 0x2D, 0x63, 0x07, 0x2C, 0xCA, + 0xDC, 0xF2, 0x65, 0x9A, 0x39, 0x27, 0x45, 0x16, 0x9B, 0xFF, 0x00, 0x20, + 0xFC, 0x36, 0xBF, 0x8C, 0xEB, 0x0A, 0x92, 0x2D, 0xB1, 0x2C, 0xD1, 0x53, + 0x4B, 0x58, 0x5A, 0x61, 0xDB, 0x0F, 0x2D, 0xCE, 0x4F, 0x4F, 0xEF, 0x5F, + 0x42, 0x0C, 0x3E, 0x4A, 0x25, 0xB0, 0xCB, 0x0E, 0xB6, 0x6A, 0xA9, 0xB5, + 0x67, 0x35, 0xF4, 0x2B, 0x56, 0xEA, 0x1C, 0x69, 0x61, 0x4B, 0xCB, 0x57, + 0x0E, 0xB7, 0x06, 0xC2, 0xAE, 0x27, 0x29, 0x98, 0x7E, 0x06, 0xFB, 0x94, + 0x30, 0xE1, 0x42, 0x30, 0x19, 0xF8, 0x21, 0x18, 0x06, 0x0B, 0x8B, 0xE2, + 0x12, 0x2D, 0x07, 0xD4, 0x6A, 0xFD, 0xEB, 0xAE, 0xAC, 0xC8, 0x35, 0x69, + 0x51, 0x26, 0xA0, 0x33, 0xAD, 0xD3, 0x59, 0x0A, 0x19, 0x97, 0x88, 0xD6, + 0x42, 0x86, 0x1B, 0x12, 0x1D, 0x55, 0x80, 0x6B, 0xD2, 0x43, 0x81, 0xCF, + 0xA4, 0xD6, 0x33, 0x2C, 0x49, 0x77, 0x88, 0x74, 0xAB, 0x8C, 0x42, 0xD8, + 0x6E, 0xAD, 0xE1, 0xA4, 0xE6, 0x0D, 0x71, 0x06, 0xC9, 0xC6, 0xA4, 0x18, + 0x91, 0x65, 0xE3, 0x41, 0x00, 0xC6, 0x83, 0x12, 0x18, 0x3D, 0x16, 0xDA, + 0x45, 0x6A, 0x35, 0xB1, 0x81, 0x2E, 0xE8, 0x65, 0xAD, 0x9D, 0x8A, 0x21, + 0xC1, 0x7C, 0x56, 0x5A, 0x61, 0x70, 0x36, 0xB3, 0xE7, 0x3F, 0xD0, 0xF7, + 0xFE, 0xEA, 0x66, 0x43, 0x85, 0x5B, 0x0C, 0xD4, 0x18, 0x2C, 0x7D, 0xA7, + 0xD4, 0xC6, 0x9A, 0x83, 0x9A, 0x1A, 0x48, 0xAE, 0xA3, 0xA6, 0xAA, 0x8F, + 0xBD, 0x06, 0xA1, 0x16, 0xE2, 0x5D, 0x92, 0xD1, 0x25, 0x99, 0x11, 0xD0, + 0xDA, 0x43, 0x83, 0x8C, 0x6A, 0x9A, 0xDF, 0xC2, 0x6B, 0x35, 0x67, 0x24, + 0x59, 0xCD, 0x55, 0x59, 0xB1, 0x5A, 0x74, 0x04, 0x44, 0x40, 0x44, 0x44, + 0x04, 0x44, 0x40, 0x44, 0x44, 0x04, 0x44, 0x40, 0x57, 0xC0, 0xF5, 0xD0, + 0xFB, 0xC3, 0x8A, 0xB1, 0x5F, 0x03, 0xD7, 0x43, 0xEF, 0x0E, 0x28, 0x8F, + 0x4A, 0x8D, 0xD5, 0x1F, 0xE1, 0x9E, 0x0A, 0x93, 0x5D, 0x4A, 0x37, 0x86, + 0xEE, 0x0A, 0xB1, 0xBA, 0xA3, 0xFC, 0x33, 0xC1, 0x52, 0x6B, 0xA9, 0x46, + 0xF0, 0xDD, 0xC1, 0x49, 0xEC, 0xD6, 0x1E, 0x50, 0xAC, 0xAF, 0x52, 0x83, + 0xE1, 0xB7, 0x82, 0xAC, 0x2E, 0xAA, 0xCE, 0xE0, 0xE0, 0xA9, 0x2B, 0xD4, + 0xA0, 0xF8, 0x6D, 0xE0, 0xAB, 0x0B, 0xAA, 0xB3, 0xB8, 0x38, 0x29, 0x06, + 0x7E, 0x52, 0xF3, 0x58, 0xFE, 0xBE, 0x27, 0x78, 0xF1, 0x51, 0xA9, 0x23, + 0xFA, 0xF8, 0x9D, 0xE3, 0xC5, 0x46, 0xB5, 0x0C, 0x88, 0x88, 0x8A, 0x22, + 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, + 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, + 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, + 0x02, 0x22, 0x20, 0xE8, 0xBD, 0x10, 0xEB, 0x51, 0x3F, 0xAF, 0xAA, 0xEB, + 0x7F, 0x53, 0xFE, 0x9F, 0x55, 0xC9, 0x7A, 0x21, 0xD6, 0xA2, 0x7F, 0x5F, + 0x55, 0xD6, 0xFE, 0xA7, 0xFD, 0x3E, 0xAB, 0x28, 0xA7, 0xEA, 0x8F, 0x73, + 0xEA, 0xB9, 0x7F, 0x4D, 0x3D, 0x74, 0xB7, 0x74, 0xF1, 0x5D, 0x47, 0xEA, + 0x8F, 0x73, 0xEA, 0xB9, 0x7F, 0x4D, 0x3D, 0x74, 0xB7, 0x74, 0xF1, 0x5A, + 0x1C, 0xCA, 0x22, 0x22, 0x88, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, + 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, + 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, + 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x0A, 0xF8, 0x1E, 0xBA, + 0x1F, 0x78, 0x71, 0x56, 0x2B, 0xE0, 0x7A, 0xE8, 0x7D, 0xE1, 0xC5, 0x11, + 0xE9, 0x51, 0xBA, 0xA3, 0xFC, 0x33, 0xC1, 0x52, 0x6B, 0xA9, 0x46, 0xF0, + 0xDD, 0xC1, 0x56, 0x37, 0x54, 0x7F, 0x86, 0x78, 0x2A, 0x4D, 0x75, 0x28, + 0xDE, 0x1B, 0xB8, 0x29, 0x3D, 0x9A, 0xC3, 0xCA, 0x15, 0x95, 0xEA, 0x50, + 0x7C, 0x36, 0xF0, 0x57, 0x40, 0xCF, 0x2F, 0x0F, 0xB8, 0x38, 0x2B, 0x65, + 0x3A, 0x9C, 0x0F, 0x0D, 0xBC, 0x14, 0x76, 0xE4, 0x7B, 0x52, 0xF8, 0xB5, + 0x48, 0x33, 0xF2, 0x96, 0x2B, 0xE8, 0x19, 0x27, 0x3C, 0xBB, 0x92, 0x86, + 0x2B, 0x35, 0xFE, 0x4A, 0xD5, 0xB9, 0x3F, 0x27, 0xAA, 0x87, 0xB8, 0xB3, + 0x39, 0x49, 0x1E, 0xD4, 0xBE, 0x2D, 0x4E, 0x52, 0x47, 0xB5, 0x2F, 0x8B, + 0x51, 0x96, 0x1E, 0x4F, 0xC9, 0xEA, 0xA1, 0xEE, 0x26, 0x4F, 0xC9, 0xEA, + 0xA1, 0xEE, 0x2C, 0xCE, 0x52, 0x47, 0xB5, 0x2F, 0x8B, 0x53, 0x94, 0x91, + 0xED, 0x4B, 0xE2, 0xD4, 0x18, 0x79, 0x3F, 0x27, 0xAA, 0x87, 0xB8, 0x99, + 0x3F, 0x27, 0xAA, 0x87, 0xB8, 0xB3, 0x39, 0x49, 0x1E, 0xD4, 0xBE, 0x2D, + 0x4E, 0x52, 0x47, 0xB5, 0x2F, 0x8B, 0x50, 0x61, 0xE4, 0xFC, 0x9E, 0xAA, + 0x1E, 0xE2, 0x64, 0xFC, 0x9E, 0xAA, 0x1E, 0xE2, 0xCC, 0xE5, 0x24, 0x7B, + 0x52, 0xF8, 0xB5, 0x39, 0x49, 0x1E, 0xD4, 0xBE, 0x2D, 0x41, 0x87, 0x93, + 0xF2, 0x7A, 0xA8, 0x7B, 0x89, 0x93, 0xF2, 0x7A, 0xA8, 0x7B, 0x8B, 0x33, + 0x94, 0x91, 0xED, 0x4B, 0xE2, 0xD4, 0xE5, 0x24, 0x7B, 0x52, 0xF8, 0xB5, + 0x06, 0x1E, 0x4F, 0xC9, 0xEA, 0xA1, 0xEE, 0x26, 0x4F, 0xC9, 0xEA, 0xA1, + 0xEE, 0x2C, 0xCE, 0x52, 0x47, 0xB5, 0x2F, 0x8B, 0x53, 0x94, 0x91, 0xED, + 0x4B, 0xE2, 0xD4, 0x18, 0x79, 0x3F, 0x27, 0xAA, 0x87, 0xB8, 0x99, 0x3F, + 0x27, 0xAA, 0x87, 0xB8, 0xB3, 0x39, 0x49, 0x1E, 0xDC, 0xBE, 0x2D, 0x4E, + 0x52, 0x47, 0xB7, 0x2F, 0x8B, 0x50, 0x61, 0xE4, 0xFC, 0x9E, 0xAA, 0x1E, + 0xE2, 0x64, 0xFC, 0x9E, 0xAA, 0x1E, 0xE2, 0xCC, 0xE5, 0x24, 0x7B, 0x72, + 0xF8, 0xB5, 0x39, 0x49, 0x1E, 0xDC, 0xBE, 0x2D, 0x41, 0x87, 0x93, 0xF2, + 0x7A, 0xA8, 0x7B, 0x89, 0x93, 0xF2, 0x7A, 0xA8, 0x7B, 0x8B, 0x33, 0x94, + 0x91, 0xED, 0xCB, 0xE2, 0xD4, 0xE5, 0x24, 0x7B, 0x72, 0xF8, 0xB5, 0x06, + 0x1E, 0x4F, 0xC9, 0xEA, 0xA1, 0xEE, 0x26, 0x4F, 0xC9, 0xEA, 0xA1, 0xEE, + 0x2C, 0xCE, 0x52, 0x47, 0xB7, 0x2F, 0x8B, 0x53, 0x94, 0x91, 0xED, 0xCB, + 0xE2, 0xD4, 0x18, 0x79, 0x3F, 0x27, 0xAA, 0x87, 0xB8, 0x99, 0x3F, 0x27, + 0xAA, 0x87, 0xB8, 0xB3, 0x39, 0x49, 0x1E, 0xDC, 0xBE, 0x2D, 0x4E, 0x52, + 0x47, 0xB7, 0x2F, 0x8B, 0x50, 0x61, 0xE4, 0xFC, 0x9E, 0xAA, 0x1E, 0xE2, + 0x64, 0xFC, 0x9E, 0xAA, 0x1E, 0xE2, 0xCC, 0xE5, 0x24, 0x7B, 0x72, 0xF8, + 0xB5, 0x39, 0x49, 0x1E, 0xDC, 0xBE, 0x2D, 0x41, 0x87, 0x93, 0xF2, 0x7A, + 0xA8, 0x7B, 0x89, 0x93, 0xF2, 0x7A, 0xA8, 0x7B, 0x8B, 0x33, 0x94, 0x91, + 0xED, 0xCB, 0xE2, 0xD4, 0xE5, 0x24, 0x7B, 0x52, 0xF8, 0xB5, 0x06, 0x1E, + 0x4F, 0xC9, 0xEA, 0xA1, 0xEE, 0x26, 0x4F, 0xC9, 0xEA, 0xA1, 0xEE, 0x2C, + 0xCE, 0x52, 0x47, 0xB5, 0x2F, 0x8B, 0x53, 0x94, 0x91, 0xED, 0x4B, 0xE2, + 0xD4, 0x18, 0x79, 0x3F, 0x27, 0xAA, 0x87, 0xB8, 0x99, 0x3F, 0x27, 0xAA, + 0x87, 0xB8, 0xB3, 0x39, 0x49, 0x1E, 0xD4, 0xBE, 0x2D, 0x4E, 0x52, 0x47, + 0xB5, 0x2F, 0x8B, 0x50, 0x61, 0xE4, 0xFC, 0x9E, 0xAA, 0x1E, 0xE2, 0x64, + 0xFC, 0x9E, 0xAA, 0x1E, 0xE2, 0xCC, 0xE5, 0x24, 0x7B, 0x52, 0xF8, 0xB5, + 0x39, 0x49, 0x1E, 0xD4, 0xBE, 0x2D, 0x41, 0x87, 0x93, 0xF2, 0x7A, 0xA8, + 0x7B, 0x89, 0x93, 0xF2, 0x7A, 0xA8, 0x7B, 0x8B, 0x33, 0x94, 0x91, 0xED, + 0x4B, 0xE2, 0xD4, 0xE5, 0x24, 0x7B, 0x52, 0xF8, 0xB5, 0x06, 0x1E, 0x4F, + 0xC9, 0xEA, 0xA1, 0xEE, 0x26, 0x4F, 0xC9, 0xEA, 0xA1, 0xEE, 0x2C, 0xCE, + 0x52, 0x47, 0xB5, 0x2F, 0x8B, 0x53, 0x94, 0x91, 0xED, 0x4B, 0xE2, 0xD4, + 0x11, 0xCA, 0x51, 0x70, 0x24, 0xE2, 0x5B, 0x82, 0x1A, 0xDD, 0x20, 0x36, + 0xAA, 0xD6, 0x57, 0xEA, 0x7F, 0xD3, 0xEA, 0xA1, 0xE5, 0x24, 0x7B, 0x52, + 0xF8, 0xB5, 0x5C, 0xD8, 0xF2, 0x8C, 0xFC, 0x91, 0x60, 0x36, 0xBD, 0x0E, + 0x01, 0x05, 0xFF, 0x00, 0xAA, 0x3D, 0xCF, 0xAA, 0x8E, 0x6A, 0x42, 0x56, + 0x70, 0xB4, 0xCC, 0xC1, 0x6C, 0x42, 0xDC, 0xC2, 0xD7, 0xB9, 0x55, 0xF1, + 0xA4, 0xDE, 0x6B, 0x7C, 0x48, 0x0E, 0xAB, 0x4B, 0x81, 0x56, 0xDB, 0x90, + 0xED, 0x4B, 0x62, 0xD5, 0xA1, 0x0D, 0xC7, 0x46, 0xEC, 0x70, 0xF0, 0x4B, + 0x8E, 0x8D, 0xD8, 0xE1, 0xE0, 0xA6, 0xB7, 0x21, 0xDA, 0x96, 0xC5, 0xA9, + 0x6E, 0x43, 0xB5, 0x2D, 0x8B, 0x52, 0xC4, 0x37, 0x1D, 0x1B, 0xB1, 0xC3, + 0xC1, 0x2E, 0x3A, 0x37, 0x63, 0x87, 0x82, 0x9A, 0xDC, 0x87, 0x6A, 0x5B, + 0x16, 0xA5, 0xB9, 0x0E, 0xD4, 0xB6, 0x2D, 0x4B, 0x10, 0xDC, 0x74, 0x6E, + 0xC7, 0x0F, 0x04, 0xB8, 0xE8, 0xDD, 0x8E, 0x1E, 0x0A, 0x6B, 0x72, 0x1D, + 0xA9, 0x6C, 0x5A, 0x96, 0xE4, 0x3B, 0x52, 0xD8, 0xB5, 0x2C, 0x43, 0x71, + 0xD1, 0xBB, 0x1C, 0x3C, 0x12, 0xE3, 0xA3, 0x76, 0x38, 0x78, 0x29, 0xAD, + 0xC8, 0x76, 0xA5, 0xB1, 0x6A, 0x5B, 0x90, 0xED, 0x4B, 0x62, 0xD4, 0xB1, + 0x0D, 0xC7, 0x46, 0xEC, 0x70, 0xF0, 0x4B, 0x8E, 0x8D, 0xD8, 0xE1, 0xE0, + 0xA6, 0xB7, 0x21, 0xDA, 0x96, 0xC5, 0xA9, 0x6E, 0x43, 0xB5, 0x2D, 0x8B, + 0x52, 0xC4, 0x37, 0x1D, 0x1B, 0xB1, 0xC3, 0xC1, 0x2E, 0x3A, 0x37, 0x63, + 0x87, 0x82, 0x9A, 0xDC, 0x87, 0x6A, 0x5B, 0x16, 0xA5, 0xB9, 0x0E, 0xD4, + 0xB6, 0x2D, 0x4B, 0x10, 0xDC, 0x74, 0x6E, 0xC7, 0x0F, 0x04, 0xB8, 0xE8, + 0xDD, 0x8E, 0x1E, 0x0A, 0x5B, 0x72, 0x1D, 0xA9, 0x6C, 0x5A, 0x96, 0xE4, + 0x3B, 0x52, 0xD8, 0xB5, 0x04, 0x57, 0x1D, 0x1B, 0xB1, 0xC3, 0xC1, 0x2E, + 0x3A, 0x37, 0x63, 0x87, 0x82, 0x96, 0xDC, 0x87, 0x6A, 0x5B, 0x16, 0xA5, + 0xB9, 0x0E, 0xD4, 0xB6, 0x2D, 0x41, 0x15, 0xC7, 0x46, 0xEC, 0x70, 0xF0, + 0x4B, 0x8E, 0x8D, 0xD8, 0xE1, 0xE0, 0xA5, 0xB7, 0x21, 0xDA, 0x96, 0xC5, + 0xA9, 0x6E, 0x43, 0xB5, 0x2D, 0x8B, 0x50, 0x45, 0x71, 0xD1, 0xBB, 0x1C, + 0x3C, 0x12, 0xE3, 0xA3, 0x76, 0x38, 0x78, 0x29, 0x6D, 0xC8, 0x76, 0xA5, + 0xB1, 0x6A, 0x5B, 0x90, 0xED, 0x4B, 0x62, 0xD4, 0x11, 0x5C, 0x74, 0x6E, + 0xC7, 0x0F, 0x04, 0xB8, 0xE8, 0xDD, 0x8E, 0x1E, 0x0A, 0x5B, 0x72, 0x1D, + 0xA9, 0x6C, 0x5A, 0x96, 0xE4, 0x3B, 0x52, 0xD8, 0xB5, 0x04, 0x57, 0x1D, + 0x1B, 0xB1, 0xC3, 0xC1, 0x2E, 0x3A, 0x37, 0x63, 0x87, 0x82, 0x96, 0xDC, + 0x87, 0x6A, 0x5B, 0x16, 0xAA, 0xDB, 0x90, 0xED, 0x4B, 0x62, 0xD4, 0x10, + 0xDC, 0x74, 0x6E, 0xC7, 0x0F, 0x04, 0xB8, 0xE8, 0xDD, 0x8E, 0x1E, 0x0A, + 0x6B, 0x72, 0x1D, 0xA9, 0x6C, 0x5A, 0x96, 0xE4, 0x3B, 0x52, 0xD8, 0xB5, + 0x2C, 0x43, 0x71, 0xD1, 0xBB, 0x1C, 0x3C, 0x12, 0xE3, 0xA3, 0x76, 0x38, + 0x78, 0x29, 0xAD, 0xC8, 0x76, 0xA5, 0xB1, 0x6A, 0x5B, 0x90, 0xED, 0x4B, + 0x62, 0xD4, 0xB1, 0x0D, 0xC7, 0x46, 0xEC, 0x70, 0xF0, 0x4B, 0x8E, 0x8D, + 0xD8, 0xE1, 0xE0, 0xA6, 0xB7, 0x21, 0xDA, 0x96, 0xC5, 0xA9, 0x6E, 0x43, + 0xB5, 0x2D, 0x8B, 0x52, 0xC4, 0x37, 0x1D, 0x1B, 0xB1, 0xC3, 0xC1, 0x2E, + 0x3A, 0x37, 0x63, 0x87, 0x82, 0x9A, 0xDC, 0x87, 0x6A, 0x5B, 0x16, 0xA5, + 0xB9, 0x0E, 0xD4, 0xB6, 0x2D, 0x4B, 0x10, 0xDC, 0x74, 0x6E, 0xC7, 0x0F, + 0x04, 0xB8, 0xE8, 0xDD, 0x8E, 0x1E, 0x0A, 0x6B, 0x72, 0x1D, 0xA9, 0x6C, + 0x5A, 0x96, 0xE4, 0x3B, 0x52, 0xD8, 0xB5, 0x2C, 0x43, 0x71, 0xD1, 0xBB, + 0x1C, 0x3C, 0x15, 0x45, 0x09, 0x46, 0x82, 0x08, 0x94, 0x86, 0x08, 0x52, + 0xDB, 0x90, 0xED, 0x4B, 0x62, 0xD4, 0xB7, 0x21, 0xDA, 0x96, 0xC5, 0xA9, + 0x62, 0x59, 0x8C, 0xD2, 0xD1, 0x47, 0xFE, 0x07, 0x82, 0xB6, 0x6B, 0xA9, + 0x46, 0xF0, 0xDD, 0xC1, 0x59, 0x6E, 0x43, 0xB5, 0x2D, 0x8B, 0x54, 0x93, + 0x7D, 0x4E, 0x3F, 0x86, 0xEE, 0x0A, 0x4F, 0x66, 0xF0, 0xF2, 0x85, 0x25, + 0x7A, 0x94, 0x1F, 0x0D, 0xBC, 0x17, 0x9B, 0xCC, 0x75, 0x88, 0xBD, 0xF3, + 0xC5, 0x7A, 0x44, 0xAF, 0x52, 0x83, 0xE1, 0xB7, 0x82, 0xF3, 0x79, 0x8E, + 0xB1, 0x17, 0xBE, 0x78, 0xA4, 0x76, 0x33, 0xF2, 0x94, 0x68, 0x88, 0xAB, + 0x22, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, + 0x20, 0x92, 0x27, 0xAA, 0x85, 0xFC, 0x1E, 0x25, 0x46, 0xA5, 0x2D, 0x2F, + 0x85, 0x0E, 0xCD, 0x46, 0xA0, 0x7D, 0xFF, 0x00, 0xBA, 0xB7, 0x92, 0x7E, + 0x81, 0x88, 0x52, 0x25, 0x16, 0x29, 0x25, 0xE1, 0x18, 0xF3, 0x10, 0xE0, + 0x82, 0x01, 0x88, 0xE0, 0xDA, 0xCF, 0xBA, 0xB2, 0xA9, 0xC9, 0x3F, 0x40, + 0xC4, 0x20, 0x86, 0xF0, 0x6B, 0x19, 0x88, 0xFD, 0xC2, 0xB7, 0x03, 0x2D, + 0x92, 0x50, 0x5F, 0x09, 0xD1, 0x9B, 0x12, 0x27, 0x26, 0xD0, 0xE2, 0x41, + 0x60, 0xB5, 0x5B, 0x4B, 0x7F, 0x7F, 0xFC, 0x82, 0x95, 0xB2, 0x30, 0x43, + 0x07, 0xE2, 0x2E, 0x73, 0x9C, 0x0B, 0x4B, 0x87, 0xFD, 0xA5, 0x85, 0xD9, + 0xC5, 0x7D, 0x2B, 0x1D, 0xB3, 0x33, 0x6D, 0x73, 0xDC, 0x62, 0x39, 0xCE, + 0x73, 0x2C, 0x5A, 0x2F, 0xCE, 0x05, 0x60, 0xE6, 0xCF, 0xFB, 0x2B, 0x0C, + 0x49, 0x92, 0x5C, 0x4C, 0x57, 0xD6, 0xE3, 0x5B, 0xBF, 0x1F, 0x49, 0x52, + 0xCB, 0x64, 0x32, 0x8E, 0x64, 0x48, 0x8D, 0x84, 0x22, 0xB8, 0x3C, 0x18, + 0x76, 0x89, 0x6E, 0x6A, 0x9C, 0x47, 0x46, 0x7F, 0x75, 0x63, 0xF9, 0x56, + 0x32, 0x4E, 0x1B, 0xDA, 0xD8, 0x8D, 0x88, 0xF3, 0x0E, 0xA7, 0x5A, 0xAC, + 0x01, 0x55, 0x44, 0x0F, 0x79, 0xA8, 0x0C, 0xE1, 0x45, 0xCA, 0x4C, 0xD9, + 0x63, 0x79, 0x57, 0xD9, 0x61, 0x05, 0xA2, 0xDF, 0x41, 0x1D, 0x15, 0x67, + 0x54, 0x86, 0xE9, 0x88, 0x5E, 0xAE, 0x23, 0x9B, 0xD3, 0xD0, 0xFA, 0xBA, + 0x7A, 0x78, 0x04, 0xB1, 0x34, 0xDC, 0xAB, 0x25, 0xE0, 0xD4, 0x0D, 0xA2, + 0x22, 0x55, 0x6B, 0x48, 0xB2, 0x08, 0xE2, 0xB0, 0x94, 0xD1, 0x0C, 0x78, + 0xBE, 0xB1, 0xEE, 0x7F, 0x79, 0xF5, 0xAB, 0x39, 0x27, 0xE8, 0x18, 0x84, + 0xB8, 0x16, 0x22, 0xBF, 0x92, 0x7E, 0x81, 0x88, 0x4E, 0x49, 0xFA, 0x06, + 0x21, 0x5B, 0x80, 0x8D, 0xEB, 0x3F, 0xD5, 0xBF, 0xFF, 0x00, 0x50, 0xAC, + 0x57, 0xC6, 0xF5, 0xA7, 0xF6, 0x6B, 0x47, 0xCA, 0x15, 0x8A, 0x47, 0x62, + 0x04, 0x44, 0x55, 0x44, 0x57, 0x3A, 0x1B, 0xD8, 0xD0, 0x5E, 0xC7, 0x34, + 0x1E, 0x82, 0x45, 0x55, 0xA1, 0x86, 0xF0, 0xC0, 0xF2, 0xC7, 0x06, 0x1E, + 0x87, 0x55, 0x99, 0x05, 0xA8, 0xAA, 0x01, 0x71, 0x01, 0xA0, 0x92, 0x7A, + 0x00, 0x4B, 0x27, 0x3E, 0x63, 0x9B, 0xA7, 0xF6, 0x41, 0x44, 0x44, 0x40, + 0x44, 0x44, 0x04, 0x55, 0xA8, 0x80, 0x09, 0x06, 0xA3, 0xD0, 0xA8, 0x80, + 0x8A, 0xA0, 0x17, 0x10, 0x00, 0x24, 0x9E, 0x80, 0x15, 0x10, 0x11, 0x11, + 0x01, 0x11, 0x56, 0xA3, 0x9B, 0x31, 0xCF, 0x98, 0x20, 0xA2, 0x2B, 0x9F, + 0x0D, 0xF0, 0xC8, 0x11, 0x18, 0xE6, 0x93, 0xDA, 0x15, 0x23, 0xA1, 0xBD, + 0x80, 0x17, 0xB1, 0xCD, 0x07, 0xA0, 0x91, 0x55, 0x68, 0x2D, 0x45, 0x52, + 0xD2, 0x00, 0x24, 0x10, 0x0F, 0x46, 0x6E, 0x94, 0xB2, 0x41, 0x20, 0x83, + 0x58, 0xE9, 0x15, 0x74, 0x20, 0xA2, 0x22, 0x20, 0x2B, 0xE0, 0xFE, 0x73, + 0xDD, 0x77, 0x02, 0xAC, 0x57, 0xC1, 0xFC, 0xFF, 0x00, 0xCB, 0x5C, 0x3C, + 0x8A, 0xB0, 0x8B, 0x11, 0x5F, 0xC9, 0xBB, 0x40, 0xC4, 0x27, 0x26, 0xED, + 0x03, 0x10, 0x94, 0x2C, 0x59, 0xB0, 0x64, 0x59, 0x12, 0x1C, 0x22, 0x62, + 0x90, 0xE7, 0x43, 0x74, 0x42, 0x2A, 0x00, 0x00, 0x1C, 0x47, 0x49, 0x3D, + 0x39, 0x96, 0x2F, 0x26, 0xED, 0x03, 0x10, 0xAF, 0x69, 0x8E, 0xC7, 0x35, + 0xCC, 0x7B, 0x9A, 0x58, 0x2A, 0x69, 0x0F, 0xE8, 0x1F, 0xB6, 0x25, 0x28, + 0x65, 0x1A, 0x3E, 0x13, 0x5C, 0xDB, 0x51, 0x9C, 0x5B, 0x11, 0xED, 0x63, + 0x6C, 0xB4, 0x38, 0x82, 0x45, 0x79, 0xF3, 0xF0, 0xE9, 0x51, 0xC4, 0x91, + 0xB0, 0xE2, 0x2D, 0x93, 0x54, 0x27, 0x44, 0xE8, 0xD0, 0xE2, 0x3E, 0x8A, + 0xC8, 0x73, 0x13, 0x50, 0xE2, 0x98, 0x8D, 0x8A, 0xFB, 0x44, 0x82, 0xEF, + 0xC7, 0xF9, 0xAA, 0xD3, 0x9D, 0x51, 0xF1, 0xA6, 0x5E, 0x1C, 0xDE, 0x51, + 0xC1, 0x8E, 0x24, 0xD8, 0x0F, 0xCD, 0x9C, 0xD7, 0xD1, 0x5A, 0x94, 0x32, + 0xA2, 0x51, 0xD0, 0xF9, 0xC3, 0x99, 0xCA, 0x59, 0x25, 0xF1, 0x33, 0x06, + 0x80, 0x00, 0x65, 0x7A, 0x4F, 0xEC, 0xAC, 0x7C, 0x8C, 0x28, 0x6C, 0xE5, + 0x1D, 0x15, 0xC5, 0x86, 0xC8, 0x01, 0x80, 0x38, 0x82, 0x6B, 0xE9, 0xA8, + 0xD5, 0xFF, 0x00, 0x6A, 0xC6, 0xB5, 0x1E, 0xD8, 0x7F, 0x28, 0xEB, 0x60, + 0x92, 0x1D, 0x6F, 0x38, 0x27, 0xA4, 0xAB, 0x84, 0x69, 0xA0, 0xF7, 0x3C, + 0x46, 0x78, 0x73, 0x85, 0x44, 0xF2, 0x99, 0xC8, 0xC5, 0x28, 0x52, 0x79, + 0x8D, 0x85, 0x3D, 0x31, 0x0D, 0x82, 0xA6, 0xB6, 0x2B, 0x80, 0x1A, 0x00, + 0x25, 0x40, 0xA4, 0x73, 0x22, 0x39, 0xC5, 0xCE, 0x35, 0xB8, 0x9A, 0xC9, + 0x2E, 0xCE, 0x55, 0x39, 0x37, 0x68, 0x18, 0x85, 0x68, 0x58, 0xAF, 0x6F, + 0xAB, 0x89, 0xFC, 0x0E, 0x29, 0xC9, 0xBB, 0x40, 0xC4, 0x2A, 0xD9, 0x2D, + 0x86, 0xFA, 0xEA, 0xCF, 0x57, 0xBF, 0xF7, 0x41, 0x1A, 0x22, 0x28, 0xA2, + 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, 0x20, + 0x92, 0x5F, 0xAC, 0x42, 0xEF, 0x8E, 0x2B, 0xD2, 0x26, 0xBA, 0x94, 0x6F, + 0x0D, 0xDC, 0x17, 0x9B, 0xCB, 0xF5, 0x88, 0x5D, 0xF1, 0xC5, 0x7A, 0x44, + 0xD7, 0x52, 0x8D, 0xE1, 0xBB, 0x82, 0x93, 0xD9, 0xAC, 0x3C, 0xA0, 0x95, + 0xEA, 0x50, 0x7C, 0x36, 0xF0, 0x5E, 0x6F, 0x31, 0xD6, 0x22, 0xF7, 0xCF, + 0x15, 0xE9, 0x12, 0xBD, 0x4A, 0x0F, 0x86, 0xDE, 0x0B, 0xCD, 0xE6, 0x3A, + 0xC4, 0x5E, 0xF9, 0xE2, 0x91, 0xD8, 0xCF, 0xCA, 0x51, 0xA2, 0x22, 0xAC, + 0x88, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, + 0x80, 0x40, 0x3D, 0x2A, 0x96, 0x46, 0x85, 0x54, 0x41, 0x4B, 0x23, 0x42, + 0x59, 0x1A, 0x15, 0x51, 0x05, 0x2C, 0x8D, 0x09, 0x64, 0x68, 0x55, 0x44, + 0x14, 0xB2, 0x34, 0x25, 0x91, 0xA1, 0x55, 0x10, 0x52, 0xC8, 0xD0, 0x96, + 0x46, 0x85, 0x54, 0x41, 0x4B, 0x23, 0x42, 0x59, 0x1A, 0x15, 0x51, 0x00, + 0x0A, 0xBA, 0x11, 0x11, 0x01, 0x64, 0xD1, 0xCE, 0x86, 0xD9, 0xE8, 0x46, + 0x29, 0x68, 0x6D, 0x7D, 0x2E, 0xE8, 0x06, 0xAC, 0xD5, 0xFE, 0xD5, 0xD4, + 0xB1, 0x91, 0x06, 0xD2, 0x1B, 0x66, 0xE1, 0xB6, 0x65, 0xD3, 0xFC, 0xA0, + 0x84, 0xE8, 0x6E, 0xAF, 0x94, 0x39, 0x9E, 0xEF, 0xFB, 0x6A, 0xD2, 0x6B, + 0xAB, 0x38, 0x53, 0xC5, 0x6C, 0x57, 0xB6, 0x33, 0x9E, 0x22, 0xC1, 0x1C, + 0x91, 0x1C, 0xAB, 0x5D, 0x6A, 0x0B, 0xC0, 0x19, 0x80, 0xAC, 0x66, 0xAE, + 0xAC, 0xD9, 0xFA, 0x56, 0x91, 0x10, 0x67, 0x51, 0xB6, 0x60, 0x88, 0xB3, + 0x2F, 0x79, 0x87, 0xC9, 0xB6, 0xCB, 0x1C, 0x05, 0x66, 0xD3, 0xBD, 0xF5, + 0x7E, 0xC2, 0xBF, 0x25, 0x9C, 0xE6, 0x35, 0xFC, 0xEA, 0x2C, 0xBC, 0x31, + 0x1C, 0x47, 0x6B, 0x22, 0x35, 0x95, 0x1C, 0xE6, 0xB3, 0x6B, 0x30, 0xFD, + 0xEB, 0xCC, 0xB4, 0x68, 0x83, 0x77, 0x0E, 0x4E, 0x0B, 0xA2, 0xBD, 0xAD, + 0x96, 0xAD, 0xD5, 0xB2, 0xD0, 0xCE, 0xE6, 0xC3, 0x25, 0xB9, 0xC1, 0xA8, + 0xD6, 0x33, 0xFB, 0xF3, 0xA8, 0xEC, 0x43, 0xE6, 0xD0, 0x5D, 0x12, 0x0B, + 0x1E, 0xD8, 0x70, 0x22, 0x54, 0x6B, 0x35, 0x39, 0xC1, 0xE7, 0xDF, 0x5E, + 0x7F, 0xBA, 0xD4, 0x22, 0x0D, 0xBB, 0x24, 0xD8, 0xF9, 0x42, 0x4C, 0x01, + 0x5B, 0xA0, 0x98, 0x8D, 0x73, 0x1A, 0xE3, 0x9F, 0xA7, 0xA6, 0xBA, 0xBF, + 0xA0, 0x0A, 0xB9, 0xB0, 0x1B, 0x06, 0x72, 0x11, 0x6C, 0xAB, 0x04, 0x06, + 0xC6, 0x86, 0x19, 0x18, 0xB8, 0xFE, 0x30, 0x4F, 0x4F, 0x4D, 0x47, 0x4E, + 0x6E, 0x85, 0xA6, 0x44, 0x1B, 0x7E, 0x41, 0xAE, 0x19, 0xE0, 0xDA, 0x8C, + 0x1A, 0xF2, 0xD8, 0x24, 0x9C, 0xEE, 0xB6, 0x05, 0x55, 0x57, 0x5F, 0x45, + 0x66, 0xAF, 0xD9, 0x59, 0x1A, 0x14, 0x08, 0x10, 0xE2, 0xC4, 0x30, 0x19, + 0xCA, 0x86, 0xC3, 0x26, 0x19, 0x26, 0xA6, 0x38, 0xD7, 0x58, 0xAA, 0xBF, + 0xD8, 0x66, 0xFD, 0xD6, 0xAD, 0x10, 0x6C, 0xA0, 0xB2, 0x1C, 0x2A, 0x7A, + 0x00, 0x86, 0x03, 0x58, 0x23, 0x30, 0x81, 0x5E, 0x61, 0x9C, 0x15, 0x64, + 0xBC, 0x84, 0x6E, 0x72, 0x39, 0x68, 0x06, 0xCD, 0x4E, 0x20, 0x3C, 0x1F, + 0xC4, 0x40, 0x3D, 0x15, 0x67, 0x3F, 0xC2, 0xC0, 0x44, 0x1B, 0x97, 0xC8, + 0x41, 0x8B, 0x11, 0x90, 0x9A, 0xCE, 0x45, 0xF1, 0x61, 0x07, 0x87, 0x38, + 0x16, 0x80, 0x43, 0x88, 0x70, 0xAA, 0xB3, 0x57, 0xE1, 0xCF, 0xFD, 0x24, + 0x09, 0x79, 0x38, 0xAC, 0x11, 0x19, 0x01, 0xCE, 0x84, 0xF7, 0xBA, 0xDD, + 0x40, 0x9B, 0x0D, 0xAF, 0x36, 0x7B, 0x40, 0x0C, 0xD9, 0xEB, 0x2B, 0x55, + 0x0A, 0x33, 0xE1, 0x07, 0x86, 0x10, 0x2D, 0xB6, 0xC9, 0x35, 0x0A, 0xEA, + 0xFD, 0x8F, 0xB9, 0x46, 0x83, 0x2A, 0x6C, 0x42, 0x64, 0x28, 0x0D, 0x87, + 0x0D, 0xA0, 0xBA, 0x18, 0x73, 0x9D, 0x59, 0xAC, 0x9C, 0xEB, 0x2E, 0x01, + 0x0C, 0x7C, 0x36, 0xC3, 0x21, 0xAF, 0x32, 0xA7, 0x91, 0x35, 0xD5, 0xF8, + 0xC9, 0xCF, 0x9F, 0x4F, 0x48, 0xC1, 0x6A, 0x95, 0xCE, 0x7B, 0x9C, 0xC6, + 0xB0, 0x9A, 0xC3, 0x6B, 0xAB, 0xF6, 0x41, 0xB3, 0x82, 0xD9, 0x88, 0x50, + 0x1C, 0xD9, 0xCF, 0xC0, 0x4C, 0x46, 0x18, 0x4D, 0x8F, 0x5F, 0xE6, 0xB5, + 0x9C, 0xD4, 0x73, 0xD5, 0x55, 0x75, 0x95, 0x24, 0x68, 0x11, 0xA3, 0xC3, + 0x8C, 0x1C, 0xD8, 0xF2, 0xEE, 0x88, 0xF6, 0xFE, 0x18, 0xAE, 0xB4, 0xC8, + 0x84, 0xBA, 0xAF, 0xC2, 0x48, 0xFD, 0xEB, 0xF7, 0xE6, 0xAD, 0x69, 0x91, + 0x06, 0xE6, 0x69, 0xF0, 0x26, 0x65, 0xDF, 0x0E, 0x04, 0x5B, 0x5C, 0xD5, + 0xC0, 0xC3, 0x05, 0xB5, 0x7E, 0x0C, 0xCD, 0x3F, 0xCE, 0x7A, 0x8E, 0x2A, + 0x39, 0x89, 0x78, 0xEC, 0xA6, 0x9F, 0x17, 0x92, 0x77, 0x26, 0xE9, 0x93, + 0x51, 0x23, 0x33, 0x81, 0x77, 0xD5, 0x6A, 0x95, 0xD0, 0xDE, 0xE8, 0x6F, + 0xB4, 0xC3, 0x53, 0x87, 0x41, 0xD0, 0x81, 0x10, 0x35, 0xB1, 0x5E, 0x18, + 0x6B, 0x68, 0x71, 0x00, 0xFE, 0xCA, 0xD4, 0x44, 0x04, 0x44, 0x41, 0x4B, + 0x23, 0x42, 0x59, 0x1A, 0x15, 0x51, 0x05, 0x2C, 0x8D, 0x09, 0x64, 0x68, + 0x55, 0x44, 0x14, 0xB2, 0x34, 0x25, 0x91, 0xA1, 0x55, 0x10, 0x52, 0xC8, + 0xD0, 0x96, 0x46, 0x85, 0x54, 0x41, 0x4B, 0x23, 0x42, 0x59, 0x1A, 0x15, + 0x51, 0x05, 0x2C, 0x8D, 0x09, 0x50, 0xD0, 0xAA, 0x88, 0x08, 0x88, 0x80, + 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, + 0x24, 0x97, 0xEB, 0x10, 0xBB, 0xE3, 0x8A, 0xF4, 0x89, 0xAE, 0xA5, 0x1B, + 0xC3, 0x77, 0x05, 0xE6, 0xF2, 0xFD, 0x62, 0x17, 0x7C, 0x71, 0x5E, 0x91, + 0x35, 0xD4, 0xA3, 0x78, 0x6E, 0xE0, 0xA4, 0xF6, 0x6B, 0x0F, 0x28, 0x25, + 0x7A, 0x94, 0x1F, 0x0D, 0xBC, 0x17, 0x9B, 0xCC, 0x75, 0x88, 0xBD, 0xF3, + 0xC5, 0x7A, 0x4C, 0xA7, 0x53, 0x83, 0xE1, 0xB7, 0x82, 0xC4, 0x34, 0x15, + 0x1A, 0x49, 0x26, 0x55, 0x84, 0x9E, 0x93, 0x59, 0x48, 0xEC, 0x65, 0xE5, + 0x2F, 0x3D, 0x45, 0xE8, 0x57, 0x0D, 0x19, 0xB2, 0x33, 0xCD, 0x2E, 0x1A, + 0x33, 0x64, 0x67, 0x9A, 0xAC, 0xBC, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, + 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, + 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, 0xC8, 0xCF, 0x34, 0xB8, + 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x3C, 0xF5, 0x17, 0xA1, 0x5C, 0x34, 0x66, + 0xC8, 0xCF, 0x34, 0xB8, 0x68, 0xCD, 0x91, 0x9E, 0x68, 0x38, 0x19, 0x7E, + 0xB1, 0x0B, 0xBE, 0x38, 0xAF, 0x48, 0x9A, 0xEA, 0x51, 0xBC, 0x37, 0x70, + 0x58, 0xA2, 0x82, 0xA3, 0x5A, 0x41, 0x12, 0xAC, 0x04, 0x74, 0x1A, 0xCA, + 0xCB, 0x9B, 0xEA, 0x71, 0xFC, 0x37, 0x70, 0x52, 0x7B, 0x35, 0x87, 0x94, + 0x12, 0xBD, 0x4A, 0x0F, 0x86, 0xDE, 0x0B, 0x9B, 0x2F, 0x75, 0x67, 0xF1, + 0x1C, 0x57, 0x49, 0x2B, 0xD4, 0xA0, 0xF8, 0x6D, 0xE0, 0xB9, 0xA3, 0xD2, + 0x57, 0x1F, 0xE9, 0xDA, 0x1C, 0xFF, 0x00, 0xB7, 0x92, 0xB6, 0xDF, 0xDA, + 0x76, 0x29, 0x6D, 0xFD, 0xA7, 0x62, 0xAD, 0x45, 0xC5, 0xC5, 0x75, 0xB7, + 0xF6, 0x9D, 0x8A, 0x5B, 0x7F, 0x69, 0xD8, 0xAB, 0x51, 0x05, 0xD6, 0xDF, + 0xDA, 0x76, 0x29, 0x6D, 0xFD, 0xA7, 0x62, 0xAD, 0x44, 0x17, 0x5B, 0x7F, + 0x69, 0xD8, 0xA5, 0xB7, 0xF6, 0x9D, 0x8A, 0xB5, 0x10, 0x5D, 0x6D, 0xFD, + 0xA7, 0x62, 0x96, 0xDF, 0xDA, 0x76, 0x2A, 0xD4, 0x41, 0x75, 0xB7, 0xF6, + 0x9D, 0x8A, 0x5B, 0x7F, 0x69, 0xD8, 0xAB, 0x51, 0x05, 0xD6, 0xDF, 0xDA, + 0x76, 0x29, 0x6D, 0xFD, 0xA7, 0x62, 0xAD, 0x44, 0x17, 0x5B, 0x7F, 0x69, + 0xD8, 0xA5, 0xB7, 0xF6, 0x9D, 0x8A, 0xB5, 0x10, 0x5D, 0x6D, 0xFD, 0xA7, + 0x62, 0x96, 0xDF, 0xDA, 0x76, 0x2A, 0xD4, 0x41, 0x75, 0xB7, 0xF6, 0x9D, + 0x8A, 0x5B, 0x7F, 0x69, 0xD8, 0xAB, 0x51, 0x05, 0xD6, 0xDF, 0xDA, 0x76, + 0x29, 0x6D, 0xFD, 0xA7, 0x62, 0xAD, 0x44, 0x17, 0x5B, 0x7F, 0x69, 0xD8, + 0xA5, 0xB7, 0xF6, 0x9D, 0x8A, 0xB5, 0x10, 0x5D, 0x6D, 0xFD, 0xA7, 0x62, + 0x96, 0xDF, 0xDA, 0x76, 0x2A, 0xD4, 0x41, 0x75, 0xB7, 0xF6, 0x9D, 0x8A, + 0x5B, 0x7F, 0x69, 0xD8, 0xAB, 0x51, 0x05, 0xD6, 0xDF, 0xDA, 0x76, 0x29, + 0x6D, 0xFD, 0xA7, 0x62, 0xAD, 0x44, 0x17, 0x5B, 0x7F, 0x69, 0xD8, 0xA5, + 0xB7, 0xF6, 0x9D, 0x8A, 0xB5, 0x10, 0x5D, 0x6D, 0xFD, 0xA7, 0x62, 0x96, + 0xDF, 0xDA, 0x76, 0x2A, 0xD4, 0x41, 0x75, 0xB7, 0xF6, 0x9D, 0x8A, 0x5B, + 0x7F, 0x69, 0xD8, 0xAB, 0x51, 0x05, 0xD6, 0xDF, 0xDA, 0x76, 0x2B, 0x65, + 0x42, 0xB8, 0x98, 0xB1, 0x6B, 0x24, 0xFE, 0x11, 0xD2, 0x56, 0xAD, 0x6C, + 0xE8, 0x4F, 0x5B, 0x17, 0xBA, 0x16, 0xF0, 0xF2, 0x6B, 0x1E, 0xEA, 0x53, + 0xAE, 0x73, 0x63, 0x42, 0xA9, 0xC4, 0x7E, 0x13, 0xD0, 0x56, 0xAB, 0x94, + 0x7F, 0x6D, 0xD8, 0xAD, 0x9D, 0x3D, 0xEB, 0xA1, 0x77, 0x4F, 0x15, 0xAA, + 0x5F, 0x47, 0x0F, 0x14, 0xCB, 0xBA, 0xEE, 0x51, 0xFD, 0xB7, 0x62, 0x9C, + 0xA3, 0xFB, 0x6E, 0xC5, 0x5A, 0x8B, 0x6C, 0xAE, 0xE5, 0x1F, 0xDB, 0x76, + 0x29, 0xCA, 0x3F, 0xB6, 0xEC, 0x55, 0xA8, 0x82, 0xEE, 0x51, 0xFD, 0xB7, + 0x62, 0x9C, 0xA3, 0xFB, 0x6E, 0xC5, 0x5A, 0x88, 0x2E, 0xE5, 0x1F, 0xDB, + 0x76, 0x29, 0xCA, 0x3F, 0xB6, 0xEC, 0x55, 0xA8, 0x82, 0xEE, 0x51, 0xFD, + 0xB7, 0x62, 0x9C, 0xA3, 0xFB, 0x6E, 0xC5, 0x5A, 0x88, 0x2E, 0xE5, 0x1F, + 0xDB, 0x76, 0x29, 0xCA, 0x3F, 0xB6, 0xEC, 0x55, 0xA8, 0x82, 0xEE, 0x51, + 0xFD, 0xB7, 0x62, 0x9C, 0xA3, 0xFB, 0x6E, 0xC5, 0x5A, 0x88, 0x2E, 0xE5, + 0x1F, 0xDB, 0x76, 0x29, 0xCA, 0x3F, 0xB6, 0xEC, 0x55, 0xA8, 0x82, 0xEE, + 0x51, 0xFD, 0xB7, 0x62, 0x9C, 0xA3, 0xFB, 0x6E, 0xC5, 0x5A, 0x88, 0x2E, + 0xE5, 0x1F, 0xDB, 0x76, 0x29, 0xCA, 0x3F, 0xB6, 0xEC, 0x55, 0xA8, 0x82, + 0xEE, 0x51, 0xFD, 0xB7, 0x62, 0x9C, 0xA3, 0xFB, 0x6E, 0xC5, 0x5A, 0x88, + 0x2E, 0xE5, 0x1F, 0xDB, 0x76, 0x29, 0xCA, 0x3F, 0xB6, 0xEC, 0x55, 0xA8, + 0x82, 0xEE, 0x51, 0xFD, 0xB7, 0x62, 0x9C, 0xA3, 0xFB, 0x6E, 0xC5, 0x5A, + 0x88, 0x2E, 0xE5, 0x1F, 0xDB, 0x76, 0x29, 0xCA, 0x3F, 0xB6, 0xEC, 0x55, + 0xA8, 0x82, 0xEE, 0x51, 0xFD, 0xB7, 0x62, 0x9C, 0xA3, 0xFB, 0x6E, 0xC5, + 0x5A, 0x88, 0x2E, 0xE5, 0x1F, 0xDB, 0x76, 0x29, 0xCA, 0x3F, 0xB6, 0xEC, + 0x55, 0xA8, 0x82, 0xEE, 0x51, 0xFD, 0xB7, 0x62, 0x9C, 0xA3, 0xFB, 0x6E, + 0xC5, 0x5A, 0x88, 0x2E, 0xE5, 0x1F, 0xDB, 0x76, 0x29, 0xCA, 0x3F, 0xB6, + 0xEC, 0x55, 0xA8, 0x82, 0xF1, 0x11, 0xF5, 0x8F, 0xC6, 0xEC, 0x57, 0x4F, + 0x35, 0xD4, 0xA3, 0x78, 0x6E, 0xE0, 0xB9, 0x61, 0xD2, 0x17, 0x53, 0x35, + 0xD4, 0xA3, 0x78, 0x6E, 0xE0, 0xB8, 0xFF, 0x00, 0x5E, 0xCE, 0xFF, 0x00, + 0xC7, 0xC9, 0x59, 0x5E, 0xA5, 0x07, 0xC3, 0x6F, 0x05, 0xCD, 0x1E, 0x92, + 0xBA, 0x59, 0x5E, 0xA5, 0x07, 0xC3, 0x6F, 0x05, 0xCD, 0x1E, 0x92, 0xBC, + 0x7F, 0xD3, 0xB4, 0x1F, 0xDB, 0xC9, 0x44, 0x44, 0x5C, 0x9C, 0x44, 0x44, + 0x40, 0x44, 0x44, 0x05, 0x34, 0x03, 0x66, 0x14, 0x67, 0x00, 0x09, 0x00, + 0x55, 0x58, 0x07, 0xDE, 0x14, 0x2A, 0xE6, 0x3D, 0xEC, 0xAE, 0xC3, 0x8B, + 0x6B, 0xD0, 0x6A, 0x56, 0x06, 0x40, 0x86, 0xD8, 0xAD, 0x63, 0xDE, 0x03, + 0x4D, 0x92, 0x4D, 0x59, 0xAB, 0x03, 0xA3, 0xFF, 0x00, 0xDF, 0xB2, 0xA1, + 0x97, 0x6B, 0xB3, 0x43, 0x71, 0x2E, 0x20, 0x10, 0x2B, 0xAF, 0x35, 0x75, + 0x1F, 0xA2, 0x87, 0x94, 0x7D, 0xBB, 0x76, 0xDD, 0x6B, 0x4D, 0x79, 0xD5, + 0x0C, 0x47, 0x97, 0x5A, 0xB6, 0xEB, 0x44, 0x55, 0x5D, 0x6A, 0xDC, 0x2D, + 0xC2, 0x7E, 0x49, 0x85, 0x96, 0x81, 0x25, 0x8D, 0xB4, 0x7D, 0xD5, 0x9C, + 0xE0, 0x7D, 0x51, 0xB0, 0x61, 0x96, 0x97, 0x9B, 0x41, 0xB9, 0x80, 0x04, + 0x80, 0x71, 0x50, 0x35, 0xEF, 0x6D, 0x56, 0x5C, 0x45, 0x5D, 0x19, 0xD5, + 0x44, 0x68, 0x81, 0xC5, 0xC1, 0xEE, 0xAC, 0xF4, 0x9A, 0xD2, 0xE0, 0xB8, + 0x49, 0x0E, 0x13, 0x79, 0xDF, 0x26, 0x7F, 0x10, 0x04, 0xD5, 0xFB, 0xE8, + 0x46, 0x5B, 0x8F, 0xF8, 0x4B, 0x5B, 0x55, 0xA0, 0x2D, 0x06, 0x81, 0x66, + 0xB3, 0x52, 0x86, 0xB3, 0x5D, 0x75, 0x9A, 0xF4, 0xAB, 0x9D, 0x16, 0x23, + 0xC5, 0x4E, 0x7B, 0x88, 0xE9, 0xCE, 0x52, 0xCB, 0x4C, 0xD8, 0x30, 0xDE, + 0x73, 0x5B, 0x68, 0x0E, 0xB2, 0x6B, 0xCF, 0xEE, 0x3F, 0xFC, 0x46, 0x43, + 0x84, 0x5B, 0x6E, 0xCB, 0x88, 0x2D, 0x76, 0x62, 0x7A, 0x08, 0xFE, 0x94, + 0x2E, 0x8B, 0x11, 0xC4, 0x12, 0xF7, 0x12, 0x3A, 0x33, 0xAA, 0x35, 0xEE, + 0x6D, 0x56, 0x5C, 0x45, 0x49, 0x70, 0x5A, 0x63, 0x06, 0x1B, 0x6B, 0xFC, + 0xE6, 0xCB, 0x03, 0x8E, 0x7E, 0x9A, 0xEA, 0xFF, 0x00, 0xEA, 0x96, 0x14, + 0x26, 0x07, 0x37, 0x35, 0x61, 0xCF, 0x86, 0x45, 0xAE, 0x9A, 0x8D, 0x79, + 0x96, 0x20, 0x88, 0xF0, 0xEB, 0x41, 0xC4, 0x1A, 0xAA, 0xAE, 0xB5, 0x5E, + 0x51, 0xF5, 0xD7, 0x6D, 0xD5, 0x93, 0x5D, 0x75, 0xFB, 0xD2, 0xE0, 0xB8, + 0x4C, 0x20, 0x33, 0x93, 0x15, 0xBB, 0xF1, 0x16, 0x5A, 0xE9, 0xFA, 0x28, + 0xA3, 0x31, 0xB0, 0xDC, 0x1A, 0xDA, 0xC9, 0xA8, 0x12, 0x4F, 0xEE, 0x15, + 0x04, 0x47, 0x86, 0x58, 0x0F, 0x36, 0x74, 0x56, 0xAD, 0x24, 0x93, 0x59, + 0x24, 0x9F, 0xDD, 0x49, 0x98, 0x46, 0x5F, 0xE6, 0x99, 0x10, 0x8B, 0x5B, + 0x60, 0xB4, 0x57, 0xF8, 0x46, 0x6C, 0xDD, 0x35, 0xA8, 0xC4, 0x36, 0x00, + 0x2A, 0xAE, 0xD1, 0x86, 0x5C, 0x7A, 0x2A, 0xE8, 0x2A, 0x23, 0x1A, 0x21, + 0x6D, 0x93, 0x11, 0xC5, 0xBA, 0x2B, 0x54, 0xB4, 0xEE, 0xD1, 0xE8, 0xAB, + 0xA7, 0xDC, 0xAD, 0xAD, 0xB2, 0x04, 0xB3, 0x4B, 0x87, 0xE2, 0x21, 0xAE, + 0x22, 0xC1, 0xD2, 0x2A, 0xAC, 0xAA, 0x72, 0x10, 0x8D, 0x4E, 0x0E, 0x35, + 0x54, 0xE2, 0x40, 0x35, 0xF4, 0x7E, 0xEA, 0x0B, 0x6E, 0xFC, 0x3F, 0x88, + 0xFE, 0x1E, 0x8C, 0xFD, 0x0A, 0xAE, 0x8A, 0xF7, 0x1A, 0xDC, 0xF2, 0x73, + 0x55, 0xD2, 0x97, 0x05, 0xC2, 0xE8, 0x40, 0x17, 0xB8, 0xD5, 0x99, 0xAD, + 0x24, 0x03, 0x9F, 0xF8, 0x52, 0xDA, 0x2D, 0x10, 0x1A, 0xD6, 0x35, 0xD6, + 0x9B, 0x9C, 0x16, 0x83, 0x5E, 0x72, 0xB1, 0xD8, 0xE2, 0xC7, 0x56, 0x33, + 0xFB, 0x88, 0xD2, 0x15, 0x44, 0x68, 0x81, 0xB6, 0x44, 0x47, 0x06, 0xE8, + 0x05, 0x22, 0x48, 0x94, 0xF1, 0x40, 0x82, 0xDA, 0xE1, 0x00, 0x41, 0x7B, + 0x85, 0xA2, 0x01, 0xE8, 0xE8, 0x08, 0x49, 0x64, 0x28, 0x8E, 0xB0, 0xD6, + 0xB8, 0xB9, 0xB9, 0xAA, 0x06, 0xAA, 0xC1, 0x50, 0x32, 0x23, 0xE1, 0xD7, + 0x61, 0xC5, 0xB5, 0xE8, 0x28, 0x22, 0xC4, 0x69, 0x25, 0xB1, 0x1C, 0x09, + 0xCE, 0x6A, 0x3D, 0x29, 0x65, 0xA7, 0x73, 0x43, 0x88, 0xAD, 0xA1, 0xA5, + 0xF0, 0x8B, 0x88, 0x02, 0xAA, 0x88, 0xAC, 0xFD, 0x3C, 0xD6, 0x2A, 0xBC, + 0x44, 0x77, 0xE2, 0x24, 0x92, 0xE7, 0x0A, 0x89, 0x3D, 0x2A, 0xC5, 0x25, + 0x24, 0x44, 0x45, 0x01, 0x11, 0x10, 0x11, 0x11, 0x01, 0x6C, 0xE8, 0x4F, + 0x5B, 0x17, 0xBA, 0x16, 0xB1, 0x6C, 0xE8, 0x4F, 0x5B, 0x17, 0xBA, 0x16, + 0xF0, 0xF2, 0x5C, 0x7B, 0xAC, 0xA7, 0xBD, 0x74, 0x2E, 0xE9, 0xE2, 0xB5, + 0x4B, 0x6B, 0x4F, 0x7A, 0xE8, 0x5D, 0xD3, 0xC5, 0x6A, 0x97, 0xD2, 0xC3, + 0xC4, 0xCB, 0xB8, 0x88, 0x8B, 0x4C, 0x88, 0x88, 0x80, 0x88, 0x88, 0x0A, + 0x69, 0x40, 0x1D, 0x32, 0xC0, 0xE0, 0x08, 0x27, 0xDE, 0xA1, 0x55, 0x6B, + 0x8B, 0x4D, 0x6D, 0x24, 0x11, 0xEF, 0x09, 0x2A, 0xC9, 0x85, 0x06, 0x1B, + 0xE1, 0xBD, 0xAD, 0x7D, 0xA2, 0x5C, 0xD1, 0x59, 0x6D, 0x55, 0x56, 0x55, + 0x1B, 0x06, 0x13, 0xF3, 0x82, 0xF6, 0xB4, 0x3E, 0xC9, 0xAF, 0x3F, 0xB8, + 0x9D, 0x1F, 0xB2, 0xC7, 0x0E, 0x20, 0x10, 0x09, 0x00, 0xF4, 0xAB, 0xCC, + 0x78, 0xA4, 0x82, 0x62, 0x38, 0x96, 0xF4, 0x1A, 0xFA, 0x16, 0x6A, 0x4B, + 0x84, 0xC6, 0x14, 0x36, 0xB2, 0x29, 0xB2, 0x48, 0xE4, 0xC1, 0x69, 0xB4, + 0x0F, 0xFD, 0xC0, 0x74, 0x85, 0x64, 0x2F, 0xC1, 0x2E, 0xF8, 0x8D, 0x00, + 0xBC, 0x38, 0x0A, 0xC8, 0xAE, 0xA1, 0x9D, 0x46, 0x63, 0x44, 0x24, 0x92, + 0xF7, 0x1A, 0xC5, 0x47, 0x3F, 0xBB, 0x42, 0xA3, 0x22, 0x3E, 0x19, 0xAD, + 0x8E, 0x2D, 0x3F, 0xB1, 0x56, 0x8B, 0x4E, 0x59, 0x6D, 0xA6, 0x2C, 0x56, + 0x59, 0x01, 0xA0, 0xD4, 0xCA, 0x85, 0xAC, 0xF5, 0x57, 0xFB, 0x23, 0xA0, + 0xC2, 0x86, 0xD7, 0x3D, 0xD6, 0xC8, 0xFC, 0x35, 0x00, 0x40, 0x39, 0xC1, + 0x2A, 0x1E, 0x5A, 0x25, 0xB2, 0xFB, 0x6E, 0xB4, 0x73, 0x57, 0x5A, 0xA3, + 0x9E, 0xE7, 0x57, 0x69, 0xC4, 0xD6, 0x6B, 0x35, 0x9E, 0x92, 0x95, 0x25, + 0xB2, 0x8C, 0xBC, 0x20, 0x44, 0x33, 0x6A, 0xB1, 0x11, 0xED, 0x2E, 0xFD, + 0x80, 0x0A, 0xC6, 0x41, 0x84, 0xF3, 0x0C, 0x7E, 0x30, 0x62, 0xD7, 0x64, + 0xD6, 0x3F, 0x0E, 0x7A, 0xB3, 0xE6, 0xCE, 0xA1, 0xE5, 0x62, 0x67, 0xFC, + 0x6E, 0xCE, 0x6B, 0xE9, 0xF7, 0xA3, 0x62, 0xC4, 0x6B, 0x4B, 0x5A, 0xF7, + 0x06, 0x9F, 0x70, 0x2A, 0x54, 0xAD, 0xC3, 0x29, 0xB0, 0x5B, 0x11, 0x8D, + 0x68, 0x00, 0x17, 0x08, 0x62, 0xBA, 0xB4, 0xD6, 0xAD, 0x12, 0xF0, 0x9C, + 0x5B, 0x53, 0x88, 0x1F, 0x8A, 0xB1, 0x58, 0x3D, 0x02, 0xB5, 0x8D, 0x6D, + 0xF5, 0x55, 0x68, 0xD5, 0x9B, 0xDF, 0xA1, 0x55, 0xD1, 0xA2, 0x38, 0x82, + 0xE7, 0xB8, 0x91, 0x5F, 0xBD, 0x2A, 0x4B, 0x84, 0x92, 0xD6, 0x4C, 0xC6, + 0x66, 0xFE, 0x1B, 0x2E, 0x20, 0x3B, 0x3F, 0xB8, 0xA9, 0x21, 0x34, 0x4C, + 0xB1, 0xBC, 0xA0, 0x0D, 0x26, 0x23, 0x5A, 0x1C, 0xD6, 0x81, 0x5D, 0x75, + 0xD6, 0xB1, 0x5A, 0xE7, 0x31, 0xC1, 0xCC, 0x71, 0x69, 0x1E, 0xF0, 0x55, + 0xCE, 0x8D, 0x11, 0xCE, 0x6B, 0x9D, 0x11, 0xC4, 0xB7, 0xA0, 0x93, 0xD0, + 0xAC, 0xC2, 0x44, 0xA6, 0x6C, 0x26, 0x44, 0x63, 0x43, 0x4B, 0x85, 0xA7, + 0x38, 0x36, 0xBA, 0xBA, 0x6A, 0x15, 0x62, 0xAA, 0x25, 0xA1, 0x86, 0x92, + 0xF7, 0x1A, 0xDB, 0x50, 0x22, 0xD0, 0x19, 0xCE, 0x75, 0x8C, 0x1C, 0xE0, + 0x00, 0x0E, 0x22, 0xA3, 0x58, 0xCF, 0xD0, 0x55, 0xCD, 0x8B, 0x11, 0xAE, + 0x2E, 0x6B, 0xDC, 0x0B, 0xBA, 0x4D, 0x7D, 0x29, 0x52, 0x5C, 0x25, 0x8B, + 0x06, 0x1C, 0x28, 0x64, 0xD6, 0xE7, 0x1B, 0x65, 0xA3, 0xDC, 0x33, 0x55, + 0xFF, 0x00, 0xD5, 0x59, 0x76, 0xB7, 0xFE, 0x0A, 0xC0, 0x36, 0xE2, 0xD4, + 0x6B, 0xD0, 0x2A, 0xFF, 0x00, 0xEA, 0xC7, 0x2E, 0x73, 0x85, 0x45, 0xC4, + 0xE7, 0xAF, 0x39, 0xF7, 0xAB, 0x9B, 0x11, 0xCD, 0x65, 0x91, 0xEE, 0x75, + 0xA0, 0x7D, 0xE0, 0xA5, 0x74, 0x2D, 0x3B, 0x61, 0xC2, 0xAA, 0x62, 0xA7, + 0x5A, 0x21, 0xBD, 0x05, 0xB5, 0x55, 0xF8, 0x82, 0xAC, 0x42, 0xE1, 0x30, + 0xF8, 0x2C, 0x86, 0xC2, 0xC1, 0x58, 0x02, 0xA1, 0xD1, 0xA6, 0xBF, 0x35, + 0x8A, 0x1C, 0x45, 0x75, 0x13, 0x9F, 0x31, 0xFD, 0xD5, 0xDC, 0xB4, 0x4B, + 0x16, 0x39, 0x47, 0x59, 0xAA, 0xAA, 0xAB, 0xF7, 0x29, 0x4B, 0x6C, 0xA0, + 0x7F, 0xE6, 0x81, 0x08, 0x31, 0x8E, 0x6B, 0x9A, 0xDA, 0xC5, 0x91, 0x9E, + 0xBE, 0x9C, 0xFD, 0x2A, 0x08, 0x8D, 0x6F, 0x22, 0x1C, 0x3D, 0xCF, 0x2D, + 0xAF, 0x48, 0xF7, 0x2B, 0x79, 0x78, 0xB6, 0x2C, 0xF2, 0x8F, 0xB3, 0x55, + 0x55, 0x5A, 0x35, 0x54, 0xAD, 0x2F, 0x25, 0x8D, 0x6F, 0x40, 0x6D, 0x78, + 0xAB, 0x10, 0x96, 0xB5, 0x11, 0x15, 0x41, 0x11, 0x10, 0x11, 0x11, 0x01, + 0x11, 0x10, 0x54, 0x74, 0x85, 0xD4, 0xCD, 0x75, 0x28, 0xDE, 0x1B, 0xB8, + 0x2E, 0x58, 0x74, 0x85, 0xD4, 0xCD, 0x75, 0x28, 0xDE, 0x1B, 0xB8, 0x2E, + 0x3F, 0xD7, 0xB3, 0xBF, 0xF1, 0xF2, 0x56, 0x57, 0xA9, 0x41, 0xF0, 0xDB, + 0xC1, 0x73, 0x47, 0xA4, 0xAE, 0x96, 0x53, 0xA9, 0xC1, 0xF0, 0xDB, 0xC1, + 0x61, 0x5C, 0xD0, 0xF5, 0xAF, 0xC0, 0x2F, 0x2E, 0x78, 0xCC, 0xC4, 0x52, + 0xFF, 0x00, 0x58, 0x99, 0xCB, 0xA3, 0x4C, 0x8B, 0x73, 0x73, 0x43, 0xD6, + 0xBF, 0x00, 0x97, 0x34, 0x3D, 0x6B, 0xF0, 0x0B, 0x1F, 0x1E, 0x4E, 0x5A, + 0x4B, 0x4C, 0x8B, 0x73, 0x73, 0x43, 0xD6, 0xBF, 0x00, 0x97, 0x34, 0x3D, + 0x6B, 0xF0, 0x09, 0xF1, 0xE4, 0x69, 0x2D, 0x32, 0x2D, 0xCD, 0xCD, 0x0F, + 0x5A, 0xFC, 0x02, 0x5C, 0xD0, 0xF5, 0xAF, 0xC0, 0x27, 0xC7, 0x91, 0xA4, + 0xB4, 0xC8, 0xB7, 0x37, 0x34, 0x3D, 0x6B, 0xF0, 0x09, 0x73, 0x43, 0xD6, + 0xBF, 0x00, 0x9F, 0x1E, 0x46, 0x92, 0xD3, 0x22, 0xDC, 0xDC, 0xD0, 0xF5, + 0xAF, 0xC0, 0x25, 0xCD, 0x0F, 0x5A, 0xFC, 0x02, 0x7C, 0x79, 0x1A, 0x4B, + 0x4C, 0x8B, 0x73, 0x73, 0x43, 0xD6, 0xBF, 0x00, 0x97, 0x34, 0x3D, 0x6B, + 0xF0, 0x09, 0xF1, 0xE4, 0x69, 0x2D, 0x32, 0x2D, 0xCD, 0xCD, 0x0F, 0x5A, + 0xFC, 0x02, 0x5C, 0xD0, 0xF5, 0xAF, 0xC0, 0x27, 0xC7, 0x91, 0xA4, 0xB4, + 0xC8, 0xB7, 0x37, 0x34, 0x3D, 0x6B, 0xF0, 0x09, 0x73, 0x43, 0xD6, 0xBF, + 0x00, 0x9F, 0x1E, 0x46, 0x92, 0xD3, 0x22, 0xDC, 0xDC, 0xD0, 0xF5, 0xAF, + 0xC0, 0x25, 0xCD, 0x0F, 0x5A, 0xFC, 0x02, 0x7C, 0x79, 0x1A, 0x4B, 0x4C, + 0x8B, 0x73, 0x73, 0x43, 0xD6, 0xBF, 0x00, 0x97, 0x34, 0x3D, 0x6B, 0xF0, + 0x09, 0xF1, 0xE4, 0x69, 0x2D, 0x32, 0x2D, 0xCD, 0xCD, 0x0F, 0x5A, 0xFC, + 0x02, 0x5C, 0xD0, 0xF5, 0xAF, 0xC0, 0x27, 0xC7, 0x91, 0xA4, 0xB4, 0xC8, + 0xB7, 0x37, 0x34, 0x3D, 0x6B, 0xF0, 0x09, 0x73, 0x43, 0xD6, 0xBF, 0x00, + 0x9F, 0x1E, 0x46, 0x92, 0xD3, 0x22, 0xDC, 0xDC, 0xD0, 0xF5, 0xAF, 0xC0, + 0x25, 0xCD, 0x0F, 0x5A, 0xFC, 0x02, 0x7C, 0x79, 0x1A, 0x4B, 0x4C, 0x8B, + 0x73, 0x73, 0x43, 0xD6, 0xBF, 0x00, 0x97, 0x34, 0x3D, 0x6B, 0xF0, 0x09, + 0xF1, 0xE4, 0x69, 0x2D, 0x32, 0x2D, 0xCD, 0xCD, 0x0F, 0x5A, 0xFC, 0x02, + 0x5C, 0xD0, 0xF5, 0xAF, 0xC0, 0x27, 0xC7, 0x91, 0xA4, 0xB4, 0xC8, 0xB7, + 0x37, 0x34, 0x3D, 0x6B, 0xF0, 0x09, 0x73, 0x43, 0xD6, 0xBF, 0x00, 0x9F, + 0x1E, 0x46, 0x92, 0xD3, 0x22, 0xDC, 0xDC, 0xD0, 0xF5, 0xAF, 0xC0, 0x25, + 0xCD, 0x0F, 0x5A, 0xFC, 0x02, 0x7C, 0x79, 0x1A, 0x4B, 0x4C, 0x8B, 0x73, + 0x73, 0x43, 0xD6, 0xBF, 0x00, 0x97, 0x34, 0x3D, 0x6B, 0xF0, 0x09, 0xF1, + 0xE4, 0x69, 0x2D, 0x32, 0xD9, 0xD0, 0x9E, 0xB6, 0x2F, 0x74, 0x29, 0xAE, + 0x68, 0x7A, 0xD7, 0xE0, 0x16, 0x44, 0x9C, 0x8B, 0x65, 0x1C, 0xE7, 0x35, + 0xE5, 0xD6, 0x85, 0x59, 0xD5, 0xC7, 0x09, 0x89, 0xB5, 0xC7, 0x19, 0x89, + 0x6B, 0xA9, 0xEF, 0x5D, 0x0B, 0xBA, 0x78, 0xAD, 0x52, 0xE9, 0x67, 0x68, + 0xF6, 0x4E, 0x39, 0xAE, 0x73, 0xDC, 0xDB, 0x22, 0xAC, 0xCB, 0x1A, 0xE3, + 0x85, 0xAE, 0x7E, 0x01, 0x7B, 0x71, 0xCE, 0x22, 0x28, 0xCB, 0x19, 0x99, + 0x68, 0xD1, 0x6F, 0x2E, 0x38, 0x5A, 0xE7, 0xE0, 0x12, 0xE3, 0x85, 0xAE, + 0x7E, 0x01, 0x6B, 0x7C, 0x53, 0x49, 0x68, 0xD1, 0x6F, 0x2E, 0x38, 0x5A, + 0xE7, 0xE0, 0x12, 0xE3, 0x85, 0xAE, 0x7E, 0x01, 0x37, 0xC4, 0xD2, 0x5A, + 0x34, 0x5B, 0xCB, 0x8E, 0x16, 0xB9, 0xF8, 0x04, 0xB8, 0xE1, 0x6B, 0x9F, + 0x80, 0x4D, 0xF1, 0x34, 0x96, 0x8D, 0x16, 0xF2, 0xE3, 0x85, 0xAE, 0x7E, + 0x01, 0x2E, 0x38, 0x5A, 0xE7, 0xE0, 0x13, 0x7C, 0x4D, 0x25, 0xA3, 0x45, + 0xBC, 0xB8, 0xE1, 0x6B, 0x9F, 0x80, 0x4B, 0x8E, 0x16, 0xB9, 0xF8, 0x04, + 0xDF, 0x13, 0x49, 0x68, 0xD1, 0x6F, 0x2E, 0x38, 0x5A, 0xE7, 0xE0, 0x12, + 0xE3, 0x85, 0xAE, 0x7E, 0x01, 0x37, 0xC4, 0xD2, 0x5A, 0x34, 0x5B, 0xCB, + 0x8E, 0x16, 0xB9, 0xF8, 0x04, 0xB8, 0xE1, 0x6B, 0x9F, 0x80, 0x4D, 0xF1, + 0x34, 0x96, 0x8D, 0x16, 0xF2, 0xE3, 0x85, 0xAE, 0x7E, 0x01, 0x2E, 0x38, + 0x5A, 0xE7, 0xE0, 0x13, 0x7C, 0x4D, 0x25, 0xA3, 0x45, 0xBC, 0xB8, 0xE1, + 0x6B, 0x9F, 0x80, 0x4B, 0x8E, 0x16, 0xB9, 0xF8, 0x04, 0xDF, 0x13, 0x49, + 0x68, 0xD1, 0x6F, 0x2E, 0x38, 0x5A, 0xE7, 0xE0, 0x12, 0xE3, 0x85, 0xAE, + 0x7E, 0x01, 0x37, 0xC4, 0xD2, 0x5A, 0x34, 0x5B, 0xCB, 0x8E, 0x16, 0xB9, + 0xF8, 0x04, 0xB8, 0xE1, 0x6B, 0x9F, 0x80, 0x4D, 0xF1, 0x34, 0x96, 0x8D, + 0x16, 0xF2, 0xE3, 0x85, 0xAE, 0x7E, 0x01, 0x2E, 0x38, 0x5A, 0xE7, 0xE0, + 0x13, 0x7C, 0x4D, 0x25, 0xA3, 0x45, 0xBC, 0xB8, 0xE1, 0x6B, 0x9F, 0x80, + 0x4B, 0x8E, 0x16, 0xB9, 0xF8, 0x04, 0xDF, 0x13, 0x49, 0x68, 0xD1, 0x6F, + 0x2E, 0x38, 0x5A, 0xE7, 0xE0, 0x12, 0xE3, 0x85, 0xAE, 0x7E, 0x01, 0x37, + 0xC4, 0xD2, 0x5A, 0x34, 0x5B, 0xCB, 0x8E, 0x16, 0xB9, 0xF8, 0x04, 0xB8, + 0xE1, 0x6B, 0x9F, 0x80, 0x4D, 0xF1, 0x34, 0x96, 0x8D, 0x16, 0xF2, 0xE3, + 0x85, 0xAE, 0x7E, 0x01, 0x2E, 0x38, 0x5A, 0xE7, 0xE0, 0x13, 0x7C, 0x4D, + 0x25, 0xA3, 0x45, 0xBC, 0xB8, 0xE1, 0x6B, 0x9F, 0x80, 0x4B, 0x8E, 0x16, + 0xB9, 0xF8, 0x04, 0xDF, 0x13, 0x49, 0x68, 0xD1, 0x6F, 0x2E, 0x38, 0x5A, + 0xE7, 0xE0, 0x12, 0xE3, 0x85, 0xAE, 0x7E, 0x01, 0x37, 0xC4, 0xD2, 0x5A, + 0x41, 0xD2, 0x17, 0x53, 0x35, 0xD4, 0xA3, 0x78, 0x6E, 0xE0, 0xB0, 0x6E, + 0x38, 0x5A, 0xE7, 0xE0, 0x16, 0x7C, 0xDE, 0x69, 0x38, 0xDE, 0x1B, 0xB8, + 0x2E, 0x5F, 0xD3, 0x28, 0x98, 0xE8, 0xEB, 0xFC, 0xA2, 0x63, 0x2E, 0xA4, + 0xAF, 0x53, 0x83, 0xE1, 0xB7, 0x82, 0xD0, 0x1A, 0x4A, 0x6E, 0xBF, 0x5C, + 0x70, 0x0B, 0x7D, 0x2B, 0xD4, 0xA0, 0xF8, 0x6D, 0xE0, 0xB9, 0x73, 0xD2, + 0x53, 0xF9, 0xC7, 0x47, 0x49, 0xF2, 0x96, 0x55, 0xE5, 0x37, 0xAE, 0x38, + 0x04, 0xBC, 0xA6, 0xF5, 0xC7, 0x00, 0xB1, 0x11, 0x75, 0xA8, 0x19, 0x77, + 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, + 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, + 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, + 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, + 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, + 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, + 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, + 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, + 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, + 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, + 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, + 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, + 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, + 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, + 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, + 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, + 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, + 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, 0xE0, 0x12, 0xF2, + 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, 0x94, 0xDE, 0xB8, + 0xE0, 0x12, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0xC4, 0x44, 0xA8, 0x19, 0x77, + 0x94, 0xDE, 0xB8, 0xE0, 0x15, 0xED, 0x9D, 0x9E, 0x75, 0x8B, 0x31, 0x09, + 0xB6, 0x6A, 0x6E, 0x61, 0x9C, 0xAC, 0x15, 0x93, 0x06, 0x6C, 0xC1, 0x6C, + 0x26, 0x81, 0x99, 0x8E, 0x2E, 0x3F, 0xBF, 0x42, 0x93, 0x1F, 0x88, 0xBE, + 0xF1, 0x9C, 0xD6, 0xBB, 0x00, 0xAA, 0xD9, 0xF9, 0xD7, 0x93, 0x66, 0x23, + 0x8D, 0x42, 0xB3, 0x98, 0x23, 0x27, 0x9A, 0xD6, 0x30, 0x58, 0x71, 0xB2, + 0x41, 0xE9, 0xD0, 0x55, 0xAC, 0x9C, 0xAA, 0x11, 0x6B, 0xAD, 0x97, 0x10, + 0xE1, 0xF9, 0xB3, 0x1A, 0xFD, 0xE5, 0x2B, 0xF0, 0x56, 0xF1, 0x9C, 0xD6, + 0xBB, 0x00, 0x97, 0x8C, 0xE6, 0xB5, 0xD8, 0x05, 0x57, 0x4F, 0x07, 0x34, + 0x83, 0x0F, 0x39, 0x03, 0x3D, 0x7F, 0xBF, 0xE2, 0xC5, 0x22, 0xCF, 0x5A, + 0x0E, 0xB0, 0x1C, 0x09, 0x69, 0x68, 0x35, 0xE7, 0xE9, 0xAD, 0x2B, 0xF0, + 0x5B, 0x79, 0x4E, 0x6B, 0x4E, 0x01, 0x2F, 0x29, 0xBD, 0x71, 0xC0, 0x2B, + 0x66, 0x66, 0x44, 0x76, 0x35, 0xA1, 0xA4, 0x54, 0x6B, 0xAB, 0xDC, 0x33, + 0x55, 0x99, 0x63, 0x2B, 0x11, 0x1C, 0x2B, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, + 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, + 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, + 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, + 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, + 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, + 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, + 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, + 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, + 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, + 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, + 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, + 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, + 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, + 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, + 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, + 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, + 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, + 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, + 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, 0x02, 0x5E, 0x53, + 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, 0x03, 0x2E, 0xF2, 0x9B, 0xD7, 0x1C, + 0x02, 0x5E, 0x53, 0x7A, 0xE3, 0x80, 0x58, 0x88, 0x95, 0x03, 0x2C, 0x52, + 0x53, 0x75, 0xFA, 0xE3, 0x80, 0x5B, 0xF9, 0xAE, 0xA7, 0x1B, 0xC3, 0x77, + 0x05, 0xCB, 0x0E, 0x90, 0xBA, 0x89, 0xAE, 0xA5, 0x1B, 0xC3, 0x77, 0x05, + 0xCB, 0xFA, 0x45, 0x41, 0x1E, 0x50, 0x4A, 0xF5, 0x28, 0x3E, 0x1B, 0x78, + 0x2C, 0x38, 0x54, 0x4C, 0xB3, 0xE1, 0x31, 0xEE, 0x31, 0x2B, 0x73, 0x41, + 0x39, 0xD6, 0x64, 0xAF, 0x52, 0x83, 0xE1, 0xB7, 0x82, 0xAC, 0x2E, 0xA8, + 0xCF, 0x0C, 0x70, 0x59, 0xC6, 0x66, 0x21, 0x32, 0xF2, 0x96, 0xB7, 0x99, + 0xD1, 0x9B, 0x50, 0xF8, 0x81, 0x39, 0x9D, 0x19, 0xB5, 0x0F, 0x88, 0x17, + 0x0F, 0x1F, 0xD7, 0xC4, 0xEF, 0x1E, 0x2A, 0xC5, 0xAB, 0x94, 0xB7, 0x77, + 0xCC, 0xE8, 0xCD, 0xA8, 0x7C, 0x40, 0x9C, 0xCE, 0x8C, 0xDA, 0x87, 0xC4, + 0x0B, 0x84, 0x44, 0xDA, 0x52, 0xDD, 0xDF, 0x33, 0xA3, 0x36, 0xA1, 0xF1, + 0x02, 0x73, 0x3A, 0x33, 0x6A, 0x1F, 0x10, 0x2E, 0x11, 0x13, 0x69, 0x2D, + 0xDD, 0xF3, 0x3A, 0x33, 0x6A, 0x1F, 0x10, 0x20, 0x92, 0xA3, 0x0F, 0x44, + 0xC8, 0xF8, 0x81, 0x70, 0x8A, 0x69, 0x4E, 0xB7, 0x07, 0xBE, 0x38, 0xA5, + 0xCA, 0xDB, 0xBB, 0x75, 0x11, 0x28, 0xD6, 0x97, 0x39, 0xCF, 0x00, 0x67, + 0x24, 0xB8, 0x66, 0xF2, 0x50, 0xF3, 0x3A, 0x33, 0x6A, 0x1F, 0x10, 0x2D, + 0x85, 0x21, 0xD4, 0x26, 0x3C, 0x37, 0x70, 0x5E, 0x68, 0xA6, 0xD2, 0x5B, + 0xBB, 0xE6, 0x74, 0x66, 0xD4, 0x3E, 0x20, 0x4E, 0x67, 0x46, 0x6D, 0x43, + 0xE2, 0x05, 0xC2, 0x22, 0xBB, 0x4A, 0x5B, 0xBB, 0xE6, 0x74, 0x66, 0xD4, + 0x3E, 0x20, 0x4E, 0x67, 0x46, 0x6D, 0x43, 0xE2, 0x05, 0xC2, 0x22, 0x6D, + 0x25, 0xBB, 0xBE, 0x67, 0x46, 0x6D, 0x43, 0xE2, 0x04, 0xE6, 0x74, 0x66, + 0xD4, 0x3E, 0x20, 0x5C, 0x22, 0x26, 0xD2, 0x5B, 0xBC, 0x6C, 0x8D, 0x1A, + 0xF7, 0x06, 0xB6, 0x62, 0xD3, 0x8E, 0x60, 0x04, 0x41, 0x9D, 0x48, 0xFA, + 0x26, 0x4E, 0x1B, 0x4B, 0xA2, 0x3D, 0xED, 0x68, 0xE9, 0x25, 0xC0, 0x05, + 0xC7, 0xD0, 0x5E, 0xD9, 0x95, 0xEF, 0x85, 0xD8, 0xFA, 0x43, 0xEC, 0x59, + 0x9E, 0xEF, 0xD5, 0x2E, 0x56, 0xD0, 0xF3, 0x3A, 0x33, 0x6A, 0x1F, 0x10, + 0x27, 0x33, 0xA3, 0x36, 0xA1, 0xF1, 0x02, 0xE1, 0x11, 0x36, 0x94, 0xB7, + 0x77, 0xCC, 0xE8, 0xCD, 0xA8, 0x7C, 0x40, 0x9C, 0xCE, 0x8C, 0xDA, 0x87, + 0xC4, 0x0B, 0x84, 0x44, 0xDA, 0x4B, 0x77, 0x7C, 0xCE, 0x8C, 0xDA, 0x87, + 0xC4, 0x09, 0xCC, 0xE8, 0xCD, 0xA8, 0x7C, 0x40, 0xB8, 0x44, 0x4D, 0xA4, + 0xB7, 0x77, 0xCC, 0xE8, 0xCD, 0xA8, 0x7C, 0x40, 0xAE, 0x87, 0x47, 0xD1, + 0xD1, 0x5C, 0x1B, 0x0E, 0x3D, 0xB7, 0x1F, 0x70, 0x88, 0x09, 0x5C, 0x12, + 0xDD, 0x7A, 0x27, 0xED, 0x96, 0xF7, 0x1C, 0x97, 0x2B, 0x6E, 0x9A, 0x25, + 0x17, 0x25, 0x09, 0xB6, 0xA2, 0xC4, 0x73, 0x07, 0x45, 0x6E, 0x78, 0x0A, + 0x2E, 0x67, 0x46, 0x6D, 0x43, 0xE2, 0x05, 0x1F, 0xA5, 0xDE, 0xC9, 0xFF, + 0x00, 0xD8, 0x17, 0x10, 0x9B, 0x49, 0x6E, 0xEF, 0x99, 0xD1, 0x9B, 0x50, + 0xF8, 0x81, 0x39, 0x9D, 0x19, 0xB5, 0x0F, 0x88, 0x17, 0x08, 0x89, 0xB4, + 0xA5, 0xBB, 0xBE, 0x67, 0x46, 0x6D, 0x43, 0xE2, 0x04, 0xE6, 0x74, 0x66, + 0xD4, 0x3E, 0x20, 0x5C, 0x22, 0x26, 0xD2, 0x5B, 0xBB, 0xE6, 0x74, 0x66, + 0xD4, 0x3E, 0x20, 0x4E, 0x67, 0x46, 0x6D, 0x43, 0xE2, 0x05, 0xC2, 0x22, + 0x6D, 0x25, 0xBB, 0xE8, 0x74, 0x74, 0x84, 0x62, 0x44, 0x28, 0xC5, 0xE4, + 0x67, 0xA9, 0xAF, 0x05, 0x56, 0x2D, 0x19, 0x23, 0x06, 0xAE, 0x56, 0x31, + 0x65, 0x7D, 0x16, 0x9E, 0x05, 0x6B, 0x49, 0xE8, 0x5F, 0x5B, 0x99, 0xF0, + 0xC7, 0x15, 0x93, 0xE9, 0xA7, 0xA9, 0x96, 0xEF, 0x1E, 0x09, 0x72, 0xB6, + 0xCE, 0xE6, 0x74, 0x66, 0xD4, 0x3E, 0x20, 0x4E, 0x67, 0x46, 0x6D, 0x43, + 0xE2, 0x05, 0xC2, 0x22, 0x6D, 0x29, 0x6E, 0xEF, 0x99, 0xD1, 0x9B, 0x50, + 0xF8, 0x81, 0x39, 0x9D, 0x19, 0xB5, 0x0F, 0x88, 0x17, 0x08, 0x89, 0xB4, + 0x96, 0xEE, 0xF9, 0x9D, 0x19, 0xB5, 0x0F, 0x88, 0x13, 0x99, 0xD1, 0x9B, + 0x50, 0xF8, 0x81, 0x70, 0x88, 0x9B, 0x49, 0x6E, 0xEF, 0x99, 0xD1, 0x9B, + 0x50, 0xF8, 0x81, 0x49, 0x0A, 0x8C, 0x91, 0x8D, 0x5F, 0x25, 0x15, 0xCF, + 0xAB, 0xA6, 0xCB, 0xC1, 0xA9, 0x70, 0x0B, 0xAE, 0xF4, 0x2F, 0xAA, 0xCC, + 0xF7, 0xC7, 0x04, 0xB9, 0x5B, 0x6C, 0x22, 0x51, 0xD4, 0x7C, 0x27, 0x59, + 0x8B, 0x1C, 0xB0, 0xF4, 0xD4, 0xE7, 0x80, 0xAC, 0xE6, 0x74, 0x66, 0xD4, + 0x3E, 0x20, 0x5A, 0x6F, 0x4C, 0xBA, 0xEC, 0x0F, 0x0F, 0xEA, 0xB9, 0xD4, + 0xB9, 0x2D, 0xDD, 0xF3, 0x3A, 0x33, 0x6A, 0x1F, 0x10, 0x27, 0x33, 0xA3, + 0x36, 0xA1, 0xF1, 0x02, 0xE1, 0x11, 0x36, 0x94, 0xB7, 0x77, 0xCC, 0xE8, + 0xCD, 0xA8, 0x7C, 0x40, 0x9C, 0xCE, 0x8C, 0xDA, 0x87, 0xC4, 0x0B, 0x84, + 0x44, 0xDA, 0x4B, 0x77, 0x7C, 0xCE, 0x8C, 0xDA, 0x87, 0xC4, 0x09, 0xCC, + 0xE8, 0xCD, 0xA8, 0x7C, 0x40, 0xB8, 0x44, 0x4D, 0xA4, 0xB7, 0xA0, 0x43, + 0xA2, 0xA4, 0xA2, 0xB6, 0xD4, 0x28, 0x8E, 0x7B, 0x7A, 0x2B, 0x6B, 0xC1, + 0x56, 0x3E, 0x42, 0x8E, 0x86, 0xE2, 0xD8, 0x93, 0x16, 0x5C, 0x3A, 0x41, + 0x88, 0x01, 0x51, 0x7A, 0x27, 0xEC, 0x61, 0xE2, 0x39, 0x73, 0xFE, 0x95, + 0x7B, 0x6A, 0x27, 0x75, 0xBC, 0x12, 0xE5, 0x6D, 0xD1, 0xF3, 0x3A, 0x33, + 0x6A, 0x1F, 0x10, 0x27, 0x33, 0xA3, 0x36, 0xA1, 0xF1, 0x02, 0xE1, 0x11, + 0x36, 0x94, 0xB7, 0x77, 0xCC, 0xE8, 0xCD, 0xA8, 0x7C, 0x40, 0x9C, 0xCE, + 0x8C, 0xDA, 0x87, 0xC4, 0x0B, 0x84, 0x44, 0xDA, 0x4B, 0x77, 0x7C, 0xCE, + 0x8C, 0xDA, 0x87, 0xC4, 0x09, 0xCC, 0xE8, 0xCD, 0xA8, 0x7C, 0x40, 0xB8, + 0x44, 0x4D, 0xA4, 0xB7, 0x77, 0xCC, 0xE8, 0xCD, 0xA8, 0x7C, 0x40, 0xA6, + 0x65, 0x13, 0x27, 0x11, 0xA1, 0xCC, 0x7B, 0xDC, 0xD3, 0xD0, 0x43, 0x81, + 0x05, 0x79, 0xF2, 0xF4, 0x3A, 0x07, 0xD8, 0xB2, 0x9D, 0xCF, 0xAA, 0x9B, + 0x4A, 0xDA, 0x07, 0x48, 0xD1, 0xAD, 0x71, 0x6B, 0xA6, 0x40, 0x20, 0xD4, + 0x41, 0x88, 0x33, 0x2A, 0x73, 0x3A, 0x33, 0x6A, 0x1F, 0x10, 0x2E, 0x4A, + 0x9B, 0xF6, 0xC4, 0xDF, 0x88, 0x56, 0x0A, 0xB7, 0x25, 0xBB, 0xBE, 0x67, + 0x46, 0x6D, 0x43, 0xE2, 0x04, 0xE6, 0x74, 0x66, 0xD4, 0x3E, 0x20, 0x5C, + 0x22, 0x26, 0xD2, 0x96, 0xEE, 0xF9, 0x9D, 0x19, 0xB5, 0x0F, 0x88, 0x13, + 0x99, 0xD1, 0x9B, 0x50, 0xF8, 0x81, 0x70, 0x88, 0x9B, 0x49, 0x6E, 0xEF, + 0x99, 0xD1, 0x9B, 0x50, 0xF8, 0x81, 0x39, 0x9D, 0x19, 0xB5, 0x0F, 0x88, + 0x17, 0x08, 0x89, 0xB4, 0x96, 0xF4, 0x21, 0x43, 0xCA, 0xB9, 0xA0, 0xB5, + 0xCF, 0x20, 0x8A, 0xC1, 0x0E, 0x19, 0xFC, 0x92, 0xE6, 0x96, 0xD3, 0x13, + 0x7B, 0xEC, 0xB2, 0xE5, 0x3A, 0xA4, 0x0F, 0x0D, 0xBC, 0x14, 0xCA, 0x6D, + 0x2B, 0x6D, 0x75, 0xCD, 0x2D, 0xA6, 0x26, 0xF7, 0xD9, 0x2E, 0x69, 0x6D, + 0x31, 0x37, 0xBE, 0xCB, 0x62, 0x89, 0xB4, 0x96, 0xD7, 0x5C, 0xD2, 0xDA, + 0x62, 0x6F, 0x7D, 0x92, 0xE6, 0x96, 0xD3, 0x13, 0x7B, 0xEC, 0xB6, 0x28, + 0x9B, 0x49, 0x6D, 0x64, 0x5A, 0x22, 0x59, 0x90, 0x9E, 0xF0, 0x62, 0x56, + 0xD6, 0x92, 0x33, 0xAC, 0xC9, 0xAE, 0xA5, 0x1B, 0xC3, 0x77, 0x05, 0x7C, + 0xC7, 0x57, 0x8B, 0xDC, 0x3C, 0x15, 0x93, 0x5D, 0x4A, 0x37, 0x86, 0xEE, + 0x0A, 0x4C, 0xCC, 0xC2, 0xE3, 0xE5, 0x04, 0xAF, 0x52, 0x83, 0xE1, 0xB7, + 0x82, 0xAC, 0x2E, 0xA8, 0xCF, 0x0C, 0x70, 0x54, 0x95, 0xEA, 0x50, 0x7C, + 0x36, 0xF0, 0x55, 0x85, 0xD5, 0x19, 0xE1, 0x8E, 0x0A, 0x47, 0x63, 0x2F, + 0x29, 0x79, 0xAC, 0x7F, 0x5F, 0x13, 0xBC, 0x78, 0xAB, 0x15, 0xF1, 0xFD, + 0x7C, 0x4E, 0xF1, 0xE2, 0xAC, 0x55, 0x95, 0x5A, 0xD7, 0x3A, 0xBB, 0x2D, + 0x26, 0xAE, 0x9A, 0x82, 0xA5, 0x46, 0xAA, 0xEA, 0xCC, 0xB3, 0xD8, 0xE8, + 0x8F, 0x95, 0x97, 0x6C, 0xAC, 0x76, 0xC2, 0x2C, 0xAE, 0xD8, 0x31, 0x03, + 0x0D, 0xAA, 0xCF, 0xE2, 0xCE, 0x45, 0x79, 0xAA, 0x1F, 0xD2, 0x96, 0x6E, + 0x3C, 0xAB, 0xA1, 0x7E, 0x5E, 0x53, 0xFE, 0x77, 0x9F, 0xC2, 0xEB, 0x3F, + 0xF6, 0xB3, 0x3D, 0x55, 0x74, 0x12, 0x0A, 0x0D, 0x68, 0x63, 0x89, 0x20, + 0x34, 0x92, 0x3A, 0x40, 0x0A, 0xDA, 0x8D, 0x55, 0xD5, 0x99, 0x6D, 0xE6, + 0xA2, 0x72, 0xCE, 0x88, 0x25, 0x23, 0xB1, 0x87, 0x97, 0x73, 0x9D, 0xFF, + 0x00, 0x28, 0x65, 0xA1, 0x9A, 0xC9, 0xAC, 0x91, 0x5F, 0xBD, 0x62, 0xCD, + 0xC4, 0x6B, 0xA5, 0xAC, 0xF2, 0xAD, 0x88, 0xFE, 0x70, 0xF7, 0x12, 0x05, + 0x55, 0xE6, 0x6E, 0x7A, 0xB1, 0x41, 0x84, 0xA6, 0x94, 0xEB, 0x70, 0x7B, + 0xE3, 0x8A, 0x85, 0x4D, 0x29, 0xD6, 0xE0, 0xF7, 0xC7, 0x15, 0x60, 0x7A, + 0x2D, 0x21, 0xD4, 0x26, 0x3C, 0x37, 0x70, 0x5E, 0x68, 0xBD, 0x2E, 0x90, + 0xEA, 0x13, 0x1E, 0x1B, 0xB8, 0x2F, 0x34, 0x50, 0x15, 0xC2, 0x1B, 0xDC, + 0x2B, 0x6B, 0x1C, 0x46, 0x90, 0x15, 0xAB, 0x68, 0xC7, 0x07, 0x48, 0xCB, + 0xB5, 0x8E, 0x04, 0xB5, 0x8E, 0x04, 0x73, 0x96, 0xC3, 0xA8, 0xDA, 0x3E, + 0xE2, 0x83, 0x59, 0x64, 0xD6, 0x05, 0x46, 0xB3, 0xD0, 0x81, 0xAE, 0x2D, + 0x2E, 0x0D, 0x25, 0xA3, 0xA4, 0xD5, 0x99, 0x6D, 0x21, 0x47, 0x96, 0x13, + 0x32, 0x85, 0xC2, 0xB7, 0x36, 0x1B, 0x41, 0x7D, 0xBA, 0x83, 0x4E, 0x7E, + 0x91, 0x52, 0xB4, 0x3D, 0xEE, 0xE4, 0x5D, 0x06, 0x65, 0x90, 0xA0, 0xB6, + 0x10, 0x6B, 0x81, 0x78, 0xFC, 0x26, 0xAF, 0xC5, 0xF8, 0x7D, 0xF5, 0x9A, + 0xFF, 0x00, 0x9A, 0xD0, 0x6B, 0x08, 0x23, 0xA4, 0x22, 0xC9, 0x9B, 0x7B, + 0x5C, 0xD9, 0x7B, 0x2E, 0x06, 0xCC, 0x10, 0x0D, 0x47, 0xA0, 0xD6, 0x56, + 0x32, 0x0D, 0x85, 0x05, 0xED, 0x99, 0x5E, 0xF8, 0x5D, 0x8F, 0xA4, 0x3E, + 0xC5, 0x99, 0xEE, 0xFD, 0x57, 0x1D, 0x41, 0x7B, 0x66, 0x57, 0xBE, 0x17, + 0x63, 0xE9, 0x0F, 0xB1, 0x66, 0x7B, 0xBF, 0x54, 0x1E, 0x7C, 0x88, 0x88, + 0x2B, 0x64, 0xD7, 0x55, 0x46, 0xBE, 0x9A, 0xAA, 0x4B, 0x26, 0xBA, 0xAA, + 0x35, 0x85, 0xB2, 0x31, 0x59, 0xCC, 0x79, 0x1E, 0x55, 0x9C, 0xE4, 0x43, + 0xCE, 0xFA, 0xFA, 0x59, 0xD3, 0xC9, 0xD7, 0xA7, 0xFF, 0x00, 0xF1, 0x5D, + 0x12, 0x3C, 0xB1, 0x99, 0x99, 0x2D, 0x1F, 0x89, 0xD0, 0x5C, 0x03, 0xF9, + 0x4C, 0xC4, 0xD9, 0xD1, 0x52, 0x0D, 0x5D, 0x97, 0x59, 0xB5, 0x64, 0xD9, + 0xD3, 0x56, 0x65, 0x42, 0x08, 0x35, 0x11, 0x52, 0xD9, 0xCC, 0xBD, 0xEE, + 0x7C, 0x68, 0x90, 0xE6, 0x58, 0xD9, 0x67, 0x32, 0xA6, 0x32, 0xD8, 0x39, + 0xBD, 0xCD, 0xB3, 0xD2, 0x30, 0xFD, 0xD6, 0x2C, 0xFB, 0xDA, 0xF9, 0xB7, + 0x39, 0x8E, 0x0E, 0x16, 0x5B, 0x9C, 0x77, 0x42, 0x0C, 0x65, 0xBA, 0xF4, + 0x4F, 0xDB, 0x2D, 0xEE, 0x39, 0x69, 0x56, 0xEB, 0xD1, 0x3F, 0x6C, 0xB7, + 0xB8, 0xE4, 0x1B, 0xDF, 0x4B, 0xBD, 0x93, 0xFF, 0x00, 0xB0, 0x2E, 0x21, + 0x76, 0xFE, 0x97, 0x7B, 0x27, 0xFF, 0x00, 0x60, 0x5C, 0x42, 0x0A, 0xB5, + 0xAE, 0x71, 0xA9, 0xA0, 0x93, 0xA0, 0x04, 0x2D, 0x22, 0xBA, 0xC1, 0x15, + 0x74, 0xE6, 0xE8, 0x59, 0x54, 0x7B, 0xAA, 0x7C, 0x60, 0x1E, 0x18, 0xE7, + 0x42, 0x21, 0xA4, 0xB8, 0x37, 0x3E, 0x6F, 0x79, 0x59, 0x70, 0xA2, 0x43, + 0x7D, 0x89, 0x69, 0xA8, 0xED, 0x25, 0xF0, 0xDC, 0xD8, 0x91, 0x2D, 0x5A, + 0x0D, 0xCE, 0x1C, 0xD1, 0x5F, 0xBF, 0xA0, 0xE2, 0x83, 0x55, 0x64, 0xE7, + 0xCC, 0x73, 0x67, 0x42, 0xD7, 0x34, 0x02, 0xE6, 0x90, 0x0F, 0x45, 0x63, + 0xA5, 0x6E, 0x04, 0xEC, 0xBB, 0xEC, 0xCC, 0xC5, 0x2D, 0xB5, 0x12, 0x23, + 0x61, 0xC4, 0x87, 0xEF, 0xB0, 0x1D, 0x6B, 0xA3, 0x45, 0x56, 0x47, 0xF4, + 0xA0, 0x6F, 0x38, 0x0F, 0xFF, 0x00, 0x96, 0x76, 0x11, 0xB5, 0x15, 0xA5, + 0xB6, 0x9E, 0x1E, 0x09, 0xAF, 0xF3, 0x7E, 0xC0, 0x7E, 0xFF, 0x00, 0xC2, + 0x0D, 0x69, 0x04, 0x74, 0x8A, 0x91, 0x66, 0xD2, 0x0F, 0x71, 0x10, 0x98, + 0x5F, 0xCA, 0x06, 0xD7, 0x53, 0xCC, 0x56, 0xBD, 0xCE, 0xAF, 0x4D, 0x44, + 0xD4, 0x3F, 0x6F, 0xE5, 0x61, 0x20, 0xE9, 0x3D, 0x0B, 0xEB, 0x73, 0x3E, + 0x18, 0xE2, 0xB2, 0x7D, 0x34, 0xF5, 0x32, 0xDD, 0xE3, 0xC1, 0x63, 0x7A, + 0x17, 0xD6, 0xE6, 0x7C, 0x31, 0xC5, 0x64, 0xFA, 0x69, 0xEA, 0x65, 0xBB, + 0xC7, 0x82, 0x0E, 0x49, 0x56, 0xA2, 0x41, 0x20, 0x1A, 0x87, 0x4A, 0xA2, + 0xCF, 0xA3, 0xA2, 0xC3, 0x64, 0x19, 0x88, 0x71, 0x5C, 0x1A, 0xD8, 0xA5, + 0xAC, 0x35, 0xE8, 0xCF, 0x9F, 0xFA, 0x35, 0x1F, 0xE9, 0x06, 0x0D, 0x93, + 0x55, 0x75, 0x1A, 0xBF, 0x84, 0x0D, 0x26, 0xAA, 0x81, 0x35, 0xE6, 0x1F, + 0xBA, 0xDB, 0x98, 0xD0, 0xB9, 0x18, 0x52, 0xED, 0x8A, 0xCF, 0xC0, 0x23, + 0x43, 0x06, 0xD0, 0xAA, 0xB2, 0xD6, 0xE7, 0xAF, 0x41, 0x75, 0x79, 0xD4, + 0x70, 0x1F, 0xC8, 0x42, 0x85, 0x0A, 0xDC, 0x13, 0x10, 0x72, 0x84, 0x8E, + 0x50, 0x55, 0x53, 0x83, 0x45, 0x56, 0x81, 0xA8, 0x1C, 0xC7, 0xDE, 0x83, + 0x5B, 0xC9, 0xBC, 0xB8, 0xB4, 0x31, 0xD6, 0x87, 0x48, 0xAB, 0x3A, 0xB4, + 0x82, 0x0D, 0x44, 0x54, 0x56, 0xE5, 0xAF, 0x60, 0xE5, 0x07, 0x2B, 0x5B, + 0xCC, 0x00, 0xD0, 0xD3, 0x1D, 0xB5, 0x8F, 0xC6, 0x0D, 0x56, 0xFA, 0x3A, + 0x33, 0xAC, 0x1A, 0x49, 0xED, 0x89, 0x1D, 0x84, 0x38, 0x13, 0xC9, 0xB4, + 0x3A, 0xA7, 0x5A, 0xA8, 0x8C, 0xD5, 0x5A, 0xF7, 0xA0, 0xC4, 0x5D, 0x77, + 0xA1, 0x7D, 0x56, 0x67, 0xBE, 0x38, 0x2E, 0x45, 0x75, 0xDE, 0x85, 0xF5, + 0x59, 0x9E, 0xF8, 0xE0, 0x83, 0x0F, 0xD3, 0x2E, 0xBB, 0x03, 0xC3, 0xFA, + 0xAE, 0x75, 0x74, 0x5E, 0x99, 0x75, 0xD8, 0x1E, 0x1F, 0xD5, 0x73, 0xA8, + 0x2E, 0xE4, 0xDF, 0x66, 0xD5, 0x87, 0x59, 0xD3, 0x56, 0x64, 0x2C, 0x70, + 0xAA, 0xB6, 0x91, 0x6B, 0xA3, 0x37, 0x4A, 0xCE, 0x8F, 0x32, 0xCB, 0x30, + 0x18, 0xD7, 0x3A, 0xB1, 0x0D, 0x80, 0xB8, 0x3F, 0xF0, 0x8D, 0x35, 0xB5, + 0x65, 0x72, 0xAD, 0x33, 0x0C, 0x89, 0x16, 0x2B, 0x59, 0xFF, 0x00, 0x50, + 0xC7, 0x10, 0x23, 0x07, 0xB5, 0xD9, 0xF3, 0x90, 0x3A, 0x5B, 0xFD, 0x94, + 0x1A, 0x72, 0xC7, 0x02, 0x01, 0x69, 0x04, 0xF4, 0x02, 0x10, 0xC3, 0x7B, + 0x7F, 0x33, 0x1C, 0x3F, 0x90, 0xB6, 0xB2, 0xB1, 0x79, 0x28, 0xD0, 0xB9, + 0xD4, 0x76, 0x3B, 0xFE, 0xA6, 0x1B, 0x99, 0xFF, 0x00, 0x20, 0x75, 0x90, + 0x0E, 0x73, 0x58, 0x39, 0x87, 0xFF, 0x00, 0xBD, 0xCA, 0x17, 0x46, 0xE4, + 0x23, 0x42, 0x88, 0xEC, 0xEC, 0xAC, 0x87, 0x8E, 0x70, 0xD8, 0x95, 0xB4, + 0x8A, 0x88, 0xA8, 0x74, 0x66, 0xAD, 0x06, 0xBA, 0xA3, 0x55, 0x75, 0x66, + 0x45, 0x97, 0x3C, 0x59, 0x0F, 0x93, 0x96, 0x85, 0x11, 0xB1, 0x19, 0x08, + 0x13, 0x6D, 0xBD, 0x0E, 0x71, 0xCE, 0x4E, 0x15, 0x0F, 0xE9, 0x62, 0x20, + 0xEE, 0x3D, 0x13, 0xF6, 0x30, 0xF1, 0x1C, 0xB9, 0xFF, 0x00, 0x4A, 0xBD, + 0xB5, 0x13, 0xBA, 0xDE, 0x0B, 0xA0, 0xF4, 0x4F, 0xD8, 0xC3, 0xC4, 0x72, + 0xE7, 0xFD, 0x2A, 0xF6, 0xD4, 0x4E, 0xEB, 0x78, 0x20, 0xD3, 0xA0, 0x04, + 0xF4, 0x0A, 0xD1, 0x64, 0xD1, 0xEF, 0x64, 0x39, 0xB6, 0xBA, 0x21, 0x01, + 0xA1, 0xAE, 0xAE, 0xB3, 0x57, 0xFD, 0xA5, 0x06, 0x38, 0x6B, 0x9D, 0xD0, + 0x09, 0xFE, 0x02, 0xA9, 0x63, 0x81, 0x20, 0xB4, 0x82, 0x05, 0x7D, 0x0B, + 0x67, 0x27, 0x31, 0x2E, 0xC6, 0x43, 0xAB, 0xFE, 0x2A, 0xA2, 0x38, 0x90, + 0x62, 0x67, 0xFC, 0x87, 0xF6, 0xCC, 0x92, 0xD4, 0x8B, 0x00, 0x73, 0x5C, + 0x1D, 0x61, 0x90, 0xDC, 0x3F, 0xE4, 0x7D, 0xA7, 0x3A, 0xD3, 0x9B, 0x58, + 0xAE, 0xA1, 0xEE, 0x07, 0x37, 0xF2, 0x83, 0x57, 0x51, 0xAA, 0xBA, 0x8D, + 0x5D, 0x15, 0xAA, 0x2D, 0x8C, 0xD3, 0xA1, 0x43, 0x90, 0x32, 0xB0, 0xA2, + 0xB5, 0xF6, 0x22, 0xB5, 0xD5, 0xB4, 0xFE, 0x62, 0x43, 0xAB, 0x38, 0x59, + 0x0B, 0x5C, 0x80, 0xBD, 0x0E, 0x81, 0xF6, 0x2C, 0xA7, 0x73, 0xEA, 0xBC, + 0xF1, 0x7A, 0x1D, 0x03, 0xEC, 0x59, 0x4E, 0xE7, 0xD5, 0x07, 0x15, 0x4D, + 0xFB, 0x62, 0x6F, 0xC4, 0x2B, 0x05, 0x67, 0x53, 0x7E, 0xD8, 0x9B, 0xF1, + 0x0A, 0xC1, 0x40, 0x57, 0x06, 0x38, 0xB6, 0xD0, 0x69, 0x2D, 0xD3, 0x56, + 0x65, 0x6A, 0xDB, 0xC8, 0xC6, 0x6B, 0x25, 0xE5, 0x4D, 0xA1, 0x5B, 0x22, + 0x38, 0xBB, 0xFE, 0x70, 0xCA, 0x85, 0x63, 0xA4, 0x7B, 0xD0, 0x6A, 0x2A, + 0x22, 0xAA, 0xC7, 0x4A, 0x2C, 0xE9, 0xA8, 0x62, 0x2C, 0xBC, 0xBB, 0xA1, + 0x44, 0x86, 0xE6, 0xC3, 0x86, 0xE0, 0x6B, 0x7B, 0x5A, 0x7F, 0x3B, 0x8F, + 0xE5, 0x26, 0xBE, 0x82, 0x16, 0x0A, 0x02, 0x22, 0x20, 0xF4, 0xD9, 0x4E, + 0xA9, 0x03, 0xC3, 0x6F, 0x05, 0x32, 0x86, 0x53, 0xAA, 0x40, 0xF0, 0xDB, + 0xC1, 0x4C, 0xA4, 0x82, 0x2A, 0x67, 0xA9, 0x55, 0x01, 0x11, 0x10, 0x47, + 0x31, 0xD5, 0xE2, 0xF7, 0x0F, 0x05, 0x64, 0xD7, 0x52, 0x8D, 0xE1, 0xBB, + 0x82, 0xBE, 0x63, 0xAB, 0xC5, 0xEE, 0x1E, 0x0A, 0xC9, 0xAE, 0xA5, 0x1B, + 0xC3, 0x77, 0x04, 0x9E, 0xCD, 0x63, 0xE5, 0x04, 0xAF, 0x52, 0x83, 0xE1, + 0xB7, 0x82, 0xAC, 0x2E, 0xA8, 0xCF, 0x0C, 0x70, 0x54, 0x95, 0xEA, 0x50, + 0x7C, 0x36, 0xF0, 0x55, 0x85, 0xD5, 0x19, 0xE1, 0x8E, 0x09, 0x1D, 0x8C, + 0xBC, 0xA5, 0xE6, 0xB1, 0xFD, 0x7C, 0x4E, 0xF1, 0xE2, 0xAC, 0x57, 0xC7, + 0xF5, 0xF1, 0x3B, 0xC7, 0x8A, 0xB1, 0x56, 0x44, 0x44, 0x40, 0x44, 0x44, + 0x05, 0x34, 0xA7, 0x5B, 0x83, 0xDF, 0x1C, 0x54, 0x2A, 0x69, 0x4E, 0xB7, + 0x07, 0xBE, 0x38, 0xAB, 0x03, 0xD1, 0x69, 0x0E, 0xA1, 0x31, 0xE1, 0xBB, + 0x82, 0xF3, 0x45, 0xE9, 0x74, 0x87, 0x50, 0x98, 0xF0, 0xDD, 0xC1, 0x79, + 0xA2, 0x80, 0x88, 0x88, 0x08, 0x88, 0x80, 0x88, 0x88, 0x36, 0x14, 0x17, + 0xB6, 0x65, 0x7B, 0xE1, 0x76, 0x3E, 0x90, 0xFB, 0x16, 0x67, 0xBB, 0xF5, + 0x5C, 0x75, 0x05, 0xED, 0x99, 0x5E, 0xF8, 0x5D, 0x8F, 0xA4, 0x3E, 0xC5, + 0x99, 0xEE, 0xFD, 0x50, 0x79, 0xF2, 0x22, 0x20, 0x22, 0x22, 0x02, 0x22, + 0x20, 0x2D, 0xD7, 0xA2, 0x7E, 0xD9, 0x6F, 0x71, 0xCB, 0x4A, 0xB7, 0x5E, + 0x89, 0xFB, 0x65, 0xBD, 0xC7, 0x20, 0xDE, 0xFA, 0x5D, 0xEC, 0x9F, 0xFD, + 0x81, 0x71, 0x0B, 0xB7, 0xF4, 0xBB, 0xD9, 0x3F, 0xFB, 0x02, 0xE2, 0x10, + 0x11, 0x11, 0x01, 0x11, 0x10, 0x11, 0x11, 0x07, 0x49, 0xE8, 0x5F, 0x5B, + 0x99, 0xF0, 0xC7, 0x15, 0x93, 0xE9, 0xA7, 0xA9, 0x96, 0xEF, 0x1E, 0x0B, + 0x1B, 0xD0, 0xBE, 0xB7, 0x33, 0xE1, 0x8E, 0x2B, 0x27, 0xD3, 0x4F, 0x53, + 0x2D, 0xDE, 0x3C, 0x10, 0x72, 0x48, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, + 0x80, 0xBA, 0xEF, 0x42, 0xFA, 0xAC, 0xCF, 0x7C, 0x70, 0x5C, 0x8A, 0xEB, + 0xBD, 0x0B, 0xEA, 0xB3, 0x3D, 0xF1, 0xC1, 0x06, 0x1F, 0xA6, 0x5D, 0x76, + 0x07, 0x87, 0xF5, 0x5C, 0xEA, 0xE8, 0xBD, 0x32, 0xEB, 0xB0, 0x3C, 0x3F, + 0xAA, 0xE7, 0x50, 0x11, 0x11, 0x01, 0x11, 0x10, 0x11, 0x11, 0x07, 0x71, + 0xE8, 0x9F, 0xB1, 0x87, 0x88, 0xE5, 0xCF, 0xFA, 0x55, 0xED, 0xA8, 0x9D, + 0xD6, 0xF0, 0x5D, 0x07, 0xA2, 0x7E, 0xC6, 0x1E, 0x23, 0x97, 0x3F, 0xE9, + 0x57, 0xB6, 0xA2, 0x77, 0x5B, 0xC1, 0x06, 0x9D, 0x11, 0x10, 0x11, 0x11, + 0x01, 0x11, 0x10, 0x17, 0xA1, 0xD0, 0x3E, 0xC5, 0x94, 0xEE, 0x7D, 0x57, + 0x9E, 0x2F, 0x43, 0xA0, 0x7D, 0x8B, 0x29, 0xDC, 0xFA, 0xA0, 0xE2, 0xA9, + 0xBF, 0x6C, 0x4D, 0xF8, 0x85, 0x60, 0xAC, 0xEA, 0x6F, 0xDB, 0x13, 0x7E, + 0x21, 0x58, 0x28, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x83, 0xD3, + 0x65, 0x3A, 0xA4, 0x0F, 0x0D, 0xBC, 0x14, 0xCA, 0x19, 0x4E, 0xA9, 0x03, + 0xC3, 0x6F, 0x05, 0x32, 0x92, 0x08, 0x88, 0x80, 0x88, 0x88, 0x23, 0x98, + 0xEA, 0xF1, 0x7B, 0x87, 0x82, 0xB2, 0x6B, 0xA9, 0x46, 0xF0, 0xDD, 0xC1, + 0x5F, 0x31, 0xD5, 0xE2, 0xF7, 0x0F, 0x05, 0x64, 0xD7, 0x52, 0x8D, 0xE1, + 0xBB, 0x82, 0x4F, 0x66, 0xB1, 0xF2, 0x82, 0x57, 0xA9, 0x41, 0xF0, 0xDB, + 0xC1, 0x5D, 0x00, 0x57, 0x2D, 0x0C, 0x1E, 0xC0, 0xE0, 0xA1, 0x95, 0x98, + 0x80, 0x25, 0x20, 0x83, 0x1A, 0x18, 0x22, 0x1B, 0x6B, 0x05, 0xC3, 0x42, + 0xAD, 0x72, 0x3A, 0x65, 0xFE, 0x55, 0x22, 0x62, 0x9A, 0xCB, 0x19, 0xDA, + 0x7A, 0x21, 0x34, 0x1D, 0x1A, 0x49, 0x26, 0x52, 0x19, 0x27, 0xF9, 0x4B, + 0x8E, 0x8C, 0xD8, 0xE1, 0xF9, 0xA9, 0xED, 0x49, 0x69, 0x97, 0xF9, 0x52, + 0xD4, 0x96, 0x99, 0x7F, 0x95, 0x5B, 0xFD, 0x67, 0x5C, 0xB8, 0x41, 0x71, + 0xD1, 0x9B, 0x1C, 0x3F, 0x34, 0xB8, 0xE8, 0xCD, 0x8E, 0x1F, 0x9A, 0x9E, + 0xD4, 0x96, 0x99, 0x7F, 0x95, 0x2D, 0x49, 0x69, 0x97, 0xF9, 0x52, 0xFF, + 0x00, 0x4D, 0x72, 0xE1, 0x05, 0xC7, 0x46, 0x6C, 0x70, 0xFC, 0xD2, 0xE3, + 0xA3, 0x36, 0x38, 0x7E, 0x6A, 0x7B, 0x52, 0x5A, 0x65, 0xFE, 0x54, 0xB5, + 0x25, 0xA6, 0x5F, 0xE5, 0x4B, 0xFD, 0x35, 0xCB, 0x84, 0x17, 0x1D, 0x19, + 0xB1, 0xC3, 0xF3, 0x46, 0xD0, 0x94, 0x73, 0x5C, 0x1C, 0xD9, 0x46, 0x02, + 0x0D, 0x60, 0x8A, 0xD4, 0xF6, 0xA4, 0xB4, 0xCB, 0xFC, 0xA9, 0x6A, 0x4B, + 0x4C, 0xBF, 0xCA, 0x97, 0xFA, 0x6B, 0x97, 0x09, 0xE2, 0x31, 0xB1, 0x18, + 0xE6, 0x3C, 0x56, 0xD7, 0x0A, 0x88, 0xD2, 0x16, 0x0D, 0xC7, 0x46, 0x6C, + 0x70, 0xFC, 0xD4, 0xF6, 0xA4, 0xB4, 0xCB, 0xFC, 0xA9, 0x6A, 0x4B, 0x4C, + 0xBF, 0xCA, 0x97, 0x06, 0xB9, 0x70, 0x82, 0xE3, 0xA3, 0x36, 0x38, 0x7E, + 0x69, 0x71, 0xD1, 0x9B, 0x1C, 0x3F, 0x35, 0x3D, 0xA9, 0x2D, 0x32, 0xFF, + 0x00, 0x2A, 0x5A, 0x92, 0xD3, 0x2F, 0xF2, 0xA5, 0xFE, 0x9A, 0xE5, 0xC2, + 0x0B, 0x8E, 0x8C, 0xD8, 0xE1, 0xF9, 0xA5, 0xC7, 0x46, 0x6C, 0x70, 0xFC, + 0xD4, 0xF6, 0xA4, 0xB4, 0xCB, 0xFC, 0xA9, 0x6A, 0x4B, 0x4C, 0xBF, 0xCA, + 0x97, 0xFA, 0x6B, 0x97, 0x08, 0x2E, 0x3A, 0x33, 0x63, 0x87, 0xE6, 0x97, + 0x1D, 0x19, 0xB1, 0xC3, 0xF3, 0x53, 0xDA, 0x92, 0xD3, 0x2F, 0xF2, 0xA5, + 0xA9, 0x2D, 0x32, 0xFF, 0x00, 0x2A, 0x5F, 0xE9, 0xAE, 0x5C, 0x22, 0x85, + 0x44, 0x48, 0x40, 0x8A, 0xD8, 0x90, 0xA5, 0x98, 0xC7, 0xB4, 0xD6, 0x08, + 0xAF, 0x32, 0xCA, 0x8F, 0x02, 0x1C, 0xC4, 0x27, 0x42, 0x8C, 0xD0, 0xF6, + 0x3B, 0xA4, 0x1F, 0x7A, 0x8A, 0xD4, 0x96, 0x99, 0x7F, 0x95, 0x2D, 0x49, + 0x69, 0x97, 0xF9, 0x52, 0xE0, 0xD7, 0x2E, 0x10, 0x5C, 0x74, 0x66, 0xC7, + 0x0F, 0xCD, 0x2E, 0x3A, 0x33, 0x63, 0x87, 0xE6, 0xA7, 0xB5, 0x25, 0xA6, + 0x5F, 0xE5, 0x4B, 0x52, 0x5A, 0x65, 0xFE, 0x54, 0xBF, 0xD3, 0x5C, 0xB8, + 0x41, 0x71, 0xD1, 0x9B, 0x1C, 0x3F, 0x34, 0xB8, 0xE8, 0xCD, 0x8E, 0x1F, + 0x9A, 0x9E, 0xD4, 0x96, 0x99, 0x7F, 0x95, 0x2D, 0x49, 0x69, 0x97, 0xF9, + 0x52, 0xFF, 0x00, 0x4D, 0x72, 0xE1, 0x05, 0xC7, 0x46, 0x6C, 0x70, 0xFC, + 0xD2, 0xE3, 0xA3, 0x36, 0x38, 0x7E, 0x6A, 0x7B, 0x52, 0x5A, 0x65, 0xFE, + 0x54, 0xB5, 0x25, 0xA6, 0x5F, 0xE5, 0x4B, 0xFD, 0x35, 0xCB, 0x84, 0x17, + 0x1D, 0x19, 0xB1, 0xC3, 0xF3, 0x52, 0x4B, 0xD1, 0x72, 0x52, 0xB1, 0x44, + 0x59, 0x79, 0x76, 0x43, 0x78, 0x15, 0x56, 0x2B, 0x57, 0xDA, 0x92, 0xD3, + 0x2F, 0xF2, 0xA5, 0xA9, 0x2D, 0x32, 0xFF, 0x00, 0x2A, 0x5F, 0xE9, 0xAE, + 0x5C, 0x2F, 0x99, 0x95, 0x83, 0x37, 0x0F, 0x93, 0x98, 0x86, 0x22, 0x32, + 0xBA, 0xEA, 0x3A, 0x56, 0x2D, 0xC7, 0x46, 0x6C, 0x70, 0xFC, 0xD4, 0xF6, + 0xA4, 0xB4, 0xCB, 0xFC, 0xA9, 0x6A, 0x4B, 0x4C, 0xBF, 0xCA, 0x97, 0x1C, + 0x9A, 0xE5, 0xC2, 0x0B, 0x8E, 0x8C, 0xD8, 0xE1, 0xF9, 0xA5, 0xC7, 0x46, + 0x6C, 0x70, 0xFC, 0xD4, 0xF6, 0xA4, 0xB4, 0xCB, 0xFC, 0xA9, 0x6A, 0x4B, + 0x4C, 0xBF, 0xCA, 0x97, 0xFA, 0x6B, 0x97, 0x08, 0x2E, 0x3A, 0x33, 0x63, + 0x87, 0xE6, 0x97, 0x1D, 0x19, 0xB1, 0xC3, 0xF3, 0x53, 0xDA, 0x92, 0xD3, + 0x2F, 0xF2, 0xA5, 0xA9, 0x2D, 0x32, 0xFF, 0x00, 0x2A, 0x5F, 0xE9, 0xAE, + 0x5C, 0x20, 0xB8, 0xE8, 0xCD, 0x8E, 0x1F, 0x9A, 0x5C, 0x74, 0x66, 0xC7, + 0x0F, 0xCD, 0x4F, 0x6A, 0x4B, 0x4C, 0xBF, 0xCA, 0x96, 0xA4, 0xB4, 0xCB, + 0xFC, 0xA9, 0x7F, 0xA6, 0xB9, 0x70, 0xA4, 0xAD, 0x1F, 0x29, 0x26, 0xF7, + 0x3A, 0x5A, 0x03, 0x61, 0xB9, 0xC2, 0xA2, 0x47, 0xBD, 0x5D, 0x35, 0x23, + 0x2D, 0x38, 0x1A, 0x26, 0x61, 0x36, 0x20, 0x6F, 0x45, 0x7E, 0xE5, 0x4B, + 0x52, 0x5A, 0x65, 0xFE, 0x54, 0xB5, 0x25, 0xA6, 0x5F, 0xE5, 0x4B, 0x83, + 0x5C, 0xB8, 0x41, 0x71, 0xD1, 0x9B, 0x1C, 0x3F, 0x34, 0xB8, 0xE8, 0xCD, + 0x8E, 0x1F, 0x9A, 0x9E, 0xD4, 0x96, 0x99, 0x7F, 0x95, 0x2D, 0x49, 0x69, + 0x97, 0xF9, 0x52, 0xFF, 0x00, 0x4D, 0x72, 0xE1, 0x05, 0xC7, 0x46, 0x6C, + 0x70, 0xFC, 0xD2, 0xE3, 0xA3, 0x36, 0x38, 0x7E, 0x6A, 0x7B, 0x52, 0x5A, + 0x65, 0xFE, 0x54, 0xB5, 0x25, 0xA6, 0x5F, 0xE5, 0x4B, 0xFD, 0x35, 0xCB, + 0x84, 0x17, 0x1D, 0x19, 0xB1, 0xC3, 0xF3, 0x4B, 0x8E, 0x8C, 0xD8, 0xE1, + 0xF9, 0xA9, 0xED, 0x49, 0x69, 0x97, 0xF9, 0x52, 0xD4, 0x96, 0x99, 0x7F, + 0x95, 0x2F, 0xF4, 0xD7, 0x2E, 0x10, 0x5C, 0x74, 0x66, 0xC7, 0x0F, 0xCD, + 0x64, 0x4A, 0xC9, 0x4B, 0xC9, 0x87, 0x09, 0x68, 0x4D, 0x86, 0x1D, 0x9C, + 0x81, 0xEF, 0x54, 0xB5, 0x25, 0xA6, 0x5F, 0xE5, 0x4B, 0x52, 0x5A, 0x65, + 0xFE, 0x54, 0xB8, 0xE4, 0xD7, 0x2E, 0x14, 0x9A, 0xA3, 0xA5, 0x27, 0x1E, + 0x1F, 0x33, 0x01, 0xB1, 0x1C, 0x05, 0x40, 0x9A, 0xF3, 0x05, 0x0D, 0xC7, + 0x46, 0x6C, 0x70, 0xFC, 0xD4, 0xF6, 0xA4, 0xB4, 0xCB, 0xFC, 0xA9, 0x6A, + 0x4B, 0x4C, 0xBF, 0xCA, 0x97, 0x1C, 0x9A, 0xE5, 0xC2, 0x0B, 0x8E, 0x8C, + 0xD8, 0xE1, 0xF9, 0xA5, 0xC7, 0x46, 0x6C, 0x70, 0xFC, 0xD4, 0xF6, 0xA4, + 0xB4, 0xCB, 0xFC, 0xA9, 0x6A, 0x4B, 0x4C, 0xBF, 0xCA, 0x97, 0xFA, 0x6B, + 0x97, 0x08, 0x2E, 0x3A, 0x33, 0x63, 0x87, 0xE6, 0x97, 0x1D, 0x19, 0xB1, + 0xC3, 0xF3, 0x53, 0xDA, 0x92, 0xD3, 0x2F, 0xF2, 0xA5, 0xA9, 0x2D, 0x32, + 0xFF, 0x00, 0x2A, 0x5F, 0xE9, 0xAE, 0x5C, 0x20, 0xB8, 0xE8, 0xCD, 0x8E, + 0x1F, 0x9A, 0x5C, 0x74, 0x66, 0xC7, 0x0F, 0xCD, 0x4F, 0x6A, 0x4B, 0x4C, + 0xBF, 0xCA, 0x96, 0xA4, 0xB4, 0xCB, 0xFC, 0xA9, 0x7F, 0xA6, 0xB9, 0x70, + 0xBE, 0x5A, 0x5A, 0x0C, 0xA4, 0x2E, 0x4E, 0x5E, 0x18, 0x86, 0xCA, 0xEB, + 0xA8, 0x69, 0x50, 0xCC, 0x51, 0x72, 0x53, 0x51, 0x4C, 0x58, 0xF2, 0xEC, + 0x88, 0xF3, 0xD2, 0x4D, 0x6A, 0xFB, 0x52, 0x5A, 0x65, 0xFE, 0x54, 0xB5, + 0x25, 0xA6, 0x5F, 0xE5, 0x4B, 0x83, 0x5C, 0xB8, 0x41, 0x71, 0xD1, 0x9B, + 0x1C, 0x3F, 0x34, 0xB8, 0xE8, 0xCD, 0x8E, 0x1F, 0x9A, 0x9E, 0xD4, 0x96, + 0x99, 0x7F, 0x95, 0x2D, 0x49, 0x69, 0x97, 0xF9, 0x52, 0xFF, 0x00, 0x4D, + 0x72, 0xE1, 0x05, 0xC7, 0x46, 0x6C, 0x70, 0xFC, 0xD2, 0xE3, 0xA3, 0x36, + 0x38, 0x7E, 0x6A, 0x7B, 0x52, 0x5A, 0x65, 0xFE, 0x54, 0xB5, 0x25, 0xA6, + 0x5F, 0xE5, 0x4B, 0xFD, 0x35, 0xCB, 0x84, 0x17, 0x1D, 0x19, 0xB1, 0xC3, + 0xF3, 0x4B, 0x8E, 0x8C, 0xD8, 0xE1, 0xF9, 0xA9, 0xED, 0x49, 0x69, 0x97, + 0xF9, 0x52, 0xD4, 0x96, 0x99, 0x7F, 0x95, 0x2F, 0xF4, 0xD7, 0x2E, 0x10, + 0x5C, 0x74, 0x66, 0xC7, 0x0F, 0xCD, 0x66, 0x41, 0x83, 0x0E, 0x5E, 0x13, + 0x61, 0x41, 0x68, 0x6B, 0x1B, 0x98, 0x01, 0xEE, 0x51, 0x5A, 0x92, 0xD3, + 0x2F, 0xF2, 0xA5, 0xA9, 0x2D, 0x32, 0xFF, 0x00, 0x2A, 0x5C, 0x1A, 0xE5, + 0xC2, 0x28, 0xB4, 0x3D, 0x1F, 0x1A, 0x23, 0xA2, 0x45, 0x95, 0x63, 0x9E, + 0xE3, 0x59, 0x26, 0xBC, 0xE5, 0x5B, 0x71, 0xD1, 0x9B, 0x1C, 0x3F, 0x35, + 0x3D, 0xA9, 0x2D, 0x32, 0xFF, 0x00, 0x2A, 0x5A, 0x92, 0xD3, 0x2F, 0xF2, + 0xA5, 0xFE, 0x9A, 0xE5, 0xC2, 0x0B, 0x8E, 0x8C, 0xD8, 0xE1, 0xF9, 0xA5, + 0xC7, 0x46, 0x6C, 0x70, 0xFC, 0xD4, 0xF6, 0xA4, 0xB4, 0xCB, 0xFC, 0xA9, + 0x6A, 0x4B, 0x4C, 0xBF, 0xCA, 0x97, 0xFA, 0x6B, 0x97, 0x08, 0x2E, 0x3A, + 0x33, 0x63, 0x87, 0xE6, 0x97, 0x1D, 0x19, 0xB1, 0xC3, 0xF3, 0x53, 0xDA, + 0x92, 0xD3, 0x2F, 0xF2, 0xA5, 0xA9, 0x2D, 0x32, 0xFF, 0x00, 0x2A, 0x5F, + 0xE9, 0xAE, 0x5C, 0x20, 0xB8, 0xE8, 0xCD, 0x8E, 0x1F, 0x9A, 0x5C, 0x74, + 0x66, 0xC7, 0x0F, 0xCD, 0x4F, 0x6A, 0x4B, 0x4C, 0xBF, 0xCA, 0x96, 0xA4, + 0xB4, 0xCB, 0xFC, 0xA9, 0x7F, 0xA6, 0xB9, 0x70, 0x9D, 0x8D, 0x0C, 0x63, + 0x58, 0xD1, 0x53, 0x5A, 0x2A, 0x03, 0xF6, 0x57, 0x2C, 0x6B, 0x52, 0x5A, + 0x65, 0xFE, 0x54, 0xB5, 0x25, 0xA6, 0x5F, 0xE5, 0x4B, 0x83, 0x59, 0xE1, + 0x92, 0x8B, 0x1A, 0xD4, 0x96, 0x99, 0x7F, 0x95, 0x2D, 0x49, 0x69, 0x97, + 0xF9, 0x52, 0xE0, 0xD6, 0x78, 0x64, 0xA2, 0xC6, 0xB5, 0x25, 0xA6, 0x5F, + 0xE5, 0x4B, 0x52, 0x5A, 0x65, 0xFE, 0x54, 0xB8, 0x35, 0x9E, 0x12, 0xCC, + 0x75, 0x78, 0xBD, 0xC3, 0xC1, 0x59, 0x35, 0xD4, 0xA3, 0x78, 0x6E, 0xE0, + 0xAC, 0xAE, 0x47, 0x4C, 0xBF, 0xCA, 0xA9, 0x35, 0x31, 0x00, 0xCA, 0x46, + 0x02, 0x34, 0x32, 0x4C, 0x37, 0x54, 0x03, 0x86, 0x85, 0x26, 0x62, 0x9A, + 0xC7, 0x19, 0xDA, 0x3A, 0x3F, 0xFF, 0xD9 +}; diff --git a/components/drivers/usb/cherryusb/demo/cherryusb_yuyv.h b/components/drivers/usb/cherryusb/demo/cherryusb_yuyv.h new file mode 100644 index 0000000000..096b835165 --- /dev/null +++ b/components/drivers/usb/cherryusb/demo/cherryusb_yuyv.h @@ -0,0 +1,514 @@ +const unsigned char cherryusb_yuyv[6144] = { + 0x68, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, + 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, + 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, + 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, + 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC6, 0x63, 0x69, 0x63, 0xC2, + 0x63, 0x69, 0x63, 0xBF, 0x63, 0x69, 0x63, 0xC8, 0x63, 0x6A, 0x64, 0xC4, + 0x64, 0x69, 0x63, 0xC5, 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, + 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, + 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, + 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x63, 0xC7, + 0x63, 0x68, 0x63, 0xC7, 0x63, 0x68, 0x68, 0xC7, 0x68, 0x68, 0x67, 0xC0, + 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, + 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, + 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, + 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, + 0x67, 0x6C, 0x83, 0xB5, 0x61, 0x70, 0x7E, 0xAA, 0x8C, 0x72, 0xD9, 0x9F, + 0x64, 0x70, 0x6A, 0xAF, 0xD2, 0x72, 0x6A, 0xA3, 0xC3, 0x6F, 0x67, 0xB2, + 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, + 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, + 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, + 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, 0x67, 0x68, 0x67, 0xC0, + 0x67, 0x68, 0x68, 0xC0, 0x68, 0x68, 0x67, 0xC4, 0x67, 0x6B, 0x67, 0xC2, + 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, + 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, + 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, + 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6C, 0x67, 0xC4, + 0x67, 0x6D, 0x67, 0xC2, 0x68, 0x6B, 0x67, 0xC0, 0x69, 0x6D, 0x67, 0xBA, + 0x67, 0x6D, 0x67, 0xBD, 0x67, 0x6C, 0x67, 0xC0, 0x67, 0x6B, 0x67, 0xC2, + 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, + 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, + 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, + 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x6B, 0x67, 0xC2, 0x67, 0x68, 0x67, 0xC4, + 0x78, 0x70, 0x76, 0xC0, 0x76, 0x70, 0x76, 0xBF, 0x76, 0x70, 0x76, 0xBF, + 0x76, 0x70, 0x76, 0xBF, 0x76, 0x70, 0x76, 0xBF, 0x76, 0x70, 0x76, 0xBF, + 0x76, 0x70, 0x76, 0xBF, 0x76, 0x70, 0x76, 0xBF, 0x76, 0x70, 0x76, 0xBF, + 0x76, 0x70, 0x76, 0xBF, 0x76, 0x70, 0x76, 0xBF, 0x76, 0x70, 0x76, 0xBF, + 0x76, 0x70, 0x76, 0xBF, 0x76, 0x70, 0x76, 0xBF, 0x76, 0x70, 0x76, 0xBF, + 0x76, 0x6D, 0x76, 0xBB, 0x76, 0x6F, 0x76, 0xBB, 0x76, 0x6F, 0x76, 0xBF, + 0x76, 0x6F, 0x76, 0xBF, 0x76, 0x6F, 0x76, 0xBF, 0x76, 0x6F, 0x76, 0xBF, + 0x76, 0x6F, 0x76, 0xBF, 0x76, 0x6F, 0x76, 0xBF, 0x76, 0x6F, 0x76, 0xBF, + 0x76, 0x6F, 0x76, 0xBF, 0x76, 0x6F, 0x76, 0xBF, 0x76, 0x6F, 0x76, 0xBF, + 0x76, 0x6F, 0x76, 0xBF, 0x76, 0x6F, 0x76, 0xBF, 0x76, 0x6F, 0x76, 0xBF, + 0x76, 0x6F, 0x76, 0xBF, 0x76, 0x6B, 0x78, 0xC0, 0xF7, 0x6D, 0x93, 0x7E, + 0x91, 0x60, 0x91, 0x7A, 0x91, 0x60, 0x91, 0x7A, 0x91, 0x60, 0x91, 0x7A, + 0x91, 0x60, 0x91, 0x7A, 0x91, 0x60, 0x91, 0x7A, 0x91, 0x60, 0x91, 0x7A, + 0x91, 0x60, 0x91, 0x7A, 0x91, 0x60, 0x91, 0x7A, 0x91, 0x60, 0x91, 0x7A, + 0x91, 0x60, 0x91, 0x7A, 0x91, 0x60, 0x91, 0x7A, 0x91, 0x60, 0x91, 0x7A, + 0x91, 0x60, 0x91, 0x7A, 0x91, 0x60, 0x91, 0x7A, 0x91, 0x68, 0x8D, 0x7B, + 0x7F, 0x96, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, + 0x83, 0x9D, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, + 0x83, 0x9D, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, + 0x83, 0x9D, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, + 0x83, 0x9D, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, 0x83, 0x9D, 0x83, 0x7A, + 0x85, 0x91, 0xF6, 0x7F, 0xFC, 0x71, 0x93, 0x77, 0x92, 0x61, 0x92, 0x6B, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x64, 0xCD, 0x6D, 0xBD, 0x6B, 0x96, 0x6E, + 0xA1, 0x6C, 0xCB, 0x6E, 0xCC, 0x66, 0x93, 0x6D, 0x92, 0x61, 0x92, 0x6B, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x68, 0x8E, 0x6D, 0x86, 0x98, 0x85, 0x6D, + 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, + 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, 0x85, 0x99, 0xC7, 0x6B, + 0xCE, 0x94, 0x98, 0x6E, 0xD0, 0x8F, 0xCC, 0x6F, 0x85, 0x9C, 0x85, 0x69, + 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, + 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, 0x86, 0x8F, 0xFA, 0x77, + 0xFD, 0x7D, 0xF5, 0x7B, 0xF6, 0x79, 0xF6, 0x7C, 0xF6, 0x79, 0xF6, 0x7C, + 0xF6, 0x79, 0xF6, 0x7C, 0xF6, 0x79, 0xF6, 0x7C, 0xF6, 0x79, 0xF6, 0x7C, + 0xF6, 0x79, 0xF6, 0x7C, 0xF7, 0x7C, 0xF4, 0x7B, 0xF6, 0x7D, 0xF7, 0x7B, + 0xF7, 0x7A, 0xF6, 0x7C, 0xF6, 0x79, 0xF6, 0x7C, 0xF6, 0x79, 0xF6, 0x7C, + 0xF6, 0x79, 0xF6, 0x7C, 0xF6, 0x79, 0xF6, 0x7C, 0xF6, 0x79, 0xF6, 0x7C, + 0xF4, 0x7A, 0xE2, 0x7B, 0xDF, 0x85, 0xF5, 0x7B, 0xF4, 0x86, 0xF4, 0x7B, + 0xF4, 0x86, 0xF4, 0x7B, 0xF4, 0x86, 0xF4, 0x7B, 0xF4, 0x86, 0xF4, 0x7B, + 0xF4, 0x86, 0xF4, 0x7B, 0xF4, 0x86, 0xF5, 0x7B, 0xF5, 0x85, 0xF6, 0x7B, + 0xF4, 0x85, 0xF5, 0x7B, 0xF5, 0x86, 0xF4, 0x7A, 0xF4, 0x86, 0xF4, 0x7B, + 0xF4, 0x86, 0xF4, 0x7B, 0xF4, 0x86, 0xF4, 0x7B, 0xF4, 0x86, 0xF4, 0x7B, + 0xF4, 0x86, 0xF4, 0x7B, 0xF6, 0x81, 0xFC, 0x7B, 0xFC, 0x7F, 0xF3, 0x7C, + 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, + 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, + 0x30, 0x80, 0x30, 0x7D, 0xEF, 0x81, 0x30, 0x7E, 0x30, 0x82, 0x30, 0x7D, + 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, + 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x30, 0x7D, 0xE8, 0x7D, + 0xE7, 0x82, 0x2D, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x7D, 0x30, 0x82, 0xEF, 0x7E, 0x33, 0x83, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, + 0xEF, 0x80, 0xFD, 0x7C, 0xFC, 0x7E, 0xF2, 0x7C, 0x30, 0x83, 0x30, 0x7F, + 0x30, 0x83, 0x30, 0x80, 0x62, 0x83, 0x39, 0x80, 0x87, 0x83, 0x9A, 0x80, + 0x6D, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x7F, 0x30, 0x7D, + 0xEC, 0x81, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x29, 0x83, 0x94, 0x80, 0x31, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x7E, 0xE8, 0x7D, 0xE7, 0x83, 0x2C, 0x7E, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x40, 0x83, 0x92, 0x80, + 0x22, 0x83, 0x30, 0x80, 0x83, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x82, 0xEF, 0x7E, 0x33, 0x85, 0x30, 0x7E, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x3F, 0x83, 0x8B, 0x80, 0x36, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x7F, 0xEF, 0x80, 0xFD, 0x7C, + 0xFC, 0x7E, 0xF2, 0x7C, 0x30, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, + 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, + 0x31, 0x82, 0x31, 0x7F, 0x30, 0x7F, 0x30, 0x7D, 0xEC, 0x81, 0x30, 0x7D, + 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, + 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, + 0x2F, 0x7E, 0xE8, 0x7E, 0xE7, 0x83, 0x2C, 0x7E, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x82, 0xEF, 0x7E, + 0x33, 0x85, 0x30, 0x7E, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x7F, 0xEF, 0x80, 0xFD, 0x7C, 0xFC, 0x7E, 0xF6, 0x7C, + 0xEF, 0x7F, 0xEF, 0x7E, 0xEF, 0x81, 0xEF, 0x7E, 0xEF, 0x81, 0xEF, 0x7E, + 0xEF, 0x81, 0xEF, 0x7E, 0xEF, 0x81, 0xEF, 0x7E, 0xEF, 0x81, 0xEF, 0x7E, + 0xEF, 0x7E, 0xEE, 0x7E, 0xFA, 0x7E, 0xEF, 0x7E, 0xEF, 0x81, 0xEF, 0x7E, + 0xEF, 0x81, 0xEF, 0x7E, 0xEF, 0x81, 0xEF, 0x7E, 0xEF, 0x81, 0xEF, 0x7E, + 0xEF, 0x81, 0xEF, 0x7E, 0xEF, 0x81, 0xEF, 0x7E, 0xEA, 0x7E, 0xE8, 0x7D, + 0xE7, 0x82, 0xEE, 0x7E, 0xEB, 0x83, 0xEB, 0x7E, 0xEB, 0x83, 0xEB, 0x7E, + 0xEB, 0x83, 0xEB, 0x7E, 0xEB, 0x83, 0xEB, 0x7E, 0xEB, 0x83, 0xEB, 0x7E, + 0xEB, 0x83, 0xEB, 0x7E, 0xEC, 0x82, 0xFD, 0x7E, 0xED, 0x83, 0xEB, 0x7E, + 0xEB, 0x83, 0xEB, 0x7E, 0xEB, 0x83, 0xEB, 0x7E, 0xEB, 0x83, 0xEB, 0x7E, + 0xEB, 0x83, 0xEB, 0x7E, 0xEB, 0x83, 0xEB, 0x7E, 0xEB, 0x83, 0xEB, 0x7E, + 0xFA, 0x81, 0xFD, 0x7C, 0xFC, 0x7E, 0xF2, 0x7C, 0x30, 0x83, 0x30, 0x7F, + 0x30, 0x83, 0x30, 0x80, 0x2B, 0x83, 0x5B, 0x80, 0x37, 0x83, 0x49, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x7F, 0x30, 0x7D, + 0xEC, 0x81, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x29, 0x83, 0x48, 0x80, 0x5D, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x7E, 0xE8, 0x7D, 0xE7, 0x83, 0x2C, 0x7E, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x2B, 0x83, 0x62, 0x80, + 0x64, 0x83, 0x60, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x82, 0xEF, 0x7E, 0x33, 0x85, 0x30, 0x7E, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x2F, 0x83, 0x55, 0x80, 0x33, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x7F, 0xEF, 0x80, 0xFD, 0x7C, + 0xFC, 0x7E, 0xF2, 0x7C, 0x30, 0x83, 0x30, 0x7F, 0x30, 0x83, 0x30, 0x80, + 0x31, 0x83, 0x2F, 0x80, 0x30, 0x83, 0x37, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x7F, 0x30, 0x7D, 0xEC, 0x81, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x35, 0x83, 0x2E, 0x80, + 0x28, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x7E, 0xE8, 0x7D, 0xE7, 0x83, 0x2C, 0x7E, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x2E, 0x80, 0x2A, 0x83, 0x32, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x82, 0xEF, 0x7E, + 0x33, 0x85, 0x30, 0x7E, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x39, 0x83, 0x27, 0x80, 0x2A, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x7F, 0xEF, 0x80, 0xFD, 0x7C, 0xFC, 0x7F, 0xF3, 0x7C, + 0xAC, 0x7D, 0xAC, 0x7D, 0xAC, 0x7C, 0xAC, 0x7D, 0xAC, 0x7C, 0xAC, 0x7D, + 0xAC, 0x7C, 0xAC, 0x7D, 0xAC, 0x7C, 0xAC, 0x7D, 0xAC, 0x7C, 0xAC, 0x7D, + 0xAC, 0x7D, 0xAB, 0x7D, 0xF9, 0x7E, 0xAC, 0x7E, 0xAC, 0x7C, 0xAC, 0x7D, + 0xAC, 0x7C, 0xAC, 0x7D, 0xAC, 0x7C, 0xAC, 0x7D, 0xAC, 0x7C, 0xAC, 0x7D, + 0xAC, 0x7C, 0xAC, 0x7D, 0xAC, 0x7C, 0xAC, 0x7D, 0xAA, 0x7D, 0xE8, 0x7D, + 0xE7, 0x82, 0xC9, 0x7E, 0xCB, 0x83, 0xCB, 0x7E, 0xCB, 0x83, 0xCB, 0x7E, + 0xCB, 0x83, 0xCB, 0x7E, 0xCB, 0x83, 0xCB, 0x7E, 0xCB, 0x83, 0xCB, 0x7E, + 0xCB, 0x83, 0xCB, 0x7E, 0xCC, 0x82, 0xF8, 0x7D, 0xCC, 0x84, 0xCB, 0x7E, + 0xCB, 0x83, 0xCB, 0x7E, 0xCB, 0x83, 0xCB, 0x7E, 0xCB, 0x83, 0xCB, 0x7E, + 0xCB, 0x83, 0xCB, 0x7E, 0xCB, 0x83, 0xCB, 0x7E, 0xCB, 0x83, 0xCB, 0x7E, + 0xF4, 0x81, 0xFD, 0x7C, 0xFC, 0x7E, 0xF2, 0x7C, 0x30, 0x82, 0x31, 0x7F, + 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x35, 0x7F, 0x34, 0x82, 0x2F, 0x7F, + 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, 0x30, 0x7F, 0x30, 0x7D, + 0xEC, 0x81, 0x30, 0x7D, 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, + 0x30, 0x82, 0x33, 0x7F, 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, + 0x31, 0x82, 0x31, 0x7F, 0x2F, 0x7E, 0xE8, 0x7E, 0xE7, 0x83, 0x2C, 0x7E, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x33, 0x80, + 0x31, 0x83, 0x33, 0x7F, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x82, 0xEF, 0x7E, 0x33, 0x85, 0x30, 0x7E, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x2E, 0x83, 0x2D, 0x7F, 0x2F, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x7F, 0xEF, 0x80, 0xFD, 0x7C, + 0xFC, 0x7E, 0xF2, 0x7C, 0x30, 0x83, 0x30, 0x7F, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x33, 0x80, 0xAB, 0x83, 0x35, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x7F, 0x30, 0x7D, 0xEC, 0x81, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x6D, 0x83, 0x4F, 0x80, + 0x31, 0x83, 0x31, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x7E, 0xE8, 0x7D, 0xE7, 0x83, 0x2C, 0x7E, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x33, 0x80, 0x77, 0x83, 0x34, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x82, 0xEF, 0x7E, + 0x33, 0x85, 0x30, 0x7E, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x63, 0x83, 0x9A, 0x80, 0x34, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x7F, 0xEF, 0x80, 0xFD, 0x7C, 0xFC, 0x7F, 0xF3, 0x7C, + 0x30, 0x81, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, + 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, + 0x30, 0x80, 0x30, 0x7D, 0xEB, 0x81, 0x30, 0x7E, 0x30, 0x82, 0x30, 0x7D, + 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, + 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x2F, 0x7E, 0xE8, 0x7E, + 0xE7, 0x82, 0x2D, 0x7D, 0x30, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, + 0x30, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, + 0x30, 0x85, 0x30, 0x7D, 0x30, 0x83, 0xEF, 0x7E, 0x33, 0x87, 0x30, 0x7D, + 0x30, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, + 0x30, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, + 0xEF, 0x80, 0xFD, 0x7C, 0xFC, 0x7F, 0xFC, 0x7C, 0xFC, 0x7E, 0xFC, 0x7E, + 0xFC, 0x7D, 0xFC, 0x7E, 0xFC, 0x7D, 0xFC, 0x7E, 0xFC, 0x7C, 0xFC, 0x7D, + 0xFC, 0x7D, 0xFC, 0x7E, 0xFC, 0x7D, 0xFC, 0x7E, 0xFC, 0x7F, 0xFE, 0x7E, + 0xFD, 0x80, 0xFB, 0x7D, 0xFC, 0x7D, 0xFC, 0x7E, 0xFC, 0x7D, 0xFC, 0x7E, + 0xFC, 0x7C, 0xFC, 0x7D, 0xFC, 0x7C, 0xFC, 0x7E, 0xFC, 0x7D, 0xFC, 0x7E, + 0xFC, 0x7D, 0xFC, 0x7E, 0xF8, 0x7E, 0xE8, 0x7E, 0xE7, 0x81, 0xFD, 0x7E, + 0xFB, 0x80, 0xFB, 0x7E, 0xFB, 0x80, 0xFB, 0x7E, 0xFB, 0x80, 0xFB, 0x7D, + 0xFB, 0x80, 0xFB, 0x7D, 0xFB, 0x80, 0xFB, 0x7E, 0xFB, 0x80, 0xFB, 0x7E, + 0xFB, 0x82, 0xF8, 0x7E, 0xFC, 0x7D, 0xFB, 0x7E, 0xFB, 0x80, 0xFB, 0x7E, + 0xFB, 0x80, 0xFB, 0x7E, 0xFB, 0x80, 0xFB, 0x7D, 0xFB, 0x80, 0xFB, 0x7D, + 0xFB, 0x80, 0xFB, 0x7E, 0xFB, 0x80, 0xFB, 0x7E, 0xFC, 0x81, 0xFD, 0x7C, + 0xFC, 0x7F, 0xF3, 0x7C, 0x30, 0x87, 0x30, 0x7D, 0x30, 0x88, 0x30, 0x7D, + 0x30, 0x88, 0x30, 0x7D, 0x37, 0x86, 0x36, 0x7F, 0x30, 0x88, 0x30, 0x7D, + 0x30, 0x88, 0x30, 0x7D, 0x30, 0x81, 0x30, 0x7D, 0xEB, 0x81, 0x30, 0x7E, + 0x30, 0x88, 0x30, 0x7D, 0x30, 0x88, 0x30, 0x7D, 0x31, 0x86, 0x2E, 0x7E, + 0x2B, 0x86, 0x30, 0x7D, 0x30, 0x88, 0x30, 0x7D, 0x30, 0x88, 0x30, 0x7D, + 0x2F, 0x7E, 0xE8, 0x7E, 0xE7, 0x82, 0x2D, 0x7D, 0x30, 0x85, 0x30, 0x7D, + 0x30, 0x85, 0x30, 0x7D, 0x2D, 0x82, 0x33, 0x7E, 0x32, 0x82, 0x2C, 0x7E, + 0x30, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, 0x30, 0x82, 0xEF, 0x7E, + 0x33, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, 0x30, 0x85, 0x30, 0x7D, + 0x31, 0x82, 0x3B, 0x7E, 0x37, 0x85, 0x30, 0x7F, 0x30, 0x85, 0x30, 0x7D, + 0x30, 0x85, 0x30, 0x7D, 0xEF, 0x80, 0xFD, 0x7C, 0xFC, 0x7E, 0xF2, 0x7C, + 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x35, 0x7D, + 0x2F, 0x83, 0x31, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, + 0x30, 0x84, 0x30, 0x7D, 0xEB, 0x81, 0x30, 0x7E, 0x30, 0x83, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x7D, 0x36, 0x83, 0x34, 0x7D, 0x33, 0x83, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x2F, 0x7E, 0xE8, 0x7E, + 0xE7, 0x82, 0x2D, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, + 0x30, 0x83, 0x2F, 0x7D, 0x36, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x7D, 0x30, 0x82, 0xEF, 0x7E, 0x33, 0x85, 0x30, 0x7D, + 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x2C, 0x83, 0x32, 0x7D, + 0x30, 0x83, 0x30, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x30, 0x84, 0x30, 0x7D, + 0xEF, 0x81, 0xFD, 0x7C, 0xFC, 0x7E, 0xF6, 0x7C, 0x99, 0x7D, 0x99, 0x7D, + 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, + 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x9C, 0x7D, + 0xF4, 0x80, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, + 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, 0x99, 0x7D, + 0x99, 0x7D, 0x99, 0x7D, 0x9B, 0x7E, 0xE8, 0x7E, 0xE7, 0x82, 0xB8, 0x7E, + 0xB6, 0x83, 0xB6, 0x7D, 0xB6, 0x83, 0xB6, 0x7D, 0xB6, 0x83, 0xB6, 0x7D, + 0xB6, 0x83, 0xB6, 0x7D, 0xB6, 0x83, 0xB6, 0x7D, 0xB6, 0x83, 0xB6, 0x7D, + 0xB6, 0x82, 0xF4, 0x7D, 0xB8, 0x85, 0xB6, 0x7D, 0xB6, 0x83, 0xB6, 0x7D, + 0xB6, 0x83, 0xB6, 0x7D, 0xB6, 0x83, 0xB6, 0x7D, 0xB6, 0x83, 0xB6, 0x7D, + 0xB6, 0x83, 0xB6, 0x7D, 0xB6, 0x84, 0xB6, 0x7D, 0xF8, 0x81, 0xFD, 0x7C, + 0xFB, 0x7F, 0xFE, 0x7D, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x7E, 0xE9, 0x80, 0xE7, 0x81, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFD, 0x80, 0xFC, 0x7E, 0xFB, 0x7F, 0xFE, 0x7D, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFD, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x7E, 0xE9, 0x80, + 0xE7, 0x81, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFD, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFD, 0x80, 0xFC, 0x7E, 0xFB, 0x7F, 0xFE, 0x7D, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x7E, 0xE9, 0x80, 0xE7, 0x81, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFD, 0x80, 0xFC, 0x7E, + 0xFC, 0x7E, 0xFA, 0x7C, 0xFC, 0x7F, 0xFD, 0x7E, 0xFD, 0x7E, 0xFD, 0x7D, + 0xFD, 0x7E, 0xFD, 0x7D, 0xFD, 0x7E, 0xFD, 0x7D, 0xFD, 0x7E, 0xFD, 0x7D, + 0xFD, 0x7E, 0xFD, 0x7D, 0xFD, 0x7E, 0xFD, 0x7D, 0xFD, 0x7E, 0xFD, 0x7D, + 0xFD, 0x7E, 0xFD, 0x7D, 0xFD, 0x7E, 0xFD, 0x7D, 0xFD, 0x7E, 0xFD, 0x7D, + 0xFD, 0x7E, 0xFD, 0x7D, 0xFD, 0x7E, 0xFD, 0x7D, 0xFD, 0x7E, 0xFD, 0x7D, + 0xF9, 0x7E, 0xE8, 0x7E, 0xE7, 0x82, 0xF9, 0x7E, 0xFD, 0x81, 0xFD, 0x7D, + 0xFD, 0x81, 0xFD, 0x7D, 0xFD, 0x81, 0xFD, 0x7D, 0xFD, 0x81, 0xFD, 0x7D, + 0xFD, 0x81, 0xFD, 0x7D, 0xFD, 0x81, 0xFD, 0x7D, 0xFD, 0x81, 0xFD, 0x7D, + 0xFD, 0x81, 0xFD, 0x7D, 0xFD, 0x81, 0xFD, 0x7D, 0xFD, 0x81, 0xFD, 0x7D, + 0xFD, 0x81, 0xFD, 0x7D, 0xFD, 0x81, 0xFD, 0x7D, 0xFD, 0x81, 0xFD, 0x7D, + 0xFD, 0x81, 0xFD, 0x7D, 0xF9, 0x80, 0xFD, 0x7C, 0xFC, 0x7F, 0xF3, 0x7C, + 0x30, 0x82, 0x30, 0x7D, 0x30, 0x84, 0x30, 0x7E, 0x30, 0x84, 0x30, 0x7E, + 0x30, 0x84, 0x30, 0x7E, 0x30, 0x84, 0x30, 0x7E, 0x30, 0x84, 0x30, 0x7E, + 0x30, 0x84, 0x30, 0x7E, 0x30, 0x84, 0x30, 0x7E, 0x30, 0x84, 0x30, 0x7E, + 0x30, 0x84, 0x30, 0x7E, 0x30, 0x84, 0x30, 0x7E, 0x30, 0x84, 0x30, 0x7E, + 0x30, 0x84, 0x30, 0x7E, 0x30, 0x84, 0x30, 0x7E, 0x2F, 0x7E, 0xE8, 0x7E, + 0xE7, 0x82, 0x2D, 0x7D, 0x30, 0x7F, 0x30, 0x7E, 0x30, 0x7F, 0x30, 0x7E, + 0x30, 0x7F, 0x30, 0x7E, 0x30, 0x7F, 0x30, 0x7E, 0x30, 0x7F, 0x30, 0x7E, + 0x30, 0x7F, 0x30, 0x7E, 0x30, 0x7F, 0x30, 0x7E, 0x30, 0x7F, 0x30, 0x7E, + 0x30, 0x7F, 0x30, 0x7E, 0x30, 0x7F, 0x30, 0x7E, 0x30, 0x7F, 0x30, 0x7E, + 0x30, 0x7F, 0x30, 0x7E, 0x30, 0x7F, 0x30, 0x7E, 0x30, 0x7F, 0x30, 0x7D, + 0xEF, 0x80, 0xFD, 0x7C, 0xFC, 0x7E, 0xF2, 0x7C, 0x30, 0x83, 0x30, 0x7F, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x7C, 0x80, 0x31, 0x83, 0x46, 0x80, 0x47, 0x83, 0x72, 0x80, + 0x5E, 0x83, 0x44, 0x80, 0x85, 0x83, 0x5F, 0x80, 0x38, 0x83, 0x34, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x7E, 0xE8, 0x7D, 0xE7, 0x83, 0x2C, 0x7E, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x58, 0x80, 0xB1, 0x83, 0x3E, 0x80, + 0x97, 0x83, 0x5F, 0x80, 0x41, 0x83, 0xA3, 0x80, 0x61, 0x83, 0x3E, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x7F, 0xEF, 0x80, 0xFD, 0x7C, + 0xFC, 0x7E, 0xF2, 0x7C, 0x30, 0x83, 0x30, 0x7F, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x7E, 0xE8, 0x7D, 0xE7, 0x83, 0x2C, 0x7E, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x7F, 0xEF, 0x80, 0xFD, 0x7C, 0xFC, 0x7E, 0xF2, 0x7C, + 0x30, 0x83, 0x30, 0x7F, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x7E, 0xE8, 0x7D, + 0xE7, 0x83, 0x2C, 0x7E, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x7F, + 0xEF, 0x80, 0xFD, 0x7C, 0xFC, 0x7F, 0xFB, 0x7C, 0xFB, 0x7E, 0xFB, 0x7E, + 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, + 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, + 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, + 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, 0xFB, 0x7E, + 0xFB, 0x7E, 0xFB, 0x7E, 0xF9, 0x7E, 0xE8, 0x7E, 0xE7, 0x82, 0xFB, 0x7D, + 0xFE, 0x81, 0xFE, 0x7E, 0xFE, 0x81, 0xFE, 0x7E, 0xFE, 0x81, 0xFE, 0x7E, + 0xFE, 0x81, 0xFE, 0x7E, 0xFE, 0x81, 0xFE, 0x7E, 0xFE, 0x81, 0xFE, 0x7E, + 0xFE, 0x81, 0xFE, 0x7E, 0xFE, 0x81, 0xFE, 0x7E, 0xFE, 0x81, 0xFE, 0x7E, + 0xFE, 0x81, 0xFE, 0x7E, 0xFE, 0x81, 0xFE, 0x7E, 0xFE, 0x81, 0xFE, 0x7E, + 0xFE, 0x81, 0xFE, 0x7E, 0xFE, 0x81, 0xFE, 0x7E, 0xFD, 0x81, 0xFC, 0x7E, + 0xFC, 0x80, 0x2E, 0x7C, 0x30, 0x82, 0x30, 0x80, 0x30, 0x82, 0x30, 0x80, + 0x30, 0x82, 0x30, 0x80, 0x30, 0x82, 0x30, 0x80, 0x30, 0x82, 0x59, 0x7F, + 0x30, 0x83, 0x30, 0x7D, 0x2D, 0x83, 0x31, 0x80, 0x36, 0x83, 0x37, 0x7D, + 0x30, 0x80, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x80, + 0x30, 0x82, 0x30, 0x80, 0x30, 0x82, 0x30, 0x80, 0x30, 0x82, 0x30, 0x80, + 0x30, 0x82, 0x30, 0x80, 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, + 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x30, 0x7F, + 0x2D, 0x83, 0x30, 0x7D, 0x30, 0x82, 0x30, 0x7D, 0x2F, 0x7F, 0x35, 0x7D, + 0x3B, 0x7F, 0x2F, 0x7D, 0x30, 0x83, 0x30, 0x7D, 0x52, 0x84, 0x31, 0x7F, + 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, 0x31, 0x82, 0x31, 0x7F, + 0x31, 0x82, 0x31, 0x7F, 0x2E, 0x80, 0xFC, 0x7D, 0xFC, 0x80, 0x2E, 0x7C, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x7E, 0x5A, 0x7F, 0x2F, 0x82, 0x2F, 0x7D, + 0x2A, 0x7E, 0x35, 0x7C, 0x2F, 0x7E, 0x37, 0x7D, 0x2F, 0x81, 0x2F, 0x7D, + 0x2F, 0x83, 0x31, 0x7D, 0x30, 0x83, 0x30, 0x80, 0x32, 0x83, 0x2A, 0x80, + 0x32, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x31, 0x83, 0x30, 0x80, + 0x34, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x35, 0x83, 0x34, 0x80, + 0x31, 0x83, 0x29, 0x80, 0x30, 0x83, 0x31, 0x80, 0x2C, 0x87, 0x32, 0x7D, + 0x32, 0x87, 0x32, 0x7D, 0x31, 0x85, 0x37, 0x7D, 0x39, 0x85, 0x2E, 0x7D, + 0x32, 0x86, 0x32, 0x7D, 0x52, 0x84, 0x30, 0x7F, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x2E, 0x80, 0xFC, 0x7D, 0xFC, 0x80, 0x2E, 0x7C, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x32, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x52, 0x83, 0x85, 0x80, 0xB0, 0x83, 0x56, 0x80, + 0x67, 0x83, 0x73, 0x80, 0x44, 0x83, 0x71, 0x80, 0x2F, 0x83, 0x8D, 0x80, + 0x54, 0x83, 0x6C, 0x80, 0x75, 0x83, 0x5E, 0x80, 0xB6, 0x83, 0x2F, 0x80, + 0x2C, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x2E, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x2E, 0x80, 0xFC, 0x7D, + 0xFC, 0x80, 0x2E, 0x7D, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x2D, 0x83, 0x30, 0x80, 0x30, 0x83, 0x2B, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x2E, 0x80, 0xFC, 0x7D, 0xFD, 0x81, 0x55, 0x7F, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, 0x58, 0x83, 0x58, 0x80, + 0x53, 0x80, 0xFC, 0x7E, 0xFC, 0x72, 0x91, 0x77, 0x91, 0x61, 0x91, 0x6B, + 0x91, 0x61, 0x91, 0x6B, 0x91, 0x61, 0x91, 0x6B, 0x91, 0x61, 0x91, 0x6B, + 0x91, 0x61, 0x91, 0x6B, 0x91, 0x61, 0x91, 0x6B, 0x91, 0x61, 0x91, 0x6B, + 0x91, 0x61, 0x91, 0x6B, 0x91, 0x61, 0x91, 0x6B, 0x91, 0x61, 0x91, 0x6B, + 0x91, 0x61, 0x91, 0x6B, 0x91, 0x61, 0x91, 0x6B, 0x91, 0x61, 0x91, 0x6B, + 0x91, 0x61, 0x91, 0x6B, 0x91, 0x68, 0x90, 0x70, 0x83, 0x95, 0x83, 0x6D, + 0x83, 0x9D, 0x83, 0x68, 0x83, 0x9D, 0x83, 0x68, 0x83, 0x9D, 0x83, 0x68, + 0x83, 0x9D, 0x83, 0x68, 0x83, 0x9D, 0x83, 0x68, 0x83, 0x9D, 0x83, 0x68, + 0x83, 0x9D, 0x83, 0x68, 0x83, 0x9D, 0x83, 0x68, 0x83, 0x9D, 0x83, 0x68, + 0x83, 0x9D, 0x83, 0x68, 0x83, 0x9D, 0x83, 0x68, 0x83, 0x9D, 0x83, 0x68, + 0x83, 0x9D, 0x83, 0x68, 0x83, 0x9D, 0x83, 0x68, 0x84, 0x8F, 0xFA, 0x77, + 0xFC, 0x72, 0x93, 0x77, 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, + 0x92, 0x68, 0x8E, 0x70, 0x86, 0x95, 0x85, 0x6D, 0x85, 0x9D, 0x85, 0x68, + 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, + 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, + 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, + 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, + 0x85, 0x9D, 0x85, 0x68, 0x86, 0x8F, 0xFA, 0x77, 0xFC, 0x71, 0x93, 0x77, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, 0x92, 0x62, 0x96, 0x6B, + 0xB1, 0x6B, 0xC5, 0x73, 0xA2, 0x69, 0x8E, 0x70, 0xD1, 0x69, 0xBD, 0x6E, + 0xC2, 0x6B, 0xAA, 0x73, 0xAF, 0x68, 0x91, 0x6B, 0xAB, 0x69, 0xCD, 0x70, + 0xA2, 0x68, 0xA8, 0x70, 0xAF, 0x67, 0x9F, 0x6E, 0x8F, 0x63, 0x92, 0x6B, + 0x92, 0x61, 0x92, 0x6B, 0x92, 0x61, 0x92, 0x6B, 0x92, 0x68, 0x8E, 0x6D, + 0x86, 0x98, 0x85, 0x6D, 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, + 0x86, 0x9D, 0x88, 0x6B, 0xC6, 0x93, 0xA9, 0x71, 0x84, 0x96, 0xC0, 0x6C, + 0xB3, 0x92, 0xB7, 0x70, 0xA3, 0x92, 0xB3, 0x73, 0x86, 0x96, 0xBF, 0x6D, + 0xC2, 0x93, 0xBB, 0x70, 0x7F, 0x97, 0x93, 0x6D, 0xAB, 0x98, 0xA7, 0x6B, + 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, 0x85, 0x9D, 0x85, 0x68, + 0x86, 0x8F, 0xFA, 0x77, 0xFC, 0x74, 0x93, 0x7A, 0x92, 0x64, 0x92, 0x69, + 0x92, 0x64, 0x92, 0x69, 0x92, 0x64, 0x92, 0x69, 0x92, 0x64, 0x92, 0x68, + 0x92, 0x64, 0x92, 0x68, 0x92, 0x64, 0x92, 0x69, 0x92, 0x64, 0x92, 0x68, + 0x92, 0x63, 0x92, 0x69, 0x92, 0x64, 0x92, 0x68, 0x92, 0x64, 0x92, 0x68, + 0x92, 0x64, 0x92, 0x69, 0x92, 0x64, 0x92, 0x69, 0x92, 0x64, 0x92, 0x69, + 0x92, 0x64, 0x92, 0x69, 0x92, 0x67, 0x8E, 0x6E, 0x86, 0x97, 0x85, 0x6E, + 0x85, 0x98, 0x85, 0x69, 0x85, 0x98, 0x85, 0x69, 0x85, 0x98, 0x85, 0x69, + 0x85, 0x99, 0x85, 0x68, 0x85, 0x99, 0x85, 0x69, 0x85, 0x99, 0x85, 0x68, + 0x85, 0x99, 0x85, 0x68, 0x85, 0x98, 0x85, 0x68, 0x86, 0x99, 0x85, 0x68, + 0x85, 0x98, 0x85, 0x69, 0x85, 0x98, 0x85, 0x69, 0x85, 0x98, 0x85, 0x69, + 0x85, 0x98, 0x85, 0x69, 0x85, 0x98, 0x85, 0x69, 0x85, 0x8C, 0xFB, 0x7A, + 0xFB, 0x78, 0xAE, 0x7C, 0xAE, 0x70, 0xAE, 0x75, 0xAE, 0x70, 0xAE, 0x75, + 0xAE, 0x70, 0xAE, 0x75, 0xAE, 0x70, 0xAE, 0x75, 0xAE, 0x70, 0xAE, 0x75, + 0xAE, 0x70, 0xAE, 0x75, 0xAE, 0x70, 0xAE, 0x75, 0xAE, 0x70, 0xAE, 0x75, + 0xAE, 0x70, 0xAE, 0x75, 0xAE, 0x70, 0xAE, 0x75, 0xAE, 0x70, 0xAE, 0x75, + 0xAE, 0x70, 0xAE, 0x75, 0xAE, 0x70, 0xAE, 0x75, 0xAE, 0x70, 0xAE, 0x75, + 0xAE, 0x71, 0xB3, 0x76, 0xAF, 0x8C, 0xA6, 0x76, 0xA5, 0x92, 0xA5, 0x75, + 0xA5, 0x92, 0xA5, 0x75, 0xA5, 0x92, 0xA5, 0x75, 0xA5, 0x92, 0xA5, 0x75, + 0xA5, 0x92, 0xA5, 0x75, 0xA5, 0x92, 0xA5, 0x75, 0xA5, 0x92, 0xA5, 0x75, + 0xA5, 0x92, 0xA5, 0x75, 0xA5, 0x92, 0xA5, 0x75, 0xA5, 0x92, 0xA5, 0x75, + 0xA5, 0x92, 0xA5, 0x75, 0xA5, 0x92, 0xA5, 0x75, 0xA5, 0x92, 0xA5, 0x75, + 0xA5, 0x92, 0xA5, 0x75, 0xA6, 0x88, 0xFC, 0x7B, 0xFD, 0x88, 0x88, 0x82, + 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, + 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, + 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, + 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, + 0x89, 0x95, 0x89, 0x88, 0x89, 0x97, 0x89, 0x86, 0x88, 0x99, 0x85, 0x85, + 0x88, 0x99, 0x88, 0x85, 0x88, 0x9A, 0x89, 0x89, 0x89, 0x95, 0x89, 0x88, + 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, + 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, + 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, + 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, 0x89, 0x95, 0x89, 0x88, + 0x88, 0x87, 0xFD, 0x82, 0xFC, 0x8C, 0x89, 0x81, 0x88, 0x94, 0x88, 0x88, + 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, + 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, + 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, + 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, + 0x88, 0x98, 0x88, 0x86, 0x7E, 0x9C, 0x8B, 0x85, 0x88, 0x9C, 0x8C, 0x85, + 0x88, 0x98, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, + 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, + 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, + 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, + 0x88, 0x94, 0x88, 0x88, 0x88, 0x94, 0x88, 0x88, 0x89, 0x8E, 0xFD, 0x81, + 0xFC, 0x7E, 0xF0, 0x7F, 0x30, 0x82, 0x30, 0x81, 0x30, 0x82, 0x30, 0x7F, + 0x30, 0x83, 0x33, 0x82, 0xFD, 0x7F, 0x30, 0x81, 0x30, 0x82, 0x30, 0x7F, + 0x30, 0x82, 0x30, 0x7F, 0x34, 0x82, 0xFD, 0x81, 0x30, 0x82, 0x30, 0x7F, + 0x30, 0x82, 0x30, 0x7F, 0x30, 0x82, 0x30, 0x81, 0xFE, 0x81, 0x30, 0x81, + 0x30, 0x82, 0x30, 0x7F, 0x30, 0x82, 0x30, 0x7F, 0x30, 0x81, 0xFE, 0x80, + 0x30, 0x82, 0x30, 0x7F, 0x30, 0x82, 0x30, 0x7F, 0x30, 0x82, 0x30, 0x81, + 0xFC, 0x82, 0x2D, 0x82, 0x30, 0x82, 0x30, 0x7F, 0x30, 0x82, 0x30, 0x7F, + 0x30, 0x82, 0xC4, 0x81, 0x2F, 0x82, 0x30, 0x81, 0x30, 0x82, 0x30, 0x7F, + 0x30, 0x81, 0x30, 0x7F, 0x5E, 0x81, 0x2F, 0x82, 0x30, 0x82, 0x30, 0x81, + 0x30, 0x82, 0x30, 0x7F, 0x30, 0x81, 0x30, 0x7F, 0xFE, 0x80, 0xFE, 0x81, + 0xFE, 0x80, 0xFE, 0x81, 0xFD, 0x7D, 0xFC, 0x7F, 0xFD, 0x80, 0xEF, 0x7E, + 0x30, 0x83, 0x31, 0x80, 0x2E, 0x83, 0x35, 0x80, 0x30, 0x85, 0x33, 0x80, + 0xFD, 0x82, 0x30, 0x80, 0x2F, 0x83, 0x30, 0x80, 0x2D, 0x83, 0x31, 0x80, + 0x34, 0x82, 0xFE, 0x80, 0x30, 0x83, 0x30, 0x80, 0x2E, 0x83, 0x2F, 0x80, + 0x2E, 0x83, 0x30, 0x80, 0xFE, 0x82, 0x30, 0x80, 0x2B, 0x83, 0x2B, 0x80, + 0x2E, 0x83, 0x31, 0x80, 0x30, 0x82, 0xFE, 0x80, 0x30, 0x83, 0x34, 0x80, + 0x2D, 0x83, 0x34, 0x80, 0x30, 0x83, 0x30, 0x80, 0xFD, 0x82, 0x2D, 0x80, + 0x30, 0x83, 0x32, 0x80, 0x30, 0x83, 0x31, 0x80, 0x30, 0x83, 0xC4, 0x80, + 0x2F, 0x83, 0x30, 0x80, 0x2B, 0x83, 0x32, 0x80, 0x34, 0x83, 0x30, 0x80, + 0x5E, 0x83, 0x2F, 0x80, 0x30, 0x83, 0x30, 0x80, 0x2B, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0xFF, 0x7F, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x80, + 0xFD, 0x7F, 0xFD, 0x7F, 0xFD, 0x80, 0xEF, 0x7E, 0x30, 0x83, 0x91, 0x80, + 0x2D, 0x83, 0x35, 0x80, 0x30, 0x85, 0x33, 0x80, 0xFD, 0x82, 0x30, 0x80, + 0x39, 0x83, 0x68, 0x80, 0x33, 0x83, 0x31, 0x80, 0x34, 0x82, 0xFE, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x96, 0x83, 0x31, 0x80, 0x2E, 0x83, 0x30, 0x80, + 0xFE, 0x82, 0x30, 0x80, 0x64, 0x83, 0xD1, 0x80, 0x55, 0x83, 0x31, 0x80, + 0x30, 0x82, 0xFE, 0x80, 0x30, 0x83, 0x2C, 0x80, 0x3C, 0x83, 0x49, 0x80, + 0x5B, 0x83, 0x30, 0x80, 0xFD, 0x82, 0x2D, 0x80, 0x74, 0x83, 0x25, 0x80, + 0x8D, 0x83, 0x52, 0x80, 0x30, 0x83, 0xC4, 0x80, 0x2F, 0x83, 0x30, 0x80, + 0x33, 0x83, 0x31, 0x80, 0x84, 0x83, 0x30, 0x80, 0x5E, 0x83, 0x2F, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x72, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0xFF, 0x7F, 0xFD, 0x80, 0xFF, 0x80, 0xFF, 0x80, 0xFD, 0x7F, 0xFD, 0x7F, + 0xFD, 0x80, 0xEF, 0x7E, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x85, 0x33, 0x80, 0xFD, 0x82, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x34, 0x82, 0xFE, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0xFE, 0x82, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x82, 0xFE, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0xFD, 0x82, 0x2D, 0x80, 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0xC4, 0x80, 0x2F, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x5E, 0x83, 0x2F, 0x80, 0x30, 0x83, 0x30, 0x80, + 0x30, 0x83, 0x30, 0x80, 0x30, 0x83, 0x30, 0x80, 0xFF, 0x7F, 0xFF, 0x80, + 0xFF, 0x80, 0xFF, 0x80, 0xFD, 0x7F, 0xFD, 0x7F, 0xFA, 0x7E, 0xF0, 0x7B, + 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x8B, 0x5D, 0x7F, + 0xFF, 0x81, 0x5E, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, + 0x5B, 0x80, 0xFB, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, + 0x5E, 0x8A, 0x5E, 0x7F, 0xF8, 0x85, 0x5E, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, + 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x85, 0xFB, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, + 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x88, 0x5E, 0x7F, 0xF3, 0x85, 0x5E, 0x80, + 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x85, 0xC4, 0x7F, + 0x5C, 0x85, 0x5E, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, + 0x81, 0x85, 0x5B, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, 0x5E, 0x8A, 0x5E, 0x7F, + 0x5E, 0x8A, 0x5E, 0x7F, 0xFD, 0x81, 0xFD, 0x7D, 0xFD, 0x81, 0xFD, 0x7D, + 0xFC, 0x7E, 0xFA, 0x7B, 0xF7, 0x7E, 0xFC, 0x7D, 0xFD, 0x81, 0xFD, 0x7E, + 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, + 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, + 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, + 0xFC, 0x82, 0xFC, 0x7F, 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, + 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, + 0xFD, 0x82, 0xFC, 0x7F, 0xFC, 0x82, 0xFC, 0x7F, 0xFD, 0x81, 0xFD, 0x7E, + 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, + 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, + 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, 0xFD, 0x81, 0xFD, 0x7E, + 0xFD, 0x81, 0xFD, 0x7F, 0xFD, 0x81, 0xFD, 0x7F, 0xFC, 0x7D, 0xF7, 0x7E +}; diff --git a/components/drivers/usb/cherryusb/demo/hid_custom_inout_template.c b/components/drivers/usb/cherryusb/demo/hid_custom_inout_template.c index d5c3b7e0c0..92bca37be9 100644 --- a/components/drivers/usb/cherryusb/demo/hid_custom_inout_template.c +++ b/components/drivers/usb/cherryusb/demo/hid_custom_inout_template.c @@ -28,6 +28,11 @@ #define HIDRAW_OUT_EP_INTERVAL 10 #endif +#define USBD_VID 0xffff +#define USBD_PID 0xffff +#define USBD_MAX_POWER 100 +#define USBD_LANGID_STRING 1033 + /*!< config descriptor size */ #define USB_HID_CONFIG_DESC_SIZ (9 + 9 + 9 + 7 + 7) diff --git a/components/drivers/usb/cherryusb/demo/pic_data.h b/components/drivers/usb/cherryusb/demo/pic_data.h deleted file mode 100644 index 3a009c12ba..0000000000 --- a/components/drivers/usb/cherryusb/demo/pic_data.h +++ /dev/null @@ -1,1146 +0,0 @@ -/* - * Copyright (c) 2024, sakumisu - * - * SPDX-License-Identifier: Apache-2.0 - */ -#ifndef __PIC_DATA_H_ -#define __PIC_DATA_H_ - -const unsigned char jpeg_data[8493] = { - 0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x01, 0x00, 0x48, - 0x00, 0x48, 0x00, 0x00, 0xFF, 0xDB, 0x00, 0x43, 0x00, 0x0D, 0x09, 0x0A, 0x0B, 0x0A, 0x08, 0x0D, - 0x0B, 0x0A, 0x0B, 0x0E, 0x0E, 0x0D, 0x0F, 0x13, 0x20, 0x15, 0x13, 0x12, 0x12, 0x13, 0x27, 0x1C, - 0x1E, 0x17, 0x20, 0x2E, 0x29, 0x31, 0x30, 0x2E, 0x29, 0x2D, 0x2C, 0x33, 0x3A, 0x4A, 0x3E, 0x33, - 0x36, 0x46, 0x37, 0x2C, 0x2D, 0x40, 0x57, 0x41, 0x46, 0x4C, 0x4E, 0x52, 0x53, 0x52, 0x32, 0x3E, - 0x5A, 0x61, 0x5A, 0x50, 0x60, 0x4A, 0x51, 0x52, 0x4F, 0xFF, 0xDB, 0x00, 0x43, 0x01, 0x0E, 0x0E, - 0x0E, 0x13, 0x11, 0x13, 0x26, 0x15, 0x15, 0x26, 0x4F, 0x35, 0x2D, 0x35, 0x4F, 0x4F, 0x4F, 0x4F, - 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, - 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, - 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0xFF, 0xC0, - 0x00, 0x11, 0x08, 0x00, 0xF0, 0x01, 0x40, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, - 0x01, 0xFF, 0xC4, 0x00, 0x1B, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0xFF, 0xC4, - 0x00, 0x3B, 0x10, 0x01, 0x00, 0x02, 0x01, 0x02, 0x03, 0x05, 0x06, 0x04, 0x05, 0x04, 0x02, 0x02, - 0x03, 0x00, 0x00, 0x01, 0x00, 0x02, 0x03, 0x04, 0x11, 0x05, 0x21, 0x31, 0x12, 0x41, 0x51, 0x61, - 0x71, 0x06, 0x13, 0x81, 0x91, 0xA1, 0xC1, 0x14, 0x22, 0xB1, 0xD1, 0x07, 0x23, 0x32, 0x52, 0xF0, - 0x33, 0x42, 0x72, 0xE1, 0x15, 0x62, 0x24, 0xF1, 0x43, 0x53, 0xB2, 0xFF, 0xC4, 0x00, 0x1A, 0x01, - 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0xFF, 0xC4, 0x00, 0x23, 0x11, 0x01, 0x01, 0x00, 0x02, - 0x02, 0x03, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x11, - 0x03, 0x21, 0x12, 0x31, 0x41, 0x13, 0x22, 0x51, 0x04, 0x33, 0x14, 0x61, 0xFF, 0xDA, 0x00, 0x0C, - 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3F, 0x00, 0xE4, 0x12, 0x0A, 0x49, 0x12, 0x0A, - 0x4F, 0x66, 0xF2, 0xC6, 0x04, 0x82, 0x90, 0xD2, 0x32, 0x49, 0xAC, 0x68, 0xD2, 0x32, 0x43, 0x48, - 0x29, 0x15, 0x43, 0x02, 0x46, 0x48, 0x69, 0x05, 0x21, 0x31, 0x81, 0x20, 0xA4, 0x91, 0x20, 0xA4, - 0x55, 0x0D, 0x1A, 0x41, 0x49, 0x22, 0x41, 0x48, 0xAB, 0x18, 0x12, 0x0A, 0x43, 0x48, 0xC9, 0x15, - 0x43, 0x46, 0x90, 0x52, 0x48, 0x90, 0x52, 0x2A, 0x86, 0x04, 0x8A, 0x3A, 0x46, 0x48, 0xAA, 0x19, - 0x45, 0x14, 0x50, 0x9C, 0xA2, 0x8A, 0x28, 0x44, 0xA2, 0x8A, 0x28, 0x44, 0xA2, 0x8A, 0x28, 0x44, - 0xA2, 0x8A, 0x28, 0x44, 0xA2, 0x8A, 0x28, 0x44, 0xA2, 0x8A, 0x28, 0x44, 0xA2, 0x8A, 0x28, 0x44, - 0xA2, 0x8A, 0x28, 0x44, 0xA2, 0x8A, 0x28, 0x44, 0xA2, 0x8A, 0x28, 0x45, 0xBC, 0x91, 0x92, 0x48, - 0x90, 0x12, 0x74, 0x5E, 0x58, 0xC0, 0x90, 0x52, 0x48, 0x90, 0x52, 0x15, 0x0C, 0x09, 0x05, 0x21, - 0xA4, 0x64, 0x93, 0x58, 0xD1, 0xA4, 0x64, 0x86, 0x90, 0x52, 0x2A, 0x86, 0x04, 0x8C, 0x90, 0xD2, - 0x0A, 0x42, 0x63, 0x02, 0x41, 0x49, 0x22, 0x41, 0x48, 0xAA, 0x1A, 0x34, 0x82, 0x92, 0x44, 0x82, - 0x91, 0x56, 0x30, 0x24, 0x14, 0x86, 0x91, 0x92, 0x2A, 0x86, 0x8D, 0x20, 0xA4, 0x91, 0x20, 0xA4, - 0x55, 0x0C, 0x09, 0x14, 0x74, 0x8C, 0x91, 0x54, 0x32, 0x8A, 0x28, 0x55, 0xAB, 0x62, 0xDB, 0x1F, - 0xD2, 0x6E, 0xF9, 0x1B, 0xED, 0xF7, 0x22, 0x9C, 0x31, 0xC7, 0x64, 0x50, 0x4F, 0x08, 0xD1, 0x47, - 0x15, 0xBC, 0xDA, 0x44, 0xC3, 0x5C, 0xF8, 0xB7, 0xB6, 0x2B, 0x1C, 0xFC, 0x6A, 0xF7, 0x8F, 0xEF, - 0x2A, 0x4D, 0x8D, 0x05, 0xF6, 0xD1, 0xD4, 0x7A, 0x2B, 0xC9, 0xF5, 0x94, 0x75, 0xB8, 0x0C, 0x79, - 0x56, 0x86, 0xD4, 0xB7, 0x30, 0xF0, 0xF2, 0x92, 0x36, 0x99, 0x61, 0xD7, 0x91, 0x55, 0x88, 0xE7, - 0x3A, 0x0E, 0x03, 0xC3, 0x31, 0xE4, 0xDF, 0x53, 0xAA, 0xA1, 0x70, 0xFE, 0x9A, 0xA7, 0x2D, 0xFC, - 0xCE, 0xFE, 0x5D, 0xDE, 0x64, 0x8B, 0x89, 0xD8, 0xD2, 0xEB, 0x2D, 0x4C, 0x54, 0x29, 0x4B, 0x73, - 0xA8, 0x1B, 0x07, 0x97, 0xCE, 0x1E, 0x5D, 0xE8, 0x9F, 0xE2, 0x4C, 0x7C, 0x9B, 0x12, 0x29, 0xAD, - 0x4C, 0x95, 0xCD, 0x56, 0xB9, 0x01, 0x1E, 0x53, 0x32, 0xF8, 0xDA, 0xE5, 0xB6, 0x33, 0x75, 0x14, - 0xE4, 0x75, 0x8C, 0x6C, 0xF2, 0xC7, 0x51, 0x61, 0xC1, 0x93, 0x35, 0x6E, 0xE3, 0x3B, 0x5D, 0x80, - 0x53, 0xBF, 0x69, 0x12, 0x6C, 0xEC, 0xCD, 0x7D, 0x26, 0x0B, 0xE9, 0xF1, 0x2B, 0x4B, 0x76, 0xAF, - 0xCD, 0xE4, 0xF2, 0x3C, 0x25, 0x7D, 0x6E, 0x22, 0xE3, 0x92, 0xA6, 0xD6, 0x3A, 0xED, 0xDF, 0x0D, - 0xCF, 0xC7, 0xAD, 0xD4, 0x22, 0x8A, 0x28, 0xE9, 0x94, 0x51, 0x45, 0x08, 0x94, 0x51, 0x45, 0x08, - 0x94, 0x51, 0x45, 0x08, 0xBA, 0x24, 0x8C, 0x90, 0xD2, 0x0A, 0x4E, 0x9B, 0xC9, 0x1A, 0x34, 0x8C, - 0x92, 0x44, 0x80, 0x91, 0x54, 0x30, 0x24, 0x14, 0x92, 0x24, 0x14, 0x85, 0x43, 0x02, 0x41, 0x48, - 0x69, 0x19, 0x24, 0xD6, 0x34, 0x69, 0x19, 0x21, 0xA4, 0x14, 0x8A, 0xA1, 0x81, 0x23, 0x24, 0x34, - 0x82, 0x90, 0x98, 0xC0, 0x90, 0x52, 0x48, 0x90, 0x52, 0x2A, 0x86, 0x8D, 0x20, 0xA4, 0x91, 0x20, - 0xA4, 0x55, 0x8C, 0x09, 0x05, 0x86, 0x90, 0xF2, 0xE0, 0xB5, 0x31, 0xD2, 0xFD, 0x44, 0xDD, 0xF2, - 0x89, 0xAC, 0xEE, 0xAE, 0x91, 0xE9, 0xB1, 0x92, 0xAA, 0x6E, 0x08, 0xA7, 0x89, 0x1D, 0x20, 0xA4, - 0x49, 0x50, 0xDA, 0x5A, 0x8D, 0x0D, 0x32, 0x8D, 0xB0, 0x85, 0x6D, 0xE0, 0x74, 0x7F, 0x69, 0x3E, - 0x3E, 0x1B, 0x6A, 0x7B, 0x3F, 0x9F, 0x25, 0xAA, 0xFB, 0xDB, 0xD8, 0xB6, 0xDB, 0x73, 0x2A, 0x3B, - 0x7D, 0xD7, 0xE0, 0x40, 0xD3, 0x65, 0xED, 0x62, 0xAA, 0xBC, 0xF6, 0xFA, 0xCE, 0xAB, 0x2D, 0x69, - 0x6C, 0x15, 0xA5, 0x76, 0x1A, 0x54, 0x0F, 0x04, 0x0E, 0x93, 0x25, 0x4B, 0xBF, 0x8F, 0x8F, 0x1C, - 0xB6, 0xDE, 0x79, 0x14, 0xD3, 0xE2, 0x9C, 0x3D, 0xD3, 0xDA, 0xD9, 0x71, 0x0F, 0xBA, 0x5D, 0x93, - 0xFB, 0x1F, 0x07, 0xCB, 0xC3, 0xFC, 0xDF, 0x3F, 0x15, 0x7D, 0xE6, 0x5A, 0xD3, 0xFB, 0x90, 0xF9, - 0xB2, 0xC7, 0x65, 0xC9, 0x96, 0x0E, 0x2E, 0x9B, 0x4A, 0xAF, 0xBB, 0xC5, 0x8A, 0xBD, 0x36, 0xA8, - 0xBE, 0xAF, 0x3F, 0xBC, 0x1B, 0x86, 0x54, 0xAB, 0xD1, 0x48, 0xDA, 0x9B, 0x8E, 0x47, 0x6E, 0x44, - 0x93, 0x87, 0x63, 0x75, 0x1A, 0xFC, 0x54, 0x0D, 0xC1, 0x2C, 0xFA, 0x1C, 0xD9, 0x2F, 0xF6, 0xDB, - 0x1E, 0xDF, 0x1B, 0xA1, 0xC5, 0x47, 0x4F, 0xA6, 0xAE, 0x37, 0x95, 0x83, 0x77, 0xD5, 0xE6, 0xCC, - 0x3E, 0x37, 0x5E, 0xD1, 0x5B, 0xF7, 0x8E, 0xDF, 0x07, 0xFC, 0x26, 0xB6, 0xB7, 0x3E, 0xD7, 0x0D, - 0xFB, 0xBE, 0xF2, 0x8D, 0xF1, 0x9A, 0x8C, 0x76, 0xB5, 0xFF, 0x00, 0xA2, 0xA8, 0xAB, 0xD1, 0xE7, - 0x24, 0xE9, 0xDD, 0xD1, 0xCA, 0x09, 0xE2, 0x54, 0xB4, 0x1A, 0x5B, 0x64, 0xDA, 0xF7, 0xDC, 0xAF, - 0x71, 0xDE, 0xFF, 0x00, 0xD4, 0xB2, 0xE4, 0xC3, 0xA7, 0xBD, 0xAD, 0x8C, 0x0B, 0x2A, 0xEE, 0x12, - 0x0D, 0x46, 0xAC, 0x06, 0x98, 0xDD, 0x8E, 0x8B, 0xDE, 0xFF, 0x00, 0xD4, 0xA4, 0xE4, 0x6C, 0xF3, - 0x65, 0xF6, 0xDC, 0xDB, 0xF1, 0x3A, 0xB4, 0xE9, 0xAA, 0xBD, 0xD5, 0x5D, 0x83, 0x9A, 0xC8, 0x73, - 0x67, 0xB6, 0x7D, 0xF7, 0x02, 0xA1, 0xE0, 0x6F, 0xB7, 0xAC, 0x8C, 0x2C, 0xE1, 0x29, 0x51, 0x5B, - 0x3C, 0xF6, 0x3B, 0x8F, 0xF3, 0xE9, 0x24, 0xB6, 0x97, 0x37, 0xB9, 0x2B, 0x5A, 0xFE, 0x7C, 0x8F, - 0x64, 0x3B, 0xDF, 0x1F, 0xF3, 0xCE, 0x27, 0x55, 0x82, 0x96, 0x3C, 0x53, 0x57, 0x2F, 0x0A, 0x74, - 0xF7, 0xAD, 0x72, 0xD9, 0xB2, 0x83, 0xB1, 0xC8, 0xDF, 0xBC, 0x99, 0xFA, 0x92, 0xA6, 0x7B, 0x56, - 0x80, 0x15, 0x76, 0xF9, 0x4A, 0x1B, 0x9B, 0x2C, 0x1C, 0x7D, 0xD1, 0x45, 0x14, 0x51, 0xCA, 0x51, - 0x45, 0x14, 0x22, 0x51, 0x45, 0x14, 0x22, 0xE9, 0x92, 0x0A, 0x49, 0x12, 0x0A, 0x4E, 0xAB, 0xC7, - 0x1A, 0x34, 0x8C, 0x90, 0xD2, 0x0A, 0x45, 0x50, 0xD1, 0xA4, 0x64, 0x92, 0x24, 0x04, 0x8A, 0xA1, - 0x81, 0x20, 0xA4, 0x91, 0x20, 0xA4, 0x2A, 0x18, 0x12, 0x0A, 0x43, 0x48, 0xC9, 0x26, 0xB1, 0xA3, - 0x48, 0xC9, 0x0D, 0x20, 0xA4, 0x55, 0x0C, 0x09, 0x19, 0x21, 0xA4, 0x14, 0x84, 0xC6, 0x04, 0x82, - 0x92, 0x44, 0x82, 0x91, 0x56, 0x30, 0x06, 0xE8, 0x79, 0xCB, 0x6D, 0x95, 0xD8, 0x1D, 0xDE, 0x5B, - 0x4A, 0xA9, 0x3A, 0x4D, 0x06, 0x0C, 0x78, 0xB4, 0x38, 0xF5, 0x05, 0x47, 0x35, 0xCD, 0xD5, 0xE7, - 0xB7, 0x91, 0xE1, 0x23, 0x27, 0x56, 0xFC, 0x38, 0x39, 0xBA, 0xB3, 0x71, 0xF0, 0x9B, 0xE4, 0x3B, - 0x79, 0xFB, 0x18, 0x6A, 0xF8, 0x9C, 0xFE, 0x47, 0xDE, 0x1B, 0xC2, 0x34, 0x41, 0xB7, 0xBF, 0xCB, - 0xBF, 0x8F, 0x2D, 0xBE, 0x5F, 0xF7, 0x1F, 0x57, 0x9B, 0x29, 0x65, 0xDD, 0x81, 0xA5, 0xAE, 0x4C, - 0xE3, 0x93, 0x25, 0x9A, 0x50, 0x76, 0xDF, 0xBD, 0x7C, 0xA4, 0x77, 0xEF, 0x76, 0xE1, 0x8E, 0xF5, - 0xA8, 0x1E, 0x1F, 0x7D, 0x3E, 0xEE, 0x2C, 0x86, 0x5C, 0x63, 0xBF, 0x4D, 0x93, 0xE1, 0x35, 0xDD, - 0x42, 0x12, 0x85, 0x3B, 0x15, 0xCD, 0x50, 0xC9, 0x60, 0x6C, 0x1B, 0xAF, 0x9C, 0x9F, 0x57, 0x54, - 0xB3, 0x7C, 0x7D, 0xFD, 0x43, 0xB9, 0x92, 0xDD, 0x3C, 0x66, 0xB1, 0x75, 0x15, 0xF2, 0xD7, 0x22, - 0xBB, 0x0A, 0x9B, 0x5A, 0xA9, 0xB9, 0x63, 0xC2, 0x65, 0x67, 0xE1, 0xFE, 0xE7, 0x35, 0x75, 0x1A, - 0x7D, 0xED, 0x83, 0xAA, 0x75, 0x68, 0xF8, 0x3E, 0x5E, 0x7F, 0x3F, 0x39, 0xBF, 0x12, 0x56, 0xDF, - 0xCC, 0x37, 0xF3, 0x39, 0x24, 0xBB, 0xA5, 0x77, 0x5C, 0xB8, 0x92, 0xF5, 0xEC, 0xBD, 0xBA, 0xED, - 0xCF, 0x6D, 0xBC, 0x20, 0x75, 0x4E, 0x5A, 0xCC, 0xEF, 0xD9, 0x73, 0xF9, 0x6C, 0xDB, 0x26, 0xC7, - 0x35, 0x79, 0x4D, 0x8E, 0x11, 0x43, 0x03, 0x6B, 0x3B, 0x36, 0x28, 0xAB, 0xE7, 0xD0, 0x3F, 0x59, - 0x47, 0x53, 0xA6, 0x31, 0x6A, 0x0C, 0xB8, 0xF9, 0xE2, 0xB3, 0xCB, 0xBF, 0xB2, 0xF8, 0x3F, 0x69, - 0x73, 0x44, 0x5A, 0xF8, 0x6E, 0xD7, 0x93, 0x7B, 0x6D, 0xBB, 0xD0, 0x03, 0xAF, 0xD5, 0x94, 0xFA, - 0xB3, 0xE3, 0x35, 0x96, 0xD9, 0xF5, 0x76, 0x73, 0xE6, 0x5A, 0xBD, 0x36, 0x16, 0x3E, 0xA2, 0xDB, - 0xE8, 0xAD, 0x8F, 0x11, 0xC8, 0x00, 0xF3, 0x77, 0x37, 0x59, 0x59, 0xCE, 0x7E, 0x26, 0xD4, 0xC7, - 0xBB, 0x51, 0xEC, 0x9E, 0x6F, 0x7A, 0xC9, 0xF2, 0x9E, 0xEB, 0x47, 0x60, 0xE6, 0xA8, 0x0F, 0x8F, - 0x39, 0x29, 0xEA, 0xD8, 0x7C, 0x95, 0x97, 0x0F, 0xD2, 0xE1, 0xAD, 0x8B, 0x64, 0xA9, 0x92, 0xDD, - 0x56, 0xC6, 0xE1, 0xF0, 0x9B, 0x94, 0xA6, 0x8F, 0x3D, 0x4A, 0x65, 0xD3, 0xE3, 0xC8, 0x79, 0xD4, - 0xDC, 0xF4, 0x4E, 0x64, 0xC2, 0xC7, 0x7E, 0xC5, 0x01, 0x7D, 0x7C, 0xE6, 0x86, 0x83, 0x23, 0x7C, - 0xA0, 0x0B, 0xCF, 0xBA, 0x26, 0xDB, 0x8B, 0x5A, 0xD6, 0xAD, 0x5A, 0x70, 0x7D, 0x1D, 0xEC, 0x35, - 0xAD, 0xE9, 0x5A, 0x9D, 0x0B, 0x9B, 0x07, 0xC4, 0x82, 0xE2, 0xC3, 0x8B, 0x23, 0xEE, 0xB1, 0xF6, - 0x50, 0xD8, 0x5E, 0x6E, 0xDF, 0xE7, 0x84, 0x5F, 0x8B, 0x5B, 0x18, 0x71, 0xBB, 0xF3, 0xFC, 0xC9, - 0xCF, 0x77, 0xC0, 0x96, 0xE9, 0x8B, 0xDE, 0x81, 0x6D, 0x8B, 0x1D, 0x37, 0x79, 0x92, 0x4D, 0xFB, - 0x6D, 0x97, 0x13, 0xA0, 0xB0, 0xB8, 0xFE, 0xDA, 0x7D, 0x01, 0x98, 0x3F, 0x9B, 0xBE, 0xD5, 0xF2, - 0xDF, 0xAB, 0x38, 0xFE, 0xB3, 0xBA, 0xE3, 0x5C, 0x3E, 0xB6, 0xC7, 0x5A, 0x6A, 0x32, 0x5F, 0x23, - 0x64, 0xB2, 0x53, 0x6A, 0xEC, 0x1D, 0x0E, 0x7B, 0xCC, 0x6C, 0xDA, 0x5E, 0x1D, 0x83, 0x0B, 0x6B, - 0x69, 0x85, 0x0F, 0xFF, 0x00, 0x65, 0x97, 0xE3, 0xB3, 0xB4, 0xD3, 0x17, 0xAB, 0x87, 0xFD, 0x1C, - 0x6E, 0x59, 0x6F, 0xE5, 0xCE, 0xC5, 0x2E, 0x65, 0xC5, 0x87, 0x25, 0xF7, 0xD2, 0x36, 0x57, 0xFD, - 0x96, 0xEB, 0xF0, 0x7B, 0xFF, 0x00, 0xCE, 0xB2, 0x5F, 0xFC, 0x65, 0xCD, 0x3D, 0xAE, 0xAF, 0xBC, - 0x0D, 0xC0, 0xE8, 0x9E, 0x12, 0xF7, 0x72, 0x78, 0xB6, 0x74, 0x51, 0x24, 0x50, 0x94, 0xA2, 0x8A, - 0x28, 0x45, 0xD4, 0xA4, 0x64, 0x86, 0x90, 0x52, 0x76, 0x5E, 0x28, 0xC0, 0x90, 0x52, 0x48, 0x90, - 0x52, 0x4D, 0x43, 0x46, 0x91, 0x92, 0x1A, 0x41, 0x48, 0xAA, 0x1A, 0x34, 0x8C, 0x92, 0x44, 0x80, - 0x91, 0x54, 0x30, 0x24, 0x14, 0x92, 0x24, 0x14, 0x85, 0x43, 0x02, 0x41, 0x48, 0x69, 0x19, 0x24, - 0xD6, 0x34, 0x69, 0x19, 0x21, 0xA4, 0x14, 0x8A, 0xA1, 0x81, 0x23, 0x24, 0x34, 0x9A, 0x1A, 0x4E, - 0x1E, 0x38, 0xCC, 0xFA, 0x91, 0xEC, 0xBC, 0xEB, 0x43, 0x92, 0x9E, 0x2F, 0x81, 0x12, 0x85, 0xA6, - 0x18, 0xB9, 0x36, 0x76, 0x3C, 0x19, 0x73, 0x29, 0x8B, 0x1D, 0xAE, 0x9D, 0x76, 0x37, 0xDA, 0x74, - 0xDC, 0x23, 0x47, 0xAA, 0xCB, 0xA1, 0x30, 0xDC, 0xAD, 0x32, 0x63, 0x52, 0xA5, 0xAC, 0x3B, 0x9D, - 0x7B, 0xBC, 0x25, 0x0C, 0xBA, 0xDF, 0x75, 0x5E, 0xC6, 0x3A, 0x14, 0xA9, 0xD0, 0x0D, 0x82, 0x2D, - 0x0F, 0x10, 0x5C, 0xAD, 0x4B, 0x22, 0x9B, 0x8E, 0xFD, 0xE4, 0xCF, 0x21, 0x4B, 0xB3, 0x81, 0xC7, - 0x8F, 0x2B, 0x4B, 0x27, 0x02, 0xCB, 0x77, 0x7B, 0xB5, 0xDB, 0xBC, 0xAD, 0x8D, 0xDF, 0x8B, 0x2A, - 0xEB, 0x34, 0xF9, 0x30, 0x50, 0xA3, 0x89, 0xA5, 0x43, 0x60, 0xDB, 0x91, 0x27, 0x78, 0x9E, 0xA1, - 0x76, 0x2E, 0xD9, 0xF0, 0xD8, 0x58, 0x8E, 0x29, 0xA8, 0x39, 0x64, 0xA1, 0x6A, 0xF7, 0x8F, 0x26, - 0x66, 0x09, 0x75, 0xB9, 0x61, 0xF2, 0xE7, 0xF3, 0xA8, 0xBD, 0x65, 0xEE, 0x1D, 0xAA, 0x72, 0xAB, - 0x67, 0xF9, 0x94, 0x39, 0xF9, 0x9D, 0x37, 0x97, 0xB5, 0x3A, 0x6D, 0x26, 0xAB, 0x19, 0x76, 0xA6, - 0x36, 0xC7, 0x26, 0xBD, 0x3E, 0x9F, 0xB4, 0xCF, 0xA6, 0x83, 0x36, 0x9D, 0xC9, 0x93, 0x12, 0x5C, - 0x36, 0xDA, 0xD5, 0x77, 0xDB, 0xAF, 0x52, 0x50, 0x89, 0xA6, 0x8C, 0x57, 0x0C, 0xBA, 0xF4, 0xD6, - 0xB2, 0xE9, 0xF4, 0x7A, 0xAD, 0xCB, 0x8E, 0x3B, 0xBD, 0x2D, 0x57, 0x61, 0xF5, 0x3B, 0xBE, 0x12, - 0x1C, 0x1A, 0x2C, 0xFA, 0x0C, 0x99, 0x32, 0xD2, 0xFD, 0xBA, 0x81, 0xB3, 0xB6, 0xDD, 0x5F, 0xFA, - 0x80, 0x5D, 0xBD, 0x54, 0x36, 0x47, 0x99, 0xE0, 0xFE, 0xD2, 0xFE, 0x87, 0x2F, 0x6B, 0x4B, 0x96, - 0x99, 0x0D, 0xCD, 0xC1, 0x1F, 0x8C, 0x5E, 0xAA, 0xC8, 0x17, 0x75, 0x5B, 0x57, 0x1E, 0xA3, 0x0E, - 0x4C, 0x98, 0xEB, 0xC9, 0x3F, 0x99, 0x8C, 0xF5, 0xEA, 0x78, 0x24, 0x7D, 0x66, 0x07, 0x85, 0xF0, - 0xCC, 0x58, 0x57, 0x7B, 0xE5, 0xAF, 0x69, 0xB6, 0xDB, 0x72, 0x5D, 0xC3, 0xEB, 0xCF, 0xFE, 0xA4, - 0xDC, 0x33, 0x49, 0x67, 0x8C, 0xE3, 0xC4, 0x6E, 0xE3, 0xBA, 0xAB, 0xE3, 0x53, 0x9B, 0xF4, 0x12, - 0x5F, 0xE3, 0x15, 0xC7, 0xAC, 0xD5, 0xB8, 0x32, 0x1B, 0xD7, 0x23, 0xF9, 0x13, 0xAD, 0x5F, 0x28, - 0x6E, 0x58, 0x9B, 0x16, 0xE4, 0xF4, 0x98, 0xDB, 0x5D, 0xC8, 0x9D, 0x54, 0x3E, 0x7C, 0xD9, 0xA5, - 0xAA, 0xAE, 0xD5, 0xC6, 0xBD, 0x2A, 0x3B, 0x1E, 0x2F, 0x8F, 0xC3, 0xA7, 0xCE, 0x5C, 0xA7, 0x0B, - 0xBE, 0x0D, 0x5D, 0x70, 0x58, 0xFC, 0xB4, 0x04, 0xB1, 0xD1, 0x3C, 0x7E, 0x32, 0x1D, 0x7E, 0x3B, - 0x5B, 0x39, 0x8E, 0x86, 0xFB, 0x00, 0x04, 0x95, 0xDB, 0x30, 0xD6, 0x3A, 0xB3, 0x0E, 0xDE, 0x4C, - 0x80, 0x0A, 0xAE, 0xC0, 0x4D, 0x7C, 0x55, 0xAE, 0x93, 0x4E, 0x96, 0xBA, 0x64, 0xB7, 0x25, 0xAF, - 0x50, 0xEF, 0x07, 0xC7, 0xC7, 0xC3, 0x7F, 0x1E, 0x8F, 0xA6, 0xD1, 0x38, 0xAB, 0xB9, 0xFD, 0x4F, - 0x26, 0xDE, 0x1E, 0x47, 0xEF, 0x2B, 0xEB, 0x1C, 0x78, 0xAA, 0x64, 0xCC, 0xA6, 0x33, 0x95, 0x28, - 0x75, 0xBB, 0xE5, 0xFB, 0xC3, 0xDB, 0x68, 0x3E, 0x25, 0x67, 0x0E, 0xA4, 0xAD, 0x5E, 0xC0, 0x63, - 0xC6, 0x75, 0x47, 0x6E, 0x5E, 0x6F, 0x7C, 0xB3, 0x8F, 0x8C, 0xD2, 0x87, 0x67, 0x01, 0xBB, 0xFD, - 0xC9, 0xCB, 0xE0, 0x7E, 0xF3, 0x97, 0xC9, 0x9F, 0x36, 0xAA, 0xE7, 0x2E, 0xCD, 0x07, 0xF2, 0xD4, - 0xE8, 0x7E, 0xEF, 0x9C, 0xB7, 0x83, 0x1B, 0x5D, 0x9B, 0xA1, 0xEA, 0xED, 0x29, 0x3F, 0xB4, 0xE3, - 0xCD, 0xDE, 0x82, 0xE9, 0xB0, 0xEA, 0xCC, 0xF5, 0x6B, 0x98, 0x2E, 0x5B, 0xA9, 0x6E, 0x7B, 0xCC, - 0x8E, 0x33, 0xC2, 0x72, 0xD7, 0x0E, 0x4C, 0x9A, 0x5E, 0xD6, 0x5C, 0x4F, 0x3E, 0xC9, 0xCE, 0xD5, - 0xF8, 0x77, 0x9F, 0xE7, 0x9C, 0x97, 0x4F, 0x96, 0x95, 0x05, 0xC8, 0x7C, 0x1D, 0xFF, 0x00, 0x49, - 0x72, 0xBA, 0xAB, 0x64, 0x4A, 0xD0, 0x4A, 0x9E, 0x3D, 0x59, 0x1E, 0x9E, 0xAE, 0x8D, 0x1C, 0x98, - 0xE9, 0xB8, 0xAC, 0x55, 0xBE, 0x2A, 0x64, 0xB6, 0xC9, 0x62, 0xBB, 0x7A, 0x6F, 0xCB, 0xEF, 0x2C, - 0x69, 0xB5, 0x3A, 0xCD, 0x26, 0x1E, 0xDB, 0x5D, 0xF0, 0xEF, 0xCA, 0xB7, 0x39, 0x3B, 0xF8, 0x77, - 0x9F, 0x0E, 0x53, 0xB0, 0xD4, 0xDE, 0xB4, 0xC0, 0xB7, 0x0E, 0xDD, 0xB6, 0x01, 0x39, 0xF5, 0xEB, - 0x39, 0xEE, 0x38, 0xFF, 0x00, 0xF1, 0x45, 0xEA, 0xD8, 0x3F, 0x56, 0x51, 0x96, 0xEE, 0x5E, 0x4F, - 0xF3, 0x98, 0x0A, 0x36, 0x2E, 0xA7, 0x25, 0x32, 0xE6, 0xB5, 0xE9, 0x46, 0x85, 0x9D, 0xFB, 0x3B, - 0xEF, 0xB3, 0xDF, 0x21, 0x8A, 0x29, 0x77, 0x14, 0xA2, 0x8A, 0x28, 0xE2, 0xEB, 0x12, 0x32, 0x43, - 0x48, 0x29, 0x3B, 0x2F, 0x0C, 0x60, 0x48, 0xC9, 0x0D, 0x20, 0xA4, 0x2A, 0x18, 0x12, 0x0A, 0x49, - 0x12, 0x0A, 0x49, 0xA8, 0x68, 0xD2, 0x32, 0x43, 0x48, 0x29, 0x15, 0x43, 0x46, 0x91, 0x92, 0x48, - 0x90, 0x12, 0x2A, 0x86, 0x04, 0x82, 0x92, 0x44, 0x82, 0x90, 0xA8, 0x60, 0x48, 0x29, 0x0D, 0x23, - 0x24, 0x9A, 0xC6, 0x8F, 0x6D, 0x99, 0x23, 0xA8, 0xCF, 0xDA, 0xED, 0x39, 0xB2, 0x6F, 0xE3, 0xDA, - 0x64, 0xD5, 0xD0, 0xEA, 0x2F, 0xD3, 0x1A, 0x1E, 0x2F, 0x29, 0x63, 0x0F, 0x09, 0xB5, 0xAE, 0x19, - 0x32, 0x00, 0xBD, 0x2A, 0x6F, 0xFA, 0xC9, 0x53, 0xED, 0xAE, 0x18, 0xE4, 0xFA, 0xAB, 0x62, 0xCF, - 0xEF, 0xAE, 0x62, 0xCD, 0x51, 0x57, 0x62, 0xC1, 0xB2, 0x7A, 0xCB, 0x4E, 0x8B, 0x16, 0x14, 0xC9, - 0x8C, 0xB6, 0x6B, 0x75, 0x2C, 0x6F, 0xB1, 0xE9, 0xB7, 0xDE, 0x5C, 0xA7, 0x0E, 0xC3, 0xA6, 0x56, - 0xA1, 0x6B, 0x27, 0x26, 0xDC, 0xDD, 0xBF, 0x4F, 0xF1, 0x96, 0x34, 0x9A, 0x5D, 0x46, 0x5B, 0x85, - 0x40, 0xC2, 0xBB, 0x3B, 0xF4, 0x4E, 0xFD, 0xBC, 0xE6, 0x6A, 0x7C, 0xBA, 0xF8, 0xF8, 0xB2, 0x7D, - 0x94, 0x55, 0xAE, 0x43, 0x08, 0xE6, 0xC7, 0x5A, 0x29, 0xBE, 0xC2, 0x1F, 0x4F, 0x19, 0x4B, 0x3A, - 0x8B, 0xD9, 0xA2, 0x9E, 0x49, 0x36, 0xF5, 0xFA, 0x51, 0x1B, 0x96, 0x53, 0xBC, 0x3B, 0xA6, 0x25, - 0xCA, 0x16, 0x44, 0x5F, 0x8C, 0x91, 0xDD, 0xD1, 0x9E, 0x2E, 0x3D, 0x41, 0xA4, 0xD7, 0x63, 0xC5, - 0x91, 0xC7, 0x9E, 0xD7, 0xA5, 0x2E, 0xF3, 0xED, 0x57, 0xA3, 0xE3, 0x35, 0x71, 0xE0, 0x46, 0xFD, - 0x86, 0xB6, 0xDC, 0x13, 0x67, 0x9A, 0x7F, 0x8C, 0xCF, 0xAE, 0x3C, 0x39, 0x0D, 0xAE, 0x28, 0xF7, - 0x6F, 0xBF, 0xEB, 0x2F, 0xE8, 0xF4, 0xE5, 0x1A, 0x98, 0xF2, 0x6F, 0x4E, 0x9D, 0x9B, 0x9B, 0x81, - 0xE4, 0xF5, 0x3F, 0x4F, 0x28, 0x32, 0xC1, 0x7D, 0x34, 0x0E, 0x0A, 0xB9, 0x37, 0x46, 0xAF, 0x44, - 0x4D, 0xC6, 0x59, 0xD3, 0xE8, 0xAD, 0x5A, 0x64, 0x6A, 0x6F, 0x54, 0x11, 0x3B, 0xB6, 0xDF, 0xF7, - 0x93, 0x66, 0xD0, 0xEA, 0xAB, 0xBD, 0xF1, 0x8A, 0x75, 0xD9, 0xFC, 0xC2, 0x79, 0x3D, 0x76, 0xF9, - 0x47, 0xD1, 0xEA, 0x9C, 0x57, 0x0C, 0x94, 0x6B, 0xBF, 0x27, 0x6E, 0x64, 0x85, 0xFE, 0x4F, 0x69, - 0xD3, 0xEA, 0xB9, 0xC0, 0x74, 0xE7, 0xE2, 0x72, 0x5E, 0xC7, 0x3A, 0xE3, 0x41, 0x7C, 0xF6, 0x1F, - 0xA4, 0xAE, 0xE9, 0x6F, 0x6E, 0x26, 0x52, 0xE2, 0xFB, 0xAB, 0x36, 0x1F, 0x2D, 0xB9, 0x3F, 0xA4, - 0xDD, 0xE1, 0x95, 0xC7, 0x7B, 0x5A, 0xF4, 0xDB, 0x7B, 0x1B, 0x72, 0xEF, 0x96, 0xB1, 0xE8, 0x4C, - 0x9A, 0x87, 0x26, 0xDC, 0xFB, 0x0D, 0x5F, 0x98, 0x9F, 0x79, 0x0E, 0x5A, 0xDD, 0x62, 0x05, 0x4B, - 0xF0, 0x86, 0x5D, 0x17, 0x69, 0x3F, 0x3D, 0x37, 0xB1, 0xE2, 0x9D, 0xE7, 0xDE, 0x65, 0xE0, 0xE1, - 0x6E, 0x4C, 0xD7, 0xCD, 0x71, 0x0B, 0x2A, 0x3E, 0xBD, 0xC4, 0xEB, 0xB0, 0x69, 0x57, 0x29, 0x50, - 0xD8, 0x3A, 0xFA, 0x4A, 0x9C, 0x57, 0x2E, 0x9F, 0x87, 0x69, 0xED, 0x93, 0x20, 0x15, 0xAE, 0xE5, - 0x2A, 0x75, 0x5E, 0xE0, 0x91, 0xBE, 0xFA, 0x83, 0x32, 0xE5, 0xF8, 0x8F, 0xBB, 0xD2, 0x61, 0x5B, - 0x9B, 0xBB, 0x6D, 0x5A, 0x1C, 0xB7, 0xFD, 0x8F, 0x16, 0x72, 0x5A, 0x9B, 0x7E, 0x23, 0x3B, 0x93, - 0x35, 0xBB, 0x76, 0x7A, 0x15, 0xE8, 0x1E, 0x07, 0x94, 0xD1, 0xE2, 0x19, 0x75, 0x1C, 0x47, 0x53, - 0x6C, 0xB9, 0x94, 0x17, 0x62, 0xA7, 0x40, 0xEE, 0x24, 0x0E, 0x2C, 0x58, 0x7F, 0xD4, 0xB1, 0xBF, - 0x80, 0x6E, 0xCD, 0xF1, 0xE8, 0xEE, 0xCD, 0xC9, 0xC9, 0xD5, 0x56, 0xA5, 0xD3, 0x6A, 0x85, 0x0F, - 0x0A, 0x9B, 0x7D, 0x7A, 0xC9, 0xB1, 0x69, 0xAD, 0x67, 0x74, 0x56, 0x1B, 0x96, 0xC5, 0x57, 0x1E, - 0x2A, 0xD2, 0xA7, 0x5B, 0x64, 0x76, 0x0F, 0xB7, 0xD6, 0x53, 0xCF, 0xAF, 0xA9, 0xB9, 0x6D, 0x46, - 0x4C, 0x8F, 0xF6, 0xE3, 0xFC, 0xA7, 0xA6, 0xFF, 0x00, 0xFD, 0xC7, 0xB5, 0xF5, 0x50, 0xE2, 0x76, - 0xDA, 0x86, 0x3C, 0x78, 0x76, 0x73, 0x64, 0xA5, 0x3C, 0x97, 0x9F, 0xCB, 0xAC, 0x4F, 0x10, 0x0F, - 0xC9, 0xA4, 0xA3, 0xFF, 0x00, 0x3B, 0x1F, 0xA1, 0xFB, 0xFC, 0xA7, 0x3D, 0x6D, 0x62, 0x2F, 0xBA, - 0xC5, 0x4A, 0x79, 0xBB, 0xAF, 0xED, 0xF4, 0x8D, 0x5D, 0x7E, 0xA6, 0xBD, 0x32, 0x6D, 0xE8, 0x04, - 0x5E, 0x3F, 0xDA, 0xFF, 0x00, 0xF4, 0x87, 0x41, 0x74, 0x74, 0xED, 0xD8, 0x72, 0x66, 0xBE, 0xC1, - 0xCD, 0xB5, 0x9F, 0xD5, 0x66, 0x27, 0x17, 0xD6, 0x57, 0x53, 0x96, 0xB4, 0xC3, 0xCF, 0x1D, 0x37, - 0xD9, 0xF1, 0x7B, 0xD9, 0x4B, 0x2E, 0xA7, 0x36, 0x6F, 0xF5, 0x72, 0x5E, 0xFB, 0x74, 0xED, 0x59, - 0x76, 0x91, 0x46, 0x63, 0xAB, 0x2E, 0x4E, 0x77, 0x33, 0xC4, 0xF5, 0x38, 0x3C, 0xE3, 0x4B, 0xF8, - 0x74, 0xDB, 0xF0, 0xFC, 0x99, 0x36, 0xDE, 0xD6, 0x79, 0x7A, 0x0F, 0x3F, 0xF3, 0xCA, 0x50, 0x94, - 0x3B, 0xB0, 0x71, 0x43, 0x72, 0x85, 0x4A, 0x5A, 0xF6, 0x2B, 0x53, 0x75, 0xE8, 0x12, 0x6D, 0x11, - 0x8E, 0xDA, 0xAC, 0x74, 0xCA, 0x6F, 0x8E, 0xF6, 0x2B, 0x6F, 0x10, 0x79, 0x6E, 0x79, 0xCD, 0x77, - 0x85, 0x5F, 0x87, 0xDE, 0xD7, 0x52, 0xF4, 0xB3, 0xB5, 0x2E, 0x1D, 0xDE, 0x7E, 0x0C, 0x16, 0xAC, - 0x38, 0xDC, 0x8D, 0x9E, 0xAD, 0x14, 0x82, 0x90, 0xD2, 0x32, 0x4E, 0xEB, 0xE7, 0x46, 0x8D, 0x23, - 0x24, 0x34, 0x82, 0x91, 0x56, 0x30, 0x24, 0x64, 0x96, 0x31, 0xE9, 0xF2, 0x65, 0xC5, 0x93, 0x25, - 0x03, 0xB3, 0x88, 0x1B, 0x6E, 0x83, 0xB2, 0xED, 0xC8, 0xEF, 0x90, 0x24, 0x5D, 0x54, 0x6C, 0x81, - 0x20, 0xA4, 0x91, 0x20, 0xA4, 0x55, 0x0D, 0x1A, 0x46, 0x48, 0x69, 0x05, 0x22, 0xA8, 0x68, 0xD2, - 0x32, 0x49, 0x12, 0x02, 0x45, 0x50, 0xC0, 0x90, 0x52, 0x48, 0x90, 0x52, 0x15, 0x0D, 0x6F, 0x45, - 0xC4, 0x1C, 0x1B, 0x53, 0x35, 0x1C, 0x98, 0xFB, 0xB6, 0x76, 0x4F, 0x4F, 0x1F, 0x49, 0xB5, 0xA4, - 0xCB, 0xA2, 0xD4, 0x5E, 0xAE, 0x1D, 0x4D, 0x07, 0x7F, 0xE9, 0xBF, 0xE5, 0x7D, 0x36, 0x7A, 0xFC, - 0x37, 0x9C, 0xC2, 0x47, 0xAD, 0x2D, 0x7B, 0x15, 0xA5, 0x5B, 0x2F, 0x40, 0x37, 0x59, 0x9B, 0x88, - 0xDD, 0x3C, 0x7C, 0xB9, 0x63, 0xD6, 0xB7, 0x76, 0x27, 0x0F, 0xCB, 0xA8, 0xCE, 0x06, 0xC2, 0xA0, - 0x6F, 0xDC, 0x4D, 0xBB, 0xE9, 0x6B, 0x8F, 0x19, 0x5C, 0x66, 0xC0, 0x6C, 0x6C, 0x74, 0x27, 0x31, - 0xC1, 0x30, 0x6A, 0x38, 0x75, 0x5C, 0xD9, 0xB2, 0xE4, 0xAD, 0xAC, 0x6D, 0x5C, 0x65, 0xDD, 0xAA, - 0x78, 0xA7, 0x4D, 0xFF, 0x00, 0x49, 0x77, 0x53, 0xA8, 0xC9, 0x90, 0x6C, 0x65, 0xBA, 0x3D, 0xFD, - 0xA6, 0x61, 0x91, 0xB7, 0x45, 0xEB, 0xF1, 0x3A, 0xC7, 0x69, 0xA6, 0x93, 0x57, 0xA7, 0xB9, 0x65, - 0x39, 0x33, 0x2B, 0x3F, 0x0D, 0x72, 0xAB, 0x8F, 0x62, 0xDD, 0xF5, 0x5E, 0x4F, 0xA4, 0x83, 0x55, - 0x7C, 0x80, 0xB6, 0xC9, 0x6A, 0x9E, 0x2D, 0x99, 0x93, 0x9B, 0x3E, 0xF6, 0xE5, 0xBD, 0xD3, 0xA3, - 0x65, 0xDB, 0xE5, 0x19, 0x8B, 0xF2, 0xC3, 0x97, 0x98, 0xFB, 0x68, 0x5B, 0x05, 0xB0, 0x5B, 0x6B, - 0x0A, 0x9D, 0xC1, 0xBC, 0xB1, 0xA7, 0xCB, 0x71, 0x36, 0xC6, 0xED, 0xE6, 0xCC, 0xBC, 0x5C, 0x4B, - 0x57, 0x5D, 0xAB, 0x67, 0xB7, 0x5F, 0x0E, 0x89, 0xE8, 0x9C, 0xFE, 0x7B, 0xCB, 0xB8, 0x75, 0x58, - 0xB2, 0xA7, 0xBC, 0xB5, 0xEA, 0xF7, 0x96, 0x37, 0x3E, 0x67, 0x3F, 0xA4, 0x68, 0xFD, 0xB2, 0x33, - 0x1F, 0x57, 0x47, 0xC3, 0xF5, 0xB6, 0xC6, 0x86, 0x40, 0xEC, 0xEF, 0xCC, 0xDF, 0x99, 0xE6, 0x4D, - 0xEB, 0x70, 0xDD, 0x26, 0xBB, 0x19, 0x96, 0x85, 0x77, 0xB1, 0xB9, 0x6A, 0xF8, 0xF9, 0x93, 0x93, - 0xD1, 0x69, 0xA9, 0x9D, 0x3D, 0xDD, 0xE8, 0xFA, 0x3F, 0x69, 0xD4, 0x70, 0xEC, 0x36, 0xC1, 0x8A, - 0xB5, 0x2D, 0x6A, 0xA7, 0x79, 0xDE, 0x4E, 0x7C, 0xFA, 0x7D, 0xDD, 0x58, 0x63, 0x92, 0x6F, 0xE4, - 0xD8, 0xB8, 0x7E, 0x4D, 0x16, 0x62, 0xC1, 0xBD, 0x7A, 0x6E, 0x74, 0x66, 0xD6, 0x93, 0x18, 0x5A, - 0xC2, 0x75, 0x37, 0x8B, 0x4F, 0x66, 0xC6, 0xD9, 0x11, 0x3F, 0x5F, 0x84, 0xB1, 0x8E, 0x8D, 0x72, - 0x55, 0xAA, 0x35, 0x79, 0x74, 0xE6, 0x4C, 0xD7, 0x74, 0x66, 0xFC, 0x96, 0x4E, 0xCE, 0x9F, 0x05, - 0xB2, 0x3D, 0xC6, 0xEC, 0xE2, 0xB8, 0xA6, 0x3C, 0xDC, 0x43, 0x54, 0xE4, 0xCC, 0xED, 0x53, 0x95, - 0x2B, 0xDC, 0x1F, 0xBC, 0xED, 0x75, 0xB5, 0x72, 0x62, 0x6B, 0xB6, 0xE6, 0xDF, 0x59, 0xC7, 0x7B, - 0x4D, 0xC5, 0xF4, 0x7C, 0x07, 0x02, 0x5F, 0xB3, 0x97, 0x59, 0x73, 0x7C, 0x78, 0x47, 0xA7, 0x9D, - 0xBC, 0x0F, 0xAB, 0xDD, 0xDE, 0x86, 0x1B, 0x5E, 0xAA, 0xE2, 0xFC, 0x66, 0x2E, 0x59, 0xDC, 0xFF, - 0x00, 0x16, 0x30, 0xE8, 0xB1, 0x15, 0xC9, 0x92, 0xB8, 0x47, 0x9A, 0xAF, 0x34, 0xF2, 0x3A, 0xFC, - 0xA7, 0x35, 0xA9, 0xE2, 0xB8, 0xE8, 0xB5, 0xD2, 0x62, 0xDD, 0xFE, 0xFB, 0xFD, 0x8F, 0xDF, 0xE5, - 0x28, 0xEB, 0x35, 0x59, 0xB5, 0x9A, 0x9B, 0xEA, 0x35, 0x37, 0x6F, 0x92, 0xEE, 0xEA, 0xFD, 0xBC, - 0x0F, 0x29, 0x5D, 0x9D, 0x58, 0xE3, 0xA3, 0xBB, 0x0E, 0x4E, 0x4F, 0x2C, 0xB6, 0x52, 0x66, 0xD4, - 0x65, 0xCF, 0x6E, 0xD6, 0x5B, 0xB6, 0x7B, 0xB7, 0x79, 0x1E, 0x87, 0x74, 0x8A, 0x28, 0xA5, 0x59, - 0xCA, 0x38, 0x2B, 0xB1, 0x2D, 0x53, 0x47, 0x6B, 0xE9, 0x7D, 0xED, 0x5D, 0xEE, 0xBC, 0xAB, 0xE2, - 0x78, 0xFA, 0xEF, 0x03, 0x4B, 0x5B, 0x57, 0x53, 0x45, 0xA5, 0xB9, 0x3C, 0xCD, 0x9E, 0x50, 0xDC, - 0xF4, 0xC5, 0x8B, 0x46, 0xDA, 0xF5, 0x32, 0xDC, 0xC6, 0x28, 0x73, 0x37, 0x7E, 0x52, 0xFE, 0xBF, - 0x80, 0xDF, 0x4F, 0x47, 0x26, 0x0C, 0xBE, 0xF6, 0x87, 0x37, 0x96, 0xC9, 0xF5, 0x94, 0xF5, 0x5E, - 0xF2, 0xB7, 0x5B, 0x09, 0xB3, 0xDE, 0x6D, 0x3A, 0x2D, 0x26, 0xAC, 0xB6, 0x1A, 0xAB, 0xC9, 0x06, - 0x4A, 0xEA, 0xDF, 0x8B, 0x8F, 0x1C, 0xBA, 0x7D, 0xD8, 0xBA, 0x7C, 0x8D, 0x34, 0xF5, 0xAB, 0xB8, - 0x9D, 0x46, 0x55, 0xD5, 0x61, 0x0F, 0xE7, 0x63, 0x3F, 0x2B, 0xD4, 0xF0, 0x7F, 0x69, 0xB1, 0xC5, - 0x34, 0x5B, 0x06, 0xA7, 0x4B, 0x5D, 0xF1, 0xA1, 0xDB, 0xA9, 0xDD, 0xE9, 0xE5, 0x32, 0xB1, 0xE5, - 0x0B, 0x35, 0x4D, 0xEA, 0xF2, 0x47, 0xBC, 0x8C, 0x8E, 0x4C, 0x75, 0xFA, 0xB0, 0x70, 0xCC, 0x6E, - 0x4D, 0x7E, 0x2F, 0x0A, 0xBD, 0xA7, 0xD0, 0xE7, 0xF6, 0x9D, 0x6E, 0xA7, 0x25, 0x32, 0x68, 0xFD, - 0xCD, 0x9E, 0xA7, 0xC9, 0xF1, 0xF9, 0xCC, 0x3E, 0x19, 0xA7, 0x30, 0xD7, 0x2E, 0x67, 0x99, 0x64, - 0xA5, 0x5F, 0x2E, 0xAF, 0xDB, 0xEB, 0x27, 0xCB, 0xA8, 0x5B, 0xF6, 0x45, 0x6C, 0xBD, 0x3C, 0x3C, - 0xA4, 0xE5, 0xDB, 0x69, 0xC3, 0xFA, 0xE3, 0xDF, 0xDB, 0x41, 0x20, 0xA4, 0x91, 0x20, 0xA4, 0xF4, - 0xAF, 0x92, 0x18, 0x12, 0x0A, 0x43, 0x49, 0x26, 0x5D, 0x2E, 0x6C, 0x78, 0xAB, 0x9A, 0xF8, 0xED, - 0x5C, 0x77, 0xFE, 0x9B, 0x27, 0x27, 0xD2, 0x4A, 0x85, 0x66, 0xDF, 0x55, 0x67, 0x7E, 0x7B, 0x46, - 0x48, 0x69, 0x07, 0x6D, 0xDE, 0x90, 0xA8, 0x60, 0x48, 0xC9, 0x0D, 0x20, 0xA4, 0x2A, 0x18, 0x12, - 0x0A, 0x49, 0x7D, 0xDD, 0xDA, 0x36, 0x2A, 0xED, 0xE3, 0xB7, 0x28, 0x09, 0x26, 0xA2, 0x8D, 0x23, - 0x24, 0x34, 0x82, 0x91, 0x54, 0x34, 0x69, 0x19, 0x24, 0x89, 0x01, 0x22, 0xA8, 0x61, 0x16, 0xB6, - 0x13, 0x92, 0x3B, 0x93, 0xA3, 0xE1, 0xD9, 0xAB, 0x97, 0x01, 0x7A, 0x00, 0xF4, 0xB0, 0x77, 0x33, - 0x9D, 0x49, 0x36, 0x97, 0x55, 0x97, 0x49, 0x97, 0xB7, 0x8F, 0x64, 0x79, 0x35, 0x7A, 0x24, 0x8C, - 0xF1, 0xD9, 0xD5, 0xD5, 0xFE, 0x6E, 0x63, 0x8F, 0x2D, 0xBE, 0xAE, 0x83, 0x35, 0x94, 0x65, 0x0C, - 0xAE, 0x41, 0x7B, 0x36, 0xB1, 0xBF, 0x83, 0xB4, 0x90, 0xE3, 0x3A, 0x4B, 0x53, 0x7C, 0x98, 0x72, - 0x96, 0xEF, 0x0D, 0x93, 0xE7, 0xB9, 0xFA, 0x4A, 0x7A, 0x9E, 0x2A, 0x58, 0x4D, 0x3E, 0x12, 0x9F, - 0xFB, 0x59, 0xDD, 0xF8, 0x1D, 0x3F, 0x59, 0x91, 0x8B, 0xFC, 0xBD, 0x0E, 0x4E, 0x6E, 0x34, 0xD9, - 0x95, 0x1E, 0x5C, 0x77, 0xBA, 0xDA, 0xEB, 0xB7, 0x8D, 0x9F, 0xBB, 0x20, 0x6B, 0xA6, 0xAB, 0xF9, - 0xF3, 0x0B, 0xE1, 0x51, 0x5F, 0x9F, 0x4F, 0xAC, 0xAF, 0x97, 0x25, 0xF2, 0xDB, 0xB5, 0x92, 0xED, - 0x9F, 0x15, 0x91, 0xA4, 0xD3, 0xC6, 0xE2, 0x79, 0x45, 0xEA, 0xB7, 0xF8, 0x9D, 0x2D, 0x3F, 0xA7, - 0x1E, 0x4B, 0xFA, 0xEC, 0x7E, 0xF1, 0x7F, 0xE4, 0x6B, 0x5F, 0xE8, 0xD3, 0x54, 0xF5, 0xB2, 0xFD, - 0x89, 0x49, 0x20, 0xA4, 0x5E, 0x24, 0xBF, 0x22, 0xDA, 0x78, 0x38, 0xF6, 0xAB, 0x4F, 0x6D, 0xF1, - 0xE1, 0xC0, 0x1E, 0x1B, 0x3F, 0xBC, 0xD5, 0xD2, 0xFB, 0x6B, 0x93, 0x1A, 0x7B, 0xED, 0x28, 0x87, - 0x5E, 0xCA, 0x7F, 0xD4, 0xE5, 0x92, 0x0A, 0x49, 0x78, 0xF1, 0x7D, 0x96, 0x98, 0xF3, 0xE7, 0x89, - 0xA1, 0xBD, 0x1B, 0x49, 0xFC, 0x41, 0xE1, 0x95, 0xD8, 0xCF, 0xA6, 0xD5, 0x0F, 0x8D, 0x6A, 0x27, - 0xFF, 0x00, 0xD4, 0xD5, 0xC1, 0xFC, 0x40, 0xF6, 0x75, 0x37, 0xB6, 0x7C, 0xF8, 0xDF, 0x0B, 0x61, - 0x5F, 0xD3, 0x79, 0xE4, 0x4C, 0x14, 0x99, 0xBC, 0x18, 0xB3, 0xFC, 0xB9, 0x3E, 0xEF, 0x73, 0xC3, - 0xC6, 0x30, 0xF1, 0x8E, 0x15, 0x93, 0x37, 0x09, 0xCA, 0x8D, 0xAA, 0x95, 0xC9, 0x6A, 0x73, 0xAB, - 0xCC, 0xDF, 0x67, 0xC1, 0xE7, 0xB3, 0x3C, 0x3F, 0x5E, 0xEA, 0x6D, 0xAE, 0xCE, 0xEB, 0x6F, 0x7B, - 0xEA, 0x4B, 0xA6, 0x46, 0xEE, 0xEB, 0x61, 0xD9, 0xDD, 0xF8, 0x4E, 0xB3, 0xF8, 0x7D, 0xC5, 0xDD, - 0x1F, 0x11, 0xB6, 0x87, 0x2B, 0xFC, 0xBC, 0xDF, 0x9A, 0x83, 0xD3, 0x7D, 0xB9, 0x9F, 0x10, 0xFA, - 0x46, 0xFE, 0x23, 0xF0, 0x7F, 0xC1, 0xF1, 0x5A, 0xF1, 0x0C, 0x35, 0xFE, 0x4E, 0xAC, 0xFC, 0xC8, - 0x72, 0x2E, 0x1F, 0x73, 0x67, 0xD4, 0x66, 0x5C, 0x7F, 0xA7, 0x23, 0x8B, 0x5A, 0xEF, 0x1B, 0x8A, - 0x48, 0x29, 0x24, 0x48, 0x29, 0x3A, 0x68, 0x18, 0x12, 0x28, 0xE9, 0x0A, 0x98, 0xEF, 0x92, 0xC5, - 0x71, 0xD5, 0xB2, 0xF7, 0x06, 0xF1, 0x54, 0x5A, 0xDA, 0x6B, 0x61, 0xAE, 0x2A, 0xB9, 0x2C, 0x2E, - 0xC6, 0xD5, 0x47, 0x6E, 0x9D, 0xEC, 0xB8, 0x60, 0xE2, 0x59, 0xEA, 0x7B, 0x9D, 0x16, 0x6C, 0x98, - 0xFB, 0x9A, 0xE3, 0x53, 0x6F, 0x27, 0x6D, 0xA5, 0xFE, 0x01, 0xC3, 0x4D, 0x2E, 0x13, 0x2E, 0xA3, - 0x09, 0x92, 0xFD, 0x4B, 0x26, 0xE5, 0x1F, 0x00, 0xFB, 0xCE, 0x97, 0x05, 0xB5, 0x17, 0x40, 0xDD, - 0xAB, 0xFE, 0xEE, 0xE3, 0xE3, 0x39, 0xB3, 0xE4, 0x47, 0x41, 0x74, 0x86, 0x49, 0xFA, 0x97, 0x09, - 0xAA, 0xBE, 0xA7, 0x4A, 0x98, 0xF5, 0xDA, 0x5B, 0xE3, 0x53, 0x91, 0x92, 0x8D, 0x77, 0x3C, 0xB7, - 0xE4, 0xC2, 0xD3, 0x5F, 0x0E, 0x6C, 0x6D, 0x71, 0xAE, 0x3B, 0x57, 0x9E, 0xDD, 0x4D, 0xA7, 0xA0, - 0x6A, 0xBF, 0x0C, 0xE9, 0x9C, 0x19, 0xA8, 0x64, 0x13, 0x9D, 0x93, 0x77, 0x7F, 0x13, 0xC2, 0x70, - 0xFC, 0x47, 0x4C, 0xE8, 0xB5, 0x7D, 0xBA, 0xD4, 0xBD, 0x7A, 0x88, 0x6D, 0xB9, 0xDE, 0x7A, 0xCA, - 0xC7, 0x3F, 0x23, 0x49, 0x69, 0x8E, 0x29, 0xDB, 0x0E, 0x9F, 0x3E, 0x4C, 0x5D, 0xAA, 0x5C, 0x2D, - 0x55, 0xDB, 0x97, 0x31, 0x94, 0x75, 0xF8, 0x71, 0xAF, 0x6C, 0x0D, 0xAD, 0xD2, 0xC7, 0x5D, 0xFC, - 0x1F, 0x39, 0x36, 0xA7, 0x17, 0x6B, 0x0F, 0xBC, 0xC3, 0x67, 0x65, 0xDC, 0xF2, 0xFD, 0x98, 0x5A, - 0x3C, 0xF4, 0xD4, 0xA6, 0x93, 0x5B, 0x45, 0x6E, 0x95, 0xED, 0x1C, 0xAC, 0x2F, 0x47, 0xCE, 0x68, - 0x7F, 0x63, 0x2E, 0xCF, 0x16, 0x9B, 0x48, 0x35, 0xD0, 0x54, 0x43, 0x7C, 0x54, 0xED, 0x0B, 0xDF, - 0x6B, 0x6E, 0x87, 0xCB, 0xF4, 0x83, 0xA1, 0xC0, 0xE2, 0xC6, 0xEA, 0xF5, 0x03, 0xEF, 0x15, 0x29, - 0x57, 0xA9, 0xE6, 0xFF, 0x00, 0x9E, 0x12, 0xE7, 0x12, 0xD2, 0x64, 0xD1, 0x63, 0xC3, 0x41, 0x2F, - 0x8E, 0xF7, 0x5A, 0xDC, 0xE8, 0x87, 0x20, 0xF5, 0x36, 0xE6, 0x46, 0xE2, 0x23, 0x7F, 0x77, 0x6A, - 0x1C, 0x83, 0xB2, 0x9E, 0x7D, 0xCF, 0xC7, 0xED, 0x12, 0xC6, 0x26, 0x90, 0x6B, 0x25, 0x77, 0xB0, - 0x78, 0xB3, 0x5B, 0x57, 0xC2, 0x29, 0x83, 0x85, 0xE3, 0xD5, 0x99, 0xAA, 0xB7, 0xFF, 0x00, 0x68, - 0xF3, 0x26, 0x4B, 0xE5, 0x0E, 0xF9, 0xB2, 0xDA, 0x9D, 0x96, 0xCA, 0x1D, 0xDB, 0xCE, 0xFC, 0xB1, - 0xC9, 0x4D, 0x37, 0xCA, 0x71, 0xE5, 0x88, 0x22, 0x55, 0xD2, 0x4B, 0x97, 0x55, 0x9F, 0x2E, 0x0C, - 0x78, 0x2F, 0x91, 0x71, 0xE3, 0xDF, 0xB3, 0x55, 0xE4, 0x6F, 0xE1, 0x01, 0x20, 0xA4, 0xA4, 0x1F, - 0x72, 0x32, 0x4E, 0x88, 0x12, 0x3E, 0x2C, 0x96, 0xC3, 0x9A, 0xB9, 0x68, 0x85, 0xA8, 0x88, 0xA0, - 0x9B, 0x9E, 0x4C, 0x49, 0x19, 0x20, 0x9B, 0xA8, 0x75, 0x0E, 0x4B, 0x39, 0x2F, 0x6B, 0xDB, 0x6D, - 0xEC, 0xAB, 0xB1, 0xDE, 0xC0, 0x45, 0xE8, 0x43, 0x49, 0xAB, 0xC0, 0x74, 0xBA, 0x6D, 0x4E, 0xAE, - 0xB4, 0xD4, 0xDC, 0xA5, 0x1E, 0xF5, 0x91, 0x9A, 0x62, 0x6D, 0xB4, 0xC0, 0x72, 0x75, 0x55, 0xA7, - 0x12, 0xB6, 0x3E, 0x17, 0x7D, 0x0F, 0xB9, 0xC6, 0x96, 0xB0, 0xF6, 0xD3, 0x99, 0xE5, 0xBC, 0xCE, - 0x49, 0xAD, 0xC7, 0x74, 0xDA, 0x7D, 0x36, 0xB2, 0xD4, 0xD3, 0x5C, 0xB5, 0x07, 0x61, 0x3B, 0xE6, - 0x52, 0x49, 0xC3, 0x49, 0xB3, 0xED, 0x79, 0xEC, 0x74, 0xC0, 0x90, 0x52, 0x48, 0x90, 0x52, 0x54, - 0x86, 0x8D, 0x23, 0x24, 0x34, 0x82, 0x91, 0x54, 0x34, 0x69, 0x19, 0x24, 0x89, 0x01, 0x22, 0xA8, - 0x60, 0x48, 0x29, 0x24, 0x48, 0x29, 0x0A, 0x86, 0x04, 0x82, 0x90, 0xD2, 0x32, 0x49, 0xAC, 0x68, - 0xD2, 0x32, 0x43, 0x48, 0x29, 0x15, 0x43, 0x02, 0x46, 0x48, 0x69, 0x05, 0x21, 0x31, 0x81, 0x20, - 0xA4, 0x91, 0x20, 0xA4, 0x55, 0x0C, 0xB0, 0xE5, 0xBE, 0x0C, 0xD4, 0xCD, 0x8A, 0xCD, 0x72, 0x52, - 0xC5, 0xAA, 0x9D, 0xC8, 0xEE, 0x4F, 0x56, 0x2D, 0x83, 0xDB, 0x0F, 0x63, 0xDC, 0x7F, 0x94, 0xCA, - 0xD3, 0x73, 0xFF, 0x00, 0x4B, 0x9D, 0x3E, 0x03, 0xF4, 0x67, 0x93, 0xA4, 0xE9, 0x3D, 0x89, 0xE3, - 0x4F, 0x0B, 0xE2, 0x66, 0x1C, 0x96, 0xFE, 0x46, 0x74, 0x11, 0x79, 0x16, 0xE9, 0xF5, 0xE9, 0xF2, - 0x9C, 0xDC, 0xFC, 0x7B, 0x3C, 0x8F, 0x65, 0xAE, 0x39, 0x7C, 0xB9, 0x9C, 0xD8, 0xAF, 0x83, 0x35, - 0xF1, 0x65, 0xAB, 0x4C, 0x94, 0xB3, 0x5B, 0x55, 0xEA, 0x23, 0xB2, 0x48, 0x92, 0x77, 0x1F, 0xC4, - 0x4E, 0x0C, 0x62, 0xD4, 0xE3, 0xE2, 0xFA, 0x5A, 0xEF, 0x87, 0x51, 0xB1, 0x93, 0x63, 0x91, 0x6D, - 0xB9, 0x3F, 0x10, 0xDB, 0xD4, 0xF3, 0x9C, 0x4A, 0x4B, 0xE3, 0xCC, 0xCF, 0x11, 0x9B, 0xD3, 0x46, - 0x93, 0x43, 0x84, 0xE2, 0x4C, 0xB6, 0xD4, 0x77, 0x63, 0x36, 0x37, 0xEF, 0x77, 0xFD, 0xBF, 0x59, - 0x45, 0x27, 0x51, 0xC3, 0x34, 0x34, 0xAE, 0x97, 0x11, 0x91, 0x2B, 0x52, 0x85, 0xEE, 0xF2, 0xDD, - 0x5E, 0x61, 0xEB, 0xF6, 0x1F, 0x08, 0x72, 0x3A, 0x2A, 0x17, 0xE5, 0xAD, 0xC2, 0xB5, 0xD8, 0xEF, - 0x8E, 0xD4, 0x77, 0xA6, 0x43, 0x6B, 0x03, 0xD3, 0x67, 0xBF, 0x7F, 0xDF, 0xCB, 0xE3, 0xA3, 0x5C, - 0xF9, 0xEB, 0x46, 0xE6, 0xF7, 0x1E, 0x81, 0xCC, 0xDA, 0x53, 0xE1, 0xFA, 0x0C, 0x2E, 0xA6, 0x97, - 0xD3, 0xE3, 0x1B, 0x2E, 0xED, 0xDF, 0xCC, 0xA7, 0x7E, 0xEF, 0x4F, 0x91, 0x34, 0xF5, 0xBA, 0xDD, - 0x16, 0x0A, 0x76, 0x73, 0x64, 0xC4, 0x6C, 0x6D, 0xF9, 0x55, 0xFA, 0x03, 0xB4, 0xE7, 0x72, 0x37, - 0xD1, 0xBB, 0xD1, 0xE1, 0x53, 0x1E, 0xEC, 0x8D, 0x56, 0xA2, 0xF7, 0x76, 0xBD, 0x32, 0x63, 0x7B, - 0xAD, 0xD9, 0x53, 0xF7, 0x25, 0x52, 0xB9, 0x32, 0x8E, 0x3C, 0xD8, 0xCB, 0xD7, 0xC7, 0x73, 0x6F, - 0x9F, 0x73, 0x25, 0xCB, 0xC5, 0xF8, 0x35, 0xAC, 0x99, 0x32, 0xD8, 0x37, 0xEA, 0x52, 0xC9, 0xFA, - 0x49, 0xF4, 0x47, 0x0B, 0xD5, 0x5C, 0xFC, 0x1E, 0xBF, 0x15, 0xEC, 0xF4, 0xA5, 0x9E, 0xC5, 0xBE, - 0x03, 0xB3, 0x27, 0x27, 0xFF, 0x00, 0x92, 0xCF, 0x90, 0xCB, 0xAA, 0xB6, 0x3E, 0x0D, 0xDA, 0x17, - 0x02, 0xA5, 0xBA, 0xD6, 0xDD, 0x57, 0xC9, 0xE8, 0xFF, 0x00, 0x9C, 0xE4, 0x7A, 0x3E, 0x0E, 0xBA, - 0xBD, 0xEF, 0x5E, 0x54, 0xAB, 0x61, 0xDB, 0x98, 0xF4, 0x04, 0xF5, 0x7E, 0x93, 0xAA, 0xD3, 0x69, - 0x1C, 0x6E, 0xD6, 0x1F, 0x8F, 0x3F, 0xF3, 0xE7, 0x2E, 0x57, 0x41, 0x6A, 0xEA, 0x6D, 0x92, 0xB5, - 0x1A, 0xE4, 0xA3, 0xB8, 0x75, 0x1D, 0xCD, 0xFE, 0x7D, 0x7E, 0x71, 0x61, 0xC8, 0xEF, 0x4D, 0x03, - 0xF1, 0xB9, 0x9E, 0x1F, 0x47, 0x2A, 0xF0, 0xFD, 0x65, 0x77, 0xAB, 0xBE, 0xCF, 0x82, 0x3B, 0x89, - 0xFE, 0x78, 0x90, 0x4E, 0x1C, 0xE1, 0xB6, 0x63, 0x30, 0x25, 0x1E, 0x5E, 0x0A, 0x74, 0x67, 0x4F, - 0x4E, 0x19, 0x5B, 0x64, 0xAE, 0x5A, 0x9B, 0x5A, 0x9B, 0xED, 0xE8, 0x9C, 0xCF, 0xBC, 0xAF, 0xC4, - 0xF4, 0x96, 0xCF, 0x5C, 0x78, 0xE8, 0x3B, 0xDC, 0xD9, 0xDB, 0xAB, 0xE5, 0x34, 0x73, 0xDC, 0xF7, - 0xBF, 0x57, 0x26, 0x90, 0x52, 0x1C, 0x64, 0x9E, 0xC5, 0xF1, 0xC3, 0x46, 0x91, 0x92, 0x1A, 0x41, - 0x48, 0xAA, 0x18, 0x12, 0x0A, 0x49, 0x12, 0x0A, 0x42, 0xA1, 0x81, 0x22, 0xA5, 0xEF, 0x8D, 0xDE, - 0xAA, 0x31, 0xD2, 0x32, 0x44, 0x95, 0x8E, 0xA1, 0xBD, 0xAD, 0x77, 0x7B, 0x2A, 0xC0, 0x48, 0x69, - 0x05, 0x22, 0xD5, 0x5B, 0xDC, 0x58, 0xAD, 0x86, 0xB4, 0xCA, 0x66, 0xC7, 0x6B, 0xD9, 0xAE, 0xD4, - 0x4B, 0x6C, 0x55, 0xDF, 0xAB, 0xE3, 0xCB, 0x79, 0x0A, 0x43, 0x48, 0x29, 0x16, 0xAA, 0x18, 0x12, - 0x30, 0x0A, 0x0B, 0xB0, 0xBC, 0xDF, 0x08, 0x69, 0x11, 0x8E, 0xC9, 0xB8, 0x29, 0x13, 0x50, 0xCD, - 0xA9, 0xC5, 0x4C, 0x59, 0xED, 0x4C, 0x59, 0x4C, 0xB4, 0x1D, 0x8B, 0x82, 0x0F, 0xC1, 0xE7, 0x21, - 0x48, 0x69, 0xB3, 0xB7, 0x7C, 0x14, 0x8B, 0x55, 0x6F, 0xB8, 0xEB, 0xA5, 0xCD, 0x7C, 0x4E, 0x5A, - 0xD1, 0x6A, 0x75, 0x76, 0x95, 0xD3, 0x69, 0xB9, 0xA4, 0xE3, 0x99, 0x34, 0xDC, 0x27, 0x2E, 0x84, - 0xC7, 0x46, 0xB9, 0x36, 0xDD, 0x4E, 0x7C, 0xA6, 0x35, 0xB9, 0xAB, 0xB7, 0x59, 0x02, 0xAB, 0xB2, - 0xD1, 0xD0, 0x1A, 0xA2, 0x48, 0x29, 0x24, 0x48, 0xC8, 0x9D, 0xD2, 0xA6, 0x34, 0x69, 0x05, 0x21, - 0xA4, 0x64, 0x93, 0x50, 0xD1, 0xA4, 0x64, 0x86, 0x90, 0x52, 0x2A, 0x86, 0x04, 0x8C, 0x90, 0xD2, - 0x0A, 0x42, 0x63, 0x02, 0x41, 0xE6, 0x3B, 0x8E, 0xC9, 0x24, 0x48, 0x29, 0x26, 0xB1, 0xBD, 0x2F, - 0x80, 0x6A, 0x74, 0xDE, 0xD0, 0x70, 0x1C, 0x9C, 0x2F, 0x55, 0x98, 0xCC, 0xB4, 0x2A, 0xBB, 0x6C, - 0x8E, 0xDC, 0x9D, 0x9E, 0x8E, 0xE6, 0xE7, 0x99, 0x3C, 0xE3, 0x88, 0xE8, 0x73, 0x70, 0xED, 0x76, - 0x6D, 0x1E, 0xA0, 0xDB, 0x26, 0x2B, 0x22, 0xF7, 0x27, 0x72, 0x79, 0x26, 0xCC, 0xB1, 0xC1, 0xF8, - 0x8E, 0x4E, 0x17, 0xC4, 0x71, 0xEA, 0xB1, 0xAE, 0xC3, 0xB5, 0xC3, 0xBC, 0xEF, 0x9D, 0x9F, 0xB6, - 0x3C, 0x3B, 0x1F, 0x1A, 0xE1, 0x38, 0xB8, 0xDE, 0x84, 0x2D, 0x93, 0x1D, 0x3F, 0x98, 0x57, 0x9F, - 0x6A, 0xBD, 0x7E, 0x9D, 0x7D, 0x37, 0xF2, 0x9C, 0x61, 0xF8, 0x73, 0xD3, 0xE9, 0xB4, 0x1D, 0x97, - 0x07, 0xC3, 0xF1, 0xD7, 0x26, 0xB6, 0xA5, 0xC3, 0xB2, 0x0A, 0xEF, 0xD3, 0x6D, 0x99, 0xD1, 0x6B, - 0x35, 0xD8, 0xEA, 0xE3, 0xC7, 0x8F, 0x0B, 0x6B, 0x64, 0xA8, 0xE3, 0xAD, 0x44, 0x5E, 0x5B, 0x0B, - 0xE4, 0xF7, 0x7F, 0xF7, 0x39, 0xAD, 0x2E, 0x27, 0x3E, 0xAF, 0x16, 0x1A, 0xA8, 0xE5, 0xB9, 0x4E, - 0x5E, 0x68, 0x4E, 0x93, 0x3E, 0xAE, 0x94, 0xE3, 0x7A, 0x8D, 0x18, 0xF6, 0x4C, 0x49, 0x8F, 0x19, - 0xBF, 0x80, 0x09, 0xF3, 0xDE, 0x6B, 0xC8, 0x0A, 0x16, 0xDC, 0x21, 0x93, 0xE2, 0xB5, 0xAE, 0x18, - 0xEA, 0xB0, 0x61, 0xBE, 0x4D, 0x7D, 0xF6, 0xB5, 0xF9, 0x57, 0x1D, 0x4D, 0x8A, 0x1E, 0x67, 0x8F, - 0xCD, 0x3E, 0x3C, 0xAB, 0x6B, 0x6F, 0x8E, 0xCA, 0x8B, 0x65, 0xEE, 0x07, 0xEF, 0x26, 0xCB, 0xAC, - 0xCA, 0x57, 0x67, 0x15, 0x2E, 0x9D, 0xE8, 0xEE, 0xCC, 0xFD, 0x4F, 0x10, 0x31, 0x3F, 0x9F, 0x16, - 0x2A, 0x2F, 0x4E, 0xD2, 0xBF, 0x43, 0x9C, 0x40, 0x9E, 0x8B, 0xD2, 0x5C, 0x31, 0xC4, 0xC4, 0x6A, - 0x97, 0xC6, 0xD9, 0x76, 0xC6, 0x7C, 0x4D, 0xE2, 0xAE, 0x9F, 0x2D, 0xBA, 0x01, 0xE9, 0x53, 0xF6, - 0x91, 0x65, 0xE2, 0xC2, 0xBB, 0x36, 0x3C, 0xA9, 0x50, 0x3E, 0x6E, 0xEC, 0x82, 0xDC, 0x48, 0x5E, - 0x78, 0xAF, 0x6F, 0xF9, 0x64, 0x5F, 0xB4, 0xBD, 0x37, 0x26, 0x79, 0x61, 0xF1, 0xBA, 0x4E, 0x19, - 0xC4, 0x78, 0xA6, 0x8A, 0xD5, 0xA5, 0x73, 0x39, 0x31, 0x9C, 0x8A, 0x5B, 0x9E, 0xC7, 0x93, 0xD4, - 0xFD, 0x3C, 0xA7, 0x69, 0xC3, 0xB8, 0xCE, 0x5C, 0x9A, 0x76, 0xCE, 0x3E, 0xDD, 0xA8, 0x6E, 0xD5, - 0xE5, 0x6D, 0xBB, 0xFC, 0x9E, 0x5F, 0xE1, 0x3C, 0x9E, 0xBC, 0x5E, 0xD4, 0xFE, 0x8D, 0x36, 0x1F, - 0x8E, 0xEF, 0xDE, 0x6B, 0x70, 0xDF, 0x6C, 0x73, 0xE9, 0x72, 0x1E, 0xFF, 0x00, 0x49, 0x8B, 0x2D, - 0x0E, 0x9D, 0x8B, 0x35, 0xB7, 0xCF, 0x9E, 0xFF, 0x00, 0x29, 0x8E, 0x7C, 0x7B, 0xEC, 0x3B, 0x96, - 0x0E, 0x0B, 0xFB, 0x37, 0xB0, 0xE8, 0xB3, 0x61, 0xD5, 0xE3, 0x32, 0x63, 0x1A, 0xDB, 0xBC, 0x4D, - 0x98, 0xCE, 0x0A, 0x57, 0x2D, 0x96, 0xBB, 0x76, 0x37, 0xD9, 0x7C, 0x5F, 0x09, 0xC8, 0x70, 0x6F, - 0x6E, 0x78, 0x1E, 0x4C, 0x94, 0xC7, 0x7B, 0x6A, 0x34, 0xD9, 0x2E, 0x95, 0xDA, 0xF8, 0xF7, 0x37, - 0x5D, 0x8E, 0x62, 0xFE, 0x84, 0xDA, 0xF6, 0xA7, 0xDA, 0x8D, 0x3F, 0x01, 0xD0, 0x57, 0x37, 0xB9, - 0xB6, 0xA3, 0x2E, 0x57, 0xB3, 0x8E, 0xBD, 0x0D, 0xF6, 0xDF, 0x75, 0x79, 0xED, 0xCB, 0xB8, 0xF9, - 0x75, 0x98, 0xE9, 0x1D, 0x46, 0x48, 0x3F, 0xAB, 0xD5, 0xC3, 0xC5, 0x14, 0x53, 0xDE, 0xBE, 0x4E, - 0x64, 0x82, 0x90, 0xE3, 0x24, 0x50, 0x34, 0x69, 0x19, 0x21, 0xA4, 0x14, 0x8A, 0xA1, 0x81, 0x20, - 0xA4, 0x91, 0x20, 0xA4, 0x2A, 0x18, 0x12, 0x0A, 0x43, 0x48, 0xC9, 0x15, 0x43, 0x46, 0x91, 0x92, - 0x1A, 0x41, 0x48, 0xAB, 0x18, 0x36, 0xE7, 0x3A, 0x6E, 0x0A, 0xF0, 0xA3, 0x87, 0x66, 0x35, 0x67, - 0xF3, 0x7B, 0x3F, 0x93, 0xD7, 0x67, 0xFE, 0xBA, 0xCC, 0xED, 0x26, 0x2E, 0x1F, 0x6E, 0x19, 0x9E, - 0xFA, 0x8C, 0x96, 0x35, 0x26, 0xDE, 0xEE, 0xA1, 0xC9, 0xF1, 0xDE, 0x66, 0x76, 0x93, 0x70, 0x50, - 0x99, 0x64, 0x79, 0xEC, 0xF5, 0xAB, 0x7C, 0x32, 0xF0, 0xEF, 0xDC, 0x7A, 0xFC, 0x75, 0xC7, 0xAB, - 0xC9, 0x4A, 0x5A, 0xB6, 0xA8, 0xF2, 0x6A, 0xEE, 0x3E, 0x8C, 0xAA, 0x92, 0xD6, 0x4D, 0x4D, 0xF2, - 0x69, 0x71, 0xE9, 0xD2, 0x9D, 0x9A, 0x2A, 0x25, 0x41, 0x57, 0xC5, 0xEA, 0xF4, 0x91, 0xE7, 0xC1, - 0x93, 0x05, 0x8A, 0xE5, 0xAF, 0x65, 0xB5, 0x4B, 0x1C, 0xC7, 0x71, 0x37, 0x25, 0x1D, 0x1A, 0x64, - 0xBB, 0x76, 0x55, 0xD2, 0x32, 0x43, 0x48, 0x29, 0x08, 0x18, 0xB0, 0x5C, 0xC3, 0xA8, 0xC7, 0x93, - 0x26, 0x3E, 0xD5, 0x44, 0x5A, 0xA7, 0x24, 0x92, 0x71, 0x4D, 0x56, 0x3D, 0x66, 0xB6, 0xF9, 0xB0, - 0xE0, 0xAE, 0x1A, 0x5B, 0xA5, 0x2B, 0xD0, 0x92, 0x6B, 0x1D, 0x56, 0x7A, 0x69, 0xF2, 0x67, 0x6B, - 0x71, 0xA7, 0x67, 0x1F, 0x65, 0x37, 0x01, 0xDB, 0x64, 0x3A, 0x7C, 0x62, 0xE1, 0xB8, 0xF4, 0x4E, - 0xA5, 0x38, 0x8D, 0xB2, 0x53, 0x19, 0x57, 0x66, 0xA7, 0x3D, 0xF6, 0xE5, 0xF5, 0x99, 0xBA, 0xF7, - 0x6A, 0x6F, 0xD5, 0x9C, 0x90, 0x52, 0x4D, 0x90, 0xA9, 0x7B, 0x14, 0x56, 0xBB, 0xF2, 0xDF, 0xC2, - 0x46, 0x92, 0xE0, 0x60, 0x48, 0x29, 0x0D, 0x23, 0x24, 0x9A, 0x86, 0x8D, 0x23, 0x24, 0x34, 0x82, - 0x91, 0x54, 0x30, 0x24, 0x64, 0x86, 0x90, 0x52, 0x15, 0x0C, 0x09, 0x3A, 0xEF, 0x61, 0xF8, 0xD1, - 0x83, 0x33, 0xC2, 0xF5, 0x76, 0xFE, 0x4E, 0x6E, 0x54, 0x5E, 0xE7, 0xC3, 0xEF, 0x39, 0x34, 0x8C, - 0x2D, 0x6C, 0x5A, 0xAA, 0x58, 0x77, 0x11, 0xD9, 0x1F, 0x19, 0x97, 0x27, 0x19, 0x9E, 0x3A, 0xA8, - 0x74, 0xDD, 0x3F, 0x11, 0xE0, 0x9F, 0xF8, 0x9F, 0x6B, 0x74, 0x36, 0xC7, 0x5D, 0xB4, 0xB9, 0xB5, - 0x35, 0x69, 0xB7, 0x4A, 0xBD, 0xA3, 0x73, 0xD3, 0x9E, 0xE7, 0x97, 0xA3, 0x30, 0xFD, 0xA2, 0xAB, - 0x8F, 0xDA, 0x1D, 0x78, 0xEE, 0x3F, 0x88, 0xBA, 0x7A, 0x2A, 0x9F, 0x46, 0x77, 0x1C, 0x1B, 0x88, - 0x61, 0xF6, 0x83, 0x84, 0xD7, 0x16, 0xA5, 0x3F, 0x13, 0xA7, 0x6A, 0xDD, 0x3A, 0x88, 0xEF, 0x5B, - 0x9F, 0x13, 0xED, 0xD2, 0x72, 0xDE, 0xDB, 0xE2, 0xAE, 0x3F, 0x69, 0x73, 0xDA, 0x88, 0x99, 0x69, - 0x5B, 0x20, 0xF4, 0x76, 0x0F, 0xB6, 0xFF, 0x00, 0x19, 0xCD, 0xC3, 0x9B, 0xF9, 0x3C, 0x72, 0xF9, - 0x6B, 0xD6, 0xB6, 0x58, 0xBF, 0x8E, 0xD6, 0x14, 0xEC, 0x9A, 0x9C, 0xBB, 0x7F, 0xCD, 0xFD, 0x65, - 0x6B, 0x6F, 0x65, 0x55, 0x57, 0xAA, 0xBB, 0xAC, 0x24, 0x8C, 0x93, 0xAF, 0x53, 0x73, 0x5F, 0x74, - 0x69, 0x05, 0x24, 0x89, 0x05, 0x22, 0x81, 0x81, 0x22, 0x8E, 0x91, 0x92, 0x2A, 0x86, 0x3C, 0x36, - 0xEC, 0x66, 0xA5, 0xBC, 0x2C, 0x3F, 0x26, 0x7A, 0x47, 0xF1, 0x44, 0x0E, 0x19, 0xA1, 0x7F, 0xF7, - 0x3F, 0x4B, 0x4F, 0x34, 0x27, 0xA6, 0xFF, 0x00, 0x14, 0x51, 0xE0, 0xFC, 0x3F, 0xC5, 0xC8, 0x6F, - 0xF0, 0x2D, 0x30, 0xE4, 0xFF, 0x00, 0xA6, 0x35, 0x1E, 0xAC, 0xD8, 0xA2, 0x8A, 0x7A, 0xF7, 0xCC, - 0xCA, 0x28, 0xA2, 0x84, 0x4C, 0x90, 0x52, 0x1C, 0x64, 0x8A, 0x06, 0x8D, 0x23, 0x24, 0x34, 0x82, - 0x91, 0x54, 0x30, 0x24, 0x14, 0x92, 0x24, 0x14, 0x85, 0x43, 0x02, 0x41, 0x48, 0x69, 0x19, 0x22, - 0xA8, 0x68, 0xD2, 0x32, 0x43, 0x48, 0x29, 0x15, 0x63, 0x4F, 0xD8, 0xD2, 0x3C, 0x3D, 0xB3, 0x7B, - 0xFE, 0x2B, 0xB7, 0xB1, 0x5D, 0xB9, 0x76, 0x76, 0xEB, 0xBF, 0x8C, 0xA8, 0xEE, 0xF5, 0x77, 0x86, - 0x90, 0x52, 0x48, 0x6A, 0xAD, 0xEE, 0x04, 0x82, 0x93, 0x5F, 0x13, 0xC3, 0x4E, 0x11, 0x90, 0xC8, - 0x5F, 0xF1, 0x9B, 0xFE, 0x54, 0xDB, 0x6D, 0xA6, 0x52, 0x44, 0x3B, 0xDF, 0x56, 0x89, 0xAD, 0x77, - 0x68, 0x70, 0x2C, 0xFA, 0x4D, 0x3E, 0xB6, 0xB7, 0xD7, 0x63, 0xF7, 0x98, 0x8E, 0xB5, 0xF1, 0x83, - 0xC5, 0x72, 0xF0, 0xFC, 0xD9, 0x73, 0xDF, 0x4F, 0x4B, 0xD6, 0xCD, 0x87, 0x18, 0x27, 0x64, 0x39, - 0xEE, 0x3D, 0xFB, 0xF4, 0x94, 0xEB, 0x87, 0x25, 0xF1, 0x5F, 0x2D, 0x68, 0xB4, 0xA6, 0xC5, 0x93, - 0xA1, 0xBF, 0x49, 0x0E, 0xD2, 0x3C, 0x07, 0x2D, 0xEE, 0xB3, 0x3D, 0x63, 0xAA, 0x34, 0x8C, 0x92, - 0x44, 0x82, 0x8E, 0xDD, 0x39, 0x4A, 0x90, 0xD1, 0xA4, 0x14, 0x92, 0x24, 0x14, 0x85, 0x43, 0x02, - 0x41, 0x48, 0x69, 0x19, 0x24, 0xD6, 0x34, 0x69, 0x19, 0x21, 0xA4, 0x14, 0x8A, 0xA1, 0x81, 0x23, - 0x24, 0x34, 0x82, 0x90, 0xA8, 0x6B, 0x1C, 0x33, 0x5F, 0x9B, 0x86, 0x6B, 0xA9, 0xAA, 0xC2, 0xEE, - 0xD7, 0x95, 0xAA, 0xBC, 0xAF, 0x57, 0xA8, 0xFA, 0xCE, 0xC7, 0x8C, 0xE8, 0x30, 0x7B, 0x47, 0xC2, - 0xB1, 0xEB, 0x34, 0x28, 0xE7, 0xA5, 0x77, 0xC6, 0xF4, 0x6C, 0x77, 0xD1, 0xF3, 0x1D, 0xF6, 0xF3, - 0xF5, 0xDE, 0x70, 0xA9, 0x36, 0x3D, 0x9B, 0xE3, 0x2F, 0x0B, 0xD5, 0xFB, 0xBC, 0xCA, 0xE9, 0x72, - 0xA7, 0x6C, 0xEB, 0xD8, 0x7F, 0xB8, 0xFB, 0xF9, 0x7A, 0x4E, 0x5E, 0x7E, 0x37, 0xAC, 0xF0, 0xF6, - 0x5A, 0x62, 0xFC, 0x6C, 0x2B, 0x55, 0xAA, 0xD6, 0xC2, 0x23, 0xB2, 0x26, 0xC8, 0xC0, 0x49, 0xDA, - 0x7B, 0x59, 0xC1, 0x0C, 0xD4, 0x78, 0xAE, 0x86, 0xA3, 0xB9, 0xDA, 0xCD, 0x5A, 0xF3, 0x13, 0xFB, - 0xCF, 0xBF, 0xCF, 0xC6, 0x71, 0xC9, 0x2F, 0x8F, 0x90, 0xE4, 0xC7, 0x64, 0xD3, 0x4D, 0x1A, 0x41, - 0x49, 0x63, 0x0E, 0x9F, 0x36, 0xA2, 0xCD, 0x30, 0x61, 0xC9, 0x96, 0xC7, 0x52, 0x95, 0x54, 0xF9, - 0x45, 0x9F, 0x49, 0xA9, 0xC0, 0x6F, 0x9F, 0x4F, 0x97, 0x19, 0xE3, 0x6A, 0xA1, 0xF5, 0x96, 0xA6, - 0xF5, 0x51, 0x55, 0x48, 0x29, 0x24, 0x48, 0x29, 0x09, 0x8C, 0xD5, 0x37, 0xB8, 0x78, 0xA1, 0x3D, - 0x0F, 0xF8, 0xA5, 0x7D, 0xB4, 0xFA, 0x0C, 0x7E, 0x6B, 0xB7, 0xA0, 0xFE, 0xF3, 0x82, 0xD2, 0x53, - 0xB7, 0xAC, 0xC3, 0x40, 0xDF, 0xB5, 0x92, 0xA7, 0xCD, 0x27, 0x73, 0xFC, 0x4F, 0xF7, 0x6D, 0xF4, - 0xBB, 0xE4, 0xDB, 0x25, 0x44, 0xAD, 0x36, 0xDF, 0x71, 0x0D, 0xD5, 0xEE, 0xDB, 0x97, 0xCE, 0x73, - 0x72, 0x7F, 0xD7, 0x1A, 0xCF, 0x54, 0x31, 0x45, 0x14, 0xF6, 0x2F, 0x9A, 0x94, 0x51, 0x45, 0x08, - 0x94, 0x51, 0x45, 0x08, 0x99, 0x20, 0xA4, 0x38, 0xC9, 0x14, 0x0D, 0x1A, 0x46, 0x48, 0x69, 0x05, - 0x22, 0xA8, 0x60, 0x48, 0x29, 0x24, 0x48, 0x29, 0x0A, 0x86, 0x04, 0x82, 0x90, 0xD2, 0x32, 0x45, - 0x50, 0xD1, 0xA4, 0x64, 0x86, 0x90, 0x52, 0x2A, 0xC6, 0x04, 0x8C, 0x90, 0xD2, 0x0A, 0x42, 0xA1, - 0x81, 0xDF, 0x64, 0xDF, 0x93, 0x05, 0x24, 0x89, 0x05, 0x24, 0xEA, 0xA1, 0xA3, 0x48, 0x57, 0xCB, - 0x92, 0xD8, 0x69, 0x85, 0xB2, 0xE3, 0xA2, 0xB5, 0x3C, 0x17, 0x6D, 0xFF, 0x00, 0x42, 0x24, 0x82, - 0x91, 0x25, 0x43, 0x02, 0x4D, 0xCE, 0x19, 0xC0, 0xF1, 0x6B, 0x38, 0x5E, 0x7D, 0x55, 0xB3, 0xD2, - 0x8E, 0x23, 0x72, 0xAB, 0xB2, 0xFA, 0x4C, 0x52, 0xAD, 0xAC, 0x01, 0xCD, 0x76, 0x25, 0xBD, 0x5E, - 0x0D, 0x6F, 0x0D, 0xB1, 0x83, 0x3E, 0xF8, 0xDB, 0xD4, 0xB6, 0xDB, 0xF5, 0x13, 0x72, 0x67, 0x90, - 0xBD, 0x0E, 0x9B, 0x5C, 0x10, 0xF6, 0x54, 0x32, 0xD4, 0xAD, 0xDA, 0x8E, 0xFB, 0x3B, 0x48, 0xD2, - 0x4A, 0xEE, 0xBB, 0xBC, 0xD8, 0xB2, 0x62, 0xC9, 0x8C, 0xAD, 0xAF, 0x4B, 0x54, 0xB9, 0xBD, 0x54, - 0xD8, 0x4D, 0xF6, 0xDC, 0xF1, 0x37, 0x19, 0x50, 0x34, 0x29, 0x05, 0x21, 0xA4, 0x2B, 0x62, 0xC8, - 0x63, 0x32, 0x34, 0x4A, 0x2E, 0xC5, 0xB6, 0xE4, 0xB1, 0x35, 0x14, 0x09, 0x19, 0x27, 0x41, 0xC0, - 0x38, 0x2D, 0xF5, 0x59, 0xA9, 0xA9, 0xD5, 0xD3, 0xB1, 0xA4, 0x1D, 0xD5, 0xE4, 0xDC, 0xF2, 0x3E, - 0xFD, 0x3D, 0x66, 0xCE, 0xBF, 0x45, 0xC2, 0x31, 0xEA, 0x2D, 0xF8, 0x5D, 0x19, 0x71, 0xE9, 0xDA, - 0xDD, 0x43, 0xD3, 0x7D, 0xA6, 0x39, 0x73, 0x63, 0x8B, 0xAF, 0x76, 0x81, 0xD6, 0xEE, 0x11, 0x23, - 0x24, 0xEB, 0x32, 0xF0, 0xED, 0x3E, 0x71, 0x0D, 0x25, 0x36, 0xEE, 0xEC, 0x72, 0x7E, 0x8C, 0xCB, - 0xD7, 0x70, 0x5B, 0xE2, 0x1B, 0xE0, 0x54, 0xEA, 0xD2, 0xDC, 0x93, 0xD1, 0xEF, 0x8B, 0x1E, 0x6C, - 0x72, 0x75, 0x05, 0xA1, 0xEC, 0xAF, 0x1C, 0xF7, 0x2D, 0x78, 0x7E, 0xAE, 0xFF, 0x00, 0xCB, 0x5D, - 0xB1, 0x5D, 0x7A, 0x2F, 0xFB, 0x5F, 0x27, 0xBB, 0xE5, 0xE8, 0x3C, 0x6F, 0xD9, 0x92, 0x9C, 0x43, - 0x1E, 0x6D, 0x25, 0x53, 0x4B, 0x96, 0xE1, 0x92, 0xB5, 0x3F, 0xD2, 0xDF, 0xAA, 0x79, 0x75, 0xDB, - 0xC1, 0xE5, 0xE1, 0x39, 0x94, 0x45, 0x11, 0x13, 0xA9, 0x3B, 0xBF, 0x64, 0xF8, 0xA5, 0xF5, 0x3A, - 0x5F, 0x73, 0xAE, 0x37, 0xB0, 0x35, 0xC7, 0x6B, 0x7F, 0xF9, 0x4D, 0xB9, 0x8F, 0x8A, 0x74, 0xF3, - 0xF5, 0x19, 0xCF, 0xCD, 0x83, 0xC4, 0xFE, 0x4C, 0x3D, 0x3F, 0x2D, 0x71, 0x77, 0xD5, 0x16, 0x7D, - 0x76, 0x9F, 0x47, 0xA7, 0x34, 0xFA, 0x6A, 0x53, 0x0E, 0x2A, 0xF2, 0x2B, 0x53, 0x6D, 0xFC, 0xDE, - 0xF5, 0xF3, 0x98, 0xF9, 0xB8, 0x85, 0x33, 0x2D, 0x5B, 0x0E, 0xFC, 0x83, 0x9C, 0xBF, 0xED, 0x47, - 0x0A, 0xD5, 0x67, 0xD7, 0xBA, 0xBD, 0x3D, 0x07, 0x05, 0xC0, 0xBF, 0x64, 0xFE, 0x9B, 0x74, 0xE6, - 0x78, 0x3C, 0xB9, 0xF8, 0xFD, 0x72, 0xCE, 0x1F, 0x8F, 0x4B, 0x41, 0xD4, 0xE6, 0xA6, 0x3B, 0x3D, - 0x0B, 0x58, 0x1D, 0xBC, 0x8E, 0xAC, 0x5C, 0x6E, 0x09, 0xB1, 0xDB, 0x35, 0x77, 0xAA, 0x9E, 0xAB, - 0x87, 0x7B, 0xCA, 0xF6, 0xF4, 0xF5, 0xDA, 0xDC, 0xF7, 0xAF, 0x73, 0xE9, 0xE7, 0x32, 0x2D, 0x54, - 0x51, 0x11, 0x1D, 0x91, 0xEE, 0x9D, 0x25, 0x35, 0x7A, 0x0C, 0x3C, 0xAB, 0xAA, 0xAA, 0xBD, 0x4E, - 0xCD, 0xB6, 0xFD, 0x3E, 0xB3, 0x3F, 0x8B, 0xE3, 0xA6, 0x54, 0xD6, 0x69, 0xD2, 0xD4, 0x5E, 0xCD, - 0xDA, 0xF3, 0xD9, 0xEE, 0x5F, 0x05, 0x3F, 0x49, 0xBE, 0x39, 0x3B, 0xD2, 0x4C, 0xAB, 0x70, 0x5C, - 0x7E, 0xF3, 0x8D, 0xE8, 0x69, 0xB7, 0x5D, 0x46, 0x3D, 0xFD, 0x3B, 0x46, 0xF3, 0xA1, 0xFE, 0x26, - 0x64, 0xED, 0x71, 0xEC, 0x58, 0xF7, 0xFE, 0x8C, 0x43, 0xF3, 0x53, 0xED, 0x32, 0xBD, 0x93, 0xC5, - 0xEF, 0x7D, 0xA6, 0xD1, 0x1B, 0x72, 0x2C, 0xD9, 0xF8, 0x0B, 0xF6, 0x96, 0x7D, 0xBD, 0xCB, 0xEF, - 0x7D, 0xA9, 0xD4, 0x9B, 0xEF, 0xD8, 0x2B, 0x5F, 0xA6, 0xFF, 0x00, 0x79, 0x9E, 0x5D, 0xF3, 0x07, - 0xF2, 0xA3, 0xD5, 0xAB, 0x14, 0x51, 0x4F, 0x5E, 0xF9, 0xC9, 0x45, 0x14, 0x50, 0x89, 0x45, 0x14, - 0x50, 0x89, 0x45, 0x14, 0x50, 0x89, 0x92, 0x0A, 0x43, 0x8C, 0x91, 0x40, 0xD1, 0xA4, 0x64, 0x86, - 0x90, 0x52, 0x2A, 0x86, 0x04, 0x82, 0x92, 0x44, 0x82, 0x90, 0xA8, 0x60, 0x48, 0x29, 0x0D, 0x23, - 0x24, 0x55, 0x0D, 0x1A, 0x46, 0x48, 0x69, 0x05, 0x22, 0xAC, 0x60, 0x48, 0xC9, 0x0D, 0x20, 0xA4, - 0x2A, 0x18, 0x12, 0x0A, 0x49, 0x12, 0x0A, 0x49, 0xA8, 0x60, 0xE6, 0x22, 0x3C, 0xC8, 0xF9, 0x72, - 0xE4, 0xCA, 0x96, 0xC9, 0x76, 0xE8, 0x6C, 0x2B, 0xBF, 0x28, 0x92, 0x0A, 0x45, 0xAA, 0x86, 0x04, - 0x8D, 0x7B, 0x5A, 0xE0, 0x5A, 0xCA, 0x54, 0xD8, 0x17, 0x7D, 0x8F, 0x02, 0x1A, 0x41, 0x48, 0x92, - 0xA1, 0xA3, 0x49, 0xD6, 0x70, 0xAE, 0x1F, 0x90, 0xE1, 0xF8, 0x8E, 0x29, 0x6D, 0xF0, 0xD1, 0x6F, - 0x8B, 0x4D, 0x6E, 0x82, 0xF7, 0xD8, 0xEB, 0xE1, 0xCB, 0xE7, 0xE1, 0x2A, 0x70, 0xBD, 0x27, 0x0E, - 0xD2, 0xD7, 0x16, 0xB3, 0x57, 0xAA, 0xA5, 0xED, 0x65, 0x71, 0x9B, 0x20, 0x23, 0xD7, 0x99, 0xD4, - 0xF3, 0x3E, 0x73, 0x4F, 0x2F, 0x11, 0xE1, 0xCE, 0xEB, 0xAD, 0xC6, 0x7A, 0x0A, 0xFD, 0x09, 0xC9, - 0xCD, 0x9E, 0x4F, 0x58, 0x96, 0xD8, 0x9A, 0x37, 0xB8, 0xB5, 0x7A, 0xB1, 0x76, 0xDF, 0x70, 0x36, - 0x03, 0x90, 0x79, 0x79, 0x4A, 0x2D, 0xAF, 0x93, 0x9B, 0xD1, 0x76, 0x03, 0xA7, 0x9F, 0xDA, 0x47, - 0x97, 0x8A, 0x70, 0xCC, 0x7F, 0xD2, 0xE5, 0xCC, 0xF7, 0x76, 0x69, 0xB1, 0xF3, 0x76, 0x7E, 0x92, - 0x9E, 0x5F, 0x68, 0x2C, 0x1B, 0x69, 0xB4, 0x98, 0xE8, 0x1C, 0x86, 0xEB, 0x77, 0xE9, 0xB1, 0x31, - 0x38, 0x72, 0x67, 0xBB, 0xA0, 0xD2, 0xD0, 0xEC, 0x1B, 0xD3, 0xE9, 0x0F, 0x3E, 0x98, 0xCB, 0x4D, - 0xB9, 0x07, 0x9F, 0x30, 0x9C, 0x8D, 0xF8, 0xEF, 0x12, 0xB3, 0xB9, 0xA9, 0x6A, 0x77, 0x15, 0xA5, - 0x40, 0xFA, 0x49, 0x29, 0xED, 0x1F, 0x12, 0xA1, 0xB5, 0xEF, 0x8F, 0x2F, 0xFC, 0xA8, 0x7D, 0xB6, - 0x83, 0xFE, 0x5C, 0xC7, 0x63, 0x51, 0x91, 0x58, 0xD6, 0xF0, 0x7D, 0x19, 0x9D, 0xC9, 0x9B, 0x3D, - 0xB4, 0xF8, 0xDB, 0x07, 0x2A, 0xB6, 0x5D, 0xDD, 0x8E, 0x5D, 0xDF, 0x36, 0x6E, 0xEA, 0x78, 0x67, - 0x0F, 0xCD, 0x6A, 0xE9, 0xB4, 0xBC, 0x48, 0xC2, 0xD0, 0xD8, 0xAD, 0xB1, 0xA0, 0x6D, 0xD3, 0x99, - 0xD3, 0x6D, 0xA7, 0x1D, 0xAE, 0xE2, 0x9A, 0xAD, 0x76, 0xC6, 0x6B, 0x85, 0x47, 0x72, 0xB5, 0x36, - 0x37, 0xFD, 0x66, 0x8F, 0x1C, 0xD7, 0x38, 0xE8, 0xE1, 0xC4, 0xED, 0x7C, 0xF5, 0x2D, 0x74, 0xEA, - 0x55, 0x37, 0x0F, 0x8F, 0x7F, 0x97, 0xAC, 0xAC, 0xF8, 0xB3, 0x7C, 0x45, 0xAC, 0x4B, 0xB7, 0xD3, - 0x64, 0xCB, 0x9B, 0x4A, 0xE2, 0xC3, 0x6C, 0x39, 0xEB, 0x5A, 0x83, 0xA8, 0xC5, 0x90, 0xB9, 0x93, - 0x97, 0x3E, 0x9C, 0xC7, 0xD4, 0xE7, 0x38, 0x4F, 0x68, 0xBD, 0x9F, 0xC9, 0xA2, 0xC9, 0x7D, 0x56, - 0x9C, 0xB5, 0xF0, 0x2A, 0xDC, 0x77, 0x5A, 0x3E, 0x7D, 0xE9, 0xE7, 0xF3, 0xF1, 0x98, 0xD8, 0x33, - 0xE6, 0xD3, 0x65, 0x32, 0xE9, 0xF2, 0xDF, 0x16, 0x43, 0xA5, 0xA9, 0x64, 0x7E, 0x64, 0xED, 0x38, - 0x07, 0xB4, 0xD8, 0x75, 0xF5, 0xAE, 0x8B, 0x8C, 0x25, 0x73, 0xBC, 0xA9, 0x9D, 0x00, 0xBF, 0x93, - 0xDC, 0x3E, 0x7D, 0x1F, 0x5E, 0xB9, 0xBC, 0x59, 0xF0, 0x3E, 0x58, 0xF6, 0x55, 0xE4, 0x37, 0x04, - 0x92, 0xD7, 0x0C, 0xD6, 0x1A, 0x3D, 0x4F, 0xF3, 0x6B, 0xEF, 0x34, 0xD9, 0x0E, 0xC6, 0x6C, 0x6F, - 0x3E, 0xD5, 0x5E, 0xBB, 0x79, 0x9D, 0x47, 0xC6, 0x74, 0xFE, 0xD1, 0xFB, 0x23, 0x93, 0x0B, 0x6D, - 0x57, 0x0D, 0xA7, 0x6A, 0xAF, 0x3B, 0x62, 0xAF, 0xEB, 0x5F, 0xDB, 0xE5, 0xE1, 0x38, 0xEB, 0x55, - 0x14, 0x44, 0x47, 0x64, 0x7B, 0xA7, 0x4E, 0x39, 0xE3, 0xCB, 0x8F, 0x51, 0xEA, 0xEB, 0xBD, 0x9A, - 0xE1, 0x6E, 0x87, 0xDA, 0xEC, 0xB4, 0xDF, 0xB7, 0x8F, 0x16, 0x17, 0x26, 0x2C, 0x9D, 0xD7, 0xA5, - 0x90, 0x1F, 0x88, 0xBF, 0x11, 0x9C, 0xEF, 0xB4, 0x79, 0x7F, 0x11, 0xED, 0x06, 0xBF, 0x26, 0xFB, - 0xFF, 0x00, 0x3A, 0xD5, 0x1F, 0x21, 0xD8, 0xFD, 0x27, 0x6B, 0xEC, 0xAE, 0xAB, 0x0E, 0x5E, 0x09, - 0x8F, 0x55, 0x93, 0xFD, 0x7D, 0x35, 0x1C, 0x17, 0xB3, 0xFD, 0x95, 0x5B, 0x07, 0xC0, 0x7E, 0x93, - 0xCF, 0x32, 0xDD, 0xCB, 0x92, 0xD9, 0x2D, 0xFD, 0x57, 0x5B, 0x3E, 0xAB, 0xBB, 0x30, 0xE1, 0x5C, - 0xB9, 0x32, 0x5F, 0x96, 0x8F, 0x41, 0x76, 0x51, 0x45, 0x14, 0xF6, 0x6F, 0x9C, 0x94, 0x51, 0x45, - 0x08, 0x94, 0x51, 0x45, 0x08, 0x94, 0x51, 0x45, 0x08, 0x94, 0x51, 0x45, 0x08, 0x99, 0x20, 0xA4, - 0x38, 0xC9, 0x14, 0x0D, 0x1A, 0x46, 0x48, 0x69, 0x05, 0x22, 0xA8, 0x60, 0x48, 0x29, 0x24, 0x48, - 0x29, 0x0A, 0x86, 0x04, 0x82, 0x90, 0xD2, 0x32, 0x45, 0x50, 0xD1, 0xA4, 0x64, 0x86, 0x90, 0x52, - 0x2A, 0xC6, 0x04, 0x8C, 0x90, 0xD2, 0x0A, 0x42, 0xA1, 0x81, 0x20, 0xA4, 0x91, 0x20, 0xA4, 0x9A, - 0x86, 0x8D, 0x23, 0x24, 0x34, 0x82, 0x91, 0x54, 0x30, 0x24, 0x14, 0x92, 0x24, 0x04, 0x8A, 0xA1, - 0x81, 0x20, 0xA4, 0x91, 0x20, 0xA4, 0x2A, 0x18, 0x12, 0x0A, 0x43, 0x48, 0xC9, 0x26, 0xB1, 0xA3, - 0x48, 0xF9, 0x6F, 0x7C, 0xB7, 0x6F, 0x77, 0x75, 0x03, 0xE0, 0x1B, 0x1F, 0x42, 0x3A, 0x41, 0x48, - 0x92, 0xA1, 0x81, 0x23, 0x24, 0x34, 0x82, 0x90, 0xA8, 0x6E, 0x97, 0xD9, 0xEF, 0x6B, 0x33, 0x68, - 0x8A, 0xE9, 0x75, 0xF6, 0x72, 0x69, 0xFA, 0x17, 0x79, 0xB4, 0x3C, 0x1F, 0x13, 0xEA, 0x79, 0xF4, - 0x9B, 0x7C, 0x5F, 0x80, 0x70, 0xEE, 0x3B, 0x8B, 0xF1, 0x7A, 0x2C, 0x94, 0xC3, 0xA9, 0xB1, 0xB9, - 0x7A, 0xF3, 0xA6, 0x4F, 0x5D, 0xBF, 0x5E, 0xBE, 0xB3, 0xCF, 0x92, 0x5D, 0xE1, 0x7C, 0x57, 0x57, - 0xC3, 0xB2, 0x9F, 0x87, 0xBA, 0xD1, 0x79, 0xE3, 0x5E, 0x4B, 0xE5, 0xE0, 0xCE, 0x4E, 0x4E, 0x04, - 0x7C, 0xF0, 0x74, 0xDA, 0x19, 0x7F, 0x6E, 0x9F, 0xF0, 0x79, 0xF8, 0x17, 0xB1, 0x9A, 0xAC, 0x7A, - 0x9A, 0x76, 0x33, 0x64, 0x6F, 0xB8, 0x22, 0x3D, 0xA4, 0xA0, 0x89, 0xD4, 0xD8, 0x19, 0xC1, 0xA4, - 0xF5, 0xEE, 0x2B, 0xAA, 0xD0, 0xE7, 0xE1, 0xF8, 0x74, 0x1A, 0xFA, 0xD2, 0xDE, 0xF0, 0xD9, 0xAD, - 0x9E, 0xA8, 0x1B, 0xA3, 0xD7, 0xAA, 0x73, 0x27, 0x2D, 0xC4, 0x3D, 0x95, 0xC5, 0x6D, 0x46, 0x0C, - 0xDC, 0x22, 0xBD, 0xAC, 0x62, 0x19, 0x31, 0x5A, 0xDB, 0xF4, 0xEF, 0x17, 0xA8, 0xF7, 0x9F, 0x2F, - 0x03, 0x1F, 0xF3, 0xF3, 0x06, 0xFC, 0xBD, 0xB5, 0xE5, 0xF3, 0x57, 0xFF, 0xD9 -}; - -const unsigned char jpeg_data1[6603] = { - 0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x01, 0x00, 0x48, - 0x00, 0x48, 0x00, 0x00, 0xFF, 0xDB, 0x00, 0x43, 0x00, 0x09, 0x06, 0x06, 0x08, 0x06, 0x05, 0x09, - 0x08, 0x07, 0x08, 0x0A, 0x09, 0x09, 0x0A, 0x0D, 0x16, 0x0E, 0x0D, 0x0C, 0x0C, 0x0D, 0x1A, 0x13, - 0x14, 0x10, 0x16, 0x1F, 0x1C, 0x21, 0x20, 0x1F, 0x1C, 0x1E, 0x1E, 0x23, 0x27, 0x32, 0x2A, 0x23, - 0x25, 0x2F, 0x25, 0x1E, 0x1E, 0x2B, 0x3B, 0x2C, 0x2F, 0x33, 0x35, 0x38, 0x38, 0x38, 0x21, 0x2A, - 0x3D, 0x41, 0x3C, 0x36, 0x41, 0x32, 0x37, 0x38, 0x35, 0xFF, 0xDB, 0x00, 0x43, 0x01, 0x09, 0x0A, - 0x0A, 0x0D, 0x0B, 0x0D, 0x19, 0x0E, 0x0E, 0x19, 0x35, 0x24, 0x1E, 0x24, 0x35, 0x35, 0x35, 0x35, - 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, - 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, - 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0xFF, 0xC0, - 0x00, 0x11, 0x08, 0x00, 0xF0, 0x01, 0x40, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01, 0x03, 0x11, - 0x01, 0xFF, 0xC4, 0x00, 0x1B, 0x00, 0x00, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0xFF, 0xC4, - 0x00, 0x3B, 0x10, 0x00, 0x02, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x05, 0x07, 0x03, 0x04, 0x03, - 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x03, 0x11, 0x04, 0x21, 0x05, 0x12, 0x31, 0x41, 0x06, 0x13, - 0x51, 0x61, 0x22, 0x71, 0x81, 0x07, 0x14, 0x91, 0xA1, 0xB1, 0x32, 0x33, 0x42, 0x52, 0x82, 0xC1, - 0xD1, 0x15, 0x23, 0x92, 0x24, 0x43, 0x62, 0xF1, 0x72, 0xA2, 0xF0, 0xFF, 0xC4, 0x00, 0x1A, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0xFF, 0xC4, 0x00, 0x25, 0x11, 0x01, 0x01, 0x01, 0x01, - 0x00, 0x02, 0x02, 0x02, 0x02, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x02, - 0x03, 0x12, 0x21, 0x31, 0x04, 0x41, 0x13, 0x51, 0x14, 0x22, 0x32, 0x23, 0x42, 0x61, 0xFF, 0xDA, - 0x00, 0x0C, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3F, 0x00, 0xE0, 0x23, 0x61, 0xA3, - 0x95, 0xB2, 0x66, 0x62, 0x70, 0xE6, 0x35, 0x0E, 0xF3, 0xF4, 0xAF, 0x03, 0x75, 0x40, 0x11, 0x1A, - 0x04, 0x4D, 0x07, 0x61, 0x1E, 0x26, 0x0A, 0x11, 0xB4, 0x12, 0x23, 0x00, 0xC8, 0x82, 0xFB, 0x49, - 0x06, 0x10, 0x38, 0x58, 0xA2, 0xC2, 0x5F, 0x3E, 0xD2, 0x02, 0x27, 0x39, 0x91, 0x40, 0x8B, 0x0D, - 0xD6, 0x12, 0xB4, 0x91, 0xE8, 0x31, 0x34, 0xD6, 0x33, 0x32, 0x29, 0xDF, 0x13, 0x65, 0x43, 0x68, - 0x53, 0x16, 0x54, 0x41, 0x0B, 0x86, 0x11, 0x84, 0x88, 0x04, 0xE3, 0x79, 0x92, 0xA3, 0xB9, 0xC0, - 0x94, 0x56, 0x1A, 0x00, 0x77, 0x90, 0xE3, 0x38, 0x92, 0x02, 0xA6, 0x4E, 0x23, 0x48, 0x00, 0x62, - 0x45, 0x18, 0xDE, 0x42, 0x64, 0x95, 0x9E, 0x55, 0x80, 0x1B, 0xA9, 0x83, 0x63, 0xE7, 0x61, 0x07, - 0x3D, 0xA3, 0x80, 0x65, 0xE5, 0xA1, 0x8A, 0x07, 0x26, 0x18, 0x6E, 0x55, 0x8E, 0x21, 0x58, 0xF8, - 0x18, 0x88, 0x2F, 0x29, 0xDF, 0x26, 0x2C, 0xB6, 0x4C, 0xA4, 0x5A, 0x32, 0xF2, 0xC3, 0x45, 0x4B, - 0x19, 0x88, 0x3F, 0xCC, 0x93, 0x9F, 0x31, 0x42, 0x10, 0x86, 0x1D, 0x30, 0x36, 0x61, 0x03, 0x16, - 0x21, 0x89, 0x25, 0xE6, 0x5C, 0x80, 0x4B, 0xC4, 0x0A, 0xA5, 0x62, 0x16, 0x25, 0xE2, 0x40, 0x18, - 0x93, 0x10, 0x88, 0x93, 0x13, 0x40, 0x24, 0x48, 0x14, 0xC2, 0x02, 0x10, 0x59, 0x20, 0x85, 0x84, - 0x16, 0x18, 0x48, 0xC5, 0x4F, 0x58, 0x5A, 0x9E, 0x51, 0xD0, 0x73, 0x66, 0x12, 0x6C, 0x64, 0x66, - 0xDE, 0x45, 0x3B, 0xCE, 0x81, 0xBA, 0x83, 0xF0, 0x88, 0xF5, 0xDC, 0xCC, 0x75, 0xB8, 0x55, 0x8D, - 0x17, 0x62, 0x66, 0xC2, 0xD2, 0x48, 0x02, 0x26, 0xC6, 0xCC, 0x53, 0x5F, 0xBC, 0x13, 0x70, 0x32, - 0xC5, 0xA2, 0x32, 0xCF, 0x4C, 0x45, 0x1B, 0x72, 0x64, 0x2F, 0x1C, 0x1A, 0x60, 0x84, 0x1C, 0x09, - 0x9C, 0xB9, 0xC4, 0x81, 0xCF, 0xAC, 0xB1, 0x6B, 0x62, 0x3E, 0x58, 0x4D, 0xC8, 0xF8, 0x5F, 0x79, - 0xCA, 0xA9, 0xCF, 0x30, 0x9B, 0x55, 0xCF, 0x28, 0x99, 0xB0, 0xC6, 0x92, 0xE0, 0xC5, 0xB3, 0x0C, - 0xC5, 0xF3, 0x99, 0x40, 0x96, 0x68, 0x61, 0xD6, 0xA4, 0x3F, 0x0C, 0x98, 0xDE, 0x2C, 0x36, 0x04, - 0xB0, 0xDD, 0xE1, 0x88, 0xCC, 0xE0, 0x75, 0x82, 0xC7, 0x68, 0xB3, 0x66, 0xFB, 0x18, 0x06, 0xCE, - 0xD2, 0xC5, 0xAB, 0x27, 0x7C, 0x98, 0x24, 0xED, 0xF3, 0x94, 0x5B, 0x30, 0x79, 0xB7, 0x9A, 0x06, - 0x2F, 0xAC, 0x8C, 0x64, 0x07, 0x61, 0x28, 0x91, 0x24, 0x5B, 0x4A, 0x02, 0x11, 0x19, 0x93, 0x11, - 0x01, 0x02, 0x10, 0x12, 0xC0, 0x96, 0x04, 0x8A, 0x80, 0x86, 0x04, 0xB5, 0x42, 0x4C, 0x30, 0xB0, - 0x4A, 0x02, 0x10, 0x58, 0x41, 0x61, 0x85, 0x82, 0x08, 0x12, 0x62, 0x18, 0x42, 0xC6, 0x34, 0x52, - 0x7D, 0x20, 0x88, 0x02, 0x42, 0x26, 0x83, 0x50, 0x1F, 0x38, 0x05, 0x3D, 0xA5, 0xA8, 0x9C, 0x48, - 0x06, 0x63, 0x0A, 0x6F, 0x09, 0x6B, 0x31, 0xD4, 0x58, 0x58, 0xC0, 0x91, 0x82, 0xAC, 0x0F, 0x79, - 0x64, 0x05, 0x99, 0xD4, 0x00, 0x31, 0x0C, 0x02, 0x65, 0x6D, 0xDE, 0x58, 0x3E, 0x92, 0x2F, 0x20, - 0x57, 0x78, 0x4A, 0x23, 0x08, 0x18, 0x83, 0x89, 0xD9, 0xCD, 0x01, 0xC4, 0x20, 0xDB, 0x41, 0xC4, - 0x20, 0x32, 0x24, 0x42, 0x4E, 0xF2, 0x66, 0x53, 0x89, 0x02, 0xC8, 0x2C, 0x1D, 0xE1, 0x66, 0x45, - 0x5D, 0xE1, 0x05, 0xDE, 0x44, 0x04, 0x6D, 0x28, 0x46, 0x15, 0xC4, 0x84, 0x6C, 0x24, 0x05, 0x56, - 0x41, 0xCC, 0xD6, 0xAD, 0xB4, 0xC8, 0x83, 0x04, 0x4D, 0x0B, 0x2A, 0xB4, 0xD0, 0x76, 0x96, 0x87, - 0x1B, 0xC1, 0x03, 0x69, 0x08, 0xDA, 0x65, 0xAD, 0x19, 0xB2, 0x09, 0xB4, 0xE2, 0x01, 0x82, 0xD2, - 0xC1, 0xA2, 0x36, 0xCA, 0xE7, 0x26, 0x00, 0x04, 0x98, 0x61, 0x62, 0xB5, 0x60, 0x99, 0x63, 0x32, - 0xC2, 0xC2, 0x0B, 0x0A, 0x90, 0x66, 0x5E, 0xE6, 0x58, 0x58, 0x61, 0x24, 0x40, 0x16, 0x10, 0x58, - 0xC0, 0x90, 0x82, 0x41, 0x16, 0x12, 0x10, 0x48, 0xC5, 0xAE, 0x30, 0x24, 0xB5, 0x16, 0x12, 0x10, - 0x48, 0xC0, 0x90, 0xC2, 0xCC, 0xE9, 0x2C, 0x24, 0x35, 0xAC, 0xB1, 0xC0, 0x8C, 0x44, 0x24, 0xE0, - 0x09, 0xAA, 0x9A, 0x42, 0x8C, 0x99, 0x9B, 0x51, 0x75, 0x69, 0xF0, 0xB9, 0x22, 0x13, 0xA8, 0x1B, - 0x08, 0xD7, 0x70, 0x06, 0x04, 0x43, 0xB6, 0x4C, 0xC9, 0x2C, 0x88, 0x24, 0x4B, 0x26, 0x50, 0x04, - 0x99, 0xA8, 0x14, 0x17, 0x26, 0x34, 0x27, 0x2F, 0xCE, 0x45, 0x5C, 0x6F, 0xDE, 0x0B, 0xB6, 0x36, - 0x12, 0x4B, 0x66, 0x00, 0x6D, 0xD6, 0x28, 0x9D, 0xE4, 0x26, 0x54, 0x52, 0x6E, 0x65, 0xC9, 0x26, - 0x24, 0x1E, 0x68, 0xA6, 0xD0, 0x79, 0x4C, 0x7E, 0x06, 0xF0, 0x4A, 0xCE, 0xCC, 0x94, 0x14, 0xE6, - 0x58, 0x5D, 0xA3, 0x39, 0x64, 0xC4, 0x81, 0x4C, 0xB2, 0x05, 0x8D, 0x2B, 0xBC, 0x98, 0x8A, 0x0A, - 0x2E, 0xF0, 0xF0, 0x24, 0x02, 0x4C, 0x1D, 0xE0, 0x95, 0x8F, 0x8A, 0x53, 0x7A, 0x09, 0x78, 0x3D, - 0x64, 0x23, 0x79, 0x24, 0x41, 0xF1, 0x66, 0x3D, 0x40, 0x89, 0x03, 0x11, 0x80, 0x91, 0x24, 0x6E, - 0x70, 0x25, 0x13, 0xB4, 0x00, 0x49, 0x85, 0x82, 0x60, 0x75, 0x59, 0x95, 0x8C, 0xC6, 0x04, 0x30, - 0xC2, 0x49, 0x16, 0xA9, 0x0C, 0x26, 0xD1, 0xCB, 0x5F, 0xB4, 0x2E, 0x4D, 0xFA, 0x43, 0x51, 0x21, - 0x0C, 0x30, 0xB1, 0xBC, 0x9D, 0xA5, 0x84, 0xEF, 0x22, 0x58, 0x58, 0x6A, 0x90, 0x82, 0x92, 0x76, - 0x8E, 0x4A, 0xFB, 0x98, 0x5A, 0x42, 0x13, 0xDA, 0x1A, 0xD7, 0xBC, 0x60, 0x5E, 0xD2, 0xC9, 0x00, - 0x62, 0x67, 0x50, 0x39, 0x40, 0x93, 0x10, 0xB3, 0x2C, 0x01, 0x04, 0x10, 0x21, 0x05, 0x97, 0x91, - 0x27, 0x3F, 0x2C, 0x89, 0xF5, 0x28, 0x5D, 0xCC, 0x63, 0xDE, 0x00, 0xC0, 0x98, 0xCD, 0xD9, 0xEF, - 0x28, 0x36, 0x61, 0x8B, 0x4F, 0x2F, 0xCD, 0xDE, 0x0B, 0x1C, 0x08, 0xB2, 0xE4, 0x41, 0x2C, 0x49, - 0x96, 0x2D, 0x1E, 0xD9, 0x84, 0x36, 0xDF, 0xBC, 0x58, 0x32, 0xF2, 0x71, 0x11, 0xA2, 0x67, 0xC0, - 0xC4, 0x59, 0x39, 0x30, 0x82, 0x13, 0xB9, 0x84, 0x12, 0x40, 0xBC, 0x13, 0x20, 0x58, 0xE1, 0x5E, - 0x7B, 0x43, 0x15, 0xCB, 0x49, 0x21, 0x0C, 0x31, 0x5C, 0x70, 0xAE, 0x5F, 0x28, 0x10, 0xD4, 0xF2, - 0xDC, 0x87, 0x39, 0x90, 0xA1, 0x9A, 0x79, 0x36, 0x82, 0x52, 0x76, 0xD6, 0x70, 0x8E, 0x4F, 0x69, - 0x45, 0x63, 0xF9, 0x25, 0x14, 0xC7, 0x69, 0x22, 0x08, 0xDE, 0x4E, 0x58, 0xDE, 0x51, 0x91, 0x2F, - 0x92, 0x20, 0x9E, 0x59, 0x39, 0x76, 0x8E, 0xE4, 0x90, 0xA0, 0x92, 0x27, 0x96, 0x42, 0xBB, 0xC6, - 0xF2, 0x4B, 0xE4, 0xDE, 0x48, 0xA0, 0x99, 0x22, 0x18, 0x48, 0xD4, 0xAE, 0x35, 0x6A, 0x86, 0xAC, - 0x67, 0x09, 0x18, 0x2B, 0xF6, 0x9A, 0x05, 0x5B, 0x81, 0x88, 0xC5, 0xAB, 0x26, 0x1A, 0x49, 0x4A, - 0xB3, 0x0C, 0x55, 0xBF, 0x49, 0xA4, 0x55, 0xCA, 0xB2, 0x04, 0xDF, 0x18, 0x99, 0xD2, 0x50, 0xAF, - 0x68, 0x42, 0xBC, 0x0C, 0x91, 0x1D, 0xCA, 0x00, 0x80, 0xE7, 0xB0, 0x86, 0xA2, 0xF9, 0x72, 0x73, - 0x28, 0x8C, 0x9C, 0x43, 0x27, 0x94, 0x41, 0x03, 0x7C, 0xC5, 0x0D, 0x13, 0xA4, 0x76, 0x30, 0x30, - 0x3A, 0xC5, 0x8F, 0x84, 0x7B, 0xCA, 0x2F, 0xBF, 0x58, 0x23, 0x0B, 0x00, 0x3A, 0xC5, 0x96, 0x83, - 0x92, 0xC6, 0x1A, 0x26, 0x4E, 0x4C, 0x92, 0xD7, 0xD6, 0x59, 0x6C, 0x0D, 0xA1, 0x72, 0x80, 0x24, - 0xE5, 0xEF, 0x02, 0x02, 0x4F, 0xD6, 0x06, 0x0B, 0x18, 0xD1, 0x5E, 0x4E, 0x63, 0x16, 0xA8, 0xEA, - 0x25, 0x6B, 0x26, 0x18, 0x42, 0x04, 0x78, 0x4C, 0x76, 0x93, 0x93, 0x33, 0x3A, 0x88, 0x29, 0x99, - 0x61, 0x04, 0x77, 0x24, 0x9C, 0xB2, 0xD0, 0x50, 0x48, 0x41, 0x21, 0xE0, 0x09, 0x0B, 0x01, 0x2D, - 0x4A, 0x0B, 0x08, 0x27, 0xAF, 0x48, 0x25, 0xC4, 0xAF, 0x32, 0x58, 0xB4, 0xE0, 0x00, 0x93, 0x20, - 0x44, 0x9B, 0x71, 0x00, 0xDB, 0x2C, 0x5A, 0x79, 0x7F, 0x48, 0x25, 0xE2, 0x0B, 0xED, 0xB9, 0x80, - 0xD6, 0xFB, 0xC7, 0x06, 0xB2, 0x9A, 0xB6, 0x8B, 0x6A, 0xF1, 0xDA, 0x74, 0x39, 0x36, 0xE9, 0x16, - 0xF5, 0xE7, 0xB4, 0xD4, 0xAD, 0x30, 0xF2, 0x48, 0x50, 0x4D, 0x26, 0xAD, 0xB6, 0x10, 0x4D, 0x7B, - 0x47, 0x43, 0x31, 0x49, 0x5C, 0xB3, 0x41, 0x48, 0x05, 0x22, 0x09, 0xE5, 0xDE, 0x42, 0x36, 0x8E, - 0xE4, 0x82, 0x53, 0x69, 0x02, 0xF1, 0x20, 0x58, 0x65, 0x61, 0x22, 0xEF, 0x24, 0xB4, 0x4D, 0xA3, - 0x91, 0x36, 0x91, 0x40, 0x8D, 0x03, 0x02, 0x14, 0xAD, 0x6B, 0xCE, 0xF1, 0xC9, 0x58, 0x18, 0x92, - 0xB5, 0xD8, 0x42, 0x27, 0x13, 0x16, 0x95, 0x30, 0x02, 0x50, 0x12, 0x1D, 0xE4, 0x39, 0x0B, 0x81, - 0xD6, 0x48, 0x0E, 0xD8, 0x89, 0x24, 0x93, 0x9C, 0xC6, 0x32, 0x13, 0xD6, 0x2C, 0xA1, 0x9A, 0x4A, - 0x27, 0x98, 0xC3, 0x03, 0x12, 0xD2, 0xA2, 0x4E, 0x71, 0x1B, 0xE5, 0x62, 0x56, 0x82, 0x9A, 0x2C, - 0x2E, 0x4C, 0xD1, 0xE5, 0x12, 0x63, 0x13, 0x4F, 0xDC, 0xC3, 0x71, 0x10, 0xB5, 0xC6, 0x05, 0x31, - 0xE2, 0x90, 0x06, 0xF0, 0x85, 0x30, 0xB4, 0xE1, 0x01, 0x72, 0x63, 0x16, 0xA2, 0x77, 0x9A, 0x52, - 0x91, 0xD4, 0x8D, 0xA3, 0x08, 0x0B, 0x33, 0x7A, 0x38, 0xCA, 0x29, 0xC7, 0x58, 0xC0, 0x80, 0x7C, - 0xE1, 0x3D, 0x80, 0x44, 0xB5, 0xD8, 0xEF, 0x24, 0x61, 0x50, 0x20, 0xB3, 0x01, 0x12, 0xF7, 0xFB, - 0xC4, 0xB5, 0xFE, 0xF1, 0xC1, 0xAD, 0x05, 0xC4, 0x03, 0x6E, 0x26, 0x56, 0xBF, 0x1B, 0xE6, 0x2C, - 0xDA, 0x5F, 0xA6, 0x4F, 0xC8, 0x66, 0x6B, 0xD4, 0x6B, 0x51, 0xBB, 0xDE, 0x01, 0xBA, 0x66, 0x26, - 0xCE, 0xA5, 0x1F, 0xFE, 0x30, 0x0B, 0x9E, 0x84, 0xEF, 0x35, 0x81, 0xA8, 0xDB, 0xEF, 0x04, 0xDE, - 0x7B, 0x4C, 0xC5, 0xE5, 0x83, 0x99, 0x62, 0x3F, 0xCD, 0x26, 0x4F, 0x33, 0x1F, 0x38, 0x8E, 0x6C, - 0x48, 0x5A, 0x38, 0x0D, 0x36, 0x93, 0x07, 0x9B, 0x3D, 0x62, 0xF3, 0x08, 0x12, 0x64, 0x9D, 0xB3, - 0x48, 0xC4, 0x4B, 0xD1, 0xED, 0x3A, 0x4D, 0x56, 0x0F, 0x48, 0x97, 0x4C, 0x76, 0x9E, 0x69, 0xD3, - 0xB3, 0x9F, 0xE4, 0xE0, 0x1D, 0xA2, 0xCA, 0x0F, 0x49, 0xD1, 0xF2, 0xB3, 0xDB, 0xAC, 0x43, 0xD1, - 0x89, 0xB9, 0xD0, 0xC6, 0x12, 0x9E, 0xD1, 0x66, 0xBF, 0x8A, 0x6F, 0x34, 0x0C, 0xFA, 0xC0, 0x7A, - 0xB0, 0x7A, 0x4D, 0x7B, 0x0C, 0x62, 0x35, 0xE2, 0x09, 0x4C, 0x4D, 0x6D, 0x58, 0xF4, 0x8B, 0x29, - 0xB9, 0x9A, 0xD0, 0xCA, 0x57, 0x79, 0x14, 0x6F, 0x1A, 0xC9, 0xB9, 0x94, 0x17, 0x7C, 0x44, 0x2D, - 0x46, 0xE0, 0x46, 0x28, 0xCB, 0x48, 0x8B, 0xDE, 0x1A, 0xAE, 0xF0, 0x46, 0x83, 0xCA, 0xB0, 0x4B, - 0x64, 0xCB, 0xED, 0x20, 0x52, 0x4F, 0x49, 0x92, 0xB4, 0x1C, 0xC6, 0x3D, 0x68, 0xDB, 0x24, 0x43, - 0xD3, 0xD0, 0x76, 0x24, 0x47, 0xBA, 0xE0, 0x60, 0x4C, 0x5B, 0xF2, 0x71, 0x89, 0xD0, 0x09, 0x83, - 0x89, 0xEB, 0xA8, 0xE1, 0x3C, 0x3A, 0xDD, 0x6E, 0xAB, 0x9F, 0xCA, 0xAF, 0x19, 0xE4, 0x5C, 0x93, - 0x92, 0x00, 0x9D, 0x63, 0x57, 0x31, 0xE9, 0x38, 0xFE, 0x34, 0xD3, 0x06, 0xF0, 0x6E, 0xBF, 0x23, - 0x21, 0x55, 0x1B, 0xF0, 0x71, 0x1D, 0x32, 0x6D, 0x76, 0x06, 0x98, 0x23, 0x60, 0x1E, 0x65, 0x20, - 0x15, 0x60, 0x30, 0x08, 0x23, 0x20, 0xFE, 0x12, 0x1A, 0x46, 0x20, 0x78, 0x68, 0xB5, 0xFE, 0x15, - 0xE1, 0x6F, 0x6B, 0x17, 0xB9, 0x74, 0xA9, 0x55, 0x99, 0xDF, 0x0C, 0xA3, 0xA7, 0xCF, 0x1C, 0xB3, - 0x79, 0xAB, 0x7C, 0x99, 0xCE, 0x77, 0x6C, 0x36, 0x7C, 0xB1, 0x8A, 0x37, 0xCE, 0x21, 0x1A, 0xC8, - 0x13, 0x57, 0x26, 0x20, 0xB0, 0x02, 0x6B, 0x46, 0x33, 0x84, 0x24, 0xC3, 0x0B, 0xF8, 0x4B, 0x2E, - 0x07, 0x48, 0xA7, 0xBF, 0xB0, 0x97, 0xCD, 0x03, 0x77, 0xE5, 0xE9, 0x33, 0xBD, 0xFD, 0x77, 0x82, - 0xCC, 0x5B, 0x73, 0x12, 0xE7, 0xD7, 0xF0, 0x9A, 0x90, 0x29, 0xEF, 0x31, 0x0F, 0x79, 0x9D, 0x6D, - 0x07, 0x86, 0x78, 0x8F, 0x12, 0xC3, 0xAD, 0x5E, 0x4D, 0x47, 0xFE, 0xE5, 0xBF, 0x08, 0xFA, 0x0E, - 0xA6, 0x7A, 0x6E, 0x1D, 0xE0, 0xCE, 0x1D, 0xA2, 0xC3, 0xEA, 0x41, 0xD6, 0x5A, 0x37, 0xF8, 0xF6, - 0x41, 0xFD, 0x3F, 0xE6, 0x63, 0xBF, 0x3F, 0x8F, 0x8F, 0x8F, 0xBA, 0xD4, 0xF1, 0xF5, 0xD3, 0xC5, - 0x68, 0x38, 0x6E, 0xBB, 0x8A, 0xBE, 0x34, 0x74, 0x3D, 0x80, 0x75, 0x73, 0xB2, 0x8F, 0xEA, 0x3B, - 0x4F, 0x4B, 0xA1, 0xF0, 0x12, 0xA8, 0x0F, 0xC4, 0x35, 0x45, 0xDB, 0xF9, 0x28, 0xD8, 0x7F, 0xC8, - 0xCF, 0x57, 0xCE, 0x88, 0x81, 0x50, 0x2A, 0xAA, 0xEC, 0x00, 0x18, 0x02, 0x66, 0x7D, 0x5D, 0x0F, - 0x78, 0xA4, 0x9E, 0x66, 0x2A, 0x5B, 0x03, 0x70, 0x40, 0xC7, 0xF9, 0x13, 0xC9, 0xDF, 0xE4, 0xF7, - 0xD7, 0xD7, 0xC3, 0xBF, 0x3E, 0x29, 0x3E, 0xD9, 0xB4, 0xDE, 0x1F, 0xE1, 0x5A, 0x6D, 0xAA, 0xD1, - 0xD2, 0x58, 0x6F, 0x97, 0x1C, 0xE4, 0x7E, 0x33, 0x60, 0xA9, 0x50, 0x62, 0xBA, 0xD5, 0x47, 0xA2, - 0xAE, 0x20, 0x26, 0xAA, 0xB1, 0x96, 0x50, 0xB8, 0x24, 0x8D, 0x86, 0x3A, 0x4F, 0x35, 0xE3, 0xAD, - 0x5F, 0x1B, 0xD4, 0xE8, 0x6A, 0xD2, 0x70, 0x4D, 0x31, 0x6A, 0x6D, 0x38, 0xD4, 0x59, 0x5B, 0x80, - 0xF8, 0xFE, 0x51, 0xE8, 0x0F, 0x73, 0x3C, 0xF7, 0xAE, 0xAF, 0xDB, 0xA6, 0x48, 0x7F, 0x13, 0xF1, - 0x97, 0x00, 0xD0, 0x3B, 0xD7, 0xA8, 0xE2, 0xBA, 0x7E, 0x75, 0x38, 0x2A, 0x84, 0xD8, 0x47, 0xFC, - 0x73, 0x3C, 0x8F, 0x16, 0xF1, 0xF7, 0x85, 0xEF, 0x62, 0xA6, 0xCB, 0x2D, 0x3D, 0x39, 0x97, 0x4E, - 0xC3, 0xF3, 0x38, 0x33, 0xBB, 0xC0, 0xBE, 0xCF, 0x38, 0x50, 0xA5, 0x5F, 0x8C, 0xAA, 0xDB, 0x71, - 0x1F, 0xBA, 0xAC, 0xE1, 0x07, 0xCC, 0xF5, 0x3F, 0xA4, 0xE8, 0x6B, 0xFE, 0xCE, 0xBC, 0x3D, 0x62, - 0x96, 0xAB, 0x84, 0x68, 0x9B, 0xBF, 0xC2, 0x98, 0x94, 0xEE, 0xCB, 0xF0, 0xB3, 0x5F, 0x36, 0x3E, - 0x22, 0xE0, 0xF7, 0x5A, 0x06, 0x9F, 0x52, 0xEA, 0x18, 0xE0, 0x0B, 0x50, 0xAE, 0x3E, 0xB3, 0x7E, - 0x49, 0x1E, 0xD3, 0x77, 0x12, 0xF0, 0x3F, 0x05, 0xA8, 0x90, 0xBC, 0x3A, 0xB4, 0x23, 0xF9, 0x59, - 0x87, 0xF7, 0x9C, 0xCA, 0x2A, 0x5D, 0x23, 0x7D, 0xD1, 0x79, 0xB9, 0x50, 0x7C, 0x00, 0x9C, 0xED, - 0xE9, 0xF4, 0x9F, 0x43, 0xC1, 0xE7, 0xB6, 0xFA, 0xF6, 0xF3, 0x79, 0x3C, 0x79, 0xF3, 0x0C, 0x24, - 0xC8, 0x01, 0x31, 0x82, 0xA2, 0x7A, 0xC6, 0x0A, 0x8F, 0x61, 0x3D, 0xBA, 0xE0, 0x50, 0x4F, 0x58, - 0x60, 0x66, 0x39, 0x28, 0xCF, 0x68, 0xE4, 0xD3, 0x1F, 0x49, 0x9B, 0x53, 0xD1, 0xB8, 0xC7, 0x68, - 0x8B, 0x44, 0x57, 0xFA, 0x6F, 0x96, 0x3F, 0xE9, 0x35, 0x57, 0x50, 0x07, 0xF0, 0x96, 0xE7, 0x4F, - 0xC0, 0xC5, 0x5A, 0x75, 0xF5, 0x0F, 0x8B, 0xC8, 0xBC, 0x7B, 0x7C, 0x06, 0x78, 0x65, 0xB3, 0xEE, - 0x3D, 0x38, 0x70, 0x18, 0x11, 0x6E, 0x33, 0x33, 0x9D, 0x7B, 0xA7, 0xEF, 0x74, 0xD6, 0xAF, 0xBA, - 0xFC, 0x58, 0x90, 0x71, 0x2A, 0x18, 0xE0, 0xD9, 0xCA, 0x7D, 0x18, 0x62, 0x6E, 0x77, 0xCF, 0xF6, - 0x3D, 0x69, 0xC5, 0x3D, 0xA2, 0x9D, 0x0E, 0x77, 0x86, 0xBA, 0x8A, 0xDC, 0x65, 0x19, 0x58, 0x7A, - 0x83, 0x98, 0x2C, 0xD9, 0x69, 0xB9, 0x77, 0xE9, 0x9A, 0x53, 0x57, 0xD6, 0x21, 0xD3, 0xAC, 0xD9, - 0x8C, 0x8E, 0x90, 0x4D, 0x59, 0xED, 0xD6, 0x6F, 0x43, 0x09, 0xAF, 0x3D, 0xA5, 0x0A, 0x8E, 0x49, - 0xC4, 0xDA, 0x6A, 0x23, 0xB4, 0xBF, 0x26, 0x6B, 0xD9, 0x9C, 0x64, 0x15, 0x98, 0x42, 0xB3, 0x99, - 0xAC, 0x55, 0xB4, 0x25, 0xA7, 0x1B, 0xE2, 0x1E, 0xCB, 0x08, 0x5A, 0x7A, 0x0C, 0x47, 0x55, 0x50, - 0x04, 0x66, 0x34, 0x57, 0xEB, 0x0C, 0x2E, 0x26, 0x2D, 0x38, 0x21, 0x85, 0x5D, 0x84, 0x10, 0x0B, - 0x1C, 0x99, 0x64, 0x8E, 0x99, 0x90, 0xBA, 0xAA, 0xF5, 0x81, 0x5E, 0x00, 0xF9, 0x99, 0x87, 0xC4, - 0x94, 0x0D, 0x47, 0x85, 0x38, 0x9D, 0x3D, 0xDB, 0x4A, 0xF8, 0xFA, 0x0C, 0xCD, 0x5E, 0x68, 0x07, - 0x24, 0xCC, 0xFC, 0x41, 0xC5, 0xFC, 0x37, 0x53, 0x57, 0x36, 0x05, 0x94, 0xBA, 0xE4, 0x76, 0xCA, - 0xCB, 0x0C, 0xAE, 0x6F, 0x80, 0xB8, 0x9D, 0x9C, 0x43, 0x84, 0x6B, 0x16, 0xCD, 0x39, 0xAC, 0x51, - 0x62, 0xD9, 0xCE, 0x0E, 0x43, 0x73, 0x8C, 0x11, 0xF4, 0x01, 0x3F, 0x19, 0xE8, 0x1A, 0xDD, 0xE7, - 0xCF, 0x3C, 0x0B, 0xC6, 0xB5, 0x0F, 0xE2, 0xAD, 0x26, 0x8A, 0xF2, 0x29, 0xD2, 0xDB, 0x53, 0xE9, - 0xB9, 0x46, 0xC1, 0xDD, 0xC0, 0xE5, 0x3F, 0xFD, 0x54, 0x4F, 0x66, 0xDA, 0x82, 0xA4, 0x86, 0xD9, - 0x81, 0xC1, 0xF6, 0x99, 0x9C, 0xFF, 0x00, 0xB5, 0x8D, 0x75, 0xF5, 0x1B, 0x1E, 0xD0, 0x04, 0xCE, - 0xF6, 0xE4, 0xF5, 0x99, 0x5F, 0x52, 0x58, 0xF5, 0x85, 0xA5, 0xA7, 0x51, 0xAE, 0xB4, 0x57, 0xA5, - 0xAA, 0xCB, 0x5C, 0xF6, 0x41, 0xD3, 0xFC, 0x7D, 0x67, 0x5F, 0x5C, 0x9B, 0x5C, 0xB4, 0xC6, 0x7C, - 0xC8, 0x88, 0xD6, 0x38, 0x54, 0x0C, 0xEE, 0xC7, 0x00, 0x01, 0x92, 0x67, 0xA0, 0xE1, 0xFE, 0x0C, - 0xB0, 0x81, 0x67, 0x11, 0xBF, 0x90, 0x75, 0xF2, 0xEB, 0x39, 0x3F, 0x53, 0xD2, 0x77, 0xE8, 0xA3, - 0x47, 0xC2, 0xEB, 0x23, 0x4D, 0x52, 0x54, 0x31, 0xBB, 0x75, 0x27, 0xE6, 0x4E, 0xF3, 0xCF, 0xDF, - 0xE4, 0x73, 0x3F, 0xE7, 0xE5, 0xD7, 0x9F, 0x1D, 0xBF, 0x6F, 0x33, 0xA2, 0xF0, 0x9E, 0xB3, 0x52, - 0x03, 0x6A, 0x59, 0x74, 0xB5, 0x9D, 0xF7, 0xDD, 0x8F, 0xD3, 0xB4, 0xEF, 0xF0, 0xEE, 0x0D, 0xC3, - 0x78, 0x78, 0x0F, 0x4D, 0x42, 0xDB, 0x07, 0xFD, 0xDB, 0x3E, 0x23, 0xF4, 0xEC, 0x3E, 0x91, 0x67, - 0x8D, 0xD3, 0xA8, 0xB1, 0xAB, 0xD3, 0x38, 0xB4, 0xA9, 0x05, 0xC8, 0x38, 0x00, 0x67, 0x7D, 0xFD, - 0x7D, 0xA7, 0x9E, 0xE3, 0x5E, 0x27, 0xFB, 0x9D, 0xC6, 0xBD, 0x46, 0xAC, 0x54, 0x0B, 0xE1, 0x6A, - 0xA1, 0x79, 0xAD, 0x6F, 0x5C, 0xF6, 0x5D, 0x99, 0x4E, 0xE4, 0x6D, 0x3C, 0xBD, 0x79, 0x3B, 0xEF, - 0xE1, 0xD6, 0x71, 0x39, 0x7A, 0xBD, 0x6F, 0x16, 0xD3, 0x68, 0xD4, 0x9D, 0x45, 0xE8, 0x9D, 0xF0, - 0x4E, 0x4F, 0xE1, 0xF5, 0x13, 0x8F, 0x67, 0x88, 0xED, 0xD4, 0x56, 0x6C, 0xD2, 0x69, 0xCA, 0xD2, - 0xB9, 0x26, 0xEB, 0xFE, 0x05, 0xC0, 0xEF, 0xFA, 0xCF, 0x1E, 0x38, 0xED, 0x49, 0xA5, 0x2F, 0x46, - 0x98, 0x8B, 0xC2, 0x23, 0x17, 0xD4, 0xB7, 0x98, 0xF9, 0x21, 0xB3, 0xED, 0x91, 0xE5, 0xAE, 0xFE, - 0xF3, 0x8F, 0xA9, 0xE2, 0xB6, 0xEA, 0x18, 0x59, 0xA9, 0xD4, 0x5B, 0xA9, 0x2B, 0x43, 0xAA, 0xDA, - 0x5B, 0x97, 0x63, 0xCF, 0xB1, 0x4F, 0x70, 0x3E, 0x98, 0x9A, 0xE7, 0xC5, 0xFD, 0xAB, 0xD3, 0xD6, - 0x71, 0x3E, 0x32, 0x8B, 0x60, 0xAF, 0x59, 0xAF, 0xBE, 0xF6, 0x2C, 0xF4, 0xB5, 0x7A, 0x54, 0xC7, - 0x21, 0x6A, 0xD5, 0x0B, 0x13, 0xD3, 0x62, 0xCC, 0x7E, 0x6C, 0x3D, 0x27, 0x6E, 0x8D, 0x40, 0xA6, - 0x91, 0x55, 0x7B, 0x25, 0x67, 0x91, 0x40, 0xEC, 0x17, 0x61, 0xFA, 0x4F, 0x9C, 0x3F, 0x10, 0xF3, - 0x78, 0x95, 0x5A, 0x9D, 0x13, 0xEA, 0x96, 0xEB, 0xB5, 0x4E, 0x52, 0xCA, 0xC6, 0x6B, 0x74, 0x36, - 0x6E, 0x1B, 0xD3, 0x6D, 0xE7, 0xAA, 0xB3, 0x53, 0x51, 0x66, 0x24, 0x92, 0x09, 0x27, 0x05, 0x89, - 0x1F, 0x84, 0x3B, 0xE2, 0x4C, 0xC3, 0xCD, 0xAE, 0xD2, 0x6A, 0xC0, 0xA9, 0x70, 0x76, 0xC4, 0xC7, - 0xAB, 0xE3, 0x37, 0x53, 0x77, 0x97, 0x46, 0x83, 0x51, 0xA9, 0x61, 0xBF, 0x32, 0x95, 0x54, 0x1F, - 0xD4, 0x4F, 0xE9, 0x39, 0xCD, 0xC4, 0x82, 0x8C, 0x03, 0xB0, 0xED, 0x14, 0xFC, 0x5B, 0x1D, 0xE6, - 0x31, 0xA7, 0x6E, 0x8E, 0x23, 0x6B, 0x50, 0x8F, 0x75, 0x62, 0xAB, 0x08, 0xCB, 0x56, 0x1F, 0x9B, - 0x97, 0xEB, 0xDE, 0x35, 0x78, 0xB3, 0x27, 0x46, 0x23, 0xEB, 0x3C, 0xBD, 0xBC, 0x64, 0x28, 0x33, - 0x9F, 0x7F, 0x1D, 0xB5, 0xB2, 0x2B, 0x1B, 0xCB, 0x13, 0xD6, 0x71, 0x1E, 0x20, 0x9A, 0x8A, 0xC9, - 0x72, 0x32, 0x3B, 0xF7, 0x9E, 0x27, 0x89, 0x6A, 0x50, 0x71, 0x04, 0x7A, 0xCE, 0x4A, 0x9C, 0x9C, - 0x74, 0x82, 0xDF, 0x7C, 0xD6, 0xB7, 0xC4, 0xE4, 0x29, 0xEC, 0x26, 0xCD, 0x2F, 0x02, 0x56, 0x5C, - 0xBA, 0x92, 0x4E, 0xDB, 0xC6, 0x7C, 0x7D, 0x0A, 0xDA, 0xB4, 0xE7, 0xA7, 0x43, 0x1F, 0x56, 0x9B, - 0x98, 0xF4, 0x9B, 0xE8, 0xD0, 0x05, 0x50, 0x0F, 0x60, 0x04, 0xD7, 0x5E, 0x95, 0x54, 0x74, 0xC4, - 0xFA, 0x57, 0xC8, 0xF1, 0x63, 0x05, 0x7A, 0x40, 0x3A, 0x88, 0xF1, 0xA5, 0xCF, 0x69, 0xB4, 0x22, - 0x2C, 0x20, 0xCB, 0x90, 0x06, 0xE4, 0x90, 0x31, 0x31, 0xEF, 0x5A, 0xC6, 0x43, 0x6E, 0x04, 0x4D, - 0xB6, 0x12, 0x0C, 0x12, 0x7D, 0xE5, 0x11, 0x91, 0x29, 0x1A, 0xB4, 0x87, 0x73, 0x14, 0x4F, 0x31, - 0xC1, 0x00, 0x8E, 0x9B, 0x8C, 0xCD, 0x06, 0xBC, 0x99, 0x62, 0x91, 0x99, 0xAB, 0x83, 0xE5, 0x8C, - 0xE8, 0xE8, 0xB3, 0xAD, 0x4A, 0x09, 0xF4, 0xDA, 0x4F, 0xB8, 0xE0, 0x81, 0x5D, 0xD6, 0xA6, 0x3D, - 0x1F, 0x22, 0x6E, 0x15, 0x08, 0x42, 0xA1, 0x99, 0xCE, 0xF8, 0xF8, 0xBF, 0xA6, 0xA7, 0x5D, 0x30, - 0x79, 0x1A, 0xD4, 0xDD, 0x35, 0x01, 0x80, 0xEC, 0xCB, 0x99, 0x0D, 0xFA, 0xFA, 0xCF, 0xC5, 0x55, - 0x6E, 0x3D, 0xB2, 0x0C, 0xE8, 0x10, 0x16, 0x51, 0x6C, 0x0E, 0xB3, 0x3F, 0xC7, 0x7F, 0x54, 0xFB, - 0xCF, 0xDC, 0x73, 0xCF, 0x11, 0xB5, 0x08, 0xF3, 0x34, 0x8D, 0x8F, 0xFC, 0x5B, 0x30, 0xBF, 0xD5, - 0xE9, 0x1B, 0x3D, 0x56, 0xAF, 0xF4, 0x64, 0x4D, 0x4C, 0xC0, 0x45, 0x92, 0x8D, 0xD5, 0x54, 0xFC, - 0xC4, 0xBD, 0x3C, 0x93, 0xEA, 0xAF, 0x6E, 0x3F, 0xA0, 0x0E, 0x2D, 0xA3, 0xD8, 0x1B, 0x79, 0x4F, - 0xFE, 0x43, 0x11, 0xA3, 0x5F, 0xA7, 0x70, 0x39, 0x2E, 0xAC, 0xFF, 0x00, 0x54, 0x4B, 0x55, 0x41, - 0xEA, 0x83, 0xE9, 0x33, 0xBE, 0x93, 0x48, 0xE7, 0x74, 0x3F, 0x86, 0x61, 0xFF, 0x00, 0x96, 0x7E, - 0x8F, 0xFA, 0x5F, 0xDB, 0xA0, 0x2F, 0x0C, 0x36, 0x60, 0x7E, 0x46, 0x51, 0xB8, 0x80, 0x73, 0x39, - 0x87, 0x87, 0x69, 0x4E, 0xCA, 0xFC, 0xBF, 0x94, 0x11, 0xC3, 0x98, 0x7E, 0xE7, 0x52, 0xC3, 0xE5, - 0x61, 0x87, 0xF2, 0xF5, 0x3E, 0xF9, 0x5E, 0x9C, 0xDF, 0xAA, 0xE8, 0x9B, 0xC8, 0xDE, 0x29, 0xF5, - 0x04, 0xF5, 0x33, 0x97, 0xAC, 0x4E, 0x23, 0xA4, 0xA4, 0xD8, 0x9A, 0x86, 0x2A, 0xA3, 0x3F, 0x16, - 0x08, 0x9D, 0xDF, 0x0C, 0x70, 0xBD, 0x6B, 0x70, 0xCB, 0x78, 0xAF, 0x89, 0x6C, 0xAF, 0x49, 0xA0, - 0x54, 0xF3, 0x11, 0x4A, 0xE1, 0xD9, 0x7F, 0x99, 0xBD, 0x01, 0xEC, 0x3A, 0x9C, 0xCB, 0xFC, 0x99, - 0x3E, 0xE2, 0xFE, 0x2B, 0xFD, 0xB0, 0x1B, 0xDB, 0x19, 0xDF, 0x07, 0x6C, 0xF6, 0x82, 0x6E, 0xC9, - 0xC1, 0x3B, 0x1D, 0x8C, 0xE0, 0xF8, 0x97, 0xED, 0x6F, 0xCE, 0x66, 0xD2, 0x70, 0x7D, 0x3A, 0x2E, - 0x8A, 0xB2, 0x42, 0xF3, 0xA8, 0xC9, 0xF7, 0xC7, 0x69, 0xC4, 0xD1, 0x7D, 0xA1, 0x3B, 0xDC, 0x13, - 0x57, 0xA7, 0xAF, 0x94, 0x9C, 0x73, 0x72, 0xFF, 0x00, 0x89, 0xA9, 0xF9, 0x5C, 0x7E, 0xE0, 0xBE, - 0x1E, 0x8A, 0xE1, 0x5C, 0x17, 0x88, 0x59, 0xC5, 0x86, 0xAE, 0xCD, 0x4A, 0x69, 0x13, 0x86, 0x6A, - 0xB2, 0x18, 0xA9, 0x77, 0x62, 0x8F, 0x8C, 0xE0, 0x74, 0x1B, 0x11, 0x93, 0xB6, 0xD3, 0xEA, 0xFC, - 0x43, 0xC3, 0xFA, 0xED, 0x5F, 0x15, 0x67, 0xE1, 0xF4, 0x17, 0xA2, 0xFF, 0x00, 0xF7, 0x03, 0x67, - 0x0A, 0x99, 0xEA, 0x09, 0xF9, 0xCF, 0x13, 0x47, 0x18, 0xE7, 0xB0, 0xEA, 0x17, 0x87, 0xD4, 0xC6, - 0xC6, 0x2E, 0xC4, 0x5A, 0x4A, 0xB9, 0x39, 0x3B, 0x8E, 0x87, 0xAE, 0x77, 0x9D, 0xF4, 0xFB, 0x43, - 0xE2, 0xEA, 0xA1, 0x7C, 0xA0, 0x14, 0x0C, 0x00, 0xBC, 0xA3, 0x1F, 0x94, 0xE5, 0xFC, 0xFD, 0x7B, - 0x7B, 0x47, 0x5B, 0xC4, 0xB3, 0x1E, 0xAF, 0x87, 0x78, 0x2B, 0x4D, 0x41, 0x0D, 0xC4, 0x75, 0x06, - 0xFB, 0x06, 0xFE, 0x5D, 0x67, 0x95, 0x47, 0xD7, 0xA9, 0xFC, 0xA7, 0x6A, 0xCD, 0x7F, 0x0E, 0xE0, - 0xF4, 0x8A, 0x83, 0x53, 0xA6, 0x5E, 0x82, 0xB4, 0x1B, 0x9F, 0xA0, 0xDE, 0x7C, 0xE9, 0xBC, 0x7B, - 0xC4, 0x6C, 0x52, 0xB6, 0x57, 0x60, 0x07, 0xA9, 0x5E, 0x50, 0x60, 0x51, 0xE3, 0x0F, 0x20, 0xE4, - 0x69, 0x58, 0x37, 0x5E, 0x63, 0x58, 0x66, 0xFC, 0x67, 0x1E, 0xFA, 0xEB, 0xBF, 0xFA, 0xAD, 0x73, - 0xCC, 0xE7, 0xE9, 0xEE, 0x6F, 0xE3, 0x5A, 0xDD, 0x4B, 0x01, 0xA1, 0xD2, 0x85, 0xA8, 0xEF, 0xE7, - 0x5E, 0xDC, 0xBF, 0x82, 0xF5, 0x9C, 0xDB, 0x28, 0x2E, 0xC5, 0xB5, 0xFA, 0xBB, 0x35, 0x4D, 0x92, - 0x42, 0x9F, 0x85, 0x57, 0xE4, 0x04, 0xE0, 0x8F, 0x1C, 0x2B, 0x37, 0xFB, 0x9C, 0xE3, 0xE7, 0x51, - 0xFE, 0xD3, 0x55, 0x5E, 0x21, 0xE1, 0xDC, 0x41, 0x02, 0x1B, 0xD1, 0x2C, 0x6D, 0x94, 0x04, 0x60, - 0x49, 0xFD, 0x26, 0x1A, 0x74, 0x2D, 0xD6, 0xD7, 0xA7, 0x5C, 0x54, 0x81, 0x54, 0x03, 0xB2, 0x80, - 0x00, 0x9E, 0x3F, 0x5F, 0xC3, 0x9F, 0x88, 0xF1, 0x6D, 0x59, 0xD4, 0xEA, 0xE8, 0x1A, 0x4B, 0xEC, - 0xF3, 0x82, 0x2A, 0x73, 0x31, 0x1C, 0xAA, 0x9B, 0x93, 0xB6, 0xE1, 0x7B, 0x6E, 0x36, 0x23, 0xA4, - 0xE8, 0xEA, 0xAD, 0x74, 0xB0, 0xA5, 0x84, 0x15, 0x3D, 0x0F, 0x63, 0x38, 0x6F, 0x67, 0x91, 0x7D, - 0xAB, 0x41, 0xC2, 0xD7, 0x81, 0xCA, 0x77, 0x03, 0x3F, 0x9E, 0xDE, 0x93, 0x73, 0xE1, 0x9A, 0xD2, - 0x38, 0x33, 0xA5, 0xF8, 0x1A, 0xA6, 0x3A, 0x70, 0x15, 0x40, 0x7F, 0x89, 0x98, 0x05, 0x1B, 0x93, - 0xEA, 0x4F, 0x34, 0x75, 0x7A, 0x0D, 0x25, 0x7A, 0x81, 0xA8, 0xF2, 0xF9, 0xEE, 0x00, 0x8E, 0x66, - 0x39, 0xC6, 0x7A, 0xED, 0xD3, 0x7F, 0xEF, 0x07, 0x4F, 0x76, 0x69, 0x0A, 0x18, 0xB7, 0x28, 0xC7, - 0x37, 0x2E, 0x33, 0x0F, 0x2D, 0xCD, 0x90, 0x36, 0x3F, 0x94, 0xD5, 0xEA, 0xD1, 0x90, 0x40, 0xA5, - 0x6B, 0xE5, 0xA2, 0x84, 0x55, 0xE8, 0xAB, 0xB0, 0x02, 0x03, 0xDA, 0xC7, 0xBC, 0x31, 0x43, 0x39, - 0x07, 0xB8, 0x86, 0x34, 0xBC, 0xDD, 0x47, 0x4F, 0xCA, 0x64, 0xB1, 0xBD, 0xAD, 0xD3, 0x39, 0x80, - 0x45, 0x8D, 0xD0, 0x1F, 0xAC, 0xE9, 0x0D, 0x1E, 0x0F, 0x48, 0xF4, 0xD2, 0x03, 0xDA, 0x43, 0x5C, - 0x61, 0xA4, 0x7B, 0x0F, 0xC4, 0x4E, 0x3D, 0xA6, 0xAD, 0x3F, 0x0D, 0x1B, 0x7C, 0x33, 0xAF, 0x56, - 0x87, 0x3D, 0xA6, 0xFD, 0x37, 0x0E, 0x67, 0x38, 0x54, 0x2C, 0x47, 0xA0, 0x8A, 0xD7, 0x3B, 0x4B, - 0xC3, 0x82, 0x80, 0x48, 0xCC, 0xE8, 0xD5, 0x52, 0x56, 0x41, 0x38, 0xC8, 0xED, 0x17, 0xC6, 0x5E, - 0xCE, 0x13, 0x50, 0x23, 0xC9, 0x2B, 0xDC, 0x9B, 0x79, 0x48, 0xFC, 0x76, 0x9C, 0x44, 0xE3, 0x36, - 0x6A, 0xD8, 0x8A, 0x5B, 0x4D, 0x9F, 0x43, 0x76, 0x4F, 0xE4, 0x26, 0xF8, 0xF5, 0xDD, 0xAC, 0x75, - 0xBF, 0x51, 0xE8, 0x9B, 0x54, 0x8A, 0x3A, 0xC4, 0xBE, 0xBC, 0x74, 0x06, 0x71, 0x4D, 0x9A, 0x86, - 0x3B, 0xDD, 0x58, 0xFF, 0x00, 0xE1, 0x5E, 0x7F, 0x53, 0x28, 0x86, 0x6F, 0xDB, 0xB6, 0xC6, 0xF6, - 0x2D, 0xCB, 0xFA, 0x62, 0x7A, 0xE4, 0xB7, 0xEB, 0x97, 0x0F, 0x89, 0xFB, 0x75, 0x2D, 0xE2, 0x05, - 0x7A, 0xB0, 0x40, 0x7F, 0x98, 0xE2, 0x5D, 0x1C, 0x5E, 0xBD, 0x39, 0xF3, 0x02, 0xB5, 0xF7, 0x63, - 0xE1, 0xFE, 0x14, 0x5F, 0x7D, 0xF7, 0x3F, 0x49, 0xCA, 0x54, 0x54, 0xFD, 0x95, 0x00, 0xFA, 0x81, - 0xBC, 0x20, 0x09, 0x9A, 0xFE, 0x3B, 0xD7, 0xC5, 0x1E, 0xF2, 0x7D, 0x3A, 0x45, 0x86, 0x61, 0x2E, - 0xE2, 0x29, 0x8F, 0x71, 0x22, 0xBE, 0x0C, 0x70, 0x9C, 0x46, 0xF2, 0xC0, 0x19, 0x83, 0x9C, 0xE0, - 0xC2, 0x13, 0x24, 0x7B, 0x01, 0x21, 0x7C, 0x41, 0x27, 0x1D, 0xE2, 0xDD, 0xE5, 0x22, 0xD4, 0x7B, - 0x22, 0x5E, 0xC2, 0x65, 0x3B, 0x6D, 0x12, 0xCD, 0xD6, 0x6E, 0x46, 0x6D, 0x13, 0x3F, 0xBC, 0x02, - 0xF1, 0x6C, 0xC4, 0x98, 0x24, 0x99, 0xBC, 0x67, 0x4C, 0x2E, 0x4C, 0x10, 0xEA, 0x3F, 0x68, 0x13, - 0xF2, 0x38, 0x83, 0x8C, 0xCA, 0x22, 0x38, 0xB4, 0x79, 0xA4, 0xF5, 0x16, 0x0F, 0x96, 0xF0, 0x4A, - 0x50, 0xC7, 0x6B, 0x2C, 0x1F, 0x34, 0xCC, 0xA1, 0x59, 0x68, 0xC1, 0x47, 0xB4, 0xC7, 0xAC, 0x9F, - 0xBA, 0x7D, 0xBF, 0xF8, 0xDD, 0xC0, 0xB4, 0x54, 0xEA, 0x38, 0x8A, 0x9B, 0x2D, 0xF3, 0x2A, 0xAC, - 0x17, 0x64, 0x20, 0x8E, 0x6F, 0x40, 0x7D, 0xB3, 0x3C, 0xFF, 0x00, 0xDB, 0x2F, 0x89, 0x6F, 0xFF, - 0x00, 0x4D, 0x4E, 0x1F, 0x55, 0x85, 0x52, 0xEB, 0x32, 0xF8, 0x3D, 0x40, 0x9D, 0xBD, 0x1D, 0xA7, - 0x46, 0x6C, 0x60, 0x36, 0x65, 0x02, 0x78, 0x6F, 0xB4, 0x3D, 0x35, 0xBC, 0x4E, 0xAE, 0x74, 0x04, - 0xB5, 0x67, 0x9C, 0x01, 0xDF, 0xD6, 0x78, 0x3F, 0x22, 0x5F, 0x67, 0xAB, 0xC5, 0x7E, 0x1F, 0x3F, - 0x47, 0x5E, 0x60, 0x02, 0x86, 0x27, 0xD4, 0xE2, 0x19, 0xB5, 0x19, 0x48, 0x20, 0x01, 0xD2, 0x67, - 0x5A, 0xD8, 0x6E, 0x37, 0x94, 0x50, 0x8C, 0xEF, 0xBC, 0xF1, 0x3B, 0xBE, 0x83, 0xF6, 0x73, 0x77, - 0xDF, 0x29, 0xB7, 0x4D, 0x70, 0xE7, 0x55, 0x1F, 0x09, 0x3B, 0xE3, 0x1F, 0xFB, 0x9E, 0xD0, 0xF0, - 0xCA, 0x4F, 0x44, 0xFC, 0x27, 0x8D, 0xFB, 0x3E, 0xD2, 0x9D, 0x16, 0x91, 0xDA, 0xC6, 0x02, 0xEB, - 0x17, 0x9F, 0x93, 0x3B, 0x85, 0x3D, 0xF1, 0xE9, 0xB4, 0xF5, 0xDF, 0x79, 0xB0, 0x74, 0x63, 0xF2, - 0x3B, 0xCE, 0xF3, 0xE9, 0xCE, 0x88, 0xF0, 0xAA, 0x8F, 0x41, 0xF9, 0xC5, 0xB7, 0x09, 0xAF, 0xB6, - 0x7F, 0x58, 0xC3, 0xAB, 0xBF, 0xC9, 0x7F, 0x2D, 0x54, 0xD8, 0x3F, 0x67, 0x23, 0x63, 0x06, 0xBD, - 0x4E, 0xB9, 0x80, 0xE7, 0xA2, 0xBC, 0xFA, 0x82, 0x44, 0x53, 0x3D, 0xFA, 0x0A, 0x28, 0xA8, 0xD9, - 0x75, 0x81, 0x11, 0x7A, 0x93, 0x39, 0x75, 0xEB, 0x14, 0xEB, 0xEA, 0x7A, 0x2A, 0x2B, 0x5D, 0x67, - 0x20, 0x9F, 0xDA, 0x33, 0xB1, 0x67, 0x0B, 0xD4, 0x6B, 0x9C, 0x35, 0xF9, 0x20, 0x74, 0x50, 0x30, - 0x04, 0xD7, 0xA7, 0xF0, 0xF9, 0x5C, 0x1E, 0x50, 0x3E, 0x92, 0x5A, 0xE5, 0x3E, 0xA2, 0xED, 0x41, - 0xC0, 0x5C, 0xE6, 0x3E, 0x8D, 0x23, 0x3E, 0x19, 0xD0, 0x73, 0x74, 0xC8, 0x13, 0xBB, 0x57, 0x06, - 0x09, 0x8D, 0x80, 0x9B, 0x2B, 0xD0, 0x2A, 0x8E, 0x99, 0x90, 0xD7, 0x06, 0xBD, 0x19, 0xF4, 0x9A, - 0x13, 0x44, 0x7D, 0x27, 0x51, 0xFE, 0xEB, 0xA7, 0xFD, 0xE5, 0xB5, 0xA9, 0xF4, 0xE6, 0xC9, 0x99, - 0xAE, 0xE3, 0x3A, 0x6A, 0x94, 0x8A, 0x6B, 0x6B, 0x5B, 0xDC, 0x60, 0x4E, 0x9C, 0xF8, 0xFA, 0xEB, - 0xEA, 0x33, 0x7B, 0x93, 0xEC, 0xA5, 0xE1, 0x9C, 0xE4, 0x02, 0x6C, 0x03, 0xF9, 0x43, 0x63, 0xF4, - 0xDE, 0x39, 0x34, 0x15, 0x69, 0xC1, 0x27, 0x92, 0xA0, 0x77, 0x24, 0x9C, 0x66, 0x73, 0x2D, 0xE2, - 0x1A, 0xAB, 0xD8, 0x93, 0x63, 0x22, 0x9F, 0xE1, 0x4D, 0x80, 0x88, 0xC3, 0x3B, 0x65, 0x89, 0x27, - 0xDF, 0x79, 0xE8, 0x9F, 0x8D, 0x7F, 0x75, 0xCA, 0xF9, 0xBF, 0xA8, 0xEC, 0xB6, 0xA3, 0x45, 0x50, - 0xDE, 0xD0, 0xE4, 0x76, 0x41, 0x99, 0xCE, 0xE2, 0x3E, 0x21, 0x5D, 0x0A, 0xE6, 0x8D, 0x13, 0x5A, - 0x08, 0xD9, 0xDD, 0xF9, 0x57, 0x3E, 0xF8, 0x8A, 0x15, 0xE6, 0x2B, 0x88, 0x54, 0xC3, 0x86, 0xDE, - 0x40, 0xC9, 0xE4, 0x3B, 0x11, 0x98, 0xF7, 0xE0, 0xE6, 0x73, 0xB2, 0x8E, 0x7C, 0xB6, 0xDC, 0xAE, - 0xE7, 0x84, 0x35, 0x97, 0x71, 0x6D, 0x1B, 0x6B, 0xF5, 0xDE, 0x52, 0x56, 0x5C, 0xA5, 0x74, 0x54, - 0xB8, 0xE9, 0xFC, 0x4C, 0x4E, 0xE7, 0xE4, 0x27, 0xA8, 0xAB, 0x88, 0x68, 0xA9, 0xC9, 0xBE, 0xC4, - 0xAA, 0x94, 0x05, 0x89, 0x3B, 0x0D, 0xA7, 0xCC, 0xFC, 0x2D, 0xC5, 0x8E, 0x92, 0x9B, 0x74, 0x6E, - 0xD8, 0x19, 0x2E, 0x9F, 0xDF, 0xFC, 0xC6, 0x71, 0xDE, 0x26, 0xD6, 0x68, 0xD9, 0x03, 0x1F, 0x89, - 0x59, 0x76, 0xF7, 0x13, 0xE7, 0xFC, 0xD7, 0xA9, 0xE1, 0x3C, 0x6D, 0xE3, 0x0D, 0x5F, 0x89, 0xF8, - 0xDD, 0xB7, 0x2B, 0x0A, 0xB4, 0x6A, 0xC5, 0x68, 0xA1, 0x5B, 0x18, 0x5F, 0xEE, 0x4F, 0x59, 0xE6, - 0xAB, 0xD7, 0x5D, 0xA3, 0xB4, 0x5B, 0x45, 0xAE, 0x8C, 0xA7, 0x38, 0xE6, 0x99, 0xC9, 0x64, 0xB8, - 0x8B, 0x07, 0xC4, 0xA7, 0x04, 0x18, 0xBB, 0x1C, 0xB1, 0xC9, 0xEF, 0x39, 0xDB, 0x5B, 0xC7, 0xD7, - 0x7C, 0x2D, 0xC6, 0x8F, 0x1B, 0xE1, 0x42, 0xCB, 0x3F, 0x7D, 0x5E, 0x03, 0x1F, 0x59, 0xD9, 0x00, - 0xCF, 0x17, 0xF6, 0x61, 0x4D, 0x8D, 0xA7, 0xD4, 0xB1, 0x52, 0x13, 0x18, 0xCF, 0xAF, 0xFF, 0x00, - 0xB1, 0x3D, 0xE0, 0xA8, 0x9E, 0xD3, 0xEC, 0x78, 0x3B, 0xBD, 0x78, 0xE5, 0xAF, 0x9F, 0xE5, 0x92, - 0x75, 0x70, 0x90, 0xB0, 0xC2, 0xC7, 0xAD, 0x1E, 0xB1, 0x8B, 0x48, 0x1D, 0xA7, 0x5B, 0x5C, 0xC9, - 0xF3, 0x43, 0x0E, 0xBD, 0x65, 0x07, 0xDE, 0x28, 0x03, 0x09, 0x54, 0xE6, 0x18, 0xDE, 0xB4, 0xAD, - 0x91, 0x81, 0xE2, 0x15, 0x4C, 0x60, 0x53, 0x30, 0x44, 0xCF, 0x05, 0x8E, 0x76, 0x84, 0x44, 0x81, - 0x24, 0x89, 0x60, 0x4F, 0x48, 0xB7, 0x4D, 0x88, 0x9B, 0x56, 0xBC, 0xF6, 0x94, 0x69, 0xE6, 0x38, - 0xC4, 0xA5, 0x4C, 0x22, 0xA2, 0x77, 0xC4, 0x82, 0x82, 0x7B, 0x4E, 0x88, 0xA0, 0x74, 0xC4, 0xBF, - 0x24, 0x47, 0xD8, 0x63, 0x00, 0xD3, 0x98, 0x63, 0x4D, 0x93, 0xD2, 0x6C, 0x15, 0x80, 0x7A, 0x42, - 0x28, 0x00, 0xE9, 0x0F, 0x65, 0x8C, 0xA2, 0x8F, 0x68, 0x62, 0x98, 0xC2, 0x71, 0x16, 0x6C, 0xC7, - 0x79, 0x7C, 0xA1, 0x8A, 0x14, 0xA9, 0x0D, 0xB8, 0x23, 0x04, 0x4E, 0x7E, 0xA3, 0x82, 0xD7, 0x69, - 0x20, 0x9E, 0x65, 0x3E, 0xBD, 0x44, 0xD8, 0x6D, 0x38, 0xDC, 0xC5, 0x9B, 0xB1, 0xDE, 0x63, 0xAF, - 0x1C, 0xEF, 0xED, 0xAE, 0x7B, 0xF5, 0xFA, 0x79, 0x1E, 0x25, 0xF6, 0x65, 0x5E, 0xAE, 0xE3, 0x6D, - 0x0E, 0x2A, 0x2C, 0x72, 0x79, 0x58, 0x0C, 0xFD, 0x0C, 0xBE, 0x19, 0xF6, 0x67, 0xA3, 0xD2, 0x5E, - 0x2C, 0xD7, 0x6A, 0x0D, 0xC5, 0x4E, 0x79, 0x01, 0xC8, 0xFF, 0x00, 0x13, 0xD5, 0x9B, 0xB3, 0xDE, - 0x0F, 0x39, 0x7D, 0x87, 0x49, 0x89, 0xF8, 0xDC, 0xEE, 0xD6, 0xEF, 0x9A, 0xE6, 0x46, 0x5D, 0x7F, - 0x02, 0xE1, 0xFA, 0xC3, 0x4D, 0x95, 0xD6, 0x74, 0xBA, 0x9D, 0x38, 0xE5, 0xAB, 0x51, 0x47, 0xC2, - 0xC0, 0x7A, 0x1E, 0xCC, 0x3D, 0x8C, 0x3D, 0x36, 0x92, 0xF5, 0x60, 0x35, 0x02, 0xB7, 0x03, 0x6F, - 0x32, 0xA1, 0x80, 0x7E, 0x6A, 0x4E, 0xDF, 0x4C, 0xCD, 0x68, 0x02, 0xEE, 0xC7, 0x79, 0x6F, 0x70, - 0x03, 0x03, 0xA4, 0xDD, 0xF1, 0x73, 0x59, 0x9D, 0xD8, 0x34, 0xA2, 0x85, 0xDD, 0xAC, 0x03, 0xE9, - 0x18, 0x75, 0x7A, 0x6A, 0x36, 0x1C, 0xCE, 0x7D, 0x97, 0x1F, 0xAC, 0xC2, 0xF6, 0x96, 0xD8, 0x40, - 0x1D, 0x73, 0xD4, 0xC2, 0x7E, 0x3F, 0x3F, 0xB5, 0x7C, 0xB5, 0xBC, 0xF1, 0x46, 0xC7, 0xFB, 0x74, - 0xA2, 0xFC, 0xCE, 0x4C, 0x59, 0xE2, 0xBA, 0x93, 0xB2, 0xF2, 0x0F, 0x92, 0xCC, 0xA0, 0x7A, 0xC2, - 0x19, 0xED, 0x3A, 0x4F, 0x17, 0x13, 0xF4, 0xC5, 0xEF, 0xAF, 0xEC, 0xE3, 0xAF, 0xD6, 0x1D, 0xCD, - 0xC4, 0x7B, 0x05, 0x02, 0x67, 0xB6, 0xFB, 0xAD, 0xCF, 0x99, 0x6D, 0x8D, 0xEC, 0x5B, 0x68, 0x41, - 0x49, 0x84, 0x2A, 0xF5, 0x13, 0x53, 0x9E, 0x67, 0xD4, 0x1E, 0xD6, 0xB2, 0x8A, 0x8B, 0x74, 0x10, - 0x85, 0x13, 0x60, 0xAB, 0xDA, 0x18, 0xAA, 0x6B, 0xD8, 0x63, 0x18, 0xD3, 0xFA, 0xC6, 0x0A, 0x3D, - 0xA6, 0xB1, 0x54, 0xB0, 0x98, 0xE9, 0x33, 0xEC, 0xB1, 0x9C, 0x51, 0x2C, 0xD0, 0xAC, 0xA4, 0x15, - 0xC8, 0x20, 0x83, 0x9E, 0xF3, 0x47, 0x29, 0x93, 0x92, 0x1A, 0x9C, 0x0B, 0x7C, 0x3C, 0x6B, 0xB4, - 0x3E, 0x9D, 0x8E, 0x01, 0xC8, 0xC7, 0x51, 0x25, 0xFC, 0x21, 0xF5, 0x08, 0x51, 0xD4, 0x80, 0x7B, - 0xF7, 0x13, 0xD0, 0x84, 0x27, 0xA0, 0x84, 0x11, 0x87, 0x42, 0x7F, 0x59, 0xE5, 0xEB, 0xC1, 0x3F, - 0xF5, 0xAE, 0xF3, 0xCB, 0x7F, 0x6F, 0x95, 0x78, 0x83, 0xC1, 0x1A, 0xBF, 0x39, 0xAF, 0xD3, 0x56, - 0x0B, 0xB6, 0xE5, 0x4F, 0x46, 0xF7, 0x06, 0x72, 0x34, 0x1E, 0x02, 0xE3, 0x3A, 0xFD, 0x50, 0x5B, - 0x34, 0xFE, 0x52, 0x67, 0x77, 0x63, 0xD2, 0x7D, 0xC0, 0x0B, 0x08, 0xC6, 0x70, 0x3D, 0x84, 0x21, - 0x41, 0x63, 0x93, 0xB9, 0x9C, 0xFF, 0x00, 0xC7, 0x9B, 0xB5, 0xBF, 0xE6, 0xB9, 0xF0, 0xE0, 0xF0, - 0x2E, 0x03, 0x57, 0x04, 0xE1, 0xA9, 0xA5, 0xA4, 0x64, 0x8D, 0xD9, 0xB1, 0xD4, 0xCE, 0xAA, 0x50, - 0x4F, 0x41, 0x37, 0x26, 0x9F, 0x1D, 0xA3, 0x56, 0x83, 0xE9, 0x89, 0xE9, 0xF6, 0x9C, 0xCC, 0x8E, - 0x16, 0x5B, 0x76, 0xB1, 0x2E, 0x98, 0xFA, 0x46, 0xAE, 0x93, 0xD6, 0x6E, 0x4D, 0x39, 0xF4, 0x8D, - 0x4D, 0x37, 0xAC, 0xCD, 0xF2, 0x35, 0xEA, 0xF3, 0x22, 0xAD, 0xBA, 0x43, 0x5A, 0xBB, 0xC7, 0xF9, - 0x47, 0xB4, 0x25, 0x43, 0x3A, 0xEB, 0x25, 0x0A, 0xF0, 0x3A, 0x48, 0x13, 0x7C, 0x47, 0x84, 0x96, - 0x10, 0x66, 0x1A, 0x49, 0x15, 0xEF, 0x18, 0x95, 0x6D, 0xD2, 0x33, 0x00, 0x48, 0x1C, 0x0D, 0xA1, - 0xB5, 0x2B, 0x93, 0x02, 0x08, 0x00, 0x48, 0xF6, 0x85, 0xEF, 0x10, 0xF7, 0xCA, 0x4A, 0x34, 0xFE, - 0x60, 0x01, 0x83, 0xE6, 0x01, 0xB6, 0x66, 0x53, 0x7E, 0xDF, 0xA4, 0x59, 0xB8, 0xE7, 0x33, 0x5E, - 0xA3, 0x5B, 0x79, 0xC0, 0x1E, 0xF0, 0x5A, 0xC0, 0x66, 0x43, 0x69, 0x32, 0x8B, 0xB4, 0x7D, 0x56, - 0x9E, 0xEE, 0x31, 0x8C, 0xC4, 0x96, 0xC6, 0xE4, 0xC0, 0x2C, 0x4C, 0x02, 0x19, 0xA6, 0xA4, 0x1A, - 0xB7, 0xB7, 0x3D, 0x22, 0xCB, 0x93, 0x08, 0x55, 0x98, 0x5E, 0x56, 0x26, 0xBE, 0x01, 0x63, 0x30, - 0x83, 0x60, 0x6D, 0xB4, 0x21, 0x56, 0x61, 0x0A, 0x89, 0xED, 0x2D, 0x45, 0x17, 0x63, 0xB0, 0x83, - 0x86, 0x33, 0x48, 0xA3, 0xE9, 0x2C, 0x54, 0x04, 0x36, 0x06, 0x70, 0x84, 0xC3, 0x15, 0x76, 0x11, - 0xD9, 0x55, 0xEA, 0x64, 0xF3, 0x54, 0x74, 0x12, 0xD4, 0x15, 0xA0, 0xF7, 0x8C, 0x14, 0x0E, 0xF0, - 0x7C, 0xFC, 0x74, 0x90, 0xDC, 0xC7, 0xA4, 0x3E, 0x49, 0x81, 0x00, 0x96, 0x00, 0x8A, 0x04, 0x98, - 0xC5, 0x04, 0xC1, 0x0C, 0x6F, 0x08, 0x01, 0x29, 0x50, 0x98, 0xE4, 0xA8, 0x98, 0x69, 0x80, 0x03, - 0x32, 0xC2, 0x67, 0xA0, 0x9A, 0x12, 0x8C, 0x75, 0x11, 0xCB, 0x54, 0xC5, 0xE8, 0xE3, 0x28, 0xA5, - 0x8F, 0x68, 0xC5, 0xD3, 0x9F, 0x49, 0xA9, 0x6A, 0xF4, 0x19, 0x8C, 0x15, 0x13, 0xED, 0x33, 0x7A, - 0x6B, 0xD5, 0x94, 0x51, 0xEB, 0x18, 0x28, 0x13, 0x52, 0xD2, 0x23, 0x16, 0x8F, 0x69, 0x8B, 0xDB, - 0x53, 0x96, 0x55, 0xA0, 0x7A, 0x46, 0xAE, 0x9F, 0xDA, 0x6A, 0x5A, 0x80, 0x86, 0x2B, 0x3E, 0x93, - 0x17, 0xB6, 0xA7, 0x2C, 0xEB, 0x40, 0x1D, 0xA3, 0x16, 0xAC, 0x76, 0x8F, 0x09, 0x8E, 0xB0, 0xC2, - 0x0E, 0xC2, 0x62, 0xF4, 0xD6, 0x14, 0x10, 0x7A, 0x43, 0x08, 0x3D, 0x23, 0x45, 0x67, 0xD3, 0x10, - 0xC2, 0x4C, 0x5E, 0x9A, 0xC7, 0x92, 0x04, 0x77, 0x94, 0x58, 0x0D, 0xE2, 0x0B, 0x98, 0x24, 0x93, - 0x3D, 0xF8, 0xF3, 0x69, 0xCD, 0x68, 0x06, 0x0F, 0x9E, 0x33, 0x12, 0x50, 0x91, 0xEE, 0x25, 0x8A, - 0x89, 0x8E, 0x44, 0x27, 0xD4, 0x1E, 0xD0, 0x3C, 0xE6, 0xC7, 0xD2, 0x10, 0xA0, 0xF5, 0x30, 0xBC, - 0x91, 0x2F, 0x80, 0xCE, 0xEE, 0x5A, 0x01, 0x04, 0xCD, 0x66, 0xA1, 0x28, 0xD6, 0x3A, 0x47, 0x53, - 0x28, 0x42, 0x44, 0xB1, 0x49, 0x9A, 0x82, 0x89, 0x64, 0x00, 0x32, 0x76, 0x8F, 0xB0, 0xC6, 0x71, - 0x4E, 0x3A, 0xF5, 0x85, 0xE4, 0x88, 0x66, 0xC5, 0x5D, 0xC9, 0x80, 0x75, 0x20, 0x19, 0x7C, 0xA5, - 0x8A, 0x06, 0x33, 0x89, 0x46, 0xB0, 0x20, 0x3E, 0xAC, 0x9D, 0x80, 0x89, 0x6B, 0xDC, 0xC6, 0x4A, - 0x36, 0x1F, 0xCA, 0x3D, 0x65, 0xF2, 0xA0, 0xEA, 0x66, 0x61, 0x63, 0x1E, 0xA7, 0x69, 0x32, 0x4F, - 0xBC, 0xB1, 0x6B, 0x41, 0x74, 0x59, 0x46, 0xF5, 0x1D, 0x04, 0x46, 0x09, 0x96, 0x14, 0x98, 0xE0, - 0xD1, 0xB5, 0xA5, 0xBE, 0x50, 0x09, 0x66, 0xE8, 0x61, 0x0A, 0xC9, 0xED, 0x18, 0xB4, 0x93, 0xDA, - 0x5F, 0x11, 0x10, 0x10, 0x9E, 0xA7, 0x30, 0x85, 0x46, 0x6C, 0x4D, 0x23, 0x37, 0x41, 0x34, 0x26, - 0x80, 0x9E, 0xA2, 0x66, 0xF5, 0x0C, 0x96, 0xB9, 0xAB, 0x4E, 0x7B, 0x46, 0xA5, 0x07, 0xB8, 0x9D, - 0x44, 0xD0, 0x7B, 0x47, 0xA6, 0x80, 0x09, 0x8B, 0xE4, 0x8D, 0x4E, 0x1C, 0x94, 0xA3, 0xDA, 0x3D, - 0x34, 0xF9, 0xED, 0x3A, 0x8B, 0xA4, 0x55, 0x86, 0x34, 0xEA, 0x26, 0x2F, 0x91, 0xAF, 0x47, 0x3D, - 0x34, 0xF8, 0xED, 0x98, 0xE4, 0xA4, 0xFA, 0x62, 0x6E, 0x5A, 0x57, 0xD2, 0x31, 0x6A, 0x1D, 0x84, - 0xE7, 0x7B, 0x6A, 0x72, 0xC6, 0x9A, 0x73, 0xE9, 0x1C, 0xBA, 0x69, 0xA8, 0x20, 0x10, 0x80, 0xF4, - 0x98, 0xBD, 0xD6, 0xFD, 0x59, 0xD6, 0x8C, 0x7B, 0x46, 0x0A, 0x40, 0xF7, 0x8D, 0x02, 0x58, 0xC4, - 0xCE, 0xD3, 0x80, 0x15, 0x7B, 0x62, 0x18, 0xAC, 0x7C, 0xE1, 0x01, 0xBC, 0x30, 0x26, 0x34, 0xE0, - 0x45, 0x67, 0xD3, 0x10, 0xC2, 0x0E, 0xF2, 0xC0, 0x30, 0x80, 0x99, 0xB4, 0xA8, 0x28, 0x1D, 0xA1, - 0x01, 0x2C, 0x2F, 0xAC, 0x21, 0x81, 0x06, 0x94, 0x14, 0x7A, 0x43, 0x0B, 0xED, 0x2B, 0x9C, 0x09, - 0x39, 0xE0, 0x5E, 0x33, 0xEE, 0xC7, 0xD2, 0x58, 0xA3, 0xD6, 0x30, 0xDC, 0x33, 0xB4, 0x13, 0x69, - 0x33, 0xE8, 0xFC, 0xBC, 0x9F, 0x01, 0x35, 0x05, 0xEB, 0x04, 0x80, 0xBD, 0x21, 0x17, 0xE6, 0x18, - 0x26, 0x2C, 0xF2, 0xF7, 0x31, 0x0A, 0x2E, 0x3A, 0x4A, 0xC9, 0x26, 0x0B, 0xD8, 0x89, 0xD3, 0xAC, - 0x53, 0xDF, 0xB6, 0x06, 0xD3, 0x52, 0x0D, 0x35, 0xAC, 0x0A, 0x77, 0x80, 0x6D, 0x5F, 0xAC, 0xCC, - 0x49, 0x3B, 0x93, 0x2B, 0x33, 0x53, 0x96, 0x74, 0xF3, 0x76, 0x3A, 0x44, 0xBD, 0xAC, 0xDD, 0x4C, - 0xAC, 0xCA, 0x2A, 0x49, 0xF7, 0x9A, 0xC1, 0xA1, 0x2D, 0x9E, 0xF2, 0x62, 0x17, 0x96, 0x44, 0x21, - 0x5F, 0xAC, 0x50, 0x40, 0x12, 0x04, 0x06, 0x34, 0x56, 0x23, 0x16, 0xA1, 0xD6, 0x16, 0xA0, 0x2D, - 0x00, 0xC6, 0x2E, 0x9B, 0x3D, 0x04, 0x6A, 0x26, 0xF3, 0x55, 0x48, 0x00, 0x13, 0x9D, 0xEB, 0x1A, - 0x91, 0x91, 0x74, 0x79, 0xED, 0x1C, 0x9A, 0x01, 0xDC, 0x4D, 0xC8, 0x83, 0x1D, 0xA1, 0x80, 0xA3, - 0xA9, 0x9C, 0xEF, 0x75, 0xAF, 0x56, 0x44, 0xD1, 0x01, 0xD4, 0x47, 0x26, 0x95, 0x57, 0xB6, 0x63, - 0x81, 0x58, 0x41, 0xF1, 0xDA, 0x62, 0xF5, 0x5A, 0xC8, 0xA5, 0xAB, 0x1D, 0x06, 0x21, 0x85, 0xC4, - 0x81, 0x98, 0xF4, 0x10, 0xC2, 0x39, 0xEA, 0x26, 0x75, 0xA5, 0x0C, 0xF6, 0x84, 0x06, 0x7A, 0x99, - 0x62, 0xB6, 0xF4, 0x84, 0x2A, 0x63, 0xDE, 0x1A, 0x54, 0x00, 0x1D, 0xE1, 0x2A, 0x12, 0x76, 0x1F, - 0x58, 0x4B, 0x4E, 0xFB, 0xC7, 0x2A, 0x01, 0x31, 0x6B, 0x58, 0x14, 0xAF, 0x1D, 0x63, 0x02, 0x09, - 0x02, 0xC2, 0x08, 0x66, 0x35, 0xAC, 0x0E, 0x04, 0x98, 0x31, 0x81, 0x25, 0x84, 0x86, 0xAC, 0x27, - 0x94, 0x98, 0x41, 0x23, 0x42, 0xE2, 0x5E, 0x25, 0xAB, 0x00, 0x10, 0x08, 0x40, 0x62, 0x5E, 0x25, - 0x85, 0xCC, 0x34, 0xAB, 0x20, 0x49, 0xCF, 0x08, 0x54, 0x61, 0x0A, 0xA0, 0x8B, 0xC9, 0x32, 0xC0, - 0x31, 0xA2, 0xB9, 0x61, 0x00, 0x86, 0x9C, 0x28, 0x08, 0x41, 0x7D, 0xA3, 0x42, 0xE3, 0xB4, 0x20, - 0x3D, 0xA1, 0xA7, 0x1E, 0x0D, 0x9B, 0x1D, 0x62, 0xCB, 0x9E, 0xD1, 0x85, 0x33, 0xD4, 0xCA, 0xE4, - 0x03, 0xDC, 0x4F, 0xAA, 0xF1, 0x14, 0x59, 0x8F, 0x78, 0x3F, 0x11, 0xEA, 0x63, 0x88, 0x41, 0x00, - 0x95, 0xED, 0x11, 0x4A, 0x2B, 0x9F, 0x78, 0x25, 0x36, 0x8C, 0x27, 0x7D, 0x86, 0x65, 0x90, 0x7B, - 0x8D, 0xA2, 0x09, 0x35, 0x13, 0x2B, 0xCA, 0x22, 0x37, 0x07, 0x38, 0xC4, 0x21, 0x51, 0x3D, 0x7A, - 0xC7, 0x41, 0x22, 0xB8, 0x6B, 0x5E, 0xDB, 0x47, 0x0A, 0x3D, 0x7A, 0x46, 0x8A, 0x3B, 0x93, 0x81, - 0x33, 0x7A, 0x38, 0xCD, 0xE4, 0x93, 0x2C, 0x50, 0x7B, 0xCD, 0x62, 0x91, 0xDB, 0x78, 0x43, 0x4E, - 0x3A, 0x93, 0x0F, 0x63, 0x8C, 0x82, 0xAF, 0x78, 0x62, 0xA2, 0x7A, 0x4D, 0x42, 0x95, 0x10, 0xD6, - 0xB0, 0x7A, 0x2E, 0xD3, 0x3E, 0xC7, 0x19, 0x96, 0xB2, 0x23, 0x90, 0x11, 0x34, 0xAD, 0x23, 0xF9, - 0x61, 0x8A, 0xBD, 0x84, 0xC5, 0xE9, 0xAC, 0x67, 0x04, 0xFF, 0x00, 0xEA, 0x12, 0x86, 0x3F, 0xC3, - 0xB4, 0xD0, 0x2B, 0x3D, 0xB0, 0x23, 0x16, 0x92, 0x7D, 0x4C, 0xCF, 0xB3, 0x58, 0x48, 0x0D, 0xE9, - 0x18, 0xAA, 0x7D, 0x26, 0x84, 0xD3, 0x7B, 0x47, 0x26, 0x98, 0x0E, 0xA2, 0x73, 0xBD, 0xC6, 0xA7, - 0x35, 0x9D, 0x06, 0x3B, 0x47, 0x28, 0x6F, 0x48, 0xE1, 0x50, 0x5F, 0x48, 0x58, 0x02, 0x73, 0xBD, - 0x37, 0x26, 0x16, 0x10, 0xF7, 0x84, 0x16, 0x16, 0x65, 0x66, 0x1A, 0x50, 0x0F, 0x69, 0x62, 0x56, - 0x65, 0x80, 0x4C, 0x10, 0x81, 0xF7, 0x96, 0x0C, 0x10, 0x84, 0xC3, 0x09, 0x0D, 0x48, 0x0C, 0xB8, - 0x41, 0x04, 0x20, 0xB0, 0xD6, 0xB0, 0x00, 0x13, 0x08, 0x24, 0x30, 0x00, 0x97, 0x95, 0x10, 0xD3, - 0x81, 0x09, 0xED, 0x08, 0x21, 0x97, 0xCF, 0x2B, 0x9E, 0x08, 0x41, 0x64, 0xC4, 0x1E, 0x7F, 0x69, - 0x0B, 0x99, 0x62, 0x1C, 0x99, 0x8A, 0x2F, 0xEF, 0x21, 0x7F, 0x79, 0x61, 0xD3, 0x73, 0x27, 0x37, - 0xBC, 0x41, 0x7F, 0x79, 0x0D, 0x83, 0xD6, 0x58, 0x35, 0xFF, 0xD9 -}; - -const unsigned char jpeg_data2[] = { - 0xFF, 0xD8, 0xFF, 0xE0, 0x00, 0x10, 0x4A, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x01, 0x00, 0x60, - 0x00, 0x60, 0x00, 0x00, 0xFF, 0xE1, 0x00, 0x22, 0x45, 0x78, 0x69, 0x66, 0x00, 0x00, 0x4D, 0x4D, - 0x00, 0x2A, 0x00, 0x00, 0x00, 0x08, 0x00, 0x01, 0x01, 0x12, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xDB, 0x00, 0x43, 0x00, 0x02, 0x01, 0x01, - 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x05, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x06, 0x04, 0x04, 0x03, 0x05, 0x07, 0x06, 0x07, 0x07, 0x07, 0x06, 0x07, 0x07, 0x08, - 0x09, 0x0B, 0x09, 0x08, 0x08, 0x0A, 0x08, 0x07, 0x07, 0x0A, 0x0D, 0x0A, 0x0A, 0x0B, 0x0C, 0x0C, - 0x0C, 0x0C, 0x07, 0x09, 0x0E, 0x0F, 0x0D, 0x0C, 0x0E, 0x0B, 0x0C, 0x0C, 0x0C, 0xFF, 0xDB, 0x00, - 0x43, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x06, 0x03, 0x03, 0x06, 0x0C, 0x08, 0x07, 0x08, - 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, - 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, - 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, - 0x0C, 0x0C, 0xFF, 0xC0, 0x00, 0x11, 0x08, 0x00, 0xF0, 0x01, 0x40, 0x03, 0x01, 0x22, 0x00, 0x02, - 0x11, 0x01, 0x03, 0x11, 0x01, 0xFF, 0xC4, 0x00, 0x1F, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, - 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0xFF, 0xC4, 0x00, 0xB5, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, - 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7D, 0x01, 0x02, 0x03, 0x00, 0x04, - 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, - 0x91, 0xA1, 0x08, 0x23, 0x42, 0xB1, 0xC1, 0x15, 0x52, 0xD1, 0xF0, 0x24, 0x33, 0x62, 0x72, 0x82, - 0x09, 0x0A, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x34, 0x35, 0x36, - 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, - 0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76, - 0x77, 0x78, 0x79, 0x7A, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, - 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, - 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, - 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, - 0xE8, 0xE9, 0xEA, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFF, 0xC4, 0x00, - 0x1F, 0x01, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0xFF, 0xC4, - 0x00, 0xB5, 0x11, 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x00, - 0x01, 0x02, 0x77, 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, - 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xA1, 0xB1, 0xC1, 0x09, 0x23, - 0x33, 0x52, 0xF0, 0x15, 0x62, 0x72, 0xD1, 0x0A, 0x16, 0x24, 0x34, 0xE1, 0x25, 0xF1, 0x17, 0x18, - 0x19, 0x1A, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, - 0x46, 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, - 0x66, 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x82, 0x83, 0x84, - 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, - 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, - 0xBA, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, - 0xD8, 0xD9, 0xDA, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF2, 0xF3, 0xF4, 0xF5, - 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFF, 0xDA, 0x00, 0x0C, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, - 0x00, 0x3F, 0x00, 0xFC, 0x77, 0xCD, 0x6A, 0x78, 0x21, 0x77, 0x78, 0xD7, 0x46, 0xFF, 0x00, 0xAF, - 0xF8, 0x3F, 0xF4, 0x62, 0xD6, 0x72, 0xA6, 0x2B, 0x53, 0xC1, 0x3F, 0xF2, 0x3B, 0x68, 0xBF, 0xF6, - 0x10, 0xB7, 0xFF, 0x00, 0xD1, 0x8B, 0x5F, 0x69, 0x53, 0xE1, 0x7E, 0x87, 0xCA, 0x53, 0x97, 0xBE, - 0xBD, 0x51, 0xFD, 0x06, 0xF8, 0xCF, 0xC3, 0xCB, 0xE2, 0x8F, 0x85, 0xB2, 0x58, 0xC8, 0x3E, 0x49, - 0xAD, 0xE3, 0x04, 0x1F, 0xA0, 0xAF, 0x9E, 0xFE, 0x2A, 0x7C, 0x1B, 0x8F, 0xC3, 0x5A, 0x0C, 0x72, - 0x58, 0xC7, 0x96, 0x8F, 0x96, 0x3E, 0xD5, 0xF4, 0xD5, 0xEE, 0x22, 0xF0, 0x3A, 0xB3, 0x36, 0xD5, - 0x10, 0xA7, 0x27, 0xE8, 0x2B, 0xC4, 0x3E, 0x33, 0xFC, 0x4E, 0xB5, 0xB1, 0xB4, 0x9B, 0x4E, 0x85, - 0x16, 0x69, 0x24, 0x5C, 0x1E, 0x7E, 0xED, 0x7E, 0x79, 0xC3, 0xB5, 0xB1, 0x2A, 0xB2, 0x85, 0x0D, - 0xAF, 0x76, 0x8F, 0xDD, 0xB8, 0xDF, 0x0F, 0x82, 0x96, 0x1D, 0xD4, 0xC5, 0x59, 0x3E, 0x5B, 0x27, - 0xD7, 0xA9, 0xE0, 0xE8, 0x9C, 0x54, 0xB0, 0xC3, 0x8F, 0xF3, 0xD2, 0xA6, 0x4B, 0x7F, 0xC3, 0xFA, - 0xD5, 0xAB, 0x7B, 0x36, 0x64, 0xDC, 0xB1, 0xB1, 0x19, 0xC6, 0x40, 0xAF, 0xD5, 0xF6, 0xDC, 0xFE, - 0x7B, 0x8E, 0xF6, 0x3D, 0x93, 0xF6, 0x73, 0xF1, 0x15, 0xAD, 0x9E, 0x92, 0x2D, 0xDD, 0x95, 0x64, - 0xC9, 0xC8, 0x35, 0xEE, 0x9A, 0x5E, 0xA9, 0x6E, 0xB6, 0x0D, 0x3F, 0x98, 0x0C, 0x68, 0x32, 0xDC, - 0xF4, 0xAF, 0x8E, 0xF4, 0x9F, 0xB4, 0x69, 0x53, 0x2C, 0x91, 0x33, 0x46, 0xFD, 0x32, 0x38, 0xAE, - 0x9B, 0x47, 0xF8, 0xA1, 0xAC, 0x68, 0x9A, 0x75, 0xD5, 0xB8, 0x9B, 0xCE, 0x86, 0xE5, 0x48, 0x21, - 0xF9, 0xC7, 0xD2, 0xBE, 0x3B, 0x34, 0xE1, 0xF9, 0x57, 0xA8, 0xEA, 0x53, 0x96, 0xEF, 0x63, 0xEF, - 0xF2, 0x6E, 0x2B, 0x86, 0x16, 0x8A, 0xA3, 0x5A, 0x3B, 0x2D, 0xD7, 0xE0, 0x7D, 0x05, 0xF1, 0x67, - 0xC3, 0x36, 0x7F, 0x11, 0xB4, 0x38, 0xAD, 0xA7, 0x6F, 0xF4, 0x5F, 0xF5, 0x87, 0x1D, 0xF8, 0xAE, - 0x5F, 0xC1, 0x1F, 0x0F, 0xF4, 0xDF, 0x0F, 0xE8, 0x92, 0x5A, 0xD9, 0xED, 0x96, 0x17, 0x2D, 0x96, - 0x23, 0x93, 0x9E, 0xB5, 0xE5, 0x3A, 0x6F, 0xC6, 0x5D, 0x6E, 0xD2, 0xC6, 0x1B, 0x7F, 0x3D, 0x99, - 0x62, 0x24, 0x64, 0xF3, 0xB8, 0x1E, 0xC6, 0xBA, 0x0F, 0x0C, 0x7C, 0x52, 0x9F, 0xC3, 0xF6, 0x1E, - 0x5A, 0xC4, 0x66, 0x2C, 0x49, 0x39, 0xF7, 0xAE, 0x65, 0x94, 0xE2, 0xA8, 0xD1, 0xF6, 0x51, 0x96, - 0x97, 0xDA, 0xFF, 0x00, 0x89, 0xD9, 0x1E, 0x22, 0xC0, 0x62, 0x31, 0x0A, 0xBC, 0xA3, 0x69, 0x5B, - 0x56, 0xF7, 0xE9, 0xA1, 0xD5, 0x43, 0xF0, 0x3E, 0xDF, 0x51, 0x59, 0x5A, 0xC6, 0xF5, 0x6D, 0xFC, - 0xB3, 0xBB, 0xCA, 0x23, 0x8A, 0xE3, 0xF5, 0xFF, 0x00, 0x05, 0x5F, 0x68, 0x37, 0x4C, 0x26, 0xB7, - 0x90, 0xAA, 0x9C, 0x87, 0x03, 0x82, 0x2B, 0xA5, 0xF8, 0x6D, 0xE2, 0x19, 0xB5, 0x7D, 0x42, 0xF1, - 0xA5, 0x6C, 0x2D, 0xC3, 0x13, 0x82, 0x7E, 0xED, 0x77, 0x70, 0xEA, 0x8D, 0x1E, 0x85, 0x24, 0x7E, - 0x4C, 0x7A, 0x96, 0xC2, 0x7E, 0x46, 0xFB, 0xE1, 0x3D, 0xAB, 0x19, 0x57, 0xC4, 0x61, 0xEA, 0x72, - 0xCF, 0xDE, 0xFE, 0xBB, 0x9A, 0x2C, 0x0E, 0x0F, 0x19, 0x47, 0xDA, 0x53, 0x5C, 0xBB, 0xED, 0xFE, - 0x47, 0xCF, 0x7A, 0xBE, 0xAA, 0xF6, 0x52, 0xAA, 0xAF, 0xF0, 0x8C, 0xFD, 0x6B, 0x3D, 0xBC, 0x4F, - 0x70, 0xCC, 0xC7, 0x8E, 0x6B, 0xA9, 0xF8, 0x93, 0xE0, 0xE6, 0x17, 0xE6, 0xE2, 0xD2, 0x39, 0x5A, - 0xDE, 0x42, 0x48, 0x52, 0xA4, 0x18, 0xFD, 0x8D, 0x71, 0xB2, 0x58, 0x3A, 0x39, 0x0C, 0x9B, 0x79, - 0xC7, 0xD2, 0xBE, 0x9B, 0x0B, 0x4E, 0x8D, 0x48, 0x29, 0x68, 0x7C, 0x4E, 0x2A, 0x35, 0x68, 0xD4, - 0x70, 0x65, 0x98, 0xBC, 0x4F, 0x32, 0xB2, 0xAE, 0x3E, 0x5C, 0xF3, 0x8E, 0xF5, 0xD3, 0x78, 0x7F, - 0x52, 0x82, 0x68, 0xF7, 0x7F, 0x78, 0xF3, 0x9E, 0xD5, 0xE7, 0x77, 0xDE, 0x29, 0xB5, 0xD2, 0xCF, - 0xCC, 0xCA, 0x4A, 0xF6, 0xAC, 0x9B, 0xEF, 0x8C, 0x0D, 0x6E, 0xAC, 0xB6, 0xAB, 0xB7, 0x3D, 0xEB, - 0x97, 0x32, 0xC2, 0xA9, 0xC3, 0xD9, 0xC3, 0x46, 0x7B, 0x19, 0x0E, 0x21, 0xD1, 0xAE, 0xAB, 0xD4, - 0x57, 0x4B, 0xB9, 0xEC, 0x5A, 0xBD, 0xAD, 0x8A, 0xDA, 0x1F, 0xB4, 0x4A, 0xB1, 0xA1, 0x3B, 0xBE, - 0x63, 0x5C, 0x27, 0x8A, 0x7E, 0x24, 0x68, 0xFA, 0x30, 0x91, 0x61, 0x65, 0xB8, 0x93, 0x38, 0x00, - 0x01, 0x8C, 0x57, 0x97, 0xEB, 0x7E, 0x31, 0xD4, 0x35, 0xE9, 0x73, 0x35, 0xC4, 0x9B, 0x7F, 0xBA, - 0x0F, 0x15, 0x90, 0xC8, 0x58, 0xF2, 0xD9, 0xFA, 0xD7, 0x9B, 0x81, 0xCB, 0x6A, 0x51, 0x7C, 0xD5, - 0x27, 0x7F, 0x23, 0xE8, 0x73, 0x6C, 0xD6, 0x86, 0x26, 0x3C, 0x94, 0x69, 0xA8, 0xF7, 0x7D, 0x4E, - 0x93, 0xC5, 0x1F, 0x11, 0xEE, 0x35, 0xB6, 0xC4, 0x48, 0xB6, 0xF1, 0x29, 0x24, 0x05, 0xAE, 0x66, - 0xEA, 0xF2, 0x49, 0xDB, 0xE6, 0x66, 0x27, 0x1D, 0x73, 0x52, 0x79, 0x59, 0x1D, 0x7F, 0x4A, 0x68, - 0xB7, 0xCF, 0xFF, 0x00, 0xAE, 0xBD, 0xA4, 0xDD, 0xAC, 0x7C, 0xE2, 0xA7, 0x15, 0xB2, 0x2A, 0xF9, - 0xB2, 0x28, 0xFB, 0xCD, 0x86, 0xAE, 0xFB, 0xF6, 0x56, 0x91, 0xAD, 0xFF, 0x00, 0x68, 0xCF, 0x05, - 0xFF, 0x00, 0xD3, 0x4D, 0x56, 0x15, 0x38, 0xFA, 0x9A, 0xE2, 0xFE, 0xCA, 0x4F, 0xFF, 0x00, 0xAE, - 0xBD, 0x73, 0xF6, 0x77, 0xF8, 0x77, 0xFD, 0x9D, 0xE3, 0xEF, 0x86, 0x5E, 0x20, 0x8D, 0x5B, 0x7D, - 0xEE, 0xBF, 0xE4, 0xDC, 0x1C, 0x93, 0xF2, 0xEF, 0x22, 0x23, 0x8E, 0x80, 0x7C, 0x8F, 0xCF, 0x7D, - 0xCB, 0xED, 0x5E, 0x6E, 0x6D, 0x8E, 0xA5, 0x87, 0xA1, 0xCB, 0x53, 0xED, 0xDE, 0x2B, 0xD5, 0xC5, - 0xB5, 0xF9, 0x5B, 0xD5, 0x9F, 0x45, 0xC3, 0x79, 0x4D, 0x6C, 0x6E, 0x2B, 0x9A, 0x8A, 0xFE, 0x12, - 0x55, 0x1F, 0xF8, 0x54, 0xE2, 0x9F, 0xDD, 0x7B, 0xFA, 0x26, 0x7E, 0x6C, 0xFE, 0xD8, 0xB0, 0xF9, - 0x3F, 0xB5, 0xFF, 0x00, 0xC5, 0xA5, 0xFE, 0xEF, 0x8D, 0x75, 0x91, 0xFF, 0x00, 0x93, 0xF3, 0xD7, - 0x9C, 0x95, 0x22, 0xBD, 0x3B, 0xF6, 0xD8, 0x41, 0x6B, 0xFB, 0x66, 0xFC, 0x60, 0x56, 0xE0, 0x2F, - 0x8D, 0xB5, 0xAC, 0x93, 0xD8, 0x7D, 0xBE, 0x6A, 0xF3, 0x1F, 0xB5, 0x46, 0x02, 0x9D, 0xCA, 0x04, - 0x83, 0x2A, 0x72, 0x3E, 0x61, 0xED, 0x5E, 0xDE, 0x17, 0xF8, 0x30, 0xF4, 0x5F, 0x92, 0x3E, 0x0F, - 0x30, 0x56, 0xC4, 0xD4, 0xFF, 0x00, 0x13, 0xFC, 0xD8, 0x99, 0xC5, 0x7D, 0x5B, 0xFF, 0x00, 0x04, - 0xF5, 0xD2, 0xFE, 0xDF, 0xE0, 0x3D, 0x79, 0xBF, 0xBB, 0xAA, 0x81, 0x9F, 0x4F, 0xDC, 0xA5, 0x7C, - 0xB7, 0x75, 0x65, 0x3D, 0x8D, 0xBD, 0xAC, 0xD3, 0xDB, 0xDC, 0x5B, 0xC3, 0x7A, 0x9E, 0x65, 0xB4, - 0x92, 0x46, 0x51, 0x2E, 0x13, 0x38, 0xDC, 0x84, 0x8C, 0x30, 0xC8, 0x23, 0x23, 0x23, 0x8A, 0xFA, - 0xFB, 0xFE, 0x09, 0x9B, 0xA6, 0xC9, 0xAC, 0x78, 0x13, 0xC4, 0x16, 0xB0, 0xC3, 0x24, 0xB3, 0x4B, - 0xAB, 0xA8, 0x50, 0xA3, 0xFE, 0x98, 0x25, 0x15, 0x9A, 0x70, 0xBA, 0x2B, 0x01, 0x17, 0xED, 0x92, - 0xB1, 0xF4, 0x17, 0x87, 0xB5, 0xA7, 0x17, 0x9F, 0xD9, 0xF6, 0x71, 0xBC, 0xCC, 0x7A, 0xB0, 0xF5, - 0xFF, 0x00, 0x0A, 0xF4, 0x0D, 0x3F, 0xC4, 0x57, 0x5A, 0x75, 0xB4, 0x36, 0x71, 0xDC, 0x48, 0xB3, - 0xED, 0x28, 0x44, 0x6D, 0xD8, 0xF6, 0xA8, 0xEC, 0xFE, 0x1F, 0xB7, 0x87, 0xAE, 0xAD, 0xED, 0x62, - 0xF2, 0x56, 0x5B, 0x88, 0xC8, 0x9E, 0x55, 0x3F, 0x3C, 0x6C, 0x48, 0xD8, 0xA3, 0xD8, 0xE1, 0xC1, - 0x39, 0xCE, 0x76, 0xF5, 0xC9, 0xC7, 0x4D, 0xE1, 0xAD, 0x06, 0xCF, 0xC0, 0x0D, 0x1D, 0xE5, 0xD4, - 0x5F, 0x6A, 0xBE, 0x6E, 0x23, 0x56, 0xFE, 0x1A, 0xF2, 0xBE, 0xBB, 0x4A, 0xA5, 0xE3, 0x1B, 0x49, - 0xC5, 0xDA, 0xDE, 0x76, 0xBF, 0xE4, 0xEE, 0x7D, 0x97, 0xF6, 0x25, 0x7A, 0x51, 0x85, 0x5A, 0xB7, - 0x82, 0x9A, 0xBA, 0x7D, 0xD5, 0xDA, 0xD3, 0xE6, 0x9A, 0xF9, 0x1D, 0x07, 0x83, 0x74, 0xDD, 0x4B, - 0x44, 0xD1, 0x4C, 0xFA, 0x84, 0xCD, 0x1C, 0x52, 0x7F, 0xAB, 0x8D, 0xB9, 0x63, 0x5D, 0x56, 0x9F, - 0xE6, 0xEA, 0xB6, 0x51, 0xC7, 0xE4, 0xA8, 0x90, 0xAE, 0x4B, 0x1F, 0xE1, 0x5F, 0x53, 0xEE, 0x6B, - 0x37, 0x41, 0xD2, 0xAF, 0x35, 0xF7, 0x1A, 0xB6, 0xAC, 0x4C, 0x70, 0x1E, 0x60, 0x84, 0xFF, 0x00, - 0x85, 0x75, 0x32, 0xC0, 0xD6, 0xD6, 0xDE, 0x4C, 0x2A, 0x7E, 0xD3, 0x75, 0xFF, 0x00, 0x8E, 0x8F, - 0xF3, 0xF9, 0x0A, 0xF0, 0xF1, 0x12, 0x52, 0x95, 0xDE, 0xE7, 0xD8, 0xE0, 0x70, 0xEA, 0x95, 0x25, - 0x15, 0x7B, 0x79, 0xEE, 0x73, 0x77, 0xDA, 0x74, 0x72, 0x4B, 0x24, 0x51, 0xF3, 0x1C, 0x23, 0x32, - 0x39, 0xEF, 0x5E, 0x3B, 0xF1, 0x63, 0x5C, 0x29, 0x14, 0xB1, 0xA9, 0xC6, 0xF3, 0x80, 0x3D, 0xAB, - 0xDB, 0xBC, 0x56, 0xB1, 0xE9, 0x3A, 0x61, 0xB3, 0x8C, 0xE5, 0xB6, 0x96, 0x9D, 0xEB, 0xE7, 0xBF, - 0x15, 0x43, 0x26, 0xB7, 0xAC, 0xCA, 0xD8, 0xF9, 0x43, 0x61, 0x6B, 0xD0, 0xCA, 0x68, 0xAA, 0x95, - 0x39, 0xE5, 0xB2, 0x3E, 0x7F, 0x8A, 0xB1, 0x8E, 0x86, 0x1F, 0xD9, 0xC3, 0x79, 0x68, 0x70, 0x32, - 0x69, 0x9E, 0x6C, 0x87, 0x23, 0x9F, 0xA5, 0x77, 0x9F, 0x02, 0xFC, 0x13, 0x0E, 0xAB, 0xE2, 0x48, - 0xFC, 0xE5, 0x18, 0x53, 0x91, 0x91, 0xC5, 0x4F, 0xA3, 0x78, 0x15, 0xAF, 0x67, 0x8F, 0x2B, 0xC7, - 0x7A, 0xF5, 0xAF, 0x03, 0xF8, 0x62, 0xD7, 0xC2, 0xB6, 0xAB, 0x36, 0xCF, 0x9D, 0x46, 0x6B, 0xD4, - 0xCD, 0xB1, 0xE9, 0x51, 0x74, 0xA1, 0xBB, 0x3E, 0x37, 0x87, 0xB2, 0x89, 0xD4, 0xC4, 0x46, 0xAC, - 0xFE, 0x15, 0xA9, 0xA1, 0xE2, 0xFF, 0x00, 0x0B, 0x5B, 0x35, 0xB2, 0x46, 0x21, 0x5D, 0xAA, 0x3D, - 0x2B, 0x07, 0x4C, 0x9E, 0xCF, 0x49, 0x77, 0xB7, 0x55, 0x50, 0xC3, 0xB6, 0x2B, 0xA0, 0xD7, 0x3C, - 0x71, 0x65, 0x79, 0x01, 0x0D, 0x22, 0xA9, 0x51, 0xCD, 0x79, 0x1F, 0x8B, 0xFC, 0x43, 0xFF, 0x00, - 0x13, 0x79, 0x25, 0xB7, 0x6C, 0x73, 0x80, 0x73, 0xD6, 0xBE, 0x67, 0x07, 0x83, 0xA9, 0x55, 0x72, - 0x4A, 0xE7, 0xDF, 0xE6, 0x19, 0x85, 0x1A, 0x0D, 0x55, 0x85, 0x8D, 0x8B, 0xF8, 0x74, 0x19, 0x7C, - 0x6B, 0x6F, 0x75, 0x7D, 0x34, 0x71, 0xC9, 0x07, 0xEF, 0x23, 0xDC, 0x70, 0x38, 0xAE, 0x77, 0xC6, - 0xDF, 0xB4, 0xFC, 0x5A, 0x56, 0xBD, 0x71, 0x6B, 0x63, 0x6A, 0x97, 0x16, 0xF1, 0x02, 0x81, 0xC9, - 0xFB, 0xCD, 0xEA, 0x3D, 0xAB, 0xCE, 0xFC, 0x75, 0x7B, 0x36, 0xA1, 0x75, 0xE6, 0x49, 0x21, 0x66, - 0xCE, 0x31, 0x9A, 0xE4, 0xE7, 0x80, 0x86, 0xC1, 0xFF, 0x00, 0xF5, 0xD7, 0xD2, 0x61, 0xF8, 0x7E, - 0x94, 0x92, 0x9D, 0x77, 0xCD, 0xA5, 0xAD, 0xD1, 0x1F, 0x17, 0x8C, 0xE2, 0xCA, 0xF0, 0x93, 0x86, - 0x15, 0x72, 0xDD, 0xDE, 0xFD, 0x59, 0xDD, 0x58, 0x7C, 0x61, 0x92, 0xF2, 0x49, 0xAE, 0x2F, 0x9D, - 0xA4, 0x79, 0x39, 0x0A, 0xA3, 0x85, 0xF6, 0x15, 0xC3, 0xF8, 0xFF, 0x00, 0xC4, 0xF7, 0x1E, 0x2A, - 0xB8, 0xDC, 0xC0, 0xAC, 0x68, 0x72, 0x06, 0x69, 0x12, 0x0F, 0x22, 0x3E, 0x58, 0x1A, 0xA1, 0x7C, - 0xD9, 0xC8, 0x1F, 0xA5, 0x7A, 0x54, 0x72, 0xDA, 0x14, 0xAA, 0x7B, 0x48, 0x2D, 0x4F, 0x1F, 0x11, - 0x9D, 0x62, 0xEB, 0xD2, 0xF6, 0x15, 0x24, 0xDA, 0xFC, 0xFD, 0x4F, 0xCF, 0xF5, 0x1B, 0xAB, 0x5B, - 0xC0, 0xCB, 0x8F, 0x1A, 0xE8, 0xA3, 0xFE, 0xA2, 0x10, 0x7F, 0xE8, 0xC5, 0xAC, 0xD2, 0x6B, 0x4B, - 0xC0, 0xFC, 0xF8, 0xE7, 0x45, 0xFF, 0x00, 0xB0, 0x84, 0x1F, 0xFA, 0x31, 0x6A, 0x67, 0x1B, 0xC1, - 0xFA, 0x33, 0x86, 0x97, 0xC7, 0x1F, 0x55, 0xF9, 0x9F, 0xD0, 0x47, 0xC5, 0xA9, 0x64, 0xB6, 0xF8, - 0x1B, 0x79, 0x24, 0x4C, 0xCB, 0x22, 0xDB, 0x47, 0x82, 0x3A, 0xF6, 0xAF, 0x98, 0x45, 0x89, 0xBF, - 0x99, 0x9A, 0x63, 0xBD, 0x9B, 0x92, 0x4F, 0x53, 0x5F, 0x56, 0xFC, 0x49, 0xB1, 0x5B, 0xDF, 0x83, - 0x97, 0x51, 0xB7, 0xDD, 0x7B, 0x74, 0xEB, 0xDB, 0xA5, 0x79, 0xD7, 0x85, 0xBF, 0x66, 0x9B, 0xDD, - 0x57, 0x4E, 0x37, 0x41, 0x94, 0xAB, 0xC7, 0xBD, 0x00, 0xEF, 0x5F, 0x1B, 0xC3, 0x38, 0xEA, 0x18, - 0x6C, 0x3C, 0xDD, 0x57, 0x66, 0xE4, 0xFF, 0x00, 0x24, 0x7E, 0xB1, 0xC7, 0xD9, 0x5E, 0x2B, 0x1D, - 0x8F, 0xA5, 0x1A, 0x0A, 0xE9, 0x41, 0x3B, 0x7C, 0xD9, 0xE1, 0xF3, 0x68, 0x4A, 0xD3, 0x60, 0x7C, - 0xA3, 0x35, 0xEE, 0x9F, 0x07, 0xFC, 0x01, 0xA6, 0x5C, 0xF8, 0x4B, 0xC9, 0x99, 0x20, 0x91, 0x98, - 0x87, 0xDC, 0x71, 0xD6, 0xB8, 0xBF, 0x18, 0x7C, 0x3D, 0xB9, 0xF0, 0x9E, 0xA5, 0x25, 0xBD, 0xE4, - 0x5E, 0x4C, 0xAA, 0x03, 0x00, 0x7F, 0x88, 0x53, 0x3C, 0x3D, 0xAD, 0x5D, 0x69, 0x0C, 0xB0, 0xC7, - 0x71, 0x24, 0x70, 0xB3, 0x7C, 0xC0, 0x1A, 0xFA, 0xCC, 0x75, 0x37, 0x8B, 0xA0, 0xBD, 0x8C, 0xAD, - 0x6D, 0x4F, 0xCF, 0x72, 0xDA, 0xD0, 0xC0, 0x62, 0x5F, 0xD6, 0x29, 0xDD, 0xDA, 0xDE, 0x87, 0xA2, - 0xF8, 0xB7, 0xF6, 0x73, 0x1A, 0xFC, 0x0B, 0x26, 0x96, 0xD1, 0x79, 0x99, 0xE4, 0x0A, 0xF3, 0x1F, - 0x13, 0x7C, 0x33, 0xBC, 0xF0, 0x8E, 0xA7, 0xF6, 0x5B, 0xC5, 0x1B, 0xB1, 0xD5, 0x7B, 0xD7, 0xBA, - 0xFC, 0x2C, 0xD7, 0xC6, 0x8D, 0x17, 0x9A, 0xD3, 0x34, 0x91, 0xBA, 0xE4, 0x9D, 0xD9, 0xED, 0x4F, - 0xF1, 0x9B, 0xF8, 0x7B, 0xC4, 0x37, 0x71, 0x4B, 0x37, 0xCF, 0x34, 0x84, 0xE4, 0x67, 0x9A, 0xF9, - 0xFC, 0x2E, 0x61, 0x88, 0xC3, 0xD5, 0xF6, 0x55, 0x3D, 0xE8, 0xFE, 0x27, 0xD6, 0x63, 0xB2, 0x3C, - 0x2E, 0x2B, 0x0F, 0xF5, 0x8A, 0x5E, 0xE4, 0xDF, 0x9E, 0x87, 0x87, 0x78, 0x5F, 0xE1, 0xFC, 0x3A, - 0xD5, 0xFF, 0x00, 0x92, 0xDF, 0x28, 0xF5, 0x15, 0xE8, 0xF6, 0x7F, 0x04, 0x96, 0x6B, 0x21, 0xF6, - 0x78, 0x77, 0xEC, 0xEA, 0x71, 0x5D, 0x05, 0x97, 0x80, 0xB4, 0xF8, 0x95, 0xA6, 0xD3, 0x64, 0xDD, - 0x32, 0xF5, 0x4C, 0xE7, 0x22, 0xBD, 0x0F, 0xC0, 0x56, 0x53, 0x59, 0xE9, 0xE2, 0x49, 0xA1, 0x2B, - 0x14, 0xBC, 0x8A, 0x33, 0x0C, 0xD2, 0x57, 0xE6, 0xA6, 0xFE, 0x41, 0x94, 0xF0, 0xEC, 0x3E, 0x0A, - 0xD1, 0xBF, 0x9A, 0xD8, 0xF0, 0xA9, 0xBC, 0x11, 0x3F, 0x85, 0xAF, 0x37, 0x6D, 0xF2, 0xFE, 0x82, - 0xBB, 0x0F, 0x83, 0xD6, 0xF1, 0x4D, 0xAC, 0x88, 0xE6, 0xDB, 0xC2, 0x77, 0xFE, 0x2E, 0x79, 0xAF, - 0x40, 0xF8, 0x89, 0xE1, 0x1B, 0x5D, 0x5F, 0x4C, 0x8A, 0x68, 0xD7, 0x6C, 0xAC, 0xF8, 0xE9, 0xD6, - 0xB9, 0xED, 0x27, 0xE1, 0xDC, 0xB6, 0xF1, 0x33, 0xDB, 0x96, 0x8E, 0x6E, 0x30, 0x47, 0x5A, 0xE3, - 0xAD, 0x8E, 0x85, 0x6C, 0x3B, 0x72, 0xF8, 0x8F, 0x4B, 0x07, 0x93, 0xD4, 0xC3, 0xE3, 0x23, 0xC9, - 0xF0, 0x9D, 0x7F, 0x8A, 0x3C, 0x2B, 0x64, 0xFA, 0x3F, 0x99, 0x0D, 0x8C, 0x53, 0x49, 0x9C, 0xED, - 0xDB, 0xF7, 0xAB, 0xCC, 0x75, 0x0F, 0x0A, 0xF8, 0x55, 0xF5, 0xE9, 0xAD, 0x35, 0x4B, 0x24, 0xB3, - 0x9A, 0xE1, 0x77, 0x2B, 0x11, 0x85, 0x1C, 0x74, 0xCD, 0x7B, 0xA7, 0x82, 0xF4, 0x39, 0x17, 0x48, - 0xFF, 0x00, 0x48, 0x6F, 0x30, 0xAA, 0xE3, 0x9A, 0xE0, 0x7E, 0x2C, 0x78, 0x06, 0xCF, 0x56, 0xBD, - 0x59, 0x19, 0x55, 0xDD, 0x9F, 0x04, 0x77, 0xAF, 0x07, 0x01, 0x89, 0xF7, 0xDD, 0x36, 0xDA, 0xF3, - 0x4C, 0xFA, 0x8C, 0xDF, 0x2D, 0x4E, 0x0A, 0xA4, 0x63, 0x16, 0xFB, 0x35, 0xA1, 0xE2, 0x7E, 0x35, - 0xFD, 0x8A, 0xB4, 0x2F, 0x1A, 0xDA, 0x67, 0x45, 0xBD, 0x58, 0xA6, 0x11, 0xB1, 0xDC, 0xBF, 0x36, - 0xF6, 0xCF, 0x19, 0xAF, 0x99, 0xBE, 0x2B, 0x7C, 0x06, 0xF1, 0x07, 0xC1, 0xD7, 0x8D, 0xF5, 0x7B, - 0x75, 0x4B, 0x79, 0xA4, 0x29, 0x14, 0xAA, 0x72, 0xAF, 0x5F, 0x68, 0xC6, 0xF7, 0x5F, 0x0B, 0x34, - 0x4D, 0x49, 0xAC, 0x2D, 0x9A, 0x6B, 0x89, 0x53, 0x74, 0x2A, 0xC7, 0x8D, 0xC3, 0xB5, 0x73, 0x13, - 0x7C, 0x31, 0xD4, 0xFF, 0x00, 0x68, 0xD7, 0xD3, 0x2E, 0x7C, 0x4D, 0x71, 0x0A, 0xD8, 0x58, 0x80, - 0x1A, 0xD2, 0x11, 0x82, 0xEE, 0x47, 0x24, 0x93, 0xE9, 0xD2, 0xBD, 0xCC, 0x2E, 0x3E, 0xBD, 0x29, - 0xDE, 0xA4, 0xAF, 0x4F, 0xBB, 0xDC, 0xF9, 0x5C, 0x46, 0x5B, 0x87, 0xA9, 0x0E, 0x5A, 0x70, 0xE5, - 0xA9, 0xD9, 0x6D, 0xF8, 0x9F, 0x12, 0xC6, 0xA7, 0xBF, 0xDE, 0xF4, 0xA7, 0x88, 0x8B, 0x77, 0x1F, - 0x95, 0x7A, 0xC7, 0xC7, 0x4F, 0xD9, 0xDE, 0xEB, 0xE1, 0x9D, 0xC5, 0xD5, 0xDF, 0x92, 0xF1, 0xD8, - 0xB5, 0xD3, 0x47, 0x01, 0xC7, 0xCA, 0xCB, 0xDB, 0x1F, 0x85, 0x79, 0xCC, 0x16, 0x9B, 0x8D, 0x7D, 0x34, 0x2B, 0x42, 0x71, 0x53, 0x83, 0xBA, 0x67, 0xCB, 0xCA, 0x94, 0xA3, 0x27, 0x19, 0xAB, 0x34, 0x54, 0x8A, 0xD4, 0xE0, 0xFF, 0x00, 0x16, 0x3F, 0x4A, 0xB3, 0x15, 0x83, 0x31, 0xC7, 0x7F, 0x61, 0x57, 0xAD, 0xAC, 0x0B, 0x7D, 0x07, 0xEB, 0x5A, 0x50, 0x58, 0xA5, 0xB4, 0x2D, 0x23, 0x95, 0x54, 0x51, 0x92, 0x49, 0xE0, 0x0A, 0x52, 0xA9, 0x65, 0x76, 0x5C, 0x69, 0xB9, 0x3E, 0x54, 0xAE, 0xCC, 0x98, 0x34, 0x46, 0x90, 0xF4, 0xC0, 0x5E, 0x4F, 0x15, 0xE9, 0xDA, 0xFF, 0x00, 0xC4, 0xEF, 0xF8, 0x53, 0xDA, 0x47, 0x86, 0x62, 0x43, 0x0B, 0xEA, 0x76, 0x36, 0xE9, 0xAB, 0x1B, 0x40, 0x80, 0x49, 0x24, 0x90, 0x18, 0xEE, 0x19, 0x15, 0x40, 0xEB, 0xC3, 0x29, 0x03, 0xFB, 0xFF, 0x00, 0x4A, 0xE6, 0x63, 0x9F, 0x49, 0xB2, 0xD2, 0xDA, 0x6B, 0xED, 0x5B, 0x4C, 0xB1, 0x94, 0xA7, 0x98, 0x2D, 0xAE, 0x2E, 0x12, 0x39, 0x4A, 0x13, 0x80, 0xDB, 0x4B, 0x67, 0x04, 0xF1, 0xD3, 0xB8, 0xFA, 0x57, 0xAC, 0x7C, 0x2B, 0xFD, 0x8A, 0x35, 0x8F, 0xDA, 0x1F, 0xC2, 0x7E, 0x11, 0xF8, 0x99, 0xAC, 0x5F, 0x45, 0xA1, 0xE8, 0x57, 0x33, 0xB6, 0x8E, 0xD6, 0xD7, 0x0A, 0xCD, 0x79, 0xAC, 0x5A, 0x8B, 0xA0, 0x25, 0x68, 0x49, 0x18, 0x45, 0x91, 0x21, 0xE6, 0x47, 0xC6, 0x41, 0x45, 0xC0, 0x0E, 0x59, 0x7F, 0x30, 0xE2, 0xEC, 0xDF, 0x0B, 0x8C, 0xF6, 0x54, 0xE9, 0xD4, 0x56, 0x84, 0x9D, 0xDD, 0x9E, 0xF6, 0xD2, 0xDA, 0x6B, 0xD7, 0x63, 0xF7, 0xEF, 0x0F, 0xB2, 0xBA, 0x9C, 0x31, 0x43, 0x11, 0x9B, 0xE7, 0x74, 0x1A, 0x8D, 0x48, 0x28, 0xD3, 0x8B, 0x6B, 0xDF, 0x72, 0x7A, 0xC6, 0xD7, 0x6D, 0x68, 0x93, 0x77, 0x5A, 0x24, 0xFA, 0xE8, 0x43, 0xFB, 0x3B, 0xFF, 0x00, 0xC1, 0x26, 0x74, 0x31, 0xF1, 0x67, 0xE2, 0x77, 0xC7, 0x9F, 0x88, 0x16, 0x3A, 0x5E, 0xB9, 0x7D, 0xE3, 0x2F, 0x17, 0x6A, 0x97, 0xDF, 0x0F, 0xEC, 0x2F, 0x56, 0x3B, 0xAD, 0x2E, 0xC2, 0xCA, 0x4B, 0xB7, 0x78, 0xB5, 0x69, 0xE3, 0x29, 0x2A, 0xDC, 0xDD, 0x4C, 0xB2, 0x2B, 0x5A, 0xC0, 0x61, 0xB8, 0x44, 0x56, 0x49, 0x9E, 0x09, 0xD9, 0xE3, 0x8D, 0x1D, 0xFB, 0x4F, 0x41, 0xA7, 0xF8, 0x53, 0xE2, 0xFE, 0x8F, 0xE7, 0x69, 0xB6, 0x7E, 0x22, 0x67, 0x82, 0xE2, 0xD3, 0x59, 0x8B, 0xC4, 0x2E, 0xDA, 0xBC, 0x97, 0xA6, 0x5D, 0x8C, 0x92, 0x5C, 0x9B, 0xA6, 0xB8, 0xDA, 0xCA, 0x48, 0x3E, 0x5C, 0x72, 0x92, 0xA9, 0x90, 0x5E, 0x31, 0xFB, 0x94, 0xFA, 0x0F, 0xF6, 0xBE, 0xFD, 0xB7, 0xE1, 0xF8, 0x0F, 0x02, 0xDB, 0x69, 0x69, 0xA6, 0x6A, 0x7E, 0x26, 0xD5, 0xED, 0x64, 0x37, 0x26, 0x58, 0x04, 0x96, 0x3A, 0x35, 0x90, 0x42, 0xB1, 0xD8, 0x5A, 0x45, 0x90, 0xAA, 0x9B, 0x18, 0x3C, 0xB2, 0x75, 0x94, 0xCA, 0x46, 0x42, 0x94, 0x58, 0xFE, 0x32, 0x8B, 0xF6, 0xBB, 0xBA, 0xFD, 0xA1, 0xBC, 0x77, 0x70, 0xBA, 0xF6, 0x93, 0xA1, 0xA5, 0xC7, 0x8D, 0xF5, 0xC9, 0x2D, 0x62, 0xFB, 0x34, 0x2D, 0x1F, 0xD9, 0xA7, 0xB9, 0x62, 0xA5, 0xD4, 0xEE, 0xFB, 0xA0, 0x92, 0x58, 0x10, 0x72, 0xC0, 0xB7, 0xF1, 0x57, 0x66, 0x4B, 0x80, 0xC7, 0xE6, 0x12, 0xFE, 0xD0, 0xC6, 0x5D, 0xC2, 0xD6, 0x4A, 0xF6, 0x49, 0x5A, 0xD6, 0x4B, 0xB2, 0xFC, 0x5E, 0xA7, 0xE0, 0x99, 0xA6, 0x71, 0x43, 0x01, 0x51, 0xE1, 0xF0, 0xE9, 0x46, 0xA3, 0x95, 0xDB, 0x6A, 0xFB, 0xBB, 0xF5, 0xBF, 0xE3, 0xB7, 0x63, 0xCB, 0xFF, 0x00, 0x6A, 0x2F, 0xDA, 0x17, 0xFE, 0x16, 0x7A, 0xAE, 0x95, 0xAF, 0x69, 0xF7, 0x37, 0x96, 0x28, 0x0F, 0x17, 0x97, 0x97, 0x5A, 0xA4, 0x9A, 0x7B, 0x05, 0x3F, 0x21, 0x8A, 0xEA, 0x69, 0x33, 0x1E, 0x49, 0x20, 0x44, 0xA9, 0xB7, 0x9C, 0xEE, 0x1D, 0x68, 0xFE, 0xC2, 0xFA, 0xFF, 0x00, 0x87, 0xBE, 0x16, 0x5D, 0xDD, 0xE9, 0x91, 0x88, 0xB4, 0x8B, 0x1F, 0x10, 0xDF, 0x25, 0xC2, 0xCE, 0xB3, 0x79, 0x96, 0xAB, 0x2E, 0xC5, 0x8C, 0x22, 0xBB, 0x7C, 0xC9, 0x1B, 0x6D, 0x04, 0x06, 0x27, 0x6B, 0x12, 0x09, 0xDB, 0x83, 0x5E, 0x59, 0xE3, 0x5F, 0x16, 0xDB, 0xFC, 0x45, 0xF1, 0xFF, 0x00, 0x88, 0xDA, 0x47, 0x68, 0x7C, 0xCB, 0xFB, 0xAB, 0xDB, 0x09, 0x90, 0xE0, 0xF9, 0x0F, 0x23, 0x48, 0x85, 0x7D, 0x19, 0x03, 0x0E, 0x3A, 0x7E, 0x78, 0x1C, 0x9D, 0xAF, 0xC4, 0x09, 0x16, 0xCA, 0x78, 0x16, 0xD6, 0x15, 0xBC, 0x60, 0x56, 0xE3, 0x03, 0x16, 0xD7, 0x59, 0xE0, 0x3E, 0xDF, 0xE1, 0x0D, 0xD0, 0xFA, 0x67, 0xBE, 0x05, 0x7E, 0xA9, 0x43, 0x2B, 0x82, 0xA1, 0xEC, 0xE9, 0xAB, 0x23, 0xF3, 0xB5, 0x9F, 0x62, 0x29, 0xE2, 0xBE, 0xB1, 0x37, 0xCC, 0xD7, 0xE2, 0xBE, 0x47, 0xDF, 0x3F, 0x1E, 0x3C, 0x7A, 0xBF, 0x0E, 0xBC, 0x41, 0x6B, 0x6E, 0xAC, 0xB1, 0xDD, 0x4F, 0x2C, 0x56, 0xD0, 0x86, 0x1F, 0x22, 0x4E, 0x91, 0xCB, 0x70, 0x01, 0x3D, 0x89, 0xC4, 0x78, 0xF7, 0x15, 0xEE, 0x9E, 0x10, 0xF0, 0x76, 0x8F, 0xAD, 0x68, 0xF6, 0xBE, 0x2B, 0xBA, 0x91, 0x6E, 0x2C, 0xEF, 0xED, 0xA3, 0xBA, 0xB3, 0xDD, 0xF7, 0x64, 0x8D, 0xD4, 0x32, 0x1C, 0x7B, 0x82, 0x0D, 0x7E, 0x64, 0xC1, 0xFB, 0x45, 0xCB, 0xE3, 0xCF, 0x84, 0x90, 0xE9, 0xBE, 0x20, 0xF3, 0xA5, 0xD4, 0xB4, 0xDD, 0x47, 0x4A, 0x8A, 0xDA, 0xF2, 0x52, 0x4B, 0x49, 0x12, 0xCE, 0x52, 0x37, 0x94, 0x93, 0x93, 0x20, 0x85, 0x9E, 0x22, 0x7B, 0x8B, 0x6E, 0x72, 0xC4, 0x93, 0xF7, 0xAF, 0xEC, 0x27, 0x77, 0x7D, 0xF1, 0x1B, 0xF6, 0x6B, 0xF0, 0x85, 0xD5, 0xE4, 0xC2, 0x6B, 0x3B, 0x58, 0xA6, 0xB6, 0xB0, 0x85, 0x4F, 0xFC, 0xBB, 0xA5, 0xC4, 0xAB, 0x6D, 0xB8, 0x1E, 0x46, 0x2D, 0xFC, 0xAC, 0x0F, 0x4C, 0x11, 0x90, 0x41, 0xAF, 0xCE, 0xE8, 0xE0, 0xEB, 0xE1, 0x71, 0xB8, 0x98, 0x55, 0xD2, 0xF2, 0xBF, 0x93, 0x56, 0xD1, 0xAF, 0x55, 0xF9, 0x1F, 0xD5, 0x18, 0xDC, 0xCF, 0x2E, 0xCC, 0xF8, 0x7B, 0x2B, 0xAF, 0x85, 0x49, 0xB8, 0xC1, 0xA7, 0xDD, 0x3B, 0xBB, 0xA6, 0xBF, 0xBA, 0xD3, 0x7F, 0xF6, 0xF2, 0x7D, 0x4F, 0x5E, 0xB3, 0x8D, 0xAF, 0xC8, 0xBA, 0x91, 0x7F, 0x76, 0xBF, 0xEA, 0x22, 0xC6, 0x3E, 0x8C, 0x6B, 0x4D, 0xAD, 0xFF, 0x00, 0xB1, 0xAC, 0x5A, 0xE2, 0x4F, 0x9A, 0xF2, 0xE3, 0x3B, 0x33, 0xFC, 0x02, 0xB5, 0x34, 0x8D, 0x0D, 0x66, 0x97, 0x76, 0x37, 0x47, 0x1F, 0x0C, 0x47, 0x46, 0x23, 0xB0, 0xF6, 0x15, 0x47, 0xC5, 0x77, 0xD0, 0xE9, 0x51, 0x4D, 0x79, 0x74, 0xCA, 0x7C, 0xB0, 0x76, 0x8C, 0xF4, 0xC7, 0x41, 0x5B, 0xEB, 0x29, 0x72, 0xA4, 0x79, 0x52, 0x4A, 0x10, 0x73, 0x9F, 0x4D, 0xCF, 0x36, 0xF8, 0xA5, 0x31, 0xD2, 0xB4, 0x66, 0x8F, 0x77, 0xFA, 0x4D, 0xE1, 0xE7, 0xD7, 0x15, 0xC1, 0xF8, 0x77, 0xC1, 0x26, 0xEE, 0x55, 0x62, 0xB9, 0xCF, 0x24, 0xD6, 0xB6, 0xA3, 0xAC, 0xCF, 0xE3, 0x3F, 0x15, 0x34, 0xCE, 0xA5, 0xA3, 0xDD, 0x84, 0x1E, 0x82, 0xBD, 0x07, 0xC2, 0xDE, 0x17, 0x55, 0x85, 0x4E, 0xCE, 0xA3, 0xD2, 0xBD, 0x79, 0xCE, 0x58, 0x5A, 0x3C, 0xBD, 0x59, 0xF9, 0xF4, 0xE2, 0xB3, 0x4C, 0x63, 0xAB, 0xF6, 0x63, 0xA2, 0xFF, 0x00, 0x33, 0x9D, 0xD2, 0xBC, 0x20, 0xB6, 0xDB, 0x42, 0xA7, 0x3E, 0xB5, 0x5B, 0xC7, 0x5A, 0xAA, 0xE8, 0x1A, 0x63, 0x2E, 0x7B, 0x10, 0x2B, 0xBF, 0xBE, 0x5B, 0x7B, 0x38, 0xDA, 0x3F, 0xE2, 0x5E, 0xB5, 0xE3, 0x5F, 0x15, 0xB5, 0x25, 0xD5, 0xF5, 0x45, 0xB5, 0x89, 0xC1, 0x66, 0x7D, 0xBC, 0x1E, 0xF5, 0x86, 0x06, 0x32, 0xC4, 0x55, 0xB4, 0xB6, 0x5B, 0x9E, 0x8E, 0x61, 0x52, 0x18, 0x3C, 0x33, 0xE4, 0xDD, 0xE8, 0x8F, 0x37, 0xD6, 0xF5, 0x99, 0xE6, 0xB8, 0x73, 0xE6, 0x37, 0xCC, 0x6B, 0x02, 0xFF, 0x00, 0x55, 0x99, 0x8F, 0x7E, 0x2B, 0xE8, 0x1D, 0x37, 0xE0, 0x05, 0xAD, 0xFE, 0x83, 0x1F, 0x9C, 0xCC, 0xB2, 0x15, 0xE4, 0x8E, 0xC6, 0xBC, 0x8B, 0xE2, 0x87, 0xC3, 0xC9, 0xFC, 0x1B, 0x3F, 0xCD, 0xF3, 0xC7, 0xBB, 0x1B, 0xB1, 0x5F, 0x4F, 0x82, 0xC7, 0x61, 0xAA, 0xCF, 0xD9, 0x43, 0x73, 0xE1, 0xB3, 0x2C, 0xAB, 0x1D, 0x42, 0x9F, 0xB7, 0xA9, 0xB7, 0xAE, 0xC7, 0x01, 0xA9, 0x6E, 0xBB, 0x39, 0x6E, 0x79, 0xAC, 0xF9, 0xA2, 0xF2, 0xEB, 0x56, 0xE6, 0x2F, 0x4A, 0xA3, 0x3C, 0x39, 0xAF, 0x73, 0x96, 0xDA, 0x1F, 0x34, 0xE4, 0xDB, 0xBB, 0x32, 0x66, 0x27, 0xAF, 0x63, 0x54, 0xE7, 0x8B, 0x73, 0x56, 0xB4, 0xF0, 0x30, 0x1B, 0xBD, 0x7A, 0xD5, 0x63, 0x08, 0xC7, 0x00, 0x54, 0xB4, 0x38, 0xC9, 0xDC, 0xFC, 0xF4, 0xC5, 0x6A, 0x78, 0x15, 0x77, 0x78, 0xE7, 0x44, 0xFF, 0x00, 0xB0, 0x85, 0xBF, 0xFE, 0x8C, 0x5A, 0xCB, 0x55, 0xDF, 0xF4, 0xAD, 0x7F, 0x03, 0x1F, 0xF8, 0xAE, 0xB4, 0x4F, 0xFB, 0x08, 0x5B, 0xFF, 0x00, 0xE8, 0xC5, 0xAF, 0x36, 0xA7, 0xC0, 0xFD, 0x19, 0xDD, 0x4B, 0xE3, 0x8F, 0xAA, 0xFC, 0xCF, 0xE8, 0x47, 0xE2, 0xB4, 0xA6, 0xDF, 0xE0, 0x7D, 0xF4, 0x83, 0xAA, 0xDA, 0xA1, 0x1F, 0xA5, 0x79, 0xD7, 0x82, 0xBF, 0x6A, 0x0D, 0x57, 0xC3, 0xBA, 0x2C, 0x16, 0x8B, 0x6F, 0x0C, 0x8B, 0x0A, 0xED, 0x0E, 0x7A, 0x9C, 0x74, 0xAF, 0x48, 0xF8, 0xB3, 0x17, 0xFC, 0x58, 0xBD, 0x43, 0x3F, 0xF3, 0xE6, 0x9F, 0xFB, 0x2D, 0x7C, 0xD3, 0x65, 0x84, 0x7D, 0x9F, 0x8D, 0x7C, 0x97, 0x0B, 0x60, 0x68, 0x62, 0x70, 0x93, 0x55, 0xA3, 0x7B, 0x4B, 0x4F, 0xB9, 0x1F, 0xAA, 0x71, 0xFE, 0x69, 0x89, 0xC1, 0xE6, 0x34, 0xA5, 0x86, 0x97, 0x2B, 0x74, 0xD7, 0xE6, 0xCE, 0xDF, 0xE2, 0x87, 0xC4, 0x96, 0xF8, 0x97, 0xAC, 0x43, 0x78, 0xD0, 0xF9, 0x04, 0x46, 0x11, 0xD7, 0x39, 0xE6, 0xB9, 0xD0, 0x98, 0xEF, 0x9F, 0xE9, 0x55, 0xE2, 0x1C, 0x2F, 0xB9, 0xCD, 0x4F, 0x1A, 0xF1, 0xC7, 0x19, 0xAF, 0xB1, 0xA3, 0x42, 0x14, 0x69, 0xAA, 0x74, 0xD5, 0x92, 0x3F, 0x2F, 0xC5, 0x62, 0xAA, 0x62, 0x2A, 0xBA, 0xD5, 0x5D, 0xE4, 0xF7, 0x3A, 0xBF, 0x08, 0x69, 0x3E, 0x22, 0xF1, 0x1E, 0x93, 0x3D, 0xBE, 0x94, 0x26, 0x68, 0xD5, 0x4A, 0x86, 0xD8, 0x4A, 0xA9, 0xC7, 0xAD, 0x63, 0xF8, 0x8B, 0xE0, 0x9F, 0xC4, 0x2B, 0x1D, 0x03, 0xFB, 0x4E, 0x3C, 0xCF, 0xE4, 0xE4, 0x4A, 0xAA, 0x48, 0x65, 0xEB, 0xD0, 0x77, 0xAF, 0x54, 0xF8, 0x41, 0xFB, 0x4B, 0x58, 0xF8, 0x1B, 0x41, 0xD3, 0xF4, 0x0F, 0xEC, 0xF8, 0xD2, 0x47, 0x27, 0x7C, 0xDB, 0x80, 0x32, 0x7B, 0xD7, 0xAC, 0xE9, 0x3E, 0x2F, 0x5F, 0x11, 0xC0, 0x7C, 0xB5, 0x55, 0x8E, 0x4C, 0xF1, 0x5F, 0x1B, 0x99, 0x63, 0x31, 0x34, 0xAB, 0xB6, 0xE9, 0xA5, 0x1B, 0xE8, 0xFB, 0x9F, 0xA7, 0xE4, 0x58, 0x3C, 0x1D, 0x4C, 0x2A, 0x51, 0xAC, 0xE5, 0x2B, 0x2B, 0xAD, 0xAD, 0xE5, 0xAF, 0xDC, 0x7C, 0xC9, 0xF0, 0x1B, 0x4E, 0xF1, 0x2E, 0x97, 0xAC, 0xC7, 0x73, 0x74, 0xD7, 0x05, 0xA3, 0xCF, 0xC8, 0xF9, 0xC1, 0x1D, 0xEB, 0xE8, 0x2B, 0x1F, 0x1F, 0x5D, 0x2D, 0xBA, 0x85, 0x8C, 0x0D, 0xBD, 0x54, 0x9A, 0xE8, 0x2D, 0x3C, 0x23, 0x6F, 0x20, 0x57, 0x58, 0xD7, 0x72, 0x92, 0x41, 0x03, 0xA5, 0x51, 0xD5, 0xFC, 0x28, 0x2D, 0x4A, 0xF9, 0x49, 0x9C, 0x9E, 0x6B, 0xC1, 0xC4, 0x62, 0x15, 0x69, 0x73, 0x33, 0xEB, 0x70, 0xB8, 0x7F, 0xAB, 0xC3, 0x96, 0x3B, 0x16, 0x3C, 0x3B, 0xA9, 0x27, 0x8C, 0xA2, 0x3B, 0xE3, 0x11, 0xCB, 0x6E, 0xD9, 0x20, 0x74, 0x35, 0xD5, 0x69, 0x1E, 0x1D, 0x45, 0x55, 0x6D, 0xA3, 0xA6, 0x71, 0x5C, 0x16, 0x94, 0xE3, 0x43, 0x99, 0xA6, 0x8D, 0xF6, 0x9E, 0xE3, 0xD7, 0x14, 0xDF, 0x05, 0xFE, 0xD5, 0x5A, 0x2D, 0xDD, 0xCD, 0xE5, 0xBD, 0xD3, 0x34, 0x32, 0x58, 0xB1, 0xF3, 0x72, 0x3E, 0xEF, 0x40, 0x3E, 0xBC, 0xD7, 0x35, 0x4C, 0x35, 0x69, 0x47, 0xF7, 0x2A, 0xE6, 0xF4, 0x71, 0x94, 0x23, 0x3B, 0xD7, 0x76, 0x7D, 0xCF, 0x4B, 0xD7, 0x35, 0x01, 0xA1, 0xE9, 0x4C, 0x63, 0x8F, 0x73, 0xF7, 0x51, 0xFC, 0xEB, 0xC3, 0x6F, 0x7C, 0x5B, 0x75, 0xE2, 0x7D, 0x6D, 0xA6, 0x8F, 0x20, 0xDB, 0xB9, 0x59, 0x50, 0x7D, 0xD2, 0x3B, 0x1A, 0xF5, 0x4F, 0x15, 0x7C, 0x47, 0xD3, 0xCD, 0x85, 0x9C, 0x96, 0xF2, 0x44, 0xDF, 0xDA, 0x44, 0x79, 0x44, 0xB0, 0x01, 0xC9, 0x19, 0xC7, 0xD7, 0x83, 0xC5, 0x78, 0xE7, 0x88, 0xBC, 0x51, 0x6F, 0xE0, 0xFF, 0x00, 0x1D, 0x5C, 0x5F, 0xA4, 0x90, 0x47, 0x14, 0xF3, 0xA0, 0x9D, 0x7D, 0x40, 0x04, 0xE4, 0x7E, 0x1F, 0xCA, 0xAF, 0x2E, 0x8F, 0x24, 0x5B, 0x9C, 0x75, 0x7B, 0x18, 0x66, 0xF7, 0xAF, 0x28, 0xC6, 0x94, 0xF4, 0x5B, 0xAF, 0xC8, 0xF4, 0x1D, 0x3B, 0xC3, 0xDF, 0xDB, 0xF6, 0x51, 0xC9, 0x24, 0x7C, 0x36, 0x0E, 0x0F, 0x7F, 0xC2, 0xB7, 0xF4, 0x0F, 0x0B, 0xDB, 0xDA, 0xBF, 0x93, 0x1C, 0x68, 0x1B, 0xAE, 0xD0, 0xBF, 0x81, 0xAC, 0x7F, 0x83, 0xDE, 0x37, 0xB0, 0xF1, 0xC6, 0x9B, 0xE7, 0x59, 0xDC, 0x47, 0x3A, 0x64, 0x16, 0xC7, 0x0C, 0xBF, 0x51, 0xDA, 0xBD, 0x1E, 0xCA, 0xD3, 0x16, 0xEE, 0xD6, 0xEA, 0xBF, 0x68, 0x38, 0x2B, 0x93, 0xC7, 0x6C, 0x66, 0xB8, 0xF1, 0x15, 0x24, 0xE4, 0xE0, 0xF4, 0x3D, 0x0C, 0x3E, 0x16, 0x11, 0x82, 0xA8, 0xAC, 0xCF, 0x22, 0xFD, 0xA2, 0x3F, 0x67, 0xAB, 0x3F, 0x8A, 0xFE, 0x05, 0xBB, 0xB3, 0x5F, 0xDC, 0x5F, 0x46, 0xBB, 0xE0, 0x70, 0x4F, 0xC8, 0xC3, 0x07, 0xA7, 0xBE, 0x31, 0xF8, 0xD7, 0xE7, 0xB4, 0x5E, 0x1D, 0x9A, 0xDA, 0xF1, 0xA1, 0x91, 0x59, 0x64, 0x46, 0x2A, 0x54, 0x8E, 0x84, 0x70, 0x6B, 0xF5, 0x8B, 0xCA, 0x99, 0xF5, 0xCB, 0x86, 0x9A, 0x58, 0x63, 0xF2, 0x9A, 0x38, 0xCA, 0x95, 0xFF, 0x00, 0x58, 0xA5, 0x41, 0xCF, 0x5F, 0x5D, 0xC3, 0xF0, 0xFA, 0x57, 0xC4, 0x3E, 0x30, 0xF8, 0x79, 0x06, 0xB9, 0xF1, 0xA7, 0x5F, 0x48, 0xFF, 0x00, 0x7D, 0x1F, 0xDB, 0x64, 0x24, 0x14, 0xF2, 0xD9, 0x46, 0xE6, 0xE7, 0x03, 0xE8, 0x0F, 0x1D, 0x72, 0x2B, 0xDA, 0xC8, 0xF1, 0x53, 0xA7, 0x19, 0x53, 0x9B, 0xBA, 0x5A, 0xA3, 0xE5, 0xF8, 0x83, 0x03, 0x4E, 0xB4, 0xA1, 0x56, 0x0A, 0xCD, 0xE8, 0xFC, 0xCF, 0x11, 0xB5, 0xF0, 0xCB, 0xC6, 0x7F, 0x79, 0x95, 0x20, 0xE3, 0x04, 0x72, 0x2A, 0xCE, 0xA3, 0xE0, 0xDB, 0x7D, 0x73, 0x4B, 0x7B, 0x39, 0xBE, 0xD0, 0xA9, 0x26, 0x0E, 0xE8, 0x66, 0x68, 0x64, 0x42, 0x3A, 0x30, 0x75, 0x20, 0x82, 0x2B, 0xE8, 0xBB, 0xDF, 0x81, 0x7A, 0x4D, 0xAE, 0x86, 0xDA, 0xC5, 0xCE, 0xE5, 0xF3, 0x1C, 0x00, 0xBB, 0xBA, 0x37, 0x4F, 0xD7, 0x8A, 0xE7, 0xF5, 0x5F, 0x03, 0xD8, 0xDA, 0x4B, 0xF3, 0x11, 0x19, 0x93, 0xA2, 0x01, 0xDA, 0xBD, 0x78, 0xE6, 0x14, 0xEA, 0xA7, 0x06, 0xAE, 0xBA, 0x9E, 0x5C, 0x32, 0xBA, 0x94, 0x26, 0xAA, 0x46, 0x56, 0x92, 0x77, 0x56, 0x7A, 0xAB, 0x6C, 0xD1, 0xC0, 0xFC, 0x05, 0xFD, 0x8F, 0x7C, 0x47, 0xFB, 0x4A, 0x78, 0xC6, 0xE3, 0x4F, 0xBA, 0x6F, 0x0B, 0xDB, 0xF8, 0x67, 0x41, 0xD3, 0x9E, 0x4D, 0x6B, 0xC4, 0x77, 0x68, 0xCB, 0x71, 0xF6, 0x7E, 0x76, 0xC4, 0xF0, 0x22, 0x62, 0x46, 0xDA, 0xAC, 0xC7, 0xF7, 0xA8, 0x84, 0x2B, 0x1C, 0x47, 0x90, 0xB5, 0xF7, 0x27, 0xC5, 0xDB, 0x1D, 0x3B, 0xE1, 0x96, 0x8B, 0x2F, 0x86, 0x6D, 0xED, 0x34, 0xFB, 0x2D, 0x27, 0xC2, 0x7A, 0x65, 0x95, 0xB6, 0x8F, 0x68, 0x08, 0xF2, 0xB4, 0xBB, 0x68, 0x97, 0xCA, 0x86, 0x42, 0x14, 0x0F, 0x28, 0xCB, 0xE5, 0x4A, 0x15, 0x46, 0xE2, 0x56, 0xD9, 0x89, 0xC6, 0xE8, 0xF3, 0xC0, 0xE9, 0xBA, 0xDC, 0x3F, 0x06, 0x3F, 0x67, 0x3B, 0x7D, 0x0D, 0x61, 0x46, 0xF1, 0x0F, 0xC4, 0x29, 0x56, 0x79, 0x91, 0xD4, 0xF1, 0x66, 0x36, 0xE5, 0x9F, 0xD5, 0x7C, 0x94, 0xD8, 0x57, 0xFB, 0xD2, 0x2A, 0x9C, 0x6E, 0x24, 0x71, 0x9F, 0xF0, 0x55, 0x5F, 0x1C, 0xC7, 0xF0, 0xA3, 0xC4, 0x91, 0xE8, 0x36, 0x32, 0x6E, 0xBA, 0xF1, 0xA5, 0xD4, 0xBA, 0xD5, 0xF3, 0x97, 0xF9, 0xD6, 0xD6, 0xDA, 0xCA, 0x28, 0x22, 0x56, 0xF5, 0x06, 0x68, 0x5D, 0xBE, 0xB2, 0xB1, 0xF5, 0xAF, 0xCB, 0x9E, 0x5D, 0x0C, 0x66, 0x67, 0xEC, 0x30, 0xEA, 0xD0, 0x6D, 0xDB, 0xFE, 0xDD, 0xB5, 0xDA, 0xFC, 0x7F, 0x04, 0x7D, 0x16, 0x75, 0xC6, 0xB9, 0x8D, 0x7A, 0x34, 0xE7, 0x99, 0x54, 0xE6, 0x8D, 0x14, 0xD4, 0x52, 0x49, 0x5D, 0xE9, 0xAB, 0xB7, 0x56, 0xEC, 0xBD, 0x2F, 0xDD, 0x9F, 0x09, 0xFE, 0xD8, 0x1F, 0x1A, 0xA4, 0xF1, 0xC6, 0xAF, 0xA9, 0x5D, 0x5A, 0xFF, 0x00, 0xC7, 0x9D, 0xAF, 0x9C, 0x96, 0xF3, 0x6D, 0x22, 0x6B, 0xBC, 0x33, 0xEF, 0x95, 0xC6, 0x4E, 0x32, 0xE8, 0x42, 0xA2, 0xF0, 0x15, 0x47, 0x56, 0x2C, 0xC7, 0xC7, 0xFC, 0x37, 0xAF, 0xDC, 0x69, 0xAD, 0x6B, 0x7D, 0x0B, 0x32, 0xFF, 0x00, 0x64, 0xFD, 0xBE, 0x78, 0xDF, 0x38, 0xCC, 0x8C, 0x8D, 0x1C, 0x44, 0x7F, 0xB4, 0x3C, 0xDD, 0xC3, 0xDC, 0x52, 0xEB, 0x17, 0xCD, 0x75, 0x61, 0x6B, 0x2D, 0xD3, 0x7E, 0xF6, 0xE2, 0x70, 0x0F, 0xA1, 0x8B, 0x61, 0x2C, 0x7F, 0x03, 0x26, 0x4F, 0xBB, 0x56, 0xCB, 0xF8, 0x6E, 0x6B, 0x5D, 0x3B, 0xCB, 0x98, 0x6D, 0x87, 0x4F, 0xB4, 0x4B, 0x79, 0x80, 0x23, 0x6B, 0x4F, 0xFE, 0x8D, 0xB7, 0x03, 0xBE, 0x41, 0x67, 0xCF, 0xF4, 0xAF, 0xDD, 0x28, 0x46, 0x96, 0x1A, 0x94, 0x70, 0xF1, 0xEC, 0x7E, 0x13, 0xF5, 0x5A, 0xF8, 0xFA, 0xB5, 0x31, 0x93, 0xEF, 0xAB, 0xF3, 0xDD, 0x7D, 0xD6, 0x3C, 0xCB, 0xC4, 0x96, 0x93, 0x68, 0xBE, 0x2E, 0x36, 0x10, 0xDB, 0xBC, 0xCD, 0xF6, 0x38, 0x44, 0x6C, 0xBD, 0xA4, 0x8C, 0x9E, 0x3E, 0x8C, 0xA5, 0xC7, 0xE2, 0x3D, 0x29, 0xDA, 0xAE, 0x89, 0x1B, 0xA4, 0x1A, 0x86, 0x9F, 0x1F, 0x9D, 0x1C, 0xD9, 0x96, 0x28, 0x3F, 0xBC, 0xA5, 0x49, 0x78, 0xB1, 0xF4, 0x07, 0x03, 0xE8, 0x2B, 0xB4, 0xD4, 0x34, 0x6B, 0xAD, 0x5F, 0xC7, 0xAE, 0xF6, 0x76, 0x7F, 0x6A, 0x58, 0xE0, 0x2E, 0x5B, 0xCC, 0x55, 0x55, 0xDD, 0x22, 0x28, 0xCE, 0x7D, 0x55, 0x9F, 0xE9, 0x9C, 0xD7, 0x3B, 0x63, 0xA9, 0x37, 0xFC, 0x26, 0xD1, 0xD9, 0x3D, 0xAC, 0xD6, 0xF1, 0xDD, 0x16, 0xBA, 0x84, 0x70, 0x55, 0x5B, 0x81, 0x20, 0xE3, 0xA7, 0x27, 0xA1, 0xC7, 0x2D, 0x5E, 0x84, 0x71, 0xC9, 0xB7, 0x05, 0xBA, 0xB7, 0xE4, 0x71, 0x54, 0xC8, 0x64, 0xA0, 0xAA, 0x3D, 0x9D, 0xD2, 0xF9, 0x33, 0x93, 0x5F, 0xB3, 0xDD, 0xF8, 0x6B, 0x5D, 0xD2, 0xE4, 0x6D, 0xCD, 0x34, 0x3F, 0x6C, 0xB3, 0x98, 0x8C, 0xB2, 0xAF, 0x98, 0xB3, 0x10, 0x79, 0x07, 0x3B, 0xE3, 0xCF, 0x51, 0xCC, 0xAD, 0xDF, 0x35, 0xF5, 0x57, 0xEC, 0x11, 0xFB, 0x72, 0x2F, 0x80, 0xBC, 0x62, 0xDA, 0x4E, 0xB5, 0xAB, 0x35, 0xC6, 0x8B, 0x72, 0x52, 0x3D, 0x56, 0xDC, 0x5A, 0x2C, 0x67, 0x4B, 0x04, 0x05, 0x8E, 0xE6, 0x14, 0x8D, 0x07, 0xCA, 0x14, 0x28, 0x60, 0xB9, 0xDC, 0x83, 0x80, 0x4A, 0xAD, 0x7C, 0xAF, 0xAB, 0x69, 0xD1, 0x58, 0x6B, 0x77, 0xB7, 0x0E, 0x8E, 0xAB, 0x6F, 0x23, 0x43, 0xB5, 0x54, 0xB2, 0x49, 0x1C, 0x99, 0xF9, 0x4E, 0x39, 0x1C, 0xE7, 0xA7, 0x7C, 0xE3, 0x00, 0xE0, 0x7B, 0x77, 0xC2, 0x7F, 0x87, 0xFA, 0x4F, 0x86, 0xF4, 0xE9, 0xB3, 0x71, 0x73, 0xA8, 0x24, 0x59, 0x96, 0xDE, 0x29, 0xF0, 0xBC, 0x03, 0x93, 0x1B, 0x32, 0x05, 0x66, 0x19, 0x1D, 0x32, 0x08, 0x0C, 0x79, 0xCF, 0x35, 0xE1, 0xE7, 0xD8, 0x1A, 0x98, 0x86, 0xA7, 0x43, 0x7E, 0xBF, 0x23, 0xEE, 0x78, 0x13, 0x89, 0xB2, 0xCC, 0xA6, 0x85, 0x4A, 0x39, 0x9C, 0x1C, 0x9D, 0xDB, 0x8B, 0x49, 0x36, 0xAE, 0x92, 0x76, 0x6D, 0xAB, 0x3D, 0x13, 0x6F, 0xB1, 0xFA, 0xCD, 0x79, 0xE2, 0x1B, 0x1B, 0x7D, 0x06, 0x39, 0xEC, 0xEE, 0x20, 0xB8, 0xB3, 0x96, 0x15, 0x9A, 0x3B, 0x88, 0x64, 0x12, 0x44, 0xF1, 0x32, 0x82, 0xAE, 0xAC, 0x09, 0x0C, 0xA4, 0x10, 0x41, 0x07, 0x04, 0x10, 0x45, 0x79, 0x6F, 0x8C, 0xFC, 0x55, 0x0F, 0x89, 0xAF, 0x3E, 0xCD, 0x09, 0xF3, 0x21, 0x61, 0xC6, 0x3B, 0xD7, 0x33, 0xE0, 0xBB, 0xFF, 0x00, 0x0D, 0x78, 0x5B, 0xE0, 0xBD, 0xA5, 0x9F, 0x82, 0xAD, 0x1B, 0x4F, 0xD0, 0x27, 0x57, 0x95, 0x2D, 0x05, 0xCC, 0xB7, 0x02, 0x07, 0x76, 0x2F, 0x22, 0x86, 0x91, 0x99, 0xB1, 0xBD, 0x89, 0xEB, 0x8E, 0x72, 0x00, 0xCD, 0x6F, 0x7C, 0x12, 0xF8, 0x63, 0xA9, 0x6A, 0xBE, 0x21, 0x8B, 0x52, 0xBC, 0x8C, 0x45, 0xA6, 0xA8, 0xF3, 0x3F, 0x79, 0xFF, 0x00, 0x2D, 0x41, 0xCE, 0x31, 0x5E, 0x35, 0x1A, 0x34, 0xE9, 0x50, 0x78, 0x8A, 0x8E, 0xCD, 0x6C, 0x7D, 0x36, 0x6D, 0x99, 0xD5, 0xC5, 0x62, 0x61, 0x82, 0xC2, 0xAB, 0xC5, 0xD9, 0xB7, 0xE5, 0xDF, 0xD2, 0xC6, 0x87, 0x83, 0xBE, 0x15, 0x49, 0x67, 0x72, 0xD3, 0x34, 0x79, 0x0C, 0x77, 0x03, 0xD8, 0x0A, 0xD9, 0xF1, 0x8C, 0x77, 0x5E, 0x1B, 0xD1, 0x5A, 0x6B, 0x7E, 0x59, 0x07, 0x03, 0x1D, 0x4D, 0x7A, 0x6D, 0x94, 0x16, 0xB7, 0x3A, 0x75, 0xC4, 0xC8, 0xAC, 0xB0, 0x59, 0xE4, 0x1C, 0x2F, 0xDE, 0xC7, 0xA5, 0x3B, 0xC4, 0x9F, 0x0E, 0xEF, 0x3C, 0x47, 0xE1, 0x9B, 0x59, 0x6D, 0x6D, 0x95, 0x85, 0xC4, 0x88, 0xCA, 0xA3, 0xB2, 0xF5, 0xC9, 0xFC, 0x2B, 0xC6, 0xFA, 0xFC, 0xEA, 0x55, 0x52, 0xAB, 0xB1, 0xED, 0x47, 0x2A, 0x85, 0x2A, 0x0E, 0x14, 0x37, 0x6B, 0x4B, 0x1C, 0x87, 0x83, 0xFC, 0x1F, 0x0E, 0xB3, 0xA2, 0x42, 0xD7, 0x96, 0x33, 0x2C, 0x8B, 0x10, 0x67, 0x92, 0x42, 0x46, 0xED, 0xC3, 0x27, 0x1E, 0xB5, 0xF3, 0xC7, 0xC6, 0x0F, 0x87, 0xEB, 0xF0, 0xFF, 0x00, 0xC4, 0x49, 0x75, 0x6F, 0xE6, 0x3C, 0x6D, 0x31, 0x64, 0x0F, 0xCF, 0x19, 0xCD, 0x7D, 0xA9, 0xAE, 0xC6, 0xF1, 0xD9, 0x47, 0x1A, 0xC4, 0x63, 0x7F, 0x2C, 0x16, 0x1D, 0x97, 0x8E, 0x46, 0x6B, 0xE5, 0x1F, 0xDA, 0x67, 0x56, 0x5D, 0x4B, 0x5E, 0x5B, 0x18, 0x55, 0xB7, 0x5A, 0xB9, 0x2E, 0x47, 0x38, 0x62, 0x3E, 0xEF, 0xE1, 0x5E, 0xB7, 0x0D, 0xD5, 0xA9, 0x53, 0x10, 0xFF, 0x00, 0x95, 0xEE, 0xBC, 0x8F, 0x27, 0x8C, 0xF0, 0xB8, 0x7A, 0x38, 0x28, 0xA7, 0xAC, 0xE3, 0x6B, 0x3F, 0x3D, 0x0D, 0x7F, 0x0C, 0x7C, 0x5B, 0xD2, 0x2F, 0xB4, 0x18, 0x9A, 0x7B, 0x88, 0xED, 0x9F, 0xEE, 0xB2, 0xBB, 0x72, 0x08, 0xAF, 0x1A, 0xF8, 0xF5, 0xE2, 0xE8, 0x75, 0xFD, 0x55, 0xAD, 0xAD, 0x99, 0x64, 0x8E, 0x33, 0xB8, 0xC8, 0x0F, 0x04, 0xD5, 0x1B, 0xFD, 0x12, 0xE1, 0x47, 0xCD, 0x0B, 0xFC, 0xC3, 0x2B, 0x95, 0xEB, 0xF4, 0xA8, 0xEE, 0x7E, 0x1D, 0xEA, 0x42, 0xDF, 0xCF, 0x6B, 0x59, 0x3C, 0xB9, 0x06, 0x46, 0x47, 0x20, 0x57, 0xD4, 0x61, 0xF2, 0xBC, 0x36, 0x1A, 0xB7, 0xB7, 0xE6, 0xF4, 0x4C, 0xF8, 0x4C, 0x66, 0x79, 0x8D, 0xC6, 0x61, 0xFE, 0xAD, 0xC9, 0xDA, 0xED, 0x26, 0x70, 0xB7, 0x30, 0x33, 0x29, 0xF6, 0x35, 0x9F, 0x71, 0x06, 0x4F, 0xF2, 0xAD, 0xDD, 0x52, 0x16, 0x86, 0x46, 0x46, 0x5D, 0xAC, 0xA7, 0x04, 0x56, 0x4C, 0x91, 0x16, 0xED, 0xF4, 0x35, 0xF4, 0x1D, 0x2E, 0x7C, 0xA3, 0xD1, 0xD9, 0x99, 0xD2, 0x43, 0x96, 0x50, 0x3F, 0xFD, 0x75, 0x0D, 0xCD, 0xB6, 0xC5, 0xC7, 0x6F, 0xA5, 0x74, 0x9A, 0x47, 0x86, 0xDE, 0x76, 0xDC, 0xCB, 0xED, 0x5A, 0x4F, 0xE0, 0xBF, 0x37, 0xEF, 0x0F, 0xC2, 0xB9, 0x2A, 0x62, 0x21, 0x07, 0x66, 0x76, 0xE1, 0xF0, 0x75, 0x2A, 0x6A, 0x91, 0xF9, 0x67, 0x5A, 0x5E, 0x07, 0xFF, 0x00, 0x91, 0xEB, 0x45, 0xFF, 0x00, 0xB0, 0x85, 0xBF, 0xFE, 0x8C, 0x5A, 0xCD, 0xCD, 0x69, 0xF8, 0x14, 0x67, 0xC7, 0x7A, 0x2F, 0xFD, 0x84, 0x2D, 0xFF, 0x00, 0xF4, 0x62, 0xD7, 0x24, 0xFE, 0x16, 0x5D, 0x3F, 0x8D, 0x7A, 0xAF, 0xCC, 0xFE, 0x85, 0xBE, 0x30, 0xCC, 0xB6, 0xDF, 0x01, 0xB5, 0x29, 0x18, 0xED, 0x02, 0xC9, 0x09, 0x27, 0xF0, 0xAF, 0x90, 0x2F, 0x3C, 0x70, 0xAB, 0xAA, 0x42, 0xB0, 0xE1, 0xA3, 0xFE, 0x26, 0xF4, 0xAF, 0xAD, 0x3F, 0x68, 0x45, 0xD9, 0xFB, 0x34, 0xEB, 0x9D, 0x7F, 0xE4, 0x1E, 0xA7, 0xFF, 0x00, 0x41, 0xAF, 0x86, 0x6D, 0x9F, 0x6A, 0x86, 0xEF, 0x93, 0x5F, 0x25, 0xC2, 0x95, 0x9C, 0x30, 0xD3, 0x51, 0xFE, 0x6F, 0xD1, 0x1F, 0xAD, 0x71, 0xF6, 0x16, 0x15, 0x31, 0xD4, 0xA5, 0x2F, 0xE4, 0xFD, 0x59, 0xEB, 0x5A, 0x5E, 0xB7, 0x6F, 0x76, 0x17, 0x6C, 0x8A, 0xDF, 0x8F, 0x26, 0xB4, 0xD2, 0x4D, 0xC9, 0xC7, 0xB5, 0x79, 0xC6, 0x83, 0xE1, 0x9D, 0x52, 0x64, 0x5B, 0x8B, 0x54, 0x6E, 0x84, 0xF1, 0x56, 0x2E, 0xFC, 0x53, 0x7D, 0x14, 0x1F, 0x67, 0x90, 0x18, 0xE6, 0x8C, 0xF2, 0x7B, 0x9A, 0xFA, 0xB8, 0xE3, 0x69, 0xCB, 0x4E, 0xA7, 0xE7, 0x75, 0xB2, 0x5A, 0xB1, 0x69, 0xC7, 0x66, 0x77, 0xDF, 0x65, 0xF3, 0x75, 0x0B, 0x39, 0xD5, 0x77, 0x49, 0x0C, 0x9C, 0x10, 0x7E, 0xE8, 0xAF, 0xA3, 0xFE, 0x10, 0xEA, 0xB1, 0xC9, 0x65, 0x0A, 0x96, 0xF9, 0xB1, 0xCE, 0x6B, 0xE5, 0xCF, 0x02, 0xEB, 0xED, 0x7E, 0x23, 0xF3, 0x98, 0x6E, 0x07, 0x9F, 0xE9, 0x5F, 0x44, 0x7C, 0x13, 0xD5, 0xB4, 0xFD, 0x68, 0xC5, 0x60, 0xCC, 0xB6, 0xF7, 0x51, 0x82, 0x55, 0xF7, 0xFF, 0x00, 0xAC, 0x3D, 0xB8, 0xAF, 0x1F, 0x3B, 0x51, 0x9D, 0x0E, 0x74, 0x7B, 0x9C, 0x35, 0x29, 0xD1, 0xC5, 0xFB, 0x29, 0x3B, 0x5F, 0x6F, 0x33, 0xDE, 0x74, 0xD8, 0x84, 0x96, 0xBC, 0x7F, 0x77, 0x22, 0xA0, 0xD7, 0xF4, 0x5B, 0x8B, 0xA5, 0xB3, 0x36, 0xD9, 0xCA, 0xB8, 0xF3, 0x4E, 0x3A, 0x0A, 0xC0, 0xD7, 0xFE, 0x21, 0xDA, 0xF8, 0x03, 0x4B, 0xDB, 0x73, 0x22, 0x8E, 0xC8, 0xDD, 0x77, 0x63, 0xDA, 0x99, 0xA0, 0xFC, 0x78, 0xD2, 0xF5, 0x7B, 0x44, 0x7F, 0xB4, 0x43, 0x10, 0x6C, 0x81, 0xB8, 0xE3, 0xA5, 0x7E, 0x7B, 0x2A, 0x55, 0x97, 0xEF, 0x21, 0x16, 0xD1, 0xFA, 0xE7, 0xD7, 0x30, 0xF6, 0xF6, 0x75, 0x64, 0x93, 0x33, 0x75, 0x0D, 0x1B, 0x4F, 0x3E, 0x28, 0xB8, 0xB0, 0x6D, 0x51, 0x19, 0xAF, 0x1C, 0xF9, 0x68, 0xC7, 0x0D, 0x1B, 0x1E, 0xC3, 0xD4, 0x57, 0x9B, 0x5D, 0xFE, 0xCA, 0xD7, 0x5F, 0x0F, 0x35, 0x4D, 0x5F, 0x54, 0x9E, 0xF5, 0x27, 0xB5, 0x9A, 0x3D, 0xDE, 0x63, 0x37, 0x53, 0x9C, 0xE0, 0x8A, 0xED, 0x7C, 0x43, 0xE1, 0xEF, 0x0F, 0xEA, 0x3E, 0x23, 0xB5, 0xF1, 0x2C, 0xD7, 0xC2, 0xDE, 0x48, 0xE6, 0xDE, 0x87, 0xCC, 0x01, 0x1C, 0x8A, 0xC3, 0xF8, 0xEF, 0xF1, 0x9F, 0xC3, 0x3A, 0xE7, 0xC2, 0xDD, 0x4A, 0xC6, 0x6D, 0x51, 0x6E, 0x26, 0xB8, 0x5D, 0xB0, 0xC7, 0x04, 0x87, 0x7B, 0xC8, 0x39, 0x5E, 0x9D, 0xB3, 0x82, 0x73, 0xC5, 0x77, 0x51, 0xAF, 0x55, 0x4A, 0x30, 0xA3, 0x7D, 0x6C, 0xA5, 0xA6, 0xDA, 0xF4, 0x3C, 0x6A, 0xD1, 0xA1, 0x25, 0x39, 0xE2, 0x12, 0xD1, 0xB7, 0x1D, 0x77, 0x56, 0xEA, 0x72, 0xB1, 0xE9, 0x51, 0x6B, 0xB6, 0xD6, 0xBA, 0x6A, 0xB7, 0xCB, 0x1C, 0xAB, 0x3A, 0xB2, 0x36, 0x19, 0x58, 0x0C, 0x0C, 0x1E, 0xA3, 0xF0, 0xAD, 0xE9, 0xFF, 0x00, 0x67, 0x9D, 0x1F, 0x53, 0xD5, 0x85, 0xE5, 0xDD, 0xE5, 0xE5, 0xE2, 0x49, 0xF3, 0x34, 0x2F, 0x2E, 0xE8, 0xCB, 0xEC, 0xD8, 0x08, 0xDC, 0x33, 0xC0, 0xC8, 0xFC, 0x6A, 0x1F, 0xD9, 0x3F, 0xC0, 0x16, 0xA9, 0xE1, 0x08, 0x75, 0xC9, 0xE5, 0x9E, 0xEA, 0xF2, 0xE4, 0x14, 0xC4, 0xC4, 0xED, 0x88, 0x0E, 0x30, 0x07, 0x4F, 0xC6, 0xBB, 0xEB, 0xA1, 0x63, 0x71, 0x65, 0x75, 0x3D, 0xAD, 0xD4, 0x72, 0x1B, 0x39, 0x18, 0x90, 0xB2, 0xFF, 0x00, 0x1F, 0xF7, 0x4F, 0xE8, 0x2A, 0x71, 0x58, 0x9A, 0x91, 0xAA, 0xE1, 0x09, 0x3D, 0x1D, 0x9F, 0xA9, 0xA6, 0x05, 0x51, 0x95, 0x15, 0x56, 0x50, 0x4B, 0x9B, 0x54, 0xBC, 0x89, 0x3E, 0x19, 0xFC, 0x3F, 0xB3, 0xF0, 0x34, 0xBF, 0xE8, 0x7F, 0xBB, 0x84, 0xA6, 0xD2, 0xAB, 0x8C, 0x0E, 0x73, 0xCF, 0xEB, 0x5D, 0x06, 0xB7, 0xF1, 0x16, 0x4D, 0x0F, 0x43, 0x99, 0x16, 0x3F, 0x36, 0x76, 0xCC, 0x6B, 0xF3, 0x60, 0x80, 0x7B, 0xF4, 0xEB, 0xD3, 0xF1, 0x35, 0xC4, 0x7C, 0x33, 0xF1, 0xE2, 0xF8, 0x97, 0x44, 0x68, 0xEE, 0x26, 0x86, 0x3B, 0xE6, 0x55, 0x46, 0x45, 0x62, 0x30, 0xFC, 0x1C, 0x2F, 0xB7, 0x5C, 0x57, 0xA2, 0x78, 0x53, 0xC1, 0x96, 0x4E, 0x63, 0xBA, 0x75, 0x76, 0x99, 0x23, 0x11, 0x1D, 0xEC, 0x48, 0x2B, 0xF4, 0xE9, 0xD6, 0xB8, 0xAB, 0x37, 0x4A, 0xA7, 0xEF, 0xD5, 0xD9, 0xEA, 0xE1, 0xE5, 0x1C, 0x45, 0x2B, 0xE1, 0x5D, 0x93, 0x3C, 0xF3, 0x42, 0xF8, 0xFF, 0x00, 0x6F, 0xA4, 0xF8, 0x88, 0xAE, 0xB5, 0x78, 0xD2, 0x7D, 0xB5, 0xF6, 0x4E, 0x1D, 0x4E, 0xD8, 0x36, 0x80, 0x11, 0x90, 0x7A, 0x16, 0x66, 0xC8, 0xEC, 0x14, 0x7D, 0x4F, 0x13, 0x2E, 0xA4, 0xB7, 0x3F, 0x11, 0x1F, 0x51, 0x5F, 0x31, 0xEC, 0x2E, 0x0C, 0x9B, 0x3E, 0x55, 0x5D, 0xA1, 0x8E, 0x41, 0x6E, 0x32, 0x7D, 0x3D, 0xB1, 0x57, 0xBF, 0x68, 0xEF, 0x86, 0x96, 0xBA, 0x03, 0xDC, 0xEB, 0xC3, 0x77, 0xDA, 0x1A, 0xED, 0x72, 0x14, 0xFD, 0xF4, 0x27, 0x04, 0xB0, 0xF6, 0xC8, 0xC1, 0xFC, 0x3D, 0x05, 0x55, 0xF8, 0x74, 0x9F, 0xF0, 0x98, 0xE9, 0x53, 0x35, 0x98, 0xF3, 0xBC, 0x91, 0xE5, 0xEC, 0x03, 0x07, 0x79, 0xEA, 0x3F, 0x0F, 0xEB, 0x5E, 0xCC, 0xAA, 0x53, 0xF6, 0x7E, 0xDA, 0x94, 0x6C, 0x9E, 0x8C, 0xF0, 0x69, 0xE1, 0x2A, 0x7B, 0x47, 0x42, 0xAC, 0xB9, 0x9C, 0x75, 0x56, 0xEC, 0x77, 0x87, 0x40, 0xD3, 0x7C, 0x67, 0xE0, 0x99, 0xED, 0x2D, 0x24, 0x86, 0xEA, 0xEA, 0x5E, 0x42, 0x96, 0xE7, 0x82, 0x7F, 0x2A, 0xE6, 0xBC, 0x09, 0xF0, 0x3B, 0xFE, 0x12, 0xCF, 0x8A, 0x70, 0x58, 0xEA, 0x1C, 0xA5, 0xA4, 0x2D, 0x35, 0xCC, 0x59, 0xE1, 0xA3, 0x40, 0x4F, 0x5F, 0x42, 0x70, 0x3F, 0x1A, 0xD1, 0xF0, 0x37, 0xC3, 0x1B, 0xAF, 0x0F, 0xC8, 0xDA, 0xA4, 0x93, 0x1B, 0x7B, 0xAB, 0x62, 0x36, 0xC6, 0x0F, 0xC9, 0x8E, 0x7A, 0x9E, 0xF5, 0xE8, 0xFF, 0x00, 0x02, 0xF4, 0x19, 0xAD, 0x2E, 0xEE, 0xA6, 0xBC, 0x93, 0xCC, 0xD5, 0xBC, 0x71, 0xA8, 0xC5, 0x63, 0x6C, 0xF8, 0xC3, 0x43, 0x68, 0xBB, 0xA6, 0x98, 0xAF, 0x70, 0x3C, 0xB4, 0x3F, 0x37, 0xAB, 0xC7, 0xED, 0x5E, 0x5E, 0x23, 0x1B, 0xF5, 0x7A, 0x35, 0x14, 0x25, 0x7B, 0xDE, 0xDE, 0xB6, 0xD7, 0xE4, 0x96, 0xA1, 0x8F, 0xA7, 0xFB, 0xB5, 0x56, 0x71, 0xE5, 0x92, 0xFC, 0xBB, 0xFE, 0xBF, 0x23, 0xCA, 0xBE, 0x38, 0xC5, 0x36, 0xA1, 0xFB, 0x49, 0x5F, 0x34, 0x3E, 0x5C, 0xDF, 0xD9, 0xD6, 0x30, 0xE9, 0x76, 0x91, 0x91, 0xF2, 0xC4, 0xE0, 0x33, 0xCC, 0x3E, 0x9B, 0xF6, 0xE7, 0xFD, 0xCA, 0xF9, 0x07, 0xF6, 0xEA, 0xF1, 0x2E, 0xA1, 0xE3, 0x4F, 0x88, 0x5E, 0x22, 0xF1, 0x25, 0xD5, 0xE4, 0xDA, 0x8C, 0x36, 0x37, 0x71, 0xF8, 0x6E, 0xC2, 0x49, 0x0E, 0xE6, 0x4B, 0x5B, 0x58, 0x16, 0x3D, 0xC4, 0x8E, 0x0B, 0x4B, 0x34, 0xC5, 0xD8, 0x8E, 0xA4, 0xE7, 0xA5, 0x7D, 0x59, 0xE3, 0x7F, 0x8A, 0xBA, 0x7F, 0x82, 0x7C, 0x4D, 0xE2, 0x8F, 0x16, 0x34, 0x76, 0xFA, 0x95, 0xE6, 0xA5, 0x73, 0x75, 0x35, 0xB2, 0x48, 0xBF, 0xB9, 0xB4, 0x8A, 0x79, 0x98, 0x3C, 0x92, 0x0E, 0xED, 0xE5, 0x3B, 0x2A, 0xA0, 0xE3, 0x0C, 0x4B, 0x12, 0x30, 0xAF, 0xF2, 0x5F, 0xED, 0x0D, 0xA1, 0xFF, 0x00, 0xC2, 0x37, 0xFB, 0x21, 0xFC, 0x31, 0xD4, 0xA5, 0x66, 0x93, 0xFB, 0x76, 0x3D, 0x50, 0x5E, 0xC8, 0xEA, 0x5A, 0x49, 0xDE, 0xDE, 0x69, 0x23, 0xDD, 0xC1, 0x04, 0xB3, 0x28, 0xB7, 0x20, 0xFA, 0x95, 0xA9, 0xE1, 0xBA, 0x7E, 0xC6, 0xBC, 0x26, 0xD6, 0x8E, 0xD1, 0x4F, 0xE4, 0xE4, 0xFF, 0x00, 0x24, 0x7C, 0x6F, 0x10, 0x45, 0x54, 0xC3, 0x7B, 0x2B, 0xEB, 0x15, 0xCC, 0xFE, 0x6D, 0x25, 0xFA, 0x9F, 0x34, 0x6C, 0xF0, 0x97, 0x84, 0x7C, 0x31, 0xA1, 0xDC, 0x78, 0xD3, 0x54, 0xD3, 0xAC, 0xA2, 0x86, 0xF9, 0xA4, 0xF3, 0x6F, 0x27, 0x54, 0x86, 0xDE, 0x15, 0x55, 0x79, 0x30, 0xA7, 0xEF, 0xBB, 0x48, 0x4A, 0x81, 0xC9, 0xC8, 0x1B, 0x47, 0x06, 0xBA, 0x5B, 0x3F, 0x1E, 0x78, 0x7F, 0xE2, 0xE6, 0x9D, 0x17, 0x88, 0x3C, 0x3B, 0xA9, 0x59, 0xEB, 0xDA, 0x3D, 0xE5, 0xF4, 0x8B, 0xA8, 0xDD, 0xC0, 0xC5, 0x56, 0x1B, 0x80, 0x8D, 0x20, 0xCA, 0x36, 0x1D, 0x7E, 0x5C, 0x26, 0x19, 0x41, 0x03, 0x6F, 0x18, 0x60, 0x4F, 0x37, 0xF1, 0x73, 0xF6, 0x13, 0xF1, 0xB7, 0x89, 0xAC, 0xF4, 0xFF, 0x00, 0x15, 0xEA, 0x0F, 0xA4, 0xDD, 0xAE, 0x9F, 0x67, 0x16, 0xA1, 0x69, 0xA4, 0xCB, 0x00, 0xB8, 0xFD, 0xE0, 0xBC, 0x82, 0x50, 0xE6, 0x22, 0x0C, 0x6F, 0xBA, 0x08, 0xE4, 0x42, 0xA4, 0x37, 0xFA, 0xCC, 0x10, 0x4C, 0xC4, 0x2F, 0xA0, 0x7E, 0xC9, 0x9F, 0xB3, 0xAD, 0x9F, 0xC1, 0xAF, 0x01, 0x6A, 0xDA, 0x05, 0xCC, 0xC3, 0x5B, 0xB6, 0x5D, 0x65, 0xAE, 0xAD, 0x6F, 0x24, 0xB7, 0x7B, 0x7F, 0xB4, 0x2F, 0xD9, 0xAD, 0xD4, 0xB2, 0xAB, 0x31, 0x21, 0x37, 0xA3, 0x60, 0x64, 0x8E, 0x0F, 0x27, 0x9A, 0xFB, 0xA9, 0x54, 0x8D, 0x4B, 0xE2, 0x61, 0x34, 0xF9, 0x5D, 0xAD, 0xD7, 0xD4, 0xE1, 0xCB, 0x68, 0xD6, 0xA3, 0x4E, 0x38, 0x49, 0xD3, 0x69, 0x4A, 0x37, 0x72, 0xFE, 0xB4, 0xBE, 0x87, 0x1D, 0xE2, 0xCF, 0x88, 0x32, 0x7C, 0x28, 0xF0, 0x17, 0x88, 0x3C, 0x5D, 0x07, 0x87, 0x67, 0xD6, 0xA4, 0x8A, 0x4B, 0x7B, 0x3B, 0x7B, 0x41, 0x70, 0x96, 0xC3, 0xCD, 0x32, 0x85, 0x8D, 0x5D, 0x8E, 0x76, 0x86, 0xDE, 0x1C, 0x9C, 0x1F, 0xEE, 0x9C, 0x12, 0x2B, 0xC3, 0x3E, 0x18, 0xFC, 0x6C, 0xD5, 0xBE, 0x24, 0x7C, 0x42, 0x89, 0xB5, 0x6F, 0x0D, 0xC7, 0xA3, 0xAC, 0x57, 0x77, 0xA1, 0x0D, 0xA4, 0xCD, 0x3C, 0x7F, 0x68, 0x48, 0x0B, 0x3C, 0x44, 0x91, 0x95, 0x20, 0xB2, 0xB6, 0x4F, 0xCA, 0xDC, 0x80, 0xD9, 0x01, 0x5B, 0xEC, 0xDF, 0x88, 0x3F, 0x0F, 0xB4, 0xBF, 0x88, 0x7F, 0x0F, 0x75, 0x6D, 0x26, 0x78, 0x93, 0xEC, 0xFA, 0xA8, 0x0B, 0x20, 0x0A, 0x08, 0x86, 0x48, 0xC2, 0xAA, 0x32, 0x81, 0x8F, 0xBB, 0xB1, 0x4E, 0x3F, 0xC6, 0xBC, 0xA0, 0xFC, 0x29, 0xB0, 0xF0, 0xBE, 0xA3, 0x6B, 0x67, 0xA7, 0xE9, 0xFA, 0x6E, 0x93, 0x66, 0xCE, 0x2E, 0x26, 0x8A, 0xCD, 0x36, 0x46, 0x81, 0x16, 0x35, 0x11, 0xA8, 0xC0, 0x1F, 0x33, 0xA8, 0x72, 0x42, 0xAF, 0x23, 0x38, 0x27, 0x9A, 0xD2, 0x9C, 0xA2, 0xE1, 0xED, 0x1C, 0x9F, 0x3D, 0xD6, 0x9D, 0x2D, 0xD6, 0xE6, 0xF8, 0x9A, 0x35, 0xB9, 0xD4, 0x22, 0x97, 0xB3, 0x49, 0xDF, 0xBD, 0xD6, 0xC7, 0x94, 0x7C, 0x47, 0xB5, 0x2B, 0xA9, 0x78, 0x9B, 0xC9, 0xFF, 0x00, 0x56, 0xB0, 0xB0, 0x07, 0xFB, 0xCE, 0xA1, 0xF3, 0x8F, 0x5C, 0x37, 0xCA, 0x7D, 0xFE, 0x95, 0xE9, 0xFE, 0x1E, 0x9A, 0x4D, 0x36, 0x28, 0xA1, 0x91, 0xB6, 0xC8, 0xC4, 0xAC, 0x98, 0x3F, 0x75, 0x9B, 0x24, 0xE3, 0xFE, 0x04, 0x71, 0x5C, 0xBA, 0xDA, 0xC6, 0xFF, 0x00, 0x11, 0xA4, 0x91, 0xA1, 0x5F, 0xB2, 0x58, 0xBD, 0xA8, 0x60, 0x48, 0x0A, 0x7E, 0x6B, 0x87, 0x0B, 0x93, 0xEE, 0x89, 0x9C, 0xFF, 0x00, 0x7C, 0x57, 0x75, 0xF1, 0x63, 0xC0, 0x97, 0xDF, 0x0E, 0xFC, 0x61, 0x77, 0xA7, 0xCC, 0xAE, 0xBB, 0x4A, 0xC9, 0x6D, 0x2B, 0x7C, 0xA2, 0x70, 0x46, 0xE4, 0x64, 0xCF, 0x2E, 0xB9, 0x04, 0x6E, 0x00, 0x8C, 0xA3, 0x73, 0xC5, 0x7B, 0x71, 0xC4, 0x45, 0x54, 0x54, 0xA5, 0xBB, 0x5F, 0xE5, 0xFE, 0x67, 0xC1, 0x66, 0x38, 0x2B, 0xC2, 0x75, 0xE9, 0xEB, 0x67, 0x6F, 0x93, 0xBE, 0xBE, 0x9A, 0x1E, 0xEB, 0xFB, 0x1B, 0xFC, 0x54, 0xDD, 0xA2, 0x5C, 0xE8, 0x72, 0xBC, 0x2D, 0x75, 0x6D, 0x0B, 0xC9, 0x0A, 0xCB, 0x8F, 0x2E, 0x44, 0xFB, 0xBB, 0x32, 0x78, 0x5C, 0x0D, 0xBB, 0x4F, 0x40, 0x49, 0xC9, 0x19, 0xC8, 0xFA, 0x23, 0xC3, 0xBE, 0x25, 0xF1, 0x37, 0xC5, 0x1D, 0x2A, 0x3D, 0x0F, 0x49, 0x59, 0x05, 0xBD, 0xBC, 0x62, 0x39, 0x56, 0x31, 0xB1, 0x94, 0x83, 0x82, 0x1B, 0x3C, 0xA9, 0x1D, 0xD4, 0xF2, 0x31, 0x5F, 0x9F, 0x5F, 0x0D, 0xFC, 0x75, 0xFF, 0x00, 0x08, 0x27, 0x8F, 0x2C, 0xF5, 0x64, 0x66, 0x5B, 0x7B, 0x5B, 0x85, 0x9A, 0x51, 0x9E, 0xB0, 0x48, 0x31, 0x20, 0xF7, 0xC4, 0x7B, 0xBF, 0x1C, 0x57, 0xE8, 0xB7, 0xC2, 0xED, 0x03, 0x5C, 0xF8, 0x6F, 0x70, 0xDA, 0xD5, 0xAE, 0xB5, 0x69, 0xA6, 0x99, 0xA2, 0x03, 0xCB, 0x65, 0x59, 0xE1, 0xBA, 0x88, 0x0C, 0xAE, 0xF5, 0xC8, 0xDC, 0xB8, 0xE8, 0x55, 0x95, 0x80, 0xE0, 0x10, 0x09, 0x07, 0xC0, 0xCC, 0x30, 0x7F, 0x57, 0x9B, 0xAB, 0x4D, 0x27, 0xCD, 0xAA, 0x4F, 0xA3, 0xF2, 0xFF, 0x00, 0x23, 0xE9, 0x38, 0x73, 0x31, 0x78, 0xBC, 0x3A, 0xC2, 0xD4, 0x93, 0x5C, 0x9A, 0x36, 0xBF, 0x95, 0xEA, 0xAE, 0xFF, 0x00, 0x03, 0xE9, 0xCF, 0x00, 0xE8, 0x71, 0x69, 0xFE, 0x15, 0xB3, 0xB4, 0xBE, 0x8D, 0x37, 0x47, 0x02, 0xA4, 0xA1, 0xCE, 0x77, 0x1C, 0x60, 0xD7, 0x4D, 0xA0, 0xDA, 0x5A, 0xE8, 0x7A, 0x74, 0xD0, 0xC7, 0x71, 0xB6, 0x22, 0xE5, 0xE3, 0x04, 0xFD, 0xC0, 0x47, 0x4A, 0xF9, 0x36, 0x6F, 0x8B, 0x57, 0x5E, 0x21, 0xD7, 0x64, 0xFE, 0xD0, 0xF1, 0x19, 0x8A, 0xD6, 0x66, 0xDE, 0x12, 0xDE, 0x22, 0xA0, 0x63, 0xB0, 0xF4, 0xFC, 0x49, 0xAE, 0xF2, 0x3F, 0x8C, 0xD1, 0xC7, 0xA6, 0x46, 0xB0, 0xCA, 0x5D, 0x11, 0x76, 0x86, 0x63, 0xC9, 0xC0, 0xEF, 0x5F, 0x37, 0x5B, 0x29, 0xAB, 0x1D, 0x65, 0xD7, 0x5D, 0xB4, 0xFC, 0x4F, 0xD1, 0xB0, 0x39, 0xED, 0x07, 0xA2, 0x5F, 0x0E, 0x8A, 0xED, 0x5F, 0xF0, 0x3D, 0x53, 0xC6, 0x7A, 0x8D, 0xA9, 0x96, 0xDE, 0x1B, 0x7C, 0xC8, 0xF3, 0x65, 0x08, 0x5E, 0x18, 0x8F, 0x5C, 0xD7, 0x0B, 0xAB, 0x7E, 0xCE, 0xDE, 0x15, 0xB1, 0xF1, 0x14, 0xFA, 0xB4, 0xBE, 0x6D, 0xC5, 0xC5, 0xC7, 0xEF, 0x0A, 0xCF, 0x20, 0x65, 0x56, 0xF6, 0x18, 0x1D, 0xBD, 0x73, 0x5C, 0x0D, 0xDF, 0xC6, 0x59, 0x92, 0xF1, 0xA5, 0x56, 0x26, 0x48, 0xF8, 0x04, 0x9E, 0x2B, 0x8B, 0xD5, 0x3E, 0x30, 0x6B, 0x57, 0x1A, 0xEC, 0xF7, 0x4F, 0x71, 0xE6, 0x6F, 0x39, 0x08, 0x7E, 0xE8, 0xC7, 0x40, 0x3D, 0xAB, 0xAB, 0x0F, 0x97, 0xE2, 0x62, 0xAD, 0x46, 0x56, 0xD3, 0x5F, 0x33, 0x9F, 0x15, 0x9D, 0x60, 0xA6, 0xD4, 0xAB, 0xC5, 0x4B, 0x5D, 0x34, 0xBD, 0xBC, 0xCD, 0x8F, 0x1C, 0xF8, 0x36, 0xCD, 0xF5, 0xE0, 0xB1, 0xC6, 0xBE, 0x5C, 0x32, 0x65, 0x70, 0x29, 0xBE, 0x25, 0x9B, 0x48, 0xB1, 0xD1, 0x64, 0x6B, 0xA9, 0x12, 0x14, 0x85, 0x0E, 0xE0, 0x6B, 0x16, 0xE3, 0xE2, 0x75, 0xD5, 0xC4, 0x6C, 0xD2, 0x2C, 0x7B, 0xDB, 0xEE, 0x81, 0xFD, 0x6B, 0x83, 0xF1, 0xAD, 0xB4, 0xBE, 0x24, 0x24, 0xB4, 0x8C, 0xDB, 0xC7, 0xCD, 0xCF, 0x15, 0xDF, 0x4F, 0x07, 0x56, 0x6E, 0x31, 0xAD, 0x2B, 0x25, 0xF3, 0x3C, 0xBA, 0xF9, 0xAD, 0x0A, 0x50, 0x94, 0xF0, 0xF1, 0xBB, 0x91, 0xE6, 0xBE, 0x3F, 0xB8, 0xB2, 0xD4, 0xB5, 0xDB, 0x99, 0xEC, 0xE3, 0x68, 0xED, 0x9D, 0xB0, 0x80, 0xFA, 0x57, 0x36, 0x23, 0xCC, 0xAB, 0x85, 0xE7, 0xA8, 0xAF, 0x40, 0xF1, 0x27, 0x83, 0x1A, 0x0D, 0x15, 0x4A, 0x81, 0xBA, 0x2C, 0x93, 0xEA, 0x6B, 0x2F, 0xC1, 0xDE, 0x0C, 0x92, 0xF6, 0x56, 0x9A, 0x65, 0x2A, 0x8B, 0xD0, 0x1E, 0xF5, 0xF6, 0x54, 0x71, 0x14, 0xE1, 0x46, 0xE9, 0xEC, 0x7E, 0x73, 0x53, 0x07, 0x5A, 0xA5, 0x7B, 0x35, 0xAC, 0xB5, 0xF2, 0x24, 0xF0, 0xBE, 0x9E, 0xFE, 0x4E, 0x64, 0x4C, 0x2F, 0x51, 0xEF, 0x5A, 0x53, 0xDA, 0x60, 0xFF, 0x00, 0x0F, 0xE5, 0x5B, 0x11, 0xD9, 0x2D, 0xAC, 0x41, 0x55, 0x47, 0x15, 0x56, 0xED, 0x31, 0xD3, 0x9F, 0x7A, 0xF0, 0xAA, 0x54, 0x73, 0x97, 0x32, 0x3E, 0xAB, 0x0B, 0x87, 0x54, 0xA2, 0x91, 0xF8, 0xE7, 0xC9, 0x35, 0xB1, 0xF0, 0xFA, 0x2F, 0x37, 0xC7, 0xDA, 0x0A, 0x67, 0xEF, 0x6A, 0x56, 0xC3, 0x3F, 0xF6, 0xD5, 0x6B, 0x24, 0x0D, 0x95, 0xB5, 0xF0, 0xDC, 0xE7, 0xE2, 0x37, 0x87, 0x7F, 0xEC, 0x29, 0x6D, 0xFF, 0x00, 0xA3, 0x56, 0xBD, 0x6A, 0x9F, 0x0B, 0xF4, 0x3E, 0x4A, 0x8C, 0xBF, 0x79, 0x15, 0xE6, 0xBF, 0x34, 0x7F, 0x41, 0x7F, 0xB4, 0x35, 0x83, 0x7F, 0xC3, 0x37, 0xEB, 0x91, 0x75, 0x3F, 0xD9, 0xC0, 0x71, 0xFF, 0x00, 0x01, 0xAF, 0x94, 0xFE, 0x13, 0xFC, 0x06, 0xBE, 0xF1, 0xC5, 0x8C, 0x97, 0x8B, 0x0B, 0x34, 0x11, 0xF1, 0xEE, 0x7E, 0x95, 0xF6, 0x7F, 0xC4, 0x5B, 0x3B, 0x7D, 0x43, 0xE1, 0x95, 0xD4, 0x17, 0x45, 0x45, 0xBC, 0xB6, 0xEA, 0xB2, 0x13, 0xD3, 0x1C, 0x56, 0x27, 0x80, 0xF4, 0x0D, 0x2F, 0xC2, 0x56, 0x91, 0xDA, 0x69, 0xF3, 0x23, 0xC4, 0x46, 0xE1, 0xB7, 0xBD, 0x7E, 0x67, 0x95, 0xE3, 0xA5, 0x47, 0x0B, 0x38, 0xC3, 0x76, 0xFF, 0x00, 0x43, 0xF7, 0xDE, 0x24, 0xC0, 0xC2, 0xB6, 0x36, 0x9C, 0xEA, 0x6C, 0xA3, 0xFA, 0xB3, 0xCA, 0xF4, 0x1F, 0x86, 0xF1, 0xE8, 0xBA, 0x4A, 0xB4, 0x4A, 0x43, 0x46, 0x36, 0xBA, 0x37, 0x6F, 0x5A, 0xE6, 0x3C, 0x7F, 0xF0, 0xC6, 0xCF, 0x56, 0x85, 0xAE, 0x38, 0x49, 0x36, 0x1D, 0xB8, 0xE3, 0x35, 0xF4, 0x86, 0xAB, 0xE1, 0x1B, 0x5D, 0x5B, 0x4C, 0x99, 0xE1, 0xFB, 0xEC, 0xA7, 0x85, 0xEA, 0x4D, 0x7C, 0xEB, 0xF1, 0x82, 0x3D, 0x63, 0xC0, 0xB7, 0xFE, 0x4C, 0xF0, 0xC8, 0xD6, 0x72, 0x00, 0x52, 0x4C, 0x71, 0xCF, 0x6A, 0xEB, 0xC1, 0x62, 0x27, 0x3A, 0x9A, 0x3D, 0x4F, 0x23, 0x1D, 0x4E, 0x95, 0x2A, 0x3A, 0xAF, 0x74, 0xF2, 0x48, 0xE1, 0x9B, 0x4D, 0x91, 0x95, 0x64, 0x65, 0x65, 0x38, 0xAE, 0xBF, 0xC3, 0x1F, 0x10, 0xAE, 0xB4, 0xA8, 0xA3, 0x9A, 0x29, 0x0A, 0x5D, 0x5B, 0x10, 0xC8, 0xC0, 0xF3, 0x9A, 0xE7, 0x26, 0x43, 0x79, 0x70, 0xCF, 0xB7, 0xEF, 0x1D, 0xD4, 0xF8, 0xAC, 0x5A, 0x42, 0x38, 0xAF, 0xA9, 0xF6, 0x8D, 0x2B, 0x33, 0xE2, 0xAA, 0x61, 0xE3, 0x26, 0x9A, 0xE8, 0xEE, 0x8F, 0x5C, 0xB9, 0xF8, 0x81, 0x73, 0xE3, 0x2D, 0x22, 0x36, 0xBA, 0x9C, 0x34, 0x87, 0x9E, 0xBC, 0x66, 0xB0, 0x24, 0xBF, 0x9A, 0x65, 0xE1, 0x99, 0x42, 0x9E, 0x70, 0x6B, 0x97, 0xD2, 0x56, 0xEA, 0x1D, 0xAA, 0x3C, 0xC2, 0x14, 0xE4, 0x57, 0x49, 0x61, 0x61, 0x3C, 0xF0, 0x0F, 0xBD, 0x1E, 0x7D, 0x6B, 0x1A, 0x75, 0xD5, 0x15, 0xCB, 0x60, 0xC5, 0x60, 0x5E, 0x22, 0x5C, 0xFC, 0xDA, 0x8D, 0xBB, 0xD6, 0xA7, 0xBF, 0xB3, 0x4B, 0x59, 0x2E, 0x24, 0x92, 0x18, 0x4F, 0xCA, 0x85, 0xB2, 0x14, 0xD6, 0x74, 0xFA, 0x5C, 0x7B, 0xE2, 0x91, 0xB6, 0x9D, 0xA7, 0x70, 0x15, 0x7A, 0xE7, 0xC3, 0xCD, 0x62, 0xAE, 0xFB, 0x8B, 0x33, 0x1C, 0xE2, 0xA8, 0xDC, 0x33, 0x44, 0x76, 0xE7, 0xF5, 0xAE, 0xCC, 0x3C, 0xA1, 0x51, 0x7B, 0xBA, 0x1E, 0x1E, 0x2A, 0x9D, 0x5A, 0x12, 0xB4, 0xDD, 0xCF, 0x72, 0xF8, 0x33, 0xF1, 0xA3, 0x4B, 0xB0, 0xF0, 0xED, 0xAE, 0x8F, 0x70, 0xCD, 0x0C, 0xA3, 0x08, 0x17, 0x6F, 0xCA, 0xFD, 0xB8, 0xFA, 0xD7, 0xA7, 0xD8, 0xE9, 0x7E, 0x1E, 0xD5, 0xB4, 0xBB, 0x8B, 0x54, 0xB7, 0xB2, 0x91, 0x4E, 0x25, 0x9A, 0x3D, 0xA1, 0x58, 0x9E, 0xA0, 0x9C, 0x77, 0xF7, 0xAF, 0x8B, 0x35, 0x9D, 0x4E, 0x4D, 0x2A, 0xDD, 0x65, 0x8E, 0x4F, 0x29, 0x95, 0x81, 0xDD, 0x9E, 0x95, 0x0F, 0x85, 0xFC, 0x4F, 0xE2, 0x4D, 0x63, 0xC4, 0x0B, 0xA8, 0x47, 0x35, 0xC7, 0x96, 0xB2, 0x86, 0x63, 0xE6, 0x9C, 0xCB, 0xB7, 0x90, 0x0D, 0x7C, 0xEE, 0x63, 0x91, 0xC1, 0xD4, 0x73, 0x84, 0xF9, 0x7A, 0xFC, 0xCF, 0xB4, 0xC9, 0xB8, 0x82, 0xAC, 0xA8, 0xA8, 0x4E, 0x9A, 0x95, 0xB4, 0x5E, 0x87, 0xD1, 0x0D, 0xE1, 0xBB, 0xBF, 0x13, 0xF8, 0x86, 0xC5, 0xBC, 0x35, 0xA5, 0x95, 0xB7, 0xB2, 0xBD, 0x05, 0xA5, 0x91, 0x04, 0x51, 0x06, 0x50, 0x30, 0x32, 0x4E, 0x4E, 0x39, 0x04, 0x80, 0x7A, 0xF5, 0x3C, 0xE7, 0xD9, 0x3C, 0x2B, 0xE3, 0x5D, 0x6E, 0xCE, 0x49, 0x6C, 0x75, 0x0D, 0x12, 0x6B, 0x69, 0x21, 0x60, 0xA2, 0xE5, 0x65, 0x57, 0x86, 0x4F, 0x98, 0x0F, 0x5C, 0xE4, 0x82, 0x08, 0xEF, 0x5F, 0x39, 0xE8, 0x7F, 0xB4, 0x17, 0x8B, 0x34, 0xCB, 0x88, 0xD7, 0x74, 0x36, 0x76, 0xEC, 0x40, 0x2A, 0x6D, 0xF7, 0x6D, 0x03, 0x8E, 0x0B, 0x67, 0x9C, 0x8C, 0xE7, 0xD6, 0xBD, 0x4B, 0xFE, 0x1A, 0x1F, 0x4C, 0xD7, 0x7C, 0x13, 0x6F, 0x1E, 0xAB, 0x70, 0xB2, 0x5C, 0x4C, 0x42, 0xCA, 0xF1, 0x45, 0xB4, 0xC6, 0x47, 0x1B, 0xB8, 0xC6, 0x33, 0x80, 0x78, 0xE9, 0xFA, 0x57, 0x9B, 0x88, 0xC2, 0xD6, 0xAA, 0x94, 0x67, 0x15, 0x24, 0xBC, 0xDB, 0x6B, 0xCF, 0xCC, 0xFA, 0x2C, 0x1E, 0x22, 0x86, 0x1E, 0x4E, 0xA4, 0x66, 0xE2, 0xDE, 0xB6, 0xB2, 0x51, 0x7E, 0x4B, 0xAA, 0x3D, 0x6B, 0x56, 0xF0, 0x64, 0x3F, 0x11, 0x74, 0x7B, 0x9B, 0x1B, 0xEB, 0x78, 0xCC, 0x72, 0x00, 0x71, 0x32, 0x6E, 0xC8, 0xCE, 0x47, 0x1D, 0xB9, 0x51, 0xCF, 0xF8, 0x57, 0x97, 0x5B, 0x7C, 0x2D, 0xD6, 0xBE, 0x17, 0x78, 0x5A, 0x0F, 0xB3, 0xC3, 0x10, 0x91, 0x6E, 0x51, 0xA7, 0x31, 0x3A, 0xE3, 0x96, 0x04, 0xE4, 0x13, 0xDF, 0xF1, 0xC0, 0xAE, 0x61, 0xBE, 0x34, 0xEB, 0xFA, 0x7F, 0x89, 0x85, 0xD4, 0x3A, 0x95, 0xE7, 0xD9, 0x63, 0x2A, 0x89, 0x13, 0x9D, 0xB9, 0x8F, 0x8E, 0xA3, 0xBE, 0x71, 0xD5, 0xB3, 0x5D, 0xEF, 0xC0, 0xDF, 0x88, 0x37, 0x5E, 0x39, 0xD4, 0xB5, 0x4B, 0x3B, 0x86, 0xF3, 0xAF, 0x26, 0x1B, 0xAD, 0xE1, 0x9E, 0x62, 0xDE, 0x6A, 0x8D, 0xE4, 0xED, 0x04, 0x7D, 0xE1, 0x9E, 0x7D, 0x06, 0x31, 0xED, 0x95, 0x6C, 0xBF, 0x15, 0x85, 0xA7, 0xED, 0x25, 0x69, 0x43, 0x47, 0x64, 0x75, 0x61, 0xF3, 0xCC, 0x16, 0x2E, 0xB7, 0xB2, 0x82, 0x71, 0xA8, 0xEE, 0xAE, 0xED, 0xEB, 0xFF, 0x00, 0x0C, 0x3B, 0xC2, 0x42, 0xE3, 0xC7, 0x3A, 0xBD, 0xED, 0xC6, 0xA8, 0x2E, 0x05, 0x9E, 0x9E, 0xC1, 0x2E, 0x8F, 0xDE, 0xF3, 0x1C, 0x7F, 0xCB, 0x35, 0x0B, 0xF7, 0x98, 0xE4, 0x0E, 0x39, 0xE4, 0x77, 0x22, 0xBB, 0xED, 0x47, 0xC5, 0xF6, 0x5F, 0x0E, 0x8D, 0xD7, 0x8A, 0x6E, 0x0A, 0xFF, 0x00, 0xC4, 0xA9, 0x61, 0xB0, 0xB4, 0x1F, 0xC2, 0x92, 0x5C, 0x4C, 0x04, 0x85, 0x7B, 0x73, 0x1A, 0x4C, 0x7D, 0xD6, 0x31, 0xE9, 0x5C, 0x37, 0x8A, 0xBC, 0x47, 0xAB, 0x78, 0x72, 0x4C, 0x5E, 0x47, 0x6B, 0x6B, 0x1D, 0xB4, 0xFB, 0x6D, 0x52, 0x08, 0x99, 0x3F, 0x79, 0x23, 0x08, 0xD6, 0x43, 0x9C, 0x96, 0xDB, 0x23, 0x70, 0xC3, 0x82, 0xFF, 0x00, 0x27, 0xDE, 0x6C, 0x57, 0x0F, 0xFB, 0x5E, 0x78, 0x91, 0xF4, 0x8F, 0x87, 0x1F, 0x0D, 0xF4, 0x39, 0x2E, 0x15, 0xA6, 0xF1, 0x05, 0xDA, 0xEB, 0xF7, 0x45, 0x0F, 0x1F, 0x66, 0xF9, 0x62, 0xB6, 0x38, 0xF7, 0x49, 0x66, 0x38, 0xF5, 0x06, 0xBE, 0x6B, 0x1D, 0x4D, 0xE2, 0x6B, 0x46, 0x2D, 0xAB, 0x4B, 0x44, 0x93, 0xBD, 0x95, 0xAF, 0x2F, 0x9D, 0x95, 0x9F, 0xAA, 0x46, 0x38, 0xEA, 0x8E, 0x8D, 0x06, 0xEB, 0x5D, 0xC9, 0xE8, 0xAE, 0xBC, 0xD7, 0xE8, 0x7C, 0xEB, 0xFB, 0x50, 0xF8, 0xE6, 0x2F, 0x0C, 0x78, 0x46, 0xF2, 0xCD, 0xB7, 0x49, 0x22, 0xDA, 0x94, 0x2A, 0x39, 0xDD, 0x9F, 0xBC, 0x31, 0xEA, 0xD8, 0x40, 0x3D, 0xDA, 0xBD, 0x73, 0xE2, 0xE7, 0xC0, 0xF5, 0xD4, 0x3E, 0x09, 0x59, 0xF8, 0x53, 0xEC, 0xAD, 0x79, 0x71, 0xF0, 0xB6, 0x59, 0x5A, 0x79, 0xD9, 0xC6, 0x0A, 0xC3, 0x6F, 0x6C, 0xB7, 0x79, 0x1E, 0xB8, 0xB5, 0x89, 0x81, 0xF4, 0x62, 0x4F, 0x7C, 0xF8, 0x45, 0xDE, 0x8D, 0x71, 0xF1, 0x4B, 0xF6, 0x84, 0xF0, 0xBD, 0xF6, 0xAF, 0xA6, 0xEA, 0x70, 0x78, 0x46, 0x3D, 0x7E, 0xD2, 0xF7, 0x52, 0xB9, 0x96, 0xDC, 0xC7, 0x6F, 0xF6, 0x58, 0xEE, 0x09, 0x45, 0x69, 0x1F, 0x6C, 0x61, 0x25, 0x92, 0x16, 0x8C, 0x12, 0xC0, 0x13, 0x1B, 0xFF, 0x00, 0x75, 0xB1, 0xF6, 0x1F, 0x86, 0x3E, 0x2D, 0xE9, 0x1F, 0x12, 0x53, 0xE3, 0xCE, 0x85, 0x67, 0xBA, 0x4D, 0x42, 0x3D, 0x1B, 0x5B, 0xD5, 0x2F, 0x7E, 0xD1, 0x67, 0xF6, 0x59, 0xE2, 0x91, 0xCC, 0x0B, 0x84, 0x06, 0x46, 0xF3, 0x22, 0x31, 0xDC, 0xA7, 0xCE, 0x44, 0x6C, 0x44, 0x6A, 0xC5, 0x71, 0x22, 0xD7, 0xA7, 0x9B, 0x4B, 0xEA, 0xD4, 0xA8, 0xA8, 0x7D, 0x94, 0xE4, 0xED, 0xD1, 0xB7, 0x14, 0xAF, 0xF8, 0xFD, 0xE7, 0xCE, 0xE4, 0xA9, 0x62, 0x2A, 0x57, 0xAD, 0x5A, 0x3E, 0xEC, 0x9F, 0x2A, 0xBF, 0x65, 0x7D, 0xBE, 0x6F, 0x7F, 0x23, 0xE7, 0x2B, 0x48, 0x57, 0x51, 0xF1, 0x5C, 0x1A, 0x0D, 0xC3, 0x2A, 0xC9, 0x0E, 0x92, 0xDA, 0x5B, 0x1F, 0xEE, 0x18, 0x66, 0x78, 0x3F, 0xF1, 0xE6, 0x7B, 0x46, 0xFF, 0x00, 0x81, 0x29, 0xAE, 0x32, 0x4D, 0x27, 0xFB, 0x2B, 0x51, 0xFB, 0x1C, 0xDF, 0xF1, 0xF8, 0xCC, 0x63, 0x48, 0x47, 0x32, 0x48, 0xDE, 0x81, 0x7A, 0x93, 0x9E, 0xC2, 0xBA, 0x1F, 0x8B, 0x77, 0x16, 0x16, 0xBE, 0x2D, 0xBE, 0xD5, 0xAE, 0x2C, 0xEE, 0x2E, 0x9F, 0x56, 0xD0, 0x65, 0xBB, 0x88, 0x7D, 0xA8, 0xDB, 0xD9, 0x80, 0x86, 0x13, 0x3F, 0xDA, 0x0A, 0xA9, 0x73, 0x83, 0x14, 0x38, 0x08, 0xF1, 0xB1, 0x08, 0xCA, 0x09, 0x2D, 0xF2, 0xF8, 0xF5, 0xCF, 0xED, 0x3F, 0x7D, 0xFB, 0x48, 0xF8, 0xE6, 0x6D, 0x3E, 0xDE, 0xED, 0x74, 0x9B, 0x0F, 0x07, 0xD9, 0x5B, 0xC7, 0xA8, 0x8D, 0x1A, 0x13, 0x63, 0x06, 0xAF, 0x6F, 0x7F, 0x0C, 0x73, 0xDB, 0xDC, 0x2C, 0x91, 0x4A, 0xB7, 0x57, 0x11, 0xBA, 0xC6, 0x92, 0x6F, 0x9D, 0xDD, 0x80, 0x90, 0x6E, 0x4F, 0x9B, 0x70, 0xF5, 0xF2, 0xC4, 0xDE, 0xAB, 0x6B, 0x2B, 0xF9, 0x7C, 0x8D, 0xAA, 0x62, 0x9C, 0x17, 0xD5, 0xDE, 0xF7, 0x76, 0xFE, 0xBE, 0x47, 0x6D, 0xAB, 0xF8, 0x1D, 0x3C, 0x1E, 0xEB, 0xA7, 0xEA, 0x77, 0x5A, 0x5F, 0x87, 0xE6, 0x62, 0x4A, 0x5A, 0x5D, 0xDC, 0x19, 0x2F, 0x5B, 0x39, 0x3F, 0xF1, 0xE9, 0x08, 0x92, 0xE7, 0xF1, 0x31, 0x60, 0x0E, 0xA4, 0x0A, 0xF1, 0x3F, 0x19, 0x6A, 0x8B, 0x2F, 0x8B, 0xAE, 0x59, 0x56, 0x55, 0xB1, 0xD3, 0x21, 0xFB, 0x41, 0xB8, 0x78, 0xFC, 0xBF, 0x34, 0x32, 0xB2, 0xC4, 0xBB, 0x09, 0x2C, 0x09, 0x57, 0x76, 0x39, 0xC1, 0xE1, 0x41, 0x00, 0x82, 0x2B, 0xB6, 0xF1, 0x5E, 0xA5, 0xE1, 0xFF, 0x00, 0x87, 0xDE, 0x19, 0xF3, 0x6D, 0xD6, 0xC5, 0x6D, 0xEE, 0xF8, 0x82, 0x1B, 0x3D, 0x88, 0xB7, 0xED, 0xD3, 0xE6, 0x09, 0x85, 0x93, 0x9C, 0x65, 0x9B, 0x38, 0xCF, 0x27, 0x9A, 0xF1, 0x95, 0xF1, 0x0D, 0xD7, 0xC5, 0x0B, 0xE6, 0xB5, 0x86, 0x36, 0x6D, 0x29, 0x5C, 0xCB, 0x7D, 0xA8, 0x1F, 0x92, 0x19, 0x5B, 0x8C, 0xAC, 0x47, 0x82, 0xDC, 0x61, 0x54, 0x8E, 0x00, 0xF9, 0x8F, 0x51, 0xBF, 0xEA, 0x30, 0x74, 0xD4, 0x9A, 0xB9, 0xF3, 0xF9, 0x96, 0x25, 0xD2, 0x83, 0x77, 0xD7, 0xB7, 0xFC, 0x12, 0xAF, 0xC3, 0x9D, 0x0F, 0x53, 0xD7, 0x2E, 0x6C, 0xAE, 0xB4, 0x96, 0xBB, 0x6D, 0x63, 0x59, 0xD7, 0xE0, 0x16, 0x30, 0x5A, 0xCE, 0x20, 0x9A, 0xE2, 0x56, 0x31, 0xAA, 0xC7, 0x1C, 0xB9, 0x52, 0xAC, 0x61, 0x43, 0xB5, 0xB7, 0xA8, 0x05, 0xCE, 0x49, 0x07, 0x23, 0xE8, 0x4F, 0xDA, 0x9F, 0xF6, 0x34, 0xD1, 0xBE, 0x1C, 0x41, 0xA2, 0xF8, 0x8F, 0xC2, 0xA9, 0x75, 0x75, 0x61, 0xA9, 0x69, 0xBF, 0x69, 0x59, 0x2E, 0x23, 0x29, 0x30, 0x74, 0x67, 0xF3, 0x77, 0xA1, 0x00, 0xAC, 0xC1, 0x4E, 0xE7, 0x0C, 0x03, 0x28, 0x5D, 0xA7, 0x04, 0x11, 0x5E, 0x47, 0xFB, 0x34, 0xDC, 0x49, 0x6D, 0xF1, 0xD7, 0xC1, 0xB2, 0x88, 0xD5, 0x74, 0xDF, 0x0C, 0xDD, 0xC1, 0x77, 0x0A, 0xA8, 0xC2, 0xBC, 0xAF, 0x75, 0x12, 0xC7, 0xF8, 0x79, 0x63, 0x81, 0xD8, 0x73, 0xDC, 0x57, 0xE9, 0x25, 0x95, 0xE9, 0xF8, 0xD9, 0xE0, 0x3D, 0x55, 0x67, 0xB4, 0x8F, 0xCF, 0xF0, 0xC5, 0xCC, 0x7A, 0xA4, 0x4A, 0x57, 0x3B, 0xED, 0xE6, 0xC4, 0x13, 0xF1, 0xDF, 0x0C, 0xB6, 0xF9, 0x1D, 0x36, 0xBB, 0x57, 0x36, 0x75, 0x8F, 0xC4, 0xE1, 0x65, 0x0C, 0x4D, 0x3F, 0x82, 0x2D, 0x73, 0x2F, 0x57, 0x6F, 0xCE, 0xC7, 0x9B, 0x94, 0xE0, 0xF0, 0x78, 0xCA, 0x15, 0x28, 0x54, 0x7E, 0xFC, 0xB6, 0x7F, 0x2B, 0x9F, 0x94, 0x3A, 0xBD, 0xDA, 0xE9, 0x57, 0x56, 0xD2, 0x37, 0xCB, 0x6F, 0x2C, 0xA6, 0x27, 0xCF, 0xF0, 0xE4, 0x1C, 0x7E, 0x47, 0x8F, 0xC6, 0xBE, 0xAA, 0xFD, 0x9A, 0x7E, 0x25, 0xDC, 0x78, 0xF3, 0xE1, 0x7D, 0xBD, 0x8D, 0xD5, 0xD4, 0x93, 0x5D, 0x78, 0x64, 0x8D, 0x2D, 0x83, 0xBE, 0x4F, 0x92, 0xAA, 0x1A, 0x03, 0xF4, 0xF2, 0x8A, 0xAE, 0x7B, 0x98, 0xDA, 0xBC, 0x7F, 0xF6, 0xB5, 0xFD, 0x9F, 0x5B, 0xC0, 0x1E, 0x37, 0xBC, 0xD1, 0xEC, 0xD5, 0xBE, 0xC3, 0x7C, 0xEB, 0x7F, 0xA6, 0x39, 0x3C, 0x34, 0x25, 0xB6, 0xB2, 0x67, 0xFB, 0xD1, 0xBA, 0xB2, 0x9E, 0xF8, 0xD8, 0x7F, 0x8A, 0xB2, 0x7F, 0x63, 0xCF, 0x1A, 0xCD, 0xE0, 0xEF, 0x8F, 0x3F, 0xD8, 0x37, 0xEC, 0xD0, 0xC7, 0xE2, 0x0B, 0x63, 0xA7, 0x90, 0xDF, 0xF3, 0xF3, 0x10, 0x69, 0x21, 0x27, 0xDF, 0x68, 0x95, 0x07, 0xA9, 0x75, 0xAF, 0xAB, 0xA3, 0x5A, 0x96, 0x26, 0x84, 0x6B, 0xD3, 0xD5, 0x6F, 0xFD, 0x7E, 0x47, 0xC2, 0xC6, 0x9D, 0x6C, 0x16, 0x39, 0xE1, 0x6A, 0xE9, 0xAD, 0x9F, 0x6B, 0xF4, 0xFF, 0x00, 0x81, 0xE4, 0x7D, 0x6C, 0x27, 0x64, 0x93, 0x3B, 0xBA, 0x1A, 0xDE, 0xD1, 0xB5, 0xE6, 0x9E, 0x1F, 0x2F, 0x71, 0xF9, 0x46, 0x7A, 0xF6, 0xAD, 0x3B, 0x9F, 0x83, 0x9A, 0x95, 0xDE, 0x83, 0xA8, 0x6A, 0xFF, 0x00, 0x65, 0xFE, 0xCF, 0x86, 0x16, 0xDD, 0x15, 0xB3, 0x93, 0xBC, 0xAE, 0x79, 0xC6, 0x79, 0xE3, 0xD4, 0xF5, 0xAC, 0x6F, 0x0D, 0xE9, 0x52, 0x2D, 0xC3, 0x33, 0x29, 0xC0, 0x1D, 0xC5, 0x70, 0xD4, 0xAF, 0x42, 0xAC, 0x1B, 0x8B, 0x4E, 0xDF, 0x99, 0xF5, 0x54, 0x70, 0xB8, 0x9A, 0x35, 0x22, 0xA7, 0x16, 0xB9, 0xBF, 0x22, 0xFD, 0xDC, 0xED, 0x27, 0x46, 0x3E, 0xB5, 0x49, 0x91, 0x98, 0x72, 0xA4, 0xD6, 0xD4, 0x96, 0x38, 0xA8, 0x5A, 0xC1, 0x47, 0xFF, 0x00, 0xAA, 0xB8, 0x15, 0x44, 0xB6, 0x3D, 0x6F, 0x63, 0x27, 0xB9, 0x91, 0xE4, 0x31, 0xEB, 0x91, 0xDB, 0x9A, 0x55, 0x87, 0x19, 0xFA, 0x7E, 0x75, 0xA7, 0x25, 0xA6, 0xDE, 0xDF, 0xA6, 0x2A, 0x29, 0x6D, 0x98, 0x03, 0xF2, 0xD2, 0x73, 0x3A, 0xA9, 0xE1, 0xD9, 0x97, 0x79, 0x60, 0x93, 0x8D, 0xAF, 0xF3, 0x2E, 0x31, 0xF5, 0xAA, 0x6D, 0x1C, 0x76, 0x68, 0x15, 0x36, 0x85, 0xF4, 0xAD, 0x4B, 0xB4, 0xF2, 0xA1, 0x63, 0xD8, 0x57, 0x2F, 0xAA, 0x6A, 0xAC, 0xD3, 0x10, 0xBD, 0x18, 0x56, 0x94, 0xE2, 0xE7, 0xA2, 0x0A, 0xD2, 0x8D, 0x1D, 0x5E, 0xE4, 0x97, 0x97, 0xEA, 0xAC, 0x57, 0x3F, 0x85, 0x53, 0x9A, 0x7F, 0x30, 0x76, 0xDD, 0xDA, 0xA8, 0x4A, 0xCF, 0x29, 0xFE, 0xF1, 0xAD, 0x1D, 0x1A, 0xC5, 0xDE, 0x74, 0x69, 0x17, 0xE5, 0xEA, 0x2A, 0xAB, 0x45, 0x53, 0x8D, 0xD9, 0x58, 0x3A, 0x8E, 0xB4, 0xF9, 0x52, 0x3F, 0x1C, 0xCB, 0x66, 0xB6, 0x3E, 0x1D, 0xE7, 0xFE, 0x16, 0x0F, 0x87, 0xFF, 0x00, 0xEC, 0x27, 0x6D, 0x8F, 0xFB, 0xFA, 0xB5, 0x8F, 0xBB, 0xDE, 0xB7, 0x3E, 0x18, 0xB0, 0x5F, 0x89, 0x7E, 0x1D, 0x2D, 0xD3, 0xFB, 0x52, 0xD7, 0x3F, 0xF7, 0xF5, 0x6B, 0xD5, 0xA9, 0xF0, 0x3F, 0x4F, 0xD0, 0xF8, 0xBA, 0x3F, 0xC5, 0x8F, 0xAA, 0xFC, 0xCF, 0xE8, 0x7B, 0xE3, 0x38, 0x29, 0xF0, 0x3B, 0x57, 0x63, 0xC7, 0xFA, 0x08, 0xC6, 0x3A, 0x8E, 0x05, 0x7C, 0xCB, 0xE1, 0x3F, 0x1D, 0xEA, 0x5A, 0x24, 0x90, 0xB5, 0xBD, 0xC4, 0xBB, 0x54, 0xF2, 0xA4, 0xF0, 0x6B, 0xEA, 0x7F, 0x8A, 0xD6, 0xEB, 0x77, 0xF0, 0x9B, 0x52, 0x8D, 0x86, 0xE4, 0x7B, 0x4F, 0xE8, 0x2B, 0xE6, 0x78, 0xBC, 0x3F, 0x1C, 0x6B, 0xC0, 0xDB, 0xF4, 0xAF, 0x84, 0xE1, 0xA9, 0x43, 0xD8, 0x4E, 0x33, 0x57, 0x57, 0xFD, 0x0F, 0xD9, 0x78, 0xFA, 0x94, 0xDE, 0x2A, 0x94, 0xE9, 0xB6, 0x9A, 0x8F, 0xEA, 0xCF, 0x5B, 0xF0, 0x1F, 0xC7, 0xFB, 0x24, 0xB3, 0x66, 0xBB, 0x3E, 0x4C, 0xC4, 0x74, 0xC7, 0x06, 0xBA, 0x6B, 0xFF, 0x00, 0x15, 0x68, 0x9F, 0x16, 0xFC, 0x1F, 0x7D, 0x6E, 0xF0, 0xC1, 0x33, 0xA2, 0xE0, 0x23, 0x7A, 0xFB, 0x57, 0x82, 0xDB, 0xE8, 0x8A, 0xFB, 0x97, 0xF2, 0xC5, 0x49, 0xA5, 0xC9, 0x3E, 0x87, 0xA8, 0xAB, 0xC7, 0x23, 0x46, 0xAA, 0x72, 0x70, 0x71, 0x9A, 0xEC, 0xC4, 0x65, 0x38, 0x79, 0xDE, 0x74, 0x9D, 0xA5, 0xB9, 0xF3, 0xD8, 0x5C, 0xF3, 0x19, 0x4E, 0xD4, 0xEB, 0xC5, 0x38, 0xBD, 0x1F, 0x72, 0x8D, 0xD7, 0x81, 0x2D, 0x6D, 0x35, 0x59, 0x55, 0x63, 0xF2, 0xD5, 0x18, 0x80, 0xA7, 0xB5, 0x4D, 0x17, 0x86, 0xA1, 0x8C, 0xFC, 0xAA, 0xB5, 0xEB, 0x97, 0x3F, 0x0E, 0xEC, 0x7C, 0x4D, 0xE0, 0x51, 0xA9, 0x59, 0x7C, 0xD7, 0x92, 0x21, 0x72, 0x33, 0xC9, 0x35, 0xE7, 0x37, 0x36, 0xF2, 0x58, 0x4C, 0xC9, 0x32, 0xB4, 0x72, 0x2E, 0x41, 0x53, 0x53, 0x47, 0x15, 0xED, 0x55, 0x96, 0xEB, 0x43, 0x6C, 0x46, 0x16, 0x54, 0x9A, 0x6F, 0x67, 0xAA, 0x65, 0x38, 0xF4, 0xD8, 0xED, 0xFF, 0x00, 0x85, 0x78, 0xA6, 0xDC, 0x5F, 0x2C, 0x4B, 0xB5, 0x48, 0x15, 0x5F, 0x52, 0xD5, 0xB1, 0x9E, 0x6B, 0x9D, 0xD4, 0x35, 0x62, 0x7B, 0xF7, 0xED, 0x5B, 0xC6, 0x9D, 0xF7, 0x39, 0x65, 0x3B, 0x17, 0x35, 0x9D, 0x79, 0x76, 0xB7, 0x27, 0xAD, 0x73, 0xE9, 0xAF, 0xA8, 0xBA, 0x3E, 0x67, 0xFA, 0xBE, 0xE7, 0xD2, 0xBB, 0x5F, 0x08, 0xF8, 0x4E, 0xD7, 0x5F, 0xB4, 0x4F, 0x38, 0x6E, 0x63, 0xC9, 0x23, 0xB5, 0x73, 0xBF, 0x18, 0x3C, 0x1F, 0x67, 0xA6, 0xE9, 0xC6, 0x1B, 0x1F, 0x96, 0x53, 0xD5, 0x97, 0xA9, 0xA5, 0x4B, 0x19, 0x18, 0x54, 0xE4, 0x5B, 0x95, 0x5F, 0x2B, 0x9D, 0x6A, 0x5E, 0xD1, 0xEC, 0x73, 0x5E, 0x23, 0x68, 0xFC, 0x5D, 0x14, 0x36, 0xB6, 0xAC, 0xCD, 0xF3, 0x86, 0x66, 0xFE, 0xF6, 0x2B, 0xD4, 0x7E, 0x10, 0x68, 0x50, 0xDB, 0x08, 0x61, 0x95, 0x70, 0x17, 0x8E, 0x06, 0x72, 0x7D, 0x6B, 0xCE, 0xFC, 0x11, 0xA2, 0xC1, 0xA4, 0x69, 0x16, 0x73, 0x27, 0xDA, 0x3E, 0xD9, 0xB5, 0xBE, 0xD2, 0x25, 0xC1, 0x8F, 0x3B, 0x8E, 0xDD, 0x98, 0xE7, 0xEE, 0xE3, 0x39, 0xEF, 0x9E, 0xD5, 0xD9, 0x78, 0x7B, 0xC5, 0xB7, 0x1A, 0x04, 0xDB, 0x95, 0x16, 0x4C, 0x30, 0x63, 0x93, 0x8C, 0x0E, 0x69, 0x63, 0x39, 0xEA, 0xA6, 0x8F, 0x43, 0x28, 0xA3, 0x4B, 0x0E, 0xD4, 0xAD, 0x63, 0xD3, 0xFC, 0x51, 0xE0, 0xF4, 0x3A, 0x63, 0x3A, 0x98, 0xE4, 0x8F, 0xCB, 0x25, 0xB7, 0x76, 0x04, 0xF6, 0xAF, 0x51, 0xF8, 0x47, 0xF0, 0x97, 0xC0, 0xBE, 0x11, 0xF8, 0x4F, 0x1B, 0xEB, 0x93, 0xE9, 0xBA, 0x85, 0xF6, 0xA2, 0x8B, 0x75, 0x37, 0x9C, 0xFF, 0x00, 0x2B, 0x28, 0x3F, 0x2E, 0x01, 0x3D, 0x30, 0x47, 0x6E, 0xBE, 0xB8, 0x15, 0xE2, 0x8D, 0xF1, 0x51, 0x75, 0xDB, 0x28, 0xF4, 0xFB, 0x3B, 0x4B, 0xAB, 0x8D, 0x42, 0xF9, 0xE3, 0xB7, 0x82, 0x20, 0xA3, 0x32, 0x48, 0xE4, 0x2A, 0xA8, 0xE7, 0xA9, 0x62, 0x00, 0xFA, 0xD7, 0x3B, 0xE3, 0xFD, 0x72, 0xD7, 0xE0, 0xD5, 0xCE, 0x8B, 0x6F, 0xAF, 0x5E, 0x58, 0xFF, 0x00, 0x6A, 0xEA, 0x3A, 0x8C, 0x76, 0xD3, 0x7F, 0x67, 0x6B, 0x1A, 0x76, 0xA2, 0xBA, 0x3C, 0x23, 0x6F, 0x9B, 0xE7, 0x43, 0x15, 0xC1, 0x98, 0xDC, 0x05, 0x7D, 0xEB, 0x02, 0x29, 0x24, 0x21, 0x07, 0x05, 0xC1, 0x5F, 0x32, 0x54, 0x6F, 0x4F, 0x92, 0xA4, 0x9C, 0x55, 0xFA, 0x6A, 0xDF, 0xDC, 0x7A, 0x58, 0x8C, 0x74, 0x69, 0x55, 0xE7, 0x8C, 0x54, 0x9B, 0x5D, 0x59, 0xF4, 0xDF, 0xED, 0x07, 0xFB, 0x3C, 0xC3, 0xAB, 0x5A, 0x47, 0xE2, 0x4F, 0x0B, 0x2A, 0x4B, 0x1A, 0xA0, 0x4B, 0xBB, 0x75, 0x3D, 0x00, 0x00, 0x07, 0x50, 0x07, 0x5E, 0x0E, 0xE0, 0x7B, 0x9C, 0xFA, 0xD7, 0x91, 0x78, 0x2F, 0xC5, 0xB7, 0x9E, 0x05, 0xF1, 0x1E, 0x97, 0xAA, 0x2D, 0xB5, 0xD7, 0xD9, 0x2F, 0x2E, 0x64, 0xB7, 0xF3, 0x9B, 0x31, 0x24, 0xCC, 0xB1, 0x16, 0x91, 0x4C, 0xB9, 0x0B, 0x18, 0x55, 0xCB, 0x17, 0x24, 0x08, 0xC1, 0x2C, 0x49, 0xC5, 0x74, 0x5F, 0x0E, 0xFC, 0x51, 0xF1, 0x2B, 0xC4, 0x1F, 0x0E, 0xB5, 0xE8, 0x7C, 0x27, 0xF0, 0xF7, 0xC4, 0x5A, 0xC6, 0x83, 0x75, 0x22, 0xC5, 0x61, 0x6F, 0xA8, 0x2A, 0xF8, 0x6E, 0x39, 0x2D, 0xD1, 0xD9, 0x5A, 0x74, 0x4B, 0x99, 0x5A, 0x76, 0x92, 0x74, 0x65, 0x2C, 0x82, 0x48, 0xB6, 0xB2, 0x33, 0x23, 0xE1, 0xD7, 0x6D, 0x0B, 0xBF, 0x82, 0xBE, 0x2E, 0xD3, 0x7C, 0x2B, 0xAE, 0xF8, 0xBF, 0xC7, 0x3A, 0x2E, 0x8B, 0xA5, 0xF8, 0x97, 0x4E, 0xF0, 0x85, 0xE3, 0x42, 0x9A, 0x63, 0x35, 0xBF, 0xD9, 0xD2, 0x5B, 0xD5, 0x32, 0x2C, 0xC6, 0x09, 0x15, 0x65, 0xB8, 0xDB, 0x33, 0x31, 0x72, 0x5C, 0x03, 0xC6, 0xE6, 0xEA, 0x38, 0xFF, 0x00, 0xB5, 0x2A, 0xC7, 0x0F, 0x2C, 0x3C, 0xAD, 0x6D, 0x93, 0x76, 0xBD, 0x9E, 0x9B, 0x5E, 0xF7, 0xBB, 0xEB, 0xB7, 0x99, 0xC5, 0x88, 0xC1, 0xC6, 0x78, 0x98, 0xE3, 0x29, 0xC5, 0xC7, 0xAB, 0xB6, 0xD7, 0xF2, 0x7D, 0x99, 0xF2, 0xA7, 0xC7, 0x6F, 0xDB, 0x07, 0x58, 0xD5, 0x7C, 0x4B, 0xA5, 0xDD, 0x5D, 0x6B, 0x77, 0x53, 0x45, 0x71, 0x79, 0x37, 0xD9, 0x6D, 0x74, 0x3B, 0xBB, 0xBB, 0xC8, 0x14, 0x29, 0xF2, 0x65, 0x71, 0xE5, 0xA2, 0x89, 0x60, 0x3B, 0x6E, 0x7C, 0xA5, 0x69, 0x31, 0x89, 0xC9, 0x62, 0x1F, 0x26, 0xB9, 0xFF, 0x00, 0x86, 0x7F, 0xB4, 0xF7, 0xC6, 0xEF, 0x88, 0x7E, 0x39, 0xD2, 0xB5, 0xCD, 0x4A, 0xCE, 0x3B, 0xC6, 0x6B, 0x97, 0x82, 0x01, 0xA9, 0x04, 0x94, 0xC8, 0x49, 0x73, 0x08, 0x96, 0x18, 0x8A, 0xC3, 0x31, 0x49, 0x4A, 0x49, 0xB2, 0x57, 0x55, 0x38, 0x6D, 0xD8, 0x27, 0x22, 0x64, 0xB2, 0xB5, 0xB2, 0x9E, 0x3B, 0x5B, 0x5B, 0x7B, 0x7B, 0x78, 0x64, 0x62, 0xD2, 0xC8, 0x10, 0x71, 0x8E, 0x73, 0xEE, 0xC7, 0x39, 0xC9, 0xF7, 0xAF, 0x64, 0xF8, 0x4F, 0xAA, 0xD8, 0x68, 0xFA, 0x7D, 0xE6, 0xB9, 0x30, 0x31, 0xDA, 0x69, 0x3A, 0x7B, 0xCA, 0xEE, 0xC7, 0x84, 0x8F, 0x24, 0xE4, 0x7B, 0x91, 0x13, 0x73, 0xDC, 0x11, 0xEB, 0x5B, 0x54, 0xA7, 0x46, 0x95, 0x1B, 0x2A, 0x6A, 0x4F, 0x65, 0xA7, 0x7F, 0xEB, 0xE6, 0x5E, 0x22, 0x13, 0xBF, 0x3C, 0xEA, 0x38, 0xAD, 0xFF, 0x00, 0xAB, 0x9C, 0x9F, 0xC2, 0xDF, 0x89, 0xDE, 0x30, 0xD5, 0x3E, 0x1E, 0xDC, 0x78, 0x6F, 0xC7, 0xD7, 0x5F, 0xDB, 0xB0, 0xE8, 0xF2, 0xCB, 0x6D, 0x7F, 0xA4, 0x24, 0xF2, 0x49, 0xA7, 0xDC, 0x5A, 0x48, 0x5E, 0x33, 0x18, 0x8B, 0x3B, 0x54, 0xAA, 0x83, 0xFE, 0xAC, 0x1D, 0xBB, 0x13, 0x04, 0x90, 0x0D, 0x7D, 0x49, 0xFB, 0x17, 0x78, 0x02, 0x3F, 0x18, 0xFC, 0x40, 0xF8, 0x8D, 0x67, 0x67, 0x33, 0x6A, 0x57, 0x1A, 0x87, 0xC3, 0x7D, 0x47, 0x4C, 0x5B, 0x97, 0x1F, 0xE9, 0x13, 0x33, 0x3D, 0xB2, 0xC2, 0x1F, 0xA0, 0x2E, 0x23, 0x48, 0xD0, 0x81, 0x8E, 0x62, 0xCE, 0x5B, 0x7F, 0xCB, 0xF1, 0xCF, 0xC3, 0x5B, 0xBB, 0xD9, 0xF4, 0x5D, 0x53, 0xC5, 0x93, 0xAC, 0xB1, 0xDB, 0xDF, 0x5E, 0xFD, 0x9D, 0x46, 0xDF, 0x94, 0xB4, 0x65, 0x4C, 0xCD, 0xEE, 0xA1, 0xEE, 0x11, 0x01, 0xFF, 0x00, 0x61, 0xBD, 0x6B, 0xEB, 0x2F, 0xF8, 0x26, 0x8F, 0xC5, 0xDB, 0x5F, 0x09, 0x7E, 0xD2, 0x3F, 0xBF, 0xB8, 0x84, 0x41, 0xAA, 0x69, 0x32, 0xDA, 0xAE, 0xF7, 0x03, 0x7B, 0x99, 0xE0, 0x2A, 0xA3, 0xD4, 0xF0, 0xC7, 0x1E, 0x80, 0xD7, 0x0F, 0x12, 0x60, 0xED, 0x83, 0xAC, 0xE8, 0xAD, 0x52, 0xE9, 0xDD, 0x5A, 0xE7, 0x1E, 0x55, 0x8C, 0xAB, 0x3C, 0x15, 0x39, 0x56, 0xF8, 0x9A, 0xBA, 0xF4, 0x4D, 0xB8, 0xFE, 0x16, 0x3E, 0x32, 0xFD, 0xB8, 0x3C, 0x5D, 0xAA, 0x69, 0x1F, 0x0A, 0x75, 0x1B, 0x8D, 0x26, 0x69, 0x84, 0xDE, 0x1D, 0x6F, 0xED, 0x43, 0x14, 0x4F, 0xB5, 0x6F, 0xEC, 0x26, 0x5F, 0xF4, 0x88, 0x1B, 0xD5, 0x46, 0x0B, 0xE3, 0xA1, 0x24, 0x7A, 0x1A, 0xF9, 0x2F, 0xFE, 0x09, 0x97, 0xAE, 0x6A, 0x0D, 0xF1, 0xD7, 0x50, 0xB5, 0x37, 0x13, 0x5C, 0x58, 0xC7, 0xE1, 0xA7, 0x46, 0x8E, 0x46, 0x2C, 0xB1, 0x45, 0x1D, 0xDD, 0xBE, 0xCD, 0xB9, 0xE8, 0x03, 0x4A, 0xDE, 0xDF, 0xBC, 0x6F, 0x5A, 0xFA, 0x47, 0xFE, 0x0B, 0x43, 0xA2, 0xDD, 0x7C, 0x18, 0xF8, 0xDB, 0xAF, 0x78, 0x7F, 0x49, 0x91, 0x9E, 0xFF, 0x00, 0x45, 0xBD, 0xB3, 0xD4, 0xB4, 0xB5, 0x8D, 0x77, 0x7D, 0xA7, 0x4B, 0x95, 0xEE, 0xED, 0x24, 0x8C, 0xA7, 0x59, 0x01, 0x7B, 0xDB, 0x38, 0x0A, 0xE0, 0xE5, 0x84, 0xCB, 0xD5, 0x49, 0xA8, 0x7F, 0xE0, 0x9C, 0x3F, 0xB2, 0xCF, 0xFC, 0x2A, 0xBB, 0x0F, 0x1C, 0x45, 0xAD, 0x69, 0xB1, 0xD9, 0xF8, 0xC1, 0x3C, 0x05, 0xFD, 0xA3, 0x78, 0x26, 0x2C, 0x6E, 0xA0, 0x79, 0xAE, 0xD6, 0x64, 0xB5, 0x08, 0x4E, 0x23, 0x58, 0xA0, 0xB6, 0xB7, 0x67, 0xE3, 0x71, 0x92, 0xE9, 0xD5, 0x8E, 0x23, 0x51, 0x5E, 0xE6, 0x5B, 0x88, 0xA4, 0xB2, 0xC5, 0x57, 0xAC, 0xED, 0x6E, 0xFD, 0x2F, 0xF2, 0x57, 0x3C, 0x9C, 0x65, 0x39, 0xD4, 0xCD, 0x65, 0x28, 0x5F, 0x92, 0x37, 0x7E, 0x5A, 0xED, 0xFA, 0x69, 0xD9, 0x5C, 0xD5, 0xF8, 0xAB, 0xE1, 0x3D, 0x0E, 0xD3, 0x5B, 0xB8, 0xD5, 0x3F, 0xB3, 0x74, 0xF5, 0x9E, 0x65, 0x12, 0x4B, 0x27, 0x94, 0xBF, 0x3B, 0x0E, 0x01, 0x3D, 0xB3, 0xEF, 0x5E, 0x39, 0xE3, 0xBF, 0x18, 0x9D, 0x17, 0xE1, 0x2F, 0xDA, 0x2D, 0x43, 0x47, 0x26, 0xA5, 0xB6, 0xDE, 0xCC, 0x30, 0xDA, 0xF8, 0x6E, 0x15, 0x88, 0xEC, 0x4F, 0x0D, 0x8E, 0xC3, 0x68, 0xED, 0x5E, 0xAF, 0xF1, 0x17, 0x53, 0xFE, 0xD2, 0xB3, 0xB5, 0xF3, 0x0F, 0xEE, 0xE1, 0xB9, 0xDF, 0x30, 0xFE, 0xF2, 0xC6, 0x8F, 0x28, 0x07, 0xD8, 0xB2, 0x2F, 0xD6, 0xBE, 0x6E, 0xF8, 0xC7, 0x73, 0x6F, 0xE2, 0x2F, 0x03, 0xDA, 0xE9, 0xB7, 0x53, 0xCB, 0x6B, 0x67, 0xA5, 0xD9, 0xBD, 0xD5, 0xCB, 0xC2, 0xDB, 0x5E, 0x34, 0x8E, 0xCA, 0x46, 0x1B, 0x0F, 0x66, 0xDD, 0x16, 0x01, 0xF7, 0x1F, 0x43, 0xF4, 0x39, 0x6F, 0x24, 0x79, 0xA5, 0x2E, 0x87, 0x85, 0xC4, 0xFE, 0xDA, 0x73, 0xA5, 0x42, 0x0E, 0xCA, 0x4D, 0xAF, 0x9E, 0x9F, 0xE6, 0x7D, 0x31, 0x71, 0xF0, 0x13, 0x54, 0xF8, 0x1D, 0xF0, 0xD3, 0xC0, 0xBE, 0x28, 0xB7, 0x86, 0xE2, 0xEA, 0x7D, 0x61, 0xAD, 0x22, 0x9E, 0xD9, 0x54, 0xEF, 0x6B, 0x94, 0x97, 0xED, 0x68, 0x14, 0x63, 0x3B, 0x8C, 0x1B, 0xE2, 0x11, 0xFD, 0xE2, 0xD6, 0xE4, 0x0E, 0xA3, 0x3F, 0xA2, 0x5F, 0x07, 0xF4, 0x6B, 0x2F, 0x03, 0xF8, 0xF7, 0x49, 0xBF, 0x59, 0xD2, 0xF3, 0x44, 0xD6, 0x13, 0xFB, 0x3A, 0xED, 0x15, 0xB2, 0x97, 0x36, 0x77, 0x4B, 0xE5, 0x93, 0xBB, 0xFB, 0xA3, 0x72, 0x49, 0x9F, 0xF6, 0x05, 0x7E, 0x4B, 0xFE, 0xC6, 0x5F, 0xF0, 0x56, 0x58, 0xFF, 0x00, 0xE1, 0x49, 0x59, 0xFC, 0x33, 0xF8, 0xA7, 0xE6, 0xFD, 0xAB, 0x45, 0x96, 0x0D, 0x43, 0xC3, 0x5E, 0x2E, 0x12, 0x99, 0x25, 0x82, 0xF2, 0x09, 0xC5, 0xCC, 0x1F, 0x6C, 0xF3, 0x1B, 0x2D, 0x89, 0x06, 0xD6, 0x9D, 0x59, 0x49, 0x8D, 0x98, 0x30, 0x2C, 0x4B, 0x37, 0xEA, 0x3F, 0xC1, 0xFF, 0x00, 0x8F, 0x9F, 0x0D, 0xFE, 0x24, 0xCF, 0x71, 0xA1, 0xF8, 0x4F, 0x59, 0xD3, 0xAE, 0x26, 0xD0, 0x60, 0x81, 0xA7, 0xD2, 0xD4, 0x98, 0xE7, 0xD3, 0x23, 0x95, 0x77, 0x42, 0x86, 0x26, 0x00, 0xAA, 0x6D, 0x04, 0x2E, 0xD1, 0xB4, 0x6C, 0xDA, 0x31, 0xB7, 0x03, 0xE5, 0xB3, 0xA9, 0x57, 0xA9, 0x4E, 0x54, 0x2B, 0x2F, 0x8B, 0x99, 0x3F, 0x47, 0xB7, 0xDC, 0x7D, 0x7F, 0x0F, 0xE5, 0xB8, 0x4B, 0x3A, 0xB4, 0xB6, 0xB4, 0x7D, 0x53, 0x49, 0xA7, 0xF7, 0xEF, 0xE7, 0x73, 0xC8, 0x3F, 0x6E, 0x5F, 0x82, 0xB2, 0x59, 0x58, 0x6B, 0x9A, 0x5D, 0xFC, 0x0D, 0xFD, 0xA1, 0xE0, 0xFB, 0xF1, 0x7B, 0xA7, 0xDC, 0x6D, 0xC6, 0xE4, 0x7F, 0x92, 0x64, 0xFF, 0x00, 0x76, 0x55, 0x5F, 0x30, 0x0E, 0xE5, 0x73, 0xD8, 0x57, 0xC4, 0x3F, 0x17, 0xBC, 0x31, 0x7D, 0xA2, 0x78, 0xCA, 0xE3, 0x5C, 0xD1, 0xFF, 0x00, 0x71, 0xAA, 0x69, 0x76, 0xB6, 0xDA, 0xDE, 0x9F, 0x28, 0x1F, 0x76, 0xE2, 0x19, 0x63, 0x95, 0x4E, 0x3B, 0xE0, 0x9C, 0x7D, 0x06, 0x2B, 0xF5, 0xB3, 0xF6, 0xEE, 0xBD, 0xB4, 0xF1, 0x27, 0xC0, 0x5D, 0x07, 0xC6, 0x91, 0xC4, 0xB7, 0x11, 0x6B, 0x11, 0x5C, 0x78, 0x57, 0x5D, 0xD8, 0x7E, 0x68, 0xEF, 0x44, 0x26, 0x4B, 0x19, 0xDB, 0xD0, 0x06, 0x89, 0xD3, 0xE9, 0x76, 0xB9, 0xE2, 0xBF, 0x3A, 0x7E, 0x20, 0xE9, 0x3F, 0x64, 0x68, 0xE3, 0x90, 0x2F, 0xEF, 0x74, 0x95, 0x56, 0x38, 0xCF, 0xDC, 0x56, 0x62, 0x3F, 0xF1, 0xDF, 0xD2, 0xBA, 0xF8, 0x3F, 0x19, 0x3F, 0xAA, 0xB8, 0xCF, 0x74, 0xDA, 0x6B, 0xCD, 0x6F, 0xF7, 0xDA, 0xFF, 0x00, 0x33, 0xE3, 0xF8, 0xD3, 0x0D, 0x07, 0x8A, 0x85, 0x48, 0xEE, 0xF7, 0xF5, 0x4E, 0xDF, 0x85, 0xF4, 0xF2, 0x47, 0xDC, 0x1E, 0x1B, 0xF8, 0xB1, 0x61, 0xF1, 0xAF, 0xE0, 0xC6, 0x87, 0xE2, 0xAB, 0x1F, 0xDD, 0xD8, 0xF8, 0x8B, 0x4F, 0x8A, 0xF5, 0x22, 0x0D, 0x9F, 0x25, 0x9D, 0x7E, 0x68, 0x8F, 0xFB, 0x48, 0xFB, 0x90, 0xFB, 0xA9, 0xAE, 0x7E, 0x5D, 0x05, 0xF4, 0xFD, 0x8B, 0x24, 0x32, 0x45, 0xE6, 0xA0, 0x91, 0x32, 0x31, 0xB9, 0x48, 0xE0, 0xFD, 0x0F, 0x63, 0x5F, 0x2C, 0xFE, 0xC6, 0x5F, 0x17, 0xE4, 0xF8, 0x5F, 0xA2, 0x2F, 0x85, 0xB5, 0x3B, 0xB5, 0x8F, 0x41, 0xB9, 0xBC, 0x90, 0x58, 0x4F, 0x31, 0xFD, 0xD6, 0x97, 0x33, 0x3E, 0xE6, 0x56, 0xCF, 0x0B, 0x1C, 0x84, 0xEE, 0xCF, 0x45, 0x63, 0x93, 0xC3, 0x31, 0x1F, 0x59, 0x78, 0x6B, 0x47, 0x9A, 0xEE, 0x4B, 0xA8, 0xEF, 0xA4, 0x92, 0xD6, 0x34, 0x3E, 0x67, 0x9A, 0xCA, 0x71, 0xB4, 0xE3, 0x85, 0xF5, 0xAE, 0x89, 0xE1, 0xFE, 0xA8, 0xE5, 0x15, 0xF0, 0xF4, 0xF4, 0xE8, 0x7D, 0x1E, 0x13, 0x32, 0x59, 0x9C, 0x21, 0x52, 0xDE, 0xF5, 0xAC, 0xFD, 0x7A, 0xFC, 0x9E, 0xE8, 0xC9, 0x96, 0x28, 0xC4, 0xBB, 0x59, 0xBE, 0x6F, 0x4C, 0xD3, 0x26, 0xB2, 0xC9, 0xF5, 0x1E, 0xD5, 0x5B, 0xC7, 0xF7, 0x91, 0xE9, 0x77, 0xF1, 0x47, 0x66, 0xAB, 0x27, 0x9D, 0x9C, 0xB6, 0xFC, 0x9C, 0xF4, 0x19, 0xED, 0x5A, 0x36, 0x8D, 0x0D, 0x9E, 0x99, 0x07, 0xDB, 0x25, 0xDA, 0x40, 0xF9, 0xBC, 0xA3, 0x92, 0x7F, 0x1A, 0xD5, 0xB9, 0x72, 0x29, 0x2E, 0xA3, 0xA7, 0x24, 0xEA, 0xCA, 0x9F, 0xF2, 0xF5, 0xE8, 0x67, 0xC9, 0x6D, 0x92, 0x55, 0x79, 0xC5, 0x54, 0x9E, 0xD7, 0x69, 0x6C, 0xE0, 0x57, 0x42, 0x8D, 0x6B, 0x75, 0x68, 0xD2, 0x5B, 0xC3, 0xE5, 0x71, 0xC1, 0x27, 0x24, 0xFD, 0x6B, 0x8D, 0xF1, 0x25, 0xCD, 0xCD, 0xE5, 0xE9, 0x82, 0x15, 0xC2, 0xE7, 0xE6, 0x3E, 0xB4, 0x51, 0x94, 0xAA, 0x4B, 0x97, 0x6F, 0x53, 0xB3, 0x11, 0x4E, 0x34, 0x60, 0xA6, 0xF5, 0xBF, 0x61, 0xF3, 0x58, 0xFD, 0xBE, 0x22, 0xB1, 0xE5, 0xB7, 0x74, 0x35, 0x9A, 0xDF, 0x0E, 0x4E, 0xFD, 0xF2, 0x7E, 0x5E, 0xB5, 0xDB, 0xF8, 0x43, 0xC3, 0x9F, 0x66, 0xB5, 0x8E, 0x1D, 0xBB, 0xE6, 0x23, 0x20, 0x77, 0x39, 0xAE, 0xAE, 0xC7, 0xC0, 0xEB, 0x2A, 0x7E, 0xF1, 0x95, 0xA6, 0xFE, 0xE0, 0x3D, 0x2B, 0x1C, 0x46, 0x61, 0xF5, 0x7B, 0xAB, 0x9E, 0xA6, 0x0B, 0x21, 0x58, 0xB4, 0xA5, 0x28, 0x9E, 0x6B, 0xE1, 0xAF, 0x85, 0xB6, 0x7A, 0x82, 0xB1, 0x61, 0xCA, 0x9E, 0xE7, 0xAD, 0x6E, 0xCD, 0xE0, 0x38, 0x21, 0x55, 0x55, 0x50, 0x36, 0x2E, 0x2B, 0x5A, 0x0D, 0x3D, 0xB4, 0x0D, 0x46, 0x51, 0x2B, 0x7C, 0xAA, 0x7B, 0x77, 0xA9, 0x6C, 0x2E, 0xE6, 0xD4, 0xEF, 0xE4, 0x21, 0x3F, 0x72, 0x3A, 0x13, 0x5E, 0x2E, 0x2B, 0x11, 0x5A, 0x73, 0x73, 0x52, 0xD0, 0xFA, 0x4C, 0x2E, 0x5D, 0x42, 0x94, 0x14, 0x14, 0x75, 0xBE, 0xA7, 0xF3, 0xF7, 0xBB, 0x3F, 0xFE, 0xAA, 0xE8, 0x3E, 0x13, 0x44, 0xB7, 0x3F, 0x15, 0x7C, 0x31, 0x1B, 0x7D, 0xD6, 0xD5, 0xED, 0x41, 0x1F, 0xF6, 0xD5, 0x6B, 0x9F, 0xA9, 0xB4, 0xDD, 0x46, 0x6D, 0x1F, 0x52, 0xB7, 0xBB, 0xB6, 0x90, 0xC3, 0x71, 0x6B, 0x22, 0xCD, 0x13, 0xAF, 0x54, 0x75, 0x39, 0x07, 0xF0, 0x22, 0xBF, 0x48, 0x94, 0x6F, 0x16, 0x91, 0xFC, 0xF7, 0x4A, 0x5C, 0xB3, 0x52, 0x7D, 0x1A, 0x67, 0xF4, 0x95, 0xF1, 0x06, 0xD9, 0xEE, 0x3E, 0x1B, 0xDF, 0x43, 0x12, 0x34, 0x92, 0x35, 0xAE, 0xD5, 0x55, 0x19, 0x24, 0xE3, 0xD2, 0xBC, 0x01, 0x3C, 0x23, 0xAA, 0x8F, 0xF9, 0x86, 0xDE, 0x7E, 0x31, 0x1A, 0xFC, 0xAA, 0x1F, 0xF0, 0x53, 0xDF, 0x8E, 0x81, 0x42, 0xFF, 0x00, 0xC2, 0xC0, 0xD5, 0xB6, 0x81, 0x81, 0xF7, 0x3F, 0xC2, 0x9A, 0xBF, 0xF0, 0x53, 0xCF, 0x8E, 0x9F, 0xF4, 0x50, 0x35, 0x5F, 0xC9, 0x7F, 0xC2, 0xBE, 0x47, 0x01, 0x91, 0xE2, 0xF0, 0xD1, 0x71, 0x8B, 0x8B, 0xBF, 0xA9, 0xFA, 0x76, 0x71, 0xC6, 0x19, 0x6E, 0x61, 0x38, 0xD4, 0x9C, 0x67, 0x1B, 0x2B, 0x69, 0xCB, 0xFE, 0x67, 0xEA, 0xD4, 0x7E, 0x16, 0xD5, 0x50, 0xF1, 0xA7, 0x5E, 0xEE, 0xF6, 0x88, 0xD0, 0xFE, 0x0C, 0xD5, 0xA7, 0x1F, 0xF2, 0x0E, 0xBD, 0x07, 0xDE, 0x33, 0x5F, 0x94, 0xCB, 0xFF, 0x00, 0x05, 0x3A, 0xF8, 0xE8, 0x4F, 0xFC, 0x94, 0x2D, 0x5B, 0xF2, 0x5F, 0xF0, 0xA5, 0x3F, 0xF0, 0x53, 0x8F, 0x8E, 0x99, 0xFF, 0x00, 0x92, 0x85, 0xAB, 0x7E, 0x4B, 0xFE, 0x15, 0xD7, 0xFD, 0x9F, 0x8D, 0xBD, 0xFD, 0xDF, 0xBD, 0x9E, 0x4F, 0xF6, 0xD6, 0x52, 0xD5, 0x9F, 0xB4, 0xFB, 0xA3, 0xFE, 0x67, 0xEB, 0x87, 0x87, 0xE3, 0xF1, 0x17, 0x85, 0x82, 0x2C, 0x36, 0xB7, 0xCD, 0x0A, 0x9C, 0xF9, 0x66, 0x33, 0x8A, 0xCF, 0xF1, 0x8D, 0x96, 0xB1, 0xE2, 0x4B, 0xA5, 0x90, 0xE9, 0x37, 0x71, 0xB7, 0x4C, 0x88, 0x4F, 0x35, 0xF9, 0x3E, 0x7F, 0xE0, 0xA6, 0xDF, 0x1C, 0x88, 0xFF, 0x00, 0x92, 0x81, 0xAB, 0x7E, 0x4B, 0xFE, 0x14, 0x9F, 0xF0, 0xF3, 0x2F, 0x8E, 0x5F, 0xF4, 0x50, 0x75, 0x6F, 0xFC, 0x77, 0xFC, 0x2A, 0x23, 0x94, 0xE2, 0xB9, 0xF9, 0xED, 0x1B, 0xFC, 0xCD, 0x17, 0x10, 0x65, 0xAA, 0x1E, 0xCD, 0x7B, 0x4B, 0x76, 0xB4, 0x7F, 0xCC, 0xFD, 0x2F, 0xD5, 0x7C, 0x0D, 0xAE, 0x79, 0xCC, 0x83, 0x49, 0xBF, 0x6E, 0x71, 0x91, 0x09, 0x35, 0x9E, 0xDF, 0x0E, 0x35, 0xD7, 0x6F, 0xF9, 0x03, 0xEA, 0x3F, 0x84, 0x26, 0xBF, 0x37, 0xCF, 0xFC, 0x14, 0xC7, 0xE3, 0x96, 0x7F, 0xE4, 0xA1, 0x6A, 0xDF, 0xF8, 0xEF, 0xF8, 0x53, 0x4F, 0xFC, 0x14, 0xC7, 0xE3, 0x98, 0x1F, 0x2F, 0xC4, 0x4D, 0x65, 0x7E, 0x9B, 0x7F, 0xC2, 0xB7, 0x8E, 0x07, 0x1B, 0xB7, 0xBB, 0xF7, 0xB3, 0x3F, 0xED, 0xAC, 0xA6, 0xF7, 0xFD, 0xE7, 0xDD, 0x1F, 0xF3, 0x3F, 0x49, 0xAE, 0x34, 0xAF, 0x18, 0x78, 0x73, 0x49, 0x68, 0x2C, 0x34, 0x1D, 0x62, 0x49, 0x24, 0xE0, 0x32, 0x59, 0x48, 0xFB, 0x3F, 0x21, 0x59, 0xDA, 0x57, 0xC3, 0xBF, 0x1A, 0xEA, 0xF3, 0xAC, 0xBA, 0x86, 0x8B, 0xE2, 0x19, 0x00, 0xE4, 0x06, 0xD3, 0xE6, 0xFF, 0x00, 0xE2, 0x6B, 0xF3, 0xA9, 0xBF, 0xE0, 0xA7, 0x7F, 0x1F, 0x13, 0x84, 0xF8, 0xA1, 0xE2, 0x28, 0xFF, 0x00, 0xDD, 0x68, 0xFF, 0x00, 0xF8, 0x8A, 0x0F, 0xFC, 0x14, 0xFF, 0x00, 0xF6, 0x82, 0xED, 0xF1, 0x6B, 0xC5, 0x8B, 0xF4, 0x92, 0x2F, 0xFE, 0x22, 0xA3, 0xFB, 0x3B, 0x17, 0xBD, 0xA1, 0xF8, 0xFF, 0x00, 0x91, 0xB4, 0x78, 0x83, 0x2C, 0x49, 0x2F, 0xDE, 0x5B, 0xD2, 0x3F, 0xE6, 0x7E, 0x99, 0x47, 0xF0, 0xDF, 0xC4, 0x5C, 0x05, 0xF0, 0xF6, 0xBB, 0xB5, 0x7A, 0x0F, 0xEC, 0xE9, 0xB8, 0xFF, 0x00, 0xC7, 0x6A, 0x61, 0xF0, 0xDB, 0xC4, 0x80, 0x8F, 0xF8, 0xA7, 0x75, 0xEE, 0x0E, 0x73, 0xFD, 0x9F, 0x2F, 0xFF, 0x00, 0x13, 0x5F, 0x98, 0xFF, 0x00, 0xF0, 0xF4, 0x1F, 0xDA, 0x0F, 0x3F, 0xF2, 0x56, 0xBC, 0x5D, 0xFF, 0x00, 0x7F, 0x62, 0xFF, 0x00, 0xE2, 0x2A, 0x4B, 0xCF, 0xF8, 0x29, 0xAF, 0xED, 0x0D, 0x69, 0x30, 0x49, 0x3E, 0x2D, 0xF8, 0xB7, 0x7E, 0xD0, 0xC4, 0x79, 0xD1, 0x71, 0x91, 0x91, 0x9F, 0x93, 0xD0, 0x8A, 0x9F, 0xEC, 0xFC, 0x77, 0xF7, 0x7E, 0xF7, 0xFE, 0x46, 0xB1, 0xE2, 0x6C, 0xA9, 0x7D, 0x9A, 0x9F, 0x74, 0x7F, 0xCC, 0xFD, 0x35, 0xD4, 0x7E, 0x16, 0x78, 0x83, 0x5B, 0x8A, 0xE2, 0x1B, 0x8F, 0x0E, 0xEB, 0x8B, 0x15, 0xE0, 0x64, 0x93, 0xCB, 0xB0, 0x96, 0x3C, 0x06, 0xCE, 0x76, 0xE1, 0x46, 0xDE, 0xBC, 0x63, 0xA7, 0x6A, 0xF4, 0x9F, 0xD9, 0x0F, 0xC0, 0xD0, 0xFE, 0xCB, 0x57, 0xAB, 0x36, 0x95, 0xE0, 0x65, 0x85, 0x5F, 0x6A, 0x19, 0x9F, 0x4F, 0x66, 0xBA, 0x89, 0x41, 0x19, 0xDB, 0x23, 0x02, 0xE3, 0x23, 0x3C, 0x02, 0x05, 0x7E, 0x3E, 0x1F, 0xF8, 0x29, 0xEF, 0xED, 0x06, 0x3F, 0xE6, 0xAE, 0x78, 0xBB, 0xFE, 0xFF, 0x00, 0x47, 0xFF, 0x00, 0xC4, 0x52, 0x7F, 0xC3, 0xCF, 0xBF, 0x68, 0x2F, 0xFA, 0x2B, 0x9E, 0x2E, 0xFF, 0x00, 0xBF, 0xD1, 0xFF, 0x00, 0xF1, 0x15, 0x12, 0xCA, 0xF1, 0x93, 0x83, 0x84, 0xB9, 0x6C, 0xFC, 0xD8, 0xBF, 0xD6, 0x5C, 0xA5, 0x54, 0x55, 0x52, 0xA8, 0x9A, 0xDB, 0x48, 0x7F, 0x99, 0xFD, 0x10, 0x2F, 0xED, 0x37, 0x15, 0xD4, 0xD7, 0x07, 0xFB, 0x07, 0x5B, 0xB7, 0x87, 0x07, 0xC9, 0x2D, 0x6E, 0xCC, 0xCC, 0x7D, 0xF0, 0x3F, 0x5A, 0xF2, 0x2F, 0x8F, 0x9F, 0x1B, 0x2F, 0x3C, 0x4D, 0xF0, 0x6B, 0xC5, 0x8B, 0x7F, 0x1D, 0xC6, 0x93, 0x71, 0x26, 0x9E, 0x34, 0xD8, 0x23, 0x91, 0x4A, 0x9B, 0xB1, 0x73, 0x2A, 0xB6, 0xD0, 0x08, 0xFE, 0x15, 0xB6, 0x72, 0x4F, 0x60, 0xDE, 0xA4, 0x57, 0xE1, 0xD4, 0xBF, 0xF0, 0x54, 0x1F, 0xDA, 0x02, 0x04, 0x66, 0x6F, 0x8B, 0xBE, 0x30, 0x55, 0x50, 0x49, 0x3E, 0x7C, 0x7C, 0x7F, 0xE3, 0x95, 0xFA, 0x99, 0xE1, 0xBB, 0xAF, 0x15, 0x7F, 0xC3, 0x30, 0x78, 0x1F, 0xC3, 0xFE, 0x32, 0xD5, 0xAF, 0xF5, 0xEF, 0x16, 0x69, 0x5E, 0x1A, 0x4D, 0x77, 0xC4, 0x7A, 0x85, 0xE3, 0xEE, 0x99, 0xEF, 0xEF, 0x9E, 0x39, 0xCD, 0xBB, 0xF0, 0x06, 0x6D, 0x61, 0x9A, 0xDE, 0xDF, 0x80, 0x30, 0xCA, 0xE3, 0xAE, 0x6B, 0xE7, 0x33, 0x1C, 0x9D, 0xE1, 0x5D, 0x38, 0xCD, 0x47, 0xDE, 0x92, 0xD9, 0xBD, 0x93, 0x4F, 0xAF, 0x9D, 0x97, 0xCC, 0xFA, 0x0C, 0x0F, 0x11, 0xE1, 0xF1, 0xF7, 0xA5, 0x4B, 0x9F, 0x45, 0xD5, 0x46, 0xDE, 0x5B, 0x36, 0xFA, 0x1E, 0x3D, 0xE1, 0xCF, 0x86, 0x73, 0x78, 0x87, 0xC4, 0x2B, 0x25, 0xF5, 0xE4, 0x76, 0xBA, 0x4E, 0x9E, 0x16, 0xE6, 0xED, 0x51, 0x4B, 0x49, 0x22, 0x0C, 0x91, 0x18, 0x24, 0x8D, 0xBB, 0x88, 0x23, 0x20, 0x1E, 0x03, 0x01, 0x82, 0x55, 0x86, 0xFF, 0x00, 0x8E, 0xF5, 0x8B, 0xAF, 0x12, 0xF8, 0x3E, 0x4D, 0x0E, 0xC9, 0xBC, 0xAB, 0xEF, 0x17, 0x6A, 0x89, 0x6C, 0x36, 0x0F, 0x96, 0xDE, 0xDA, 0x35, 0x07, 0xA7, 0x4D, 0xA9, 0xB5, 0x89, 0xF5, 0x58, 0xD8, 0x77, 0x15, 0x15, 0x9F, 0x99, 0x04, 0x0C, 0x15, 0x59, 0x57, 0x54, 0x61, 0x24, 0x8D, 0xFD, 0xF3, 0x19, 0x61, 0xB7, 0xE8, 0x32, 0xA7, 0x1E, 0xA4, 0x57, 0x39, 0xF1, 0x47, 0xE2, 0x42, 0xFC, 0x1B, 0xFD, 0x9B, 0x3C, 0x73, 0xF1, 0x12, 0x36, 0xDB, 0x71, 0x6F, 0x69, 0x2E, 0x95, 0xA0, 0xB3, 0x72, 0x0D, 0xC4, 0xCE, 0x22, 0xF3, 0x40, 0xF4, 0xF3, 0x58, 0x1E, 0xE0, 0xAC, 0x79, 0xEE, 0x6B, 0xAE, 0xA4, 0x25, 0x1A, 0xA9, 0xAD, 0xEE, 0x94, 0x57, 0x9F, 0x4F, 0xC7, 0x5F, 0x91, 0xF3, 0xF8, 0xDC, 0x44, 0xB1, 0x0D, 0xC2, 0x6E, 0xD1, 0xB3, 0xBF, 0x92, 0xEB, 0xF8, 0x7E, 0x67, 0xD5, 0x9A, 0xB7, 0xEC, 0xCB, 0x34, 0x3F, 0xB3, 0xBE, 0x93, 0xE1, 0xBB, 0x68, 0x48, 0x68, 0x6D, 0x0D, 0xC6, 0x9C, 0x0C, 0x85, 0x90, 0x06, 0xDE, 0x04, 0x4E, 0xC3, 0x3B, 0x70, 0xAD, 0xB4, 0x9C, 0x70, 0xEA, 0x1C, 0x86, 0x23, 0x07, 0xE5, 0xDD, 0x2E, 0xFB, 0x58, 0xF0, 0x06, 0xBC, 0x7F, 0xE3, 0xEB, 0x49, 0xD6, 0x74, 0xE9, 0x55, 0x5F, 0x72, 0xED, 0x96, 0xDE, 0x48, 0xE4, 0x49, 0x06, 0x41, 0xCF, 0x21, 0xE3, 0x53, 0xDF, 0xEE, 0x91, 0xC8, 0x35, 0xF1, 0x17, 0x86, 0x3F, 0xE0, 0xA2, 0xDF, 0xB4, 0x97, 0x8D, 0x7C, 0x45, 0xA5, 0xE8, 0x3A, 0x5F, 0xC5, 0x8F, 0x18, 0x5C, 0x6A, 0x5A, 0xC5, 0xE4, 0x3A, 0x7D, 0x94, 0x46, 0xE5, 0x14, 0x4B, 0x3C, 0xAE, 0xB1, 0xC6, 0x09, 0xD9, 0xDD, 0x98, 0x0C, 0xD7, 0xE8, 0x2F, 0xC4, 0x4D, 0x27, 0x7D, 0xFC, 0xD6, 0x33, 0x6A, 0x97, 0x5A, 0xF6, 0xAD, 0xA0, 0x59, 0xC1, 0x0D, 0xDE, 0xAB, 0x77, 0x21, 0x7B, 0x9D, 0x69, 0x91, 0x15, 0x27, 0x9E, 0x43, 0xD3, 0x71, 0x6C, 0x30, 0x55, 0xC0, 0x55, 0xDC, 0x00, 0x00, 0x0A, 0xED, 0x58, 0x4A, 0xB8, 0x69, 0xAA, 0x58, 0x86, 0xA4, 0xA4, 0xBA, 0x5F, 0xA3, 0x5A, 0xBF, 0x53, 0xA9, 0x66, 0x58, 0x3C, 0x65, 0x2B, 0xE1, 0x23, 0x28, 0xF2, 0xD9, 0x7B, 0xD6, 0xB5, 0xAD, 0xB2, 0xB3, 0xE8, 0x2F, 0xC6, 0x1F, 0xDB, 0xE7, 0xC1, 0x7A, 0xF7, 0xC6, 0x1D, 0x2E, 0xFF, 0x00, 0xC5, 0x9A, 0x7E, 0x83, 0xA1, 0xFC, 0x40, 0x8F, 0x48, 0x75, 0xB4, 0xD5, 0x35, 0x0B, 0x61, 0xF6, 0x4B, 0x98, 0xC9, 0x02, 0x71, 0x0D, 0xC9, 0x04, 0xDB, 0x48, 0xCB, 0x14, 0x6C, 0xCA, 0xC4, 0x0C, 0xAA, 0xB6, 0xE6, 0xCB, 0x05, 0xF2, 0x89, 0xFF, 0x00, 0x6B, 0x5F, 0x0E, 0xE8, 0x7F, 0xB5, 0xFE, 0x81, 0xAE, 0x5A, 0xDD, 0xE3, 0x4D, 0xD7, 0xAC, 0x8E, 0x8D, 0xAC, 0x08, 0xA4, 0x59, 0x23, 0x78, 0x88, 0x64, 0x90, 0xE5, 0x49, 0x0D, 0xFB, 0xB6, 0x59, 0x14, 0x8C, 0xA9, 0x36, 0xCB, 0xC9, 0xDC, 0x2B, 0xCF, 0xBF, 0x6B, 0x2F, 0x84, 0x8B, 0xF1, 0x3A, 0xD3, 0x4B, 0xF2, 0xDD, 0x2D, 0xEE, 0xAD, 0xE6, 0x0D, 0x04, 0xEC, 0x01, 0x10, 0xCC, 0x03, 0x08, 0x89, 0xFF, 0x00, 0x63, 0x73, 0x9D, 0xD9, 0xEA, 0xA4, 0x8F, 0x71, 0xF2, 0x97, 0x87, 0xF4, 0x0B, 0x9F, 0x86, 0x3F, 0x14, 0x34, 0x5D, 0x4A, 0x3F, 0xB5, 0x59, 0xDB, 0xE8, 0xFA, 0xB4, 0x2B, 0x79, 0x6A, 0xCC, 0x59, 0xF4, 0xC7, 0x2F, 0xB5, 0xE2, 0x6C, 0xF6, 0x2A, 0x5F, 0x63, 0x9E, 0x1D, 0x7B, 0xEF, 0x0E, 0xAA, 0x61, 0xF2, 0x4C, 0x34, 0x1B, 0x74, 0xDB, 0x56, 0x4D, 0x5B, 0xA5, 0x9F, 0x6F, 0x4F, 0xF2, 0x31, 0xAF, 0x9F, 0x55, 0x85, 0x3F, 0xAA, 0xD5, 0x82, 0x71, 0x6D, 0x35, 0x2D, 0x9A, 0x7A, 0x7D, 0xFA, 0x1F, 0x66, 0x7C, 0x59, 0xBB, 0x5D, 0x1F, 0xC1, 0x3A, 0xA4, 0xDE, 0x64, 0x7B, 0x5A, 0x1F, 0x2D, 0x24, 0x42, 0x19, 0x77, 0xBB, 0x08, 0xC6, 0x0F, 0x7F, 0x99, 0x80, 0xF7, 0xAF, 0x8F, 0xFF, 0x00, 0x6A, 0xAF, 0x88, 0x56, 0x3E, 0x1F, 0xD2, 0x6F, 0x7C, 0x25, 0x6B, 0xE6, 0x4B, 0xAF, 0x6E, 0x8A, 0xD6, 0xEC, 0xA8, 0xDA, 0x96, 0x50, 0x2E, 0x59, 0x91, 0x98, 0xFF, 0x00, 0x1B, 0x62, 0x31, 0xB4, 0x67, 0x0B, 0xBB, 0x38, 0xC8, 0xAF, 0xA7, 0xBF, 0x69, 0xAF, 0x8B, 0x90, 0xFC, 0x1D, 0xF0, 0xA2, 0x43, 0x13, 0x5A, 0xDD, 0x6B, 0x9A, 0x93, 0x06, 0xD2, 0xAD, 0xB6, 0xEE, 0x2C, 0xFB, 0xB3, 0xE7, 0xB2, 0x7F, 0x75, 0x58, 0xE7, 0x1F, 0xC6, 0xF8, 0x03, 0xB9, 0x1F, 0x0B, 0xB7, 0xC2, 0xEB, 0x86, 0xF1, 0x4C, 0x9F, 0xDB, 0x31, 0xDE, 0x6A, 0x5A, 0xB5, 0xCC, 0xCD, 0x34, 0x9A, 0x72, 0xB9, 0x37, 0x53, 0xBB, 0x39, 0x25, 0xAE, 0x5F, 0xFE, 0x58, 0x06, 0x39, 0x24, 0x37, 0xEF, 0x1B, 0x38, 0x0A, 0xBB, 0xB7, 0x8F, 0x5B, 0x09, 0x4E, 0x49, 0x36, 0xF6, 0x3C, 0x7C, 0xDB, 0x11, 0x07, 0xCB, 0x05, 0xAC, 0x95, 0xFE, 0x57, 0x56, 0xFC, 0x8C, 0x5F, 0x07, 0x68, 0x37, 0x96, 0x9A, 0x8D, 0x8D, 0xE3, 0x5B, 0x35, 0xE4, 0xAF, 0xFE, 0x93, 0x65, 0x61, 0xB7, 0x7B, 0x5E, 0x6C, 0x3F, 0x2B, 0x38, 0xE8, 0x96, 0xE1, 0xC7, 0xCC, 0xED, 0x80, 0xC0, 0x32, 0xAE, 0x79, 0x2B, 0xFA, 0x07, 0xF0, 0x39, 0xA5, 0xF8, 0x29, 0xE1, 0x0D, 0x37, 0x4F, 0xD3, 0xAF, 0x26, 0x8E, 0xF2, 0x35, 0x13, 0x5D, 0xDD, 0xA3, 0x15, 0x92, 0xF2, 0xE1, 0x8F, 0x99, 0x24, 0xAF, 0xFD, 0xE2, 0x5F, 0x2D, 0xCF, 0x4E, 0x3D, 0x05, 0x78, 0x66, 0x8D, 0xF0, 0xC9, 0xBE, 0x0A, 0xFC, 0x30, 0xB8, 0xBC, 0xBC, 0xFB, 0x3C, 0xDE, 0x20, 0xD7, 0xEE, 0xAD, 0xA3, 0xBC, 0x9D, 0x88, 0x8D, 0x57, 0x7C, 0x88, 0x89, 0x04, 0x60, 0xE3, 0x08, 0xAA, 0x76, 0x85, 0x18, 0xFA, 0x01, 0xC0, 0xF6, 0x7B, 0x38, 0x1A, 0xD2, 0x38, 0xD1, 0xE4, 0x69, 0xA4, 0xDC, 0x4B, 0xBB, 0x70, 0x58, 0x93, 0x9F, 0xCB, 0xB0, 0xF4, 0x00, 0x57, 0xA1, 0x8A, 0xA0, 0xAC, 0xA9, 0xC9, 0x79, 0xDB, 0xFC, 0xCE, 0x5C, 0xAE, 0xA7, 0x24, 0x9C, 0xE3, 0xBD, 0xCF, 0xBF, 0xFF, 0x00, 0x64, 0x8F, 0x89, 0x5A, 0xB7, 0xC6, 0x6F, 0x83, 0x3E, 0x2C, 0xD1, 0xF5, 0x88, 0xE7, 0xD4, 0x3C, 0x3F, 0xE2, 0x4B, 0x63, 0x67, 0x74, 0xC5, 0x77, 0x2D, 0x96, 0xAB, 0x6A, 0x56, 0x6B, 0x59, 0xC7, 0x04, 0x28, 0x2D, 0xE5, 0x07, 0xE9, 0xF2, 0x4A, 0x09, 0xCE, 0xCC, 0x1E, 0x1F, 0xC7, 0xFF, 0x00, 0x08, 0x1F, 0x49, 0xF8, 0xBD, 0xE2, 0xD8, 0x64, 0xB4, 0x69, 0x74, 0x7D, 0x2E, 0x5D, 0x67, 0x44, 0x9B, 0x1F, 0xF2, 0xCD, 0x62, 0x2E, 0x8D, 0x20, 0x1E, 0x91, 0x6E, 0x89, 0x9B, 0xFB, 0xA1, 0xB7, 0x74, 0x53, 0x5F, 0x03, 0xFE, 0xD1, 0x3F, 0xB4, 0xEF, 0xC4, 0x2F, 0xD9, 0xDF, 0xC3, 0xFA, 0x6F, 0xFC, 0x20, 0xFE, 0x33, 0xD7, 0xBC, 0x2F, 0x6F, 0xAA, 0xBD, 0xC9, 0xBE, 0x82, 0xC6, 0xE7, 0xCB, 0x8E, 0xE8, 0xA2, 0xC5, 0xB5, 0x99, 0x70, 0x79, 0x00, 0xB0, 0xC8, 0xEC, 0x7D, 0x85, 0x7E, 0xB8, 0x7E, 0xD5, 0x5A, 0x75, 0x86, 0x83, 0xF1, 0x44, 0xE8, 0x97, 0x57, 0xC7, 0x4C, 0xD5, 0x7C, 0x45, 0x75, 0xAE, 0x6B, 0x21, 0x20, 0xB9, 0xFB, 0x3D, 0xDF, 0x9D, 0x35, 0xCF, 0x98, 0xCF, 0x03, 0x03, 0xBB, 0x29, 0x69, 0x2D, 0xA6, 0x48, 0xE9, 0x96, 0xCF, 0x19, 0xCF, 0xC3, 0xE6, 0x12, 0xA9, 0x85, 0xC5, 0x73, 0x46, 0xD6, 0xAC, 0x9A, 0xB2, 0xFE, 0xEE, 0xEF, 0xD6, 0xD6, 0xD8, 0xFA, 0x08, 0xE1, 0x70, 0xF5, 0xAA, 0x46, 0x1E, 0xF5, 0xE9, 0x7B, 0xD2, 0x6E, 0xCF, 0xE2, 0xB5, 0x92, 0xF2, 0xF2, 0x67, 0xE7, 0xD4, 0xBE, 0x01, 0xB8, 0xD2, 0x74, 0x6D, 0x46, 0xC6, 0x68, 0xCC, 0x9F, 0xE9, 0x2C, 0xD0, 0x37, 0x4F, 0x33, 0xE4, 0x4C, 0x60, 0xFB, 0xF5, 0xFA, 0xFD, 0x2B, 0xD4, 0xFF, 0x00, 0x65, 0xBF, 0xDA, 0x46, 0xF2, 0xCC, 0x5B, 0x78, 0x4F, 0xC4, 0x37, 0x92, 0x5C, 0x5A, 0xC6, 0x04, 0x3A, 0x75, 0xCC, 0xCD, 0xCD, 0xBA, 0x1E, 0x04, 0x0F, 0x93, 0xC2, 0x8E, 0x8A, 0x4F, 0xDD, 0x07, 0x1F, 0x77, 0x1B, 0x77, 0xBF, 0x67, 0x4F, 0x86, 0x07, 0xE2, 0x97, 0xC0, 0x5D, 0x57, 0xC3, 0xF7, 0x97, 0xDF, 0x6E, 0xF1, 0x3F, 0x87, 0x67, 0x57, 0xB4, 0xBB, 0x74, 0x0B, 0x35, 0xE5, 0xB9, 0x8C, 0x04, 0x77, 0xC0, 0x0B, 0xBC, 0x95, 0x2A, 0xD8, 0xC0, 0xDC, 0xBB, 0x80, 0x51, 0x20, 0x5A, 0xF0, 0x9F, 0x18, 0x69, 0x52, 0xF8, 0x3B, 0xC6, 0xCD, 0x6F, 0x79, 0x04, 0x96, 0xF7, 0x0A, 0xE4, 0xB2, 0x30, 0xDB, 0xCF, 0xF1, 0x27, 0xBE, 0x73, 0xB8, 0x76, 0x21, 0x81, 0x15, 0xF5, 0x58, 0x3C, 0x45, 0x3C, 0x6C, 0x65, 0x46, 0x7F, 0x14, 0x77, 0xFD, 0x1A, 0xF5, 0x3E, 0x3B, 0x17, 0x85, 0xC4, 0x65, 0x55, 0x63, 0x88, 0xA3, 0xF0, 0x54, 0xD5, 0x76, 0xDF, 0x58, 0xBF, 0x35, 0xFF, 0x00, 0x04, 0xFB, 0x73, 0x50, 0xF8, 0x75, 0xAC, 0x5E, 0xBB, 0x6D, 0xD1, 0xEF, 0x95, 0xA1, 0x60, 0x77, 0x3C, 0x45, 0x73, 0xF4, 0xAB, 0x96, 0x1F, 0x08, 0x75, 0x2B, 0xF9, 0x64, 0x5B, 0x8B, 0x79, 0x2D, 0xD4, 0x60, 0x82, 0xC3, 0xEF, 0x57, 0xC0, 0xFF, 0x00, 0xB4, 0x2F, 0x8D, 0xBE, 0x3C, 0x68, 0x9A, 0x3D, 0xAE, 0xAD, 0xF0, 0xF7, 0xE2, 0x97, 0x8C, 0xA1, 0xD2, 0xC5, 0xBA, 0x22, 0x69, 0x71, 0x6A, 0x24, 0x45, 0xB5, 0x40, 0x00, 0x43, 0xBB, 0x3B, 0x58, 0x01, 0x82, 0x8C, 0x70, 0x71, 0xF2, 0x9F, 0xE1, 0xAF, 0x99, 0x6E, 0x7F, 0xE0, 0xA4, 0x1F, 0xB4, 0x0C, 0x13, 0xC9, 0x14, 0xDF, 0x16, 0xBC, 0x79, 0x14, 0xD0, 0xB9, 0x8E, 0x48, 0xDE, 0xF8, 0xAB, 0xC6, 0xC0, 0xE0, 0xA9, 0x04, 0x64, 0x10, 0x46, 0x08, 0x3C, 0x83, 0x5C, 0xEF, 0x03, 0x98, 0x35, 0x68, 0xCA, 0x16, 0xF9, 0x9F, 0x47, 0x47, 0x3A, 0xC9, 0x1F, 0xBD, 0x28, 0x54, 0xBF, 0x55, 0xEE, 0x9F, 0xB5, 0x8B, 0xF0, 0xAE, 0xE2, 0xD6, 0xCB, 0xCB, 0x09, 0x23, 0x67, 0x83, 0x81, 0x4C, 0xD3, 0xBE, 0x19, 0x49, 0x6E, 0x1B, 0xCC, 0xB3, 0x93, 0x76, 0x78, 0x38, 0xEA, 0x2B, 0xF1, 0x50, 0xFF, 0x00, 0xC1, 0x49, 0x3E, 0x3E, 0xBA, 0xFF, 0x00, 0xC9, 0x5E, 0xF1, 0xCF, 0xFE, 0x0C, 0x4F, 0xF8, 0x53, 0x0F, 0xFC, 0x14, 0x7B, 0xE3, 0xE7, 0xFD, 0x15, 0xEF, 0x1D, 0x7F, 0xE0, 0xC4, 0xFF, 0x00, 0x85, 0x72, 0xAC, 0x9F, 0x30, 0xD5, 0xA9, 0xC7, 0x5F, 0x53, 0xD5, 0x8F, 0x16, 0x64, 0xF1, 0x6B, 0xF7, 0x55, 0x1D, 0xBF, 0xC2, 0x7E, 0xDF, 0xC7, 0xE0, 0x7B, 0x81, 0x3F, 0x9A, 0xB0, 0xB4, 0x6C, 0xBD, 0x39, 0xE9, 0x56, 0x2D, 0x74, 0x3B, 0x8D, 0x29, 0xCC, 0x8B, 0x6F, 0x34, 0xD2, 0xE7, 0xEF, 0x1E, 0x95, 0xF8, 0x6E, 0xFF, 0x00, 0xF0, 0x51, 0xBF, 0x8F, 0x0C, 0xBF, 0x37, 0xC5, 0x8F, 0x1A, 0x48, 0x3D, 0x1A, 0xF8, 0x9F, 0xE9, 0x50, 0xFF, 0x00, 0xC3, 0xC4, 0x7E, 0x36, 0xB7, 0xDE, 0xF8, 0x95, 0xE2, 0x79, 0x3F, 0xDF, 0xB9, 0xCF, 0xF4, 0xAC, 0x6A, 0x70, 0xFE, 0x36, 0x7F, 0x14, 0xE3, 0xF8, 0x9E, 0x9D, 0x1E, 0x3E, 0xCB, 0x29, 0xD9, 0xC2, 0x8C, 0xFE, 0xF8, 0xFF, 0x00, 0x99, 0xFB, 0x8B, 0x7F, 0xE1, 0x5B, 0xAD, 0x52, 0xE1, 0x9A, 0x48, 0x58, 0x6E, 0x3C, 0xD5, 0xDB, 0x4F, 0x09, 0x35, 0x94, 0x1E, 0x5C, 0x71, 0xF6, 0xC9, 0x38, 0xAF, 0xC2, 0xBF, 0xF8, 0x78, 0x5F, 0xC6, 0x8F, 0xFA, 0x28, 0x9E, 0x20, 0xFF, 0x00, 0xBF, 0xD4, 0xD6, 0xFF, 0x00, 0x82, 0x85, 0x7C, 0x68, 0xCF, 0x3F, 0x10, 0xBC, 0x41, 0xFF, 0x00, 0x7F, 0xBF, 0xFA, 0xD5, 0x8D, 0x4E, 0x19, 0xC5, 0xC9, 0x72, 0xF3, 0xAB, 0x7C, 0xCE, 0x9A, 0x7E, 0x23, 0x65, 0xD0, 0x97, 0x37, 0xB1, 0x9B, 0x7E, 0xB1, 0x3C, 0x8C, 0x8C, 0xCB, 0xB5, 0x59, 0x4F, 0x38, 0x07, 0xA6, 0x69, 0x1B, 0xE5, 0x38, 0xCF, 0x43, 0x8E, 0x29, 0x37, 0xFF, 0x00, 0x9C, 0x51, 0xBB, 0x3F, 0xFE, 0xAA, 0xFB, 0xAB, 0x1F, 0x8A, 0x68, 0x19, 0xFF, 0x00, 0x6B, 0xF4, 0xA3, 0x3E, 0xFF, 0x00, 0xA5, 0x19, 0xE7, 0xF8, 0x68, 0x27, 0x1F, 0xFE, 0xAA, 0x03, 0x61, 0xD1, 0xB7, 0xCD, 0xD7, 0xE9, 0x4E, 0xDD, 0xFE, 0xD7, 0xE9, 0x4D, 0x46, 0x1B, 0x7E, 0xB4, 0xED, 0xDF, 0xE7, 0x14, 0x06, 0x81, 0xBB, 0xFD, 0xAF, 0xD2, 0x8D, 0xDF, 0xED, 0x7E, 0x94, 0xE8, 0x62, 0x6B, 0x89, 0x55, 0x11, 0x77, 0x33, 0x70, 0x07, 0xAD, 0x35, 0xBE, 0x43, 0x86, 0xE0, 0xF7, 0x18, 0xE9, 0x40, 0x68, 0x1B, 0xBF, 0xDA, 0xFD, 0x28, 0xDD, 0xFE, 0xD7, 0xE9, 0x46, 0x73, 0xE9, 0xF9, 0x51, 0x83, 0xE8, 0x28, 0x0B, 0x0D, 0x73, 0xF3, 0x75, 0xA6, 0xEE, 0xFF, 0x00, 0x6B, 0xF4, 0xA1, 0x9B, 0x2D, 0xFF, 0x00, 0xD6, 0xA3, 0x3F, 0xE7, 0x14, 0x06, 0x81, 0xBB, 0xFD, 0xAF, 0xD2, 0x81, 0xC7, 0x4F, 0xE5, 0x46, 0xEF, 0xF3, 0x8A, 0x37, 0x7F, 0x9C, 0x50, 0x1A, 0x0E, 0x91, 0x3C, 0xBD, 0xBF, 0x32, 0x9D, 0xC0, 0x37, 0xCB, 0xCE, 0x33, 0xD8, 0xFB, 0xD3, 0x73, 0xFE, 0xD7, 0xE9, 0x52, 0x3B, 0xC2, 0xB6, 0x43, 0xFD, 0x60, 0x9F, 0x79, 0x25, 0x89, 0x1B, 0x36, 0x63, 0x8E, 0x31, 0x9C, 0xE7, 0x3C, 0xE7, 0x18, 0xC5, 0x7D, 0xF5, 0xFF, 0x00, 0x04, 0xB6, 0xFF, 0x00, 0x82, 0x29, 0xEA, 0x1F, 0xB5, 0x3F, 0x86, 0x3F, 0xE1, 0x6A, 0x7C, 0x66, 0xBA, 0xBD, 0xF8, 0x79, 0xF0, 0x33, 0x49, 0x51, 0x7C, 0x92, 0x3A, 0x0B, 0x7D, 0x57, 0xC5, 0xAA, 0x71, 0x84, 0xB5, 0xC8, 0xDF, 0x1D, 0xB3, 0x60, 0x0F, 0x3C, 0x82, 0x5C, 0xB6, 0xD8, 0x41, 0x2C, 0xD2, 0x47, 0xC3, 0x98, 0x66, 0x18, 0x7C, 0x15, 0x2F, 0x6D, 0x88, 0x95, 0x97, 0x4E, 0xED, 0xF4, 0x49, 0x75, 0x6C, 0xE8, 0xC3, 0x61, 0x6A, 0x57, 0x9F, 0x25, 0x35, 0xAF, 0xF5, 0xB9, 0xF3, 0x8F, 0xEC, 0x47, 0xFB, 0x26, 0x6A, 0x9F, 0xB4, 0x57, 0xC4, 0x3B, 0x0D, 0x4E, 0xF7, 0x4D, 0xBB, 0x5F, 0x87, 0xDA, 0x2E, 0xA0, 0xBF, 0xDB, 0x9A, 0x93, 0x28, 0x5B, 0x79, 0xB6, 0x01, 0x2F, 0xD8, 0xA3, 0x2C, 0x31, 0x24, 0xD2, 0x61, 0x14, 0xA8, 0xCE, 0xC5, 0x90, 0x33, 0x60, 0x60, 0x9F, 0xD6, 0x4F, 0x87, 0x57, 0x32, 0x78, 0xF6, 0x2F, 0x88, 0x57, 0x37, 0x00, 0x2B, 0xFF, 0x00, 0x62, 0x2B, 0xAC, 0x6A, 0xC5, 0x84, 0x63, 0xED, 0xD6, 0xFC, 0x64, 0xE4, 0x92, 0x4B, 0x16, 0x2C, 0x49, 0x2C, 0xC5, 0x98, 0x92, 0x58, 0x9A, 0xE7, 0xFE, 0x22, 0xF8, 0xBF, 0x49, 0xD4, 0xBE, 0xC5, 0xA4, 0xF8, 0x5F, 0x42, 0xB0, 0xF0, 0x8F, 0x81, 0xBC, 0x39, 0x0F, 0xD8, 0x7C, 0x3B, 0xE1, 0xEB, 0x14, 0x11, 0xDB, 0x69, 0x76, 0xC0, 0x93, 0xD0, 0x7D, 0xE9, 0xA4, 0x24, 0xC9, 0x24, 0x8C, 0x4B, 0xBB, 0xB3, 0x12, 0xC6, 0xA3, 0xFD, 0x95, 0xBE, 0x21, 0x47, 0xAB, 0x7C, 0x6B, 0xF1, 0xE7, 0x82, 0xE1, 0xDB, 0x23, 0x27, 0x80, 0x6E, 0x35, 0x5B, 0xB7, 0x3D, 0x51, 0xD3, 0x51, 0xD3, 0x4C, 0x48, 0xBE, 0xFB, 0x0C, 0xAC, 0xC3, 0xB0, 0x28, 0x7B, 0xD7, 0xC6, 0xE6, 0xF5, 0xAA, 0x56, 0xA2, 0xF1, 0x35, 0x57, 0x2B, 0x56, 0xB2, 0xEC, 0xB9, 0x93, 0xD7, 0xCF, 0xBF, 0x4E, 0x9D, 0x0F, 0xBB, 0xC8, 0x68, 0xC2, 0x8E, 0x22, 0x95, 0x08, 0x77, 0xF7, 0x9F, 0x77, 0x6B, 0x7D, 0xCB, 0xA7, 0xCD, 0xF5, 0x3E, 0x77, 0xF8, 0xE9, 0xF1, 0x03, 0xC4, 0x1E, 0x07, 0xF0, 0x76, 0x83, 0x79, 0xA3, 0xC5, 0x15, 0xE4, 0x1F, 0xDA, 0xD3, 0x69, 0x17, 0x96, 0x8E, 0x0F, 0xEF, 0x9A, 0xEE, 0x35, 0x5B, 0x76, 0xDC, 0x3E, 0x65, 0x08, 0xF0, 0xB9, 0x25, 0x48, 0xF9, 0x59, 0xBA, 0x90, 0xB5, 0xE7, 0xBF, 0xF0, 0x57, 0xDF, 0x8A, 0x96, 0x7E, 0x1C, 0xF0, 0xF7, 0x82, 0x3E, 0x14, 0x69, 0x32, 0x62, 0x1D, 0x3E, 0x25, 0xD6, 0x75, 0x00, 0xA4, 0x02, 0xAA, 0x03, 0xC5, 0x6A, 0xAD, 0x8F, 0xE2, 0x7C, 0xCF, 0x2B, 0x03, 0xD8, 0xC2, 0xDD, 0xC5, 0x7A, 0xA6, 0xBA, 0x93, 0x6A, 0xBE, 0x36, 0x93, 0x49, 0x85, 0xEC, 0x77, 0x69, 0xF3, 0x36, 0xA6, 0x23, 0xBC, 0xB8, 0x30, 0x5A, 0xCF, 0x34, 0x4E, 0x1A, 0x28, 0x64, 0x91, 0x55, 0xCC, 0x7B, 0xC2, 0xCA, 0xBB, 0x82, 0x31, 0x5D, 0xC5, 0x82, 0xB6, 0x30, 0x7C, 0xB7, 0xE0, 0x4F, 0xEC, 0x59, 0x37, 0xC5, 0x2F, 0x17, 0x6A, 0x5F, 0x1B, 0xBF, 0x69, 0x0D, 0x42, 0x38, 0x6C, 0xA6, 0xD6, 0x59, 0xA5, 0xF0, 0x85, 0xBC, 0x66, 0x4D, 0x43, 0x59, 0x9C, 0x20, 0x31, 0x43, 0x26, 0xD7, 0x11, 0xDB, 0x59, 0x2A, 0x85, 0x44, 0x51, 0x23, 0x33, 0xC7, 0x01, 0x8D, 0x76, 0x85, 0xC9, 0xF4, 0xA8, 0xD1, 0x8F, 0xD6, 0x21, 0x56, 0x6B, 0x6D, 0x52, 0xEB, 0x26, 0xF4, 0x49, 0x2F, 0x2D, 0x5D, 0xFD, 0x08, 0xCC, 0xE9, 0x4D, 0x50, 0x6A, 0x97, 0xDA, 0xD2, 0x4F, 0xF9, 0x52, 0xD5, 0xDF, 0xD7, 0x44, 0x97, 0x5D, 0x48, 0x7F, 0xE0, 0x9F, 0x1F, 0xB1, 0x6E, 0x9F, 0xE0, 0xFF, 0x00, 0x86, 0x56, 0xBF, 0x1C, 0x3E, 0x22, 0x35, 0xC5, 0xAC, 0x77, 0xB7, 0x11, 0xDB, 0xF8, 0x27, 0x49, 0x8D, 0xC2, 0x4F, 0x78, 0xCC, 0xE1, 0x64, 0xD4, 0xDF, 0x20, 0xB2, 0x24, 0x68, 0x5C, 0xC2, 0x46, 0x1B, 0x72, 0x89, 0x01, 0x1F, 0xBA, 0x2D, 0xEC, 0xBA, 0x87, 0x8E, 0x3E, 0xC1, 0x76, 0x2E, 0x16, 0xF6, 0x2D, 0x4A, 0x48, 0x6F, 0x92, 0xD9, 0xA7, 0x56, 0x1B, 0x6E, 0xC3, 0x32, 0xFC, 0xDC, 0x71, 0x89, 0x21, 0x62, 0x48, 0x1D, 0x37, 0x91, 0xDA, 0xB1, 0x7F, 0x6C, 0xDF, 0xDA, 0xE3, 0x5A, 0xF1, 0xF7, 0xC3, 0xCD, 0x5B, 0x50, 0x8E, 0x3D, 0x3F, 0x4D, 0xD2, 0x74, 0x7B, 0x1F, 0xF8, 0x97, 0xD8, 0xC3, 0x67, 0x14, 0x4F, 0x68, 0x09, 0x09, 0x12, 0x16, 0x51, 0x9D, 0xB8, 0x23, 0xE4, 0x07, 0x68, 0xC7, 0x1D, 0xAB, 0xC7, 0xBF, 0xE0, 0x99, 0xBA, 0x6E, 0xA9, 0xF1, 0x63, 0xC5, 0x7A, 0x8C, 0x37, 0x11, 0xC9, 0x7D, 0xA1, 0xF8, 0x46, 0x58, 0xBC, 0x49, 0x75, 0x11, 0x3F, 0x29, 0x30, 0xAB, 0x08, 0x60, 0x1E, 0xA2, 0x7B, 0x87, 0x82, 0x22, 0xA3, 0x9D, 0xB2, 0x39, 0xE8, 0xA6, 0xBB, 0xB1, 0x18, 0x5A, 0x91, 0xA9, 0xF5, 0x8A, 0xDB, 0xB4, 0xAE, 0xBE, 0x7A, 0x25, 0xFD, 0x6A, 0xD9, 0xCD, 0x81, 0xC6, 0x51, 0x8E, 0x1F, 0xEA, 0x74, 0xD6, 0xA9, 0xB6, 0xA5, 0xF2, 0xD6, 0xFE, 0xB6, 0xBA, 0xED, 0x6B, 0x75, 0x3D, 0xC3, 0xE2, 0x5F, 0x87, 0xE3, 0xD4, 0xB4, 0x7B, 0x8B, 0x5D, 0xCD, 0xE5, 0xB8, 0xC4, 0x72, 0x11, 0x93, 0xB5, 0x80, 0x28, 0xF8, 0xF5, 0xFB, 0xAD, 0x8F, 0xC2, 0xBE, 0x4C, 0xF8, 0xAF, 0xAA, 0x4D, 0xE3, 0x8F, 0x0D, 0x5F, 0x5D, 0x6B, 0x5A, 0x55, 0xE6, 0x8F, 0xAE, 0xE8, 0xD7, 0xD3, 0xE8, 0x37, 0x9A, 0xA5, 0x9E, 0x66, 0x72, 0x88, 0x81, 0x80, 0x97, 0xE5, 0xD9, 0x22, 0xCB, 0x19, 0x89, 0x82, 0x48, 0xA0, 0x38, 0x91, 0x48, 0x6D, 0xC0, 0x6D, 0xFB, 0x17, 0xC4, 0x57, 0xF1, 0xEA, 0x1A, 0xCE, 0xA3, 0xA7, 0xB5, 0xD4, 0x77, 0x57, 0xD0, 0x03, 0x33, 0xB0, 0x61, 0xBA, 0x45, 0x77, 0x93, 0x12, 0x63, 0xD0, 0xB2, 0xBE, 0x3B, 0x60, 0x01, 0xDA, 0xBC, 0x07, 0xE2, 0x27, 0x80, 0x9F, 0xC7, 0x92, 0x78, 0xAB, 0x4F, 0x87, 0x50, 0x92, 0xC5, 0xB5, 0x2B, 0xBB, 0x74, 0xF2, 0x84, 0x62, 0x48, 0xEE, 0xE4, 0x8A, 0xDE, 0x40, 0xC9, 0x20, 0xCE, 0x30, 0x40, 0x84, 0xE4, 0x83, 0x82, 0x89, 0xED, 0x8E, 0x7A, 0xD8, 0x59, 0x4E, 0x7C, 0xA9, 0xBE, 0x65, 0xAA, 0xB3, 0xB6, 0xBF, 0xE4, 0xFB, 0x1D, 0xB4, 0xEA, 0x51, 0x7C, 0x95, 0x6B, 0x2B, 0xC2, 0xFE, 0xF2, 0xF2, 0xEB, 0xB7, 0x55, 0xD3, 0xFC, 0x8F, 0x2D, 0xF8, 0x7F, 0xA0, 0x37, 0x89, 0x22, 0x97, 0x57, 0xD4, 0x75, 0x8B, 0xC6, 0x9E, 0xEC, 0x95, 0x91, 0xAC, 0x61, 0x9C, 0x5D, 0x5D, 0xAE, 0xD0, 0x43, 0xBD, 0xD3, 0x79, 0xB2, 0xAA, 0xB0, 0x6C, 0x6C, 0x49, 0x90, 0x70, 0xC3, 0x68, 0x02, 0xBD, 0x0B, 0xC0, 0xFF, 0x00, 0x0F, 0x2C, 0x3C, 0x38, 0xA9, 0x24, 0x1A, 0x5D, 0xBE, 0x9B, 0x1A, 0xE0, 0xDB, 0xDB, 0xA2, 0xFC, 0xE3, 0x3D, 0x24, 0x90, 0xF5, 0x2E, 0xDD, 0x71, 0x9E, 0x3E, 0xBD, 0x3D, 0x1B, 0xE1, 0x1F, 0x87, 0x2D, 0xFC, 0x07, 0xF0, 0x02, 0xD6, 0xD6, 0xDD, 0xA4, 0xDD, 0x33, 0x33, 0x79, 0x32, 0x22, 0xAC, 0x96, 0xAC, 0xD8, 0x06, 0x2F, 0x97, 0x3C, 0x8C, 0x64, 0x72, 0x78, 0x20, 0xE4, 0x8C, 0x1A, 0xE0, 0x35, 0x5F, 0x12, 0x14, 0xD5, 0x2F, 0x20, 0xF9, 0x9A, 0x6D, 0xD2, 0x02, 0x51, 0xB1, 0xE5, 0x2A, 0x8C, 0x12, 0x79, 0xE0, 0x96, 0xDF, 0x80, 0x39, 0xEB, 0xD8, 0x57, 0xB7, 0x96, 0xE5, 0xAE, 0x32, 0x55, 0xEB, 0xCD, 0xC9, 0xDB, 0x44, 0xF6, 0x5E, 0x8B, 0xBF, 0x9B, 0x3C, 0x2C, 0xD2, 0xA5, 0x2E, 0x79, 0x2C, 0x3C, 0x6D, 0x16, 0xF4, 0x7D, 0x5A, 0xF3, 0x39, 0xBF, 0xDA, 0x05, 0x23, 0xD7, 0x3E, 0x10, 0xEB, 0xD2, 0x4C, 0xB1, 0x49, 0x14, 0x70, 0xEF, 0xB7, 0xCE, 0x18, 0x29, 0x0C, 0x00, 0x7F, 0xF7, 0x8E, 0x4E, 0x08, 0xE8, 0x0E, 0x3D, 0x73, 0x07, 0xEC, 0xE1, 0xF1, 0x3A, 0x6F, 0x1B, 0x78, 0x09, 0x6D, 0xEF, 0x25, 0x69, 0xB5, 0x3D, 0x2D, 0xFE, 0xCC, 0xCE, 0xC7, 0x2D, 0x32, 0x00, 0x36, 0x39, 0xF7, 0xC1, 0x00, 0x9E, 0xE4, 0x67, 0xBD, 0x51, 0xF8, 0xDB, 0x32, 0xE9, 0x7F, 0x05, 0x35, 0x2B, 0x45, 0xF9, 0x63, 0x86, 0xCE, 0xDA, 0x05, 0x50, 0x30, 0x39, 0x9A, 0x21, 0x80, 0x3F, 0xDD, 0x1F, 0x85, 0x79, 0x0F, 0xC1, 0x9F, 0x8B, 0xB6, 0x9F, 0x08, 0xF5, 0x1D, 0x4A, 0xE2, 0xE9, 0x5A, 0xE2, 0x59, 0x92, 0x34, 0xB5, 0xB6, 0x53, 0xB4, 0xCF, 0x21, 0xF3, 0x38, 0x27, 0xB2, 0x8F, 0x94, 0x93, 0xD8, 0x0E, 0x39, 0x20, 0x1E, 0x9C, 0xCA, 0xF7, 0xF7, 0x77, 0xB1, 0xC5, 0x81, 0xA8, 0xA3, 0x51, 0x73, 0xBD, 0x3A, 0x9E, 0x91, 0xFB, 0x51, 0xC2, 0xBE, 0x3D, 0xF8, 0x9F, 0xE0, 0x9F, 0x08, 0xC5, 0x20, 0x33, 0x4F, 0x2C, 0x70, 0xC9, 0x83, 0xF7, 0x5A, 0xEE, 0x78, 0xE2, 0x5C, 0xFB, 0xE1, 0x01, 0xFA, 0x30, 0xAF, 0xAB, 0x3F, 0xE0, 0xE2, 0xFF, 0x00, 0x8F, 0x57, 0x5A, 0xE7, 0xED, 0x85, 0xE0, 0x99, 0xB4, 0x5D, 0x42, 0xEB, 0x4F, 0xB9, 0xD1, 0x6D, 0xAF, 0x75, 0xBB, 0x1B, 0x9B, 0x59, 0x0C, 0x52, 0xC1, 0xE7, 0xDC, 0xAC, 0x31, 0x3A, 0xB0, 0xE4, 0x1F, 0x2E, 0xCD, 0x47, 0xD3, 0x8E, 0x46, 0x6B, 0xE6, 0x7F, 0xF8, 0x27, 0x57, 0x82, 0xAF, 0x3F, 0x68, 0x4F, 0xDB, 0x9F, 0x42, 0xD5, 0xB5, 0x6F, 0xF4, 0xA5, 0xD0, 0xE5, 0x7F, 0x12, 0x5E, 0x38, 0x1B, 0x51, 0x5E, 0xDF, 0x6F, 0xD9, 0xC0, 0xF4, 0x0B, 0x31, 0x83, 0x0B, 0xFD, 0xD4, 0xC7, 0xAD, 0x1F, 0xF0, 0x55, 0x9F, 0x88, 0x4B, 0xE3, 0xDF, 0xDB, 0x4B, 0x5D, 0x85, 0x24, 0xF3, 0xA1, 0xF0, 0xCD, 0x95, 0xAE, 0x8A, 0x87, 0x39, 0x00, 0xA2, 0x99, 0xA4, 0x03, 0xE9, 0x24, 0xEE, 0xA7, 0xDD, 0x4D, 0x7C, 0xEB, 0xC2, 0xA9, 0xE6, 0x74, 0x53, 0xD7, 0xD9, 0xC2, 0x4D, 0xFA, 0xCA, 0xC8, 0xF4, 0xAB, 0x63, 0x2F, 0x81, 0xAD, 0x5D, 0x69, 0xED, 0x25, 0x18, 0xAF, 0x48, 0xD9, 0xFE, 0x68, 0xF7, 0x7F, 0xF8, 0x27, 0x27, 0xFC, 0x14, 0xDF, 0xC3, 0x7E, 0x17, 0xF1, 0xEC, 0x36, 0x9F, 0x13, 0xAE, 0xE3, 0xF0, 0xF7, 0xDA, 0x21, 0x16, 0xB2, 0x6B, 0x4B, 0x11, 0x36, 0x92, 0x73, 0x81, 0x24, 0x81, 0x41, 0xF2, 0x99, 0x72, 0x58, 0xF1, 0xB1, 0x80, 0x65, 0x06, 0x3D, 0xD8, 0x1F, 0x5F, 0xFE, 0xDD, 0x1F, 0xB3, 0x82, 0xFC, 0x40, 0xD0, 0x2E, 0x35, 0x4B, 0x18, 0xD6, 0x3D, 0x67, 0x49, 0xF9, 0xA6, 0x10, 0x90, 0xFE, 0x6A, 0x0E, 0x8E, 0xA4, 0x70, 0xC0, 0x67, 0x21, 0x86, 0x43, 0x2B, 0x64, 0x64, 0x10, 0x6B, 0xF0, 0xF1, 0xB0, 0xC3, 0x1D, 0x8F, 0x5E, 0x3A, 0xD7, 0xEC, 0xA7, 0xFC, 0x12, 0xC7, 0xF6, 0x80, 0x9F, 0xF6, 0x9C, 0xFD, 0x86, 0x6D, 0xE4, 0x92, 0xE1, 0xAE, 0xBC, 0x67, 0xF0, 0x40, 0xC1, 0xE1, 0xDD, 0x72, 0x17, 0x3B, 0x9B, 0x50, 0xD1, 0x64, 0x0D, 0xFD, 0x9B, 0x78, 0x47, 0x73, 0x12, 0x2C, 0x96, 0x8D, 0xD4, 0x94, 0xB6, 0x8D, 0x89, 0x18, 0xE7, 0x9B, 0x37, 0xC1, 0xCB, 0x07, 0x88, 0x86, 0x61, 0x87, 0xD3, 0x54, 0xA4, 0xBA, 0x6B, 0xB7, 0xC9, 0xED, 0xEA, 0xD1, 0xD1, 0x93, 0xE6, 0x31, 0xC6, 0xE1, 0x65, 0x95, 0x62, 0xF5, 0x4F, 0x58, 0xBE, 0xA9, 0xFF, 0x00, 0x9F, 0x5F, 0xBD, 0x1E, 0x21, 0xF0, 0x2F, 0xC7, 0x5E, 0x6B, 0x5C, 0x78, 0x77, 0x58, 0x54, 0xFD, 0xE1, 0x21, 0x04, 0xAB, 0x95, 0x76, 0x1F, 0x79, 0x08, 0x3D, 0x09, 0x03, 0x38, 0x3D, 0xC1, 0xAC, 0x0F, 0xDA, 0x57, 0xF6, 0x22, 0xD0, 0x7E, 0x34, 0xEC, 0xBA, 0xD3, 0x66, 0x87, 0x40, 0xF1, 0x33, 0x7C, 0x90, 0x5F, 0x3A, 0x93, 0x05, 0xE1, 0x03, 0xE5, 0x86, 0xE7, 0x1C, 0xFA, 0x05, 0x94, 0x02, 0xC0, 0x00, 0xA4, 0x38, 0x0A, 0xB5, 0xDA, 0xFE, 0xD9, 0x3F, 0x0C, 0xA3, 0xF0, 0x17, 0xC4, 0x28, 0x7C, 0x4D, 0xA2, 0xA3, 0x47, 0xA6, 0xEA, 0xAC, 0x1D, 0x93, 0x6F, 0x16, 0xB3, 0x8E, 0xAB, 0xEE, 0x0E, 0x32, 0x0F, 0xD6, 0x8F, 0x0B, 0xF8, 0xEA, 0x4D, 0x67, 0x47, 0x8F, 0xCC, 0x55, 0xBA, 0xB7, 0x9D, 0x30, 0xC8, 0xDF, 0x79, 0x08, 0xEB, 0x83, 0xDF, 0x1D, 0xBF, 0x0E, 0x0D, 0x7D, 0x6D, 0x15, 0xED, 0xA9, 0xAA, 0xD4, 0xFE, 0xD1, 0xF1, 0x35, 0xA9, 0xCB, 0x0D, 0x5D, 0xD0, 0xA9, 0xD1, 0xDB, 0xD7, 0xCF, 0xE6, 0x7E, 0x71, 0xFC, 0x4A, 0xF8, 0x67, 0xAF, 0x7C, 0x1E, 0xF1, 0x95, 0xD6, 0x81, 0xE2, 0x4D, 0x36, 0xE3, 0x4B, 0xD5, 0x2D, 0x7E, 0x63, 0x1C, 0x9C, 0xAC, 0xA8, 0x4E, 0x04, 0x91, 0xB8, 0xF9, 0x5D, 0x0E, 0x0E, 0x19, 0x49, 0x1C, 0x11, 0xC1, 0x04, 0x0C, 0x1D, 0xDE, 0xF5, 0xFA, 0x8D, 0xF1, 0x2B, 0xE1, 0x7F, 0x86, 0x3F, 0x6A, 0x1F, 0x06, 0x47, 0xE1, 0xAF, 0x15, 0x47, 0xB6, 0xEA, 0x30, 0xCD, 0xA4, 0x6A, 0xB1, 0x63, 0xED, 0x56, 0x72, 0x63, 0x04, 0x23, 0x1E, 0xA7, 0x81, 0x94, 0x6E, 0x24, 0x03, 0x9C, 0x32, 0x86, 0x1F, 0x9E, 0x7F, 0xB4, 0x07, 0xEC, 0xF1, 0xE2, 0x4F, 0xD9, 0xBB, 0xC6, 0x8D, 0xA4, 0x78, 0x82, 0xDD, 0x5A, 0x19, 0xB7, 0x3D, 0x8E, 0xA1, 0x0A, 0x93, 0x6B, 0xA8, 0x46, 0x0F, 0xDE, 0x43, 0xD9, 0x86, 0x46, 0xE4, 0x3F, 0x32, 0x93, 0xDC, 0x10, 0x48, 0xAE, 0x9F, 0x2C, 0xB7, 0x3A, 0xAA, 0xD2, 0xB2, 0x52, 0x8E, 0xC7, 0x08, 0xEC, 0x31, 0xD4, 0xFA, 0xD2, 0x0A, 0x56, 0x39, 0x4A, 0x4A, 0x0C, 0xA2, 0x04, 0xE2, 0xA3, 0x3F, 0x78, 0xD4, 0x86, 0xA3, 0x61, 0x86, 0xFA, 0xD0, 0x32, 0x6A, 0xB9, 0xE1, 0xAD, 0x3A, 0x3D, 0x5F, 0xC4, 0xBA, 0x6D, 0x9C, 0xBB, 0xBC, 0xAB, 0xAB, 0xB8, 0xA1, 0x7D, 0xBC, 0x1D, 0xAC, 0xE1, 0x4F, 0xF3, 0xAA, 0x7B, 0xBD, 0xEB, 0x53, 0xC0, 0xC7, 0xFE, 0x2B, 0x9D, 0x13, 0xFE, 0xC2, 0x16, 0xFF, 0x00, 0xFA, 0x31, 0x68, 0x9B, 0x6A, 0x2C, 0x29, 0x2B, 0xCD, 0x27, 0xDD, 0x1F, 0xAF, 0x07, 0xFE, 0x08, 0x67, 0xF0, 0x72, 0x6F, 0x0F, 0xF9, 0xCA, 0xFE, 0x21, 0x59, 0x9A, 0x10, 0xC0, 0xFD, 0xB3, 0xB9, 0x19, 0xF4, 0xAC, 0x38, 0xBF, 0xE0, 0x87, 0x5F, 0x0A, 0x4B, 0xF3, 0x79, 0xE2, 0x4C, 0x7F, 0xD7, 0xC8, 0xFF, 0x00, 0x0A, 0xFB, 0xB7, 0x4E, 0x8F, 0x7F, 0x87, 0x61, 0x5F, 0xFA, 0x60, 0xA3, 0xFF, 0x00, 0x1D, 0xA8, 0xA1, 0xD1, 0x77, 0x2F, 0xDD, 0xFA, 0x71, 0x5F, 0x99, 0x61, 0xF3, 0xAC, 0x52, 0x4F, 0x9E, 0xA3, 0x3F, 0x7F, 0xCD, 0x38, 0x47, 0x2F, 0x94, 0xA0, 0xE9, 0x51, 0x4B, 0x4E, 0x88, 0xF8, 0x79, 0x7F, 0xE0, 0x86, 0xDF, 0x09, 0x4A, 0xFF, 0x00, 0xC7, 0xEF, 0x89, 0x37, 0x1E, 0xDF, 0x6A, 0x1F, 0xE1, 0x52, 0x27, 0xFC, 0x10, 0xB3, 0xE1, 0x3B, 0x9F, 0xF8, 0xFE, 0xF1, 0x28, 0xFF, 0x00, 0xB7, 0xAF, 0xFE, 0xB5, 0x7D, 0xD1, 0x6F, 0xA1, 0x6D, 0x1F, 0x77, 0x35, 0x65, 0x74, 0x42, 0x38, 0xC1, 0xAD, 0x5E, 0x79, 0x5F, 0xF9, 0xD9, 0xC9, 0x1E, 0x0C, 0xC2, 0x3D, 0xE9, 0x2F, 0xB8, 0xF8, 0x42, 0xD3, 0xFE, 0x08, 0x59, 0xF0, 0xA4, 0xEA, 0x0A, 0xAB, 0x7D, 0xE2, 0x61, 0x86, 0xF9, 0x58, 0x5C, 0x8E, 0xBF, 0x95, 0x47, 0xE3, 0x8F, 0xF8, 0x22, 0x8F, 0xC2, 0xBD, 0x1F, 0x5D, 0x59, 0xB5, 0x09, 0x3C, 0x49, 0x05, 0xAD, 0xC6, 0x11, 0x66, 0x8A, 0x70, 0x17, 0x77, 0xFB, 0x5C, 0x75, 0x35, 0xF7, 0xDD, 0xB6, 0x8E, 0x63, 0x94, 0x36, 0x39, 0x5E, 0x47, 0x15, 0x4F, 0xE2, 0x45, 0xE0, 0x3E, 0x10, 0xBB, 0x8E, 0xF2, 0x35, 0x9A, 0x16, 0x42, 0x30, 0xDD, 0x8F, 0xA8, 0xF7, 0xA2, 0x9E, 0x7D, 0x88, 0xF6, 0x89, 0x39, 0x36, 0xBF, 0x13, 0x58, 0xF0, 0x5E, 0x0D, 0x41, 0xF3, 0x53, 0x5F, 0x71, 0xF9, 0x8F, 0xF1, 0x17, 0xFE, 0x09, 0x27, 0xF0, 0xC7, 0x41, 0xD4, 0xFC, 0x8B, 0x1B, 0xAF, 0x11, 0x60, 0x0C, 0x93, 0x24, 0xE0, 0xE7, 0xF4, 0xAE, 0x6C, 0xFF, 0x00, 0xC1, 0x2B, 0x3C, 0x00, 0xC3, 0xE6, 0xBE, 0xF1, 0x02, 0xFF, 0x00, 0xBB, 0x70, 0x83, 0xF9, 0xA9, 0xAF, 0xAB, 0x3C, 0x75, 0x7B, 0xAE, 0x4A, 0x19, 0x21, 0xF2, 0xEF, 0x23, 0x84, 0x91, 0x13, 0x38, 0xFD, 0xE2, 0xAF, 0xA6, 0x7B, 0xD7, 0x2F, 0x69, 0xAD, 0xEA, 0x41, 0x42, 0xCD, 0x67, 0x97, 0xEF, 0xC7, 0x5A, 0xFA, 0xCC, 0x3F, 0xD6, 0x2A, 0x42, 0xF4, 0xA6, 0xA5, 0xF3, 0x57, 0xFB, 0x8F, 0x94, 0xC6, 0x65, 0x38, 0x1A, 0x15, 0x39, 0x65, 0x4A, 0xDF, 0x27, 0x6F, 0xBC, 0xF9, 0xDD, 0xBF, 0xE0, 0x95, 0x1F, 0x0E, 0x58, 0xFC, 0xDA, 0x9F, 0x8C, 0x17, 0xFD, 0xCB, 0xC8, 0x07, 0xF3, 0x80, 0xD1, 0x1F, 0xFC, 0x12, 0x73, 0xE1, 0xCD, 0xDC, 0x8B, 0x1C, 0x5A, 0xAF, 0x8E, 0x99, 0xDB, 0xA2, 0xA5, 0xE5, 0xB1, 0x27, 0x1F, 0xF6, 0xED, 0x5F, 0x49, 0x45, 0x73, 0x75, 0x3C, 0xAB, 0xBA, 0xD9, 0x62, 0xDD, 0xC0, 0x25, 0xCF, 0xF2, 0x0A, 0x6B, 0x59, 0xF4, 0x58, 0x6D, 0xED, 0xD5, 0xAE, 0x35, 0x4B, 0x1B, 0x77, 0x61, 0x92, 0xBC, 0xC8, 0x47, 0xE5, 0xFE, 0x35, 0x53, 0xFA, 0xD4, 0x7E, 0x2B, 0x9C, 0xB4, 0xF0, 0x39, 0x74, 0xF6, 0x82, 0x3E, 0x78, 0xF0, 0x3F, 0xFC, 0x11, 0x8F, 0xE1, 0xBF, 0x8B, 0x67, 0xC4, 0x9A, 0xE7, 0x8F, 0x63, 0x8F, 0x8F, 0x9A, 0x3B, 0xEB, 0x3F, 0xE6, 0x6D, 0x4D, 0x7A, 0x5F, 0x85, 0x3F, 0xE0, 0xDE, 0x7F, 0x87, 0x3E, 0x38, 0xB9, 0x5B, 0x7D, 0x23, 0x54, 0xF8, 0xB3, 0xA8, 0xDC, 0x67, 0x0C, 0x2D, 0xEF, 0x2C, 0x59, 0x53, 0xFD, 0xE6, 0x36, 0x7B, 0x57, 0xF1, 0x22, 0xBD, 0xCB, 0xE1, 0xDF, 0xC7, 0x8D, 0x2B, 0xC1, 0xC9, 0x69, 0xA7, 0xE8, 0xFE, 0x1F, 0xB2, 0xF1, 0x26, 0xA9, 0x3B, 0xAC, 0x71, 0x2C, 0xEB, 0x35, 0xC7, 0x9E, 0xE7, 0x80, 0x11, 0x22, 0x75, 0x19, 0x3E, 0x8C, 0x48, 0xAF, 0xA9, 0x6F, 0x3E, 0x33, 0xF8, 0xF7, 0xE0, 0xC7, 0xC3, 0x58, 0x3C, 0x45, 0xF1, 0x33, 0xC4, 0x7A, 0x4F, 0xC3, 0xAD, 0x02, 0x34, 0x2D, 0x6D, 0xA0, 0xE8, 0xFA, 0x7C, 0x0D, 0xAA, 0xDE, 0x9E, 0xA2, 0x35, 0x07, 0x72, 0x46, 0xC7, 0xA6, 0x46, 0x71, 0x9E, 0x76, 0xF5, 0xAF, 0x9C, 0xCC, 0x33, 0x0C, 0xC6, 0x9C, 0xAD, 0x09, 0x59, 0xBD, 0x12, 0xBE, 0xAF, 0xD1, 0x2B, 0xB6, 0x7B, 0x50, 0xCB, 0xF2, 0x98, 0x53, 0xB4, 0x68, 0x46, 0x4F, 0xBB, 0xBA, 0x5F, 0xF0, 0x7F, 0x03, 0xC1, 0x3F, 0x65, 0x5F, 0xF8, 0x37, 0x1F, 0xE0, 0x2F, 0xEC, 0xB7, 0xE2, 0xA8, 0x7C, 0x75, 0xF1, 0x16, 0x6D, 0x63, 0xC6, 0x97, 0x1A, 0x5A, 0x1B, 0xAB, 0x5D, 0x0B, 0xC4, 0x17, 0xB6, 0xF7, 0x1A, 0x5D, 0xA3, 0x27, 0xCD, 0xE7, 0x4C, 0x91, 0x41, 0x10, 0xB8, 0x65, 0xC7, 0xDC, 0x72, 0xD0, 0x8E, 0x49, 0x0E, 0x76, 0x95, 0xE7, 0xBF, 0x6C, 0x0F, 0xDB, 0x2B, 0xFE, 0x17, 0x47, 0x8D, 0x1A, 0xC2, 0x33, 0x25, 0xC6, 0x83, 0xA6, 0xCA, 0x46, 0x95, 0xA1, 0xD8, 0xB9, 0x48, 0x9C, 0xAF, 0xCB, 0xF6, 0x9B, 0x99, 0x3B, 0xB9, 0xC7, 0x0B, 0xC9, 0x45, 0xC0, 0xC2, 0x92, 0xD5, 0xC3, 0x7E, 0xD3, 0x1F, 0xF0, 0x50, 0xAF, 0x17, 0x7E, 0xD1, 0xB6, 0x17, 0x9A, 0x0E, 0x96, 0xAD, 0xE1, 0x7F, 0x08, 0xDD, 0x3E, 0xEB, 0x9B, 0x58, 0x6E, 0x5E, 0x5B, 0xBD, 0x54, 0x0C, 0x00, 0x6E, 0xEE, 0x58, 0xEE, 0x74, 0xFF, 0x00, 0xA6, 0x63, 0x6C, 0x60, 0x1C, 0x10, 0xD8, 0x06, 0xBC, 0xD7, 0xE1, 0xFF, 0x00, 0x80, 0xF5, 0x7D, 0x5B, 0x4D, 0xB3, 0xBB, 0xD3, 0x66, 0xF0, 0xC5, 0x86, 0x9D, 0xA9, 0x17, 0x8A, 0xDA, 0xFF, 0x00, 0x57, 0xBB, 0x92, 0x18, 0xEF, 0x99, 0x01, 0x2C, 0x96, 0x70, 0x43, 0x1B, 0xCF, 0x77, 0x8D, 0x8E, 0x0B, 0xA0, 0x48, 0x8B, 0x0D, 0xAB, 0x23, 0x3E, 0x54, 0x3A, 0x79, 0x7D, 0x4A, 0x2D, 0x63, 0xB3, 0x9A, 0x97, 0x92, 0xF8, 0x57, 0x6B, 0xFE, 0xBE, 0x87, 0xCF, 0xE1, 0x29, 0xD5, 0xC6, 0xD5, 0x78, 0x3C, 0xA2, 0x8B, 0x95, 0xDE, 0xAD, 0x2D, 0x3E, 0x4B, 0xF3, 0xBB, 0x1D, 0xE3, 0x5F, 0x1F, 0x5B, 0xF8, 0x4F, 0x41, 0xB8, 0xD5, 0xF5, 0xA9, 0xAD, 0x6D, 0xE3, 0x8D, 0x4F, 0x95, 0x6D, 0x6E, 0x02, 0xF9, 0xD2, 0x63, 0x22, 0x18, 0x97, 0xAB, 0xB9, 0xE9, 0x9E, 0x80, 0x72, 0x70, 0x01, 0x35, 0xE7, 0xDF, 0xF0, 0x4F, 0x0F, 0x8A, 0xDF, 0xD9, 0x9F, 0xB5, 0x5F, 0x8A, 0x75, 0xDD, 0x6A, 0xE2, 0x38, 0xDB, 0x56, 0xF0, 0x67, 0x88, 0x64, 0xB8, 0xF9, 0xB0, 0xB2, 0x18, 0xAC, 0xCD, 0xD7, 0x96, 0xB9, 0xEC, 0xAB, 0x6B, 0xC7, 0xA0, 0x41, 0xE9, 0x5E, 0xF7, 0x6F, 0xFF, 0x00, 0x04, 0xC5, 0xD4, 0xBC, 0x59, 0xE2, 0x05, 0xD4, 0x3C, 0x4F, 0xE2, 0x6D, 0x5A, 0xF2, 0x69, 0x34, 0xE1, 0x74, 0x16, 0xDF, 0x4C, 0x86, 0xD5, 0x11, 0x9B, 0x05, 0x6C, 0xD5, 0xA4, 0x9D, 0x9A, 0x16, 0xE7, 0x24, 0xFD, 0x9C, 0xA8, 0xC1, 0x24, 0xB3, 0x75, 0xBD, 0x6F, 0xFF, 0x00, 0x04, 0xCD, 0xF0, 0x1F, 0xC3, 0xDD, 0x3A, 0xC7, 0x5A, 0xB8, 0xB3, 0x6B, 0x9B, 0xFB, 0x10, 0x6E, 0xE6, 0x4D, 0x46, 0xED, 0xB5, 0x06, 0x49, 0xC1, 0x62, 0x9E, 0x5C, 0x8A, 0x21, 0x85, 0x42, 0x70, 0xC1, 0xFE, 0xCF, 0xBC, 0x32, 0x8C, 0x32, 0x81, 0xCF, 0x16, 0x33, 0x32, 0xA1, 0x89, 0x4E, 0x82, 0xBD, 0xA5, 0x65, 0xB7, 0xFC, 0x31, 0xF6, 0xD9, 0x7F, 0x06, 0xE2, 0xF0, 0xD0, 0xF6, 0xF3, 0x6B, 0x99, 0x5D, 0xBB, 0xBE, 0xCA, 0xF6, 0x56, 0xBE, 0xFF, 0x00, 0x24, 0x7C, 0xE9, 0xE2, 0x4D, 0x26, 0x65, 0x93, 0x58, 0xD5, 0x2E, 0xED, 0xD8, 0xCD, 0x70, 0xED, 0x77, 0x24, 0x81, 0xF1, 0xE5, 0xCC, 0xEB, 0x34, 0x3E, 0x52, 0x81, 0x91, 0xFB, 0x94, 0x62, 0x08, 0x3D, 0x1D, 0xDB, 0xD2, 0xA7, 0x7F, 0x8A, 0x37, 0x90, 0xFC, 0x3C, 0x9A, 0xC2, 0x49, 0x96, 0x48, 0x5A, 0xE8, 0x5E, 0xDA, 0x89, 0x46, 0xE2, 0xFB, 0x89, 0x32, 0x42, 0x7F, 0xD9, 0x69, 0x0B, 0xB7, 0x3D, 0x19, 0x57, 0x1D, 0x6B, 0xA4, 0xF1, 0x36, 0x9C, 0xAD, 0x71, 0x2E, 0x9D, 0x63, 0x67, 0x8D, 0x2E, 0xD2, 0x36, 0x82, 0x35, 0xC9, 0x0A, 0xFD, 0x46, 0x72, 0x79, 0x6E, 0xA4, 0x96, 0x3C, 0xB1, 0xE7, 0x27, 0x92, 0x7C, 0x3F, 0x5C, 0xD3, 0xEF, 0x1A, 0x58, 0x74, 0xC5, 0x9D, 0xA6, 0x11, 0xA3, 0x40, 0x25, 0xC6, 0xDC, 0xB1, 0x2F, 0xCF, 0xB7, 0xDD, 0x5C, 0x57, 0xE8, 0xB8, 0x5A, 0x10, 0xE4, 0x8E, 0x9B, 0x6A, 0x7E, 0x63, 0x8E, 0xAF, 0x51, 0x55, 0x9F, 0x9D, 0xD7, 0xF5, 0xF9, 0x9E, 0x6D, 0xFB, 0x5B, 0x78, 0xCC, 0xCD, 0xF0, 0x9B, 0x54, 0x8E, 0x1C, 0xC6, 0xBA, 0x95, 0xC4, 0x31, 0xAA, 0x8E, 0xCA, 0x1D, 0x49, 0x1F, 0x90, 0x3F, 0x95, 0x7A, 0xEF, 0xFC, 0x13, 0x95, 0x2E, 0x3E, 0x05, 0xFE, 0xCE, 0xF3, 0x78, 0x92, 0x66, 0xFD, 0xFF, 0x00, 0x89, 0x6F, 0x17, 0x51, 0x10, 0x81, 0x8D, 0xE9, 0x6E, 0x4A, 0x5A, 0x86, 0xF6, 0xF3, 0x41, 0x93, 0x8E, 0xA2, 0x41, 0xED, 0x5F, 0x38, 0xFE, 0xD4, 0xDA, 0x87, 0xF6, 0xA7, 0x88, 0x34, 0xBD, 0x16, 0x36, 0xDD, 0x1D, 0xBE, 0xEB, 0xC9, 0xBF, 0x1C, 0xAA, 0x7E, 0x7F, 0xBC, 0x6C, 0x7F, 0xB4, 0x2B, 0xD6, 0xB5, 0xCF, 0x89, 0xEF, 0xE1, 0xDF, 0xD9, 0xE3, 0xC1, 0x1A, 0x3A, 0x37, 0x97, 0x7D, 0xFD, 0x92, 0xD6, 0x53, 0x44, 0x4E, 0xD6, 0x81, 0xA3, 0x99, 0x11, 0x5F, 0x1D, 0x41, 0x06, 0x16, 0x03, 0x3D, 0x58, 0x9C, 0x67, 0x0D, 0x4B, 0x19, 0x52, 0x97, 0x3B, 0xF6, 0x9B, 0x25, 0xFD, 0x7E, 0x64, 0xE5, 0xF8, 0x5A, 0xAD, 0x7B, 0x48, 0xAF, 0x2F, 0xBF, 0xFA, 0x66, 0x7F, 0x87, 0xBE, 0x34, 0xFD, 0x8B, 0xF6, 0x9A, 0xFE, 0xDC, 0x92, 0x56, 0x8F, 0x45, 0xBB, 0x90, 0x68, 0xCE, 0x5C, 0xE5, 0x52, 0xDB, 0xE5, 0x44, 0x7F, 0x40, 0x04, 0xA1, 0x64, 0x27, 0xB2, 0xB3, 0xD7, 0x7D, 0xE0, 0xDB, 0xCB, 0x7F, 0x12, 0x6A, 0xD7, 0x52, 0x08, 0x14, 0xCD, 0x78, 0x6E, 0x75, 0x38, 0xE6, 0xDC, 0x71, 0x02, 0xCC, 0xDE, 0x44, 0x78, 0x1D, 0x18, 0x48, 0x91, 0x33, 0x83, 0xD8, 0x0E, 0x3A, 0xE6, 0xAE, 0xFC, 0x07, 0xFF, 0x00, 0x82, 0x78, 0x5F, 0x78, 0xA2, 0xDA, 0xC3, 0x52, 0xF8, 0x95, 0x6F, 0xA8, 0x78, 0x7F, 0x45, 0xD4, 0xB7, 0x0B, 0x1D, 0x0C, 0x42, 0xEB, 0xA9, 0x6B, 0x28, 0x14, 0x16, 0x2E, 0xA3, 0xE6, 0xB6, 0xB7, 0x00, 0xA8, 0x67, 0x7D, 0xAE, 0x43, 0x00, 0x36, 0x6E, 0x57, 0xAE, 0xFF, 0x00, 0x56, 0xF8, 0x69, 0x27, 0x82, 0x6D, 0xE3, 0xB3, 0x93, 0xEC, 0xA8, 0xD1, 0x97, 0x74, 0x82, 0xD5, 0x71, 0x05, 0x9C, 0x09, 0x85, 0x8E, 0x14, 0xE0, 0x12, 0xA8, 0x0A, 0x0C, 0x91, 0x92, 0x73, 0xDB, 0x02, 0xBC, 0x6C, 0xB7, 0x1D, 0x4E, 0xAE, 0x25, 0xEB, 0xAF, 0xE0, 0x7D, 0x26, 0x67, 0x91, 0xE2, 0x70, 0xF8, 0x38, 0xD6, 0x9C, 0x6D, 0x17, 0xB2, 0x77, 0x4D, 0xF4, 0xBD, 0xAD, 0xB6, 0xFD, 0x8F, 0x1D, 0xF8, 0x8D, 0x6D, 0x79, 0x07, 0x87, 0x63, 0x9A, 0x0B, 0xEB, 0xAD, 0x36, 0xE6, 0xCA, 0xF7, 0xCB, 0x73, 0x6C, 0xE3, 0xE7, 0x56, 0x66, 0x51, 0x90, 0xC0, 0x86, 0x08, 0xB2, 0x87, 0x5E, 0xD9, 0x4C, 0x10, 0x54, 0x95, 0x3C, 0x75, 0xA4, 0x90, 0xDB, 0xDA, 0x6D, 0x81, 0x0A, 0xFD, 0xA2, 0xE1, 0xB7, 0x16, 0x62, 0xCD, 0x21, 0xDE, 0x14, 0xB1, 0x27, 0x92, 0x48, 0x57, 0x39, 0x3E, 0xB5, 0xD4, 0xFC, 0x4B, 0xBA, 0x6B, 0xBD, 0x66, 0x3B, 0x5D, 0xDF, 0xBB, 0xBC, 0x94, 0x2B, 0xFB, 0x32, 0x38, 0xE9, 0xEF, 0xB7, 0x27, 0xF2, 0xAE, 0x0A, 0xCD, 0x7E, 0xC0, 0x24, 0x8B, 0xFE, 0x7D, 0x9E, 0xE1, 0x99, 0x8F, 0x71, 0x1A, 0x38, 0x07, 0xF2, 0xDB, 0xF9, 0x57, 0xD7, 0x53, 0x8D, 0x9D, 0xD1, 0xF0, 0x75, 0xA4, 0xED, 0xCA, 0xCC, 0x8F, 0xDA, 0x4E, 0xE0, 0xD8, 0xFC, 0x1E, 0x86, 0x59, 0x99, 0x5A, 0x6D, 0x4B, 0x54, 0x81, 0x15, 0x07, 0x07, 0x62, 0xC7, 0x23, 0x9F, 0xCB, 0x6A, 0xFF, 0x00, 0xDF, 0x55, 0xE6, 0x5F, 0xB2, 0x87, 0xC1, 0x5B, 0x3F, 0xDA, 0x53, 0xF6, 0xAE, 0xF0, 0x1F, 0x82, 0x75, 0x1B, 0x9B, 0xCB, 0x4B, 0x2F, 0x13, 0x6A, 0x26, 0xD6, 0x7B, 0x8B, 0x4D, 0xBE, 0x7C, 0x31, 0xEC, 0x2E, 0xEC, 0x9B, 0x81, 0x5D, 0xC1, 0x54, 0x91, 0x90, 0x47, 0xB5, 0x74, 0x3F, 0xB5, 0x06, 0xAD, 0x71, 0xAD, 0xEB, 0x9E, 0x1F, 0xD0, 0xE1, 0x86, 0xE1, 0xA1, 0xB4, 0x83, 0xED, 0x32, 0x3C, 0x70, 0xB4, 0x80, 0x34, 0xAC, 0x23, 0x1C, 0x01, 0xFC, 0x22, 0x3C, 0xE3, 0xFD, 0xBA, 0xEB, 0xBF, 0x61, 0x2F, 0x0A, 0x6A, 0x7A, 0x4F, 0xED, 0x7B, 0xE0, 0x7D, 0x7B, 0x4B, 0xB2, 0xD5, 0xFC, 0xAD, 0x2E, 0x3B, 0xE5, 0x9F, 0x50, 0x16, 0x4F, 0x14, 0x36, 0x79, 0xD3, 0xAE, 0xAD, 0xA3, 0x77, 0xC0, 0xFD, 0xD4, 0xC5, 0xC2, 0xB0, 0x0C, 0xDC, 0xB3, 0xA1, 0xC6, 0x73, 0x9F, 0x17, 0x36, 0xC4, 0xF2, 0x29, 0x5B, 0x7B, 0x3B, 0x7A, 0xA5, 0xA1, 0xE8, 0xE5, 0xB8, 0x1F, 0x6A, 0xBD, 0xAC, 0xAD, 0xCB, 0x17, 0x1B, 0xAE, 0xAD, 0x37, 0xAD, 0xBF, 0xAE, 0xBB, 0x9F, 0x7A, 0xFE, 0xCB, 0x7F, 0xB2, 0x37, 0x83, 0xFF, 0x00, 0x64, 0x2F, 0x1A, 0x78, 0xC2, 0x1F, 0x08, 0xDF, 0x6B, 0x1E, 0x20, 0x5B, 0x83, 0x15, 0xB1, 0xBC, 0xD4, 0xDA, 0x23, 0x35, 0xC4, 0x88, 0x76, 0x2C, 0x49, 0xE5, 0xA2, 0xA8, 0x4F, 0x31, 0xDC, 0x0E, 0x32, 0xD9, 0xCE, 0x48, 0xDB, 0x8A, 0x3E, 0x38, 0xFF, 0x00, 0x82, 0x17, 0xF8, 0x27, 0xE2, 0x57, 0x8E, 0x35, 0x8D, 0x7B, 0x51, 0xF1, 0xD7, 0x8F, 0x24, 0xD4, 0xF5, 0xEB, 0xE9, 0xB5, 0x0B, 0xB6, 0x8F, 0xEC, 0x62, 0x31, 0x2C, 0xAE, 0xD2, 0x3E, 0xD0, 0x61, 0x24, 0x28, 0x2C, 0x40, 0x04, 0x9C, 0x00, 0x3A, 0xD7, 0xB0, 0xFE, 0xCE, 0x5A, 0x2C, 0x73, 0xF8, 0x9B, 0xED, 0x33, 0x44, 0xCD, 0x63, 0xA4, 0xED, 0x98, 0x22, 0xF4, 0x92, 0x6C, 0x15, 0x89, 0x7E, 0x8B, 0x96, 0x6F, 0xA8, 0x5A, 0xF7, 0xE8, 0x35, 0xB9, 0x6F, 0x7E, 0x54, 0x89, 0x61, 0x8F, 0xB6, 0x3A, 0xD7, 0xC2, 0xCF, 0x1B, 0x89, 0x85, 0x67, 0x52, 0x12, 0xD5, 0xEE, 0xF4, 0xE8, 0x7D, 0xFE, 0x55, 0x93, 0x61, 0x31, 0x38, 0x75, 0xED, 0xE0, 0xAD, 0x76, 0xD4, 0x75, 0xD3, 0xFA, 0xD8, 0xF8, 0x58, 0xFF, 0x00, 0xC1, 0xBD, 0xDF, 0x0D, 0x76, 0xE4, 0xF8, 0xFF, 0x00, 0xE2, 0x02, 0x9F, 0x40, 0x2C, 0x88, 0xFF, 0x00, 0xD1, 0x35, 0xEE, 0x3F, 0xF0, 0x4F, 0x8F, 0xF8, 0x26, 0xE7, 0x86, 0x7F, 0xE0, 0x9F, 0xDF, 0x1D, 0xA5, 0xF1, 0x5E, 0x87, 0xE3, 0x0F, 0x15, 0x6B, 0x5A, 0x7E, 0xBF, 0xA7, 0x49, 0xE1, 0xDD, 0x6F, 0x4C, 0xD5, 0x56, 0xDB, 0xEC, 0x77, 0x56, 0x77, 0x0E, 0x9F, 0x3B, 0xF9, 0x71, 0xA9, 0x06, 0x29, 0x15, 0x24, 0xCE, 0x7E, 0xE8, 0x90, 0x7F, 0x11, 0x35, 0xF4, 0x44, 0x16, 0xCC, 0x3E, 0xF1, 0x27, 0x9E, 0xF5, 0x62, 0x5B, 0x05, 0xBC, 0xB6, 0x92, 0x17, 0x8F, 0x74, 0x72, 0xA9, 0x47, 0x1F, 0xDE, 0x07, 0x83, 0x5C, 0xB8, 0xAC, 0xD3, 0x11, 0x5A, 0x94, 0xA8, 0xD5, 0x9B, 0x71, 0x92, 0xB3, 0xDB, 0xFC, 0x8F, 0xA2, 0xC2, 0xF0, 0xAE, 0x5D, 0x19, 0x29, 0xC2, 0x92, 0x8C, 0x96, 0xCF, 0x5D, 0x1F, 0xDE, 0x7C, 0xC3, 0xFB, 0x57, 0xFC, 0x0D, 0xD3, 0xBC, 0x6F, 0xA4, 0x78, 0x8F, 0xC1, 0xF7, 0x17, 0x5A, 0x85, 0xAD, 0x93, 0xBE, 0x60, 0xBA, 0xB5, 0x70, 0xB7, 0x96, 0x9B, 0x5C, 0x30, 0x2A, 0x4E, 0x40, 0x96, 0x36, 0x52, 0x84, 0x1C, 0x82, 0xC8, 0xC0, 0xE4, 0x12, 0x2B, 0x9D, 0x1F, 0xF0, 0x4C, 0xFB, 0xFF, 0x00, 0x04, 0x78, 0x42, 0x23, 0xE1, 0x4F, 0x17, 0xCD, 0xE2, 0x87, 0x20, 0x4C, 0x13, 0x56, 0x86, 0x3B, 0x69, 0x2E, 0x14, 0x80, 0x41, 0x49, 0x22, 0x01, 0x32, 0x46, 0x38, 0x64, 0x50, 0x49, 0xC9, 0x61, 0x5E, 0xB5, 0xF1, 0xC3, 0x4F, 0xB8, 0xB4, 0xF8, 0x96, 0xB7, 0x52, 0xB3, 0x3B, 0x6A, 0xD6, 0x71, 0xDD, 0x4A, 0x4F, 0xF1, 0xBF, 0x31, 0xC8, 0xDF, 0x8C, 0xD1, 0x4A, 0xDF, 0xF6, 0xD0, 0x9E, 0xB5, 0xE9, 0x5F, 0x04, 0x35, 0x35, 0xD4, 0x7C, 0x07, 0x69, 0x1B, 0x36, 0x64, 0xD3, 0xC9, 0xB4, 0x61, 0xE8, 0xAB, 0xCA, 0x7F, 0xE4, 0x36, 0x51, 0xF8, 0x57, 0xA9, 0xFD, 0xA5, 0x8B, 0xC2, 0xE1, 0xA9, 0xD6, 0xA3, 0x3F, 0x5D, 0x2E, 0x9E, 0x9D, 0x4F, 0x13, 0x0B, 0xC3, 0xD9, 0x7E, 0x3F, 0x1B, 0x5B, 0x0B, 0x8C, 0xA7, 0x77, 0xAD, 0x9D, 0xDA, 0x6A, 0xCF, 0xA7, 0xDF, 0xD6, 0xE7, 0xC1, 0x9E, 0x2A, 0xF0, 0x2E, 0xA9, 0xE1, 0x7B, 0xD6, 0xD2, 0xB5, 0xFD, 0x3F, 0x50, 0xD0, 0xF5, 0x21, 0xF3, 0x27, 0x9C, 0x85, 0x1D, 0xB6, 0xF4, 0x74, 0x60, 0x76, 0xC8, 0x01, 0xFE, 0x24, 0x62, 0x3D, 0x0D, 0x5A, 0xF1, 0x77, 0x80, 0x34, 0x9F, 0xDA, 0x8F, 0xE0, 0xB5, 0xCE, 0x83, 0xE2, 0x68, 0x55, 0xA6, 0x57, 0xF2, 0x65, 0x9A, 0x3C, 0x79, 0x96, 0x97, 0x4A, 0x0E, 0xCB, 0x88, 0x8F, 0x62, 0xC3, 0xE6, 0xF4, 0x39, 0x75, 0xE9, 0x5F, 0x74, 0x7C, 0x69, 0xD0, 0x6D, 0x7C, 0x51, 0xE1, 0xD6, 0xB0, 0xBB, 0xB7, 0x86, 0xEA, 0xD2, 0x40, 0x49, 0x8E, 0x45, 0xDC, 0x37, 0x0E, 0x84, 0x7A, 0x30, 0xEC, 0x46, 0x08, 0xF5, 0xAF, 0x0A, 0xD5, 0xBF, 0x62, 0x4F, 0x14, 0x7C, 0x31, 0xD4, 0x22, 0xF1, 0x15, 0x8A, 0x9B, 0xCF, 0x0B, 0xEB, 0x16, 0xFE, 0x5D, 0xEA, 0x07, 0xDD, 0x73, 0x62, 0x39, 0x31, 0x4C, 0x54, 0x7D, 0xF5, 0x56, 0xE0, 0x91, 0xF3, 0x05, 0x63, 0xC1, 0xC1, 0x35, 0xF4, 0x18, 0x1C, 0xFE, 0x96, 0x26, 0x92, 0x95, 0x7B, 0x46, 0x7F, 0x83, 0xF4, 0xFF, 0x00, 0x23, 0xE7, 0xF3, 0x2E, 0x0F, 0xAB, 0x82, 0xAE, 0xE8, 0xE1, 0xDB, 0xA9, 0x0B, 0x76, 0xD5, 0x7A, 0xF7, 0xF5, 0x5F, 0x71, 0xF1, 0xEF, 0xC3, 0x4F, 0xF8, 0x22, 0x8F, 0x85, 0x7E, 0x23, 0xDF, 0x47, 0x6F, 0x0F, 0x8F, 0xBC, 0x4D, 0x0C, 0xCC, 0xDB, 0x24, 0x43, 0x61, 0x6E, 0xCD, 0x13, 0x77, 0x1D, 0x79, 0xF6, 0x3D, 0xC5, 0x7B, 0x04, 0x9F, 0xF0, 0x6D, 0x57, 0x86, 0xED, 0x6D, 0x84, 0x92, 0x7C, 0x48, 0xF1, 0x11, 0x56, 0x50, 0x7E, 0x6D, 0x3A, 0x25, 0xE4, 0xFD, 0x1A, 0xBD, 0x5B, 0xE1, 0xA7, 0x8C, 0x6E, 0xBE, 0x0B, 0x7C, 0x4A, 0x83, 0x54, 0xB8, 0xB7, 0x2E, 0xB6, 0xEF, 0xE5, 0x5E, 0x44, 0x06, 0x77, 0xA7, 0xF7, 0x87, 0xBF, 0x70, 0x7D, 0xB1, 0x5F, 0x5C, 0x5C, 0x7C, 0x69, 0xD3, 0x6F, 0x74, 0xBB, 0x7B, 0x99, 0x2F, 0x02, 0xDB, 0xDD, 0x44, 0xB3, 0xC5, 0x9E, 0x37, 0x29, 0x00, 0x8A, 0xF2, 0xB8, 0x83, 0x15, 0x8F, 0xA1, 0x52, 0x3F, 0x56, 0x93, 0xE5, 0x6B, 0x4B, 0x6B, 0xA9, 0xEC, 0xF0, 0xAE, 0x4D, 0x93, 0xE2, 0x28, 0xC9, 0x63, 0x29, 0xC7, 0x9E, 0x2F, 0x5B, 0xB6, 0xB4, 0xFB, 0xD1, 0xF9, 0xCA, 0x7F, 0xE0, 0xDC, 0x1F, 0x0E, 0xAC, 0x7F, 0xF2, 0x50, 0xF5, 0x82, 0x73, 0xFF, 0x00, 0x3E, 0x71, 0x8F, 0xEB, 0x4D, 0x3F, 0xF0, 0x6D, 0xDE, 0x85, 0x27, 0x4F, 0x88, 0x3A, 0xB2, 0xFF, 0x00, 0xDB, 0xA2, 0x73, 0xFA, 0xD7, 0xE8, 0x37, 0x84, 0x7E, 0x28, 0x47, 0xE3, 0x4F, 0x11, 0xF9, 0x76, 0xCA, 0x45, 0xA2, 0x9C, 0x06, 0xFE, 0xF5, 0x7A, 0x14, 0xBE, 0x50, 0x8B, 0xEF, 0x76, 0xE2, 0xBC, 0x29, 0x66, 0xD9, 0x95, 0x27, 0x6A, 0x93, 0x77, 0xF9, 0x1F, 0x41, 0x2E, 0x19, 0xC8, 0xAB, 0x2B, 0xD0, 0xA4, 0x9A, 0xEF, 0x77, 0xFE, 0x67, 0xF2, 0xAE, 0x4F, 0xAD, 0x6A, 0x78, 0x17, 0x9F, 0x1B, 0xE8, 0x9F, 0xF6, 0x10, 0xB7, 0xFF, 0x00, 0xD1, 0xAB, 0x59, 0x78, 0xC5, 0x6A, 0x78, 0x10, 0x67, 0xC7, 0x3A, 0x27, 0xFD, 0x84, 0x20, 0xFF, 0x00, 0xD1, 0x8B, 0x5F, 0xA5, 0xD4, 0xF8, 0x1F, 0xA1, 0xF8, 0x25, 0x1F, 0xE2, 0x46, 0xDD, 0xD1, 0xFD, 0x27, 0x68, 0x09, 0xBB, 0x48, 0xB4, 0xFF, 0x00, 0x6A, 0x34, 0xCF, 0xFD, 0xF2, 0x2B, 0xA0, 0x82, 0xD2, 0x32, 0xE1, 0x42, 0xEE, 0xAC, 0x1F, 0x0D, 0x21, 0x93, 0x4E, 0xB0, 0x55, 0xFE, 0x28, 0xD0, 0x7E, 0x82, 0xBB, 0x88, 0x7C, 0x27, 0x71, 0x00, 0x8D, 0xBE, 0xF1, 0x6E, 0x70, 0x3B, 0x57, 0xE1, 0xF5, 0xAF, 0x7D, 0x0F, 0xEB, 0xDA, 0x5E, 0xCF, 0x95, 0x39, 0xB2, 0x8A, 0x58, 0x20, 0x1D, 0x3F, 0x4A, 0x99, 0x2C, 0x55, 0x57, 0xEE, 0xD6, 0xCD, 0xE6, 0x83, 0x25, 0x85, 0xBA, 0xC8, 0xCB, 0x85, 0xC7, 0x5A, 0xCF, 0x9F, 0x6A, 0x0E, 0x31, 0x5C, 0x9C, 0xEE, 0xF6, 0x36, 0xA7, 0x52, 0x33, 0xD6, 0x05, 0x67, 0x54, 0x8C, 0x74, 0x02, 0xBC, 0xDF, 0xE3, 0x0E, 0xA9, 0x37, 0x88, 0x0C, 0x7A, 0x3E, 0x97, 0x0C, 0xD7, 0x77, 0x37, 0x04, 0x02, 0xB1, 0x02, 0xCD, 0xF4, 0xC0, 0xAF, 0x40, 0xBC, 0x6B, 0x78, 0xA0, 0x92, 0xE2, 0xFA, 0xF2, 0x0D, 0x3E, 0xCD, 0x07, 0xCD, 0x2C, 0xCE, 0x14, 0x0A, 0xF3, 0x9D, 0x6B, 0xF6, 0xD9, 0xF0, 0x5F, 0xC2, 0x1D, 0x59, 0x2D, 0xFC, 0x23, 0x63, 0x2F, 0x89, 0x35, 0xE9, 0x1F, 0x68, 0x96, 0x35, 0xC8, 0x2D, 0xF5, 0xFF, 0x00, 0x0A, 0xF7, 0xB2, 0xBC, 0xA7, 0x13, 0x5D, 0xFB, 0x48, 0xC5, 0xD9, 0x1E, 0x5E, 0x71, 0x9C, 0x61, 0xF0, 0xB4, 0xFD, 0x9C, 0x9A, 0x73, 0x7D, 0x0E, 0x8F, 0xE1, 0x7F, 0xFC, 0x13, 0xBF, 0xC4, 0x1E, 0x29, 0xB0, 0xFB, 0x7E, 0xBF, 0x20, 0xD2, 0xAD, 0x36, 0xEF, 0xF2, 0x40, 0xDD, 0x2B, 0xFF, 0x00, 0x85, 0x6F, 0x5E, 0xFE, 0xCD, 0x1F, 0x0E, 0xBC, 0x20, 0xA2, 0x1D, 0x42, 0x38, 0x3C, 0xE5, 0x1C, 0xBD, 0xCC, 0xA0, 0x30, 0xF7, 0xF6, 0xAE, 0x6B, 0x5B, 0xFD, 0xA9, 0xBE, 0x2C, 0x78, 0xC2, 0xD6, 0x26, 0xBC, 0xB8, 0x8F, 0x45, 0x8E, 0xE1, 0x32, 0x2D, 0xED, 0x93, 0xE6, 0x41, 0xEE, 0xDE, 0xB5, 0xC5, 0xDA, 0x78, 0x2E, 0x7F, 0x14, 0x5F, 0xB6, 0xA5, 0xE2, 0x9D, 0x61, 0xAC, 0xED, 0x09, 0xCB, 0x4D, 0x3B, 0x96, 0x92, 0x5F, 0x64, 0x5E, 0xA4, 0xFD, 0x2B, 0xB2, 0x9D, 0x4A, 0xCA, 0xA3, 0x8A, 0x77, 0x7E, 0x47, 0x83, 0x87, 0xC1, 0xE3, 0x27, 0x07, 0x5F, 0x30, 0x6A, 0x11, 0x7B, 0x2E, 0xC7, 0x7D, 0xA3, 0x7E, 0xCF, 0x1F, 0x01, 0x25, 0xD5, 0xB6, 0x47, 0x63, 0x1E, 0xB5, 0xA8, 0x4C, 0x73, 0xE4, 0xDB, 0x34, 0xD7, 0x4E, 0x7D, 0x7E, 0x54, 0xCF, 0xEB, 0x81, 0x5E, 0x85, 0xA4, 0x7E, 0xCC, 0x1E, 0x01, 0x88, 0x47, 0x1D, 0x87, 0xC3, 0x3D, 0x0E, 0x3C, 0x61, 0xB7, 0xEA, 0x31, 0xC6, 0x0A, 0x7A, 0x31, 0x0A, 0x1C, 0xFE, 0x04, 0xA9, 0x3F, 0xA8, 0xC5, 0xD0, 0xBC, 0x79, 0xE0, 0xDF, 0x81, 0x3E, 0x0D, 0x8E, 0x6B, 0x7B, 0x7B, 0x8D, 0x25, 0x6F, 0x00, 0x11, 0x6E, 0x84, 0x36, 0xA5, 0xA9, 0x1E, 0x30, 0x52, 0x3E, 0xAA, 0xA4, 0xF4, 0x2F, 0x81, 0xED, 0xDE, 0xBC, 0x8F, 0xF6, 0x84, 0xFF, 0x00, 0x82, 0x88, 0x6A, 0x1E, 0x0C, 0xD1, 0xA4, 0xD3, 0xB4, 0x1B, 0x68, 0x34, 0xFD, 0x52, 0xE8, 0x10, 0x8B, 0xBF, 0xCF, 0x7B, 0x50, 0x78, 0x2C, 0xEF, 0xFC, 0x52, 0x0E, 0xE7, 0xEE, 0x83, 0xF2, 0x8D, 0xE4, 0x16, 0x5F, 0x42, 0x9E, 0x0F, 0x1F, 0x8A, 0x92, 0x8C, 0x5B, 0xF9, 0xB7, 0x6F, 0xE9, 0x1E, 0x0E, 0x2A, 0x58, 0x6A, 0x17, 0x9C, 0x1A, 0x49, 0x7F, 0x5B, 0x2B, 0x7E, 0x2C, 0xF5, 0x0F, 0xDA, 0x0B, 0xE3, 0xB7, 0xC3, 0xBF, 0xD8, 0x6F, 0x4E, 0x66, 0xD1, 0xB4, 0x2F, 0x0F, 0xDF, 0x7C, 0x43, 0xBC, 0x80, 0x8B, 0x48, 0x20, 0xB4, 0x8E, 0x1F, 0xB2, 0x21, 0x07, 0xF7, 0xB3, 0x32, 0x8D, 0xD1, 0xC5, 0xE8, 0xB9, 0xDF, 0x27, 0x4C, 0xE3, 0x2E, 0xBF, 0x97, 0x3F, 0xB4, 0x4F, 0xED, 0x59, 0xE2, 0x4F, 0x8F, 0xDE, 0x33, 0xB8, 0xBD, 0xBD, 0xD4, 0x67, 0xD7, 0x2F, 0x1D, 0xB1, 0x2D, 0xEC, 0xE7, 0x65, 0xA4, 0x23, 0x9C, 0x24, 0x48, 0xB8, 0xCA, 0x8E, 0xC1, 0x76, 0xAF, 0xFB, 0x47, 0x9A, 0xBB, 0xE3, 0xFF, 0x00, 0x1B, 0xDD, 0xEA, 0x53, 0xDD, 0xDF, 0x5E, 0x5D, 0x4D, 0x7D, 0xA9, 0x6A, 0x32, 0x34, 0x93, 0xCF, 0x3B, 0x99, 0x24, 0x99, 0xCF, 0x56, 0x62, 0x79, 0x35, 0xD7, 0xFE, 0xC0, 0xBF, 0xB1, 0xFC, 0x7F, 0x16, 0x35, 0x6D, 0x2B, 0x59, 0xF1, 0x56, 0x9F, 0x7D, 0x37, 0x84, 0xE3, 0x9E, 0x48, 0xEC, 0x6C, 0xE3, 0x4C, 0x2E, 0xAC, 0xB0, 0xB1, 0x53, 0x34, 0xAF, 0x90, 0x16, 0xD8, 0x10, 0x14, 0xE0, 0xEE, 0x95, 0xF2, 0xAA, 0x36, 0xAB, 0x1A, 0xF5, 0xB1, 0x98, 0x35, 0x92, 0xE1, 0xE3, 0x5D, 0x6B, 0x39, 0x68, 0xE4, 0xF5, 0x7E, 0x91, 0xEC, 0x8F, 0x07, 0x2B, 0x8C, 0x33, 0x8C, 0x54, 0xF0, 0xB3, 0x6E, 0xD1, 0x49, 0xB5, 0xDD, 0x5F, 0xAB, 0xEC, 0xBB, 0x0B, 0xFB, 0x21, 0x7E, 0xC6, 0x5A, 0x97, 0xC6, 0x5B, 0xFD, 0x27, 0xC4, 0xDE, 0x2E, 0xD3, 0x35, 0x2D, 0x47, 0xC2, 0x92, 0x5C, 0xA8, 0xB2, 0xB1, 0xC1, 0x86, 0x3D, 0x5D, 0x81, 0xF9, 0xA4, 0x6E, 0x82, 0x3B, 0x54, 0x19, 0x2C, 0xFF, 0x00, 0x7E, 0x52, 0x02, 0x26, 0xE2, 0x49, 0x5E, 0xF6, 0xF7, 0xE1, 0x53, 0x78, 0xC7, 0xE3, 0x1F, 0x87, 0x63, 0xD7, 0x84, 0x30, 0xEB, 0x5A, 0x68, 0x96, 0x0B, 0xFB, 0x7B, 0x59, 0x12, 0x58, 0xF4, 0xA5, 0x8E, 0x09, 0x24, 0xF2, 0xA2, 0x65, 0xF9, 0x33, 0x17, 0xCA, 0x7C, 0xB4, 0xC2, 0x46, 0x82, 0xD9, 0x0A, 0xFC, 0xED, 0x9F, 0xB2, 0xA1, 0xF8, 0x55, 0x60, 0xDE, 0x15, 0x97, 0x49, 0xB8, 0xB8, 0xD5, 0x26, 0x8E, 0xE2, 0x61, 0x3C, 0xD2, 0xA5, 0xEC, 0xB6, 0xD2, 0x3B, 0x28, 0x55, 0x00, 0x18, 0x59, 0x36, 0x46, 0x15, 0x55, 0x44, 0x69, 0xB5, 0x36, 0xA8, 0x18, 0xEB, 0x9E, 0x1F, 0x48, 0xFD, 0x9C, 0xED, 0xFC, 0x20, 0xDA, 0x9D, 0xFA, 0xC8, 0xF7, 0xDA, 0x8D, 0xE4, 0x52, 0x69, 0xD6, 0x51, 0xAA, 0xAC, 0x56, 0xFA, 0x4D, 0x94, 0xB2, 0xA9, 0x68, 0xE2, 0x8D, 0x40, 0x50, 0x48, 0x0A, 0xCE, 0xF8, 0xDE, 0xE5, 0x72, 0x49, 0xAF, 0x81, 0xC6, 0xE2, 0x2A, 0x62, 0xAA, 0xF3, 0xD5, 0x6D, 0x9F, 0xB8, 0x70, 0xCD, 0x6C, 0x26, 0x53, 0x42, 0xA5, 0x3C, 0x32, 0x4A, 0x4D, 0x59, 0x59, 0x59, 0xEB, 0x75, 0xA3, 0xE8, 0xB5, 0xD6, 0xF6, 0x7A, 0x27, 0x7E, 0x85, 0x8F, 0x85, 0xFE, 0x04, 0x7F, 0x85, 0xFE, 0x04, 0xB7, 0xD1, 0x24, 0xD5, 0x2F, 0x35, 0x6F, 0xB2, 0x3C, 0xBE, 0x5D, 0xCD, 0xDF, 0xFA, 0xD2, 0x8C, 0xEC, 0xCA, 0x84, 0xF4, 0xC2, 0xEE, 0xDA, 0xB8, 0x03, 0x0A, 0x14, 0x76, 0xC9, 0x87, 0xC7, 0x16, 0xBF, 0xDA, 0xDA, 0x4C, 0xD1, 0xB2, 0xFC, 0xB8, 0x24, 0x03, 0xEA, 0x2B, 0xB8, 0xD5, 0xF4, 0xD8, 0x54, 0x0F, 0x99, 0x63, 0x19, 0xEA, 0x4E, 0x2B, 0x87, 0xF8, 0x8F, 0x71, 0x25, 0xA6, 0x95, 0x22, 0xC3, 0x89, 0x25, 0xFB, 0xAA, 0x07, 0x20, 0x7F, 0x9F, 0x4F, 0xE5, 0xD6, 0x95, 0x3D, 0x24, 0xAC, 0x44, 0x71, 0x0B, 0x11, 0x29, 0x4A, 0x7A, 0xB7, 0x7B, 0xF9, 0x9F, 0x20, 0xFC, 0x59, 0xD1, 0x9B, 0x4B, 0xF1, 0x04, 0xC5, 0xD8, 0x2C, 0x67, 0x39, 0x62, 0x7A, 0x57, 0x95, 0xDB, 0xFC, 0x30, 0x93, 0x50, 0xBF, 0x53, 0xE5, 0xB0, 0xFB, 0x43, 0x95, 0x87, 0x2A, 0x73, 0x21, 0x91, 0xB3, 0xBB, 0xF0, 0xC2, 0x81, 0xEB, 0x93, 0xE8, 0x6B, 0xEB, 0x0F, 0x15, 0x7C, 0x30, 0xB6, 0xBC, 0xB2, 0xFB, 0x55, 0xC2, 0xAD, 0xE5, 0xE4, 0x84, 0xED, 0x4C, 0xEE, 0x4D, 0xDE, 0xDD, 0xB8, 0xEA, 0x4F, 0x41, 0xF8, 0x66, 0xB8, 0x9B, 0x4B, 0x4D, 0x33, 0xC2, 0x56, 0xDA, 0xA7, 0x88, 0x75, 0x7B, 0xD8, 0x6C, 0xF4, 0x8D, 0x06, 0x16, 0x9A, 0x4B, 0xC9, 0x14, 0xB2, 0x2B, 0x0C, 0x80, 0x40, 0xEA, 0xD8, 0xCF, 0xCA, 0x8B, 0xCB, 0x1C, 0x00, 0x32, 0xC2, 0xBF, 0x40, 0xA3, 0x9F, 0xC6, 0x18, 0x7B, 0x47, 0x57, 0x13, 0xF2, 0x8C, 0x4F, 0x05, 0x54, 0xA9, 0x8E, 0xE7, 0xAB, 0x65, 0x09, 0x3B, 0xFA, 0x2F, 0x3F, 0x91, 0xE1, 0xBF, 0x11, 0x7F, 0xE0, 0x97, 0xDE, 0x0D, 0x5F, 0x87, 0x97, 0x9F, 0x11, 0x35, 0xFF, 0x00, 0x18, 0x6B, 0x16, 0x7A, 0xD6, 0xA5, 0x34, 0xCF, 0xA7, 0x69, 0x51, 0x47, 0x6C, 0x6D, 0x6E, 0x52, 0xDD, 0x42, 0x60, 0xF9, 0x89, 0xB9, 0x22, 0x1B, 0x19, 0xA4, 0x90, 0xEE, 0x01, 0x0A, 0x90, 0x8E, 0xCC, 0x88, 0xFD, 0xD7, 0xEC, 0x09, 0xFB, 0x3B, 0x78, 0x23, 0x48, 0xF1, 0x63, 0xB6, 0x9B, 0x6F, 0x79, 0xAE, 0xEB, 0x3A, 0x76, 0x9B, 0xF6, 0x89, 0xBC, 0x53, 0x7F, 0xA7, 0xBC, 0x6D, 0x15, 0xCC, 0xB8, 0x2A, 0x6C, 0x51, 0xC3, 0x45, 0x6F, 0xB5, 0x5F, 0x70, 0x2F, 0xBE, 0x56, 0xCF, 0xF0, 0xAA, 0xB2, 0x9B, 0x50, 0x78, 0x57, 0xC4, 0xFF, 0x00, 0x1D, 0x7E, 0x05, 0x41, 0xE2, 0xED, 0x69, 0x5A, 0x08, 0xF5, 0xCB, 0x48, 0xE6, 0x22, 0xE9, 0x48, 0x16, 0xFA, 0x34, 0x12, 0x34, 0x56, 0x7A, 0x55, 0xAA, 0x46, 0xBB, 0x1A, 0x7B, 0x89, 0x55, 0xA6, 0x60, 0x31, 0xB8, 0xBD, 0xBE, 0x4F, 0xCA, 0x82, 0xBD, 0xFB, 0xF6, 0x2F, 0xB1, 0xBA, 0xD1, 0xBE, 0x02, 0xD9, 0xE8, 0xF7, 0xAC, 0xC6, 0xE7, 0xC3, 0xD7, 0x77, 0x5A, 0x79, 0x05, 0xB7, 0x00, 0xA9, 0x3C, 0x80, 0x00, 0x7B, 0x81, 0x82, 0x3F, 0x0A, 0xF8, 0xAC, 0x46, 0x61, 0x88, 0xAD, 0x36, 0xAA, 0x49, 0xFA, 0x7E, 0x6B, 0xFA, 0xEA, 0x7E, 0xA5, 0x96, 0xF0, 0xF6, 0x03, 0x0B, 0x80, 0xFA, 0xD5, 0x38, 0xA9, 0x36, 0xD2, 0x5D, 0x97, 0x69, 0x59, 0xAD, 0x5B, 0xB6, 0xDA, 0x59, 0x34, 0xCD, 0xCD, 0x6B, 0xC3, 0x11, 0xF8, 0x5F, 0xC1, 0xA9, 0xA6, 0x5A, 0xC9, 0x79, 0x3C, 0x69, 0xBD, 0x9A, 0x4B, 0x99, 0xDA, 0xE2, 0x79, 0x37, 0x31, 0x77, 0x67, 0x76, 0x24, 0xB3, 0x33, 0x12, 0x7D, 0x39, 0xC0, 0x00, 0x60, 0x57, 0xC8, 0x9F, 0x11, 0xF5, 0xC5, 0xD6, 0xAF, 0xF5, 0x3B, 0xD8, 0xF6, 0xAD, 0xBE, 0xF1, 0x69, 0x6D, 0x83, 0x90, 0xC8, 0x99, 0x2C, 0xC0, 0xF7, 0x0C, 0xCD, 0x90, 0x7D, 0x30, 0x3B, 0x57, 0xD4, 0x5F, 0xB4, 0xFF, 0x00, 0x8B, 0x4F, 0x86, 0x3C, 0x07, 0x71, 0x1C, 0x6C, 0x52, 0x7B, 0xE0, 0x62, 0x56, 0x1D, 0x55, 0x4F, 0xDE, 0x3F, 0x5C, 0x67, 0x1E, 0x87, 0x07, 0xD6, 0xBE, 0x4E, 0xF1, 0x6E, 0xDB, 0x28, 0xE3, 0xB5, 0x5D, 0xAA, 0x90, 0xAF, 0x38, 0xE0, 0x64, 0xF2, 0xC7, 0xF3, 0x26, 0xBE, 0xA3, 0x86, 0xE8, 0xBB, 0x73, 0x74, 0x3E, 0x07, 0x8E, 0xB1, 0x49, 0xB5, 0x4E, 0xF7, 0x7D, 0x7D, 0x59, 0xE0, 0x3E, 0x2A, 0xD0, 0x24, 0xD6, 0x35, 0x39, 0xE6, 0x5C, 0x1F, 0xEC, 0xFD, 0x41, 0xE5, 0x61, 0x9C, 0x31, 0x06, 0x16, 0x0A, 0x17, 0xDC, 0xB9, 0x5F, 0xC3, 0x3F, 0x8F, 0x17, 0x26, 0x9E, 0xCD, 0x04, 0xD2, 0xB2, 0xFC, 0xD7, 0x50, 0xDC, 0x90, 0x3D, 0x77, 0xA8, 0xC7, 0xF3, 0xAF, 0x46, 0x92, 0x59, 0x16, 0xEF, 0x54, 0xBB, 0x2D, 0xB6, 0x19, 0xAE, 0xB0, 0x83, 0xFB, 0xED, 0x92, 0x17, 0x1F, 0x4C, 0xE7, 0xF2, 0xAC, 0x6D, 0x73, 0x46, 0x10, 0xDD, 0xDB, 0xAC, 0x6A, 0xBB, 0x20, 0xB5, 0x10, 0xB0, 0x1D, 0x98, 0xE3, 0x35, 0xFA, 0x15, 0x39, 0x3B, 0x9F, 0x8A, 0xD6, 0xA2, 0x9E, 0xA8, 0xB1, 0xA5, 0xFC, 0x27, 0xB5, 0xF1, 0x45, 0xC5, 0x8D, 0xB7, 0xDA, 0xEF, 0x2D, 0xEF, 0x2E, 0x27, 0x0D, 0x98, 0xA4, 0x55, 0xE1, 0x63, 0x39, 0xC6, 0x41, 0xC7, 0xF0, 0xF3, 0xD4, 0x67, 0x23, 0x9C, 0x57, 0xB6, 0x7E, 0xCC, 0x7E, 0x1D, 0x9F, 0x44, 0xF8, 0x7B, 0x67, 0x6B, 0xF6, 0x75, 0x7D, 0x46, 0xEA, 0xEA, 0x65, 0x58, 0x20, 0xCB, 0x19, 0x1D, 0xEE, 0x1C, 0x47, 0x1A, 0xE4, 0x02, 0x4E, 0xD2, 0x8B, 0xC8, 0x07, 0x8E, 0x71, 0xD2, 0xBC, 0x8F, 0xC0, 0xFA, 0xB4, 0x3A, 0x87, 0xC6, 0x0D, 0x27, 0x4C, 0x66, 0x39, 0x5B, 0x69, 0x65, 0x9B, 0x07, 0xFD, 0x54, 0x4C, 0x54, 0x3B, 0x13, 0xDB, 0x08, 0xAD, 0x8F, 0x76, 0x1E, 0x95, 0xF7, 0x16, 0x89, 0xA6, 0x68, 0xFF, 0x00, 0xB1, 0x8D, 0xB3, 0xB6, 0xAC, 0xD6, 0x7E, 0x24, 0xF8, 0x91, 0x75, 0x19, 0x95, 0x2C, 0xA0, 0x6D, 0xB6, 0x7A, 0x1C, 0x6F, 0xD4, 0xBB, 0x63, 0x21, 0x98, 0x13, 0xD0, 0x06, 0x61, 0xF2, 0xA8, 0x54, 0x2D, 0x23, 0x7C, 0x87, 0x17, 0x63, 0xA9, 0xE1, 0xA9, 0xC5, 0xCF, 0x77, 0x7B, 0x2E, 0xE7, 0xD8, 0x70, 0x9E, 0x45, 0x5F, 0x34, 0xA8, 0xF0, 0xF4, 0x74, 0x82, 0x6B, 0x99, 0xF6, 0xD1, 0xFE, 0x7D, 0x3A, 0x75, 0x3D, 0x7F, 0xE1, 0xBF, 0xC2, 0x94, 0xF0, 0x17, 0x84, 0x20, 0xB5, 0x90, 0xC6, 0x64, 0x8D, 0x7C, 0xEB, 0xC9, 0xFA, 0x2B, 0xC8, 0x47, 0xCC, 0xD9, 0x3F, 0xC2, 0x30, 0x14, 0x67, 0xF8, 0x54, 0x66, 0xB6, 0xBC, 0x35, 0xE2, 0x5F, 0x0F, 0x6A, 0xFA, 0xD7, 0xF6, 0x65, 0x8E, 0xB5, 0xA4, 0xDF, 0x6A, 0x0B, 0x19, 0x94, 0xDB, 0x5B, 0x5D, 0xC7, 0x2C, 0x9B, 0x01, 0x00, 0xB6, 0x14, 0x93, 0xC1, 0x65, 0xCF, 0xD4, 0x57, 0x82, 0xE9, 0x7F, 0x0B, 0x7E, 0x28, 0x7E, 0xD4, 0xCE, 0x9A, 0x86, 0xA5, 0x70, 0x6D, 0xF4, 0x59, 0x88, 0x92, 0x27, 0xBD, 0x63, 0x6D, 0x62, 0xAB, 0xD8, 0xC1, 0x6E, 0xA0, 0x97, 0xF6, 0x66, 0x1C, 0xFF, 0x00, 0xCF, 0x4A, 0xF3, 0x7F, 0xDB, 0x4B, 0xC0, 0x7E, 0x35, 0xFD, 0x88, 0x23, 0xF0, 0xAF, 0x8A, 0x3C, 0x2F, 0xAD, 0x5A, 0xEA, 0x0C, 0xAD, 0x3C, 0x97, 0x13, 0xB6, 0x99, 0xB7, 0xEC, 0x92, 0xC5, 0xB0, 0xAF, 0xCB, 0xE6, 0x92, 0x63, 0x91, 0x5D, 0xD1, 0x81, 0x3D, 0x32, 0x0F, 0x0D, 0x5F, 0x9B, 0xC7, 0x1F, 0x56, 0xAC, 0xAC, 0x96, 0xFD, 0xD9, 0xFB, 0xC6, 0x17, 0x86, 0xF0, 0xF0, 0xB5, 0x0A, 0x6F, 0x5E, 0x9D, 0xB4, 0x3E, 0xEC, 0x87, 0x4E, 0x51, 0xD6, 0xA6, 0x58, 0x00, 0x1D, 0x06, 0x3A, 0x55, 0x88, 0x6F, 0x22, 0xBF, 0xB3, 0x8A, 0xE2, 0x1F, 0xF5, 0x37, 0x08, 0xB2, 0xC7, 0xFE, 0xEB, 0x0C, 0x8F, 0xE6, 0x29, 0x93, 0x30, 0x89, 0x0B, 0x33, 0x6D, 0x55, 0xEE, 0x7B, 0x55, 0xF3, 0x36, 0x67, 0x1A, 0x31, 0x89, 0xE4, 0xDF, 0xB5, 0x05, 0xA2, 0xAB, 0x78, 0x76, 0xF0, 0x2E, 0x0C, 0x66, 0x7B, 0x46, 0x3E, 0xAA, 0x76, 0xC8, 0x83, 0xF0, 0x26, 0x53, 0xF8, 0xD4, 0x5F, 0xB3, 0x45, 0xF7, 0xDB, 0x3C, 0x71, 0x36, 0x8F, 0xBB, 0x0B, 0xA9, 0x41, 0xE6, 0x2F, 0xFB, 0xF1, 0x9E, 0x83, 0xDC, 0xAB, 0x31, 0xFA, 0x25, 0x6B, 0xFE, 0xD2, 0x11, 0x2D, 0xE7, 0x80, 0x6D, 0xE7, 0x46, 0x56, 0xFB, 0x3D, 0xFC, 0x4C, 0x48, 0x3D, 0x32, 0x19, 0x3F, 0xF6, 0x61, 0x5E, 0x77, 0xF0, 0x8F, 0xC4, 0x2D, 0xE1, 0x6F, 0x8A, 0xFE, 0x19, 0xBE, 0xDD, 0xB5, 0x62, 0xD4, 0x60, 0x89, 0xDB, 0x3F, 0x76, 0x39, 0x4F, 0x93, 0x21, 0xFC, 0x12, 0x46, 0x35, 0xF6, 0x18, 0x1A, 0x1F, 0x58, 0xCA, 0xE5, 0x4D, 0xEE, 0xAF, 0xF7, 0xAD, 0x4F, 0xCF, 0x33, 0x2A, 0x9F, 0x53, 0xCE, 0x95, 0x68, 0x7D, 0xAE, 0x57, 0xF7, 0xE8, 0xFF, 0x00, 0xCC, 0xFA, 0xCB, 0x53, 0xF8, 0x57, 0x63, 0x71, 0x69, 0xB5, 0xD5, 0x99, 0xBA, 0xF2, 0x69, 0xDB, 0xA7, 0xB0, 0xD3, 0xA2, 0xB1, 0x69, 0x98, 0xC1, 0x1A, 0x04, 0x50, 0x7B, 0x0F, 0x43, 0x5D, 0x45, 0xED, 0x95, 0xC3, 0xC3, 0x22, 0xC7, 0xB7, 0xCC, 0x3D, 0x37, 0x1E, 0x2B, 0x36, 0xEF, 0xC3, 0xBE, 0x5E, 0x9A, 0xCD, 0x73, 0xB5, 0xA4, 0x04, 0xE5, 0x81, 0xCE, 0x00, 0x27, 0x18, 0xE9, 0xDB, 0xAD, 0x7C, 0x9C, 0xB5, 0x56, 0xB9, 0xF5, 0xF4, 0x71, 0x11, 0xE6, 0xE6, 0x9A, 0xD4, 0xF9, 0x0B, 0xE3, 0xAF, 0x86, 0x2D, 0x74, 0x9F, 0x17, 0x5D, 0xC2, 0x60, 0x8D, 0xB9, 0xCA, 0x60, 0x63, 0x7C, 0x2F, 0xCA, 0x8F, 0xC3, 0xA7, 0xD5, 0x6B, 0x4F, 0xE0, 0x5D, 0x8E, 0x9D, 0xF1, 0x4F, 0xE1, 0xEE, 0xA1, 0xE0, 0xBD, 0x52, 0x65, 0x87, 0x58, 0xD0, 0xD9, 0xA5, 0xD2, 0xAE, 0x18, 0xFC, 0xCF, 0x13, 0xF2, 0x17, 0xDC, 0x06, 0xCF, 0x1E, 0xF5, 0x7B, 0xF6, 0xAF, 0xD1, 0xDE, 0xC2, 0xE7, 0x42, 0xD4, 0x1A, 0x36, 0x8F, 0xED, 0x31, 0xCB, 0x06, 0x4F, 0xF1, 0x05, 0x21, 0x87, 0xFE, 0x86, 0x7F, 0x3A, 0xF1, 0x11, 0xE2, 0x19, 0x3C, 0x25, 0xE2, 0x0B, 0x5D, 0x42, 0x37, 0x6D, 0xCA, 0xC6, 0x30, 0xCA, 0xD8, 0x60, 0xAD, 0xDB, 0x3E, 0xC7, 0x9A, 0xFD, 0x17, 0x01, 0x09, 0x62, 0x32, 0xF8, 0xB4, 0xF5, 0xDD, 0x3F, 0x34, 0xED, 0xF8, 0x9F, 0x9E, 0xE6, 0x2E, 0x9D, 0x0C, 0xC2, 0x77, 0x8F, 0xBB, 0xB3, 0x5D, 0xD3, 0x4B, 0xF2, 0xFD, 0x0E, 0x9F, 0xFE, 0x12, 0x9D, 0x7B, 0xE0, 0xFE, 0xBD, 0x35, 0x94, 0xC2, 0x4B, 0x79, 0xA1, 0x25, 0x4A, 0x1F, 0xBA, 0x7D, 0xC7, 0xB1, 0xAF, 0x4F, 0xF0, 0x27, 0xC7, 0x4D, 0x57, 0xC5, 0x22, 0x1B, 0x65, 0x42, 0xD8, 0x40, 0x0B, 0x67, 0xA9, 0xAF, 0x37, 0xF1, 0x17, 0xC4, 0x2B, 0x7F, 0x88, 0x3A, 0x57, 0xD9, 0x75, 0xC0, 0xBF, 0xDA, 0x16, 0xE3, 0xFD, 0x1E, 0xEB, 0x1C, 0xC8, 0xBF, 0xDD, 0x6F, 0xF1, 0xAE, 0x9B, 0xE0, 0x66, 0xAD, 0xA7, 0xD9, 0xDE, 0x2A, 0xCB, 0x2C, 0x71, 0xC9, 0x18, 0x18, 0xFF, 0x00, 0x6C, 0x56, 0x59, 0x85, 0x18, 0xBA, 0x2E, 0x73, 0x87, 0xBC, 0xBF, 0xAB, 0x9C, 0x78, 0x09, 0x4A, 0x18, 0x8B, 0x61, 0xEA, 0xFE, 0xE9, 0xF4, 0x7B, 0xAF, 0x26, 0x7F, 0x3F, 0x39, 0xCF, 0xFF, 0x00, 0xAA, 0xB5, 0x7C, 0x0D, 0xFF, 0x00, 0x23, 0xCE, 0x8B, 0xFF, 0x00, 0x61, 0x08, 0x3F, 0xF4, 0x62, 0xD6, 0x40, 0x6C, 0xAF, 0x35, 0xAD, 0xE0, 0x5F, 0xF9, 0x1E, 0x34, 0x4F, 0xFB, 0x08, 0x5B, 0xFF, 0x00, 0xE8, 0xC5, 0xAF, 0xA5, 0xA9, 0xF0, 0xB3, 0xF2, 0x7A, 0x5F, 0xC4, 0x5E, 0xA8, 0xFE, 0x94, 0xFC, 0x1A, 0xF9, 0x83, 0x4D, 0xCF, 0x65, 0x8F, 0x3F, 0x90, 0xAF, 0x6D, 0xD2, 0x75, 0x5B, 0x3B, 0x6D, 0xB1, 0xC9, 0x22, 0x79, 0x8C, 0x38, 0x19, 0xE6, 0xBC, 0x1F, 0x4A, 0x66, 0x8F, 0xC3, 0xF0, 0xED, 0xE1, 0x85, 0xB8, 0x20, 0xFB, 0xED, 0x15, 0x05, 0xEF, 0xC4, 0x05, 0xF0, 0x3E, 0x89, 0x2E, 0xAD, 0xAA, 0xDD, 0xF9, 0x69, 0x08, 0xC2, 0x96, 0x3C, 0xB9, 0xEC, 0x07, 0xAD, 0x7E, 0x2F, 0x1C, 0x3B, 0xAB, 0xB6, 0xF7, 0x3F, 0xAC, 0x6B, 0x53, 0x8D, 0x48, 0xA5, 0x37, 0x65, 0x6B, 0xB7, 0xD1, 0x7A, 0x9E, 0xDB, 0xE3, 0x8F, 0x16, 0x58, 0x69, 0xBE, 0x19, 0xB9, 0x9A, 0xF2, 0x68, 0xA0, 0x8E, 0x20, 0x5B, 0xCC, 0x66, 0xC0, 0xC5, 0x7C, 0xAB, 0xF1, 0x0F, 0xF6, 0xCB, 0x55, 0xBA, 0x6B, 0x6F, 0x0D, 0xDA, 0x8B, 0xC6, 0x56, 0xC1, 0x9E, 0x41, 0xFB, 0xB0, 0x47, 0xF3, 0xAF, 0x3C, 0xF8, 0xA7, 0xF1, 0x77, 0x58, 0xF8, 0xC3, 0x7F, 0xFE, 0x91, 0x71, 0x35, 0xB6, 0x91, 0x1F, 0xFA, 0xAB, 0x65, 0x6C, 0x6F, 0xF7, 0x6F, 0x5A, 0xEB, 0x7F, 0x67, 0xDF, 0x80, 0xD1, 0xF8, 0xA0, 0x7F, 0x6B, 0x6A, 0x48, 0x2D, 0xF4, 0x9B, 0x63, 0x95, 0x0C, 0x36, 0xF9, 0xE4, 0x7F, 0x4A, 0xFB, 0x1C, 0x27, 0x0E, 0xE1, 0xB2, 0xFA, 0x1F, 0x5C, 0xCD, 0x35, 0x7D, 0x22, 0xBB, 0xF6, 0xF3, 0x67, 0xC6, 0xBC, 0xF2, 0xBD, 0x7A, 0xAF, 0x05, 0x95, 0xEC, 0xDE, 0xB2, 0x7F, 0x9A, 0xEC, 0x8C, 0x6B, 0xCD, 0x03, 0x5D, 0xF8, 0xAD, 0x67, 0x7D, 0xE2, 0x4F, 0x16, 0xDF, 0x5C, 0x43, 0xA5, 0xDB, 0xC4, 0xD3, 0x47, 0x6A, 0x84, 0xAC, 0x67, 0x03, 0x80, 0x07, 0xA6, 0x6B, 0x6F, 0xF6, 0x52, 0xF0, 0xD7, 0x84, 0x3C, 0x03, 0xE1, 0xE9, 0xBC, 0x51, 0xAD, 0xB4, 0x4D, 0x7D, 0x75, 0xB8, 0xDB, 0xAB, 0xF3, 0xE4, 0xAE, 0x4E, 0x30, 0x3D, 0x4D, 0x75, 0x1F, 0xB4, 0x46, 0xB1, 0x69, 0x71, 0xF0, 0x4B, 0x58, 0x93, 0x4F, 0x64, 0xFB, 0x39, 0xB9, 0x8E, 0xC2, 0x2F, 0x2F, 0xEE, 0xF1, 0xCB, 0x01, 0xF9, 0x57, 0x81, 0x78, 0x5A, 0xC7, 0x53, 0xD5, 0xFC, 0x3D, 0x6D, 0xF6, 0x3B, 0x5B, 0x8B, 0xB6, 0x8D, 0x08, 0x18, 0xCE, 0xC4, 0xEB, 0xD4, 0xF4, 0x02, 0xBD, 0x7A, 0x14, 0xEB, 0x63, 0xB0, 0x4D, 0xD7, 0x97, 0xB1, 0x8C, 0xA5, 0xF0, 0xED, 0x68, 0xAD, 0x97, 0xAB, 0x7B, 0x98, 0x62, 0xE5, 0x87, 0xC1, 0x63, 0x14, 0x28, 0xC3, 0xDB, 0x4D, 0x46, 0xFC, 0xDB, 0xFB, 0xCD, 0xEA, 0xFD, 0x12, 0x56, 0x48, 0xF6, 0x3F, 0x89, 0x7F, 0xB4, 0xFC, 0x9A, 0xB5, 0xCA, 0xDB, 0xE8, 0xF6, 0xEB, 0x6E, 0xB9, 0xDA, 0xB2, 0x3F, 0xDF, 0x7F, 0xA0, 0xED, 0x59, 0x36, 0x9F, 0x13, 0xDB, 0xC3, 0x1F, 0xE9, 0x0A, 0xCB, 0xAA, 0x6B, 0xAD, 0xC8, 0xBA, 0x9F, 0xE7, 0x8E, 0xD3, 0xDA, 0x35, 0x3C, 0x64, 0x7A, 0xD7, 0x96, 0xE8, 0xDA, 0x45, 0xC4, 0x17, 0x72, 0xDC, 0x5E, 0x36, 0xEB, 0x82, 0xD8, 0x18, 0x3F, 0x2A, 0x8F, 0x6A, 0xD2, 0x92, 0x71, 0x02, 0x6E, 0x73, 0xB5, 0x57, 0x9C, 0xD7, 0xB7, 0x84, 0xC9, 0x70, 0xB8, 0x78, 0x72, 0x51, 0x8E, 0x9F, 0x8B, 0xF5, 0x67, 0x85, 0x8C, 0xCE, 0xF1, 0x58, 0x89, 0x5E, 0xB4, 0x9B, 0x7F, 0x82, 0xF4, 0x5F, 0xA9, 0x73, 0xC6, 0xFF, 0x00, 0x11, 0x6E, 0x2C, 0x84, 0xDA, 0xD6, 0xA1, 0x77, 0x71, 0x75, 0x7C, 0xC7, 0xE5, 0x76, 0x72, 0x64, 0x91, 0xCF, 0xDD, 0x50, 0x7B, 0x7E, 0x1D, 0x2B, 0xC5, 0xF5, 0x91, 0x75, 0x7B, 0x2D, 0xC6, 0xA3, 0xA8, 0x48, 0xAB, 0x24, 0x98, 0x67, 0x18, 0xFB, 0xBF, 0xDD, 0x40, 0x3F, 0x40, 0x3B, 0x0E, 0x49, 0xAE, 0x8F, 0x5C, 0xD5, 0x5B, 0xC4, 0x3A, 0xA7, 0xDA, 0x25, 0xCF, 0x93, 0x6E, 0x71, 0x0A, 0x1E, 0xDF, 0xED, 0x11, 0xEA, 0x6B, 0x2F, 0xE2, 0x0F, 0x83, 0xF5, 0x2B, 0x6F, 0xEC, 0xAF, 0xED, 0x18, 0xDB, 0x4F, 0xB1, 0xD4, 0x23, 0x37, 0x91, 0xA4, 0x8D, 0xE5, 0xCD, 0x3D, 0xB8, 0xE3, 0xCD, 0x0B, 0xD5, 0x51, 0xDB, 0x2A, 0xAC, 0xD8, 0xDC, 0x15, 0xCA, 0xE7, 0x19, 0xAF, 0x56, 0x11, 0xA7, 0x49, 0xA8, 0xBB, 0x26, 0xF6, 0x5F, 0xA2, 0xF9, 0x1F, 0x3D, 0x88, 0xA9, 0x3A, 0x91, 0x72, 0xD5, 0xA5, 0xFD, 0x6A, 0x70, 0x11, 0xE9, 0x87, 0x58, 0xD4, 0x9A, 0xF2, 0xE5, 0x5B, 0xEC, 0xEB, 0xC4, 0x4A, 0x7E, 0xEB, 0xF5, 0xFD, 0x3F, 0x9D, 0x7D, 0xA1, 0xFB, 0x0C, 0xFE, 0xD1, 0x27, 0x45, 0xF0, 0xB6, 0x9B, 0xE1, 0x0F, 0x12, 0x7D, 0xA2, 0xCE, 0x26, 0x05, 0xB4, 0x0B, 0xEB, 0x84, 0xD9, 0x05, 0xCC, 0x05, 0xB0, 0x90, 0x6E, 0x3C, 0x70, 0xDB, 0xD6, 0x36, 0xFB, 0xA4, 0x2E, 0xC0, 0x43, 0x28, 0x0F, 0x97, 0xFB, 0x3F, 0x7E, 0xC8, 0x1A, 0x3E, 0x9B, 0xE0, 0x8D, 0x43, 0xE2, 0x6F, 0xC5, 0x28, 0xD2, 0xCF, 0xC2, 0x9E, 0x1F, 0xB6, 0x17, 0x16, 0x9A, 0x2B, 0x80, 0xB2, 0x6A, 0x52, 0x11, 0xFB, 0x88, 0xDD, 0x0F, 0xFC, 0xF4, 0x3B, 0x42, 0xC6, 0x70, 0x30, 0x77, 0x49, 0x84, 0xF9, 0x5B, 0x73, 0xF6, 0x3A, 0xD1, 0x6E, 0x7F, 0x69, 0x6F, 0x89, 0x5E, 0x22, 0xF8, 0xA1, 0xAE, 0x5B, 0xC4, 0xDA, 0x75, 0xBD, 0xC3, 0x69, 0x7A, 0x2D, 0x98, 0x4C, 0xDB, 0x0D, 0xA8, 0x03, 0xB2, 0x03, 0xD5, 0x23, 0x42, 0x88, 0xB9, 0x18, 0x24, 0xB3, 0x1F, 0x9D, 0x49, 0xAF, 0x8C, 0xE2, 0x8C, 0xD3, 0x0B, 0x8A, 0xC2, 0xD4, 0x56, 0xBC, 0x29, 0xFD, 0xAE, 0xF3, 0xE9, 0x18, 0xF7, 0xFE, 0xF3, 0xDA, 0xDB, 0x6A, 0x7A, 0xBC, 0x2B, 0x81, 0xC4, 0x61, 0x31, 0xF1, 0x71, 0x7E, 0xFD, 0x4D, 0xE3, 0xFD, 0xCD, 0x1B, 0x94, 0xBB, 0x7F, 0x75, 0x6F, 0x76, 0xAF, 0xD9, 0xFD, 0x38, 0xB7, 0x60, 0xE3, 0x3D, 0x7A, 0x1E, 0x6A, 0x3B, 0x89, 0x16, 0x64, 0xC7, 0x3D, 0x3F, 0x84, 0xF3, 0x59, 0x2F, 0xE0, 0x9B, 0x8F, 0x0E, 0x2B, 0x36, 0x97, 0x74, 0xAB, 0x66, 0xBC, 0xFD, 0x92, 0xE9, 0xC9, 0x8E, 0x15, 0xF4, 0x8E, 0x4E, 0x59, 0x00, 0xE4, 0xED, 0x60, 0xEA, 0x00, 0x0A, 0xBB, 0x07, 0x42, 0xD2, 0xE6, 0xED, 0x6D, 0x62, 0x9A, 0xE2, 0xC3, 0x51, 0xB1, 0x5B, 0x84, 0x12, 0x20, 0xB9, 0x80, 0xC7, 0xBD, 0x4F, 0x20, 0x83, 0xD0, 0xF1, 0xCE, 0x01, 0xC8, 0xCE, 0x08, 0x07, 0x8A, 0xFC, 0xB6, 0x9D, 0x68, 0x4F, 0x63, 0xF6, 0x3F, 0x67, 0x18, 0xB5, 0xAE, 0xA4, 0x17, 0xBA, 0x1D, 0xD0, 0x8F, 0xCE, 0x55, 0x95, 0x63, 0x62, 0x54, 0xCC, 0xC7, 0xE6, 0x27, 0x03, 0x80, 0x7A, 0x7E, 0x5C, 0xF4, 0xAC, 0x2D, 0x4B, 0x4C, 0x86, 0xD0, 0x31, 0x68, 0xCC, 0xA7, 0xB0, 0xC6, 0xFC, 0xFD, 0x06, 0x00, 0xFC, 0xC5, 0x75, 0x97, 0x5A, 0xA3, 0x49, 0xA7, 0xAC, 0x2D, 0x33, 0x18, 0x10, 0x97, 0x54, 0x2D, 0xF2, 0xA9, 0x38, 0xC9, 0xFC, 0x70, 0x2B, 0x9D, 0xD5, 0xEF, 0x20, 0x93, 0x72, 0x2C, 0x8A, 0x1B, 0x19, 0xC6, 0x7F, 0x9D, 0x75, 0x26, 0xFA, 0x1A, 0x53, 0x9C, 0xAF, 0x69, 0x3B, 0x1E, 0x53, 0xE3, 0x9D, 0x17, 0x52, 0xF1, 0x56, 0xA1, 0x24, 0x23, 0x16, 0x56, 0xAC, 0xDF, 0xBC, 0x21, 0xB7, 0x4B, 0x22, 0xFF, 0x00, 0x77, 0x8E, 0x00, 0xF6, 0xE6, 0xBE, 0x2F, 0xFD, 0xB4, 0xBE, 0x22, 0xFF, 0x00, 0xC2, 0xD1, 0xF8, 0x87, 0x63, 0xF0, 0xC7, 0xC2, 0xE1, 0x64, 0xD3, 0xF4, 0x9D, 0x42, 0x3B, 0x59, 0x76, 0x9C, 0x8B, 0xED, 0x55, 0x9B, 0xCB, 0x09, 0x9E, 0xEB, 0x0B, 0x3E, 0xDF, 0x43, 0x21, 0x7E, 0x0E, 0xC4, 0x35, 0xF4, 0xA7, 0xED, 0xD3, 0xFB, 0x47, 0xB7, 0xEC, 0xF1, 0xF0, 0x66, 0xE2, 0xEB, 0x4B, 0xB8, 0x11, 0xF8, 0x8B, 0x5E, 0x9C, 0x69, 0x3A, 0x4B, 0x8F, 0xBD, 0x04, 0xAE, 0xAC, 0xCF, 0x38, 0xFF, 0x00, 0xAE, 0x71, 0xA3, 0xB0, 0x3D, 0x37, 0xF9, 0x60, 0xF5, 0xAF, 0x93, 0x3F, 0xE0, 0x9E, 0xFE, 0x0A, 0x8B, 0xC5, 0x3F, 0xB5, 0xB7, 0x81, 0xE0, 0x91, 0x7C, 0xCB, 0x6D, 0x32, 0xE2, 0x5D, 0x52, 0x62, 0x7E, 0x66, 0x1F, 0x67, 0x86, 0x49, 0x11, 0xB9, 0xE4, 0x9F, 0x38, 0x45, 0xEF, 0x93, 0xEB, 0x5E, 0xA5, 0x14, 0xE3, 0x4F, 0xDA, 0x4B, 0x65, 0xB1, 0xC3, 0x8E, 0xC5, 0x46, 0x75, 0x3D, 0x85, 0x3F, 0x2B, 0xBF, 0xC9, 0x7E, 0xA7, 0xE8, 0x57, 0x83, 0xFE, 0x18, 0x2F, 0xF6, 0x3D, 0xD6, 0x93, 0x77, 0x1C, 0xF6, 0xFA, 0x6F, 0x85, 0x6E, 0xA0, 0xD3, 0xFC, 0x3D, 0xE6, 0x45, 0x8F, 0xB3, 0xC1, 0x6F, 0x67, 0x14, 0x02, 0x74, 0x1C, 0x6E, 0x2E, 0x4C, 0xB8, 0x63, 0x9D, 0xBD, 0x57, 0x04, 0x03, 0x5B, 0x3A, 0x07, 0x82, 0x74, 0xFF, 0x00, 0x87, 0xD6, 0xD7, 0x91, 0x69, 0x71, 0xAD, 0xBD, 0x85, 0xCB, 0x89, 0x23, 0x83, 0x73, 0x37, 0x96, 0xC5, 0x9E, 0x49, 0x0E, 0xE6, 0x24, 0x9D, 0xCF, 0x23, 0x1F, 0x6C, 0xE0, 0x60, 0x00, 0x2A, 0x1F, 0x87, 0x7A, 0xD6, 0xA5, 0xAA, 0x7C, 0x36, 0xD2, 0xAF, 0x35, 0x86, 0xB9, 0x8F, 0x50, 0xD4, 0x8C, 0xB7, 0x73, 0x47, 0x34, 0x7E, 0x5B, 0xDB, 0xA3, 0xCA, 0xEE, 0x91, 0x15, 0x20, 0x11, 0xB1, 0x0A, 0x2E, 0x08, 0xCF, 0xCB, 0xCD, 0x51, 0xF8, 0x83, 0xE3, 0x38, 0xF4, 0xDB, 0x59, 0x39, 0xC6, 0x17, 0x00, 0x03, 0xD0, 0x7F, 0xFA, 0xAB, 0xCF, 0xC3, 0xD3, 0x75, 0x1A, 0xB6, 0xEF, 0xF5, 0x3D, 0xAA, 0x95, 0x27, 0x4D, 0xCE, 0x13, 0x69, 0x46, 0x3A, 0x69, 0xB7, 0xBB, 0xA6, 0x9F, 0xE7, 0xE6, 0xFB, 0x9E, 0x25, 0xFB, 0x5D, 0x78, 0x89, 0xBC, 0x43, 0x79, 0x0D, 0x85, 0xAF, 0xCC, 0x2C, 0x93, 0xCC, 0x94, 0x0E, 0xA5, 0x9B, 0x1C, 0x7E, 0x0A, 0x07, 0xFD, 0xF4, 0x6B, 0xE7, 0xAF, 0x19, 0x58, 0xEA, 0x1E, 0x21, 0x1B, 0x61, 0xB7, 0x6B, 0x7F, 0xB4, 0x1F, 0x99, 0xA5, 0x38, 0xDA, 0x80, 0x7C, 0xCC, 0xDE, 0x8A, 0x32, 0x7E, 0xBC, 0x0E, 0xF5, 0xEE, 0x1A, 0x8E, 0x87, 0xA9, 0x6A, 0x53, 0x5C, 0x5F, 0x5E, 0x42, 0xD1, 0xCD, 0x70, 0xC5, 0xD8, 0xCA, 0x76, 0xAC, 0x60, 0x9C, 0x9E, 0x7D, 0x07, 0xB6, 0x78, 0xAF, 0x0F, 0xF8, 0xE1, 0xE3, 0x49, 0x85, 0xAC, 0xDA, 0x5E, 0x89, 0x04, 0xD3, 0x2B, 0x7F, 0xAF, 0xBC, 0x2B, 0xB5, 0x65, 0x23, 0x8F, 0x94, 0xFA, 0x0E, 0x71, 0xD8, 0x73, 0xD4, 0x92, 0x6B, 0xF4, 0x8C, 0xA2, 0x9F, 0xB3, 0xA7, 0x1A, 0x70, 0x3F, 0x1C, 0xE2, 0x6A, 0xD1, 0xAD, 0x5A, 0x75, 0xA7, 0xB7, 0x44, 0x78, 0xCF, 0xC4, 0x6D, 0x62, 0x27, 0xD6, 0x52, 0xCE, 0xC5, 0xA4, 0x92, 0xD7, 0x4D, 0x21, 0x77, 0xFF, 0x00, 0xCF, 0x57, 0xCF, 0x2D, 0xF9, 0xD5, 0x58, 0x6E, 0xDA, 0xE1, 0xA6, 0xB8, 0x99, 0x82, 0xAB, 0xB3, 0x4A, 0xC7, 0xFB, 0xA0, 0x7F, 0xFA, 0xAA, 0x49, 0x3C, 0x3C, 0xD6, 0xD8, 0xF3, 0x1D, 0x7D, 0x58, 0x0E, 0x49, 0xFC, 0x6B, 0xC4, 0xBF, 0x6A, 0xEF, 0xDA, 0x02, 0xDB, 0xC2, 0x51, 0x0F, 0x0D, 0xD8, 0x5E, 0x2C, 0x37, 0xF3, 0xED, 0x92, 0xF6, 0x48, 0xCF, 0xCD, 0x6E, 0x9D, 0x56, 0x31, 0xFE, 0xD3, 0x60, 0x13, 0xE8, 0xBD, 0xBE, 0x70, 0x6B, 0xE9, 0xA5, 0x38, 0xD3, 0x8D, 0xE4, 0x7E, 0x75, 0x37, 0x27, 0x27, 0x26, 0x7A, 0xF7, 0x85, 0xEE, 0x74, 0x5B, 0xBF, 0x13, 0x6A, 0x53, 0x5B, 0xEA, 0x57, 0x36, 0x7A, 0x96, 0xB9, 0x1A, 0x68, 0xEE, 0x61, 0x8F, 0xED, 0x6F, 0x23, 0xBB, 0x05, 0x86, 0xDE, 0x38, 0xB2, 0x18, 0xCC, 0xDB, 0x8F, 0x08, 0xCA, 0x36, 0xA9, 0xC8, 0x3C, 0x63, 0xF5, 0x67, 0xF6, 0x73, 0xFD, 0x8E, 0x47, 0x86, 0x2C, 0xE3, 0xF1, 0x07, 0xC4, 0x2F, 0x2F, 0xC4, 0x1E, 0x32, 0xBE, 0x61, 0x75, 0x72, 0x97, 0x04, 0x4D, 0x0D, 0xAC, 0xC7, 0x19, 0x2C, 0x07, 0xCB, 0x2C, 0xD9, 0xEA, 0xDC, 0xA2, 0x90, 0x02, 0x0C, 0x28, 0x76, 0xFE, 0x7B, 0x7E, 0x0D, 0x7E, 0xD2, 0x97, 0xDF, 0x06, 0xBE, 0x2B, 0x78, 0x77, 0xC5, 0x9A, 0x56, 0xA1, 0xA8, 0x5B, 0xEB, 0x1E, 0x1D, 0xD4, 0x63, 0xBB, 0xB3, 0xBA, 0x55, 0x59, 0x9E, 0x06, 0xCF, 0x3B, 0x56, 0x40, 0x54, 0xE4, 0x13, 0xF2, 0xB0, 0xC3, 0x67, 0x07, 0xAD, 0x7E, 0xDB, 0x7E, 0xCD, 0xDF, 0xF0, 0x57, 0x79, 0x7C, 0x69, 0xF0, 0xCB, 0x4B, 0xD6, 0xBC, 0x75, 0xE0, 0x5D, 0x72, 0xD6, 0xC3, 0x50, 0x8B, 0x7D, 0xB7, 0x89, 0x74, 0x6B, 0x46, 0x6D, 0x1A, 0xFC, 0x0E, 0x18, 0xEE, 0x90, 0x84, 0x8D, 0xD5, 0xB2, 0xAE, 0x9E, 0x6B, 0x6D, 0x60, 0x41, 0xD8, 0x41, 0x51, 0xF9, 0xBF, 0x1C, 0x4E, 0x55, 0xE7, 0x4D, 0xC2, 0x3E, 0xEC, 0x6F, 0xAF, 0x9B, 0xFF, 0x00, 0x86, 0xFC, 0x4F, 0xD7, 0xBC, 0x2B, 0x84, 0xBD, 0x8E, 0x21, 0x42, 0x4B, 0x9E, 0x4E, 0x37, 0x8D, 0xD2, 0x95, 0x95, 0xF5, 0x5D, 0xD5, 0xDB, 0xBD, 0xBB, 0x1F, 0x69, 0x5C, 0x20, 0xFB, 0xC7, 0xAD, 0x7C, 0xD5, 0xFF, 0x00, 0x05, 0x19, 0x82, 0x3B, 0xDF, 0x05, 0x78, 0x7E, 0xDE, 0x50, 0x1A, 0x39, 0xE7, 0xB9, 0x56, 0x1E, 0xA3, 0xCA, 0x00, 0xFF, 0x00, 0x3A, 0xE8, 0x4F, 0xFC, 0x14, 0x3F, 0xC0, 0xB7, 0x76, 0x8B, 0x25, 0xBD, 0x9F, 0x88, 0xAE, 0x16, 0x41, 0x91, 0xB2, 0x08, 0x39, 0xFC, 0x7C, 0xEC, 0x57, 0x88, 0xFE, 0xD6, 0xBF, 0xB4, 0xC6, 0x9B, 0xF1, 0x8E, 0xC3, 0x4D, 0x16, 0x9A, 0x6D, 0xE6, 0x9D, 0x6B, 0xA4, 0xAD, 0xC4, 0x8D, 0x3D, 0xDC, 0x89, 0x97, 0xDE, 0xAB, 0xD5, 0x54, 0x90, 0xA0, 0x6C, 0x3C, 0xEE, 0x3D, 0x7B, 0x57, 0xC0, 0x4A, 0x4B, 0x96, 0xC7, 0xEB, 0x98, 0x7A, 0x55, 0x14, 0xD5, 0xD5, 0x8F, 0xAD, 0xFC, 0x11, 0x1E, 0xCF, 0x00, 0xE8, 0x4B, 0x9D, 0xDB, 0x74, 0xDB, 0x61, 0x93, 0xDF, 0xF7, 0x4B, 0x54, 0x3C, 0x4F, 0xAC, 0xF9, 0x36, 0xD7, 0x56, 0xED, 0x8F, 0x99, 0x08, 0x43, 0x9E, 0x99, 0xAD, 0x8D, 0x12, 0xC5, 0xB4, 0xDF, 0x0D, 0xE9, 0xF6, 0xFB, 0x7F, 0xE3, 0xDE, 0xCE, 0x18, 0xC8, 0xC7, 0xDD, 0xDA, 0x80, 0x7F, 0x4A, 0xE7, 0xAE, 0xE0, 0x87, 0x5D, 0xF1, 0x10, 0xB5, 0x50, 0xF2, 0x93, 0x8F, 0x33, 0x68, 0xCE, 0xD5, 0xF5, 0xAF, 0x67, 0x2F, 0x8F, 0x34, 0xAF, 0x23, 0xC0, 0xCE, 0xAB, 0x7B, 0x3A, 0x4F, 0x95, 0xFF, 0x00, 0x4C, 0xF3, 0x0F, 0x8B, 0x16, 0x57, 0xD6, 0xDF, 0x0E, 0xE3, 0x9C, 0x99, 0x3E, 0xC8, 0xB7, 0x10, 0x96, 0x24, 0xFC, 0xBF, 0x34, 0x81, 0x7F, 0x9E, 0x2B, 0xCE, 0xB5, 0x2D, 0x53, 0xFB, 0x36, 0xD2, 0x4B, 0x85, 0xDD, 0x9B, 0x64, 0xF3, 0x46, 0x0E, 0x3E, 0xE8, 0xCF, 0xF4, 0xAF, 0xA6, 0xFF, 0x00, 0x6B, 0x5F, 0x87, 0x96, 0xFE, 0x1A, 0xF8, 0x0C, 0x66, 0xF3, 0xA4, 0xF3, 0xC4, 0xD6, 0x76, 0xC8, 0x14, 0x61, 0x72, 0x26, 0x49, 0x09, 0x23, 0xE8, 0x8D, 0xFF, 0x00, 0x7D, 0x57, 0xC9, 0x7E, 0x2E, 0xBA, 0xFB, 0x3F, 0x86, 0xAE, 0xB7, 0x37, 0x33, 0x47, 0xE5, 0x7F, 0xDF, 0x5C, 0x7F, 0x2C, 0xD7, 0xE9, 0xDC, 0x3F, 0x6C, 0x45, 0x06, 0xD7, 0xF3, 0x5B, 0xF0, 0x47, 0xE4, 0x59, 0xC4, 0x25, 0x42, 0xAD, 0x9B, 0xBD, 0x92, 0xFD, 0x4F, 0xD3, 0x05, 0xBC, 0x8F, 0x51, 0x4F, 0x3A, 0x09, 0x16, 0x48, 0xA4, 0x3B, 0xD5, 0x94, 0xE4, 0x10, 0x79, 0xA6, 0xC8, 0xD9, 0xFC, 0x0F, 0x39, 0x15, 0xC5, 0xFC, 0x02, 0xF1, 0x58, 0xF1, 0x3F, 0xC0, 0x7F, 0x06, 0xDF, 0x42, 0xC9, 0x73, 0x34, 0xDA, 0x35, 0x87, 0xDA, 0x0A, 0xBE, 0x76, 0x49, 0xE4, 0x47, 0xE6, 0x82, 0x7F, 0xBC, 0xAD, 0xBB, 0x23, 0xAE, 0x47, 0x6C, 0xD7, 0x5F, 0x2B, 0x65, 0x5B, 0x27, 0x8E, 0x4D, 0x7E, 0x6D, 0x5A, 0x9B, 0x85, 0x49, 0x41, 0xF4, 0x6D, 0x1F, 0xA0, 0x61, 0xE5, 0xCF, 0x4E, 0x32, 0x5D, 0x52, 0x3E, 0x7A, 0xFF, 0x00, 0x82, 0x80, 0xAA, 0xAF, 0x85, 0xBC, 0x37, 0x2A, 0x8C, 0x15, 0xBC, 0x96, 0x3F, 0xC0, 0xC7, 0x9F, 0xE9, 0x5F, 0x28, 0xF8, 0x88, 0x24, 0xDA, 0x63, 0x2C, 0x8D, 0xF2, 0xF4, 0x07, 0xD0, 0xF6, 0xAF, 0xA7, 0xBF, 0xE0, 0xA0, 0xDA, 0x94, 0xCB, 0x61, 0xE1, 0xBB, 0x5F, 0x25, 0x5A, 0xD6, 0x49, 0xE5, 0x9B, 0xCE, 0xDF, 0xCA, 0xBA, 0xAE, 0x36, 0xED, 0xC7, 0x70, 0x49, 0xCE, 0x7B, 0x63, 0x15, 0xF2, 0x8F, 0x8D, 0x2E, 0x5B, 0xFB, 0x1C, 0x2A, 0x83, 0xB9, 0x9C, 0x70, 0x3F, 0xCF, 0xB5, 0x7E, 0x9F, 0xC2, 0xF4, 0xDB, 0xCB, 0xA2, 0x9F, 0x77, 0xF9, 0x9F, 0x03, 0xC4, 0xD5, 0x79, 0x31, 0x53, 0x94, 0x7A, 0x25, 0xF9, 0x14, 0xEF, 0xBC, 0x56, 0xB7, 0x7A, 0x75, 0xBE, 0x39, 0x95, 0x06, 0xC7, 0xFA, 0x8E, 0x2A, 0x5F, 0x0F, 0xF8, 0xB6, 0x4B, 0x88, 0x5A, 0xDC, 0xCA, 0xD1, 0x4C, 0xA0, 0x98, 0x58, 0x37, 0x4F, 0x6A, 0xE4, 0x8C, 0xDE, 0x4C, 0xF3, 0x2F, 0x66, 0x6D, 0xDD, 0x78, 0xAA, 0x77, 0x3A, 0x83, 0x5B, 0xCC, 0x19, 0x1B, 0x0C, 0x84, 0x1E, 0xB5, 0xEF, 0x47, 0x0F, 0x0E, 0x5E, 0x53, 0xF3, 0x5A, 0x79, 0xA5, 0x4A, 0x75, 0xBD, 0xAF, 0x47, 0xBA, 0x3F, 0x2A, 0xF3, 0xB6, 0xB5, 0xBC, 0x0D, 0xC7, 0x8E, 0xB4, 0x5F, 0xFB, 0x08, 0x5B, 0xFF, 0x00, 0xE8, 0xC5, 0xAC, 0x82, 0x72, 0x38, 0xEF, 0xED, 0x5F, 0x5B, 0x7E, 0xC0, 0x9F, 0xF0, 0x4A, 0x0F, 0x89, 0x9F, 0xB5, 0x67, 0x89, 0xB4, 0xBD, 0x73, 0xEC, 0x32, 0x78, 0x77, 0xC2, 0x76, 0x97, 0x31, 0xDC, 0xC9, 0xA8, 0xDE, 0xA9, 0x8C, 0x3A, 0xA3, 0x06, 0xF9, 0x14, 0xF2, 0x73, 0x8E, 0xB5, 0xE7, 0xD7, 0xA9, 0x18, 0x41, 0xB9, 0xB3, 0x2C, 0x16, 0x16, 0xAE, 0x22, 0xB2, 0x85, 0x18, 0xB6, 0xEE, 0xB6, 0xF5, 0x3F, 0x6A, 0x74, 0x56, 0x51, 0xA1, 0xDB, 0x96, 0x60, 0x14, 0x42, 0x99, 0x27, 0xB0, 0xDB, 0x5F, 0x31, 0xFC, 0x66, 0xF8, 0x9D, 0x27, 0xC4, 0xAF, 0x1F, 0xBD, 0xB4, 0x72, 0x32, 0x69, 0x1A, 0x53, 0x15, 0x8D, 0x3B, 0x39, 0x07, 0x05, 0x8D, 0x7A, 0xE7, 0xED, 0x2F, 0xF1, 0xDB, 0x42, 0xF8, 0x7B, 0xE0, 0xD9, 0xBC, 0x37, 0xE1, 0xF9, 0x5A, 0xF7, 0x56, 0x99, 0x05, 0xBC, 0xB7, 0x7F, 0xC3, 0x10, 0x03, 0x0D, 0x8F, 0x7A, 0xF1, 0x8F, 0xD9, 0xA3, 0xE1, 0xCC, 0x9F, 0x14, 0x7C, 0x6D, 0xFD, 0x92, 0xB6, 0x8D, 0x70, 0x2E, 0xA2, 0x63, 0x24, 0x9B, 0xB6, 0x8B, 0x73, 0xD9, 0xC9, 0xF6, 0x3D, 0xBB, 0xD7, 0x83, 0xC3, 0x79, 0x37, 0xD5, 0x21, 0x3C, 0xC3, 0x17, 0xA5, 0xB6, 0xF2, 0xF3, 0xFF, 0x00, 0x23, 0xF6, 0xAE, 0x24, 0xCE, 0xDE, 0x25, 0xC3, 0x2F, 0xC2, 0xBD, 0xF7, 0xF3, 0xEC, 0xBD, 0x3B, 0x9B, 0x7E, 0x05, 0xB1, 0xD2, 0xE6, 0x56, 0xBF, 0xD5, 0x66, 0x63, 0x6F, 0x6C, 0xC0, 0x2D, 0xAC, 0x7C, 0xC9, 0x72, 0xDE, 0x9E, 0xC2, 0xBD, 0x03, 0x54, 0xD4, 0xFC, 0x6D, 0xF1, 0x7E, 0xC5, 0x6C, 0x74, 0x9D, 0x3D, 0xB4, 0x3D, 0x06, 0x15, 0x01, 0x51, 0x46, 0xC5, 0x2B, 0xEE, 0x7A, 0x9A, 0xF6, 0x8F, 0x0C, 0xFE, 0xC8, 0x5A, 0x2F, 0xC3, 0x4F, 0x0F, 0xAC, 0xD1, 0x8F, 0xED, 0x0B, 0xD8, 0xC6, 0x5E, 0x59, 0x06, 0xE3, 0x9F, 0x61, 0x5B, 0xF6, 0xD6, 0x0F, 0x1E, 0x96, 0xD1, 0xF9, 0x2C, 0xB8, 0x5E, 0x80, 0x63, 0x02, 0xBC, 0x7C, 0xE3, 0x8C, 0x20, 0xEA, 0x73, 0x61, 0xA0, 0xA4, 0xFA, 0x39, 0x74, 0xF4, 0x5F, 0xE6, 0x7A, 0x39, 0x3F, 0x0C, 0x29, 0xD0, 0x4E, 0xAD, 0x4E, 0x54, 0xFE, 0x25, 0x1D, 0xDF, 0xAB, 0xFF, 0x00, 0x23, 0x96, 0xF8, 0x59, 0xF0, 0x23, 0x4F, 0xD7, 0xBC, 0x15, 0xE1, 0xAF, 0x0C, 0xEB, 0x0A, 0x2E, 0x21, 0x8E, 0x57, 0xBC, 0x9C, 0x03, 0xC4, 0x8F, 0xCE, 0x2B, 0x8C, 0xFD, 0xAC, 0x4E, 0x85, 0xF0, 0x5A, 0xDA, 0x3F, 0x08, 0xF8, 0x64, 0xA2, 0x4D, 0x74, 0x4C, 0xD7, 0x2A, 0x98, 0xFF, 0x00, 0x46, 0x8C, 0xFF, 0x00, 0x0E, 0x7D, 0xCD, 0x76, 0x1F, 0x13, 0x3E, 0x26, 0x8F, 0x83, 0x9E, 0x1E, 0xB7, 0xD6, 0x99, 0xB6, 0xB5, 0xB4, 0x6E, 0x23, 0x5F, 0xEF, 0xB6, 0x38, 0x15, 0xF2, 0x8E, 0xA1, 0xE2, 0x4B, 0xEF, 0x1A, 0xEA, 0xF7, 0x5A, 0xC6, 0xA5, 0x23, 0x4D, 0x7B, 0xA9, 0x48, 0x65, 0x76, 0x63, 0x9C, 0x03, 0xD0, 0x0F, 0x61, 0x5E, 0x8E, 0x53, 0x97, 0xD6, 0xC6, 0xE2, 0xFE, 0xB3, 0x88, 0x6D, 0xD3, 0x8D, 0x9D, 0xBA, 0x39, 0x6E, 0x71, 0xF1, 0x16, 0x22, 0x38, 0x0B, 0x51, 0xC2, 0x3B, 0x36, 0x9A, 0xF3, 0x4B, 0xD7, 0xCC, 0x62, 0x3E, 0x05, 0x60, 0xF8, 0xB3, 0x51, 0x9A, 0xEA, 0x68, 0xAC, 0x6D, 0x55, 0xA6, 0x96, 0x52, 0x17, 0x62, 0x0C, 0xB3, 0x13, 0xD0, 0x01, 0x5B, 0x57, 0x53, 0x18, 0x61, 0x25, 0x57, 0x73, 0x74, 0x50, 0x3A, 0x93, 0xDA, 0xBD, 0xC7, 0xF6, 0x5B, 0xFD, 0x9B, 0x5B, 0xC3, 0xFB, 0x7C, 0x51, 0xE2, 0x08, 0x3F, 0xE2, 0x61, 0x30, 0xDF, 0x6F, 0x1C, 0xA3, 0x8B, 0x75, 0xF5, 0x3E, 0xFF, 0x00, 0xCA, 0xBE, 0xAF, 0x35, 0xCD, 0xA9, 0x60, 0x29, 0x7B, 0x49, 0xEA, 0xFA, 0x2E, 0xEF, 0xFC, 0xBB, 0x9F, 0x2D, 0x94, 0xE5, 0x55, 0xB3, 0x0A, 0xDE, 0xCA, 0x1A, 0x2E, 0xAF, 0xB2, 0x2C, 0xFE, 0xCE, 0x9F, 0xB1, 0x45, 0xBF, 0x82, 0x7C, 0x3E, 0x3C, 0x6D, 0xE3, 0xC8, 0x63, 0x68, 0xED, 0x61, 0x6B, 0xC8, 0xED, 0x24, 0x1B, 0xA1, 0xB4, 0x44, 0x5D, 0xE6, 0x49, 0x47, 0x46, 0x20, 0x0C, 0xE0, 0xF0, 0x3D, 0xCF, 0x4F, 0x0C, 0xD1, 0x7E, 0x23, 0xF8, 0x7F, 0x5B, 0xF1, 0x3E, 0xA9, 0xF1, 0x8B, 0xE2, 0x53, 0x34, 0xF6, 0xFA, 0xC5, 0xE4, 0x92, 0x78, 0x6F, 0xC3, 0xC1, 0x7C, 0xC9, 0x2F, 0x92, 0x13, 0xB1, 0x24, 0x91, 0x49, 0x0A, 0x2D, 0xA1, 0xDA, 0x17, 0x2C, 0x42, 0xC9, 0x28, 0x71, 0xC8, 0x56, 0x0D, 0xEC, 0x7F, 0xB6, 0x9F, 0xED, 0x9B, 0x75, 0x73, 0xF0, 0xDF, 0x52, 0xF8, 0x5F, 0xE1, 0x35, 0x93, 0x58, 0xD6, 0xFC, 0x4C, 0xA3, 0x4B, 0x76, 0xB6, 0x52, 0xDE, 0x42, 0x48, 0x40, 0x74, 0x04, 0x7D, 0xE6, 0x65, 0xCA, 0xE0, 0x74, 0x0C, 0x6B, 0xD0, 0xBF, 0x60, 0xAF, 0xF8, 0x26, 0x76, 0x8D, 0xF0, 0xEA, 0xC3, 0x4F, 0xF1, 0x27, 0x8F, 0x23, 0x8B, 0x5C, 0xF1, 0x34, 0x71, 0xA1, 0xB2, 0xB2, 0x9B, 0x12, 0xDA, 0xE9, 0x58, 0xFB, 0xAC, 0x41, 0xC8, 0x92, 0x61, 0xD4, 0x13, 0xF2, 0xA1, 0xFB, 0xA3, 0x20, 0x30, 0xF8, 0x88, 0xE2, 0xE7, 0x4A, 0x85, 0x4C, 0xC3, 0x36, 0x93, 0x53, 0xAB, 0xEE, 0xC6, 0x2B, 0x49, 0x72, 0x6E, 0xD4, 0x7F, 0x95, 0x49, 0xD9, 0x37, 0x6B, 0xD9, 0x3B, 0x6A, 0xCE, 0x9C, 0xC2, 0x2E, 0x95, 0x78, 0xE0, 0xF0, 0x6A, 0x32, 0x85, 0x37, 0x77, 0x2D, 0xD7, 0x37, 0x47, 0x2F, 0xE6, 0x69, 0x74, 0xBD, 0xAF, 0xB9, 0xE2, 0x3E, 0x21, 0xF0, 0xDF, 0xC4, 0x0F, 0xDA, 0x0F, 0xE1, 0x5E, 0xBD, 0xF1, 0x13, 0xC7, 0xD6, 0x77, 0x3A, 0x47, 0x84, 0xB4, 0x4B, 0x09, 0xEF, 0x3C, 0x35, 0xE1, 0x60, 0x19, 0x5F, 0x57, 0xBD, 0x64, 0x29, 0x6F, 0x24, 0xE0, 0x80, 0xCC, 0x8D, 0x2B, 0x46, 0x37, 0x38, 0x5F, 0x33, 0x38, 0x54, 0x58, 0xCE, 0x1B, 0xEA, 0xDF, 0x81, 0x9F, 0x04, 0x2D, 0xFE, 0x07, 0x7C, 0x1E, 0xF0, 0xEF, 0x84, 0xED, 0x56, 0x3D, 0xBA, 0x1D, 0x92, 0x41, 0x2B, 0x20, 0xF9, 0x66, 0x9C, 0xE5, 0xA6, 0x93, 0xFE, 0x07, 0x2B, 0x3B, 0x7F, 0xC0, 0xAB, 0xD9, 0xFE, 0x20, 0xFC, 0x0B, 0xB2, 0xF1, 0x5F, 0x85, 0x15, 0xA5, 0xBB, 0x49, 0x21, 0x8A, 0xF6, 0xD2, 0xF8, 0xA7, 0x0C, 0x19, 0xA0, 0xB9, 0x8E, 0x75, 0xCF, 0xFC, 0x0E, 0x25, 0xFC, 0xAA, 0xBC, 0xFE, 0x14, 0x68, 0xF4, 0x5F, 0xB7, 0x24, 0x90, 0xCD, 0x08, 0x6D, 0x8D, 0xB4, 0xFC, 0xC8, 0xC4, 0xE3, 0x04, 0x1E, 0xF9, 0xC7, 0xE6, 0x2B, 0xE1, 0xB3, 0xAC, 0xCB, 0x17, 0x89, 0xA5, 0x1A, 0x3C, 0x8A, 0x30, 0xBD, 0xD4, 0x63, 0xB2, 0x56, 0xB2, 0xF5, 0x7A, 0xBB, 0xB7, 0xAB, 0xB9, 0xEB, 0xE5, 0x35, 0xB0, 0xF4, 0x6A, 0xBC, 0x47, 0x3B, 0x94, 0xDE, 0x8E, 0x52, 0xDD, 0xB7, 0xAB, 0xF2, 0x4B, 0x45, 0x64, 0xB4, 0x56, 0x39, 0xBF, 0x0F, 0x7C, 0x3E, 0xFF, 0x00, 0x84, 0x83, 0xCE, 0x69, 0x7F, 0xE3, 0xDE, 0xDF, 0x19, 0x42, 0x71, 0xE7, 0xB1, 0x3C, 0x27, 0xD3, 0xB9, 0xF6, 0x18, 0xEF, 0x49, 0xF1, 0x2B, 0xE2, 0x24, 0x7E, 0x1D, 0xD7, 0xB4, 0xFF, 0x00, 0x08, 0x5B, 0x4C, 0xCF, 0xE2, 0x5F, 0x10, 0x5B, 0xBD, 0xD2, 0xC1, 0x11, 0xDE, 0xFA, 0x7D, 0x92, 0x90, 0xAF, 0x79, 0x27, 0x64, 0x4D, 0xC7, 0xCB, 0x8C, 0x9F, 0xBF, 0x21, 0xE0, 0x30, 0x57, 0xC7, 0x17, 0xF1, 0xFB, 0xE3, 0xB3, 0x7C, 0x1F, 0x4B, 0x1F, 0x0E, 0x78, 0x66, 0xC6, 0x3F, 0x12, 0x7C, 0x46, 0xF1, 0x23, 0x94, 0xD3, 0x74, 0xC5, 0xF9, 0x96, 0x33, 0x8F, 0xF5, 0xD3, 0x74, 0x0B, 0x1A, 0x85, 0x27, 0x92, 0x01, 0x08, 0x49, 0x21, 0x43, 0x30, 0xD9, 0xFD, 0x9C, 0xFF, 0x00, 0x67, 0x1B, 0xCF, 0x85, 0x7A, 0x5E, 0xA9, 0xAA, 0x78, 0x83, 0x54, 0x9F, 0xC4, 0xFE, 0x3A, 0xF1, 0x5C, 0xC9, 0x79, 0xE2, 0x0D, 0x66, 0x63, 0x9F, 0xB4, 0x48, 0xA3, 0x11, 0xC3, 0x10, 0x38, 0xDB, 0x04, 0x4A, 0x4A, 0xA2, 0xE0, 0x75, 0x27, 0x0A, 0x36, 0xA2, 0x70, 0x62, 0x30, 0xF1, 0xC1, 0x61, 0x79, 0xAB, 0xBF, 0x7A, 0x4B, 0xDD, 0x5D, 0x5F, 0x9B, 0xED, 0x15, 0xDF, 0xAB, 0xD1, 0x75, 0x65, 0xE2, 0x31, 0x93, 0xAF, 0x8B, 0x52, 0x93, 0xBC, 0x63, 0xF8, 0x79, 0x7A, 0xBD, 0xFD, 0x0C, 0xBF, 0x11, 0xFC, 0x12, 0xB1, 0xD7, 0x2D, 0x5A, 0x38, 0x6E, 0x35, 0x2D, 0x2E, 0x46, 0x18, 0xF3, 0x2C, 0xE6, 0x1C, 0x7F, 0xC0, 0x24, 0x0F, 0x1F, 0xBE, 0x76, 0xE7, 0xF3, 0x39, 0xE0, 0xD3, 0xF6, 0x57, 0xF1, 0x1D, 0xBB, 0xCC, 0xAB, 0xE3, 0x3B, 0x19, 0x21, 0x90, 0x61, 0x1A, 0x7D, 0x05, 0x9A, 0x61, 0xFE, 0xF3, 0x2D, 0xC8, 0x56, 0x3F, 0x45, 0x5F, 0xA5, 0x7D, 0x30, 0x7C, 0x3A, 0xC5, 0x7E, 0xED, 0x43, 0x3F, 0x87, 0xB3, 0xFC, 0x26, 0xBC, 0x3A, 0x59, 0xA5, 0x7A, 0x6A, 0xD1, 0x96, 0x9F, 0x7F, 0xE6, 0x7B, 0x5F, 0xDA, 0x8A, 0x4E, 0xED, 0x9F, 0x1F, 0xFC, 0x70, 0xFF, 0x00, 0x82, 0x7C, 0xE8, 0x9F, 0x10, 0xFE, 0x01, 0xF8, 0xDA, 0xC7, 0x5C, 0xF3, 0xBC, 0x55, 0xE2, 0x0B, 0x9D, 0x2E, 0xE2, 0x5D, 0x1E, 0xE5, 0xE1, 0x10, 0x9D, 0x2A, 0xEE, 0x38, 0xD9, 0xE0, 0x7B, 0x64, 0x05, 0x8A, 0xC8, 0x64, 0x0A, 0x19, 0x99, 0x98, 0xB2, 0x96, 0x4E, 0x23, 0x77, 0x46, 0xFC, 0xF4, 0xFD, 0x84, 0xE3, 0xD6, 0x3E, 0x08, 0xFC, 0x4C, 0xD6, 0xBC, 0x53, 0xA9, 0x4B, 0xA6, 0x5C, 0x59, 0xB7, 0x82, 0xB5, 0x59, 0xF4, 0xCB, 0x98, 0x2E, 0x63, 0x76, 0x76, 0x8A, 0xE2, 0xD7, 0x79, 0x92, 0x1D, 0xC5, 0xE1, 0x61, 0x88, 0xFE, 0xF8, 0xDA, 0xCB, 0x37, 0xCA, 0xCF, 0x86, 0xDB, 0xFB, 0x7D, 0xAA, 0xAD, 0xB7, 0x85, 0xF4, 0xD9, 0x2F, 0xAF, 0xAE, 0x22, 0xB3, 0xB5, 0xB7, 0xC3, 0x34, 0xD2, 0x1C, 0x2A, 0xFA, 0x7D, 0x49, 0xE8, 0x00, 0xE4, 0x9E, 0x07, 0x35, 0xF9, 0xC5, 0xF1, 0xE3, 0xE1, 0x77, 0xC2, 0xFF, 0x00, 0x81, 0x5A, 0x0F, 0x8C, 0xFC, 0x4D, 0xA0, 0xE8, 0xF7, 0x50, 0xDA, 0xEC, 0x9E, 0xFA, 0x27, 0xBC, 0x9C, 0x8B, 0xA8, 0x70, 0xFB, 0xBC, 0xBB, 0x52, 0x81, 0x1E, 0xD6, 0x2D, 0xED, 0x14, 0x7B, 0x63, 0x61, 0x2B, 0x81, 0x12, 0xBC, 0x81, 0x49, 0x53, 0xEC, 0x65, 0xB9, 0xD5, 0x49, 0x39, 0x42, 0xA5, 0xE5, 0xCD, 0xA7, 0xCF, 0x6D, 0x0E, 0xCC, 0x15, 0x6C, 0x2D, 0x4D, 0x5A, 0x7C, 0xEA, 0x51, 0x6A, 0xDA, 0xA6, 0x95, 0xF9, 0x94, 0xBC, 0xAD, 0xAD, 0xFA, 0x5B, 0xB1, 0xE8, 0x9A, 0x8F, 0xC5, 0x59, 0x5B, 0xE1, 0xA7, 0x87, 0x6F, 0xAF, 0xA6, 0x8F, 0xFB, 0x4F, 0x50, 0xB0, 0x86, 0x69, 0xD9, 0x57, 0x6A, 0x99, 0x0C, 0x68, 0xCF, 0x85, 0xEC, 0x37, 0x13, 0xC5, 0x79, 0xE5, 0xFF, 0x00, 0xC4, 0x05, 0xD6, 0xE7, 0xDD, 0x33, 0xA9, 0xDA, 0x4E, 0x46, 0x7E, 0xF1, 0xAF, 0xCB, 0x6F, 0x88, 0x3F, 0xB6, 0x67, 0xC5, 0x8B, 0x78, 0xAD, 0x74, 0xB6, 0xF1, 0xC6, 0xB0, 0xFE, 0x60, 0x62, 0x81, 0xD6, 0x19, 0x24, 0x86, 0x25, 0xE4, 0xFE, 0xF1, 0x90, 0xBB, 0x63, 0x80, 0x0B, 0x12, 0x49, 0x39, 0xE7, 0x06, 0xBC, 0x87, 0xC7, 0x7F, 0xB4, 0x1F, 0x8E, 0x3C, 0x4A, 0xD2, 0x7F, 0x68, 0x78, 0xBB, 0xC4, 0x17, 0x11, 0x90, 0x4B, 0x44, 0x6F, 0xE4, 0x58, 0xBF, 0xEF, 0x85, 0x21, 0x7F, 0x4A, 0xFD, 0x3B, 0x2F, 0xCB, 0x29, 0xD3, 0x85, 0xE4, 0xF5, 0x3E, 0x3B, 0x38, 0xE3, 0x29, 0xCE, 0xA3, 0xA7, 0x4A, 0x16, 0x8A, 0xE8, 0x7E, 0xB3, 0x7C, 0x6A, 0xF8, 0xFB, 0xA1, 0xF8, 0x5A, 0xCE, 0x47, 0xD6, 0x35, 0x6D, 0x2F, 0x4E, 0x8F, 0x19, 0x26, 0xFE, 0xF1, 0x21, 0xCF, 0xE0, 0xC4, 0x57, 0xC5, 0xBF, 0x1D, 0x7F, 0xE0, 0xA0, 0xBE, 0x0B, 0xD3, 0x67, 0x99, 0x74, 0xB9, 0xAE, 0xFC, 0x4D, 0x7B, 0xCE, 0xD5, 0xB3, 0x43, 0x1D, 0xBA, 0x9F, 0xF6, 0xA5, 0x70, 0x06, 0x3D, 0xD0, 0x3D, 0x7C, 0x3D, 0xA4, 0xEA, 0x7F, 0xF0, 0x92, 0x4B, 0x73, 0x30, 0x50, 0xD2, 0x48, 0xC5, 0x8B, 0x37, 0x65, 0x1C, 0x06, 0x27, 0xF3, 0x3E, 0xE4, 0x9A, 0xAF, 0xAE, 0xCC, 0xBB, 0x85, 0x8D, 0xAF, 0x32, 0x7D, 0xE9, 0x65, 0x3F, 0xC2, 0x3B, 0x93, 0xFD, 0x05, 0x7A, 0xF4, 0x6B, 0x2A, 0x5E, 0xEC, 0x11, 0xF1, 0x98, 0xDC, 0x7D, 0x4C, 0x43, 0xE6, 0x96, 0xC7, 0xA0, 0xF8, 0xF7, 0xF6, 0xCB, 0xF1, 0x8F, 0xC4, 0x9B, 0xBB, 0xA8, 0x2D, 0xEE, 0x21, 0xD0, 0x74, 0xF5, 0x3E, 0x5F, 0x97, 0xA7, 0xE4, 0x4C, 0xE4, 0xE4, 0x9C, 0xCC, 0x7E, 0x7E, 0x3A, 0x7C, 0x9B, 0x6B, 0xC8, 0x6E, 0x10, 0x5E, 0xE9, 0xAD, 0x2C, 0x8C, 0xD2, 0x4F, 0xB8, 0xC8, 0xCE, 0xC7, 0x73, 0x16, 0xDD, 0x92, 0x49, 0xEE, 0x4F, 0x3C, 0xFB, 0xD6, 0x86, 0x9D, 0x65, 0x1D, 0xB5, 0xA4, 0xCD, 0x1B, 0x36, 0xDD, 0xC4, 0x82, 0x7B, 0x80, 0x31, 0x93, 0xF9, 0x56, 0x5D, 0xA4, 0xC1, 0xAC, 0x9A, 0x31, 0xFF, 0x00, 0x3C, 0xD8, 0x9F, 0xAE, 0x2A, 0xE5, 0x52, 0x52, 0xD6, 0x4E, 0xE7, 0x95, 0x2B, 0xEE, 0x59, 0xD6, 0x64, 0x5B, 0x69, 0x97, 0xCB, 0x0A, 0xBF, 0xBB, 0x63, 0x91, 0xEA, 0x30, 0x47, 0xF3, 0x35, 0xFA, 0x6B, 0xFF, 0x00, 0x06, 0xD5, 0xFE, 0xD3, 0xED, 0xE0, 0x0F, 0x8E, 0x1A, 0xF7, 0xC3, 0x5D, 0x46, 0xE1, 0xA1, 0xD2, 0xFE, 0x20, 0x28, 0x36, 0xA8, 0xC7, 0xE5, 0x5D, 0x46, 0x15, 0x79, 0x22, 0x6F, 0x40, 0x25, 0x81, 0x9D, 0x09, 0xEA, 0xCC, 0xB6, 0xEB, 0xDA, 0xBF, 0x2E, 0xB5, 0x8B, 0xA3, 0x2D, 0xEC, 0x31, 0xE7, 0x3B, 0x90, 0x8C, 0x01, 0xCF, 0x38, 0x15, 0xEB, 0xBF, 0xB3, 0x67, 0xC5, 0xDB, 0xEF, 0x84, 0xBF, 0xB4, 0x06, 0x93, 0xAE, 0x68, 0xB3, 0x7D, 0x97, 0x52, 0xD3, 0xEE, 0xED, 0xF5, 0x1D, 0x3E, 0x41, 0xD1, 0x27, 0xB6, 0x75, 0x92, 0x23, 0x8F, 0x41, 0xB5, 0x7F, 0x01, 0x5C, 0x59, 0x86, 0x1D, 0x62, 0x30, 0xF3, 0xA2, 0xFA, 0xAF, 0xC7, 0xA1, 0xE9, 0x64, 0x78, 0xC7, 0x85, 0xC6, 0xD3, 0xAF, 0x1D, 0xD3, 0xFC, 0x1E, 0x87, 0xF4, 0xF1, 0xE2, 0xDF, 0x83, 0x5E, 0x17, 0xCF, 0x99, 0x75, 0xE1, 0xBF, 0x0E, 0xDC, 0x63, 0xE6, 0x66, 0x97, 0x4D, 0x81, 0xCE, 0x7D, 0x79, 0x5A, 0xE7, 0xAD, 0x7E, 0x1F, 0x78, 0x33, 0x4D, 0xBF, 0xF3, 0x2D, 0x7C, 0x3B, 0xE1, 0xAB, 0x7B, 0x96, 0xFE, 0x38, 0x74, 0xE8, 0x15, 0xFF, 0x00, 0x30, 0xB9, 0xAE, 0xA5, 0x7E, 0x22, 0xE9, 0xBF, 0x17, 0x7E, 0x15, 0x68, 0xBE, 0x24, 0xD2, 0xA6, 0x55, 0xD3, 0xFC, 0x53, 0xA5, 0x41, 0xAA, 0x59, 0x82, 0xD9, 0x61, 0x1C, 0xF1, 0x2C, 0x8A, 0xA7, 0xFD, 0xA0, 0x18, 0x03, 0xEE, 0x0D, 0x78, 0x6E, 0x97, 0xAD, 0x4B, 0xA7, 0x6B, 0xA7, 0x2C, 0xC5, 0x95, 0xC8, 0x39, 0x35, 0xF0, 0x78, 0x0C, 0xA5, 0xE2, 0x21, 0x29, 0x37, 0x66, 0xBA, 0x1F, 0xBA, 0xD6, 0xCF, 0x9E, 0x1A, 0x34, 0xF9, 0x95, 0xF9, 0xBA, 0xDC, 0xF7, 0x6B, 0x62, 0x1E, 0xDE, 0x7D, 0xBC, 0x9D, 0xBC, 0x7D, 0x2B, 0x81, 0xF0, 0xF5, 0xE1, 0xD3, 0x7E, 0x38, 0x69, 0x76, 0xB6, 0xEC, 0xA9, 0x25, 0xE2, 0x39, 0x70, 0xC7, 0x87, 0xC7, 0x20, 0x7B, 0x57, 0x55, 0xA5, 0xEB, 0x58, 0xD3, 0xA0, 0x93, 0xA4, 0x92, 0xAE, 0x32, 0x4D, 0x67, 0xF8, 0x4B, 0xE1, 0x0D, 0xD7, 0x89, 0x7C, 0x67, 0x1E, 0xB7, 0x25, 0xC4, 0xD6, 0x72, 0x47, 0xCC, 0x4E, 0xA3, 0xB7, 0x42, 0x2B, 0xB3, 0x2D, 0x8C, 0x68, 0xC6, 0x7E, 0xD7, 0xB3, 0x47, 0x9F, 0x9F, 0xCA, 0x58, 0x99, 0x53, 0x74, 0x3B, 0xA6, 0xFD, 0x0A, 0x3F, 0xB7, 0x87, 0x89, 0x55, 0x3E, 0x05, 0xE9, 0x38, 0x6F, 0xF8, 0xFC, 0xD5, 0xE3, 0xE3, 0x3D, 0x55, 0x20, 0x9D, 0x89, 0xFA, 0x64, 0x2F, 0xE6, 0x2B, 0xE2, 0xAF, 0x1D, 0x6A, 0xBE, 0x7C, 0xB0, 0x5A, 0xEE, 0xFB, 0xBF, 0x3C, 0x9C, 0xFA, 0xF4, 0xFE, 0xB5, 0xEF, 0xFF, 0x00, 0xF0, 0x51, 0x5F, 0x88, 0xD1, 0xC7, 0xAA, 0xF8, 0x6B, 0xC2, 0xB0, 0xDC, 0x2C, 0xFF, 0x00, 0xD9, 0xA9, 0x2C, 0xF7, 0x4E, 0x0F, 0xDE, 0x69, 0x19, 0x00, 0x5F, 0xAA, 0xAC, 0x6C, 0x0F, 0xFD, 0x74, 0xC7, 0x04, 0x1A, 0xF9, 0x23, 0xC6, 0x7E, 0x26, 0xF2, 0xF4, 0xED, 0x5E, 0xF1, 0xDB, 0x6C, 0x92, 0x21, 0x8E, 0x33, 0x9E, 0x8C, 0xFF, 0x00, 0x2A, 0xE3, 0xE9, 0x9C, 0xFD, 0x14, 0xD7, 0xE9, 0xBC, 0x2B, 0x85, 0xE4, 0xC0, 0x46, 0xA4, 0xBA, 0xB6, 0xFF, 0x00, 0x1B, 0x2F, 0xC8, 0xFC, 0xDF, 0x88, 0xB1, 0x0E, 0x58, 0xC7, 0x4F, 0xC9, 0x2F, 0xC2, 0xE7, 0xE9, 0x6F, 0xEC, 0x4F, 0xAE, 0xA7, 0x88, 0xFF, 0x00, 0x65, 0x3F, 0x04, 0xDD, 0xC7, 0xB3, 0x6B, 0x58, 0xB4, 0x5F, 0x28, 0xEB, 0xE5, 0x4B, 0x24, 0x5C, 0xFB, 0xFC, 0x9F, 0xA5, 0x77, 0x9A, 0x96, 0xAF, 0x1D, 0xF7, 0x99, 0x69, 0x0B, 0x38, 0x91, 0x81, 0x56, 0x21, 0x7E, 0xE8, 0xDC, 0xCB, 0x93, 0xC6, 0x39, 0xDA, 0x6B, 0xC3, 0xFF, 0x00, 0xE0, 0x9B, 0xFA, 0xFA, 0xB7, 0xEC, 0xA5, 0xA2, 0x58, 0x96, 0xDA, 0xBA, 0x75, 0xED, 0xF5, 0xB8, 0xE7, 0xA6, 0x6E, 0x5E, 0x50, 0x3F, 0xF2, 0x2D, 0x77, 0x53, 0x7C, 0x5F, 0xB2, 0xD1, 0xBE, 0x27, 0x37, 0x85, 0xEE, 0xA4, 0x94, 0xEA, 0x13, 0xA1, 0xBA, 0x8D, 0x56, 0x0C, 0x29, 0x8D, 0x9A, 0x42, 0x32, 0xD9, 0xEC, 0x13, 0xB7, 0xA8, 0xEE, 0x6B, 0xF3, 0xAC, 0xC7, 0x0B, 0x2F, 0xAF, 0x57, 0x8C, 0x53, 0x76, 0x94, 0x9F, 0xCA, 0xEF, 0x53, 0xEE, 0xB0, 0x18, 0xA8, 0x47, 0x07, 0x42, 0x53, 0x69, 0x29, 0x28, 0xAF, 0x9B, 0x5B, 0x1E, 0x55, 0xFB, 0x79, 0x3F, 0x93, 0xA5, 0xF8, 0x7A, 0xD8, 0x6D, 0x58, 0xC4, 0xF2, 0x3A, 0x81, 0xFE, 0xE6, 0x3F, 0xA8, 0xAF, 0x9A, 0xF4, 0x1B, 0x04, 0xF1, 0x5F, 0x8C, 0xE2, 0xD3, 0xF3, 0xF2, 0x2D, 0xBC, 0x92, 0xB9, 0xF4, 0xE3, 0x03, 0xF9, 0xD7, 0xB9, 0xFE, 0xDE, 0xBE, 0x2C, 0x8E, 0x7D, 0x77, 0x41, 0x87, 0x7A, 0x94, 0xB7, 0xB3, 0x96, 0xE4, 0x90, 0x73, 0xC3, 0xB0, 0x03, 0xF4, 0x5A, 0xF1, 0x5F, 0xD9, 0xCE, 0xD2, 0x4D, 0x43, 0x54, 0xD7, 0x35, 0x89, 0x47, 0xC9, 0x81, 0x6F, 0x13, 0x1F, 0xCC, 0xFF, 0x00, 0x4A, 0xFB, 0x3C, 0xB6, 0xA3, 0xC3, 0x64, 0x4E, 0xAA, 0xDF, 0x5B, 0x7A, 0xB7, 0x63, 0xE5, 0xF3, 0x0C, 0x3C, 0x71, 0x39, 0xB7, 0xB0, 0x7B, 0x75, 0xF4, 0x4A, 0xE7, 0x03, 0xE2, 0xED, 0x09, 0xB4, 0x8B, 0xE9, 0x23, 0xDA, 0x70, 0xA4, 0x81, 0x5C, 0xB5, 0xF4, 0xBB, 0x2B, 0xD6, 0x3E, 0x29, 0xD8, 0xA3, 0xC9, 0x24, 0x83, 0xA9, 0xAF, 0x22, 0xD6, 0xCF, 0x97, 0x21, 0xF5, 0x3E, 0xB5, 0xEE, 0x65, 0xD8, 0xC7, 0x5E, 0x9A, 0x6F, 0x73, 0xF3, 0x3C, 0xEF, 0x2D, 0x58, 0x5A, 0xEE, 0x31, 0xD8, 0xEF, 0xBF, 0xE0, 0x91, 0x9F, 0xF0, 0x43, 0x6D, 0x36, 0xDF, 0x48, 0xB1, 0xF8, 0xA1, 0xF1, 0xAA, 0x18, 0xD6, 0x10, 0x82, 0xEA, 0xC7, 0x44, 0xB8, 0xF9, 0x56, 0x35, 0xC6, 0x43, 0xCC, 0x0F, 0xE1, 0xC5, 0x7A, 0x27, 0xFC, 0x14, 0x67, 0xFE, 0x0A, 0xFF, 0x00, 0xE0, 0xDF, 0x84, 0xBE, 0x21, 0xB5, 0xF8, 0x77, 0xF0, 0xE7, 0xEC, 0xD7, 0x0D, 0xE6, 0xC7, 0x62, 0xE2, 0xC7, 0x0B, 0x0C, 0x00, 0xB0, 0x52, 0x32, 0xBC, 0x77, 0xAF, 0x97, 0xBF, 0xE0, 0xA9, 0x7F, 0xF0, 0x5B, 0x0D, 0x67, 0xE2, 0xAE, 0xB5, 0xAA, 0x78, 0x0F, 0xE1, 0xA5, 0xDB, 0xE9, 0x7E, 0x19, 0xB6, 0x66, 0xB5, 0xB8, 0xD4, 0x21, 0x6C, 0x35, 0xE0, 0x1C, 0x1D, 0x98, 0xE8, 0xB5, 0xF9, 0xE9, 0xE0, 0xFB, 0xC9, 0x2F, 0x3C, 0x7F, 0xA4, 0x4D, 0x34, 0x8F, 0x34, 0xB2, 0x6A, 0x30, 0x33, 0x3B, 0xB6, 0xE6, 0x63, 0xE6, 0x2F, 0x53, 0x5E, 0x2E, 0x1F, 0x07, 0x52, 0x72, 0x78, 0xAC, 0x4B, 0xBB, 0xB6, 0x8B, 0xA2, 0x3D, 0xAA, 0xD9, 0x95, 0x1C, 0x04, 0xBE, 0xAB, 0x97, 0x3F, 0x27, 0x2F, 0xCE, 0xDF, 0xD7, 0xA1, 0xFB, 0x09, 0xF1, 0xC7, 0xEC, 0xB6, 0xBE, 0x32, 0xFB, 0x25, 0xA8, 0xF9, 0x6D, 0x60, 0x40, 0xEC, 0x4E, 0x4B, 0xC8, 0xC0, 0x33, 0x1A, 0xFA, 0xC3, 0xF6, 0x19, 0xF0, 0xC6, 0x9D, 0xF0, 0xEB, 0xE1, 0xFA, 0xDD, 0x48, 0xAB, 0xFD, 0xAF, 0xAB, 0x7E, 0xF2, 0x56, 0x23, 0xE6, 0x44, 0xFE, 0x15, 0xCD, 0x7C, 0xB9, 0xE1, 0x3F, 0x0D, 0x37, 0xC5, 0x3F, 0x8E, 0x52, 0x42, 0x57, 0x75, 0xBC, 0x73, 0x79, 0xD3, 0x1E, 0xDB, 0x10, 0x0F, 0xE7, 0x8C, 0x57, 0xD5, 0xDE, 0x0E, 0xD5, 0xAD, 0x5B, 0x4A, 0x86, 0x6B, 0x50, 0xAB, 0xE5, 0xE6, 0x3E, 0x0F, 0x4C, 0x71, 0xFD, 0x2B, 0x0C, 0xF7, 0x15, 0xFE, 0xC5, 0x4B, 0x04, 0xDB, 0xBD, 0x93, 0x97, 0xCF, 0xA3, 0xFC, 0x4F, 0xB4, 0xCA, 0xE9, 0xDB, 0x17, 0x3C, 0x5A, 0x4A, 0xD7, 0x92, 0x8F, 0xCB, 0x7B, 0x1E, 0xD7, 0x63, 0xE3, 0xB8, 0x41, 0x78, 0xE7, 0x65, 0x58, 0xF1, 0x92, 0x49, 0xE2, 0x9F, 0xAB, 0xF8, 0xCB, 0x4F, 0xB7, 0xD1, 0xA4, 0x99, 0x5A, 0x16, 0x46, 0x42, 0xBB, 0x85, 0x78, 0x77, 0x88, 0x3C, 0x6A, 0x12, 0xD6, 0x58, 0xDE, 0x4C, 0x64, 0x63, 0xAD, 0x79, 0x9F, 0x8D, 0xFE, 0x38, 0xCD, 0xA0, 0xF8, 0x33, 0x52, 0xB5, 0x59, 0x0F, 0xEE, 0xF9, 0x87, 0x1E, 0xA6, 0xBE, 0x52, 0x8E, 0x43, 0xF5, 0x86, 0xB9, 0x3B, 0xA3, 0xD6, 0xC4, 0xE7, 0xD4, 0xE8, 0x4B, 0xDF, 0xFE, 0x99, 0x81, 0xFB, 0x56, 0xFC, 0x4F, 0x5F, 0x88, 0x7E, 0x38, 0xB1, 0xD0, 0x2C, 0xE4, 0xDD, 0x65, 0xA4, 0xFC, 0xD2, 0x90, 0x72, 0x19, 0xCF, 0x5F, 0xCA, 0xB9, 0x24, 0xC2, 0x20, 0xE9, 0x81, 0xC5, 0x72, 0x3E, 0x0E, 0x9E, 0x4B, 0xED, 0x66, 0x69, 0xA4, 0x62, 0xF2, 0x48, 0x0B, 0x33, 0x1E, 0xA4, 0x93, 0xD6, 0xBA, 0x2D, 0x52, 0xFD, 0x74, 0xDB, 0x56, 0x91, 0xAB, 0xF5, 0xBC, 0x36, 0x15, 0x61, 0xE9, 0xC6, 0x8C, 0x7A, 0x2F, 0xC4, 0xF8, 0xBC, 0x76, 0x3A, 0x78, 0xBA, 0xF2, 0xC4, 0x4F, 0xAB, 0xFB, 0x91, 0xEB, 0x9F, 0xB2, 0xF7, 0xC3, 0x3B, 0x1F, 0x16, 0x78, 0x92, 0xE3, 0x5C, 0xD7, 0x24, 0x86, 0xDF, 0x43, 0xD0, 0x87, 0x98, 0xF2, 0x4A, 0xD8, 0x46, 0x7E, 0xD9, 0xF5, 0xC5, 0x77, 0xDF, 0x14, 0x3E, 0x31, 0x6B, 0x1F, 0xB4, 0xB7, 0x88, 0xE3, 0xF0, 0x7F, 0xC3, 0xDB, 0x57, 0x8A, 0xD5, 0x87, 0x97, 0x35, 0xE2, 0x82, 0xA5, 0x97, 0xA1, 0x39, 0x1D, 0x16, 0xBE, 0x77, 0xF8, 0x6D, 0x37, 0x89, 0x3E, 0x36, 0xDF, 0xE9, 0xFE, 0x11, 0xD2, 0xDA, 0x48, 0x74, 0xFF, 0x00, 0x37, 0xCC, 0x95, 0x63, 0x24, 0x2B, 0x12, 0x7E, 0xF3, 0x9F, 0x61, 0x5F, 0xA3, 0x9F, 0xB3, 0x7F, 0xC1, 0x1D, 0x07, 0xE0, 0x57, 0x86, 0x16, 0xCE, 0xCF, 0xCA, 0x92, 0xFD, 0x90, 0x35, 0xD5, 0xD3, 0x0F, 0x9D, 0xDB, 0xEB, 0xE9, 0x5F, 0x98, 0xF1, 0x66, 0x32, 0x9E, 0x07, 0x13, 0xF5, 0xBC, 0x47, 0xBF, 0x57, 0xEC, 0x43, 0xA4, 0x57, 0xF3, 0x4B, 0xBB, 0xF2, 0x3D, 0x8C, 0x35, 0x4A, 0xB2, 0xC3, 0xAA, 0x78, 0x7B, 0xC6, 0x3D, 0x5A, 0xDD, 0xBE, 0xBF, 0x24, 0x71, 0xFF, 0x00, 0x05, 0xFF, 0x00, 0xE0, 0x9F, 0x9E, 0x1E, 0xF8, 0x63, 0xA6, 0x68, 0x92, 0xBA, 0x2D, 0xD6, 0xB9, 0x6B, 0x72, 0x6E, 0xEE, 0x6F, 0x99, 0x37, 0x48, 0xCE, 0x63, 0x64, 0xDA, 0xB9, 0xE8, 0x06, 0xE3, 0xF5, 0x20, 0x57, 0xB9, 0x4B, 0xE1, 0x1B, 0xAD, 0x22, 0x58, 0xFF, 0x00, 0xB2, 0xE4, 0xF3, 0x21, 0x50, 0x32, 0xB2, 0x1F, 0x9B, 0x3D, 0xF0, 0x6B, 0xA3, 0xD0, 0xED, 0x46, 0xA2, 0x9B, 0x94, 0xE5, 0x71, 0xC1, 0xAE, 0x53, 0xE2, 0x87, 0xC7, 0x3F, 0x08, 0xFE, 0xCE, 0x9A, 0x35, 0xDE, 0xAD, 0xE3, 0xAD, 0x73, 0x4F, 0xB3, 0xB7, 0x61, 0x8B, 0x4B, 0x65, 0xFD, 0xE5, 0xD5, 0xC3, 0x7F, 0x72, 0x28, 0x97, 0xE6, 0x76, 0x3C, 0x74, 0x18, 0x1D, 0x49, 0x03, 0x9A, 0xFC, 0xEE, 0x9C, 0xF3, 0x2C, 0xD6, 0xB2, 0x75, 0x1B, 0x93, 0x93, 0xDD, 0xF4, 0xF2, 0x4B, 0xB7, 0x91, 0xCF, 0xF5, 0xCF, 0xAB, 0xC3, 0xD9, 0xC2, 0xD6, 0x5D, 0x3B, 0xB6, 0x43, 0x6D, 0xE1, 0xCD, 0x43, 0x50, 0x99, 0xB6, 0x43, 0x24, 0x0D, 0x1B, 0x12, 0xDF, 0x30, 0x51, 0x91, 0xD7, 0x3E, 0xBF, 0xE1, 0x5F, 0x33, 0x7C, 0x7C, 0xFD, 0xB8, 0x75, 0x4F, 0x15, 0xF8, 0xF2, 0xDB, 0xC1, 0x3F, 0x0B, 0x6D, 0x61, 0xF1, 0x47, 0x89, 0xA4, 0x6F, 0xB3, 0x7D, 0xAA, 0x30, 0x1A, 0xD6, 0x12, 0xB9, 0x0C, 0xE3, 0x04, 0x2B, 0x32, 0x82, 0x72, 0xEC, 0x44, 0x71, 0x0C, 0x96, 0x24, 0x92, 0xAB, 0xC1, 0xFC, 0x6A, 0xFD, 0xAE, 0x3E, 0x21, 0xFF, 0x00, 0xC1, 0x45, 0x7C, 0x47, 0x75, 0xE0, 0x8F, 0x87, 0x7A, 0x65, 0xD7, 0x87, 0xFC, 0x13, 0x6F, 0x83, 0xAA, 0x4F, 0x24, 0x85, 0x0B, 0xC2, 0xD9, 0xC1, 0xBE, 0x99, 0x32, 0x15, 0x08, 0x07, 0x6D, 0xB4, 0x64, 0x99, 0x3E, 0x6C, 0x97, 0x50, 0x4A, 0x7B, 0x07, 0xEC, 0xE3, 0xE0, 0x4F, 0x0C, 0x7E, 0xCC, 0xDE, 0x0C, 0xBA, 0xD1, 0x74, 0xDD, 0x35, 0x6E, 0xB5, 0x4B, 0xC0, 0xBF, 0x6D, 0xD6, 0xDC, 0x62, 0xEA, 0xF4, 0xA8, 0xE1, 0x30, 0x38, 0x8E, 0x20, 0xD9, 0x2B, 0x1A, 0x9C, 0x0E, 0x32, 0x5D, 0xB2, 0xE7, 0xEA, 0x7F, 0xB2, 0x69, 0xE5, 0x3E, 0xFE, 0x2E, 0x5E, 0xD2, 0xAD, 0xBD, 0xD8, 0x74, 0x5D, 0x9C, 0xBF, 0xCA, 0xFA, 0xF9, 0x1E, 0x86, 0x07, 0xEB, 0x99, 0x82, 0x72, 0xA1, 0x4D, 0x59, 0x75, 0xD3, 0x4E, 0xF6, 0xBE, 0xEF, 0xF2, 0xFC, 0xBD, 0x37, 0xF6, 0x5D, 0xFD, 0x8F, 0x6C, 0x7E, 0x08, 0xE9, 0x17, 0x5A, 0xC6, 0xB9, 0xA8, 0x37, 0x88, 0xFE, 0x22, 0x6B, 0xC0, 0x3E, 0xAF, 0xAD, 0x48, 0x49, 0x18, 0x38, 0x3F, 0x67, 0x83, 0x70, 0xCA, 0xC2, 0xA4, 0x0E, 0x70, 0x0B, 0x95, 0x04, 0x85, 0x01, 0x23, 0x4F, 0x5C, 0xB5, 0xF0, 0xFD, 0xBD, 0xC5, 0xE2, 0xC7, 0xB9, 0xBF, 0x76, 0x77, 0xF5, 0xFB, 0xBD, 0xB9, 0xF5, 0xEB, 0xDF, 0x8F, 0xD2, 0xBC, 0xDF, 0xC2, 0x1F, 0x1A, 0xF4, 0x3D, 0x32, 0x36, 0x5D, 0x52, 0x3B, 0xA9, 0x24, 0x03, 0xE5, 0x20, 0x17, 0xC7, 0xB0, 0xE7, 0x8A, 0xD2, 0xB7, 0xFD, 0xA7, 0xB4, 0x3B, 0x1B, 0x16, 0x91, 0xB4, 0xEB, 0x98, 0x64, 0x66, 0x08, 0x9B, 0xD9, 0x7E, 0x73, 0xD8, 0x0E, 0x72, 0x49, 0xFE, 0xE8, 0xC9, 0x3D, 0x06, 0x6B, 0xE6, 0xEA, 0x51, 0x9E, 0x26, 0xB2, 0xC4, 0xE3, 0x24, 0xAF, 0xD7, 0x4E, 0x8B, 0xA6, 0x9B, 0x79, 0x5A, 0xC8, 0xC7, 0x11, 0x92, 0xE6, 0x54, 0xDC, 0xA3, 0x18, 0x49, 0xA5, 0xD7, 0x4B, 0x6B, 0xD7, 0x73, 0xBA, 0xD6, 0x3C, 0x3F, 0x6F, 0x6D, 0x19, 0x68, 0xE6, 0xDB, 0x20, 0x19, 0xC3, 0xB7, 0x0D, 0x8E, 0xD5, 0xC1, 0xF8, 0xE7, 0xE2, 0x05, 0x87, 0x83, 0xA3, 0xF2, 0xB6, 0xB5, 0xE6, 0xA0, 0xCB, 0x91, 0x6D, 0x19, 0xC6, 0xCC, 0x8C, 0x8F, 0x31, 0xBA, 0x20, 0xE9, 0xEA, 0x4F, 0x60, 0x6B, 0x3F, 0xC4, 0x1F, 0x10, 0xF5, 0xAF, 0x1A, 0xED, 0xF2, 0xD4, 0x69, 0x36, 0x7F, 0xC4, 0xA7, 0xFD, 0x63, 0x29, 0xE4, 0xF3, 0xEB, 0xDB, 0xB6, 0x3A, 0xFC, 0xC3, 0x8A, 0xF0, 0xCF, 0xDA, 0x3B, 0xF6, 0xBB, 0xF0, 0x1F, 0xEC, 0xF3, 0xA7, 0xC8, 0x35, 0x5B, 0xA4, 0xBB, 0xD5, 0x99, 0x18, 0xC3, 0xA6, 0xDB, 0x1D, 0xD3, 0x12, 0x7F, 0x89, 0xB9, 0xC2, 0xE7, 0xD5, 0x88, 0xFC, 0x6B, 0xC4, 0xC6, 0x7B, 0x3A, 0xF5, 0xDC, 0x30, 0xB0, 0xF4, 0xB1, 0xB6, 0x55, 0x81, 0xAD, 0x52, 0x4A, 0x32, 0xF7, 0xBB, 0xDB, 0xF5, 0x7D, 0x11, 0x53, 0xE3, 0xFF, 0x00, 0xC5, 0xC8, 0xF4, 0xFD, 0x37, 0xFB, 0x5B, 0xC4, 0xD7, 0xD1, 0xA4, 0x70, 0xC8, 0x23, 0xB5, 0xB5, 0x8C, 0x6D, 0x5F, 0x31, 0xB8, 0x58, 0xE2, 0x4C, 0xE5, 0xA4, 0x6E, 0x99, 0x24, 0xB1, 0xE7, 0x90, 0xA3, 0x03, 0xF3, 0xCF, 0xFE, 0x0A, 0x37, 0xF1, 0x89, 0xB5, 0x07, 0x8F, 0xC2, 0xB0, 0xC9, 0x1A, 0xCF, 0x70, 0xB1, 0xDE, 0xEA, 0xA9, 0x1B, 0x6E, 0x58, 0x94, 0x64, 0xC3, 0x6F, 0x9E, 0xF8, 0x2C, 0xCE, 0x4E, 0x06, 0x49, 0x53, 0xE9, 0x5B, 0x1E, 0x23, 0xFD, 0xA4, 0xAF, 0x3E, 0x33, 0xFC, 0x49, 0xBE, 0xF1, 0xFF, 0x00, 0x88, 0x82, 0xC7, 0xA2, 0xF8, 0x4E, 0x32, 0x74, 0x8D, 0x2D, 0x5C, 0xEC, 0x7B, 0xB7, 0xC8, 0x89, 0x47, 0xF7, 0x9B, 0x82, 0xEC, 0xDD, 0x70, 0x9E, 0x80, 0x0A, 0xF9, 0x2F, 0xE3, 0x7D, 0xFE, 0xBB, 0xE3, 0x58, 0xEF, 0xEF, 0xAD, 0xE6, 0x37, 0x1A, 0x96, 0xAD, 0x33, 0x3C, 0xD7, 0xAE, 0x76, 0xC7, 0x1E, 0xE3, 0x96, 0x60, 0x7B, 0xE0, 0x70, 0x02, 0xE7, 0x1C, 0x7A, 0x57, 0xD1, 0x64, 0x39, 0x2B, 0xA7, 0x88, 0x53, 0xAD, 0xF6, 0x7F, 0x3E, 0xDF, 0x25, 0xAB, 0xF3, 0x3F, 0x41, 0xC5, 0x7B, 0x2C, 0x16, 0x5F, 0x6A, 0x4B, 0xDF, 0x9A, 0x6A, 0xEB, 0xA4, 0x7A, 0xDB, 0xD5, 0xAB, 0x79, 0xEA, 0xCF, 0x92, 0x7E, 0x2C, 0xF8, 0xA2, 0x6B, 0xAF, 0x1A, 0xEA, 0x17, 0x96, 0xD2, 0x15, 0x5B, 0x79, 0x8D, 0xB4, 0x44, 0x1E, 0x36, 0x28, 0xC1, 0xC7, 0xD5, 0x8B, 0x1F, 0xC6, 0xBC, 0xFF, 0x00, 0x5D, 0xF1, 0x43, 0xEB, 0x4C, 0xD6, 0xAA, 0xBE, 0x5A, 0xAA, 0xE2, 0x59, 0x00, 0xE9, 0x91, 0xDB, 0xF3, 0xAF, 0x52, 0xF8, 0x85, 0xE0, 0xED, 0x3F, 0xC1, 0x96, 0x7F, 0x63, 0x46, 0x6D, 0x42, 0xF6, 0x43, 0xB1, 0x19, 0xC6, 0xD5, 0xDD, 0xD4, 0xB6, 0x07, 0x38, 0xEF, 0xCD, 0x79, 0x5F, 0x89, 0x2C, 0x2D, 0xFC, 0x3B, 0x01, 0xDB, 0x23, 0x4A, 0xE7, 0x96, 0x18, 0xE5, 0x89, 0xEA, 0x7F, 0x1A, 0xFD, 0x46, 0x8C, 0x93, 0x4A, 0xC7, 0xE1, 0x98, 0xE8, 0xCE, 0x35, 0x64, 0xE5, 0xD4, 0xA3, 0x71, 0xAD, 0x7F, 0x65, 0xDA, 0x08, 0x2C, 0xD4, 0x46, 0xA1, 0x70, 0x33, 0xCF, 0x3E, 0xA7, 0xDE, 0xB1, 0x65, 0xD5, 0x66, 0x58, 0xDA, 0x18, 0xF7, 0x34, 0xD2, 0xF2, 0xF2, 0x1F, 0xBC, 0x7D, 0xE9, 0xEC, 0xEE, 0xAB, 0xCE, 0x3C, 0xC6, 0xE3, 0xF1, 0xF4, 0xFA, 0x52, 0xC3, 0x02, 0xDB, 0x23, 0x67, 0x96, 0xCE, 0x59, 0x8F, 0x7A, 0xDD, 0x44, 0xF3, 0xB9, 0x89, 0xBF, 0xB6, 0x1A, 0x2D, 0x37, 0xEC, 0xCB, 0xF7, 0x9B, 0xE5, 0x07, 0xD0, 0x77, 0x3F, 0x95, 0x67, 0xC5, 0x38, 0xB7, 0x66, 0x6F, 0xBB, 0x94, 0x6A, 0x89, 0x6E, 0x37, 0x33, 0x32, 0xF1, 0xBB, 0x85, 0xFA, 0x7A, 0xFE, 0x35, 0x1C, 0xF1, 0x3C, 0xE8, 0xCA, 0x99, 0x32, 0x30, 0xC6, 0x71, 0xF7, 0x47, 0x73, 0xFA, 0xD1, 0xB6, 0xA0, 0x5D, 0xD0, 0x5A, 0x36, 0xB9, 0xBB, 0xB8, 0x9B, 0xEF, 0x2C, 0x05, 0x22, 0xCF, 0x73, 0xD1, 0xBF, 0x21, 0xC7, 0xE3, 0x57, 0xB4, 0x8D, 0x56, 0x4D, 0x2B, 0x53, 0xB3, 0xBA, 0x07, 0xF7, 0x96, 0x6F, 0x1F, 0xE8, 0x00, 0x3F, 0xCF, 0xF4, 0xA8, 0x75, 0x56, 0x86, 0xCE, 0x35, 0x58, 0xFF, 0x00, 0xD5, 0xC2, 0x86, 0x35, 0xCF, 0x71, 0x8F, 0xEA, 0x46, 0x7F, 0x1A, 0x34, 0x6B, 0x4F, 0xB7, 0xDB, 0x36, 0xF6, 0xF9, 0x88, 0x1C, 0xFB, 0x9E, 0x4D, 0x5D, 0x35, 0xA5, 0x85, 0x29, 0x72, 0xB5, 0x23, 0xF7, 0x4F, 0xFE, 0x09, 0x19, 0xF1, 0xE2, 0x4F, 0x8A, 0x1F, 0xB3, 0x2C, 0xDE, 0x15, 0xB8, 0xBA, 0x6F, 0xB7, 0x7C, 0x3F, 0xBA, 0x0B, 0x6C, 0x37, 0x65, 0x9A, 0xC2, 0xF0, 0xC9, 0x3C, 0x2D, 0xFF, 0x00, 0x01, 0x98, 0x5D, 0x27, 0xB2, 0xA2, 0x7A, 0x8A, 0xFA, 0x4B, 0x4F, 0xD2, 0x23, 0xB8, 0xD6, 0x56, 0x49, 0x26, 0xDB, 0x1A, 0x9C, 0xB9, 0x03, 0x93, 0xED, 0x5F, 0x90, 0xDF, 0xF0, 0x4C, 0x1F, 0xDA, 0x46, 0x4F, 0x82, 0x1F, 0x13, 0x3C, 0x2B, 0xAB, 0x4F, 0x22, 0xFF, 0x00, 0x65, 0xEA, 0x51, 0x0D, 0x0F, 0x57, 0x46, 0x7D, 0x8A, 0x61, 0x94, 0xAA, 0xAC, 0x84, 0xE0, 0x81, 0xE5, 0xCC, 0xB1, 0xBE, 0xE2, 0x38, 0x55, 0x71, 0xFC, 0x46, 0xBF, 0x64, 0xF4, 0x6B, 0xD8, 0x62, 0xF3, 0x23, 0x16, 0x36, 0xF0, 0xDC, 0xC8, 0x76, 0xAF, 0x9D, 0x23, 0xDC, 0x60, 0xF3, 0x9C, 0x00, 0x12, 0xBC, 0xA9, 0xD1, 0xAB, 0x1E, 0x65, 0x49, 0x6F, 0xF8, 0x1F, 0xA4, 0xE1, 0x71, 0x54, 0xAA, 0xD2, 0x84, 0xEB, 0x3D, 0xAD, 0xDD, 0xDF, 0xB6, 0x8B, 0xFA, 0xD0, 0xED, 0x7C, 0x14, 0x53, 0xC6, 0x1A, 0x82, 0xDB, 0xDB, 0xC7, 0x27, 0x91, 0x6A, 0x01, 0x67, 0xC7, 0x4F, 0x4E, 0x3D, 0xF1, 0x5D, 0x07, 0x8C, 0x3E, 0x38, 0x69, 0x7E, 0x1B, 0xD2, 0xAE, 0xAD, 0xB4, 0xCB, 0x88, 0xA4, 0xBC, 0xB7, 0x89, 0xC4, 0xD7, 0x2B, 0x83, 0x6F, 0x61, 0x81, 0x92, 0xCC, 0xC7, 0x82, 0xCA, 0x32, 0x76, 0x8C, 0xE3, 0x1F, 0x36, 0x3A, 0x1F, 0x3D, 0xB7, 0xB5, 0x3A, 0x7E, 0x8F, 0x79, 0xB6, 0xE2, 0xE9, 0x63, 0xBA, 0xE2, 0x45, 0x57, 0x28, 0x92, 0xFB, 0x30, 0x5C, 0x02, 0xBC, 0xF4, 0x39, 0x15, 0xF2, 0x7F, 0xED, 0x6B, 0xFB, 0x4B, 0xC3, 0x3B, 0x5F, 0x78, 0x1F, 0xC3, 0xB3, 0x2B, 0x47, 0x13, 0xF9, 0x5A, 0xB5, 0xD4, 0x47, 0xE5, 0x04, 0x63, 0xFD, 0x15, 0x08, 0xEE, 0x0F, 0xFA, 0xCC, 0x74, 0xC6, 0xCF, 0xEF, 0x81, 0x59, 0x5F, 0x0C, 0xFD, 0x66, 0xB2, 0x53, 0x77, 0x5D, 0xBF, 0x36, 0xDF, 0xE8, 0x3C, 0x77, 0x15, 0x45, 0x50, 0x72, 0x82, 0xD7, 0x6B, 0xED, 0xF2, 0x4B, 0xFC, 0xCE, 0x0F, 0xE2, 0x1F, 0xC5, 0xA6, 0xF8, 0x8F, 0xF1, 0x53, 0x52, 0xD4, 0x04, 0x92, 0x35, 0xA4, 0xEF, 0xB2, 0xD3, 0xCC, 0x62, 0x5B, 0x62, 0xF0, 0x19, 0x89, 0xE4, 0xB3, 0x72, 0xC4, 0x9E, 0x4B, 0x31, 0x27, 0x92, 0x6B, 0xBC, 0xF8, 0x23, 0xF0, 0xFF, 0x00, 0x47, 0xF1, 0x6F, 0xC2, 0x3F, 0x8A, 0x5A, 0xBE, 0xAD, 0x71, 0x6F, 0x1B, 0x43, 0xA3, 0x4D, 0xA5, 0x68, 0xE8, 0xFF, 0x00, 0x31, 0x6B, 0xE6, 0x8F, 0xCE, 0x2E, 0x07, 0xAA, 0x62, 0x04, 0x04, 0x76, 0x9E, 0x51, 0xDA, 0xBE, 0x65, 0xF1, 0x1F, 0x89, 0xE4, 0xD2, 0x84, 0x56, 0xF6, 0x6A, 0xD3, 0xEA, 0x57, 0x0C, 0xA9, 0x1C, 0x69, 0xCB, 0x02, 0xD8, 0x00, 0x7F, 0xBC, 0xC4, 0x80, 0x07, 0xA9, 0xFC, 0xFE, 0x88, 0xF0, 0x1F, 0x87, 0xE4, 0xF0, 0x97, 0x82, 0x74, 0xDD, 0x18, 0x7E, 0xFA, 0xE2, 0xDA, 0x3C, 0xCA, 0xCB, 0xF3, 0x07, 0x95, 0x8E, 0xE9, 0x08, 0xFA, 0xB9, 0x38, 0xF6, 0xC0, 0xED, 0x5F, 0xA1, 0x66, 0x94, 0x12, 0xA3, 0x1C, 0x3D, 0x27, 0xCA, 0xB4, 0xDB, 0xB2, 0xB7, 0xE6, 0x7E, 0x75, 0x4F, 0x34, 0x74, 0xEA, 0x3A, 0xF5, 0x23, 0xCD, 0x27, 0x7B, 0x27, 0xDD, 0xAF, 0xD2, 0xE6, 0xD7, 0xEC, 0xFD, 0xF1, 0x5B, 0x5E, 0xFF, 0x00, 0x84, 0x12, 0xDF, 0xC2, 0xFA, 0x1C, 0x92, 0xDB, 0xDC, 0x36, 0xB1, 0xF6, 0xB8, 0x25, 0x8A, 0x42, 0xB2, 0x3F, 0x99, 0x1C, 0x5B, 0x57, 0xD3, 0x6E, 0xE5, 0x62, 0x7D, 0x7A, 0x57, 0xD9, 0x5A, 0x5F, 0xC2, 0xB5, 0xF1, 0x56, 0xA9, 0xE1, 0x7F, 0x15, 0xEA, 0xD6, 0xB6, 0xF6, 0x7E, 0x25, 0xB3, 0xB7, 0x55, 0xBB, 0xF2, 0xD8, 0x84, 0x9F, 0xEF, 0x02, 0xAE, 0xBD, 0x1B, 0x01, 0xD8, 0x8E, 0x01, 0x07, 0x6F, 0x38, 0x5C, 0x57, 0xC3, 0xFF, 0x00, 0xB3, 0x6E, 0x8B, 0x7F, 0x69, 0xF1, 0x91, 0xAC, 0x6C, 0xA1, 0xDF, 0x36, 0x9F, 0x32, 0x4E, 0x22, 0x63, 0xB4, 0x94, 0x8C, 0x92, 0x06, 0x7F, 0xDA, 0x56, 0x5F, 0xCE, 0xBE, 0xFE, 0xF1, 0x87, 0x8C, 0x6D, 0x7C, 0x07, 0xF0, 0xEA, 0xF3, 0x56, 0xB8, 0x38, 0x8F, 0x4B, 0xB2, 0x79, 0xC8, 0x27, 0x90, 0x42, 0xE7, 0x1F, 0x9F, 0x15, 0xF0, 0x3C, 0x59, 0x51, 0x53, 0xC4, 0xC6, 0x18, 0x7B, 0x5E, 0x57, 0x6E, 0xDB, 0xBE, 0x6E, 0x8F, 0xC9, 0x9F, 0x6B, 0xC2, 0x18, 0x77, 0x5E, 0x95, 0x4A, 0xB8, 0x96, 0xDC, 0x63, 0x64, 0x93, 0xD9, 0x72, 0xA4, 0xD3, 0x5E, 0x68, 0xF8, 0xBF, 0xF6, 0xD9, 0xF1, 0xAF, 0xF6, 0xFF, 0x00, 0xC6, 0x9D, 0x4A, 0xCA, 0xDF, 0x0D, 0xF6, 0x5F, 0x2E, 0xD3, 0x08, 0x73, 0x92, 0xA3, 0xA6, 0x3E, 0xA7, 0xA5, 0x6F, 0x78, 0x43, 0x48, 0x87, 0xC1, 0xBF, 0x0F, 0xED, 0x2C, 0x63, 0x2B, 0xE6, 0x6D, 0x0F, 0x33, 0x0F, 0xE2, 0x73, 0xC9, 0xAE, 0x0F, 0xE0, 0xE7, 0x82, 0x6F, 0x3E, 0x2F, 0x78, 0xB3, 0x50, 0xF1, 0x2E, 0xA4, 0xCD, 0xE4, 0xA4, 0xED, 0x39, 0x6F, 0xF9, 0xED, 0x31, 0x39, 0xC0, 0xF6, 0x19, 0xAE, 0xD2, 0x41, 0x25, 0xAD, 0xB4, 0x8A, 0xFB, 0x88, 0x56, 0x20, 0x66, 0xB4, 0xCD, 0x6A, 0xC2, 0x34, 0xA9, 0xE5, 0xB0, 0x97, 0xF0, 0xED, 0xCD, 0xEB, 0xFF, 0x00, 0x00, 0xF5, 0x32, 0xD8, 0x54, 0x73, 0x9E, 0x61, 0x38, 0xFF, 0x00, 0x12, 0xFC, 0xBE, 0x97, 0xFD, 0x4E, 0x27, 0xE2, 0x45, 0xC8, 0xF2, 0x5B, 0x27, 0xAE, 0x7A, 0xD7, 0x8D, 0xF8, 0x8E, 0xE3, 0x12, 0x37, 0xE7, 0x5E, 0x97, 0xF1, 0x2F, 0x54, 0x54, 0x0C, 0xAD, 0xF5, 0xAF, 0x23, 0xD7, 0x6F, 0x3C, 0xC9, 0x48, 0xCF, 0xAD, 0x7B, 0x79, 0x3C, 0x1A, 0xA7, 0x73, 0xF3, 0x9E, 0x2A, 0xA8, 0xA5, 0x5E, 0xC8, 0xFC, 0xD1, 0x1D, 0x6B, 0x4F, 0xC1, 0x6D, 0xB3, 0xC6, 0x5A, 0x47, 0xFD, 0x7F, 0x41, 0xFF, 0x00, 0xA1, 0xAD, 0x66, 0x9A, 0xD0, 0xF0, 0x87, 0xFC, 0x8D, 0xDA, 0x5F, 0xFD, 0x7E, 0x43, 0xFF, 0x00, 0xA1, 0x8A, 0xEB, 0xBA, 0x68, 0xF9, 0x7A, 0x7F, 0x12, 0xF5, 0x3F, 0x76, 0x7F, 0x64, 0x8D, 0x0F, 0x67, 0x87, 0xFC, 0x41, 0xAF, 0x3A, 0xE6, 0x49, 0xB7, 0xC4, 0x8D, 0xDF, 0x01, 0x49, 0x35, 0x77, 0xE0, 0xCF, 0xC4, 0x70, 0x3C, 0x31, 0x71, 0x1C, 0x92, 0x7C, 0xCB, 0x3B, 0x90, 0x09, 0xF5, 0x35, 0xB7, 0xFB, 0x3E, 0x69, 0xCB, 0xA5, 0xFE, 0xCF, 0xB1, 0x1C, 0x61, 0xAE, 0x2D, 0xA5, 0x94, 0xFE, 0x20, 0xD7, 0x81, 0x78, 0x0B, 0xC5, 0x1F, 0x62, 0xB8, 0x96, 0x0D, 0xC7, 0xF7, 0x8C, 0x48, 0xE7, 0xDE, 0xBE, 0x63, 0x03, 0x45, 0x63, 0xAB, 0xE2, 0x9B, 0xE9, 0x28, 0xA5, 0xE8, 0xAE, 0x8F, 0xD6, 0x78, 0x87, 0x15, 0x2C, 0xB6, 0x86, 0x09, 0xC7, 0xED, 0x46, 0x4D, 0xFA, 0xBB, 0x3F, 0xD4, 0xF7, 0xBF, 0x10, 0x9B, 0x8F, 0x15, 0xD9, 0xB4, 0xFA, 0x6B, 0x79, 0xED, 0x18, 0xC4, 0x91, 0x29, 0xF9, 0xD7, 0xDF, 0x1D, 0xC5, 0x78, 0xA7, 0xC5, 0xEB, 0xB9, 0x74, 0xF8, 0x61, 0xB5, 0x99, 0x24, 0x89, 0xDD, 0xCB, 0xB2, 0xB8, 0xDA, 0x78, 0xAE, 0xBB, 0xC3, 0x5A, 0xCE, 0xA1, 0x6F, 0xAA, 0x47, 0x2D, 0x84, 0x92, 0xAD, 0xC2, 0x9C, 0x82, 0xBD, 0xFE, 0xBE, 0xD5, 0xC6, 0x7E, 0xD1, 0x9E, 0x2D, 0xD5, 0x3C, 0x5B, 0xE3, 0xD8, 0xA3, 0xD4, 0x12, 0x31, 0x25, 0x94, 0x69, 0x1B, 0xEC, 0x5C, 0x71, 0x8C, 0xE4, 0xFB, 0xD7, 0xD0, 0x65, 0xB4, 0x7D, 0x95, 0x75, 0x4F, 0x4B, 0x6F, 0xE6, 0x7C, 0xE5, 0x4A, 0xD4, 0x71, 0xB0, 0xFA, 0xCB, 0xE6, 0x53, 0x5D, 0x2D, 0xEE, 0xBF, 0x9F, 0x43, 0x23, 0xC0, 0x92, 0xED, 0xD4, 0x5B, 0xFD, 0xA4, 0xCD, 0x5B, 0xF1, 0x51, 0xB8, 0xD6, 0xF5, 0x6B, 0x7D, 0x3A, 0xD6, 0x39, 0x26, 0x9A, 0x46, 0x0A, 0xAA, 0xA3, 0x24, 0x93, 0x59, 0x9E, 0x10, 0xB8, 0xF2, 0xF5, 0x75, 0xFE, 0x11, 0xB4, 0x8A, 0xF5, 0x0F, 0xD9, 0x7B, 0xC4, 0x51, 0xF8, 0x67, 0xC7, 0x5A, 0xA6, 0xB9, 0x26, 0x9A, 0xBA, 0x93, 0x5B, 0xC5, 0xB6, 0x2D, 0xFF, 0x00, 0x76, 0x36, 0x27, 0x83, 0x5E, 0xEE, 0x3A, 0xB3, 0xA3, 0x09, 0x55, 0x5B, 0xA5, 0xA7, 0xA9, 0xA6, 0x16, 0x9C, 0x6A, 0x4A, 0x30, 0x9B, 0xB2, 0x7B, 0xBF, 0x23, 0xDA, 0x3F, 0x64, 0xDF, 0x0B, 0x4B, 0xF0, 0x6D, 0x63, 0x76, 0xD3, 0xE6, 0x96, 0xEA, 0x75, 0xDD, 0x3C, 0x9E, 0x59, 0xCE, 0x7D, 0x3E, 0x82, 0xBD, 0x1B, 0xE2, 0x97, 0xED, 0xA9, 0xE1, 0xFF, 0x00, 0x85, 0x50, 0x86, 0xD5, 0x2E, 0x47, 0x9C, 0x83, 0x3F, 0x66, 0x89, 0x83, 0x48, 0xE7, 0xD0, 0x8A, 0xF2, 0x5F, 0x13, 0x7C, 0x4A, 0xF1, 0x77, 0xC5, 0x99, 0x8D, 0x8A, 0xEB, 0x11, 0xE8, 0x76, 0x73, 0x64, 0x32, 0xDA, 0x45, 0x87, 0xC7, 0xFB, 0xD5, 0x27, 0x85, 0x7F, 0xE0, 0x9F, 0xDE, 0x14, 0xF1, 0x2A, 0xB5, 0xDE, 0xA3, 0x7B, 0xA8, 0x6A, 0x97, 0x92, 0x1C, 0xB3, 0xCD, 0x31, 0x3B, 0x8D, 0x7E, 0x61, 0x8C, 0xC0, 0xE0, 0x6A, 0x62, 0x1E, 0x2B, 0x31, 0x93, 0xBB, 0xE8, 0xBF, 0xCC, 0xFB, 0xFC, 0x0E, 0x2E, 0xAC, 0xA8, 0x2C, 0x3E, 0x06, 0x0A, 0x56, 0xD9, 0xCB, 0x4B, 0x7C, 0x91, 0xC2, 0xFC, 0x63, 0xFF, 0x00, 0x82, 0xC9, 0x78, 0xE3, 0xC4, 0xBA, 0x74, 0x9A, 0x2F, 0x81, 0xEC, 0x97, 0x47, 0x12, 0x7E, 0xEF, 0xED, 0x41, 0x7C, 0xDB, 0x82, 0x3A, 0x7C, 0xA3, 0xA0, 0x26, 0xB0, 0xFE, 0x03, 0xFE, 0xC7, 0x1E, 0x36, 0xFD, 0xA2, 0x75, 0xE1, 0xE2, 0x8F, 0x8A, 0x5A, 0xF6, 0xA5, 0xA4, 0xE9, 0x53, 0x32, 0xB4, 0xB2, 0xCF, 0x37, 0x99, 0xA9, 0x5E, 0xA9, 0x3F, 0x75, 0x03, 0x64, 0x46, 0x31, 0xFC, 0x4C, 0x38, 0xFE, 0xE9, 0xAF, 0xA4, 0x7C, 0x1F, 0xFB, 0x1B, 0x68, 0x3E, 0x0A, 0xD2, 0xEE, 0x6F, 0xF4, 0x4D, 0x16, 0xD4, 0xDC, 0x58, 0x9C, 0xBB, 0x94, 0xDC, 0xFC, 0x7A, 0x67, 0xBD, 0x59, 0xB5, 0xD7, 0x24, 0x41, 0xB6, 0x4D, 0xCB, 0xB7, 0xE5, 0xC1, 0x15, 0x75, 0xB3, 0x8A, 0x38, 0x6A, 0x2E, 0x8E, 0x4F, 0x4D, 0x53, 0xEF, 0x2D, 0xE5, 0xF2, 0xEC, 0x63, 0x95, 0xF0, 0xA5, 0x3C, 0x55, 0x67, 0x57, 0x1F, 0x56, 0xEE, 0xFA, 0xA5, 0xA2, 0x3D, 0x23, 0xC2, 0x96, 0x1E, 0x1D, 0xF8, 0x71, 0xE0, 0x9B, 0x5F, 0x0F, 0x78, 0x47, 0x4F, 0x87, 0x44, 0xD0, 0x6C, 0x59, 0xB6, 0xC1, 0x1F, 0xDE, 0x95, 0xC8, 0x19, 0x92, 0x46, 0x3F, 0x34, 0x8E, 0x71, 0xCB, 0xB1, 0x24, 0xF1, 0xCF, 0x02, 0xA9, 0xE9, 0x86, 0x1D, 0x42, 0xE2, 0x45, 0x95, 0xD6, 0x2F, 0x91, 0x8A, 0xBE, 0x70, 0x37, 0x7B, 0xD7, 0x2F, 0x6D, 0xAB, 0x65, 0x70, 0x1B, 0x6E, 0x7A, 0x8F, 0x5A, 0xB9, 0x6F, 0x7F, 0x8E, 0xE3, 0x15, 0xF1, 0x33, 0xA5, 0x26, 0x9B, 0x93, 0x7C, 0xCF, 0xAE, 0xEE, 0xFD, 0xCF, 0xD2, 0xF0, 0x99, 0x4D, 0x2A, 0x14, 0xBD, 0x9E, 0x1D, 0xD9, 0x74, 0x37, 0xBC, 0x57, 0x7F, 0xA4, 0xF8, 0x0F, 0xC2, 0xDA, 0xD7, 0x89, 0x35, 0x2B, 0xA5, 0x9F, 0x49, 0xF0, 0xEE, 0x9F, 0x77, 0xAA, 0xDE, 0xAC, 0x4E, 0x16, 0x47, 0x8A, 0xDE, 0x19, 0x25, 0x7D, 0xBB, 0xB8, 0x04, 0x88, 0xF8, 0xC9, 0xC7, 0x22, 0xB8, 0x3F, 0x0E, 0x7E, 0xD7, 0x9F, 0x0A, 0xF4, 0xFF, 0x00, 0x02, 0xE9, 0x3E, 0x3A, 0xB9, 0xF1, 0x46, 0x9F, 0x34, 0x1E, 0x24, 0x83, 0xED, 0x16, 0x09, 0x12, 0xBC, 0x8D, 0x6A, 0x84, 0x02, 0xD0, 0xAC, 0x4A, 0x0B, 0xA3, 0x29, 0x3B, 0x5C, 0xB0, 0x0C, 0x58, 0x60, 0xE0, 0x05, 0x51, 0x5F, 0xF6, 0x9E, 0xF8, 0x75, 0x2F, 0xC7, 0x0F, 0xD9, 0x9B, 0xC7, 0x1E, 0x12, 0xB2, 0xDA, 0xDA, 0x96, 0xB5, 0xA4, 0x4B, 0x1D, 0x9A, 0x33, 0x05, 0x59, 0x2E, 0x17, 0x12, 0x44, 0x84, 0xF6, 0x0D, 0x22, 0x2A, 0x92, 0x7A, 0x02, 0x6B, 0xF1, 0xB7, 0xC2, 0x1E, 0x2F, 0x93, 0xC3, 0xBA, 0x75, 0xF6, 0x93, 0x0C, 0x0D, 0x6B, 0x71, 0xE7, 0x95, 0x66, 0x92, 0x3F, 0x29, 0xA0, 0x90, 0x1D, 0xB2, 0x2B, 0x03, 0x82, 0x5D, 0x48, 0xC6, 0x0F, 0x42, 0x08, 0xED, 0x8A, 0x9A, 0x39, 0x5A, 0xC5, 0x27, 0xCF, 0x36, 0xAC, 0xFE, 0xF5, 0xFD, 0x75, 0x3E, 0x67, 0x38, 0x84, 0x94, 0xFD, 0x9D, 0x79, 0x4B, 0x95, 0xAE, 0x9A, 0x5F, 0xCB, 0x63, 0xF4, 0x4F, 0xF6, 0x85, 0xFF, 0x00, 0x82, 0xA6, 0xEB, 0x9E, 0x3C, 0x86, 0xF3, 0x4C, 0xF0, 0x34, 0x32, 0x68, 0x3A, 0x6B, 0x31, 0x87, 0xED, 0xD7, 0x24, 0x0B, 0xA9, 0x47, 0x42, 0x54, 0x2E, 0xE0, 0x9E, 0x9D, 0x72, 0x39, 0xE4, 0x1E, 0x9F, 0x1E, 0x78, 0x97, 0x57, 0xBC, 0xF1, 0x2F, 0x89, 0xE5, 0x6B, 0x8B, 0xE6, 0xBA, 0x91, 0x5B, 0x7D, 0xDC, 0x8C, 0x0B, 0x31, 0x24, 0x70, 0xA1, 0x89, 0xE5, 0x8F, 0x52, 0x48, 0xE0, 0x7B, 0x91, 0x59, 0xFA, 0xCF, 0x8A, 0xE3, 0xD0, 0x74, 0x66, 0x9D, 0x79, 0x8A, 0x14, 0x02, 0x25, 0xC7, 0xFA, 0xC3, 0xD0, 0x0F, 0xC7, 0xFC, 0x4D, 0x60, 0x78, 0x3F, 0x59, 0x61, 0x67, 0x30, 0x9A, 0x65, 0xFB, 0x44, 0xB3, 0x6E, 0x90, 0x93, 0xCB, 0x33, 0x7F, 0x9C, 0x7D, 0x05, 0x7B, 0xB8, 0x3C, 0xB6, 0x9E, 0x1A, 0x1C, 0xB4, 0x97, 0xF9, 0xFD, 0xE7, 0x2F, 0xD6, 0x29, 0xC2, 0x2A, 0x8D, 0x35, 0xCB, 0x1E, 0xCB, 0xF5, 0xEE, 0xFC, 0xD9, 0xBB, 0xE2, 0x9B, 0xB0, 0x74, 0xDB, 0x6D, 0x35, 0x59, 0x84, 0x73, 0x48, 0xCE, 0x57, 0x24, 0xEC, 0x1C, 0x6F, 0x7C, 0x74, 0xCE, 0x02, 0xA8, 0xE3, 0xD3, 0xBE, 0x73, 0xC9, 0x7C, 0x4C, 0xF1, 0x24, 0x3A, 0x66, 0x8B, 0x2B, 0x37, 0xEE, 0xE2, 0x8E, 0x33, 0x8F, 0xF6, 0x54, 0x0F, 0xE4, 0x3D, 0x2A, 0xC6, 0x97, 0xE2, 0x65, 0xD6, 0xE4, 0xBD, 0xBC, 0xC9, 0xF2, 0xD5, 0x84, 0x50, 0xE7, 0xAE, 0xC1, 0x9F, 0xE6, 0x49, 0x35, 0xE7, 0x9F, 0x18, 0x2F, 0xDB, 0x52, 0x2B, 0x67, 0x9F, 0x97, 0xFD, 0x6C, 0xC0, 0x1E, 0x8A, 0x33, 0x85, 0xFC, 0x7A, 0xFE, 0x03, 0xD6, 0xBD, 0x1A, 0x58, 0x74, 0x9A, 0x47, 0x0E, 0x3B, 0x19, 0x29, 0x53, 0x72, 0xF2, 0xFC, 0x8F, 0x05, 0xF1, 0xC5, 0xF4, 0x97, 0x7A, 0x9C, 0xD7, 0xD3, 0xE5, 0x64, 0x98, 0x7C, 0xA8, 0x7F, 0xE5, 0x92, 0x76, 0x1F, 0x53, 0xD4, 0xD7, 0x96, 0x6B, 0x36, 0xC7, 0x55, 0xD5, 0x1D, 0x9B, 0x98, 0xE3, 0x6E, 0x7F, 0xDE, 0xFF, 0x00, 0xEB, 0x57, 0xA0, 0x7C, 0x49, 0xD4, 0xBC, 0xA3, 0x34, 0xB2, 0x30, 0xDB, 0x18, 0x27, 0xFD, 0xE3, 0xD8, 0x7E, 0x35, 0xC4, 0x58, 0xC8, 0x57, 0x4D, 0x91, 0xA5, 0xF9, 0x86, 0x73, 0xCF, 0x76, 0x3C, 0x9A, 0xF7, 0xA8, 0xD3, 0xB2, 0x3F, 0x2B, 0xC7, 0x54, 0xBD, 0x46, 0x73, 0x9A, 0x85, 0xB8, 0x83, 0x53, 0x0A, 0x07, 0x08, 0x0B, 0xFD, 0x3B, 0x0F, 0xEB, 0x54, 0xF5, 0x09, 0x98, 0xDB, 0xC9, 0x9E, 0xFF, 0x00, 0x2E, 0x3E, 0xBC, 0x56, 0xA8, 0x8D, 0x75, 0x3D, 0x42, 0x4E, 0x36, 0xEE, 0x3B, 0x06, 0x3D, 0x85, 0x55, 0xD6, 0xED, 0x16, 0x18, 0x76, 0x2F, 0x27, 0x70, 0xE7, 0xF5, 0xAD, 0x7D, 0x0E, 0x14, 0xBA, 0xB3, 0x2F, 0x6E, 0xD3, 0x81, 0xF4, 0xAD, 0x1D, 0x3E, 0x15, 0x87, 0x43, 0x92, 0x7E, 0x3C, 0xCB, 0x89, 0x15, 0x47, 0xB2, 0x86, 0x1C, 0x7E, 0x27, 0x9A, 0xCE, 0x64, 0x64, 0x3E, 0xFC, 0x63, 0xEB, 0x5A, 0x9B, 0x76, 0x41, 0x0C, 0x3F, 0xDD, 0xC3, 0x13, 0xEA, 0x07, 0xFF, 0x00, 0x5E, 0x95, 0xAE, 0x57, 0x99, 0x4F, 0x55, 0x63, 0x23, 0xC7, 0x19, 0x1D, 0x72, 0x48, 0xF5, 0xAD, 0xBD, 0x06, 0xDB, 0x6D, 0xBC, 0x7D, 0x7E, 0x71, 0xBA, 0xB1, 0x10, 0x7D, 0xAE, 0xFB, 0x77, 0xF0, 0xF2, 0x07, 0xE1, 0xFF, 0x00, 0xEB, 0xAE, 0x9B, 0x41, 0x5D, 0xF6, 0xD1, 0x11, 0xFD, 0xCE, 0x3F, 0x4A, 0xA5, 0xBD, 0xD0, 0x72, 0xDD, 0x1E, 0xAF, 0xF0, 0x42, 0x45, 0x9F, 0x4A, 0xBA, 0xD3, 0xE4, 0x6C, 0xC7, 0x23, 0x15, 0xC7, 0xB3, 0xF3, 0xFC, 0xF7, 0x57, 0xEC, 0x8F, 0xEC, 0x59, 0xFB, 0x48, 0x69, 0xFF, 0x00, 0x17, 0xBE, 0x02, 0xE8, 0x6F, 0xA8, 0xEB, 0x1A, 0x7F, 0xFC, 0x24, 0xFA, 0x45, 0xB0, 0xB1, 0xD5, 0x61, 0x7B, 0x95, 0x5B, 0x81, 0x2C, 0x3F, 0x22, 0xCE, 0xCA, 0x48, 0x6C, 0x48, 0x9E, 0x5C, 0x9B, 0xBA, 0x65, 0xC8, 0xCE, 0x46, 0x2B, 0xF1, 0x63, 0xE1, 0xC5, 0xCF, 0xF6, 0x36, 0xA3, 0x6E, 0x7F, 0xE7, 0xEE, 0x32, 0xA7, 0xD9, 0x94, 0xE4, 0x7E, 0x84, 0xD7, 0xD8, 0x3F, 0xB1, 0xBF, 0x80, 0x3C, 0x49, 0xF1, 0x87, 0xE2, 0x15, 0xC6, 0x9F, 0xE1, 0x19, 0x5B, 0xFB, 0x6A, 0x3D, 0x38, 0xEA, 0xF6, 0xD0, 0x47, 0x7B, 0xF6, 0x59, 0xE6, 0x68, 0x19, 0x55, 0xC4, 0x0C, 0x48, 0x1E, 0x68, 0x59, 0x03, 0x63, 0x70, 0x25, 0x62, 0x6C, 0x64, 0x8C, 0x56, 0x98, 0x7E, 0x45, 0x5B, 0x96, 0xAC, 0x94, 0x53, 0xEA, 0xF6, 0xF9, 0xF6, 0x3E, 0x8B, 0x07, 0x5A, 0x7F, 0x57, 0x52, 0xA5, 0x07, 0x39, 0x2D, 0x2C, 0xB7, 0x7A, 0xF4, 0xDF, 0x63, 0xF4, 0x3B, 0xE2, 0x9F, 0xC4, 0xDF, 0x1A, 0x7C, 0x50, 0xF0, 0xDB, 0x68, 0x3F, 0x0A, 0xFC, 0x3D, 0xAD, 0xEB, 0x12, 0x5C, 0xA1, 0x8A, 0xEB, 0x5E, 0x48, 0xBE, 0xCF, 0x6B, 0x11, 0x27, 0x04, 0x41, 0x34, 0xBB, 0x63, 0x66, 0xC6, 0x7F, 0x79, 0xB8, 0x05, 0xEA, 0x33, 0xF7, 0x87, 0x99, 0xAF, 0xEC, 0x2B, 0x61, 0xFB, 0x36, 0x7C, 0x27, 0xD5, 0xFC, 0x6D, 0xF1, 0x2B, 0x59, 0xB4, 0x99, 0xB4, 0x7B, 0x29, 0x2E, 0xED, 0xBC, 0x3F, 0xA7, 0xCC, 0x71, 0x79, 0x3F, 0x48, 0xA2, 0x9E, 0xE3, 0x83, 0xF3, 0xCA, 0xC8, 0x85, 0x62, 0x1D, 0x5B, 0x3E, 0x6F, 0x5A, 0xE2, 0x6F, 0xFF, 0x00, 0x6B, 0x7F, 0x8D, 0xBF, 0x09, 0x67, 0x4D, 0x2F, 0x58, 0xF1, 0x5F, 0x8B, 0x34, 0xDB, 0xC8, 0xCE, 0x04, 0x3A, 0xED, 0xAA, 0xCD, 0x71, 0x81, 0xFE, 0xD5, 0xD4, 0x6C, 0xEC, 0x0F, 0xAE, 0x4D, 0x73, 0x3E, 0x2A, 0xF8, 0x95, 0xE3, 0x4F, 0xDA, 0x87, 0x55, 0xB6, 0xD3, 0x7C, 0x41, 0xAF, 0x5C, 0x6B, 0x11, 0xC2, 0xE2, 0x47, 0xDF, 0x04, 0x31, 0xC3, 0x6C, 0x07, 0x3B, 0x99, 0x62, 0x44, 0x07, 0xD9, 0x4F, 0x53, 0x8F, 0xA8, 0xF7, 0x29, 0xE5, 0xF8, 0xF8, 0xC7, 0x96, 0x35, 0x21, 0x0A, 0x4D, 0xEA, 0xE2, 0xDB, 0x93, 0x5E, 0xAD, 0x7E, 0x47, 0x25, 0x6C, 0x76, 0x5F, 0x1F, 0x79, 0xD3, 0x9C, 0xAA, 0x47, 0x65, 0x24, 0x94, 0x53, 0xF4, 0x4F, 0x5F, 0x99, 0xCC, 0xFE, 0xCC, 0x3F, 0x0F, 0x26, 0xD6, 0xFC, 0x48, 0x35, 0xFB, 0xD4, 0xDD, 0x6B, 0xA6, 0xFF, 0x00, 0xA9, 0x62, 0xB8, 0x13, 0xDC, 0x11, 0xF7, 0x80, 0xE9, 0x85, 0x07, 0x3F, 0xEF, 0x15, 0xC7, 0x43, 0x5F, 0x4D, 0x7C, 0x3B, 0xB7, 0xFE, 0xD3, 0xF1, 0x32, 0xDB, 0xAE, 0xD6, 0x92, 0x4C, 0x2A, 0x06, 0xEC, 0x6B, 0x0F, 0xC1, 0x7F, 0x0E, 0x2F, 0x23, 0x36, 0xBA, 0x1E, 0x95, 0x63, 0x37, 0x97, 0x12, 0x7C, 0x81, 0x87, 0x2C, 0x3A, 0x96, 0x27, 0xBE, 0x49, 0xCE, 0x7D, 0xEB, 0xE9, 0x5F, 0x83, 0x5F, 0x02, 0xAC, 0x7C, 0x1B, 0xA6, 0x59, 0xDD, 0xDF, 0xDB, 0xAC, 0x9A, 0xA8, 0xF9, 0xCB, 0x1E, 0x76, 0x93, 0xDA, 0xB8, 0x33, 0xEC, 0xEA, 0x85, 0x0A, 0x6E, 0xEF, 0x57, 0xA2, 0x48, 0xC3, 0x87, 0x32, 0x1C, 0x5E, 0x63, 0x8C, 0x53, 0x51, 0xB4, 0x22, 0xF5, 0x6D, 0x3B, 0x7A, 0x2F, 0x33, 0x8C, 0x3E, 0x02, 0x8B, 0xE1, 0xA7, 0xED, 0x0B, 0xE0, 0xFD, 0x68, 0x06, 0x8E, 0x1F, 0x10, 0x5A, 0x4D, 0xA5, 0x5D, 0x9C, 0xF0, 0xB7, 0x2A, 0xBE, 0x6C, 0x64, 0xFF, 0x00, 0xBE, 0xA8, 0x57, 0xFE, 0x00, 0x3D, 0x6B, 0x43, 0xE3, 0x97, 0x8A, 0xEF, 0xFE, 0x37, 0xF9, 0x3E, 0x03, 0xD2, 0x3C, 0xCB, 0x78, 0xEE, 0xA5, 0x13, 0x6A, 0xF7, 0x87, 0xEE, 0x41, 0x6E, 0xAC, 0x70, 0xA3, 0xD5, 0x9C, 0xA8, 0xC0, 0xF4, 0xAE, 0xCB, 0xE3, 0xD5, 0xDD, 0x8E, 0x9D, 0xE1, 0x75, 0x7B, 0xB5, 0x0A, 0xD0, 0x4A, 0x97, 0x36, 0xEC, 0x07, 0x31, 0xCB, 0x19, 0xDE, 0x84, 0x7E, 0x23, 0x07, 0xD8, 0x91, 0x5F, 0x35, 0xF8, 0x43, 0xE3, 0x7D, 0xE5, 0xF7, 0xC6, 0xF8, 0x6E, 0x60, 0x82, 0xE2, 0x2D, 0x3A, 0x79, 0x18, 0x15, 0x08, 0x70, 0x77, 0x77, 0x3E, 0xA7, 0x3F, 0x96, 0x2B, 0xE3, 0xB0, 0x7E, 0xD7, 0x18, 0xBE, 0xB5, 0xF6, 0xA9, 0xAD, 0x1B, 0xEE, 0xAE, 0xD7, 0xAB, 0x5F, 0xA1, 0xFA, 0x46, 0x65, 0x88, 0xA3, 0x96, 0xCD, 0x60, 0x9F, 0xC3, 0x52, 0x4A, 0xE9, 0x6F, 0x66, 0x92, 0x7E, 0x9B, 0x7E, 0x27, 0xBF, 0x0F, 0x08, 0x58, 0xF8, 0x0B, 0xC2, 0x96, 0xFA, 0x6E, 0x9F, 0x12, 0xC3, 0x6F, 0x6C, 0x9B, 0x40, 0xEE, 0xDE, 0xE7, 0xDC, 0xF5, 0xAF, 0x3B, 0xF1, 0x73, 0xAA, 0x43, 0x21, 0xF4, 0xE4, 0xD4, 0x9F, 0x14, 0x7F, 0x69, 0x0B, 0x5D, 0x32, 0xFA, 0x4B, 0x34, 0xB4, 0xBE, 0x9B, 0x67, 0x0C, 0x52, 0x12, 0x54, 0x1F, 0xAD, 0x72, 0x67, 0xC5, 0x13, 0x78, 0xAF, 0x45, 0x92, 0x78, 0xED, 0xAE, 0x15, 0x5B, 0xA2, 0xB4, 0x67, 0x75, 0x79, 0xF4, 0x70, 0x75, 0xE2, 0xFD, 0xB5, 0x45, 0xBF, 0x53, 0xD6, 0xC4, 0xE6, 0x98, 0x4A, 0x89, 0xE1, 0xE8, 0xBB, 0xB8, 0xAD, 0x97, 0x4B, 0x1E, 0x37, 0xF1, 0x33, 0x5F, 0xF3, 0x35, 0x39, 0x53, 0x35, 0xE7, 0x5A, 0x85, 0xF1, 0x6B, 0x83, 0x9E, 0xF5, 0xD6, 0xF8, 0xEF, 0x44, 0xD4, 0x9F, 0x59, 0x90, 0xFD, 0x86, 0xF0, 0x8D, 0xD9, 0x18, 0x89, 0xBF, 0xC2, 0xB9, 0x5B, 0xBF, 0x0E, 0x6A, 0x4C, 0x73, 0xFD, 0x9F, 0x7B, 0xED, 0xFB, 0x86, 0xFF, 0x00, 0x0A, 0xFD, 0x3B, 0x09, 0x2A, 0x50, 0xA5, 0x14, 0x9A, 0xDB, 0xB9, 0xF8, 0x0E, 0x69, 0x1A, 0xF5, 0x71, 0x33, 0x6E, 0x2F, 0x77, 0xD1, 0x9F, 0x9C, 0x7B, 0xD8, 0x0F, 0x5A, 0xD3, 0xF0, 0x83, 0x0F, 0xF8, 0x4B, 0xB4, 0x9F, 0xFA, 0xFD, 0x87, 0xFF, 0x00, 0x43, 0x15, 0x95, 0xBB, 0x23, 0x8A, 0xD3, 0xF0, 0x6A, 0xEF, 0xF1, 0x96, 0x8E, 0xBF, 0xDE, 0xBE, 0x80, 0x7F, 0xE4, 0x45, 0xAC, 0xA5, 0xA2, 0xB9, 0xC1, 0x4F, 0xE3, 0x5E, 0xA8, 0xFE, 0x85, 0x3E, 0x1C, 0xCC, 0xDA, 0x57, 0xC0, 0x5B, 0x59, 0x22, 0x8D, 0x5A, 0x4B, 0x7D, 0x2D, 0xA4, 0x54, 0x61, 0x90, 0xEC, 0x10, 0x9C, 0x11, 0xFA, 0x57, 0xE7, 0x1B, 0xFF, 0x00, 0xC1, 0x42, 0x7E, 0x26, 0x41, 0x7D, 0x20, 0x87, 0xE1, 0xEF, 0x87, 0x54, 0xC7, 0x23, 0x00, 0x46, 0x9A, 0xDE, 0xA6, 0xBF, 0x48, 0xFC, 0x19, 0x09, 0xB2, 0xF8, 0x51, 0x1C, 0x2D, 0xF7, 0xA1, 0xB2, 0x64, 0x23, 0xE8, 0xA6, 0xBE, 0x11, 0x1A, 0x90, 0x8A, 0xEA, 0x4F, 0xBB, 0xFE, 0xB1, 0xBB, 0x7B, 0x9A, 0xF9, 0x6E, 0x15, 0xC2, 0xD2, 0xC4, 0x54, 0xC4, 0x3A, 0x8A, 0xFA, 0xAB, 0x6A, 0xFA, 0xDC, 0xFD, 0x67, 0xC4, 0x6C, 0x55, 0x7C, 0x3D, 0x2C, 0x1A, 0xA5, 0x2E, 0x5F, 0x75, 0xDF, 0x45, 0xD3, 0x97, 0xBA, 0x67, 0x37, 0xA4, 0x7F, 0xC1, 0x44, 0x3E, 0x36, 0xDD, 0x5D, 0x05, 0xD3, 0x7C, 0x0F, 0xA6, 0xAC, 0xBE, 0x90, 0xE9, 0xAD, 0x9A, 0xEC, 0x17, 0xE2, 0x5F, 0x8C, 0xBC, 0x67, 0xE2, 0x4B, 0x1B, 0xAD, 0x57, 0x4B, 0x7F, 0x27, 0x56, 0xB6, 0x13, 0xEA, 0xB7, 0x49, 0x6E, 0x56, 0x3B, 0x69, 0xBF, 0x86, 0x3C, 0xF4, 0x5F, 0xA5, 0x6C, 0xF8, 0x3B, 0xC7, 0x2F, 0xE1, 0xDB, 0xCF, 0x3A, 0x1D, 0xAB, 0x36, 0xD2, 0xA0, 0xE3, 0xD4, 0x57, 0x67, 0xE0, 0x3F, 0x1A, 0x35, 0xE7, 0xC2, 0xBF, 0x11, 0xE8, 0x72, 0xA8, 0x90, 0xDC, 0xB2, 0xDE, 0x2B, 0xFF, 0x00, 0x16, 0xE5, 0x23, 0x35, 0xF5, 0xCB, 0x0D, 0x0C, 0x34, 0xBD, 0xA5, 0x28, 0x2D, 0xE2, 0xBC, 0xED, 0x7D, 0x7E, 0xE3, 0xE2, 0xF2, 0xDC, 0x75, 0x5C, 0x4C, 0x7D, 0x9D, 0x7A, 0xCF, 0xC9, 0x59, 0x5A, 0xF6, 0x76, 0x5F, 0x3D, 0x99, 0xCD, 0xE9, 0x97, 0x86, 0xD6, 0xE3, 0x70, 0x6E, 0xC4, 0x7E, 0x95, 0xCE, 0xF8, 0xA3, 0xE3, 0x7F, 0xC6, 0x6F, 0x85, 0xFA, 0x84, 0xD6, 0xFF, 0x00, 0x0F, 0x7C, 0x2B, 0x71, 0xAC, 0x68, 0xF7, 0x71, 0x06, 0xBA, 0x9F, 0xFB, 0x3C, 0xCE, 0x85, 0xC6, 0x78, 0xDD, 0xED, 0xE9, 0x5A, 0xCB, 0x25, 0x7D, 0xE1, 0xFB, 0x15, 0x68, 0xF1, 0xDA, 0x7E, 0xCF, 0xBA, 0x77, 0x98, 0xA0, 0xFD, 0xAD, 0xE4, 0x91, 0xB2, 0x3B, 0x12, 0x6B, 0x3E, 0x2C, 0xCC, 0x23, 0x84, 0xC1, 0xA9, 0xCA, 0x0A, 0x57, 0x69, 0x59, 0xFD, 0xE7, 0xD1, 0xE4, 0x39, 0x5D, 0x4C, 0x7D, 0x77, 0x46, 0x9D, 0x47, 0x4E, 0xCA, 0xF7, 0x5B, 0xFF, 0x00, 0x4C, 0xFC, 0xCC, 0x3F, 0xB7, 0x27, 0xED, 0x11, 0xA7, 0x96, 0x93, 0xFE, 0x11, 0x38, 0x60, 0x31, 0x02, 0xCC, 0x7F, 0xB2, 0x88, 0xDA, 0x05, 0x41, 0xE0, 0xCF, 0xF8, 0x2A, 0x0F, 0xED, 0x27, 0xE3, 0x58, 0xA6, 0x3E, 0x17, 0xB1, 0x8F, 0x50, 0x5B, 0x77, 0x11, 0xCA, 0x6D, 0x34, 0xFD, 0xC2, 0x37, 0x3D, 0x01, 0xF7, 0xAF, 0xD0, 0xAF, 0xDA, 0xCB, 0xC0, 0x96, 0xBE, 0x18, 0xD1, 0xF5, 0x2D, 0x46, 0x04, 0x68, 0xD6, 0x6B, 0x67, 0x07, 0x03, 0xE5, 0x07, 0x6B, 0x57, 0xC3, 0xFF, 0x00, 0xF0, 0x4A, 0x0D, 0x41, 0xAC, 0x3E, 0x1B, 0xF8, 0xD6, 0x55, 0x38, 0x3F, 0xDB, 0x91, 0x8C, 0xFF, 0x00, 0xDB, 0x36, 0xAF, 0x06, 0x9D, 0x4C, 0x1E, 0x27, 0x09, 0xF5, 0x88, 0xD1, 0x5B, 0xA5, 0x67, 0xE6, 0x71, 0x57, 0xA3, 0x99, 0x60, 0xF3, 0x1F, 0xA9, 0x54, 0xC5, 0x4D, 0x68, 0xDD, 0xD5, 0xB6, 0x5B, 0x7D, 0xE3, 0x74, 0xCF, 0xDB, 0x83, 0xF6, 0xE0, 0xB9, 0x12, 0x2E, 0x9F, 0xE1, 0x6D, 0x65, 0x84, 0xBC, 0xB0, 0x8B, 0x4B, 0x3F, 0x37, 0xD6, 0xB9, 0x5F, 0x10, 0xFE, 0xD8, 0xDF, 0xB6, 0x9D, 0x8D, 0xCE, 0x6E, 0x7C, 0x1D, 0xA8, 0x46, 0xEC, 0x73, 0xF3, 0xE8, 0x7B, 0x89, 0x35, 0xFA, 0x21, 0xF0, 0xF3, 0xE3, 0xB5, 0xDF, 0x84, 0xE6, 0x69, 0x1E, 0x62, 0xC8, 0x23, 0x20, 0x02, 0x78, 0xCF, 0xAD, 0x70, 0xBE, 0x25, 0xFD, 0xB4, 0xBC, 0x35, 0xE2, 0xDF, 0x89, 0x51, 0xF8, 0x7E, 0x4D, 0x6A, 0xD9, 0xB5, 0x49, 0x0E, 0xD5, 0x8C, 0x30, 0x20, 0xB7, 0xF7, 0x73, 0xEB, 0xED, 0x5E, 0x6D, 0xBD, 0xF6, 0xBE, 0xAD, 0x0B, 0x2F, 0x26, 0x7B, 0xB1, 0xA3, 0x56, 0x2D, 0x4B, 0xEB, 0xD5, 0x17, 0x37, 0x9A, 0x5A, 0x9F, 0x0C, 0xC7, 0xFB, 0x69, 0xFE, 0xDB, 0x92, 0x1F, 0xF4, 0x7F, 0x08, 0xEA, 0xAC, 0x07, 0x23, 0x67, 0x85, 0x04, 0x98, 0xFF, 0x00, 0xC7, 0x6A, 0x74, 0xFD, 0xB0, 0x7F, 0x6F, 0x4B, 0x81, 0x98, 0xFC, 0x17, 0xE2, 0x4C, 0x76, 0x29, 0xE0, 0x95, 0x23, 0x1F, 0xF7, 0xC5, 0x7E, 0x86, 0xC1, 0xE3, 0x2B, 0x1B, 0x6D, 0x4F, 0xEC, 0xED, 0x75, 0x0C, 0x73, 0x30, 0x25, 0x63, 0x67, 0x1B, 0xDC, 0x7D, 0x2B, 0x7A, 0xDF, 0xC4, 0x9E, 0x75, 0x88, 0x58, 0xD7, 0x6B, 0x20, 0xC0, 0x23, 0xF8, 0x86, 0x49, 0xE7, 0xF4, 0xAE, 0x59, 0xE2, 0x29, 0x2D, 0xB0, 0xD0, 0xFB, 0x8F, 0x76, 0x86, 0x57, 0x89, 0x92, 0xFF, 0x00, 0x91, 0x85, 0x5F, 0x93, 0x3F, 0x39, 0x13, 0xF6, 0x91, 0xFF, 0x00, 0x82, 0x86, 0xCD, 0xB3, 0x67, 0x80, 0xFC, 0x66, 0x3C, 0xC3, 0xF2, 0xE3, 0xC0, 0xC8, 0x01, 0xCF, 0xA6, 0x63, 0xAF, 0x3E, 0xF1, 0x07, 0xC1, 0x5F, 0xDA, 0xDF, 0xE3, 0x5F, 0xC4, 0x2B, 0xED, 0x67, 0xC5, 0x5F, 0x03, 0xFC, 0x77, 0xA9, 0xEA, 0x5A, 0xA1, 0x44, 0xB9, 0x9F, 0x4F, 0xF0, 0xB7, 0xD9, 0x64, 0x67, 0x18, 0x1B, 0xCA, 0x20, 0x0A, 0xCE, 0x57, 0x00, 0x92, 0x01, 0x38, 0x07, 0x24, 0xF5, 0xFD, 0x9F, 0xF8, 0x3B, 0x6B, 0x75, 0xF1, 0x27, 0x5D, 0x5B, 0x55, 0x99, 0x6D, 0xD6, 0x06, 0x59, 0x5E, 0x42, 0xC4, 0xE0, 0x0F, 0x97, 0x8E, 0x7D, 0xEB, 0xE9, 0xDF, 0x87, 0x7A, 0x05, 0xA7, 0x83, 0xAD, 0xFE, 0x61, 0x13, 0x5C, 0x4A, 0x46, 0xE7, 0x3D, 0x7F, 0x03, 0xD6, 0xBC, 0x5A, 0x99, 0xDA, 0xA7, 0x3F, 0x67, 0xEC, 0x29, 0xAE, 0xED, 0x26, 0x9A, 0xFB, 0x8C, 0x33, 0x4C, 0xB6, 0xA6, 0x16, 0x2A, 0x7F, 0x5D, 0xAB, 0x51, 0xEE, 0xA2, 0xDA, 0x6B, 0xE7, 0x73, 0xF9, 0xCE, 0xF8, 0x91, 0xF0, 0xC7, 0xE2, 0x17, 0xC1, 0x7B, 0x9B, 0x0D, 0x37, 0xE2, 0x1F, 0x82, 0xBC, 0x69, 0xE0, 0xF8, 0x5D, 0x3E, 0xD5, 0x6A, 0xFA, 0xDE, 0x8F, 0x71, 0x69, 0x1C, 0x9B, 0x70, 0x31, 0xE6, 0xBA, 0x84, 0x6C, 0x67, 0xA0, 0x27, 0x1C, 0x83, 0xD4, 0x57, 0x39, 0xAD, 0xEA, 0x21, 0x7C, 0xB8, 0x6D, 0xDB, 0xF7, 0xD7, 0x99, 0x00, 0xFF, 0x00, 0x75, 0x7B, 0x9F, 0xF3, 0xEF, 0x5F, 0xD3, 0x87, 0x89, 0xFF, 0x00, 0xE2, 0x6D, 0x6F, 0xE5, 0xBB, 0x2B, 0x5B, 0xC8, 0x0A, 0xCB, 0x1B, 0x7C, 0xCA, 0xEB, 0x83, 0xC1, 0x07, 0x82, 0x0E, 0x70, 0x41, 0xAF, 0xCB, 0xBF, 0xDB, 0x5F, 0xFE, 0x08, 0x99, 0xE0, 0xBB, 0xDF, 0x1B, 0x6A, 0xBE, 0x39, 0xF8, 0x7F, 0xE3, 0x4B, 0x0F, 0x00, 0xBE, 0xA0, 0x49, 0x1E, 0x16, 0xBE, 0xB1, 0x69, 0x34, 0x93, 0x39, 0x24, 0xB7, 0xD9, 0x1A, 0x1F, 0xDE, 0xDB, 0xAB, 0x64, 0xB7, 0x96, 0xB1, 0xCA, 0x89, 0x93, 0xB4, 0x22, 0x00, 0xAB, 0xAE, 0x17, 0x38, 0xA7, 0x2A, 0xDE, 0xC6, 0x6A, 0xD7, 0xD9, 0xEF, 0x7F, 0xB8, 0xC2, 0x8E, 0x2A, 0xAD, 0x58, 0xA9, 0x49, 0x6B, 0xD6, 0xDD, 0x0F, 0xCD, 0x3B, 0x49, 0xD7, 0x45, 0x76, 0xDD, 0xB9, 0x61, 0x55, 0xC1, 0x23, 0xB2, 0x81, 0xD7, 0xF2, 0xAE, 0x67, 0xC4, 0xB3, 0x2C, 0xFA, 0x35, 0xCD, 0xEC, 0xAC, 0xBB, 0xEE, 0x09, 0x6C, 0x6E, 0xFB, 0x83, 0xD3, 0xF0, 0x18, 0x1F, 0x85, 0x7A, 0x87, 0xED, 0x3D, 0xFB, 0x2E, 0x7C, 0x42, 0xFD, 0x9F, 0xB4, 0xE8, 0xDF, 0x5A, 0xD1, 0x5A, 0x7D, 0x2A, 0xE1, 0xD5, 0x4E, 0xA9, 0xA6, 0xB1, 0xBA, 0xB4, 0x8C, 0x75, 0xC3, 0xB0, 0x00, 0xC7, 0xCE, 0x07, 0xCE, 0xAA, 0x0F, 0x38, 0x26, 0xBC, 0x1F, 0xC7, 0x17, 0x0A, 0x34, 0xE6, 0xF9, 0xB6, 0xC6, 0xAB, 0x83, 0xE9, 0x81, 0x5F, 0x47, 0x0A, 0x4F, 0x9A, 0xEC, 0x9C, 0x65, 0x7E, 0x48, 0x38, 0xB3, 0xC2, 0x7E, 0x27, 0xEA, 0x1F, 0xDA, 0x7A, 0xEA, 0xDB, 0xC7, 0x9F, 0x2A, 0x33, 0xBD, 0xBF, 0xDA, 0x23, 0xA5, 0x73, 0x77, 0xB7, 0x1E, 0x4D, 0x9B, 0x2F, 0x65, 0x25, 0xBE, 0xB5, 0xB5, 0xAC, 0xC9, 0xF6, 0x8B, 0x99, 0xEE, 0x18, 0x7C, 0xD3, 0x3E, 0x40, 0xF4, 0x02, 0xB0, 0x75, 0x58, 0x9A, 0x48, 0x82, 0x8E, 0xAE, 0x73, 0x8C, 0x76, 0xAF, 0x4A, 0x3A, 0x44, 0xFC, 0xF6, 0xB6, 0xB3, 0x6C, 0xA7, 0xA4, 0x29, 0x85, 0x56, 0x4F, 0xE2, 0x39, 0x3F, 0x52, 0x6A, 0x39, 0x9B, 0xED, 0x37, 0x64, 0x63, 0xEE, 0x92, 0xC7, 0xD3, 0xD3, 0x1F, 0xAD, 0x5C, 0x92, 0x2F, 0x21, 0x02, 0xAF, 0xF0, 0x8C, 0x67, 0x34, 0xBA, 0x36, 0x9D, 0xE7, 0x46, 0xF2, 0x63, 0x86, 0x3B, 0x41, 0x3E, 0x83, 0xFF, 0x00, 0xAF, 0x54, 0xBB, 0x18, 0x98, 0xD7, 0x36, 0x78, 0xD4, 0x82, 0xE3, 0xDF, 0x1F, 0x5E, 0x94, 0xF9, 0x39, 0x49, 0x1B, 0x1D, 0x3E, 0x51, 0xF4, 0xAD, 0x7B, 0xAD, 0x1D, 0xD2, 0xDE, 0x4B, 0xB6, 0x52, 0x15, 0x89, 0xDA, 0x4F, 0xA0, 0xE0, 0x55, 0x11, 0x6F, 0xC4, 0x69, 0xD4, 0x7D, 0xE6, 0xFC, 0x2A, 0x63, 0xA9, 0x72, 0x8D, 0x8A, 0xF6, 0x56, 0xB8, 0x70, 0xB8, 0xE5, 0x54, 0x0E, 0x7D, 0x4F, 0x35, 0xB3, 0xA5, 0xDE, 0xFD, 0x80, 0x46, 0x9E, 0x5E, 0xE0, 0xA4, 0x92, 0x41, 0xEB, 0xCD, 0x57, 0xD2, 0x6D, 0x95, 0xD1, 0xE6, 0x6E, 0xEC, 0x48, 0x14, 0xF8, 0xA3, 0xF2, 0xE1, 0x5C, 0xF5, 0x23, 0x3C, 0xF7, 0x27, 0xAD, 0x17, 0xB2, 0xD0, 0x67, 0x69, 0xA6, 0xF8, 0x8A, 0xDC, 0xFD, 0x8D, 0xA3, 0x8E, 0x65, 0x68, 0x66, 0x47, 0x60, 0x71, 0xD3, 0x90, 0x70, 0x6B, 0xE8, 0x6F, 0xD9, 0xCF, 0xC7, 0x5E, 0x2A, 0xB5, 0xF8, 0x81, 0xA2, 0x5A, 0xFC, 0x3D, 0x6D, 0x5A, 0x1F, 0x1D, 0x5D, 0x5C, 0x1B, 0x3D, 0x19, 0xEC, 0xCC, 0x69, 0x27, 0x9B, 0x32, 0xB4, 0x78, 0x0C, 0xE7, 0x68, 0x52, 0xAE, 0xC1, 0x8B, 0x0D, 0xA1, 0x49, 0x24, 0x8C, 0x64, 0x7C, 0xB9, 0xA6, 0x66, 0x3B, 0x67, 0xFF, 0x00, 0x65, 0x54, 0x8F, 0x6E, 0x49, 0xAF, 0xA4, 0x7F, 0x64, 0x3F, 0x1B, 0x6A, 0x1F, 0x0E, 0x3E, 0x2A, 0x68, 0xFE, 0x2E, 0xD2, 0xDD, 0x46, 0xA1, 0xE1, 0x99, 0x63, 0xBB, 0xB7, 0x52, 0x70, 0xB2, 0xB1, 0xC8, 0x68, 0xDB, 0xFD, 0x97, 0x8F, 0x7A, 0x37, 0xFB, 0x2E, 0x6B, 0x9F, 0x15, 0x52, 0x4D, 0x7F, 0x9E, 0xC7, 0xB9, 0x91, 0xD9, 0xCD, 0xC2, 0xED, 0x79, 0xAD, 0xD7, 0xA7, 0x9F, 0x63, 0xE9, 0xAF, 0x88, 0x76, 0x3F, 0xB6, 0x6D, 0xA6, 0x9F, 0xF6, 0x4F, 0x13, 0x5F, 0x6B, 0xB3, 0x5A, 0xC8, 0x79, 0x82, 0xEA, 0xEB, 0x4A, 0xB8, 0x8D, 0xBF, 0xE0, 0x3C, 0x8F, 0xD2, 0xB9, 0xFD, 0x37, 0xC4, 0x7F, 0xB5, 0x86, 0x89, 0x64, 0xB6, 0xD6, 0x3A, 0xD6, 0xB7, 0x63, 0x6A, 0xA7, 0x29, 0x15, 0xBD, 0xCE, 0x9D, 0x14, 0x6A, 0x4F, 0xA2, 0xAE, 0x00, 0xFC, 0x05, 0x7D, 0x51, 0xF1, 0x07, 0xF6, 0x95, 0xD3, 0xFE, 0x31, 0x5C, 0xD9, 0xEA, 0xBA, 0x71, 0x76, 0xD3, 0x2F, 0x21, 0x59, 0x63, 0x0D, 0x8D, 0xC9, 0x9E, 0xAA, 0xC3, 0x3C, 0x32, 0x9C, 0xA9, 0x1D, 0x88, 0x22, 0xB8, 0xEF, 0x13, 0x78, 0x9F, 0xC9, 0x28, 0xB1, 0xB7, 0x1C, 0x37, 0x1F, 0xCA, 0xBE, 0x8B, 0x03, 0x85, 0x85, 0x4A, 0x31, 0xF6, 0xD4, 0xE2, 0x9B, 0xD6, 0xC9, 0x2B, 0x1F, 0x33, 0x99, 0xE2, 0xAA, 0x53, 0xC5, 0x4E, 0x18, 0x7C, 0x45, 0x46, 0x96, 0x97, 0x72, 0x77, 0xD0, 0xF2, 0xAD, 0x12, 0xCB, 0xF6, 0xD3, 0xF1, 0x22, 0xC6, 0xD6, 0x7E, 0x24, 0xF1, 0x14, 0x9B, 0xD7, 0x72, 0x7F, 0xC4, 0xF3, 0x4E, 0x8C, 0x91, 0xF8, 0xB7, 0x15, 0x6F, 0x44, 0xD0, 0x7F, 0x6D, 0xFD, 0x6F, 0x50, 0x92, 0xCE, 0xC7, 0xC5, 0x9E, 0x28, 0x92, 0xE2, 0x0F, 0xBD, 0x1C, 0x7E, 0x26, 0xB1, 0xC2, 0xFF, 0x00, 0xE4, 0x4C, 0x57, 0xAB, 0xDF, 0x7C, 0x4A, 0xBA, 0xD0, 0xB4, 0x08, 0xDA, 0xCA, 0xE1, 0xA3, 0xFB, 0x42, 0x15, 0x72, 0x0F, 0x2B, 0xEB, 0x5B, 0x5F, 0xB2, 0xE7, 0xC5, 0xCF, 0xF8, 0x46, 0xBC, 0x7F, 0x8B, 0xA9, 0x09, 0x4B, 0xA3, 0x82, 0x58, 0xF7, 0xAE, 0x0C, 0x66, 0x09, 0xC2, 0x8C, 0xEB, 0x42, 0x9C, 0x1D, 0xB6, 0x5C, 0xA7, 0xA9, 0x96, 0xE2, 0xA1, 0x5B, 0x11, 0x4B, 0x0F, 0x5B, 0x11, 0x59, 0x73, 0x3F, 0x79, 0xFB, 0x47, 0xD7, 0xB1, 0xE0, 0x1E, 0x35, 0xB2, 0xFD, 0xB5, 0x3C, 0x1B, 0xA9, 0x59, 0xD9, 0xEB, 0x5E, 0x2D, 0xF1, 0x74, 0x57, 0x3A, 0x84, 0xAB, 0x05, 0xBC, 0x7F, 0xF0, 0x90, 0x5B, 0x49, 0xE6, 0x3B, 0x1C, 0x01, 0xF2, 0x39, 0xC7, 0x35, 0xE2, 0x8B, 0xFB, 0x63, 0x7C, 0x6E, 0xBE, 0x9A, 0xE1, 0x24, 0xF8, 0x81, 0xE2, 0x47, 0x92, 0xD2, 0x43, 0x14, 0xAB, 0x2D, 0xD8, 0xDC, 0xAC, 0x09, 0xC8, 0xFC, 0xF3, 0x5F, 0xA2, 0x3F, 0xB5, 0x47, 0xC5, 0x8B, 0x29, 0x7E, 0x35, 0xF8, 0x16, 0x18, 0xE6, 0x0C, 0x5B, 0x57, 0xB5, 0x5D, 0xA0, 0xE7, 0x93, 0x2A, 0x81, 0xFE, 0x7D, 0xAB, 0xF2, 0xF3, 0x5F, 0x8F, 0xEC, 0x3F, 0x12, 0x3C, 0x59, 0x0F, 0x3F, 0xBB, 0xD5, 0x6E, 0x57, 0x07, 0xB6, 0x25, 0x7A, 0x32, 0x7A, 0x74, 0xEB, 0xC2, 0x2E, 0xB5, 0x28, 0xA6, 0xD5, 0xF4, 0x8A, 0x5D, 0x5A, 0x33, 0xE2, 0x48, 0x54, 0xC1, 0xD6, 0x94, 0x30, 0xD8, 0x8A, 0x92, 0x8A, 0x93, 0x8E, 0xB3, 0x6F, 0xEC, 0xA7, 0xE5, 0xDC, 0xE9, 0xAE, 0x3F, 0x6A, 0x9F, 0x8B, 0xF7, 0x27, 0xF7, 0x9E, 0x34, 0xD6, 0x1F, 0xD4, 0xB4, 0xC0, 0xFF, 0x00, 0x4A, 0x8C, 0x7E, 0xD4, 0x1F, 0x17, 0x19, 0x7E, 0x5F, 0x1A, 0x6A, 0xCA, 0x3D, 0xA6, 0x03, 0xFA, 0x57, 0x27, 0x3C, 0xF8, 0xFC, 0x7D, 0x6A, 0x9C, 0x92, 0x90, 0x31, 0x9E, 0x2B, 0xDB, 0x96, 0x5F, 0x86, 0xFE, 0x45, 0xF7, 0x1F, 0x37, 0x1C, 0xC3, 0x17, 0xBF, 0xB5, 0x97, 0xFE, 0x04, 0xCF, 0x52, 0xB5, 0xF8, 0x8B, 0xF1, 0xBF, 0x57, 0xD2, 0x56, 0xFA, 0x1F, 0x16, 0x6A, 0x52, 0xC0, 0xDD, 0x1B, 0xED, 0x23, 0x3F, 0xCA, 0xB3, 0xE6, 0xF8, 0x9D, 0xF1, 0x9B, 0x3C, 0xF8, 0xAB, 0x55, 0xEB, 0xFF, 0x00, 0x3F, 0x03, 0xFC, 0x2B, 0x2B, 0xE1, 0xBF, 0xC5, 0x19, 0x7C, 0x34, 0x92, 0x59, 0x4C, 0xCC, 0xD6, 0xB3, 0xF0, 0xA0, 0xFF, 0x00, 0x01, 0xF6, 0xAE, 0xCD, 0xAF, 0xC5, 0xCA, 0xEF, 0x56, 0xCA, 0xB7, 0x35, 0x8C, 0x70, 0x74, 0x96, 0xF0, 0x5F, 0x71, 0xA4, 0xB1, 0x95, 0xDD, 0xB9, 0x6A, 0xCB, 0xFF, 0x00, 0x02, 0x67, 0xFF, 0xD9 -}; -#endif diff --git a/components/drivers/usb/cherryusb/demo/usb_host.c b/components/drivers/usb/cherryusb/demo/usb_host.c index dfcd66de36..8c8ac22a0d 100644 --- a/components/drivers/usb/cherryusb/demo/usb_host.c +++ b/components/drivers/usb/cherryusb/demo/usb_host.c @@ -31,24 +31,13 @@ #ifndef TEST_USBH_VIDEO #define TEST_USBH_VIDEO 0 #endif -#ifndef TEST_USBH_CDC_ECM -#define TEST_USBH_CDC_ECM 0 -#endif -#ifndef TEST_USBH_CDC_NCM -#define TEST_USBH_CDC_NCM 0 -#endif -#ifndef TEST_USBH_CDC_RNDIS -#define TEST_USBH_CDC_RNDIS 0 -#endif -#ifndef TEST_USBH_ASIX -#define TEST_USBH_ASIX 0 -#endif -#ifndef TEST_USBH_RTL8152 -#define TEST_USBH_RTL8152 0 + +#if defined(TEST_USBH_CDC_ECM) || defined(TEST_USBH_CDC_RNDIS) || defined(TEST_USBH_ASIX) || defined(TEST_USBH_RTL8152) +#error we have move those class implements into platform/none/usbh_lwip.c, and you should call tcpip_init(NULL, NULL) in your app #endif #if TEST_USBH_CDC_ACM -USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t cdc_buffer[512]; +USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t cdc_buffer[4096]; #if TEST_USBH_CDC_SPEED #define TEST_LEN (16 * 1024) @@ -96,12 +85,10 @@ static void usbh_cdc_acm_thread(void *argument) USB_LOG_RAW("per packet len:%d, out speed:%f MB/S\r\n", test_len[j], (test_len[j] * TEST_COUNT / 1024 / 1024) * 1000 / ((float)time_ms)); } #endif - memset(cdc_buffer, 0, 512); + memset(cdc_buffer, 0x55, 4096); - const uint8_t data1[10] = { 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x08, 0x14 }; - - memcpy(cdc_buffer, data1, 10); - usbh_bulk_urb_fill(&cdc_acm_class->bulkout_urb, cdc_acm_class->hport, cdc_acm_class->bulkout, cdc_buffer, 10, 3000, NULL, NULL); + /* for common, we use timeout with 0xffffffff, this is just a test */ + usbh_bulk_urb_fill(&cdc_acm_class->bulkout_urb, cdc_acm_class->hport, cdc_acm_class->bulkout, cdc_buffer, sizeof(cdc_buffer), 3000, NULL, NULL); ret = usbh_submit_urb(&cdc_acm_class->bulkout_urb); if (ret < 0) { USB_LOG_RAW("bulk out error,ret:%d\r\n", ret); @@ -110,6 +97,7 @@ static void usbh_cdc_acm_thread(void *argument) USB_LOG_RAW("send over:%d\r\n", cdc_acm_class->bulkout_urb.actual_length); } + /* we can change cdc_acm_class->bulkin->wMaxPacketSize with 4096 for testing zlp, default is ep mps */ usbh_bulk_urb_fill(&cdc_acm_class->bulkin_urb, cdc_acm_class->hport, cdc_acm_class->bulkin, cdc_buffer, cdc_acm_class->bulkin->wMaxPacketSize, 0xffffffff, usbh_cdc_acm_callback, cdc_acm_class); ret = usbh_submit_urb(&cdc_acm_class->bulkin_urb); if (ret < 0) { @@ -136,8 +124,10 @@ void usbh_hid_callback(void *arg, int nbytes) USB_LOG_RAW("0x%02x ", hid_buffer[i]); } USB_LOG_RAW("nbytes:%d\r\n", nbytes); + usbh_int_urb_fill(&hid_class->intin_urb, hid_class->hport, hid_class->intin, hid_buffer, hid_class->intin->wMaxPacketSize, 0, usbh_hid_callback, hid_class); usbh_submit_urb(&hid_class->intin_urb); } else if (nbytes == -USB_ERR_NAK) { /* only dwc2 should do this */ + usbh_int_urb_fill(&hid_class->intin_urb, hid_class->hport, hid_class->intin, hid_buffer, hid_class->intin->wMaxPacketSize, 0, usbh_hid_callback, hid_class); usbh_submit_urb(&hid_class->intin_urb); } else { } @@ -264,786 +254,6 @@ delete: } #endif -#if 0 -void usbh_videostreaming_parse_mjpeg(struct usbh_urb *urb, struct usbh_videostreaming *stream) -{ - struct usbh_iso_frame_packet *iso_packet; - uint32_t num_of_iso_packets; - uint8_t data_offset; - uint32_t data_len; - uint8_t header_len = 0; - - num_of_iso_packets = urb->num_of_iso_packets; - iso_packet = urb->iso_packet; - - for (uint32_t i = 0; i < num_of_iso_packets; i++) { - /* - uint8_t frameIdentifier : 1U; - uint8_t endOfFrame : 1U; - uint8_t presentationTimeStamp : 1U; - uint8_t sourceClockReference : 1U; - uint8_t reserved : 1U; - uint8_t stillImage : 1U; - uint8_t errorBit : 1U; - uint8_t endOfHeader : 1U; - */ - if (iso_packet[i].actual_length == 0) { /* skip no data */ - continue; - } - - header_len = iso_packet[i].transfer_buffer[0]; - - if ((header_len > 12) || (header_len == 0)) { /* do not be illegal */ - while (1) { - } - } - if (iso_packet[i].transfer_buffer[1] & (1 << 6)) { /* error bit, re-receive */ - stream->bufoffset = 0; - continue; - } - - if ((stream->bufoffset == 0) && ((iso_packet[i].transfer_buffer[header_len] != 0xff) || (iso_packet[i].transfer_buffer[header_len + 1] != 0xd8))) { - stream->bufoffset = 0; - continue; - } - - data_offset = header_len; - data_len = iso_packet[i].actual_length - header_len; - - /** do something here */ - - stream->bufoffset += data_len; - - if (iso_packet[i].transfer_buffer[1] & (1 << 1)) { - if ((iso_packet[i].transfer_buffer[iso_packet[i].actual_length - 2] != 0xff) || (iso_packet[i].transfer_buffer[iso_packet[i].actual_length - 1] != 0xd9)) { - stream->bufoffset = 0; - continue; - } - - /** do something here */ - - if (stream->video_one_frame_callback) { - stream->video_one_frame_callback(stream); - } - stream->bufoffset = 0; - } - } - /** do something here */ -} - -void usbh_videostreaming_parse_yuyv2(struct usbh_urb *urb, struct usbh_videostreaming *stream) -{ - struct usbh_iso_frame_packet *iso_packet; - uint32_t num_of_iso_packets; - uint8_t data_offset; - uint32_t data_len; - uint8_t header_len = 0; - - num_of_iso_packets = urb->num_of_iso_packets; - iso_packet = urb->iso_packet; - - for (uint32_t i = 0; i < num_of_iso_packets; i++) { - /* - uint8_t frameIdentifier : 1U; - uint8_t endOfFrame : 1U; - uint8_t presentationTimeStamp : 1U; - uint8_t sourceClockReference : 1U; - uint8_t reserved : 1U; - uint8_t stillImage : 1U; - uint8_t errorBit : 1U; - uint8_t endOfHeader : 1U; - */ - - if (iso_packet[i].actual_length == 0) { /* skip no data */ - continue; - } - - header_len = iso_packet[i].transfer_buffer[0]; - - if ((header_len > 12) || (header_len == 0)) { /* do not be illegal */ - while (1) { - } - } - if (iso_packet[i].transfer_buffer[1] & (1 << 6)) { /* error bit, re-receive */ - stream->bufoffset = 0; - continue; - } - - data_offset = header_len; - data_len = iso_packet[i].actual_length - header_len; - - /** do something here */ - - stream->bufoffset += data_len; - - if (iso_packet[i].transfer_buffer[1] & (1 << 1)) { - /** do something here */ - - if (stream->video_one_frame_callback && (stream->bufoffset == stream->buflen)) { - stream->video_one_frame_callback(stream); - } - stream->bufoffset = 0; - } - } - - /** do something here */ -} -#endif - -#if TEST_USBH_CDC_ECM || TEST_USBH_CDC_NCM || TEST_USBH_CDC_RNDIS || TEST_USBH_ASIX || TEST_USBH_RTL8152 -#include "netif/etharp.h" -#include "lwip/netif.h" -#include "lwip/pbuf.h" -#include "lwip/tcpip.h" -#if LWIP_DHCP -#include "lwip/dhcp.h" -#include "lwip/prot/dhcp.h" -#endif - -#ifdef __RTTHREAD__ - -#include -#include -#include - -#else -#include "FreeRTOS.h" -#include "task.h" -#include "semphr.h" -#include "timers.h" - -TimerHandle_t dhcp_handle; - -static void dhcp_timeout(TimerHandle_t xTimer) -{ - struct netif *netif = (struct netif *)pvTimerGetTimerID(xTimer); - struct dhcp *dhcp; - - if (netif_is_up(netif)) { - dhcp = netif_dhcp_data(netif); - - if (dhcp && (dhcp->state == DHCP_STATE_BOUND)) { - USB_LOG_INFO("IPv4 Address : %s\r\n", ipaddr_ntoa(&netif->ip_addr)); - USB_LOG_INFO("IPv4 Subnet mask : %s\r\n", ipaddr_ntoa(&netif->netmask)); - USB_LOG_INFO("IPv4 Gateway : %s\r\n\r\n", ipaddr_ntoa(&netif->gw)); - - xTimerStop(xTimer, 0); - } - } -} -#endif -#endif - -#if TEST_USBH_CDC_ECM -#include "usbh_cdc_ecm.h" - -struct netif g_cdc_ecm_netif; - -#ifdef __RTTHREAD__ -static struct eth_device cdc_ecm_dev; - -static rt_err_t rt_usbh_cdc_ecm_control(rt_device_t dev, int cmd, void *args) -{ - struct usbh_cdc_ecm *cdc_ecm_class = (struct usbh_cdc_ecm *)dev->user_data; - - switch (cmd) { - case NIOCTL_GADDR: - - /* get mac address */ - if (args) - rt_memcpy(args, cdc_ecm_class->mac, 6); - else - return -RT_ERROR; - - break; - - default: - break; - } - - return RT_EOK; -} - -static rt_err_t rt_usbh_cdc_ecm_eth_tx(rt_device_t dev, struct pbuf *p) -{ - return usbh_cdc_ecm_linkoutput(NULL, p); -} -#endif - -static err_t usbh_cdc_ecm_if_init(struct netif *netif) -{ - LWIP_ASSERT("netif != NULL", (netif != NULL)); - - netif->mtu = 1500; - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_UP; - netif->state = NULL; - netif->name[0] = 'E'; - netif->name[1] = 'X'; - netif->output = etharp_output; - netif->linkoutput = usbh_cdc_ecm_linkoutput; - return ERR_OK; -} - -void usbh_cdc_ecm_run(struct usbh_cdc_ecm *cdc_ecm_class) -{ -#ifdef __RTTHREAD__ - memset(&cdc_ecm_dev, 0, sizeof(struct eth_device)); - - cdc_ecm_dev.parent.control = rt_usbh_cdc_ecm_control; - cdc_ecm_dev.eth_rx = NULL; - cdc_ecm_dev.eth_tx = rt_usbh_cdc_ecm_eth_tx; - cdc_ecm_dev.parent.user_data = cdc_ecm_class; - - eth_device_init(&cdc_ecm_dev, "u0"); - eth_device_linkchange(&cdc_ecm_dev, RT_TRUE); - - usb_osal_thread_create("usbh_cdc_ecm_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_cdc_ecm_rx_thread, cdc_ecm_dev.netif); -#else - struct netif *netif = &g_cdc_ecm_netif; - - netif->hwaddr_len = 6; - memcpy(netif->hwaddr, cdc_ecm_class->mac, 6); - - IP4_ADDR(&cdc_ecm_class->ipaddr, 0, 0, 0, 0); - IP4_ADDR(&cdc_ecm_class->netmask, 0, 0, 0, 0); - IP4_ADDR(&cdc_ecm_class->gateway, 0, 0, 0, 0); - - netif = netif_add(netif, &cdc_ecm_class->ipaddr, &cdc_ecm_class->netmask, &cdc_ecm_class->gateway, NULL, usbh_cdc_ecm_if_init, tcpip_input); - netif_set_default(netif); - while (!netif_is_up(netif)) { - } - - dhcp_handle = xTimerCreate((const char *)"dhcp", (TickType_t)200, (UBaseType_t)pdTRUE, (void *const)netif, (TimerCallbackFunction_t)dhcp_timeout); - if (dhcp_handle == NULL) { - USB_LOG_ERR("timer creation failed! \r\n"); - while (1) { - } - } - - usb_osal_thread_create("usbh_cdc_ecm_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_cdc_ecm_rx_thread, netif); -#if LWIP_DHCP - dhcp_start(netif); - xTimerStart(dhcp_handle, 0); -#endif -#endif -} - -void usbh_cdc_ecm_stop(struct usbh_cdc_ecm *cdc_ecm_class) -{ -#ifdef __RTTHREAD__ - eth_device_deinit(&cdc_ecm_dev); -#else - struct netif *netif = &g_cdc_ecm_netif; -#if LWIP_DHCP - dhcp_stop(netif); - dhcp_cleanup(netif); - xTimerStop(dhcp_handle, 0); - xTimerDelete(dhcp_handle, 0); -#endif - netif_set_down(netif); - netif_remove(netif); -#endif -} -#endif - -#if TEST_USBH_CDC_NCM -#include "usbh_cdc_ncm.h" - -struct netif g_cdc_ncm_netif; - -#ifdef __RTTHREAD__ -static struct eth_device cdc_ncm_dev; - -static rt_err_t rt_usbh_cdc_ncm_control(rt_device_t dev, int cmd, void *args) -{ - struct usbh_cdc_ncm *cdc_ncm_class = (struct usbh_cdc_ncm *)dev->user_data; - - switch (cmd) { - case NIOCTL_GADDR: - - /* get mac address */ - if (args) - rt_memcpy(args, cdc_ncm_class->mac, 6); - else - return -RT_ERROR; - - break; - - default: - break; - } - - return RT_EOK; -} - -static rt_err_t rt_usbh_cdc_ncm_eth_tx(rt_device_t dev, struct pbuf *p) -{ - return usbh_cdc_ncm_linkoutput(NULL, p); -} -#endif - -static err_t usbh_cdc_ncm_if_init(struct netif *netif) -{ - LWIP_ASSERT("netif != NULL", (netif != NULL)); - - netif->mtu = 1500; - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_UP; - netif->state = NULL; - netif->name[0] = 'E'; - netif->name[1] = 'X'; - netif->output = etharp_output; - netif->linkoutput = usbh_cdc_ncm_linkoutput; - return ERR_OK; -} - -void usbh_cdc_ncm_run(struct usbh_cdc_ncm *cdc_ncm_class) -{ -#ifdef __RTTHREAD__ - memset(&cdc_ncm_dev, 0, sizeof(struct eth_device)); - - cdc_ncm_dev.parent.control = rt_usbh_cdc_ncm_control; - cdc_ncm_dev.eth_rx = NULL; - cdc_ncm_dev.eth_tx = rt_usbh_cdc_ncm_eth_tx; - cdc_ncm_dev.parent.user_data = cdc_ncm_class; - - eth_device_init(&cdc_ncm_dev, "u1"); - eth_device_linkchange(&cdc_ncm_dev, RT_TRUE); - - usb_osal_thread_create("usbh_cdc_ncm_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_cdc_ncm_rx_thread, cdc_ncm_dev.netif); -#else - struct netif *netif = &g_cdc_ncm_netif; - - netif->hwaddr_len = 6; - memcpy(netif->hwaddr, cdc_ncm_class->mac, 6); - - IP4_ADDR(&cdc_ncm_class->ipaddr, 0, 0, 0, 0); - IP4_ADDR(&cdc_ncm_class->netmask, 0, 0, 0, 0); - IP4_ADDR(&cdc_ncm_class->gateway, 0, 0, 0, 0); - - netif = netif_add(netif, &cdc_ncm_class->ipaddr, &cdc_ncm_class->netmask, &cdc_ncm_class->gateway, NULL, usbh_cdc_ncm_if_init, tcpip_input); - netif_set_default(netif); - while (!netif_is_up(netif)) { - } - - dhcp_handle = xTimerCreate((const char *)"dhcp", (TickType_t)200, (UBaseType_t)pdTRUE, (void *const)netif, (TimerCallbackFunction_t)dhcp_timeout); - if (dhcp_handle == NULL) { - USB_LOG_ERR("timer creation failed! \r\n"); - while (1) { - } - } - - usb_osal_thread_create("usbh_cdc_ncm_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_cdc_ncm_rx_thread, netif); -#if LWIP_DHCP - dhcp_start(netif); - xTimerStart(dhcp_handle, 0); -#endif -#endif -} - -void usbh_cdc_ncm_stop(struct usbh_cdc_ncm *cdc_ncm_class) -{ -#ifdef __RTTHREAD__ - eth_device_deinit(&cdc_ncm_dev); -#else - struct netif *netif = &g_cdc_ncm_netif; -#if LWIP_DHCP - dhcp_stop(netif); - dhcp_cleanup(netif); - xTimerStop(dhcp_handle, 0); - xTimerDelete(dhcp_handle, 0); -#endif - netif_set_down(netif); - netif_remove(netif); -#endif -} -#endif - -#if TEST_USBH_CDC_RNDIS -#include "usbh_rndis.h" - -struct netif g_rndis_netif; - -#ifdef __RTTHREAD__ - -static struct eth_device rndis_dev; - -static rt_timer_t keep_timer = RT_NULL; - -static void rndis_dev_keepalive_timeout(void *parameter) -{ - struct usbh_rndis *rndis_class = (struct usbh_rndis *)parameter; - usbh_rndis_keepalive(rndis_class); -} - -static void timer_init(struct usbh_rndis *rndis_class) -{ - keep_timer = rt_timer_create("keep", - rndis_dev_keepalive_timeout, - rndis_class, - 5000, - RT_TIMER_FLAG_PERIODIC | - RT_TIMER_FLAG_SOFT_TIMER); - - rt_timer_start(keep_timer); -} - -static rt_err_t rt_usbh_rndis_control(rt_device_t dev, int cmd, void *args) -{ - struct usbh_rndis *rndis_class = (struct usbh_rndis *)dev->user_data; - - switch (cmd) { - case NIOCTL_GADDR: - - /* get mac address */ - if (args) - rt_memcpy(args, rndis_class->mac, 6); - else - return -RT_ERROR; - - break; - - default: - break; - } - - return RT_EOK; -} - -static rt_err_t rt_usbh_rndis_eth_tx(rt_device_t dev, struct pbuf *p) -{ - return usbh_rndis_linkoutput(NULL, p); -} - -#else -TimerHandle_t timer_handle; - -static void rndis_dev_keepalive_timeout(TimerHandle_t xTimer) -{ - struct usbh_rndis *rndis_class = (struct usbh_rndis *)pvTimerGetTimerID(xTimer); - usbh_rndis_keepalive(rndis_class); -} - -void timer_init(struct usbh_rndis *rndis_class) -{ - timer_handle = xTimerCreate((const char *)NULL, (TickType_t)5000, (UBaseType_t)pdTRUE, (void *const)rndis_class, (TimerCallbackFunction_t)rndis_dev_keepalive_timeout); - if (NULL != timer_handle) { - xTimerStart(timer_handle, 0); - } else { - USB_LOG_ERR("timer creation failed! \r\n"); - for (;;) { - ; - } - } -} -#endif - -static err_t usbh_rndis_if_init(struct netif *netif) -{ - LWIP_ASSERT("netif != NULL", (netif != NULL)); - - netif->mtu = 1500; - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_UP; - netif->state = NULL; - netif->name[0] = 'E'; - netif->name[1] = 'X'; - netif->output = etharp_output; - netif->linkoutput = usbh_rndis_linkoutput; - return ERR_OK; -} - -void usbh_rndis_run(struct usbh_rndis *rndis_class) -{ -#ifdef __RTTHREAD__ - memset(&rndis_dev, 0, sizeof(struct eth_device)); - - rndis_dev.parent.control = rt_usbh_rndis_control; - rndis_dev.eth_rx = NULL; - rndis_dev.eth_tx = rt_usbh_rndis_eth_tx; - rndis_dev.parent.user_data = rndis_class; - - eth_device_init(&rndis_dev, "u2"); - eth_device_linkchange(&rndis_dev, RT_TRUE); - - usb_osal_thread_create("usbh_rndis_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_rndis_rx_thread, rndis_dev.netif); - //timer_init(rndis_class); -#else - struct netif *netif = &g_rndis_netif; - - netif->hwaddr_len = 6; - memcpy(netif->hwaddr, rndis_class->mac, 6); - - IP4_ADDR(&rndis_class->ipaddr, 0, 0, 0, 0); - IP4_ADDR(&rndis_class->netmask, 0, 0, 0, 0); - IP4_ADDR(&rndis_class->gateway, 0, 0, 0, 0); - - netif = netif_add(netif, &rndis_class->ipaddr, &rndis_class->netmask, &rndis_class->gateway, NULL, usbh_rndis_if_init, tcpip_input); - netif_set_default(netif); - while (!netif_is_up(netif)) { - } - - dhcp_handle = xTimerCreate((const char *)"dhcp2", (TickType_t)200, (UBaseType_t)pdTRUE, (void *const)netif, (TimerCallbackFunction_t)dhcp_timeout); - if (dhcp_handle == NULL) { - USB_LOG_ERR("timer creation failed! \r\n"); - while (1) { - } - } - - usb_osal_thread_create("usbh_rndis_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_rndis_rx_thread, netif); - //timer_init(rndis_class); - -#if LWIP_DHCP - dhcp_start(netif); - xTimerStart(dhcp_handle, 0); -#endif -#endif -} - -void usbh_rndis_stop(struct usbh_rndis *rndis_class) -{ -#ifdef __RTTHREAD__ - eth_device_deinit(&rndis_dev); - // rt_timer_stop(keep_timer); - // rt_timer_delete(keep_timer); -#else - struct netif *netif = &g_rndis_netif; -#if LWIP_DHCP - dhcp_stop(netif); - dhcp_cleanup(netif); - xTimerStop(dhcp_handle, 0); - xTimerDelete(dhcp_handle, 0); -#endif - netif_set_down(netif); - netif_remove(netif); - // xTimerStop(timer_handle, 0); - // xTimerDelete(timer_handle, 0); -#endif -} -#endif - -#if TEST_USBH_ASIX -#include "usbh_asix.h" - -struct netif g_asix_netif; - -#ifdef __RTTHREAD__ -static struct eth_device asix_dev; - -static rt_err_t rt_usbh_asix_control(rt_device_t dev, int cmd, void *args) -{ - struct usbh_asix *asix_class = (struct usbh_asix *)dev->user_data; - - switch (cmd) { - case NIOCTL_GADDR: - - /* get mac address */ - if (args) - rt_memcpy(args, asix_class->mac, 6); - else - return -RT_ERROR; - - break; - - default: - break; - } - - return RT_EOK; -} - -static rt_err_t rt_usbh_asix_eth_tx(rt_device_t dev, struct pbuf *p) -{ - return usbh_asix_linkoutput(NULL, p); -} -#endif - -static err_t usbh_asix_if_init(struct netif *netif) -{ - LWIP_ASSERT("netif != NULL", (netif != NULL)); - - netif->mtu = 1500; - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_UP; - netif->state = NULL; - netif->name[0] = 'E'; - netif->name[1] = 'X'; - netif->output = etharp_output; - netif->linkoutput = usbh_asix_linkoutput; - return ERR_OK; -} - -void usbh_asix_run(struct usbh_asix *asix_class) -{ -#ifdef __RTTHREAD__ - memset(&asix_dev, 0, sizeof(struct eth_device)); - - asix_dev.parent.control = rt_usbh_asix_control; - asix_dev.eth_rx = NULL; - asix_dev.eth_tx = rt_usbh_asix_eth_tx; - asix_dev.parent.user_data = asix_class; - - eth_device_init(&asix_dev, "u3"); - eth_device_linkchange(&asix_dev, RT_TRUE); - - usb_osal_thread_create("usbh_asix_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_asix_rx_thread, asix_dev.netif); -#else - struct netif *netif = &g_asix_netif; - - netif->hwaddr_len = 6; - memcpy(netif->hwaddr, asix_class->mac, 6); - - IP4_ADDR(&asix_class->ipaddr, 0, 0, 0, 0); - IP4_ADDR(&asix_class->netmask, 0, 0, 0, 0); - IP4_ADDR(&asix_class->gateway, 0, 0, 0, 0); - - netif = netif_add(netif, &asix_class->ipaddr, &asix_class->netmask, &asix_class->gateway, NULL, usbh_asix_if_init, tcpip_input); - netif_set_default(netif); - while (!netif_is_up(netif)) { - } - - dhcp_handle = xTimerCreate((const char *)"dhcp", (TickType_t)200, (UBaseType_t)pdTRUE, (void *const)netif, (TimerCallbackFunction_t)dhcp_timeout); - if (dhcp_handle == NULL) { - USB_LOG_ERR("timer creation failed! \r\n"); - while (1) { - } - } - - usb_osal_thread_create("usbh_asix_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_asix_rx_thread, netif); -#if LWIP_DHCP - dhcp_start(netif); - xTimerStart(dhcp_handle, 0); -#endif -#endif -} - -void usbh_asix_stop(struct usbh_asix *asix_class) -{ -#ifdef __RTTHREAD__ - eth_device_deinit(&asix_dev); -#else - struct netif *netif = &g_asix_netif; -#if LWIP_DHCP - dhcp_stop(netif); - dhcp_cleanup(netif); - xTimerStop(dhcp_handle, 0); - xTimerDelete(dhcp_handle, 0); -#endif - netif_set_down(netif); - netif_remove(netif); -#endif -} -#endif - -#if TEST_USBH_RTL8152 -#include "usbh_rtl8152.h" - -struct netif g_rtl8152_netif; - -#ifdef __RTTHREAD__ -static struct eth_device rtl8152_dev; - -static rt_err_t rt_usbh_rtl8152_control(rt_device_t dev, int cmd, void *args) -{ - struct usbh_rtl8152 *rtl8152_class = (struct usbh_rtl8152 *)dev->user_data; - - switch (cmd) { - case NIOCTL_GADDR: - - /* get mac address */ - if (args) - rt_memcpy(args, rtl8152_class->mac, 6); - else - return -RT_ERROR; - - break; - - default: - break; - } - - return RT_EOK; -} - -static rt_err_t rt_usbh_rtl8152_eth_tx(rt_device_t dev, struct pbuf *p) -{ - return usbh_rtl8152_linkoutput(NULL, p); -} -#endif - -static err_t usbh_rtl8152_if_init(struct netif *netif) -{ - LWIP_ASSERT("netif != NULL", (netif != NULL)); - - netif->mtu = 1500; - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_UP; - netif->state = NULL; - netif->name[0] = 'E'; - netif->name[1] = 'X'; - netif->output = etharp_output; - netif->linkoutput = usbh_rtl8152_linkoutput; - return ERR_OK; -} - -void usbh_rtl8152_run(struct usbh_rtl8152 *rtl8152_class) -{ -#ifdef __RTTHREAD__ - memset(&rtl8152_dev, 0, sizeof(struct eth_device)); - - rtl8152_dev.parent.control = rt_usbh_rtl8152_control; - rtl8152_dev.eth_rx = NULL; - rtl8152_dev.eth_tx = rt_usbh_rtl8152_eth_tx; - rtl8152_dev.parent.user_data = rtl8152_class; - - eth_device_init(&rtl8152_dev, "u4"); - eth_device_linkchange(&rtl8152_dev, RT_TRUE); - - usb_osal_thread_create("usbh_rtl8152_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_rtl8152_rx_thread, rtl8152_dev.netif); -#else - struct netif *netif = &g_rtl8152_netif; - - netif->hwaddr_len = 6; - memcpy(netif->hwaddr, rtl8152_class->mac, 6); - - IP4_ADDR(&rtl8152_class->ipaddr, 0, 0, 0, 0); - IP4_ADDR(&rtl8152_class->netmask, 0, 0, 0, 0); - IP4_ADDR(&rtl8152_class->gateway, 0, 0, 0, 0); - - netif = netif_add(netif, &rtl8152_class->ipaddr, &rtl8152_class->netmask, &rtl8152_class->gateway, NULL, usbh_rtl8152_if_init, tcpip_input); - netif_set_default(netif); - while (!netif_is_up(netif)) { - } - - dhcp_handle = xTimerCreate((const char *)"dhcp", (TickType_t)200, (UBaseType_t)pdTRUE, (void *const)netif, (TimerCallbackFunction_t)dhcp_timeout); - if (dhcp_handle == NULL) { - USB_LOG_ERR("timer creation failed! \r\n"); - while (1) { - } - } - - usb_osal_thread_create("usbh_rtl8152_rx", 2048, CONFIG_USBHOST_PSC_PRIO + 1, usbh_rtl8152_rx_thread, netif); -#if LWIP_DHCP - dhcp_start(netif); - xTimerStart(dhcp_handle, 0); -#endif -#endif -} - -void usbh_rtl8152_stop(struct usbh_rtl8152 *rtl8152_class) -{ -#ifdef __RTTHREAD__ - eth_device_deinit(&rtl8152_dev); -#else - struct netif *netif = &g_rtl8152_netif; -#if LWIP_DHCP - dhcp_stop(netif); - dhcp_cleanup(netif); - xTimerStop(dhcp_handle, 0); - xTimerDelete(dhcp_handle, 0); -#endif - netif_set_down(netif); - netif_remove(netif); -#endif -} -#endif - void usbh_cdc_acm_run(struct usbh_cdc_acm *cdc_acm_class) { #if TEST_USBH_CDC_ACM @@ -1066,7 +276,6 @@ void usbh_hid_stop(struct usbh_hid *hid_class) { } -#ifndef __RTTHREAD__ void usbh_msc_run(struct usbh_msc *msc_class) { #if TEST_USBH_MSC @@ -1077,24 +286,11 @@ void usbh_msc_run(struct usbh_msc *msc_class) void usbh_msc_stop(struct usbh_msc *msc_class) { } -#endif #if TEST_USBH_AUDIO -#error "if you want to use iso, please contact with me" +#error "commercial charge" #endif #if TEST_USBH_VIDEO -#error "if you want to use iso, please contact with me" +#error "commercial charge" #endif - -void usbh_class_test(void) -{ -#ifdef __RTTHREAD__ - /* do nothing */ -#else -#if TEST_USBH_CDC_ECM || TEST_USBH_CDC_NCM || TEST_USBH_CDC_RNDIS || TEST_USBH_ASIX || TEST_USBH_RTL8152 - /* Initialize the LwIP stack */ - tcpip_init(NULL, NULL); -#endif -#endif -} diff --git a/components/drivers/usb/cherryusb/demo/video_audiov1_hid_template.c b/components/drivers/usb/cherryusb/demo/video_audiov1_hid_template.c new file mode 100644 index 0000000000..97f1743a5c --- /dev/null +++ b/components/drivers/usb/cherryusb/demo/video_audiov1_hid_template.c @@ -0,0 +1,513 @@ +/* + * Copyright (c) 2024, sakumisu + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "usbd_core.h" +#include "usbd_video.h" +#include "usbd_audio.h" +#include "usbd_hid.h" +#include "cherryusb_mjpeg.h" + +#define VIDEO_IN_EP 0x81 +#define VIDEO_INT_EP 0x86 + +#ifdef CONFIG_USB_HS +#define MAX_PAYLOAD_SIZE 1024 // for high speed with one transcations every one micro frame +#define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 1)) | (0x00 << 11)) + +// #define MAX_PAYLOAD_SIZE 2048 // for high speed with two transcations every one micro frame +// #define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 2)) | (0x01 << 11)) + +// #define MAX_PAYLOAD_SIZE 3072 // for high speed with three transcations every one micro frame +// #define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 3)) | (0x02 << 11)) + +#else +#define MAX_PAYLOAD_SIZE 1020 +#define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 1)) | (0x00 << 11)) +#endif + +#define WIDTH (unsigned int)(640) +#define HEIGHT (unsigned int)(480) + +#define CAM_FPS (30) +#define INTERVAL (unsigned long)(10000000 / CAM_FPS) +#define MIN_BIT_RATE (unsigned long)(WIDTH * HEIGHT * 16 * CAM_FPS) //16 bit +#define MAX_BIT_RATE (unsigned long)(WIDTH * HEIGHT * 16 * CAM_FPS) +#define MAX_FRAME_SIZE (unsigned long)(WIDTH * HEIGHT * 2) + +#define VS_HEADER_SIZ (unsigned int)(VIDEO_SIZEOF_VS_INPUT_HEADER_DESC(1, 1) + VIDEO_SIZEOF_VS_FORMAT_MJPEG_DESC + VIDEO_SIZEOF_VS_FRAME_MJPEG_DESC(1)) + +#define USB_VIDEO_DESC_SIZ (unsigned long)(9 + \ + VIDEO_VC_NOEP_DESCRIPTOR_LEN + \ + 9 + \ + VS_HEADER_SIZ + \ + 9 + \ + 7 + \ + AUDIO_AC_DESCRIPTOR_INIT_LEN(2) + \ + AUDIO_SIZEOF_AC_INPUT_TERMINAL_DESC + \ + AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(2, 1) + \ + AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC + \ + AUDIO_SIZEOF_AC_INPUT_TERMINAL_DESC + \ + AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(2, 1) + \ + AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC + \ + AUDIO_AS_DESCRIPTOR_INIT_LEN(1) + \ + AUDIO_AS_DESCRIPTOR_INIT_LEN(1) + \ + 25) + +#define USBD_VID 0xffff +#define USBD_PID 0xffff +#define USBD_MAX_POWER 100 +#define USBD_LANGID_STRING 1033 + +#ifdef CONFIG_USB_HS +#define EP_INTERVAL 0x04 +#else +#define EP_INTERVAL 0x01 +#endif + +#define AUDIO_IN_EP 0x82 +#define AUDIO_OUT_EP 0x03 + +#define AUDIO_IN_FU_ID 0x02 +#define AUDIO_OUT_FU_ID 0x05 + +/* AUDIO Class Config */ +#define AUDIO_SPEAKER_FREQ 16000U +#define AUDIO_SPEAKER_FRAME_SIZE_BYTE 2u +#define AUDIO_SPEAKER_RESOLUTION_BIT 16u +#define AUDIO_MIC_FREQ 16000U +#define AUDIO_MIC_FRAME_SIZE_BYTE 2u +#define AUDIO_MIC_RESOLUTION_BIT 16u + +#define AUDIO_SAMPLE_FREQ(frq) (uint8_t)(frq), (uint8_t)((frq >> 8)), (uint8_t)((frq >> 16)) + +/* AudioFreq * DataSize (2 bytes) * NumChannels (Stereo: 2) */ +#define AUDIO_OUT_PACKET ((uint32_t)((AUDIO_SPEAKER_FREQ * AUDIO_SPEAKER_FRAME_SIZE_BYTE * 2) / 1000)) +/* 16bit(2 Bytes) 双声道(Mono:2) */ +#define AUDIO_IN_PACKET ((uint32_t)((AUDIO_MIC_FREQ * AUDIO_MIC_FRAME_SIZE_BYTE * 2) / 1000)) + +#define AUDIO_AC_SIZ (AUDIO_SIZEOF_AC_HEADER_DESC(2) + \ + AUDIO_SIZEOF_AC_INPUT_TERMINAL_DESC + \ + AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(2, 1) + \ + AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC + \ + AUDIO_SIZEOF_AC_INPUT_TERMINAL_DESC + \ + AUDIO_SIZEOF_AC_FEATURE_UNIT_DESC(2, 1) + \ + AUDIO_SIZEOF_AC_OUTPUT_TERMINAL_DESC) + +#define HID_INT_EP 0x84 +#define HID_INT_EP_SIZE 8 +#define HID_INT_EP_INTERVAL 10 + +#define HID_KEYBOARD_REPORT_DESC_SIZE 63 + +const uint8_t video_audio_hid_descriptor[] = { + USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01), + USB_CONFIG_DESCRIPTOR_INIT(USB_VIDEO_DESC_SIZ, 0x06, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER), + //VIDEO_VC_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02), + VIDEO_VC_NOEP_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02), + VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x00, 0x00), + VIDEO_VS_INPUT_HEADER_DESCRIPTOR_INIT(0x01, VS_HEADER_SIZ, VIDEO_IN_EP, 0x00), + VIDEO_VS_FORMAT_MJPEG_DESCRIPTOR_INIT(0x01, 0x01), + VIDEO_VS_FRAME_MJPEG_DESCRIPTOR_INIT(0x01, WIDTH, HEIGHT, MIN_BIT_RATE, MAX_BIT_RATE, MAX_FRAME_SIZE, DBVAL(INTERVAL), 0x01, DBVAL(INTERVAL)), + VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x01, 0x01), + /* 1.2.2.2 Standard VideoStream Isochronous Video Data Endpoint Descriptor */ + USB_ENDPOINT_DESCRIPTOR_INIT(VIDEO_IN_EP, 0x05, VIDEO_PACKET_SIZE, 0x01), + AUDIO_AC_DESCRIPTOR_INIT(0x02, 0x03, AUDIO_AC_SIZ, 0x00, 0x03, 0x04), + AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x01, AUDIO_INTERM_MIC, 0x02, 0x0003), + AUDIO_AC_FEATURE_UNIT_DESCRIPTOR_INIT(0x02, 0x01, 0x01, 0x03, 0x00, 0x00), + AUDIO_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x03, AUDIO_TERMINAL_STREAMING, 0x02), + AUDIO_AC_INPUT_TERMINAL_DESCRIPTOR_INIT(0x04, AUDIO_TERMINAL_STREAMING, 0x02, 0x0003), + AUDIO_AC_FEATURE_UNIT_DESCRIPTOR_INIT(0x05, 0x04, 0x01, 0x03, 0x00, 0x00), + AUDIO_AC_OUTPUT_TERMINAL_DESCRIPTOR_INIT(0x06, AUDIO_OUTTERM_SPEAKER, 0x05), + AUDIO_AS_DESCRIPTOR_INIT(0x03, 0x04, 0x02, AUDIO_SPEAKER_FRAME_SIZE_BYTE, AUDIO_SPEAKER_RESOLUTION_BIT, AUDIO_OUT_EP, 0x09, AUDIO_OUT_PACKET, + EP_INTERVAL, AUDIO_SAMPLE_FREQ_3B(AUDIO_SPEAKER_FREQ)), + AUDIO_AS_DESCRIPTOR_INIT(0x04, 0x03, 0x02, AUDIO_MIC_FRAME_SIZE_BYTE, AUDIO_MIC_RESOLUTION_BIT, AUDIO_IN_EP, 0x05, AUDIO_IN_PACKET, + EP_INTERVAL, AUDIO_SAMPLE_FREQ_3B(AUDIO_MIC_FREQ)), + /************** Descriptor of Joystick Mouse interface ****************/ + /* 09 */ + 0x09, /* bLength: Interface Descriptor size */ + USB_DESCRIPTOR_TYPE_INTERFACE, /* bDescriptorType: Interface descriptor type */ + 0x05, /* bInterfaceNumber: Number of Interface */ + 0x00, /* bAlternateSetting: Alternate setting */ + 0x01, /* bNumEndpoints */ + 0x03, /* bInterfaceClass: HID */ + 0x01, /* bInterfaceSubClass : 1=BOOT, 0=no boot */ + 0x01, /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */ + 0, /* iInterface: Index of string descriptor */ + /******************** Descriptor of Joystick Mouse HID ********************/ + /* 18 */ + 0x09, /* bLength: HID Descriptor size */ + HID_DESCRIPTOR_TYPE_HID, /* bDescriptorType: HID */ + 0x11, /* bcdHID: HID Class Spec release number */ + 0x01, + 0x00, /* bCountryCode: Hardware target country */ + 0x01, /* bNumDescriptors: Number of HID class descriptors to follow */ + 0x22, /* bDescriptorType */ + HID_KEYBOARD_REPORT_DESC_SIZE, /* wItemLength: Total length of Report descriptor */ + 0x00, + /******************** Descriptor of Mouse endpoint ********************/ + /* 27 */ + 0x07, /* bLength: Endpoint Descriptor size */ + USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType: */ + HID_INT_EP, /* bEndpointAddress: Endpoint Address (IN) */ + 0x03, /* bmAttributes: Interrupt endpoint */ + HID_INT_EP_SIZE, /* wMaxPacketSize: 4 Byte max */ + 0x00, + HID_INT_EP_INTERVAL, /* bInterval: Polling Interval */ + /* 34 */ + /////////////////////////////////////// + /// string0 descriptor + /////////////////////////////////////// + USB_LANGID_INIT(USBD_LANGID_STRING), + /////////////////////////////////////// + /// string1 descriptor + /////////////////////////////////////// + 0x14, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'C', 0x00, /* wcChar0 */ + 'h', 0x00, /* wcChar1 */ + 'e', 0x00, /* wcChar2 */ + 'r', 0x00, /* wcChar3 */ + 'r', 0x00, /* wcChar4 */ + 'y', 0x00, /* wcChar5 */ + 'U', 0x00, /* wcChar6 */ + 'S', 0x00, /* wcChar7 */ + 'B', 0x00, /* wcChar8 */ + /////////////////////////////////////// + /// string2 descriptor + /////////////////////////////////////// + 0x26, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'C', 0x00, /* wcChar0 */ + 'h', 0x00, /* wcChar1 */ + 'e', 0x00, /* wcChar2 */ + 'r', 0x00, /* wcChar3 */ + 'r', 0x00, /* wcChar4 */ + 'y', 0x00, /* wcChar5 */ + 'U', 0x00, /* wcChar6 */ + 'S', 0x00, /* wcChar7 */ + 'B', 0x00, /* wcChar8 */ + ' ', 0x00, /* wcChar9 */ + 'U', 0x00, /* wcChar10 */ + 'A', 0x00, /* wcChar11 */ + 'C', 0x00, /* wcChar12 */ + ' ', 0x00, /* wcChar13 */ + 'D', 0x00, /* wcChar14 */ + 'E', 0x00, /* wcChar15 */ + 'M', 0x00, /* wcChar16 */ + 'O', 0x00, /* wcChar17 */ + /////////////////////////////////////// + /// string3 descriptor + /////////////////////////////////////// + 0x16, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + '2', 0x00, /* wcChar0 */ + '0', 0x00, /* wcChar1 */ + '2', 0x00, /* wcChar2 */ + '4', 0x00, /* wcChar3 */ + '0', 0x00, /* wcChar4 */ + '3', 0x00, /* wcChar5 */ + '1', 0x00, /* wcChar6 */ + '0', 0x00, /* wcChar7 */ + '0', 0x00, /* wcChar8 */ + '0', 0x00, /* wcChar9 */ +#ifdef CONFIG_USB_HS + /////////////////////////////////////// + /// device qualifier descriptor + /////////////////////////////////////// + 0x0a, + USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, +#endif + 0x00 +}; + +static const uint8_t hid_keyboard_report_desc[HID_KEYBOARD_REPORT_DESC_SIZE] = { + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x06, // USAGE (Keyboard) + 0xa1, 0x01, // COLLECTION (Application) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) + 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x75, 0x01, // REPORT_SIZE (1) + 0x95, 0x08, // REPORT_COUNT (8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x08, // REPORT_SIZE (8) + 0x81, 0x03, // INPUT (Cnst,Var,Abs) + 0x95, 0x05, // REPORT_COUNT (5) + 0x75, 0x01, // REPORT_SIZE (1) + 0x05, 0x08, // USAGE_PAGE (LEDs) + 0x19, 0x01, // USAGE_MINIMUM (Num Lock) + 0x29, 0x05, // USAGE_MAXIMUM (Kana) + 0x91, 0x02, // OUTPUT (Data,Var,Abs) + 0x95, 0x01, // REPORT_COUNT (1) + 0x75, 0x03, // REPORT_SIZE (3) + 0x91, 0x03, // OUTPUT (Cnst,Var,Abs) + 0x95, 0x06, // REPORT_COUNT (6) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0xFF, // LOGICAL_MAXIMUM (255) + 0x05, 0x07, // USAGE_PAGE (Keyboard) + 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) + 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) + 0x81, 0x00, // INPUT (Data,Ary,Abs) + 0xc0 // END_COLLECTION +}; + +USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t audio_read_buffer[AUDIO_OUT_PACKET]; +USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t audio_write_buffer[AUDIO_IN_PACKET]; +USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t video_packet_buffer[40 * 1024]; + +volatile bool video_tx_flag = 0; +volatile bool audio_tx_flag = 0; +volatile bool audio_rx_flag = 0; +volatile bool video_iso_tx_busy = false; +volatile bool audio_iso_tx_busy = false; + +#define HID_STATE_IDLE 0 +#define HID_STATE_BUSY 1 + +/*!< hid state ! Data can be sent only when state is idle */ +static volatile uint8_t hid_state = HID_STATE_IDLE; + +static void usbd_event_handler(uint8_t busid, uint8_t event) +{ + switch (event) { + case USBD_EVENT_RESET: + break; + case USBD_EVENT_CONNECTED: + break; + case USBD_EVENT_DISCONNECTED: + break; + case USBD_EVENT_RESUME: + break; + case USBD_EVENT_SUSPEND: + break; + case USBD_EVENT_CONFIGURED: + video_tx_flag = 0; + audio_tx_flag = 0; + audio_rx_flag = 0; + video_iso_tx_busy = false; + audio_iso_tx_busy = false; + hid_state = HID_STATE_IDLE; + break; + case USBD_EVENT_SET_REMOTE_WAKEUP: + break; + case USBD_EVENT_CLR_REMOTE_WAKEUP: + break; + + default: + break; + } +} + +void usbd_video_open(uint8_t busid, uint8_t intf) +{ + if (intf == 1) { + video_tx_flag = 1; + USB_LOG_RAW("OPEN\r\n"); + video_iso_tx_busy = false; + } +} +void usbd_video_close(uint8_t busid, uint8_t intf) +{ + if (intf == 1) { + USB_LOG_RAW("CLOSE\r\n"); + video_tx_flag = 0; + video_iso_tx_busy = false; + } +} + +void usbd_video_iso_callback(uint8_t busid, uint8_t ep, uint32_t nbytes) +{ + //USB_LOG_RAW("actual in len:%d\r\n", nbytes); + video_iso_tx_busy = false; +} + +static struct usbd_endpoint video_in_ep = { + .ep_cb = usbd_video_iso_callback, + .ep_addr = VIDEO_IN_EP +}; + +void usbd_audio_open(uint8_t busid, uint8_t intf) +{ + if (intf == 3) { + audio_rx_flag = 1; + /* setup first out ep read transfer */ + usbd_ep_start_read(busid, AUDIO_OUT_EP, audio_read_buffer, AUDIO_OUT_PACKET); + printf("OPEN1\r\n"); + } else if (intf == 4) { + audio_tx_flag = 1; + audio_iso_tx_busy = false; + printf("OPEN2\r\n"); + } +} + +void usbd_audio_close(uint8_t busid, uint8_t intf) +{ + if (intf == 3) { + audio_rx_flag = 0; + printf("CLOSE1\r\n"); + } else if (intf == 4) { + audio_tx_flag = 0; + audio_iso_tx_busy = false; + printf("CLOSE2\r\n"); + } +} + +void usbd_audio_out_callback(uint8_t busid, uint8_t ep, uint32_t nbytes) +{ + USB_LOG_RAW("actual out len:%d\r\n", nbytes); + usbd_ep_start_read(busid, AUDIO_OUT_EP, audio_read_buffer, AUDIO_OUT_PACKET); +} + +void usbd_audio_in_callback(uint8_t busid, uint8_t ep, uint32_t nbytes) +{ + USB_LOG_RAW("actual in len:%d\r\n", nbytes); + audio_iso_tx_busy = false; +} + +static struct usbd_endpoint audio_in_ep = { + .ep_cb = usbd_audio_in_callback, + .ep_addr = AUDIO_IN_EP +}; + +static struct usbd_endpoint audio_out_ep = { + .ep_cb = usbd_audio_out_callback, + .ep_addr = AUDIO_OUT_EP +}; + +void usbd_hid_int_callback(uint8_t busid, uint8_t ep, uint32_t nbytes) +{ + hid_state = HID_STATE_IDLE; +} + +static struct usbd_endpoint hid_in_ep = { + .ep_cb = usbd_hid_int_callback, + .ep_addr = HID_INT_EP +}; + +struct usbd_interface intf0; +struct usbd_interface intf1; + +struct usbd_interface intf2; +struct usbd_interface intf3; +struct usbd_interface intf4; + +struct usbd_interface intf5; + +struct audio_entity_info audio_entity_table[] = { + { .bEntityId = AUDIO_IN_FU_ID, + .bDescriptorSubtype = AUDIO_CONTROL_FEATURE_UNIT, + .ep = AUDIO_IN_EP }, + { .bEntityId = AUDIO_OUT_FU_ID, + .bDescriptorSubtype = AUDIO_CONTROL_FEATURE_UNIT, + .ep = AUDIO_OUT_EP }, +}; + +void composite_init(uint8_t busid, uint32_t reg_base) +{ + usbd_desc_register(busid, video_audio_hid_descriptor); + usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE)); + usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE)); + usbd_add_endpoint(busid, &video_in_ep); + + usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf2, 0x0100, audio_entity_table, 2)); + usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf3, 0x0100, audio_entity_table, 2)); + usbd_add_interface(busid, usbd_audio_init_intf(busid, &intf4, 0x0100, audio_entity_table, 2)); + usbd_add_endpoint(busid, &audio_in_ep); + usbd_add_endpoint(busid, &audio_out_ep); + + usbd_add_interface(busid, usbd_hid_init_intf(busid, &intf0, hid_keyboard_report_desc, HID_KEYBOARD_REPORT_DESC_SIZE)); + usbd_add_endpoint(busid, &hid_in_ep); + + usbd_initialize(busid, reg_base, usbd_event_handler); +} + +/* just for test, rewrite by yourself */ +void audio_test(uint8_t busid) +{ + while (1) { + if (audio_tx_flag) { + memset(audio_write_buffer, 'a', AUDIO_IN_PACKET); + audio_iso_tx_busy = true; + usbd_ep_start_write(busid, AUDIO_IN_EP, audio_write_buffer, AUDIO_IN_PACKET); + while (audio_iso_tx_busy) { + if (audio_tx_flag == false) { + break; + } + } + } + } +} + +USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t hid_write_buffer[64]; + +void hid_keyboard_test(uint8_t busid) +{ + const uint8_t sendbuffer[8] = { 0x00, 0x00, HID_KBD_USAGE_A, 0x00, 0x00, 0x00, 0x00, 0x00 }; + + memcpy(hid_write_buffer, sendbuffer, 8); + int ret = usbd_ep_start_write(busid, HID_INT_EP, hid_write_buffer, 8); + if (ret < 0) { + return; + } + hid_state = HID_STATE_BUSY; + while (hid_state == HID_STATE_BUSY) { + } +} + +void video_test(uint8_t busid) +{ + uint32_t out_len; + uint32_t packets; + + (void)packets; + memset(video_packet_buffer, 0, 40 * 1024); + while (1) { + if (video_tx_flag) { + packets = usbd_video_payload_fill(busid, (uint8_t *)cherryusb_mjpeg, sizeof(cherryusb_mjpeg), video_packet_buffer, &out_len); +#if 1 + video_iso_tx_busy = true; + usbd_ep_start_write(busid, VIDEO_IN_EP, video_packet_buffer, out_len); + while (video_iso_tx_busy) { + if (video_tx_flag == 0) { + break; + } + } +#else + /* dwc2 must use this method */ + for (uint32_t i = 0; i < packets; i++) { + if (i == (packets - 1)) { + video_iso_tx_busy = true; + usbd_ep_start_write(busid, VIDEO_IN_EP, &video_packet_buffer[i * MAX_PAYLOAD_SIZE], out_len - (packets - 1) * MAX_PAYLOAD_SIZE); + while (video_iso_tx_busy) { + if (video_tx_flag == 0) { + break; + } + } + } else { + video_iso_tx_busy = true; + usbd_ep_start_write(busid, VIDEO_IN_EP, &video_packet_buffer[i * MAX_PAYLOAD_SIZE], MAX_PAYLOAD_SIZE); + while (video_iso_tx_busy) { + if (video_tx_flag == 0) { + break; + } + } + } + } +#endif + } + } +} \ No newline at end of file diff --git a/components/drivers/usb/cherryusb/demo/video_static_h264_template.c b/components/drivers/usb/cherryusb/demo/video_static_h264_template.c new file mode 100644 index 0000000000..adfb879d5f --- /dev/null +++ b/components/drivers/usb/cherryusb/demo/video_static_h264_template.c @@ -0,0 +1,249 @@ +/* + * Copyright (c) 2024, sakumisu + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "usbd_core.h" +#include "usbd_video.h" +#include "cherryusb_h264.h" + +#define VIDEO_IN_EP 0x81 +#define VIDEO_INT_EP 0x83 + +#ifdef CONFIG_USB_HS +#define MAX_PAYLOAD_SIZE 1024 // for high speed with one transcations every one micro frame +#define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 1)) | (0x00 << 11)) + +// #define MAX_PAYLOAD_SIZE 2048 // for high speed with two transcations every one micro frame +// #define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 2)) | (0x01 << 11)) + +// #define MAX_PAYLOAD_SIZE 3072 // for high speed with three transcations every one micro frame +// #define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 3)) | (0x02 << 11)) + +#else +#define MAX_PAYLOAD_SIZE 1020 +#define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 1)) | (0x00 << 11)) +#endif + +#define WIDTH (unsigned int)(640) +#define HEIGHT (unsigned int)(480) + +#define CAM_FPS (30) +#define INTERVAL (unsigned long)(10000000 / CAM_FPS) +#define MIN_BIT_RATE (unsigned long)(WIDTH * HEIGHT * 16 * CAM_FPS) //16 bit +#define MAX_BIT_RATE (unsigned long)(WIDTH * HEIGHT * 16 * CAM_FPS) +#define MAX_FRAME_SIZE (unsigned long)(WIDTH * HEIGHT * 2) + +#define VS_HEADER_SIZ (unsigned int)(VIDEO_SIZEOF_VS_INPUT_HEADER_DESC(1,1) + VIDEO_SIZEOF_VS_FORMAT_H264_DESC + VIDEO_SIZEOF_VS_FRAME_H264_DESC(1)) + +#define USB_VIDEO_DESC_SIZ (unsigned long)(9 + \ + VIDEO_VC_NOEP_DESCRIPTOR_LEN + \ + 9 + \ + VS_HEADER_SIZ + \ + 9 + \ + 7) + +#define USBD_VID 0xffff +#define USBD_PID 0xffff +#define USBD_MAX_POWER 100 +#define USBD_LANGID_STRING 1033 + +const uint8_t video_descriptor[] = { + USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01), + USB_CONFIG_DESCRIPTOR_INIT(USB_VIDEO_DESC_SIZ, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER), + //VIDEO_VC_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02), + VIDEO_VC_NOEP_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02), + VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x00, 0x00), + VIDEO_VS_INPUT_HEADER_DESCRIPTOR_INIT(0x01, VS_HEADER_SIZ, VIDEO_IN_EP, 0x00), + VIDEO_VS_FORMAT_H264_DESCRIPTOR_INIT(0x01, 0x01), + VIDEO_VS_FRAME_H264_DESCRIPTOR_INIT(0x01, WIDTH, HEIGHT, MIN_BIT_RATE, MAX_BIT_RATE, DBVAL(INTERVAL), 0x01, DBVAL(INTERVAL)), + VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x01, 0x01), + /* 1.2.2.2 Standard VideoStream Isochronous Video Data Endpoint Descriptor */ + USB_ENDPOINT_DESCRIPTOR_INIT(VIDEO_IN_EP, 0x05, VIDEO_PACKET_SIZE, 0x01), + + /////////////////////////////////////// + /// string0 descriptor + /////////////////////////////////////// + USB_LANGID_INIT(USBD_LANGID_STRING), + /////////////////////////////////////// + /// string1 descriptor + /////////////////////////////////////// + 0x14, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'C', 0x00, /* wcChar0 */ + 'h', 0x00, /* wcChar1 */ + 'e', 0x00, /* wcChar2 */ + 'r', 0x00, /* wcChar3 */ + 'r', 0x00, /* wcChar4 */ + 'y', 0x00, /* wcChar5 */ + 'U', 0x00, /* wcChar6 */ + 'S', 0x00, /* wcChar7 */ + 'B', 0x00, /* wcChar8 */ + /////////////////////////////////////// + /// string2 descriptor + /////////////////////////////////////// + 0x26, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'C', 0x00, /* wcChar0 */ + 'h', 0x00, /* wcChar1 */ + 'e', 0x00, /* wcChar2 */ + 'r', 0x00, /* wcChar3 */ + 'r', 0x00, /* wcChar4 */ + 'y', 0x00, /* wcChar5 */ + 'U', 0x00, /* wcChar6 */ + 'S', 0x00, /* wcChar7 */ + 'B', 0x00, /* wcChar8 */ + ' ', 0x00, /* wcChar9 */ + 'U', 0x00, /* wcChar10 */ + 'V', 0x00, /* wcChar11 */ + 'C', 0x00, /* wcChar12 */ + ' ', 0x00, /* wcChar13 */ + 'D', 0x00, /* wcChar14 */ + 'E', 0x00, /* wcChar15 */ + 'M', 0x00, /* wcChar16 */ + 'O', 0x00, /* wcChar17 */ + /////////////////////////////////////// + /// string3 descriptor + /////////////////////////////////////// + 0x16, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + '2', 0x00, /* wcChar0 */ + '0', 0x00, /* wcChar1 */ + '2', 0x00, /* wcChar2 */ + '1', 0x00, /* wcChar3 */ + '0', 0x00, /* wcChar4 */ + '3', 0x00, /* wcChar5 */ + '1', 0x00, /* wcChar6 */ + '0', 0x00, /* wcChar7 */ + '0', 0x00, /* wcChar8 */ + '0', 0x00, /* wcChar9 */ +#ifdef CONFIG_USB_HS + /////////////////////////////////////// + /// device qualifier descriptor + /////////////////////////////////////// + 0x0a, + USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, +#endif + 0x00 +}; + +volatile bool tx_flag = 0; +volatile bool iso_tx_busy = false; + +static void usbd_event_handler(uint8_t busid, uint8_t event) +{ + switch (event) { + case USBD_EVENT_RESET: + break; + case USBD_EVENT_CONNECTED: + break; + case USBD_EVENT_DISCONNECTED: + break; + case USBD_EVENT_RESUME: + break; + case USBD_EVENT_SUSPEND: + break; + case USBD_EVENT_CONFIGURED: + tx_flag = 0; + iso_tx_busy = false; + break; + case USBD_EVENT_SET_REMOTE_WAKEUP: + break; + case USBD_EVENT_CLR_REMOTE_WAKEUP: + break; + + default: + break; + } +} + +void usbd_video_open(uint8_t busid, uint8_t intf) +{ + tx_flag = 1; + USB_LOG_RAW("OPEN\r\n"); + iso_tx_busy = false; +} +void usbd_video_close(uint8_t busid, uint8_t intf) +{ + USB_LOG_RAW("CLOSE\r\n"); + tx_flag = 0; + iso_tx_busy = false; +} + +void usbd_video_iso_callback(uint8_t busid, uint8_t ep, uint32_t nbytes) +{ + //USB_LOG_RAW("actual in len:%d\r\n", nbytes); + iso_tx_busy = false; +} + +static struct usbd_endpoint video_in_ep = { + .ep_cb = usbd_video_iso_callback, + .ep_addr = VIDEO_IN_EP +}; + +struct usbd_interface intf0; +struct usbd_interface intf1; + +void video_init(uint8_t busid, uint32_t reg_base) +{ + usbd_desc_register(busid, video_descriptor); + usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE)); + usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE)); + usbd_add_endpoint(busid, &video_in_ep); + + usbd_initialize(busid, reg_base, usbd_event_handler); +} + +USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t packet_buffer[40 * 1024]; + +void video_test(uint8_t busid) +{ + uint32_t out_len; + uint32_t packets; + + (void)packets; + memset(packet_buffer, 0, 40 * 1024); + while (1) { + if (tx_flag) { + packets = usbd_video_payload_fill(busid, (uint8_t *)cherryusb_h264, sizeof(cherryusb_h264), packet_buffer, &out_len); +#if 1 + iso_tx_busy = true; + usbd_ep_start_write(busid, VIDEO_IN_EP, packet_buffer, out_len); + while (iso_tx_busy) { + if (tx_flag == 0) { + break; + } + } +#else + /* dwc2 must use this method */ + for (uint32_t i = 0; i < packets; i++) { + if (i == (packets - 1)) { + iso_tx_busy = true; + usbd_ep_start_write(busid, VIDEO_IN_EP, &packet_buffer[i * MAX_PAYLOAD_SIZE], out_len - (packets - 1) * MAX_PAYLOAD_SIZE); + while (iso_tx_busy) { + if (tx_flag == 0) { + break; + } + } + } else { + iso_tx_busy = true; + usbd_ep_start_write(busid, VIDEO_IN_EP, &packet_buffer[i * MAX_PAYLOAD_SIZE], MAX_PAYLOAD_SIZE); + while (iso_tx_busy) { + if (tx_flag == 0) { + break; + } + } + } + } +#endif + } + } +} \ No newline at end of file diff --git a/components/drivers/usb/cherryusb/demo/video_static_mjpeg_template.c b/components/drivers/usb/cherryusb/demo/video_static_mjpeg_template.c index 41d54b0459..85b659d463 100644 --- a/components/drivers/usb/cherryusb/demo/video_static_mjpeg_template.c +++ b/components/drivers/usb/cherryusb/demo/video_static_mjpeg_template.c @@ -5,9 +5,10 @@ */ #include "usbd_core.h" #include "usbd_video.h" -#include "pic_data.h" +#include "cherryusb_mjpeg.h" -#define VIDEO_IN_EP 0x81 +#define VIDEO_IN_EP 0x81 +#define VIDEO_INT_EP 0x83 #ifdef CONFIG_USB_HS #define MAX_PAYLOAD_SIZE 1024 // for high speed with one transcations every one micro frame @@ -33,22 +34,14 @@ #define MAX_BIT_RATE (unsigned long)(WIDTH * HEIGHT * 16 * CAM_FPS) #define MAX_FRAME_SIZE (unsigned long)(WIDTH * HEIGHT * 2) -#define USB_VIDEO_DESC_SIZ (unsigned long)(9 + \ - 8 + \ - 9 + \ - 13 + \ - 18 + \ - 9 + \ - 12 + \ - 9 + \ - 14 + \ - 11 + \ - 30 + \ - 9 + \ - 7) +#define VS_HEADER_SIZ (unsigned int)(VIDEO_SIZEOF_VS_INPUT_HEADER_DESC(1,1) + VIDEO_SIZEOF_VS_FORMAT_MJPEG_DESC + VIDEO_SIZEOF_VS_FRAME_MJPEG_DESC(1)) -#define VC_TERMINAL_SIZ (unsigned int)(13 + 18 + 12 + 9) -#define VS_HEADER_SIZ (unsigned int)(13 + 1 + 11 + 30) +#define USB_VIDEO_DESC_SIZ (unsigned long)(9 + \ + VIDEO_VC_NOEP_DESCRIPTOR_LEN + \ + 9 + \ + VS_HEADER_SIZ + \ + 9 + \ + 7) #define USBD_VID 0xffff #define USBD_PID 0xffff @@ -58,19 +51,15 @@ const uint8_t video_descriptor[] = { USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01), USB_CONFIG_DESCRIPTOR_INIT(USB_VIDEO_DESC_SIZ, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER), - VIDEO_VC_DESCRIPTOR_INIT(0x00, 0, 0x0100, VC_TERMINAL_SIZ, 48000000, 0x02), + //VIDEO_VC_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02), + VIDEO_VC_NOEP_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02), VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x00, 0x00), - VIDEO_VS_HEADER_DESCRIPTOR_INIT(0x01, VS_HEADER_SIZ, VIDEO_IN_EP, 0x00), + VIDEO_VS_INPUT_HEADER_DESCRIPTOR_INIT(0x01, VS_HEADER_SIZ, VIDEO_IN_EP, 0x00), VIDEO_VS_FORMAT_MJPEG_DESCRIPTOR_INIT(0x01, 0x01), VIDEO_VS_FRAME_MJPEG_DESCRIPTOR_INIT(0x01, WIDTH, HEIGHT, MIN_BIT_RATE, MAX_BIT_RATE, MAX_FRAME_SIZE, DBVAL(INTERVAL), 0x01, DBVAL(INTERVAL)), VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x01, 0x01), /* 1.2.2.2 Standard VideoStream Isochronous Video Data Endpoint Descriptor */ - 0x07, /* bLength */ - USB_DESCRIPTOR_TYPE_ENDPOINT, /* bDescriptorType: ENDPOINT */ - 0x81, /* bEndpointAddress: IN endpoint 2 */ - 0x01, /* bmAttributes: Isochronous transfer type. Asynchronous synchronization type. */ - WBVAL(VIDEO_PACKET_SIZE), /* wMaxPacketSize */ - 0x01, /* bInterval: One frame interval */ + USB_ENDPOINT_DESCRIPTOR_INIT(VIDEO_IN_EP, 0x05, VIDEO_PACKET_SIZE, 0x01), /////////////////////////////////////// /// string0 descriptor @@ -191,7 +180,7 @@ void usbd_video_close(uint8_t busid, uint8_t intf) void usbd_video_iso_callback(uint8_t busid, uint8_t ep, uint32_t nbytes) { - USB_LOG_RAW("actual in len:%d\r\n", nbytes); + //USB_LOG_RAW("actual in len:%d\r\n", nbytes); iso_tx_busy = false; } @@ -213,17 +202,19 @@ void video_init(uint8_t busid, uint32_t reg_base) usbd_initialize(busid, reg_base, usbd_event_handler); } -USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t packet_buffer[10 * 1024]; +USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t packet_buffer[40 * 1024]; void video_test(uint8_t busid) { uint32_t out_len; uint32_t packets; - memset(packet_buffer, 0, 10 * 1024); + + (void)packets; + memset(packet_buffer, 0, 40 * 1024); while (1) { if (tx_flag) { - packets = usbd_video_mjpeg_payload_fill(busid, (uint8_t *)jpeg_data, sizeof(jpeg_data), packet_buffer, &out_len); -#if 0 + packets = usbd_video_payload_fill(busid, (uint8_t *)cherryusb_mjpeg, sizeof(cherryusb_mjpeg), packet_buffer, &out_len); +#if 1 iso_tx_busy = true; usbd_ep_start_write(busid, VIDEO_IN_EP, packet_buffer, out_len); while (iso_tx_busy) { diff --git a/components/drivers/usb/cherryusb/demo/video_static_yuyv_template.c b/components/drivers/usb/cherryusb/demo/video_static_yuyv_template.c new file mode 100644 index 0000000000..febbaf9b6a --- /dev/null +++ b/components/drivers/usb/cherryusb/demo/video_static_yuyv_template.c @@ -0,0 +1,251 @@ +/* + * Copyright (c) 2024, sakumisu + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "usbd_core.h" +#include "usbd_video.h" +#include "cherryusb_yuyv.h" + +#define VIDEO_IN_EP 0x81 +#define VIDEO_INT_EP 0x83 + +#ifdef CONFIG_USB_HS +#define MAX_PAYLOAD_SIZE 1024 // for high speed with one transcations every one micro frame +#define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 1)) | (0x00 << 11)) + +// #define MAX_PAYLOAD_SIZE 2048 // for high speed with two transcations every one micro frame +// #define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 2)) | (0x01 << 11)) + +// #define MAX_PAYLOAD_SIZE 3072 // for high speed with three transcations every one micro frame +// #define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 3)) | (0x02 << 11)) + +#else +#define MAX_PAYLOAD_SIZE 1020 +#define VIDEO_PACKET_SIZE (unsigned int)(((MAX_PAYLOAD_SIZE / 1)) | (0x00 << 11)) +#endif + +#define WIDTH (unsigned int)(64) +#define HEIGHT (unsigned int)(48) + +#define CAM_FPS (30) +#define INTERVAL (unsigned long)(10000000 / CAM_FPS) +#define MIN_BIT_RATE (unsigned long)(WIDTH * HEIGHT * 16 * CAM_FPS) //16 bit +#define MAX_BIT_RATE (unsigned long)(WIDTH * HEIGHT * 16 * CAM_FPS) +#define MAX_FRAME_SIZE (unsigned long)(WIDTH * HEIGHT * 2) + +#define VS_HEADER_SIZ (unsigned int)(VIDEO_SIZEOF_VS_INPUT_HEADER_DESC(1,1) + VIDEO_SIZEOF_VS_FORMAT_UNCOMPRESSED_DESC + VIDEO_SIZEOF_VS_FRAME_UNCOMPRESSED_DESC(1)) + +#define USB_VIDEO_DESC_SIZ (unsigned long)(9 + \ + VIDEO_VC_NOEP_DESCRIPTOR_LEN + \ + 9 + \ + VS_HEADER_SIZ + \ + 6 + \ + 9 + \ + 7) + +#define USBD_VID 0xffff +#define USBD_PID 0xffff +#define USBD_MAX_POWER 100 +#define USBD_LANGID_STRING 1033 + +const uint8_t video_descriptor[] = { + USB_DEVICE_DESCRIPTOR_INIT(USB_2_0, 0xef, 0x02, 0x01, USBD_VID, USBD_PID, 0x0001, 0x01), + USB_CONFIG_DESCRIPTOR_INIT(USB_VIDEO_DESC_SIZ, 0x02, 0x01, USB_CONFIG_BUS_POWERED, USBD_MAX_POWER), + //VIDEO_VC_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02), + VIDEO_VC_NOEP_DESCRIPTOR_INIT(0x00, VIDEO_INT_EP, 0x0100, VIDEO_VC_TERMINAL_LEN, 48000000, 0x02), + VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x00, 0x00), + VIDEO_VS_INPUT_HEADER_DESCRIPTOR_INIT(0x01, VS_HEADER_SIZ, VIDEO_IN_EP, 0x00), + VIDEO_VS_FORMAT_UNCOMPRESSED_DESCRIPTOR_INIT(0x01, 0x01, VIDEO_GUID_YUY2), + VIDEO_VS_FRAME_UNCOMPRESSED_DESCRIPTOR_INIT(0x01, WIDTH, HEIGHT, MIN_BIT_RATE, MAX_BIT_RATE, MAX_FRAME_SIZE, DBVAL(INTERVAL), 0x01, DBVAL(INTERVAL)), + VIDEO_VS_COLOR_MATCHING_DESCRIPTOR_INIT(), + VIDEO_VS_DESCRIPTOR_INIT(0x01, 0x01, 0x01), + /* 1.2.2.2 Standard VideoStream Isochronous Video Data Endpoint Descriptor */ + USB_ENDPOINT_DESCRIPTOR_INIT(VIDEO_IN_EP, 0x05, VIDEO_PACKET_SIZE, 0x01), + + /////////////////////////////////////// + /// string0 descriptor + /////////////////////////////////////// + USB_LANGID_INIT(USBD_LANGID_STRING), + /////////////////////////////////////// + /// string1 descriptor + /////////////////////////////////////// + 0x14, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'C', 0x00, /* wcChar0 */ + 'h', 0x00, /* wcChar1 */ + 'e', 0x00, /* wcChar2 */ + 'r', 0x00, /* wcChar3 */ + 'r', 0x00, /* wcChar4 */ + 'y', 0x00, /* wcChar5 */ + 'U', 0x00, /* wcChar6 */ + 'S', 0x00, /* wcChar7 */ + 'B', 0x00, /* wcChar8 */ + /////////////////////////////////////// + /// string2 descriptor + /////////////////////////////////////// + 0x26, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + 'C', 0x00, /* wcChar0 */ + 'h', 0x00, /* wcChar1 */ + 'e', 0x00, /* wcChar2 */ + 'r', 0x00, /* wcChar3 */ + 'r', 0x00, /* wcChar4 */ + 'y', 0x00, /* wcChar5 */ + 'U', 0x00, /* wcChar6 */ + 'S', 0x00, /* wcChar7 */ + 'B', 0x00, /* wcChar8 */ + ' ', 0x00, /* wcChar9 */ + 'U', 0x00, /* wcChar10 */ + 'V', 0x00, /* wcChar11 */ + 'C', 0x00, /* wcChar12 */ + ' ', 0x00, /* wcChar13 */ + 'D', 0x00, /* wcChar14 */ + 'E', 0x00, /* wcChar15 */ + 'M', 0x00, /* wcChar16 */ + 'O', 0x00, /* wcChar17 */ + /////////////////////////////////////// + /// string3 descriptor + /////////////////////////////////////// + 0x16, /* bLength */ + USB_DESCRIPTOR_TYPE_STRING, /* bDescriptorType */ + '2', 0x00, /* wcChar0 */ + '0', 0x00, /* wcChar1 */ + '2', 0x00, /* wcChar2 */ + '1', 0x00, /* wcChar3 */ + '0', 0x00, /* wcChar4 */ + '3', 0x00, /* wcChar5 */ + '1', 0x00, /* wcChar6 */ + '0', 0x00, /* wcChar7 */ + '0', 0x00, /* wcChar8 */ + '0', 0x00, /* wcChar9 */ +#ifdef CONFIG_USB_HS + /////////////////////////////////////// + /// device qualifier descriptor + /////////////////////////////////////// + 0x0a, + USB_DESCRIPTOR_TYPE_DEVICE_QUALIFIER, + 0x00, + 0x02, + 0x00, + 0x00, + 0x00, + 0x40, + 0x01, + 0x00, +#endif + 0x00 +}; + +volatile bool tx_flag = 0; +volatile bool iso_tx_busy = false; + +static void usbd_event_handler(uint8_t busid, uint8_t event) +{ + switch (event) { + case USBD_EVENT_RESET: + break; + case USBD_EVENT_CONNECTED: + break; + case USBD_EVENT_DISCONNECTED: + break; + case USBD_EVENT_RESUME: + break; + case USBD_EVENT_SUSPEND: + break; + case USBD_EVENT_CONFIGURED: + tx_flag = 0; + iso_tx_busy = false; + break; + case USBD_EVENT_SET_REMOTE_WAKEUP: + break; + case USBD_EVENT_CLR_REMOTE_WAKEUP: + break; + + default: + break; + } +} + +void usbd_video_open(uint8_t busid, uint8_t intf) +{ + tx_flag = 1; + USB_LOG_RAW("OPEN\r\n"); + iso_tx_busy = false; +} +void usbd_video_close(uint8_t busid, uint8_t intf) +{ + USB_LOG_RAW("CLOSE\r\n"); + tx_flag = 0; + iso_tx_busy = false; +} + +void usbd_video_iso_callback(uint8_t busid, uint8_t ep, uint32_t nbytes) +{ + //USB_LOG_RAW("actual in len:%d\r\n", nbytes); + iso_tx_busy = false; +} + +static struct usbd_endpoint video_in_ep = { + .ep_cb = usbd_video_iso_callback, + .ep_addr = VIDEO_IN_EP +}; + +struct usbd_interface intf0; +struct usbd_interface intf1; + +void video_init(uint8_t busid, uint32_t reg_base) +{ + usbd_desc_register(busid, video_descriptor); + usbd_add_interface(busid, usbd_video_init_intf(busid, &intf0, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE)); + usbd_add_interface(busid, usbd_video_init_intf(busid, &intf1, INTERVAL, MAX_FRAME_SIZE, MAX_PAYLOAD_SIZE)); + usbd_add_endpoint(busid, &video_in_ep); + + usbd_initialize(busid, reg_base, usbd_event_handler); +} + +USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t packet_buffer[40 * 1024]; + +void video_test(uint8_t busid) +{ + uint32_t out_len; + uint32_t packets; + + (void)packets; + memset(packet_buffer, 0, 40 * 1024); + while (1) { + if (tx_flag) { + packets = usbd_video_payload_fill(busid, (uint8_t *)cherryusb_yuyv, sizeof(cherryusb_yuyv), packet_buffer, &out_len); +#if 1 + iso_tx_busy = true; + usbd_ep_start_write(busid, VIDEO_IN_EP, packet_buffer, out_len); + while (iso_tx_busy) { + if (tx_flag == 0) { + break; + } + } +#else + /* dwc2 must use this method */ + for (uint32_t i = 0; i < packets; i++) { + if (i == (packets - 1)) { + iso_tx_busy = true; + usbd_ep_start_write(busid, VIDEO_IN_EP, &packet_buffer[i * MAX_PAYLOAD_SIZE], out_len - (packets - 1) * MAX_PAYLOAD_SIZE); + while (iso_tx_busy) { + if (tx_flag == 0) { + break; + } + } + } else { + iso_tx_busy = true; + usbd_ep_start_write(busid, VIDEO_IN_EP, &packet_buffer[i * MAX_PAYLOAD_SIZE], MAX_PAYLOAD_SIZE); + while (iso_tx_busy) { + if (tx_flag == 0) { + break; + } + } + } + } +#endif + } + } +} \ No newline at end of file diff --git a/components/drivers/usb/cherryusb/platform/rtthread/usbh_dfs.c b/components/drivers/usb/cherryusb/platform/rtthread/usbh_dfs.c index 968064a644..12799e67b2 100644 --- a/components/drivers/usb/cherryusb/platform/rtthread/usbh_dfs.c +++ b/components/drivers/usb/cherryusb/platform/rtthread/usbh_dfs.c @@ -16,7 +16,7 @@ #endif #if defined(SOC_SERIES_STM32H7) || defined(SOC_SERIES_STM32F7) || \ - defined(SOC_HPM5000) || defined(SOC_HPM6000) || defined(BSP_USING_BL61X) + defined(SOC_HPM5000) || defined(SOC_HPM6000) || defined(SOC_HPM6E00) || defined(BSP_USING_BL61X) #ifndef RT_USING_CACHE #error usbh msc must enable RT_USING_CACHE in this chip #endif diff --git a/components/drivers/usb/cherryusb/platform/rtthread/usbh_lwip.c b/components/drivers/usb/cherryusb/platform/rtthread/usbh_lwip.c index 2c0c7eaf93..360a848953 100644 --- a/components/drivers/usb/cherryusb/platform/rtthread/usbh_lwip.c +++ b/components/drivers/usb/cherryusb/platform/rtthread/usbh_lwip.c @@ -32,11 +32,11 @@ #warning suggest you to enable LWIP_NO_TX_THREAD, we do not use rtthread eth tx thread #endif -#if LWIP_TCPIP_CORE_LOCKING_INPUT !=1 +#if LWIP_TCPIP_CORE_LOCKING_INPUT != 1 #warning suggest you to set LWIP_TCPIP_CORE_LOCKING_INPUT to 1, usb handles eth input with own thread #endif -#if LWIP_TCPIP_CORE_LOCKING !=1 +#if LWIP_TCPIP_CORE_LOCKING != 1 #error must set LWIP_TCPIP_CORE_LOCKING to 1 #endif @@ -50,6 +50,18 @@ // #define CONFIG_USBHOST_PLATFORM_ASIX // #define CONFIG_USBHOST_PLATFORM_RTL8152 +void usbh_lwip_eth_output_common(struct pbuf *p, uint8_t *buf) +{ + struct pbuf *q; + uint8_t *buffer; + + buffer = buf; + for (q = p; q != NULL; q = q->next) { + usb_memcpy(buffer, q->payload, q->len); + buffer += q->len; + } +} + void usbh_lwip_eth_input_common(struct netif *netif, uint8_t *buf, uint32_t len) { #if LWIP_TCPIP_CORE_LOCKING_INPUT @@ -65,7 +77,7 @@ void usbh_lwip_eth_input_common(struct netif *netif, uint8_t *buf, uint32_t len) #if LWIP_TCPIP_CORE_LOCKING_INPUT p->payload = buf; #else - memcpy(p->payload, buf, len); + usb_memcpy(p->payload, buf, len); #endif err = netif->input(p, netif); if (err != ERR_OK) { @@ -105,7 +117,10 @@ static rt_err_t rt_usbh_cdc_ecm_control(rt_device_t dev, int cmd, void *args) static rt_err_t rt_usbh_cdc_ecm_eth_tx(rt_device_t dev, struct pbuf *p) { - int ret = usbh_cdc_ecm_eth_output(p->payload, p->tot_len); + int ret; + + usbh_lwip_eth_output_common(p, usbh_cdc_ecm_get_eth_txbuf()); + ret = usbh_cdc_ecm_eth_output(p->tot_len); if (ret < 0) { return -RT_ERROR; } else { @@ -188,7 +203,10 @@ static rt_err_t rt_usbh_rndis_control(rt_device_t dev, int cmd, void *args) static rt_err_t rt_usbh_rndis_eth_tx(rt_device_t dev, struct pbuf *p) { - int ret = usbh_rndis_eth_output(p->payload, p->tot_len); + int ret; + + usbh_lwip_eth_output_common(p, usbh_rndis_get_eth_txbuf()); + ret = usbh_rndis_eth_output(p->tot_len); if (ret < 0) { return -RT_ERROR; } else { @@ -254,7 +272,10 @@ static rt_err_t rt_usbh_cdc_ncm_control(rt_device_t dev, int cmd, void *args) static rt_err_t rt_usbh_cdc_ncm_eth_tx(rt_device_t dev, struct pbuf *p) { - int ret = usbh_cdc_ncm_eth_output(p->payload, p->tot_len); + int ret; + + usbh_lwip_eth_output_common(p, usbh_cdc_ncm_get_eth_txbuf()); + ret = usbh_cdc_ncm_eth_output(p->tot_len); if (ret < 0) { return -RT_ERROR; } else { @@ -317,7 +338,10 @@ static rt_err_t rt_usbh_asix_control(rt_device_t dev, int cmd, void *args) static rt_err_t rt_usbh_asix_eth_tx(rt_device_t dev, struct pbuf *p) { - int ret = usbh_asix_eth_output(p->payload, p->tot_len); + int ret; + + usbh_lwip_eth_output_common(p, usbh_asix_get_eth_txbuf()); + ret = usbh_asix_eth_output(p->tot_len); if (ret < 0) { return -RT_ERROR; } else { @@ -380,7 +404,10 @@ static rt_err_t rt_usbh_rtl8152_control(rt_device_t dev, int cmd, void *args) static rt_err_t rt_usbh_rtl8152_eth_tx(rt_device_t dev, struct pbuf *p) { - int ret = usbh_rtl8152_eth_output(p->payload, p->tot_len); + int ret; + + usbh_lwip_eth_output_common(p, usbh_rtl8152_get_eth_txbuf()); + ret = usbh_rtl8152_eth_output(p->tot_len); if (ret < 0) { return -RT_ERROR; } else { diff --git a/components/drivers/usb/cherryusb/port/dwc2/README.md b/components/drivers/usb/cherryusb/port/dwc2/README.md index 2c084afd68..2111008946 100644 --- a/components/drivers/usb/cherryusb/port/dwc2/README.md +++ b/components/drivers/usb/cherryusb/port/dwc2/README.md @@ -29,3 +29,11 @@ ## Espressif - ESP32S2、ESP32S3 + +## Sophgo + +- CV18xx + +## Kendryte + +- K230 diff --git a/components/drivers/usb/cherryusb/port/dwc2/usb_glue_esp.c b/components/drivers/usb/cherryusb/port/dwc2/usb_glue_esp.c index 47b4fb4ddb..8c63234e02 100644 --- a/components/drivers/usb/cherryusb/port/dwc2/usb_glue_esp.c +++ b/components/drivers/usb/cherryusb/port/dwc2/usb_glue_esp.c @@ -8,8 +8,8 @@ #include "esp_intr_alloc.h" #include "esp_private/usb_phy.h" #include "soc/periph_defs.h" -#include "usb_config.h" -#include "usb_log.h" +#include "usbd_core.h" +#include "usbh_core.h" #ifdef CONFIG_IDF_TARGET_ESP32S2 #define DEFAULT_CPU_FREQ_MHZ CONFIG_ESP32S2_DEFAULT_CPU_FREQ_MHZ diff --git a/components/drivers/usb/cherryusb/port/dwc2/usb_glue_hc.c b/components/drivers/usb/cherryusb/port/dwc2/usb_glue_hc.c new file mode 100644 index 0000000000..9bebe6df52 --- /dev/null +++ b/components/drivers/usb/cherryusb/port/dwc2/usb_glue_hc.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2024, sakumisu + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "usb_config.h" +#include "usb_dwc2_reg.h" + +/* When using [GPIO_SetFunc(USBF_VBUS_PORT, USBF_VBUS_PIN, USBF_VBUS_FUNC);], there is no need to configure GOTGCTL */ + +#define USB_OTG_GLB ((DWC2_GlobalTypeDef *)(reg_base)) + +uint32_t usbd_get_dwc2_gccfg_conf(uint32_t reg_base) +{ + + USB_OTG_GLB->GOTGCTL |= USB_OTG_GOTGCTL_BVALOEN; + USB_OTG_GLB->GOTGCTL |= USB_OTG_GOTGCTL_BVALOVAL; + return 0; +} + +uint32_t usbh_get_dwc2_gccfg_conf(uint32_t reg_base) +{ + USB_OTG_GLB->GOTGCTL &= ~USB_OTG_GOTGCTL_BVALOEN; + USB_OTG_GLB->GOTGCTL &= ~USB_OTG_GOTGCTL_BVALOVAL; + return 0; +} diff --git a/components/drivers/usb/cherryusb/port/dwc2/usb_hc_dwc2.c b/components/drivers/usb/cherryusb/port/dwc2/usb_hc_dwc2.c index 3dcf5fcc3f..ddcbaf2802 100644 --- a/components/drivers/usb/cherryusb/port/dwc2/usb_hc_dwc2.c +++ b/components/drivers/usb/cherryusb/port/dwc2/usb_hc_dwc2.c @@ -21,9 +21,9 @@ #define CONFIG_USB_DWC2_PTX_FIFO_SIZE (1024 / 4) #endif -/* - * (largest USB packet used / 4) + 1 for status information + 1 transfer complete + - * 1 location each for Bulk/Control endpoint for handling NAK/NYET scenario +/* + * (largest USB packet used / 4) + 1 for status information + 1 transfer complete + + * 1 location each for Bulk/Control endpoint for handling NAK/NYET scenario */ #ifndef CONFIG_USB_DWC2_RX_FIFO_SIZE #define CONFIG_USB_DWC2_RX_FIFO_SIZE ((1012 - CONFIG_USB_DWC2_NPTX_FIFO_SIZE - CONFIG_USB_DWC2_PTX_FIFO_SIZE) / 4) @@ -322,15 +322,15 @@ static int dwc2_chan_alloc(struct usbh_bus *bus) size_t flags; int chidx; + flags = usb_osal_enter_critical_section(); for (chidx = 0; chidx < CONFIG_USBHOST_PIPE_NUM; chidx++) { if (!g_dwc2_hcd[bus->hcd.hcd_id].chan_pool[chidx].inuse) { - flags = usb_osal_enter_critical_section(); g_dwc2_hcd[bus->hcd.hcd_id].chan_pool[chidx].inuse = true; usb_osal_leave_critical_section(flags); return chidx; } } - + usb_osal_leave_critical_section(flags); return -1; } @@ -736,14 +736,32 @@ int usbh_submit_urb(struct usbh_urb *urb) return -USB_ERR_BUSY; } - flags = usb_osal_enter_critical_section(); - chidx = dwc2_chan_alloc(bus); if (chidx == -1) { - usb_osal_leave_critical_section(flags); return -USB_ERR_NOMEM; } + if (urb->ep->bEndpointAddress & 0x80) { + /* Check if pipe rx fifo is overflow */ + if (USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize) > (CONFIG_USB_DWC2_RX_FIFO_SIZE * 4)) { + return -USB_ERR_RANGE; + } + } else { + /* Check if intr and iso pipe tx fifo is overflow */ + if (((USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize) == USB_ENDPOINT_TYPE_ISOCHRONOUS) || + (USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize) == USB_ENDPOINT_TYPE_INTERRUPT)) && + USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize) > (CONFIG_USB_DWC2_PTX_FIFO_SIZE * 4)) { + return -USB_ERR_RANGE; + } else { + /* Check if control and bulk pipe tx fifo is overflow */ + if (USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize) > (CONFIG_USB_DWC2_NPTX_FIFO_SIZE * 4)) { + return -USB_ERR_RANGE; + } + } + } + + flags = usb_osal_enter_critical_section(); + chan = &g_dwc2_hcd[bus->hcd.hcd_id].chan_pool[chidx]; chan->chidx = chidx; chan->urb = urb; diff --git a/components/drivers/usb/cherryusb/port/ehci/usb_ehci_priv.h b/components/drivers/usb/cherryusb/port/ehci/usb_ehci_priv.h index 03fa270c83..ba1d3510f7 100644 --- a/components/drivers/usb/cherryusb/port/ehci/usb_ehci_priv.h +++ b/components/drivers/usb/cherryusb/port/ehci/usb_ehci_priv.h @@ -25,7 +25,10 @@ #define CONFIG_USB_EHCI_QTD_NUM 3 #endif #ifndef CONFIG_USB_EHCI_ITD_NUM -#define CONFIG_USB_EHCI_ITD_NUM 20 +#define CONFIG_USB_EHCI_ITD_NUM 5 +#endif +#ifndef CONFIG_USB_EHCI_ISO_NUM +#define CONFIG_USB_EHCI_ISO_NUM 4 #endif extern uint8_t usbh_get_port_speed(struct usbh_bus *bus, const uint8_t port); @@ -52,12 +55,17 @@ struct ehci_itd_hw { uint8_t mf_unmask; uint8_t mf_valid; uint32_t pkt_idx[8]; - usb_slist_t list; } __attribute__((aligned(32))); +struct ehci_iso_hw +{ + struct ehci_itd_hw itd_pool[CONFIG_USB_EHCI_ITD_NUM]; + uint32_t itd_num; +}; + struct ehci_hcd { bool ehci_qh_used[CONFIG_USB_EHCI_QH_NUM]; - bool ehci_itd_used[CONFIG_USB_EHCI_ITD_NUM]; + bool ehci_iso_used[CONFIG_USB_EHCI_ISO_NUM]; bool ppc; /* Port Power Control */ bool has_tt; /* if use tt instead of Companion Controller */ uint8_t n_cc; /* Number of Companion Controller */ @@ -70,7 +78,7 @@ extern struct ehci_hcd g_ehci_hcd[CONFIG_USBHOST_MAX_BUS]; extern uint32_t g_framelist[CONFIG_USBHOST_MAX_BUS][USB_ALIGN_UP(CONFIG_USB_EHCI_FRAME_LIST_SIZE, 1024)]; int ehci_iso_urb_init(struct usbh_bus *bus, struct usbh_urb *urb); -void ehci_remove_itd_urb(struct usbh_bus *bus, struct usbh_urb *urb); +void ehci_kill_iso_urb(struct usbh_bus *bus, struct usbh_urb *urb); void ehci_scan_isochronous_list(struct usbh_bus *bus); #endif diff --git a/components/drivers/usb/cherryusb/port/ehci/usb_hc_ehci.c b/components/drivers/usb/cherryusb/port/ehci/usb_hc_ehci.c index 41c8f46db8..d8370120a4 100644 --- a/components/drivers/usb/cherryusb/port/ehci/usb_hc_ehci.c +++ b/components/drivers/usb/cherryusb/port/ehci/usb_hc_ehci.c @@ -32,9 +32,9 @@ static struct ehci_qh_hw *ehci_qh_alloc(struct usbh_bus *bus) struct ehci_qtd_hw *qtd; size_t flags; + flags = usb_osal_enter_critical_section(); for (uint32_t i = 0; i < CONFIG_USB_EHCI_QH_NUM; i++) { if (!g_ehci_hcd[bus->hcd.hcd_id].ehci_qh_used[i]) { - flags = usb_osal_enter_critical_section(); g_ehci_hcd[bus->hcd.hcd_id].ehci_qh_used[i] = true; usb_osal_leave_critical_section(flags); @@ -56,6 +56,7 @@ static struct ehci_qh_hw *ehci_qh_alloc(struct usbh_bus *bus) return qh; } } + usb_osal_leave_critical_section(flags); return NULL; } @@ -1160,21 +1161,18 @@ int usbh_submit_urb(struct usbh_urb *urb) if (qh == NULL) { return -USB_ERR_NOMEM; } - urb->hcpriv = qh; break; case USB_ENDPOINT_TYPE_BULK: qh = ehci_bulk_urb_init(bus, urb, urb->transfer_buffer, urb->transfer_buffer_length); if (qh == NULL) { return -USB_ERR_NOMEM; } - urb->hcpriv = qh; break; case USB_ENDPOINT_TYPE_INTERRUPT: qh = ehci_intr_urb_init(bus, urb, urb->transfer_buffer, urb->transfer_buffer_length); if (qh == NULL) { return -USB_ERR_NOMEM; } - urb->hcpriv = qh; break; case USB_ENDPOINT_TYPE_ISOCHRONOUS: #ifdef CONFIG_USB_EHCI_ISO @@ -1245,7 +1243,7 @@ int usbh_kill_urb(struct usbh_urb *urb) } } else { #ifdef CONFIG_USB_EHCI_ISO - ehci_remove_itd_urb(bus, urb); + ehci_kill_iso_urb(bus, urb); EHCI_HCOR->usbcmd |= (EHCI_USBCMD_PSEN | EHCI_USBCMD_ASEN); usb_osal_leave_critical_section(flags); return 0; @@ -1346,8 +1344,8 @@ void USBH_IRQHandler(uint8_t busid) for (uint8_t index = 0; index < CONFIG_USB_EHCI_QH_NUM; index++) { g_ehci_hcd[bus->hcd.hcd_id].ehci_qh_used[index] = false; } - for (uint8_t index = 0; index < CONFIG_USB_EHCI_ITD_NUM; index++) { - g_ehci_hcd[bus->hcd.hcd_id].ehci_itd_used[index] = false; + for (uint8_t index = 0; index < CONFIG_USB_EHCI_ISO_NUM; index++) { + g_ehci_hcd[bus->hcd.hcd_id].ehci_iso_used[index] = false; } } diff --git a/components/drivers/usb/cherryusb/port/musb/README.md b/components/drivers/usb/cherryusb/port/musb/README.md index d65b70a176..ad2a527f02 100644 --- a/components/drivers/usb/cherryusb/port/musb/README.md +++ b/components/drivers/usb/cherryusb/port/musb/README.md @@ -2,11 +2,7 @@ ## Support Chip List -### HEZHOU - -- AIR105 - -### ES32 +### Eastsoft - ES32F3xx @@ -14,6 +10,10 @@ - MSP432E4x +### Bekencorp + +- BK7256/BK7258 + ### AllwinnerTech - F1Cxxx, F2Cxxx diff --git a/components/drivers/usb/cherryusb/port/musb/usb_dc_musb.c b/components/drivers/usb/cherryusb/port/musb/usb_dc_musb.c index 4bcc7eeee5..d66ec39edc 100644 --- a/components/drivers/usb/cherryusb/port/musb/usb_dc_musb.c +++ b/components/drivers/usb/cherryusb/port/musb/usb_dc_musb.c @@ -78,10 +78,6 @@ #define USB_FIFO_BASE(ep_idx) (USB_BASE + MUSB_FIFO_OFFSET + 0x4 * ep_idx) -#ifndef CONFIG_USBDEV_EP_NUM -#define CONFIG_USBDEV_EP_NUM 8 -#endif - typedef enum { USB_EP0_STATE_SETUP = 0x0, /**< SETUP DATA */ USB_EP0_STATE_IN_DATA = 0x1, /**< IN DATA */ @@ -106,14 +102,12 @@ struct musb_ep_state { /* Driver state */ struct musb_udc { volatile uint8_t dev_addr; - volatile uint32_t fifo_size_offset; __attribute__((aligned(32))) struct usb_setup_packet setup; struct musb_ep_state in_ep[CONFIG_USBDEV_EP_NUM]; /*!< IN endpoint parameters*/ struct musb_ep_state out_ep[CONFIG_USBDEV_EP_NUM]; /*!< OUT endpoint parameters */ } g_musb_udc; static volatile uint8_t usb_ep0_state = USB_EP0_STATE_SETUP; -volatile bool zlp_flag = 0; /* get current active ep */ static uint8_t musb_get_active_ep(void) @@ -205,6 +199,40 @@ static uint32_t musb_get_fifo_size(uint16_t mps, uint16_t *used) return USB_TXFIFOSZ_SIZE_8; } +static uint32_t usbd_musb_fifo_config(struct musb_fifo_cfg *cfg, uint32_t offset) +{ + uint16_t fifo_used; + uint8_t c_size; + uint16_t c_off; + + c_off = offset >> 3; + c_size = musb_get_fifo_size(cfg->maxpacket, &fifo_used); + + musb_set_active_ep(cfg->ep_num); + + switch (cfg->style) { + case FIFO_TX: + HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET) = c_size & 0x0f; + HWREGH(USB_BASE + MUSB_TXFIFOADD_OFFSET) = c_off; + break; + case FIFO_RX: + HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET) = c_size & 0x0f; + HWREGH(USB_BASE + MUSB_RXFIFOADD_OFFSET) = c_off; + break; + case FIFO_TXRX: + HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET) = c_size & 0x0f; + HWREGH(USB_BASE + MUSB_TXFIFOADD_OFFSET) = c_off; + HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET) = c_size & 0x0f; + HWREGH(USB_BASE + MUSB_RXFIFOADD_OFFSET) = c_off; + break; + + default: + break; + } + + return (offset + fifo_used); +} + __WEAK void usb_dc_low_level_init(void) { } @@ -215,6 +243,10 @@ __WEAK void usb_dc_low_level_deinit(void) int usb_dc_init(uint8_t busid) { + uint16_t offset = 0; + uint8_t cfg_num; + struct musb_fifo_cfg *cfg; + usb_dc_low_level_init(); #ifdef CONFIG_USB_HS @@ -228,6 +260,18 @@ int usb_dc_init(uint8_t busid) HWREGB(USB_BASE + MUSB_DEVCTL_OFFSET) |= USB_DEVCTL_SESSION; + cfg_num = usbd_get_musb_fifo_cfg(&cfg); + + for (uint8_t i = 0; i < cfg_num; i++) { + offset = usbd_musb_fifo_config(&cfg[i], offset); + } + + if (offset > usb_get_musb_ram_size()) { + USB_LOG_ERR("offset:%d is overflow, please check your table\r\n", offset); + while (1) { + } + } + /* Enable USB interrupts */ HWREGB(USB_BASE + MUSB_IE_OFFSET) = USB_IE_RESET; HWREGH(USB_BASE + MUSB_TXIE_OFFSET) = USB_TXIE_EP0; @@ -266,16 +310,8 @@ uint8_t usbd_get_port_speed(uint8_t busid) return speed; } -uint8_t usbd_force_full_speed(const uint8_t port) -{ - HWREGB(USB_BASE + MUSB_POWER_OFFSET) &= ~USB_POWER_HSENAB; - return (HWREGB(USB_BASE + MUSB_POWER_OFFSET) & USB_POWER_HSENAB); -} - int usbd_ep_open(uint8_t busid, const struct usb_endpoint_descriptor *ep) { - uint16_t used = 0; - uint16_t fifo_size = 0; uint8_t ep_idx = USB_EP_GET_IDX(ep->bEndpointAddress); uint8_t old_ep_idx; uint32_t ui32Flags = 0; @@ -304,6 +340,11 @@ int usbd_ep_open(uint8_t busid, const struct usb_endpoint_descriptor *ep) g_musb_udc.out_ep[ep_idx].ep_type = USB_GET_ENDPOINT_TYPE(ep->bmAttributes); g_musb_udc.out_ep[ep_idx].ep_enable = true; + if ((8 << HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET)) < g_musb_udc.out_ep[ep_idx].ep_mps) { + USB_LOG_ERR("Ep %02x fifo is overflow\r\n", ep->bEndpointAddress); + return -2; + } + HWREGH(USB_BASE + MUSB_IND_RXMAP_OFFSET) = USB_GET_MAXPACKETSIZE(ep->wMaxPacketSize); // @@ -343,18 +384,16 @@ int usbd_ep_open(uint8_t busid, const struct usb_endpoint_descriptor *ep) HWREGB(USB_BASE + MUSB_IND_RXCSRL_OFFSET) = (USB_RXCSRL1_CLRDT | USB_RXCSRL1_FLUSH); else HWREGB(USB_BASE + MUSB_IND_RXCSRL_OFFSET) = USB_RXCSRL1_CLRDT; - - fifo_size = musb_get_fifo_size(USB_GET_MAXPACKETSIZE(ep->wMaxPacketSize), &used); - - HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET) = fifo_size & 0x0f; - HWREGH(USB_BASE + MUSB_RXFIFOADD_OFFSET) = (g_musb_udc.fifo_size_offset >> 3); - - g_musb_udc.fifo_size_offset += used; } else { g_musb_udc.in_ep[ep_idx].ep_mps = USB_GET_MAXPACKETSIZE(ep->wMaxPacketSize); g_musb_udc.in_ep[ep_idx].ep_type = USB_GET_ENDPOINT_TYPE(ep->bmAttributes); g_musb_udc.in_ep[ep_idx].ep_enable = true; + if ((8 << HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET)) < g_musb_udc.in_ep[ep_idx].ep_mps) { + USB_LOG_ERR("Ep %02x fifo is overflow\r\n", ep->bEndpointAddress); + return -2; + } + HWREGH(USB_BASE + MUSB_IND_TXMAP_OFFSET) = USB_GET_MAXPACKETSIZE(ep->wMaxPacketSize); // @@ -388,13 +427,6 @@ int usbd_ep_open(uint8_t busid, const struct usb_endpoint_descriptor *ep) HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) = (USB_TXCSRL1_CLRDT | USB_TXCSRL1_FLUSH); else HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) = USB_TXCSRL1_CLRDT; - - fifo_size = musb_get_fifo_size(USB_GET_MAXPACKETSIZE(ep->wMaxPacketSize), &used); - - HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET) = fifo_size & 0x0f; - HWREGH(USB_BASE + MUSB_TXFIFOADD_OFFSET) = (g_musb_udc.fifo_size_offset >> 3); - - g_musb_udc.fifo_size_offset += used; } musb_set_active_ep(old_ep_idx); @@ -472,130 +504,6 @@ int usbd_ep_is_stalled(uint8_t busid, const uint8_t ep, uint8_t *stalled) return 0; } -int usb_ep_out_data_avail(uint8_t ep_addr) -{ - uint16_t old_ep_idx, length; - uint8_t ep_idx = USB_EP_GET_IDX(ep_addr); - - old_ep_idx = musb_get_active_ep(); - musb_set_active_ep(ep_idx); - - if (ep_idx == 0) { - if (!(HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) & USB_CSRL0_RXRDY)) { - musb_set_active_ep(old_ep_idx); - return 0; - } - length = HWREGH(USB_BASE + MUSB_IND_RXCOUNT_OFFSET); - musb_set_active_ep(old_ep_idx); - return length; - } else { - if (!(HWREGB(USB_BASE + MUSB_IND_RXCSRL_OFFSET) & USB_RXCSRL1_RXRDY)) { - musb_set_active_ep(old_ep_idx); - return 0; - } - length = HWREGH(USB_BASE + MUSB_IND_RXCOUNT_OFFSET); - musb_set_active_ep(old_ep_idx); - return length; - } -} - -int usb_ep_in_data_avail(uint8_t ep_addr) -{ - uint16_t old_ep_idx, length; - uint8_t ep_idx = USB_EP_GET_IDX(ep_addr); - - old_ep_idx = musb_get_active_ep(); - musb_set_active_ep(ep_idx); - - if (ep_idx == 0) { - if (HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) & USB_CSRL0_TXRDY) { - musb_set_active_ep(old_ep_idx); - return 0; - } - } else { - if (HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) & USB_TXCSRL1_TXRDY) { - musb_set_active_ep(old_ep_idx); - return 0; - } - } - length = HWREGH(USB_BASE + MUSB_IND_TXMAP_OFFSET); - musb_set_active_ep(old_ep_idx); - return length; -} - -int usb_ep_wait_in_data_avail(uint8_t ep_addr) -{ - uint32_t cnt; - - for (cnt = 0; cnt < 3000; cnt++) { - if (usb_ep_in_data_avail(ep_addr)) - return cnt; - } - return 0; -} - -int usbd_read_packet(uint8_t ep_addr, uint8_t *buffer, uint16_t len) -{ - uint16_t old_ep_idx, cnt; - uint8_t ep_idx = USB_EP_GET_IDX(ep_addr); - - old_ep_idx = musb_get_active_ep(); - musb_set_active_ep(ep_idx); - if (ep_idx == 0) { - if (!(HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) & USB_CSRL0_RXRDY)) { - musb_set_active_ep(old_ep_idx); - return 0; - } - } else { - if (!(HWREGB(USB_BASE + MUSB_IND_RXCSRL_OFFSET) & USB_RXCSRL1_RXRDY)) { - musb_set_active_ep(old_ep_idx); - return 0; - } - } - cnt = usb_ep_out_data_avail(ep_idx); - if (cnt) { - musb_read_packet(ep_idx, buffer, cnt); - HWREGB(USB_BASE + MUSB_IND_RXCSRL_OFFSET) &= ~(USB_RXCSRL1_OVER | USB_RXCSRL1_ERROR | USB_RXCSRL1_STALL | USB_RXCSRL1_STALLED); - HWREGB(USB_BASE + MUSB_IND_RXCSRL_OFFSET) &= ~(USB_RXCSRL1_RXRDY); - musb_set_active_ep(old_ep_idx); - } - return cnt; -} - -int usbd_write_packet(uint8_t ep_addr, uint8_t *buffer, uint16_t len) -{ - uint16_t old_ep_idx, cnt; - uint8_t ep_idx = USB_EP_GET_IDX(ep_addr); - - old_ep_idx = musb_get_active_ep(); - musb_set_active_ep(ep_idx); - if (HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) & USB_TXCSRL1_UNDRN) { - HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) &= ~USB_TXCSRL1_UNDRN; - } - if (HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) & USB_TXCSRL1_TXRDY) { - musb_set_active_ep(old_ep_idx); - return -1; - } - - if (!buffer && len) { - return -2; - } - - if (!len) { - HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) |= USB_TXCSRL1_TXRDY; - return 0; - } - - cnt = usb_ep_in_data_avail(ep_idx); - if (cnt) { - cnt = MIN(cnt, len); - musb_write_packet(ep_idx, buffer, cnt); - HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) |= USB_TXCSRL1_TXRDY; - musb_set_active_ep(old_ep_idx); - } - return cnt; -} - int usbd_ep_start_write(uint8_t busid, const uint8_t ep, const uint8_t *data, uint32_t data_len) { uint8_t ep_idx = USB_EP_GET_IDX(ep); @@ -787,18 +695,10 @@ void USBD_IRQHandler(uint8_t busid) /* Receive a reset signal from the USB bus */ if (is & USB_IS_RESET) { memset(&g_musb_udc, 0, sizeof(struct musb_udc)); - g_musb_udc.fifo_size_offset = USB_CTRL_EP_MPS; usbd_event_reset_handler(0); HWREGH(USB_BASE + MUSB_TXIE_OFFSET) = USB_TXIE_EP0; HWREGH(USB_BASE + MUSB_RXIE_OFFSET) = 0; - for (uint8_t i = 1; i < CONFIG_USBDEV_EP_NUM; i++) { - musb_set_active_ep(i); - HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET) = 0; - HWREGH(USB_BASE + MUSB_TXFIFOADD_OFFSET) = 0; - HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET) = 0; - HWREGH(USB_BASE + MUSB_RXFIFOADD_OFFSET) = 0; - } usb_ep0_state = USB_EP0_STATE_SETUP; } diff --git a/components/drivers/usb/cherryusb/port/musb/usb_glue_bk.c b/components/drivers/usb/cherryusb/port/musb/usb_glue_bk.c new file mode 100644 index 0000000000..7eb987f9c2 --- /dev/null +++ b/components/drivers/usb/cherryusb/port/musb/usb_glue_bk.c @@ -0,0 +1,321 @@ +/* + * Copyright (c) 2024, sakumisu + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "sys_driver.h" +#include "gpio_driver.h" +#include +#include +#include +#include "bk_misc.h" +#include "usbd_core.h" +#include "usbh_core.h" +#include "usb_musb_reg.h" + +#define USB_BASE_ADDR SOC_USB_REG_BASE + +#if (CONFIG_SOC_BK7271) +#define REG_AHB2_USB_OTG_CFG (*((volatile unsigned char *)(USB_BASE_ADDR + 0x80))) +#define REG_AHB2_USB_DMA_ENDP (*((volatile unsigned char *)(USB_BASE_ADDR + 0x84))) +#define REG_AHB2_USB_VTH (*((volatile unsigned char *)(USB_BASE_ADDR + 0x88))) +#define REG_AHB2_USB_GEN (*((volatile unsigned char *)(USB_BASE_ADDR + 0x8C))) +#define REG_AHB2_USB_STAT (*((volatile unsigned char *)(USB_BASE_ADDR + 0x90))) +#define REG_AHB2_USB_INT (*((volatile unsigned char *)(USB_BASE_ADDR + 0x94))) +#define REG_AHB2_USB_RESET (*((volatile unsigned char *)(USB_BASE_ADDR + 0x98))) +#define REG_AHB2_USB_DEV_CFG (*((volatile unsigned char *)(USB_BASE_ADDR + 0x9C))) +#elif (CONFIG_SOC_BK7256XX) +#define REG_AHB2_USB_OTG_CFG (*((volatile unsigned char *)(USB_BASE_ADDR + 0x280))) +#define REG_AHB2_USB_DMA_ENDP (*((volatile unsigned char *)(USB_BASE_ADDR + 0x284))) +#define REG_AHB2_USB_VTH (*((volatile unsigned char *)(USB_BASE_ADDR + 0x288))) +#define REG_AHB2_USB_GEN (*((volatile unsigned char *)(USB_BASE_ADDR + 0x28C))) +#define REG_AHB2_USB_STAT (*((volatile unsigned char *)(USB_BASE_ADDR + 0x290))) +#define REG_AHB2_USB_INT (*((volatile unsigned char *)(USB_BASE_ADDR + 0x294))) +#define REG_AHB2_USB_RESET (*((volatile unsigned char *)(USB_BASE_ADDR + 0x298))) +#define REG_AHB2_USB_DEV_CFG (*((volatile unsigned char *)(USB_BASE_ADDR + 0x29C))) +#elif (CONFIG_SOC_BK7236XX) || (CONFIG_SOC_BK7239XX) || (CONFIG_SOC_BK7286XX) +#define REG_AHB2_USB_DEVICE_ID (*((volatile unsigned char *)(USB_BASE_ADDR + 0x280))) +#define REG_AHB2_USB_VERSION_ID (*((volatile unsigned char *)(USB_BASE_ADDR + 0x284))) +#define REG_AHB2_USB_GLOBAL_CTRL (*((volatile unsigned char *)(USB_BASE_ADDR + 0x288))) +#define REG_AHB2_USB_DEVICE_STATUS (*((volatile unsigned char *)(USB_BASE_ADDR + 0x28c))) +#define REG_AHB2_USB_OTG_CFG (*((volatile unsigned char *)(USB_BASE_ADDR + 0x290))) +#define REG_AHB2_USB_DMA_ENDP (*((volatile unsigned char *)(USB_BASE_ADDR + 0x294))) +#define REG_AHB2_USB_VTH (*((volatile unsigned char *)(USB_BASE_ADDR + 0x298))) +#define REG_AHB2_USB_GEN (*((volatile unsigned char *)(USB_BASE_ADDR + 0x29C))) +#define REG_AHB2_USB_STAT (*((volatile unsigned char *)(USB_BASE_ADDR + 0x2A0))) +#define REG_AHB2_USB_INT (*((volatile unsigned char *)(USB_BASE_ADDR + 0x2A4))) +#define REG_AHB2_USB_RESET (*((volatile unsigned char *)(USB_BASE_ADDR + 0x2A8))) +#define REG_AHB2_USB_DEV_CFG (*((volatile unsigned char *)(USB_BASE_ADDR + 0x2AC))) + +#define REG_USB_USR_700 (*((volatile unsigned long *)(USB_BASE_ADDR + 0x700))) +#define REG_USB_USR_704 (*((volatile unsigned long *)(USB_BASE_ADDR + 0x704))) +#define REG_USB_USR_708 (*((volatile unsigned long *)(USB_BASE_ADDR + 0x708))) +#define REG_USB_USR_70C (*((volatile unsigned long *)(USB_BASE_ADDR + 0x70C))) +#define REG_USB_USR_710 (*((volatile unsigned long *)(USB_BASE_ADDR + 0x710))) +#define REG_USB_USR_714 (*((volatile unsigned long *)(USB_BASE_ADDR + 0x714))) +#define REG_USB_PHY_00 (*((volatile unsigned long *)(USB_BASE_ADDR + 0x400))) +#define REG_USB_PHY_01 (*((volatile unsigned long *)(USB_BASE_ADDR + 0x404))) +#endif + +#define USB_DP_CAPABILITY_VALUE (0xF) +#define USB_DN_CAPABILITY_VALUE (0xF) + +#define NANENG_PHY_FC_REG01 (0x01 * 4) +#define NANENG_PHY_FC_REG02 (0x02 * 4) +#define NANENG_PHY_FC_REG03 (0x03 * 4) +#define NANENG_PHY_FC_REG04 (0x04 * 4) +#define NANENG_PHY_FC_REG05 (0x05 * 4) +#define NANENG_PHY_FC_REG06 (0x06 * 4) +#define NANENG_PHY_FC_REG07 (0x07 * 4) +#define NANENG_PHY_FC_REG08 (0x08 * 4) +#define NANENG_PHY_FC_REG09 (0x09 * 4) +#define NANENG_PHY_FC_REG0A (0x0A * 4) +#define NANENG_PHY_FC_REG0B (0x0B * 4) +#define NANENG_PHY_FC_REG0C (0x0C * 4) +#define NANENG_PHY_FC_REG0D (0x0D * 4) +#define NANENG_PHY_FC_REG0E (0x0E * 4) +#define NANENG_PHY_FC_REG0F (0x0F * 4) +#define NANENG_PHY_FC_REG0F_BYTE 0x0F + +#define NANENG_PHY_FC_REG10 (0x10 * 4) +#define NANENG_PHY_FC_REG11 (0x11 * 4) +#define NANENG_PHY_FC_REG12 (0x12 * 4) +#define NANENG_PHY_FC_REG13 (0x13 * 4) +#define NANENG_PHY_FC_REG14 (0x14 * 4) +#define NANENG_PHY_FC_REG15 (0x15 * 4) +#define NANENG_PHY_FC_REG16 (0x16 * 4) +#define NANENG_PHY_FC_REG17 (0x17 * 4) +#define NANENG_PHY_FC_REG18 (0x18 * 4) +#define NANENG_PHY_FC_REG19 (0x19 * 4) +#define NANENG_PHY_FC_REG1A (0x1A * 4) +#define NANENG_PHY_FC_REG1B (0x1B * 4) +#define NANENG_PHY_FC_REG1C (0x1C * 4) +#define NANENG_PHY_FC_REG1D (0x1D * 4) +#define NANENG_PHY_FC_REG1E (0x1E * 4) +#define NANENG_PHY_FC_REG1F (0x1F * 4) + +#if CONFIG_USBDEV_EP_NUM != 8 +#error beken chips only support 8 endpoints +#endif + +#if CONFIG_USBHOST_PIPE_NUM != 8 +#error beken chips only support 8 pipes +#endif + +// clang-format off +static struct musb_fifo_cfg musb_device_table[] = { +{ .ep_num = 0, .style = FIFO_TXRX, .maxpacket = 64, }, +{ .ep_num = 1, .style = FIFO_TX, .maxpacket = 1024, }, +{ .ep_num = 1, .style = FIFO_RX, .maxpacket = 1024, }, +{ .ep_num = 2, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 2, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 4, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 4, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 5, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 5, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 6, .style = FIFO_TXRX, .maxpacket = 512, }, +{ .ep_num = 7, .style = FIFO_TXRX, .maxpacket = 512, } +}; + +static struct musb_fifo_cfg musb_host_table[] = { +{ .ep_num = 0, .style = FIFO_TXRX, .maxpacket = 64, }, +{ .ep_num = 1, .style = FIFO_TX, .maxpacket = 1024, }, +{ .ep_num = 1, .style = FIFO_RX, .maxpacket = 1024, }, +{ .ep_num = 2, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 2, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 4, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 4, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 5, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 5, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 6, .style = FIFO_TXRX, .maxpacket = 512, }, +{ .ep_num = 7, .style = FIFO_TXRX, .maxpacket = 512, } +}; +// clang-format on + +uint8_t usbd_get_musb_fifo_cfg(struct musb_fifo_cfg **cfg) +{ + *cfg = musb_device_table; + return sizeof(musb_device_table) / sizeof(musb_device_table[0]); +} + +uint8_t usbh_get_musb_fifo_cfg(struct musb_fifo_cfg **cfg) +{ + *cfg = musb_host_table; + return sizeof(musb_host_table) / sizeof(musb_host_table[0]); +} + +uint32_t usb_get_musb_ram_size(void) +{ + return 8192; +} + +extern void USBD_IRQHandler(uint8_t busid); + +void USBD_IRQ(void) +{ + USBD_IRQHandler(0); +} + +static void bk_analog_layer_usb_sys_related_ops(uint32_t usb_mode, bool ops) +{ + extern void delay(INT32 num); + +#if 0 + sys_drv_usb_analog_phy_en(ops, NULL); + sys_drv_usb_analog_speed_en(ops, NULL); + sys_drv_usb_analog_ckmcu_en(ops, NULL); +#endif + if (ops) { + sys_drv_usb_clock_ctrl(true, NULL); + delay(100); +#if 0 + sys_drv_usb_analog_deepsleep_en(false); +#endif + sys_drv_usb_analog_dp_capability(USB_DP_CAPABILITY_VALUE); + sys_drv_usb_analog_dn_capability(USB_DN_CAPABILITY_VALUE); + if (!sys_hal_psram_ldo_status()) { + sys_drv_psram_ldo_enable(1); + } + sys_drv_usb_analog_phy_en(1, NULL); + + if (usb_mode == 0) { + REG_USB_USR_708 = 0x0; + REG_USB_USR_710 &= ~(0x1 << 7); + delay(100); + + REG_USB_USR_710 |= (0x1 << 15); + //REG_USB_USR_710 |= (0x1<<14); + REG_USB_USR_710 |= (0x1 << 16); + REG_USB_USR_710 |= (0x1 << 17); + REG_USB_USR_710 |= (0x1 << 18); + REG_USB_USR_710 |= (0x1 << 19); + REG_USB_USR_710 &= ~(0x1 << 20); + REG_USB_USR_710 |= (0x1 << 21); + REG_USB_USR_710 |= (0x0 << 0); + REG_USB_USR_710 |= (0x1 << 5); + REG_USB_USR_710 |= (0x1 << 6); + REG_USB_USR_710 |= (0x1 << 9); + REG_USB_USR_710 |= (0x1 << 10); + REG_USB_USR_710 |= (0x1 << 1); + + REG_USB_USR_710 |= (0x1 << 7); + REG_USB_USR_708 = 0x1; +#if 0 + REG_USB_PHY_00 = 0x08; + REG_USB_PHY_01 = 0x02; + REG_USB_USR_710 |= (0x1<< 8); + while(1){ + reg = REG_USB_USR_70C; + if(reg & 0x100){ + USB_DRIVER_LOGI("SelfTest Fin!\r\n"); + USB_DRIVER_LOGI("test end!\r\n"); + break; + } else { + USB_DRIVER_LOGI("70c_reg:0x%x\r\n", reg); + delay(10000); + } + } + REG_USB_PHY_00 &= ~0x08; + REG_USB_PHY_01 &= ~0x02; + REG_USB_USR_710 &= ~(0x1<< 8); +#endif + } else { + REG_USB_USR_710 |= (0x1 << 15); + REG_USB_USR_710 |= (0x1 << 14); + REG_USB_USR_710 |= (0x1 << 16); + REG_USB_USR_710 |= (0x1 << 17); + REG_USB_USR_710 |= (0x1 << 18); + REG_USB_USR_710 |= (0x1 << 19); + REG_USB_USR_710 &= ~(0x1 << 20); + REG_USB_USR_710 |= (0x1 << 21); + REG_USB_USR_710 |= (0x0 << 0); + REG_USB_USR_710 |= (0x1 << 5); + REG_USB_USR_710 |= (0x1 << 6); + REG_USB_USR_710 |= (0x1 << 9); + REG_USB_USR_710 |= (0x1 << 10); + REG_USB_USR_710 |= (0x1 << 7); + + REG_USB_USR_708 = 0x1; + } + } else { + sys_drv_usb_analog_phy_en(0, NULL); + sys_drv_usb_clock_ctrl(false, NULL); + } +} + +void usb_dc_low_level_init(void) +{ +#if CONFIG_SYS_CPU0 + bk_pm_module_vote_sleep_ctrl(PM_SLEEP_MODULE_NAME_USB_1, 0x0, 0x0); +#endif + bk_analog_layer_usb_sys_related_ops(1, true); + bk_gpio_set_output_high(CONFIG_USB_VBAT_CONTROL_GPIO_ID); + + bk_pm_module_vote_cpu_freq(PM_DEV_ID_USB_1, PM_CPU_FRQ_120M); + + sys_hal_usb_analog_phy_en(true); + + sys_drv_usb_clock_ctrl(true, NULL); + sys_drv_int_enable(USB_INTERRUPT_CTRL_BIT); + + bk_int_isr_register(INT_SRC_USB, USBD_IRQ, NULL); + bk_int_set_priority(INT_SRC_USB, 2); +} + +void usb_dc_low_level_deinit(void) +{ + bk_pm_module_vote_cpu_freq(PM_DEV_ID_USB_1, PM_CPU_FRQ_DEFAULT); + sys_hal_usb_analog_phy_en(false); + sys_drv_usb_clock_ctrl(false, NULL); + sys_drv_int_disable(USB_INTERRUPT_CTRL_BIT); + bk_int_isr_unregister(INT_SRC_USB); + bk_analog_layer_usb_sys_related_ops(1, false); + sys_drv_dev_clk_pwr_up(CLK_PWR_ID_USB_1, CLK_PWR_CTRL_PWR_DOWN); +} + +extern void USBH_IRQHandler(uint8_t busid); + +void USBH_IRQ(void) +{ + USBH_IRQHandler(0); +} + +#define NANENG_PHY_CFG 1 +#define USB_PHY_BASE (SOC_USB_REG_BASE + 0x400) + +#define HWREG(x) \ + (*((volatile uint32_t *)(x))) +#define HWREGH(x) \ + (*((volatile uint16_t *)(x))) +#define HWREGB(x) \ + (*((volatile uint8_t *)(x))) + +void usb_hc_low_level_init(struct usbh_bus *bus) +{ +#if CONFIG_SYS_CPU0 + bk_pm_module_vote_sleep_ctrl(PM_SLEEP_MODULE_NAME_USB_1, 0x0, 0x0); +#endif + bk_analog_layer_usb_sys_related_ops(0, true); + bk_gpio_set_output_high(CONFIG_USB_VBAT_CONTROL_GPIO_ID); + +#if NANENG_PHY_CFG + //NANENG_PHY_CFG_HSRX_TEST + HWREGB(USB_PHY_BASE + NANENG_PHY_FC_REG0F) |= (0x1 << 4); + //disconnect value 640mv + HWREGB(USB_PHY_BASE + NANENG_PHY_FC_REG0B) = 0x7C; +#endif + bk_int_isr_register(INT_SRC_USB, USBH_IRQ, NULL); + sys_drv_int_enable(USB_INTERRUPT_CTRL_BIT); +} + +void usb_hc_low_level_deinit(struct usbh_bus *bus) +{ + sys_drv_int_disable(USB_INTERRUPT_CTRL_BIT); + bk_int_isr_unregister(INT_SRC_USB); + sys_drv_dev_clk_pwr_up(CLK_PWR_ID_USB_1, CLK_PWR_CTRL_PWR_DOWN); + bk_analog_layer_usb_sys_related_ops(0, false); +} \ No newline at end of file diff --git a/components/drivers/usb/cherryusb/port/musb/usb_glue_es.c b/components/drivers/usb/cherryusb/port/musb/usb_glue_es.c new file mode 100644 index 0000000000..adfc293c39 --- /dev/null +++ b/components/drivers/usb/cherryusb/port/musb/usb_glue_es.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2024, sakumisu + * + * SPDX-License-Identifier: Apache-2.0 + */ +#include "usb_config.h" +#include "stdint.h" +#include "usb_musb_reg.h" + +#if CONFIG_USBDEV_EP_NUM != 6 +#error es32 chips only support 6 endpoints +#endif + +#if CONFIG_USBHOST_PIPE_NUM != 6 +#error es32 chips only support 6 pipes +#endif + +// clang-format off +static struct musb_fifo_cfg musb_device_table[] = { +{ .ep_num = 0, .style = FIFO_TXRX, .maxpacket = 64, }, +{ .ep_num = 1, .style = FIFO_TXRX, .maxpacket = 1024, }, +{ .ep_num = 2, .style = FIFO_TXRX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_TXRX, .maxpacket = 512, }, +{ .ep_num = 4, .style = FIFO_TXRX, .maxpacket = 512, }, +{ .ep_num = 5, .style = FIFO_TXRX, .maxpacket = 512, }, +}; + +static struct musb_fifo_cfg musb_host_table[] = { +{ .ep_num = 0, .style = FIFO_TXRX, .maxpacket = 64, }, +{ .ep_num = 1, .style = FIFO_TXRX, .maxpacket = 1024, }, +{ .ep_num = 2, .style = FIFO_TXRX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_TXRX, .maxpacket = 512, }, +{ .ep_num = 4, .style = FIFO_TXRX, .maxpacket = 512, }, +{ .ep_num = 5, .style = FIFO_TXRX, .maxpacket = 512, }, +}; +// clang-format on + +uint8_t usbd_get_musb_fifo_cfg(struct musb_fifo_cfg **cfg) +{ + *cfg = musb_device_table; + return sizeof(musb_device_table) / sizeof(musb_device_table[0]); +} + +uint8_t usbh_get_musb_fifo_cfg(struct musb_fifo_cfg **cfg) +{ + *cfg = musb_host_table; + return sizeof(musb_host_table) / sizeof(musb_host_table[0]); +} + +uint32_t usb_get_musb_ram_size(void) +{ + return 4096; +} \ No newline at end of file diff --git a/components/drivers/usb/cherryusb/port/musb/usb_glue_sunxi.c b/components/drivers/usb/cherryusb/port/musb/usb_glue_sunxi.c index c30681bfea..433923048f 100644 --- a/components/drivers/usb/cherryusb/port/musb/usb_glue_sunxi.c +++ b/components/drivers/usb/cherryusb/port/musb/usb_glue_sunxi.c @@ -1,5 +1,59 @@ +/* + * Copyright (c) 2024, sakumisu + * + * SPDX-License-Identifier: Apache-2.0 + */ #include "usb_config.h" +#include "stdint.h" +#include "usb_musb_reg.h" #ifndef CONFIG_USB_MUSB_SUNXI #error must define CONFIG_USB_MUSB_SUNXI when use sunxi chips -#endif \ No newline at end of file +#endif + +#if CONFIG_USBDEV_EP_NUM != 4 +#error sunxi chips only support 4 endpoints +#endif + +#if CONFIG_USBHOST_PIPE_NUM != 4 +#error sunxi chips only support 4 pipes +#endif + +// clang-format off +static struct musb_fifo_cfg musb_device_table[] = { +{ .ep_num = 0, .style = FIFO_TXRX, .maxpacket = 64, }, +{ .ep_num = 1, .style = FIFO_TX, .maxpacket = 1024, }, +{ .ep_num = 1, .style = FIFO_RX, .maxpacket = 1024, }, +{ .ep_num = 2, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 2, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_RX, .maxpacket = 512, }, +}; + +static struct musb_fifo_cfg musb_host_table[] = { +{ .ep_num = 0, .style = FIFO_TXRX, .maxpacket = 64, }, +{ .ep_num = 1, .style = FIFO_TX, .maxpacket = 1024, }, +{ .ep_num = 1, .style = FIFO_RX, .maxpacket = 1024, }, +{ .ep_num = 2, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 2, .style = FIFO_RX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_TX, .maxpacket = 512, }, +{ .ep_num = 3, .style = FIFO_RX, .maxpacket = 512, }, +}; +// clang-format on + +uint8_t usbd_get_musb_fifo_cfg(struct musb_fifo_cfg **cfg) +{ + *cfg = musb_device_table; + return sizeof(musb_device_table) / sizeof(musb_device_table[0]); +} + +uint8_t usbh_get_musb_fifo_cfg(struct musb_fifo_cfg **cfg) +{ + *cfg = musb_host_table; + return sizeof(musb_host_table) / sizeof(musb_host_table[0]); +} + +uint32_t usb_get_musb_ram_size(void) +{ + return 8192; +} \ No newline at end of file diff --git a/components/drivers/usb/cherryusb/port/musb/usb_hc_musb.c b/components/drivers/usb/cherryusb/port/musb/usb_hc_musb.c index ef700fbfc6..b5d7e36cec 100644 --- a/components/drivers/usb/cherryusb/port/musb/usb_hc_musb.c +++ b/components/drivers/usb/cherryusb/port/musb/usb_hc_musb.c @@ -16,10 +16,6 @@ #define USB_BASE (bus->hcd.reg_base) -#if CONFIG_USBHOST_PIPE_NUM != 4 -#error musb host ip only supports 4 pipe num -#endif - #ifdef CONFIG_USB_MUSB_SUNXI #define MUSB_FADDR_OFFSET 0x98 #define MUSB_POWER_OFFSET 0x40 @@ -124,10 +120,6 @@ #define USB_FIFO_BASE(ep_idx) (USB_BASE + MUSB_FIFO_OFFSET + 0x4 * ep_idx) -#ifndef CONIFG_USB_MUSB_PIPE_NUM -#define CONIFG_USB_MUSB_PIPE_NUM 5 -#endif - typedef enum { USB_EP0_STATE_SETUP = 0x0, /**< SETUP DATA */ USB_EP0_STATE_IN_DATA, /**< IN DATA */ @@ -243,6 +235,56 @@ static void musb_read_packet(struct usbh_bus *bus, uint8_t ep_idx, uint8_t *buff } } +static uint32_t musb_get_fifo_size(uint16_t mps, uint16_t *used) +{ + uint32_t size; + + for (uint8_t i = USB_TXFIFOSZ_SIZE_8; i <= USB_TXFIFOSZ_SIZE_2048; i++) { + size = (8 << i); + if (mps <= size) { + *used = size; + return i; + } + } + + *used = 0; + return USB_TXFIFOSZ_SIZE_8; +} + +static uint32_t usbh_musb_fifo_config(struct usbh_bus *bus, struct musb_fifo_cfg *cfg, uint32_t offset) +{ + uint16_t fifo_used; + uint8_t c_size; + uint16_t c_off; + + c_off = offset >> 3; + c_size = musb_get_fifo_size(cfg->maxpacket, &fifo_used); + + musb_set_active_ep(bus, cfg->ep_num); + + switch (cfg->style) { + case FIFO_TX: + HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET) = c_size & 0x0f; + HWREGH(USB_BASE + MUSB_TXFIFOADD_OFFSET) = c_off; + break; + case FIFO_RX: + HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET) = c_size & 0x0f; + HWREGH(USB_BASE + MUSB_RXFIFOADD_OFFSET) = c_off; + break; + case FIFO_TXRX: + HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET) = c_size & 0x0f; + HWREGH(USB_BASE + MUSB_TXFIFOADD_OFFSET) = c_off; + HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET) = c_size & 0x0f; + HWREGH(USB_BASE + MUSB_RXFIFOADD_OFFSET) = c_off; + break; + + default: + break; + } + + return (offset + fifo_used); +} + void musb_control_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *urb, struct usb_setup_packet *setup, uint8_t *buffer, uint32_t buflen) { uint8_t old_ep_index; @@ -269,7 +311,7 @@ void musb_control_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb musb_set_active_ep(bus, old_ep_index); } -void musb_bulk_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *urb, uint8_t *buffer, uint32_t buflen) +int musb_bulk_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *urb, uint8_t *buffer, uint32_t buflen) { uint8_t old_ep_index; uint8_t speed = USB_TXTYPE1_SPEED_FULL; @@ -286,6 +328,11 @@ void musb_bulk_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *ur } if (urb->ep->bEndpointAddress & 0x80) { + if ((8 << HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET)) < USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize)) { + USB_LOG_ERR("Ep %02x fifo is overflow\r\n", urb->ep->bEndpointAddress); + return -USB_ERR_RANGE; + } + HWREGB(USB_RXADDR_BASE(chidx)) = urb->hport->dev_addr; HWREGB(USB_BASE + MUSB_IND_RXTYPE_OFFSET) = (urb->ep->bEndpointAddress & 0x0f) | speed | USB_TXTYPE1_PROTO_BULK; HWREGB(USB_BASE + MUSB_IND_RXINTERVAL_OFFSET) = 0; @@ -296,6 +343,11 @@ void musb_bulk_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *ur HWREGH(USB_BASE + MUSB_RXIE_OFFSET) |= (1 << chidx); } else { + if ((8 << HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET)) < USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize)) { + USB_LOG_ERR("Ep %02x fifo is overflow\r\n", urb->ep->bEndpointAddress); + return -USB_ERR_RANGE; + } + HWREGB(USB_TXADDR_BASE(chidx)) = urb->hport->dev_addr; HWREGB(USB_BASE + MUSB_IND_TXTYPE_OFFSET) = (urb->ep->bEndpointAddress & 0x0f) | speed | USB_TXTYPE1_PROTO_BULK; HWREGB(USB_BASE + MUSB_IND_TXINTERVAL_OFFSET) = 0; @@ -307,16 +359,16 @@ void musb_bulk_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *ur } musb_write_packet(bus, chidx, buffer, buflen); - HWREGB(USB_BASE + MUSB_IND_TXCSRH_OFFSET) &= ~USB_TXCSRH1_MODE; HWREGB(USB_BASE + MUSB_IND_TXCSRH_OFFSET) |= USB_TXCSRH1_MODE; HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) = USB_TXCSRL1_TXRDY; HWREGH(USB_BASE + MUSB_TXIE_OFFSET) |= (1 << chidx); } musb_set_active_ep(bus, old_ep_index); + return 0; } -void musb_intr_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *urb, uint8_t *buffer, uint32_t buflen) +int musb_intr_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *urb, uint8_t *buffer, uint32_t buflen) { uint8_t old_ep_index; uint8_t speed = USB_TXTYPE1_SPEED_FULL; @@ -333,6 +385,11 @@ void musb_intr_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *ur } if (urb->ep->bEndpointAddress & 0x80) { + if ((8 << HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET)) < USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize)) { + USB_LOG_ERR("Ep %02x fifo is overflow\r\n", urb->ep->bEndpointAddress); + return -USB_ERR_RANGE; + } + HWREGB(USB_RXADDR_BASE(chidx)) = urb->hport->dev_addr; HWREGB(USB_BASE + MUSB_IND_RXTYPE_OFFSET) = (urb->ep->bEndpointAddress & 0x0f) | speed | USB_TXTYPE1_PROTO_INT; HWREGB(USB_BASE + MUSB_IND_RXINTERVAL_OFFSET) = urb->ep->bInterval; @@ -343,6 +400,11 @@ void musb_intr_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *ur HWREGH(USB_BASE + MUSB_RXIE_OFFSET) |= (1 << chidx); } else { + if ((8 << HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET)) < USB_GET_MAXPACKETSIZE(urb->ep->wMaxPacketSize)) { + USB_LOG_ERR("Ep %02x fifo is overflow\r\n", urb->ep->bEndpointAddress); + return -USB_ERR_RANGE; + } + HWREGB(USB_TXADDR_BASE(chidx)) = urb->hport->dev_addr; HWREGB(USB_BASE + MUSB_IND_TXTYPE_OFFSET) = (urb->ep->bEndpointAddress & 0x0f) | speed | USB_TXTYPE1_PROTO_INT; HWREGB(USB_BASE + MUSB_IND_TXINTERVAL_OFFSET) = urb->ep->bInterval; @@ -354,13 +416,13 @@ void musb_intr_urb_init(struct usbh_bus *bus, uint8_t chidx, struct usbh_urb *ur } musb_write_packet(bus, chidx, buffer, buflen); - HWREGB(USB_BASE + MUSB_IND_TXCSRH_OFFSET) &= ~USB_TXCSRH1_MODE; HWREGB(USB_BASE + MUSB_IND_TXCSRH_OFFSET) |= USB_TXCSRH1_MODE; HWREGB(USB_BASE + MUSB_IND_TXCSRL_OFFSET) = USB_TXCSRL1_TXRDY; HWREGH(USB_BASE + MUSB_TXIE_OFFSET) |= (1 << chidx); } musb_set_active_ep(bus, old_ep_index); + return 0; } static int usbh_reset_port(struct usbh_bus *bus, const uint8_t port) @@ -422,7 +484,9 @@ __WEAK void usb_hc_low_level_deinit(struct usbh_bus *bus) int usb_hc_init(struct usbh_bus *bus) { uint8_t regval; - uint32_t fifo_offset = 0; + uint16_t offset = 0; + uint8_t cfg_num; + struct musb_fifo_cfg *cfg; memset(&g_musb_hcd[bus->hcd.hcd_id], 0, sizeof(struct musb_hcd)); @@ -432,21 +496,16 @@ int usb_hc_init(struct usbh_bus *bus) usb_hc_low_level_init(bus); - musb_set_active_ep(bus, 0); - HWREGB(USB_BASE + MUSB_IND_TXINTERVAL_OFFSET) = 0; - HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET) = USB_TXFIFOSZ_SIZE_64; - HWREGH(USB_BASE + MUSB_TXFIFOADD_OFFSET) = 0; - HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET) = USB_TXFIFOSZ_SIZE_64; - HWREGH(USB_BASE + MUSB_RXFIFOADD_OFFSET) = 0; - fifo_offset += 64; + cfg_num = usbh_get_musb_fifo_cfg(&cfg); - for (uint8_t i = 1; i < CONIFG_USB_MUSB_PIPE_NUM; i++) { - musb_set_active_ep(bus, i); - HWREGB(USB_BASE + MUSB_TXFIFOSZ_OFFSET) = USB_TXFIFOSZ_SIZE_512; - HWREGH(USB_BASE + MUSB_TXFIFOADD_OFFSET) = fifo_offset; - HWREGB(USB_BASE + MUSB_RXFIFOSZ_OFFSET) = USB_TXFIFOSZ_SIZE_512; - HWREGH(USB_BASE + MUSB_RXFIFOADD_OFFSET) = fifo_offset; - fifo_offset += 512; + for (uint8_t i = 0; i < cfg_num; i++) { + offset = usbh_musb_fifo_config(bus, &cfg[i], offset); + } + + if (offset > usb_get_musb_ram_size()) { + USB_LOG_ERR("offset:%d is overflow, please check your table\r\n", offset); + while (1) { + } } /* Enable USB interrupts */ @@ -625,8 +684,6 @@ int usbh_submit_urb(struct usbh_urb *urb) bus = urb->hport->bus; - flags = usb_osal_enter_critical_section(); - if (USB_GET_ENDPOINT_TYPE(urb->ep->bmAttributes) == USB_ENDPOINT_TYPE_CONTROL) { chidx = 0; } else { @@ -637,6 +694,8 @@ int usbh_submit_urb(struct usbh_urb *urb) } } + flags = usb_osal_enter_critical_section(); + pipe = &g_musb_hcd[bus->hcd.hcd_id].pipe_pool[chidx]; pipe->chidx = chidx; pipe->urb = urb; @@ -645,18 +704,22 @@ int usbh_submit_urb(struct usbh_urb *urb) urb->errorcode = -USB_ERR_BUSY; urb->actual_length = 0; - usb_osal_sem_reset(pipe->waitsem); - switch (USB_GET_ENDPOINT_TYPE(urb->ep->bmAttributes)) { case USB_ENDPOINT_TYPE_CONTROL: pipe->ep0_state = USB_EP0_STATE_SETUP; musb_control_urb_init(bus, 0, urb, urb->setup, urb->transfer_buffer, urb->transfer_buffer_length); break; case USB_ENDPOINT_TYPE_BULK: - musb_bulk_urb_init(bus, chidx, urb, urb->transfer_buffer, urb->transfer_buffer_length); + ret = musb_bulk_urb_init(bus, chidx, urb, urb->transfer_buffer, urb->transfer_buffer_length); + if (ret < 0) { + return ret; + } break; case USB_ENDPOINT_TYPE_INTERRUPT: - musb_intr_urb_init(bus, chidx, urb, urb->transfer_buffer, urb->transfer_buffer_length); + ret = musb_intr_urb_init(bus, chidx, urb, urb->transfer_buffer, urb->transfer_buffer_length); + if (ret < 0) { + return ret; + } break; case USB_ENDPOINT_TYPE_ISOCHRONOUS: return -USB_ERR_NOTSUPP; @@ -869,7 +932,7 @@ void USBH_IRQHandler(uint8_t busid) struct usbh_bus *bus; bus = &g_usbhost_bus[busid]; - + is = HWREGB(USB_BASE + MUSB_IS_OFFSET); txis = HWREGH(USB_BASE + MUSB_TXIS_OFFSET); rxis = HWREGH(USB_BASE + MUSB_RXIS_OFFSET); @@ -920,7 +983,7 @@ void USBH_IRQHandler(uint8_t busid) handle_ep0(bus); } - for (ep_idx = 1; ep_idx < CONIFG_USB_MUSB_PIPE_NUM; ep_idx++) { + for (ep_idx = 1; ep_idx < CONFIG_USBHOST_PIPE_NUM; ep_idx++) { if (txis & (1 << ep_idx)) { HWREGH(USB_BASE + MUSB_TXIS_OFFSET) = (1 << ep_idx); @@ -966,7 +1029,7 @@ void USBH_IRQHandler(uint8_t busid) } rxis &= HWREGH(USB_BASE + MUSB_RXIE_OFFSET); - for (ep_idx = 1; ep_idx < CONIFG_USB_MUSB_PIPE_NUM; ep_idx++) { + for (ep_idx = 1; ep_idx < CONFIG_USBHOST_PIPE_NUM; ep_idx++) { if (rxis & (1 << ep_idx)) { HWREGH(USB_BASE + MUSB_RXIS_OFFSET) = (1 << ep_idx); // clear isr flag diff --git a/components/drivers/usb/cherryusb/port/musb/usb_musb_reg.h b/components/drivers/usb/cherryusb/port/musb/usb_musb_reg.h index 99d2cdfb61..885bdd4a27 100644 --- a/components/drivers/usb/cherryusb/port/musb/usb_musb_reg.h +++ b/components/drivers/usb/cherryusb/port/musb/usb_musb_reg.h @@ -3868,4 +3868,19 @@ typedef struct { /*!< USB0 Structure #define USB_MODE_DEV 0x00000003 #define USB_MODE_OTG 0x00000000 +#define FIFO_TX 0 +#define FIFO_RX 1 +#define FIFO_TXRX 2 + +struct musb_fifo_cfg { + uint8_t ep_num; + uint8_t style; + uint8_t mode; + uint32_t maxpacket; +}; + +uint8_t usbd_get_musb_fifo_cfg(struct musb_fifo_cfg **cfg); +uint8_t usbh_get_musb_fifo_cfg(struct musb_fifo_cfg **cfg); +uint32_t usb_get_musb_ram_size(void); + #endif