diff --git a/.gitignore b/.gitignore index 7ba03df..e44b5c9 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ mop3dist.tar mop3dist.tar.lz4 site/ *.img +build_limine/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7aeef95 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Limine"] + path = Limine + url = https://github.com/Limine-Bootloader/Limine.git diff --git a/Limine b/Limine new file mode 160000 index 0000000..1276c44 --- /dev/null +++ b/Limine @@ -0,0 +1 @@ +Subproject commit 1276c44024e708f25a5aa13e3c7dc58a5c205a64 diff --git a/Makefile b/Makefile index 181a187..f257659 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ platform ?= amd64 +include make/limine.mk include make/lz4.mk include make/apps.mk include make/kernel.mk diff --git a/OVMF/OVMF_VARS.fd b/OVMF/OVMF_VARS.fd index 09bd952..95fc85a 100644 Binary files a/OVMF/OVMF_VARS.fd and b/OVMF/OVMF_VARS.fd differ diff --git a/aux/devel.sh b/aux/devel.sh index 7c2b8fc..71ed66f 100755 --- a/aux/devel.sh +++ b/aux/devel.sh @@ -8,6 +8,7 @@ if [ "$1" = "debug" ]; then bt="buildtype=debug" fi +make -B all_limine make -B all_lz4 make -B all_kernel "$bt" make -B all_libu "$bt" diff --git a/aux/drive_check_health.sh b/aux/drive_check_health.sh new file mode 100755 index 0000000..f86009c --- /dev/null +++ b/aux/drive_check_health.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +if [[ -z "$1" ]]; then + echo "Usage: $0 " + exit 1 +fi + +IMAGE_FILE="$1" + +if [[ ! -f "$IMAGE_FILE" ]]; then + echo "Error: File '$IMAGE_FILE' not found." + exit 1 +fi + +if fdisk -l "$IMAGE_FILE" > /dev/null 2>&1; then + echo "MBR ok" + fdisk -l "$IMAGE_FILE" +else + echo "MBR bad" + exit 1 +fi + +LOOP_DEV=$(sudo losetup --show -fP "$IMAGE_FILE") + +cleanup() { + sudo losetup -d "$LOOP_DEV" + echo "$LOOP_DEV detached" +} +trap cleanup EXIT + +PARTITIONS=$(lsblk -lnp -o NAME "$LOOP_DEV" | grep -v "^$LOOP_DEV$") + +if [[ -z "$PARTITIONS" ]]; then + echo "no partitions found" +else + for PART in $PARTITIONS; do + echo "Checking partition: $PART" + sudo fsck.fat -nv "$PART" + + if [ $? -eq 0 ]; then + echo "$PART ok" + else + echo "$PART bad" + fi + echo "------------------------------------------" + done +fi diff --git a/aux/limine_img_amd64.sh b/aux/limine_img_amd64.sh index 2aaef75..e5b5a43 100755 --- a/aux/limine_img_amd64.sh +++ b/aux/limine_img_amd64.sh @@ -8,7 +8,7 @@ mkdir -p img_root/EFI/BOOT cp -v kernel/build/kernel.elf img_root/boot/ cp -v boot/limine/limine-bios.sys boot/limine.conf img_root/boot/limine/ cp -v boot/limine/limine-bios-cd.bin boot/limine/limine-uefi-cd.bin img_root/boot/limine/ -cp -v boot/limine/BOOTX64.EFI boot/limine/BOOTIA32.EFI img_root/EFI/BOOT/ +cp -v boot/limine/BOOTX64.EFI img_root/EFI/BOOT/ cp -v mop3dist.tar.lz4 img_root/boot/ dd if=/dev/zero of=mop3.img bs=1M count=64 diff --git a/aux/limine_iso_amd64.sh b/aux/limine_iso_amd64.sh index 31f03b6..2cac84a 100755 --- a/aux/limine_iso_amd64.sh +++ b/aux/limine_iso_amd64.sh @@ -3,15 +3,20 @@ make -C boot/limine rm -rf iso_root mkdir -p iso_root/boot/limine +mkdir -p iso_root/EFI/BOOT cp -v kernel/build/kernel.elf iso_root/boot cp -v boot/limine/limine-bios.sys boot/limine/limine-bios-cd.bin \ - boot/limine.conf iso_root/boot/limine + boot/limine/limine-uefi-cd.bin boot/limine.conf iso_root/boot/limine + +cp -v boot/limine/BOOTX64.EFI iso_root/EFI/BOOT cp -v mop3dist.tar.lz4 iso_root/boot xorriso -as mkisofs -R -r -b boot/limine/limine-bios-cd.bin \ - -no-emul-boot -boot-load-size 4 -boot-info-table \ + -no-emul-boot -boot-load-size 4 -boot-info-table -hfsplus \ + -apm-block-size 2048 --efi-boot boot/limine/limine-uefi-cd.bin \ + -efi-boot-part --efi-boot-image --protective-msdos-label \ iso_root -o mop3.iso boot/limine/limine bios-install mop3.iso diff --git a/boot/.gitignore b/boot/.gitignore new file mode 100644 index 0000000..48a2d13 --- /dev/null +++ b/boot/.gitignore @@ -0,0 +1 @@ +limine/ diff --git a/boot/limine/.gitignore b/boot/limine/.gitignore deleted file mode 100644 index a1492fd..0000000 --- a/boot/limine/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -limine -limine.exe diff --git a/boot/limine/BOOTAA64.EFI b/boot/limine/BOOTAA64.EFI deleted file mode 100644 index 9dba5d5..0000000 Binary files a/boot/limine/BOOTAA64.EFI and /dev/null differ diff --git a/boot/limine/BOOTIA32.EFI b/boot/limine/BOOTIA32.EFI deleted file mode 100644 index 006ef2d..0000000 Binary files a/boot/limine/BOOTIA32.EFI and /dev/null differ diff --git a/boot/limine/BOOTLOONGARCH64.EFI b/boot/limine/BOOTLOONGARCH64.EFI deleted file mode 100644 index 2288a7c..0000000 Binary files a/boot/limine/BOOTLOONGARCH64.EFI and /dev/null differ diff --git a/boot/limine/BOOTRISCV64.EFI b/boot/limine/BOOTRISCV64.EFI deleted file mode 100644 index 539945e..0000000 Binary files a/boot/limine/BOOTRISCV64.EFI and /dev/null differ diff --git a/boot/limine/BOOTX64.EFI b/boot/limine/BOOTX64.EFI deleted file mode 100644 index 6940581..0000000 Binary files a/boot/limine/BOOTX64.EFI and /dev/null differ diff --git a/boot/limine/LICENSE b/boot/limine/LICENSE deleted file mode 100644 index 3f9ab86..0000000 --- a/boot/limine/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (C) 2019-2025 Mintsuki and contributors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/boot/limine/Makefile b/boot/limine/Makefile deleted file mode 100644 index 4962735..0000000 --- a/boot/limine/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -.POSIX: - -SHELL=/bin/sh - -CC=cc -CFLAGS=-g -O2 -pipe -CPPFLAGS= -LDFLAGS= -LIBS= - -.PHONY: all -all: limine - -.PHONY: clean -clean: - rm -f limine limine.exe - -limine: limine.c - $(CC) $(CFLAGS) -std=c99 $(CPPFLAGS) $(LDFLAGS) $< $(LIBS) -o $@ diff --git a/boot/limine/limine-bios-cd.bin b/boot/limine/limine-bios-cd.bin deleted file mode 100644 index 1e89e17..0000000 Binary files a/boot/limine/limine-bios-cd.bin and /dev/null differ diff --git a/boot/limine/limine-bios-hdd.h b/boot/limine/limine-bios-hdd.h deleted file mode 100644 index 7ae0b0a..0000000 --- a/boot/limine/limine-bios-hdd.h +++ /dev/null @@ -1,1209 +0,0 @@ -const uint8_t binary_limine_hdd_bin_data[] = { - 0xeb, 0x3c, 0x90, 0x4c, 0x49, 0x4d, 0x49, 0x4e, 0x45, 0x20, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x49, 0x4d, 0x49, 0x4e, - 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xfc, - 0xea, 0x45, 0x7c, 0x00, 0x00, 0x31, 0xf6, 0x8e, 0xde, 0x8e, 0xc6, 0x8e, 0xd6, 0xbc, 0x00, 0x7c, - 0xfb, 0x80, 0xfa, 0x80, 0x0f, 0x82, 0x0f, 0x01, 0x80, 0xfa, 0x8f, 0x0f, 0x87, 0x07, 0x01, 0xb4, - 0x41, 0xbb, 0xaa, 0x55, 0xcd, 0x13, 0x0f, 0x82, 0xfb, 0x00, 0x81, 0xfb, 0x55, 0xaa, 0x0f, 0x85, - 0xf2, 0x00, 0x68, 0x00, 0x70, 0x07, 0xbf, 0xa4, 0x7d, 0x66, 0x8b, 0x05, 0x66, 0x8b, 0x6d, 0x04, - 0x31, 0xdb, 0x66, 0xb9, 0x00, 0x7e, 0x00, 0x00, 0xe8, 0x55, 0x00, 0x0f, 0x82, 0xd4, 0x00, 0x0f, - 0x01, 0x16, 0x4d, 0x7d, 0xfa, 0x0f, 0x20, 0xc0, 0x0f, 0xba, 0xe8, 0x00, 0x0f, 0x22, 0xc0, 0xea, - 0x78, 0x7d, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x60, 0xbe, 0x00, 0x80, 0xc7, 0x04, 0x10, 0x00, 0xc7, 0x44, 0x02, 0x01, 0x00, 0x89, 0x5c, 0x04, - 0x8c, 0x44, 0x06, 0x52, 0x56, 0x66, 0x50, 0x66, 0x55, 0xb4, 0x48, 0xbe, 0x10, 0x80, 0xc7, 0x04, - 0x1e, 0x00, 0xcd, 0x13, 0x72, 0x45, 0x8b, 0x6c, 0x18, 0x89, 0xc8, 0x66, 0xc1, 0xe9, 0x10, 0x89, - 0xca, 0x31, 0xc9, 0xf7, 0xf5, 0x85, 0xd2, 0x0f, 0x95, 0xc1, 0x01, 0xc1, 0x66, 0x5a, 0x66, 0x58, - 0x5e, 0x66, 0xf7, 0xf5, 0x66, 0x89, 0x44, 0x08, 0x66, 0xc7, 0x44, 0x0c, 0x00, 0x00, 0x00, 0x00, - 0x5a, 0xb4, 0x42, 0xf8, 0xcd, 0x13, 0x72, 0x13, 0x01, 0x6c, 0x04, 0x66, 0x31, 0xdb, 0x66, 0xff, - 0x44, 0x08, 0x0f, 0x90, 0xc3, 0x66, 0x01, 0x5c, 0x0c, 0xe2, 0xe6, 0x61, 0xc3, 0x17, 0x00, 0x4b, - 0x7d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xcf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, - 0x93, 0xcf, 0x00, 0x46, 0x46, 0x46, 0x46, 0x81, 0xc6, 0x30, 0x4f, 0x68, 0x00, 0xb8, 0x07, 0x26, - 0x89, 0x36, 0x00, 0x00, 0xfb, 0xf4, 0xeb, 0xfd, 0xb8, 0x10, 0x00, 0x00, 0x00, 0x8e, 0xd8, 0x8e, - 0xc0, 0x8e, 0xe0, 0x8e, 0xe8, 0x8e, 0xd0, 0x81, 0xe2, 0xff, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x52, - 0x68, 0x69, 0x3e, 0x00, 0x00, 0x68, 0x00, 0x0b, 0x07, 0x00, 0xe8, 0x61, 0x82, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xaa, - 0xfc, 0x30, 0xc0, 0xbf, 0xff, 0x0a, 0x07, 0x00, 0xb9, 0xff, 0x0a, 0x07, 0x00, 0x81, 0xe9, 0xff, - 0x0a, 0x07, 0x00, 0xf3, 0xaa, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x57, 0x56, 0x0f, 0xb6, 0x74, 0x24, - 0x14, 0x8b, 0x7c, 0x24, 0x18, 0xff, 0x74, 0x24, 0x10, 0xff, 0x74, 0x24, 0x10, 0x68, 0x00, 0xf0, - 0x00, 0x00, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0xbc, 0x00, 0xf0, 0x00, 0x00, 0x31, - 0xed, 0x57, 0x56, 0x6a, 0x00, 0x68, 0x00, 0xf0, 0x00, 0x00, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x8b, - 0x54, 0x24, 0x1c, 0xb8, 0xfd, 0xff, 0xff, 0xff, 0x83, 0xfa, 0x12, 0x0f, 0x82, 0xa2, 0x00, 0x00, - 0x00, 0x8b, 0x4c, 0x24, 0x18, 0x80, 0x39, 0x1f, 0x0f, 0x85, 0x95, 0x00, 0x00, 0x00, 0x80, 0x79, - 0x01, 0x8b, 0x0f, 0x85, 0x8b, 0x00, 0x00, 0x00, 0x80, 0x79, 0x02, 0x08, 0x0f, 0x85, 0x81, 0x00, - 0x00, 0x00, 0x0f, 0xb6, 0x59, 0x03, 0x83, 0xfb, 0x1f, 0x77, 0x78, 0x8d, 0x71, 0x0a, 0xf6, 0xc3, - 0x04, 0x74, 0x0e, 0x0f, 0xb7, 0x3e, 0x8d, 0x6a, 0xf4, 0x39, 0xfd, 0x72, 0x66, 0x8d, 0x74, 0x3e, - 0x02, 0xf6, 0xc3, 0x08, 0x75, 0x04, 0x89, 0xf7, 0xeb, 0x13, 0x89, 0xf5, 0x29, 0xcd, 0x39, 0xd5, - 0x73, 0x51, 0x8d, 0x7e, 0x01, 0x45, 0x80, 0x3e, 0x00, 0x89, 0xfe, 0x75, 0xf1, 0x80, 0xfb, 0x10, - 0x73, 0x04, 0x89, 0xfd, 0xeb, 0x13, 0x89, 0xfe, 0x29, 0xce, 0x39, 0xd6, 0x73, 0x35, 0x8d, 0x6f, - 0x01, 0x46, 0x80, 0x3f, 0x00, 0x89, 0xef, 0x75, 0xf1, 0x83, 0xe3, 0x02, 0x01, 0xeb, 0x01, 0xd1, - 0x29, 0xd9, 0x83, 0xf9, 0x08, 0x7c, 0x1c, 0x83, 0xc1, 0xf8, 0x51, 0x53, 0xff, 0x74, 0x24, 0x1c, - 0xe8, 0x13, 0x00, 0x00, 0x00, 0x83, 0xc4, 0x0c, 0x31, 0xc9, 0x85, 0xc0, 0x0f, 0x94, 0xc1, 0x8d, - 0x44, 0x49, 0xfd, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x81, 0xec, 0x38, 0x06, - 0x00, 0x00, 0x8b, 0x84, 0x24, 0x4c, 0x06, 0x00, 0x00, 0x8b, 0x8c, 0x24, 0x50, 0x06, 0x00, 0x00, - 0x8d, 0x54, 0x24, 0x30, 0x89, 0x4a, 0xe4, 0x03, 0x8c, 0x24, 0x54, 0x06, 0x00, 0x00, 0x89, 0x4a, - 0xe8, 0x31, 0xc9, 0x89, 0x4a, 0xec, 0x89, 0x4a, 0xf0, 0x89, 0x4a, 0xf4, 0x89, 0x42, 0xfc, 0x89, - 0x42, 0xf8, 0x8b, 0x54, 0x24, 0x20, 0x85, 0xd2, 0x7e, 0x0a, 0x8b, 0x44, 0x24, 0x1c, 0x89, 0x44, - 0x24, 0x04, 0xeb, 0x4a, 0x8b, 0x74, 0x24, 0x14, 0x8b, 0x44, 0x24, 0x18, 0x8b, 0x4c, 0x24, 0x1c, - 0x89, 0x4c, 0x24, 0x04, 0x89, 0xd1, 0x39, 0xc6, 0x74, 0x1e, 0x8d, 0x56, 0x01, 0x89, 0x54, 0x24, - 0x14, 0x0f, 0xb6, 0x36, 0xd3, 0xe6, 0x8b, 0x7c, 0x24, 0x04, 0x09, 0xf7, 0x89, 0x7c, 0x24, 0x04, - 0x89, 0x7c, 0x24, 0x1c, 0x89, 0xd6, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, 0x01, 0x00, 0x00, 0x00, - 0x8d, 0x51, 0x08, 0x89, 0x54, 0x24, 0x20, 0x83, 0xf9, 0xf9, 0x89, 0xd1, 0x7c, 0xc8, 0x8b, 0x6c, - 0x24, 0x04, 0xd1, 0xed, 0x89, 0x6c, 0x24, 0x1c, 0x8d, 0x4a, 0xff, 0x89, 0x4c, 0x24, 0x20, 0x83, - 0xf9, 0x01, 0x77, 0x41, 0x8b, 0x44, 0x24, 0x14, 0x8b, 0x74, 0x24, 0x18, 0x83, 0xc2, 0xf7, 0x8d, - 0x4a, 0x08, 0x39, 0xf0, 0x74, 0x16, 0x8d, 0x78, 0x01, 0x89, 0x7c, 0x24, 0x14, 0x0f, 0xb6, 0x18, - 0xd3, 0xe3, 0x09, 0xdd, 0x89, 0x6c, 0x24, 0x1c, 0x89, 0xf8, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, - 0x01, 0x00, 0x00, 0x00, 0x83, 0xc2, 0x10, 0x89, 0x54, 0x24, 0x20, 0x83, 0xf9, 0xfa, 0x89, 0xca, - 0x7c, 0xcd, 0x83, 0xc1, 0x08, 0x89, 0xee, 0x83, 0xe6, 0x03, 0xc1, 0xed, 0x02, 0x89, 0x6c, 0x24, - 0x1c, 0x8d, 0x51, 0xfe, 0x89, 0x54, 0x24, 0x20, 0xb8, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x24, 0xb5, - 0x28, 0x0a, 0x07, 0x00, 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x54, 0x24, 0x18, 0x29, 0xca, 0x83, 0xfa, - 0x04, 0x0f, 0x8c, 0x47, 0x05, 0x00, 0x00, 0x0f, 0xb7, 0x19, 0x0f, 0xb7, 0x51, 0x02, 0x66, 0x31, - 0xda, 0x66, 0x83, 0xfa, 0xff, 0x0f, 0x85, 0x33, 0x05, 0x00, 0x00, 0x83, 0xc1, 0x04, 0x89, 0x4c, - 0x24, 0x14, 0x85, 0xdb, 0x74, 0x1d, 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x54, 0x24, 0x2c, 0x8d, 0x71, - 0x01, 0x8d, 0x7a, 0x01, 0x4b, 0x89, 0x74, 0x24, 0x14, 0x8a, 0x09, 0x89, 0x7c, 0x24, 0x2c, 0x88, - 0x0a, 0x75, 0xe3, 0x31, 0xc0, 0x89, 0x44, 0x24, 0x1c, 0x89, 0x44, 0x24, 0x20, 0xe9, 0xd8, 0x00, - 0x00, 0x00, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7, 0x44, 0x04, 0x50, 0x00, 0x00, 0x83, 0xc0, - 0x02, 0x75, 0xf4, 0xc7, 0x44, 0x24, 0x3e, 0x18, 0x00, 0x98, 0x00, 0x66, 0xc7, 0x44, 0x24, 0x42, - 0x70, 0x00, 0xb8, 0xe8, 0xff, 0xff, 0xff, 0x8d, 0x88, 0x18, 0x01, 0x00, 0x00, 0x66, 0x89, 0x8c, - 0x44, 0x80, 0x00, 0x00, 0x00, 0x40, 0x75, 0xef, 0x31, 0xc0, 0x66, 0x89, 0x84, 0x44, 0x80, 0x00, - 0x00, 0x00, 0x40, 0x3d, 0x90, 0x00, 0x00, 0x00, 0x75, 0xf0, 0xb8, 0xf8, 0xff, 0xff, 0xff, 0x8d, - 0x88, 0x20, 0x01, 0x00, 0x00, 0x66, 0x89, 0x8c, 0x44, 0xb0, 0x01, 0x00, 0x00, 0x40, 0x75, 0xef, - 0xb8, 0x90, 0xff, 0xff, 0xff, 0x8d, 0x88, 0x00, 0x01, 0x00, 0x00, 0x66, 0x89, 0x8c, 0x44, 0x90, - 0x02, 0x00, 0x00, 0x40, 0x75, 0xef, 0xc7, 0x84, 0x24, 0x90, 0x02, 0x00, 0x00, 0x1d, 0x01, 0x00, - 0x00, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7, 0x84, 0x04, 0xb4, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x83, 0xc0, 0x02, 0x75, 0xf1, 0x66, 0xc7, 0x84, 0x24, 0x9e, 0x02, 0x00, 0x00, 0x20, 0x00, 0x31, - 0xc0, 0x66, 0x89, 0x84, 0x44, 0xb4, 0x02, 0x00, 0x00, 0x40, 0x83, 0xf8, 0x20, 0x75, 0xf2, 0xc7, - 0x84, 0x24, 0xf4, 0x04, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x8d, 0x4c, 0x24, 0x14, 0x8d, 0x54, - 0x24, 0x30, 0x8d, 0x84, 0x24, 0x94, 0x02, 0x00, 0x00, 0x50, 0xe8, 0x91, 0x04, 0x00, 0x00, 0x83, - 0xc4, 0x04, 0x85, 0xc0, 0x0f, 0x85, 0x24, 0x04, 0x00, 0x00, 0xf6, 0x44, 0x24, 0x04, 0x01, 0x0f, - 0x84, 0xed, 0xfd, 0xff, 0xff, 0xe9, 0xfc, 0x03, 0x00, 0x00, 0x83, 0xfa, 0x04, 0x77, 0x45, 0x89, - 0xc8, 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x74, 0x24, 0x18, 0x83, 0xc0, 0xf6, 0x8d, 0x50, 0x08, 0x39, - 0xf1, 0x74, 0x18, 0x8d, 0x79, 0x01, 0x89, 0x7c, 0x24, 0x14, 0x0f, 0xb6, 0x19, 0x89, 0xd1, 0xd3, - 0xe3, 0x09, 0xdd, 0x89, 0x6c, 0x24, 0x1c, 0x89, 0xf9, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, 0x01, - 0x00, 0x00, 0x00, 0x83, 0xc0, 0x10, 0x89, 0x44, 0x24, 0x20, 0x83, 0xfa, 0xfd, 0x89, 0xd0, 0x7c, - 0xcb, 0x83, 0xc2, 0x08, 0x89, 0xee, 0xc1, 0xee, 0x05, 0x89, 0x74, 0x24, 0x1c, 0x8d, 0x5a, 0xfb, - 0x89, 0x5c, 0x24, 0x20, 0x83, 0xfb, 0x04, 0x77, 0x47, 0x8b, 0x4c, 0x24, 0x14, 0x8b, 0x44, 0x24, - 0x18, 0x89, 0x04, 0x24, 0x83, 0xc2, 0xf3, 0x8d, 0x5a, 0x08, 0x3b, 0x0c, 0x24, 0x74, 0x18, 0x8d, - 0x41, 0x01, 0x89, 0x44, 0x24, 0x14, 0x0f, 0xb6, 0x39, 0x89, 0xd9, 0xd3, 0xe7, 0x09, 0xfe, 0x89, - 0x74, 0x24, 0x1c, 0x89, 0xc1, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, 0x01, 0x00, 0x00, 0x00, 0x83, - 0xc2, 0x10, 0x89, 0x54, 0x24, 0x20, 0x83, 0xfb, 0xfd, 0x89, 0xda, 0x7c, 0xca, 0x83, 0xc3, 0x08, - 0x89, 0xf0, 0xc1, 0xe8, 0x05, 0x89, 0x04, 0x24, 0x89, 0x44, 0x24, 0x1c, 0x8d, 0x43, 0xfb, 0x89, - 0x44, 0x24, 0x20, 0x83, 0xf8, 0x03, 0x77, 0x51, 0x89, 0x74, 0x24, 0x08, 0x8b, 0x7c, 0x24, 0x14, - 0x8b, 0x74, 0x24, 0x18, 0x83, 0xc3, 0xf3, 0x8d, 0x43, 0x08, 0x39, 0xf7, 0x74, 0x1e, 0x8d, 0x57, - 0x01, 0x89, 0x54, 0x24, 0x14, 0x0f, 0xb6, 0x3f, 0x89, 0xc1, 0xd3, 0xe7, 0x8b, 0x0c, 0x24, 0x09, - 0xf9, 0x89, 0x0c, 0x24, 0x89, 0x4c, 0x24, 0x1c, 0x89, 0xd7, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, - 0x01, 0x00, 0x00, 0x00, 0x83, 0xc3, 0x10, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xf8, 0xfc, 0x89, 0xc3, - 0x7c, 0xc5, 0x83, 0xc0, 0x08, 0x8b, 0x74, 0x24, 0x08, 0x83, 0xe5, 0x1f, 0x8b, 0x14, 0x24, 0xc1, - 0xea, 0x04, 0x89, 0x54, 0x24, 0x1c, 0x83, 0xc0, 0xfc, 0x89, 0x44, 0x24, 0x20, 0x83, 0xfd, 0x1d, - 0xc7, 0x44, 0x24, 0x10, 0xfd, 0xff, 0xff, 0xff, 0x0f, 0x87, 0xdc, 0x02, 0x00, 0x00, 0x83, 0xe6, - 0x1f, 0x83, 0xfe, 0x1d, 0x0f, 0x87, 0xd0, 0x02, 0x00, 0x00, 0x81, 0xc5, 0x01, 0x01, 0x00, 0x00, - 0x89, 0x6c, 0x24, 0x0c, 0x46, 0x89, 0x74, 0x24, 0x08, 0x83, 0x24, 0x24, 0x0f, 0xb9, 0xed, 0xff, - 0xff, 0xff, 0xc6, 0x84, 0x0c, 0x0b, 0x05, 0x00, 0x00, 0x00, 0x41, 0x75, 0xf5, 0x83, 0x04, 0x24, - 0x03, 0x8b, 0x5c, 0x24, 0x14, 0x8b, 0x74, 0x24, 0x18, 0x31, 0xed, 0x83, 0xf8, 0x02, 0x7f, 0x36, - 0x89, 0xdf, 0x39, 0xf7, 0x74, 0x18, 0x8d, 0x5f, 0x01, 0x89, 0x5c, 0x24, 0x14, 0x0f, 0xb6, 0x3f, - 0x89, 0xc1, 0xd3, 0xe7, 0x09, 0xfa, 0x89, 0x54, 0x24, 0x1c, 0x89, 0xdf, 0xeb, 0x08, 0xc7, 0x44, - 0x24, 0x24, 0x01, 0x00, 0x00, 0x00, 0x8d, 0x48, 0x08, 0x89, 0x4c, 0x24, 0x20, 0x83, 0xf8, 0xfb, - 0x89, 0xc8, 0x7c, 0xce, 0xeb, 0x02, 0x89, 0xc1, 0x89, 0xd0, 0xc1, 0xe8, 0x03, 0x89, 0x44, 0x24, - 0x1c, 0x83, 0xc1, 0xfd, 0x89, 0x4c, 0x24, 0x20, 0x80, 0xe2, 0x07, 0x0f, 0xb6, 0xbd, 0xec, 0x0a, - 0x07, 0x00, 0x88, 0x94, 0x3c, 0xf8, 0x04, 0x00, 0x00, 0x3b, 0x2c, 0x24, 0x8d, 0x6d, 0x01, 0x89, - 0xc2, 0x89, 0xc8, 0x75, 0x96, 0x8d, 0x4c, 0x24, 0x30, 0x8d, 0x94, 0x24, 0xf8, 0x04, 0x00, 0x00, - 0x6a, 0x13, 0xe8, 0x07, 0x04, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0, 0x0f, 0x85, 0x14, 0x02, - 0x00, 0x00, 0x83, 0xbc, 0x24, 0x90, 0x02, 0x00, 0x00, 0xff, 0x0f, 0x84, 0x0a, 0x02, 0x00, 0x00, - 0x8b, 0x5c, 0x24, 0x0c, 0x8b, 0x44, 0x24, 0x08, 0x8d, 0x34, 0x18, 0x31, 0xff, 0x8d, 0x4c, 0x24, - 0x14, 0x8d, 0x54, 0x24, 0x30, 0xe8, 0x81, 0x03, 0x00, 0x00, 0x3b, 0x84, 0x24, 0x90, 0x02, 0x00, - 0x00, 0x0f, 0x8f, 0xe3, 0x01, 0x00, 0x00, 0x83, 0xf8, 0x12, 0x0f, 0x84, 0xb4, 0x00, 0x00, 0x00, - 0x83, 0xf8, 0x11, 0x74, 0x61, 0x83, 0xf8, 0x10, 0x0f, 0x85, 0xf0, 0x00, 0x00, 0x00, 0x85, 0xff, - 0x0f, 0x84, 0xc4, 0x01, 0x00, 0x00, 0x8b, 0x6c, 0x24, 0x20, 0x83, 0xfd, 0x02, 0x0f, 0x8d, 0x1a, - 0x01, 0x00, 0x00, 0x8b, 0x5c, 0x24, 0x14, 0x8b, 0x44, 0x24, 0x18, 0x8b, 0x54, 0x24, 0x1c, 0x89, - 0xe9, 0x39, 0xc3, 0x74, 0x16, 0x8d, 0x6b, 0x01, 0x89, 0x6c, 0x24, 0x14, 0x0f, 0xb6, 0x1b, 0xd3, - 0xe3, 0x09, 0xda, 0x89, 0x54, 0x24, 0x1c, 0x89, 0xeb, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, 0x01, - 0x00, 0x00, 0x00, 0x8d, 0x69, 0x08, 0x89, 0x6c, 0x24, 0x20, 0x83, 0xf9, 0xfa, 0x89, 0xe9, 0x7c, - 0xd0, 0xe9, 0xdb, 0x00, 0x00, 0x00, 0x8b, 0x5c, 0x24, 0x20, 0x83, 0xfb, 0x03, 0x0f, 0x8d, 0x90, - 0x00, 0x00, 0x00, 0x8b, 0x6c, 0x24, 0x14, 0x8b, 0x54, 0x24, 0x18, 0x8b, 0x44, 0x24, 0x1c, 0x89, - 0xd9, 0x39, 0xd5, 0x74, 0x17, 0x8d, 0x5d, 0x01, 0x89, 0x5c, 0x24, 0x14, 0x0f, 0xb6, 0x6d, 0x00, - 0xd3, 0xe5, 0x09, 0xe8, 0x89, 0x44, 0x24, 0x1c, 0x89, 0xdd, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, - 0x01, 0x00, 0x00, 0x00, 0x8d, 0x59, 0x08, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xf9, 0xfb, 0x89, 0xd9, - 0x7c, 0xcf, 0xeb, 0x53, 0x8b, 0x5c, 0x24, 0x20, 0x83, 0xfb, 0x07, 0x7d, 0x62, 0x8b, 0x6c, 0x24, - 0x14, 0x8b, 0x54, 0x24, 0x18, 0x8b, 0x44, 0x24, 0x1c, 0x89, 0xd9, 0x39, 0xd5, 0x74, 0x17, 0x8d, - 0x5d, 0x01, 0x89, 0x5c, 0x24, 0x14, 0x0f, 0xb6, 0x6d, 0x00, 0xd3, 0xe5, 0x09, 0xe8, 0x89, 0x44, - 0x24, 0x1c, 0x89, 0xdd, 0xeb, 0x08, 0xc7, 0x44, 0x24, 0x24, 0x01, 0x00, 0x00, 0x00, 0x8d, 0x59, - 0x08, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xf9, 0xff, 0x89, 0xd9, 0x7c, 0xcf, 0xeb, 0x25, 0x31, 0xc9, - 0x41, 0xeb, 0x63, 0x8b, 0x44, 0x24, 0x1c, 0x89, 0xc1, 0x83, 0xe1, 0x07, 0xc1, 0xe8, 0x03, 0x89, - 0x44, 0x24, 0x1c, 0x83, 0xc3, 0xfd, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xc1, 0x03, 0xeb, 0x1a, 0x8b, - 0x44, 0x24, 0x1c, 0x89, 0xc1, 0x83, 0xe1, 0x7f, 0xc1, 0xe8, 0x07, 0x89, 0x44, 0x24, 0x1c, 0x83, - 0xc3, 0xf9, 0x89, 0x5c, 0x24, 0x20, 0x83, 0xc1, 0x0b, 0x31, 0xc0, 0xeb, 0x25, 0x8b, 0x54, 0x24, - 0x1c, 0x8d, 0x84, 0x24, 0xf8, 0x04, 0x00, 0x00, 0x8a, 0x44, 0x07, 0xff, 0x89, 0xd1, 0x83, 0xe1, - 0x03, 0xc1, 0xea, 0x02, 0x89, 0x54, 0x24, 0x1c, 0x83, 0xc5, 0xfe, 0x89, 0x6c, 0x24, 0x20, 0x83, - 0xc1, 0x03, 0x8b, 0x5c, 0x24, 0x0c, 0x89, 0xf2, 0x29, 0xfa, 0x39, 0xd1, 0x77, 0x6c, 0x88, 0x84, - 0x3c, 0xf8, 0x04, 0x00, 0x00, 0x47, 0x49, 0x75, 0xf5, 0x39, 0xf7, 0x0f, 0x82, 0x5c, 0xfe, 0xff, - 0xff, 0x80, 0xbc, 0x24, 0xf8, 0x05, 0x00, 0x00, 0x00, 0x74, 0x4f, 0x8d, 0x4c, 0x24, 0x30, 0x8d, - 0x94, 0x24, 0xf8, 0x04, 0x00, 0x00, 0x53, 0xe8, 0x22, 0x02, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, - 0xc0, 0x75, 0x33, 0x8d, 0x94, 0x1c, 0xf8, 0x04, 0x00, 0x00, 0x8d, 0x8c, 0x24, 0x94, 0x02, 0x00, - 0x00, 0xff, 0x74, 0x24, 0x08, 0xe8, 0x04, 0x02, 0x00, 0x00, 0x83, 0xc4, 0x04, 0x85, 0xc0, 0x75, - 0x1d, 0xe9, 0xd4, 0xfb, 0xff, 0xff, 0x31, 0xc0, 0x83, 0x7c, 0x24, 0x24, 0x00, 0x0f, 0x94, 0xc0, - 0x8d, 0x44, 0x40, 0xfd, 0xeb, 0x08, 0x89, 0x44, 0x24, 0x10, 0x8b, 0x44, 0x24, 0x10, 0x81, 0xc4, - 0x38, 0x06, 0x00, 0x00, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53, 0x57, 0x56, 0x89, 0xce, 0x8b, - 0x59, 0x0c, 0x39, 0xd3, 0x7d, 0x2d, 0x8b, 0x0e, 0x8b, 0x46, 0x04, 0x39, 0xc1, 0x74, 0x13, 0x8d, - 0x79, 0x01, 0x89, 0x3e, 0x0f, 0xb6, 0x29, 0x89, 0xd9, 0xd3, 0xe5, 0x09, 0x6e, 0x08, 0x89, 0xf9, - 0xeb, 0x07, 0xc7, 0x46, 0x10, 0x01, 0x00, 0x00, 0x00, 0x83, 0xc3, 0x08, 0x89, 0x5e, 0x0c, 0x39, - 0xd3, 0x7c, 0xd8, 0x8b, 0x7e, 0x08, 0x31, 0xc0, 0x48, 0x89, 0xd1, 0xd3, 0xe0, 0xf7, 0xd0, 0x21, - 0xf8, 0xd3, 0xef, 0x89, 0x7e, 0x08, 0x29, 0xd3, 0x89, 0x5e, 0x0c, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, - 0x55, 0x53, 0x57, 0x56, 0x83, 0xec, 0x08, 0x89, 0xd5, 0x89, 0xcf, 0xe8, 0x1b, 0x01, 0x00, 0x00, - 0x83, 0x7f, 0x10, 0x00, 0x74, 0x0d, 0xb8, 0xfd, 0xff, 0xff, 0xff, 0x83, 0xc4, 0x08, 0x5e, 0x5f, - 0x5b, 0x5d, 0xc3, 0x89, 0x2c, 0x24, 0x3d, 0xff, 0x00, 0x00, 0x00, 0x77, 0x10, 0x8b, 0x4f, 0x18, - 0x8d, 0x51, 0x01, 0x89, 0x57, 0x18, 0x88, 0x01, 0xe9, 0xcf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x01, - 0x00, 0x00, 0x0f, 0x84, 0xdc, 0x00, 0x00, 0x00, 0x3b, 0x85, 0x60, 0x02, 0x00, 0x00, 0x7f, 0xc6, - 0x3d, 0x1d, 0x01, 0x00, 0x00, 0x77, 0xbf, 0x8b, 0x4c, 0x24, 0x1c, 0x83, 0xb9, 0x60, 0x02, 0x00, - 0x00, 0xff, 0x74, 0xb2, 0x0f, 0xb7, 0x8c, 0x00, 0x54, 0x08, 0x07, 0x00, 0x89, 0x4c, 0x24, 0x04, - 0x05, 0xff, 0xfe, 0xff, 0xff, 0x31, 0xf6, 0xb9, 0xff, 0x00, 0x00, 0x10, 0x0f, 0xa3, 0xc1, 0x72, - 0x10, 0x0f, 0xb6, 0x90, 0x38, 0x0a, 0x07, 0x00, 0x89, 0xf9, 0xe8, 0x1a, 0xff, 0xff, 0xff, 0x89, - 0xc6, 0x89, 0xf9, 0x8b, 0x5c, 0x24, 0x1c, 0x89, 0xda, 0xe8, 0x8d, 0x00, 0x00, 0x00, 0x3b, 0x83, - 0x60, 0x02, 0x00, 0x00, 0x0f, 0x8f, 0x6c, 0xff, 0xff, 0xff, 0x89, 0xc1, 0x83, 0xf8, 0x1d, 0x0f, - 0x87, 0x61, 0xff, 0xff, 0xff, 0x0f, 0xb7, 0xac, 0x09, 0xb0, 0x0a, 0x07, 0x00, 0x31, 0xc0, 0x83, - 0xf9, 0x04, 0x72, 0x0e, 0x0f, 0xb6, 0x91, 0x92, 0x0a, 0x07, 0x00, 0x89, 0xf9, 0xe8, 0xd7, 0xfe, - 0xff, 0xff, 0x01, 0xe8, 0x8b, 0x4f, 0x18, 0x89, 0xca, 0x2b, 0x57, 0x14, 0x39, 0xd0, 0x0f, 0x8f, - 0x32, 0xff, 0xff, 0xff, 0x03, 0x74, 0x24, 0x04, 0x85, 0xf6, 0x7e, 0x18, 0xf7, 0xd8, 0x31, 0xc9, - 0x8b, 0x57, 0x18, 0x8d, 0x2c, 0x0a, 0x8a, 0x1c, 0x28, 0x88, 0x1c, 0x0a, 0x41, 0x39, 0xce, 0x75, - 0xef, 0x8b, 0x4f, 0x18, 0x01, 0xf1, 0x89, 0x4f, 0x18, 0x8b, 0x2c, 0x24, 0x89, 0xf9, 0x89, 0xea, - 0xe8, 0x16, 0x00, 0x00, 0x00, 0x83, 0x7f, 0x10, 0x00, 0x0f, 0x84, 0x07, 0xff, 0xff, 0xff, 0xe9, - 0xf2, 0xfe, 0xff, 0xff, 0x31, 0xc0, 0xe9, 0xf0, 0xfe, 0xff, 0xff, 0x55, 0x53, 0x57, 0x56, 0x50, - 0x89, 0xd5, 0x89, 0xcb, 0x31, 0xd2, 0x42, 0xe8, 0x6d, 0xfe, 0xff, 0xff, 0x89, 0xc7, 0x0f, 0xb7, - 0x45, 0x02, 0x31, 0xf6, 0x39, 0xc7, 0x89, 0x2c, 0x24, 0x72, 0x21, 0x83, 0xc5, 0x04, 0x31, 0xf6, - 0x01, 0xc6, 0x29, 0xc7, 0x89, 0xd9, 0x31, 0xd2, 0x42, 0xe8, 0x4b, 0xfe, 0xff, 0xff, 0x8d, 0x3c, - 0x78, 0x0f, 0xb7, 0x45, 0x00, 0x83, 0xc5, 0x02, 0x39, 0xc7, 0x7d, 0xe4, 0x01, 0xfe, 0x8b, 0x04, - 0x24, 0x0f, 0xb7, 0x44, 0x70, 0x20, 0x83, 0xc4, 0x04, 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x55, 0x53, - 0x57, 0x56, 0x83, 0xec, 0x24, 0x8b, 0x7c, 0x24, 0x38, 0xb8, 0xe0, 0xff, 0xff, 0xff, 0x66, 0xc7, - 0x44, 0x01, 0x20, 0x00, 0x00, 0x83, 0xc0, 0x02, 0x75, 0xf4, 0xc7, 0x81, 0x60, 0x02, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0x85, 0xff, 0x74, 0x1b, 0x31, 0xc0, 0x80, 0x3c, 0x02, 0x00, 0x74, 0x0e, - 0x89, 0x81, 0x60, 0x02, 0x00, 0x00, 0x0f, 0xb6, 0x34, 0x02, 0x66, 0xff, 0x04, 0x71, 0x40, 0x39, - 0xc7, 0x75, 0xe7, 0x31, 0xff, 0x31, 0xdb, 0x43, 0xbd, 0xe0, 0xff, 0xff, 0xff, 0xb8, 0xfd, 0xff, - 0xff, 0xff, 0x0f, 0xb7, 0x74, 0x29, 0x20, 0x29, 0xf3, 0x72, 0x72, 0x01, 0xdb, 0x66, 0x89, 0x7c, - 0x2c, 0x24, 0x01, 0xf7, 0x83, 0xc5, 0x02, 0x75, 0xe9, 0x83, 0xff, 0x02, 0x0f, 0x93, 0x44, 0x24, - 0x03, 0x85, 0xdb, 0x0f, 0x95, 0xc3, 0x84, 0x5c, 0x24, 0x03, 0x75, 0x51, 0x83, 0xff, 0x01, 0x75, - 0x07, 0x66, 0x83, 0x79, 0x02, 0x01, 0x75, 0x45, 0x8b, 0x5c, 0x24, 0x38, 0x85, 0xdb, 0x74, 0x25, - 0x31, 0xc0, 0x0f, 0xb6, 0x34, 0x02, 0x85, 0xf6, 0x74, 0x16, 0x0f, 0xb7, 0x5c, 0x74, 0x04, 0x8d, - 0x6b, 0x01, 0x66, 0x89, 0x6c, 0x74, 0x04, 0x66, 0x89, 0x44, 0x59, 0x20, 0x8b, 0x5c, 0x24, 0x38, - 0x40, 0x39, 0xc3, 0x75, 0xdd, 0x31, 0xc0, 0x83, 0xff, 0x01, 0x75, 0x11, 0x66, 0xc7, 0x41, 0x02, - 0x02, 0x00, 0x8b, 0x91, 0x60, 0x02, 0x00, 0x00, 0x42, 0x66, 0x89, 0x51, 0x22, 0x83, 0xc4, 0x24, - 0x5e, 0x5f, 0x5b, 0x5d, 0xc3, 0x00, 0x00, 0x00, 0x14, 0x02, 0x07, 0x00, 0x72, 0x02, 0x07, 0x00, - 0x5a, 0x03, 0x07, 0x00, 0x6e, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, - 0x05, 0x05, 0x05, 0x05, 0x00, 0x7f, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, - 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x0f, 0x00, 0x11, 0x00, 0x13, 0x00, - 0x17, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x2b, 0x00, 0x33, 0x00, 0x3b, 0x00, 0x43, 0x00, - 0x53, 0x00, 0x63, 0x00, 0x73, 0x00, 0x83, 0x00, 0xa3, 0x00, 0xc3, 0x00, 0xe3, 0x00, 0x02, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, - 0x06, 0x06, 0x07, 0x07, 0x08, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0b, 0x0b, 0x0c, 0x0c, 0x0d, 0x0d, - 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07, 0x00, 0x09, 0x00, 0x0d, 0x00, - 0x11, 0x00, 0x19, 0x00, 0x21, 0x00, 0x31, 0x00, 0x41, 0x00, 0x61, 0x00, 0x81, 0x00, 0xc1, 0x00, - 0x01, 0x01, 0x81, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x01, 0x06, 0x01, 0x08, 0x01, 0x0c, - 0x01, 0x10, 0x01, 0x18, 0x01, 0x20, 0x01, 0x30, 0x01, 0x40, 0x01, 0x60, 0x10, 0x11, 0x12, 0x00, - 0x08, 0x07, 0x09, 0x06, 0x0a, 0x05, 0x0b, 0x04, 0x0c, 0x03, 0x0d, 0x02, 0x0e, 0x01, 0x0f, 0x90, - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x85, 0x7c, 0x0d, 0x5c, 0x53, 0x47, - 0xb6, 0xf8, 0xbd, 0x10, 0x30, 0x62, 0xf4, 0x46, 0x45, 0x0b, 0x8a, 0x35, 0x5a, 0xec, 0xca, 0xd6, - 0x55, 0xa2, 0xb6, 0x05, 0x3f, 0x2a, 0x5f, 0x01, 0xd4, 0x46, 0x03, 0x91, 0xd0, 0xdd, 0x96, 0x52, - 0x2a, 0xa4, 0x81, 0xaa, 0xd0, 0x90, 0xeb, 0x47, 0x15, 0x1b, 0xbc, 0x64, 0xcb, 0x70, 0x7b, 0xfb, - 0xba, 0xad, 0xdd, 0xd7, 0xff, 0xee, 0xf6, 0x6d, 0xbb, 0x6d, 0x77, 0xed, 0x7e, 0xe9, 0x6e, 0x5f, - 0xfd, 0xaa, 0x1f, 0x09, 0xb8, 0x01, 0xd4, 0x55, 0x50, 0x57, 0x41, 0x5d, 0xa5, 0xad, 0x6b, 0x2f, - 0x0d, 0xaf, 0x1b, 0xc0, 0x02, 0xa2, 0x25, 0xff, 0x73, 0xe6, 0x26, 0x08, 0xed, 0xee, 0x7b, 0xfe, - 0x4c, 0x72, 0x67, 0xe6, 0xcc, 0x99, 0x33, 0x67, 0xce, 0xe7, 0xcc, 0x5c, 0xee, 0x26, 0xba, 0x8f, - 0x6f, 0x5d, 0xa2, 0x62, 0x0e, 0x25, 0xfd, 0x54, 0xc5, 0x54, 0x77, 0xe2, 0x63, 0xef, 0x6f, 0x39, - 0x76, 0xca, 0xef, 0xfc, 0x0c, 0xf3, 0xe5, 0x03, 0xf0, 0x15, 0xc3, 0x1c, 0xd4, 0x31, 0x0c, 0xf3, - 0x6a, 0xdb, 0xab, 0xee, 0x57, 0x3b, 0x5e, 0x95, 0x5f, 0x6d, 0xe9, 0xcc, 0xd2, 0x32, 0xcc, 0xe9, - 0xd0, 0xbf, 0x3c, 0xf2, 0x0f, 0x8b, 0xd0, 0x15, 0x49, 0x2e, 0x5a, 0x1b, 0x0d, 0x7d, 0x81, 0xf0, - 0x46, 0xc3, 0x00, 0x00, 0x33, 0x92, 0xa1, 0x8f, 0x9c, 0x1c, 0xbc, 0x7b, 0x84, 0xd9, 0xc1, 0x30, - 0xc7, 0xf1, 0xeb, 0x10, 0x13, 0xc6, 0x30, 0xbd, 0xef, 0x73, 0x6c, 0x4c, 0x99, 0xda, 0xb6, 0x0d, - 0xd0, 0x9e, 0x3a, 0xa8, 0x1d, 0x81, 0x93, 0xd3, 0xb9, 0xe3, 0x87, 0xb8, 0xd9, 0x6e, 0xeb, 0xc1, - 0xb7, 0xa0, 0xad, 0x8c, 0x31, 0x9d, 0xd2, 0xbb, 0xef, 0xb5, 0xde, 0x29, 0x63, 0x6c, 0xcc, 0x8e, - 0x53, 0x8f, 0x32, 0x49, 0x6b, 0x58, 0xc4, 0xce, 0x04, 0x18, 0xdd, 0x9b, 0x2a, 0x85, 0x06, 0x8e, - 0x9d, 0x31, 0x88, 0xa4, 0x9e, 0x81, 0x2f, 0x35, 0xf3, 0x6d, 0xa4, 0xdc, 0x61, 0x3f, 0x03, 0x68, - 0xbf, 0xfc, 0x12, 0x5a, 0x47, 0x61, 0xbc, 0xe5, 0xfb, 0x26, 0x10, 0x8e, 0xa8, 0xea, 0x32, 0xe2, - 0x55, 0xbf, 0x12, 0xba, 0x19, 0x46, 0xcc, 0x88, 0x57, 0xbf, 0x77, 0x4b, 0x79, 0xd0, 0xbc, 0x37, - 0x00, 0x0f, 0x1c, 0x1b, 0x71, 0x97, 0xfe, 0x8c, 0x57, 0xf5, 0xe0, 0xcf, 0x0c, 0x0d, 0xfc, 0x98, - 0x2d, 0xf9, 0x79, 0x5f, 0x2e, 0xed, 0xfe, 0x57, 0x83, 0xd1, 0x19, 0x7c, 0x99, 0xd7, 0x4d, 0x87, - 0x6a, 0x79, 0xc4, 0x4a, 0x1e, 0xf4, 0x77, 0x3f, 0x62, 0x15, 0x1f, 0x1c, 0xe8, 0xe6, 0x3e, 0xe4, - 0xde, 0x1d, 0x33, 0xd3, 0xfa, 0xb6, 0xb5, 0xc0, 0x5a, 0x68, 0x7d, 0xda, 0xfa, 0x23, 0xeb, 0x0f, - 0xad, 0x4f, 0x5a, 0x9f, 0xc0, 0x36, 0x7f, 0xf7, 0x9d, 0xbf, 0x32, 0x83, 0xf7, 0x60, 0x6f, 0x75, - 0x3f, 0x67, 0x95, 0x8a, 0xe3, 0xe7, 0x5a, 0x4d, 0x56, 0xb3, 0x35, 0xc7, 0x9a, 0x6b, 0xb5, 0x58, - 0xf3, 0xad, 0x79, 0xd6, 0x5f, 0xdc, 0x1f, 0xc9, 0xbd, 0xc3, 0xed, 0x51, 0x7a, 0x3c, 0x62, 0xe5, - 0xd8, 0xa9, 0x77, 0xe9, 0xcf, 0xfd, 0xaa, 0x1e, 0x18, 0x58, 0xc3, 0xe2, 0xc0, 0x67, 0xba, 0x63, - 0x18, 0x2b, 0xac, 0xd5, 0x3d, 0x9a, 0x0a, 0x0a, 0x9f, 0x7e, 0xb2, 0xe1, 0xb5, 0xd1, 0xff, 0x98, - 0xff, 0xe5, 0x9f, 0xc2, 0x91, 0xd0, 0xbf, 0x5f, 0xcc, 0xb7, 0x06, 0x22, 0x27, 0xf5, 0xbc, 0x3d, - 0x3f, 0x30, 0x7f, 0x6a, 0x8f, 0x38, 0x05, 0x85, 0x80, 0x4c, 0x99, 0x0a, 0x2c, 0x68, 0x8c, 0xc0, - 0xe7, 0x69, 0xf0, 0x24, 0xae, 0x8b, 0x57, 0x35, 0x46, 0x4c, 0xea, 0x51, 0x3a, 0x00, 0xbf, 0x92, - 0x7a, 0x29, 0xbf, 0x52, 0xe8, 0xcf, 0x8c, 0xec, 0xde, 0x20, 0xbf, 0x9e, 0xef, 0xf9, 0xf7, 0xfc, - 0x72, 0xf5, 0x7c, 0x6b, 0x69, 0xbc, 0x91, 0x6b, 0x7a, 0x19, 0x6f, 0x64, 0x2e, 0x7e, 0x59, 0x7a, - 0x19, 0x6b, 0xf2, 0xd4, 0x49, 0x3d, 0x8e, 0xf9, 0xc8, 0x8c, 0xff, 0x66, 0x13, 0xdd, 0x7f, 0x9d, - 0x8a, 0xec, 0x73, 0x74, 0xea, 0xe1, 0xe9, 0x57, 0xb9, 0xbd, 0xb5, 0x0f, 0x5a, 0x7a, 0x0f, 0x32, - 0x61, 0x7f, 0x9d, 0xba, 0x47, 0xe5, 0x88, 0xc2, 0x9e, 0x2a, 0x27, 0xf4, 0x7c, 0x66, 0x90, 0xf2, - 0x28, 0xa9, 0x97, 0xf2, 0x28, 0xa5, 0x97, 0xd3, 0x35, 0x38, 0x4f, 0x01, 0x93, 0x1a, 0xbe, 0xec, - 0xed, 0x01, 0x26, 0x7d, 0x02, 0x4c, 0xba, 0xf2, 0x6a, 0xc3, 0xab, 0x9f, 0xbf, 0xea, 0x7b, 0xf5, - 0x3c, 0x32, 0x49, 0xa4, 0xf3, 0x22, 0x74, 0x8e, 0xce, 0xe5, 0x30, 0x28, 0xc3, 0x38, 0xa6, 0x07, - 0x1e, 0x06, 0x3a, 0x98, 0xc0, 0xc3, 0xb9, 0xf4, 0x1b, 0x2b, 0xe5, 0xf2, 0x2e, 0x86, 0x11, 0x4e, - 0x68, 0x1a, 0xf4, 0xee, 0x86, 0xff, 0x9d, 0x77, 0xf8, 0x4f, 0xd1, 0x0f, 0x90, 0x26, 0xd5, 0x7b, - 0xcc, 0x2d, 0x86, 0x69, 0x00, 0xf6, 0xa8, 0x6e, 0x51, 0xf6, 0x68, 0xe8, 0xcf, 0x8c, 0xe8, 0x5b, - 0x0a, 0x7b, 0xa4, 0x0d, 0xf1, 0xd1, 0x5f, 0xbe, 0xda, 0xfb, 0xef, 0x59, 0xb4, 0xa7, 0x57, 0x11, - 0xa9, 0x50, 0xd3, 0x9d, 0xc0, 0x66, 0x55, 0x60, 0xb3, 0x3a, 0xb0, 0x99, 0x09, 0xdc, 0xcf, 0xdc, - 0x12, 0x4e, 0x44, 0x0e, 0xce, 0xc7, 0xe9, 0xaa, 0x6e, 0xe1, 0xcf, 0xfd, 0x9a, 0x5b, 0xf7, 0xa6, - 0xfb, 0x59, 0xef, 0xb7, 0xa7, 0x3b, 0x27, 0x10, 0x60, 0x98, 0x11, 0x82, 0xf1, 0xef, 0xe5, 0x00, - 0x34, 0xdb, 0x9c, 0x0f, 0xba, 0xad, 0x11, 0x0d, 0xd1, 0x62, 0x95, 0x56, 0xcc, 0xd3, 0x88, 0x05, - 0x6a, 0x91, 0x8f, 0x71, 0x9d, 0x73, 0xcc, 0x77, 0x05, 0x1c, 0xd9, 0x2e, 0x37, 0x57, 0xf3, 0x1f, - 0xb8, 0xec, 0x47, 0xdd, 0x82, 0x7f, 0x26, 0x77, 0xf4, 0xa4, 0xd0, 0x3d, 0x33, 0xa1, 0x49, 0x18, - 0xd0, 0x71, 0xbb, 0x3e, 0x87, 0x6a, 0x57, 0x9f, 0x23, 0x8e, 0xdc, 0x4f, 0x2c, 0x2a, 0xdf, 0x14, - 0x84, 0xfc, 0xa3, 0x52, 0x35, 0x96, 0xdc, 0xdf, 0x98, 0xa9, 0x42, 0xf4, 0xfa, 0x2b, 0xfa, 0x73, - 0x9d, 0x1b, 0x41, 0x9f, 0xb1, 0xf5, 0x0c, 0xb6, 0x5e, 0xe1, 0x6a, 0x9e, 0x83, 0xb2, 0x94, 0x1d, - 0x70, 0x35, 0x71, 0x35, 0xff, 0xc5, 0x22, 0xea, 0x26, 0x40, 0xca, 0x1d, 0xad, 0x87, 0x01, 0x12, - 0x3c, 0xc2, 0xed, 0x99, 0x95, 0x1f, 0x4a, 0xa9, 0x6c, 0x5f, 0x2b, 0xb9, 0x76, 0xfe, 0x26, 0xe1, - 0x65, 0x72, 0x89, 0x78, 0xce, 0xff, 0x93, 0x18, 0xfc, 0xdc, 0x1f, 0xce, 0x37, 0x1a, 0xba, 0x10, - 0xab, 0xcf, 0x20, 0xad, 0x0d, 0xb8, 0xce, 0x72, 0x35, 0xcb, 0x69, 0xf7, 0xc6, 0x91, 0x94, 0xb9, - 0x67, 0x05, 0x81, 0x80, 0x46, 0x47, 0x2e, 0x74, 0x23, 0x1e, 0x4e, 0x40, 0x8b, 0xd2, 0xd7, 0x3e, - 0x0a, 0x21, 0x60, 0x23, 0xd7, 0x7c, 0x65, 0xa4, 0x4d, 0x7f, 0xae, 0xbf, 0x9f, 0xb4, 0xea, 0xcf, - 0xb9, 0xfa, 0x48, 0x03, 0x57, 0xe3, 0x41, 0x05, 0x98, 0x10, 0xa4, 0xbe, 0xf3, 0x23, 0x2c, 0x79, - 0x53, 0xee, 0x61, 0xe4, 0x27, 0x91, 0x8b, 0x8d, 0x06, 0x3f, 0x8a, 0x90, 0x3e, 0xe0, 0x5b, 0xd0, - 0xf9, 0x3a, 0x02, 0x18, 0xfc, 0x1f, 0xcf, 0x24, 0xfe, 0xb9, 0x7f, 0x21, 0x6d, 0xb5, 0x9d, 0xe7, - 0x3b, 0x88, 0x41, 0x26, 0x17, 0xc9, 0x25, 0xd1, 0xe0, 0xaf, 0x85, 0x61, 0xa0, 0xe6, 0x26, 0x0c, - 0xe7, 0x1b, 0x7b, 0x4d, 0x2c, 0x90, 0xf5, 0xcd, 0x62, 0x9e, 0x5f, 0x34, 0x74, 0x91, 0x3c, 0x3f, - 0xf7, 0x7e, 0x3f, 0xcb, 0xbd, 0x7f, 0x0d, 0x3e, 0x0d, 0x2c, 0x29, 0xe8, 0x62, 0xdd, 0x63, 0x9b, - 0xc8, 0x60, 0xff, 0x39, 0xd2, 0xdd, 0xdf, 0x2a, 0x16, 0x68, 0xd9, 0x76, 0xd1, 0x18, 0x3d, 0xf1, - 0x24, 0x69, 0xf5, 0x74, 0xce, 0xf4, 0x0c, 0xce, 0x24, 0xe7, 0x1f, 0x28, 0x88, 0x7e, 0x20, 0x4f, - 0x9b, 0x70, 0x11, 0xfa, 0xc7, 0x5e, 0x17, 0x0b, 0xba, 0x56, 0xf1, 0x9f, 0x60, 0x4f, 0xd6, 0x2d, - 0xe6, 0xe1, 0x52, 0x45, 0x90, 0x85, 0xe4, 0x45, 0x95, 0xd0, 0x31, 0x34, 0xd6, 0x43, 0x2e, 0x93, - 0x53, 0xa4, 0x0d, 0xe4, 0xf7, 0xe9, 0xc2, 0x27, 0x0b, 0x1a, 0x88, 0x87, 0xb4, 0xc0, 0x04, 0xbb, - 0x49, 0x83, 0xab, 0x8f, 0xab, 0xa9, 0x18, 0x0a, 0x04, 0x60, 0xad, 0x1a, 0x23, 0xe9, 0xe4, 0x9e, - 0x85, 0x12, 0x2c, 0xd6, 0xb8, 0x59, 0xed, 0xc3, 0x13, 0x16, 0x02, 0xac, 0xa3, 0x9e, 0x3b, 0x72, - 0x96, 0xb4, 0x9c, 0x97, 0x91, 0x41, 0xf5, 0xbe, 0xff, 0x06, 0x88, 0x31, 0xb3, 0x5a, 0x61, 0x8d, - 0xd7, 0xa8, 0xb8, 0x23, 0x4d, 0xe7, 0xbf, 0x24, 0xe7, 0x3b, 0x13, 0x10, 0x8d, 0x17, 0xf8, 0xd9, - 0x86, 0xb3, 0xed, 0x22, 0xc0, 0x62, 0xa7, 0xa7, 0x03, 0xe1, 0x3d, 0xd0, 0x7e, 0xb1, 0xf3, 0x33, - 0x68, 0x0f, 0xca, 0xd5, 0x8d, 0x01, 0xa1, 0x2b, 0x46, 0x34, 0x68, 0x60, 0x3a, 0xe4, 0x8c, 0xe7, - 0xab, 0x99, 0xe4, 0x24, 0x4c, 0x47, 0xdf, 0xba, 0x28, 0x4f, 0xcb, 0xf6, 0x08, 0xad, 0xc0, 0x5b, - 0xac, 0xeb, 0x27, 0x8e, 0x78, 0x15, 0x3c, 0x0e, 0xcd, 0xd4, 0xfb, 0x41, 0xfa, 0xf4, 0xbd, 0xec, - 0x1d, 0xa1, 0x85, 0x91, 0x76, 0xc4, 0xab, 0xf3, 0x73, 0x72, 0x4d, 0x66, 0xf9, 0x89, 0x6f, 0x02, - 0x01, 0xe1, 0x44, 0xb4, 0x04, 0xb6, 0x5b, 0x34, 0xa9, 0xf4, 0x3d, 0x8b, 0x12, 0xc3, 0xa1, 0x83, - 0x70, 0x8e, 0x21, 0x7e, 0xa9, 0xe4, 0x16, 0x9d, 0xe7, 0x3d, 0x31, 0xe6, 0xa3, 0xb9, 0xa3, 0x06, - 0xed, 0xa1, 0x15, 0x28, 0xb3, 0x19, 0x1e, 0x90, 0x0c, 0xc1, 0xad, 0xe3, 0x8e, 0x5e, 0x14, 0x7a, - 0x66, 0x02, 0x07, 0x32, 0x5a, 0x48, 0x8b, 0x98, 0xa7, 0x26, 0xe7, 0xb9, 0xa3, 0xe7, 0xb8, 0x8c, - 0x56, 0xa8, 0x14, 0xea, 0x75, 0x22, 0xaf, 0xe1, 0x8e, 0x9e, 0x01, 0xe9, 0x41, 0x80, 0x93, 0xa4, - 0x9e, 0x18, 0xbb, 0x12, 0x4e, 0xea, 0x9b, 0x85, 0xc1, 0x15, 0xc7, 0xa9, 0xc1, 0x7b, 0xf9, 0xbf, - 0xe0, 0x9b, 0x1f, 0x43, 0xda, 0x3b, 0xdf, 0xc0, 0xd5, 0x6e, 0x1d, 0xf2, 0x90, 0xeb, 0xdc, 0x1f, - 0xfa, 0x61, 0x11, 0x49, 0xcf, 0xf9, 0x2f, 0xfb, 0x3c, 0x3a, 0xce, 0x30, 0x78, 0x88, 0x42, 0x1a, - 0x5a, 0xff, 0xb4, 0xe2, 0xfb, 0x46, 0x3f, 0xf7, 0xc1, 0xb5, 0xf3, 0x9f, 0x43, 0x3d, 0x69, 0xe7, - 0x0c, 0xbd, 0x20, 0x2d, 0xd8, 0xf6, 0x89, 0x02, 0x70, 0xaa, 0xbf, 0x25, 0x1c, 0x38, 0x66, 0x90, - 0xf5, 0x57, 0xb8, 0xf7, 0x07, 0x59, 0x45, 0x0a, 0xce, 0xb0, 0xe3, 0x78, 0xbf, 0xa4, 0x59, 0x0d, - 0x03, 0x93, 0xd6, 0xfe, 0x56, 0x72, 0xa7, 0xff, 0xbc, 0x68, 0xd0, 0xb2, 0x0d, 0xa0, 0x92, 0x13, - 0x3d, 0xe4, 0x94, 0xc7, 0x37, 0xd3, 0x73, 0x7b, 0x26, 0x69, 0x7a, 0xc0, 0x10, 0xfd, 0x80, 0x51, - 0x9b, 0x70, 0x56, 0x34, 0x76, 0xc5, 0xd6, 0x07, 0x0c, 0x32, 0x7f, 0x14, 0xbb, 0x62, 0xbf, 0x7e, - 0x02, 0xc2, 0x13, 0x5a, 0xf2, 0x10, 0x2b, 0x40, 0x97, 0x81, 0x15, 0x46, 0xed, 0x41, 0x85, 0x15, - 0xa8, 0x63, 0x02, 0xd0, 0x7a, 0xf4, 0xb2, 0xd0, 0x3b, 0xd3, 0x05, 0xb3, 0x6f, 0x87, 0x46, 0xf5, - 0x70, 0x3d, 0x65, 0xc2, 0x90, 0xd0, 0x4f, 0x99, 0x70, 0x9b, 0xb4, 0x27, 0xdc, 0x16, 0x6e, 0xaf, - 0xd8, 0x1c, 0x25, 0x1a, 0xd4, 0xa4, 0xa7, 0xf3, 0xd7, 0x28, 0xee, 0x6e, 0xa8, 0x38, 0x4c, 0x67, - 0x51, 0xf3, 0x53, 0xe4, 0x43, 0x81, 0x9f, 0x9c, 0x02, 0x56, 0x54, 0xc9, 0x62, 0x95, 0x9a, 0x0c, - 0x70, 0x7f, 0xb8, 0xc7, 0x8d, 0xfa, 0x7b, 0xdc, 0x98, 0xdb, 0xce, 0x7d, 0x30, 0x74, 0xfe, 0x0b, - 0xa8, 0x16, 0x81, 0x2f, 0x86, 0xfe, 0x46, 0xc3, 0x8d, 0x11, 0xdc, 0xb8, 0x43, 0xaa, 0xba, 0xfa, - 0x5b, 0xc3, 0x8d, 0xc0, 0x0d, 0x02, 0xcd, 0xef, 0xd7, 0x03, 0x33, 0xfc, 0x2c, 0xcc, 0x4f, 0xe1, - 0xc9, 0x8d, 0x11, 0x3c, 0x69, 0x00, 0x9e, 0x54, 0x69, 0xd9, 0x3b, 0x62, 0x55, 0xf4, 0xc4, 0xdb, - 0xc3, 0x3c, 0x39, 0xfb, 0x40, 0x15, 0xe5, 0x49, 0x13, 0x60, 0x8f, 0x1d, 0x4c, 0xe5, 0x0f, 0x09, - 0x27, 0xb4, 0xa3, 0x98, 0x90, 0x24, 0x56, 0x81, 0xf8, 0xa9, 0xc5, 0x94, 0x68, 0x6e, 0x6f, 0xe3, - 0x72, 0xd6, 0x09, 0xa3, 0x0a, 0x48, 0x1d, 0xf0, 0x46, 0xe4, 0xb5, 0xef, 0x62, 0x20, 0xe4, 0x72, - 0xf3, 0x53, 0x6d, 0x0c, 0xb4, 0x90, 0xf3, 0xb2, 0x4d, 0x0f, 0x3f, 0x97, 0x85, 0x13, 0xaa, 0xf7, - 0xb0, 0x45, 0x2a, 0xb8, 0x61, 0x6d, 0x0c, 0xd7, 0x32, 0x56, 0xb2, 0x3d, 0x8c, 0x78, 0x3c, 0x9d, - 0x2a, 0x2b, 0x59, 0x1d, 0x29, 0x74, 0x70, 0x56, 0x92, 0xae, 0x22, 0x95, 0x6a, 0x62, 0xd6, 0x48, - 0x55, 0x47, 0xca, 0xe2, 0xcb, 0x98, 0x7c, 0xd9, 0x9f, 0x41, 0x7d, 0x46, 0x63, 0x56, 0x3c, 0x93, - 0x06, 0xd8, 0x61, 0x44, 0x86, 0x64, 0xc5, 0x80, 0x1e, 0x76, 0x68, 0x48, 0x56, 0xb4, 0xc7, 0x07, - 0x5d, 0x0b, 0x23, 0xf3, 0xf3, 0xcb, 0x26, 0xcb, 0x2f, 0xf4, 0xa3, 0x30, 0x6b, 0x8e, 0x41, 0xa4, - 0xc4, 0xf4, 0x65, 0xa9, 0x59, 0xfe, 0x01, 0x50, 0x0f, 0x7d, 0x9f, 0xcb, 0xed, 0x98, 0x26, 0x1a, - 0x63, 0x40, 0x38, 0xb9, 0xbd, 0xab, 0xa2, 0x73, 0x02, 0x0f, 0x23, 0x01, 0x26, 0x59, 0x50, 0xf0, - 0x12, 0xbf, 0x70, 0x22, 0x89, 0x4e, 0xcc, 0x96, 0x91, 0xc5, 0x42, 0xe8, 0x24, 0xff, 0x78, 0x46, - 0xc8, 0x76, 0x57, 0x77, 0x31, 0x60, 0xdd, 0x0e, 0xf2, 0xa0, 0xc0, 0x75, 0x8c, 0x24, 0xdd, 0x1f, - 0x00, 0xe5, 0x3c, 0xe9, 0xf9, 0x52, 0x45, 0xde, 0xdc, 0x0a, 0x8f, 0xc2, 0xa7, 0x13, 0x88, 0xe4, - 0x80, 0x07, 0xc9, 0xd8, 0x44, 0x4e, 0x0a, 0x9f, 0x69, 0x48, 0x9e, 0x13, 0x66, 0x42, 0xa4, 0x1d, - 0x58, 0x27, 0x2d, 0xa3, 0xd0, 0xb4, 0xda, 0x8d, 0xd5, 0xc6, 0x13, 0xdc, 0x7e, 0x37, 0x31, 0xec, - 0xd6, 0xbb, 0x53, 0x3e, 0x71, 0xe2, 0x2a, 0x37, 0xea, 0x9b, 0x71, 0x09, 0xc0, 0xa6, 0x55, 0xdd, - 0xc0, 0xa9, 0x4a, 0x47, 0xfb, 0x40, 0xbb, 0xf3, 0xe5, 0x40, 0xba, 0x32, 0x61, 0xd7, 0x34, 0xc0, - 0xc0, 0x64, 0x03, 0xe4, 0xdb, 0x13, 0xe0, 0x49, 0x74, 0xe1, 0xa0, 0x56, 0xe2, 0xba, 0x3b, 0x84, - 0x05, 0x1c, 0x98, 0xb8, 0xa2, 0xb0, 0xaa, 0xd1, 0x85, 0x94, 0xdd, 0xcf, 0x50, 0x26, 0x6c, 0xe8, - 0xa3, 0x4c, 0xe8, 0x73, 0x0d, 0x01, 0x18, 0xcb, 0xb9, 0x06, 0x80, 0x1b, 0xdc, 0x01, 0x49, 0x47, - 0x09, 0x56, 0x91, 0x26, 0x8f, 0x1c, 0x46, 0x0c, 0x1d, 0x56, 0xe1, 0x28, 0xed, 0x63, 0x2f, 0xe0, - 0x0e, 0xb8, 0x96, 0xc0, 0x13, 0x77, 0xe0, 0xcd, 0x24, 0xc4, 0xe8, 0xb5, 0x8e, 0xbd, 0xe8, 0xc8, - 0xe6, 0x0e, 0x9c, 0x23, 0xde, 0x59, 0x17, 0xab, 0x87, 0xd0, 0xd9, 0x39, 0x92, 0xad, 0xae, 0x66, - 0xee, 0x4d, 0x83, 0xdf, 0xd3, 0xa1, 0xe2, 0xf6, 0x3b, 0xb4, 0xe1, 0x9e, 0x9b, 0xea, 0xea, 0x21, - 0xe6, 0x1d, 0xc0, 0xbb, 0xdb, 0x70, 0x55, 0x34, 0x76, 0x70, 0xfb, 0x9b, 0x8f, 0xb1, 0x54, 0xea, - 0xce, 0x10, 0x63, 0x47, 0x9d, 0xf1, 0x6a, 0x14, 0x48, 0x5c, 0xcd, 0xcf, 0xc2, 0xd0, 0x90, 0x97, - 0x55, 0xc8, 0x1b, 0x1f, 0xc5, 0xf9, 0x80, 0x15, 0x22, 0x05, 0x57, 0x49, 0x0c, 0xd9, 0xaa, 0x25, - 0x5b, 0x17, 0x93, 0xad, 0x89, 0xa2, 0x6b, 0x3e, 0xce, 0x4a, 0x5a, 0x88, 0xc3, 0x66, 0x26, 0x91, - 0x35, 0xcb, 0x1a, 0x33, 0xe3, 0xe0, 0x39, 0xa0, 0xbf, 0x22, 0x2e, 0xa7, 0xd2, 0x13, 0xe0, 0xa3, - 0xa9, 0xf4, 0xc8, 0xf3, 0x16, 0x28, 0x18, 0x1a, 0xa9, 0xec, 0x34, 0x1a, 0x9a, 0xb4, 0xb0, 0x2e, - 0x64, 0xc0, 0x23, 0xc3, 0xda, 0xc3, 0x98, 0x03, 0x54, 0x70, 0x0c, 0xa7, 0x49, 0xc1, 0x05, 0x52, - 0xd0, 0x52, 0x16, 0x6f, 0x96, 0x0a, 0xde, 0x32, 0xcb, 0x07, 0xd3, 0x14, 0x36, 0x1a, 0x8e, 0xa0, - 0xdc, 0x10, 0xde, 0x2f, 0x46, 0x12, 0xc3, 0x3e, 0xd1, 0xe0, 0x24, 0x86, 0xdf, 0x8b, 0xae, 0x1d, - 0x94, 0x97, 0x86, 0xff, 0x2a, 0x9b, 0x6b, 0x96, 0x5c, 0xb8, 0x54, 0x26, 0xd9, 0xae, 0x74, 0x10, - 0x0d, 0x17, 0x88, 0xab, 0x02, 0x49, 0x33, 0xb4, 0x10, 0xd7, 0x06, 0xfa, 0x00, 0x4a, 0x70, 0x9a, - 0x48, 0x36, 0xca, 0xf2, 0x62, 0xf8, 0xa6, 0x64, 0xe9, 0xdd, 0xa6, 0x7c, 0x39, 0x57, 0xe9, 0x64, - 0x36, 0x03, 0xeb, 0xbb, 0x6f, 0x29, 0xac, 0x37, 0xbc, 0x03, 0x7c, 0xaf, 0x62, 0x31, 0x72, 0x07, - 0x30, 0x91, 0xca, 0x9b, 0x73, 0xc7, 0x63, 0x01, 0x86, 0x8f, 0x58, 0xcb, 0xf7, 0x01, 0x4f, 0xe6, - 0x06, 0x87, 0xa4, 0x74, 0xde, 0x49, 0x55, 0x86, 0xa5, 0x88, 0x45, 0x65, 0x10, 0x43, 0x13, 0x31, - 0x9e, 0x16, 0xe9, 0xe0, 0xc4, 0xd0, 0x22, 0x52, 0x72, 0x88, 0xe1, 0x02, 0x1d, 0xd6, 0x06, 0x4b, - 0xc2, 0x58, 0xe4, 0xf6, 0xd4, 0x7b, 0x03, 0x6f, 0x1d, 0x39, 0xb0, 0x8a, 0xc5, 0x6c, 0x01, 0x00, - 0xa9, 0x0a, 0x8a, 0x05, 0x57, 0xc1, 0xb1, 0x39, 0x77, 0xa8, 0x03, 0x01, 0x3e, 0x62, 0x25, 0x8c, - 0xde, 0x9c, 0x7c, 0x96, 0xcb, 0x3a, 0x4b, 0x56, 0x45, 0xc3, 0x9a, 0xd6, 0x5c, 0x01, 0x54, 0x65, - 0xac, 0xbe, 0x39, 0x27, 0xc7, 0x94, 0x4b, 0x2e, 0xca, 0xb3, 0xee, 0x52, 0x6f, 0xe0, 0x72, 0x8b, - 0x55, 0x37, 0x38, 0x17, 0xfa, 0xeb, 0xea, 0x9d, 0xd1, 0x8a, 0x66, 0xbf, 0x1c, 0x1e, 0x9a, 0x09, - 0x38, 0xf3, 0xfe, 0xd0, 0xc2, 0xbc, 0xf1, 0x83, 0x51, 0x0b, 0x43, 0x67, 0x35, 0x62, 0x6d, 0x5c, - 0x69, 0x48, 0xb7, 0xb2, 0x3c, 0xae, 0x14, 0x5c, 0x5a, 0x37, 0x71, 0x65, 0x53, 0x2e, 0x66, 0xc0, - 0x77, 0x59, 0xbc, 0x49, 0x32, 0xbc, 0x65, 0x92, 0x27, 0x28, 0x53, 0x71, 0xf5, 0xc1, 0x5a, 0xb1, - 0x20, 0xfc, 0x60, 0x71, 0x44, 0x96, 0xae, 0x95, 0x1b, 0xd7, 0xca, 0x70, 0x02, 0x17, 0xca, 0x31, - 0x3e, 0xf0, 0x42, 0xb4, 0x25, 0x5f, 0x3e, 0x9d, 0x42, 0x81, 0xb1, 0xa3, 0x09, 0xa6, 0x5e, 0xd5, - 0x3b, 0x3c, 0x75, 0xde, 0x08, 0x41, 0x40, 0xd5, 0x0d, 0x91, 0xef, 0x82, 0x19, 0xfb, 0xcc, 0x38, - 0x73, 0x28, 0x19, 0x64, 0x30, 0x7a, 0xe9, 0xd5, 0x77, 0xd0, 0x55, 0x70, 0x2e, 0x11, 0x66, 0xd8, - 0xb9, 0x8f, 0xaa, 0x44, 0x86, 0x36, 0xea, 0x4f, 0x2c, 0xc8, 0xeb, 0x1e, 0x9d, 0xe2, 0x8b, 0x5c, - 0x39, 0xe0, 0x0b, 0xdd, 0x32, 0x08, 0x49, 0x47, 0x67, 0x26, 0x3c, 0x02, 0x92, 0xea, 0x17, 0xa3, - 0x21, 0xa6, 0x04, 0x31, 0xf7, 0x28, 0x78, 0x6b, 0x57, 0x81, 0x74, 0x74, 0x10, 0x63, 0x9b, 0xba, - 0x69, 0x0f, 0xcb, 0xcf, 0x14, 0x0d, 0xbb, 0x93, 0xbd, 0x7c, 0x74, 0x59, 0x45, 0x2e, 0xf1, 0xca, - 0x1d, 0x8b, 0xd0, 0x38, 0xc9, 0xc2, 0x09, 0x35, 0xe9, 0xf6, 0xfd, 0x47, 0x26, 0x01, 0x2a, 0x8c, - 0x6d, 0x35, 0xcd, 0x22, 0x04, 0x45, 0x60, 0x9d, 0x1b, 0x49, 0x9a, 0x5a, 0xa0, 0x52, 0xcd, 0xf0, - 0x31, 0x0a, 0xef, 0xf2, 0xe7, 0xe1, 0x4c, 0xdb, 0x60, 0x98, 0x90, 0x51, 0xe4, 0xf6, 0x7b, 0x9c, - 0xdd, 0x2c, 0x68, 0x13, 0x7b, 0x06, 0x62, 0x29, 0xb6, 0x11, 0xec, 0x82, 0x1e, 0x16, 0x2c, 0x55, - 0xef, 0xce, 0x06, 0xa2, 0x88, 0xa1, 0x4d, 0x5c, 0xf6, 0xb1, 0x3b, 0x85, 0x65, 0xc4, 0x34, 0x6a, - 0x72, 0x11, 0x0b, 0xf7, 0x32, 0x5a, 0x28, 0xc2, 0xd7, 0x12, 0x63, 0x8d, 0x35, 0xc4, 0x7f, 0x2b, - 0x39, 0xfa, 0x18, 0x3c, 0xd0, 0xf5, 0x0f, 0x1a, 0x57, 0x09, 0x57, 0x62, 0xc4, 0x3a, 0xf4, 0x91, - 0x8f, 0xe9, 0x3a, 0x7c, 0x8c, 0xeb, 0xc0, 0xe9, 0x89, 0xe1, 0x95, 0xfe, 0xcb, 0x24, 0xef, 0x35, - 0x6a, 0x86, 0x50, 0x28, 0xb7, 0xaf, 0x18, 0xa9, 0x3c, 0x10, 0x70, 0x81, 0xd1, 0xfd, 0xd6, 0x82, - 0x50, 0xc9, 0x1b, 0xea, 0xbe, 0xc7, 0xfe, 0x27, 0xd8, 0xa3, 0x88, 0x4d, 0x78, 0x13, 0x31, 0x33, - 0xec, 0x90, 0x30, 0x94, 0x62, 0xff, 0x23, 0xa7, 0x17, 0xf9, 0x57, 0xfa, 0x21, 0x42, 0x7b, 0x4d, - 0xb8, 0xc2, 0xb0, 0xde, 0x89, 0xe7, 0xc1, 0x5e, 0x24, 0x9f, 0x21, 0x30, 0xed, 0xb6, 0xd8, 0x16, - 0x2e, 0xed, 0x3c, 0xc9, 0x6b, 0xe3, 0xd2, 0xd0, 0x6c, 0x88, 0xc6, 0x1a, 0x2e, 0xed, 0xac, 0xc8, - 0xd7, 0x66, 0x0a, 0x43, 0x63, 0x15, 0xa9, 0xe5, 0x5c, 0xe3, 0x00, 0x93, 0x6f, 0x16, 0xb7, 0xdf, - 0x70, 0x54, 0xe4, 0xfd, 0x81, 0x47, 0x4c, 0xb6, 0xbe, 0x54, 0x96, 0x91, 0x3f, 0x78, 0x00, 0xa6, - 0xdc, 0x03, 0xc3, 0x1e, 0x52, 0xa3, 0xbf, 0x01, 0xab, 0xb2, 0x4a, 0x45, 0x5a, 0x04, 0x77, 0x46, - 0xae, 0x09, 0x84, 0x78, 0xeb, 0x34, 0x24, 0x5d, 0x5d, 0xe3, 0x76, 0xa8, 0xbc, 0x99, 0x29, 0xec, - 0xbb, 0xd9, 0x4b, 0xc1, 0xdd, 0x68, 0x5c, 0x18, 0x84, 0x79, 0x3a, 0xc2, 0x72, 0x4c, 0x81, 0x87, - 0x33, 0xa0, 0x46, 0xde, 0xb6, 0x90, 0xce, 0xf0, 0x3d, 0x2c, 0x88, 0xe3, 0x29, 0x50, 0x0e, 0x4b, - 0xa6, 0xe0, 0x03, 0x59, 0x5c, 0x0b, 0x66, 0x6b, 0xff, 0xc2, 0xa0, 0x6c, 0x97, 0x31, 0x16, 0x93, - 0xfc, 0x52, 0x9c, 0x22, 0x76, 0xd9, 0xe1, 0xc2, 0xed, 0x30, 0x6e, 0xd7, 0xaf, 0xbe, 0x41, 0x26, - 0x66, 0x0a, 0x03, 0x01, 0xc7, 0xb2, 0x7f, 0x37, 0xc2, 0x7d, 0xff, 0xcb, 0x08, 0xcb, 0x6a, 0x81, - 0xa7, 0x81, 0x94, 0x38, 0x18, 0x67, 0x4d, 0x68, 0x1c, 0x4b, 0x80, 0xf7, 0x9b, 0xe4, 0xa9, 0xca, - 0x40, 0xc4, 0x23, 0x78, 0xc2, 0x33, 0x85, 0xdb, 0xec, 0x96, 0x9f, 0x77, 0x3e, 0x0c, 0x83, 0x55, - 0x9f, 0xc0, 0x85, 0x1e, 0xe5, 0xa7, 0xae, 0x4d, 0xbd, 0x97, 0x63, 0xa8, 0xe5, 0x19, 0xcb, 0x18, - 0xa6, 0x06, 0x32, 0x81, 0x7d, 0x28, 0xcb, 0x7a, 0x92, 0xd7, 0x45, 0xbc, 0x7a, 0x37, 0xf7, 0xab, - 0x60, 0x8c, 0x24, 0x0c, 0x4c, 0xa1, 0x01, 0x86, 0xbd, 0x38, 0x58, 0x71, 0x70, 0x0a, 0x06, 0x1e, - 0xcd, 0xdc, 0xaf, 0x48, 0x23, 0xe4, 0x0f, 0xbb, 0xdd, 0x90, 0x3c, 0xec, 0xae, 0x57, 0xd7, 0x83, - 0x51, 0xd8, 0xed, 0x56, 0xb7, 0x50, 0x58, 0x3e, 0x89, 0xdb, 0x7b, 0x2a, 0x08, 0x9e, 0x7c, 0x76, - 0xcb, 0xf7, 0x49, 0x13, 0x8d, 0xe7, 0x3d, 0x87, 0x53, 0xd2, 0x38, 0x88, 0x0f, 0xfb, 0x3f, 0x2b, - 0xe5, 0xbb, 0xf0, 0x91, 0xbd, 0x58, 0xc6, 0xe4, 0x00, 0x8b, 0xce, 0x7f, 0x8d, 0xb2, 0xa0, 0xc5, - 0xbc, 0x20, 0xaf, 0x4b, 0x5e, 0x02, 0xf4, 0xc8, 0xbf, 0x9d, 0x0f, 0x5f, 0xd7, 0xf1, 0xe9, 0x77, - 0x03, 0x68, 0x47, 0x35, 0x1f, 0xc2, 0x54, 0x02, 0x7c, 0x2c, 0xac, 0xa8, 0xda, 0x24, 0xff, 0x79, - 0x16, 0x9d, 0xb9, 0x2f, 0xd6, 0xf6, 0x67, 0x58, 0xd6, 0xce, 0x3f, 0x51, 0x3a, 0x59, 0x7e, 0xa2, - 0x7c, 0xe8, 0x11, 0xe8, 0xf1, 0x2e, 0x7c, 0xbd, 0xf7, 0x0a, 0x88, 0xb0, 0x2f, 0xe2, 0xdd, 0x57, - 0x94, 0x60, 0x22, 0xca, 0xf6, 0x4c, 0x3a, 0x00, 0xd6, 0x62, 0x96, 0xb9, 0x75, 0x3c, 0x03, 0xc9, - 0x90, 0x47, 0xde, 0x85, 0x49, 0xcb, 0x52, 0xe2, 0x15, 0x53, 0x62, 0x00, 0xa2, 0x5f, 0xd8, 0x19, - 0x17, 0xd8, 0x31, 0x4f, 0x1f, 0x58, 0x0b, 0x51, 0xe0, 0xfe, 0x4c, 0x8d, 0x19, 0xd2, 0x3c, 0x93, - 0x3c, 0x76, 0x96, 0x62, 0x60, 0xdc, 0x0e, 0xe0, 0xab, 0x6c, 0x62, 0x90, 0x53, 0xfc, 0x98, 0xac, - 0xf4, 0xa5, 0x3b, 0xe3, 0x76, 0xb6, 0x3b, 0x97, 0xbf, 0x46, 0xd5, 0x72, 0xbc, 0xed, 0x9d, 0x0c, - 0x10, 0xae, 0x6c, 0x85, 0x28, 0xe7, 0xf2, 0x5a, 0xac, 0x75, 0x4c, 0x93, 0xc7, 0xfd, 0x0a, 0x34, - 0xce, 0xd0, 0xf5, 0xde, 0x32, 0x5c, 0x46, 0x83, 0xff, 0xbd, 0x24, 0x5c, 0xdb, 0xc8, 0x3d, 0x60, - 0x88, 0x8f, 0xa7, 0xd1, 0x75, 0xb0, 0x4c, 0x09, 0xad, 0x03, 0x39, 0x5b, 0x37, 0xe3, 0x27, 0xd0, - 0xcd, 0x1b, 0x81, 0xdf, 0xac, 0x6d, 0x4a, 0x26, 0xcb, 0xe4, 0xc8, 0xa7, 0xa3, 0xa8, 0x40, 0x02, - 0x75, 0x4b, 0x6c, 0x97, 0xa0, 0x4b, 0xbe, 0x7c, 0x78, 0xb8, 0x66, 0xae, 0xed, 0x77, 0x06, 0xac, - 0xd9, 0x33, 0x5c, 0x33, 0xd5, 0xb6, 0x8a, 0xd6, 0xfc, 0x34, 0x54, 0xc3, 0xd5, 0xfc, 0x98, 0xa6, - 0x4a, 0xb5, 0x41, 0xd4, 0x48, 0x2d, 0x2b, 0xa6, 0xc4, 0x89, 0x6b, 0x74, 0x87, 0x1d, 0xab, 0xc2, - 0x19, 0x7d, 0xfd, 0xd8, 0x93, 0x7c, 0x96, 0x34, 0xa5, 0xe2, 0x69, 0x86, 0x49, 0x68, 0x11, 0xda, - 0x99, 0xe3, 0x15, 0x90, 0x93, 0xe5, 0x98, 0xca, 0x98, 0xdc, 0x7c, 0x8b, 0xac, 0x1d, 0x87, 0x68, - 0x62, 0x2c, 0x72, 0x3d, 0xc5, 0xa7, 0x2a, 0x8b, 0xb6, 0x75, 0x71, 0x2a, 0xc6, 0x76, 0x3a, 0x1b, - 0xe6, 0xda, 0xba, 0x34, 0xc4, 0x97, 0xe9, 0xb6, 0x85, 0x40, 0xab, 0x2f, 0xc2, 0xf6, 0x3f, 0x40, - 0xa0, 0x9c, 0xa1, 0xa3, 0xb0, 0x7a, 0x37, 0x95, 0x37, 0x6f, 0x04, 0xb2, 0x82, 0xdd, 0xc7, 0xfa, - 0xfc, 0x0a, 0x0d, 0xbe, 0x9b, 0x30, 0x5d, 0xa1, 0x6b, 0x31, 0x44, 0x54, 0x92, 0xf1, 0xb4, 0xac, - 0x45, 0xf2, 0x3c, 0x7a, 0xb7, 0xab, 0x99, 0x0f, 0x07, 0xe7, 0x29, 0x9c, 0x58, 0x1c, 0x0a, 0x12, - 0xab, 0xbb, 0xb2, 0xc1, 0xd4, 0x92, 0x33, 0x64, 0xa2, 0xde, 0x2d, 0x49, 0xbf, 0x87, 0xb5, 0x37, - 0xd9, 0x70, 0x1f, 0xcb, 0x64, 0xca, 0xc9, 0x95, 0x7b, 0xa2, 0x29, 0x65, 0x92, 0xeb, 0x33, 0xa8, - 0x2f, 0x0b, 0xb7, 0xe5, 0x00, 0xf7, 0x4d, 0xf2, 0xef, 0xb5, 0x21, 0x92, 0x96, 0x49, 0xae, 0xa1, - 0x91, 0x2d, 0xaf, 0x0f, 0xb7, 0xcc, 0x96, 0x5c, 0x7b, 0xb1, 0x25, 0xc2, 0x76, 0x28, 0x0d, 0x5b, - 0xb6, 0x0e, 0xb7, 0xa8, 0xf5, 0x81, 0xac, 0xce, 0xed, 0xa0, 0x28, 0x75, 0x6f, 0x1f, 0x02, 0x08, - 0x6e, 0xff, 0xa9, 0x83, 0x03, 0x68, 0xee, 0x02, 0x59, 0x4b, 0xde, 0xaa, 0x01, 0xad, 0x71, 0xa8, - 0x53, 0xf8, 0xaf, 0x3b, 0x7f, 0x84, 0x26, 0x13, 0x42, 0x94, 0x03, 0xd2, 0x01, 0x04, 0x3a, 0xd0, - 0x4a, 0x81, 0xac, 0x4b, 0x6b, 0x77, 0x20, 0xc8, 0x38, 0xc1, 0x1d, 0xc6, 0xd5, 0x3c, 0x02, 0x30, - 0xbe, 0x2e, 0x08, 0x8e, 0x8e, 0x7e, 0x83, 0xae, 0xb7, 0xcd, 0xd3, 0x11, 0x21, 0x65, 0x84, 0xa1, - 0x13, 0x26, 0x97, 0xfe, 0x1f, 0xa9, 0x6a, 0xe9, 0x87, 0xc7, 0xab, 0xd0, 0x7c, 0x1c, 0x9a, 0x61, - 0xd5, 0x22, 0x45, 0xd7, 0x69, 0x8a, 0xeb, 0xe8, 0x61, 0xfa, 0x73, 0x09, 0x54, 0x00, 0x0a, 0xf5, - 0xd8, 0x1a, 0x10, 0xdf, 0x6c, 0x41, 0x24, 0x55, 0x37, 0x48, 0x5e, 0x07, 0x97, 0x31, 0x58, 0x77, - 0xf4, 0x08, 0xa5, 0x0d, 0x60, 0x64, 0x6e, 0xef, 0x60, 0x78, 0x15, 0xf8, 0xab, 0xab, 0xec, 0x60, - 0x02, 0x66, 0x93, 0xbc, 0x7f, 0xf9, 0x2d, 0x8e, 0x61, 0xb6, 0x8c, 0x85, 0xac, 0x51, 0x83, 0x92, - 0x3d, 0x61, 0xf9, 0x2d, 0xf0, 0xf7, 0x5b, 0xb4, 0x50, 0x46, 0x3e, 0x07, 0xd5, 0xd1, 0x37, 0x09, - 0xca, 0x98, 0x29, 0xef, 0x03, 0x3f, 0xe9, 0x47, 0x9f, 0x64, 0xb8, 0x21, 0x42, 0xba, 0x90, 0xd7, - 0x65, 0x25, 0x6b, 0x34, 0xb5, 0x4f, 0x4f, 0xb0, 0x12, 0x8b, 0xb6, 0x76, 0xe7, 0x24, 0xd1, 0xd5, - 0x84, 0x23, 0x67, 0x46, 0x8b, 0x05, 0x37, 0xc8, 0xd3, 0x31, 0xa2, 0xd4, 0x86, 0xc5, 0x35, 0xf1, - 0xc4, 0x12, 0x27, 0x1a, 0xda, 0xac, 0x24, 0x73, 0x2e, 0xb7, 0xf7, 0x0e, 0x7b, 0x89, 0xec, 0x9c, - 0x07, 0x41, 0x97, 0xe1, 0x02, 0x12, 0xd0, 0xe2, 0xac, 0xf2, 0x33, 0x24, 0x33, 0xd1, 0xa1, 0x95, - 0x0a, 0x7e, 0x0f, 0x51, 0xf9, 0x34, 0x4f, 0xa7, 0x16, 0x7e, 0xa2, 0x7d, 0x61, 0xe0, 0x90, 0x76, - 0xea, 0xf4, 0x01, 0x09, 0x02, 0xad, 0x6e, 0x72, 0x39, 0xdf, 0x24, 0x9f, 0x63, 0x83, 0x22, 0x7a, - 0x90, 0x9a, 0x0b, 0x58, 0xfc, 0xd3, 0x24, 0x13, 0x12, 0x96, 0xea, 0x13, 0xb8, 0xec, 0x23, 0x92, - 0x85, 0xea, 0xae, 0x1a, 0x16, 0x13, 0x03, 0x10, 0x97, 0xb7, 0xe4, 0x4f, 0xd1, 0x74, 0x5e, 0x01, - 0xb9, 0x76, 0xb9, 0xb0, 0xd2, 0xa8, 0x01, 0x65, 0x75, 0xee, 0x48, 0x66, 0x17, 0x48, 0x2f, 0xb1, - 0x8e, 0x3e, 0xd1, 0xf0, 0x0b, 0xfd, 0x39, 0x98, 0x13, 0x6e, 0x08, 0x44, 0x8b, 0x86, 0x23, 0xd2, - 0x9b, 0x4a, 0xd4, 0x9b, 0x36, 0xcd, 0x23, 0x03, 0x1d, 0x69, 0xd1, 0x92, 0x2a, 0x59, 0xdf, 0xf7, - 0xc9, 0x9d, 0x21, 0xe4, 0xe0, 0x2b, 0x31, 0x11, 0x48, 0xc2, 0xed, 0x05, 0x8e, 0x28, 0x57, 0xb3, - 0xa3, 0x70, 0x4d, 0x3a, 0xef, 0xf3, 0x6d, 0x85, 0x3c, 0xbf, 0x3d, 0xc7, 0x24, 0xb9, 0x2a, 0x01, - 0xc4, 0x84, 0x96, 0xe8, 0x67, 0x49, 0x54, 0x3c, 0xbc, 0x35, 0x33, 0x10, 0x15, 0x03, 0x34, 0x00, - 0x9f, 0x82, 0xed, 0x52, 0xc1, 0x69, 0xb3, 0x1c, 0x15, 0x9a, 0x07, 0x9f, 0x97, 0xd0, 0x9f, 0x55, - 0xa6, 0x33, 0x4b, 0x1f, 0x23, 0xa4, 0x45, 0x7e, 0x46, 0xe9, 0x49, 0x7a, 0x80, 0x4a, 0xdf, 0x8f, - 0xfb, 0xaf, 0x59, 0x86, 0xd1, 0x5e, 0x94, 0x33, 0x92, 0x82, 0x4e, 0x68, 0x04, 0xde, 0x10, 0x52, - 0xc3, 0x69, 0x93, 0xfc, 0x31, 0x13, 0x44, 0xea, 0x18, 0xa3, 0xbf, 0xd2, 0xf9, 0x33, 0x0c, 0xb4, - 0x12, 0xe5, 0x67, 0xe7, 0x29, 0xb6, 0xbe, 0xa1, 0x2c, 0x5b, 0xb6, 0x28, 0xcf, 0x42, 0x95, 0x5f, - 0x27, 0xf1, 0x6f, 0x1d, 0x1a, 0x4f, 0x53, 0x82, 0xde, 0x0f, 0xb8, 0x03, 0x79, 0x37, 0x89, 0x69, - 0x31, 0x3f, 0x99, 0x3b, 0x60, 0xec, 0xf0, 0x7c, 0xaa, 0x1d, 0x7b, 0x12, 0xb3, 0x61, 0xd3, 0x62, - 0xd2, 0xe8, 0x8b, 0x20, 0x8d, 0xf0, 0x2c, 0x1a, 0x65, 0x08, 0x7e, 0xb8, 0x03, 0x15, 0x1a, 0x29, - 0x43, 0x1f, 0x80, 0x25, 0xeb, 0x23, 0x59, 0xcb, 0xc8, 0xda, 0x24, 0x88, 0xb3, 0xdc, 0x19, 0x74, - 0x72, 0xe0, 0x45, 0xde, 0x0e, 0x57, 0x06, 0xca, 0x4a, 0x21, 0xdb, 0xb5, 0x8d, 0xe9, 0xd1, 0xff, - 0x80, 0x39, 0x36, 0xa6, 0xc7, 0x44, 0x8d, 0x03, 0x5b, 0x96, 0x95, 0x44, 0xd2, 0xe3, 0x1a, 0xd3, - 0x51, 0x7c, 0x30, 0x9d, 0xc2, 0x8c, 0xab, 0xad, 0xfa, 0x44, 0x0d, 0xfb, 0xad, 0x25, 0x4b, 0x44, - 0x2d, 0xb9, 0x48, 0x4e, 0x71, 0xfb, 0x53, 0x27, 0x70, 0x07, 0xb6, 0x69, 0xb8, 0xbd, 0x03, 0x92, - 0xeb, 0x04, 0xcc, 0xcf, 0x86, 0x4c, 0x2f, 0x03, 0xbd, 0xb3, 0x3c, 0x1a, 0x8c, 0xdb, 0x20, 0xd7, - 0x74, 0x94, 0x71, 0x07, 0x2c, 0xd3, 0x84, 0xed, 0x2a, 0x1d, 0x3f, 0x96, 0x3b, 0x90, 0x19, 0xed, - 0xe9, 0xd0, 0x8e, 0xad, 0x97, 0x40, 0x30, 0xdb, 0x4d, 0xb2, 0x56, 0x21, 0x06, 0x4d, 0xd9, 0x9b, - 0x68, 0x0f, 0x1a, 0x45, 0xbe, 0x83, 0xf0, 0x37, 0xb8, 0xbd, 0x7c, 0x97, 0x45, 0x5e, 0xfb, 0x90, - 0x42, 0x69, 0x3b, 0x19, 0xd4, 0x5f, 0x31, 0x5b, 0xcc, 0x66, 0x58, 0x7c, 0x93, 0x7c, 0x99, 0x76, - 0x01, 0x01, 0xb8, 0x21, 0xa9, 0x5c, 0x48, 0x28, 0x84, 0xda, 0x3b, 0xbf, 0x4f, 0x39, 0xea, 0xcb, - 0xe4, 0x0e, 0xa4, 0xcf, 0xa5, 0xfa, 0x38, 0x26, 0x40, 0x3d, 0x12, 0x15, 0x7f, 0xe2, 0xe5, 0xf6, - 0xf6, 0x5b, 0x64, 0x46, 0x41, 0xc7, 0x1d, 0x30, 0x03, 0xc1, 0xe6, 0x79, 0xdc, 0x81, 0xd5, 0x73, - 0x3d, 0x9f, 0x46, 0xe8, 0x03, 0xf9, 0x39, 0xf9, 0xb8, 0x63, 0x65, 0x0a, 0x2c, 0x92, 0xb7, 0x51, - 0x73, 0x11, 0x23, 0x0c, 0xe9, 0x2a, 0x27, 0xe8, 0xfb, 0xd6, 0x88, 0x05, 0x10, 0xa9, 0xf9, 0x3b, - 0x7d, 0x54, 0x18, 0xfd, 0xe0, 0xa2, 0xa5, 0xd4, 0x09, 0xa0, 0xdb, 0xfa, 0x3e, 0x68, 0x80, 0xe8, - 0x84, 0xf0, 0x17, 0x3c, 0x37, 0x23, 0xea, 0x54, 0x7a, 0x74, 0xae, 0x0d, 0x00, 0xc4, 0x9e, 0x11, - 0xaa, 0x34, 0x4c, 0xdd, 0x9a, 0x71, 0x60, 0x98, 0xa1, 0xe8, 0xbc, 0xcd, 0x71, 0x2e, 0x8c, 0xa3, - 0xf7, 0xa4, 0x38, 0x62, 0x14, 0xd6, 0xe8, 0x14, 0x3e, 0x99, 0xe4, 0x87, 0x1f, 0xa1, 0x0c, 0xaa, - 0x8b, 0x8c, 0x9f, 0xc9, 0xed, 0x6f, 0x92, 0xa2, 0x57, 0x4a, 0x19, 0x3f, 0xe9, 0x5d, 0x1e, 0x8e, - 0x3b, 0x6b, 0x2f, 0x1b, 0x70, 0xa7, 0x2e, 0xfa, 0x27, 0x90, 0xfe, 0x49, 0xaf, 0x44, 0x20, 0xb8, - 0xb4, 0x7b, 0x0a, 0xfe, 0x7c, 0x72, 0x07, 0xd3, 0x80, 0xaa, 0xb6, 0xba, 0x8c, 0xc2, 0xa8, 0xda, - 0x8c, 0x69, 0x03, 0xe9, 0xfc, 0xd7, 0xfa, 0x73, 0x62, 0xd5, 0xd5, 0x3a, 0x55, 0x7e, 0x6d, 0xc6, - 0xc4, 0x88, 0x34, 0x61, 0x30, 0x92, 0xef, 0x25, 0x50, 0xce, 0x8c, 0x03, 0x49, 0xa8, 0xad, 0x19, - 0x7f, 0x16, 0x3a, 0xd5, 0x65, 0xde, 0x0f, 0x4f, 0x2d, 0xb8, 0xeb, 0xd4, 0x0c, 0x64, 0x73, 0xae, - 0x2f, 0xd0, 0xc5, 0xe3, 0x40, 0xce, 0x23, 0x14, 0xb9, 0x8e, 0x57, 0x0b, 0xee, 0x80, 0xbd, 0x1b, - 0x42, 0x49, 0x49, 0xc2, 0x0a, 0x6f, 0x86, 0x9a, 0x65, 0x9c, 0xcb, 0xd1, 0x9c, 0x33, 0x07, 0x0d, - 0x93, 0x59, 0xe6, 0xf0, 0x76, 0xf8, 0xe2, 0x0c, 0xf5, 0x01, 0x5e, 0x93, 0x13, 0x68, 0x09, 0x7a, - 0x9e, 0x74, 0x34, 0xa5, 0x6b, 0xc6, 0xf5, 0x79, 0xd4, 0x9c, 0x6b, 0x37, 0xa2, 0x04, 0x17, 0x0f, - 0x5d, 0x23, 0x2e, 0xe8, 0x52, 0xf8, 0x01, 0x70, 0xe7, 0x75, 0xe0, 0x48, 0x1d, 0x4f, 0x37, 0x1a, - 0xe4, 0xe0, 0x86, 0x64, 0x20, 0x6b, 0xd9, 0x7c, 0x87, 0x5e, 0xb8, 0xa3, 0xe6, 0x5e, 0xf7, 0x08, - 0x77, 0xa2, 0xb6, 0x3c, 0x13, 0x65, 0x94, 0xfb, 0x3c, 0xac, 0xe3, 0x09, 0xee, 0x98, 0xdb, 0x24, - 0xb7, 0x8c, 0xa5, 0x6b, 0x53, 0x9b, 0x31, 0xa3, 0x39, 0x1d, 0x3b, 0xab, 0x92, 0xb2, 0xc0, 0x0f, - 0xff, 0xd5, 0x37, 0xa3, 0xcf, 0x20, 0xb3, 0xc0, 0x7b, 0xfe, 0x59, 0xa5, 0xf6, 0x13, 0x0c, 0xeb, - 0x30, 0x36, 0x97, 0xa1, 0xf9, 0x0f, 0x65, 0xe3, 0x24, 0x43, 0xb3, 0xc9, 0x22, 0xbf, 0x1e, 0x15, - 0xb4, 0xf2, 0x5c, 0xcd, 0x7f, 0x52, 0xc9, 0xa5, 0x46, 0x8f, 0x2e, 0x9e, 0x4f, 0xed, 0xbc, 0xad, - 0x86, 0x5f, 0xc7, 0x4a, 0x91, 0xbf, 0x90, 0x09, 0x42, 0xc3, 0xed, 0x6d, 0xf0, 0xc8, 0x11, 0x10, - 0x63, 0x0a, 0xf5, 0x3a, 0xc1, 0x70, 0x55, 0x97, 0xec, 0xe5, 0x76, 0x25, 0xc2, 0xac, 0x7d, 0x11, - 0xd0, 0xc1, 0x77, 0x19, 0x56, 0x9d, 0xdb, 0x5b, 0xd0, 0x61, 0xce, 0x91, 0xbf, 0x3f, 0x57, 0x91, - 0xa9, 0x70, 0xa8, 0x22, 0xfe, 0xea, 0x13, 0x89, 0x21, 0x2d, 0x28, 0xd3, 0xc8, 0x1f, 0xcf, 0x0d, - 0x05, 0x80, 0xe3, 0x20, 0xba, 0x59, 0xb7, 0x98, 0x0e, 0x7f, 0x70, 0x1c, 0x06, 0x1f, 0x3b, 0xc6, - 0x20, 0x47, 0xbd, 0x20, 0x80, 0x4c, 0x36, 0xdf, 0x8d, 0x4a, 0x94, 0xa4, 0xef, 0xeb, 0xfc, 0x18, - 0x9d, 0x92, 0x0e, 0xc2, 0x38, 0xb5, 0xfc, 0xa0, 0x02, 0x0d, 0x95, 0x6f, 0xe3, 0x0e, 0x9b, 0x57, - 0x17, 0xac, 0x9f, 0xa0, 0xd4, 0xfb, 0x5a, 0x87, 0xb7, 0x92, 0x88, 0xb1, 0x4b, 0xdc, 0x06, 0xae, - 0x56, 0x08, 0x68, 0x0e, 0xfd, 0x93, 0xc3, 0x24, 0xba, 0x49, 0x08, 0x68, 0x8f, 0xfd, 0x33, 0x80, - 0x8f, 0xfe, 0xb1, 0x67, 0x84, 0x80, 0xee, 0x93, 0x7f, 0x82, 0xb1, 0xe3, 0x0c, 0xd7, 0x84, 0xc1, - 0x30, 0xfb, 0xc6, 0xe4, 0xcb, 0x5b, 0x4a, 0x25, 0x08, 0xb1, 0xb4, 0x90, 0x1a, 0x04, 0xc0, 0x83, - 0x40, 0x76, 0x23, 0xa1, 0xc6, 0xec, 0xa1, 0x46, 0x4c, 0x05, 0xda, 0x9f, 0x25, 0x78, 0x55, 0x08, - 0xaa, 0x4a, 0xbe, 0xbc, 0xf9, 0x53, 0x8b, 0xfc, 0xd5, 0xf7, 0x94, 0x69, 0x78, 0x20, 0x3b, 0x01, - 0x0d, 0x70, 0x05, 0xa4, 0x02, 0xbf, 0x63, 0x26, 0x64, 0x00, 0xc6, 0x1b, 0x00, 0x4c, 0xa2, 0xff, - 0x04, 0x18, 0xcc, 0x72, 0x29, 0x15, 0xff, 0x1b, 0x00, 0x98, 0x99, 0xdc, 0xcf, 0xdf, 0xa4, 0x53, - 0x22, 0x4d, 0x23, 0xf6, 0x7c, 0x70, 0xe3, 0x25, 0x5b, 0x2b, 0xe6, 0xa4, 0x04, 0xf8, 0xb8, 0x00, - 0x1f, 0x03, 0xb9, 0x79, 0x80, 0xd7, 0x82, 0xb0, 0xc8, 0x0b, 0xa8, 0xa1, 0x8b, 0xa6, 0x40, 0x16, - 0x84, 0xaa, 0xd0, 0x8a, 0x99, 0x19, 0x10, 0x08, 0x9b, 0x02, 0x9b, 0x53, 0xe4, 0xe6, 0x07, 0x29, - 0x83, 0xcb, 0xb2, 0x2d, 0xf2, 0x31, 0xe5, 0xf1, 0xe9, 0x7b, 0x5b, 0x48, 0x3a, 0x92, 0x77, 0x01, - 0x1c, 0xb1, 0x68, 0x88, 0x1e, 0x67, 0x88, 0xe1, 0x6a, 0xfe, 0xce, 0x50, 0x15, 0xe4, 0x0e, 0xa4, - 0x6a, 0xb8, 0xfd, 0x2b, 0x27, 0x70, 0x7b, 0x21, 0x0b, 0x6e, 0xd3, 0x37, 0x83, 0x3f, 0xc8, 0xbb, - 0x0a, 0xd4, 0x86, 0x1b, 0x35, 0x20, 0x12, 0x93, 0xf3, 0xb4, 0x60, 0xd4, 0x21, 0xf7, 0x16, 0xf9, - 0x36, 0x4b, 0x6e, 0x8e, 0x5c, 0xe0, 0x0b, 0x46, 0x9d, 0x1d, 0xe4, 0xbc, 0x58, 0x15, 0xfd, 0x10, - 0x24, 0x6a, 0xc6, 0x98, 0xe9, 0xc6, 0xab, 0xdc, 0xde, 0x6b, 0x20, 0x22, 0xfd, 0x37, 0xd9, 0xcb, - 0x62, 0x81, 0x9c, 0xd0, 0x40, 0x0a, 0x64, 0x08, 0xe2, 0x62, 0x5b, 0x88, 0xa1, 0x2b, 0xe1, 0x1a, - 0xdd, 0x23, 0x8b, 0x6d, 0x48, 0xee, 0x27, 0x4d, 0xb1, 0x90, 0x7e, 0xb4, 0x73, 0x69, 0xfd, 0xe0, - 0xfd, 0x20, 0x33, 0x11, 0x35, 0xb5, 0x82, 0x67, 0x08, 0x53, 0x8f, 0xfd, 0x69, 0x30, 0xbe, 0x47, - 0xdf, 0x1c, 0x9e, 0xa6, 0x03, 0x59, 0xe6, 0x0e, 0xe4, 0x82, 0x39, 0x39, 0xd9, 0xff, 0x19, 0xdb, - 0x1a, 0x6e, 0x90, 0x27, 0xc3, 0x92, 0xe5, 0xa9, 0x21, 0x25, 0x64, 0x07, 0xcd, 0x16, 0xc8, 0x9c, - 0x31, 0x94, 0x4f, 0x84, 0xb1, 0xe5, 0x99, 0x1a, 0xf4, 0x72, 0x57, 0x29, 0x1f, 0x63, 0xd8, 0x6e, - 0x91, 0x8f, 0x99, 0x78, 0x39, 0xf9, 0x36, 0x69, 0x89, 0xf5, 0x73, 0xbb, 0x70, 0x77, 0x45, 0x38, - 0xa1, 0x1b, 0x61, 0x62, 0x4d, 0x62, 0x95, 0x5a, 0x4c, 0x55, 0xe1, 0x66, 0xfa, 0x83, 0xc2, 0x80, - 0x96, 0xcf, 0x80, 0xec, 0x78, 0x0c, 0x77, 0xe0, 0x05, 0x18, 0xe9, 0x85, 0x38, 0x29, 0xda, 0x62, - 0x2a, 0x0b, 0x33, 0xe5, 0xe6, 0x07, 0xf4, 0x72, 0x13, 0x8d, 0xe1, 0xe2, 0x7c, 0x2f, 0x50, 0xce, - 0xec, 0x4d, 0x8d, 0x93, 0x54, 0xaf, 0xe9, 0xcf, 0xe5, 0x96, 0xa9, 0x72, 0x4d, 0xd8, 0xfc, 0xa1, - 0x12, 0xe2, 0x39, 0x9f, 0x0b, 0xe7, 0x7c, 0xab, 0x11, 0x87, 0xc4, 0xf7, 0x58, 0x71, 0x23, 0x3a, - 0x84, 0x8b, 0x5c, 0x22, 0xe7, 0x5b, 0x7d, 0xec, 0x79, 0xb6, 0x17, 0x51, 0x9a, 0xa1, 0xd9, 0x02, - 0xdd, 0xec, 0x4a, 0x37, 0xee, 0x40, 0x24, 0xcd, 0x11, 0xe7, 0x04, 0x40, 0xf8, 0xc8, 0x60, 0x5f, - 0x3d, 0xcb, 0x19, 0x3c, 0xa2, 0x51, 0x4d, 0x58, 0x90, 0x85, 0x10, 0xb5, 0x05, 0x9d, 0x51, 0x7d, - 0x74, 0xe3, 0x59, 0xef, 0x0e, 0x51, 0x2f, 0x16, 0x68, 0xcc, 0xf2, 0xde, 0x31, 0xc1, 0xad, 0x1d, - 0xc1, 0x1b, 0x66, 0x91, 0x6b, 0xe6, 0x04, 0x15, 0xc6, 0xb9, 0x74, 0x81, 0x23, 0xd2, 0x3b, 0x66, - 0x01, 0x19, 0x48, 0x31, 0x9b, 0xe4, 0xbb, 0x11, 0x74, 0xdd, 0xc5, 0x02, 0xb5, 0x73, 0xfb, 0x78, - 0x08, 0xef, 0xf3, 0x6d, 0xad, 0x10, 0xee, 0x9b, 0xe5, 0xb7, 0x1e, 0x52, 0x74, 0x61, 0x76, 0xbe, - 0x59, 0xfe, 0x41, 0x58, 0xc8, 0x05, 0x4f, 0x80, 0x92, 0x97, 0x6e, 0xe4, 0xa1, 0xef, 0x1c, 0x47, - 0xb6, 0xaa, 0x49, 0x85, 0xb2, 0xfb, 0xaa, 0x77, 0xfb, 0xfa, 0xa9, 0x8c, 0xf1, 0x6a, 0xe7, 0x63, - 0x2c, 0x3f, 0xd5, 0xb9, 0x93, 0x65, 0xf8, 0xfb, 0x02, 0x9b, 0xe3, 0x02, 0x9b, 0xb5, 0x72, 0x51, - 0xbc, 0xa2, 0xc8, 0x63, 0x2c, 0x01, 0x4b, 0x0c, 0x10, 0x11, 0xd8, 0xac, 0x81, 0xd0, 0x5f, 0x5e, - 0xa5, 0x54, 0x97, 0x25, 0x5a, 0xe4, 0x15, 0xf1, 0x23, 0xc4, 0x0f, 0xe4, 0xd4, 0x99, 0xc4, 0xf2, - 0xf7, 0x89, 0x46, 0x6d, 0x78, 0x36, 0x88, 0x71, 0x4c, 0x0e, 0x8a, 0x72, 0x45, 0x22, 0xa5, 0xa8, - 0xa0, 0xa1, 0x20, 0xf0, 0x4c, 0x34, 0x9d, 0xad, 0xc9, 0x04, 0xf5, 0xa8, 0xb8, 0x11, 0x54, 0xca, - 0xb5, 0x23, 0xb7, 0xc3, 0x0d, 0x1a, 0x58, 0x40, 0xa1, 0x2a, 0x9a, 0xe1, 0xde, 0x6c, 0x98, 0x5d, - 0xa0, 0x75, 0xae, 0x60, 0xf9, 0x7c, 0x71, 0x8b, 0xd6, 0xf9, 0x12, 0xcb, 0x3a, 0xf4, 0xfa, 0xe6, - 0xc3, 0xc8, 0xd0, 0xf0, 0xfc, 0x38, 0xf1, 0x25, 0xdd, 0xc4, 0xb3, 0xd5, 0x9f, 0x31, 0xfe, 0x40, - 0x20, 0x27, 0xa7, 0x8c, 0xcd, 0x31, 0xe5, 0xe7, 0xe6, 0x58, 0xe4, 0xec, 0x19, 0x88, 0x2f, 0x1e, - 0xe8, 0xf0, 0xa6, 0xb0, 0x2c, 0xe8, 0x4c, 0xcd, 0x15, 0xae, 0x66, 0x06, 0xba, 0xdc, 0x87, 0xdf, - 0xc2, 0xad, 0x94, 0x88, 0x5f, 0x2c, 0xa1, 0xc7, 0x06, 0x4c, 0x27, 0x75, 0x17, 0xfb, 0x4f, 0xe5, - 0xd8, 0x18, 0xf0, 0x5b, 0xa6, 0xc0, 0x96, 0x38, 0xd9, 0x48, 0x67, 0xa2, 0x25, 0xde, 0x9a, 0x2b, - 0x8e, 0xe9, 0xe2, 0x63, 0x62, 0xa6, 0xea, 0x3d, 0x84, 0x26, 0xcb, 0xdf, 0x52, 0xd2, 0xa4, 0x85, - 0xc7, 0xf0, 0xc1, 0x17, 0x46, 0xfa, 0xf5, 0x6e, 0xe0, 0x7a, 0xa0, 0x52, 0x17, 0xa8, 0x8c, 0x33, - 0x99, 0xf2, 0xcd, 0x01, 0x73, 0x34, 0xac, 0x38, 0xfc, 0x20, 0x87, 0x20, 0x30, 0xb0, 0x36, 0x86, - 0xb3, 0x6c, 0xe7, 0x6f, 0x60, 0x14, 0x1b, 0x03, 0xd8, 0xe5, 0x86, 0x07, 0x94, 0x05, 0x84, 0x90, - 0x12, 0xe4, 0xfb, 0x47, 0x71, 0x62, 0x9a, 0x8e, 0xb4, 0x8f, 0xf5, 0x38, 0x2a, 0x83, 0x16, 0x9e, - 0x1e, 0xd6, 0x68, 0x19, 0x7d, 0x5f, 0x42, 0x2f, 0x44, 0x9b, 0xb1, 0x03, 0x87, 0xb0, 0x94, 0x7c, - 0x8a, 0x4b, 0x6f, 0x07, 0xab, 0x6c, 0x68, 0xcf, 0x07, 0xc6, 0x40, 0x0e, 0x0b, 0xfa, 0xa0, 0x0e, - 0x98, 0x70, 0xa4, 0x70, 0x3a, 0x17, 0x32, 0x30, 0x99, 0xce, 0xc6, 0x8c, 0xf9, 0xad, 0x25, 0x90, - 0x07, 0x2d, 0x5a, 0xb4, 0x13, 0x4f, 0xc4, 0x89, 0x29, 0x3a, 0x08, 0xc5, 0x92, 0x2f, 0xc7, 0x36, - 0x92, 0x8b, 0x14, 0x97, 0xb4, 0x2c, 0x8a, 0x60, 0x38, 0xac, 0xb6, 0xbf, 0x4d, 0x29, 0x82, 0x1e, - 0xf2, 0xcb, 0xb3, 0xe9, 0xba, 0xd1, 0x39, 0xe1, 0x66, 0xad, 0x66, 0x54, 0x94, 0x12, 0x37, 0x16, - 0x77, 0x00, 0x20, 0xee, 0x97, 0xf8, 0xcb, 0xf9, 0x65, 0x11, 0xf9, 0x36, 0xdc, 0xae, 0xb2, 0x98, - 0xe5, 0xdd, 0x6a, 0x2a, 0xdd, 0xde, 0xcc, 0x08, 0xc6, 0x76, 0x23, 0x85, 0x65, 0x2c, 0xf2, 0x5b, - 0xe1, 0xa1, 0x84, 0xca, 0xf5, 0x06, 0x48, 0x1b, 0x18, 0xf8, 0x0b, 0xb3, 0x43, 0xd3, 0x25, 0x6d, - 0xe2, 0x8c, 0x77, 0x90, 0x79, 0x57, 0x1c, 0xe3, 0x93, 0xc3, 0x83, 0x0e, 0xe6, 0x49, 0x8d, 0xef, - 0x9f, 0x65, 0x5a, 0xf9, 0x8f, 0x41, 0xa8, 0x06, 0xb4, 0x89, 0xe1, 0xc7, 0xe8, 0xce, 0x5f, 0x20, - 0xdf, 0x86, 0x1b, 0x43, 0xf9, 0x16, 0x49, 0xba, 0x02, 0x8a, 0x91, 0x63, 0x92, 0xe3, 0x95, 0xf1, - 0xb8, 0xfd, 0x2e, 0xac, 0x80, 0x34, 0xd6, 0x31, 0x75, 0x79, 0x80, 0xee, 0xe8, 0x57, 0xc0, 0x60, - 0xd5, 0x5e, 0x04, 0x07, 0x04, 0x3e, 0xaf, 0xe8, 0xaa, 0x06, 0xe9, 0x26, 0xe9, 0x90, 0x96, 0xae, - 0x0b, 0x62, 0x4e, 0x57, 0x89, 0xd2, 0x36, 0xa8, 0xf4, 0x7c, 0x3a, 0x0e, 0xd4, 0x3a, 0x50, 0xa9, - 0xce, 0xcd, 0x31, 0xa1, 0xcc, 0xb5, 0x50, 0xed, 0x8a, 0x79, 0x17, 0x29, 0x23, 0xe9, 0x1a, 0x42, - 0x49, 0x14, 0xab, 0x40, 0xf2, 0xfc, 0x24, 0x66, 0x2d, 0xc8, 0x19, 0x0d, 0x99, 0xfb, 0x45, 0x08, - 0xe0, 0x0c, 0x5d, 0xe2, 0x93, 0x6a, 0x4c, 0x06, 0x64, 0xc9, 0x75, 0x05, 0x1c, 0x5d, 0x16, 0xb7, - 0x7f, 0x2d, 0xc4, 0x02, 0x8e, 0x28, 0x0c, 0x8e, 0x23, 0x6a, 0xd5, 0x29, 0xbe, 0xff, 0xf1, 0xe2, - 0xc1, 0xc2, 0x0d, 0x3c, 0x24, 0xa4, 0x71, 0x37, 0x38, 0x4e, 0x08, 0xc1, 0xf6, 0x4f, 0x76, 0x9d, - 0xe3, 0x6a, 0x3e, 0xc0, 0xd8, 0x93, 0xef, 0xe0, 0xf6, 0xa7, 0xeb, 0x88, 0x47, 0xf8, 0x94, 0x4d, - 0xa8, 0x97, 0xd6, 0x45, 0x81, 0xbb, 0x51, 0xed, 0x58, 0x28, 0x55, 0xce, 0x62, 0xbd, 0x42, 0x37, - 0xcb, 0x76, 0x3b, 0xb7, 0x85, 0xb3, 0x8e, 0x48, 0xe7, 0xb6, 0xb0, 0x30, 0x3e, 0xce, 0x99, 0xbc, - 0x86, 0x8f, 0x72, 0x6e, 0x63, 0x8d, 0x5c, 0xcd, 0x4f, 0x70, 0x92, 0xfb, 0x5f, 0x08, 0x4b, 0xe8, - 0x61, 0xbb, 0x85, 0xc1, 0xf0, 0x97, 0xc0, 0x60, 0x83, 0xde, 0x3e, 0xc8, 0xed, 0x5f, 0x37, 0x6e, - 0x96, 0x30, 0x38, 0xdf, 0x31, 0x46, 0x18, 0x5c, 0xea, 0xb8, 0xcf, 0x37, 0xc6, 0xb9, 0x63, 0xdc, - 0xec, 0xa5, 0x8e, 0x09, 0xb5, 0xbb, 0xc7, 0x23, 0x83, 0x52, 0x93, 0x9b, 0xf8, 0xab, 0xc4, 0xe3, - 0xad, 0xa1, 0x25, 0x46, 0x21, 0x7a, 0x98, 0x99, 0x0f, 0x84, 0x0d, 0xe7, 0xbe, 0xaf, 0x50, 0xf4, - 0xe1, 0x10, 0x31, 0x26, 0x78, 0x7d, 0xb1, 0xd5, 0x43, 0x2c, 0xee, 0xc7, 0xed, 0xc2, 0xd3, 0x63, - 0x70, 0xd7, 0x37, 0x19, 0x48, 0xdc, 0xe6, 0x04, 0x80, 0x4d, 0x2c, 0x1e, 0xc2, 0xb9, 0x7e, 0x00, - 0x36, 0x96, 0x8a, 0x33, 0x12, 0x24, 0x78, 0xef, 0x70, 0x35, 0xe5, 0x50, 0x53, 0x3d, 0x84, 0x5b, - 0x27, 0x9c, 0x80, 0xa7, 0xd2, 0x82, 0x27, 0xc2, 0x92, 0x23, 0xd1, 0x35, 0x32, 0xc9, 0xd5, 0xf3, - 0x82, 0x89, 0xc1, 0xc3, 0x94, 0x88, 0x60, 0x34, 0xa4, 0xd0, 0xc2, 0xb9, 0x36, 0x05, 0x46, 0x50, - 0xf4, 0x24, 0x60, 0xe8, 0x2c, 0xc5, 0xc8, 0xac, 0x32, 0x4c, 0x7c, 0x32, 0xca, 0xf9, 0x52, 0x80, - 0x71, 0x14, 0x60, 0xd8, 0xc2, 0x4f, 0x08, 0xf0, 0x37, 0x02, 0x7c, 0x97, 0xdc, 0x31, 0x93, 0xd2, - 0x6c, 0x96, 0x77, 0x2a, 0xc9, 0xb3, 0xe7, 0xe6, 0x38, 0x7d, 0x73, 0x8e, 0x39, 0xa8, 0x39, 0x39, - 0x16, 0x58, 0x22, 0xba, 0xa8, 0x77, 0xa8, 0x35, 0x8c, 0xe9, 0x5c, 0x07, 0x83, 0x94, 0x69, 0x50, - 0xc0, 0x7f, 0xad, 0xf4, 0x04, 0x6f, 0x0e, 0x99, 0x13, 0xca, 0x33, 0x15, 0x70, 0x5c, 0xe4, 0x0a, - 0x15, 0x79, 0x42, 0x4d, 0xbc, 0x90, 0x38, 0x24, 0xe8, 0x82, 0xa6, 0x95, 0x54, 0x68, 0x1b, 0x53, - 0xa2, 0xf7, 0x4c, 0x82, 0x70, 0x3e, 0x25, 0xa6, 0x1d, 0x7e, 0x44, 0xc8, 0xb8, 0xb2, 0xe2, 0x1a, - 0xb3, 0x86, 0xc3, 0xf9, 0x2c, 0x95, 0x6f, 0xbf, 0xad, 0x2b, 0x93, 0x6e, 0x4d, 0x7c, 0x02, 0xf3, - 0xb1, 0xfd, 0x0e, 0x33, 0xfb, 0x1e, 0x34, 0x7a, 0xc6, 0x68, 0xd4, 0x3b, 0x93, 0x56, 0x0c, 0x13, - 0x73, 0x55, 0x9e, 0xcf, 0xc6, 0x85, 0xe7, 0x69, 0x85, 0x56, 0x46, 0x71, 0xe8, 0x39, 0xb9, 0x68, - 0xe9, 0x12, 0xe5, 0x27, 0x15, 0xfa, 0x42, 0x56, 0x12, 0x48, 0xac, 0xd0, 0xca, 0xe1, 0x0a, 0x89, - 0xa1, 0x4a, 0xc1, 0xdd, 0x21, 0x0c, 0x14, 0x72, 0xaf, 0x2b, 0xce, 0x00, 0x9c, 0x85, 0x94, 0xf3, - 0x4b, 0x29, 0xb5, 0x43, 0x18, 0x9c, 0xc6, 0xa5, 0x7b, 0x42, 0x75, 0xa4, 0xa9, 0xbf, 0x8d, 0xcb, - 0x56, 0x8a, 0x66, 0x48, 0xa0, 0xa0, 0x5f, 0x5d, 0xac, 0xfe, 0x1c, 0xd8, 0xac, 0xa8, 0xda, 0x38, - 0x6d, 0xdd, 0x53, 0x13, 0xd9, 0x34, 0x5f, 0x8f, 0x17, 0xb2, 0xda, 0x27, 0x83, 0xa1, 0x03, 0x80, - 0xe4, 0xa9, 0xeb, 0xc2, 0xea, 0x66, 0x25, 0x75, 0xf0, 0x93, 0xf4, 0x7d, 0x99, 0x10, 0x5a, 0xc6, - 0xd4, 0xa9, 0x16, 0xd6, 0xc5, 0xeb, 0x33, 0x93, 0x3a, 0x1c, 0xdd, 0xfa, 0xe6, 0xa4, 0x0e, 0xee, - 0x0d, 0x8f, 0x94, 0x31, 0x36, 0xe0, 0x0b, 0xd3, 0xbb, 0x87, 0xc3, 0x08, 0x05, 0x35, 0xb7, 0x9f, - 0x21, 0x0d, 0xce, 0x86, 0xe3, 0xe0, 0x8a, 0xce, 0xe8, 0x9c, 0x77, 0xa6, 0x71, 0xfb, 0x27, 0x72, - 0xe9, 0x7e, 0xd2, 0xea, 0xf4, 0x1c, 0x27, 0x97, 0x84, 0xb3, 0x3a, 0xe7, 0x6d, 0xa0, 0x6d, 0x30, - 0x79, 0x88, 0x5f, 0xa2, 0x60, 0x4e, 0xa1, 0x7d, 0x54, 0x89, 0xd0, 0x9b, 0xdb, 0x1f, 0xad, 0xc7, - 0x63, 0xd6, 0xe3, 0xa4, 0x31, 0x04, 0x38, 0xa0, 0x74, 0x3c, 0x2f, 0x9c, 0x52, 0xca, 0x97, 0x33, - 0x93, 0xaf, 0x3b, 0x9a, 0x81, 0x82, 0x96, 0x91, 0x14, 0xdc, 0xb3, 0x43, 0xe0, 0x46, 0x40, 0xd9, - 0x74, 0x78, 0xc4, 0xcf, 0xab, 0x57, 0xea, 0x03, 0x75, 0x71, 0x8f, 0x2d, 0x89, 0x5b, 0xc2, 0x4f, - 0xd6, 0xbb, 0x61, 0xba, 0xf7, 0x25, 0xdf, 0x06, 0x3d, 0x85, 0xd4, 0x74, 0x02, 0x78, 0xb0, 0x28, - 0xee, 0x0d, 0x37, 0xb7, 0xdf, 0x2d, 0x65, 0x30, 0x81, 0x51, 0xa1, 0x00, 0x45, 0xb0, 0x0a, 0xba, - 0xd2, 0x78, 0x08, 0x48, 0xd3, 0x24, 0x81, 0x83, 0x01, 0x0a, 0x93, 0xc8, 0x49, 0x67, 0xfd, 0x71, - 0x72, 0x0a, 0x49, 0x41, 0xfe, 0xb6, 0x93, 0x7a, 0xe2, 0x85, 0x1a, 0xa1, 0x49, 0x29, 0x7b, 0x93, - 0x1b, 0xf8, 0xa9, 0x30, 0x4e, 0xb3, 0x63, 0x06, 0xc4, 0x4e, 0xca, 0x50, 0xc7, 0x7c, 0x13, 0x61, - 0xa8, 0xf1, 0xa4, 0x47, 0xef, 0x4e, 0x6a, 0x85, 0x01, 0x71, 0xb4, 0x11, 0xde, 0x1c, 0x92, 0x00, - 0x58, 0x1f, 0xe7, 0x0e, 0x96, 0x65, 0xa4, 0x14, 0x96, 0xef, 0xbb, 0xe7, 0xd4, 0xd4, 0x40, 0xfe, - 0xf1, 0xbb, 0xb8, 0x35, 0x1f, 0x85, 0x41, 0xa5, 0x45, 0xfe, 0x80, 0x51, 0x0e, 0x27, 0x00, 0xf3, - 0x19, 0xc7, 0x0a, 0x67, 0x32, 0xc3, 0xed, 0x6e, 0x10, 0x40, 0x3b, 0xde, 0x6c, 0xac, 0xb9, 0xce, - 0x2f, 0x38, 0x86, 0x16, 0x2e, 0xd9, 0x7b, 0x8c, 0x86, 0x53, 0x17, 0xed, 0x33, 0x53, 0x6b, 0x33, - 0x96, 0xfb, 0xb3, 0xc8, 0x19, 0xde, 0x2d, 0x19, 0xba, 0xca, 0x54, 0xe8, 0x3b, 0xe5, 0xb8, 0x04, - 0x25, 0x12, 0x76, 0x43, 0x8c, 0xed, 0xce, 0x46, 0x07, 0x1c, 0xa4, 0xa2, 0x0e, 0x45, 0xc4, 0x2d, - 0xab, 0x80, 0x1b, 0xac, 0x5b, 0x52, 0xa5, 0xf4, 0xb7, 0x31, 0x4d, 0xa1, 0x06, 0xee, 0x98, 0x07, - 0xa7, 0xfd, 0x4b, 0xe7, 0x60, 0xc4, 0x96, 0x08, 0xc1, 0xfd, 0xa1, 0xef, 0x7e, 0xca, 0x85, 0x60, - 0xb1, 0xd9, 0xc7, 0x39, 0x3d, 0x2d, 0x82, 0xbb, 0x45, 0x7f, 0x6e, 0x95, 0xf3, 0x76, 0x14, 0x97, - 0x5e, 0x3f, 0x62, 0x06, 0x90, 0xb7, 0x19, 0xb4, 0x20, 0x48, 0x9e, 0x81, 0x99, 0x60, 0xd8, 0xf5, - 0xcd, 0xdc, 0xb1, 0x69, 0xa4, 0x4d, 0xf5, 0xcb, 0x65, 0xd8, 0xb3, 0xe1, 0x43, 0x5f, 0x0c, 0x14, - 0x8e, 0x2b, 0x85, 0x66, 0xdf, 0x38, 0x28, 0xb4, 0x2c, 0x1b, 0xbb, 0x65, 0xbe, 0xd0, 0xd0, 0x22, - 0xdc, 0x09, 0x38, 0x1e, 0x24, 0xb8, 0x75, 0x29, 0x56, 0x69, 0xfb, 0xbf, 0xe0, 0xf6, 0x9e, 0x65, - 0x5b, 0x21, 0x43, 0xf5, 0xb3, 0xdd, 0xe4, 0xb2, 0x67, 0x70, 0x26, 0xdb, 0x36, 0xb1, 0x15, 0x7c, - 0x55, 0x1a, 0xf1, 0xfa, 0xfe, 0x00, 0x0b, 0x03, 0x26, 0x2e, 0x8c, 0x68, 0x01, 0xfc, 0xe4, 0x88, - 0x19, 0xa1, 0x20, 0x54, 0xa1, 0x04, 0x70, 0xfb, 0x39, 0xb4, 0xbb, 0x53, 0x81, 0x12, 0x57, 0x33, - 0x7f, 0x1f, 0xf0, 0x71, 0x80, 0x9e, 0xac, 0xa8, 0x3b, 0xe7, 0x80, 0x1d, 0xf1, 0x46, 0x2e, 0x90, - 0x9e, 0x66, 0x7d, 0x7a, 0xa8, 0xfe, 0x54, 0xa9, 0xb6, 0xc8, 0xd6, 0x21, 0x7c, 0x00, 0x27, 0xc3, - 0xf6, 0xfa, 0x62, 0xb3, 0xea, 0xc6, 0x2c, 0x5b, 0xe0, 0x98, 0x08, 0x29, 0x23, 0x9e, 0xd1, 0x74, - 0x00, 0x73, 0x6b, 0xc3, 0xb3, 0xd2, 0x7d, 0x9d, 0x59, 0xfb, 0x16, 0x38, 0x57, 0x2c, 0x70, 0x7c, - 0x5e, 0x16, 0x66, 0x7b, 0x25, 0x0b, 0xf7, 0x08, 0x5f, 0xa2, 0xa7, 0xf7, 0x34, 0x25, 0xc2, 0x1d, - 0xdb, 0xb2, 0x70, 0xdb, 0x1b, 0xb4, 0xfe, 0xb9, 0x7b, 0xf5, 0xbf, 0x52, 0xea, 0xff, 0x83, 0xd6, - 0xaf, 0x0d, 0xd5, 0x3b, 0xb6, 0x97, 0xa9, 0x6c, 0xff, 0x49, 0xeb, 0x96, 0x0e, 0xd7, 0x3d, 0x07, - 0x70, 0x0d, 0x74, 0xef, 0xf1, 0x7b, 0xc3, 0x75, 0x8b, 0x61, 0xac, 0xbc, 0x0c, 0xac, 0x9b, 0x7c, - 0x0f, 0xe7, 0x53, 0x68, 0x19, 0xd3, 0x03, 0xc9, 0x7e, 0xae, 0x26, 0x17, 0x1e, 0x9d, 0x49, 0x0b, - 0xb8, 0x9a, 0x95, 0x98, 0x18, 0x86, 0x2f, 0xe8, 0xcc, 0x83, 0xdf, 0x74, 0xe7, 0xf6, 0xc0, 0x02, - 0xe9, 0xc9, 0x00, 0x0f, 0xf1, 0x47, 0x72, 0x2f, 0xb7, 0xdb, 0xed, 0x55, 0x85, 0x83, 0x85, 0x16, - 0x1a, 0xc3, 0x3a, 0x67, 0xff, 0xab, 0x66, 0xb6, 0x41, 0xc1, 0x96, 0xd1, 0x80, 0x2d, 0x9c, 0xa1, - 0xc1, 0x3b, 0x62, 0x2b, 0x02, 0x74, 0x83, 0xd7, 0xd4, 0x15, 0xa8, 0x25, 0x03, 0xc4, 0xf8, 0xb7, - 0xbc, 0x11, 0xa9, 0x4b, 0xc1, 0xa6, 0xbd, 0x83, 0x3b, 0x92, 0xe2, 0xf8, 0x8a, 0xd5, 0xe0, 0xb2, - 0x9b, 0xb9, 0xdd, 0xf5, 0xba, 0x7a, 0xe7, 0x20, 0xcb, 0x6b, 0xe5, 0xc2, 0x57, 0xd8, 0x91, 0x6d, - 0xc2, 0xed, 0xf0, 0x43, 0x13, 0x20, 0x87, 0x3d, 0xfc, 0x12, 0x7c, 0x71, 0x19, 0x27, 0x21, 0x85, - 0xcf, 0x38, 0x99, 0x23, 0x97, 0xd0, 0xc8, 0x57, 0x15, 0xe0, 0x6f, 0x59, 0x82, 0x51, 0xb0, 0xda, - 0xf6, 0x04, 0xee, 0xfd, 0x3e, 0xae, 0x34, 0x80, 0xe1, 0x8c, 0x99, 0x44, 0x9f, 0x40, 0x7b, 0x97, - 0x85, 0x76, 0x82, 0x17, 0x1d, 0x5c, 0x05, 0x30, 0x87, 0x66, 0xa6, 0x62, 0xde, 0x7c, 0x37, 0x41, - 0x45, 0x53, 0xb5, 0x1c, 0x5b, 0x1d, 0xa0, 0x96, 0x27, 0x2b, 0x58, 0x64, 0x0e, 0x28, 0x97, 0xcb, - 0x44, 0x6a, 0x7b, 0x7b, 0xb7, 0x87, 0x31, 0xb6, 0x27, 0x81, 0x9f, 0xf2, 0xd7, 0xca, 0xd6, 0xab, - 0xfc, 0x93, 0xb6, 0xe1, 0xcb, 0x1b, 0x5d, 0xf3, 0x82, 0xe1, 0x30, 0x57, 0x73, 0x84, 0x66, 0x5e, - 0x31, 0xfb, 0xd8, 0x71, 0xc6, 0x38, 0xae, 0xe6, 0xd7, 0xb4, 0xa4, 0x15, 0x2b, 0xa3, 0xb9, 0xbd, - 0x95, 0x2a, 0xdc, 0xdf, 0x21, 0xbc, 0x1f, 0xe4, 0x6c, 0x88, 0x3d, 0x03, 0xc9, 0xde, 0xe4, 0xbc, - 0xe8, 0x32, 0xc6, 0x04, 0xe9, 0x50, 0x2e, 0x81, 0xec, 0x47, 0x2e, 0xba, 0xa6, 0xe4, 0x3e, 0x1e, - 0x72, 0x51, 0xd8, 0xae, 0x63, 0x21, 0x74, 0xe2, 0xa7, 0x8a, 0xe9, 0x73, 0xf5, 0x4d, 0xe4, 0xa4, - 0xb8, 0x7a, 0x9e, 0xbe, 0x7b, 0xac, 0x87, 0xb4, 0x72, 0x35, 0x57, 0xd1, 0x59, 0x1a, 0x6f, 0x04, - 0x77, 0x7c, 0x84, 0xed, 0xf1, 0x8c, 0x98, 0x1e, 0x0d, 0xee, 0x9e, 0x9f, 0xcc, 0xed, 0x4d, 0x57, - 0x99, 0xe4, 0xbf, 0xc6, 0x06, 0xc3, 0x90, 0x78, 0xa8, 0x17, 0xcd, 0x89, 0x90, 0x94, 0x89, 0xab, - 0x17, 0x13, 0x63, 0x8b, 0xb4, 0x2f, 0xa0, 0x5c, 0x2f, 0x5a, 0xe9, 0x27, 0xfd, 0x9e, 0xc0, 0x58, - 0xcf, 0xd0, 0x4c, 0x4b, 0x7e, 0x4e, 0xae, 0xfc, 0xe5, 0xdf, 0x95, 0x61, 0x41, 0x3f, 0xfc, 0xc4, - 0xd0, 0xd4, 0xff, 0x05, 0xdb, 0x43, 0x8c, 0xa7, 0xb9, 0xbd, 0xb7, 0xd9, 0x4b, 0xa2, 0xf1, 0x42, - 0x02, 0x24, 0x9a, 0x2d, 0xb1, 0x03, 0xfa, 0xbe, 0xb1, 0x4d, 0x9c, 0xeb, 0x6f, 0xe8, 0x94, 0xb6, - 0xab, 0xc4, 0xd5, 0x2a, 0xb1, 0xa0, 0x83, 0xdb, 0xdb, 0x0e, 0xb9, 0x79, 0xff, 0xa7, 0x98, 0x92, - 0xa9, 0xc3, 0x0d, 0x4d, 0x93, 0xf3, 0x4e, 0xe7, 0xe7, 0x9a, 0x02, 0x95, 0xf1, 0x66, 0xf9, 0x37, - 0xd7, 0x83, 0x27, 0x8f, 0x8e, 0xe9, 0x10, 0x3b, 0x71, 0x35, 0x6f, 0x23, 0xa5, 0x8d, 0x01, 0xe1, - 0x22, 0x38, 0xc5, 0xb1, 0x20, 0x67, 0x12, 0x6e, 0x7a, 0x1e, 0x82, 0x29, 0xb0, 0x34, 0x47, 0xbc, - 0x41, 0x56, 0xcf, 0xc5, 0x4d, 0xa4, 0xca, 0x79, 0x22, 0x84, 0x8b, 0x86, 0x18, 0x72, 0x92, 0x78, - 0x12, 0x6e, 0x8b, 0x55, 0x71, 0xd3, 0xab, 0x64, 0xd2, 0x22, 0x16, 0xf8, 0xfb, 0x3f, 0xe7, 0xf6, - 0xf6, 0xb2, 0x17, 0xc5, 0xbc, 0xb6, 0x84, 0x7a, 0xd1, 0x70, 0x35, 0xd6, 0x9f, 0x70, 0x5e, 0xb1, - 0x52, 0xde, 0xe4, 0x76, 0x32, 0x00, 0xf9, 0x18, 0x64, 0x7c, 0x55, 0x5d, 0x90, 0xfa, 0x81, 0x2e, - 0xb3, 0x03, 0x60, 0x0d, 0xc3, 0x73, 0xe2, 0xcd, 0xb9, 0x26, 0x79, 0x53, 0x3c, 0x66, 0x70, 0x32, - 0x08, 0x3a, 0x7b, 0x1d, 0x88, 0x9c, 0xd8, 0x23, 0xf2, 0xfe, 0xa5, 0x55, 0x31, 0xa4, 0x65, 0xba, - 0x21, 0x0e, 0x96, 0x85, 0xdb, 0xf5, 0x02, 0x28, 0xea, 0x3e, 0x16, 0xcd, 0xbf, 0x70, 0x62, 0x9e, - 0x72, 0x1c, 0xf3, 0x65, 0x0a, 0x5d, 0x6f, 0x54, 0xae, 0xd0, 0xea, 0x3e, 0x25, 0x55, 0xbd, 0x55, - 0xf6, 0x14, 0xde, 0x5e, 0x58, 0x18, 0xaf, 0x98, 0xbf, 0xe6, 0x8f, 0x58, 0x70, 0x3c, 0xa2, 0x4a, - 0xc2, 0x6d, 0x68, 0x48, 0xb8, 0x6e, 0xcf, 0x2c, 0x63, 0xca, 0x9e, 0x82, 0x64, 0x00, 0x6d, 0xe4, - 0x17, 0x54, 0xb7, 0xf0, 0x66, 0xe7, 0x04, 0x7a, 0x3e, 0xf0, 0x9b, 0xdb, 0x21, 0xfd, 0xd3, 0xea, - 0xdd, 0x7d, 0x0d, 0x2c, 0xcd, 0x57, 0x49, 0xb7, 0xe3, 0x21, 0xdf, 0xb1, 0xea, 0xaa, 0x77, 0x20, - 0xda, 0x61, 0xf8, 0xfb, 0x61, 0x56, 0x78, 0xdd, 0x26, 0x0d, 0x9c, 0x5f, 0x1b, 0x49, 0x53, 0x03, - 0xcf, 0x81, 0xf7, 0x78, 0x10, 0x16, 0x16, 0x22, 0xef, 0xa9, 0x51, 0xd7, 0x35, 0x32, 0xc0, 0x2e, - 0x49, 0x55, 0x90, 0x18, 0x8e, 0xc1, 0x9d, 0x1a, 0x73, 0x19, 0x6b, 0xb6, 0xe1, 0xa1, 0x7d, 0xbe, - 0x45, 0x2e, 0x55, 0x46, 0xe7, 0xf6, 0x8f, 0xd9, 0xf3, 0x12, 0xe7, 0xca, 0x81, 0x4a, 0xda, 0x7a, - 0x46, 0x69, 0x5d, 0x1d, 0x6a, 0x35, 0xf4, 0x60, 0xf3, 0x42, 0x76, 0xb8, 0xfb, 0x35, 0x05, 0xe0, - 0xfb, 0xa3, 0x01, 0x26, 0x86, 0xfa, 0x7f, 0xa5, 0x34, 0x8f, 0x1b, 0xdd, 0xdc, 0x43, 0x37, 0x8a, - 0x0e, 0xa9, 0xe8, 0x1d, 0xd7, 0x3f, 0x9b, 0x73, 0xcc, 0x65, 0xe1, 0x60, 0x07, 0x6f, 0x52, 0x3b, - 0x18, 0x73, 0x10, 0xab, 0x4d, 0xb6, 0x1f, 0x81, 0x9e, 0x41, 0xa3, 0x49, 0xd6, 0x3f, 0x30, 0xbc, - 0xe5, 0x73, 0x98, 0x6e, 0x68, 0xc1, 0x97, 0xd9, 0x64, 0x2e, 0x7b, 0x04, 0x5b, 0x2d, 0xf2, 0xbe, - 0x60, 0xaf, 0x70, 0xda, 0x2b, 0x27, 0xd4, 0xeb, 0xce, 0xec, 0xe1, 0x5e, 0x35, 0x74, 0x34, 0xb3, - 0x02, 0x61, 0x2e, 0xcb, 0x55, 0xfa, 0x6d, 0xfd, 0xd7, 0xfd, 0x1a, 0x42, 0xfd, 0x1c, 0xa6, 0x83, - 0x11, 0xc1, 0x91, 0xc2, 0x95, 0x1e, 0x99, 0xc1, 0x1e, 0x11, 0xb4, 0x07, 0x9e, 0x3a, 0xd0, 0x1e, - 0x3f, 0x19, 0xee, 0x71, 0x3f, 0xa4, 0x8a, 0x90, 0x5b, 0xdb, 0x92, 0x54, 0x74, 0xd2, 0x53, 0x15, - 0x78, 0x6b, 0x75, 0x55, 0x8f, 0xf9, 0x9f, 0x90, 0x1e, 0xe2, 0xad, 0xb1, 0x8c, 0xd0, 0x72, 0x28, - 0x99, 0xbf, 0xbe, 0x2f, 0x5f, 0x7e, 0x46, 0xb1, 0xfa, 0x10, 0x8e, 0x4c, 0xd3, 0xbb, 0x25, 0xfe, - 0x96, 0x09, 0x7c, 0xa6, 0xed, 0x20, 0xf0, 0xcd, 0x92, 0x2f, 0x9f, 0xbf, 0x43, 0x51, 0x88, 0x8f, - 0x60, 0xce, 0x03, 0xae, 0xfb, 0x5e, 0xca, 0x13, 0x8d, 0x3b, 0x87, 0xae, 0x0e, 0x8c, 0x1f, 0x9f, - 0xc2, 0x6d, 0xd8, 0xb3, 0xb3, 0x82, 0x1e, 0xf6, 0x23, 0x56, 0x5c, 0xe6, 0xa2, 0xf2, 0x35, 0x04, - 0xaa, 0x8a, 0xf2, 0x65, 0xc9, 0x57, 0x00, 0xa9, 0x27, 0xae, 0xbe, 0x33, 0x52, 0xca, 0x82, 0x0d, - 0xf2, 0xd2, 0xfe, 0x90, 0xac, 0x4d, 0x09, 0x49, 0xda, 0x41, 0x7a, 0x99, 0xa3, 0xa6, 0x1c, 0x8f, - 0x40, 0xfe, 0x50, 0x7d, 0x54, 0xa6, 0xb7, 0x40, 0xc0, 0x80, 0xba, 0x0a, 0x30, 0x3f, 0xbd, 0x83, - 0x47, 0x1e, 0x01, 0x70, 0x6d, 0x4b, 0x5d, 0x89, 0x78, 0x78, 0x2c, 0x5c, 0x86, 0x39, 0x1f, 0x76, - 0xd2, 0x6b, 0x7b, 0xca, 0xad, 0x97, 0xdc, 0xfc, 0x1c, 0x79, 0xc9, 0xac, 0xe0, 0xad, 0x86, 0xb9, - 0x08, 0x03, 0x76, 0x02, 0xd4, 0x49, 0x8b, 0x96, 0x42, 0x94, 0xe6, 0xd1, 0x9a, 0xb3, 0xe4, 0x9a, - 0xe7, 0xe6, 0x18, 0xd6, 0x3b, 0xb1, 0x15, 0x58, 0x77, 0x10, 0xbb, 0x9b, 0x72, 0x2c, 0xc1, 0x7b, - 0x11, 0x60, 0xf1, 0x2d, 0xf2, 0xb9, 0x41, 0x4a, 0xae, 0x64, 0x38, 0xa2, 0x6f, 0x26, 0xd9, 0x1a, - 0x92, 0xad, 0x26, 0xd9, 0x2a, 0xa2, 0x96, 0xa4, 0xc7, 0x31, 0x3e, 0xd1, 0x9a, 0x72, 0xe4, 0x49, - 0xb3, 0x86, 0x17, 0x3a, 0x02, 0x68, 0x10, 0x23, 0xe9, 0xb6, 0x05, 0xa4, 0xc3, 0x24, 0x55, 0x85, - 0x61, 0x71, 0xaa, 0xba, 0x2e, 0x53, 0x53, 0x9b, 0xaa, 0x49, 0x27, 0x3f, 0xd4, 0x8a, 0x99, 0xd1, - 0x24, 0x35, 0x5a, 0x94, 0xa8, 0xef, 0xfa, 0x25, 0xb5, 0x6b, 0x01, 0x6e, 0xe5, 0x75, 0x72, 0x1d, - 0xed, 0xda, 0x9d, 0x99, 0xe4, 0x0c, 0xd8, 0x0b, 0x42, 0x4d, 0x99, 0xf8, 0xf1, 0x33, 0x78, 0x32, - 0xce, 0x77, 0x71, 0x7b, 0xfb, 0xd1, 0x82, 0x80, 0x8e, 0x25, 0x12, 0xfb, 0x62, 0x72, 0x51, 0xb9, - 0xa1, 0x91, 0xd0, 0xa4, 0xdc, 0xd1, 0x98, 0x6e, 0xec, 0x12, 0xdc, 0x2c, 0x84, 0xcf, 0x30, 0x15, - 0x6e, 0x6f, 0x1b, 0xf4, 0xbc, 0xcc, 0x9e, 0xc4, 0x7b, 0x2c, 0x96, 0x65, 0x60, 0x53, 0x48, 0x26, - 0x10, 0x7e, 0xd5, 0x62, 0x92, 0x9b, 0xbe, 0xa2, 0x1e, 0x1e, 0x37, 0x8f, 0x5f, 0x08, 0xa7, 0x37, - 0x04, 0x48, 0xa6, 0x09, 0xac, 0x20, 0xc9, 0x7c, 0x5c, 0xa4, 0x97, 0x67, 0xc8, 0x9a, 0x6c, 0x92, - 0x99, 0xb1, 0x8f, 0xed, 0x5c, 0x07, 0xcd, 0xc7, 0x87, 0x90, 0xb5, 0x38, 0x7b, 0xc3, 0xdd, 0xa0, - 0x68, 0x70, 0x35, 0x2f, 0x62, 0xbf, 0x2a, 0xad, 0x10, 0x50, 0x71, 0xaf, 0x3c, 0x03, 0x99, 0x91, - 0x54, 0x78, 0x37, 0x8b, 0x54, 0x5d, 0xa0, 0x71, 0x78, 0x06, 0x31, 0xb4, 0x41, 0xcc, 0x58, 0xd0, - 0x42, 0x06, 0x3c, 0x1d, 0xaa, 0x08, 0xd4, 0x68, 0xc8, 0x3a, 0xca, 0xb4, 0x39, 0x26, 0x18, 0x1e, - 0x04, 0x57, 0xba, 0x1d, 0xd2, 0x3e, 0x88, 0xd8, 0x39, 0xc7, 0x58, 0x61, 0x20, 0x82, 0x73, 0x7d, - 0x8d, 0xcb, 0x68, 0x38, 0x0d, 0xee, 0x42, 0xca, 0x67, 0xe9, 0xd9, 0xcd, 0xa1, 0x58, 0xd4, 0xc7, - 0xa3, 0x78, 0x70, 0xdf, 0xfb, 0x3b, 0x31, 0x92, 0xd0, 0x65, 0x40, 0x46, 0xd2, 0xdb, 0x02, 0xc8, - 0x4b, 0x7a, 0x61, 0x03, 0xd9, 0x49, 0xef, 0x6f, 0xc0, 0x90, 0x6f, 0x3e, 0x4e, 0x5b, 0xa2, 0x89, - 0xcb, 0x84, 0xec, 0x3a, 0xaa, 0xdc, 0x98, 0xb9, 0x11, 0xba, 0x31, 0x23, 0x13, 0x7a, 0x43, 0xc9, - 0x75, 0x85, 0x1c, 0xdd, 0x4a, 0x2f, 0x1a, 0xac, 0x83, 0x6f, 0x47, 0x01, 0xdd, 0xb4, 0x1c, 0xe0, - 0xde, 0xf7, 0x8f, 0x25, 0xdd, 0x9e, 0x4f, 0xc7, 0x56, 0x37, 0x9f, 0xa1, 0x67, 0x09, 0xb8, 0x9c, - 0x41, 0x81, 0x0c, 0xdd, 0xc6, 0x39, 0x3f, 0x10, 0xa4, 0xdc, 0x75, 0x03, 0xb5, 0x04, 0x88, 0x8f, - 0x00, 0xe2, 0x79, 0xb5, 0xf8, 0x31, 0xca, 0xa3, 0x3e, 0x70, 0x6f, 0x3a, 0x10, 0xc6, 0x32, 0xab, - 0xf9, 0x0f, 0xc1, 0xe8, 0xf5, 0x8d, 0x42, 0x7d, 0xec, 0xdf, 0xa1, 0xde, 0xaa, 0xa0, 0x76, 0x1e, - 0x45, 0xcc, 0xcc, 0xc1, 0x00, 0xbd, 0x5c, 0x83, 0xd7, 0x23, 0x95, 0x7b, 0xb4, 0x22, 0x05, 0x23, - 0xe1, 0x22, 0x9d, 0x3c, 0x66, 0xe7, 0x74, 0xf2, 0x90, 0xb2, 0xd7, 0xd1, 0xc9, 0xd7, 0xa6, 0xd3, - 0x3b, 0x42, 0xe9, 0x5a, 0x51, 0x99, 0x7a, 0x7a, 0x74, 0xf8, 0xc7, 0x38, 0xe9, 0xc9, 0x94, 0x07, - 0xe1, 0x94, 0x3e, 0xe1, 0x12, 0x43, 0x2a, 0x13, 0xc9, 0xf6, 0xc5, 0xa2, 0xab, 0x0b, 0xaf, 0x74, - 0xa6, 0x27, 0x35, 0xa6, 0x2f, 0xa3, 0x19, 0x9a, 0x6b, 0x1d, 0xed, 0x13, 0x63, 0x06, 0xc1, 0x36, - 0xc9, 0x1f, 0x76, 0x05, 0xc5, 0xc3, 0x71, 0x3f, 0xde, 0x32, 0xca, 0x6b, 0xa3, 0x06, 0xfd, 0x04, - 0x35, 0xe8, 0x47, 0x44, 0xa3, 0x7b, 0x84, 0x41, 0xaf, 0x4d, 0x4f, 0x31, 0xcb, 0x15, 0x14, 0x5e, - 0x05, 0xda, 0x7a, 0x5f, 0xf0, 0x28, 0x90, 0xa4, 0x6f, 0x80, 0xf6, 0x49, 0x50, 0x42, 0xb5, 0xf4, - 0x69, 0x83, 0xd5, 0x08, 0x6f, 0xf3, 0xa6, 0xaf, 0x63, 0x40, 0x9a, 0xc4, 0x82, 0x16, 0xea, 0x26, - 0x4f, 0x23, 0xbb, 0x6a, 0xfe, 0x46, 0x8f, 0xd9, 0x39, 0xae, 0xe6, 0x34, 0x3c, 0x64, 0xa1, 0x54, - 0xd1, 0x43, 0x4c, 0xaa, 0xd5, 0x9d, 0x13, 0x50, 0x34, 0xee, 0x89, 0xd2, 0x15, 0xd2, 0x2d, 0xf1, - 0x57, 0xcd, 0x65, 0x5a, 0xb3, 0xc9, 0x92, 0x23, 0xa7, 0xf4, 0x2b, 0x7c, 0xdb, 0xa9, 0x02, 0xeb, - 0xf0, 0x06, 0x75, 0xc4, 0x1a, 0x91, 0x05, 0xbf, 0x42, 0x22, 0xc5, 0x54, 0x15, 0xc9, 0x54, 0x89, - 0xa9, 0x6a, 0x92, 0xa9, 0xae, 0x4b, 0xd5, 0xd4, 0x66, 0x6a, 0xb2, 0xc8, 0x4e, 0xad, 0x98, 0x1a, - 0x8d, 0x67, 0x8f, 0x20, 0x15, 0x4f, 0x2f, 0x26, 0x99, 0x89, 0x28, 0x15, 0x4f, 0x2f, 0xa3, 0x77, - 0xbd, 0x62, 0x94, 0xb5, 0x00, 0x05, 0xf9, 0x8d, 0x2f, 0xc4, 0x81, 0x07, 0x45, 0xe5, 0x6e, 0x10, - 0xe8, 0x87, 0xc2, 0x70, 0x50, 0x11, 0x45, 0x10, 0x25, 0xba, 0x10, 0x54, 0x51, 0x3e, 0x62, 0x6b, - 0x9f, 0x4e, 0xb1, 0xc8, 0x36, 0xda, 0x0b, 0xe2, 0x23, 0xe0, 0xc4, 0x44, 0x92, 0x89, 0x2c, 0xd0, - 0x88, 0x55, 0x7e, 0x5f, 0x8e, 0x3e, 0xb0, 0xd6, 0xf7, 0x38, 0x4c, 0x3e, 0xd3, 0xe6, 0xcd, 0x5c, - 0xc7, 0xf8, 0x52, 0xf1, 0x11, 0xe0, 0x93, 0x46, 0xc0, 0x8f, 0x51, 0xe0, 0xc3, 0x42, 0x50, 0xac, - 0xa4, 0xc8, 0x72, 0x98, 0x08, 0xcc, 0xce, 0x7c, 0x82, 0xac, 0x79, 0x4a, 0x4c, 0x83, 0x79, 0x3c, - 0x23, 0xa6, 0x81, 0x1a, 0x17, 0x63, 0x52, 0x1e, 0x1d, 0x3a, 0x15, 0x10, 0x96, 0xe3, 0xed, 0x0d, - 0xc6, 0x51, 0x44, 0xcd, 0x38, 0xb5, 0xe2, 0xe2, 0x78, 0x7a, 0xbf, 0x43, 0xf5, 0x27, 0xe7, 0x56, - 0xc8, 0xa5, 0xe2, 0x40, 0x25, 0xcb, 0xb4, 0xf9, 0x26, 0x79, 0x73, 0x5c, 0xd0, 0x36, 0x0d, 0xb7, - 0x3b, 0x16, 0x3a, 0xb7, 0xae, 0x63, 0xf9, 0x58, 0xc1, 0xfd, 0x04, 0x85, 0x58, 0x37, 0x1a, 0xc2, - 0xa1, 0xcd, 0x5c, 0xfa, 0x30, 0x62, 0xb7, 0x7f, 0x04, 0xb9, 0x52, 0xa4, 0xde, 0xdd, 0x00, 0x7d, - 0xd0, 0xec, 0xd3, 0xeb, 0x25, 0x40, 0xf6, 0xf2, 0xef, 0x8c, 0x19, 0xfd, 0x27, 0xe7, 0x8b, 0x36, - 0x96, 0x9f, 0x9e, 0x1f, 0xb0, 0x6f, 0x90, 0x0f, 0xf9, 0x83, 0x7b, 0xa6, 0x41, 0x74, 0x13, 0x69, - 0xbf, 0xcc, 0x64, 0xaf, 0xfd, 0xd2, 0x68, 0x7c, 0xca, 0x55, 0x14, 0xc8, 0x36, 0x17, 0x05, 0x53, - 0x96, 0x3c, 0xad, 0x12, 0x61, 0x8b, 0xcb, 0x29, 0xd6, 0x31, 0xc9, 0x15, 0x6a, 0x3e, 0x2a, 0xe9, - 0x09, 0x0d, 0x1f, 0x91, 0x6c, 0xd2, 0x3a, 0xd4, 0x42, 0xa3, 0x6a, 0x25, 0xdf, 0x19, 0x4c, 0x77, - 0x11, 0x4d, 0xa8, 0xff, 0xfd, 0x34, 0x6b, 0xcf, 0x53, 0x8b, 0xf4, 0xba, 0x8b, 0x18, 0x99, 0x8c, - 0xc0, 0x5e, 0x00, 0xbe, 0x45, 0xb3, 0x73, 0x00, 0x05, 0x00, 0xb0, 0x75, 0x6a, 0x09, 0x37, 0xee, - 0xef, 0xe6, 0x98, 0x82, 0x9b, 0xa8, 0x9a, 0x91, 0x77, 0x48, 0xe9, 0xa5, 0x78, 0x89, 0xf7, 0x2b, - 0x17, 0xa7, 0x41, 0xad, 0x1b, 0xc2, 0xb8, 0xfd, 0xe9, 0x43, 0x68, 0xd3, 0x19, 0xdc, 0xb0, 0x1b, - 0x98, 0xe3, 0x88, 0xab, 0x0e, 0x0c, 0xe1, 0x99, 0x78, 0x54, 0xed, 0xcb, 0x8f, 0xc3, 0x40, 0x60, - 0xfb, 0xfc, 0x5e, 0xfa, 0xc4, 0xa4, 0xfb, 0xce, 0x03, 0x30, 0x98, 0x82, 0x67, 0x5f, 0x4a, 0x12, - 0x06, 0x72, 0x77, 0xe6, 0x0b, 0x03, 0x66, 0xae, 0x66, 0x05, 0x9e, 0x84, 0x0c, 0xe4, 0x71, 0x35, - 0xf7, 0xd1, 0x87, 0x27, 0x38, 0xd7, 0x0e, 0x94, 0xea, 0x7e, 0xc9, 0xae, 0x86, 0xd8, 0x70, 0x12, - 0xb9, 0x1d, 0xa8, 0x50, 0xc9, 0x4b, 0x81, 0x96, 0xce, 0xb1, 0xf4, 0xb6, 0xfc, 0x6b, 0xc2, 0x6d, - 0xf5, 0x96, 0xb4, 0x40, 0xbc, 0xf4, 0x0b, 0x74, 0x9d, 0x97, 0xc4, 0x49, 0x30, 0x63, 0xd2, 0x0d, - 0x11, 0xdd, 0x7d, 0x08, 0xf3, 0x0e, 0x45, 0xf2, 0x80, 0xe3, 0x71, 0x61, 0x20, 0x43, 0x09, 0x7f, - 0xbe, 0x85, 0xa9, 0x1c, 0xc8, 0xec, 0x3c, 0x4e, 0x95, 0x6a, 0x3d, 0x57, 0xb3, 0x9d, 0x82, 0x17, - 0x73, 0x2e, 0x35, 0x42, 0x06, 0x91, 0xb5, 0x60, 0x32, 0xda, 0x6d, 0x92, 0x33, 0x10, 0x74, 0x2d, - 0x46, 0xf8, 0x61, 0x42, 0xbd, 0x0a, 0xef, 0xe8, 0x18, 0x64, 0x93, 0x5c, 0xe6, 0x57, 0x72, 0xbf, - 0x7a, 0xa1, 0x1e, 0xe7, 0xfd, 0x2a, 0x46, 0x60, 0xa4, 0x55, 0xaa, 0x08, 0xac, 0xc2, 0x23, 0x1a, - 0xa3, 0x0c, 0x89, 0x7a, 0xe0, 0x01, 0xe2, 0xe7, 0x3f, 0x87, 0xb8, 0x17, 0xaf, 0x9a, 0xff, 0x10, - 0xef, 0xa4, 0xe2, 0xe6, 0x72, 0x75, 0x00, 0xbf, 0x81, 0x79, 0x5c, 0xcd, 0x49, 0xa8, 0xcb, 0x02, - 0xfd, 0xaa, 0xd3, 0xd6, 0xfe, 0xe7, 0x6a, 0x60, 0x8d, 0xd0, 0xc9, 0x72, 0xbb, 0x3e, 0x82, 0xca, - 0x94, 0xac, 0xea, 0x00, 0x6e, 0x1c, 0xf3, 0xff, 0x80, 0xec, 0x95, 0xf6, 0xea, 0x7c, 0xf7, 0xbb, - 0x73, 0xd8, 0x15, 0x3c, 0x2e, 0xee, 0x21, 0x43, 0x9d, 0x3c, 0xd2, 0x17, 0x25, 0xa5, 0xa9, 0x31, - 0xf9, 0xfc, 0x1a, 0xb5, 0xdc, 0xae, 0xc2, 0x61, 0x91, 0xac, 0xc3, 0xf7, 0x86, 0xe5, 0x6a, 0x96, - 0x52, 0x37, 0x22, 0xaf, 0xc9, 0xaa, 0x63, 0x6b, 0x5f, 0xa6, 0x83, 0x7e, 0x05, 0x83, 0x62, 0x84, - 0x9e, 0x1a, 0x1c, 0x94, 0xab, 0x41, 0xcd, 0xf1, 0x5d, 0x57, 0x16, 0x90, 0x7b, 0xb9, 0x1b, 0xb0, - 0x29, 0x4b, 0xb7, 0x22, 0xab, 0xf3, 0x53, 0x26, 0xc8, 0x87, 0xd0, 0xdb, 0x0d, 0x75, 0xea, 0x1a, - 0x18, 0xf1, 0xaf, 0xf0, 0x94, 0x12, 0x1a, 0x02, 0x9d, 0x53, 0xed, 0x7f, 0xd0, 0x55, 0xaf, 0x53, - 0xa7, 0xd4, 0x34, 0xf3, 0x37, 0x3b, 0x7f, 0xcb, 0x30, 0xa3, 0x16, 0xa9, 0x11, 0x4f, 0x94, 0x07, - 0x81, 0xf8, 0xce, 0x23, 0x78, 0x5f, 0x51, 0x11, 0x15, 0x4d, 0x5d, 0xd8, 0x3d, 0x61, 0x81, 0x21, - 0x7c, 0x2f, 0x02, 0x1f, 0xeb, 0x58, 0x30, 0x32, 0x33, 0x53, 0x81, 0x5f, 0xc0, 0x0a, 0x65, 0x04, - 0xc7, 0x8f, 0x82, 0x60, 0x75, 0x6c, 0x6a, 0x8d, 0x9b, 0xff, 0xd2, 0xb7, 0x56, 0x69, 0xf5, 0xad, - 0xfa, 0xf3, 0xdc, 0x43, 0x83, 0xb8, 0x77, 0xa8, 0x80, 0x65, 0xd4, 0xfe, 0xa7, 0x02, 0xf6, 0x13, - 0x13, 0xc8, 0x48, 0x2a, 0x2f, 0xfb, 0x1e, 0xfd, 0xd3, 0xdc, 0x83, 0x23, 0x00, 0x26, 0x85, 0xa8, - 0xac, 0x45, 0x80, 0x14, 0x00, 0x88, 0x38, 0x4e, 0x0f, 0x54, 0x86, 0x65, 0xd5, 0xa7, 0x0b, 0x55, - 0xf8, 0xc6, 0x93, 0x41, 0x34, 0x85, 0x79, 0x7e, 0x72, 0x09, 0x86, 0x0b, 0xb6, 0x93, 0x7a, 0xb0, - 0x5f, 0x9d, 0xdf, 0xdc, 0xc5, 0x0b, 0x93, 0x22, 0x4a, 0x86, 0x9f, 0x34, 0xfa, 0x1a, 0x9c, 0xcb, - 0x69, 0xbe, 0xcb, 0x2f, 0x52, 0xb2, 0x50, 0x96, 0x5f, 0x24, 0x2c, 0xdf, 0xb0, 0x1a, 0x4d, 0xd0, - 0x2c, 0x7d, 0xdf, 0xbb, 0x36, 0x78, 0xca, 0xb7, 0x61, 0xf7, 0xc0, 0xe2, 0x7d, 0xf2, 0xb9, 0xfb, - 0xc2, 0x50, 0xbb, 0xc0, 0x8c, 0x20, 0x84, 0xfd, 0x53, 0x57, 0x80, 0x7f, 0xbe, 0xb3, 0x99, 0xa1, - 0x91, 0x0e, 0x7d, 0xf9, 0x42, 0xdf, 0x27, 0x15, 0x1c, 0x29, 0x9b, 0x5b, 0xc6, 0x98, 0xe5, 0x9f, - 0xdf, 0x47, 0x35, 0x91, 0x3b, 0xf6, 0x63, 0xec, 0x2d, 0x0c, 0x44, 0xf1, 0xdf, 0x6b, 0x34, 0x74, - 0x8c, 0x9f, 0x00, 0x51, 0x2f, 0x58, 0x7b, 0xf9, 0x7b, 0x27, 0x69, 0x50, 0x88, 0xd7, 0x01, 0xcd, - 0x72, 0xb9, 0x02, 0x7b, 0x30, 0x0a, 0x5a, 0x7d, 0x11, 0xe3, 0x99, 0x09, 0xb8, 0xec, 0x1d, 0x14, - 0x2e, 0xd0, 0x4c, 0xe1, 0xf0, 0xc8, 0xf0, 0x37, 0xfa, 0xbe, 0x10, 0x8d, 0xe6, 0x10, 0xd5, 0xab, - 0x9c, 0xcb, 0xd3, 0xa8, 0xbd, 0x4c, 0xe5, 0xf6, 0x07, 0x07, 0x9a, 0xee, 0x48, 0xc0, 0xd1, 0x26, - 0x94, 0x8d, 0x97, 0xd3, 0x36, 0x51, 0xa1, 0xdb, 0x17, 0xe5, 0x9b, 0x4a, 0x8f, 0x87, 0xdf, 0xf1, - 0x85, 0xa2, 0xe1, 0x49, 0x75, 0x14, 0x9a, 0xdb, 0x0f, 0xb5, 0x71, 0x0a, 0x14, 0x0e, 0xf1, 0xcb, - 0xd0, 0x4d, 0xed, 0x90, 0xf9, 0x88, 0x03, 0xdf, 0xa3, 0x77, 0xe3, 0x0d, 0x6a, 0x70, 0x31, 0x78, - 0x1e, 0x7c, 0x15, 0xc2, 0x21, 0xd2, 0x32, 0xd6, 0xef, 0xf8, 0x21, 0xb9, 0x44, 0x8c, 0x90, 0x37, - 0xa3, 0xe2, 0xf5, 0xe8, 0xeb, 0xf5, 0x8d, 0x09, 0x8d, 0xb1, 0xf5, 0x9f, 0x4c, 0x42, 0xd9, 0xc9, - 0xeb, 0x82, 0xa0, 0x20, 0x2a, 0x37, 0x5f, 0x7e, 0xe0, 0x6c, 0x30, 0x7b, 0x66, 0x3d, 0xd2, 0x62, - 0x42, 0x6e, 0x27, 0x74, 0x3b, 0x9b, 0x13, 0x6b, 0x1f, 0x9f, 0xd1, 0xb6, 0xfa, 0xd0, 0x58, 0xdc, - 0xd7, 0xba, 0x4d, 0xef, 0xda, 0x43, 0x9c, 0x47, 0x1a, 0xed, 0xcd, 0x42, 0x95, 0x9a, 0xd9, 0x3a, - 0x2d, 0xdd, 0x17, 0x27, 0xb2, 0xcb, 0xa9, 0x88, 0xa5, 0x4b, 0x26, 0x96, 0x4c, 0xf4, 0x3a, 0x91, - 0xd0, 0x44, 0xdf, 0x22, 0x6f, 0xc6, 0x8c, 0xb6, 0x1f, 0x88, 0x46, 0x7f, 0x1d, 0xfc, 0xc2, 0x0c, - 0x1e, 0x90, 0xf2, 0xda, 0xa4, 0x1d, 0x93, 0x59, 0x71, 0x62, 0xf5, 0xa0, 0x22, 0x20, 0x92, 0x9d, - 0x25, 0xfa, 0xda, 0x5d, 0x08, 0x5e, 0x37, 0x06, 0xcf, 0xbd, 0x6f, 0x88, 0xac, 0xd2, 0x1b, 0xcf, - 0xf6, 0x46, 0x4d, 0x4b, 0x47, 0x30, 0xec, 0xc4, 0x89, 0x8d, 0x98, 0x95, 0xe1, 0x82, 0xd7, 0x20, - 0x33, 0xc4, 0x3f, 0xb6, 0xc5, 0xf1, 0x14, 0x4c, 0x4d, 0xaa, 0xea, 0x0c, 0xcd, 0xc4, 0x22, 0xff, - 0xf0, 0xcc, 0xbd, 0x99, 0x68, 0x08, 0xe9, 0x4d, 0x38, 0xe5, 0x3c, 0x95, 0x58, 0x5b, 0x38, 0xb4, - 0x56, 0x99, 0x48, 0x37, 0x4d, 0x7d, 0xa7, 0xf3, 0x5d, 0xc4, 0x6b, 0x3f, 0x49, 0x2f, 0xd7, 0x2e, - 0xa7, 0x34, 0x25, 0xd0, 0x29, 0xd4, 0xbe, 0x45, 0x69, 0x9a, 0x99, 0x55, 0x73, 0x85, 0xff, 0x87, - 0x6f, 0x4a, 0x68, 0x7e, 0x13, 0x46, 0xce, 0x6f, 0x04, 0xa9, 0xba, 0xd1, 0x2b, 0x80, 0x7c, 0xee, - 0xfa, 0x0e, 0xb5, 0x94, 0xd4, 0x01, 0x20, 0x75, 0xbd, 0x64, 0xe8, 0x24, 0x17, 0xc9, 0x1d, 0xe1, - 0x73, 0xae, 0x4e, 0x3c, 0x95, 0xc9, 0x32, 0xb5, 0xc6, 0xde, 0xda, 0xec, 0x21, 0xd2, 0xca, 0xbd, - 0x3f, 0x18, 0xe7, 0xf9, 0x4a, 0x95, 0xfd, 0x09, 0x87, 0x14, 0xde, 0xa1, 0x57, 0x70, 0x63, 0xcf, - 0x02, 0xb6, 0x1e, 0x7b, 0xeb, 0x81, 0xc4, 0xc3, 0x34, 0x0e, 0xae, 0xea, 0xaa, 0x2b, 0xe8, 0x15, - 0x1f, 0xad, 0x1e, 0xa2, 0xd4, 0xe6, 0x4b, 0x6b, 0x58, 0xc2, 0xd5, 0x1e, 0xa3, 0xd4, 0x1e, 0xc6, - 0x6d, 0x97, 0x34, 0xfe, 0x33, 0xf1, 0x3e, 0x5f, 0xc6, 0x9f, 0x13, 0x0f, 0x7e, 0xa3, 0x80, 0x8b, - 0x40, 0x4a, 0x08, 0x3c, 0x57, 0xda, 0xc9, 0x92, 0x64, 0xa8, 0xac, 0xfd, 0x29, 0xed, 0xf1, 0x5a, - 0x53, 0x3a, 0x2a, 0xe6, 0x75, 0x71, 0xcc, 0xb7, 0xb8, 0x4e, 0x6d, 0x9a, 0x97, 0x2e, 0x0c, 0x53, - 0x73, 0xc5, 0x71, 0x5d, 0xbc, 0x2f, 0xb8, 0x64, 0x7f, 0x93, 0x56, 0xe1, 0x80, 0x3f, 0xa3, 0xdd, - 0x63, 0x52, 0x7c, 0x9f, 0x51, 0xf3, 0xe9, 0x73, 0x87, 0xb6, 0x6c, 0x79, 0xb5, 0xab, 0x8f, 0x0f, - 0x23, 0x5f, 0xd9, 0x10, 0xb3, 0xac, 0xa5, 0x91, 0xb6, 0xea, 0x38, 0xa3, 0x05, 0x5f, 0x98, 0x89, - 0x11, 0xda, 0x73, 0xe2, 0x23, 0xc1, 0xbd, 0xa3, 0x43, 0x1d, 0xd9, 0x78, 0xb7, 0xe2, 0xac, 0x38, - 0x31, 0xb9, 0xbe, 0xf2, 0x31, 0xc2, 0xfb, 0x21, 0xb0, 0xba, 0x48, 0xae, 0xa3, 0x09, 0xbb, 0xe3, - 0x5c, 0x16, 0xcb, 0x48, 0x4f, 0xb2, 0x7c, 0xbf, 0x18, 0x1d, 0x9b, 0x5c, 0x6f, 0xff, 0x82, 0xbd, - 0x4d, 0xea, 0x13, 0x7a, 0x72, 0x73, 0x4c, 0xb6, 0xab, 0xc0, 0x2e, 0xf9, 0x10, 0x8d, 0x55, 0xc1, - 0x43, 0xfb, 0x29, 0x66, 0xdf, 0x04, 0x93, 0xed, 0x6f, 0x38, 0xdc, 0xbb, 0x03, 0x8a, 0xbb, 0xef, - 0xe3, 0x5f, 0xb7, 0x59, 0x10, 0xf0, 0x35, 0xa5, 0x62, 0xc4, 0xea, 0x38, 0x97, 0xcf, 0x5d, 0xc3, - 0x32, 0xac, 0x12, 0xf1, 0x81, 0x97, 0xad, 0x6e, 0xa0, 0xd6, 0xfb, 0x73, 0x3c, 0x89, 0x7c, 0x77, - 0x31, 0x34, 0x89, 0x0f, 0x27, 0xc2, 0x37, 0xe9, 0x66, 0xdb, 0xc1, 0xf7, 0x9c, 0x63, 0x8e, 0xd3, - 0xd3, 0xbc, 0xb3, 0x54, 0xea, 0x63, 0x5b, 0xed, 0xcf, 0xe2, 0xb5, 0xf0, 0x9c, 0x32, 0x96, 0x9e, - 0x3b, 0xe6, 0x40, 0x00, 0x68, 0x7b, 0x0d, 0xcc, 0x8a, 0xed, 0x1d, 0xf8, 0x92, 0xff, 0x49, 0x6f, - 0x72, 0xcc, 0x53, 0x10, 0xd4, 0xb8, 0xc9, 0x75, 0x3e, 0x85, 0x62, 0xac, 0xf6, 0x22, 0xb0, 0xd0, - 0x82, 0x48, 0x6f, 0x53, 0xa4, 0xe4, 0xce, 0x68, 0xb4, 0x84, 0x76, 0x79, 0x0f, 0x81, 0x2b, 0xff, - 0xcb, 0x56, 0xa2, 0x1c, 0x53, 0x44, 0x77, 0xe1, 0x95, 0xb0, 0x7c, 0xb3, 0x45, 0x0e, 0x9f, 0x4c, - 0x6d, 0x0d, 0xbb, 0x1c, 0xa1, 0x84, 0x29, 0x08, 0xc6, 0x98, 0x47, 0x0c, 0x6c, 0x64, 0x82, 0x2f, - 0x6d, 0x28, 0x5b, 0x2f, 0x8d, 0x06, 0x96, 0xf1, 0x1d, 0xc3, 0x3d, 0x63, 0x83, 0xae, 0xce, 0x18, - 0xcf, 0xed, 0xcf, 0x9b, 0xcb, 0xed, 0x6f, 0x06, 0xbb, 0x41, 0x4f, 0xd0, 0x46, 0xdd, 0x53, 0x08, - 0xf0, 0xea, 0x11, 0x78, 0xe6, 0x2b, 0x13, 0xb8, 0x27, 0xc8, 0x26, 0xfa, 0x26, 0x95, 0x5a, 0xc4, - 0x98, 0xd7, 0xe0, 0x47, 0x97, 0x64, 0xc6, 0x54, 0x2b, 0x15, 0x4c, 0x4b, 0x8b, 0x04, 0x61, 0xad, - 0xe1, 0x34, 0x58, 0x4f, 0xd5, 0x66, 0x61, 0x87, 0x47, 0xcb, 0x72, 0xae, 0x12, 0x0c, 0x1c, 0x96, - 0x79, 0xf0, 0xad, 0x00, 0x3f, 0x5e, 0xa2, 0xe0, 0x2f, 0x90, 0xaa, 0x26, 0x41, 0x06, 0xf7, 0xd7, - 0x48, 0x4d, 0xcc, 0x09, 0x62, 0x70, 0x8b, 0xf7, 0x89, 0x5b, 0x54, 0x62, 0x96, 0x9a, 0x6d, 0xc1, - 0x7b, 0x2a, 0x59, 0x9a, 0x89, 0x7e, 0x54, 0x0f, 0xbf, 0xb8, 0x6d, 0x40, 0xd4, 0xb3, 0x43, 0x84, - 0x3f, 0x22, 0xbe, 0x70, 0x57, 0xfc, 0xa1, 0x6a, 0x62, 0x2f, 0xc9, 0x6b, 0x4b, 0x06, 0xb9, 0x07, - 0xcd, 0x89, 0xad, 0xe7, 0xde, 0xf0, 0x92, 0x2a, 0x79, 0x29, 0xde, 0x5b, 0x3f, 0x02, 0x29, 0xe8, - 0x74, 0xbe, 0x83, 0x7b, 0xbd, 0x5e, 0xd7, 0x83, 0xbb, 0x9b, 0x31, 0x4b, 0xc1, 0x0a, 0x5c, 0x9f, - 0x5e, 0x75, 0xd5, 0x3e, 0x61, 0x29, 0xa8, 0x1a, 0x3c, 0x75, 0x70, 0xbb, 0x34, 0xe0, 0xb8, 0x43, - 0xf5, 0xd0, 0xb7, 0xaf, 0x9e, 0xe5, 0xb5, 0xa4, 0x91, 0xde, 0x8d, 0xc1, 0xf3, 0x3d, 0x7c, 0x25, - 0x6f, 0x60, 0x29, 0xd8, 0x47, 0x68, 0xef, 0x02, 0x4c, 0x35, 0x17, 0xf9, 0x48, 0xd1, 0xd0, 0x46, - 0xaf, 0xc6, 0x37, 0x91, 0x42, 0x15, 0x19, 0x23, 0xe6, 0xc9, 0xb8, 0x43, 0xd6, 0x15, 0xdb, 0x46, - 0xf2, 0xd5, 0x24, 0x4b, 0xa3, 0xbf, 0x22, 0xf2, 0x90, 0x5a, 0xba, 0xc5, 0xbc, 0x13, 0x82, 0x27, - 0x66, 0x15, 0xe7, 0x7a, 0x10, 0x55, 0x2b, 0x4b, 0x2d, 0xae, 0xd5, 0x90, 0xfa, 0xb1, 0x27, 0x1d, - 0x26, 0x67, 0x95, 0x96, 0x71, 0x94, 0x2c, 0xc7, 0x75, 0x26, 0x27, 0x85, 0xcb, 0x8c, 0xfd, 0x31, - 0xf1, 0x51, 0x18, 0xa6, 0xda, 0x8b, 0xc2, 0x25, 0xe6, 0x63, 0x54, 0x03, 0xcb, 0xfe, 0x09, 0x0a, - 0xd9, 0xac, 0x6b, 0xca, 0x65, 0x09, 0x60, 0xe9, 0xa3, 0x09, 0x7e, 0xc0, 0x4b, 0xf2, 0x55, 0x20, - 0x01, 0x6b, 0x35, 0x87, 0x68, 0x6b, 0x13, 0xc9, 0x52, 0xfb, 0xa6, 0x03, 0xfb, 0x24, 0x55, 0xae, - 0x68, 0x6c, 0x91, 0x16, 0x7b, 0x0e, 0x61, 0x10, 0xd8, 0xfb, 0x01, 0x40, 0xae, 0x02, 0xef, 0xb8, - 0x06, 0xd6, 0x23, 0x73, 0x29, 0x44, 0x37, 0xbb, 0x04, 0xcc, 0xa8, 0xaa, 0xfc, 0x10, 0x10, 0x1c, - 0xa3, 0xa9, 0x4d, 0xdd, 0xf8, 0xdd, 0xb0, 0x88, 0xb5, 0x46, 0x59, 0xd2, 0xa4, 0x80, 0xed, 0x11, - 0x76, 0x9c, 0xd4, 0xb2, 0xfc, 0xb3, 0xd2, 0xb2, 0x93, 0xce, 0x2a, 0x99, 0xe1, 0x1f, 0x17, 0x39, - 0xb1, 0x50, 0x45, 0xd5, 0x3a, 0xf9, 0x24, 0xbd, 0xc9, 0x1c, 0x7b, 0xd9, 0xfe, 0xa8, 0x98, 0xaf, - 0x16, 0xb7, 0x68, 0x80, 0x3a, 0xf6, 0xe4, 0xc4, 0xde, 0xea, 0x41, 0x16, 0xe5, 0xf4, 0x0a, 0x63, - 0xd7, 0x57, 0x37, 0x23, 0x31, 0xe1, 0x90, 0xcd, 0x5f, 0x0c, 0x90, 0xb5, 0x6a, 0xb2, 0x45, 0xd3, - 0x98, 0x45, 0x4f, 0xde, 0x1b, 0xc7, 0xe0, 0x1c, 0xc5, 0xb5, 0xea, 0x71, 0x6b, 0x35, 0x8e, 0x28, - 0xbc, 0x65, 0x34, 0x1b, 0xbf, 0x66, 0xc2, 0xd7, 0xca, 0xe4, 0xa6, 0xca, 0x68, 0x72, 0x4a, 0xd2, - 0xac, 0xc4, 0x3b, 0x8d, 0x8b, 0x4f, 0x06, 0xe9, 0x26, 0xed, 0xd9, 0xfa, 0x2b, 0x29, 0x60, 0x9c, - 0x93, 0x9b, 0xb8, 0x5d, 0x45, 0x34, 0x0d, 0xf6, 0xe3, 0x49, 0x0b, 0x3f, 0x45, 0xef, 0x4e, 0x01, - 0xa9, 0xea, 0x44, 0x69, 0x1e, 0xce, 0xcf, 0xb2, 0x89, 0x11, 0x6f, 0x30, 0x49, 0xaa, 0x27, 0x25, - 0x95, 0x87, 0xe0, 0x6e, 0x9e, 0x3f, 0xf9, 0x3c, 0x29, 0x68, 0x23, 0xed, 0x95, 0xcb, 0x70, 0x6b, - 0x20, 0x51, 0xdc, 0x8a, 0x9b, 0xa6, 0xa2, 0xb1, 0x8d, 0x34, 0x61, 0xac, 0x60, 0x94, 0xc5, 0x71, - 0x68, 0x6b, 0xcd, 0xaa, 0xe4, 0x6e, 0xd2, 0x1a, 0x7b, 0x1b, 0x22, 0x1a, 0x2e, 0x6d, 0x10, 0xef, - 0xaa, 0xa4, 0xf1, 0x5d, 0x5c, 0x5a, 0x53, 0x8a, 0xd0, 0x10, 0x93, 0x5c, 0xcf, 0x5f, 0x92, 0x54, - 0x94, 0xaa, 0xb8, 0x7a, 0x4a, 0x95, 0x64, 0x78, 0x9f, 0x34, 0x92, 0x6b, 0xbd, 0x1f, 0xd0, 0x12, - 0xee, 0xc2, 0x5c, 0x1d, 0x51, 0x22, 0x5e, 0xa0, 0xba, 0x55, 0x2c, 0x68, 0x4b, 0x17, 0x0c, 0x1d, - 0x31, 0x90, 0xa8, 0x25, 0x37, 0x70, 0xae, 0x32, 0xdc, 0x22, 0xc9, 0x49, 0xc4, 0x5b, 0x36, 0x57, - 0x14, 0x02, 0xc5, 0x75, 0x1e, 0xad, 0x30, 0xc8, 0x3a, 0xb4, 0xd5, 0x83, 0xe1, 0xc0, 0x13, 0x87, - 0xba, 0x7a, 0x90, 0xc6, 0x94, 0x2f, 0x48, 0x1a, 0x4f, 0x72, 0xce, 0x5c, 0xbe, 0x48, 0xcc, 0x51, - 0x8b, 0x2f, 0x68, 0xc4, 0x64, 0x92, 0x27, 0xb3, 0x97, 0xc4, 0x1c, 0xd5, 0xc4, 0x9e, 0x45, 0xdb, - 0x62, 0x16, 0xe5, 0xc4, 0x8d, 0x1d, 0xe4, 0x0d, 0x20, 0x61, 0xe1, 0x39, 0xba, 0xc9, 0x2f, 0xc4, - 0x93, 0x1c, 0x35, 0x79, 0x41, 0x23, 0xad, 0x0e, 0xc3, 0x99, 0xb6, 0x56, 0x3e, 0x40, 0x5a, 0x13, - 0xda, 0xe9, 0x6d, 0x9b, 0x2e, 0x49, 0x55, 0x2f, 0x6d, 0x95, 0x89, 0xc2, 0x47, 0x85, 0x26, 0xc1, - 0x1d, 0xb3, 0x92, 0xff, 0x72, 0x35, 0xaa, 0xa4, 0xe1, 0x86, 0x6f, 0x1c, 0xbe, 0x81, 0x60, 0x54, - 0xfb, 0xc2, 0xe1, 0x37, 0x1d, 0x38, 0x99, 0x0d, 0x74, 0xee, 0x7a, 0x86, 0x72, 0x18, 0xcf, 0xa6, - 0x88, 0x5a, 0x38, 0x61, 0x52, 0x2c, 0xc2, 0x83, 0xe9, 0xd4, 0xa2, 0xd4, 0x7f, 0x41, 0x37, 0x63, - 0xf1, 0xae, 0x08, 0x58, 0xb0, 0x7b, 0x7a, 0x3f, 0x9e, 0x6e, 0xab, 0x68, 0xde, 0xc5, 0x1a, 0x12, - 0xe9, 0x8d, 0xa0, 0x16, 0xf2, 0x20, 0x36, 0x8d, 0xb8, 0x96, 0xa4, 0x11, 0x96, 0x47, 0x57, 0xe1, - 0xfe, 0x7e, 0xcd, 0xeb, 0x74, 0x3f, 0xe5, 0x60, 0x0c, 0x94, 0xc4, 0x19, 0xb4, 0x8f, 0x51, 0xae, - 0xbe, 0x83, 0x57, 0x98, 0xb9, 0x1a, 0xdc, 0xb9, 0x90, 0x34, 0x7f, 0xa7, 0x6f, 0xeb, 0xef, 0x5e, - 0x89, 0x28, 0x14, 0xf2, 0x2f, 0xe1, 0x04, 0xc4, 0x17, 0x55, 0x62, 0x94, 0x68, 0x57, 0xe3, 0x9b, - 0x1c, 0x7e, 0xd1, 0xae, 0x99, 0x38, 0x24, 0xbc, 0x88, 0x86, 0x03, 0xcf, 0x7f, 0x0e, 0x4f, 0x00, - 0xdc, 0x56, 0x71, 0x12, 0x77, 0xfc, 0x1c, 0x77, 0xe0, 0xb2, 0xe7, 0x73, 0x15, 0x70, 0xf3, 0x9d, - 0x40, 0xe0, 0x30, 0xbe, 0xbf, 0xcc, 0x19, 0x2f, 0x27, 0xb7, 0x0b, 0xd7, 0x19, 0x7b, 0xa1, 0x32, - 0x9e, 0x14, 0x4d, 0x07, 0x10, 0x5f, 0xc9, 0xc5, 0x01, 0x8e, 0x63, 0xb0, 0x99, 0x7c, 0x96, 0x3a, - 0xcb, 0xe9, 0x47, 0x72, 0xdf, 0xc7, 0x30, 0xef, 0x91, 0xea, 0x2a, 0x3f, 0x0b, 0xab, 0x41, 0xfa, - 0xa1, 0x9b, 0x58, 0x25, 0x73, 0xbb, 0x4e, 0x51, 0x8a, 0x68, 0x07, 0x10, 0x6e, 0x90, 0x6e, 0x76, - 0x95, 0x5a, 0xc8, 0xd5, 0x04, 0x1a, 0xd3, 0x14, 0xb9, 0x0e, 0x43, 0x83, 0x7c, 0x48, 0x21, 0x62, - 0x2c, 0x77, 0xbc, 0x95, 0x3b, 0x70, 0xd2, 0xf3, 0xe9, 0x68, 0x22, 0x50, 0x6d, 0xb4, 0x80, 0xcd, - 0x9f, 0x3c, 0xa8, 0x28, 0x50, 0x8f, 0xdd, 0x16, 0x8c, 0x87, 0x62, 0xbb, 0x2b, 0x0b, 0xee, 0x75, - 0x6e, 0xe6, 0x0e, 0xb4, 0x7a, 0x3e, 0x53, 0x55, 0xdf, 0xc6, 0xce, 0x87, 0x94, 0xce, 0xad, 0x41, - 0xd2, 0x15, 0xde, 0xa0, 0xc8, 0x1e, 0x59, 0xb9, 0x07, 0x2a, 0x1e, 0xaa, 0xf2, 0xa3, 0x83, 0x7e, - 0x65, 0xe5, 0xef, 0xa1, 0x10, 0xdb, 0x0d, 0x82, 0x02, 0x61, 0xee, 0x91, 0x5c, 0x6c, 0xc2, 0xf7, - 0x55, 0x5f, 0xc9, 0xc5, 0x7a, 0x5f, 0xa4, 0xd2, 0x3b, 0x9d, 0xd0, 0x1f, 0x98, 0x50, 0x16, 0x88, - 0xc2, 0x52, 0xba, 0x20, 0xe4, 0x36, 0xb7, 0x6b, 0x3b, 0x6e, 0xfe, 0xf4, 0x1d, 0xc7, 0xb6, 0x4f, - 0x70, 0x86, 0x96, 0x7c, 0xb3, 0x9c, 0x44, 0x77, 0x0a, 0x15, 0xab, 0x72, 0xf0, 0xd1, 0x5f, 0xab, - 0x98, 0x59, 0x4d, 0x6c, 0xd3, 0x21, 0x94, 0x50, 0x8b, 0xa5, 0x8c, 0xb5, 0xe4, 0x58, 0x4c, 0x96, - 0x1c, 0x00, 0x5b, 0x42, 0x93, 0x9c, 0x79, 0xd8, 0x23, 0x52, 0xe9, 0xa1, 0xac, 0x3f, 0x13, 0xba, - 0x53, 0x62, 0x8b, 0x4f, 0xa5, 0xc2, 0xe3, 0xfa, 0x07, 0x15, 0x1e, 0x3c, 0x2b, 0x1f, 0x4f, 0xc7, - 0x55, 0x53, 0x09, 0xa0, 0x02, 0x12, 0x74, 0xaa, 0x0e, 0x3d, 0x48, 0x5e, 0x04, 0x9a, 0x98, 0x39, - 0x38, 0x2a, 0xbe, 0xa4, 0x73, 0x2e, 0x27, 0x37, 0x37, 0x37, 0x27, 0xd7, 0x94, 0x3b, 0xda, 0xd3, - 0x9c, 0x08, 0x0b, 0x7a, 0x1a, 0xea, 0xac, 0x00, 0xfb, 0xf7, 0xfe, 0x11, 0x3a, 0x27, 0x10, 0x0b, - 0xb4, 0xca, 0x25, 0x22, 0xd7, 0x15, 0xc7, 0xe2, 0x83, 0x48, 0x6f, 0x19, 0x63, 0x32, 0x99, 0xe5, - 0x8d, 0x4c, 0xf0, 0x7e, 0x8f, 0x2b, 0xe0, 0x98, 0x27, 0x56, 0x69, 0x92, 0xef, 0x70, 0xe9, 0xd7, - 0xcd, 0x80, 0xd6, 0x22, 0x9f, 0x19, 0x87, 0xfb, 0x33, 0x78, 0xef, 0xe8, 0x84, 0x06, 0x92, 0xfa, - 0x3e, 0x80, 0x88, 0x32, 0xe5, 0xcb, 0xeb, 0xe9, 0xe5, 0x32, 0x75, 0xd0, 0x2d, 0x02, 0xf6, 0x61, - 0x6c, 0x78, 0xe5, 0x60, 0xc6, 0x88, 0xbb, 0x4b, 0x65, 0xcc, 0xb0, 0x3b, 0xfc, 0xee, 0x9d, 0xa6, - 0x18, 0x3c, 0x79, 0x82, 0x7c, 0x3d, 0x43, 0x8d, 0x1b, 0x62, 0xf8, 0x72, 0xf3, 0x70, 0x0c, 0x31, - 0x84, 0x52, 0x38, 0x9e, 0xaa, 0x40, 0x53, 0xf6, 0xd6, 0x17, 0x13, 0xd0, 0x6a, 0xaf, 0x94, 0x16, - 0xff, 0xe5, 0x2d, 0x5c, 0xbd, 0xc7, 0x58, 0xfe, 0x19, 0x31, 0xd3, 0x2f, 0x5a, 0x6e, 0x89, 0x3b, - 0x07, 0xc0, 0x94, 0xb1, 0x8d, 0xe2, 0xd3, 0x77, 0x27, 0x9e, 0x77, 0x56, 0x45, 0x33, 0x3c, 0xe7, - 0xba, 0xb2, 0x73, 0x9c, 0x3e, 0xe0, 0x3a, 0xf7, 0x09, 0xee, 0x2a, 0xbf, 0x94, 0x44, 0x0a, 0xf0, - 0x7d, 0x47, 0x90, 0x05, 0xb0, 0xbe, 0x94, 0x18, 0x73, 0x3e, 0x1a, 0xc2, 0xbc, 0x2e, 0x39, 0xbe, - 0x01, 0xf4, 0xd9, 0xd8, 0x01, 0x14, 0x41, 0xb0, 0x7e, 0x5e, 0xcc, 0xbb, 0xb1, 0xb4, 0xea, 0x2a, - 0x69, 0x9b, 0x0e, 0x8e, 0xcc, 0x20, 0x57, 0x45, 0xaf, 0x14, 0xbc, 0xb2, 0xab, 0xf9, 0xa5, 0x37, - 0x6c, 0x7f, 0x57, 0x34, 0xbc, 0xe3, 0xf3, 0x40, 0x20, 0x61, 0x10, 0xdc, 0x96, 0x57, 0xef, 0x06, - 0xf6, 0x9b, 0x4c, 0x39, 0x78, 0x85, 0xcb, 0x92, 0x6b, 0xce, 0x1f, 0xc1, 0xfc, 0x2c, 0xba, 0xba, - 0xf3, 0x90, 0x10, 0xc7, 0x64, 0xb2, 0x1c, 0x89, 0x25, 0x33, 0x7e, 0x81, 0x9a, 0x84, 0x8f, 0xbe, - 0x09, 0x01, 0xde, 0x8f, 0x87, 0x34, 0x92, 0x72, 0xb5, 0xb4, 0x8c, 0x19, 0xd1, 0xf5, 0x73, 0x65, - 0x5f, 0x9c, 0x0c, 0x08, 0x27, 0x62, 0x46, 0x04, 0x1b, 0xae, 0x7b, 0x47, 0xe5, 0x20, 0x1e, 0x46, - 0x8d, 0xfe, 0x1c, 0x31, 0xa9, 0x08, 0x1e, 0xde, 0x6f, 0x17, 0xf3, 0xb4, 0x42, 0x7d, 0x68, 0xff, - 0x2d, 0xf4, 0x5e, 0xfb, 0x12, 0x96, 0x37, 0x89, 0x69, 0x7e, 0xf1, 0xc5, 0x5b, 0xc7, 0xa8, 0xf2, - 0x06, 0x0f, 0xcb, 0x87, 0xc4, 0x1f, 0x0d, 0xd8, 0x17, 0x90, 0x6b, 0xac, 0x77, 0xf2, 0x8b, 0x77, - 0xab, 0x87, 0x50, 0x81, 0x51, 0xeb, 0x67, 0x43, 0x9c, 0x97, 0xe0, 0x1d, 0x8f, 0x4a, 0x0b, 0xa1, - 0x14, 0x6a, 0x35, 0xef, 0x0f, 0x2f, 0xe8, 0x62, 0x1b, 0x48, 0x41, 0x97, 0x4f, 0xcd, 0xc2, 0x57, - 0x38, 0x5b, 0x00, 0x09, 0x2d, 0xd8, 0xc6, 0x0f, 0xe8, 0xf8, 0x7e, 0x92, 0xad, 0x42, 0x35, 0xd2, - 0x06, 0x43, 0xbf, 0x7a, 0x15, 0x43, 0x6d, 0x1b, 0x84, 0x9f, 0x2b, 0x42, 0xdb, 0x3b, 0x28, 0x61, - 0xc7, 0xf6, 0xa1, 0x32, 0xad, 0xf1, 0x8b, 0x4f, 0xdf, 0x4a, 0x86, 0x28, 0x3b, 0xf6, 0x32, 0xa4, - 0xa0, 0x55, 0x6a, 0xfb, 0x84, 0xf0, 0x35, 0x03, 0x93, 0x9f, 0xbe, 0x0b, 0x55, 0xad, 0xb1, 0xed, - 0xf6, 0xc9, 0x82, 0x37, 0x26, 0x9b, 0x6f, 0xd7, 0x9f, 0x5b, 0x45, 0x5a, 0x7c, 0x51, 0xe8, 0xa1, - 0xea, 0x1b, 0xc4, 0x48, 0xfd, 0xb9, 0x51, 0x11, 0x7f, 0xb4, 0x58, 0x00, 0x69, 0x57, 0x4c, 0xdd, - 0xc6, 0xc4, 0x3a, 0xe3, 0x3c, 0x40, 0x0e, 0x19, 0x49, 0x1b, 0xb7, 0xdb, 0xad, 0xeb, 0x54, 0x7b, - 0xc4, 0x25, 0xa4, 0xaa, 0x83, 0xbe, 0x91, 0xc0, 0xb9, 0xea, 0x61, 0x96, 0xe1, 0x10, 0x8b, 0x40, - 0x00, 0xd2, 0x36, 0xd9, 0x10, 0x0d, 0xe1, 0x08, 0x88, 0xaa, 0x55, 0xcc, 0xc3, 0x1b, 0x6f, 0x52, - 0x85, 0xd6, 0x75, 0xce, 0xa1, 0x4a, 0x9e, 0xca, 0xaf, 0x55, 0x48, 0x22, 0x05, 0x37, 0xc4, 0xcc, - 0x01, 0xb6, 0x49, 0xb4, 0xdc, 0x9d, 0x78, 0x19, 0xb4, 0x22, 0xf9, 0x94, 0x58, 0x10, 0x4d, 0xda, - 0xa7, 0x1b, 0x6f, 0x70, 0xaf, 0x7b, 0x92, 0x0d, 0x5a, 0x90, 0x86, 0x82, 0x38, 0xee, 0x8d, 0xbf, - 0x40, 0x24, 0x33, 0x3d, 0x0f, 0xe2, 0x18, 0xb7, 0x5a, 0x56, 0x37, 0x39, 0xab, 0xe6, 0x31, 0xbc, - 0x6a, 0x0f, 0xeb, 0x98, 0xb9, 0x87, 0x05, 0x6a, 0x00, 0xb5, 0xc3, 0x04, 0x13, 0x58, 0xcb, 0xbf, - 0x57, 0x2b, 0x2f, 0x66, 0x67, 0x1b, 0xe6, 0x2e, 0x63, 0x1d, 0xab, 0x6a, 0xfe, 0xc7, 0xb1, 0x58, - 0xaa, 0xea, 0xc0, 0x3d, 0xca, 0x6e, 0x32, 0x18, 0xe0, 0x75, 0xe6, 0xe1, 0x98, 0x50, 0x7e, 0x44, - 0xb9, 0xb8, 0x5a, 0x86, 0x07, 0x36, 0x5f, 0xd3, 0x77, 0x97, 0x34, 0xe2, 0x18, 0x58, 0x52, 0xc2, - 0xfa, 0xc6, 0x04, 0x57, 0x11, 0xdc, 0x0d, 0x40, 0x28, 0xcb, 0x5f, 0x98, 0x41, 0xe5, 0xce, 0xf6, - 0xe9, 0xbd, 0x63, 0xbe, 0x44, 0xcc, 0x7e, 0xc0, 0x71, 0x6b, 0x49, 0x6b, 0x38, 0x38, 0x2a, 0xa0, - 0xf9, 0xda, 0x64, 0x1e, 0x90, 0xd0, 0x08, 0x12, 0x22, 0x42, 0xae, 0x66, 0x0f, 0x7d, 0x3b, 0xaf, - 0x8b, 0x18, 0x6f, 0x80, 0x2f, 0x2d, 0xe8, 0x40, 0x5f, 0x6a, 0xbc, 0x0a, 0x5e, 0x53, 0x9c, 0x08, - 0xa1, 0x9f, 0xf8, 0x82, 0x9a, 0xf0, 0xa7, 0xd9, 0x8b, 0xc4, 0xd8, 0x26, 0x6e, 0xd3, 0x90, 0xaa, - 0x13, 0x13, 0xaf, 0xe3, 0x05, 0x9e, 0xbc, 0x96, 0xe4, 0x7a, 0xd2, 0x0e, 0xac, 0x8d, 0x6d, 0x85, - 0xe9, 0x43, 0x6c, 0x99, 0x0c, 0xb9, 0x62, 0x5e, 0x57, 0xec, 0x20, 0x04, 0x70, 0xea, 0x93, 0x0e, - 0xf0, 0x69, 0x37, 0x96, 0x42, 0x8c, 0x66, 0xec, 0x8a, 0xbd, 0xcd, 0xbd, 0x61, 0xf0, 0x41, 0xe8, - 0x94, 0xec, 0x21, 0x97, 0xa7, 0xe7, 0x69, 0x20, 0x00, 0x04, 0x10, 0x88, 0x0e, 0xae, 0x41, 0xae, - 0x07, 0xec, 0x52, 0xff, 0x2d, 0x6a, 0xa3, 0x8f, 0x5f, 0x05, 0x9a, 0x24, 0xf2, 0x2d, 0x09, 0x17, - 0x31, 0xca, 0x6b, 0x08, 0xe7, 0x4f, 0x4f, 0x2e, 0x38, 0x81, 0x41, 0xc5, 0x44, 0x92, 0xaa, 0x22, - 0x40, 0xc1, 0x0f, 0x35, 0x9d, 0xe7, 0xe9, 0x6b, 0xdb, 0xfe, 0x55, 0x10, 0x6e, 0x24, 0x9f, 0xaf, - 0x9c, 0x4c, 0xe3, 0xb1, 0xab, 0xa1, 0x78, 0x4c, 0xac, 0x6a, 0xeb, 0xfd, 0x60, 0x75, 0xe7, 0xc7, - 0xd4, 0x35, 0x8b, 0x86, 0x0b, 0xc9, 0x10, 0xcd, 0xd2, 0xb1, 0x61, 0x69, 0xbc, 0xb5, 0x7e, 0xa4, - 0x73, 0x90, 0x7b, 0x03, 0x28, 0x53, 0xb7, 0x38, 0x5e, 0x04, 0xdb, 0x64, 0xbc, 0x90, 0x6c, 0x1c, - 0x86, 0x10, 0xab, 0x5a, 0x92, 0xfb, 0x15, 0xe2, 0x20, 0x8e, 0x3d, 0x89, 0x71, 0x6c, 0x29, 0x1e, - 0x3d, 0x74, 0x27, 0xdc, 0x06, 0xd3, 0x17, 0x8b, 0xaf, 0x01, 0x92, 0x55, 0xca, 0x29, 0xa6, 0x7f, - 0x39, 0xfa, 0x55, 0x20, 0xa1, 0xb2, 0x4c, 0x52, 0xa5, 0x88, 0xab, 0xb4, 0x62, 0xde, 0x55, 0xf2, - 0x78, 0xbd, 0x36, 0x00, 0xae, 0x1f, 0x38, 0xe8, 0xa8, 0x57, 0xe1, 0xb9, 0xaf, 0xa6, 0x5e, 0xac, - 0xba, 0x90, 0x70, 0x96, 0xec, 0xa8, 0x07, 0xe9, 0x3f, 0x1d, 0xdb, 0x0d, 0x10, 0x1a, 0x7c, 0xdd, - 0x33, 0x96, 0x74, 0x3f, 0x64, 0x6c, 0xf9, 0x16, 0xce, 0x3c, 0x3f, 0xa0, 0x4b, 0x27, 0x18, 0x58, - 0x71, 0xbb, 0xaa, 0xf0, 0xb5, 0x69, 0xa3, 0xbf, 0xfa, 0x76, 0x80, 0xbe, 0x8b, 0xa2, 0x85, 0xe5, - 0xda, 0x3c, 0x21, 0x64, 0xf2, 0x5f, 0xbf, 0x8e, 0x46, 0x1c, 0x4f, 0x92, 0xcf, 0x62, 0x54, 0xc7, - 0x5f, 0x25, 0x19, 0x67, 0xd0, 0x38, 0xc3, 0x8f, 0x0a, 0xd7, 0x44, 0x75, 0x86, 0x3c, 0x75, 0x46, - 0x43, 0xd6, 0x9d, 0x51, 0x67, 0x89, 0x86, 0x26, 0x92, 0x24, 0x9c, 0x48, 0x0c, 0x69, 0x45, 0x59, - 0x85, 0x2c, 0x52, 0x77, 0xa2, 0xf2, 0xa6, 0x8c, 0x67, 0x95, 0xbb, 0x4c, 0x42, 0xd7, 0x5c, 0x89, - 0xbf, 0x80, 0xdb, 0x27, 0x16, 0x39, 0x31, 0x52, 0x79, 0x95, 0x32, 0x33, 0xde, 0x64, 0xa1, 0x1e, - 0x69, 0x9a, 0xdc, 0x74, 0x90, 0x4a, 0x9b, 0xb5, 0x7a, 0x67, 0xfc, 0x1a, 0x0b, 0x6f, 0xe7, 0x0e, - 0xe0, 0xfb, 0x45, 0x2a, 0xee, 0x00, 0x7f, 0x8b, 0xf5, 0x96, 0x45, 0xda, 0x96, 0xa4, 0xe2, 0x7d, - 0xc5, 0xc5, 0x91, 0xc1, 0xfd, 0x61, 0xfe, 0x09, 0x00, 0x8c, 0x64, 0xc2, 0x36, 0xe7, 0x8b, 0x99, - 0x73, 0xb9, 0x03, 0x7e, 0x8f, 0xac, 0x11, 0x3a, 0xfc, 0x00, 0xa9, 0xb2, 0xbd, 0x98, 0x81, 0x90, - 0x51, 0xc3, 0x90, 0xcb, 0xf0, 0x2a, 0xec, 0xc9, 0xc3, 0x94, 0x1a, 0xe7, 0xf2, 0x94, 0xa5, 0xb8, - 0x1b, 0x33, 0xde, 0xf6, 0x30, 0xbe, 0xd3, 0x55, 0xf1, 0x25, 0xad, 0x15, 0x4e, 0xcc, 0x85, 0x48, - 0xc7, 0x76, 0x1f, 0x54, 0xf9, 0x26, 0xdb, 0xc2, 0xa0, 0xbf, 0x4f, 0x63, 0xdb, 0x9a, 0x4a, 0xdf, - 0xfd, 0x9a, 0x14, 0x7c, 0xff, 0xfd, 0x5a, 0x48, 0xc2, 0xab, 0xbb, 0x70, 0xe7, 0x54, 0xe4, 0x35, - 0xae, 0x3e, 0xc7, 0x0f, 0x2c, 0xb2, 0xe7, 0x4a, 0xe8, 0xf0, 0x41, 0x27, 0xb9, 0xf0, 0x3e, 0xb3, - 0xc9, 0x22, 0xd7, 0x5f, 0x09, 0x6e, 0x3b, 0x73, 0xae, 0xa5, 0x78, 0x4e, 0x75, 0x14, 0xeb, 0x7d, - 0x36, 0xbd, 0x5b, 0xfa, 0x98, 0xbe, 0x4f, 0x1e, 0x89, 0x6f, 0x04, 0x65, 0xaa, 0xac, 0x8d, 0x99, - 0x61, 0xe1, 0x0c, 0x01, 0xda, 0x55, 0xa4, 0x5b, 0xf8, 0x54, 0x73, 0x1c, 0x8f, 0x14, 0x67, 0x0d, - 0xe4, 0x98, 0xca, 0x5e, 0x90, 0xe3, 0x0f, 0x2b, 0xba, 0xb7, 0x39, 0x92, 0x04, 0xe7, 0x36, 0x6b, - 0x88, 0xf5, 0x3a, 0x97, 0x6b, 0x31, 0x06, 0xe3, 0xa7, 0xd9, 0xe6, 0xe2, 0x81, 0xa8, 0x4d, 0xde, - 0x0e, 0x46, 0xf9, 0xac, 0x4a, 0xb9, 0xb1, 0x17, 0x81, 0x6d, 0xac, 0xb8, 0x33, 0x5a, 0xfa, 0x38, - 0x12, 0x4f, 0x03, 0x17, 0x22, 0xa3, 0x1b, 0x55, 0xc1, 0xdc, 0x10, 0x06, 0x11, 0x6e, 0x4e, 0xe0, - 0x0e, 0xb8, 0x2d, 0xa6, 0x32, 0x8d, 0xfc, 0x97, 0x43, 0x14, 0x3d, 0xfe, 0x1d, 0x00, 0xce, 0xb5, - 0x93, 0xbe, 0xfa, 0xeb, 0xd2, 0x28, 0x47, 0x3e, 0x0a, 0x8d, 0xb6, 0x57, 0xf1, 0x8e, 0x0c, 0x20, - 0xf8, 0x71, 0x10, 0xc1, 0xce, 0x30, 0x89, 0xbe, 0xb9, 0x0c, 0x46, 0xc2, 0x24, 0x3f, 0xd6, 0x1e, - 0x74, 0xad, 0x14, 0x2b, 0xa7, 0x60, 0x9d, 0x23, 0x97, 0x8f, 0xc4, 0x3a, 0x17, 0x7d, 0xbc, 0xc1, - 0xdf, 0x52, 0x96, 0x28, 0x3b, 0x07, 0x82, 0x17, 0x79, 0x44, 0x43, 0xbd, 0xbe, 0x8f, 0x54, 0xea, - 0x48, 0x7a, 0xdc, 0x3e, 0xb6, 0x36, 0xbc, 0x36, 0x3d, 0x9e, 0x6c, 0x9f, 0x6b, 0x6d, 0x4c, 0x9f, - 0x67, 0x00, 0xab, 0x02, 0x78, 0x1d, 0x97, 0x15, 0x40, 0x7c, 0xfd, 0xbf, 0x4b, 0xda, 0x1a, 0x96, - 0x2f, 0x1b, 0x82, 0x5d, 0xd3, 0xd5, 0x5e, 0x66, 0x81, 0x98, 0xae, 0x4e, 0x09, 0xf0, 0x32, 0x25, - 0xa1, 0x3d, 0x5c, 0xa1, 0x6b, 0xbb, 0xe6, 0x60, 0x1d, 0x3d, 0xa7, 0xdb, 0x8a, 0xa7, 0x59, 0x96, - 0x7c, 0xf9, 0x6f, 0xe1, 0xc1, 0x37, 0xd6, 0xbb, 0x48, 0x56, 0x98, 0xb5, 0xf1, 0x65, 0x6c, 0x65, - 0x0c, 0xa0, 0x4a, 0x56, 0xf2, 0x32, 0x5e, 0x9c, 0x94, 0x5c, 0xbb, 0x86, 0x82, 0xd3, 0xd8, 0xd2, - 0xa6, 0x4c, 0x03, 0x5f, 0xcc, 0x16, 0xbe, 0x40, 0xe6, 0xe4, 0x9b, 0xca, 0x74, 0xf2, 0x9e, 0x83, - 0xa1, 0xd3, 0xdf, 0x39, 0xc0, 0x16, 0x8a, 0xd7, 0xf6, 0x0f, 0xbc, 0xb3, 0x92, 0x2a, 0x53, 0xf8, - 0xb2, 0x44, 0x08, 0x96, 0x94, 0xdb, 0xd8, 0x9d, 0x69, 0x2c, 0xe5, 0x9d, 0x8a, 0xf2, 0x4e, 0x36, - 0xc9, 0x3f, 0xfd, 0x67, 0x70, 0x06, 0x5d, 0x81, 0xca, 0x38, 0xf9, 0xe5, 0xfe, 0x20, 0xf5, 0x5a, - 0x31, 0x3d, 0x6e, 0x5c, 0xba, 0x8e, 0xab, 0xb9, 0x4e, 0x4f, 0x88, 0xba, 0x48, 0x93, 0xd0, 0xc1, - 0xe1, 0x1b, 0xed, 0x4d, 0xb8, 0xf8, 0x86, 0xd3, 0x92, 0xe1, 0x1a, 0xbd, 0x70, 0x2e, 0x74, 0x4c, - 0x08, 0x5a, 0x59, 0x20, 0x06, 0xb2, 0x6c, 0xee, 0x00, 0x64, 0x41, 0x17, 0xf0, 0x30, 0xb3, 0xad, - 0xd1, 0x70, 0x0d, 0xeb, 0xad, 0x8d, 0x86, 0xcf, 0xd0, 0x06, 0x37, 0x59, 0x31, 0x83, 0x36, 0x9c, - 0x86, 0x9f, 0x9b, 0x01, 0xbe, 0x25, 0x00, 0x9a, 0x35, 0x5b, 0xfe, 0xea, 0x40, 0xe8, 0x3e, 0x92, - 0x6b, 0x3f, 0x0e, 0x94, 0xae, 0x25, 0x43, 0xec, 0x00, 0x77, 0xc0, 0xf8, 0x19, 0xc4, 0x01, 0x5d, - 0x26, 0xf9, 0xfd, 0x30, 0x65, 0x87, 0xf3, 0x40, 0xde, 0x67, 0xec, 0x45, 0xeb, 0xd2, 0x3c, 0x99, - 0x7b, 0xc3, 0x13, 0x65, 0xf4, 0x03, 0x71, 0x7d, 0x1e, 0x56, 0x5c, 0xad, 0x73, 0xa8, 0x48, 0xbf, - 0x2f, 0x31, 0x74, 0x88, 0xd6, 0x9f, 0xec, 0x55, 0x5e, 0x0a, 0x00, 0xcf, 0xd3, 0x56, 0x19, 0x9b, - 0x6b, 0x5b, 0x87, 0x3a, 0xb3, 0xec, 0x0b, 0x3a, 0x73, 0xe8, 0x03, 0x1d, 0xfe, 0xcc, 0xa2, 0x21, - 0x69, 0xa4, 0xe7, 0xa5, 0xb1, 0x90, 0xe0, 0xe5, 0x63, 0x9a, 0x64, 0xb8, 0x66, 0xa5, 0x19, 0x7f, - 0x70, 0x42, 0xdc, 0x81, 0x66, 0x53, 0x4e, 0xd9, 0x2c, 0x39, 0x27, 0x44, 0x1c, 0xff, 0x08, 0x5d, - 0xc4, 0x2e, 0xd9, 0xf3, 0xb5, 0xc2, 0xff, 0x6b, 0xf8, 0x96, 0xc9, 0x8e, 0xe1, 0x57, 0x79, 0x1f, - 0x52, 0x54, 0x6e, 0x32, 0x68, 0x91, 0xc5, 0x86, 0x5b, 0xc7, 0x65, 0xac, 0x1c, 0x09, 0x05, 0xdb, - 0x6f, 0x20, 0xca, 0xf1, 0xfd, 0x03, 0x6d, 0xc9, 0xc1, 0xa1, 0x2a, 0x0c, 0xb6, 0xd5, 0x30, 0xd0, - 0xe2, 0x49, 0x56, 0x51, 0x0b, 0x65, 0x2d, 0x94, 0x13, 0xf7, 0xb1, 0xd6, 0xe4, 0x1e, 0xfe, 0xfe, - 0x60, 0xb3, 0xb6, 0xff, 0x9c, 0x95, 0x68, 0xad, 0x22, 0x73, 0x58, 0x69, 0x9e, 0x64, 0x4d, 0x6e, - 0xe1, 0xde, 0x74, 0x1f, 0xa6, 0xad, 0x24, 0x2a, 0x98, 0xdd, 0xa0, 0x61, 0xfa, 0x88, 0x95, 0x3f, - 0x00, 0xd2, 0x6b, 0x80, 0x71, 0x78, 0xab, 0x46, 0xe2, 0x5b, 0x14, 0x3b, 0x55, 0xcb, 0x86, 0xec, - 0x14, 0x1b, 0x4f, 0xed, 0xd4, 0x14, 0x59, 0xf7, 0xdf, 0x74, 0x1a, 0x32, 0x4f, 0xe1, 0xf9, 0xa2, - 0x1b, 0xc5, 0x7b, 0xc2, 0xf8, 0xc1, 0x7d, 0x7f, 0xb8, 0x59, 0x1c, 0x7c, 0x6a, 0xa1, 0x4f, 0xac, - 0x63, 0xf0, 0xc6, 0x33, 0xc4, 0x13, 0xac, 0x6b, 0x0d, 0xb5, 0x3a, 0x9b, 0xc3, 0x48, 0xd3, 0xcd, - 0x67, 0x82, 0xd5, 0x7f, 0x0c, 0x55, 0xcb, 0xdf, 0x53, 0xb0, 0x4d, 0xbe, 0xf1, 0x3a, 0x14, 0x23, - 0xe3, 0xef, 0x6a, 0xc2, 0x6e, 0xbe, 0x2e, 0x4f, 0x42, 0xa9, 0xa2, 0xf7, 0x24, 0xe6, 0x3e, 0x3d, - 0x22, 0xda, 0x48, 0x91, 0x0c, 0xa7, 0x91, 0x3c, 0x93, 0xdc, 0xc9, 0x04, 0xdf, 0xa8, 0x39, 0xce, - 0x80, 0x68, 0x4a, 0x05, 0xff, 0x8d, 0x7f, 0x2b, 0x48, 0xc6, 0x40, 0x4b, 0x8e, 0xa1, 0xf1, 0xd6, - 0x0d, 0x53, 0xaa, 0xd1, 0x4c, 0x0a, 0xae, 0xe2, 0xdb, 0x77, 0x26, 0x20, 0x7e, 0xfd, 0x47, 0xc1, - 0x57, 0xd3, 0x2f, 0xb0, 0xfc, 0x42, 0xe2, 0x27, 0x83, 0xd2, 0xf1, 0x98, 0x37, 0x43, 0x49, 0x1a, - 0xa4, 0xc0, 0x42, 0x55, 0x17, 0xe3, 0x98, 0x4a, 0xbc, 0x99, 0x10, 0x4e, 0x91, 0x4b, 0xfc, 0x3e, - 0xdb, 0xcf, 0x15, 0x57, 0xf0, 0x72, 0x3b, 0xfe, 0x19, 0x8c, 0x4c, 0xf2, 0x30, 0x86, 0xfe, 0xc2, - 0x89, 0x94, 0x11, 0x2f, 0xc0, 0xd0, 0xb8, 0x39, 0x3a, 0xb0, 0xd8, 0xe5, 0x86, 0x95, 0xb2, 0xa5, - 0x2a, 0xf0, 0xf9, 0x00, 0x7f, 0xd0, 0x89, 0xb9, 0x68, 0xed, 0x91, 0x6c, 0x16, 0x98, 0xfd, 0x0a, - 0xa3, 0xfb, 0xa9, 0x8a, 0x69, 0xac, 0x61, 0x66, 0xc3, 0x0f, 0xd0, 0xf6, 0x2a, 0x7d, 0x83, 0xf2, - 0x15, 0xe6, 0x41, 0x28, 0x0a, 0x6e, 0x15, 0x7f, 0x09, 0x90, 0x71, 0xec, 0x8c, 0x8f, 0x41, 0xf2, - 0x0a, 0x1a, 0x4e, 0x5b, 0xf2, 0xf1, 0xef, 0xa5, 0x91, 0x46, 0xd1, 0x11, 0xaf, 0x15, 0x1f, 0x8f, - 0x8f, 0xee, 0x7d, 0xbf, 0xf0, 0xe9, 0x86, 0x7c, 0x71, 0x5d, 0xbc, 0x9a, 0x5c, 0xc2, 0x16, 0xa8, - 0xd3, 0xf6, 0xfe, 0x96, 0xb4, 0x14, 0x36, 0x7c, 0x1b, 0x32, 0xb9, 0x7f, 0x8b, 0xaa, 0xf7, 0x7d, - 0x9f, 0x46, 0xda, 0xc1, 0x05, 0x24, 0xc7, 0x84, 0xc0, 0x37, 0xbd, 0xef, 0xdf, 0x85, 0xbe, 0x00, - 0xb6, 0x03, 0xba, 0x85, 0xd0, 0xfd, 0xda, 0x31, 0xae, 0x2e, 0x2b, 0xf0, 0xfd, 0xcc, 0x00, 0x77, - 0xcc, 0x8d, 0x67, 0x9e, 0x00, 0x71, 0x7a, 0xe4, 0xbf, 0xbb, 0x7a, 0xdc, 0xd0, 0x34, 0xe1, 0x9d, - 0x37, 0x98, 0xc3, 0x6b, 0xaf, 0x85, 0xca, 0xac, 0xac, 0x1e, 0x55, 0x0e, 0x93, 0x07, 0x86, 0x46, - 0x96, 0xc3, 0x65, 0x79, 0x54, 0x59, 0x25, 0xb7, 0x8d, 0x2a, 0x47, 0xc8, 0x4d, 0xa3, 0xca, 0x91, - 0xf2, 0xc1, 0x51, 0xe5, 0x31, 0xf2, 0x1e, 0xa5, 0xfc, 0x04, 0x2d, 0xaa, 0xe5, 0xff, 0x47, 0x8b, - 0xc3, 0xed, 0x63, 0xe5, 0xda, 0x91, 0xed, 0x51, 0xf2, 0xb6, 0x60, 0xbb, 0x52, 0x1e, 0x27, 0x97, - 0x8e, 0x2a, 0x6b, 0xe4, 0x1f, 0x8e, 0x2a, 0x8f, 0x97, 0x57, 0x8e, 0x2a, 0x4f, 0x90, 0x93, 0x47, - 0xe3, 0xe7, 0xe4, 0xb9, 0xa3, 0xe8, 0xd1, 0xca, 0x31, 0x23, 0xc7, 0x9b, 0x28, 0x8f, 0x1d, 0x0d, - 0x3f, 0x49, 0x1e, 0xf8, 0x66, 0x24, 0xfc, 0x64, 0x59, 0x1e, 0x55, 0x8e, 0x96, 0xdb, 0x46, 0x95, - 0xa7, 0xc8, 0x4d, 0xa3, 0xca, 0x53, 0xe5, 0x83, 0xa3, 0xca, 0xf7, 0xc9, 0x7b, 0x46, 0x95, 0x63, - 0xe4, 0xb7, 0x46, 0x95, 0x63, 0xe5, 0xda, 0x51, 0xe5, 0x69, 0xf2, 0xd6, 0x51, 0xe5, 0xe9, 0xb2, - 0x6d, 0x54, 0x39, 0x8e, 0xfe, 0x2d, 0xa7, 0x7b, 0xe5, 0x19, 0x72, 0xf6, 0x37, 0x23, 0xe6, 0x73, - 0xbf, 0x9c, 0xfc, 0xcd, 0xa8, 0xf9, 0xcc, 0x94, 0xe7, 0x7e, 0xa3, 0xdc, 0xeb, 0x61, 0x30, 0xee, - 0x62, 0x70, 0x6f, 0x00, 0xdf, 0xbb, 0xc3, 0xb7, 0x8c, 0x51, 0xa1, 0xf0, 0xb2, 0x60, 0x22, 0x9e, - 0xc5, 0xc1, 0x27, 0x3d, 0x23, 0x31, 0x51, 0xcf, 0xa4, 0x3a, 0x1c, 0x25, 0x1b, 0x2b, 0x1c, 0x25, - 0xc5, 0xba, 0xcd, 0xe5, 0x1b, 0xf8, 0x8d, 0x25, 0x85, 0xf6, 0x92, 0xa2, 0xe2, 0xb9, 0x09, 0xba, - 0xf2, 0x4d, 0xba, 0x8a, 0xad, 0x25, 0xcc, 0x1a, 0xe3, 0x4a, 0xc6, 0x5c, 0xb2, 0x9e, 0xb7, 0x97, - 0x3a, 0xb6, 0x31, 0x6b, 0x37, 0x97, 0xd8, 0xad, 0x1b, 0xca, 0xb7, 0x30, 0x1b, 0x4b, 0x36, 0xf1, - 0x8c, 0xb1, 0x64, 0x63, 0xb9, 0x7d, 0x9b, 0x6e, 0x63, 0x51, 0x85, 0xae, 0x64, 0xab, 0xad, 0x88, - 0xaf, 0x04, 0x24, 0xf3, 0x19, 0xd3, 0x13, 0x86, 0x35, 0x96, 0x87, 0x98, 0x39, 0x95, 0x50, 0xb9, - 0xbe, 0xa4, 0xc2, 0x51, 0x0a, 0x88, 0x8a, 0x1c, 0xba, 0x39, 0x5b, 0xe7, 0xeb, 0x0c, 0x76, 0x7b, - 0xb9, 0x5d, 0xb7, 0xbe, 0xbc, 0xb8, 0x64, 0x09, 0x94, 0x01, 0xed, 0x73, 0x80, 0xc7, 0xa1, 0xdb, - 0x54, 0xee, 0xd0, 0x55, 0xd8, 0x4b, 0x2a, 0xe1, 0x99, 0x81, 0x21, 0x75, 0x30, 0x48, 0x25, 0xf6, - 0x72, 0x94, 0x97, 0xeb, 0xca, 0x37, 0x14, 0x33, 0x2b, 0x37, 0x6d, 0x2e, 0xda, 0x50, 0x5a, 0xac, - 0x2b, 0xaf, 0xc0, 0xae, 0xcc, 0x3a, 0xa8, 0xde, 0x58, 0xb4, 0x69, 0x9b, 0xce, 0x90, 0xb4, 0x30, - 0x51, 0x07, 0x9d, 0xec, 0xa5, 0x25, 0x95, 0xb3, 0x98, 0xf4, 0x72, 0x7e, 0x43, 0x31, 0xc5, 0x55, - 0xb2, 0xa9, 0xe8, 0xd9, 0x0d, 0x25, 0xba, 0x54, 0x68, 0xdd, 0x50, 0xba, 0xa9, 0x84, 0x31, 0xaf, - 0x34, 0x66, 0x30, 0x4c, 0x1a, 0xcc, 0xeb, 0xf9, 0x8a, 0xf2, 0x52, 0x18, 0x24, 0xab, 0x64, 0x53, - 0x89, 0xbd, 0x68, 0x03, 0x0c, 0x5a, 0xee, 0x28, 0x59, 0x4f, 0x29, 0xb4, 0x16, 0xf1, 0x1b, 0x1c, - 0x4c, 0x46, 0x69, 0xe5, 0xf3, 0xba, 0x12, 0x4a, 0x25, 0xd2, 0x9b, 0x61, 0x2f, 0xdd, 0x5c, 0x82, - 0x94, 0x1a, 0x32, 0x57, 0xea, 0x4c, 0xa9, 0xb9, 0xeb, 0x70, 0x72, 0xba, 0xd2, 0x4d, 0x95, 0x8e, - 0xa2, 0x0d, 0x1b, 0x8a, 0x68, 0xbf, 0xf5, 0xb6, 0x92, 0xf5, 0xcf, 0x43, 0xef, 0xd2, 0x0d, 0x25, - 0xc5, 0x48, 0xfc, 0x12, 0x9d, 0x99, 0x5f, 0xbf, 0xbe, 0xa4, 0xb2, 0xd2, 0xca, 0x6f, 0xd8, 0xb0, - 0x0d, 0x60, 0x4b, 0x1d, 0xa5, 0x40, 0xfc, 0x8b, 0x25, 0xc5, 0x51, 0x8c, 0xc3, 0xea, 0xa8, 0x80, - 0xf6, 0x12, 0x3b, 0x4c, 0x50, 0x57, 0x5a, 0xa9, 0x83, 0x09, 0x17, 0x97, 0x6e, 0x7a, 0x4e, 0xe7, - 0xb0, 0x95, 0xe8, 0xac, 0x80, 0x00, 0xa0, 0x75, 0x95, 0x1b, 0x01, 0x35, 0x34, 0x57, 0x14, 0xad, - 0x7f, 0xbe, 0xc4, 0x51, 0xa9, 0x9b, 0x5b, 0xea, 0x40, 0x38, 0xe0, 0x5f, 0xb1, 0xee, 0xd9, 0x6d, - 0x8e, 0x92, 0xca, 0x84, 0x79, 0xba, 0xe2, 0xf2, 0x2d, 0x9b, 0x36, 0x94, 0x17, 0x15, 0xeb, 0x36, - 0x96, 0x3e, 0x67, 0x73, 0xe8, 0x1c, 0x45, 0xcf, 0x97, 0xe8, 0x36, 0x94, 0x6f, 0x7a, 0xae, 0xc4, - 0x3e, 0x3f, 0x8a, 0xc9, 0x4c, 0x5d, 0xb7, 0x68, 0x21, 0x93, 0x49, 0x09, 0x02, 0x0e, 0xea, 0x28, - 0x20, 0x10, 0xfc, 0x5c, 0x89, 0x6e, 0xd1, 0x7c, 0x66, 0xc1, 0xb3, 0xe5, 0xe5, 0x8e, 0x05, 0x1b, - 0x4a, 0x37, 0x02, 0x5f, 0x7e, 0xf0, 0x6c, 0x69, 0x79, 0xe5, 0xfc, 0xca, 0x6d, 0x95, 0xcc, 0xb7, - 0xca, 0xba, 0x4a, 0xa0, 0x17, 0x88, 0x59, 0x5f, 0x6e, 0xb7, 0x03, 0x7b, 0x00, 0xe9, 0xf4, 0x27, - 0x17, 0xe9, 0x37, 0x9a, 0x52, 0xd7, 0xac, 0x4c, 0x87, 0xa7, 0x47, 0x97, 0xea, 0x37, 0x4e, 0x7f, - 0x32, 0x71, 0xe3, 0x12, 0x1d, 0x93, 0x0a, 0xfc, 0xde, 0xf4, 0x03, 0xbe, 0x92, 0xf2, 0x7b, 0xe3, - 0x08, 0x71, 0x80, 0x45, 0xd9, 0x86, 0x53, 0x04, 0x5e, 0x95, 0x16, 0x97, 0xe8, 0x8a, 0x74, 0x41, - 0x98, 0x4a, 0x85, 0xdd, 0xf3, 0x47, 0xac, 0x56, 0x71, 0x89, 0xa3, 0xc4, 0x8e, 0xe3, 0xeb, 0x90, - 0x36, 0x5d, 0x31, 0xf2, 0x9c, 0xa1, 0x63, 0xc1, 0x00, 0x89, 0x5b, 0x19, 0x13, 0x48, 0x46, 0x25, - 0x60, 0x78, 0xbe, 0x64, 0x1b, 0xce, 0xc7, 0x5e, 0xe2, 0xe0, 0xed, 0x28, 0x1b, 0xba, 0x39, 0x95, - 0xf3, 0x83, 0x2c, 0x4d, 0xdf, 0x50, 0x5e, 0x59, 0x42, 0x17, 0x81, 0xb7, 0x97, 0xc0, 0x22, 0x6e, - 0x2e, 0x45, 0xf9, 0x81, 0xce, 0x89, 0x8c, 0xd9, 0x01, 0x8c, 0x74, 0xd8, 0x8b, 0xd6, 0x97, 0x2c, - 0x89, 0x62, 0x74, 0xba, 0x27, 0xe7, 0x54, 0x14, 0x44, 0x31, 0xd9, 0xc0, 0xb7, 0x10, 0xb9, 0xc0, - 0xee, 0xf2, 0xf5, 0x45, 0x8e, 0x72, 0xfb, 0x12, 0xdd, 0x5a, 0xde, 0xa1, 0x2b, 0xb7, 0x06, 0x1b, - 0x14, 0x39, 0x06, 0xce, 0xd9, 0xf9, 0xf5, 0x30, 0x22, 0x90, 0x5e, 0xfa, 0xdc, 0xa6, 0x22, 0xfa, - 0x84, 0x7c, 0xe1, 0x51, 0x63, 0x98, 0xb4, 0x72, 0x7e, 0x53, 0xb1, 0xce, 0x5e, 0x04, 0xbc, 0xa7, - 0xd2, 0x5e, 0x52, 0x0c, 0x95, 0x26, 0xe4, 0xb5, 0x22, 0x4f, 0x2b, 0x56, 0xac, 0x60, 0x4a, 0x8a, - 0x4b, 0x01, 0x3b, 0xae, 0x0b, 0x33, 0x7f, 0x01, 0x13, 0xc5, 0xac, 0x59, 0x97, 0x69, 0x0e, 0xa9, - 0x4e, 0x70, 0x70, 0x45, 0x00, 0x29, 0xf5, 0xf3, 0x99, 0x59, 0x30, 0x30, 0x93, 0x51, 0xb2, 0xb9, - 0x74, 0x7d, 0x09, 0xe5, 0x4f, 0xd1, 0x66, 0x68, 0x41, 0xe6, 0x0d, 0xeb, 0xc1, 0x3a, 0xb3, 0x99, - 0x89, 0x9a, 0x35, 0x4b, 0x67, 0x56, 0x56, 0x55, 0x91, 0x1d, 0x04, 0xb5, 0x22, 0x39, 0xb3, 0xb0, - 0x29, 0xbb, 0x08, 0x04, 0x77, 0x5b, 0x39, 0x0f, 0xb4, 0x56, 0x94, 0x82, 0x20, 0x7c, 0x7b, 0x85, - 0x81, 0x7d, 0x28, 0x75, 0x76, 0xe0, 0xf8, 0x3c, 0x1d, 0x15, 0x0a, 0xf8, 0x51, 0x80, 0xe6, 0xe9, - 0x40, 0xfa, 0x47, 0xca, 0x09, 0xe2, 0x2b, 0x2e, 0x45, 0x49, 0x28, 0x47, 0x4d, 0x43, 0x16, 0x95, - 0xc3, 0x6a, 0xc1, 0x0f, 0xa2, 0xa8, 0x28, 0xb2, 0x3b, 0x4a, 0x71, 0x06, 0x95, 0x68, 0x31, 0xb0, - 0x46, 0x59, 0x46, 0x3a, 0x81, 0x15, 0x51, 0x51, 0xcc, 0x77, 0xa4, 0x4d, 0x59, 0xd0, 0xf4, 0x75, - 0xb9, 0x8f, 0x3f, 0x94, 0xfa, 0xf8, 0xba, 0x87, 0x32, 0x0c, 0x8f, 0x2b, 0xeb, 0x8a, 0xfd, 0xe6, - 0x2b, 0x0b, 0xf6, 0x83, 0xca, 0xa0, 0x69, 0x50, 0xd8, 0x98, 0xba, 0x01, 0x78, 0x4f, 0xcb, 0x54, - 0xdd, 0x18, 0x63, 0xd1, 0x7a, 0x1b, 0x0a, 0x8c, 0x52, 0x0a, 0x0e, 0xf0, 0x9d, 0x71, 0xe6, 0x03, - 0xbb, 0xbf, 0xc3, 0xe7, 0x4a, 0x98, 0x4a, 0x25, 0x16, 0xb7, 0xc0, 0x4a, 0x29, 0xd2, 0x73, 0x4f, - 0x57, 0xca, 0x2b, 0x4a, 0x36, 0x29, 0xdc, 0x9c, 0xb3, 0x15, 0xb9, 0xf0, 0x2c, 0xa8, 0x8e, 0xa2, - 0x88, 0x54, 0x25, 0x46, 0x69, 0xcf, 0xff, 0xa9, 0x44, 0xcf, 0xf2, 0xa5, 0x20, 0xe1, 0x2b, 0x33, - 0x40, 0x4b, 0x41, 0xa9, 0x1d, 0xeb, 0x6d, 0xa0, 0x47, 0x06, 0x90, 0x16, 0xe4, 0x1b, 0xca, 0xe3, - 0x7c, 0x1d, 0x28, 0xc1, 0xa6, 0xcd, 0x30, 0x2b, 0x20, 0x0b, 0x8c, 0xd1, 0xc6, 0x7f, 0x29, 0x12, - 0x40, 0x65, 0x46, 0x39, 0x8f, 0xaa, 0xa3, 0xb0, 0x62, 0x6b, 0xd2, 0xa3, 0x8c, 0xa5, 0xd4, 0xee, - 0xe0, 0x41, 0x12, 0x2a, 0x29, 0x18, 0x53, 0x5a, 0x59, 0x9e, 0xfc, 0xc8, 0x23, 0x89, 0x30, 0x11, - 0x00, 0xdf, 0x54, 0xb4, 0xb1, 0x44, 0xd1, 0xdf, 0x61, 0x79, 0x4c, 0xd4, 0x2f, 0x5c, 0xb4, 0xf8, - 0xe1, 0x47, 0x1e, 0x4d, 0x4a, 0x2e, 0x7a, 0x76, 0x7d, 0x71, 0x89, 0x35, 0xa8, 0x06, 0xba, 0x65, - 0x73, 0x2a, 0x1f, 0x9a, 0x53, 0xf1, 0x58, 0x14, 0xb3, 0xd2, 0xbc, 0x56, 0x41, 0xb0, 0xa9, 0x1c, - 0x4c, 0x62, 0xe9, 0xc6, 0x22, 0x20, 0x43, 0xf1, 0x05, 0xb0, 0x8c, 0x95, 0xeb, 0xed, 0xa5, 0x15, - 0x28, 0xc0, 0xb3, 0xd0, 0x34, 0xff, 0x2b, 0x25, 0x50, 0xb8, 0x98, 0x0b, 0x5e, 0xe3, 0x9e, 0x0a, - 0x96, 0x3c, 0xcb, 0x3f, 0xc7, 0x3c, 0x91, 0x69, 0xc8, 0x65, 0xe6, 0x6e, 0x02, 0x43, 0x98, 0x10, - 0x04, 0x0a, 0x49, 0xf0, 0x4a, 0xd3, 0xe6, 0xc5, 0xba, 0xa2, 0xe2, 0x62, 0x94, 0x84, 0x25, 0xba, - 0xd9, 0x73, 0x2a, 0x67, 0xd3, 0x97, 0x22, 0xc3, 0xc0, 0x5d, 0xa9, 0x19, 0x2d, 0x1b, 0xa6, 0x52, - 0x6b, 0x75, 0x29, 0x4e, 0xea, 0xc0, 0xc0, 0x71, 0xcd, 0x87, 0xff, 0xf8, 0x59, 0xc0, 0xd0, 0x35, - 0x65, 0xce, 0x3e, 0xc0, 0x32, 0xf1, 0x73, 0x94, 0xcf, 0xf2, 0xe0, 0xaf, 0x63, 0xce, 0xbd, 0x3a, - 0x6c, 0xff, 0x04, 0x02, 0xed, 0xc7, 0x20, 0x9c, 0x1b, 0x0b, 0xd1, 0xdc, 0x39, 0xf8, 0x4c, 0x85, - 0xcf, 0x83, 0x90, 0x16, 0xbf, 0x02, 0xbf, 0x2f, 0x65, 0xe0, 0xfb, 0x55, 0x2c, 0x93, 0x09, 0xbf, - 0xbb, 0xe1, 0x53, 0x0c, 0x75, 0xdb, 0x20, 0x3b, 0xfa, 0x3b, 0xfc, 0x2e, 0xcd, 0x50, 0xea, 0xdf, - 0xca, 0xc4, 0xcb, 0xc0, 0x2c, 0xf3, 0x36, 0x7c, 0x4e, 0x43, 0xfd, 0x2f, 0x82, 0xf0, 0xff, 0xd7, - 0x67, 0x3c, 0xc0, 0xba, 0x1f, 0x63, 0x99, 0x16, 0xf8, 0x74, 0xc0, 0xc7, 0x0f, 0x1f, 0x66, 0x05, - 0xcb, 0x68, 0xe1, 0xa3, 0x83, 0x4f, 0x22, 0x7c, 0x52, 0xe0, 0x63, 0x82, 0xcf, 0x33, 0xf0, 0xa9, - 0x80, 0x8f, 0x13, 0x3e, 0xaf, 0xc1, 0xe7, 0x1d, 0xf8, 0xec, 0x83, 0x8f, 0x1b, 0x3e, 0x2d, 0xf0, - 0xe9, 0x80, 0x8f, 0x1f, 0xaf, 0x3d, 0xa5, 0x40, 0x7f, 0xf8, 0xe8, 0xe0, 0x93, 0x08, 0x9f, 0x14, - 0xf8, 0x98, 0xe0, 0xf3, 0x0c, 0x7c, 0x2a, 0xe0, 0xe3, 0x84, 0xcf, 0x6b, 0xf0, 0x79, 0x07, 0x3e, - 0xfb, 0xe0, 0x83, 0x3e, 0x3f, 0x1a, 0x37, 0xea, 0xf0, 0x26, 0xe0, 0x9a, 0x3c, 0xe6, 0xf5, 0xd7, - 0x7e, 0x73, 0xbc, 0xeb, 0xa1, 0x87, 0xfd, 0x47, 0x84, 0x55, 0x8f, 0xbe, 0x3e, 0x7f, 0xcf, 0x2f, - 0x97, 0xdf, 0x7c, 0x69, 0x69, 0x0a, 0x84, 0xa9, 0x95, 0x15, 0xa5, 0x9b, 0xf8, 0x0a, 0x66, 0xda, - 0x2d, 0x86, 0x29, 0x2c, 0xe4, 0x8b, 0x4b, 0x37, 0x6f, 0x2c, 0x2f, 0x2e, 0x2e, 0x5d, 0xcc, 0xd8, - 0xfb, 0xb0, 0x82, 0x16, 0x16, 0x31, 0x9f, 0xf6, 0x85, 0x5a, 0xb1, 0xd4, 0xd5, 0x4f, 0x4b, 0xc1, - 0xb6, 0xee, 0x01, 0x86, 0x01, 0x75, 0x7a, 0x9e, 0x86, 0x0c, 0x85, 0x95, 0xd4, 0x42, 0x54, 0x32, - 0x17, 0x6f, 0x07, 0x6b, 0xd7, 0x43, 0xb5, 0xa3, 0xa4, 0xb0, 0x74, 0x53, 0x71, 0xc9, 0x56, 0x66, - 0x27, 0x84, 0x24, 0xd4, 0x2d, 0x30, 0x91, 0x61, 0x2c, 0x43, 0x1d, 0xd2, 0xa2, 0x42, 0x74, 0x8f, - 0xcc, 0xd7, 0x50, 0xb6, 0x16, 0x39, 0x16, 0x2d, 0x2c, 0x7c, 0xae, 0xc4, 0x51, 0x08, 0xa6, 0xae, - 0x64, 0x03, 0x33, 0x35, 0x3c, 0x54, 0x87, 0x20, 0x85, 0xeb, 0xcb, 0x37, 0x39, 0x4a, 0xb6, 0x3a, - 0x98, 0xfb, 0x23, 0x42, 0xd5, 0xa8, 0xaa, 0x4c, 0x6b, 0xe4, 0xc8, 0x22, 0x80, 0x32, 0x8f, 0x46, - 0xb1, 0xcc, 0x7a, 0xb0, 0x0e, 0x25, 0x85, 0xeb, 0x37, 0x60, 0x3c, 0x62, 0x2f, 0x5c, 0x6f, 0x2b, - 0x82, 0x7a, 0xfc, 0x43, 0x19, 0x0a, 0x24, 0x92, 0xca, 0xe0, 0x1f, 0xcc, 0x50, 0x8a, 0xeb, 0xd1, - 0x75, 0x30, 0x8b, 0xa1, 0x4c, 0xe7, 0x30, 0xba, 0xd7, 0x62, 0xcd, 0xb7, 0xaa, 0xad, 0xf6, 0xf2, - 0x8d, 0x85, 0xe0, 0xe0, 0x98, 0xcf, 0xa0, 0xc5, 0x5a, 0x39, 0x82, 0x60, 0xdf, 0xbd, 0x8a, 0xe7, - 0xf8, 0xd2, 0x62, 0xa6, 0x07, 0xcb, 0x94, 0xc8, 0x4d, 0xe3, 0xe1, 0x49, 0x19, 0xe6, 0x23, 0x7c, - 0xa4, 0x04, 0xb4, 0x87, 0x9e, 0x40, 0xdd, 0x19, 0xff, 0x88, 0x02, 0xb2, 0xbd, 0x84, 0xd9, 0xc2, - 0xb1, 0x21, 0xb5, 0x56, 0x66, 0x8a, 0x6f, 0x06, 0x86, 0x2a, 0x14, 0x04, 0x23, 0x2a, 0x14, 0xe4, - 0x5f, 0xd1, 0x1a, 0xd0, 0x5f, 0x08, 0x70, 0x02, 0xf0, 0xec, 0x28, 0xe7, 0x2b, 0x2a, 0x4a, 0xec, - 0xcc, 0xe4, 0xc9, 0x2c, 0x53, 0xf4, 0x6c, 0x25, 0x33, 0x7b, 0x32, 0xb2, 0xdd, 0xbe, 0xbe, 0x62, - 0x1b, 0x63, 0x08, 0x3e, 0x6e, 0xac, 0x60, 0xb6, 0x07, 0x1f, 0x8b, 0x60, 0xf5, 0xa0, 0x18, 0x50, - 0x8a, 0x9b, 0xf0, 0x79, 0x45, 0x74, 0xf0, 0x39, 0xd8, 0xb6, 0x4f, 0x29, 0x83, 0x8d, 0x61, 0xfe, - 0x02, 0x8f, 0x60, 0xec, 0x1c, 0x85, 0x60, 0x19, 0x36, 0x31, 0x8f, 0x4c, 0x61, 0x19, 0xb0, 0x2c, - 0x85, 0x8e, 0xf2, 0x42, 0x1c, 0x7c, 0x2d, 0x14, 0x8b, 0x4b, 0x9f, 0x83, 0x65, 0x0b, 0x56, 0xbc, - 0x3c, 0x85, 0x76, 0x04, 0x82, 0x4a, 0x19, 0xf5, 0x54, 0x96, 0x41, 0x26, 0x01, 0x45, 0x60, 0x61, - 0x40, 0x3a, 0x2a, 0x8a, 0x1c, 0x36, 0xe6, 0xa9, 0xfb, 0x40, 0x92, 0x8b, 0x36, 0x95, 0xae, 0x67, - 0x16, 0xc4, 0xb0, 0xcc, 0x88, 0x38, 0x94, 0x19, 0x3f, 0x0d, 0xe0, 0x2b, 0x1c, 0xf7, 0x18, 0xfb, - 0xce, 0x34, 0x9c, 0x66, 0x21, 0xb5, 0x23, 0x85, 0x1b, 0x9f, 0xb5, 0x33, 0x0b, 0xe2, 0x58, 0x06, - 0x7e, 0x29, 0x04, 0xb4, 0x97, 0xc5, 0x21, 0x2a, 0x3b, 0xed, 0xc1, 0xfc, 0xcf, 0xac, 0x61, 0x6c, - 0xd8, 0xfc, 0xec, 0x36, 0x05, 0x47, 0xd1, 0xec, 0x6f, 0x57, 0x5b, 0x2b, 0x95, 0x65, 0xfc, 0xd3, - 0x77, 0x5a, 0xd6, 0x97, 0x97, 0xdb, 0x8b, 0x99, 0xee, 0xef, 0xd4, 0xa3, 0x9d, 0x2f, 0x54, 0x82, - 0x95, 0x38, 0xb0, 0x37, 0x0a, 0xdf, 0x1f, 0x86, 0xa7, 0xcd, 0xca, 0xa3, 0xe3, 0x7b, 0x58, 0x09, - 0x42, 0xc9, 0xac, 0x9e, 0xab, 0x3c, 0xc1, 0xec, 0xfb, 0x82, 0x8f, 0x5b, 0x99, 0x9e, 0x84, 0x60, - 0x9f, 0xc2, 0xca, 0xe1, 0x08, 0x85, 0xd9, 0xfd, 0x7d, 0x90, 0x5e, 0xf0, 0x09, 0x85, 0xe0, 0x0b, - 0x0a, 0xa9, 0x23, 0x60, 0x84, 0x87, 0x60, 0x76, 0x25, 0x1b, 0x41, 0xe6, 0x94, 0x8a, 0x42, 0x1a, - 0x6c, 0x30, 0xc7, 0xa1, 0xba, 0x62, 0xe3, 0xc6, 0xc2, 0xca, 0x22, 0x0c, 0x30, 0x2b, 0x4b, 0x0a, - 0x83, 0x61, 0x30, 0xf3, 0xb3, 0x05, 0x0a, 0x7f, 0x95, 0x3e, 0xcc, 0xa9, 0x05, 0xb8, 0x50, 0xa5, - 0xc3, 0xe5, 0x4b, 0x7a, 0xa5, 0xd9, 0x5e, 0xb4, 0x25, 0x54, 0xd5, 0xa5, 0x57, 0x50, 0x81, 0x04, - 0x96, 0x30, 0x0f, 0x2f, 0x54, 0x0a, 0xc0, 0x7b, 0x3a, 0xfc, 0x1b, 0x50, 0x06, 0xc5, 0x1b, 0x41, - 0xd0, 0xef, 0xbf, 0x5d, 0x53, 0xe8, 0xd8, 0x56, 0x51, 0x02, 0x8f, 0xe0, 0x19, 0xc0, 0x19, 0x9c, - 0xf8, 0x5f, 0x9b, 0x15, 0xe9, 0xf6, 0x2f, 0x82, 0x39, 0xe1, 0x8c, 0xe8, 0x92, 0x6d, 0xb2, 0x96, - 0x33, 0x3f, 0x59, 0xac, 0x0c, 0x4b, 0x1d, 0x3a, 0xed, 0xc1, 0xc8, 0x8b, 0xff, 0xd5, 0xc4, 0x51, - 0xc7, 0x6f, 0x3d, 0xac, 0x00, 0x6f, 0x2a, 0xd9, 0x52, 0xa8, 0x58, 0x94, 0xa1, 0x47, 0x59, 0x8c, - 0xbd, 0x61, 0x4d, 0x36, 0x15, 0x17, 0x2a, 0xcb, 0xc4, 0x4c, 0x4c, 0x52, 0xea, 0xa8, 0x89, 0xb9, - 0x08, 0x05, 0xf4, 0x40, 0x8a, 0x32, 0x15, 0x2c, 0x03, 0x8d, 0x58, 0x98, 0xa8, 0x8c, 0xc6, 0x7c, - 0x18, 0x2c, 0x29, 0x59, 0x03, 0x63, 0x59, 0x1e, 0xe4, 0x58, 0x09, 0x64, 0x17, 0xcc, 0xcd, 0xe5, - 0x38, 0x1d, 0x4c, 0x63, 0x98, 0x88, 0xc7, 0x82, 0x0d, 0xa5, 0xc5, 0xa0, 0x60, 0xf8, 0xa7, 0x81, - 0xf0, 0x1f, 0x1b, 0xfa, 0xe3, 0xd0, 0xda, 0x6f, 0xfd, 0xad, 0x68, 0x6c, 0xfe, 0x79, 0xf0, 0xf7, - 0x8d, 0x50, 0xf9, 0x6c, 0xb0, 0x7c, 0x56, 0x01, 0xfa, 0xb9, 0x4e, 0xf9, 0x7d, 0x83, 0x61, 0xfe, - 0x3f, 0x19, 0xa8, 0x86, 0x93, 0x70, 0x5e, 0x00, 0x00, -}; diff --git a/boot/limine/limine-bios-pxe.bin b/boot/limine/limine-bios-pxe.bin deleted file mode 100644 index 73a10af..0000000 Binary files a/boot/limine/limine-bios-pxe.bin and /dev/null differ diff --git a/boot/limine/limine-bios.sys b/boot/limine/limine-bios.sys deleted file mode 100644 index 99b6cd0..0000000 Binary files a/boot/limine/limine-bios.sys and /dev/null differ diff --git a/boot/limine/limine-uefi-cd.bin b/boot/limine/limine-uefi-cd.bin deleted file mode 100644 index de3a191..0000000 Binary files a/boot/limine/limine-uefi-cd.bin and /dev/null differ diff --git a/boot/limine/limine.c b/boot/limine/limine.c deleted file mode 100644 index 74983e8..0000000 --- a/boot/limine/limine.c +++ /dev/null @@ -1,1354 +0,0 @@ -#undef IS_WINDOWS -#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) && !defined(__CYGWIN__) -#define IS_WINDOWS 1 -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef LIMINE_NO_BIOS -#include "limine-bios-hdd.h" -#endif - -static char *program_name = NULL; - -static void perror_wrap(const char *fmt, ...) { - int old_errno = errno; - - fprintf(stderr, "%s: ", program_name); - - va_list args; - va_start(args, fmt); - - vfprintf(stderr, fmt, args); - - va_end(args); - - fprintf(stderr, ": %s\n", strerror(old_errno)); -} - -static void remove_arg(int *argc, char *argv[], int index) { - for (int i = index; i < *argc - 1; i++) { - argv[i] = argv[i + 1]; - } - - (*argc)--; - - argv[*argc] = NULL; -} - -#ifndef LIMINE_NO_BIOS - -static bool quiet = false; - -static int set_pos(FILE *stream, uint64_t pos) { - if (sizeof(long) >= 8) { - return fseek(stream, (long)pos, SEEK_SET); - } - - long jump_size = (LONG_MAX / 2) + 1; - long last_jump = pos % jump_size; - uint64_t jumps = pos / jump_size; - - rewind(stream); - - for (uint64_t i = 0; i < jumps; i++) { - if (fseek(stream, jump_size, SEEK_CUR) != 0) { - return -1; - } - } - if (fseek(stream, last_jump, SEEK_CUR) != 0) { - return -1; - } - - return 0; -} - -#define SIZEOF_ARRAY(array) (sizeof(array) / sizeof(array[0])) -#define DIV_ROUNDUP(a, b) (((a) + ((b) - 1)) / (b)) - -struct gpt_table_header { - // the head - char signature[8]; - uint32_t revision; - uint32_t header_size; - uint32_t crc32; - uint32_t _reserved0; - - // the partitioning info - uint64_t my_lba; - uint64_t alternate_lba; - uint64_t first_usable_lba; - uint64_t last_usable_lba; - - // the guid - uint64_t disk_guid[2]; - - // entries related - uint64_t partition_entry_lba; - uint32_t number_of_partition_entries; - uint32_t size_of_partition_entry; - uint32_t partition_entry_array_crc32; -}; - -struct gpt_entry { - uint64_t partition_type_guid[2]; - - uint64_t unique_partition_guid[2]; - - uint64_t starting_lba; - uint64_t ending_lba; - - uint64_t attributes; - - uint16_t partition_name[36]; -}; - -struct gpt2mbr_type_conv { - uint64_t gpt_type1; - uint64_t gpt_type2; - uint8_t mbr_type; -}; - -// This table is very incomplete, but it should be enough for covering -// all that matters for ISOHYBRIDs. -// Of course, though, expansion is welcome. -static struct gpt2mbr_type_conv gpt2mbr_type_conv_table[] = { - { 0x11d2f81fc12a7328, 0x3bc93ec9a0004bba, 0xef }, // EFI system partition - { 0x4433b9e5ebd0a0a2, 0xc79926b7b668c087, 0x07 }, // Microsoft basic data - { 0x11aa000048465300, 0xacec4365300011aa, 0xaf }, // HFS/HFS+ -}; - -static int gpt2mbr_type(uint64_t gpt_type1, uint64_t gpt_type2) { - for (size_t i = 0; i < SIZEOF_ARRAY(gpt2mbr_type_conv_table); i++) { - if (gpt2mbr_type_conv_table[i].gpt_type1 == gpt_type1 - && gpt2mbr_type_conv_table[i].gpt_type2 == gpt_type2) { - return gpt2mbr_type_conv_table[i].mbr_type; - } - } - return -1; -} - -static void lba2chs(uint8_t *chs, uint64_t lba) { - // If LBA is too big to express, use a standard value for CHS. - if (lba > 63 * 255 * 1024) { - goto lba_too_big; - } - - uint64_t cylinder = lba / (255 * 63); - if (cylinder >= 1024) { -lba_too_big: - chs[0] = 0xfe; - chs[1] = 0xff; - chs[2] = 0xff; - return; - } - uint64_t head = (lba / 63) % 255; - uint64_t sector = (lba % 63) + 1; - - chs[0] = head; - chs[1] = (cylinder >> 2) & 0xc0; // high 2 bits - chs[1] |= sector & 0x3f; - chs[2] = cylinder; // low 8 bits -} - -static uint16_t endswap16(uint16_t value) { - uint16_t ret = 0; - ret |= (value >> 8) & 0x00ff; - ret |= (value << 8) & 0xff00; - return ret; -} - -static uint32_t endswap32(uint32_t value) { - uint32_t ret = 0; - ret |= (value >> 24) & 0x000000ff; - ret |= (value >> 8) & 0x0000ff00; - ret |= (value << 8) & 0x00ff0000; - ret |= (value << 24) & 0xff000000; - return ret; -} - -static uint64_t endswap64(uint64_t value) { - uint64_t ret = 0; - ret |= (value >> 56) & 0x00000000000000ff; - ret |= (value >> 40) & 0x000000000000ff00; - ret |= (value >> 24) & 0x0000000000ff0000; - ret |= (value >> 8) & 0x00000000ff000000; - ret |= (value << 8) & 0x000000ff00000000; - ret |= (value << 24) & 0x0000ff0000000000; - ret |= (value << 40) & 0x00ff000000000000; - ret |= (value << 56) & 0xff00000000000000; - return ret; -} - -#ifdef __BYTE_ORDER__ - -#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ -#define bigendian true -#else -#define bigendian false -#endif - -#else /* !__BYTE_ORDER__ */ - -static bool bigendian = false; - -#endif /* !__BYTE_ORDER__ */ - -#define ENDSWAP(VALUE) (bigendian ? ( \ - sizeof(VALUE) == 1 ? (VALUE) : \ - sizeof(VALUE) == 2 ? endswap16(VALUE) : \ - sizeof(VALUE) == 4 ? endswap32(VALUE) : \ - sizeof(VALUE) == 8 ? endswap64(VALUE) : (abort(), 1) \ -) : (VALUE)) - -static enum { - CACHE_CLEAN, - CACHE_DIRTY -} cache_state; -static uint64_t cached_block; -static uint8_t *cache = NULL; -static FILE *device = NULL; -static size_t block_size; - -static bool device_init(void) { - size_t guesses[] = { 512, 2048, 4096 }; - - for (size_t i = 0; i < SIZEOF_ARRAY(guesses); i++) { - void *tmp = realloc(cache, guesses[i]); - if (tmp == NULL) { - perror_wrap("error: device_init(): realloc()"); - return false; - } - cache = tmp; - - rewind(device); - - size_t ret = fread(cache, guesses[i], 1, device); - if (ret != 1) { - continue; - } - - block_size = guesses[i]; - - if (!quiet) { - fprintf(stderr, "Physical block size of %zu bytes.\n", block_size); - } - - cache_state = CACHE_CLEAN; - cached_block = 0; - return true; - } - - fprintf(stderr, "error: device_init(): Couldn't determine block size of device.\n"); - return false; -} - -static bool device_flush_cache(void) { - if (cache_state == CACHE_CLEAN) - return true; - - if (set_pos(device, cached_block * block_size) != 0) { - perror_wrap("error: device_flush_cache(): set_pos()"); - return false; - } - - size_t ret = fwrite(cache, block_size, 1, device); - if (ret != 1) { - if (ferror(device)) { - perror_wrap("error: device_flush_cache(): fwrite()"); - } - return false; - } - - cache_state = CACHE_CLEAN; - return true; -} - -static bool device_cache_block(uint64_t block) { - if (cached_block == block) - return true; - - if (cache_state == CACHE_DIRTY) { - if (!device_flush_cache()) - return false; - } - - if (set_pos(device, block * block_size) != 0) { - perror_wrap("error: device_cache_block(): set_pos()"); - return false; - } - - size_t ret = fread(cache, block_size, 1, device); - if (ret != 1) { - if (ferror(device)) { - perror_wrap("error: device_cache_block(): fread()"); - } - return false; - } - - cached_block = block; - - return true; -} - -struct uninstall_data { - void *data; - uint64_t loc; - uint64_t count; -}; - -#define UNINSTALL_DATA_MAX 256 - -static bool uninstalling = false; -static struct uninstall_data uninstall_data[UNINSTALL_DATA_MAX]; -static struct uninstall_data uninstall_data_rev[UNINSTALL_DATA_MAX]; -static uint64_t uninstall_data_i = 0; -static const char *uninstall_file = NULL; - -static void reverse_uninstall_data(void) { - for (size_t i = 0, j = uninstall_data_i - 1; i < uninstall_data_i; i++, j--) { - uninstall_data_rev[j] = uninstall_data[i]; - } - - memcpy(uninstall_data, uninstall_data_rev, uninstall_data_i * sizeof(struct uninstall_data)); -} - -static void free_uninstall_data(void) { - for (size_t i = 0; i < uninstall_data_i; i++) { - free(uninstall_data[i].data); - } -} - -static bool store_uninstall_data(const char *filename) { - if (!quiet) { - fprintf(stderr, "Storing uninstall data to file: `%s`...\n", filename); - } - - FILE *udfile = fopen(filename, "wb"); - if (udfile == NULL) { - perror_wrap("error: `%s`", filename); - goto error; - } - - if (fwrite(&uninstall_data_i, sizeof(uint64_t), 1, udfile) != 1) { - goto fwrite_error; - } - - for (size_t i = 0; i < uninstall_data_i; i++) { - if (fwrite(&uninstall_data[i].loc, sizeof(uint64_t), 1, udfile) != 1) { - goto fwrite_error; - } - if (fwrite(&uninstall_data[i].count, sizeof(uint64_t), 1, udfile) != 1) { - goto fwrite_error; - } - if (fwrite(uninstall_data[i].data, uninstall_data[i].count, 1, udfile) != 1) { - goto fwrite_error; - } - } - - fclose(udfile); - return true; - -fwrite_error: - perror_wrap("error: store_uninstall_data(): fwrite()"); - -error: - if (udfile != NULL) { - fclose(udfile); - } - return false; -} - -static bool load_uninstall_data(const char *filename) { - if (!quiet) { - fprintf(stderr, "Loading uninstall data from file: `%s`...\n", filename); - } - - FILE *udfile = fopen(filename, "rb"); - if (udfile == NULL) { - perror_wrap("error: `%s`", filename); - goto error; - } - - if (fread(&uninstall_data_i, sizeof(uint64_t), 1, udfile) != 1) { - goto fread_error; - } - - for (size_t i = 0; i < uninstall_data_i; i++) { - if (fread(&uninstall_data[i].loc, sizeof(uint64_t), 1, udfile) != 1) { - goto fread_error; - } - if (fread(&uninstall_data[i].count, sizeof(uint64_t), 1, udfile) != 1) { - goto fread_error; - } - uninstall_data[i].data = malloc(uninstall_data[i].count); - if (uninstall_data[i].data == NULL) { - perror_wrap("error: load_uninstall_data(): malloc()"); - goto error; - } - if (fread(uninstall_data[i].data, uninstall_data[i].count, 1, udfile) != 1) { - goto fread_error; - } - } - - fclose(udfile); - return true; - -fread_error: - perror_wrap("error: load_uninstall_data(): fread()"); - -error: - if (udfile != NULL) { - fclose(udfile); - } - return false; -} - -static bool _device_read(void *_buffer, uint64_t loc, size_t count) { - uint8_t *buffer = _buffer; - uint64_t progress = 0; - while (progress < count) { - uint64_t block = (loc + progress) / block_size; - - if (!device_cache_block(block)) { - return false; - } - - uint64_t chunk = count - progress; - uint64_t offset = (loc + progress) % block_size; - if (chunk > block_size - offset) - chunk = block_size - offset; - - memcpy(buffer + progress, &cache[offset], chunk); - progress += chunk; - } - - return true; -} - -static bool _device_write(const void *_buffer, uint64_t loc, size_t count) { - if (uninstalling) { - goto skip_save; - } - - if (uninstall_data_i >= UNINSTALL_DATA_MAX) { - fprintf(stderr, "error: Too many uninstall data entries! Please report this bug upstream.\n"); - return false; - } - - struct uninstall_data *ud = &uninstall_data[uninstall_data_i]; - - ud->data = malloc(count); - if (ud->data == NULL) { - perror_wrap("error: _device_write(): malloc()"); - return false; - } - - if (!_device_read(ud->data, loc, count)) { - return false; - } - - ud->loc = loc; - ud->count = count; - -skip_save:; - const uint8_t *buffer = _buffer; - uint64_t progress = 0; - while (progress < count) { - uint64_t block = (loc + progress) / block_size; - - if (!device_cache_block(block)) { - return false; - } - - uint64_t chunk = count - progress; - uint64_t offset = (loc + progress) % block_size; - if (chunk > block_size - offset) - chunk = block_size - offset; - - memcpy(&cache[offset], buffer + progress, chunk); - cache_state = CACHE_DIRTY; - progress += chunk; - } - - if (!uninstalling) { - uninstall_data_i++; - } - return true; -} - -static bool uninstall(bool quiet_arg) { - bool print_cache_flush_fail = false; - bool print_write_fail = false; - bool ret = true; - - uninstalling = true; - - cache_state = CACHE_CLEAN; - cached_block = (uint64_t)-1; - - for (size_t i = 0; i < uninstall_data_i; i++) { - struct uninstall_data *ud = &uninstall_data[i]; - bool retry = false; - while (!_device_write(ud->data, ud->loc, ud->count)) { - if (retry) { - fprintf(stderr, "warning: Retry failed.\n"); - print_write_fail = true; - break; - } - if (!quiet) { - fprintf(stderr, "warning: Uninstall data index %zu failed to write, retrying...\n", i); - } - if (!device_flush_cache()) { - print_cache_flush_fail = true; - } - cache_state = CACHE_CLEAN; - cached_block = (uint64_t)-1; - retry = true; - } - } - - if (!device_flush_cache()) { - print_cache_flush_fail = true; - } - - if (print_write_fail) { - fprintf(stderr, "error: Some data failed to be uninstalled correctly.\n"); - ret = false; - } - - if (print_cache_flush_fail) { - fprintf(stderr, "error: Device cache flush failure. Uninstall may be incomplete.\n"); - ret = false; - } - - if (ret == true && !quiet && !quiet_arg) { - fprintf(stderr, "Uninstall data restored successfully.\n"); - } - - return ret; -} - -#define device_read(BUFFER, LOC, COUNT) \ - do { \ - if (!_device_read(BUFFER, LOC, COUNT)) \ - goto cleanup; \ - } while (0) - -#define device_write(BUFFER, LOC, COUNT) \ - do { \ - if (!_device_write(BUFFER, LOC, COUNT)) \ - goto cleanup; \ - } while (0) - -static void bios_install_usage(void) { - printf("usage: %s bios-install [GPT partition index]\n", program_name); - printf("\n"); - printf(" --force Force installation even if the safety checks fail\n"); - printf(" (DANGEROUS!)\n"); - printf("\n"); - printf(" --uninstall Reverse the entire install procedure\n"); - printf("\n"); - printf(" --uninstall-data-file=\n"); - printf(" Set the input (for --uninstall) or output file\n"); - printf(" name of the file which contains uninstall data\n"); - printf("\n"); - printf(" --no-gpt-to-mbr-isohybrid-conversion\n"); - printf(" Do not automatically convert a GUID partition table (GPT)\n"); - printf(" found on an ISOHYBRID image into an MBR partition table\n"); - printf(" (which is done for better hardware compatibility)\n"); - printf("\n"); - printf(" --quiet Do not print verbose diagnostic messages\n"); - printf("\n"); - printf(" --help | -h Display this help message\n"); - printf("\n"); -} - -static bool validate_or_force(uint64_t offset, bool force, bool *err) { - *err = false; - - char hintc[64]; - device_read(hintc, offset + 3, 4); - if (memcmp(hintc, "NTFS", 4) == 0) { - if (!force) { - return false; - } else { - memset(hintc, 0, 4); - device_write(hintc, offset + 3, 4); - } - } - device_read(hintc, offset + 54, 3); - if (memcmp(hintc, "FAT", 3) == 0) { - if (!force) { - return false; - } else { - memset(hintc, 0, 5); - device_write(hintc, offset + 54, 5); - } - } - device_read(hintc, offset + 82, 3); - if (memcmp(hintc, "FAT", 3) == 0) { - if (!force) { - return false; - } else { - memset(hintc, 0, 5); - device_write(hintc, offset + 82, 5); - } - } - device_read(hintc, offset + 3, 5); - if (memcmp(hintc, "FAT32", 5) == 0) { - if (!force) { - return false; - } else { - memset(hintc, 0, 5); - device_write(hintc, offset + 3, 5); - } - } - uint16_t hint16 = 0; - device_read(&hint16, offset + 1080, sizeof(uint16_t)); - hint16 = ENDSWAP(hint16); - if (hint16 == 0xef53) { - if (!force) { - return false; - } else { - hint16 = 0; - hint16 = ENDSWAP(hint16); - device_write(&hint16, offset + 1080, sizeof(uint16_t)); - } - } - - return true; - -cleanup: - *err = true; - return false; -} - -static int bios_install(int argc, char *argv[]) { - int ok = EXIT_FAILURE; - bool force = false; - bool gpt2mbr_allowed = true; - bool uninstall_mode = false; - const uint8_t *bootloader_img = binary_limine_hdd_bin_data; - size_t bootloader_file_size = sizeof(binary_limine_hdd_bin_data); - uint8_t orig_mbr[70], timestamp[6]; - const char *part_ndx = NULL; - -#ifndef __BYTE_ORDER__ - uint32_t endcheck = 0x12345678; - uint8_t endbyte = *((uint8_t *)&endcheck); - bigendian = endbyte == 0x12; -#endif - - if (argc < 2) { - bios_install_usage(); -#ifdef IS_WINDOWS - system("pause"); -#endif - return EXIT_FAILURE; - } - - for (int i = 1; i < argc; i++) { - if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { - bios_install_usage(); - return EXIT_SUCCESS; - } else if (strcmp(argv[i], "--quiet") == 0) { - quiet = true; - } else if (strcmp(argv[i], "--force") == 0) { - if (force && !quiet) { - fprintf(stderr, "warning: --force already set.\n"); - } - force = true; - } else if (strcmp(argv[i], "--no-gpt-to-mbr-isohybrid-conversion") == 0) { - gpt2mbr_allowed = false; - } else if (strcmp(argv[i], "--uninstall") == 0) { - if (uninstall_mode && !quiet) { - fprintf(stderr, "warning: --uninstall already set.\n"); - } - uninstall_mode = true; - } else if (memcmp(argv[i], "--uninstall-data-file=", 21) == 0) { - if (uninstall_file != NULL && !quiet) { - fprintf(stderr, "warning: --uninstall-data-file already set. Overriding...\n"); - } - uninstall_file = argv[i] + 21; - if (strlen(uninstall_file) == 0) { - fprintf(stderr, "error: Uninstall data file has a zero-length name!\n"); - return EXIT_FAILURE; - } - } else { - if (device != NULL) { // [GPT partition index] - part_ndx = argv[i]; // TODO: Make this non-positional? - } else if ((device = fopen(argv[i], "r+b")) == NULL) { // - perror_wrap("error: `%s`", argv[i]); - return EXIT_FAILURE; - } - } - } - - if (device == NULL) { - fprintf(stderr, "error: No device specified\n"); - bios_install_usage(); - return EXIT_FAILURE; - } - - if (!device_init()) { - goto uninstall_mode_cleanup; - } - - if (uninstall_mode) { - if (uninstall_file == NULL) { - fprintf(stderr, "error: Uninstall mode set but no --uninstall-data-file=... passed.\n"); - goto uninstall_mode_cleanup; - } - - if (!load_uninstall_data(uninstall_file)) { - goto uninstall_mode_cleanup; - } - - if (uninstall(false) == false) { - ok = EXIT_FAILURE; - } else { - ok = EXIT_SUCCESS; - } - goto uninstall_mode_cleanup; - } - - // Probe for GPT and logical block size - int gpt = 0; - struct gpt_table_header gpt_header; - uint64_t lb_guesses[] = { 512, 4096 }; - uint64_t lb_size = 0; - for (size_t i = 0; i < SIZEOF_ARRAY(lb_guesses); i++) { - device_read(&gpt_header, lb_guesses[i], sizeof(struct gpt_table_header)); - if (!strncmp(gpt_header.signature, "EFI PART", 8)) { - lb_size = lb_guesses[i]; - gpt = 1; - if (!quiet) { - fprintf(stderr, "Installing to GPT. Logical block size of %" PRIu64 " bytes.\n", - lb_guesses[i]); - } - break; - } - } - - struct gpt_table_header secondary_gpt_header; - if (gpt) { - if (!quiet) { - fprintf(stderr, "Secondary header at LBA 0x%" PRIx64 ".\n", - ENDSWAP(gpt_header.alternate_lba)); - } - device_read(&secondary_gpt_header, lb_size * ENDSWAP(gpt_header.alternate_lba), - sizeof(struct gpt_table_header)); - if (!strncmp(secondary_gpt_header.signature, "EFI PART", 8)) { - if (!quiet) { - fprintf(stderr, "Secondary header valid.\n"); - } - } else { - fprintf(stderr, "error: Secondary header not valid, aborting.\n"); - goto cleanup; - } - } - - // Check if this is an ISO w/ a GPT, in which case try converting it - // to MBR for improved compatibility with a whole range of hardware that - // does not like booting off of GPT in BIOS or CSM mode, and other - // broken hardware. - if (gpt && gpt2mbr_allowed == true) { - char iso_signature[5]; - device_read(iso_signature, 32769, 5); - - if (strncmp(iso_signature, "CD001", 5) != 0) { - goto no_mbr_conv; - } - - if (!quiet) { - fprintf(stderr, "Detected ISOHYBRID with a GUID partition table (GPT).\n"); - fprintf(stderr, "Converting to MBR for improved compatibility...\n"); - } - - // Gather the (up to 4) GPT partition to convert. - struct { - uint64_t lba_start; - uint64_t lba_end; - uint8_t chs_start[3]; - uint8_t chs_end[3]; - uint8_t type; - } part_to_conv[4]; - size_t part_to_conv_i = 0; - - for (int64_t i = 0; i < (int64_t)ENDSWAP(gpt_header.number_of_partition_entries); i++) { - struct gpt_entry gpt_entry; - device_read(&gpt_entry, - (ENDSWAP(gpt_header.partition_entry_lba) * lb_size) - + (i * ENDSWAP(gpt_header.size_of_partition_entry)), - sizeof(struct gpt_entry)); - - if (gpt_entry.unique_partition_guid[0] == 0 && - gpt_entry.unique_partition_guid[1] == 0) { - continue; - } - - if (ENDSWAP(gpt_entry.starting_lba) > UINT32_MAX) { - if (!quiet) { - fprintf(stderr, "Starting LBA of partition %" PRIi64 " is greater than UINT32_MAX, will not convert GPT.\n", i + 1); - } - goto no_mbr_conv; - } - part_to_conv[part_to_conv_i].lba_start = ENDSWAP(gpt_entry.starting_lba); - lba2chs(part_to_conv[part_to_conv_i].chs_start, part_to_conv[part_to_conv_i].lba_start); - - if (ENDSWAP(gpt_entry.ending_lba) > UINT32_MAX) { - if (!quiet) { - fprintf(stderr, "Ending LBA of partition %" PRIi64 " is greater than UINT32_MAX, will not convert GPT.\n", i + 1); - } - goto no_mbr_conv; - } - part_to_conv[part_to_conv_i].lba_end = ENDSWAP(gpt_entry.ending_lba); - lba2chs(part_to_conv[part_to_conv_i].chs_end, part_to_conv[part_to_conv_i].lba_end); - - int type = gpt2mbr_type(ENDSWAP(gpt_entry.partition_type_guid[0]), - ENDSWAP(gpt_entry.partition_type_guid[1])); - if (type == -1) { - if (!quiet) { - fprintf(stderr, "Cannot convert partition type for partition %" PRIi64 ", will not convert GPT.\n", i + 1); - } - goto no_mbr_conv; - } - - if (part_to_conv_i == 4) { - if (!quiet) { - fprintf(stderr, "GPT contains more than 4 partitions, will not convert.\n"); - } - goto no_mbr_conv; - } - - part_to_conv[part_to_conv_i].type = type; - - part_to_conv_i++; - } - - // Nuke the GPTs. - void *empty_lba = calloc(1, lb_size); - if (empty_lba == NULL) { - perror_wrap("error: bios_install(): malloc()"); - goto cleanup; - } - - // ... nuke primary GPT + protective MBR. - for (size_t i = 0; i < 34; i++) { - device_write(empty_lba, i * lb_size, lb_size); - } - - // ... nuke secondary GPT. - for (size_t i = 0; i < 33; i++) { - device_write(empty_lba, ((ENDSWAP(gpt_header.alternate_lba) - 32) + i) * lb_size, lb_size); - } - - free(empty_lba); - - // We're no longer GPT. - gpt = 0; - - // Generate pseudorandom MBR disk ID. - srand(time(NULL)); - for (size_t i = 0; i < 4; i++) { - uint8_t r = rand(); - device_write(&r, 0x1b8 + i, 1); - } - - // Write out the partition entries. - for (size_t i = 0; i < part_to_conv_i; i++) { - device_write(&part_to_conv[i].type, 0x1be + i * 16 + 0x04, 1); - uint32_t lba_start = ENDSWAP(part_to_conv[i].lba_start); - device_write(&lba_start, 0x1be + i * 16 + 0x08, 4); - uint32_t sect_count = ENDSWAP((part_to_conv[i].lba_end - part_to_conv[i].lba_start) + 1); - device_write(§_count, 0x1be + i * 16 + 0x0c, 4); - - device_write(part_to_conv[i].chs_start, 0x1be + i * 16 + 1, 3); - device_write(part_to_conv[i].chs_end, 0x1be + i * 16 + 5, 3); - } - - if (!quiet) { - fprintf(stderr, "Conversion successful.\n"); - } - } - -no_mbr_conv:; - - int mbr = 0; - if (gpt == 0) { - // Do all sanity checks on MBR - mbr = 1; - - uint8_t hint8 = 0; - uint32_t hint32 = 0; - - bool any_active = false; - - device_read(&hint8, 446, sizeof(uint8_t)); - if (hint8 != 0x00 && hint8 != 0x80) { - if (!force) { - mbr = 0; - } else { - hint8 &= 0x80; - device_write(&hint8, 446, sizeof(uint8_t)); - } - } - any_active = any_active || (hint8 & 0x80) != 0; - device_read(&hint8, 446 + 4, sizeof(uint8_t)); - if (hint8 != 0x00) { - device_read(&hint32, 446 + 8, sizeof(uint32_t)); - hint32 = ENDSWAP(hint32); - if (hint32 < 63) { - goto part_too_low; - } - } - device_read(&hint8, 462, sizeof(uint8_t)); - if (hint8 != 0x00 && hint8 != 0x80) { - if (!force) { - mbr = 0; - } else { - hint8 &= 0x80; - device_write(&hint8, 462, sizeof(uint8_t)); - } - } - any_active = any_active || (hint8 & 0x80) != 0; - device_read(&hint8, 462 + 4, sizeof(uint8_t)); - if (hint8 != 0x00) { - device_read(&hint32, 462 + 8, sizeof(uint32_t)); - hint32 = ENDSWAP(hint32); - if (hint32 < 63) { - goto part_too_low; - } - } - device_read(&hint8, 478, sizeof(uint8_t)); - if (hint8 != 0x00 && hint8 != 0x80) { - if (!force) { - mbr = 0; - } else { - hint8 &= 0x80; - device_write(&hint8, 478, sizeof(uint8_t)); - } - } - any_active = any_active || (hint8 & 0x80) != 0; - device_read(&hint8, 478 + 4, sizeof(uint8_t)); - if (hint8 != 0x00) { - device_read(&hint32, 478 + 8, sizeof(uint32_t)); - hint32 = ENDSWAP(hint32); - if (hint32 < 63) { - goto part_too_low; - } - } - device_read(&hint8, 494, sizeof(uint8_t)); - if (hint8 != 0x00 && hint8 != 0x80) { - if (!force) { - mbr = 0; - } else { - hint8 &= 0x80; - device_write(&hint8, 494, sizeof(uint8_t)); - } - } - any_active = any_active || (hint8 & 0x80) != 0; - device_read(&hint8, 494 + 4, sizeof(uint8_t)); - if (hint8 != 0x00) { - device_read(&hint32, 494 + 8, sizeof(uint32_t)); - hint32 = ENDSWAP(hint32); - if (hint32 < 63) { - goto part_too_low; - } - } - - if (0) { -part_too_low: - fprintf(stderr, "error: A partition's start sector is less than 63, aborting.\n"); - goto cleanup; - } - - if (mbr) { - bool err; - mbr = validate_or_force(0, force, &err); - if (err) { - goto cleanup; - } - } - - if (mbr && !any_active) { - if (!quiet) { - fprintf(stderr, "No active partition found, some systems may not boot.\n"); - fprintf(stderr, "Setting partition 1 as active to work around the issue...\n"); - } - hint8 = 0x80; - device_write(&hint8, 446, sizeof(uint8_t)); - } - } - - if (gpt == 0 && mbr == 0) { - fprintf(stderr, "error: Could not determine if the device has a valid partition table.\n"); - fprintf(stderr, " Please ensure the device has a valid MBR or GPT.\n"); - fprintf(stderr, " Alternatively, pass `--force` to override these checks.\n"); - fprintf(stderr, " **ONLY DO THIS AT YOUR OWN RISK, DATA LOSS MAY OCCUR!**\n"); - goto cleanup; - } - - // Default location of stage2 for MBR (in post MBR gap) - uint64_t stage2_loc = 512; - - if (gpt) { - struct gpt_entry gpt_entry; - uint32_t partition_num; - - if (part_ndx != NULL) { - sscanf(part_ndx, "%" SCNu32, &partition_num); - partition_num--; - if (partition_num > ENDSWAP(gpt_header.number_of_partition_entries)) { - fprintf(stderr, "error: Partition number is too large.\n"); - goto cleanup; - } - - device_read(&gpt_entry, - (ENDSWAP(gpt_header.partition_entry_lba) * lb_size) - + (partition_num * ENDSWAP(gpt_header.size_of_partition_entry)), - sizeof(struct gpt_entry)); - - if (gpt_entry.unique_partition_guid[0] == 0 && - gpt_entry.unique_partition_guid[1] == 0) { - fprintf(stderr, "error: No such partition: %" PRIu32 ".\n", partition_num + 1); - goto cleanup; - } - - if (!force && memcmp("Hah!IdontNeedEFI", &gpt_entry.partition_type_guid, 16) != 0) { - fprintf(stderr, "error: Chosen partition for BIOS boot code is not of BIOS boot partition type.\n"); - fprintf(stderr, " Pass `--force` to override this check.\n"); - fprintf(stderr, " **ONLY DO THIS AT YOUR OWN RISK, DATA LOSS MAY OCCUR!**\n"); - goto cleanup; - } - } else { - // Try to autodetect the BIOS boot partition - for (partition_num = 0; partition_num < ENDSWAP(gpt_header.number_of_partition_entries); partition_num++) { - device_read(&gpt_entry, - (ENDSWAP(gpt_header.partition_entry_lba) * lb_size) - + (partition_num * ENDSWAP(gpt_header.size_of_partition_entry)), - sizeof(struct gpt_entry)); - - if (memcmp("Hah!IdontNeedEFI", &gpt_entry.partition_type_guid, 16) == 0) { - if (!quiet) { - fprintf(stderr, "Autodetected partition %" PRIu32 " as BIOS boot partition.\n", partition_num + 1); - } - goto bios_boot_autodetected; - } - } - - fprintf(stderr, "error: Installing to a GPT device, but no BIOS boot partition specified or\n"); - fprintf(stderr, " detected.\n"); - goto cleanup; - } - -bios_boot_autodetected: - if (((ENDSWAP(gpt_entry.ending_lba) - ENDSWAP(gpt_entry.starting_lba)) + 1) * lb_size < 32768) { - fprintf(stderr, "error: Partition %" PRIu32 " is smaller than 32KiB.\n", partition_num + 1); - goto cleanup; - } - - stage2_loc = ENDSWAP(gpt_entry.starting_lba) * lb_size; - - bool err; - bool valid = validate_or_force(stage2_loc, force, &err); - if (err) { - goto cleanup; - } - - if (!valid) { - fprintf(stderr, "error: The partition selected to install the BIOS boot code to contains\n"); - fprintf(stderr, " a recognised filesystem.\n"); - fprintf(stderr, " Pass `--force` to override these checks.\n"); - fprintf(stderr, " **ONLY DO THIS AT YOUR OWN RISK, DATA LOSS MAY OCCUR!**\n"); - goto cleanup; - } - - if (!quiet) { - fprintf(stderr, "Installing BIOS boot code to partition %" PRIu32 ".\n", partition_num + 1); - } - } else { - if (!quiet) { - fprintf(stderr, "Installing to MBR.\n"); - } - } - - if (!quiet) { - fprintf(stderr, "Stage 2 to be located at byte offset 0x%" PRIx64 ".\n", stage2_loc); - } - - // Save original timestamp - device_read(timestamp, 218, 6); - - // Save the original partition table of the device - device_read(orig_mbr, 440, 70); - - // Write the bootsector from the bootloader to the device - device_write(&bootloader_img[0], 0, 512); - - // Write the rest of stage 2 to the device - device_write(&bootloader_img[512], stage2_loc, bootloader_file_size - 512); - - // Hardcode in the bootsector the location of stage 2 - stage2_loc = ENDSWAP(stage2_loc); - device_write(&stage2_loc, 0x1a4, sizeof(uint64_t)); - - // Write back timestamp - device_write(timestamp, 218, 6); - - // Write back the saved partition table to the device - device_write(orig_mbr, 440, 70); - - if (!device_flush_cache()) - goto cleanup; - - if (!quiet) { - fprintf(stderr, "Reminder: Remember to copy the limine-bios.sys file in either\n" - " the root, /boot, /limine, or /boot/limine directories of\n" - " one of the partitions on the device, or boot will fail!\n"); - - fprintf(stderr, "Limine BIOS stages installed successfully.\n"); - } - - ok = EXIT_SUCCESS; - -cleanup: - reverse_uninstall_data(); - if (ok != EXIT_SUCCESS) { - // If we failed, attempt to reverse install process - fprintf(stderr, "Install failed, undoing work...\n"); - uninstall(true); - } else if (uninstall_file != NULL) { - store_uninstall_data(uninstall_file); - } -uninstall_mode_cleanup: - free_uninstall_data(); - if (cache) - free(cache); - if (device != NULL) - fclose(device); - - return ok; -} -#endif - -#define CONFIG_B2SUM_SIGNATURE "++CONFIG_B2SUM_SIGNATURE++" - -static void enroll_config_usage(void) { - printf("usage: %s enroll-config \n", program_name); - printf("\n"); - printf(" --reset Remove enrolled BLAKE2B, will not check config integrity\n"); - printf("\n"); - printf(" --quiet Do not print verbose diagnostic messages\n"); - printf("\n"); - printf(" --help | -h Display this help message\n"); - printf("\n"); -} - -static int enroll_config(int argc, char *argv[]) { - int ret = EXIT_FAILURE; - - char *bootloader = NULL; - FILE *bootloader_file = NULL; - bool quiet = false; - bool reset = false; - - for (int i = 1; i < argc; i++) { - if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { - enroll_config_usage(); - return EXIT_SUCCESS; - } else if (strcmp(argv[i], "--quiet") == 0) { - remove_arg(&argc, argv, i); - quiet = true; - } else if (strcmp(argv[i], "--reset") == 0) { - remove_arg(&argc, argv, i); - reset = true; - } - } - - if (argc <= (reset ? 1 : 2)) { - enroll_config_usage(); -#ifdef IS_WINDOWS - system("pause"); -#endif - return EXIT_FAILURE; - } - - if (!reset && strlen(argv[2]) != 128) { - fprintf(stderr, "error: BLAKE2B specified is not 128 characters long.\n"); - goto cleanup; - } - - bootloader_file = fopen(argv[1], "r+b"); - if (bootloader_file == NULL) { - perror_wrap("error: `%s`", argv[1]); - goto cleanup; - } - - if (fseek(bootloader_file, 0, SEEK_END) != 0) { - perror_wrap("error: enroll_config(): fseek()"); - goto cleanup; - } - size_t bootloader_size = ftell(bootloader_file); - rewind(bootloader_file); - - bootloader = malloc(bootloader_size); - if (bootloader == NULL) { - perror_wrap("error: enroll_config(): malloc()"); - goto cleanup; - } - - if (fread(bootloader, bootloader_size, 1, bootloader_file) != 1) { - perror_wrap("error: enroll_config(): fread()"); - goto cleanup; - } - - char *checksum_loc = NULL; - size_t checked_count = 0; - const char *config_b2sum_sign = CONFIG_B2SUM_SIGNATURE; - for (size_t i = 0; i < bootloader_size - ((sizeof(CONFIG_B2SUM_SIGNATURE) - 1) + 128) + 1; i++) { - if (bootloader[i] != config_b2sum_sign[checked_count]) { - checked_count = 0; - continue; - } - - checked_count++; - - if (checked_count == sizeof(CONFIG_B2SUM_SIGNATURE) - 1) { - checksum_loc = &bootloader[i + 1]; - break; - } - } - - if (checksum_loc == NULL) { - fprintf(stderr, "error: Checksum location not found in provided executable.\n"); - goto cleanup; - } - - if (!reset) { - memcpy(checksum_loc, argv[2], 128); - } else { - memset(checksum_loc, '0', 128); - } - - if (fseek(bootloader_file, 0, SEEK_SET) != 0) { - perror_wrap("error: enroll_config(): fseek()"); - goto cleanup; - } - if (fwrite(bootloader, bootloader_size, 1, bootloader_file) != 1) { - perror_wrap("error: enroll_config(): fwrite()"); - goto cleanup; - } - - if (!quiet) { - fprintf(stderr, "Config file BLAKE2B successfully %s.\n", reset ? "reset" : "enrolled"); - } - ret = EXIT_SUCCESS; - -cleanup: - if (bootloader != NULL) { - free(bootloader); - } - if (bootloader_file != NULL) { - fclose(bootloader_file); - } - return ret; -} - -#define LIMINE_VERSION "10.5.0" -#define LIMINE_COPYRIGHT "Copyright (C) 2019-2025 Mintsuki and contributors." - -static void version_usage(void) { - printf("usage: %s version [options...]\n", program_name); - printf("\n"); - printf(" --version-only Only print the version number without licensing info\n"); - printf(" and other distractions\n"); - printf("\n"); - printf(" --help | -h Display this help message\n"); - printf("\n"); -} - -static int version(int argc, char *argv[]) { - if (argc >= 2) { - if (strcmp(argv[1], "--help") == 0) { - version_usage(); - return EXIT_SUCCESS; - } else if (strcmp(argv[1], "--version-only") == 0) { - puts(LIMINE_VERSION); - return EXIT_SUCCESS; - } - } - - puts("Limine " LIMINE_VERSION); - puts(LIMINE_COPYRIGHT); - puts("Limine is distributed under the terms of the BSD-2-Clause license."); - puts("There is ABSOLUTELY NO WARRANTY, to the extent permitted by law."); - return EXIT_SUCCESS; -} - -static void general_usage(void) { - printf("usage: %s \n", program_name); - printf("\n"); - printf(" --print-datadir Print the directory containing the bootloader files\n"); - printf("\n"); - printf(" --version Print the Limine version (like the `version` command)\n"); - printf("\n"); - printf(" --help | -h Display this help message\n"); - printf("\n"); - printf("Commands: `help`, `version`, `bios-install`, `enroll-config`\n"); - printf("Use `--help` after specifying the command for command-specific help.\n"); -} - -static int print_datadir(void) { -#ifdef LIMINE_DATADIR - puts(LIMINE_DATADIR); - return EXIT_SUCCESS; -#else - fprintf(stderr, "error: Cannot print datadir for `limine` built standalone.\n"); - return EXIT_FAILURE; -#endif -} - -int main(int argc, char *argv[]) { - program_name = argv[0]; - - if (argc <= 1) { - general_usage(); - return EXIT_FAILURE; - } - - if (strcmp(argv[1], "help") == 0 - || strcmp(argv[1], "--help") == 0 - || strcmp(argv[1], "-h") == 0) { - general_usage(); - return EXIT_SUCCESS; - } else if (strcmp(argv[1], "bios-install") == 0) { -#ifndef LIMINE_NO_BIOS - return bios_install(argc - 1, &argv[1]); -#else - fprintf(stderr, "error: Limine has been compiled without BIOS support.\n"); - return EXIT_FAILURE; -#endif - } else if (strcmp(argv[1], "enroll-config") == 0) { - return enroll_config(argc - 1, &argv[1]); - } else if (strcmp(argv[1], "--print-datadir") == 0) { - return print_datadir(); - } else if (strcmp(argv[1], "version") == 0 - || strcmp(argv[1], "--version") == 0) { - return version(argc - 1, &argv[1]); - } - - general_usage(); - return EXIT_FAILURE; -} diff --git a/etc/install.cmd b/etc/install.cmd index e92f18c..96809ce 100644 --- a/etc/install.cmd +++ b/etc/install.cmd @@ -23,13 +23,18 @@ mkvol bootpart $3 $1p0 # Prepare directories mkdir bootpart:/boot mkdir bootpart:/boot/limine +mkdir bootpart:/EFI +mkdir bootpart:/EFI/BOOT # Copy files copy bootmedia:/boot/kernel.elf bootpart:/boot/kernel.elf copy bootmedia:/boot/limine/limine-bios.sys bootpart:/boot/limine/limine-bios.sys copy bootmedia:/boot/limine/limine-bios-cd.bin bootpart:/boot/limine/limine-bios-cd.bin copy bootmedia:/boot/limine/limine.conf bootpart:/boot/limine/limine.conf +copy bootmedia:/boot/limine/limine-uefi-cd.bin bootpart:/boot/limine/limine-uefi-cd.bin copy bootmedia:/boot/mop3dist.tar.lz4 bootpart:/boot/mop3dist.tar.lz4 +copy bootmedia:/EFI/BOOT/BOOTIA32.EFI bootpart:/EFI/BOOT/BOOTIA32.EFI +copy bootmedia:/EFI/BOOT/BOOTX64.EFI bootpart:/EFI/BOOT/BOOTX64.EFI # List ls bootpart:/boot diff --git a/include/status.h b/include/status.h index d1baf0f..9e2946d 100644 --- a/include/status.h +++ b/include/status.h @@ -27,5 +27,6 @@ #define ST_XDRV_WRITE_ERROR 23 #define ST_NOT_PARTIAL 24 #define ST_USB_CTRL_ERROR 25 +#define ST_IO_ERROR 26 #endif // _M_STATUS_H diff --git a/kernel/libk/string.c b/kernel/libk/string.c index 2d54a91..08e4e21 100644 --- a/kernel/libk/string.c +++ b/kernel/libk/string.c @@ -112,3 +112,19 @@ void* memmove (void* dest, const void* src, unsigned int n) { } return dest; } + +char* strchr (register const char* s, int c) { + do { + if (*s == c) { + return (char*)s; + } + } while (*s++); + return (0); +} + +char* strcpy (char* strDest, const char* strSrc) { + char* temp = strDest; + while ((*strDest++ = *strSrc++)) + ; + return temp; +} diff --git a/kernel/libk/string.h b/kernel/libk/string.h index d1cd1aa..0a806cf 100644 --- a/kernel/libk/string.h +++ b/kernel/libk/string.h @@ -23,4 +23,10 @@ void* memmove (void* dest, const void* src, unsigned int n); #define strlen_null(x) (strlen ((x)) + 1) +char* strchr (register const char* s, int c); + +char* strcpy (char* strDest, const char* strSrc); + +char* strcat (char* dest, const char* src); + #endif // _KERNEL_LIBK_STRING_H diff --git a/libu/str_status.h b/libu/str_status.h index db49551..525cf72 100644 --- a/libu/str_status.h +++ b/libu/str_status.h @@ -30,6 +30,7 @@ static const char* str_status[] = { [ST_XDRV_WRITE_ERROR] = "drive write error", [ST_NOT_PARTIAL] = "not a partially created process", [ST_USB_CTRL_ERROR] = "USB controller error", + [ST_IO_ERROR] = "I/O Error", }; #endif // _LIBSYSTEM_STR_STATUS_H diff --git a/make/limine.mk b/make/limine.mk new file mode 100644 index 0000000..0f10fe3 --- /dev/null +++ b/make/limine.mk @@ -0,0 +1,16 @@ +LIMINE_OPTS=--enable-bios-cd \ + --enable-bios \ + --enable-uefi-x86-64 \ + --enable-uefi-cd + +all_limine: + mkdir -p build_limine && \ + cd build_limine && \ + ../Limine/bootstrap && \ + ../Limine/configure $(LIMINE_OPTS) && \ + make -j $(nproc) && \ + rm -rf ../boot/limine && \ + cp -r ./bin ../boot/limine + + +.PHONY: all_limine diff --git a/sdutil/limine-bios-hdd.h b/sdutil/limine-bios-hdd.h index 403dc10..865892a 100644 --- a/sdutil/limine-bios-hdd.h +++ b/sdutil/limine-bios-hdd.h @@ -1208,3 +1208,4 @@ const char binary_limine_hdd_bin_data[] = { 0x8d, 0x50, 0xf9, 0x6c, 0xb0, 0x7c, 0x56, 0x01, 0xfa, 0xb9, 0x4e, 0xf9, 0x7d, 0x83, 0x61, 0xfe, 0x3f, 0x19, 0xa8, 0x86, 0x93, 0x70, 0x5e, 0x00, 0x00, }; +/* clang-format on */ diff --git a/sdutil/sdutil.c b/sdutil/sdutil.c index 804e80b..7300279 100644 --- a/sdutil/sdutil.c +++ b/sdutil/sdutil.c @@ -66,6 +66,9 @@ static void ask_and_setup_dos_partition (struct dos_pte* pte, int part_num) { part_sector_count = str_to_uint32 (part_sector_count_str); part_isboot = (strcmp (part_isboot_str, "yes") == 0); + if (part_sector_count == 0) + return; + pte->start_lba = part_start_lba; pte->sector_count = part_sector_count;