From 706c58b9b9fa74c63180f490a1f48652d0408944 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Thu, 18 Apr 2024 10:55:51 +0200 Subject: MHR-3: Start working on drivers now. Signed-off-by: Amlal El Mahrouss --- Private/Documentation/Spec.md | 14 ++++- Private/Drivers/.gitkeep | 0 Private/Drivers/SampleDriver/DriverRsrc.rsrc | 25 +++++++++ Private/Drivers/SampleDriver/SampleDriver.c | 9 +++ Private/Drivers/SampleDriver/makefile | 62 +++++++++++++++++++++ Private/KernelRsrc.rsrc | 2 +- Private/NewBoot/Source/BootloaderRsrc.rsrc | 2 +- Private/NewBoot/Source/makefile | 2 +- Private/Root/Boot/Icons/boot-logo.ico | Bin 0 -> 2238 bytes Private/Root/Boot/Icons/driver-logo.ico | Bin 0 -> 2238 bytes Private/Root/Boot/Icons/kernel-logo.ico | Bin 0 -> 2238 bytes Private/Root/Boot/boot-logo.ico | Bin 2238 -> 0 bytes Private/Root/Boot/kernel-logo.ico | Bin 2238 -> 0 bytes Private/Servers/.gitkeep | 0 Private/Servers/CoreDisplay/Headers/.gitkeep | 0 Private/Servers/CoreDisplay/Headers/CDBitBlt.h | 10 ---- .../Servers/CoreDisplay/Headers/CDServerStartup.h | 10 ---- Private/Servers/CoreDisplay/README.txt | 4 -- Private/Servers/CoreDisplay/Sources/CDBitBlt.c | 11 ---- .../Servers/CoreDisplay/Sources/CDServerStartup.c | 25 --------- 20 files changed, 111 insertions(+), 65 deletions(-) create mode 100644 Private/Drivers/.gitkeep create mode 100644 Private/Drivers/SampleDriver/DriverRsrc.rsrc create mode 100644 Private/Drivers/SampleDriver/SampleDriver.c create mode 100644 Private/Drivers/SampleDriver/makefile create mode 100644 Private/Root/Boot/Icons/boot-logo.ico create mode 100644 Private/Root/Boot/Icons/driver-logo.ico create mode 100644 Private/Root/Boot/Icons/kernel-logo.ico delete mode 100644 Private/Root/Boot/boot-logo.ico delete mode 100644 Private/Root/Boot/kernel-logo.ico delete mode 100644 Private/Servers/.gitkeep delete mode 100644 Private/Servers/CoreDisplay/Headers/.gitkeep delete mode 100644 Private/Servers/CoreDisplay/Headers/CDBitBlt.h delete mode 100644 Private/Servers/CoreDisplay/Headers/CDServerStartup.h delete mode 100644 Private/Servers/CoreDisplay/README.txt delete mode 100644 Private/Servers/CoreDisplay/Sources/CDBitBlt.c delete mode 100644 Private/Servers/CoreDisplay/Sources/CDServerStartup.c diff --git a/Private/Documentation/Spec.md b/Private/Documentation/Spec.md index 458d17a9..69f6d87f 100644 --- a/Private/Documentation/Spec.md +++ b/Private/Documentation/Spec.md @@ -1,13 +1,17 @@ =================================== + # 0: General Information + =================================== - ABI and Format: PEF/PE32+. -- Kernel architecture: Microkernel. +- Kernel architecture: Portable hybrid kernel. - Language: C++/(Assembly (AMD64, X64000, X86S, ARM64, PowerPC, RISCV)) =================================== + # 1: The NewKernel + =================================== - Drive/Device Abstraction. @@ -25,7 +29,9 @@ - Permission Selectors. =================================== + # 2: The Filesystem + =================================== - Catalog object with associated forks. @@ -34,7 +40,9 @@ - UNIX path style. ================================== + # 3: Common naming conventions: + ================================== - Kernel -> ke_init_x @@ -42,11 +50,13 @@ - Hal -> hal_foo_bar =================================== + # 4: The NewBoot + =================================== - Capable of booting from a network drive. - Loads a PE file which is the kernel. -- Sanity checks, based on the number of sections. +- Sanity checks, based on the number of sections. - Handover compliant. - Does check for a valid partition (useful in the case of recovering) diff --git a/Private/Drivers/.gitkeep b/Private/Drivers/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Private/Drivers/SampleDriver/DriverRsrc.rsrc b/Private/Drivers/SampleDriver/DriverRsrc.rsrc new file mode 100644 index 00000000..f37e2796 --- /dev/null +++ b/Private/Drivers/SampleDriver/DriverRsrc.rsrc @@ -0,0 +1,25 @@ +1 ICON "../../Root/Boot/Icons/driver-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss-Logic" + VALUE "FileDescription", "NewOS driver." + VALUE "FileVersion", "1.00" + VALUE "InternalName", "SampleDriver" + VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." + VALUE "OriginalFilename", "SampleDriver.exe" + VALUE "ProductName", "SampleDriver" + VALUE "ProductVersion", "1.00" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END diff --git a/Private/Drivers/SampleDriver/SampleDriver.c b/Private/Drivers/SampleDriver/SampleDriver.c new file mode 100644 index 00000000..79b19bf3 --- /dev/null +++ b/Private/Drivers/SampleDriver/SampleDriver.c @@ -0,0 +1,9 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +int __ImageStart(void) { + return 0; +} diff --git a/Private/Drivers/SampleDriver/makefile b/Private/Drivers/SampleDriver/makefile new file mode 100644 index 00000000..7d58b611 --- /dev/null +++ b/Private/Drivers/SampleDriver/makefile @@ -0,0 +1,62 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +ifeq ($(shell uname), Windows_NT) +EMU=qemu-system-x86_64w +else +EMU=qemu-system-x86_64 +endif + +IMG=epm.img +IMG_2=epm-slave.img +EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=$(wildcard *.o) $(wildcard HEL/AMD64/*.obj) + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o SampleDriver.exe + cp SampleDriver.exe ../../Root/Boot/SampleDriver.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) SampleDriver.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/KernelRsrc.rsrc b/Private/KernelRsrc.rsrc index 7cdcf0e0..6eacce84 100644 --- a/Private/KernelRsrc.rsrc +++ b/Private/KernelRsrc.rsrc @@ -1,4 +1,4 @@ -1 ICON "Root/Boot/kernel-logo.ico" +1 ICON "Root/Boot/Icons/kernel-logo.ico" #include "CompilerKit/Version.hxx" diff --git a/Private/NewBoot/Source/BootloaderRsrc.rsrc b/Private/NewBoot/Source/BootloaderRsrc.rsrc index f77a4079..424d4575 100644 --- a/Private/NewBoot/Source/BootloaderRsrc.rsrc +++ b/Private/NewBoot/Source/BootloaderRsrc.rsrc @@ -1,6 +1,6 @@ #include "../../CompilerKit/Version.hxx" -1 ICON "../../Root/Boot/boot-logo.ico" +1 ICON "../../Root/Boot/Icons/boot-logo.ico" 1 VERSIONINFO FILEVERSION 1,0,0,0 diff --git a/Private/NewBoot/Source/makefile b/Private/NewBoot/Source/makefile index 4016e3a8..a73b3adb 100644 --- a/Private/NewBoot/Source/makefile +++ b/Private/NewBoot/Source/makefile @@ -35,7 +35,7 @@ FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KE .PHONY: invalid-recipe invalid-recipe: - @echo "invalid-recipe: Use make bootloader- all instead." + @echo "invalid-recipe: Use make bootloader- instead." .PHONY: all all: compile-amd64 diff --git a/Private/Root/Boot/Icons/boot-logo.ico b/Private/Root/Boot/Icons/boot-logo.ico new file mode 100644 index 00000000..a9c250ed Binary files /dev/null and b/Private/Root/Boot/Icons/boot-logo.ico differ diff --git a/Private/Root/Boot/Icons/driver-logo.ico b/Private/Root/Boot/Icons/driver-logo.ico new file mode 100644 index 00000000..9ee1b954 Binary files /dev/null and b/Private/Root/Boot/Icons/driver-logo.ico differ diff --git a/Private/Root/Boot/Icons/kernel-logo.ico b/Private/Root/Boot/Icons/kernel-logo.ico new file mode 100644 index 00000000..d5ea0310 Binary files /dev/null and b/Private/Root/Boot/Icons/kernel-logo.ico differ diff --git a/Private/Root/Boot/boot-logo.ico b/Private/Root/Boot/boot-logo.ico deleted file mode 100644 index a9c250ed..00000000 Binary files a/Private/Root/Boot/boot-logo.ico and /dev/null differ diff --git a/Private/Root/Boot/kernel-logo.ico b/Private/Root/Boot/kernel-logo.ico deleted file mode 100644 index d5ea0310..00000000 Binary files a/Private/Root/Boot/kernel-logo.ico and /dev/null differ diff --git a/Private/Servers/.gitkeep b/Private/Servers/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Private/Servers/CoreDisplay/Headers/.gitkeep b/Private/Servers/CoreDisplay/Headers/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Private/Servers/CoreDisplay/Headers/CDBitBlt.h b/Private/Servers/CoreDisplay/Headers/CDBitBlt.h deleted file mode 100644 index 21823755..00000000 --- a/Private/Servers/CoreDisplay/Headers/CDBitBlt.h +++ /dev/null @@ -1,10 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: CDBitBlt.h - Purpose: Userbuffer to Framebuffer magic. - -------------------------------------------- */ - -#pragma once \ No newline at end of file diff --git a/Private/Servers/CoreDisplay/Headers/CDServerStartup.h b/Private/Servers/CoreDisplay/Headers/CDServerStartup.h deleted file mode 100644 index 47f369ae..00000000 --- a/Private/Servers/CoreDisplay/Headers/CDServerStartup.h +++ /dev/null @@ -1,10 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: CDServerStartup.h - Purpose: Server entrypoint. - -------------------------------------------- */ - -#pragma once \ No newline at end of file diff --git a/Private/Servers/CoreDisplay/README.txt b/Private/Servers/CoreDisplay/README.txt deleted file mode 100644 index 669ec31c..00000000 --- a/Private/Servers/CoreDisplay/README.txt +++ /dev/null @@ -1,4 +0,0 @@ -CoreDisplay is the window manager of NewOS. -Written in C by Amlal EL Mahrouss. - -Unlike X it is not networked, but can be extend to with NetworkDisplay. diff --git a/Private/Servers/CoreDisplay/Sources/CDBitBlt.c b/Private/Servers/CoreDisplay/Sources/CDBitBlt.c deleted file mode 100644 index 91e5342f..00000000 --- a/Private/Servers/CoreDisplay/Sources/CDBitBlt.c +++ /dev/null @@ -1,11 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: CDBitBlt.c - Purpose: Userbuffer to Framebuffer magic. - -------------------------------------------- */ - -#include - diff --git a/Private/Servers/CoreDisplay/Sources/CDServerStartup.c b/Private/Servers/CoreDisplay/Sources/CDServerStartup.c deleted file mode 100644 index 7293b720..00000000 --- a/Private/Servers/CoreDisplay/Sources/CDServerStartup.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: CDServerStartup.c - Purpose: Server entrypoint. - -------------------------------------------- */ - -#include -#include - -/// @brief Called when the server starts. -int ServerStartup(void) -{ - return 0; -} - -/// @brief Called when the server shuts down. -int ServerShutdown(void) -{ - return 0; -} - -/// EOF. -- cgit v1.2.3 From 0ae4062bfe9936cc9fd2c7bb924442480b067d93 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Thu, 18 Apr 2024 23:10:15 +0200 Subject: MHR-5: initial commit. Signed-off-by: Amlal El Mahrouss --- Private/DriverKit/KernelPrint.c | 19 ++++ Private/DriverKit/KernelPrint.h | 45 +++++++++ Private/Drivers/SampleDriver/SampleDriver.c | 8 ++ Private/Drivers/SampleDriver/makefile | 2 +- Private/FirmwareKit/EFI/EFI.hxx | 2 - Private/HALKit/AMD64/HalHardwareMP.cpp | 10 +- Private/HALKit/PowerPC/HalHart.cxx | 19 ++++ Private/HALKit/PowerPC/HalSMPManager.cxx | 18 ---- Private/HALKit/PowerPC/HalStartSequence.s | 10 +- Private/HALKit/PowerPC/Hart.hxx | 9 +- Private/HALKit/PowerPC/MBCI/.gitkeep | 0 Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx | 8 ++ Private/HALKit/PowerPC/PCI/.gitkeep | 0 Private/HALKit/PowerPC/PCI/HalDevice.cxx | 1 - Private/HALKit/PowerPC/Processor.hpp | 4 +- Private/NewBoot/BootKit/BootKit.hxx | 11 ++- Private/NewBoot/BootKit/Rsrc/Driver.rsrc | 70 +++++++++++++ Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx | 119 ----------------------- Private/NewBoot/Source/HEL/AMD64/BootMain.cxx | 119 +++++++++-------------- Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx | 10 +- Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S | 14 ++- Private/Root/Boot/Icons/boot-logo.ico | Bin 2238 -> 3638 bytes Private/Root/Boot/Icons/driver-logo.ico | Bin 2238 -> 3638 bytes Private/Root/Boot/Icons/kernel-logo.ico | Bin 2238 -> 3638 bytes 24 files changed, 261 insertions(+), 237 deletions(-) create mode 100644 Private/DriverKit/KernelPrint.c create mode 100644 Private/DriverKit/KernelPrint.h create mode 100644 Private/HALKit/PowerPC/HalHart.cxx delete mode 100644 Private/HALKit/PowerPC/HalSMPManager.cxx create mode 100644 Private/HALKit/PowerPC/MBCI/.gitkeep create mode 100644 Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx delete mode 100644 Private/HALKit/PowerPC/PCI/.gitkeep delete mode 100644 Private/HALKit/PowerPC/PCI/HalDevice.cxx create mode 100644 Private/NewBoot/BootKit/Rsrc/Driver.rsrc delete mode 100644 Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx diff --git a/Private/DriverKit/KernelPrint.c b/Private/DriverKit/KernelPrint.c new file mode 100644 index 00000000..32e20f4f --- /dev/null +++ b/Private/DriverKit/KernelPrint.c @@ -0,0 +1,19 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Text I/O. + +------------------------------------------- */ + +#include "DriverKit/KernelPrint.h" + +#ifdef __x86_64__ +static void kernelPrintCharAMD64(const char ch) { + __asm__ volatile("outb %%al, %1" : : "a"(ch), "Nd"(0x3F8) : "memory"); +} +#endif // if __x86_64__ + +DK_EXTERN void kernelPrintChar(const char ch) { + kernelPrintChar(ch); +} diff --git a/Private/DriverKit/KernelPrint.h b/Private/DriverKit/KernelPrint.h new file mode 100644 index 00000000..7e25e304 --- /dev/null +++ b/Private/DriverKit/KernelPrint.h @@ -0,0 +1,45 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Text I/O. + +------------------------------------------- */ + +#pragma once + +#if defined(__cplusplus) +#define DK_EXTERN extern "C" +#else +#define DK_EXTERN extern +#endif // defined(__cplusplus) + +#include +#include + +/// @brief print character into UART. +DK_EXTERN void kernelPrintChar(const char ch); + +static inline size_t kernelStringLength(const char* str) { + size_t index = 0; + + while (str[index] != 0) { + ++index; + } + + return index; +} + +/// @brief print string to UART. +static inline void kernelPrintStr(const char* message) { + if (!message) return; + if (*message == 0) return; + + size_t index = 0; + size_t len = kernelStringLength(message); + + while (index < len) { + kernelPrintChar(message[index]); + ++index; + } +} diff --git a/Private/Drivers/SampleDriver/SampleDriver.c b/Private/Drivers/SampleDriver/SampleDriver.c index 79b19bf3..04d40516 100644 --- a/Private/Drivers/SampleDriver/SampleDriver.c +++ b/Private/Drivers/SampleDriver/SampleDriver.c @@ -4,6 +4,14 @@ ------------------------------------------- */ +#include + int __ImageStart(void) { + kernelPrintStr("SampleDriver: Starting up.\n"); + return 0; +} + +int __ImageEnd(void) { + kernelPrintStr("SampleDriver: Shutting down.\n"); return 0; } diff --git a/Private/Drivers/SampleDriver/makefile b/Private/Drivers/SampleDriver/makefile index 7d58b611..899b1491 100644 --- a/Private/Drivers/SampleDriver/makefile +++ b/Private/Drivers/SampleDriver/makefile @@ -49,7 +49,7 @@ endif .PHONY: compile-amd64 compile-amd64: $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o - $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) .PHONY: clean clean: diff --git a/Private/FirmwareKit/EFI/EFI.hxx b/Private/FirmwareKit/EFI/EFI.hxx index 1d56f757..7f8223cf 100644 --- a/Private/FirmwareKit/EFI/EFI.hxx +++ b/Private/FirmwareKit/EFI/EFI.hxx @@ -571,8 +571,6 @@ typedef struct EfiSystemTable { } *ConfigurationTable; } EfiSystemTable; -#define EfiMain efi_main - #define kEfiOk 0 #define kEfiFail -1 diff --git a/Private/HALKit/AMD64/HalHardwareMP.cpp b/Private/HALKit/AMD64/HalHardwareMP.cpp index 0e9f3022..135222b9 100644 --- a/Private/HALKit/AMD64/HalHardwareMP.cpp +++ b/Private/HALKit/AMD64/HalHardwareMP.cpp @@ -19,20 +19,12 @@ void rt_wakeup_thread(HAL::StackFrame* stack) { HAL::rt_sti(); } -/// @brief Hangs until RCX register is cleared. -/// @param stack -static void __rt_hang_proc(HAL::StackFrame* stack) { - while (stack->Rcx == 1) { - ; - } -} - /// @brief makes thread sleep. /// hooks and hangs thread to prevent code from executing. void rt_hang_thread(HAL::StackFrame* stack) { HAL::rt_cli(); - __rt_hang_proc(stack); + stack->Rcx = 1; HAL::rt_sti(); } diff --git a/Private/HALKit/PowerPC/HalHart.cxx b/Private/HALKit/PowerPC/HalHart.cxx new file mode 100644 index 00000000..102bab7d --- /dev/null +++ b/Private/HALKit/PowerPC/HalHart.cxx @@ -0,0 +1,19 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include +#include + +using namespace NewOS; + +/// @brief wakes up thread. +/// wakes up thread from hang. +void rt_wakeup_thread(HAL::StackFramePtr stack) {} + +/// @brief makes thread sleep. +/// hooks and hangs thread to prevent code from executing. +void rt_hang_thread(HAL::StackFramePtr stack) {} diff --git a/Private/HALKit/PowerPC/HalSMPManager.cxx b/Private/HALKit/PowerPC/HalSMPManager.cxx deleted file mode 100644 index 26ebc399..00000000 --- a/Private/HALKit/PowerPC/HalSMPManager.cxx +++ /dev/null @@ -1,18 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include - -using namespace NewOS; - -/// @brief wakes up thread. -/// wakes up thread from hang. -void rt_wakeup_thread(HAL::StackFramePtr stack) {} - -/// @brief makes thread sleep. -/// hooks and hangs thread to prevent code from executing. -void rt_hang_thread(HAL::StackFramePtr stack) {} \ No newline at end of file diff --git a/Private/HALKit/PowerPC/HalStartSequence.s b/Private/HALKit/PowerPC/HalStartSequence.s index 112ac73f..f50a4d4f 100644 --- a/Private/HALKit/PowerPC/HalStartSequence.s +++ b/Private/HALKit/PowerPC/HalStartSequence.s @@ -1,6 +1,14 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + .globl Main +.extern HalKernelMain .align 4 .text Main: - b Main + bl HalKernelMain + blr diff --git a/Private/HALKit/PowerPC/Hart.hxx b/Private/HALKit/PowerPC/Hart.hxx index 618cbd97..56d51243 100644 --- a/Private/HALKit/PowerPC/Hart.hxx +++ b/Private/HALKit/PowerPC/Hart.hxx @@ -15,6 +15,13 @@ #include +/// @brief hardware thread indentification type. typedef NewOS::Int32 PPCHartType; - +/// @brief Hardware thread information structure. +typedef struct HalHardwareThread { + NewOS::UIntPtr fStartAddress; + NewOS::UInt8 fPrivleged : 1; + NewOS::UInt32 fPageFlags; + PPCHartType fIdentNumber; +} HalHardwareThread; diff --git a/Private/HALKit/PowerPC/MBCI/.gitkeep b/Private/HALKit/PowerPC/MBCI/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx b/Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx new file mode 100644 index 00000000..98371c43 --- /dev/null +++ b/Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx @@ -0,0 +1,8 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include diff --git a/Private/HALKit/PowerPC/PCI/.gitkeep b/Private/HALKit/PowerPC/PCI/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Private/HALKit/PowerPC/PCI/HalDevice.cxx b/Private/HALKit/PowerPC/PCI/HalDevice.cxx deleted file mode 100644 index 8b137891..00000000 --- a/Private/HALKit/PowerPC/PCI/HalDevice.cxx +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Private/HALKit/PowerPC/Processor.hpp b/Private/HALKit/PowerPC/Processor.hpp index 19f8e799..12a5bd26 100644 --- a/Private/HALKit/PowerPC/Processor.hpp +++ b/Private/HALKit/PowerPC/Processor.hpp @@ -11,12 +11,12 @@ #include #include -#define __PPC_ALIGN __attribute__((aligned(4))) +#define kHalPPCAlignment __attribute__((aligned(4))) namespace NewOS::HAL { typedef UIntPtr Reg; -struct __PPC_ALIGN StackFrame { +struct kHalPPCAlignment StackFrame { Reg R0; Reg R1; Reg R2; diff --git a/Private/NewBoot/BootKit/BootKit.hxx b/Private/NewBoot/BootKit/BootKit.hxx index 1fbd0aef..be16c2c5 100644 --- a/Private/NewBoot/BootKit/BootKit.hxx +++ b/Private/NewBoot/BootKit/BootKit.hxx @@ -18,9 +18,12 @@ class BVersionString; #include #include + #ifdef __EFI_x86_64__ +#define kBootVirtualAddress (0xffffff80000000) #include #endif // ifdef __EFI_x86_64__ + #include #include @@ -68,8 +71,10 @@ NewOS::SizeT BSetMem(CharacterTypeUTF8 *src, const CharacterTypeUTF8 byte, /// String length functions. +/// @brief get string length. NewOS::SizeT BStrLen(const CharacterTypeUTF16 *ptr); +/// @brief set memory with custom value. NewOS::SizeT BSetMem(CharacterTypeUTF16 *src, const CharacterTypeUTF16 byte, const NewOS::SizeT len); @@ -169,7 +174,7 @@ inline UInt32 In32(UInt16 port) { /*** * Common processor instructions. -*/ + */ EXTERN_C void rt_hlt(); EXTERN_C void rt_cli(); @@ -221,8 +226,10 @@ class BVersionString final { /// @param namePart the partition's name /// @param namePartLength the partition name's length /// @param bootDev the disk interface. -/// @return +/// @return EXTERN_C Boolean boot_write_epm_partition(const Char *namePart, SizeT namePartLength, BootDevice *bootDev); +/// @brief Bootloader main type. +typedef void (*BootMainKind)(HEL::HandoverInformationHeader* handoverInfo); diff --git a/Private/NewBoot/BootKit/Rsrc/Driver.rsrc b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc new file mode 100644 index 00000000..c9fdc812 --- /dev/null +++ b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc @@ -0,0 +1,70 @@ +#define DRIVER_LOGO_HEIGHT 64 +#define DRIVER_LOGO_WIDTH 64 + +// array size is 12288 +static const unsigned int driver_logo[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x242424, 0x3b3b3b, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x3e3e3e, 0x393939, 0x333333, 0x202020, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x3b3b3b, 0x999999, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xb9b9b9, 0xacacac, 0x848484, 0x333333, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xfbfbfb, 0xf2f2f2, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xf0f0f0, 0xf4f4f4, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf4f4f4, 0xf0f0f0, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xf0f0f0, 0xf4f4f4, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf4f4f4, 0xf0f0f0, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xf0f0f0, 0xf4f4f4, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf4f4f4, 0xf0f0f0, 0xeeeeee, 0xeeeeee, 0xe4e4e4, 0xd1d1d1, 0x969696, 0x323232, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf2f2f2, 0xd9d9d9, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xd2d2d2, 0xdfdfdf, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xdfdfdf, 0xd2d2d2, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xd2d2d2, 0xdfdfdf, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xdfdfdf, 0xd2d2d2, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xd2d2d2, 0xdfdfdf, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xdfdfdf, 0xd2d2d2, 0xcccccc, 0xcccccc, 0xc0c0c0, 0xa9a9a9, 0x767676, 0x272727, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf1f1f1, 0xd6d6d6, 0xcbcbcb, 0xd1d1d1, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xe7e7e7, 0xb6b6b6, 0xa7a7a7, 0xbababa, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xd9d9d9, 0x8c8c8c, 0x787878, 0x9c9c9c, 0xb1b1b1, 0xb8b8b8, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xc8c8c8, 0x595959, 0x3f3f3f, 0x787878, 0x9e9e9e, 0xb1b1b1, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x303030, 0x8f8f8f, 0x999999, 0x3b3b3b, 0x202020, 0x525252, 0x808080, 0xb2b2b2, 0xcacaca, 0xc6c6c6, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x242424, 0x3b3b3b, 0x3b3b3b, 0x242424, 0x000000, + 0x000000, 0x101010, 0x303030, 0x3b3b3b, 0x242424, 0x141414, 0x202020, 0x555555, 0xbbbbbb, 0xe8e8e8, 0xdbdbdb, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x3b3b3b, 0x999999, 0x999999, 0x3b3b3b, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x101010, 0x303030, 0x686868, 0xb9b9b9, 0xa9a9a9, 0x383838, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x303030, 0x8f8f8f, 0xb9b9b9, 0xacacac, 0x7c7c7c, 0x292929, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb4b4b4, 0xa5a5a5, 0x848484, 0x515151, 0x676767, 0xc7c7c7, 0xdbdbdb, 0xa4a4a4, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbebebe, 0xc5c5c5, 0xbfbfbf, 0xaeaeae, 0xb6b6b6, 0xd6d6d6, 0xcecece, 0x9f9f9f, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb8b8b8, 0xb1b1b1, 0xbababa, 0xd1d1d1, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb1b1b1, 0x9e9e9e, 0xa7a7a7, 0xcbcbcb, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb8b8b8, 0xb1b1b1, 0x9c9c9c, 0x787878, 0x7e7e7e, 0xafafaf, 0xb8b8b8, 0x989898, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb1b1b1, 0x9e9e9e, 0x787878, 0x3f3f3f, 0x414141, 0x7e7e7e, 0x989898, 0x8d8d8d, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x1a1a1a, 0x4d4d4d, 0x6f6f6f, 0x808080, 0x666666, 0x222222, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x090909, 0x1a1a1a, 0x3c3c3c, 0x6f6f6f, 0x666666, 0x222222, 0x000000, + 0x000000, 0x101010, 0x303030, 0x3b3b3b, 0x242424, 0x242424, 0x3b3b3b, 0x707070, 0xcfcfcf, 0xf4f4f4, 0xdfdfdf, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x202020, 0x525252, 0x525252, 0x202020, 0x000000, + 0x000000, 0x303030, 0x8f8f8f, 0x999999, 0x3b3b3b, 0x3b3b3b, 0x999999, 0xcfcfcf, 0xefefef, 0xf0f0f0, 0xd2d2d2, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x141414, 0x202020, 0x202020, 0x141414, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xcfcfcf, 0x707070, 0x707070, 0xcfcfcf, 0xfdfdfd, 0xf9f9f9, 0xe8e8e8, 0xcacaca, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xefefef, 0xcfcfcf, 0xcfcfcf, 0xefefef, 0xf9f9f9, 0xececec, 0xdbdbdb, 0xc6c6c6, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xfdfdfd, 0xf9f9f9, 0xf4f4f4, 0xf0f0f0, 0xe8e8e8, 0xdbdbdb, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf9f9f9, 0xececec, 0xdfdfdf, 0xd2d2d2, 0xcacaca, 0xc6c6c6, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x101010, 0x575757, 0xcbcbcb, 0xcbcbcb, 0xcacaca, 0xcfcfcf, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x292929, 0x8e8e8e, 0xcccccc, 0xcccccc, 0xcdcdcd, 0xcacaca, 0x000000, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x313131, 0x939393, 0xc6c6c6, 0xcacaca, 0xcccccc, 0xcbcbcb, 0xcbcbcb, + 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x2d2d2d, 0x868686, 0xb9b9b9, 0xc6c6c6, 0xcccccc, 0xcccccc, 0xcccccc, + 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x282828, 0x797979, 0xaaaaaa, 0xbbbbbb, 0xc6c6c6, 0xcacaca, 0xcccccc, + 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x242424, 0x6c6c6c, 0x999999, 0xaaaaaa, 0xb9b9b9, 0xc6c6c6, 0xcccccc, + 0x000000, 0x3e3e3e, 0xb9b9b9, 0xebebeb, 0xd3d3d3, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc1c1c1, 0xb5b5b5, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xb5b5b5, 0xc1c1c1, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc1c1c1, 0xb5b5b5, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xb5b5b5, 0xc1c1c1, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc1c1c1, 0xb5b5b5, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xb5b5b5, 0xc1c1c1, 0xb8b8b8, 0x989898, 0x666666, 0x222222, 0x222222, 0x666666, 0x939393, 0xa8a8a8, 0xb8b8b8, 0xc4c4c4, 0xcccccc, + 0x000000, 0x393939, 0xacacac, 0xd3d3d3, 0xafafaf, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9b9b9b, 0x979797, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x979797, 0x9b9b9b, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9b9b9b, 0x979797, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x979797, 0x9b9b9b, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9b9b9b, 0x979797, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x979797, 0x9b9b9b, 0x989898, 0x8d8d8d, 0x666666, 0x222222, 0x222222, 0x666666, 0x979797, 0xb5b5b5, 0xc4c4c4, 0xc6c6c6, 0xcbcbcb, + 0x000000, 0x333333, 0x848484, 0x969696, 0x767676, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x555555, 0x333333, 0x3c3c3c, 0x6f6f6f, 0x959595, 0xb8b8b8, 0xcdcdcd, 0xcacaca, 0x000000, + 0x000000, 0x202020, 0x333333, 0x323232, 0x272727, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x333333, 0x555555, 0x6f6f6f, 0x808080, 0x8e8e8e, 0xa4a4a4, 0xcacaca, 0xcfcfcf, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0x666666, 0x888888, 0x888888, 0x888888, 0x878787, 0x000000, 0x000000, 0x000000 +}; diff --git a/Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx b/Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx deleted file mode 100644 index 0d678dc1..00000000 --- a/Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx +++ /dev/null @@ -1,119 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include - -#define kEPMSectorSize kATASectorSize -#define kEPMSwapSize MIB(16) -#define kEPMGPTStartLba (30) - -// {310E1FC7-2060-425D-BE7B-75A37CC679BC} -STATIC const BlockGUID kEPMGuid = { - 0x310e1fc7, - 0x2060, - 0x425d, - {0xbe, 0x7b, 0x75, 0xa3, 0x7c, 0xc6, 0x79, 0xbc}}; - -/// @brief Write epm partition to disk. -/// @param namePart partition name -/// @param namePartLength length of name -/// @param bootDev disk interface. -/// @return -EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLength, - BootDevice* bootDev) { - if (namePartLength > kEPMNameLength || !namePart) return No; - if (!bootDev) return No; - - bootDev->Leak().mBase = kEPMGPTStartLba; - bootDev->Leak().mSize = kEPMSectorSize; - - Char buf[kEPMSectorSize] = {0}; - - bootDev->Read(buf, 1); - - BTextWriter writer; - - writer.Write(L"NewOS: Checking for a EPM partition...\r\n"); - - for (SizeT index = 0; index < kEPMMagicLength; ++index) { - if (buf[index] != kEPMMagic[index]) { - writer.Write(L"NewOS: Writing a EPM partition...\r\n"); - - BootBlockType* bootBlock = (BootBlockType*)buf; - - bootBlock->Version = kEPMRevision; - bootBlock->NumBlocks = 2; - - for (SizeT i = 0; i < kEPMNameLength; ++i) { - bootBlock->Magic[i] = kEPMMagic[i]; - } - - for (SizeT i = 0; i < namePartLength; ++i) { - bootBlock->Name[i] = namePart[i]; - } - - bootBlock->LbaStart = - sizeof(BootBlockType) + (sizeof(PartitionBlockType) * kEPMMaxBlks); - - bootBlock->SectorSz = kEPMSectorSize; - - bootBlock->Uuid = kEPMGuid; - - PartitionBlock* partBlock = (PartitionBlock*)(buf + sizeof(BootBlock)); - - const char* fsName = "NewFS"; - int fsNameLength = 6; - - for (SizeT i = 0; i < fsNameLength; ++i) { - partBlock->Fs[i] = fsName[i]; - } - - partBlock->Version = kEPMNewOS; - - const char* partNameSystem = "System HD"; - int partNameLength = 10; - - for (SizeT i = 0; i < partNameLength; ++i) { - partBlock->Name[i] = partNameSystem[i]; - } - - partBlock->SectorSz = kEPMSectorSize; - partBlock->LbaStart = kEPMStartPartitionBlk + kEPMSwapSize; - partBlock->Version = kNewFSVersionInteger; - partBlock->Kind = kNewFSPartitionTypeStandard; - partBlock->LbaEnd = 0UL; ///! grows on the disk. - - PartitionBlock* swapBlock = (PartitionBlock*)(buf + sizeof(BootBlock) + sizeof(PartitionBlock)); - - for (SizeT i = 0; i < fsNameLength; ++i) { - swapBlock->Fs[i] = fsName[i]; - } - - swapBlock->Version = kEPMNewOS; - - const char *partNameSwap = "Swap HD"; - partNameLength = 8; - - for (SizeT i = 0; i < partNameLength; ++i) { - swapBlock->Name[i] = partNameSwap[i]; - } - - swapBlock->SectorSz = kEPMSectorSize; - swapBlock->LbaStart = kEPMStartPartitionBlk; - swapBlock->Version = kNewFSVersionInteger; - swapBlock->Kind = kNewFSPartitionTypePage; - swapBlock->LbaEnd = kEPMSwapSize; /// 4 MIB swap partition. - - bootDev->Write(buf, 1); - - return No; - } - } - - writer.Write(L"NewOS: Partition found, everything's OK.\r\n"); - return Yes; -} \ No newline at end of file diff --git a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx index f5bb3ce8..a5014f92 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx @@ -5,53 +5,41 @@ ------------------------------------------- */ #include +#include +#include #include #include #include -#ifdef __x86_64__ -#include -#else -#error This CPU is unknown. -#endif // ifdef __x86_64__ - #define kMaxBufSize 256 -/// @brief Bootloader main type. -typedef void (*bt_main_type)(HEL::HandoverInformationHeader* handoverInfo); +/// @brief check the BootDevice if suitable. +STATIC Bool CheckBootDevice(BootDeviceATA& ataDev) { + if (ataDev.Leak().mErr) return false; + return true; +} /// @brief Main EFI entrypoint. /// @param ImageHandle Handle of this image. /// @param SystemTable The system table of it. /// @return -EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, - EfiSystemTable* SystemTable) { - InitEFI(SystemTable); // Init the EFI library. - InitGOP(); // Init the GOP. +EFI_EXTERN_C EFI_API Int efi_main(EfiHandlePtr ImageHandle, + EfiSystemTable* SystemTable) { + InitEFI(SystemTable); ///! Init the EFI library. + InitGOP(); ///! Init the GOP. BTextWriter writer; /// Splash screen stuff - writer.Write(L"Mahrouss-Logic (R) NewOS: ").Write(BVersionString::Shared()); + writer.Write(L"Mahrouss-Logic (R) NewBoot: ").Write(BVersionString::Shared()); - writer.Write(L"\r\nNewOS: Firmware Vendor: ") + writer.Write(L"\r\nNewBoot: Firmware Vendor: ") .Write(SystemTable->FirmwareVendor) .Write(L"\r\n"); BootDeviceATA ataDev; Boolean isEpmFound = No; - /// if ATA drive is initialized and EFI vendor supports an EPM scheme. - /// @EDK tells our OS that it supports EPM scheme as well. - if (ataDev) { - Char namePart[kEPMNameLength] = {"NewBoot"}; - /// tries to read an EPM block, or writes one if it fails. - isEpmFound = boot_write_epm_partition(namePart, kEPMNameLength, &ataDev); - } else { - writer.Write(L"NewOS: This computer can't work with NewOS.\r\n"); - return kEfiFail; - } - UInt32 MapKey = 0; UInt32* SizePtr = nullptr; EfiMemoryDescriptor* Descriptor = nullptr; @@ -76,46 +64,8 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, EFI::RaiseHardError(L"__bad_alloc", L"NewBoot ran out of memory!"); } - /**** - * - * Get machine memory map. - * - */ - - while (BS->GetMemoryMap(SizePtr, Descriptor, &MapKey, &SzDesc, &RevDesc) != - kEfiOk) - ; - HEL::HandoverInformationHeader* handoverHdrPtr = nullptr; - BS->AllocatePool(EfiLoaderData, sizeof(HEL::HandoverInformationHeader), - (VoidPtr*)&handoverHdrPtr); - - handoverHdrPtr->f_GOP.f_The = kGop->Mode->FrameBufferBase; - handoverHdrPtr->f_GOP.f_Width = kGop->Mode->Info->VerticalResolution; - handoverHdrPtr->f_GOP.f_Height = kGop->Mode->Info->HorizontalResolution; - handoverHdrPtr->f_GOP.f_PixelPerLine = kGop->Mode->Info->PixelsPerScanLine; - handoverHdrPtr->f_GOP.f_PixelFormat = kGop->Mode->Info->PixelFormat; - handoverHdrPtr->f_GOP.f_Size = kGop->Mode->FrameBufferSize; - - handoverHdrPtr->f_PhysicalStart = - reinterpret_cast(Descriptor->PhysicalStart); - handoverHdrPtr->f_PhysicalSize = Descriptor->NumberOfPages; - - handoverHdrPtr->f_VirtualStart = - reinterpret_cast(Descriptor->VirtualStart); - - handoverHdrPtr->f_VirtualSize = Descriptor->NumberOfPages; /* # of pages */ - - handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); - - BCopyMem(handoverHdrPtr->f_FirmwareVendorName, SystemTable->FirmwareVendor, - handoverHdrPtr->f_FirmwareVendorLen); - -#ifdef __DEBUG__ - writer.Write(L"NewOS: Fetching ACPI's 'RSD PTR'...").Write(L"\r\n"); -#endif - for (SizeT indexVT = 0; indexVT < SystemTable->NumberOfTableEntries; ++indexVT) { volatile Char* vendorTable = reinterpret_cast( @@ -127,29 +77,48 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, vendorTable[6] == 'R' && vendorTable[7] == ' ') { handoverHdrPtr->f_HardwareTables.f_RsdPtr = (VoidPtr)vendorTable; -#ifdef __DEBUG__ - writer.Write(L"NewOS: Found ACPI's 'RSD PTR' table on this machine.") - .Write(L"\r\n"); -#endif + writer.Write(L"NewBoot: Found RSDP for kernel.\r\n"); break; } } - if (!isEpmFound) { - writer.Write(L"NewOS: No partition found for NewOS. (HCR-1000)\r\n"); - } - handoverHdrPtr->f_Magic = kHandoverMagic; handoverHdrPtr->f_Version = kHandoverVersion; - writer.Write(L"Running NewOS...\r\n"); + BCopyMem(handoverHdrPtr->f_FirmwareVendorName, SystemTable->FirmwareVendor, + handoverHdrPtr->f_FirmwareVendorLen); + + handoverHdrPtr->f_GOP.f_The = kGop->Mode->FrameBufferBase; + handoverHdrPtr->f_GOP.f_Width = kGop->Mode->Info->VerticalResolution; + handoverHdrPtr->f_GOP.f_Height = kGop->Mode->Info->HorizontalResolution; + handoverHdrPtr->f_GOP.f_PixelPerLine = kGop->Mode->Info->PixelsPerScanLine; + handoverHdrPtr->f_GOP.f_PixelFormat = kGop->Mode->Info->PixelFormat; + handoverHdrPtr->f_GOP.f_Size = kGop->Mode->FrameBufferSize; + + BS->AllocatePool(EfiLoaderData, sizeof(HEL::HandoverInformationHeader), + (VoidPtr*)&handoverHdrPtr); + + handoverHdrPtr->f_PhysicalStart = 0; + handoverHdrPtr->f_PhysicalSize = 0; + + EfiPhysicalAddress* whereAddress = + reinterpret_cast(kBootVirtualAddress); + + BS->AllocatePages(EfiAllocateType::AllocateAnyPages, + EfiMemoryType::EfiConventionalMemory, 1, whereAddress); + + handoverHdrPtr->f_VirtualStart = reinterpret_cast(whereAddress); + + handoverHdrPtr->f_VirtualSize = Descriptor->NumberOfPages; /* # of pages */ + + handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); - EFI::ExitBootServices(MapKey, ImageHandle); + // EFI::ExitBootServices(MapKey, ImageHandle); /// TODO: Read catalog and read NewKernel.exe - EFI::Stop(); + // EFI::Stop(); - return kEfiFail; + CANT_REACH(); } diff --git a/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx b/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx index f088d73c..72276ef9 100644 --- a/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx +++ b/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx @@ -21,7 +21,7 @@ STATIC const BlockGUID kEPMGuid = { /// @param namePart partition name /// @param namePartLength length of name /// @param bootDev disk interface. -/// @return +/// @return EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLength, BootDevice* bootDev) { if (namePartLength > kEPMNameLength || !namePart) return No; @@ -36,11 +36,11 @@ EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLe BTextWriter writer; - writer.Write(L"NewOS: Checking for a EPM partition...\r\n"); + writer.Write(L"NewBoot: Checking for an EPM partition...\r\n"); for (SizeT index = 0; index < kEPMMagicLength; ++index) { if (buf[index] != kEPMMagic[index]) { - writer.Write(L"NewOS: Writing a EPM partition...\r\n"); + writer.Write(L"NewBoot: Writing an EPM partition...\r\n"); BootBlockType* bootBlock = (BootBlockType*)buf; @@ -113,6 +113,6 @@ EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLe } } - writer.Write(L"NewOS: Partition found, everything's OK.\r\n"); + writer.Write(L"NewBoot: Partition found, everything's OK.\r\n"); return Yes; -} \ No newline at end of file +} diff --git a/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S b/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S index 0b3cd493..53d9d4f2 100644 --- a/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S +++ b/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S @@ -19,4 +19,16 @@ boot_hdr_ver: boot_hdr_proc: .long bootloader_start -/* NewOS kernel header end */ \ No newline at end of file +/* NewOS kernel header end */ + +.extern bootloader_main +.extern bootloader_stack + +.globl bootloader_start +bootloader_start: + mflr 4 /* real address of .Laddr */ + lwz 0,(bootloader_stack-bootloader_start)(4) /* stack address location */ + mr 1,0 /* use user defined stack */ + + bl bootloader_main + blr diff --git a/Private/Root/Boot/Icons/boot-logo.ico b/Private/Root/Boot/Icons/boot-logo.ico index a9c250ed..9be8328f 100644 Binary files a/Private/Root/Boot/Icons/boot-logo.ico and b/Private/Root/Boot/Icons/boot-logo.ico differ diff --git a/Private/Root/Boot/Icons/driver-logo.ico b/Private/Root/Boot/Icons/driver-logo.ico index 9ee1b954..9394ab64 100644 Binary files a/Private/Root/Boot/Icons/driver-logo.ico and b/Private/Root/Boot/Icons/driver-logo.ico differ diff --git a/Private/Root/Boot/Icons/kernel-logo.ico b/Private/Root/Boot/Icons/kernel-logo.ico index d5ea0310..0512b65e 100644 Binary files a/Private/Root/Boot/Icons/kernel-logo.ico and b/Private/Root/Boot/Icons/kernel-logo.ico differ -- cgit v1.2.3 From 7b6e3242a0e136c9a525c25152034f449dbf319c Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 19 Apr 2024 08:56:33 +0200 Subject: MHR-5: Made BootKit more portable. Signed-off-by: Amlal El Mahrouss --- Private/CFKit/Property.hpp | 1 + Private/NewBoot/BootKit/BootKit.hxx | 141 +++++++-------------- .../NewBoot/Source/HEL/AMD64/BootFileReader.cxx | 30 +++-- Private/NewBoot/Source/HEL/AMD64/BootMain.cxx | 33 ++++- Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx | 33 +++++ .../NewBoot/Source/HEL/AMD64/BootTextWriter.cxx | 19 ++- Private/NewBoot/Source/makefile | 2 +- 7 files changed, 141 insertions(+), 118 deletions(-) diff --git a/Private/CFKit/Property.hpp b/Private/CFKit/Property.hpp index ea427481..10c8ebf0 100644 --- a/Private/CFKit/Property.hpp +++ b/Private/CFKit/Property.hpp @@ -15,6 +15,7 @@ namespace NewOS { using PropertyId = Int; +/// @brief Kernel property class. class Property { public: explicit Property(const StringView &sw) : fName(sw) {} diff --git a/Private/NewBoot/BootKit/BootKit.hxx b/Private/NewBoot/BootKit/BootKit.hxx index be16c2c5..da178624 100644 --- a/Private/NewBoot/BootKit/BootKit.hxx +++ b/Private/NewBoot/BootKit/BootKit.hxx @@ -11,6 +11,12 @@ #pragma once +/***********************************************************************************/ +/// Framebuffer helpers. +/***********************************************************************************/ + +#define RGB(R, G, B) (UInt32)(0x##R##G##B) + class BTextWriter; class BFileReader; class BFileRunner; @@ -19,6 +25,13 @@ class BVersionString; #include #include +/***********************************************************************************/ +/// Include other APIs. +/***********************************************************************************/ + +#include +#include + #ifdef __EFI_x86_64__ #define kBootVirtualAddress (0xffffff80000000) #include @@ -27,6 +40,8 @@ class BVersionString; #include #include +#define kMaxReadSize (320) + using namespace NewOS; typedef Char *PEFImagePtr; @@ -88,6 +103,7 @@ class BFileReader final { EfiHandlePtr ImageHandle); ~BFileReader(); + public: Void ReadAll(); enum { @@ -99,15 +115,17 @@ class BFileReader final { kCount, }; - Int32 &Error() { return mErrorCode; } - VoidPtr Blob() { return mBlob; } - EfiFileProtocolPtr File() { return mFile; } - UInt64 &Size() { return mSizeFile; } + /// @brief error code getter. + /// @return the error code. + Int32 &Error(); - UInt64 &Size(const UInt64 &Sz) { - mSizeFile = Sz; - return mSizeFile; - } + /// @brief blob getter. + /// @return the blob. + VoidPtr Blob(); + + /// @breif Size getter. + /// @return the size of the file. + UInt64 &Size(); public: BFileReader &operator=(const BFileReader &) = default; @@ -124,14 +142,13 @@ class BFileReader final { typedef UInt8 *BlobType; -#define kMaxReadSize (320) - -/***********************************************************************************/ -/// Include other APIs. -/***********************************************************************************/ +class BVersionString final { + public: + static const CharacterTypeUTF16 *Shared() { return BOOTLOADER_VERSION; } +}; -#include -#include +/// @brief Bootloader main type. +typedef void (*BootMainKind)(HEL::HandoverInformationHeader *handoverInfo); /***********************************************************************************/ /// Provide some useful processor features. @@ -139,43 +156,17 @@ typedef UInt8 *BlobType; #ifdef __EFI_x86_64__ -inline void Out8(UInt16 port, UInt8 value) { - asm volatile("outb %%al, %1" : : "a"(value), "Nd"(port) : "memory"); -} - -inline void Out16(UInt16 port, UInt16 value) { - asm volatile("outw %%ax, %1" : : "a"(value), "Nd"(port) : "memory"); -} - -inline void Out32(UInt16 port, UInt32 value) { - asm volatile("outl %%eax, %1" : : "a"(value), "Nd"(port) : "memory"); -} - -inline UInt8 In8(UInt16 port) { - UInt8 value; - asm volatile("inb %1, %%al" : "=a"(value) : "Nd"(port) : "memory"); - - return value; -} - -inline UInt16 In16(UInt16 port) { - UInt16 value; - asm volatile("inw %%dx, %%ax" : "=a"(value) : "d"(port)); - - return value; -} - -inline UInt32 In32(UInt16 port) { - UInt32 value; - asm volatile("inl %1, %%eax" : "=a"(value) : "Nd"(port) : "memory"); - - return value; -} - /*** * Common processor instructions. */ +EXTERN_C void Out8(UInt16 port, UInt8 value); +EXTERN_C void Out16(UInt16 port, UInt16 value); +EXTERN_C void Out32(UInt16 port, UInt32 value); +EXTERN_C UInt8 In8(UInt16 port); +EXTERN_C UInt16 In16(UInt16 port); +EXTERN_C UInt32 In32(UInt16 port); + EXTERN_C void rt_hlt(); EXTERN_C void rt_cli(); EXTERN_C void rt_sti(); @@ -184,52 +175,8 @@ EXTERN_C void rt_std(); #endif // __EFI_x86_64__ -/***********************************************************************************/ -/// Framebuffer. -/***********************************************************************************/ - -#define RGB(R, G, B) (UInt32)(0x##R##G##B) - -const UInt32 kRgbRed = 0x000000FF; -const UInt32 kRgbGreen = 0x0000FF00; -const UInt32 kRgbBlue = 0x00FF0000; -const UInt32 kRgbBlack = 0x00000000; -const UInt32 kRgbWhite = 0x00FFFFFF; - -#ifdef __EFI_x86_64__ -/** GOP and related. */ -inline EfiGraphicsOutputProtocol *kGop; -inline UInt16 kStride; -inline EfiGUID kGopGuid; - -/** -@brief Inits the QuickTemplate GUI framework. -*/ -inline Void InitGOP() noexcept { - kGopGuid = EfiGUID(EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID); - kGop = nullptr; - - extern EfiBootServices *BS; - - BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr *)&kGop); - - kStride = 4; -} -#endif // __EFI_x86_64__ - -class BVersionString final { - public: - static const CharacterTypeUTF16 *Shared() { return BOOTLOADER_VERSION; } -}; - -/// @brief Writes an EPM partition on the main disk. -/// @param namePart the partition's name -/// @param namePartLength the partition name's length -/// @param bootDev the disk interface. -/// @return -EXTERN_C Boolean boot_write_epm_partition(const Char *namePart, - SizeT namePartLength, - BootDevice *bootDev); - -/// @brief Bootloader main type. -typedef void (*BootMainKind)(HEL::HandoverInformationHeader* handoverInfo); +static inline const UInt32 kRgbRed = 0x000000FF; +static inline const UInt32 kRgbGreen = 0x0000FF00; +static inline const UInt32 kRgbBlue = 0x00FF0000; +static inline const UInt32 kRgbBlack = 0x00000000; +static inline const UInt32 kRgbWhite = 0x00FFFFFF; diff --git a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx index b31f37de..6e279498 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx @@ -25,7 +25,8 @@ /*** @brief File Reader constructor. */ -BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandle) { +BFileReader::BFileReader(const CharacterTypeUTF16* path, + EfiHandlePtr ImageHandle) { if (path != nullptr) { SizeT index = 0UL; for (; path[index] != L'\0'; ++index) { @@ -46,12 +47,12 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandl EfiGUID guidImg = EfiGUID(EFI_LOADED_IMAGE_PROTOCOL_GUID); if (BS->HandleProtocol(ImageHandle, &guidImg, (void**)&img) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); + mWriter.Write(L"NewBoot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; } if (BS->HandleProtocol(img->DeviceHandle, &guidEfp, (void**)&efp) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); + mWriter.Write(L"NewBoot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -59,7 +60,7 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandl /// Start doing disk I/O if (efp->OpenVolume(efp, &rootFs) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Volume").Write(L"\r\n"); + mWriter.Write(L"NewBoot: Fetch-Protocol: No-Such-Volume").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -68,7 +69,7 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandl if (rootFs->Open(rootFs, &kernelFile, mPath, kEFIFileRead, kEFIReadOnly) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Path: ") + mWriter.Write(L"NewBoot: Fetch-Protocol: No-Such-Path: ") .Write(mPath) .Write(L"\r\n"); this->mErrorCode = kNotSupported; @@ -88,8 +89,7 @@ BFileReader::~BFileReader() { this->mFile = nullptr; } - if (this->mBlob) - BS->FreePool(mBlob); + if (this->mBlob) BS->FreePool(mBlob); BSetMem(this->mPath, 0, kPathLen); } @@ -99,13 +99,11 @@ BFileReader::~BFileReader() { @param ImageHandle used internally. */ Void BFileReader::ReadAll() { - /// Allocate Handover page. - if (this->mErrorCode != kOperationOkay) return; if (mBlob == nullptr) { if (auto err = BS->AllocatePool(EfiLoaderCode, mSizeFile, - (VoidPtr*)&mBlob) != kEfiOk) { + (VoidPtr*)&mBlob) != kEfiOk) { mWriter.Write(L"*** EFI-Code: ").Write(err).Write(L" ***\r\n"); EFI::RaiseHardError(L"NewBoot_PageError", L"Allocation error."); } @@ -118,3 +116,15 @@ Void BFileReader::ReadAll() { mErrorCode = kOperationOkay; } + +/// @brief error code getter. +/// @return the error code. +Int32& BFileReader::Error() { return mErrorCode; } + +/// @brief blob getter. +/// @return the blob. +VoidPtr BFileReader::Blob(){ return mBlob; } + +/// @breif Size getter. +/// @return the size of the file. +UInt64& BFileReader::Size() { return mSizeFile; } diff --git a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx index a5014f92..88d01dfc 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx @@ -13,6 +13,27 @@ #define kMaxBufSize 256 +/** Graphics related. */ + +STATIC EfiGraphicsOutputProtocol *kGop = nullptr; +STATIC UInt16 kStride = 0U; +STATIC EfiGUID kGopGuid; + +/** + @brief Finds and stores the GOP. +*/ + +STATIC Void InitGOP() noexcept { + kGopGuid = EfiGUID(EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID); + kGop = nullptr; + + extern EfiBootServices *BS; + + BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr *)&kGop); + + kStride = 4; +} + /// @brief check the BootDevice if suitable. STATIC Bool CheckBootDevice(BootDeviceATA& ataDev) { if (ataDev.Leak().mErr) return false; @@ -23,7 +44,7 @@ STATIC Bool CheckBootDevice(BootDeviceATA& ataDev) { /// @param ImageHandle Handle of this image. /// @param SystemTable The system table of it. /// @return -EFI_EXTERN_C EFI_API Int efi_main(EfiHandlePtr ImageHandle, +EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, EfiSystemTable* SystemTable) { InitEFI(SystemTable); ///! Init the EFI library. InitGOP(); ///! Init the GOP. @@ -48,7 +69,7 @@ EFI_EXTERN_C EFI_API Int efi_main(EfiHandlePtr ImageHandle, if (BS->AllocatePool(EfiLoaderData, sizeof(UInt32), (VoidPtr*)&SizePtr) != kEfiOk) { - EFI::RaiseHardError(L"__bad_alloc", L"NewBoot ran out of memory!"); + EFI::RaiseHardError(L"Bad-Alloc", L"NewBoot ran out of memory!"); } /**** @@ -61,7 +82,7 @@ EFI_EXTERN_C EFI_API Int efi_main(EfiHandlePtr ImageHandle, if (BS->AllocatePool(EfiLoaderData, sizeof(EfiMemoryDescriptor), (VoidPtr*)&Descriptor) != kEfiOk) { - EFI::RaiseHardError(L"__bad_alloc", L"NewBoot ran out of memory!"); + EFI::RaiseHardError(L"Bad-Alloc", L"NewBoot ran out of memory!"); } HEL::HandoverInformationHeader* handoverHdrPtr = nullptr; @@ -77,8 +98,6 @@ EFI_EXTERN_C EFI_API Int efi_main(EfiHandlePtr ImageHandle, vendorTable[6] == 'R' && vendorTable[7] == ' ') { handoverHdrPtr->f_HardwareTables.f_RsdPtr = (VoidPtr)vendorTable; - writer.Write(L"NewBoot: Found RSDP for kernel.\r\n"); - break; } } @@ -114,11 +133,11 @@ EFI_EXTERN_C EFI_API Int efi_main(EfiHandlePtr ImageHandle, handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); - // EFI::ExitBootServices(MapKey, ImageHandle); + EFI::ExitBootServices(MapKey, ImageHandle); /// TODO: Read catalog and read NewKernel.exe - // EFI::Stop(); + EFI::Stop(); CANT_REACH(); } diff --git a/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx b/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx index 00f7bdd8..d0da09b7 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx @@ -15,3 +15,36 @@ EXTERN_C void rt_sti() { asm volatile("sti"); } EXTERN_C void rt_cld() { asm volatile("cld"); } EXTERN_C void rt_std() { asm volatile("std"); } + +EXTERN_C void Out8(UInt16 port, UInt8 value) { + asm volatile("outb %%al, %1" : : "a"(value), "Nd"(port) : "memory"); +} + +EXTERN_C void Out16(UInt16 port, UInt16 value) { + asm volatile("outw %%ax, %1" : : "a"(value), "Nd"(port) : "memory"); +} + +EXTERN_C void Out32(UInt16 port, UInt32 value) { + asm volatile("outl %%eax, %1" : : "a"(value), "Nd"(port) : "memory"); +} + +EXTERN_C UInt8 In8(UInt16 port) { + UInt8 value; + asm volatile("inb %1, %%al" : "=a"(value) : "Nd"(port) : "memory"); + + return value; +} + +EXTERN_C UInt16 In16(UInt16 port) { + UInt16 value; + asm volatile("inw %%dx, %%ax" : "=a"(value) : "d"(port)); + + return value; +} + +EXTERN_C UInt32 In32(UInt16 port) { + UInt32 value; + asm volatile("inl %1, %%eax" : "=a"(value) : "Nd"(port) : "memory"); + + return value; +} diff --git a/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx b/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx index 7ccc37aa..2ebde023 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx @@ -21,23 +21,27 @@ @brief puts wrapper over EFI ConOut. */ BTextWriter &BTextWriter::Write(const CharacterTypeUTF16 *str) { - if (*str == 0 || !str) return *this; +#ifdef __DEBUG__ + if (!str || *str == 0) return *this; ST->ConOut->OutputString(ST->ConOut, str); +#endif // ifdef __DEBUG__ return *this; } BTextWriter &BTextWriter::Write(const UChar *str) { - if (*str == 0 || !str) return *this; +#ifdef __DEBUG__ + if (!str || *str == 0) return *this; CharacterTypeUTF16 strTmp[2]; strTmp[1] = 0; - + for (size_t i = 0; str[i] != 0; i++) { strTmp[0] = str[i]; ST->ConOut->OutputString(ST->ConOut, strTmp); } +#endif // ifdef __DEBUG__ return *this; } @@ -46,22 +50,29 @@ BTextWriter &BTextWriter::Write(const UChar *str) { @brief putc wrapper over EFI ConOut. */ BTextWriter &BTextWriter::WriteCharacter(CharacterTypeUTF16 c) { +#ifdef __DEBUG__ EfiCharType str[2]; + str[0] = c; str[1] = 0; ST->ConOut->OutputString(ST->ConOut, str); +#endif // ifdef __DEBUG__ return *this; } BTextWriter &BTextWriter::Write(const Long &x) { +#ifdef __DEBUG__ this->Write(L"0x"); this->_Write(x); +#endif // ifdef __DEBUG__ + return *this; } BTextWriter &BTextWriter::_Write(const Long &x) { +#ifdef __DEBUG__ int y = x / 16; int h = x % 16; @@ -78,5 +89,7 @@ BTextWriter &BTextWriter::_Write(const Long &x) { const char NUMBERS[17] = "0123456789ABCDEF"; this->WriteCharacter(NUMBERS[h]); +#endif // ifdef __DEBUG__ + return *this; } diff --git a/Private/NewBoot/Source/makefile b/Private/NewBoot/Source/makefile index a73b3adb..24f46fd6 100644 --- a/Private/NewBoot/Source/makefile +++ b/Private/NewBoot/Source/makefile @@ -22,7 +22,7 @@ IMG=epm.img IMG_2=epm-slave.img EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img -LD_FLAGS=-e efi_main --subsystem=10 +LD_FLAGS=-e Main --subsystem=10 OBJ=$(wildcard *.o) $(wildcard HEL/AMD64/*.obj) -- cgit v1.2.3 From c62c67a3863213ea6da3aa6ec4530c9e8287933d Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 19 Apr 2024 13:28:10 +0200 Subject: MHR-5: Bumping sources. Signed-off-by: Amlal El Mahrouss --- Public/Developer/PDFLib/.gitkeep | 0 Public/Developer/ServerLib/.gitkeep | 0 Public/Developer/SystemLib/PowerPC/CoreAssembly.s | 3 +-- 3 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 Public/Developer/PDFLib/.gitkeep delete mode 100644 Public/Developer/ServerLib/.gitkeep diff --git a/Public/Developer/PDFLib/.gitkeep b/Public/Developer/PDFLib/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Public/Developer/ServerLib/.gitkeep b/Public/Developer/ServerLib/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Public/Developer/SystemLib/PowerPC/CoreAssembly.s b/Public/Developer/SystemLib/PowerPC/CoreAssembly.s index 7078774e..60656bdf 100644 --- a/Public/Developer/SystemLib/PowerPC/CoreAssembly.s +++ b/Public/Developer/SystemLib/PowerPC/CoreAssembly.s @@ -2,7 +2,7 @@ ; ; Copyright Mahrouss Logic ; -; Purpose: PowerPC Core assembly routines. +; Purpose: POWER low level I/O ; ; ------------------------------------------- */ @@ -19,4 +19,3 @@ export .code64 RtAssertTriggerInterrupt: sc blr - -- cgit v1.2.3 From e5a591054ea0992acc3cb786d3af9f358febca6d Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 19 Apr 2024 21:17:21 +0200 Subject: MHR-5: Improve makefile, and separating them for each platform. Signed-off-by: Amlal El Mahrouss --- Private/makefile | 19 ++++++++++++------- Public/Developer/SystemLib/Makefile | 22 ---------------------- Public/Developer/SystemLib/amd64.mk | 22 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 29 deletions(-) delete mode 100644 Public/Developer/SystemLib/Makefile create mode 100644 Public/Developer/SystemLib/amd64.mk diff --git a/Private/makefile b/Private/makefile index 412739ca..ffefecf2 100644 --- a/Private/makefile +++ b/Private/makefile @@ -5,25 +5,28 @@ CC = x86_64-w64-mingw32-gcc LD = x86_64-w64-mingw32-ld -CCFLAGS = -c -ffreestanding -D__NEWOS_AMD64__ -mgeneral-regs-only -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__FSKIT_NEWFS__ -D__KERNEL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I../ -I./ +CCFLAGS = -c -ffreestanding -D__NEWOS_AMD64__ -mgeneral-regs-only -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__FSKIT_NEWFS__ -D__KERNEL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I../ -I./ ASM = nasm ifneq ($(ATA_PIO_SUPPORT), ) -DISKDRIVER = -D__ATA_PIO__ +DISKDRIVER = -D__ATA_PIO__ endif ifneq ($(ATA_DMA_SUPPORT), ) -DISKDRIVER = -D__ATA_DMA__ +DISKDRIVER = -D__ATA_DMA__ endif ifneq ($(AHCI_SUPPORT), ) -DISKDRIVER = -D__AHCI__ +DISKDRIVER = -D__AHCI__ endif ifneq ($(DEBUG_SUPPORT), ) -DEBUG = -D__DEBUG__ +DEBUG = -D__DEBUG__ endif +SLEEP = sleep 1 +COPY = cp + # Add assembler, linker, and object files variables. ASMFLAGS = -f win64 LDFLAGS = -e Main --subsystem=17 @@ -50,14 +53,16 @@ newos-amd64-epm: clean $(ASM) $(ASMFLAGS) HALKit/AMD64/HalSMPCoreManager.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalNewBoot.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInstallTIB.asm + $(SLEEP) $(MOVEALL) -OBJCOPY=x86_64-w64-mingw32-objcopy +OBJCOPY=x86_64-w64-mingw32-objcopy .PHONY: link-amd64-epm link-amd64-epm: + $(SLEEP) $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL) - cp $(KERNEL) Root/Boot + $(COPY) $(KERNEL) Root/Boot .PHONY: all all: newos-amd64-epm link-amd64-epm diff --git a/Public/Developer/SystemLib/Makefile b/Public/Developer/SystemLib/Makefile deleted file mode 100644 index a753ccc8..00000000 --- a/Public/Developer/SystemLib/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -################################################## -# (C) Mahrouss Logic, all rights reserved. -# This is the SystemLib Makefile. -################################################## - -CC=x86_64-w64-mingw32-gcc -AR=x86_64-w64-mingw32-ar -CCINC=-I./ -CCFLAGS=-D__SINGLE_PRECISION__ -nostdlib -std=c17 -ffreestanding -Xlinker --subsystem=17 -shared -OUTPUT=SystemLib.lib - -.PHONY: all -all: build-core-amd64 - @echo "[SystemLib.lib] Build done." - -.PHONY: build-core-amd64 -build-core-amd64: - $(CC) $(CCINC) $(CCFLAGS) $(wildcard Sources/*.c) $(wildcard AMD64/*.s) -o $(OUTPUT) - -.PHONY: clean -clean: - rm -f $(wildcard *.lib) diff --git a/Public/Developer/SystemLib/amd64.mk b/Public/Developer/SystemLib/amd64.mk new file mode 100644 index 00000000..a753ccc8 --- /dev/null +++ b/Public/Developer/SystemLib/amd64.mk @@ -0,0 +1,22 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the SystemLib Makefile. +################################################## + +CC=x86_64-w64-mingw32-gcc +AR=x86_64-w64-mingw32-ar +CCINC=-I./ +CCFLAGS=-D__SINGLE_PRECISION__ -nostdlib -std=c17 -ffreestanding -Xlinker --subsystem=17 -shared +OUTPUT=SystemLib.lib + +.PHONY: all +all: build-core-amd64 + @echo "[SystemLib.lib] Build done." + +.PHONY: build-core-amd64 +build-core-amd64: + $(CC) $(CCINC) $(CCFLAGS) $(wildcard Sources/*.c) $(wildcard AMD64/*.s) -o $(OUTPUT) + +.PHONY: clean +clean: + rm -f $(wildcard *.lib) -- cgit v1.2.3 From 7013c094668be2204b1245496236f0cf6afa07c2 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 20 Apr 2024 10:20:22 +0200 Subject: MHR-5/MHR-3: Rename PowerPC to POWER, implement NewFSParser::Format method, documenting code. Signed-off-by: Amlal El Mahrouss --- Private/ArchKit/ArchKit.hpp | 2 +- Private/Documentation/Spec.md | 2 +- Private/Drivers/SampleDriver/makefile | 2 +- Private/FSKit/NewFS.hxx | 9 +- Private/FirmwareKit/EPM.hxx | 2 +- Private/HALKit/64x0/HalVirtualMemory.cxx | 6 +- Private/HALKit/AMD64/HalKernelMain.cxx | 4 +- Private/HALKit/POWER/.gitkeep | 0 Private/HALKit/POWER/APM/.gitkeep | 0 Private/HALKit/POWER/HalContextSwitchPowerPC.s | 28 + Private/HALKit/POWER/HalHardware.cxx | 14 + Private/HALKit/POWER/HalHart.cxx | 19 + Private/HALKit/POWER/HalSerialPort.cxx | 24 + Private/HALKit/POWER/HalStartSequence.s | 14 + Private/HALKit/POWER/HalThread.cxx | 10 + Private/HALKit/POWER/HalVirtualMemory.cxx | 52 + Private/HALKit/POWER/Hart.hxx | 27 + Private/HALKit/POWER/MBCI/.gitkeep | 0 Private/HALKit/POWER/MBCI/HalMBCIHost.cxx | 8 + Private/HALKit/POWER/Processor.hpp | 46 + Private/HALKit/POWER/ppc-cpu.h | 1393 ++++++++++++++++++++ Private/HALKit/POWER/ppc-mmu.h | 797 +++++++++++ Private/HALKit/PowerPC/.gitkeep | 0 Private/HALKit/PowerPC/APM/.gitkeep | 0 .../HALKit/PowerPC/HalCoreContextSwitchPowerPC.s | 30 - Private/HALKit/PowerPC/HalHardware.cxx | 14 - Private/HALKit/PowerPC/HalHart.cxx | 19 - Private/HALKit/PowerPC/HalSerialPort.cxx | 24 - Private/HALKit/PowerPC/HalStartSequence.s | 14 - Private/HALKit/PowerPC/HalThread.cxx | 10 - Private/HALKit/PowerPC/HalVirtualMemory.cxx | 52 - Private/HALKit/PowerPC/Hart.hxx | 27 - Private/HALKit/PowerPC/MBCI/.gitkeep | 0 Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx | 8 - Private/HALKit/PowerPC/Processor.hpp | 46 - Private/HALKit/PowerPC/ppc-cpu.h | 1393 -------------------- Private/HALKit/PowerPC/ppc-mmu.h | 800 ----------- Private/KernelKit/DriveManager.hxx | 8 +- Private/KernelKit/PEFCodeManager.hxx | 2 +- Private/KernelKit/SMPManager.hpp | 2 +- Private/KernelKit/XCOFF.hxx | 6 +- Private/NewBoot/Source/makefile | 2 +- Private/Source/AppMain.cxx | 32 + Private/Source/FS/NewFS.cxx | 123 +- Private/Source/PEFCodeManager.cxx | 15 +- Private/Source/RuntimeMain.cxx | 32 - Private/makefile | 6 +- 47 files changed, 2588 insertions(+), 2536 deletions(-) create mode 100644 Private/HALKit/POWER/.gitkeep create mode 100644 Private/HALKit/POWER/APM/.gitkeep create mode 100644 Private/HALKit/POWER/HalContextSwitchPowerPC.s create mode 100644 Private/HALKit/POWER/HalHardware.cxx create mode 100644 Private/HALKit/POWER/HalHart.cxx create mode 100644 Private/HALKit/POWER/HalSerialPort.cxx create mode 100644 Private/HALKit/POWER/HalStartSequence.s create mode 100644 Private/HALKit/POWER/HalThread.cxx create mode 100644 Private/HALKit/POWER/HalVirtualMemory.cxx create mode 100644 Private/HALKit/POWER/Hart.hxx create mode 100644 Private/HALKit/POWER/MBCI/.gitkeep create mode 100644 Private/HALKit/POWER/MBCI/HalMBCIHost.cxx create mode 100644 Private/HALKit/POWER/Processor.hpp create mode 100644 Private/HALKit/POWER/ppc-cpu.h create mode 100644 Private/HALKit/POWER/ppc-mmu.h delete mode 100644 Private/HALKit/PowerPC/.gitkeep delete mode 100644 Private/HALKit/PowerPC/APM/.gitkeep delete mode 100644 Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s delete mode 100644 Private/HALKit/PowerPC/HalHardware.cxx delete mode 100644 Private/HALKit/PowerPC/HalHart.cxx delete mode 100644 Private/HALKit/PowerPC/HalSerialPort.cxx delete mode 100644 Private/HALKit/PowerPC/HalStartSequence.s delete mode 100644 Private/HALKit/PowerPC/HalThread.cxx delete mode 100644 Private/HALKit/PowerPC/HalVirtualMemory.cxx delete mode 100644 Private/HALKit/PowerPC/Hart.hxx delete mode 100644 Private/HALKit/PowerPC/MBCI/.gitkeep delete mode 100644 Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx delete mode 100644 Private/HALKit/PowerPC/Processor.hpp delete mode 100644 Private/HALKit/PowerPC/ppc-cpu.h delete mode 100644 Private/HALKit/PowerPC/ppc-mmu.h create mode 100644 Private/Source/AppMain.cxx delete mode 100644 Private/Source/RuntimeMain.cxx diff --git a/Private/ArchKit/ArchKit.hpp b/Private/ArchKit/ArchKit.hpp index ddccbb47..49c9dc94 100644 --- a/Private/ArchKit/ArchKit.hpp +++ b/Private/ArchKit/ArchKit.hpp @@ -15,7 +15,7 @@ #include #include #elif defined(__NEWOS_PPC__) -#include +#include #else #error Unknown architecture #endif diff --git a/Private/Documentation/Spec.md b/Private/Documentation/Spec.md index 69f6d87f..e218947e 100644 --- a/Private/Documentation/Spec.md +++ b/Private/Documentation/Spec.md @@ -6,7 +6,7 @@ - ABI and Format: PEF/PE32+. - Kernel architecture: Portable hybrid kernel. -- Language: C++/(Assembly (AMD64, X64000, X86S, ARM64, PowerPC, RISCV)) +- Language: C++/(Assembly (AMD64, X64000, X86S, ARM64, POWER, RISCV)) =================================== diff --git a/Private/Drivers/SampleDriver/makefile b/Private/Drivers/SampleDriver/makefile index 899b1491..19e88f8f 100644 --- a/Private/Drivers/SampleDriver/makefile +++ b/Private/Drivers/SampleDriver/makefile @@ -1,5 +1,5 @@ ################################################## -# (C) Mahrouss Logic, all rights reserved. +# (C) Mahrouss Logic, all rights reserved. # This is the sample driver makefile. ################################################## diff --git a/Private/FSKit/NewFS.hxx b/Private/FSKit/NewFS.hxx index 3f93700f..339b9832 100644 --- a/Private/FSKit/NewFS.hxx +++ b/Private/FSKit/NewFS.hxx @@ -30,7 +30,11 @@ default. #define kNewFSInvalidCatalog -1 #define kNewFSNodeNameLen 256 -#define kNewFSMinimumSectorSz 4096 +#ifdef __x86_64__ +#define kNewFSMinimumSectorSz (512) +#else +#define kNewFSMinimumSectorSz (1024) +#endif // ifdef __x86_64__ #define kNewFSIdentLen 8 #define kNewFSIdent " NewFS" @@ -105,6 +109,7 @@ enum { /// @brief Ccatalog type. struct PACKED NewCatalog final { NewCharType Name[kNewFSNodeNameLen]; + NewCharType Mime[kNewFSNodeNameLen]; NewOS::Int32 Flags; NewOS::Int32 Kind; @@ -173,7 +178,7 @@ enum { /// forks...) Designed like the DOM, detects the filesystem automatically. /// -class NewFSParser final { +class NewFSParser { public: explicit NewFSParser() = default; ~NewFSParser() = default; diff --git a/Private/FirmwareKit/EPM.hxx b/Private/FirmwareKit/EPM.hxx index 5cc743be..b7f77742 100644 --- a/Private/FirmwareKit/EPM.hxx +++ b/Private/FirmwareKit/EPM.hxx @@ -71,7 +71,7 @@ struct PACKED PartitionBlock { #define kEPMMagic32k "EPM32" -/* @brief PowerPC magic for EPM */ +/* @brief POWER magic for EPM */ #define kEPMMagicPPC "EPMPC" diff --git a/Private/HALKit/64x0/HalVirtualMemory.cxx b/Private/HALKit/64x0/HalVirtualMemory.cxx index 8fc08df0..2ae0f7ac 100644 --- a/Private/HALKit/64x0/HalVirtualMemory.cxx +++ b/Private/HALKit/64x0/HalVirtualMemory.cxx @@ -4,11 +4,11 @@ ------------------------------------------- */ -#include +#include #include using namespace NewOS; -/// @brief Flush system TLB, looks like the PowerPC version, as it acts the same, no specific instruction for that. +/// @brief Flush system TLB, looks like the POWER version, as it acts the same, no specific instruction for that. /// @note The 88K MMU should be present in the die. -EXTERN_C void hal_flush_tlb() { asm volatile("isync;invltlb;msync;isync"); } +EXTERN_C void hal_flush_tlb() { asm volatile("invltlb"); } diff --git a/Private/HALKit/AMD64/HalKernelMain.cxx b/Private/HALKit/AMD64/HalKernelMain.cxx index f6b8e957..7d8c516d 100644 --- a/Private/HALKit/AMD64/HalKernelMain.cxx +++ b/Private/HALKit/AMD64/HalKernelMain.cxx @@ -17,7 +17,7 @@ #include EXTERN_C NewOS::VoidPtr kInterruptVectorTable[]; -EXTERN_C void RuntimeMain(); +EXTERN_C void AppMain(); namespace NewOS::HAL { /// @brief Gets the system cores using the MADT. @@ -83,7 +83,7 @@ EXTERN_C void hal_init_platform( ToolboxClearRsrc(); - RuntimeMain(); + AppMain(); NewOS::ke_stop(RUNTIME_CHECK_BOOTSTRAP); } diff --git a/Private/HALKit/POWER/.gitkeep b/Private/HALKit/POWER/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Private/HALKit/POWER/APM/.gitkeep b/Private/HALKit/POWER/APM/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Private/HALKit/POWER/HalContextSwitchPowerPC.s b/Private/HALKit/POWER/HalContextSwitchPowerPC.s new file mode 100644 index 00000000..75c9f37a --- /dev/null +++ b/Private/HALKit/POWER/HalContextSwitchPowerPC.s @@ -0,0 +1,28 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +.align 4 +.type name, @function +.text +.globl rt_do_context_switch + +/* r3 (3) = assigner stack, r4 (4) = assignee stack */ +rt_do_context_switch: + lwz 0(%4), 0(%3) + lwz 4(%4), 4(%3) + lwz 8(%4), 8(%3) + lwz 12(%4), 12(%3) + lwz 14(%4), 14(%3) + lwz 18(%4), 18(%3) + lwz 22(%4), 22(%3) + lwz 24(%4), 24(%3) + lwz 28(%4), 28(%3) + lwz 32(%4), 32(%3) + lwz 34(%4), 34(%3) + lwz 38(%4), 38(%3) + + /* we are done here, the assignee should start executing code now. */ + blr diff --git a/Private/HALKit/POWER/HalHardware.cxx b/Private/HALKit/POWER/HalHardware.cxx new file mode 100644 index 00000000..693bf70e --- /dev/null +++ b/Private/HALKit/POWER/HalHardware.cxx @@ -0,0 +1,14 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include + +namespace NewOS { +namespace HAL { +UIntPtr hal_alloc_page(bool rw, bool user) { return 0; } +} // namespace HAL +} // namespace NewOS diff --git a/Private/HALKit/POWER/HalHart.cxx b/Private/HALKit/POWER/HalHart.cxx new file mode 100644 index 00000000..75eeb3f7 --- /dev/null +++ b/Private/HALKit/POWER/HalHart.cxx @@ -0,0 +1,19 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include +#include + +using namespace NewOS; + +/// @brief wakes up thread. +/// wakes up thread from hang. +void rt_wakeup_thread(HAL::StackFramePtr stack) {} + +/// @brief makes thread sleep. +/// hooks and hangs thread to prevent code from executing. +void rt_hang_thread(HAL::StackFramePtr stack) {} diff --git a/Private/HALKit/POWER/HalSerialPort.cxx b/Private/HALKit/POWER/HalSerialPort.cxx new file mode 100644 index 00000000..cf943371 --- /dev/null +++ b/Private/HALKit/POWER/HalSerialPort.cxx @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include + +using namespace NewOS; + +/// @brief Writes to COM1. +/// @param bytes +void ke_io_write(const Char* bytes) { + if (!bytes) return; + + SizeT index = 0; + SizeT len = rt_string_len(bytes, 256); + + while (index < len) { + // TODO + ++index; + } +} diff --git a/Private/HALKit/POWER/HalStartSequence.s b/Private/HALKit/POWER/HalStartSequence.s new file mode 100644 index 00000000..f50a4d4f --- /dev/null +++ b/Private/HALKit/POWER/HalStartSequence.s @@ -0,0 +1,14 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +.globl Main +.extern HalKernelMain +.align 4 +.text + +Main: + bl HalKernelMain + blr diff --git a/Private/HALKit/POWER/HalThread.cxx b/Private/HALKit/POWER/HalThread.cxx new file mode 100644 index 00000000..c79b4fb7 --- /dev/null +++ b/Private/HALKit/POWER/HalThread.cxx @@ -0,0 +1,10 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include + +extern "C" NewOS::HAL::StackFramePtr rt_get_current_context() { return nullptr; } diff --git a/Private/HALKit/POWER/HalVirtualMemory.cxx b/Private/HALKit/POWER/HalVirtualMemory.cxx new file mode 100644 index 00000000..43c59384 --- /dev/null +++ b/Private/HALKit/POWER/HalVirtualMemory.cxx @@ -0,0 +1,52 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include + +#include +#include + +/// NOTE: refer to: https://www.nxp.com/docs/en/white-paper/POWRPCARCPRMRM.pdf, +/// or in /Developer/PDF/POWRPCARCPRMRM.pdf + +using namespace NewOS; + +/// @brief Write directly to the specific TLB. +/// @param mas0 +/// @param mas1 +/// @param mas2 +/// @param mas3 +/// @param mas7 +static void hal_write_tlb(uint32_t mas0, uint32_t mas1, uint32_t mas2, + uint32_t mas3, uint32_t mas7) { + mtspr(MAS0, mas0); + mtspr(MAS1, mas1); + mtspr(MAS2, mas2); + mtspr(MAS3, mas3); + mtspr(MAS7, mas7); + + hal_flush_tlb(); +} + +void hal_set_tlb(uint8_t tlb, uint32_t epn, uint64_t rpn, uint8_t perms, + uint8_t wimge, uint8_t ts, uint8_t esel, uint8_t tsize, + uint8_t iprot) { + if ((mfspr(SPRN_MMUCFG) & MMUCFG_MAVN) == MMUCFG_MAVN_V1 && (tsize & 1)) { + // this mmu-version does not allow odd tsize values + return; + } + uint32_t mas0 = FSL_BOOKE_MAS0(tlb, esel, 0); + uint32_t mas1 = FSL_BOOKE_MAS1(1, iprot, 0, ts, tsize); + uint32_t mas2 = FSL_BOOKE_MAS2(epn, wimge); + uint32_t mas3 = FSL_BOOKE_MAS3(rpn, 0, perms); + uint32_t mas7 = FSL_BOOKE_MAS7(rpn); + + hal_write_tlb(mas0, mas1, mas2, mas3, mas7); +} + +/// @brief Flush system TLB. +EXTERN_C void hal_flush_tlb() { asm volatile("isync;tlbwe;msync;isync"); } diff --git a/Private/HALKit/POWER/Hart.hxx b/Private/HALKit/POWER/Hart.hxx new file mode 100644 index 00000000..2a908fcf --- /dev/null +++ b/Private/HALKit/POWER/Hart.hxx @@ -0,0 +1,27 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Hart.hxx + Purpose: POWER hardware threads. + + Revision History: + + 14/04/24: Added file (amlel) + +------------------------------------------- */ + +#pragma once + +#include + +/// @brief hardware thread indentification type. +typedef NewOS::Int32 PPCHartType; + +/// @brief Hardware thread information structure. +typedef struct HalHardwareThread { + NewOS::UIntPtr fStartAddress; + NewOS::UInt8 fPrivleged : 1; + NewOS::UInt32 fPageFlags; + PPCHartType fIdentNumber; +} HalHardwareThread; diff --git a/Private/HALKit/POWER/MBCI/.gitkeep b/Private/HALKit/POWER/MBCI/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Private/HALKit/POWER/MBCI/HalMBCIHost.cxx b/Private/HALKit/POWER/MBCI/HalMBCIHost.cxx new file mode 100644 index 00000000..8ad039fe --- /dev/null +++ b/Private/HALKit/POWER/MBCI/HalMBCIHost.cxx @@ -0,0 +1,8 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include diff --git a/Private/HALKit/POWER/Processor.hpp b/Private/HALKit/POWER/Processor.hpp new file mode 100644 index 00000000..a597b202 --- /dev/null +++ b/Private/HALKit/POWER/Processor.hpp @@ -0,0 +1,46 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: POWER processor header. + +------------------------------------------- */ + +#pragma once + +#include +#include + +#define kHalPPCAlignment __attribute__((aligned(4))) + +namespace NewOS::HAL { +typedef UIntPtr Reg; + +struct kHalPPCAlignment StackFrame { + Reg R0; + Reg R1; + Reg R2; + Reg R3; + Reg R4; + Reg R5; + Reg R6; + Reg R7; + Reg R8; + Reg PC; + Reg SP; +}; + +typedef StackFrame* StackFramePtr; + +inline void rt_halt() { + while (1) { + + } +} + +inline void rt_cli() {} +} // namespace NewOS::HAL + +extern "C" void int_handle_math(NewOS::UIntPtr sp); +extern "C" void int_handle_pf(NewOS::UIntPtr sp); +extern "C" void* __ppc_alloca(size_t sz); diff --git a/Private/HALKit/POWER/ppc-cpu.h b/Private/HALKit/POWER/ppc-cpu.h new file mode 100644 index 00000000..74003329 --- /dev/null +++ b/Private/HALKit/POWER/ppc-cpu.h @@ -0,0 +1,1393 @@ +#ifndef __ASM_PPC_PROCESSOR_H +#define __ASM_PPC_PROCESSOR_H + +/// ! @note The NeWS cpu is based on the e500 with 64-bit extensions, much like the 970. + +/* + * Default implementation of macro that returns current + * instruction pointer ("program counter"). + */ +#define current_text_addr() ({ __label__ _l; _l: &&_l;}) + +#define AAA_HACK_DISABLE +#ifdef AAA_HACK_DISABLE +/* warning this is just to make the compiler shut up.. It does not + match the definition in ptrace.h. So dont use this code. */ +struct pt_regs { + unsigned long nip; +}; + +#else +#include +#include +#endif + +/* Machine State Register (MSR) Fields */ + +#ifdef CONFIG_PPC64BRIDGE +#define MSR_SF (1<<63) +#define MSR_ISF (1<<61) +#endif /* CONFIG_PPC64BRIDGE */ +#define MSR_UCLE (1<<26) /* User-mode cache lock enable (e500) */ +#define MSR_VEC (1<<25) /* Enable AltiVec(74xx) */ +#define MSR_SPE (1<<25) /* Enable SPE(e500) */ +#define MSR_POW (1<<18) /* Enable Power Management */ +#define MSR_WE (1<<18) /* Wait State Enable */ +#define MSR_TGPR (1<<17) /* TLB Update registers in use */ +#define MSR_CE (1<<17) /* Critical Interrupt Enable */ +#define MSR_ILE (1<<16) /* Interrupt Little Endian */ +#define MSR_EE (1<<15) /* External Interrupt Enable */ +#define MSR_PR (1<<14) /* Problem State / Privilege Level */ +#define MSR_FP (1<<13) /* Floating Point enable */ +#define MSR_ME (1<<12) /* Machine Check Enable */ +#define MSR_FE0 (1<<11) /* Floating Exception mode 0 */ +#define MSR_SE (1<<10) /* Single Step */ +#define MSR_DWE (1<<10) /* Debug Wait Enable (4xx) */ +#define MSR_UBLE (1<<10) /* BTB lock enable (e500) */ +#define MSR_BE (1<<9) /* Branch Trace */ +#define MSR_DE (1<<9) /* Debug Exception Enable */ +#define MSR_FE1 (1<<8) /* Floating Exception mode 1 */ +#define MSR_IP (1<<6) /* Exception prefix 0x000/0xFFF */ +#define MSR_IR (1<<5) /* Instruction Relocate */ +#define MSR_IS (1<<5) /* Book E Instruction space */ +#define MSR_DR (1<<4) /* Data Relocate */ +#define MSR_DS (1<<4) /* Book E Data space */ +#define MSR_PE (1<<3) /* Protection Enable */ +#define MSR_PX (1<<2) /* Protection Exclusive Mode */ +#define MSR_PMM (1<<2) /* Performance monitor mark bit (e500) */ +#define MSR_RI (1<<1) /* Recoverable Exception */ +#define MSR_LE (1<<0) /* Little Endian */ + +#ifdef CONFIG_APUS_FAST_EXCEPT +#define MSR_ MSR_ME|MSR_IP|MSR_RI +#else +#define MSR_ MSR_ME|MSR_RI +#endif +#ifndef CONFIG_E500 +#define MSR_KERNEL MSR_|MSR_IR|MSR_DR +#else +#define MSR_KERNEL MSR_ME +#endif + +/* Floating Point Status and Control Register (FPSCR) Fields */ + +#define FPSCR_FX 0x80000000 /* FPU exception summary */ +#define FPSCR_FEX 0x40000000 /* FPU enabled exception summary */ +#define FPSCR_VX 0x20000000 /* Invalid operation summary */ +#define FPSCR_OX 0x10000000 /* Overflow exception summary */ +#define FPSCR_UX 0x08000000 /* Underflow exception summary */ +#define FPSCR_ZX 0x04000000 /* Zero-devide exception summary */ +#define FPSCR_XX 0x02000000 /* Inexact exception summary */ +#define FPSCR_VXSNAN 0x01000000 /* Invalid op for SNaN */ +#define FPSCR_VXISI 0x00800000 /* Invalid op for Inv - Inv */ +#define FPSCR_VXIDI 0x00400000 /* Invalid op for Inv / Inv */ +#define FPSCR_VXZDZ 0x00200000 /* Invalid op for Zero / Zero */ +#define FPSCR_VXIMZ 0x00100000 /* Invalid op for Inv * Zero */ +#define FPSCR_VXVC 0x00080000 /* Invalid op for Compare */ +#define FPSCR_FR 0x00040000 /* Fraction rounded */ +#define FPSCR_FI 0x00020000 /* Fraction inexact */ +#define FPSCR_FPRF 0x0001f000 /* FPU Result Flags */ +#define FPSCR_FPCC 0x0000f000 /* FPU Condition Codes */ +#define FPSCR_VXSOFT 0x00000400 /* Invalid op for software request */ +#define FPSCR_VXSQRT 0x00000200 /* Invalid op for square root */ +#define FPSCR_VXCVI 0x00000100 /* Invalid op for integer convert */ +#define FPSCR_VE 0x00000080 /* Invalid op exception enable */ +#define FPSCR_OE 0x00000040 /* IEEE overflow exception enable */ +#define FPSCR_UE 0x00000020 /* IEEE underflow exception enable */ +#define FPSCR_ZE 0x00000010 /* IEEE zero divide exception enable */ +#define FPSCR_XE 0x00000008 /* FP inexact exception enable */ +#define FPSCR_NI 0x00000004 /* FPU non IEEE-Mode */ +#define FPSCR_RN 0x00000003 /* FPU rounding control */ + +/* Special Purpose Registers (SPRNs)*/ + +/* PPC440 Architecture is BOOK-E */ +#ifdef CONFIG_440 +#define CONFIG_BOOKE +#endif + +#define SPRN_CCR0 0x3B3 /* Core Configuration Register 0 */ +#ifdef CONFIG_BOOKE +#define SPRN_CCR1 0x378 /* Core Configuration Register for 440 only */ +#endif +#define SPRN_CDBCR 0x3D7 /* Cache Debug Control Register */ +#define SPRN_CTR 0x009 /* Count Register */ +#define SPRN_DABR 0x3F5 /* Data Address Breakpoint Register */ +#ifndef CONFIG_BOOKE +#define SPRN_DAC1 0x3F6 /* Data Address Compare 1 */ +#define SPRN_DAC2 0x3F7 /* Data Address Compare 2 */ +#else +#define SPRN_DAC1 0x13C /* Book E Data Address Compare 1 */ +#define SPRN_DAC2 0x13D /* Book E Data Address Compare 2 */ +#endif /* CONFIG_BOOKE */ +#define SPRN_DAR 0x013 /* Data Address Register */ +#define SPRN_DBAT0L 0x219 /* Data BAT 0 Lower Register */ +#define SPRN_DBAT0U 0x218 /* Data BAT 0 Upper Register */ +#define SPRN_DBAT1L 0x21B /* Data BAT 1 Lower Register */ +#define SPRN_DBAT1U 0x21A /* Data BAT 1 Upper Register */ +#define SPRN_DBAT2L 0x21D /* Data BAT 2 Lower Register */ +#define SPRN_DBAT2U 0x21C /* Data BAT 2 Upper Register */ +#define SPRN_DBAT3L 0x21F /* Data BAT 3 Lower Register */ +#define SPRN_DBAT3U 0x21E /* Data BAT 3 Upper Register */ +#define SPRN_DBAT4L 0x239 /* Data BAT 4 Lower Register */ +#define SPRN_DBAT4U 0x238 /* Data BAT 4 Upper Register */ +#define SPRN_DBAT5L 0x23B /* Data BAT 5 Lower Register */ +#define SPRN_DBAT5U 0x23A /* Data BAT 5 Upper Register */ +#define SPRN_DBAT6L 0x23D /* Data BAT 6 Lower Register */ +#define SPRN_DBAT6U 0x23C /* Data BAT 6 Upper Register */ +#define SPRN_DBAT7L 0x23F /* Data BAT 7 Lower Register */ +#define SPRN_DBAT7U 0x23E /* Data BAT 7 Lower Register */ +#define SPRN_DBCR 0x3F2 /* Debug Control Regsiter */ +#define DBCR_EDM 0x80000000 +#define DBCR_IDM 0x40000000 +#define DBCR_RST(x) (((x) & 0x3) << 28) +#define DBCR_RST_NONE 0 +#define DBCR_RST_CORE 1 +#define DBCR_RST_CHIP 2 +#define DBCR_RST_SYSTEM 3 +#define DBCR_IC 0x08000000 /* Instruction Completion Debug Evnt */ +#define DBCR_BT 0x04000000 /* Branch Taken Debug Event */ +#define DBCR_EDE 0x02000000 /* Exception Debug Event */ +#define DBCR_TDE 0x01000000 /* TRAP Debug Event */ +#define DBCR_FER 0x00F80000 /* First Events Remaining Mask */ +#define DBCR_FT 0x00040000 /* Freeze Timers on Debug Event */ +#define DBCR_IA1 0x00020000 /* Instr. Addr. Compare 1 Enable */ +#define DBCR_IA2 0x00010000 /* Instr. Addr. Compare 2 Enable */ +#define DBCR_D1R 0x00008000 /* Data Addr. Compare 1 Read Enable */ +#define DBCR_D1W 0x00004000 /* Data Addr. Compare 1 Write Enable */ +#define DBCR_D1S(x) (((x) & 0x3) << 12) /* Data Adrr. Compare 1 Size */ +#define DAC_BYTE 0 +#define DAC_HALF 1 +#define DAC_WORD 2 +#define DAC_QUAD 3 +#define DBCR_D2R 0x00000800 /* Data Addr. Compare 2 Read Enable */ +#define DBCR_D2W 0x00000400 /* Data Addr. Compare 2 Write Enable */ +#define DBCR_D2S(x) (((x) & 0x3) << 8) /* Data Addr. Compare 2 Size */ +#define DBCR_SBT 0x00000040 /* Second Branch Taken Debug Event */ +#define DBCR_SED 0x00000020 /* Second Exception Debug Event */ +#define DBCR_STD 0x00000010 /* Second Trap Debug Event */ +#define DBCR_SIA 0x00000008 /* Second IAC Enable */ +#define DBCR_SDA 0x00000004 /* Second DAC Enable */ +#define DBCR_JOI 0x00000002 /* JTAG Serial Outbound Int. Enable */ +#define DBCR_JII 0x00000001 /* JTAG Serial Inbound Int. Enable */ +#ifndef CONFIG_BOOKE +#define SPRN_DBCR0 0x3F2 /* Debug Control Register 0 */ +#else +#define SPRN_DBCR0 0x134 /* Book E Debug Control Register 0 */ +#endif /* CONFIG_BOOKE */ +#ifndef CONFIG_BOOKE +#define SPRN_DBCR1 0x3BD /* Debug Control Register 1 */ +#define SPRN_DBSR 0x3F0 /* Debug Status Register */ +#else +#define SPRN_DBCR1 0x135 /* Book E Debug Control Register 1 */ +#ifdef CONFIG_BOOKE +#define SPRN_DBDR 0x3f3 /* Debug Data Register */ +#endif +#define SPRN_DBSR 0x130 /* Book E Debug Status Register */ +#define DBSR_IC 0x08000000 /* Book E Instruction Completion */ +#define DBSR_TIE 0x01000000 /* Book E Trap Instruction Event */ +#endif /* CONFIG_BOOKE */ +#define SPRN_DCCR 0x3FA /* Data Cache Cacheability Register */ +#define DCCR_NOCACHE 0 /* Noncacheable */ +#define DCCR_CACHE 1 /* Cacheable */ +#ifndef CONFIG_BOOKE +#define SPRN_DCDBTRL 0x39c /* Data Cache Debug Tag Register Low */ +#define SPRN_DCDBTRH 0x39d /* Data Cache Debug Tag Register High */ +#endif +#define SPRN_DCMP 0x3D1 /* Data TLB Compare Register */ +#define SPRN_DCWR 0x3BA /* Data Cache Write-thru Register */ +#define DCWR_COPY 0 /* Copy-back */ +#define DCWR_WRITE 1 /* Write-through */ +#ifndef CONFIG_BOOKE +#define SPRN_DEAR 0x3D5 /* Data Error Address Register */ +#else +#define SPRN_DEAR 0x03D /* Book E Data Error Address Register */ +#endif /* CONFIG_BOOKE */ +#define SPRN_DEC 0x016 /* Decrement Register */ +#define SPRN_DMISS 0x3D0 /* Data TLB Miss Register */ +#ifdef CONFIG_BOOKE +#define SPRN_DNV0 0x390 /* Data Cache Normal Victim 0 */ +#define SPRN_DNV1 0x391 /* Data Cache Normal Victim 1 */ +#define SPRN_DNV2 0x392 /* Data Cache Normal Victim 2 */ +#define SPRN_DNV3 0x393 /* Data Cache Normal Victim 3 */ +#endif +#define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */ +#ifdef CONFIG_BOOKE +#define SPRN_DTV0 0x394 /* Data Cache Transient Victim 0 */ +#define SPRN_DTV1 0x395 /* Data Cache Transient Victim 1 */ +#define SPRN_DTV2 0x396 /* Data Cache Transient Victim 2 */ +#define SPRN_DTV3 0x397 /* Data Cache Transient Victim 3 */ +#define SPRN_DVLIM 0x398 /* Data Cache Victim Limit */ +#endif +#define SPRN_EAR 0x11A /* External Address Register */ +#ifndef CONFIG_BOOKE +#define SPRN_ESR 0x3D4 /* Exception Syndrome Register */ +#else +#define SPRN_ESR 0x03E /* Book E Exception Syndrome Register */ +#endif /* CONFIG_BOOKE */ +#define ESR_IMCP 0x80000000 /* Instr. Machine Check - Protection */ +#define ESR_IMCN 0x40000000 /* Instr. Machine Check - Non-config */ +#define ESR_IMCB 0x20000000 /* Instr. Machine Check - Bus error */ +#define ESR_IMCT 0x10000000 /* Instr. Machine Check - Timeout */ +#define ESR_PIL 0x08000000 /* Program Exception - Illegal */ +#define ESR_PPR 0x04000000 /* Program Exception - Priveleged */ +#define ESR_PTR 0x02000000 /* Program Exception - Trap */ +#define ESR_DST 0x00800000 /* Storage Exception - Data miss */ +#define ESR_DIZ 0x00400000 /* Storage Exception - Zone fault */ +#define SPRN_EVPR 0x3D6 /* Exception Vector Prefix Register */ +#define SPRN_HASH1 0x3D2 /* Primary Hash Address Register */ +#define SPRN_HASH2 0x3D3 /* Secondary Hash Address Resgister */ +#define SPRN_HID0 0x3F0 /* Hardware Implementation Register 0 */ + +#define HID0_ICE_SHIFT 15 +#define HID0_DCE_SHIFT 14 +#define HID0_DLOCK_SHIFT 12 + +#define HID0_EMCP (1<<31) /* Enable Machine Check pin */ +#define HID0_EBA (1<<29) /* Enable Bus Address Parity */ +#define HID0_EBD (1<<28) /* Enable Bus Data Parity */ +#define HID0_SBCLK (1<<27) +#define HID0_EICE (1<<26) +#define HID0_ECLK (1<<25) +#define HID0_PAR (1<<24) +#define HID0_DOZE (1<<23) +#define HID0_NAP (1<<22) +#define HID0_SLEEP (1<<21) +#define HID0_DPM (1<<20) +#define HID0_ICE (1<> 16) & 0xFFFF) /* Version field */ +#define SVR_REV(svr) (((svr) >> 0) & 0xFF) /* Revision field */ + +#define SVR_CID(svr) (((svr) >> 28) & 0x0F) /* Company or manufacturer ID */ +#define SVR_SOCOP(svr) (((svr) >> 22) & 0x3F) /* SOC integration options */ +#define SVR_SID(svr) (((svr) >> 16) & 0x3F) /* SOC ID */ +#define SVR_PROC(svr) (((svr) >> 12) & 0x0F) /* Process revision field */ +#define SVR_MFG(svr) (((svr) >> 8) & 0x0F) /* Manufacturing revision */ +#define SVR_MJREV(svr) (((svr) >> 4) & 0x0F) /* Major SOC design revision indicator */ +#define SVR_MNREV(svr) (((svr) >> 0) & 0x0F) /* Minor SOC design revision indicator */ + +/* Processor Version Register */ + +/* Processor Version Register (PVR) field extraction */ + +#define PVR_VER(pvr) (((pvr) >> 16) & 0xFFFF) /* Version field */ +#define PVR_REV(pvr) (((pvr) >> 0) & 0xFFFF) /* Revison field */ + +/* + * AMCC has further subdivided the standard ppc 16-bit version and + * revision subfields of the PVR for the ppc 403s into the following: + */ + +#define PVR_FAM(pvr) (((pvr) >> 20) & 0xFFF) /* Family field */ +#define PVR_MEM(pvr) (((pvr) >> 16) & 0xF) /* Member field */ +#define PVR_CORE(pvr) (((pvr) >> 12) & 0xF) /* Core field */ +#define PVR_CFG(pvr) (((pvr) >> 8) & 0xF) /* Configuration field */ +#define PVR_MAJ(pvr) (((pvr) >> 4) & 0xF) /* Major revision field */ +#define PVR_MIN(pvr) (((pvr) >> 0) & 0xF) /* Minor revision field */ + +/* e600 core PVR fields */ + +#define PVR_E600_VER(pvr) (((pvr) >> 15) & 0xFFFF) /* Version/type */ +#define PVR_E600_TECH(pvr) (((pvr) >> 12) & 0xF) /* Technology */ +#define PVR_E600_MAJ(pvr) (((pvr) >> 8) & 0xF) /* Major revision */ +#define PVR_E600_MIN(pvr) (((pvr) >> 0) & 0xFF) /* Minor revision */ + +/* Processor Version Numbers */ + +#define PVR_403GA 0x00200000 +#define PVR_403GB 0x00200100 +#define PVR_403GC 0x00200200 +#define PVR_403GCX 0x00201400 +#define PVR_405GP 0x40110000 +#define PVR_405GP_RB 0x40110040 +#define PVR_405GP_RC 0x40110082 +#define PVR_405GP_RD 0x401100C4 +#define PVR_405GP_RE 0x40110145 /* same as pc405cr rev c */ +#define PVR_405EP_RA 0x51210950 +#define PVR_405GPR_RB 0x50910951 +#define PVR_405EZ_RA 0x41511460 +#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A/B without Security */ +#define PVR_405EX1_RA 0x12911477 /* 405EX rev A/B with Security */ +#define PVR_405EXR1_RC 0x1291147B /* 405EXr rev C with Security */ +#define PVR_405EXR2_RC 0x12911479 /* 405EXr rev C without Security */ +#define PVR_405EX1_RC 0x1291147F /* 405EX rev C with Security */ +#define PVR_405EX2_RC 0x1291147D /* 405EX rev C without Security */ +#define PVR_405EXR1_RD 0x12911472 /* 405EXr rev D with Security */ +#define PVR_405EXR2_RD 0x12911470 /* 405EXr rev D without Security */ +#define PVR_405EX1_RD 0x12911475 /* 405EX rev D with Security */ +#define PVR_405EX2_RD 0x12911473 /* 405EX rev D without Security */ +#define PVR_440GP_RB 0x40120440 +#define PVR_440GP_RC 0x40120481 +#define PVR_440EP_RA 0x42221850 +#define PVR_440EP_RB 0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */ +#define PVR_440EP_RC 0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */ +#define PVR_440GR_RA 0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */ +#define PVR_440GR_RB 0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */ +#define PVR_440EPX1_RA 0x216218D0 /* 440EPX rev A with Security / Kasumi */ +#define PVR_440EPX2_RA 0x216218D4 /* 440EPX rev A without Security / Kasumi */ +#define PVR_440GRX1_RA 0x216218D0 /* 440GRX rev A with Security / Kasumi */ +#define PVR_440GRX2_RA 0x216218D4 /* 440GRX rev A without Security / Kasumi */ +#define PVR_440GX_RA 0x51B21850 +#define PVR_440GX_RB 0x51B21851 +#define PVR_440GX_RC 0x51B21892 +#define PVR_440GX_RF 0x51B21894 +#define PVR_405EP_RB 0x51210950 +#define PVR_440SP_6_RAB 0x53221850 /* 440SP rev A&B with RAID 6 support enabled */ +#define PVR_440SP_RAB 0x53321850 /* 440SP rev A&B without RAID 6 support */ +#define PVR_440SP_6_RC 0x53221891 /* 440SP rev C with RAID 6 support enabled */ +#define PVR_440SP_RC 0x53321891 /* 440SP rev C without RAID 6 support */ +#define PVR_440SPe_6_RA 0x53421890 /* 440SPe rev A with RAID 6 support enabled */ +#define PVR_440SPe_RA 0x53521890 /* 440SPe rev A without RAID 6 support */ +#define PVR_440SPe_6_RB 0x53421891 /* 440SPe rev B with RAID 6 support enabled */ +#define PVR_440SPe_RB 0x53521891 /* 440SPe rev B without RAID 6 support */ +#define PVR_460EX_SE_RA 0x130218A2 /* 460EX rev A with Security Engine */ +#define PVR_460EX_RA 0x130218A3 /* 460EX rev A without Security Engine */ +#define PVR_460EX_RB 0x130218A4 /* 460EX rev B with and without Sec Eng*/ +#define PVR_460GT_SE_RA 0x130218A0 /* 460GT rev A with Security Engine */ +#define PVR_460GT_RA 0x130218A1 /* 460GT rev A without Security Engine */ +#define PVR_460GT_RB 0x130218A5 /* 460GT rev B with and without Sec Eng*/ +#define PVR_460SX_RA 0x13541800 /* 460SX rev A */ +#define PVR_460SX_RA_V1 0x13541801 /* 460SX rev A Variant 1 Security disabled */ +#define PVR_460GX_RA 0x13541802 /* 460GX rev A */ +#define PVR_460GX_RA_V1 0x13541803 /* 460GX rev A Variant 1 Security disabled */ +#define PVR_APM821XX_RA 0x12C41C80 /* APM821XX rev A */ +#define PVR_601 0x00010000 +#define PVR_602 0x00050000 +#define PVR_603 0x00030000 +#define PVR_603e 0x00060000 +#define PVR_603ev 0x00070000 +#define PVR_603r 0x00071000 +#define PVR_604 0x00040000 +#define PVR_604e 0x00090000 +#define PVR_604r 0x000A0000 +#define PVR_620 0x00140000 +#define PVR_740 0x00080000 +#define PVR_750 PVR_740 +#define PVR_740P 0x10080000 +#define PVR_750P PVR_740P +#define PVR_7400 0x000C0000 +#define PVR_7410 0x800C0000 +#define PVR_7450 0x80000000 + +#define PVR_85xx 0x80200000 +#define PVR_85xx_REV1 (PVR_85xx | 0x0010) +#define PVR_85xx_REV2 (PVR_85xx | 0x0020) +#define PVR_VER_E500_V1 0x8020 +#define PVR_VER_E500_V2 0x8021 +#define PVR_VER_E500MC 0x8023 +#define PVR_VER_E5500 0x8024 +#define PVR_VER_E6500 0x8040 + +#define PVR_86xx 0x80040000 + +#define PVR_VIRTEX5 0x7ff21912 + +/* + * For the 8xx processors, all of them report the same PVR family for + * the ppc core. The various versions of these processors must be + * differentiated by the version number in the Communication Processor + * Module (CPM). + */ +#define PVR_821 0x00500000 +#define PVR_823 PVR_821 +#define PVR_850 PVR_821 +#define PVR_860 PVR_821 +#define PVR_7400 0x000C0000 +#define PVR_8240 0x00810100 + +/* + * PowerQUICC II family processors report different PVR values depending + * on silicon process (HiP3, HiP4, HiP7, etc.) + */ +#define PVR_8260 PVR_8240 +#define PVR_8260_HIP3 0x00810101 +#define PVR_8260_HIP4 0x80811014 +#define PVR_8260_HIP7 0x80822011 +#define PVR_8260_HIP7R1 0x80822013 +#define PVR_8260_HIP7RA 0x80822014 + +/* + * MPC 52xx + */ +#define PVR_5200 0x80822011 +#define PVR_5200B 0x80822014 + +/* + * 405EX/EXr CHIP_21 Errata + */ +#ifdef CONFIG_SYS_4xx_CHIP_21_405EX_SECURITY +#define CONFIG_SYS_4xx_CHIP_21_ERRATA +#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EX1_RC +#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EX1_RD +#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x0 +#endif + +#ifdef CONFIG_SYS_4xx_CHIP_21_405EX_NO_SECURITY +#define CONFIG_SYS_4xx_CHIP_21_ERRATA +#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EX2_RC +#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EX2_RD +#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x1 +#endif + +#ifdef CONFIG_SYS_4xx_CHIP_21_405EXr_SECURITY +#define CONFIG_SYS_4xx_CHIP_21_ERRATA +#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EXR1_RC +#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EXR1_RD +#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x2 +#endif + +#ifdef CONFIG_SYS_4xx_CHIP_21_405EXr_NO_SECURITY +#define CONFIG_SYS_4xx_CHIP_21_ERRATA +#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EXR2_RC +#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EXR2_RD +#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x3 +#endif + +/* + * System Version Register + */ + +/* System Version Register (SVR) field extraction */ + +#define SVR_SUBVER(svr) (((svr) >> 8) & 0xFF) /* Process/MFG sub-version */ + +#define SVR_FAM(svr) (((svr) >> 20) & 0xFFF) /* Family field */ +#define SVR_MEM(svr) (((svr) >> 16) & 0xF) /* Member field */ + +#ifdef CONFIG_MPC8536 +#define SVR_MAJ(svr) (((svr) >> 4) & 0x7) /* Major revision field*/ +#else +#define SVR_MAJ(svr) (((svr) >> 4) & 0xF) /* Major revision field*/ +#endif +#define SVR_MIN(svr) (((svr) >> 0) & 0xF) /* Minor revision field*/ + +/* Some parts define SVR[0:23] as the SOC version */ +#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFF7FF) /* SOC w/o E bit*/ + +/* whether MPC8xxxE (i.e. has SEC) */ +#if defined(CONFIG_MPC85xx) +#define IS_E_PROCESSOR(svr) (svr & 0x80000) +#else +#if defined(CONFIG_MPC83xx) +#define IS_E_PROCESSOR(spridr) (!(spridr & 0x00010000)) +#endif +#endif + +#define IS_SVR_REV(svr, maj, min) \ + ((SVR_MAJ(svr) == maj) && (SVR_MIN(svr) == min)) + +/* + * SVR_SOC_VER() Version Values + */ + +#define SVR_8533 0x803400 +#define SVR_8535 0x803701 +#define SVR_8536 0x803700 +#define SVR_8540 0x803000 +#define SVR_8541 0x807200 +#define SVR_8543 0x803200 +#define SVR_8544 0x803401 +#define SVR_8545 0x803102 +#define SVR_8547 0x803101 +#define SVR_8548 0x803100 +#define SVR_8555 0x807100 +#define SVR_8560 0x807000 +#define SVR_8567 0x807501 +#define SVR_8568 0x807500 +#define SVR_8569 0x808000 +#define SVR_8572 0x80E000 +#define SVR_P1010 0x80F100 +#define SVR_P1011 0x80E500 +#define SVR_P1012 0x80E501 +#define SVR_P1013 0x80E700 +#define SVR_P1014 0x80F101 +#define SVR_P1017 0x80F700 +#define SVR_P1020 0x80E400 +#define SVR_P1021 0x80E401 +#define SVR_P1022 0x80E600 +#define SVR_P1023 0x80F600 +#define SVR_P1024 0x80E402 +#define SVR_P1025 0x80E403 +#define SVR_P2010 0x80E300 +#define SVR_P2020 0x80E200 +#define SVR_P2040 0x821000 +#define SVR_P2041 0x821001 +#define SVR_P3041 0x821103 +#define SVR_P4040 0x820100 +#define SVR_P4080 0x820000 +#define SVR_P5010 0x822100 +#define SVR_P5020 0x822000 +#define SVR_P5021 0X820500 +#define SVR_P5040 0x820400 +#define SVR_T4240 0x824000 +#define SVR_T4120 0x824001 +#define SVR_T4160 0x824100 +#define SVR_T4080 0x824102 +#define SVR_C291 0x850000 +#define SVR_C292 0x850020 +#define SVR_C293 0x850030 +#define SVR_B4860 0X868000 +#define SVR_G4860 0x868001 +#define SVR_B4460 0x868003 +#define SVR_B4440 0x868100 +#define SVR_G4440 0x868101 +#define SVR_B4420 0x868102 +#define SVR_B4220 0x868103 +#define SVR_T1040 0x852000 +#define SVR_T1041 0x852001 +#define SVR_T1042 0x852002 +#define SVR_T1020 0x852100 +#define SVR_T1021 0x852101 +#define SVR_T1022 0x852102 +#define SVR_T1024 0x854000 +#define SVR_T1023 0x854100 +#define SVR_T1014 0x854400 +#define SVR_T1013 0x854500 +#define SVR_T2080 0x853000 +#define SVR_T2081 0x853100 + +#define SVR_8610 0x80A000 +#define SVR_8641 0x809000 +#define SVR_8641D 0x809001 + +#define SVR_9130 0x860001 +#define SVR_9131 0x860000 +#define SVR_9132 0x861000 +#define SVR_9232 0x861400 + +#define SVR_Unknown 0xFFFFFF + +#define _GLOBAL(n)\ + .globl n;\ +n: + +/* Macros for setting and retrieving special purpose registers */ + +#define stringify(s) tostring(s) +#define tostring(s) #s + +#define mfdcr(rn) ({unsigned int rval; \ + asm volatile("mfdcr %0," stringify(rn) \ + : "=r" (rval)); rval;}) +#define mtdcr(rn, v) asm volatile("mtdcr " stringify(rn) ",%0" : : "r" (v)) + +#define mfmsr() ({unsigned int rval; \ + asm volatile("mfmsr %0" : "=r" (rval)); rval;}) +#define mtmsr(v) asm volatile("mtmsr %0" : : "r" (v)) + +#define mfspr(rn) ({unsigned int rval; \ + asm volatile("mfspr %0," stringify(rn) \ + : "=r" (rval)); rval;}) +#define mtspr(rn, v) asm volatile("mtspr " stringify(rn) ",%0" : : "r" (v)) + +#define tlbie(v) asm volatile("tlbie %0 \n sync" : : "r" (v)) + +/* Segment Registers */ + +#define SR0 0 +#define SR1 1 +#define SR2 2 +#define SR3 3 +#define SR4 4 +#define SR5 5 +#define SR6 6 +#define SR7 7 +#define SR8 8 +#define SR9 9 +#define SR10 10 +#define SR11 11 +#define SR12 12 +#define SR13 13 +#define SR14 14 +#define SR15 15 + +#ifndef __ASSEMBLY__ + +#include + +struct cpu_type { + char name[15]; + uint32_t soc_ver; + uint32_t num_cores; + uint32_t mask; /* which cpu(s) actually exist */ +#ifdef CONFIG_HETROGENOUS_CLUSTERS + uint32_t dsp_num_cores; + uint32_t dsp_mask; /* which DSP cpu(s) actually exist */ +#endif +}; + +struct cpu_type *identify_cpu(uint32_t ver); +int fixup_cpu(void); + +int fsl_qoriq_core_to_cluster(unsigned int core); +int fsl_qoriq_dsp_core_to_cluster(unsigned int core); + +#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) +#define CPU_TYPE_ENTRY(n, v, nc) \ + { .name = #n, .soc_ver = SVR_##v, .num_cores = (nc), \ + .mask = (1 << (nc)) - 1 } +#define CPU_TYPE_ENTRY_MASK(n, v, nc, m) \ + { .name = #n, .soc_ver = SVR_##v, .num_cores = (nc), .mask = (m) } +#else +#if defined(CONFIG_MPC83xx) +#define CPU_TYPE_ENTRY(x) {#x, SPR_##x} +#endif +#endif + + +#ifndef CONFIG_MACH_SPECIFIC +extern int _machine; +extern int have_of; +#endif /* CONFIG_MACH_SPECIFIC */ + +/* what kind of prep workstation we are */ +extern int _prep_type; +/* + * This is used to identify the board type from a given PReP board + * vendor. Board revision is also made available. + */ +extern unsigned char ucSystemType; +extern unsigned char ucBoardRev; +extern unsigned char ucBoardRevMaj, ucBoardRevMin; + +struct task_struct; +void start_thread(struct pt_regs *regs, unsigned long nip, unsigned long sp); +void release_thread(struct task_struct *); + +/* + * Create a new Kernel thread. + */ +extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); + +/* + * Bus types + */ +#define EISA_bus 0 +#define EISA_bus__is_a_macro /* for versions in ksyms.c */ +#define MCA_bus 0 +#define MCA_bus__is_a_macro /* for versions in ksyms.c */ + +/* Lazy FPU handling on uni-processor */ +extern struct task_struct *last_task_used_math; +extern struct task_struct *last_task_used_altivec; + +/* + * this is the minimum allowable io space due to the location + * of the io areas on prep (first one at 0x80000000) but + * as soon as I get around to remapping the io areas with the BATs + * to match the mac we can raise this. -- Cort + */ +#define TASK_SIZE (0x80000000UL) + +/* This decides where the Kernel will search for a free chunk of vm + * space during mmap's. + */ +#define TASK_UNMAPPED_BASE (TASK_SIZE / 8 * 3) + +typedef struct { + unsigned long seg; +} mm_segment_t; + +struct thread_struct { + unsigned long ksp; /* Kernel stack pointer */ + unsigned long wchan; /* Event task is sleeping on */ + struct pt_regs *regs; /* Pointer to saved register state */ + mm_segment_t fs; /* for get_fs() validation */ + void *pgdir; /* root of page-table tree */ + signed long last_syscall; + double fpr[32]; /* Complete floating point set */ + unsigned long fpscr_pad; /* fpr ... fpscr must be contiguous */ + unsigned long fpscr; /* Floating point status */ +#ifdef CONFIG_ALTIVEC + vector128 vr[32]; /* Complete AltiVec set */ + vector128 vscr; /* AltiVec status */ + unsigned long vrsave; +#endif /* CONFIG_ALTIVEC */ +}; + +#define INIT_SP (sizeof(init_stack) + (unsigned long) &init_stack) + +#define INIT_THREAD { \ + INIT_SP, /* ksp */ \ + 0, /* wchan */ \ + (struct pt_regs *)INIT_SP - 1, /* regs */ \ + KERNEL_DS, /*fs*/ \ + swapper_pg_dir, /* pgdir */ \ + 0, /* last_syscall */ \ + {0}, 0, 0 \ +} + +/* + * Note: the vm_start and vm_end fields here should *not* + * be in Kernel space. (Could vm_end == vm_start perhaps?) + */ +#define INIT_MMAP { &init_mm, 0, 0x1000, NULL, \ + PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, \ + 1, NULL, NULL } + +/* + * Return saved PC of a blocked thread. For now, this is the "user" PC + */ +static inline unsigned long thread_saved_pc(struct thread_struct *t) +{ + return (t->regs) ? t->regs->nip : 0; +} + +#define copy_segments(tsk, mm) do { } while (0) +#define release_segments(mm) do { } while (0) +#define forget_segments() do { } while (0) + +unsigned long get_wchan(struct task_struct *p); + +#define KSTK_EIP(tsk) ((tsk)->thread.regs->nip) +#define KSTK_ESP(tsk) ((tsk)->thread.regs->gpr[1]) + +/* + * NOTE! The task struct and the stack go together + */ +#define THREAD_SIZE (2*PAGE_SIZE) +#define alloc_task_struct() \ + ((struct task_struct *) __get_free_pages(GFP_KERNEL,1)) +#define free_task_struct(p) free_pages((unsigned long)(p),1) +#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) + +/* in process.c - for early bootup debug -- Cort */ +int ll_printk(const char *, ...); +void ll_puts(const char *); + +#define init_task (init_task_union.task) +#define init_stack (init_task_union.stack) + +/* In misc.c */ +void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val); + +#endif /* ndef ASSEMBLY*/ + +#ifdef CONFIG_MACH_SPECIFIC +#if defined(CONFIG_8xx) +#define _machine _MACH_8xx +#define have_of 0 +#elif defined(CONFIG_WALNUT) +#define _machine _MACH_walnut +#define have_of 0 +#elif defined(CONFIG_MPC8260) +#define _machine _MACH_8260 +#define have_of 0 +#else +#error "Machine not defined correctly" +#endif +#endif /* CONFIG_MACH_SPECIFIC */ + +#if defined(CONFIG_MPC85xx) || defined(CONFIG_440) + #define EPAPR_MAGIC (0x45504150) +#else + #define EPAPR_MAGIC (0x65504150) +#endif + +#endif /* __ASM_PPC_PROCESSOR_H */ diff --git a/Private/HALKit/POWER/ppc-mmu.h b/Private/HALKit/POWER/ppc-mmu.h new file mode 100644 index 00000000..5a149243 --- /dev/null +++ b/Private/HALKit/POWER/ppc-mmu.h @@ -0,0 +1,797 @@ + +#ifndef _PPC_MMU_H_ +#define _PPC_MMU_H_ + +#ifndef __ASSEMBLY__ + +#include + +/* Hardware Page Table Entry */ +typedef struct _PTE { +#ifdef CONFIG_PPC64BRIDGE + unsigned long long vsid:52; + unsigned long api:5; + unsigned long :5; + unsigned long h:1; + unsigned long v:1; + unsigned long long rpn:52; +#else /* CONFIG_PPC64BRIDGE */ + unsigned long v:1; /* Entry is valid */ + unsigned long vsid:24; /* Virtual segment identifier */ + unsigned long h:1; /* Hash algorithm indicator */ + unsigned long api:6; /* Abbreviated page index */ + unsigned long rpn:20; /* Real (physical) page number */ +#endif /* CONFIG_PPC64BRIDGE */ + unsigned long :3; /* Unused */ + unsigned long r:1; /* Referenced */ + unsigned long c:1; /* Changed */ + unsigned long w:1; /* Write-thru cache mode */ + unsigned long i:1; /* Cache inhibited */ + unsigned long m:1; /* Memory coherence */ + unsigned long g:1; /* Guarded */ + unsigned long :1; /* Unused */ + unsigned long pp:2; /* Page protection */ +} PTE; + +/* Values for PP (assumes Ks=0, Kp=1) */ +#define PP_RWXX 0 /* Supervisor read/write, User none */ +#define PP_RWRX 1 /* Supervisor read/write, User read */ +#define PP_RWRW 2 /* Supervisor read/write, User read/write */ +#define PP_RXRX 3 /* Supervisor read, User read */ + +/* Segment Register */ +typedef struct _SEGREG { + unsigned long t:1; /* Normal or I/O type */ + unsigned long ks:1; /* Supervisor 'key' (normally 0) */ + unsigned long kp:1; /* User 'key' (normally 1) */ + unsigned long n:1; /* No-execute */ + unsigned long :4; /* Unused */ + unsigned long vsid:24; /* Virtual Segment Identifier */ +} SEGREG; + +/* Block Address Translation (BAT) Registers */ +typedef struct _P601_BATU { /* Upper part of BAT for 601 processor */ + unsigned long bepi:15; /* Effective page index (virtual address) */ + unsigned long :8; /* unused */ + unsigned long w:1; + unsigned long i:1; /* Cache inhibit */ + unsigned long m:1; /* Memory coherence */ + unsigned long ks:1; /* Supervisor key (normally 0) */ + unsigned long kp:1; /* User key (normally 1) */ + unsigned long pp:2; /* Page access protections */ +} P601_BATU; + +typedef struct _BATU { /* Upper part of BAT (all except 601) */ +#ifdef CONFIG_PPC64BRIDGE + unsigned long long bepi:47; +#else /* CONFIG_PPC64BRIDGE */ + unsigned long bepi:15; /* Effective page index (virtual address) */ +#endif /* CONFIG_PPC64BRIDGE */ + unsigned long :4; /* Unused */ + unsigned long bl:11; /* Block size mask */ + unsigned long vs:1; /* Supervisor valid */ + unsigned long vp:1; /* User valid */ +} BATU; + +typedef struct _P601_BATL { /* Lower part of BAT for 601 processor */ + unsigned long brpn:15; /* Real page index (physical address) */ + unsigned long :10; /* Unused */ + unsigned long v:1; /* Valid bit */ + unsigned long bl:6; /* Block size mask */ +} P601_BATL; + +typedef struct _BATL { /* Lower part of BAT (all except 601) */ +#ifdef CONFIG_PPC64BRIDGE + unsigned long long brpn:47; +#else /* CONFIG_PPC64BRIDGE */ + unsigned long brpn:15; /* Real page index (physical address) */ +#endif /* CONFIG_PPC64BRIDGE */ + unsigned long :10; /* Unused */ + unsigned long w:1; /* Write-thru cache */ + unsigned long i:1; /* Cache inhibit */ + unsigned long m:1; /* Memory coherence */ + unsigned long g:1; /* Guarded (MBZ in IBAT) */ + unsigned long :1; /* Unused */ + unsigned long pp:2; /* Page access protections */ +} BATL; + +typedef struct _BAT { + BATU batu; /* Upper register */ + BATL batl; /* Lower register */ +} BAT; + +typedef struct _P601_BAT { + P601_BATU batu; /* Upper register */ + P601_BATL batl; /* Lower register */ +} P601_BAT; + +/* + * Simulated two-level MMU. This structure is used by the Kernel + * to keep track of MMU mappings and is used to update/maintain + * the hardware HASH table which is really a cache of mappings. + * + * The simulated structures mimic the hardware available on other + * platforms, notably the 80x86 and 680x0. + */ + +typedef struct _pte { + unsigned long page_num:20; + unsigned long flags:12; /* Page flags (some unused bits) */ +} pte; + +#define PD_SHIFT (10+12) /* Page directory */ +#define PD_MASK 0x02FF +#define PT_SHIFT (12) /* Page Table */ +#define PT_MASK 0x02FF +#define PG_SHIFT (12) /* Page Entry */ + + +/* MMU context */ + +typedef struct _MMU_context { + SEGREG segs[16]; /* Segment registers */ + pte **pmap; /* Two-level page-map structure */ +} MMU_context; + +extern void _tlbie(unsigned long va); /* invalidate a TLB entry */ +extern void _tlbia(void); /* invalidate all TLB entries */ + +#ifdef CONFIG_ADDR_MAP +extern void init_addr_map(void); +#endif + +typedef enum { + IBAT0 = 0, IBAT1, IBAT2, IBAT3, + DBAT0, DBAT1, DBAT2, DBAT3, +#ifdef CONFIG_HIGH_BATS + IBAT4, IBAT5, IBAT6, IBAT7, + DBAT4, DBAT5, DBAT6, DBAT7 +#endif +} ppc_bat_t; + +extern int read_bat(ppc_bat_t bat, unsigned long *upper, unsigned long *lower); +extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower); +extern void print_bats(void); + +#endif /* __ASSEMBLY__ */ + +#define BATU_VS 0x00000002 +#define BATU_VP 0x00000001 +#define BATU_INVALID 0x00000000 + +#define BATL_WRITETHROUGH 0x00000040 +#define BATL_CACHEINHIBIT 0x00000020 +#define BATL_MEMCOHERENCE 0x00000010 +#define BATL_GUARDEDSTORAGE 0x00000008 +#define BATL_NO_ACCESS 0x00000000 + +#define BATL_PP_MSK 0x00000003 +#define BATL_PP_00 0x00000000 /* No access */ +#define BATL_PP_01 0x00000001 /* Read-only */ +#define BATL_PP_10 0x00000002 /* Read-write */ +#define BATL_PP_11 0x00000003 + +#define BATL_PP_NO_ACCESS BATL_PP_00 +#define BATL_PP_RO BATL_PP_01 +#define BATL_PP_RW BATL_PP_10 + +/* BAT Block size values */ +#define BATU_BL_128K 0x00000000 +#define BATU_BL_256K 0x00000004 +#define BATU_BL_512K 0x0000000c +#define BATU_BL_1M 0x0000001c +#define BATU_BL_2M 0x0000003c +#define BATU_BL_4M 0x0000007c +#define BATU_BL_8M 0x000000fc +#define BATU_BL_16M 0x000001fc +#define BATU_BL_32M 0x000003fc +#define BATU_BL_64M 0x000007fc +#define BATU_BL_128M 0x00000ffc +#define BATU_BL_256M 0x00001ffc + +/* Block lengths for processors that support extended block length */ +#ifdef HID0_XBSEN +#define BATU_BL_512M 0x00003ffc +#define BATU_BL_1G 0x00007ffc +#define BATU_BL_2G 0x0000fffc +#define BATU_BL_4G 0x0001fffc +#define BATU_BL_MAX BATU_BL_4G +#else +#define BATU_BL_MAX BATU_BL_256M +#endif + +/* BAT Access Protection */ +#define BPP_XX 0x00 /* No access */ +#define BPP_RX 0x01 /* Read only */ +#define BPP_RW 0x02 /* Read/write */ + +/* Macros to get values from BATs, once data is in the BAT register format */ +#define BATU_VALID(x) (x & 0x3) +#define BATU_VADDR(x) (x & 0xfffe0000) +#define BATL_PADDR(x) ((phys_addr_t)((x & 0xfffe0000) \ + | ((x & 0x0e00ULL) << 24) \ + | ((x & 0x04ULL) << 30))) +#define BATU_SIZE(x) (1ULL << (fls((x & BATU_BL_MAX) >> 2) + 17)) + +/* bytes into BATU_BL */ +#define TO_BATU_BL(x) \ + (uint32_t)((((1ull << __ilog2_u64((uint64_t)x)) / (128 * 1024)) - 1) * 4) + +/* Used to set up SDR1 register */ +#define HASH_TABLE_SIZE_64K 0x00010000 +#define HASH_TABLE_SIZE_128K 0x00020000 +#define HASH_TABLE_SIZE_256K 0x00040000 +#define HASH_TABLE_SIZE_512K 0x00080000 +#define HASH_TABLE_SIZE_1M 0x00100000 +#define HASH_TABLE_SIZE_2M 0x00200000 +#define HASH_TABLE_SIZE_4M 0x00400000 +#define HASH_TABLE_MASK_64K 0x000 +#define HASH_TABLE_MASK_128K 0x001 +#define HASH_TABLE_MASK_256K 0x003 +#define HASH_TABLE_MASK_512K 0x007 +#define HASH_TABLE_MASK_1M 0x00F +#define HASH_TABLE_MASK_2M 0x01F +#define HASH_TABLE_MASK_4M 0x03F + +/* Control/status registers for the MPC8xx. + * A write operation to these registers causes serialized access. + * During software tablewalk, the registers used perform mask/shift-add + * operations when written/read. A TLB entry is created when the Mx_RPN + * is written, and the contents of several registers are used to + * create the entry. + */ +#define MI_CTR 784 /* Instruction TLB control register */ +#define MI_GPM 0x80000000 /* Set domain manager mode */ +#define MI_PPM 0x40000000 /* Set subpage protection */ +#define MI_CIDEF 0x20000000 /* Set cache inhibit when MMU dis */ +#define MI_RSV4I 0x08000000 /* Reserve 4 TLB entries */ +#define MI_PPCS 0x02000000 /* Use MI_RPN prob/priv state */ +#define MI_IDXMASK 0x00001f00 /* TLB index to be loaded */ +#define MI_RESETVAL 0x00000000 /* Value of register at reset */ + +/* These are the Ks and Kp from the ppc books. For proper operation, + * Ks = 0, Kp = 1. + */ +#define MI_AP 786 +#define MI_Ks 0x80000000 /* Should not be set */ +#define MI_Kp 0x40000000 /* Should always be set */ + +/* The effective page number register. When read, contains the information + * about the last instruction TLB miss. When MI_RPN is written, bits in + * this register are used to create the TLB entry. + */ +#define MI_EPN 787 +#define MI_EPNMASK 0xfffff000 /* Effective page number for entry */ +#define MI_EVALID 0x00000200 /* Entry is valid */ +#define MI_ASIDMASK 0x0000000f /* ASID match value */ + /* Reset value is undefined */ + +/* A "level 1" or "segment" or whatever you want to call it register. + * For the instruction TLB, it contains bits that get loaded into the + * TLB entry when the MI_RPN is written. + */ +#define MI_TWC 789 +#define MI_APG 0x000001e0 /* Access protection group (0) */ +#define MI_GUARDED 0x00000010 /* Guarded storage */ +#define MI_PSMASK 0x0000000c /* Mask of page size bits */ +#define MI_PS8MEG 0x0000000c /* 8M page size */ +#define MI_PS512K 0x00000004 /* 512K page size */ +#define MI_PS4K_16K 0x00000000 /* 4K or 16K page size */ +#define MI_SVALID 0x00000001 /* Segment entry is valid */ + /* Reset value is undefined */ + +/* Real page number. Defined by the pte. Writing this register + * causes a TLB entry to be created for the instruction TLB, using + * additional information from the MI_EPN, and MI_TWC registers. + */ +#define MI_RPN 790 + +/* Define an RPN value for mapping Kernel memory to large virtual + * pages for boot initialization. This has real page number of 0, + * large page size, shared page, cache enabled, and valid. + * Also mark all subpages valid and write access. + */ +#define MI_BOOTINIT 0x000001fd + +#define MD_CTR 792 /* Data TLB control register */ +#define MD_GPM 0x80000000 /* Set domain manager mode */ +#define MD_PPM 0x40000000 /* Set subpage protection */ +#define MD_CIDEF 0x20000000 /* Set cache inhibit when MMU dis */ +#define MD_WTDEF 0x10000000 /* Set writethrough when MMU dis */ +#define MD_RSV4I 0x08000000 /* Reserve 4 TLB entries */ +#define MD_TWAM 0x04000000 /* Use 4K page hardware assist */ +#define MD_PPCS 0x02000000 /* Use MI_RPN prob/priv state */ +#define MD_IDXMASK 0x00001f00 /* TLB index to be loaded */ +#define MD_RESETVAL 0x04000000 /* Value of register at reset */ + +#define M_CASID 793 /* Address space ID (context) to match */ +#define MC_ASIDMASK 0x0000000f /* Bits used for ASID value */ + + +/* These are the Ks and Kp from the ppc books. For proper operation, + * Ks = 0, Kp = 1. + */ +#define MD_AP 794 +#define MD_Ks 0x80000000 /* Should not be set */ +#define MD_Kp 0x40000000 /* Should always be set */ + +/* The effective page number register. When read, contains the information + * about the last instruction TLB miss. When MD_RPN is written, bits in + * this register are used to create the TLB entry. + */ +#define MD_EPN 795 +#define MD_EPNMASK 0xfffff000 /* Effective page number for entry */ +#define MD_EVALID 0x00000200 /* Entry is valid */ +#define MD_ASIDMASK 0x0000000f /* ASID match value */ + /* Reset value is undefined */ + +/* The pointer to the base address of the first level page table. + * During a software tablewalk, reading this register provides the address + * of the entry associated with MD_EPN. + */ +#define M_TWB 796 +#define M_L1TB 0xfffff000 /* Level 1 table base address */ +#define M_L1INDX 0x00000ffc /* Level 1 index, when read */ + /* Reset value is undefined */ + +/* A "level 1" or "segment" or whatever you want to call it register. + * For the data TLB, it contains bits that get loaded into the TLB entry + * when the MD_RPN is written. It is also provides the hardware assist + * for finding the PTE address during software tablewalk. + */ +#define MD_TWC 797 +#define MD_L2TB 0xfffff000 /* Level 2 table base address */ +#define MD_L2INDX 0xfffffe00 /* Level 2 index (*pte), when read */ +#define MD_APG 0x000001e0 /* Access protection group (0) */ +#define MD_GUARDED 0x00000010 /* Guarded storage */ +#define MD_PSMASK 0x0000000c /* Mask of page size bits */ +#define MD_PS8MEG 0x0000000c /* 8M page size */ +#define MD_PS512K 0x00000004 /* 512K page size */ +#define MD_PS4K_16K 0x00000000 /* 4K or 16K page size */ +#define MD_WT 0x00000002 /* Use writethrough page attribute */ +#define MD_SVALID 0x00000001 /* Segment entry is valid */ + /* Reset value is undefined */ + + +/* Real page number. Defined by the pte. Writing this register + * causes a TLB entry to be created for the data TLB, using + * additional information from the MD_EPN, and MD_TWC registers. + */ +#define MD_RPN 798 + +/* This is a temporary storage register that could be used to save + * a processor working register during a tablewalk. + */ +#define M_TW 799 + +/* + * At present, all ppc 400-class processors share a similar TLB + * architecture. The instruction and data sides share a unified, + * 64-entry, fully-associative TLB which is maintained totally under + * software control. In addition, the instruction side has a + * hardware-managed, 4-entry, fully- associative TLB which serves as a + * first level to the shared TLB. These two TLBs are known as the UTLB + * and ITLB, respectively. + */ + +#define PPC4XX_TLB_SIZE 64 + +/* + * TLB entries are defined by a "high" tag portion and a "low" data + * portion. On all architectures, the data portion is 32-bits. + * + * TLB entries are managed entirely under software control by reading, + * writing, and searchoing using the 4xx-specific tlbre, tlbwr, and tlbsx + * instructions. + */ + +/* + * FSL Book-E support + */ + +#define MAS0_TLBSEL_MSK 0x30000000 +#define MAS0_TLBSEL(x) (((x) << 28) & MAS0_TLBSEL_MSK) +#define MAS0_ESEL_MSK 0x0FFF0000 +#define MAS0_ESEL(x) (((x) << 16) & MAS0_ESEL_MSK) +#define MAS0_NV(x) ((x) & 0x00000FFF) + +#define MAS1_VALID 0x80000000 +#define MAS1_IPROT 0x40000000 +#define MAS1_TID(x) (((x) << 16) & 0x3FFF0000) +#define MAS1_TS 0x00001000 +#define MAS1_TSIZE(x) (((x) << 7) & 0x00000F80) +#define TSIZE_TO_BYTES(x) (1ULL << ((x) + 10)) + +#define MAS2_EPN 0xFFFFF000 +#define MAS2_X0 0x00000040 +#define MAS2_X1 0x00000020 +#define MAS2_W 0x00000010 +#define MAS2_I 0x00000008 +#define MAS2_M 0x00000004 +#define MAS2_G 0x00000002 +#define MAS2_E 0x00000001 + +#define MAS3_RPN 0xFFFFF000 +#define MAS3_U0 0x00000200 +#define MAS3_U1 0x00000100 +#define MAS3_U2 0x00000080 +#define MAS3_U3 0x00000040 +#define MAS3_UX 0x00000020 +#define MAS3_SX 0x00000010 +#define MAS3_UW 0x00000008 +#define MAS3_SW 0x00000004 +#define MAS3_UR 0x00000002 +#define MAS3_SR 0x00000001 + +#define MAS4_TLBSELD(x) MAS0_TLBSEL(x) +#define MAS4_TIDDSEL 0x000F0000 +#define MAS4_TSIZED(x) MAS1_TSIZE(x) +#define MAS4_X0D 0x00000040 +#define MAS4_X1D 0x00000020 +#define MAS4_WD 0x00000010 +#define MAS4_ID 0x00000008 +#define MAS4_MD 0x00000004 +#define MAS4_GD 0x00000002 +#define MAS4_ED 0x00000001 + +#define MAS6_SPID0 0x3FFF0000 +#define MAS6_SPID1 0x00007FFE +#define MAS6_SAS 0x00000001 +#define MAS6_SPID MAS6_SPID0 + +#define MAS7_RPN 0xFFFFFFFF + +#define FSL_BOOKE_MAS0(tlbsel,esel,nv) \ + (MAS0_TLBSEL(tlbsel) | MAS0_ESEL(esel) | MAS0_NV(nv)) +#define FSL_BOOKE_MAS1(v,iprot,tid,ts,tsize) \ + ((((v) << 31) & MAS1_VALID) |\ + (((iprot) << 30) & MAS1_IPROT) |\ + (MAS1_TID(tid)) |\ + (((ts) << 12) & MAS1_TS) |\ + (MAS1_TSIZE(tsize))) +#define FSL_BOOKE_MAS2(epn, wimge) \ + (((epn) & MAS3_RPN) | (wimge)) +#define FSL_BOOKE_MAS3(rpn, user, perms) \ + (((rpn) & MAS3_RPN) | (user) | (perms)) +#define FSL_BOOKE_MAS7(rpn) \ + (((uint64_t)(rpn)) >> 32) + +#define BOOKE_PAGESZ_1K 0 +#define BOOKE_PAGESZ_2K 1 +#define BOOKE_PAGESZ_4K 2 +#define BOOKE_PAGESZ_8K 3 +#define BOOKE_PAGESZ_16K 4 +#define BOOKE_PAGESZ_32K 5 +#define BOOKE_PAGESZ_64K 6 +#define BOOKE_PAGESZ_128K 7 +#define BOOKE_PAGESZ_256K 8 +#define BOOKE_PAGESZ_512K 9 +#define BOOKE_PAGESZ_1M 10 +#define BOOKE_PAGESZ_2M 11 +#define BOOKE_PAGESZ_4M 12 +#define BOOKE_PAGESZ_8M 13 +#define BOOKE_PAGESZ_16M 14 +#define BOOKE_PAGESZ_32M 15 +#define BOOKE_PAGESZ_64M 16 +#define BOOKE_PAGESZ_128M 17 +#define BOOKE_PAGESZ_256M 18 +#define BOOKE_PAGESZ_512M 19 +#define BOOKE_PAGESZ_1G 20 +#define BOOKE_PAGESZ_2G 21 +#define BOOKE_PAGESZ_4G 22 +#define BOOKE_PAGESZ_8G 23 +#define BOOKE_PAGESZ_16GB 24 +#define BOOKE_PAGESZ_32GB 25 +#define BOOKE_PAGESZ_64GB 26 +#define BOOKE_PAGESZ_128GB 27 +#define BOOKE_PAGESZ_256GB 28 +#define BOOKE_PAGESZ_512GB 29 +#define BOOKE_PAGESZ_1TB 30 +#define BOOKE_PAGESZ_2TB 31 + +#define TLBIVAX_ALL 4 +#define TLBIVAX_TLB0 0 +#define TLBIVAX_TLB1 8 + +#ifdef CONFIG_E500 +#ifndef __ASSEMBLY__ +extern void set_tlb(uint8_t tlb, uint32_t epn, uint64_t rpn, + uint8_t perms, uint8_t wimge, + uint8_t ts, uint8_t esel, uint8_t tsize, uint8_t iprot); +extern void disable_tlb(uint8_t esel); +extern void invalidate_tlb(uint8_t tlb); +extern void init_tlbs(void); +extern int find_tlb_idx(void *addr, uint8_t tlbsel); +extern void init_used_tlb_cams(void); +extern int find_free_tlbcam(void); +extern void print_tlbcam(void); + +extern unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg); +extern void clear_ddr_tlbs(unsigned int memsize_in_meg); + +enum tlb_map_type { + TLB_MAP_RAM, + TLB_MAP_IO, +}; + +extern uint64_t tlb_map_range(ulong_t v_addr, phys_addr_t p_addr, uint64_t size, + enum tlb_map_type map_type); + +extern void write_tlb(uint32_t _mas0, uint32_t _mas1, uint32_t _mas2, uint32_t _mas3, uint32_t _mas7); + +#define SET_TLB_ENTRY(_tlb, _epn, _rpn, _perms, _wimge, _ts, _esel, _sz, _iprot) \ + { .mas0 = FSL_BOOKE_MAS0(_tlb, _esel, 0), \ + .mas1 = FSL_BOOKE_MAS1(1, _iprot, 0, _ts, _sz), \ + .mas2 = FSL_BOOKE_MAS2(_epn, _wimge), \ + .mas3 = FSL_BOOKE_MAS3(_rpn, 0, _perms), \ + .mas7 = FSL_BOOKE_MAS7(_rpn), } + +struct fsl_e_tlb_entry { + uint32_t mas0; + uint32_t mas1; + uint32_t mas2; + uint32_t mas3; + uint32_t mas7; +}; + +extern struct fsl_e_tlb_entry tlb_table[]; +extern int num_tlb_entries; +#endif +#endif + +#ifdef CONFIG_E300 +#define LAWAR_EN 0x80000000 +#define LAWAR_SIZE 0x0000003F + +#define LAWAR_TRGT_IF_PCI 0x00000000 +#define LAWAR_TRGT_IF_PCI1 0x00000000 +#define LAWAR_TRGT_IF_PCIX 0x00000000 +#define LAWAR_TRGT_IF_PCI2 0x00100000 +#define LAWAR_TRGT_IF_PCIE1 0x00200000 +#define LAWAR_TRGT_IF_PCIE2 0x00100000 +#define LAWAR_TRGT_IF_PCIE3 0x00300000 +#define LAWAR_TRGT_IF_LBC 0x00400000 +#define LAWAR_TRGT_IF_CCSR 0x00800000 +#define LAWAR_TRGT_IF_DDR_INTERLEAVED 0x00B00000 +#define LAWAR_TRGT_IF_RIO 0x00c00000 +#define LAWAR_TRGT_IF_DDR 0x00f00000 +#define LAWAR_TRGT_IF_DDR1 0x00f00000 +#define LAWAR_TRGT_IF_DDR2 0x01600000 + +#define LAWAR_SIZE_BASE 0xa +#define LAWAR_SIZE_4K (LAWAR_SIZE_BASE+1) +#define LAWAR_SIZE_8K (LAWAR_SIZE_BASE+2) +#define LAWAR_SIZE_16K (LAWAR_SIZE_BASE+3) +#define LAWAR_SIZE_32K (LAWAR_SIZE_BASE+4) +#define LAWAR_SIZE_64K (LAWAR_SIZE_BASE+5) +#define LAWAR_SIZE_128K (LAWAR_SIZE_BASE+6) +#define LAWAR_SIZE_256K (LAWAR_SIZE_BASE+7) +#define LAWAR_SIZE_512K (LAWAR_SIZE_BASE+8) +#define LAWAR_SIZE_1M (LAWAR_SIZE_BASE+9) +#define LAWAR_SIZE_2M (LAWAR_SIZE_BASE+10) +#define LAWAR_SIZE_4M (LAWAR_SIZE_BASE+11) +#define LAWAR_SIZE_8M (LAWAR_SIZE_BASE+12) +#define LAWAR_SIZE_16M (LAWAR_SIZE_BASE+13) +#define LAWAR_SIZE_32M (LAWAR_SIZE_BASE+14) +#define LAWAR_SIZE_64M (LAWAR_SIZE_BASE+15) +#define LAWAR_SIZE_128M (LAWAR_SIZE_BASE+16) +#define LAWAR_SIZE_256M (LAWAR_SIZE_BASE+17) +#define LAWAR_SIZE_512M (LAWAR_SIZE_BASE+18) +#define LAWAR_SIZE_1G (LAWAR_SIZE_BASE+19) +#define LAWAR_SIZE_2G (LAWAR_SIZE_BASE+20) +#define LAWAR_SIZE_4G (LAWAR_SIZE_BASE+21) +#define LAWAR_SIZE_8G (LAWAR_SIZE_BASE+22) +#define LAWAR_SIZE_16G (LAWAR_SIZE_BASE+23) +#define LAWAR_SIZE_32G (LAWAR_SIZE_BASE+24) +#endif + +#ifdef CONFIG_440 +/* General */ +#define TLB_VALID 0x00000200 + +/* Supported page sizes */ + +#define SZ_1K 0x00000000 +#define SZ_4K 0x00000010 +#define SZ_16K 0x00000020 +#define SZ_64K 0x00000030 +#define SZ_256K 0x00000040 +#define SZ_1M 0x00000050 +#define SZ_16M 0x00000070 +#define SZ_256M 0x00000090 + +/* Storage attributes */ +#define SA_W 0x00000800 /* Write-through */ +#define SA_I 0x00000400 /* Caching inhibited */ +#define SA_M 0x00000200 /* Memory coherence */ +#define SA_G 0x00000100 /* Guarded */ +#define SA_E 0x00000080 /* Endian */ +/* Some additional macros for combinations often used */ +#define SA_IG (SA_I | SA_G) + +/* Access control */ +#define AC_X 0x00000024 /* Execute */ +#define AC_W 0x00000012 /* Write */ +#define AC_R 0x00000009 /* Read */ +/* Some additional macros for combinations often used */ +#define AC_RW (AC_R | AC_W) +#define AC_RWX (AC_R | AC_W | AC_X) + +/* Some handy macros */ + +#define EPN(e) ((e) & 0xfffffc00) +#define TLB0(epn,sz) ((EPN((epn)) | (sz) | TLB_VALID )) +#define TLB1(rpn,erpn) (((rpn) & 0xfffffc00) | (erpn)) +#define TLB2(a) ((a) & 0x00000fbf) + +#define tlbtab_start\ + mflr r1 ;\ + bl 0f ; + +#define tlbtab_end\ + .long 0, 0, 0 ;\ +0: mflr r0 ;\ + mtlr r1 ;\ + blr ; + +#define tlbentry(epn,sz,rpn,erpn,attr)\ + .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr) + +/*----------------------------------------------------------------------------+ +| TLB specific defines. ++----------------------------------------------------------------------------*/ +#define TLB_256MB_ALIGN_MASK 0xFF0000000ULL +#define TLB_16MB_ALIGN_MASK 0xFFF000000ULL +#define TLB_1MB_ALIGN_MASK 0xFFFF00000ULL +#define TLB_256KB_ALIGN_MASK 0xFFFFC0000ULL +#define TLB_64KB_ALIGN_MASK 0xFFFFF0000ULL +#define TLB_16KB_ALIGN_MASK 0xFFFFFC000ULL +#define TLB_4KB_ALIGN_MASK 0xFFFFFF000ULL +#define TLB_1KB_ALIGN_MASK 0xFFFFFFC00ULL +#define TLB_256MB_SIZE 0x10000000 +#define TLB_16MB_SIZE 0x01000000 +#define TLB_1MB_SIZE 0x00100000 +#define TLB_256KB_SIZE 0x00040000 +#define TLB_64KB_SIZE 0x00010000 +#define TLB_16KB_SIZE 0x00004000 +#define TLB_4KB_SIZE 0x00001000 +#define TLB_1KB_SIZE 0x00000400 + +#define TLB_WORD0_EPN_MASK 0xFFFFFC00 +#define TLB_WORD0_EPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00) +#define TLB_WORD0_EPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00) +#define TLB_WORD0_V_MASK 0x00000200 +#define TLB_WORD0_V_ENABLE 0x00000200 +#define TLB_WORD0_V_DISABLE 0x00000000 +#define TLB_WORD0_TS_MASK 0x00000100 +#define TLB_WORD0_TS_1 0x00000100 +#define TLB_WORD0_TS_0 0x00000000 +#define TLB_WORD0_SIZE_MASK 0x000000F0 +#define TLB_WORD0_SIZE_1KB 0x00000000 +#define TLB_WORD0_SIZE_4KB 0x00000010 +#define TLB_WORD0_SIZE_16KB 0x00000020 +#define TLB_WORD0_SIZE_64KB 0x00000030 +#define TLB_WORD0_SIZE_256KB 0x00000040 +#define TLB_WORD0_SIZE_1MB 0x00000050 +#define TLB_WORD0_SIZE_16MB 0x00000070 +#define TLB_WORD0_SIZE_256MB 0x00000090 +#define TLB_WORD0_TPAR_MASK 0x0000000F +#define TLB_WORD0_TPAR_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0) +#define TLB_WORD0_TPAR_DECODE(n) ((((unsigned long)(n))>>0)&0x0F) + +#define TLB_WORD1_RPN_MASK 0xFFFFFC00 +#define TLB_WORD1_RPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00) +#define TLB_WORD1_RPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00) +#define TLB_WORD1_PAR1_MASK 0x00000300 +#define TLB_WORD1_PAR1_ENCODE(n) ((((unsigned long)(n))&0x03)<<8) +#define TLB_WORD1_PAR1_DECODE(n) ((((unsigned long)(n))>>8)&0x03) +#define TLB_WORD1_PAR1_0 0x00000000 +#define TLB_WORD1_PAR1_1 0x00000100 +#define TLB_WORD1_PAR1_2 0x00000200 +#define TLB_WORD1_PAR1_3 0x00000300 +#define TLB_WORD1_ERPN_MASK 0x0000000F +#define TLB_WORD1_ERPN_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0) +#define TLB_WORD1_ERPN_DECODE(n) ((((unsigned long)(n))>>0)&0x0F) + +#define TLB_WORD2_PAR2_MASK 0xC0000000 +#define TLB_WORD2_PAR2_ENCODE(n) ((((unsigned long)(n))&0x03)<<30) +#define TLB_WORD2_PAR2_DECODE(n) ((((unsigned long)(n))>>30)&0x03) +#define TLB_WORD2_PAR2_0 0x00000000 +#define TLB_WORD2_PAR2_1 0x40000000 +#define TLB_WORD2_PAR2_2 0x80000000 +#define TLB_WORD2_PAR2_3 0xC0000000 +#define TLB_WORD2_U0_MASK 0x00008000 +#define TLB_WORD2_U0_ENABLE 0x00008000 +#define TLB_WORD2_U0_DISABLE 0x00000000 +#define TLB_WORD2_U1_MASK 0x00004000 +#define TLB_WORD2_U1_ENABLE 0x00004000 +#define TLB_WORD2_U1_DISABLE 0x00000000 +#define TLB_WORD2_U2_MASK 0x00002000 +#define TLB_WORD2_U2_ENABLE 0x00002000 +#define TLB_WORD2_U2_DISABLE 0x00000000 +#define TLB_WORD2_U3_MASK 0x00001000 +#define TLB_WORD2_U3_ENABLE 0x00001000 +#define TLB_WORD2_U3_DISABLE 0x00000000 +#define TLB_WORD2_W_MASK 0x00000800 +#define TLB_WORD2_W_ENABLE 0x00000800 +#define TLB_WORD2_W_DISABLE 0x00000000 +#define TLB_WORD2_I_MASK 0x00000400 +#define TLB_WORD2_I_ENABLE 0x00000400 +#define TLB_WORD2_I_DISABLE 0x00000000 +#define TLB_WORD2_M_MASK 0x00000200 +#define TLB_WORD2_M_ENABLE 0x00000200 +#define TLB_WORD2_M_DISABLE 0x00000000 +#define TLB_WORD2_G_MASK 0x00000100 +#define TLB_WORD2_G_ENABLE 0x00000100 +#define TLB_WORD2_G_DISABLE 0x00000000 +#define TLB_WORD2_E_MASK 0x00000080 +#define TLB_WORD2_E_ENABLE 0x00000080 +#define TLB_WORD2_E_DISABLE 0x00000000 +#define TLB_WORD2_UX_MASK 0x00000020 +#define TLB_WORD2_UX_ENABLE 0x00000020 +#define TLB_WORD2_UX_DISABLE 0x00000000 +#define TLB_WORD2_UW_MASK 0x00000010 +#define TLB_WORD2_UW_ENABLE 0x00000010 +#define TLB_WORD2_UW_DISABLE 0x00000000 +#define TLB_WORD2_UR_MASK 0x00000008 +#define TLB_WORD2_UR_ENABLE 0x00000008 +#define TLB_WORD2_UR_DISABLE 0x00000000 +#define TLB_WORD2_SX_MASK 0x00000004 +#define TLB_WORD2_SX_ENABLE 0x00000004 +#define TLB_WORD2_SX_DISABLE 0x00000000 +#define TLB_WORD2_SW_MASK 0x00000002 +#define TLB_WORD2_SW_ENABLE 0x00000002 +#define TLB_WORD2_SW_DISABLE 0x00000000 +#define TLB_WORD2_SR_MASK 0x00000001 +#define TLB_WORD2_SR_ENABLE 0x00000001 +#define TLB_WORD2_SR_DISABLE 0x00000000 + +/*----------------------------------------------------------------------------+ +| Following instructions are not available in Book E mode of the GNU assembler. ++----------------------------------------------------------------------------*/ +#define DCCCI(ra,rb) .long 0x7c000000|\ + (ra<<16)|(rb<<11)|(454<<1) + +#define ICCCI(ra,rb) .long 0x7c000000|\ + (ra<<16)|(rb<<11)|(966<<1) + +#define DCREAD(rt,ra,rb) .long 0x7c000000|\ + (rt<<21)|(ra<<16)|(rb<<11)|(486<<1) + +#define ICREAD(ra,rb) .long 0x7c000000|\ + (ra<<16)|(rb<<11)|(998<<1) + +#define TLBSX(rt,ra,rb) .long 0x7c000000|\ + (rt<<21)|(ra<<16)|(rb<<11)|(914<<1) + +#define TLBWE(rs,ra,ws) .long 0x7c000000|\ + (rs<<21)|(ra<<16)|(ws<<11)|(978<<1) + +#define TLBRE(rt,ra,ws) .long 0x7c000000|\ + (rt<<21)|(ra<<16)|(ws<<11)|(946<<1) + +#define TLBSXDOT(rt,ra,rb) .long 0x7c000001|\ + (rt<<21)|(ra<<16)|(rb<<11)|(914<<1) + +#define MSYNC .long 0x7c000000|\ + (598<<1) + +#define MBAR_INST .long 0x7c000000|\ + (854<<1) + +#ifndef __ASSEMBLY__ +/* Prototypes */ +void mttlb1(unsigned long index, unsigned long value); +void mttlb2(unsigned long index, unsigned long value); +void mttlb3(unsigned long index, unsigned long value); +unsigned long mftlb1(unsigned long index); +unsigned long mftlb2(unsigned long index); +unsigned long mftlb3(unsigned long index); + +void program_tlb(uint64_t phys_addr, uint32_t virt_addr, uint32_t size, uint32_t tlb_word2_i_value); +void remove_tlb(uint32_t vaddr, uint32_t size); +void change_tlb(uint32_t vaddr, uint32_t size, uint32_t tlb_word2_i_value); +#endif /* __ASSEMBLY__ */ + +#endif /* CONFIG_440 */ +#endif /* _PPC_MMU_H_ */ diff --git a/Private/HALKit/PowerPC/.gitkeep b/Private/HALKit/PowerPC/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Private/HALKit/PowerPC/APM/.gitkeep b/Private/HALKit/PowerPC/APM/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s b/Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s deleted file mode 100644 index 0bf6418d..00000000 --- a/Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s +++ /dev/null @@ -1,30 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -.align 4 -.type name, @function -.text -.globl rt_do_context_switch - -/* r3 = assigner stack, r4 = assignee stack */ -rt_do_context_switch: - - lwz 0(%r4), 0(%r3) - lwz 4(%r4), 4(%r3) - lwz 8(%r4), 8(%r3) - lwz 12(%r4), 12(%r3) - lwz 14(%r4), 14(%r3) - lwz 18(%r4), 18(%r3) - lwz 22(%r4), 22(%r3) - lwz 24(%r4), 24(%r3) - lwz 28(%r4), 28(%r3) - lwz 32(%r4), 32(%r3) - lwz 34(%r4), 34(%r3) - lwz 38(%r4), 38(%r3) - - mr %r31, %r4 - - bl diff --git a/Private/HALKit/PowerPC/HalHardware.cxx b/Private/HALKit/PowerPC/HalHardware.cxx deleted file mode 100644 index 5d09805d..00000000 --- a/Private/HALKit/PowerPC/HalHardware.cxx +++ /dev/null @@ -1,14 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include - -namespace NewOS { -namespace HAL { -UIntPtr hal_alloc_page(bool rw, bool user) { return 0; } -} // namespace HAL -} // namespace NewOS diff --git a/Private/HALKit/PowerPC/HalHart.cxx b/Private/HALKit/PowerPC/HalHart.cxx deleted file mode 100644 index 102bab7d..00000000 --- a/Private/HALKit/PowerPC/HalHart.cxx +++ /dev/null @@ -1,19 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include -#include - -using namespace NewOS; - -/// @brief wakes up thread. -/// wakes up thread from hang. -void rt_wakeup_thread(HAL::StackFramePtr stack) {} - -/// @brief makes thread sleep. -/// hooks and hangs thread to prevent code from executing. -void rt_hang_thread(HAL::StackFramePtr stack) {} diff --git a/Private/HALKit/PowerPC/HalSerialPort.cxx b/Private/HALKit/PowerPC/HalSerialPort.cxx deleted file mode 100644 index 36878b61..00000000 --- a/Private/HALKit/PowerPC/HalSerialPort.cxx +++ /dev/null @@ -1,24 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include - -using namespace NewOS; - -/// @brief Writes to COM1. -/// @param bytes -void ke_io_write(const Char* bytes) { - if (!bytes) return; - - SizeT index = 0; - SizeT len = rt_string_len(bytes, 256); - - while (index < len) { - // TODO - ++index; - } -} \ No newline at end of file diff --git a/Private/HALKit/PowerPC/HalStartSequence.s b/Private/HALKit/PowerPC/HalStartSequence.s deleted file mode 100644 index f50a4d4f..00000000 --- a/Private/HALKit/PowerPC/HalStartSequence.s +++ /dev/null @@ -1,14 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -.globl Main -.extern HalKernelMain -.align 4 -.text - -Main: - bl HalKernelMain - blr diff --git a/Private/HALKit/PowerPC/HalThread.cxx b/Private/HALKit/PowerPC/HalThread.cxx deleted file mode 100644 index a91e7f28..00000000 --- a/Private/HALKit/PowerPC/HalThread.cxx +++ /dev/null @@ -1,10 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include - -extern "C" NewOS::HAL::StackFramePtr rt_get_current_context() { return nullptr; } diff --git a/Private/HALKit/PowerPC/HalVirtualMemory.cxx b/Private/HALKit/PowerPC/HalVirtualMemory.cxx deleted file mode 100644 index 301bda0c..00000000 --- a/Private/HALKit/PowerPC/HalVirtualMemory.cxx +++ /dev/null @@ -1,52 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include - -#include -#include - -/// NOTE: refer to: https://www.nxp.com/docs/en/white-paper/POWRPCARCPRMRM.pdf, -/// or in /Developer/PDF/POWRPCARCPRMRM.pdf - -using namespace NewOS; - -/// @brief Write directly to the specific TLB. -/// @param mas0 -/// @param mas1 -/// @param mas2 -/// @param mas3 -/// @param mas7 -static void hal_write_tlb(uint32_t mas0, uint32_t mas1, uint32_t mas2, - uint32_t mas3, uint32_t mas7) { - mtspr(MAS0, mas0); - mtspr(MAS1, mas1); - mtspr(MAS2, mas2); - mtspr(MAS3, mas3); - mtspr(MAS7, mas7); - - hal_flush_tlb(); -} - -void hal_set_tlb(uint8_t tlb, uint32_t epn, uint64_t rpn, uint8_t perms, - uint8_t wimge, uint8_t ts, uint8_t esel, uint8_t tsize, - uint8_t iprot) { - if ((mfspr(SPRN_MMUCFG) & MMUCFG_MAVN) == MMUCFG_MAVN_V1 && (tsize & 1)) { - // this mmu-version does not allow odd tsize values - return; - } - uint32_t mas0 = FSL_BOOKE_MAS0(tlb, esel, 0); - uint32_t mas1 = FSL_BOOKE_MAS1(1, iprot, 0, ts, tsize); - uint32_t mas2 = FSL_BOOKE_MAS2(epn, wimge); - uint32_t mas3 = FSL_BOOKE_MAS3(rpn, 0, perms); - uint32_t mas7 = FSL_BOOKE_MAS7(rpn); - - hal_write_tlb(mas0, mas1, mas2, mas3, mas7); -} - -/// @brief Flush system TLB. -EXTERN_C void hal_flush_tlb() { asm volatile("isync;tlbwe;msync;isync"); } diff --git a/Private/HALKit/PowerPC/Hart.hxx b/Private/HALKit/PowerPC/Hart.hxx deleted file mode 100644 index 56d51243..00000000 --- a/Private/HALKit/PowerPC/Hart.hxx +++ /dev/null @@ -1,27 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: Hart.hxx - Purpose: PowerPC hardware threads. - - Revision History: - - 14/04/24: Added file (amlel) - -------------------------------------------- */ - -#pragma once - -#include - -/// @brief hardware thread indentification type. -typedef NewOS::Int32 PPCHartType; - -/// @brief Hardware thread information structure. -typedef struct HalHardwareThread { - NewOS::UIntPtr fStartAddress; - NewOS::UInt8 fPrivleged : 1; - NewOS::UInt32 fPageFlags; - PPCHartType fIdentNumber; -} HalHardwareThread; diff --git a/Private/HALKit/PowerPC/MBCI/.gitkeep b/Private/HALKit/PowerPC/MBCI/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx b/Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx deleted file mode 100644 index 98371c43..00000000 --- a/Private/HALKit/PowerPC/MBCI/HalMBCIHost.cxx +++ /dev/null @@ -1,8 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include diff --git a/Private/HALKit/PowerPC/Processor.hpp b/Private/HALKit/PowerPC/Processor.hpp deleted file mode 100644 index 12a5bd26..00000000 --- a/Private/HALKit/PowerPC/Processor.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - Purpose: PowerPC processor header. - -------------------------------------------- */ - -#pragma once - -#include -#include - -#define kHalPPCAlignment __attribute__((aligned(4))) - -namespace NewOS::HAL { -typedef UIntPtr Reg; - -struct kHalPPCAlignment StackFrame { - Reg R0; - Reg R1; - Reg R2; - Reg R3; - Reg R4; - Reg R5; - Reg R6; - Reg R7; - Reg R8; - Reg PC; - Reg SP; -}; - -typedef StackFrame* StackFramePtr; - -inline void rt_halt() { - while (1) { - - } -} - -inline void rt_cli() {} -} // namespace NewOS::HAL - -extern "C" void int_handle_math(NewOS::UIntPtr sp); -extern "C" void int_handle_pf(NewOS::UIntPtr sp); -extern "C" void* __ppc_alloca(size_t sz); diff --git a/Private/HALKit/PowerPC/ppc-cpu.h b/Private/HALKit/PowerPC/ppc-cpu.h deleted file mode 100644 index 4bc6e9f0..00000000 --- a/Private/HALKit/PowerPC/ppc-cpu.h +++ /dev/null @@ -1,1393 +0,0 @@ -#ifndef __ASM_PPC_PROCESSOR_H -#define __ASM_PPC_PROCESSOR_H - -/// ! @note The NeWS cpu is based on the e500 with 64-bit extensions, much like the 970. - -/* - * Default implementation of macro that returns current - * instruction pointer ("program counter"). - */ -#define current_text_addr() ({ __label__ _l; _l: &&_l;}) - -#define AAA_HACK_DISABLE -#ifdef AAA_HACK_DISABLE -/* warning this is just to make the compiler shut up.. It does not - match the definition in ptrace.h. So dont use this code. */ -struct pt_regs { - unsigned long nip; -}; - -#else -#include -#include -#endif - -/* Machine State Register (MSR) Fields */ - -#ifdef CONFIG_PPC64BRIDGE -#define MSR_SF (1<<63) -#define MSR_ISF (1<<61) -#endif /* CONFIG_PPC64BRIDGE */ -#define MSR_UCLE (1<<26) /* User-mode cache lock enable (e500) */ -#define MSR_VEC (1<<25) /* Enable AltiVec(74xx) */ -#define MSR_SPE (1<<25) /* Enable SPE(e500) */ -#define MSR_POW (1<<18) /* Enable Power Management */ -#define MSR_WE (1<<18) /* Wait State Enable */ -#define MSR_TGPR (1<<17) /* TLB Update registers in use */ -#define MSR_CE (1<<17) /* Critical Interrupt Enable */ -#define MSR_ILE (1<<16) /* Interrupt Little Endian */ -#define MSR_EE (1<<15) /* External Interrupt Enable */ -#define MSR_PR (1<<14) /* Problem State / Privilege Level */ -#define MSR_FP (1<<13) /* Floating Point enable */ -#define MSR_ME (1<<12) /* Machine Check Enable */ -#define MSR_FE0 (1<<11) /* Floating Exception mode 0 */ -#define MSR_SE (1<<10) /* Single Step */ -#define MSR_DWE (1<<10) /* Debug Wait Enable (4xx) */ -#define MSR_UBLE (1<<10) /* BTB lock enable (e500) */ -#define MSR_BE (1<<9) /* Branch Trace */ -#define MSR_DE (1<<9) /* Debug Exception Enable */ -#define MSR_FE1 (1<<8) /* Floating Exception mode 1 */ -#define MSR_IP (1<<6) /* Exception prefix 0x000/0xFFF */ -#define MSR_IR (1<<5) /* Instruction Relocate */ -#define MSR_IS (1<<5) /* Book E Instruction space */ -#define MSR_DR (1<<4) /* Data Relocate */ -#define MSR_DS (1<<4) /* Book E Data space */ -#define MSR_PE (1<<3) /* Protection Enable */ -#define MSR_PX (1<<2) /* Protection Exclusive Mode */ -#define MSR_PMM (1<<2) /* Performance monitor mark bit (e500) */ -#define MSR_RI (1<<1) /* Recoverable Exception */ -#define MSR_LE (1<<0) /* Little Endian */ - -#ifdef CONFIG_APUS_FAST_EXCEPT -#define MSR_ MSR_ME|MSR_IP|MSR_RI -#else -#define MSR_ MSR_ME|MSR_RI -#endif -#ifndef CONFIG_E500 -#define MSR_KERNEL MSR_|MSR_IR|MSR_DR -#else -#define MSR_KERNEL MSR_ME -#endif - -/* Floating Point Status and Control Register (FPSCR) Fields */ - -#define FPSCR_FX 0x80000000 /* FPU exception summary */ -#define FPSCR_FEX 0x40000000 /* FPU enabled exception summary */ -#define FPSCR_VX 0x20000000 /* Invalid operation summary */ -#define FPSCR_OX 0x10000000 /* Overflow exception summary */ -#define FPSCR_UX 0x08000000 /* Underflow exception summary */ -#define FPSCR_ZX 0x04000000 /* Zero-devide exception summary */ -#define FPSCR_XX 0x02000000 /* Inexact exception summary */ -#define FPSCR_VXSNAN 0x01000000 /* Invalid op for SNaN */ -#define FPSCR_VXISI 0x00800000 /* Invalid op for Inv - Inv */ -#define FPSCR_VXIDI 0x00400000 /* Invalid op for Inv / Inv */ -#define FPSCR_VXZDZ 0x00200000 /* Invalid op for Zero / Zero */ -#define FPSCR_VXIMZ 0x00100000 /* Invalid op for Inv * Zero */ -#define FPSCR_VXVC 0x00080000 /* Invalid op for Compare */ -#define FPSCR_FR 0x00040000 /* Fraction rounded */ -#define FPSCR_FI 0x00020000 /* Fraction inexact */ -#define FPSCR_FPRF 0x0001f000 /* FPU Result Flags */ -#define FPSCR_FPCC 0x0000f000 /* FPU Condition Codes */ -#define FPSCR_VXSOFT 0x00000400 /* Invalid op for software request */ -#define FPSCR_VXSQRT 0x00000200 /* Invalid op for square root */ -#define FPSCR_VXCVI 0x00000100 /* Invalid op for integer convert */ -#define FPSCR_VE 0x00000080 /* Invalid op exception enable */ -#define FPSCR_OE 0x00000040 /* IEEE overflow exception enable */ -#define FPSCR_UE 0x00000020 /* IEEE underflow exception enable */ -#define FPSCR_ZE 0x00000010 /* IEEE zero divide exception enable */ -#define FPSCR_XE 0x00000008 /* FP inexact exception enable */ -#define FPSCR_NI 0x00000004 /* FPU non IEEE-Mode */ -#define FPSCR_RN 0x00000003 /* FPU rounding control */ - -/* Special Purpose Registers (SPRNs)*/ - -/* PPC440 Architecture is BOOK-E */ -#ifdef CONFIG_440 -#define CONFIG_BOOKE -#endif - -#define SPRN_CCR0 0x3B3 /* Core Configuration Register 0 */ -#ifdef CONFIG_BOOKE -#define SPRN_CCR1 0x378 /* Core Configuration Register for 440 only */ -#endif -#define SPRN_CDBCR 0x3D7 /* Cache Debug Control Register */ -#define SPRN_CTR 0x009 /* Count Register */ -#define SPRN_DABR 0x3F5 /* Data Address Breakpoint Register */ -#ifndef CONFIG_BOOKE -#define SPRN_DAC1 0x3F6 /* Data Address Compare 1 */ -#define SPRN_DAC2 0x3F7 /* Data Address Compare 2 */ -#else -#define SPRN_DAC1 0x13C /* Book E Data Address Compare 1 */ -#define SPRN_DAC2 0x13D /* Book E Data Address Compare 2 */ -#endif /* CONFIG_BOOKE */ -#define SPRN_DAR 0x013 /* Data Address Register */ -#define SPRN_DBAT0L 0x219 /* Data BAT 0 Lower Register */ -#define SPRN_DBAT0U 0x218 /* Data BAT 0 Upper Register */ -#define SPRN_DBAT1L 0x21B /* Data BAT 1 Lower Register */ -#define SPRN_DBAT1U 0x21A /* Data BAT 1 Upper Register */ -#define SPRN_DBAT2L 0x21D /* Data BAT 2 Lower Register */ -#define SPRN_DBAT2U 0x21C /* Data BAT 2 Upper Register */ -#define SPRN_DBAT3L 0x21F /* Data BAT 3 Lower Register */ -#define SPRN_DBAT3U 0x21E /* Data BAT 3 Upper Register */ -#define SPRN_DBAT4L 0x239 /* Data BAT 4 Lower Register */ -#define SPRN_DBAT4U 0x238 /* Data BAT 4 Upper Register */ -#define SPRN_DBAT5L 0x23B /* Data BAT 5 Lower Register */ -#define SPRN_DBAT5U 0x23A /* Data BAT 5 Upper Register */ -#define SPRN_DBAT6L 0x23D /* Data BAT 6 Lower Register */ -#define SPRN_DBAT6U 0x23C /* Data BAT 6 Upper Register */ -#define SPRN_DBAT7L 0x23F /* Data BAT 7 Lower Register */ -#define SPRN_DBAT7U 0x23E /* Data BAT 7 Lower Register */ -#define SPRN_DBCR 0x3F2 /* Debug Control Regsiter */ -#define DBCR_EDM 0x80000000 -#define DBCR_IDM 0x40000000 -#define DBCR_RST(x) (((x) & 0x3) << 28) -#define DBCR_RST_NONE 0 -#define DBCR_RST_CORE 1 -#define DBCR_RST_CHIP 2 -#define DBCR_RST_SYSTEM 3 -#define DBCR_IC 0x08000000 /* Instruction Completion Debug Evnt */ -#define DBCR_BT 0x04000000 /* Branch Taken Debug Event */ -#define DBCR_EDE 0x02000000 /* Exception Debug Event */ -#define DBCR_TDE 0x01000000 /* TRAP Debug Event */ -#define DBCR_FER 0x00F80000 /* First Events Remaining Mask */ -#define DBCR_FT 0x00040000 /* Freeze Timers on Debug Event */ -#define DBCR_IA1 0x00020000 /* Instr. Addr. Compare 1 Enable */ -#define DBCR_IA2 0x00010000 /* Instr. Addr. Compare 2 Enable */ -#define DBCR_D1R 0x00008000 /* Data Addr. Compare 1 Read Enable */ -#define DBCR_D1W 0x00004000 /* Data Addr. Compare 1 Write Enable */ -#define DBCR_D1S(x) (((x) & 0x3) << 12) /* Data Adrr. Compare 1 Size */ -#define DAC_BYTE 0 -#define DAC_HALF 1 -#define DAC_WORD 2 -#define DAC_QUAD 3 -#define DBCR_D2R 0x00000800 /* Data Addr. Compare 2 Read Enable */ -#define DBCR_D2W 0x00000400 /* Data Addr. Compare 2 Write Enable */ -#define DBCR_D2S(x) (((x) & 0x3) << 8) /* Data Addr. Compare 2 Size */ -#define DBCR_SBT 0x00000040 /* Second Branch Taken Debug Event */ -#define DBCR_SED 0x00000020 /* Second Exception Debug Event */ -#define DBCR_STD 0x00000010 /* Second Trap Debug Event */ -#define DBCR_SIA 0x00000008 /* Second IAC Enable */ -#define DBCR_SDA 0x00000004 /* Second DAC Enable */ -#define DBCR_JOI 0x00000002 /* JTAG Serial Outbound Int. Enable */ -#define DBCR_JII 0x00000001 /* JTAG Serial Inbound Int. Enable */ -#ifndef CONFIG_BOOKE -#define SPRN_DBCR0 0x3F2 /* Debug Control Register 0 */ -#else -#define SPRN_DBCR0 0x134 /* Book E Debug Control Register 0 */ -#endif /* CONFIG_BOOKE */ -#ifndef CONFIG_BOOKE -#define SPRN_DBCR1 0x3BD /* Debug Control Register 1 */ -#define SPRN_DBSR 0x3F0 /* Debug Status Register */ -#else -#define SPRN_DBCR1 0x135 /* Book E Debug Control Register 1 */ -#ifdef CONFIG_BOOKE -#define SPRN_DBDR 0x3f3 /* Debug Data Register */ -#endif -#define SPRN_DBSR 0x130 /* Book E Debug Status Register */ -#define DBSR_IC 0x08000000 /* Book E Instruction Completion */ -#define DBSR_TIE 0x01000000 /* Book E Trap Instruction Event */ -#endif /* CONFIG_BOOKE */ -#define SPRN_DCCR 0x3FA /* Data Cache Cacheability Register */ -#define DCCR_NOCACHE 0 /* Noncacheable */ -#define DCCR_CACHE 1 /* Cacheable */ -#ifndef CONFIG_BOOKE -#define SPRN_DCDBTRL 0x39c /* Data Cache Debug Tag Register Low */ -#define SPRN_DCDBTRH 0x39d /* Data Cache Debug Tag Register High */ -#endif -#define SPRN_DCMP 0x3D1 /* Data TLB Compare Register */ -#define SPRN_DCWR 0x3BA /* Data Cache Write-thru Register */ -#define DCWR_COPY 0 /* Copy-back */ -#define DCWR_WRITE 1 /* Write-through */ -#ifndef CONFIG_BOOKE -#define SPRN_DEAR 0x3D5 /* Data Error Address Register */ -#else -#define SPRN_DEAR 0x03D /* Book E Data Error Address Register */ -#endif /* CONFIG_BOOKE */ -#define SPRN_DEC 0x016 /* Decrement Register */ -#define SPRN_DMISS 0x3D0 /* Data TLB Miss Register */ -#ifdef CONFIG_BOOKE -#define SPRN_DNV0 0x390 /* Data Cache Normal Victim 0 */ -#define SPRN_DNV1 0x391 /* Data Cache Normal Victim 1 */ -#define SPRN_DNV2 0x392 /* Data Cache Normal Victim 2 */ -#define SPRN_DNV3 0x393 /* Data Cache Normal Victim 3 */ -#endif -#define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */ -#ifdef CONFIG_BOOKE -#define SPRN_DTV0 0x394 /* Data Cache Transient Victim 0 */ -#define SPRN_DTV1 0x395 /* Data Cache Transient Victim 1 */ -#define SPRN_DTV2 0x396 /* Data Cache Transient Victim 2 */ -#define SPRN_DTV3 0x397 /* Data Cache Transient Victim 3 */ -#define SPRN_DVLIM 0x398 /* Data Cache Victim Limit */ -#endif -#define SPRN_EAR 0x11A /* External Address Register */ -#ifndef CONFIG_BOOKE -#define SPRN_ESR 0x3D4 /* Exception Syndrome Register */ -#else -#define SPRN_ESR 0x03E /* Book E Exception Syndrome Register */ -#endif /* CONFIG_BOOKE */ -#define ESR_IMCP 0x80000000 /* Instr. Machine Check - Protection */ -#define ESR_IMCN 0x40000000 /* Instr. Machine Check - Non-config */ -#define ESR_IMCB 0x20000000 /* Instr. Machine Check - Bus error */ -#define ESR_IMCT 0x10000000 /* Instr. Machine Check - Timeout */ -#define ESR_PIL 0x08000000 /* Program Exception - Illegal */ -#define ESR_PPR 0x04000000 /* Program Exception - Priveleged */ -#define ESR_PTR 0x02000000 /* Program Exception - Trap */ -#define ESR_DST 0x00800000 /* Storage Exception - Data miss */ -#define ESR_DIZ 0x00400000 /* Storage Exception - Zone fault */ -#define SPRN_EVPR 0x3D6 /* Exception Vector Prefix Register */ -#define SPRN_HASH1 0x3D2 /* Primary Hash Address Register */ -#define SPRN_HASH2 0x3D3 /* Secondary Hash Address Resgister */ -#define SPRN_HID0 0x3F0 /* Hardware Implementation Register 0 */ - -#define HID0_ICE_SHIFT 15 -#define HID0_DCE_SHIFT 14 -#define HID0_DLOCK_SHIFT 12 - -#define HID0_EMCP (1<<31) /* Enable Machine Check pin */ -#define HID0_EBA (1<<29) /* Enable Bus Address Parity */ -#define HID0_EBD (1<<28) /* Enable Bus Data Parity */ -#define HID0_SBCLK (1<<27) -#define HID0_EICE (1<<26) -#define HID0_ECLK (1<<25) -#define HID0_PAR (1<<24) -#define HID0_DOZE (1<<23) -#define HID0_NAP (1<<22) -#define HID0_SLEEP (1<<21) -#define HID0_DPM (1<<20) -#define HID0_ICE (1<> 16) & 0xFFFF) /* Version field */ -#define SVR_REV(svr) (((svr) >> 0) & 0xFF) /* Revision field */ - -#define SVR_CID(svr) (((svr) >> 28) & 0x0F) /* Company or manufacturer ID */ -#define SVR_SOCOP(svr) (((svr) >> 22) & 0x3F) /* SOC integration options */ -#define SVR_SID(svr) (((svr) >> 16) & 0x3F) /* SOC ID */ -#define SVR_PROC(svr) (((svr) >> 12) & 0x0F) /* Process revision field */ -#define SVR_MFG(svr) (((svr) >> 8) & 0x0F) /* Manufacturing revision */ -#define SVR_MJREV(svr) (((svr) >> 4) & 0x0F) /* Major SOC design revision indicator */ -#define SVR_MNREV(svr) (((svr) >> 0) & 0x0F) /* Minor SOC design revision indicator */ - -/* Processor Version Register */ - -/* Processor Version Register (PVR) field extraction */ - -#define PVR_VER(pvr) (((pvr) >> 16) & 0xFFFF) /* Version field */ -#define PVR_REV(pvr) (((pvr) >> 0) & 0xFFFF) /* Revison field */ - -/* - * AMCC has further subdivided the standard PowerPC 16-bit version and - * revision subfields of the PVR for the PowerPC 403s into the following: - */ - -#define PVR_FAM(pvr) (((pvr) >> 20) & 0xFFF) /* Family field */ -#define PVR_MEM(pvr) (((pvr) >> 16) & 0xF) /* Member field */ -#define PVR_CORE(pvr) (((pvr) >> 12) & 0xF) /* Core field */ -#define PVR_CFG(pvr) (((pvr) >> 8) & 0xF) /* Configuration field */ -#define PVR_MAJ(pvr) (((pvr) >> 4) & 0xF) /* Major revision field */ -#define PVR_MIN(pvr) (((pvr) >> 0) & 0xF) /* Minor revision field */ - -/* e600 core PVR fields */ - -#define PVR_E600_VER(pvr) (((pvr) >> 15) & 0xFFFF) /* Version/type */ -#define PVR_E600_TECH(pvr) (((pvr) >> 12) & 0xF) /* Technology */ -#define PVR_E600_MAJ(pvr) (((pvr) >> 8) & 0xF) /* Major revision */ -#define PVR_E600_MIN(pvr) (((pvr) >> 0) & 0xFF) /* Minor revision */ - -/* Processor Version Numbers */ - -#define PVR_403GA 0x00200000 -#define PVR_403GB 0x00200100 -#define PVR_403GC 0x00200200 -#define PVR_403GCX 0x00201400 -#define PVR_405GP 0x40110000 -#define PVR_405GP_RB 0x40110040 -#define PVR_405GP_RC 0x40110082 -#define PVR_405GP_RD 0x401100C4 -#define PVR_405GP_RE 0x40110145 /* same as pc405cr rev c */ -#define PVR_405EP_RA 0x51210950 -#define PVR_405GPR_RB 0x50910951 -#define PVR_405EZ_RA 0x41511460 -#define PVR_405EXR2_RA 0x12911471 /* 405EXr rev A/B without Security */ -#define PVR_405EX1_RA 0x12911477 /* 405EX rev A/B with Security */ -#define PVR_405EXR1_RC 0x1291147B /* 405EXr rev C with Security */ -#define PVR_405EXR2_RC 0x12911479 /* 405EXr rev C without Security */ -#define PVR_405EX1_RC 0x1291147F /* 405EX rev C with Security */ -#define PVR_405EX2_RC 0x1291147D /* 405EX rev C without Security */ -#define PVR_405EXR1_RD 0x12911472 /* 405EXr rev D with Security */ -#define PVR_405EXR2_RD 0x12911470 /* 405EXr rev D without Security */ -#define PVR_405EX1_RD 0x12911475 /* 405EX rev D with Security */ -#define PVR_405EX2_RD 0x12911473 /* 405EX rev D without Security */ -#define PVR_440GP_RB 0x40120440 -#define PVR_440GP_RC 0x40120481 -#define PVR_440EP_RA 0x42221850 -#define PVR_440EP_RB 0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */ -#define PVR_440EP_RC 0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */ -#define PVR_440GR_RA 0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */ -#define PVR_440GR_RB 0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */ -#define PVR_440EPX1_RA 0x216218D0 /* 440EPX rev A with Security / Kasumi */ -#define PVR_440EPX2_RA 0x216218D4 /* 440EPX rev A without Security / Kasumi */ -#define PVR_440GRX1_RA 0x216218D0 /* 440GRX rev A with Security / Kasumi */ -#define PVR_440GRX2_RA 0x216218D4 /* 440GRX rev A without Security / Kasumi */ -#define PVR_440GX_RA 0x51B21850 -#define PVR_440GX_RB 0x51B21851 -#define PVR_440GX_RC 0x51B21892 -#define PVR_440GX_RF 0x51B21894 -#define PVR_405EP_RB 0x51210950 -#define PVR_440SP_6_RAB 0x53221850 /* 440SP rev A&B with RAID 6 support enabled */ -#define PVR_440SP_RAB 0x53321850 /* 440SP rev A&B without RAID 6 support */ -#define PVR_440SP_6_RC 0x53221891 /* 440SP rev C with RAID 6 support enabled */ -#define PVR_440SP_RC 0x53321891 /* 440SP rev C without RAID 6 support */ -#define PVR_440SPe_6_RA 0x53421890 /* 440SPe rev A with RAID 6 support enabled */ -#define PVR_440SPe_RA 0x53521890 /* 440SPe rev A without RAID 6 support */ -#define PVR_440SPe_6_RB 0x53421891 /* 440SPe rev B with RAID 6 support enabled */ -#define PVR_440SPe_RB 0x53521891 /* 440SPe rev B without RAID 6 support */ -#define PVR_460EX_SE_RA 0x130218A2 /* 460EX rev A with Security Engine */ -#define PVR_460EX_RA 0x130218A3 /* 460EX rev A without Security Engine */ -#define PVR_460EX_RB 0x130218A4 /* 460EX rev B with and without Sec Eng*/ -#define PVR_460GT_SE_RA 0x130218A0 /* 460GT rev A with Security Engine */ -#define PVR_460GT_RA 0x130218A1 /* 460GT rev A without Security Engine */ -#define PVR_460GT_RB 0x130218A5 /* 460GT rev B with and without Sec Eng*/ -#define PVR_460SX_RA 0x13541800 /* 460SX rev A */ -#define PVR_460SX_RA_V1 0x13541801 /* 460SX rev A Variant 1 Security disabled */ -#define PVR_460GX_RA 0x13541802 /* 460GX rev A */ -#define PVR_460GX_RA_V1 0x13541803 /* 460GX rev A Variant 1 Security disabled */ -#define PVR_APM821XX_RA 0x12C41C80 /* APM821XX rev A */ -#define PVR_601 0x00010000 -#define PVR_602 0x00050000 -#define PVR_603 0x00030000 -#define PVR_603e 0x00060000 -#define PVR_603ev 0x00070000 -#define PVR_603r 0x00071000 -#define PVR_604 0x00040000 -#define PVR_604e 0x00090000 -#define PVR_604r 0x000A0000 -#define PVR_620 0x00140000 -#define PVR_740 0x00080000 -#define PVR_750 PVR_740 -#define PVR_740P 0x10080000 -#define PVR_750P PVR_740P -#define PVR_7400 0x000C0000 -#define PVR_7410 0x800C0000 -#define PVR_7450 0x80000000 - -#define PVR_85xx 0x80200000 -#define PVR_85xx_REV1 (PVR_85xx | 0x0010) -#define PVR_85xx_REV2 (PVR_85xx | 0x0020) -#define PVR_VER_E500_V1 0x8020 -#define PVR_VER_E500_V2 0x8021 -#define PVR_VER_E500MC 0x8023 -#define PVR_VER_E5500 0x8024 -#define PVR_VER_E6500 0x8040 - -#define PVR_86xx 0x80040000 - -#define PVR_VIRTEX5 0x7ff21912 - -/* - * For the 8xx processors, all of them report the same PVR family for - * the PowerPC core. The various versions of these processors must be - * differentiated by the version number in the Communication Processor - * Module (CPM). - */ -#define PVR_821 0x00500000 -#define PVR_823 PVR_821 -#define PVR_850 PVR_821 -#define PVR_860 PVR_821 -#define PVR_7400 0x000C0000 -#define PVR_8240 0x00810100 - -/* - * PowerQUICC II family processors report different PVR values depending - * on silicon process (HiP3, HiP4, HiP7, etc.) - */ -#define PVR_8260 PVR_8240 -#define PVR_8260_HIP3 0x00810101 -#define PVR_8260_HIP4 0x80811014 -#define PVR_8260_HIP7 0x80822011 -#define PVR_8260_HIP7R1 0x80822013 -#define PVR_8260_HIP7RA 0x80822014 - -/* - * MPC 52xx - */ -#define PVR_5200 0x80822011 -#define PVR_5200B 0x80822014 - -/* - * 405EX/EXr CHIP_21 Errata - */ -#ifdef CONFIG_SYS_4xx_CHIP_21_405EX_SECURITY -#define CONFIG_SYS_4xx_CHIP_21_ERRATA -#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EX1_RC -#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EX1_RD -#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x0 -#endif - -#ifdef CONFIG_SYS_4xx_CHIP_21_405EX_NO_SECURITY -#define CONFIG_SYS_4xx_CHIP_21_ERRATA -#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EX2_RC -#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EX2_RD -#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x1 -#endif - -#ifdef CONFIG_SYS_4xx_CHIP_21_405EXr_SECURITY -#define CONFIG_SYS_4xx_CHIP_21_ERRATA -#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EXR1_RC -#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EXR1_RD -#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x2 -#endif - -#ifdef CONFIG_SYS_4xx_CHIP_21_405EXr_NO_SECURITY -#define CONFIG_SYS_4xx_CHIP_21_ERRATA -#define CONFIG_405EX_CHIP21_PVR_REV_C PVR_405EXR2_RC -#define CONFIG_405EX_CHIP21_PVR_REV_D PVR_405EXR2_RD -#define CONFIG_405EX_CHIP21_ECID3_REV_D 0x3 -#endif - -/* - * System Version Register - */ - -/* System Version Register (SVR) field extraction */ - -#define SVR_SUBVER(svr) (((svr) >> 8) & 0xFF) /* Process/MFG sub-version */ - -#define SVR_FAM(svr) (((svr) >> 20) & 0xFFF) /* Family field */ -#define SVR_MEM(svr) (((svr) >> 16) & 0xF) /* Member field */ - -#ifdef CONFIG_MPC8536 -#define SVR_MAJ(svr) (((svr) >> 4) & 0x7) /* Major revision field*/ -#else -#define SVR_MAJ(svr) (((svr) >> 4) & 0xF) /* Major revision field*/ -#endif -#define SVR_MIN(svr) (((svr) >> 0) & 0xF) /* Minor revision field*/ - -/* Some parts define SVR[0:23] as the SOC version */ -#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFF7FF) /* SOC w/o E bit*/ - -/* whether MPC8xxxE (i.e. has SEC) */ -#if defined(CONFIG_MPC85xx) -#define IS_E_PROCESSOR(svr) (svr & 0x80000) -#else -#if defined(CONFIG_MPC83xx) -#define IS_E_PROCESSOR(spridr) (!(spridr & 0x00010000)) -#endif -#endif - -#define IS_SVR_REV(svr, maj, min) \ - ((SVR_MAJ(svr) == maj) && (SVR_MIN(svr) == min)) - -/* - * SVR_SOC_VER() Version Values - */ - -#define SVR_8533 0x803400 -#define SVR_8535 0x803701 -#define SVR_8536 0x803700 -#define SVR_8540 0x803000 -#define SVR_8541 0x807200 -#define SVR_8543 0x803200 -#define SVR_8544 0x803401 -#define SVR_8545 0x803102 -#define SVR_8547 0x803101 -#define SVR_8548 0x803100 -#define SVR_8555 0x807100 -#define SVR_8560 0x807000 -#define SVR_8567 0x807501 -#define SVR_8568 0x807500 -#define SVR_8569 0x808000 -#define SVR_8572 0x80E000 -#define SVR_P1010 0x80F100 -#define SVR_P1011 0x80E500 -#define SVR_P1012 0x80E501 -#define SVR_P1013 0x80E700 -#define SVR_P1014 0x80F101 -#define SVR_P1017 0x80F700 -#define SVR_P1020 0x80E400 -#define SVR_P1021 0x80E401 -#define SVR_P1022 0x80E600 -#define SVR_P1023 0x80F600 -#define SVR_P1024 0x80E402 -#define SVR_P1025 0x80E403 -#define SVR_P2010 0x80E300 -#define SVR_P2020 0x80E200 -#define SVR_P2040 0x821000 -#define SVR_P2041 0x821001 -#define SVR_P3041 0x821103 -#define SVR_P4040 0x820100 -#define SVR_P4080 0x820000 -#define SVR_P5010 0x822100 -#define SVR_P5020 0x822000 -#define SVR_P5021 0X820500 -#define SVR_P5040 0x820400 -#define SVR_T4240 0x824000 -#define SVR_T4120 0x824001 -#define SVR_T4160 0x824100 -#define SVR_T4080 0x824102 -#define SVR_C291 0x850000 -#define SVR_C292 0x850020 -#define SVR_C293 0x850030 -#define SVR_B4860 0X868000 -#define SVR_G4860 0x868001 -#define SVR_B4460 0x868003 -#define SVR_B4440 0x868100 -#define SVR_G4440 0x868101 -#define SVR_B4420 0x868102 -#define SVR_B4220 0x868103 -#define SVR_T1040 0x852000 -#define SVR_T1041 0x852001 -#define SVR_T1042 0x852002 -#define SVR_T1020 0x852100 -#define SVR_T1021 0x852101 -#define SVR_T1022 0x852102 -#define SVR_T1024 0x854000 -#define SVR_T1023 0x854100 -#define SVR_T1014 0x854400 -#define SVR_T1013 0x854500 -#define SVR_T2080 0x853000 -#define SVR_T2081 0x853100 - -#define SVR_8610 0x80A000 -#define SVR_8641 0x809000 -#define SVR_8641D 0x809001 - -#define SVR_9130 0x860001 -#define SVR_9131 0x860000 -#define SVR_9132 0x861000 -#define SVR_9232 0x861400 - -#define SVR_Unknown 0xFFFFFF - -#define _GLOBAL(n)\ - .globl n;\ -n: - -/* Macros for setting and retrieving special purpose registers */ - -#define stringify(s) tostring(s) -#define tostring(s) #s - -#define mfdcr(rn) ({unsigned int rval; \ - asm volatile("mfdcr %0," stringify(rn) \ - : "=r" (rval)); rval;}) -#define mtdcr(rn, v) asm volatile("mtdcr " stringify(rn) ",%0" : : "r" (v)) - -#define mfmsr() ({unsigned int rval; \ - asm volatile("mfmsr %0" : "=r" (rval)); rval;}) -#define mtmsr(v) asm volatile("mtmsr %0" : : "r" (v)) - -#define mfspr(rn) ({unsigned int rval; \ - asm volatile("mfspr %0," stringify(rn) \ - : "=r" (rval)); rval;}) -#define mtspr(rn, v) asm volatile("mtspr " stringify(rn) ",%0" : : "r" (v)) - -#define tlbie(v) asm volatile("tlbie %0 \n sync" : : "r" (v)) - -/* Segment Registers */ - -#define SR0 0 -#define SR1 1 -#define SR2 2 -#define SR3 3 -#define SR4 4 -#define SR5 5 -#define SR6 6 -#define SR7 7 -#define SR8 8 -#define SR9 9 -#define SR10 10 -#define SR11 11 -#define SR12 12 -#define SR13 13 -#define SR14 14 -#define SR15 15 - -#ifndef __ASSEMBLY__ - -#include - -struct cpu_type { - char name[15]; - uint32_t soc_ver; - uint32_t num_cores; - uint32_t mask; /* which cpu(s) actually exist */ -#ifdef CONFIG_HETROGENOUS_CLUSTERS - uint32_t dsp_num_cores; - uint32_t dsp_mask; /* which DSP cpu(s) actually exist */ -#endif -}; - -struct cpu_type *identify_cpu(uint32_t ver); -int fixup_cpu(void); - -int fsl_qoriq_core_to_cluster(unsigned int core); -int fsl_qoriq_dsp_core_to_cluster(unsigned int core); - -#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) -#define CPU_TYPE_ENTRY(n, v, nc) \ - { .name = #n, .soc_ver = SVR_##v, .num_cores = (nc), \ - .mask = (1 << (nc)) - 1 } -#define CPU_TYPE_ENTRY_MASK(n, v, nc, m) \ - { .name = #n, .soc_ver = SVR_##v, .num_cores = (nc), .mask = (m) } -#else -#if defined(CONFIG_MPC83xx) -#define CPU_TYPE_ENTRY(x) {#x, SPR_##x} -#endif -#endif - - -#ifndef CONFIG_MACH_SPECIFIC -extern int _machine; -extern int have_of; -#endif /* CONFIG_MACH_SPECIFIC */ - -/* what kind of prep workstation we are */ -extern int _prep_type; -/* - * This is used to identify the board type from a given PReP board - * vendor. Board revision is also made available. - */ -extern unsigned char ucSystemType; -extern unsigned char ucBoardRev; -extern unsigned char ucBoardRevMaj, ucBoardRevMin; - -struct task_struct; -void start_thread(struct pt_regs *regs, unsigned long nip, unsigned long sp); -void release_thread(struct task_struct *); - -/* - * Create a new Kernel thread. - */ -extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); - -/* - * Bus types - */ -#define EISA_bus 0 -#define EISA_bus__is_a_macro /* for versions in ksyms.c */ -#define MCA_bus 0 -#define MCA_bus__is_a_macro /* for versions in ksyms.c */ - -/* Lazy FPU handling on uni-processor */ -extern struct task_struct *last_task_used_math; -extern struct task_struct *last_task_used_altivec; - -/* - * this is the minimum allowable io space due to the location - * of the io areas on prep (first one at 0x80000000) but - * as soon as I get around to remapping the io areas with the BATs - * to match the mac we can raise this. -- Cort - */ -#define TASK_SIZE (0x80000000UL) - -/* This decides where the Kernel will search for a free chunk of vm - * space during mmap's. - */ -#define TASK_UNMAPPED_BASE (TASK_SIZE / 8 * 3) - -typedef struct { - unsigned long seg; -} mm_segment_t; - -struct thread_struct { - unsigned long ksp; /* Kernel stack pointer */ - unsigned long wchan; /* Event task is sleeping on */ - struct pt_regs *regs; /* Pointer to saved register state */ - mm_segment_t fs; /* for get_fs() validation */ - void *pgdir; /* root of page-table tree */ - signed long last_syscall; - double fpr[32]; /* Complete floating point set */ - unsigned long fpscr_pad; /* fpr ... fpscr must be contiguous */ - unsigned long fpscr; /* Floating point status */ -#ifdef CONFIG_ALTIVEC - vector128 vr[32]; /* Complete AltiVec set */ - vector128 vscr; /* AltiVec status */ - unsigned long vrsave; -#endif /* CONFIG_ALTIVEC */ -}; - -#define INIT_SP (sizeof(init_stack) + (unsigned long) &init_stack) - -#define INIT_THREAD { \ - INIT_SP, /* ksp */ \ - 0, /* wchan */ \ - (struct pt_regs *)INIT_SP - 1, /* regs */ \ - KERNEL_DS, /*fs*/ \ - swapper_pg_dir, /* pgdir */ \ - 0, /* last_syscall */ \ - {0}, 0, 0 \ -} - -/* - * Note: the vm_start and vm_end fields here should *not* - * be in Kernel space. (Could vm_end == vm_start perhaps?) - */ -#define INIT_MMAP { &init_mm, 0, 0x1000, NULL, \ - PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC, \ - 1, NULL, NULL } - -/* - * Return saved PC of a blocked thread. For now, this is the "user" PC - */ -static inline unsigned long thread_saved_pc(struct thread_struct *t) -{ - return (t->regs) ? t->regs->nip : 0; -} - -#define copy_segments(tsk, mm) do { } while (0) -#define release_segments(mm) do { } while (0) -#define forget_segments() do { } while (0) - -unsigned long get_wchan(struct task_struct *p); - -#define KSTK_EIP(tsk) ((tsk)->thread.regs->nip) -#define KSTK_ESP(tsk) ((tsk)->thread.regs->gpr[1]) - -/* - * NOTE! The task struct and the stack go together - */ -#define THREAD_SIZE (2*PAGE_SIZE) -#define alloc_task_struct() \ - ((struct task_struct *) __get_free_pages(GFP_KERNEL,1)) -#define free_task_struct(p) free_pages((unsigned long)(p),1) -#define get_task_struct(tsk) atomic_inc(&mem_map[MAP_NR(tsk)].count) - -/* in process.c - for early bootup debug -- Cort */ -int ll_printk(const char *, ...); -void ll_puts(const char *); - -#define init_task (init_task_union.task) -#define init_stack (init_task_union.stack) - -/* In misc.c */ -void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val); - -#endif /* ndef ASSEMBLY*/ - -#ifdef CONFIG_MACH_SPECIFIC -#if defined(CONFIG_8xx) -#define _machine _MACH_8xx -#define have_of 0 -#elif defined(CONFIG_WALNUT) -#define _machine _MACH_walnut -#define have_of 0 -#elif defined(CONFIG_MPC8260) -#define _machine _MACH_8260 -#define have_of 0 -#else -#error "Machine not defined correctly" -#endif -#endif /* CONFIG_MACH_SPECIFIC */ - -#if defined(CONFIG_MPC85xx) || defined(CONFIG_440) - #define EPAPR_MAGIC (0x45504150) -#else - #define EPAPR_MAGIC (0x65504150) -#endif - -#endif /* __ASM_PPC_PROCESSOR_H */ diff --git a/Private/HALKit/PowerPC/ppc-mmu.h b/Private/HALKit/PowerPC/ppc-mmu.h deleted file mode 100644 index 372935aa..00000000 --- a/Private/HALKit/PowerPC/ppc-mmu.h +++ /dev/null @@ -1,800 +0,0 @@ -/* - * PowerPC memory management structures - */ - -#ifndef _PPC_MMU_H_ -#define _PPC_MMU_H_ - -#ifndef __ASSEMBLY__ - -#include - -/* Hardware Page Table Entry */ -typedef struct _PTE { -#ifdef CONFIG_PPC64BRIDGE - unsigned long long vsid:52; - unsigned long api:5; - unsigned long :5; - unsigned long h:1; - unsigned long v:1; - unsigned long long rpn:52; -#else /* CONFIG_PPC64BRIDGE */ - unsigned long v:1; /* Entry is valid */ - unsigned long vsid:24; /* Virtual segment identifier */ - unsigned long h:1; /* Hash algorithm indicator */ - unsigned long api:6; /* Abbreviated page index */ - unsigned long rpn:20; /* Real (physical) page number */ -#endif /* CONFIG_PPC64BRIDGE */ - unsigned long :3; /* Unused */ - unsigned long r:1; /* Referenced */ - unsigned long c:1; /* Changed */ - unsigned long w:1; /* Write-thru cache mode */ - unsigned long i:1; /* Cache inhibited */ - unsigned long m:1; /* Memory coherence */ - unsigned long g:1; /* Guarded */ - unsigned long :1; /* Unused */ - unsigned long pp:2; /* Page protection */ -} PTE; - -/* Values for PP (assumes Ks=0, Kp=1) */ -#define PP_RWXX 0 /* Supervisor read/write, User none */ -#define PP_RWRX 1 /* Supervisor read/write, User read */ -#define PP_RWRW 2 /* Supervisor read/write, User read/write */ -#define PP_RXRX 3 /* Supervisor read, User read */ - -/* Segment Register */ -typedef struct _SEGREG { - unsigned long t:1; /* Normal or I/O type */ - unsigned long ks:1; /* Supervisor 'key' (normally 0) */ - unsigned long kp:1; /* User 'key' (normally 1) */ - unsigned long n:1; /* No-execute */ - unsigned long :4; /* Unused */ - unsigned long vsid:24; /* Virtual Segment Identifier */ -} SEGREG; - -/* Block Address Translation (BAT) Registers */ -typedef struct _P601_BATU { /* Upper part of BAT for 601 processor */ - unsigned long bepi:15; /* Effective page index (virtual address) */ - unsigned long :8; /* unused */ - unsigned long w:1; - unsigned long i:1; /* Cache inhibit */ - unsigned long m:1; /* Memory coherence */ - unsigned long ks:1; /* Supervisor key (normally 0) */ - unsigned long kp:1; /* User key (normally 1) */ - unsigned long pp:2; /* Page access protections */ -} P601_BATU; - -typedef struct _BATU { /* Upper part of BAT (all except 601) */ -#ifdef CONFIG_PPC64BRIDGE - unsigned long long bepi:47; -#else /* CONFIG_PPC64BRIDGE */ - unsigned long bepi:15; /* Effective page index (virtual address) */ -#endif /* CONFIG_PPC64BRIDGE */ - unsigned long :4; /* Unused */ - unsigned long bl:11; /* Block size mask */ - unsigned long vs:1; /* Supervisor valid */ - unsigned long vp:1; /* User valid */ -} BATU; - -typedef struct _P601_BATL { /* Lower part of BAT for 601 processor */ - unsigned long brpn:15; /* Real page index (physical address) */ - unsigned long :10; /* Unused */ - unsigned long v:1; /* Valid bit */ - unsigned long bl:6; /* Block size mask */ -} P601_BATL; - -typedef struct _BATL { /* Lower part of BAT (all except 601) */ -#ifdef CONFIG_PPC64BRIDGE - unsigned long long brpn:47; -#else /* CONFIG_PPC64BRIDGE */ - unsigned long brpn:15; /* Real page index (physical address) */ -#endif /* CONFIG_PPC64BRIDGE */ - unsigned long :10; /* Unused */ - unsigned long w:1; /* Write-thru cache */ - unsigned long i:1; /* Cache inhibit */ - unsigned long m:1; /* Memory coherence */ - unsigned long g:1; /* Guarded (MBZ in IBAT) */ - unsigned long :1; /* Unused */ - unsigned long pp:2; /* Page access protections */ -} BATL; - -typedef struct _BAT { - BATU batu; /* Upper register */ - BATL batl; /* Lower register */ -} BAT; - -typedef struct _P601_BAT { - P601_BATU batu; /* Upper register */ - P601_BATL batl; /* Lower register */ -} P601_BAT; - -/* - * Simulated two-level MMU. This structure is used by the Kernel - * to keep track of MMU mappings and is used to update/maintain - * the hardware HASH table which is really a cache of mappings. - * - * The simulated structures mimic the hardware available on other - * platforms, notably the 80x86 and 680x0. - */ - -typedef struct _pte { - unsigned long page_num:20; - unsigned long flags:12; /* Page flags (some unused bits) */ -} pte; - -#define PD_SHIFT (10+12) /* Page directory */ -#define PD_MASK 0x02FF -#define PT_SHIFT (12) /* Page Table */ -#define PT_MASK 0x02FF -#define PG_SHIFT (12) /* Page Entry */ - - -/* MMU context */ - -typedef struct _MMU_context { - SEGREG segs[16]; /* Segment registers */ - pte **pmap; /* Two-level page-map structure */ -} MMU_context; - -extern void _tlbie(unsigned long va); /* invalidate a TLB entry */ -extern void _tlbia(void); /* invalidate all TLB entries */ - -#ifdef CONFIG_ADDR_MAP -extern void init_addr_map(void); -#endif - -typedef enum { - IBAT0 = 0, IBAT1, IBAT2, IBAT3, - DBAT0, DBAT1, DBAT2, DBAT3, -#ifdef CONFIG_HIGH_BATS - IBAT4, IBAT5, IBAT6, IBAT7, - DBAT4, DBAT5, DBAT6, DBAT7 -#endif -} ppc_bat_t; - -extern int read_bat(ppc_bat_t bat, unsigned long *upper, unsigned long *lower); -extern int write_bat(ppc_bat_t bat, unsigned long upper, unsigned long lower); -extern void print_bats(void); - -#endif /* __ASSEMBLY__ */ - -#define BATU_VS 0x00000002 -#define BATU_VP 0x00000001 -#define BATU_INVALID 0x00000000 - -#define BATL_WRITETHROUGH 0x00000040 -#define BATL_CACHEINHIBIT 0x00000020 -#define BATL_MEMCOHERENCE 0x00000010 -#define BATL_GUARDEDSTORAGE 0x00000008 -#define BATL_NO_ACCESS 0x00000000 - -#define BATL_PP_MSK 0x00000003 -#define BATL_PP_00 0x00000000 /* No access */ -#define BATL_PP_01 0x00000001 /* Read-only */ -#define BATL_PP_10 0x00000002 /* Read-write */ -#define BATL_PP_11 0x00000003 - -#define BATL_PP_NO_ACCESS BATL_PP_00 -#define BATL_PP_RO BATL_PP_01 -#define BATL_PP_RW BATL_PP_10 - -/* BAT Block size values */ -#define BATU_BL_128K 0x00000000 -#define BATU_BL_256K 0x00000004 -#define BATU_BL_512K 0x0000000c -#define BATU_BL_1M 0x0000001c -#define BATU_BL_2M 0x0000003c -#define BATU_BL_4M 0x0000007c -#define BATU_BL_8M 0x000000fc -#define BATU_BL_16M 0x000001fc -#define BATU_BL_32M 0x000003fc -#define BATU_BL_64M 0x000007fc -#define BATU_BL_128M 0x00000ffc -#define BATU_BL_256M 0x00001ffc - -/* Block lengths for processors that support extended block length */ -#ifdef HID0_XBSEN -#define BATU_BL_512M 0x00003ffc -#define BATU_BL_1G 0x00007ffc -#define BATU_BL_2G 0x0000fffc -#define BATU_BL_4G 0x0001fffc -#define BATU_BL_MAX BATU_BL_4G -#else -#define BATU_BL_MAX BATU_BL_256M -#endif - -/* BAT Access Protection */ -#define BPP_XX 0x00 /* No access */ -#define BPP_RX 0x01 /* Read only */ -#define BPP_RW 0x02 /* Read/write */ - -/* Macros to get values from BATs, once data is in the BAT register format */ -#define BATU_VALID(x) (x & 0x3) -#define BATU_VADDR(x) (x & 0xfffe0000) -#define BATL_PADDR(x) ((phys_addr_t)((x & 0xfffe0000) \ - | ((x & 0x0e00ULL) << 24) \ - | ((x & 0x04ULL) << 30))) -#define BATU_SIZE(x) (1ULL << (fls((x & BATU_BL_MAX) >> 2) + 17)) - -/* bytes into BATU_BL */ -#define TO_BATU_BL(x) \ - (uint32_t)((((1ull << __ilog2_u64((uint64_t)x)) / (128 * 1024)) - 1) * 4) - -/* Used to set up SDR1 register */ -#define HASH_TABLE_SIZE_64K 0x00010000 -#define HASH_TABLE_SIZE_128K 0x00020000 -#define HASH_TABLE_SIZE_256K 0x00040000 -#define HASH_TABLE_SIZE_512K 0x00080000 -#define HASH_TABLE_SIZE_1M 0x00100000 -#define HASH_TABLE_SIZE_2M 0x00200000 -#define HASH_TABLE_SIZE_4M 0x00400000 -#define HASH_TABLE_MASK_64K 0x000 -#define HASH_TABLE_MASK_128K 0x001 -#define HASH_TABLE_MASK_256K 0x003 -#define HASH_TABLE_MASK_512K 0x007 -#define HASH_TABLE_MASK_1M 0x00F -#define HASH_TABLE_MASK_2M 0x01F -#define HASH_TABLE_MASK_4M 0x03F - -/* Control/status registers for the MPC8xx. - * A write operation to these registers causes serialized access. - * During software tablewalk, the registers used perform mask/shift-add - * operations when written/read. A TLB entry is created when the Mx_RPN - * is written, and the contents of several registers are used to - * create the entry. - */ -#define MI_CTR 784 /* Instruction TLB control register */ -#define MI_GPM 0x80000000 /* Set domain manager mode */ -#define MI_PPM 0x40000000 /* Set subpage protection */ -#define MI_CIDEF 0x20000000 /* Set cache inhibit when MMU dis */ -#define MI_RSV4I 0x08000000 /* Reserve 4 TLB entries */ -#define MI_PPCS 0x02000000 /* Use MI_RPN prob/priv state */ -#define MI_IDXMASK 0x00001f00 /* TLB index to be loaded */ -#define MI_RESETVAL 0x00000000 /* Value of register at reset */ - -/* These are the Ks and Kp from the PowerPC books. For proper operation, - * Ks = 0, Kp = 1. - */ -#define MI_AP 786 -#define MI_Ks 0x80000000 /* Should not be set */ -#define MI_Kp 0x40000000 /* Should always be set */ - -/* The effective page number register. When read, contains the information - * about the last instruction TLB miss. When MI_RPN is written, bits in - * this register are used to create the TLB entry. - */ -#define MI_EPN 787 -#define MI_EPNMASK 0xfffff000 /* Effective page number for entry */ -#define MI_EVALID 0x00000200 /* Entry is valid */ -#define MI_ASIDMASK 0x0000000f /* ASID match value */ - /* Reset value is undefined */ - -/* A "level 1" or "segment" or whatever you want to call it register. - * For the instruction TLB, it contains bits that get loaded into the - * TLB entry when the MI_RPN is written. - */ -#define MI_TWC 789 -#define MI_APG 0x000001e0 /* Access protection group (0) */ -#define MI_GUARDED 0x00000010 /* Guarded storage */ -#define MI_PSMASK 0x0000000c /* Mask of page size bits */ -#define MI_PS8MEG 0x0000000c /* 8M page size */ -#define MI_PS512K 0x00000004 /* 512K page size */ -#define MI_PS4K_16K 0x00000000 /* 4K or 16K page size */ -#define MI_SVALID 0x00000001 /* Segment entry is valid */ - /* Reset value is undefined */ - -/* Real page number. Defined by the pte. Writing this register - * causes a TLB entry to be created for the instruction TLB, using - * additional information from the MI_EPN, and MI_TWC registers. - */ -#define MI_RPN 790 - -/* Define an RPN value for mapping Kernel memory to large virtual - * pages for boot initialization. This has real page number of 0, - * large page size, shared page, cache enabled, and valid. - * Also mark all subpages valid and write access. - */ -#define MI_BOOTINIT 0x000001fd - -#define MD_CTR 792 /* Data TLB control register */ -#define MD_GPM 0x80000000 /* Set domain manager mode */ -#define MD_PPM 0x40000000 /* Set subpage protection */ -#define MD_CIDEF 0x20000000 /* Set cache inhibit when MMU dis */ -#define MD_WTDEF 0x10000000 /* Set writethrough when MMU dis */ -#define MD_RSV4I 0x08000000 /* Reserve 4 TLB entries */ -#define MD_TWAM 0x04000000 /* Use 4K page hardware assist */ -#define MD_PPCS 0x02000000 /* Use MI_RPN prob/priv state */ -#define MD_IDXMASK 0x00001f00 /* TLB index to be loaded */ -#define MD_RESETVAL 0x04000000 /* Value of register at reset */ - -#define M_CASID 793 /* Address space ID (context) to match */ -#define MC_ASIDMASK 0x0000000f /* Bits used for ASID value */ - - -/* These are the Ks and Kp from the PowerPC books. For proper operation, - * Ks = 0, Kp = 1. - */ -#define MD_AP 794 -#define MD_Ks 0x80000000 /* Should not be set */ -#define MD_Kp 0x40000000 /* Should always be set */ - -/* The effective page number register. When read, contains the information - * about the last instruction TLB miss. When MD_RPN is written, bits in - * this register are used to create the TLB entry. - */ -#define MD_EPN 795 -#define MD_EPNMASK 0xfffff000 /* Effective page number for entry */ -#define MD_EVALID 0x00000200 /* Entry is valid */ -#define MD_ASIDMASK 0x0000000f /* ASID match value */ - /* Reset value is undefined */ - -/* The pointer to the base address of the first level page table. - * During a software tablewalk, reading this register provides the address - * of the entry associated with MD_EPN. - */ -#define M_TWB 796 -#define M_L1TB 0xfffff000 /* Level 1 table base address */ -#define M_L1INDX 0x00000ffc /* Level 1 index, when read */ - /* Reset value is undefined */ - -/* A "level 1" or "segment" or whatever you want to call it register. - * For the data TLB, it contains bits that get loaded into the TLB entry - * when the MD_RPN is written. It is also provides the hardware assist - * for finding the PTE address during software tablewalk. - */ -#define MD_TWC 797 -#define MD_L2TB 0xfffff000 /* Level 2 table base address */ -#define MD_L2INDX 0xfffffe00 /* Level 2 index (*pte), when read */ -#define MD_APG 0x000001e0 /* Access protection group (0) */ -#define MD_GUARDED 0x00000010 /* Guarded storage */ -#define MD_PSMASK 0x0000000c /* Mask of page size bits */ -#define MD_PS8MEG 0x0000000c /* 8M page size */ -#define MD_PS512K 0x00000004 /* 512K page size */ -#define MD_PS4K_16K 0x00000000 /* 4K or 16K page size */ -#define MD_WT 0x00000002 /* Use writethrough page attribute */ -#define MD_SVALID 0x00000001 /* Segment entry is valid */ - /* Reset value is undefined */ - - -/* Real page number. Defined by the pte. Writing this register - * causes a TLB entry to be created for the data TLB, using - * additional information from the MD_EPN, and MD_TWC registers. - */ -#define MD_RPN 798 - -/* This is a temporary storage register that could be used to save - * a processor working register during a tablewalk. - */ -#define M_TW 799 - -/* - * At present, all PowerPC 400-class processors share a similar TLB - * architecture. The instruction and data sides share a unified, - * 64-entry, fully-associative TLB which is maintained totally under - * software control. In addition, the instruction side has a - * hardware-managed, 4-entry, fully- associative TLB which serves as a - * first level to the shared TLB. These two TLBs are known as the UTLB - * and ITLB, respectively. - */ - -#define PPC4XX_TLB_SIZE 64 - -/* - * TLB entries are defined by a "high" tag portion and a "low" data - * portion. On all architectures, the data portion is 32-bits. - * - * TLB entries are managed entirely under software control by reading, - * writing, and searchoing using the 4xx-specific tlbre, tlbwr, and tlbsx - * instructions. - */ - -/* - * FSL Book-E support - */ - -#define MAS0_TLBSEL_MSK 0x30000000 -#define MAS0_TLBSEL(x) (((x) << 28) & MAS0_TLBSEL_MSK) -#define MAS0_ESEL_MSK 0x0FFF0000 -#define MAS0_ESEL(x) (((x) << 16) & MAS0_ESEL_MSK) -#define MAS0_NV(x) ((x) & 0x00000FFF) - -#define MAS1_VALID 0x80000000 -#define MAS1_IPROT 0x40000000 -#define MAS1_TID(x) (((x) << 16) & 0x3FFF0000) -#define MAS1_TS 0x00001000 -#define MAS1_TSIZE(x) (((x) << 7) & 0x00000F80) -#define TSIZE_TO_BYTES(x) (1ULL << ((x) + 10)) - -#define MAS2_EPN 0xFFFFF000 -#define MAS2_X0 0x00000040 -#define MAS2_X1 0x00000020 -#define MAS2_W 0x00000010 -#define MAS2_I 0x00000008 -#define MAS2_M 0x00000004 -#define MAS2_G 0x00000002 -#define MAS2_E 0x00000001 - -#define MAS3_RPN 0xFFFFF000 -#define MAS3_U0 0x00000200 -#define MAS3_U1 0x00000100 -#define MAS3_U2 0x00000080 -#define MAS3_U3 0x00000040 -#define MAS3_UX 0x00000020 -#define MAS3_SX 0x00000010 -#define MAS3_UW 0x00000008 -#define MAS3_SW 0x00000004 -#define MAS3_UR 0x00000002 -#define MAS3_SR 0x00000001 - -#define MAS4_TLBSELD(x) MAS0_TLBSEL(x) -#define MAS4_TIDDSEL 0x000F0000 -#define MAS4_TSIZED(x) MAS1_TSIZE(x) -#define MAS4_X0D 0x00000040 -#define MAS4_X1D 0x00000020 -#define MAS4_WD 0x00000010 -#define MAS4_ID 0x00000008 -#define MAS4_MD 0x00000004 -#define MAS4_GD 0x00000002 -#define MAS4_ED 0x00000001 - -#define MAS6_SPID0 0x3FFF0000 -#define MAS6_SPID1 0x00007FFE -#define MAS6_SAS 0x00000001 -#define MAS6_SPID MAS6_SPID0 - -#define MAS7_RPN 0xFFFFFFFF - -#define FSL_BOOKE_MAS0(tlbsel,esel,nv) \ - (MAS0_TLBSEL(tlbsel) | MAS0_ESEL(esel) | MAS0_NV(nv)) -#define FSL_BOOKE_MAS1(v,iprot,tid,ts,tsize) \ - ((((v) << 31) & MAS1_VALID) |\ - (((iprot) << 30) & MAS1_IPROT) |\ - (MAS1_TID(tid)) |\ - (((ts) << 12) & MAS1_TS) |\ - (MAS1_TSIZE(tsize))) -#define FSL_BOOKE_MAS2(epn, wimge) \ - (((epn) & MAS3_RPN) | (wimge)) -#define FSL_BOOKE_MAS3(rpn, user, perms) \ - (((rpn) & MAS3_RPN) | (user) | (perms)) -#define FSL_BOOKE_MAS7(rpn) \ - (((uint64_t)(rpn)) >> 32) - -#define BOOKE_PAGESZ_1K 0 -#define BOOKE_PAGESZ_2K 1 -#define BOOKE_PAGESZ_4K 2 -#define BOOKE_PAGESZ_8K 3 -#define BOOKE_PAGESZ_16K 4 -#define BOOKE_PAGESZ_32K 5 -#define BOOKE_PAGESZ_64K 6 -#define BOOKE_PAGESZ_128K 7 -#define BOOKE_PAGESZ_256K 8 -#define BOOKE_PAGESZ_512K 9 -#define BOOKE_PAGESZ_1M 10 -#define BOOKE_PAGESZ_2M 11 -#define BOOKE_PAGESZ_4M 12 -#define BOOKE_PAGESZ_8M 13 -#define BOOKE_PAGESZ_16M 14 -#define BOOKE_PAGESZ_32M 15 -#define BOOKE_PAGESZ_64M 16 -#define BOOKE_PAGESZ_128M 17 -#define BOOKE_PAGESZ_256M 18 -#define BOOKE_PAGESZ_512M 19 -#define BOOKE_PAGESZ_1G 20 -#define BOOKE_PAGESZ_2G 21 -#define BOOKE_PAGESZ_4G 22 -#define BOOKE_PAGESZ_8G 23 -#define BOOKE_PAGESZ_16GB 24 -#define BOOKE_PAGESZ_32GB 25 -#define BOOKE_PAGESZ_64GB 26 -#define BOOKE_PAGESZ_128GB 27 -#define BOOKE_PAGESZ_256GB 28 -#define BOOKE_PAGESZ_512GB 29 -#define BOOKE_PAGESZ_1TB 30 -#define BOOKE_PAGESZ_2TB 31 - -#define TLBIVAX_ALL 4 -#define TLBIVAX_TLB0 0 -#define TLBIVAX_TLB1 8 - -#ifdef CONFIG_E500 -#ifndef __ASSEMBLY__ -extern void set_tlb(uint8_t tlb, uint32_t epn, uint64_t rpn, - uint8_t perms, uint8_t wimge, - uint8_t ts, uint8_t esel, uint8_t tsize, uint8_t iprot); -extern void disable_tlb(uint8_t esel); -extern void invalidate_tlb(uint8_t tlb); -extern void init_tlbs(void); -extern int find_tlb_idx(void *addr, uint8_t tlbsel); -extern void init_used_tlb_cams(void); -extern int find_free_tlbcam(void); -extern void print_tlbcam(void); - -extern unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg); -extern void clear_ddr_tlbs(unsigned int memsize_in_meg); - -enum tlb_map_type { - TLB_MAP_RAM, - TLB_MAP_IO, -}; - -extern uint64_t tlb_map_range(ulong_t v_addr, phys_addr_t p_addr, uint64_t size, - enum tlb_map_type map_type); - -extern void write_tlb(uint32_t _mas0, uint32_t _mas1, uint32_t _mas2, uint32_t _mas3, uint32_t _mas7); - -#define SET_TLB_ENTRY(_tlb, _epn, _rpn, _perms, _wimge, _ts, _esel, _sz, _iprot) \ - { .mas0 = FSL_BOOKE_MAS0(_tlb, _esel, 0), \ - .mas1 = FSL_BOOKE_MAS1(1, _iprot, 0, _ts, _sz), \ - .mas2 = FSL_BOOKE_MAS2(_epn, _wimge), \ - .mas3 = FSL_BOOKE_MAS3(_rpn, 0, _perms), \ - .mas7 = FSL_BOOKE_MAS7(_rpn), } - -struct fsl_e_tlb_entry { - uint32_t mas0; - uint32_t mas1; - uint32_t mas2; - uint32_t mas3; - uint32_t mas7; -}; - -extern struct fsl_e_tlb_entry tlb_table[]; -extern int num_tlb_entries; -#endif -#endif - -#ifdef CONFIG_E300 -#define LAWAR_EN 0x80000000 -#define LAWAR_SIZE 0x0000003F - -#define LAWAR_TRGT_IF_PCI 0x00000000 -#define LAWAR_TRGT_IF_PCI1 0x00000000 -#define LAWAR_TRGT_IF_PCIX 0x00000000 -#define LAWAR_TRGT_IF_PCI2 0x00100000 -#define LAWAR_TRGT_IF_PCIE1 0x00200000 -#define LAWAR_TRGT_IF_PCIE2 0x00100000 -#define LAWAR_TRGT_IF_PCIE3 0x00300000 -#define LAWAR_TRGT_IF_LBC 0x00400000 -#define LAWAR_TRGT_IF_CCSR 0x00800000 -#define LAWAR_TRGT_IF_DDR_INTERLEAVED 0x00B00000 -#define LAWAR_TRGT_IF_RIO 0x00c00000 -#define LAWAR_TRGT_IF_DDR 0x00f00000 -#define LAWAR_TRGT_IF_DDR1 0x00f00000 -#define LAWAR_TRGT_IF_DDR2 0x01600000 - -#define LAWAR_SIZE_BASE 0xa -#define LAWAR_SIZE_4K (LAWAR_SIZE_BASE+1) -#define LAWAR_SIZE_8K (LAWAR_SIZE_BASE+2) -#define LAWAR_SIZE_16K (LAWAR_SIZE_BASE+3) -#define LAWAR_SIZE_32K (LAWAR_SIZE_BASE+4) -#define LAWAR_SIZE_64K (LAWAR_SIZE_BASE+5) -#define LAWAR_SIZE_128K (LAWAR_SIZE_BASE+6) -#define LAWAR_SIZE_256K (LAWAR_SIZE_BASE+7) -#define LAWAR_SIZE_512K (LAWAR_SIZE_BASE+8) -#define LAWAR_SIZE_1M (LAWAR_SIZE_BASE+9) -#define LAWAR_SIZE_2M (LAWAR_SIZE_BASE+10) -#define LAWAR_SIZE_4M (LAWAR_SIZE_BASE+11) -#define LAWAR_SIZE_8M (LAWAR_SIZE_BASE+12) -#define LAWAR_SIZE_16M (LAWAR_SIZE_BASE+13) -#define LAWAR_SIZE_32M (LAWAR_SIZE_BASE+14) -#define LAWAR_SIZE_64M (LAWAR_SIZE_BASE+15) -#define LAWAR_SIZE_128M (LAWAR_SIZE_BASE+16) -#define LAWAR_SIZE_256M (LAWAR_SIZE_BASE+17) -#define LAWAR_SIZE_512M (LAWAR_SIZE_BASE+18) -#define LAWAR_SIZE_1G (LAWAR_SIZE_BASE+19) -#define LAWAR_SIZE_2G (LAWAR_SIZE_BASE+20) -#define LAWAR_SIZE_4G (LAWAR_SIZE_BASE+21) -#define LAWAR_SIZE_8G (LAWAR_SIZE_BASE+22) -#define LAWAR_SIZE_16G (LAWAR_SIZE_BASE+23) -#define LAWAR_SIZE_32G (LAWAR_SIZE_BASE+24) -#endif - -#ifdef CONFIG_440 -/* General */ -#define TLB_VALID 0x00000200 - -/* Supported page sizes */ - -#define SZ_1K 0x00000000 -#define SZ_4K 0x00000010 -#define SZ_16K 0x00000020 -#define SZ_64K 0x00000030 -#define SZ_256K 0x00000040 -#define SZ_1M 0x00000050 -#define SZ_16M 0x00000070 -#define SZ_256M 0x00000090 - -/* Storage attributes */ -#define SA_W 0x00000800 /* Write-through */ -#define SA_I 0x00000400 /* Caching inhibited */ -#define SA_M 0x00000200 /* Memory coherence */ -#define SA_G 0x00000100 /* Guarded */ -#define SA_E 0x00000080 /* Endian */ -/* Some additional macros for combinations often used */ -#define SA_IG (SA_I | SA_G) - -/* Access control */ -#define AC_X 0x00000024 /* Execute */ -#define AC_W 0x00000012 /* Write */ -#define AC_R 0x00000009 /* Read */ -/* Some additional macros for combinations often used */ -#define AC_RW (AC_R | AC_W) -#define AC_RWX (AC_R | AC_W | AC_X) - -/* Some handy macros */ - -#define EPN(e) ((e) & 0xfffffc00) -#define TLB0(epn,sz) ((EPN((epn)) | (sz) | TLB_VALID )) -#define TLB1(rpn,erpn) (((rpn) & 0xfffffc00) | (erpn)) -#define TLB2(a) ((a) & 0x00000fbf) - -#define tlbtab_start\ - mflr r1 ;\ - bl 0f ; - -#define tlbtab_end\ - .long 0, 0, 0 ;\ -0: mflr r0 ;\ - mtlr r1 ;\ - blr ; - -#define tlbentry(epn,sz,rpn,erpn,attr)\ - .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr) - -/*----------------------------------------------------------------------------+ -| TLB specific defines. -+----------------------------------------------------------------------------*/ -#define TLB_256MB_ALIGN_MASK 0xFF0000000ULL -#define TLB_16MB_ALIGN_MASK 0xFFF000000ULL -#define TLB_1MB_ALIGN_MASK 0xFFFF00000ULL -#define TLB_256KB_ALIGN_MASK 0xFFFFC0000ULL -#define TLB_64KB_ALIGN_MASK 0xFFFFF0000ULL -#define TLB_16KB_ALIGN_MASK 0xFFFFFC000ULL -#define TLB_4KB_ALIGN_MASK 0xFFFFFF000ULL -#define TLB_1KB_ALIGN_MASK 0xFFFFFFC00ULL -#define TLB_256MB_SIZE 0x10000000 -#define TLB_16MB_SIZE 0x01000000 -#define TLB_1MB_SIZE 0x00100000 -#define TLB_256KB_SIZE 0x00040000 -#define TLB_64KB_SIZE 0x00010000 -#define TLB_16KB_SIZE 0x00004000 -#define TLB_4KB_SIZE 0x00001000 -#define TLB_1KB_SIZE 0x00000400 - -#define TLB_WORD0_EPN_MASK 0xFFFFFC00 -#define TLB_WORD0_EPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00) -#define TLB_WORD0_EPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00) -#define TLB_WORD0_V_MASK 0x00000200 -#define TLB_WORD0_V_ENABLE 0x00000200 -#define TLB_WORD0_V_DISABLE 0x00000000 -#define TLB_WORD0_TS_MASK 0x00000100 -#define TLB_WORD0_TS_1 0x00000100 -#define TLB_WORD0_TS_0 0x00000000 -#define TLB_WORD0_SIZE_MASK 0x000000F0 -#define TLB_WORD0_SIZE_1KB 0x00000000 -#define TLB_WORD0_SIZE_4KB 0x00000010 -#define TLB_WORD0_SIZE_16KB 0x00000020 -#define TLB_WORD0_SIZE_64KB 0x00000030 -#define TLB_WORD0_SIZE_256KB 0x00000040 -#define TLB_WORD0_SIZE_1MB 0x00000050 -#define TLB_WORD0_SIZE_16MB 0x00000070 -#define TLB_WORD0_SIZE_256MB 0x00000090 -#define TLB_WORD0_TPAR_MASK 0x0000000F -#define TLB_WORD0_TPAR_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0) -#define TLB_WORD0_TPAR_DECODE(n) ((((unsigned long)(n))>>0)&0x0F) - -#define TLB_WORD1_RPN_MASK 0xFFFFFC00 -#define TLB_WORD1_RPN_ENCODE(n) (((unsigned long)(n))&0xFFFFFC00) -#define TLB_WORD1_RPN_DECODE(n) (((unsigned long)(n))&0xFFFFFC00) -#define TLB_WORD1_PAR1_MASK 0x00000300 -#define TLB_WORD1_PAR1_ENCODE(n) ((((unsigned long)(n))&0x03)<<8) -#define TLB_WORD1_PAR1_DECODE(n) ((((unsigned long)(n))>>8)&0x03) -#define TLB_WORD1_PAR1_0 0x00000000 -#define TLB_WORD1_PAR1_1 0x00000100 -#define TLB_WORD1_PAR1_2 0x00000200 -#define TLB_WORD1_PAR1_3 0x00000300 -#define TLB_WORD1_ERPN_MASK 0x0000000F -#define TLB_WORD1_ERPN_ENCODE(n) ((((unsigned long)(n))&0x0F)<<0) -#define TLB_WORD1_ERPN_DECODE(n) ((((unsigned long)(n))>>0)&0x0F) - -#define TLB_WORD2_PAR2_MASK 0xC0000000 -#define TLB_WORD2_PAR2_ENCODE(n) ((((unsigned long)(n))&0x03)<<30) -#define TLB_WORD2_PAR2_DECODE(n) ((((unsigned long)(n))>>30)&0x03) -#define TLB_WORD2_PAR2_0 0x00000000 -#define TLB_WORD2_PAR2_1 0x40000000 -#define TLB_WORD2_PAR2_2 0x80000000 -#define TLB_WORD2_PAR2_3 0xC0000000 -#define TLB_WORD2_U0_MASK 0x00008000 -#define TLB_WORD2_U0_ENABLE 0x00008000 -#define TLB_WORD2_U0_DISABLE 0x00000000 -#define TLB_WORD2_U1_MASK 0x00004000 -#define TLB_WORD2_U1_ENABLE 0x00004000 -#define TLB_WORD2_U1_DISABLE 0x00000000 -#define TLB_WORD2_U2_MASK 0x00002000 -#define TLB_WORD2_U2_ENABLE 0x00002000 -#define TLB_WORD2_U2_DISABLE 0x00000000 -#define TLB_WORD2_U3_MASK 0x00001000 -#define TLB_WORD2_U3_ENABLE 0x00001000 -#define TLB_WORD2_U3_DISABLE 0x00000000 -#define TLB_WORD2_W_MASK 0x00000800 -#define TLB_WORD2_W_ENABLE 0x00000800 -#define TLB_WORD2_W_DISABLE 0x00000000 -#define TLB_WORD2_I_MASK 0x00000400 -#define TLB_WORD2_I_ENABLE 0x00000400 -#define TLB_WORD2_I_DISABLE 0x00000000 -#define TLB_WORD2_M_MASK 0x00000200 -#define TLB_WORD2_M_ENABLE 0x00000200 -#define TLB_WORD2_M_DISABLE 0x00000000 -#define TLB_WORD2_G_MASK 0x00000100 -#define TLB_WORD2_G_ENABLE 0x00000100 -#define TLB_WORD2_G_DISABLE 0x00000000 -#define TLB_WORD2_E_MASK 0x00000080 -#define TLB_WORD2_E_ENABLE 0x00000080 -#define TLB_WORD2_E_DISABLE 0x00000000 -#define TLB_WORD2_UX_MASK 0x00000020 -#define TLB_WORD2_UX_ENABLE 0x00000020 -#define TLB_WORD2_UX_DISABLE 0x00000000 -#define TLB_WORD2_UW_MASK 0x00000010 -#define TLB_WORD2_UW_ENABLE 0x00000010 -#define TLB_WORD2_UW_DISABLE 0x00000000 -#define TLB_WORD2_UR_MASK 0x00000008 -#define TLB_WORD2_UR_ENABLE 0x00000008 -#define TLB_WORD2_UR_DISABLE 0x00000000 -#define TLB_WORD2_SX_MASK 0x00000004 -#define TLB_WORD2_SX_ENABLE 0x00000004 -#define TLB_WORD2_SX_DISABLE 0x00000000 -#define TLB_WORD2_SW_MASK 0x00000002 -#define TLB_WORD2_SW_ENABLE 0x00000002 -#define TLB_WORD2_SW_DISABLE 0x00000000 -#define TLB_WORD2_SR_MASK 0x00000001 -#define TLB_WORD2_SR_ENABLE 0x00000001 -#define TLB_WORD2_SR_DISABLE 0x00000000 - -/*----------------------------------------------------------------------------+ -| Following instructions are not available in Book E mode of the GNU assembler. -+----------------------------------------------------------------------------*/ -#define DCCCI(ra,rb) .long 0x7c000000|\ - (ra<<16)|(rb<<11)|(454<<1) - -#define ICCCI(ra,rb) .long 0x7c000000|\ - (ra<<16)|(rb<<11)|(966<<1) - -#define DCREAD(rt,ra,rb) .long 0x7c000000|\ - (rt<<21)|(ra<<16)|(rb<<11)|(486<<1) - -#define ICREAD(ra,rb) .long 0x7c000000|\ - (ra<<16)|(rb<<11)|(998<<1) - -#define TLBSX(rt,ra,rb) .long 0x7c000000|\ - (rt<<21)|(ra<<16)|(rb<<11)|(914<<1) - -#define TLBWE(rs,ra,ws) .long 0x7c000000|\ - (rs<<21)|(ra<<16)|(ws<<11)|(978<<1) - -#define TLBRE(rt,ra,ws) .long 0x7c000000|\ - (rt<<21)|(ra<<16)|(ws<<11)|(946<<1) - -#define TLBSXDOT(rt,ra,rb) .long 0x7c000001|\ - (rt<<21)|(ra<<16)|(rb<<11)|(914<<1) - -#define MSYNC .long 0x7c000000|\ - (598<<1) - -#define MBAR_INST .long 0x7c000000|\ - (854<<1) - -#ifndef __ASSEMBLY__ -/* Prototypes */ -void mttlb1(unsigned long index, unsigned long value); -void mttlb2(unsigned long index, unsigned long value); -void mttlb3(unsigned long index, unsigned long value); -unsigned long mftlb1(unsigned long index); -unsigned long mftlb2(unsigned long index); -unsigned long mftlb3(unsigned long index); - -void program_tlb(uint64_t phys_addr, uint32_t virt_addr, uint32_t size, uint32_t tlb_word2_i_value); -void remove_tlb(uint32_t vaddr, uint32_t size); -void change_tlb(uint32_t vaddr, uint32_t size, uint32_t tlb_word2_i_value); -#endif /* __ASSEMBLY__ */ - -#endif /* CONFIG_440 */ -#endif /* _PPC_MMU_H_ */ \ No newline at end of file diff --git a/Private/KernelKit/DriveManager.hxx b/Private/KernelKit/DriveManager.hxx index e66dedc8..e8028ddd 100644 --- a/Private/KernelKit/DriveManager.hxx +++ b/Private/KernelKit/DriveManager.hxx @@ -106,13 +106,13 @@ class MountpointInterface final { }; /// @brief Unimplemented drive. -/// @param pckt -/// @return +/// @param pckt +/// @return Void ke_drv_unimplemented(DriveTrait::DrivePacket* pckt); /// @brief Gets the drive kind (ATA, SCSI, AHCI...) -/// @param -/// @return +/// @param +/// @return const Char* ke_drive_kind(Void); /// @brief Makes a new drive. diff --git a/Private/KernelKit/PEFCodeManager.hxx b/Private/KernelKit/PEFCodeManager.hxx index d9e857de..1f5269ae 100644 --- a/Private/KernelKit/PEFCodeManager.hxx +++ b/Private/KernelKit/PEFCodeManager.hxx @@ -24,7 +24,7 @@ class PEFLoader : public LoaderInterface { public: explicit PEFLoader(const VoidPtr blob); - explicit PEFLoader(const char *path); + explicit PEFLoader(const Char* path); ~PEFLoader() override; public: diff --git a/Private/KernelKit/SMPManager.hpp b/Private/KernelKit/SMPManager.hpp index 631b29ea..17ea9d38 100644 --- a/Private/KernelKit/SMPManager.hpp +++ b/Private/KernelKit/SMPManager.hpp @@ -31,7 +31,7 @@ enum ThreadKind { /// /// \name HardwareThread -/// @brief CPU Hardware Thread (PowerPC, Intel, or NewCPU) +/// @brief CPU Hardware Thread (POWER, x64, or 64x0) /// class HardwareThread final { diff --git a/Private/KernelKit/XCOFF.hxx b/Private/KernelKit/XCOFF.hxx index 35ca9896..631efdf3 100644 --- a/Private/KernelKit/XCOFF.hxx +++ b/Private/KernelKit/XCOFF.hxx @@ -16,14 +16,14 @@ #include -#define kXCOFF64Magic 0x01F7 +#define kXCOFF64Magic 0x01F7 #define kXCOFFRelFlg 0x0001 #define kXCOFFExecutable 0x0002 #define kXCOFFLnno 0x0004 #define kXCOFFLSyms 0x0008 -/// @brief XCoff file header, meant for PowerPC programs. +/// @brief XCoff file header, meant for POWER apps. typedef struct XCoffFileHeader { NewOS::UInt16 fMagic; @@ -35,4 +35,4 @@ typedef struct XCoffFileHeader NewOS::UInt16 fOptHdr; // ?: Number of bytes in optional header } XCoffFileHeader; -#endif // ifndef __XCOFF__ \ No newline at end of file +#endif // ifndef __XCOFF__ diff --git a/Private/NewBoot/Source/makefile b/Private/NewBoot/Source/makefile index 24f46fd6..03bb9248 100644 --- a/Private/NewBoot/Source/makefile +++ b/Private/NewBoot/Source/makefile @@ -1,5 +1,5 @@ ################################################## -# (C) Mahrouss Logic, all rights reserved. +# (C) Mahrouss Logic, all rights reserved. # This is the bootloader makefile. ################################################## diff --git a/Private/Source/AppMain.cxx b/Private/Source/AppMain.cxx new file mode 100644 index 00000000..ba5d822f --- /dev/null +++ b/Private/Source/AppMain.cxx @@ -0,0 +1,32 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/// @file Main microkernel entrypoint. + +EXTERN_C NewOS::Void AppMain(NewOS::Void) { + ///! Mounts a NewFS block. + NewOS::NewFilesystemManager* newFS = new NewOS::NewFilesystemManager(); + NewOS::ke_protect_ke_heap(newFS); + + NewOS::FilesystemManagerInterface::Mount(newFS); + + while (NewOS::ProcessScheduler::Shared().Leak().Run() > 0); + + ///! we're done, unmount. + delete newFS; +} diff --git a/Private/Source/FS/NewFS.cxx b/Private/Source/FS/NewFS.cxx index 1d7d3621..216db7c6 100644 --- a/Private/Source/FS/NewFS.cxx +++ b/Private/Source/FS/NewFS.cxx @@ -161,7 +161,53 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive) { return false; } - return true; + Char sectorBuf[kNewFSMinimumSectorSz] = {0}; + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = kNewFSAddressAsLba; + + drive->fInput(&drive->fPacket); + + /// disk isnt faulty and data has been fetched. + if (drive->fPacket.fPacketGood) { + NewPartitionBlock* partBlock = (NewPartitionBlock*)sectorBuf; + if (partBlock->PartitionName[0] == 0 && + rt_string_cmp(partBlock->Ident, kNewFSIdent, kNewFSIdentLen) == 0) { + /// partition is free and valid. + + rt_copy_memory((VoidPtr)kNewFSIdent, (VoidPtr)partBlock->Ident, + kNewFSIdentLen); + rt_copy_memory((VoidPtr) "New OS\0", (VoidPtr)partBlock->PartitionName, + rt_string_len("New OS\0")); + + SizeT catalogCount = 0; + SizeT sectorCount = 0; + SizeT diskSize = 0; + + partBlock->Kind = kNewFSPartitionTypeStandard; + partBlock->StartCatalog = sizeof(NewPartitionBlock) + kNewFSAddressAsLba; + partBlock->CatalogCount = catalogCount; + partBlock->SectorCount = sectorCount; + partBlock->DiskSize = diskSize; + partBlock->FreeCatalog = partBlock->StartCatalog; + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = kNewFSAddressAsLba; + + drive->fOutput(&drive->fPacket); + + return true; + } + + kcout << "New OS: Partition already exists.\r\n"; + + /// return success as well, do not ignore that partition. + return true; + } + + return false; } /// @brief @@ -173,73 +219,80 @@ bool NewFSParser::WriteCatalog(_Input _Output NewCatalog* catalog, return false; } -/// @brief -/// @param catalogName -/// @return +/// @brief +/// @param catalogName +/// @return _Output NewCatalog* NewFSParser::FindCatalog(_Input const char* catalogName) { return nullptr; } -/// @brief -/// @param name -/// @return +/// @brief +/// @param name +/// @return _Output NewCatalog* NewFSParser::GetCatalog(_Input const char* name) { return nullptr; } -/// @brief -/// @param catalog -/// @return +/// @brief +/// @param catalog +/// @return Boolean NewFSParser::CloseCatalog(_Input _Output NewCatalog* catalog) { - return false; + return true; } -/// @brief -/// @param catalog -/// @return +/// @brief Mark catalog as removed. +/// @param catalog The catalog structure. +/// @return Boolean NewFSParser::RemoveCatalog(_Input _Output NewCatalog* catalog) { + catalog->Flags |= kNewFSFlagDeleted; + this->WriteCatalog(catalog, nullptr); + return false; } -/// @brief -/// @param catalog -/// @param dataSz -/// @return +/// ***************************************************************** /// +/// Reading,Seek,Tell are unimplemented on catalogs, refer to forks I/O instead. +/// ***************************************************************** /// + +/// @brief +/// @param catalog +/// @param dataSz +/// @return VoidPtr NewFSParser::ReadCatalog(_Input _Output NewCatalog* catalog, SizeT dataSz) { return nullptr; } -/// @brief -/// @param catalog -/// @param off -/// @return +/// @brief +/// @param catalog +/// @param off +/// @return bool NewFSParser::Seek(_Input _Output NewCatalog* catalog, SizeT off) { return false; } -/// @brief -/// @param catalog -/// @return +/// @brief +/// @param catalog +/// @return SizeT NewFSParser::Tell(_Input _Output NewCatalog* catalog) { return 0; } -/// @brief -/// @param sz -/// @return +/// @brief +/// @param sz +/// @return STATIC Lba ke_find_free_fork(SizeT sz) { return 0; } -/// @brief -/// @param sz -/// @return +/// @brief +/// @param sz +/// @return STATIC Lba ke_find_free_catalog(SizeT sz) { return 0; } -/// @brief -/// @param sz -/// @return +/// @brief +/// @param sz +/// @return STATIC Lba ke_find_free_data(SizeT sz) { return 0; } namespace NewOS::Detail { Boolean fs_init_newfs(Void) noexcept { return false; } } // namespace NewOS::Detail -#endif // ifdef __FSKIT_NEWFS__ \ No newline at end of file +#endif // ifdef __FSKIT_NEWFS__ diff --git a/Private/Source/PEFCodeManager.cxx b/Private/Source/PEFCodeManager.cxx index f8616a8c..2f60f085 100644 --- a/Private/Source/PEFCodeManager.cxx +++ b/Private/Source/PEFCodeManager.cxx @@ -17,6 +17,7 @@ namespace NewOS { namespace Detail { +/// @brief Get the PEF platform signature according to the compiled backebnd UInt32 rt_get_pef_platform(void) noexcept { #ifdef __32x0__ return kPefArch32x0; @@ -33,7 +34,7 @@ UInt32 rt_get_pef_platform(void) noexcept { } // namespace Detail /// @brief PEF loader constructor w/ blob. -/// @param blob +/// @param blob PEFLoader::PEFLoader(const VoidPtr blob) : fCachedBlob(nullptr) { fCachedBlob = blob; fBad = false; @@ -42,11 +43,11 @@ PEFLoader::PEFLoader(const VoidPtr blob) : fCachedBlob(nullptr) { } /// @brief PEF loader constructor. -/// @param path -PEFLoader::PEFLoader(const char *path) : fCachedBlob(nullptr), fBad(false) { - OwnPtr> file; +/// @param path the filesystem path. +PEFLoader::PEFLoader(const Char* path) : fCachedBlob(nullptr), fBad(false) { + OwnPtr> file; - file.New(const_cast(path), kRestrictRB); + file.New(const_cast(path), kRestrictRB); if (StringBuilder::Equals(file->MIME(), this->MIME())) { fPath = StringBuilder::Construct(path).Leak(); @@ -131,7 +132,7 @@ VoidPtr PEFLoader::FindSymbol(const char *name, Int32 kind) { } /// @brief Finds the executable entrypoint. -/// @return +/// @return ErrorOr PEFLoader::FindStart() { if (auto sym = this->FindSymbol(kPefStart, kPefCode); sym) return ErrorOr(sym); @@ -140,7 +141,7 @@ ErrorOr PEFLoader::FindStart() { } /// @brief Tells if the executable is loaded or not. -/// @return +/// @return bool PEFLoader::IsLoaded() noexcept { return !fBad && fCachedBlob; } #define kPefAppnameCommandHdr "PefAppName" diff --git a/Private/Source/RuntimeMain.cxx b/Private/Source/RuntimeMain.cxx deleted file mode 100644 index 5bbee3b2..00000000 --- a/Private/Source/RuntimeMain.cxx +++ /dev/null @@ -1,32 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/// @file Main microkernel entrypoint. - -EXTERN_C void RuntimeMain(void) { - ///! Mounts a NewFS block. - NewOS::NewFilesystemManager* newFS = new NewOS::NewFilesystemManager(); - NewOS::ke_protect_ke_heap(newFS); - - NewOS::FilesystemManagerInterface::Mount(newFS); - - while (NewOS::ProcessScheduler::Shared().Leak().Run() > 0); - - ///! we're done, unmount. - delete newFS; -} \ No newline at end of file diff --git a/Private/makefile b/Private/makefile index ffefecf2..b166990e 100644 --- a/Private/makefile +++ b/Private/makefile @@ -1,5 +1,5 @@ ################################################## -# (C) Mahrouss Logic, all rights reserved. +# (C) Mahrouss Logic, all rights reserved. # This is the microkernel makefile. ################################################## @@ -24,13 +24,12 @@ ifneq ($(DEBUG_SUPPORT), ) DEBUG = -D__DEBUG__ endif -SLEEP = sleep 1 COPY = cp # Add assembler, linker, and object files variables. ASMFLAGS = -f win64 LDFLAGS = -e Main --subsystem=17 -LDOBJ = $(wildcard Objects/*.obj) +LDOBJ = Objects/*.obj # This file is the kernel, responsible of task management, memory, drivers and more. KERNEL = NewKernel.exe @@ -53,7 +52,6 @@ newos-amd64-epm: clean $(ASM) $(ASMFLAGS) HALKit/AMD64/HalSMPCoreManager.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalNewBoot.asm $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInstallTIB.asm - $(SLEEP) $(MOVEALL) OBJCOPY=x86_64-w64-mingw32-objcopy -- cgit v1.2.3 From 155971914073bedfa585a0be4d14a40bd23e3b8f Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 20 Apr 2024 23:13:11 +0200 Subject: MHR-9: Driver toolkit, initial commit. Signed-off-by: Amlal El Mahrouss --- Private/DriverKit/KernelDev.c | 31 ++++++++++++++ Private/DriverKit/KernelDev.h | 28 +++++++++++++ Private/DriverKit/KernelDispatchCall.s | 13 ++++++ Private/DriverKit/KernelPrint.c | 23 +++++++---- Private/DriverKit/KernelPrint.h | 33 ++------------- Private/DriverKit/KernelStd.c | 24 +++++++++++ Private/DriverKit/KernelStd.h | 22 ++++++++++ Private/DriverKit/KernelString.c | 19 +++++++++ Private/DriverKit/KernelString.h | 13 ++++++ Private/Drivers/Bonjour/DriverRsrc.rsrc | 25 +++++++++++ Private/Drivers/Bonjour/SampleDriver.c | 18 ++++++++ Private/Drivers/Bonjour/makefile | 62 ++++++++++++++++++++++++++++ Private/Drivers/SampleDriver/SampleDriver.c | 5 ++- Private/Drivers/SampleDriver/makefile | 2 +- Private/NewKit/Application.hxx | 10 ++--- Private/Root/Boot/Icons/bonjour-logo.ico | Bin 0 -> 87830 bytes Private/Root/Boot/Icons/boot-logo.ico | Bin 3638 -> 87830 bytes Private/Root/Boot/Icons/driver-logo.ico | Bin 3638 -> 87830 bytes Private/Root/Boot/Icons/kernel-logo.ico | Bin 3638 -> 87830 bytes Private/Root/Users/Shared/.gitkeep | 0 Private/Root/Users/User.script | 3 -- Public/Developer/SystemLib/Sources/App.c | 4 +- 22 files changed, 285 insertions(+), 50 deletions(-) create mode 100644 Private/DriverKit/KernelDev.c create mode 100644 Private/DriverKit/KernelDev.h create mode 100644 Private/DriverKit/KernelDispatchCall.s create mode 100644 Private/DriverKit/KernelStd.c create mode 100644 Private/DriverKit/KernelStd.h create mode 100644 Private/DriverKit/KernelString.c create mode 100644 Private/DriverKit/KernelString.h create mode 100644 Private/Drivers/Bonjour/DriverRsrc.rsrc create mode 100644 Private/Drivers/Bonjour/SampleDriver.c create mode 100644 Private/Drivers/Bonjour/makefile create mode 100644 Private/Root/Boot/Icons/bonjour-logo.ico create mode 100644 Private/Root/Users/Shared/.gitkeep delete mode 100644 Private/Root/Users/User.script diff --git a/Private/DriverKit/KernelDev.c b/Private/DriverKit/KernelDev.c new file mode 100644 index 00000000..e8c041af --- /dev/null +++ b/Private/DriverKit/KernelDev.c @@ -0,0 +1,31 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Text I/O. + +------------------------------------------- */ + +#include + +/// @brief Open a new binary device from path. +DK_EXTERN kernelDeviceRef kernelOpenBinaryDevice(const char* devicePath) { + if (!devicePath) return NIL; + + return kernelCall("OpenBinaryDevice", 1, devicePath); +} + +/// @brief Open a new character device from path. +DK_EXTERN kernelDeviceRef kernelOpenCharDevice(const char* devicePath) { + if (!devicePath) return NIL; + + return kernelCall("OpenCharDevice", 1, devicePath); +} + +/// @brief Close any device. +/// @param device valid device. +DK_EXTERN void kernelCloseDevice(kernelDeviceRef device) { + if (!device) return; + + kernelCall("CloseDevice", 1, device); +} diff --git a/Private/DriverKit/KernelDev.h b/Private/DriverKit/KernelDev.h new file mode 100644 index 00000000..daa60a7c --- /dev/null +++ b/Private/DriverKit/KernelDev.h @@ -0,0 +1,28 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Devices. + +------------------------------------------- */ + +#pragma once + +#include + +typedef struct _kernelDevice { + int32_t(*read)(); // read from device. + int32_t(*write)(); // write to device. + struct _kernelDevice* (*open)(const char* path); // open device. + void (*close)(struct _kernelDevice* dev); // close device. +} kernelDevice,* kernelDeviceRef; + +/// @brief Open a new binary device from path. +DK_EXTERN kernelDeviceRef kernelOpenBinaryDevice(const char* devicePath); + +/// @brief Open a new character device from path. +DK_EXTERN kernelDeviceRef kernelOpenCharDevice(const char* devicePath); + +/// @brief Close any device. +/// @param device valid device. +DK_EXTERN void kernelCloseDevice(kernelDeviceRef device); diff --git a/Private/DriverKit/KernelDispatchCall.s b/Private/DriverKit/KernelDispatchCall.s new file mode 100644 index 00000000..2919f6ec --- /dev/null +++ b/Private/DriverKit/KernelDispatchCall.s @@ -0,0 +1,13 @@ +.globl __kernelDispatchCall + +.section .text + +#ifdef __x86_64__ + +/* Really simple function, takes our va-list, + and brings it to the trap handler in the kernel. */ +__kernelDispatchCall: + int $0x33 + ret + +#endif diff --git a/Private/DriverKit/KernelPrint.c b/Private/DriverKit/KernelPrint.c index 32e20f4f..5ca09ccf 100644 --- a/Private/DriverKit/KernelPrint.c +++ b/Private/DriverKit/KernelPrint.c @@ -6,14 +6,23 @@ ------------------------------------------- */ -#include "DriverKit/KernelPrint.h" +#include -#ifdef __x86_64__ -static void kernelPrintCharAMD64(const char ch) { - __asm__ volatile("outb %%al, %1" : : "a"(ch), "Nd"(0x3F8) : "memory"); +DK_EXTERN void kernelPrintChar(const char ch) { + kernelCall("WriteCharacter", 1, ch); } -#endif // if __x86_64__ -DK_EXTERN void kernelPrintChar(const char ch) { - kernelPrintChar(ch); +/// @brief print string to UART. +/// @param message UART to transmit. +DK_EXTERN void kernelPrintStr(const char* message) { + if (!message) return; + if (*message == 0) return; + + size_t index = 0; + size_t len = kernelStringLength(message); + + while (index < len) { + kernelPrintChar(message[index]); + ++index; + } } diff --git a/Private/DriverKit/KernelPrint.h b/Private/DriverKit/KernelPrint.h index 7e25e304..36e55442 100644 --- a/Private/DriverKit/KernelPrint.h +++ b/Private/DriverKit/KernelPrint.h @@ -8,38 +8,11 @@ #pragma once -#if defined(__cplusplus) -#define DK_EXTERN extern "C" -#else -#define DK_EXTERN extern -#endif // defined(__cplusplus) - -#include -#include +#include /// @brief print character into UART. DK_EXTERN void kernelPrintChar(const char ch); -static inline size_t kernelStringLength(const char* str) { - size_t index = 0; - - while (str[index] != 0) { - ++index; - } - - return index; -} - /// @brief print string to UART. -static inline void kernelPrintStr(const char* message) { - if (!message) return; - if (*message == 0) return; - - size_t index = 0; - size_t len = kernelStringLength(message); - - while (index < len) { - kernelPrintChar(message[index]); - ++index; - } -} +/// @param message UART to transmit. +DK_EXTERN void kernelPrintStr(const char* message); diff --git a/Private/DriverKit/KernelStd.c b/Private/DriverKit/KernelStd.c new file mode 100644 index 00000000..494ac0bc --- /dev/null +++ b/Private/DriverKit/KernelStd.c @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Definitions. + +------------------------------------------- */ + +#include +#include + +DK_EXTERN __attribute__((naked)) void __kernelDispatchCall(int32_t cnt, ...); + +DK_EXTERN void* kernelCall(const char* kernelRpcName, int32_t cnt, ...) { + if (!kernelRpcName || cnt == 0) return NIL; + + va_list arg; + va_start(arg, cnt); + + __kernelDispatchCall(cnt, arg); + + va_end(arg); + +} diff --git a/Private/DriverKit/KernelStd.h b/Private/DriverKit/KernelStd.h new file mode 100644 index 00000000..3344630e --- /dev/null +++ b/Private/DriverKit/KernelStd.h @@ -0,0 +1,22 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Definitions. + +------------------------------------------- */ + +#pragma once + +#if defined(__cplusplus) +#define DK_EXTERN extern "C" +#define NIL nullptr +#else +#define DK_EXTERN extern +#define NIL NULL +#endif // defined(__cplusplus) + +#include +#include + +DK_EXTERN void* kernelCall(const char* kernelRpcName, int32_t cnt, ...); diff --git a/Private/DriverKit/KernelString.c b/Private/DriverKit/KernelString.c new file mode 100644 index 00000000..7c129dd4 --- /dev/null +++ b/Private/DriverKit/KernelString.c @@ -0,0 +1,19 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Strings. + +------------------------------------------- */ + +#include + +DK_EXTERN size_t kernelStringLength(const char* str) { + size_t index = 0; + + while (str[index] != 0) { + ++index; + } + + return index; +} diff --git a/Private/DriverKit/KernelString.h b/Private/DriverKit/KernelString.h new file mode 100644 index 00000000..d1b8ac93 --- /dev/null +++ b/Private/DriverKit/KernelString.h @@ -0,0 +1,13 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Strings. + +------------------------------------------- */ + +#pragma once + +#include + +DK_EXTERN size_t kernelStringLength(const char* str); diff --git a/Private/Drivers/Bonjour/DriverRsrc.rsrc b/Private/Drivers/Bonjour/DriverRsrc.rsrc new file mode 100644 index 00000000..62347b80 --- /dev/null +++ b/Private/Drivers/Bonjour/DriverRsrc.rsrc @@ -0,0 +1,25 @@ +1 ICON "../../Root/Boot/Icons/bonjour-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss-Logic" + VALUE "FileDescription", "NewOS Bonjour driver." + VALUE "FileVersion", "1.00" + VALUE "InternalName", "Bonjour." + VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." + VALUE "OriginalFilename", "Bonjour.exe" + VALUE "ProductName", "Bonjour." + VALUE "ProductVersion", "1.00" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END diff --git a/Private/Drivers/Bonjour/SampleDriver.c b/Private/Drivers/Bonjour/SampleDriver.c new file mode 100644 index 00000000..8289fcbc --- /dev/null +++ b/Private/Drivers/Bonjour/SampleDriver.c @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include + +int __ImageStart(void) { + kernelPrintStr("SampleDriver: Starting up...\r\n"); + return 0; +} + +int __ImageEnd(void) { + kernelPrintStr("SampleDriver: Shutting down...\r\n"); + return 0; +} diff --git a/Private/Drivers/Bonjour/makefile b/Private/Drivers/Bonjour/makefile new file mode 100644 index 00000000..e1cdba67 --- /dev/null +++ b/Private/Drivers/Bonjour/makefile @@ -0,0 +1,62 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +ifeq ($(shell uname), Windows_NT) +EMU=qemu-system-x86_64w +else +EMU=qemu-system-x86_64 +endif + +IMG=epm.img +IMG_2=epm-slave.img +EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=$(wildcard *.o) $(wildcard HEL/AMD64/*.obj) + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o Bonjour.exe + cp Bonjour.exe ../../Root/Boot/Bonjour.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.s) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) Bonjour.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/SampleDriver/SampleDriver.c b/Private/Drivers/SampleDriver/SampleDriver.c index 04d40516..8289fcbc 100644 --- a/Private/Drivers/SampleDriver/SampleDriver.c +++ b/Private/Drivers/SampleDriver/SampleDriver.c @@ -4,14 +4,15 @@ ------------------------------------------- */ +#include #include int __ImageStart(void) { - kernelPrintStr("SampleDriver: Starting up.\n"); + kernelPrintStr("SampleDriver: Starting up...\r\n"); return 0; } int __ImageEnd(void) { - kernelPrintStr("SampleDriver: Shutting down.\n"); + kernelPrintStr("SampleDriver: Shutting down...\r\n"); return 0; } diff --git a/Private/Drivers/SampleDriver/makefile b/Private/Drivers/SampleDriver/makefile index 19e88f8f..637be18d 100644 --- a/Private/Drivers/SampleDriver/makefile +++ b/Private/Drivers/SampleDriver/makefile @@ -49,7 +49,7 @@ endif .PHONY: compile-amd64 compile-amd64: $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o - $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.s) .PHONY: clean clean: diff --git a/Private/NewKit/Application.hxx b/Private/NewKit/Application.hxx index f19dbd97..15ffd073 100644 --- a/Private/NewKit/Application.hxx +++ b/Private/NewKit/Application.hxx @@ -7,7 +7,7 @@ #pragma once /// -/// @brief Main application object, given by the OS to interact with the OS. +/// @brief Application object, given by the OS to the process. interact with the OS. /// @file Application.hxx /// @author Amlal EL Mahrouss /// @@ -17,14 +17,14 @@ /// \brief Application Interface. /// \author Amlal El Mahrouss -typedef struct Application final { +typedef struct _Application final { /// @brief Releases the object exit the process on main object. - NewOS::Void(*Release)(struct Application* Self, NewOS::Int32 ExitCode); + NewOS::Void(*Release)(struct _Application* Self, NewOS::Int32 ExitCode); /// @brief Invoke a function from the application object. - NewOS::IntPtr(*Invoke)(struct Application* Self, NewOS::Int32 Sel, ...); + NewOS::IntPtr(*Invoke)(struct _Application* Self, NewOS::Int32 Sel, ...); /// @brief Query a new application object from a GUID. /// @note this doesn't query a process, it query a registered object withtin that app. - NewOS::Void(*Query)(struct Application* Self, NewOS::VoidPtr* Dst, NewOS::SizeT SzDst, NewOS::XRN::GUIDSequence GuidOf); + NewOS::Void(*Query)(struct _Application* Self, NewOS::VoidPtr* Dst, NewOS::SizeT SzDst, NewOS::XRN::GUIDSequence GuidOf); } Application, *ApplicationRef; #define app_cast reinterpret_cast diff --git a/Private/Root/Boot/Icons/bonjour-logo.ico b/Private/Root/Boot/Icons/bonjour-logo.ico new file mode 100644 index 00000000..5424b46f Binary files /dev/null and b/Private/Root/Boot/Icons/bonjour-logo.ico differ diff --git a/Private/Root/Boot/Icons/boot-logo.ico b/Private/Root/Boot/Icons/boot-logo.ico index 9be8328f..3a0258b8 100644 Binary files a/Private/Root/Boot/Icons/boot-logo.ico and b/Private/Root/Boot/Icons/boot-logo.ico differ diff --git a/Private/Root/Boot/Icons/driver-logo.ico b/Private/Root/Boot/Icons/driver-logo.ico index 9394ab64..5cf8e397 100644 Binary files a/Private/Root/Boot/Icons/driver-logo.ico and b/Private/Root/Boot/Icons/driver-logo.ico differ diff --git a/Private/Root/Boot/Icons/kernel-logo.ico b/Private/Root/Boot/Icons/kernel-logo.ico index 0512b65e..0866aa2d 100644 Binary files a/Private/Root/Boot/Icons/kernel-logo.ico and b/Private/Root/Boot/Icons/kernel-logo.ico differ diff --git a/Private/Root/Users/Shared/.gitkeep b/Private/Root/Users/Shared/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Private/Root/Users/User.script b/Private/Root/Users/User.script deleted file mode 100644 index 09cecb8b..00000000 --- a/Private/Root/Users/User.script +++ /dev/null @@ -1,3 +0,0 @@ -# User script - -Guest: true; diff --git a/Public/Developer/SystemLib/Sources/App.c b/Public/Developer/SystemLib/Sources/App.c index 9d390795..36e53c7e 100644 --- a/Public/Developer/SystemLib/Sources/App.c +++ b/Public/Developer/SystemLib/Sources/App.c @@ -11,7 +11,7 @@ ApplicationRef kSharedApplication = NullPtr; /// @brief Gets the app arguments count. /// @param void no arguments. -/// @return +/// @return The number of arguments given to the application. CA_EXTERN_C SizeType RtGetAppArgumentsCount(VoidType) { CA_MUST_PASS(kSharedApplication); @@ -23,7 +23,7 @@ CA_EXTERN_C SizeType RtGetAppArgumentsCount(VoidType) { /// @return CA_EXTERN_C CharacterTypeUTF8** RtGetAppArgumentsPtr(VoidType) { CA_MUST_PASS(kSharedApplication); - + return (CharacterTypeUTF8**)kSharedApplication->Invoke(kSharedApplication, kCallGetArgsPtr); } -- cgit v1.2.3 From bc4f32c10a34c6bded98f378004f7435deede43b Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 21 Apr 2024 07:55:20 +0200 Subject: MHR-5: Fix: not using buggy wildcard anymore. Signed-off-by: Amlal El Mahrouss --- Private/Drivers/Bonjour/Bonjour.c | 18 ++++++++++++++++++ Private/Drivers/Bonjour/SampleDriver.c | 18 ------------------ Private/Drivers/Bonjour/makefile | 2 +- Private/Drivers/SampleDriver/makefile | 2 +- Private/NewBoot/Source/makefile | 5 ++--- Private/makefile | 3 +-- Public/Developer/DriverLib/.gitkeep | 0 Public/Developer/SystemLib/Sources/File.c | 3 ++- 8 files changed, 25 insertions(+), 26 deletions(-) create mode 100644 Private/Drivers/Bonjour/Bonjour.c delete mode 100644 Private/Drivers/Bonjour/SampleDriver.c delete mode 100644 Public/Developer/DriverLib/.gitkeep diff --git a/Private/Drivers/Bonjour/Bonjour.c b/Private/Drivers/Bonjour/Bonjour.c new file mode 100644 index 00000000..dba649c9 --- /dev/null +++ b/Private/Drivers/Bonjour/Bonjour.c @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include + +int __ImageStart(void) { + kernelPrintStr("Bonjour: Starting up zeroconf...\r\n"); + return 0; +} + +int __ImageEnd(void) { + kernelPrintStr("Bonjour: Shutting down zeroconf...\r\n"); + return 0; +} diff --git a/Private/Drivers/Bonjour/SampleDriver.c b/Private/Drivers/Bonjour/SampleDriver.c deleted file mode 100644 index 8289fcbc..00000000 --- a/Private/Drivers/Bonjour/SampleDriver.c +++ /dev/null @@ -1,18 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include - -int __ImageStart(void) { - kernelPrintStr("SampleDriver: Starting up...\r\n"); - return 0; -} - -int __ImageEnd(void) { - kernelPrintStr("SampleDriver: Shutting down...\r\n"); - return 0; -} diff --git a/Private/Drivers/Bonjour/makefile b/Private/Drivers/Bonjour/makefile index e1cdba67..b98d9ff9 100644 --- a/Private/Drivers/Bonjour/makefile +++ b/Private/Drivers/Bonjour/makefile @@ -24,7 +24,7 @@ EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide - LD_FLAGS=-e __ImageStart --subsystem=17 -OBJ=$(wildcard *.o) $(wildcard HEL/AMD64/*.obj) +OBJ=*.o REM=rm diff --git a/Private/Drivers/SampleDriver/makefile b/Private/Drivers/SampleDriver/makefile index 637be18d..2433aa51 100644 --- a/Private/Drivers/SampleDriver/makefile +++ b/Private/Drivers/SampleDriver/makefile @@ -24,7 +24,7 @@ EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide - LD_FLAGS=-e __ImageStart --subsystem=17 -OBJ=$(wildcard *.o) $(wildcard HEL/AMD64/*.obj) +OBJ=*.o REM=rm diff --git a/Private/NewBoot/Source/makefile b/Private/NewBoot/Source/makefile index 03bb9248..25eb04c0 100644 --- a/Private/NewBoot/Source/makefile +++ b/Private/NewBoot/Source/makefile @@ -24,8 +24,7 @@ EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide - LD_FLAGS=-e Main --subsystem=10 -OBJ=$(wildcard *.o) $(wildcard HEL/AMD64/*.obj) - +OBJ=*.o REM=rm REM_FLAG=-f @@ -68,7 +67,7 @@ download-edk: .PHONY: clean clean: - $(REM) $(REM_FLAG) $(OBJ) NewBoot.exe NewKernel.exe OVMF.fd + $(REM) $(REM_FLAG) $(OBJ) NewBoot.exe NewKernel.exe OVMF.fd $(IMG) $(IMG_2) .PHONY: help help: diff --git a/Private/makefile b/Private/makefile index b166990e..4d871c82 100644 --- a/Private/makefile +++ b/Private/makefile @@ -39,7 +39,7 @@ SCRIPT = --script=Linker/Platforms/PC.lds .PHONY: error error: - @echo "Use a specific target." + @echo "=> Use a specific target." MOVEALL=./MoveAll.sh WINDRES=x86_64-w64-mingw32-windres @@ -58,7 +58,6 @@ OBJCOPY=x86_64-w64-mingw32-objcopy .PHONY: link-amd64-epm link-amd64-epm: - $(SLEEP) $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL) $(COPY) $(KERNEL) Root/Boot diff --git a/Public/Developer/DriverLib/.gitkeep b/Public/Developer/DriverLib/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Public/Developer/SystemLib/Sources/File.c b/Public/Developer/SystemLib/Sources/File.c index 39a4aff0..6e4a7440 100644 --- a/Public/Developer/SystemLib/Sources/File.c +++ b/Public/Developer/SystemLib/Sources/File.c @@ -25,7 +25,8 @@ CA_EXTERN_C FSRef FsOpenFile(const CharacterTypeUTF8* path, CA_MUST_PASS(path && FsIsValidPath(path) == Yes); CA_MUST_PASS(rest); - return kSharedApplication->Invoke(kSharedApplication, kCallOpenFile, path, rest); + return kSharedApplication->Invoke(kSharedApplication, kCallOpenFile, path, + rest); } /// @brief Closes the file and flushes it to the said file. -- cgit v1.2.3 From ebadabf4b6ab4a08c47b098affa0de6d681b5982 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 21 Apr 2024 08:53:36 +0200 Subject: MHR-8: IMP: Implement an allocator for catalog and forks. - Implement ke_find_free_catalog and ke_find_free_fork. Signed-off-by: Amlal El Mahrouss --- Private/Drivers/Bonjour/DriverRsrc.rsrc | 2 +- Private/Drivers/SampleDriver/DriverRsrc.rsrc | 2 +- .../HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp | 32 ++-- .../HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp | 4 +- Private/HALKit/AMD64/HalKernelMain.cxx | 9 - Private/HALKit/AMD64/Storage/ATA-PIO.cxx | 16 +- Private/KernelKit/DriveManager.hxx | 2 +- Private/KernelKit/HError.hpp | 1 + Private/KernelKit/KernelHeap.hpp | 4 +- Private/KernelRsrc.rsrc | 2 +- Private/NewBoot/BootKit/BootKit.hxx | 5 +- Private/NewBoot/BootKit/Rsrc/Driver.rsrc | 210 ++++++++++++++------- Private/NewBoot/Source/BootloaderRsrc.rsrc | 2 +- Private/NewBoot/Source/HEL/AMD64/BootATA.cxx | 14 +- .../NewBoot/Source/HEL/AMD64/BootFileReader.cxx | 10 +- Private/NewBoot/Source/HEL/AMD64/BootMain.cxx | 38 ++-- Private/Source/CxxAbi.cxx | 2 +- Private/Source/FS/NewFS.cxx | 148 +++++++++++++-- Private/Source/IndexableProperty.cxx | 2 +- Private/Source/KernelHeap.cxx | 4 +- Private/Source/ThreadLocalStorage.cxx | 6 +- 21 files changed, 353 insertions(+), 162 deletions(-) diff --git a/Private/Drivers/Bonjour/DriverRsrc.rsrc b/Private/Drivers/Bonjour/DriverRsrc.rsrc index 62347b80..ed24e10e 100644 --- a/Private/Drivers/Bonjour/DriverRsrc.rsrc +++ b/Private/Drivers/Bonjour/DriverRsrc.rsrc @@ -9,7 +9,7 @@ BEGIN BLOCK "080904E4" BEGIN VALUE "CompanyName", "Mahrouss-Logic" - VALUE "FileDescription", "NewOS Bonjour driver." + VALUE "FileDescription", "New OS Bonjour driver." VALUE "FileVersion", "1.00" VALUE "InternalName", "Bonjour." VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." diff --git a/Private/Drivers/SampleDriver/DriverRsrc.rsrc b/Private/Drivers/SampleDriver/DriverRsrc.rsrc index f37e2796..5129b077 100644 --- a/Private/Drivers/SampleDriver/DriverRsrc.rsrc +++ b/Private/Drivers/SampleDriver/DriverRsrc.rsrc @@ -9,7 +9,7 @@ BEGIN BLOCK "080904E4" BEGIN VALUE "CompanyName", "Mahrouss-Logic" - VALUE "FileDescription", "NewOS driver." + VALUE "FileDescription", "New OS driver." VALUE "FileVersion", "1.00" VALUE "InternalName", "SampleDriver" VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." diff --git a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp index aa9c0e47..99a66532 100644 --- a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp +++ b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp @@ -9,86 +9,86 @@ #include /// @brief Handle GPF fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_gpf(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << "NewOS: Stack Pointer: " + NewOS::kcout << "New OS: Stack Pointer: " << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: General Protection Fault, caused by " + << "New OS: General Protection Fault, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle the scheduler interrupt, raised from the HPET timer. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_scheduler(NewOS::UIntPtr rsp) { NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Will be scheduled back later " + << "New OS: Will be scheduled back later " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName() << NewOS::end_line(); /// schedule another process. if (!NewOS::ProcessHelper::StartScheduling()) { - NewOS::kcout << "NewOS: Continue schedule this process...\r\n"; + NewOS::kcout << "New OS: Continue schedule this process...\r\n"; } } /// @brief Handle page fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_pf(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Segmentation Fault, caused by " + << "New OS: Segmentation Fault, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle math fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_math(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Math error, caused by " + << "New OS: Math error, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle any generic fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_generic(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); NewOS::kcout << NewOS::StringBuilder::FromInt("sp{%}", rsp); NewOS::kcout - << "NewOS: Execution error, caused by " + << "New OS: Execution error, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle #UD fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_ud(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << "NewOS: Stack Pointer: " + NewOS::kcout << "New OS: Stack Pointer: " << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Invalid interrupt, caused by " + << "New OS: Invalid interrupt, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); -} \ No newline at end of file +} diff --git a/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp b/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp index 98d64215..0761114d 100644 --- a/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp +++ b/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp @@ -92,14 +92,14 @@ STATIC MadtType* kApicInfoBlock = nullptr; /////////////////////////////////////////////////////////////////////////////////////// void hal_system_get_cores(voidPtr rsdPtr) { - kcout << "NewOS: Constructing ACPIFactoryInterface...\r\n"; + kcout << "New OS: Constructing ACPIFactoryInterface...\r\n"; auto acpi = ACPIFactoryInterface(rsdPtr); kApicMadt = acpi.Find(kApicSignature).Leak().Leak(); MUST_PASS(kApicMadt); // MADT must exist. - kcout << "NewOS: Successfuly fetched the MADT!\r\n"; + kcout << "New OS: Successfuly fetched the MADT!\r\n"; kApicInfoBlock = (MadtType*)kApicMadt; } diff --git a/Private/HALKit/AMD64/HalKernelMain.cxx b/Private/HALKit/AMD64/HalKernelMain.cxx index 7d8c516d..13d040b5 100644 --- a/Private/HALKit/AMD64/HalKernelMain.cxx +++ b/Private/HALKit/AMD64/HalKernelMain.cxx @@ -74,15 +74,6 @@ EXTERN_C void hal_init_platform( /// END POST - ToolboxInitRsrc(); - - ToolboxDrawRsrc( - MahroussLogic, MAHROUSSLOGIC_HEIGHT, MAHROUSSLOGIC_WIDTH, - ((kHandoverHeader->f_GOP.f_Width - MAHROUSSLOGIC_WIDTH) / 2), - ((kHandoverHeader->f_GOP.f_Height - MAHROUSSLOGIC_HEIGHT) / 2)); - - ToolboxClearRsrc(); - AppMain(); NewOS::ke_stop(RUNTIME_CHECK_BOOTSTRAP); diff --git a/Private/HALKit/AMD64/Storage/ATA-PIO.cxx b/Private/HALKit/AMD64/Storage/ATA-PIO.cxx index ebced11c..3cbba6f7 100644 --- a/Private/HALKit/AMD64/Storage/ATA-PIO.cxx +++ b/Private/HALKit/AMD64/Storage/ATA-PIO.cxx @@ -72,7 +72,7 @@ ATAInit_Retry: auto statRdy = In8(IO + ATA_REG_STATUS); if (statRdy & ATA_SR_ERR) { - kcout << "NewOS: ATA: Select error, not an IDE based hard-drive.\r\n"; + kcout << "New OS: ATA: Select error, not an IDE based hard-drive.\r\n"; return false; } @@ -107,21 +107,21 @@ ATAInit_Retry: /* differentiate ATA, ATAPI, SATA and SATAPI */ if (cl == 0x14 && ch == 0xEB) { - kcout << "NewOS: PATAPI drive detected.\r\n"; + kcout << "New OS: PATAPI drive detected.\r\n"; kATADeviceType = kATADevicePATA_PI; } if (cl == 0x69 && ch == 0x96) { - kcout << "NewOS: SATAPI drive detected.\r\n"; + kcout << "New OS: SATAPI drive detected.\r\n"; kATADeviceType = kATADeviceSATA_PI; } if (cl == 0x0 && ch == 0x0) { - kcout << "NewOS: PATA drive detected.\r\n"; + kcout << "New OS: PATA drive detected.\r\n"; kATADeviceType = kATADevicePATA; } if (cl == 0x3c && ch == 0xc3) { - kcout << "NewOS: SATA drive detected.\r\n"; + kcout << "New OS: SATA drive detected.\r\n"; kATADeviceType = kATADeviceSATA; } @@ -148,7 +148,7 @@ Void drv_std_read(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) { WideChar chr = In16(IO + ATA_REG_DATA); - + Buf[IndexOff] = chr; } } @@ -171,11 +171,11 @@ Void drv_std_write(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) { Out16(IO + ATA_REG_DATA, Buf[IndexOff]); - + } } /// @check is ATA detected? Boolean drv_std_detected(Void) { return kATADetected; } -#endif /* ifdef __ATA_PIO__ */ \ No newline at end of file +#endif /* ifdef __ATA_PIO__ */ diff --git a/Private/KernelKit/DriveManager.hxx b/Private/KernelKit/DriveManager.hxx index e8028ddd..c3d7c484 100644 --- a/Private/KernelKit/DriveManager.hxx +++ b/Private/KernelKit/DriveManager.hxx @@ -92,7 +92,7 @@ class MountpointInterface final { return &mD; default: { DbgLastError() = kErrorNoSuchDisk; - kcout << "NewOS: No such disk.\n"; + kcout << "New OS: No such disk.\n"; break; } diff --git a/Private/KernelKit/HError.hpp b/Private/KernelKit/HError.hpp index a3ea5d61..b82f7c6b 100644 --- a/Private/KernelKit/HError.hpp +++ b/Private/KernelKit/HError.hpp @@ -35,6 +35,7 @@ inline constexpr HError kErrorOutOfTeamSlot = 51; inline constexpr HError kErrorHeapNotPresent = 52; inline constexpr HError kErrorNoEntrypoint = 53; inline constexpr HError kErrorDiskIsCorrupted = 54; +inline constexpr HError kErrorDisk = 55; inline constexpr HError kErrorUnimplemented = 0; Boolean ke_bug_check(void) noexcept; diff --git a/Private/KernelKit/KernelHeap.hpp b/Private/KernelKit/KernelHeap.hpp index 5358236e..471dcb54 100644 --- a/Private/KernelKit/KernelHeap.hpp +++ b/Private/KernelKit/KernelHeap.hpp @@ -13,7 +13,7 @@ #include namespace NewOS { - + /// @brief Declare pointer as free. /// @param heapPtr the pointer. /// @return @@ -31,7 +31,7 @@ Boolean ke_is_valid_heap(VoidPtr ptr); /// @return the pointer voidPtr ke_new_ke_heap(SizeT sz, const bool rw, const bool user); -/// @brief Protect the heap pointer with a CRC32. +/// @brief Protect the heap with a CRC value. /// @param heapPtr HIB pointer. /// @return if it valid: point has crc now., otherwise fail. Boolean ke_protect_ke_heap(VoidPtr heapPtr); diff --git a/Private/KernelRsrc.rsrc b/Private/KernelRsrc.rsrc index 6eacce84..1fab6304 100644 --- a/Private/KernelRsrc.rsrc +++ b/Private/KernelRsrc.rsrc @@ -11,7 +11,7 @@ BEGIN BLOCK "080904E4" BEGIN VALUE "CompanyName", "Mahrouss-Logic" - VALUE "FileDescription", "NewOS multiplatform kernel." + VALUE "FileDescription", "New OS multiplatform kernel." VALUE "FileVersion", KERNEL_VERSION VALUE "InternalName", "NewKernel" VALUE "LegalCopyright", "Mahrouss-Logic" diff --git a/Private/NewBoot/BootKit/BootKit.hxx b/Private/NewBoot/BootKit/BootKit.hxx index da178624..3793e481 100644 --- a/Private/NewBoot/BootKit/BootKit.hxx +++ b/Private/NewBoot/BootKit/BootKit.hxx @@ -33,15 +33,14 @@ class BVersionString; #include #ifdef __EFI_x86_64__ -#define kBootVirtualAddress (0xffffff80000000) +///! The Boot page provided to NewKernel. +#define kBootVirtualAddress (0xfffffff80000000) #include #endif // ifdef __EFI_x86_64__ #include #include -#define kMaxReadSize (320) - using namespace NewOS; typedef Char *PEFImagePtr; diff --git a/Private/NewBoot/BootKit/Rsrc/Driver.rsrc b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc index c9fdc812..931702e9 100644 --- a/Private/NewBoot/BootKit/Rsrc/Driver.rsrc +++ b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc @@ -1,70 +1,144 @@ -#define DRIVER_LOGO_HEIGHT 64 -#define DRIVER_LOGO_WIDTH 64 +#define DRIVER_HEIGHT 138 +#define DRIVER_WIDTH 154 -// array size is 12288 -static const unsigned int driver_logo[] = { - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x242424, 0x3b3b3b, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x404040, 0x3e3e3e, 0x393939, 0x333333, 0x202020, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x3b3b3b, 0x999999, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xbfbfbf, 0xb9b9b9, 0xacacac, 0x848484, 0x333333, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xfbfbfb, 0xf2f2f2, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xf0f0f0, 0xf4f4f4, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf4f4f4, 0xf0f0f0, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xf0f0f0, 0xf4f4f4, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf4f4f4, 0xf0f0f0, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xeeeeee, 0xf0f0f0, 0xf4f4f4, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf6f6f6, 0xf4f4f4, 0xf0f0f0, 0xeeeeee, 0xeeeeee, 0xe4e4e4, 0xd1d1d1, 0x969696, 0x323232, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf2f2f2, 0xd9d9d9, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xd2d2d2, 0xdfdfdf, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xdfdfdf, 0xd2d2d2, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xd2d2d2, 0xdfdfdf, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xdfdfdf, 0xd2d2d2, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xcccccc, 0xd2d2d2, 0xdfdfdf, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xe5e5e5, 0xdfdfdf, 0xd2d2d2, 0xcccccc, 0xcccccc, 0xc0c0c0, 0xa9a9a9, 0x767676, 0x272727, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf1f1f1, 0xd6d6d6, 0xcbcbcb, 0xd1d1d1, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xe7e7e7, 0xb6b6b6, 0xa7a7a7, 0xbababa, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xd9d9d9, 0x8c8c8c, 0x787878, 0x9c9c9c, 0xb1b1b1, 0xb8b8b8, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xc8c8c8, 0x595959, 0x3f3f3f, 0x787878, 0x9e9e9e, 0xb1b1b1, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x303030, 0x8f8f8f, 0x999999, 0x3b3b3b, 0x202020, 0x525252, 0x808080, 0xb2b2b2, 0xcacaca, 0xc6c6c6, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x242424, 0x3b3b3b, 0x3b3b3b, 0x242424, 0x000000, - 0x000000, 0x101010, 0x303030, 0x3b3b3b, 0x242424, 0x141414, 0x202020, 0x555555, 0xbbbbbb, 0xe8e8e8, 0xdbdbdb, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x3b3b3b, 0x999999, 0x999999, 0x3b3b3b, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x101010, 0x303030, 0x686868, 0xb9b9b9, 0xa9a9a9, 0x383838, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x303030, 0x8f8f8f, 0xb9b9b9, 0xacacac, 0x7c7c7c, 0x292929, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb4b4b4, 0xa5a5a5, 0x848484, 0x515151, 0x676767, 0xc7c7c7, 0xdbdbdb, 0xa4a4a4, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbebebe, 0xc5c5c5, 0xbfbfbf, 0xaeaeae, 0xb6b6b6, 0xd6d6d6, 0xcecece, 0x9f9f9f, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb8b8b8, 0xb1b1b1, 0xbababa, 0xd1d1d1, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb1b1b1, 0x9e9e9e, 0xa7a7a7, 0xcbcbcb, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb8b8b8, 0xb1b1b1, 0x9c9c9c, 0x787878, 0x7e7e7e, 0xafafaf, 0xb8b8b8, 0x989898, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xb1b1b1, 0x9e9e9e, 0x787878, 0x3f3f3f, 0x414141, 0x7e7e7e, 0x989898, 0x8d8d8d, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x1a1a1a, 0x4d4d4d, 0x6f6f6f, 0x808080, 0x666666, 0x222222, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x404040, 0xbfbfbf, 0xf6f6f6, 0xe5e5e5, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x090909, 0x1a1a1a, 0x3c3c3c, 0x6f6f6f, 0x666666, 0x222222, 0x000000, - 0x000000, 0x101010, 0x303030, 0x3b3b3b, 0x242424, 0x242424, 0x3b3b3b, 0x707070, 0xcfcfcf, 0xf4f4f4, 0xdfdfdf, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x202020, 0x525252, 0x525252, 0x202020, 0x000000, - 0x000000, 0x303030, 0x8f8f8f, 0x999999, 0x3b3b3b, 0x3b3b3b, 0x999999, 0xcfcfcf, 0xefefef, 0xf0f0f0, 0xd2d2d2, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x141414, 0x202020, 0x202020, 0x141414, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xcfcfcf, 0x707070, 0x707070, 0xcfcfcf, 0xfdfdfd, 0xf9f9f9, 0xe8e8e8, 0xcacaca, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xefefef, 0xcfcfcf, 0xcfcfcf, 0xefefef, 0xf9f9f9, 0xececec, 0xdbdbdb, 0xc6c6c6, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xfdfdfd, 0xf9f9f9, 0xf4f4f4, 0xf0f0f0, 0xe8e8e8, 0xdbdbdb, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf9f9f9, 0xececec, 0xdfdfdf, 0xd2d2d2, 0xcacaca, 0xc6c6c6, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xc8c8c8, 0x9d9d9d, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x101010, 0x575757, 0xcbcbcb, 0xcbcbcb, 0xcacaca, 0xcfcfcf, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x292929, 0x8e8e8e, 0xcccccc, 0xcccccc, 0xcdcdcd, 0xcacaca, 0x000000, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x313131, 0x939393, 0xc6c6c6, 0xcacaca, 0xcccccc, 0xcbcbcb, 0xcbcbcb, - 0x000000, 0x404040, 0xbfbfbf, 0xeeeeee, 0xcccccc, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xaeaeae, 0x959595, 0x666666, 0x222222, 0x2d2d2d, 0x868686, 0xb9b9b9, 0xc6c6c6, 0xcccccc, 0xcccccc, 0xcccccc, - 0x000000, 0x404040, 0xbfbfbf, 0xf0f0f0, 0xd2d2d2, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xcacaca, 0xd7d7d7, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xdbdbdb, 0xd7d7d7, 0xcecece, 0xc1c1c1, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbdbdbd, 0xc1c1c1, 0xb5b5b5, 0x979797, 0x666666, 0x222222, 0x282828, 0x797979, 0xaaaaaa, 0xbbbbbb, 0xc6c6c6, 0xcacaca, 0xcccccc, - 0x000000, 0x404040, 0xbfbfbf, 0xf4f4f4, 0xdfdfdf, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xd7d7d7, 0xdbdbdb, 0xdddddd, 0xdddddd, 0xdddddd, 0xdddddd, 0xd7d7d7, 0xcacaca, 0xc1c1c1, 0xbdbdbd, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xbbbbbb, 0xc1c1c1, 0xcecece, 0xc1c1c1, 0x9b9b9b, 0x666666, 0x222222, 0x242424, 0x6c6c6c, 0x999999, 0xaaaaaa, 0xb9b9b9, 0xc6c6c6, 0xcccccc, - 0x000000, 0x3e3e3e, 0xb9b9b9, 0xebebeb, 0xd3d3d3, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc1c1c1, 0xb5b5b5, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xb5b5b5, 0xc1c1c1, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc1c1c1, 0xb5b5b5, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xb5b5b5, 0xc1c1c1, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc8c8c8, 0xc1c1c1, 0xb5b5b5, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xaeaeae, 0xb5b5b5, 0xc1c1c1, 0xb8b8b8, 0x989898, 0x666666, 0x222222, 0x222222, 0x666666, 0x939393, 0xa8a8a8, 0xb8b8b8, 0xc4c4c4, 0xcccccc, - 0x000000, 0x393939, 0xacacac, 0xd3d3d3, 0xafafaf, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9b9b9b, 0x979797, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x979797, 0x9b9b9b, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9b9b9b, 0x979797, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x979797, 0x9b9b9b, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9d9d9d, 0x9b9b9b, 0x979797, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x959595, 0x979797, 0x9b9b9b, 0x989898, 0x8d8d8d, 0x666666, 0x222222, 0x222222, 0x666666, 0x979797, 0xb5b5b5, 0xc4c4c4, 0xc6c6c6, 0xcbcbcb, - 0x000000, 0x333333, 0x848484, 0x969696, 0x767676, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x666666, 0x555555, 0x333333, 0x3c3c3c, 0x6f6f6f, 0x959595, 0xb8b8b8, 0xcdcdcd, 0xcacaca, 0x000000, - 0x000000, 0x202020, 0x333333, 0x323232, 0x272727, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x222222, 0x333333, 0x555555, 0x6f6f6f, 0x808080, 0x8e8e8e, 0xa4a4a4, 0xcacaca, 0xcfcfcf, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x222222, 0x666666, 0x888888, 0x888888, 0x888888, 0x878787, 0x000000, 0x000000, 0x000000 +// array size is 63756 +static const unsigned int Driver[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 }; diff --git a/Private/NewBoot/Source/BootloaderRsrc.rsrc b/Private/NewBoot/Source/BootloaderRsrc.rsrc index 424d4575..e8d89e9a 100644 --- a/Private/NewBoot/Source/BootloaderRsrc.rsrc +++ b/Private/NewBoot/Source/BootloaderRsrc.rsrc @@ -11,7 +11,7 @@ BEGIN BLOCK "080904E4" BEGIN VALUE "CompanyName", "Mahrouss-Logic" - VALUE "FileDescription", "NewOS multi-platform bootloader." + VALUE "FileDescription", "New OS multi-platform bootloader." VALUE "FileVersion", BOOTLOADER_VERSION VALUE "InternalName", "NewBoot" VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." diff --git a/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx b/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx index 2a2852fb..4e41ba2e 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx @@ -72,7 +72,7 @@ ATAInit_Retry: if (statRdy & ATA_SR_ERR) { writer.Write( - L"NewOS: ATA: Select error, not an IDE based hard-drive.\r\n"); + L"New Boot: ATA: Select error, not an IDE based hard-drive.\r\n"); return false; } @@ -108,21 +108,21 @@ ATAInit_Retry: /* differentiate ATA, ATAPI, SATA and SATAPI */ if (cl == 0x14 && ch == 0xEB) { - writer.Write(L"NewOS: PATAPI drive detected.\r\n"); + writer.Write(L"New Boot: PATAPI drive detected.\r\n"); kATADeviceType = kATADevicePATA_PI; } if (cl == 0x69 && ch == 0x96) { - writer.Write(L"NewOS: SATAPI drive detected.\r\n"); + writer.Write(L"New Boot: SATAPI drive detected.\r\n"); kATADeviceType = kATADeviceSATA_PI; } if (cl == 0x0 && ch == 0x0) { - writer.Write(L"NewOS: PATA drive detected.\r\n"); + writer.Write(L"New Boot: PATA drive detected.\r\n"); kATADeviceType = kATADevicePATA; } if (cl == 0x3c && ch == 0xc3) { - writer.Write(L"NewOS: SATA drive detected.\r\n"); + writer.Write(L"New Boot: SATA drive detected.\r\n"); kATADeviceType = kATADeviceSATA; } @@ -159,7 +159,7 @@ Void boot_ata_read(UInt64 Lba, UInt16 IO, UInt8 Master, CharacterTypeUTF8* Buf, ++IndexOff; while ((In8(ATA_COMMAND(IO))) & ATA_SR_BSY) boot_ata_wait_io(IO); - + byte = In16(IO + ATA_REG_DATA); Buf[IndexOff] = byte; } @@ -213,7 +213,7 @@ BootDeviceATA::BootDeviceATA() noexcept { BTextWriter writer; - writer.Write(L"NewOS: Drive is OnLine.\r\n"); + writer.Write(L"New Boot: Drive is OnLine.\r\n"); } } /** diff --git a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx index 6e279498..0046698c 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx @@ -3,7 +3,7 @@ Copyright Mahrouss Logic File: FileReader.cxx - Purpose: NewBoot FileReader, + Purpose: New Boot FileReader, Read complete file and store it in a buffer. ------------------------------------------- */ @@ -47,12 +47,12 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiGUID guidImg = EfiGUID(EFI_LOADED_IMAGE_PROTOCOL_GUID); if (BS->HandleProtocol(ImageHandle, &guidImg, (void**)&img) != kEfiOk) { - mWriter.Write(L"NewBoot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; } if (BS->HandleProtocol(img->DeviceHandle, &guidEfp, (void**)&efp) != kEfiOk) { - mWriter.Write(L"NewBoot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -60,7 +60,7 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, /// Start doing disk I/O if (efp->OpenVolume(efp, &rootFs) != kEfiOk) { - mWriter.Write(L"NewBoot: Fetch-Protocol: No-Such-Volume").Write(L"\r\n"); + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Volume").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -69,7 +69,7 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, if (rootFs->Open(rootFs, &kernelFile, mPath, kEFIFileRead, kEFIReadOnly) != kEfiOk) { - mWriter.Write(L"NewBoot: Fetch-Protocol: No-Such-Path: ") + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Path: ") .Write(mPath) .Write(L"\r\n"); this->mErrorCode = kNotSupported; diff --git a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx index 88d01dfc..e0d5d8c9 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx @@ -11,11 +11,9 @@ #include #include -#define kMaxBufSize 256 - /** Graphics related. */ -STATIC EfiGraphicsOutputProtocol *kGop = nullptr; +STATIC EfiGraphicsOutputProtocol* kGop = nullptr; STATIC UInt16 kStride = 0U; STATIC EfiGUID kGopGuid; @@ -23,13 +21,13 @@ STATIC EfiGUID kGopGuid; @brief Finds and stores the GOP. */ -STATIC Void InitGOP() noexcept { +STATIC Void CheckAndFindFramebuffer() noexcept { kGopGuid = EfiGUID(EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID); kGop = nullptr; - extern EfiBootServices *BS; + extern EfiBootServices* BS; - BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr *)&kGop); + BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr*)&kGop); kStride = 4; } @@ -45,14 +43,16 @@ STATIC Bool CheckBootDevice(BootDeviceATA& ataDev) { /// @param SystemTable The system table of it. /// @return EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, - EfiSystemTable* SystemTable) { - InitEFI(SystemTable); ///! Init the EFI library. - InitGOP(); ///! Init the GOP. + EfiSystemTable* SystemTable) { + InitEFI(SystemTable); ///! Init the EFI library. + CheckAndFindFramebuffer(); ///! Init the GOP. BTextWriter writer; + /// Splash screen stuff - writer.Write(L"Mahrouss-Logic (R) NewBoot: ").Write(BVersionString::Shared()); + writer.Write(L"Mahrouss-Logic (R) New Boot: ") + .Write(BVersionString::Shared()); writer.Write(L"\r\nNewBoot: Firmware Vendor: ") .Write(SystemTable->FirmwareVendor) @@ -69,7 +69,7 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, if (BS->AllocatePool(EfiLoaderData, sizeof(UInt32), (VoidPtr*)&SizePtr) != kEfiOk) { - EFI::RaiseHardError(L"Bad-Alloc", L"NewBoot ran out of memory!"); + EFI::RaiseHardError(L"Bad-Alloc", L"New Boot ran out of memory!"); } /**** @@ -82,7 +82,7 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, if (BS->AllocatePool(EfiLoaderData, sizeof(EfiMemoryDescriptor), (VoidPtr*)&Descriptor) != kEfiOk) { - EFI::RaiseHardError(L"Bad-Alloc", L"NewBoot ran out of memory!"); + EFI::RaiseHardError(L"Bad-Alloc", L"New Boot ran out of memory!"); } HEL::HandoverInformationHeader* handoverHdrPtr = nullptr; @@ -115,6 +115,20 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, handoverHdrPtr->f_GOP.f_PixelFormat = kGop->Mode->Info->PixelFormat; handoverHdrPtr->f_GOP.f_Size = kGop->Mode->FrameBufferSize; + ///! Finally draw bootloader screen. + + auto kHandoverHeader = handoverHdrPtr; + + ToolboxInitRsrc(); + + ToolboxDrawZone(RGB(20, 20, 20), handoverHdrPtr->f_GOP.f_Height, handoverHdrPtr->f_GOP.f_Width, 0, 0); + + ToolboxClearRsrc(); + + ToolboxDrawRsrc(Driver, DRIVER_HEIGHT, DRIVER_WIDTH, (handoverHdrPtr->f_GOP.f_Width - DRIVER_HEIGHT) / 2, (handoverHdrPtr->f_GOP.f_Height - DRIVER_HEIGHT) / 2); + + ToolboxClearRsrc(); + BS->AllocatePool(EfiLoaderData, sizeof(HEL::HandoverInformationHeader), (VoidPtr*)&handoverHdrPtr); diff --git a/Private/Source/CxxAbi.cxx b/Private/Source/CxxAbi.cxx index d79d688c..452c4383 100644 --- a/Private/Source/CxxAbi.cxx +++ b/Private/Source/CxxAbi.cxx @@ -13,7 +13,7 @@ atexit_func_entry_t __atexit_funcs[kDSOMaxObjects]; uarch_t __atexit_func_count; extern "C" void __cxa_pure_virtual() { - NewOS::kcout << "NewOS: C++ placeholder method.\n"; + NewOS::kcout << "New OS: C++ placeholder method.\n"; } extern "C" void ___chkstk_ms() { diff --git a/Private/Source/FS/NewFS.cxx b/Private/Source/FS/NewFS.cxx index 216db7c6..7eb79d10 100644 --- a/Private/Source/FS/NewFS.cxx +++ b/Private/Source/FS/NewFS.cxx @@ -7,13 +7,16 @@ #ifdef __FSKIT_NEWFS__ #include +#include +#include #include using namespace NewOS; -STATIC Lba ke_find_free_fork(SizeT sz); -STATIC Lba ke_find_free_catalog(SizeT sz); -STATIC Lba ke_find_free_data(SizeT sz); +/// forward decl. + +STATIC Lba ke_find_free_fork(SizeT sz, Int32 drv, NewCatalog* catalog); +STATIC Lba ke_find_free_catalog(SizeT kind, Int32 drv); STATIC MountpointInterface sMountpointInterface; @@ -26,7 +29,8 @@ _Output NewFork* NewFSParser::CreateFork(_Input NewCatalog* catalog, if (catalog && theFork.Name[0] != 0 && theFork.DataSize > 0) { Lba whereFork = 0; - theFork.DataOffset = ke_find_free_fork(theFork.DataSize); + theFork.DataOffset = + ke_find_free_fork(theFork.DataSize, this->fDriveIndex, catalog); theFork.Flags |= kNewFSFlagCreated; if (catalog->FirstFork == 0) { @@ -172,8 +176,10 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive) { /// disk isnt faulty and data has been fetched. if (drive->fPacket.fPacketGood) { NewPartitionBlock* partBlock = (NewPartitionBlock*)sectorBuf; + + /// check for an empty partition here. if (partBlock->PartitionName[0] == 0 && - rt_string_cmp(partBlock->Ident, kNewFSIdent, kNewFSIdentLen) == 0) { + rt_string_cmp(partBlock->Ident, kNewFSIdent, kNewFSIdentLen)) { /// partition is free and valid. rt_copy_memory((VoidPtr)kNewFSIdent, (VoidPtr)partBlock->Ident, @@ -276,23 +282,129 @@ bool NewFSParser::Seek(_Input _Output NewCatalog* catalog, SizeT off) { /// @return SizeT NewFSParser::Tell(_Input _Output NewCatalog* catalog) { return 0; } -/// @brief -/// @param sz -/// @return -STATIC Lba ke_find_free_fork(SizeT sz) { return 0; } +/// @brief Find a free fork inside the filesystem. +/// @param sz the size of the fork to set. +/// @return the valid lba. +STATIC Lba ke_find_free_fork(SizeT sz, Int32 drv, NewCatalog* catalog) { + auto drive = *sMountpointInterface.GetAddressOf(drv); -/// @brief -/// @param sz -/// @return -STATIC Lba ke_find_free_catalog(SizeT sz) { return 0; } + if (drive) { + /// prepare packet. + bool done = false; + bool error = false; -/// @brief -/// @param sz -/// @return -STATIC Lba ke_find_free_data(SizeT sz) { return 0; } + Lba lba = catalog->LastFork; + + while (!done) { + Char sectorBuf[kNewFSMinimumSectorSz] = {0}; + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = lba; + + drive->fInput(&drive->fPacket); + + if (!drive->fPacket.fPacketGood) { + ///! not a lot of choices, disk has become unreliable. + if (ke_calculate_crc32(sectorBuf, kNewFSMinimumSectorSz) != + drive->fPacket.fPacketCRC32) { + DbgLastError() = kErrorDiskIsCorrupted; + } + + error = true; + break; + } + + NewFork* fork = (NewFork*)sectorBuf; + + if (fork->DataSize == 0 && fork->Name[0] == 0 && + (fork->Flags == kNewFSFlagDeleted || + fork->Flags == kNewFSFlagUnallocated)) { + fork->DataSize = sz; + fork->Flags |= kNewFSFlagCreated; + + drive->fOutput(&drive->fPacket); + + /// here it's either a read-only filesystem or something bad happened.' + if (!drive->fPacket.fPacketGood) { + DbgLastError() = kErrorDiskReadOnly; + + return 0; + } + + return lba; + } + + lba += sizeof(NewFork); + } + + if (error) { + DbgLastError() = kErrorDisk; + return 0; + } + } + + return 0; +} + +/// @brief find a free catalog. +/// @param kind the catalog kind. +/// @return the valid lba. +STATIC Lba ke_find_free_catalog(SizeT kind, Int32 drv) { + auto drive = *sMountpointInterface.GetAddressOf(drv); + + if (drive) { + Char sectorBuf[kNewFSMinimumSectorSz] = {0}; + + /// prepare packet. + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = kNewFSAddressAsLba; + + drive->fInput(&drive->fPacket); + + NewPartitionBlock* partBlock = (NewPartitionBlock*)sectorBuf; + + /// check for a valid partition. + if (partBlock->PartitionName[0] != 0 && + rt_string_cmp(partBlock->Ident, kNewFSIdent, kNewFSIdentLen) == 0) { + auto startLba = partBlock->FreeCatalog; + + if (startLba == 0) { + DbgLastError() = kErrorDiskIsFull; + return 1; + } else { + while (startLba != 0) { + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = startLba; + + drive->fInput(&drive->fPacket); + + NewCatalog* catalog = (NewCatalog*)sectorBuf; + + if (catalog->Flags == kNewFSFlagUnallocated || + catalog->Flags == kNewFSFlagDeleted) { + catalog->Flags |= kNewFSFlagCreated; + catalog->Kind |= kind; + + return startLba; + } + + startLba = catalog->NextSibling; + } + + return 0; + } + } + } + + return 0; +} namespace NewOS::Detail { -Boolean fs_init_newfs(Void) noexcept { return false; } +Boolean fs_init_newfs(Void) noexcept { return true; } } // namespace NewOS::Detail #endif // ifdef __FSKIT_NEWFS__ diff --git a/Private/Source/IndexableProperty.cxx b/Private/Source/IndexableProperty.cxx index c3978fe9..dba56c74 100644 --- a/Private/Source/IndexableProperty.cxx +++ b/Private/Source/IndexableProperty.cxx @@ -34,7 +34,7 @@ Void fs_index_file(const Char* filename, SizeT filenameLen, IndexableProperty& i indexer.AddFlag(kIndexerClaimed); rt_copy_memory((VoidPtr)indexer.LeakProperty().Path, (VoidPtr)filename, filenameLen); - kcout << "NewOS: FSKit: index new file: " << filename << endl; + kcout << "New OS: FSKit: index new file: " << filename << endl; } } } // namespace Indexer diff --git a/Private/Source/KernelHeap.cxx b/Private/Source/KernelHeap.cxx index 72d291a8..3b77ebb6 100644 --- a/Private/Source/KernelHeap.cxx +++ b/Private/Source/KernelHeap.cxx @@ -97,7 +97,7 @@ Int32 ke_delete_ke_heap(VoidPtr heapPtr) { PTEWrapper pageWrapper(false, false, false, (UIntPtr)virtualAddress); Ref pteAddress{ &pageWrapper }; - + kHeapPageManager.Free(pteAddress); --kHeapCount; @@ -126,7 +126,7 @@ Boolean ke_is_valid_heap(VoidPtr heapPtr) { return false; } -/// @brief Protect the heap pointer with a CRC32. +/// @brief Protect the heap with a CRC value. /// @param heapPtr HIB pointer. /// @return if it valid: point has crc now., otherwise fail. Boolean ke_protect_ke_heap(VoidPtr heapPtr) { diff --git a/Private/Source/ThreadLocalStorage.cxx b/Private/Source/ThreadLocalStorage.cxx index d3e31a1c..8d3281e3 100644 --- a/Private/Source/ThreadLocalStorage.cxx +++ b/Private/Source/ThreadLocalStorage.cxx @@ -31,7 +31,7 @@ Boolean tls_check_tib(ThreadInformationBlock* tib) { Encoder encoder; const char* tibAsBytes = encoder.AsBytes(tib); - kcout << "NewOS: Checking for a valid cookie...\r\n"; + kcout << "New OS: Checking for a valid cookie...\r\n"; return tibAsBytes[0] == kCookieMag0 && tibAsBytes[1] == kCookieMag1 && tibAsBytes[2] == kCookieMag2; @@ -46,9 +46,9 @@ EXTERN_C Void tls_check_syscall_impl(NewOS::HAL::StackFramePtr stackPtr) noexcep ThreadInformationBlock* tib = (ThreadInformationBlock*)stackPtr->Gs; if (!tls_check_tib(tib)) { - kcout << "NewOS: Verification failed, Crashing...\r\n"; + kcout << "New OS: Verification failed, Crashing...\r\n"; ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } - kcout << "NewOS: Verification succeeded! Keeping on...\r\n"; + kcout << "New OS: Verification succeeded! Keeping on...\r\n"; } -- cgit v1.2.3 From b4dc4ad11804ae9b2113f61b7055b506cebd5c6d Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 21 Apr 2024 12:25:15 +0200 Subject: MHR-5: Worked on DriverKit to bring C++ support for it, as some drivers may need it. Signed-off-by: Amlal El Mahrouss --- Private/DriverKit/KernelStdCxx.cc | 24 ++++++++++ Private/DriverKit/KernelString.c | 11 +++++ Private/DriverKit/KernelString.h | 3 ++ Private/Drivers/Bonjour/makefile | 10 ---- Private/Drivers/MahroussUpdate/DriverRsrc.rsrc | 25 ++++++++++ Private/Drivers/MahroussUpdate/MahroussUpdate.cc | 24 ++++++++++ Private/Drivers/MahroussUpdate/MahroussUpdate.hxx | 33 ++++++++++++++ Private/Drivers/MahroussUpdate/makefile | 53 ++++++++++++++++++++++ Private/Drivers/SampleDriver/SampleDriver.c | 3 ++ Private/Drivers/SampleDriver/makefile | 10 ---- Private/Root/Boot/Icons/boot-logo.ico | Bin 87830 -> 78998 bytes Private/Root/Boot/Icons/update-logo.ico | Bin 0 -> 87830 bytes 12 files changed, 176 insertions(+), 20 deletions(-) create mode 100644 Private/DriverKit/KernelStdCxx.cc create mode 100644 Private/Drivers/MahroussUpdate/DriverRsrc.rsrc create mode 100644 Private/Drivers/MahroussUpdate/MahroussUpdate.cc create mode 100644 Private/Drivers/MahroussUpdate/MahroussUpdate.hxx create mode 100644 Private/Drivers/MahroussUpdate/makefile create mode 100644 Private/Root/Boot/Icons/update-logo.ico diff --git a/Private/DriverKit/KernelStdCxx.cc b/Private/DriverKit/KernelStdCxx.cc new file mode 100644 index 00000000..79d41a72 --- /dev/null +++ b/Private/DriverKit/KernelStdCxx.cc @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Driver C++ Definitions. + +------------------------------------------- */ + +#include + +void* operator new(size_t sz) { + if (!sz) ++sz; + + auto ptr = kernelCall("NewKernelHeap", 1, sz); + kernelCall("KernelHeapProtect", 1, ptr); + + return ptr; +} + +void operator delete(void* ptr) noexcept { + if (!ptr) return; + + kernelCall("DeleteKernelHeap", 1,ptr); +} diff --git a/Private/DriverKit/KernelString.c b/Private/DriverKit/KernelString.c index 7c129dd4..0bb45b16 100644 --- a/Private/DriverKit/KernelString.c +++ b/Private/DriverKit/KernelString.c @@ -17,3 +17,14 @@ DK_EXTERN size_t kernelStringLength(const char* str) { return index; } + +DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len) { + size_t index = 0; + + while (index != len) { + dst[index] = src[index]; + ++index; + } + + return index; +} diff --git a/Private/DriverKit/KernelString.h b/Private/DriverKit/KernelString.h index d1b8ac93..8e189d26 100644 --- a/Private/DriverKit/KernelString.h +++ b/Private/DriverKit/KernelString.h @@ -10,4 +10,7 @@ #include +/// @brief DriverKit equivalent of POSIX's string.h. + DK_EXTERN size_t kernelStringLength(const char* str); +DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len); diff --git a/Private/Drivers/Bonjour/makefile b/Private/Drivers/Bonjour/makefile index b98d9ff9..46edfd2e 100644 --- a/Private/Drivers/Bonjour/makefile +++ b/Private/Drivers/Bonjour/makefile @@ -12,16 +12,6 @@ ADD_FILE=touch COPY=cp HTTP_GET=wget -ifeq ($(shell uname), Windows_NT) -EMU=qemu-system-x86_64w -else -EMU=qemu-system-x86_64 -endif - -IMG=epm.img -IMG_2=epm-slave.img -EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img - LD_FLAGS=-e __ImageStart --subsystem=17 OBJ=*.o diff --git a/Private/Drivers/MahroussUpdate/DriverRsrc.rsrc b/Private/Drivers/MahroussUpdate/DriverRsrc.rsrc new file mode 100644 index 00000000..359a0875 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/DriverRsrc.rsrc @@ -0,0 +1,25 @@ +1 ICON "../../Root/Boot/Icons/update-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss-Logic" + VALUE "FileDescription", "New OS Mahrouss Update driver." + VALUE "FileVersion", "1.00" + VALUE "InternalName", "Mahrouss Update." + VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." + VALUE "OriginalFilename", "MahroussUpdate.exe" + VALUE "ProductName", "MahroussUpdate." + VALUE "ProductVersion", "1.00" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END diff --git a/Private/Drivers/MahroussUpdate/MahroussUpdate.cc b/Private/Drivers/MahroussUpdate/MahroussUpdate.cc new file mode 100644 index 00000000..c8741ed0 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/MahroussUpdate.cc @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include + +#include + +DK_EXTERN int __ImageStart(void) { + kernelPrintStr("Mahrouss Update: Looking for updates...\r\n"); + UpdateRequest req("mup://release-mahrouss.logic/newos/"); + + return 0; +} + +DK_EXTERN int __ImageEnd(void) { + return 0; +} + +///! @brief Use this to check your stack, if using MinGW/MSVC. +DK_EXTERN void ___chkstk_ms(void) {} diff --git a/Private/Drivers/MahroussUpdate/MahroussUpdate.hxx b/Private/Drivers/MahroussUpdate/MahroussUpdate.hxx new file mode 100644 index 00000000..a4f219be --- /dev/null +++ b/Private/Drivers/MahroussUpdate/MahroussUpdate.hxx @@ -0,0 +1,33 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#pragma once + +#include + +#include "DriverKit/KernelPrint.h" + +/// @file Software update job driver. + +class UpdateRequest; +class UpdateRequestObserver; + +class UpdateRequest { + public: + explicit UpdateRequest(const char* patchUrl = "mup://invalid-url-scheme/") { + kernelStringCopy(this->fPatchUrl, patchUrl, kernelStringLength(patchUrl)); + + kernelPrintStr("Mahrouss Update, Looking at: "); + kernelPrintStr(patchUrl); + kernelPrintChar('\r'); + kernelPrintChar('\n'); + } + + ~UpdateRequest() {} + + private: + char fPatchUrl[4096] = {0}; +}; diff --git a/Private/Drivers/MahroussUpdate/makefile b/Private/Drivers/MahroussUpdate/makefile new file mode 100644 index 00000000..a0673a23 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/makefile @@ -0,0 +1,53 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o MahroussUpdate.exe + cp MahroussUpdate.exe ../../Root/Boot/MahroussUpdate.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) -std=c17 $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.s) + $(CC_GNU) $(FLAG_GNU) -std=c++17 -fno-rtti -fno-exceptions $(DEBUG) $(wildcard *.cc) $(wildcard ../../DriverKit/*.cc) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) MahroussUpdate.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/SampleDriver/SampleDriver.c b/Private/Drivers/SampleDriver/SampleDriver.c index 8289fcbc..4481d480 100644 --- a/Private/Drivers/SampleDriver/SampleDriver.c +++ b/Private/Drivers/SampleDriver/SampleDriver.c @@ -16,3 +16,6 @@ int __ImageEnd(void) { kernelPrintStr("SampleDriver: Shutting down...\r\n"); return 0; } + +///! @brief Use this to check your stack, if using MinGW/MSVC. +void ___chkstk_ms(void) {} diff --git a/Private/Drivers/SampleDriver/makefile b/Private/Drivers/SampleDriver/makefile index 2433aa51..cc96c022 100644 --- a/Private/Drivers/SampleDriver/makefile +++ b/Private/Drivers/SampleDriver/makefile @@ -12,16 +12,6 @@ ADD_FILE=touch COPY=cp HTTP_GET=wget -ifeq ($(shell uname), Windows_NT) -EMU=qemu-system-x86_64w -else -EMU=qemu-system-x86_64 -endif - -IMG=epm.img -IMG_2=epm-slave.img -EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img - LD_FLAGS=-e __ImageStart --subsystem=17 OBJ=*.o diff --git a/Private/Root/Boot/Icons/boot-logo.ico b/Private/Root/Boot/Icons/boot-logo.ico index 3a0258b8..b7a2eba2 100644 Binary files a/Private/Root/Boot/Icons/boot-logo.ico and b/Private/Root/Boot/Icons/boot-logo.ico differ diff --git a/Private/Root/Boot/Icons/update-logo.ico b/Private/Root/Boot/Icons/update-logo.ico new file mode 100644 index 00000000..860194db Binary files /dev/null and b/Private/Root/Boot/Icons/update-logo.ico differ -- cgit v1.2.3 From da3e277c4685f64112ed0e7d7715e11a9f684eff Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 21 Apr 2024 19:59:59 +0200 Subject: meta: final icon update. Signed-off-by: Amlal El Mahrouss --- Private/Root/Boot/Icons/bonjour-logo.ico | Bin 87830 -> 108478 bytes Private/Root/Boot/Icons/boot-logo.ico | Bin 78998 -> 108478 bytes Private/Root/Boot/Icons/driver-logo.ico | Bin 87830 -> 108478 bytes Private/Root/Boot/Icons/kernel-logo.ico | Bin 87830 -> 108478 bytes Private/Root/Boot/Icons/update-logo.ico | Bin 87830 -> 108478 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Private/Root/Boot/Icons/bonjour-logo.ico b/Private/Root/Boot/Icons/bonjour-logo.ico index 5424b46f..568de302 100644 Binary files a/Private/Root/Boot/Icons/bonjour-logo.ico and b/Private/Root/Boot/Icons/bonjour-logo.ico differ diff --git a/Private/Root/Boot/Icons/boot-logo.ico b/Private/Root/Boot/Icons/boot-logo.ico index b7a2eba2..a7edcfe8 100644 Binary files a/Private/Root/Boot/Icons/boot-logo.ico and b/Private/Root/Boot/Icons/boot-logo.ico differ diff --git a/Private/Root/Boot/Icons/driver-logo.ico b/Private/Root/Boot/Icons/driver-logo.ico index 5cf8e397..dbdcdee1 100644 Binary files a/Private/Root/Boot/Icons/driver-logo.ico and b/Private/Root/Boot/Icons/driver-logo.ico differ diff --git a/Private/Root/Boot/Icons/kernel-logo.ico b/Private/Root/Boot/Icons/kernel-logo.ico index 0866aa2d..00724f48 100644 Binary files a/Private/Root/Boot/Icons/kernel-logo.ico and b/Private/Root/Boot/Icons/kernel-logo.ico differ diff --git a/Private/Root/Boot/Icons/update-logo.ico b/Private/Root/Boot/Icons/update-logo.ico index 860194db..2ec56e03 100644 Binary files a/Private/Root/Boot/Icons/update-logo.ico and b/Private/Root/Boot/Icons/update-logo.ico differ -- cgit v1.2.3 From 593e9b91591a9b98f6f46b5db046fe56f719ef24 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sun, 21 Apr 2024 21:04:42 +0200 Subject: MHR-5: Add icon for settings app alongside Applications folder, register **mup** and **param** schemes on the kernel. Signed-off-by: Amlal El Mahrouss --- Meta/Kernel.svg | 36 ++++++++++++++++++++++++++++++ Meta/NewKernel.svg | 12 ---------- Private/Applications/.gitkeep | 0 Private/HALKit/POWER/HalVirtualMemory.cxx | 3 +-- Private/HALKit/POWER/Processor.hpp | 14 +++++++----- Private/Root/Boot/Icons/settings-icon.ico | Bin 0 -> 108478 bytes Private/Root/Boot/Icons/update-logo.ico | Bin 108478 -> 108478 bytes Private/Source/URL.cxx | 5 ++++- Public/Developer/PDF/POWRPCARCPRMRM.pdf | Bin 1040606 -> 0 bytes ReadMe.md | 2 +- 10 files changed, 51 insertions(+), 21 deletions(-) create mode 100644 Meta/Kernel.svg delete mode 100644 Meta/NewKernel.svg create mode 100644 Private/Applications/.gitkeep create mode 100644 Private/Root/Boot/Icons/settings-icon.ico delete mode 100644 Public/Developer/PDF/POWRPCARCPRMRM.pdf diff --git a/Meta/Kernel.svg b/Meta/Kernel.svg new file mode 100644 index 00000000..fdfd1e73 --- /dev/null +++ b/Meta/Kernel.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Meta/NewKernel.svg b/Meta/NewKernel.svg deleted file mode 100644 index a58c60ac..00000000 --- a/Meta/NewKernel.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Private/Applications/.gitkeep b/Private/Applications/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Private/HALKit/POWER/HalVirtualMemory.cxx b/Private/HALKit/POWER/HalVirtualMemory.cxx index 43c59384..c138d76f 100644 --- a/Private/HALKit/POWER/HalVirtualMemory.cxx +++ b/Private/HALKit/POWER/HalVirtualMemory.cxx @@ -10,8 +10,7 @@ #include #include -/// NOTE: refer to: https://www.nxp.com/docs/en/white-paper/POWRPCARCPRMRM.pdf, -/// or in /Developer/PDF/POWRPCARCPRMRM.pdf +/// @note refer to our SoC documentation. using namespace NewOS; diff --git a/Private/HALKit/POWER/Processor.hpp b/Private/HALKit/POWER/Processor.hpp index a597b202..d6fbfb89 100644 --- a/Private/HALKit/POWER/Processor.hpp +++ b/Private/HALKit/POWER/Processor.hpp @@ -34,13 +34,17 @@ typedef StackFrame* StackFramePtr; inline void rt_halt() { while (1) { - + asm volatile("mr 0, 0"); // no oop. } } -inline void rt_cli() {} +inline void rt_cli() { + asm volatile ("mr 0, 0"); // no oop +} } // namespace NewOS::HAL -extern "C" void int_handle_math(NewOS::UIntPtr sp); -extern "C" void int_handle_pf(NewOS::UIntPtr sp); -extern "C" void* __ppc_alloca(size_t sz); +EXTERN_C void int_handle_math(NewOS::UIntPtr sp); +EXTERN_C void int_handle_pf(NewOS::UIntPtr sp); + +/// @brief Flush system TLB. +EXTERN_C void hal_flush_tlb(); diff --git a/Private/Root/Boot/Icons/settings-icon.ico b/Private/Root/Boot/Icons/settings-icon.ico new file mode 100644 index 00000000..4fd36645 Binary files /dev/null and b/Private/Root/Boot/Icons/settings-icon.ico differ diff --git a/Private/Root/Boot/Icons/update-logo.ico b/Private/Root/Boot/Icons/update-logo.ico index 2ec56e03..3423d76a 100644 Binary files a/Private/Root/Boot/Icons/update-logo.ico and b/Private/Root/Boot/Icons/update-logo.ico differ diff --git a/Private/Source/URL.cxx b/Private/Source/URL.cxx index 090c7c66..4983a34c 100644 --- a/Private/Source/URL.cxx +++ b/Private/Source/URL.cxx @@ -15,12 +15,15 @@ URL::URL(StringView &strUrl) : fUrlView(strUrl, false) {} URL::~URL() = default; +/// @brief internal and reserved protocols by kernel. constexpr const char *kURLProtocols[] = { "file", // Filesystem protocol + "mup", // Mahrouss update protocol + "param", // Mahrouss parameter protocol. }; constexpr const int kUrlOutSz = 1; //! such as: :// -constexpr const int kProtosCount = 4; +constexpr const int kProtosCount = 3; constexpr const int kRangeSz = 4096; ErrorOr url_extract_location(const char *url) { diff --git a/Public/Developer/PDF/POWRPCARCPRMRM.pdf b/Public/Developer/PDF/POWRPCARCPRMRM.pdf deleted file mode 100644 index f6a50007..00000000 Binary files a/Public/Developer/PDF/POWRPCARCPRMRM.pdf and /dev/null differ diff --git a/ReadMe.md b/ReadMe.md index 641391b0..e3b6ff8c 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -1,5 +1,5 @@
- +

NewKernel

-- cgit v1.2.3 From e548e79578d692dce885e7ef3cb38d993e90e07f Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 22 Apr 2024 08:19:02 +0200 Subject: MHR-5: A new part of the porting has been done. - Separate makefiles for each targets. - New Toolbox calls as well. - Check for platform to deduce __kernelDispatchCall. Signed-off-by: Amlal El Mahrouss --- Private/Builtins/Toolbox/Rsrc/Cursor.rsrc | 46 ++++ Private/Builtins/Toolbox/Rsrc/Splash.rsrc | 74 ------ Private/Builtins/Toolbox/Toolbox.hxx | 38 +-- Private/DriverKit/KernelDispatchCall.S | 21 ++ Private/DriverKit/KernelDispatchCall.s | 13 - Private/Drivers/Bonjour/makefile | 52 ---- Private/Drivers/Bonjour/x86_64.mk | 52 ++++ Private/Drivers/MahroussUpdate/makefile | 53 ----- Private/Drivers/MahroussUpdate/x86_64.mk | 53 +++++ Private/Drivers/SampleDriver/makefile | 52 ---- Private/Drivers/SampleDriver/x86_64.mk | 52 ++++ Private/HALKit/AMD64/Processor.hpp | 10 +- Private/NewBoot/BootKit/Rsrc/Driver.rsrc | 278 +++++++++++----------- Private/NewBoot/Source/CDROM/.NEWDEV | 2 - Private/NewBoot/Source/CDROM/.gitkeep | 0 Private/NewBoot/Source/CDROM/EFI/BOOT/.gitkeep | 0 Private/NewBoot/Source/HEL/AMD64/BootMain.cxx | 4 +- Private/NewBoot/Source/HEL/POWER/.gitkeep | 0 Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S | 34 +++ Private/NewBoot/Source/HEL/POWER/BootEPM.cxx | 118 +++++++++ Private/NewBoot/Source/HEL/PowerPC/.gitkeep | 0 Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx | 118 --------- Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S | 34 --- Private/NewBoot/Source/makefile | 4 +- Public/Developer/SystemLib/POWER/CoreAssembly.s | 23 ++ Public/Developer/SystemLib/PowerPC/CoreAssembly.s | 21 -- 26 files changed, 571 insertions(+), 581 deletions(-) create mode 100644 Private/Builtins/Toolbox/Rsrc/Cursor.rsrc delete mode 100644 Private/Builtins/Toolbox/Rsrc/Splash.rsrc create mode 100644 Private/DriverKit/KernelDispatchCall.S delete mode 100644 Private/DriverKit/KernelDispatchCall.s delete mode 100644 Private/Drivers/Bonjour/makefile create mode 100644 Private/Drivers/Bonjour/x86_64.mk delete mode 100644 Private/Drivers/MahroussUpdate/makefile create mode 100644 Private/Drivers/MahroussUpdate/x86_64.mk delete mode 100644 Private/Drivers/SampleDriver/makefile create mode 100644 Private/Drivers/SampleDriver/x86_64.mk delete mode 100644 Private/NewBoot/Source/CDROM/.NEWDEV delete mode 100644 Private/NewBoot/Source/CDROM/.gitkeep delete mode 100644 Private/NewBoot/Source/CDROM/EFI/BOOT/.gitkeep create mode 100644 Private/NewBoot/Source/HEL/POWER/.gitkeep create mode 100644 Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S create mode 100644 Private/NewBoot/Source/HEL/POWER/BootEPM.cxx delete mode 100644 Private/NewBoot/Source/HEL/PowerPC/.gitkeep delete mode 100644 Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx delete mode 100644 Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S create mode 100644 Public/Developer/SystemLib/POWER/CoreAssembly.s delete mode 100644 Public/Developer/SystemLib/PowerPC/CoreAssembly.s diff --git a/Private/Builtins/Toolbox/Rsrc/Cursor.rsrc b/Private/Builtins/Toolbox/Rsrc/Cursor.rsrc new file mode 100644 index 00000000..cd011ab9 --- /dev/null +++ b/Private/Builtins/Toolbox/Rsrc/Cursor.rsrc @@ -0,0 +1,46 @@ +#define CURSOR_ICON_HEIGHT 40 +#define CURSOR_ICON_WIDTH 40 + +// array size is 4800 +static const unsigned int cursor_icon[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x7b7b7b, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x9b9b9b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5a5a5a, 0xf1f1f1, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xd5d5d5, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x373737, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0xb8b8b8, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b7b7b, 0xf1f1f1, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xd5d5d5, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x494949, 0x9a9a9a, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8a8a8a, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8a8a8a, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5a5a5a, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xf1f1f1, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x0e0e0e, 0xe3e3e3, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0xb8b8b8, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x9a9a9a, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x8a8a8a, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; diff --git a/Private/Builtins/Toolbox/Rsrc/Splash.rsrc b/Private/Builtins/Toolbox/Rsrc/Splash.rsrc deleted file mode 100644 index 9b9a3e45..00000000 --- a/Private/Builtins/Toolbox/Rsrc/Splash.rsrc +++ /dev/null @@ -1,74 +0,0 @@ -#pragma once - -#define MAHROUSSLOGIC_HEIGHT 66 -#define MAHROUSSLOGIC_WIDTH 66 - -// array size is 13068 -inline const unsigned int MahroussLogic[] = { - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, - 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff -}; \ No newline at end of file diff --git a/Private/Builtins/Toolbox/Toolbox.hxx b/Private/Builtins/Toolbox/Toolbox.hxx index 2ac23267..5a510a5a 100644 --- a/Private/Builtins/Toolbox/Toolbox.hxx +++ b/Private/Builtins/Toolbox/Toolbox.hxx @@ -21,27 +21,36 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed(); #define ToolboxClearRsrc() uA = 0 +/// @brief Performs OR drawing on the framebuffer. +#define ToolboxDrawOrRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \ + uA = 0; \ + \ + for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ + for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ + *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) |= ImgPtr[uA]; \ + \ + ++uA; \ + } \ + } + + /// @brief Draws a resource. #define ToolboxDrawRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \ uA = 0; \ \ for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ - if (ImgPtr[uA] == 0) { \ *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) |= ImgPtr[uA]; \ - } else { \ - *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) = ImgPtr[uA]; \ - } \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) = ImgPtr[uA]; \ \ ++uA; \ } \ @@ -76,4 +85,3 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed(); 4 * u))) = _Clr; \ } \ } - diff --git a/Private/DriverKit/KernelDispatchCall.S b/Private/DriverKit/KernelDispatchCall.S new file mode 100644 index 00000000..4eec8ae0 --- /dev/null +++ b/Private/DriverKit/KernelDispatchCall.S @@ -0,0 +1,21 @@ +.globl __kernelDispatchCall + +.section .text + +/* Really simple function, takes our va-list, + and brings it to the trap handler in the kernel. */ + +#ifdef __x86_64__ + +__kernelDispatchCall: + int $0x33 + ret + +#elif defined(__powerpc64__) + +__kernelDispatchCall: + mflr 3 + sc + blr + +#endif diff --git a/Private/DriverKit/KernelDispatchCall.s b/Private/DriverKit/KernelDispatchCall.s deleted file mode 100644 index 2919f6ec..00000000 --- a/Private/DriverKit/KernelDispatchCall.s +++ /dev/null @@ -1,13 +0,0 @@ -.globl __kernelDispatchCall - -.section .text - -#ifdef __x86_64__ - -/* Really simple function, takes our va-list, - and brings it to the trap handler in the kernel. */ -__kernelDispatchCall: - int $0x33 - ret - -#endif diff --git a/Private/Drivers/Bonjour/makefile b/Private/Drivers/Bonjour/makefile deleted file mode 100644 index 46edfd2e..00000000 --- a/Private/Drivers/Bonjour/makefile +++ /dev/null @@ -1,52 +0,0 @@ -################################################## -# (C) Mahrouss Logic, all rights reserved. -# This is the sample driver makefile. -################################################## - -CC_GNU=x86_64-w64-mingw32-gcc -LD_GNU=x86_64-w64-mingw32-ld - -WINDRES=x86_64-w64-mingw32-windres - -ADD_FILE=touch -COPY=cp -HTTP_GET=wget - -LD_FLAGS=-e __ImageStart --subsystem=17 - -OBJ=*.o - - -REM=rm -REM_FLAG=-f - -FLAG_ASM=-f win64 -FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ - -.PHONY: invalid-recipe -invalid-recipe: - @echo "invalid-recipe: Use make all instead." - -.PHONY: all -all: compile-amd64 - $(LD_GNU) $(OBJ) $(LD_FLAGS) -o Bonjour.exe - cp Bonjour.exe ../../Root/Boot/Bonjour.exe - -ifneq ($(DEBUG_SUPPORT), ) -DEBUG = -D__DEBUG__ -endif - -.PHONY: compile-amd64 -compile-amd64: - $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o - $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.s) - -.PHONY: clean -clean: - $(REM) $(REM_FLAG) $(OBJ) Bonjour.exe - -.PHONY: help -help: - @echo "=== HELP ===" - @echo "clean: Clean driver." - @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/Bonjour/x86_64.mk b/Private/Drivers/Bonjour/x86_64.mk new file mode 100644 index 00000000..3461b2a3 --- /dev/null +++ b/Private/Drivers/Bonjour/x86_64.mk @@ -0,0 +1,52 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o Bonjour.exe + cp Bonjour.exe ../../Root/Boot/Bonjour.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.S) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) Bonjour.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/MahroussUpdate/makefile b/Private/Drivers/MahroussUpdate/makefile deleted file mode 100644 index a0673a23..00000000 --- a/Private/Drivers/MahroussUpdate/makefile +++ /dev/null @@ -1,53 +0,0 @@ -################################################## -# (C) Mahrouss Logic, all rights reserved. -# This is the sample driver makefile. -################################################## - -CC_GNU=x86_64-w64-mingw32-gcc -LD_GNU=x86_64-w64-mingw32-ld - -WINDRES=x86_64-w64-mingw32-windres - -ADD_FILE=touch -COPY=cp -HTTP_GET=wget - -LD_FLAGS=-e __ImageStart --subsystem=17 - -OBJ=*.o - - -REM=rm -REM_FLAG=-f - -FLAG_ASM=-f win64 -FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ - -.PHONY: invalid-recipe -invalid-recipe: - @echo "invalid-recipe: Use make all instead." - -.PHONY: all -all: compile-amd64 - $(LD_GNU) $(OBJ) $(LD_FLAGS) -o MahroussUpdate.exe - cp MahroussUpdate.exe ../../Root/Boot/MahroussUpdate.exe - -ifneq ($(DEBUG_SUPPORT), ) -DEBUG = -D__DEBUG__ -endif - -.PHONY: compile-amd64 -compile-amd64: - $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o - $(CC_GNU) $(FLAG_GNU) -std=c17 $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.s) - $(CC_GNU) $(FLAG_GNU) -std=c++17 -fno-rtti -fno-exceptions $(DEBUG) $(wildcard *.cc) $(wildcard ../../DriverKit/*.cc) - -.PHONY: clean -clean: - $(REM) $(REM_FLAG) $(OBJ) MahroussUpdate.exe - -.PHONY: help -help: - @echo "=== HELP ===" - @echo "clean: Clean driver." - @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/MahroussUpdate/x86_64.mk b/Private/Drivers/MahroussUpdate/x86_64.mk new file mode 100644 index 00000000..cffa0ab7 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/x86_64.mk @@ -0,0 +1,53 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o MahroussUpdate.exe + cp MahroussUpdate.exe ../../Root/Boot/MahroussUpdate.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) -std=c17 $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.S) + $(CC_GNU) $(FLAG_GNU) -std=c++17 -fno-rtti -fno-exceptions $(DEBUG) $(wildcard *.cc) $(wildcard ../../DriverKit/*.cc) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) MahroussUpdate.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/SampleDriver/makefile b/Private/Drivers/SampleDriver/makefile deleted file mode 100644 index cc96c022..00000000 --- a/Private/Drivers/SampleDriver/makefile +++ /dev/null @@ -1,52 +0,0 @@ -################################################## -# (C) Mahrouss Logic, all rights reserved. -# This is the sample driver makefile. -################################################## - -CC_GNU=x86_64-w64-mingw32-gcc -LD_GNU=x86_64-w64-mingw32-ld - -WINDRES=x86_64-w64-mingw32-windres - -ADD_FILE=touch -COPY=cp -HTTP_GET=wget - -LD_FLAGS=-e __ImageStart --subsystem=17 - -OBJ=*.o - - -REM=rm -REM_FLAG=-f - -FLAG_ASM=-f win64 -FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ - -.PHONY: invalid-recipe -invalid-recipe: - @echo "invalid-recipe: Use make all instead." - -.PHONY: all -all: compile-amd64 - $(LD_GNU) $(OBJ) $(LD_FLAGS) -o SampleDriver.exe - cp SampleDriver.exe ../../Root/Boot/SampleDriver.exe - -ifneq ($(DEBUG_SUPPORT), ) -DEBUG = -D__DEBUG__ -endif - -.PHONY: compile-amd64 -compile-amd64: - $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o - $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.s) - -.PHONY: clean -clean: - $(REM) $(REM_FLAG) $(OBJ) SampleDriver.exe - -.PHONY: help -help: - @echo "=== HELP ===" - @echo "clean: Clean driver." - @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/SampleDriver/x86_64.mk b/Private/Drivers/SampleDriver/x86_64.mk new file mode 100644 index 00000000..f8d56b08 --- /dev/null +++ b/Private/Drivers/SampleDriver/x86_64.mk @@ -0,0 +1,52 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o SampleDriver.exe + cp SampleDriver.exe ../../Root/Boot/SampleDriver.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.S) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) SampleDriver.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/HALKit/AMD64/Processor.hpp b/Private/HALKit/AMD64/Processor.hpp index 7e2624d7..70452d1d 100644 --- a/Private/HALKit/AMD64/Processor.hpp +++ b/Private/HALKit/AMD64/Processor.hpp @@ -26,11 +26,11 @@ #define IsActiveLow(FLG) (FLG & 2) #define IsLevelTriggered(FLG) (FLG & 8) -#define kInterruptGate 0x8E -#define kTrapGate 0xEF -#define kTaskGate 0b10001100 -#define kGdtCodeSelector 0x08 -#define kVirtualAddressStartOffset 0x100 +#define kInterruptGate (0x8E) +#define kTrapGate (0xEF) +#define kTaskGate (0b10001100) +#define kGdtCodeSelector (0x08) +#define kVirtualAddressStartOffset (0x100) namespace NewOS { namespace Detail::AMD64 { diff --git a/Private/NewBoot/BootKit/Rsrc/Driver.rsrc b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc index 931702e9..bdbd6ea1 100644 --- a/Private/NewBoot/BootKit/Rsrc/Driver.rsrc +++ b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc @@ -1,144 +1,144 @@ #define DRIVER_HEIGHT 138 #define DRIVER_WIDTH 154 -// array size is 63756 +// array size is 85008 static const unsigned int Driver[] = { - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x40e3e3e3, 0x70e4e4e4, 0xafe3e3e3, 0xdfe4e4e4, 0xefe4e4e4, 0xfee5e5e5, 0xffe3e3e3, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe5e5e5, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee5e5e5, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xfee5e5e5, 0xffe4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe5e5e5, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee5e5e5, 0xffe3e3e3, 0xfee5e5e5, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee5e5e5, 0xfee5e5e5, 0xffe4e4e4, 0xffe4e4e4, 0xeee4e4e4, 0xcfe4e4e4, 0xafe3e3e3, 0x80e3e3e3, 0x40e3e3e3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10dfdfdf, 0x7fe5e5e5, 0xefe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xdfe4e4e4, 0x9fe4e4e4, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10dfdfdf, 0x8fe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0x9fe4e4e4, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x6fe3e3e3, 0xeee2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xdee3e3e3, 0x60e2e2e2, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0x8fe1e1e1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10dfdfdf, 0xbfe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe1e1e1, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xcfe1e1e1, 0x10dfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xcfe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xbfe0e0e0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fe1e1e1, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0x8fe1e1e1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x60dfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xfee0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffe0e0e0, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0x6fdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x20dfdfdf, 0xdfdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfededede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xefdedede, 0x10dfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x9fdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xfededede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdddddd, 0xfededede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xfededede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xfedfdfdf, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xfededede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdedede, 0xfededede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xfededede, 0xffdddddd, 0xfededede, 0xfededede, 0xfededede, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xffdedede, 0xffdedede, 0xfededede, 0xffdedede, 0xfededede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0x8fdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x20dfdfdf, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xfedddddd, 0xfedddddd, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xfedddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfededede, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfededede, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xfedddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0x10dfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x9fdcdcdc, 0xfedddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xfedcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xfedcdcdc, 0xfedddddd, 0x80dbdddb, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xdfdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xfedcdcdc, 0xfedcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xeedddddd, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x40dbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0x40d7d7d7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x80dbdbdb, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xfedadada, 0xfedadada, 0xffdadada, 0xfedadada, 0xfedbdbdb, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xfedbdbdb, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedadada, 0xffdadada, 0xfedbdbdb, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xfedadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0x70d8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xafd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfedadada, 0xfed9d9d9, 0xffdadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd8d8d8, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd8d8d8, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfedadada, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xafdbdbdb, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xced9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xdfd9d9d9, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xeed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xeed8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xfed6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xfed6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xfed7d7d7, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xfed7d7d7, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xfed6d6d6, 0xfed5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xfed5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed6d6d6, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xfed4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xffd5d5d5, 0xffd3d3d3, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xfed4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xffd5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xfed3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed3d3d3, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd1d1d1, 0xfed3d3d3, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xfed1d1d1, 0xfed0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xfecfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffd0d0d0, 0xfecfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xfecfcfcf, 0xfed0d0d0, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xefcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfececece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xfecfcfcf, 0xfececece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xfececece, 0xffcecece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfececece, 0xfecfcfcf, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xfececece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfececece, 0xffcecece, 0xfecfcfcf, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x80cbcbcb, 0xffcecece, 0xfecdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xfececece, 0xffcdcdcd, 0xffcccccc, 0xfecdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcdcdcd, 0xfecdcdcd, 0xfecdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xfecdcdcd, 0xfecdcdcd, 0xffb5b5b5, 0xff4c4c4c, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff434343, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff565656, 0xffb5b5b5, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xffcdcdcd, 0xfececece, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcecece, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcccccc, 0x70e4e4e4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xbfcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xfecccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcdcdcd, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xff686868, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff414141, 0xff424242, 0xff424242, 0xff424242, 0xff414141, 0xff686868, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcdcdcd, 0xfecdcdcd, 0xfecccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xfecdcdcd, 0xffcccccc, 0xffe2e2e2, 0x40e3e3e3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x10bfbfbf, 0xdecccccc, 0xffcccccc, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xfecccccc, 0xfecdcdcd, 0xffcbcbcb, 0xffcbcbcb, 0xff545454, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff424242, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff424242, 0xff424242, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff545454, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xfecccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffe0e0e0, 0xeee1e1e1, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x20cfcfcf, 0xdfcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xfecccccc, 0xffcbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xffc2c2c2, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecccccc, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffe0e0e0, 0xffe0e0e0, 0xdfe0e0e0, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x30cacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xfecacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffc9c9c9, 0xffc8c8c8, 0xffb0b0b0, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff404040, 0xff404040, 0xff414141, 0xff414141, 0xff414141, 0xff404040, 0xff414141, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xffb8b8b8, 0xfec9c9c9, 0xfecacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xcfdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x70c8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xfec9c9c9, 0xffc9c9c9, 0xfecacaca, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xff9e9e9e, 0xff404040, 0xff404040, 0xff404040, 0xff414141, 0xff414141, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff414141, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff9e9e9e, 0xffc6c6c6, 0xffc7c7c7, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffcacaca, 0xfecacaca, 0xfecacaca, 0xffc9c9c9, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfededede, 0xffdddddd, 0xfededede, 0xffdddddd, 0x8fdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x80c9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xfec9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc6c6c6, 0xfec5c6c6, 0xff8d8d8d, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff8d8d8d, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdbdbdb, 0x7fdbdddb, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x9fc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc6c6c6, 0xfec5c6c6, 0xfec4c4c4, 0xff7b7b7b, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff737373, 0xffc3c3c3, 0xfec5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec9c9c9, 0xffc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec9c9c9, 0xffc7c7c7, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0x5fdcdcdc, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10bfbfbf, 0xcfc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc6c6c6, 0xfec8c8c8, 0xfec7c7c7, 0xfec6c6c6, 0xffc5c5c5, 0xfec3c3c3, 0xfec1c1c1, 0xff626262, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff6a6a6a, 0xffc0c0c0, 0xffc2c2c2, 0xffc4c4c4, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc6c6c6, 0xffc7c7c7, 0xfec8c8c8, 0xfec7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc6c6c6, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xfec7c7c7, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xfec7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xefd9d9d9, 0x30dadada, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20c7c7c7, 0xdfc6c7c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc2c2c2, 0xfec2c2c2, 0xffbdbdbd, 0xff585858, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff515151, 0xfebebebe, 0xffc0c0c0, 0xffc2c2c2, 0xffc4c4c4, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xdfd8d8d8, 0x20d7d7d7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x30c5c5c5, 0xefc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec7c7c7, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfebfbfbf, 0xff8d8d8d, 0xffa6a6a6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec5c6c6, 0xffc3c3c3, 0xffc1c1c1, 0xffbebebe, 0xfeb5b5b5, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xffadadad, 0xffbebebe, 0xffc1c1c1, 0xffc3c3c3, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffa7a7a7, 0xff8d8d8d, 0xffb7b7b7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xcfd6d6d6, 0x10cfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x60c7c7c7, 0xffc6c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc6c6c6, 0xff515151, 0xff3e3e3e, 0xff3e3e3e, 0xff515151, 0xff969696, 0xffb6b6b6, 0xffc5c5c5, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc4c4c4, 0xffc1c1c1, 0xffb0b0b0, 0xff717171, 0xff474747, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff717171, 0xfeb1b1b1, 0xfec3c3c3, 0xffc4c4c4, 0xffc5c5c5, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffbebebe, 0xff858585, 0xff595959, 0xff3e3e3e, 0xff3e3e3e, 0xff5a5a5a, 0xffc5c5c5, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0x9fd5d5d5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc6c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xff949494, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff737373, 0xffa6a6a6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc4c4c4, 0xffbbbbbb, 0xff828282, 0xff474747, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff828282, 0xffc3c3c3, 0xffc4c4c4, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffa5a5a5, 0xff6b6b6b, 0xff474747, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xfe8e8e8e, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0x7fd5d5d5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xfec5c6c6, 0xffc4c4c4, 0xffb4b4b4, 0xff505050, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff515151, 0xfe969696, 0xfeb5b5b5, 0xffacacac, 0xff505050, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff505050, 0xffb3b3b3, 0xffbcbcbc, 0xff848484, 0xff595959, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff464646, 0xffbcbcbc, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0x6fd3d3d3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xcfc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xff727272, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff464646, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff464646, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff7a7a7a, 0xffc3c3c3, 0xffc3c3c3, 0xfec4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c4c4, 0xfec4c4c4, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0x30cfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20bfbfbf, 0xdfc2c2c2, 0xffc2c2c2, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc2c2c2, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xfec4c4c4, 0xffc2c2c2, 0xffc2c2c2, 0xffb2b2b2, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xffaaaaaa, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xfec4c4c4, 0xfec3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xdfd1d1d1, 0x20cfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20bfbfbf, 0xefc2c2c2, 0xfec2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xffc3c3c3, 0xfec2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xffc2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec2c2c2, 0xfec3c3c3, 0xfec2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xff686868, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff606060, 0xffc0c0c0, 0xffc0c0c0, 0xffc2c2c2, 0xffc1c1c1, 0xfec3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xfec2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xfec2c2c2, 0xfec2c2c2, 0xfec3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xdfcfcfcf, 0x10cfcfcf, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x40bfbfbf, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xfec2c2c2, 0xfec2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc0c0c0, 0xffbfbfbf, 0xff919191, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xfea0a0a0, 0xffc0c0c0, 0xfec1c1c1, 0xffc1c1c1, 0xfec2c2c2, 0xfec2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xffc2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xfec2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xfec1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xbfcecece, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fc3c3c3, 0xffc0c0c0, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xffbfbfbf, 0xfebebebe, 0xff4d4d4d, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff4c4c4c, 0xfeb8b8b8, 0xffbfbfbf, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xfec1c1c1, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xfec1c1c1, 0xffc1c1c1, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0x8fcdcdcd, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10bfbfbf, 0xffc0c0c0, 0xfec1c1c1, 0xfec1c1c1, 0xfec0c0c0, 0xffc0c0c0, 0xffbfbfbf, 0xfec0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffbfbfbf, 0xffbfbfbf, 0xffbdbdbd, 0xff7e7e7e, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff7e7e7e, 0xfebebebe, 0xffbebebe, 0xffbfbfbf, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xffc0c0c0, 0xfec0c0c0, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffaeaeae, 0xff4c4c4c, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff434343, 0xfeb5b5b5, 0xffbdbdbd, 0xffbebebe, 0xffbfbfbf, 0xffbfbfbf, 0xffc0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xfec0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc8c8c8, 0xffc9c9c9, 0xfec9c9c9, 0xffcacaca, 0xfecacaca, 0xffc9c9c9, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xfebfbfbf, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbbbbbb, 0xff6d6d6d, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff6d6d6d, 0xffbbbbbb, 0xffbdbdbd, 0xffbdbdbd, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbfbfbf, 0xffbebebe, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xffc7c7c7, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc7c7c7, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbcbcbc, 0xfebcbcbc, 0xfeadadad, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff444444, 0xff525252, 0xff525252, 0xff4b4b4b, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff9d9d9d, 0xffbbbbbb, 0xffbdbdbd, 0xffbdbdbd, 0xffbebebe, 0xffbdbdbd, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbdbdbd, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xffbebebe, 0xfebdbdbd, 0xfebebebe, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xfebebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebdbdbd, 0xfebebebe, 0xffbdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xffbbbbbb, 0xffbbbbbb, 0xff535353, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff3f3f3f, 0xff636363, 0xff7e7e7e, 0xff8e8e8e, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe7e7e7e, 0xff5c5c5c, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff5b5b5b, 0xffbababa, 0xfebcbcbc, 0xffbcbcbc, 0xfebebebe, 0xffbdbdbd, 0xfebebebe, 0xfebdbdbd, 0xfebebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xfebebebe, 0xfebebebe, 0xffbdbdbd, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xfebcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbdbdbd, 0xffbcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffb9b9b9, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff636363, 0xff8e8e8e, 0xff939393, 0xfe949494, 0xfe959595, 0xfe949494, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xfe898989, 0xff5c5c5c, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xffb9b9b9, 0xffbababa, 0xfebcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xfebcbcbc, 0xfebdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xfec4c4c4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xffbcbcbc, 0xffbcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffb9b9b9, 0xffb7b7b7, 0xff6a6a6a, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff383838, 0xff383838, 0xff373737, 0xff383838, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff3d3d3d, 0xff727272, 0xff939393, 0xff939393, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xff939393, 0xff939393, 0xff727272, 0xff3e3e3e, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff727272, 0xffb7b7b7, 0xfebababa, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xffbcbcbc, 0xfebcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xfebcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xffbcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xfebcbcbc, 0xffbcbcbc, 0xffbbbbbb, 0xffbcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbcbcbc, 0xfebcbcbc, 0xffbcbcbc, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebababa, 0xffb8b8b8, 0xfeb5b5b5, 0xffb1b1b1, 0xff757575, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff3e3e3e, 0xfe838383, 0xff939393, 0xfe949494, 0xfe959595, 0xff949494, 0xff959595, 0xfe969696, 0xff959595, 0xff969696, 0xff959595, 0xff959595, 0xff969696, 0xff949494, 0xff959595, 0xff949494, 0xfe949494, 0xfe949494, 0xfe838383, 0xff3d3d3d, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff383838, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff757575, 0xffb1b1b1, 0xffb4b4b4, 0xffb7b7b7, 0xffb9b9b9, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xfebbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec2c2c2, 0xffc1c1c1, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbababa, 0xfeb9b9b9, 0xffb5b5b5, 0xffb2b2b2, 0xffafafaf, 0xffababab, 0xff8d8d8d, 0xff464646, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff727272, 0xfe949494, 0xfe959595, 0xff949494, 0xff959595, 0xff969696, 0xff969696, 0xff979797, 0xfe989898, 0xff989898, 0xff989898, 0xff979797, 0xfe989898, 0xfe989898, 0xff969696, 0xff959595, 0xff949494, 0xff939393, 0xff939393, 0xff727272, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff3f3f3f, 0xff8c8c8c, 0xffababab, 0xfeafafaf, 0xffb3b3b3, 0xffb5b5b5, 0xffb7b7b7, 0xfebababa, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffc0c0c0, 0xffc0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xfec0c0c0, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xfebababa, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbababa, 0xfeb9b9b9, 0xffb7b7b7, 0xffb4b4b4, 0xfeb1b1b1, 0xfeaeaeae, 0xfeaaaaaa, 0xffa4a4a4, 0xfe959595, 0xff4b4b4b, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff373737, 0xff373737, 0xff5b5b5b, 0xff929292, 0xff949494, 0xff959595, 0xfe979797, 0xff979797, 0xfe999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xfe999999, 0xfe999999, 0xfe989898, 0xff969696, 0xff959595, 0xfe949494, 0xff939393, 0xff616161, 0xff363636, 0xff373737, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff4b4b4b, 0xfe959595, 0xffa4a4a4, 0xfeaaaaaa, 0xffadadad, 0xfeb1b1b1, 0xffb3b3b3, 0xffb6b6b6, 0xffb8b8b8, 0xffb9b9b9, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbebebe, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xfebebebe, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xfebebebe, 0xffbebebe, 0xffbebebe, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xffbababa, 0xfebababa, 0xffbababa, 0xfebababa, 0xfebababa, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xfebababa, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xffb8b8b8, 0xffb7b7b7, 0xffb4b4b4, 0xffb2b2b2, 0xfeafafaf, 0xffababab, 0xffa7a7a7, 0xffa3a3a3, 0xfe9f9f9f, 0xff9a9a9a, 0xff696969, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff888888, 0xff949494, 0xff959595, 0xfe989898, 0xff989898, 0xff999999, 0xff9a9a9a, 0xff9b9b9b, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff989898, 0xfe989898, 0xff969696, 0xff949494, 0xff949494, 0xfe8e8e8e, 0xff3b3b3b, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff636363, 0xff9a9a9a, 0xff9e9e9e, 0xffa2a2a2, 0xfea7a7a7, 0xfeadadad, 0xfeafafaf, 0xfeb3b3b3, 0xffb4b4b4, 0xfeb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xffb9b9b9, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffb9b9b9, 0xffbababa, 0xfebababa, 0xffbababa, 0xffbababa, 0xfebababa, 0xffbababa, 0xfebababa, 0xffbababa, 0xffbababa, 0xffb9b9b9, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xfebababa, 0xffbababa, 0xffbdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffbdbdbd, 0xffbcbcbc, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xfebdbdbd, 0xffbdbdbd, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xffb8b8b8, 0xfebababa, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xfeb8b8b8, 0xffb6b6b6, 0xffb4b4b4, 0xffb0b0b0, 0xffaeafae, 0xffaaaaaa, 0xffa5a5a5, 0xffa0a0a0, 0xff9d9d9d, 0xff999999, 0xff969696, 0xff727272, 0xff3b3b3b, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff5b5b5b, 0xff949494, 0xff959595, 0xff979797, 0xff989898, 0xfe9b9b9b, 0xff9c9c9c, 0xff9d9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xfea1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xff9f9f9f, 0xff9e9e9e, 0xfe9d9e9d, 0xff9c9c9c, 0xff9a9a9a, 0xff989898, 0xfe989898, 0xff959595, 0xff939393, 0xff616161, 0xff363636, 0xff343434, 0xff363636, 0xff363636, 0xff343434, 0xff363636, 0xff343434, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff3b3b3b, 0xff727272, 0xfe979797, 0xff999999, 0xfe9d9e9d, 0xfea2a2a2, 0xfea6a6a6, 0xfeababab, 0xffaeaeae, 0xffb0b0b0, 0xffb4b4b4, 0xffb6b6b6, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb8b8b8, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb5b5b5, 0xffb2b2b2, 0xffb0b0b0, 0xffadadad, 0xffa9a9a9, 0xffa4a4a4, 0xffa0a0a0, 0xff9d9d9d, 0xfe999999, 0xff969696, 0xff939393, 0xfe878787, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff343434, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff343434, 0xff363636, 0xff7d7d7d, 0xff959595, 0xff979797, 0xff999999, 0xfe9c9c9c, 0xff9d9e9e, 0xff9f9f9f, 0xffa1a1a1, 0xffa3a3a3, 0xfea4a4a4, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea4a4a4, 0xfea3a3a3, 0xffa1a1a1, 0xff9e9e9e, 0xff9d9e9e, 0xff9b9b9b, 0xff999999, 0xfe989898, 0xff959595, 0xff7d7d7d, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff363636, 0xff363636, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff343434, 0xff868686, 0xff949494, 0xff969696, 0xfe9a9a9a, 0xff9d9d9d, 0xfea1a1a1, 0xffa4a4a4, 0xfeaaaaaa, 0xffadadad, 0xffb0b0b0, 0xffb2b2b2, 0xffb5b5b5, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xfeb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb8b8b8, 0xfeb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xfeb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xfeb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffbbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb7b7b7, 0xfeb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xfeb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xfeb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xfeb5b5b5, 0xffb2b2b2, 0xffafafaf, 0xfeadadad, 0xfea9a9a9, 0xffa4a4a4, 0xffa0a0a0, 0xff9c9c9c, 0xff989898, 0xfe979797, 0xff949494, 0xff868686, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff343434, 0xff343434, 0xff949494, 0xff969696, 0xfe9a9a9a, 0xff9b9b9b, 0xff9d9e9e, 0xfea1a1a1, 0xffa2a2a2, 0xffa4a4a4, 0xfea8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xfeaaaaaa, 0xffa8a8a8, 0xffa7a7a7, 0xffa5a5a5, 0xffa2a2a2, 0xffa0a0a0, 0xff9d9e9e, 0xff9c9c9c, 0xff999999, 0xfe979797, 0xff8e8e8e, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff868686, 0xff939393, 0xff969696, 0xfe9a9a9a, 0xfe9d9e9d, 0xffa0a0a0, 0xffa4a4a4, 0xffa8a8a8, 0xffadadad, 0xffafafaf, 0xffb2b2b2, 0xffb4b4b4, 0xffb6b6b6, 0xfeb7b7b7, 0xffb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xfeb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xffb7b7b7, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xfeb8b8b8, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xfebababa, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xfeb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xfeb6b6b6, 0xfeb5b5b5, 0xffb2b2b2, 0xfeb0b0b0, 0xffadadad, 0xffa9a9a9, 0xffa5a5a5, 0xffa0a0a0, 0xff9d9d9d, 0xff9a9a9a, 0xff979797, 0xfe959595, 0xff7c7c7c, 0xff333333, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff484848, 0xff959595, 0xfe999999, 0xfe9c9c9c, 0xff9d9e9e, 0xfea1a1a1, 0xffa3a3a3, 0xfea7a7a7, 0xffa8a8a8, 0xffababab, 0xffababab, 0xfeadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffababab, 0xffaaaaaa, 0xfea9a9a9, 0xfea7a7a7, 0xffa4a4a4, 0xfea2a2a2, 0xfe9e9e9e, 0xff9b9b9b, 0xfe999999, 0xfe969696, 0xff414141, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff333333, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff343434, 0xff828282, 0xff949494, 0xff979797, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa5a5a5, 0xffa9a9a9, 0xffadadad, 0xffafafaf, 0xffb2b2b2, 0xffb4b4b4, 0xffb5b5b5, 0xffb6b6b6, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xfeb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb7b7b7, 0xffb7b7b7, 0xfeb7b7b7, 0xfeb7b7b7, 0xffb7b7b7, 0xfeb7b7b7, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xffb8b8b8, 0xffb8b8b8, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb7b7b7, 0xfeb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb5b5b5, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb4b4b4, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb0b0b0, 0xffadadad, 0xfeababab, 0xffa6a6a6, 0xffa2a2a2, 0xff9e9e9e, 0xfe9c9c9c, 0xfe999999, 0xff959595, 0xff7c7c7c, 0xff343434, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff343434, 0xff333333, 0xff333333, 0xff4e4e4e, 0xff979797, 0xfe9b9b9b, 0xfe9d9e9d, 0xffa0a0a0, 0xfea4a4a4, 0xffa6a6a6, 0xffa9a9a9, 0xffababab, 0xfeaeaeae, 0xffaeafae, 0xffaeafae, 0xffb0b0b0, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xffababab, 0xffa9a9a9, 0xffa6a6a6, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9e9e, 0xff9a9a9a, 0xff979797, 0xff4d4d4d, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff343434, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff7d7d7d, 0xfe979797, 0xff989898, 0xff9b9b9b, 0xff9e9e9e, 0xffa3a3a3, 0xffa6a6a6, 0xffaaaaaa, 0xffadadad, 0xffafafaf, 0xffb1b1b1, 0xffb4b4b4, 0xfeb6b6b6, 0xffb5b5b5, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb5b5b5, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xfeb7b7b7, 0xfeb7b7b7, 0xfeb6b6b6, 0xffb7b7b7, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xffb2b2b2, 0xffb0b0b0, 0xffaeaeae, 0xfeacacac, 0xfea8a8a8, 0xffa4a4a4, 0xffa1a1a1, 0xfe9d9e9d, 0xff9a9a9a, 0xff979797, 0xff7e7e7e, 0xff333333, 0xff343434, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff343434, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff4e4e4e, 0xff989898, 0xff9c9c9c, 0xff9f9f9f, 0xffa2a2a2, 0xffa6a6a6, 0xffa9a9a9, 0xfeacacac, 0xffadadad, 0xfeb0b0b0, 0xffafafaf, 0xfeb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb0b0b0, 0xfeb1b1b1, 0xffafafaf, 0xfeafafaf, 0xffacacac, 0xffaaaaaa, 0xffa6a6a6, 0xfea4a4a4, 0xff9f9f9f, 0xfe9d9d9d, 0xfe999999, 0xff4e4e4e, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff343434, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff7e7e7e, 0xff969696, 0xfe9b9b9b, 0xff9d9e9e, 0xffa0a0a0, 0xfea5a5a5, 0xffa8a8a8, 0xffababab, 0xfeafafaf, 0xfeb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb6b6b6, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb6b6b6, 0xffb4b4b4, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb4b4b4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb4b4b4, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb3b3b3, 0xffb2b2b2, 0xffb0b0b0, 0xffaeafae, 0xfeadadad, 0xffaaaaaa, 0xffa6a6a6, 0xffa2a2a2, 0xff9f9f9f, 0xff9d9d9d, 0xfe9a9a9a, 0xff858585, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff323232, 0xff333333, 0xff414141, 0xff9a9a9a, 0xff9d9e9e, 0xffa1a1a1, 0xfea6a6a6, 0xffa8a8a8, 0xffacacac, 0xffaeaeae, 0xfeb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xfeafafaf, 0xffababab, 0xfeaaaaaa, 0xfea6a6a6, 0xfea3a3a3, 0xff9d9e9e, 0xff9b9b9b, 0xff484848, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff323232, 0xff323232, 0xff7e7e7e, 0xff999999, 0xfe9d9d9d, 0xff9f9f9f, 0xffa2a2a2, 0xffa6a6a6, 0xfeaaaaaa, 0xffacacac, 0xfeb0b0b0, 0xfeb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xfeb4b4b4, 0xfeb4b4b4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffafafaf, 0xffaeaeae, 0xffababab, 0xffa9a9a9, 0xffa5a5a5, 0xffa1a1a1, 0xff9d9e9e, 0xff9b9b9b, 0xff8b8b8b, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff969696, 0xff9f9f9f, 0xffa3a3a3, 0xffa7a7a7, 0xffaaaaaa, 0xffadadad, 0xffafafaf, 0xffb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xffb0b0b0, 0xffafafaf, 0xffadadad, 0xfeababab, 0xffa7a7a7, 0xffa3a3a3, 0xfea0a0a0, 0xff9c9c9c, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff333333, 0xff8b8b8b, 0xff9b9b9b, 0xff9d9e9e, 0xffa1a1a1, 0xffa5a5a5, 0xfeaaaaaa, 0xfeadadad, 0xfeaeaeae, 0xfeb0b0b0, 0xffb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb4b4b4, 0xfeb4b4b4, 0xfeb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xffb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb1b1b1, 0xffaeafae, 0xffadadad, 0xffababab, 0xffa7a7a7, 0xffa4a4a4, 0xffa0a0a0, 0xff9d9e9e, 0xff818181, 0xff313131, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff848484, 0xffa0a0a0, 0xffa5a5a5, 0xffa8a8a8, 0xffacacac, 0xffaeaeae, 0xffb0b0b0, 0xffb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb3b3b3, 0xfeb4b4b4, 0xffb2b2b2, 0xfeb2b2b2, 0xffb0b0b0, 0xffaeaeae, 0xffacacac, 0xfeaaaaaa, 0xfea6a6a6, 0xffa1a1a1, 0xff848484, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff313131, 0xff323232, 0xff323232, 0xff878787, 0xff9d9d9d, 0xffa0a0a0, 0xffa4a4a4, 0xfea8a8a8, 0xffaaaaaa, 0xffadadad, 0xffaeafae, 0xfeb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xffb3b3b3, 0xfeb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb2b2b2, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xfeb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeaeaeae, 0xffacacac, 0xffa9a9a9, 0xffa5a5a5, 0xfea2a2a2, 0xff727272, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff323232, 0xff646464, 0xffa2a2a2, 0xfea6a6a6, 0xffaaaaaa, 0xffadadad, 0xffaeafae, 0xffb0b0b0, 0xffb1b1b1, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xffa9a9a9, 0xffa6a6a6, 0xffa2a2a2, 0xff5d5e5e, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff6b6b6b, 0xffa1a1a1, 0xfea6a6a6, 0xffa9a9a9, 0xfeadadad, 0xffaeaeae, 0xffafafaf, 0xffb0b0b0, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffafafaf, 0xffafafaf, 0xfeafafaf, 0xffafafaf, 0xfeafafaf, 0xffaeafae, 0xffafafaf, 0xffafafaf, 0xffafafaf, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb2b2b2, 0xffb1b1b1, 0xffb2b2b2, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xffababab, 0xffa0a0a0, 0xff606060, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff393939, 0xff9d9d9d, 0xfea8a8a8, 0xffaaaaaa, 0xffadadad, 0xfeb0b0b0, 0xfeb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xffaaaaaa, 0xffa6a6a6, 0xff969696, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff313131, 0xff323232, 0xff676767, 0xffa0a0a0, 0xffaaaaaa, 0xffadadad, 0xffaeafae, 0xfeb0b0b0, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xfeb2b2b2, 0xfeaeaeae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeafae, 0xfeaeaeae, 0xfeaeaeae, 0xfeaeaeae, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb0b0b0, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeb2b2b2, 0xffb1b1b1, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffafafaf, 0xffaeafae, 0xfeaeaeae, 0xfe9d9e9d, 0xff494949, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff676767, 0xffa7a7a7, 0xffaaaaaa, 0xffadadad, 0xfeafafaf, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xfeababab, 0xffa6a6a6, 0xff5f5f5f, 0xff313131, 0xff303030, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff424242, 0xfe9d9e9d, 0xffadadad, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xfeadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffacacac, 0xffadadad, 0xfeaeaeae, 0xfeaeaeae, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xffafafaf, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeafafaf, 0xff909090, 0xff393939, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xfe7e7e7e, 0xfeababab, 0xffacacac, 0xffaeafae, 0xffafafaf, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffaeaeae, 0xffacacac, 0xffaaaaaa, 0xff7d7d7d, 0xff313131, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff424242, 0xff898989, 0xfeafafaf, 0xffafafaf, 0xfeb0b0b0, 0xfeb1b1b1, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffafafaf, 0xfeacacac, 0xffacacac, 0xfeacacac, 0xffacacac, 0xfeacacac, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xffacacac, 0xfeacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xfeacacac, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeafafaf, 0xffafafaf, 0xfeafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xfeafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffaeafae, 0xff727272, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff383838, 0xff949494, 0xffacacac, 0xfeaeaeae, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xffaeafae, 0xfeaeaeae, 0xffacacac, 0xff949494, 0xff393939, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff737373, 0xfeafafaf, 0xfeb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffa9a9a9, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffafafaf, 0xffafafaf, 0xfeafafaf, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xff6a6a6a, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff383838, 0xff7f7f7f, 0xffadadad, 0xffaeaeae, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeafafaf, 0xffafafaf, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeaeaeae, 0xfeaeaeae, 0xff808080, 0xff383838, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff636363, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeafafaf, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffafafaf, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xfea9a9a9, 0xfea9a9a9, 0xffa8a8a8, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xfeaeaeae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xfeafafaf, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff626262, 0xff9e9e9e, 0xffaeaeae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffa6a6a6, 0xff696969, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xffadadad, 0xffaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xfeafafaf, 0xfeaeaeae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xffaeafae, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xfea7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffadadad, 0xffadadad, 0xffacacac, 0xff515151, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff626262, 0xff909090, 0xfeaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffa7a7a7, 0xff919191, 0xff6a6a6a, 0xff383838, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff494949, 0xffacacac, 0xffadadad, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffadadad, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffa5a5a5, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xfea6a6a6, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeaeaeae, 0xfeadadad, 0xfeaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xfeaeaeae, 0xfeaeaeae, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffababab, 0xfe8d8d8d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff494949, 0xff515151, 0xff525252, 0xff404040, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff9b9b9b, 0xffaaaaaa, 0xffababab, 0xffacacac, 0xffadadad, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xffadadad, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffadadad, 0xfeaeaeae, 0xffa4a4a4, 0xfea4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xfea4a4a4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeadadad, 0xffadadad, 0xffadadad, 0xffacacac, 0xffadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffacacac, 0xffacacac, 0xffacacac, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffaaaaaa, 0xfeaaaaaa, 0xffa6a6a6, 0xff5d5e5e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff5d5e5e, 0xfea7a7a7, 0xffa8a8a8, 0xffa9a9a9, 0xfeacacac, 0xfeadadad, 0xffacacac, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffadadad, 0xfeadadad, 0xfeadadad, 0xffacacac, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa2a2a2, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10afafaf, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xfeacacac, 0xffacacac, 0xffababab, 0xffacacac, 0xffacacac, 0xfeacacac, 0xffacacac, 0xffababab, 0xffacacac, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffababab, 0xffacacac, 0xffababab, 0xffaaaaaa, 0xffa9a9a9, 0xffa7a7a7, 0xffa6a6a6, 0xffa4a4a4, 0xff9a9a9a, 0xff343434, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff3e3e3e, 0xff939393, 0xffa3a3a3, 0xfea7a7a7, 0xffa7a7a7, 0xfeaaaaaa, 0xffaaaaaa, 0xffacacac, 0xffacacac, 0xfeacacac, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xfeacacac, 0xffababab, 0xffacacac, 0xfeacacac, 0xffacacac, 0xffababab, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fadadad, 0xfeababab, 0xffababab, 0xffababab, 0xfeababab, 0xffababab, 0xffaaaaaa, 0xffababab, 0xffababab, 0xffababab, 0xfeacacac, 0xffababab, 0xffababab, 0xffababab, 0xfeababab, 0xffababab, 0xfeababab, 0xffababab, 0xffababab, 0xffababab, 0xffaaaaaa, 0xffa9a9a9, 0xfea9a9a9, 0xffa7a7a7, 0xffa4a4a4, 0xfea2a2a2, 0xff9d9e9e, 0xff676767, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff666666, 0xff9d9e9e, 0xfea2a2a2, 0xfea4a4a4, 0xfea7a7a7, 0xfea9a9a9, 0xffa9a9a9, 0xffaaaaaa, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xfeababab, 0xfeacacac, 0xfeacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xffacacac, 0xfeababab, 0xffababab, 0xffababab, 0xffababab, 0xfeacacac, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xfea0a0a0, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x50a9a9a9, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeababab, 0xffababab, 0xffaaaaaa, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffababab, 0xffaaaaaa, 0xffa9a9a9, 0xffa8a8a8, 0xffa7a7a7, 0xffa4a4a4, 0xffa2a2a2, 0xff9f9f9f, 0xff9c9c9c, 0xff919191, 0xff3b3b3b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff3b3b3b, 0xff999999, 0xfe9d9d9d, 0xff9e9e9e, 0xffa1a1a1, 0xffa4a4a4, 0xfea7a7a7, 0xffa8a8a8, 0xffa9a9a9, 0xffababab, 0xffaaaaaa, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeababab, 0xfeaaaaaa, 0xfeababab, 0xffaaaaaa, 0xffababab, 0xffababab, 0xffaaaaaa, 0xffababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0x809d9d9d, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20a7a7a7, 0xefaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffaaaaaa, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffaaaaaa, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xffa9a9a9, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa7a7a7, 0xffa5a5a5, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9d9d, 0xff999999, 0xff969696, 0xff7a7a7a, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff6e6e6e, 0xfe969696, 0xff999999, 0xfe9d9e9d, 0xffa0a0a0, 0xffa3a3a3, 0xffa5a5a5, 0xfea8a8a8, 0xffa8a8a8, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffaaaaaa, 0xfeaaaaaa, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0x9f9f9f9f, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20a7a7a7, 0xdfa9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xfea9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa7a7a7, 0xffa6a6a6, 0xfea4a4a4, 0xffa2a2a2, 0xff9f9f9f, 0xff9c9c9c, 0xfe999999, 0xff949494, 0xff909090, 0xff464646, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff4c4c4c, 0xff909090, 0xff939393, 0xff979797, 0xff9b9b9b, 0xff9e9e9e, 0xfea3a3a3, 0xffa4a4a4, 0xffa7a7a7, 0xffa7a7a7, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xfe9d9d9d, 0xfe9d9d9d, 0xcf9e9e9e, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xcfa8a8a8, 0xfea9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xfea9a9a9, 0xffa7a7a7, 0xffa6a6a6, 0xffa5a5a5, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9e9e, 0xff9b9b9b, 0xfe979797, 0xfe939393, 0xfe8f8f8f, 0xff7b7b7b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff808080, 0xfe8f8f8f, 0xff929292, 0xfe979797, 0xff9b9b9b, 0xfe9e9e9e, 0xffa0a0a0, 0xffa3a3a3, 0xfea6a6a6, 0xffa7a7a7, 0xffa8a8a8, 0xffa8a8a8, 0xfea9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea9a9a9, 0xfea8a8a8, 0xffa8a8a8, 0xffa7a7a7, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea9a9a9, 0xfea9a9a9, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xff9b9b9b, 0xdf9a9a9a, 0x109f9f9f, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fa9a9a9, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa4a4a4, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9e9e, 0xff9a9a9a, 0xff969696, 0xff929292, 0xff8e8e8e, 0xff8a8a8a, 0xff565656, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff313131, 0xff313131, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff303030, 0xff313131, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff505050, 0xff8b8b8b, 0xff8e8e8e, 0xfe939393, 0xff969696, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa3a3a3, 0xfea6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa8a8a8, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xfe9a9a9a, 0xff999999, 0xfe999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xdf999999, 0x20979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fa9a9a9, 0xffa6a6a6, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xfea7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa5a5a5, 0xffa4a4a4, 0xffa2a2a2, 0xffa0a0a0, 0xff9d9d9d, 0xff9a9a9a, 0xff969696, 0xff929292, 0xfe8f8f8f, 0xff8b8b8b, 0xff828282, 0xff303030, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff414141, 0xff5c5c5c, 0xff7c7c7c, 0xfe777777, 0xff363636, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff3d3d3d, 0xff777777, 0xff7c7c7c, 0xfe626262, 0xff373737, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff373737, 0xff7d7d7d, 0xff8b8b8b, 0xff8e8e8e, 0xff929292, 0xff969696, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa2a2a2, 0xfea5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xfea7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa6a6a6, 0xfea7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xfea7a7a7, 0xffa6a6a6, 0xfea7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff979797, 0xff989898, 0xff979797, 0xee989898, 0x20979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x50a6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa3a3a3, 0xffa2a2a2, 0xfea1a1a1, 0xff9d9e9e, 0xff9b9b9b, 0xff969696, 0xff929292, 0xff8f8f8f, 0xff8b8b8b, 0xfe888888, 0xff606060, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff303030, 0xff525252, 0xff6c6c6c, 0xfe818181, 0xff808080, 0xff818181, 0xff818181, 0xfe828282, 0xff585858, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff303030, 0xff575757, 0xff818181, 0xff818181, 0xff808080, 0xff808080, 0xff808080, 0xff6d6d6d, 0xff4c4c4c, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff666666, 0xfe898989, 0xff8b8b8b, 0xfe8f8f8f, 0xff929292, 0xff979797, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa2a2a2, 0xfea5a5a5, 0xffa5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xfea7a7a7, 0xffa5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xff969696, 0xff969696, 0xfe979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0x309a9a9a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x209f9f9f, 0xefa4a4a4, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xfea5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea4a4a4, 0xffa2a2a2, 0xfea1a1a1, 0xff9d9e9e, 0xfe9c9c9c, 0xff989898, 0xfe959595, 0xff909090, 0xff8c8c8c, 0xff898989, 0xff868686, 0xff3d3d3d, 0xff282828, 0xff282828, 0xff3b3b3b, 0xff575757, 0xff7b7b7b, 0xff818181, 0xff808080, 0xff808080, 0xff818181, 0xff818181, 0xfe828282, 0xff808080, 0xff818181, 0xff767676, 0xff4c4c4c, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff282828, 0xff303030, 0xff535353, 0xff7b7b7b, 0xff818181, 0xfe818181, 0xfe828282, 0xfe828282, 0xff818181, 0xff808080, 0xff808080, 0xfe828282, 0xff767676, 0xff626262, 0xff343434, 0xff2a2a2a, 0xff282828, 0xff363636, 0xff868686, 0xff898989, 0xff8c8c8c, 0xff909090, 0xfe949494, 0xff989898, 0xff9b9b9b, 0xff9d9e9e, 0xffa0a0a0, 0xffa3a3a3, 0xffa3a3a3, 0xfea5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xfea5a5a5, 0xffa6a6a6, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa4a4a4, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xff949494, 0xff959595, 0xff959595, 0xff949494, 0xff959595, 0xfe969696, 0xff949494, 0xfe959595, 0xff949494, 0x5f969696, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x209f9f9f, 0xdfa5a5a5, 0xffa5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa5a5a5, 0xfea5a5a5, 0xffa5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xffa5a5a5, 0xffa5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa2a2a2, 0xffa1a1a1, 0xff9e9e9e, 0xff9c9c9c, 0xff999999, 0xfe969696, 0xff919191, 0xff8d8d8d, 0xff8a8a8a, 0xff878787, 0xff7a7a7a, 0xff696969, 0xff6d6d6d, 0xff818181, 0xff818181, 0xff818181, 0xff818181, 0xff818181, 0xff828282, 0xff818181, 0xff828282, 0xff818181, 0xff828282, 0xff808080, 0xff818181, 0xff808080, 0xff767676, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff7c7c7c, 0xff808080, 0xff818181, 0xff818181, 0xfe828282, 0xff828282, 0xfe838383, 0xff818181, 0xff818181, 0xff818181, 0xff818181, 0xfe818181, 0xfe818181, 0xff818181, 0xff6d6d6d, 0xff636363, 0xfe818181, 0xff878787, 0xff8a8a8a, 0xff8d8d8d, 0xff919191, 0xff959595, 0xfe999999, 0xff9c9c9c, 0xff9e9e9e, 0xffa0a0a0, 0xfea3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea4a4a4, 0xfea5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xfea4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa5a5a5, 0xff939393, 0xff939393, 0xfe949494, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff939393, 0x80919393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10afafaf, 0xdfa4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xfea4a4a4, 0xfea4a4a4, 0xffa3a3a3, 0xfea4a4a4, 0xfea4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xfea4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa0a0a0, 0xff9f9f9f, 0xff9d9d9d, 0xff9a9a9a, 0xfe979797, 0xff939393, 0xff909090, 0xfe8c8c8c, 0xfe898989, 0xff868686, 0xff848484, 0xfe838383, 0xff828282, 0xff818181, 0xff818181, 0xff828282, 0xff828282, 0xfe838383, 0xff838383, 0xff828282, 0xff828282, 0xff828282, 0xfe838383, 0xff818181, 0xff818181, 0xff808080, 0xff343434, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff272727, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff3a3a3a, 0xff808080, 0xff818181, 0xff818181, 0xfe838383, 0xff828282, 0xff828282, 0xff828282, 0xff838383, 0xff828282, 0xff828282, 0xfe838383, 0xfe838383, 0xfe838383, 0xff828282, 0xfe848484, 0xff848484, 0xff868686, 0xff888888, 0xff8b8b8b, 0xff8e8e8e, 0xff929292, 0xfe989898, 0xff9a9a9a, 0xff9d9d9d, 0xff9f9f9f, 0xffa1a1a1, 0xffa2a2a2, 0xffa3a3a3, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xfea4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xfea4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xff929292, 0xff919191, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe929292, 0x80919393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xafa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa2a2a2, 0xffa1a1a1, 0xffa0a0a0, 0xfea0a0a0, 0xff9d9e9e, 0xfe9c9c9c, 0xff989898, 0xff949494, 0xff909090, 0xff8d8d8d, 0xfe8b8b8b, 0xff878787, 0xfe868686, 0xff848484, 0xfe848484, 0xff838383, 0xff838383, 0xff838383, 0xfe858585, 0xff848484, 0xfe858585, 0xff848484, 0xff848484, 0xff838383, 0xff838383, 0xff828282, 0xfe838383, 0xff818181, 0xff464646, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff282828, 0xff282828, 0xff272727, 0xff282828, 0xff282828, 0xff272727, 0xff282828, 0xff272727, 0xff272727, 0xff272727, 0xff282828, 0xff272727, 0xff272727, 0xff272727, 0xff404040, 0xff818181, 0xff818181, 0xfe838383, 0xfe848484, 0xfe858585, 0xfe858585, 0xfe858585, 0xff848484, 0xff848484, 0xff838383, 0xfe848484, 0xff838383, 0xff838383, 0xff838383, 0xff838383, 0xfe868686, 0xfe888888, 0xff8a8a8a, 0xfe8e8e8e, 0xff909090, 0xfe959595, 0xff989898, 0xff9c9c9c, 0xff9d9e9e, 0xff9f9f9f, 0xfea2a2a2, 0xfea2a2a2, 0xffa3a3a3, 0xfea4a4a4, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xfe909090, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xff919191, 0x9f929292, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fa3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa1a1a1, 0xffa1a1a1, 0xff9f9f9f, 0xff9d9e9e, 0xff9c9c9c, 0xff9a9a9a, 0xff969696, 0xff939393, 0xff8f8f8f, 0xff8c8c8c, 0xff898989, 0xff878787, 0xff858585, 0xff858585, 0xff848484, 0xff848484, 0xff858585, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xfe848484, 0xfe848484, 0xff818181, 0xff4b4b4b, 0xff272727, 0xff272727, 0xff262626, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff282828, 0xff272727, 0xff272727, 0xff272727, 0xff515151, 0xff828282, 0xfe848484, 0xfe848484, 0xff858585, 0xff858585, 0xff868686, 0xff878787, 0xff878787, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xff858585, 0xfe868686, 0xff868686, 0xff878787, 0xff898989, 0xff8c8c8c, 0xfe909090, 0xff929292, 0xff969696, 0xff999999, 0xff9c9c9c, 0xff9e9e9e, 0xfea0a0a0, 0xffa1a1a1, 0xfea2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xcf8f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x6fa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa2a2a2, 0xffa1a1a1, 0xffa2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xfe9e9e9e, 0xff9d9d9d, 0xfe9b9b9b, 0xfe989898, 0xfe959595, 0xff909090, 0xfe8f8f8f, 0xff8b8b8b, 0xff898989, 0xfe888888, 0xff878787, 0xff868686, 0xff878787, 0xfe898989, 0xff888888, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff888888, 0xfe888888, 0xff868686, 0xff858585, 0xff828282, 0xff5c5c5c, 0xff272727, 0xff272727, 0xff262626, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff272727, 0xff5c5c5c, 0xff828282, 0xff848484, 0xff868686, 0xff868686, 0xfe898989, 0xff888888, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff888888, 0xfe898989, 0xfe888888, 0xfe888888, 0xff878787, 0xff888888, 0xff898989, 0xfe8c8c8c, 0xfe8f8f8f, 0xff909090, 0xfe959595, 0xff979797, 0xff9b9b9b, 0xff9d9d9d, 0xff9e9e9e, 0xff9f9f9f, 0xfea1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa2a2a2, 0xffa2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xdf8e8e8e, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x309f9f9f, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea0a0a0, 0xff9e9e9e, 0xff9d9d9d, 0xff9b9b9b, 0xfe9a9a9a, 0xff969696, 0xff939393, 0xff909090, 0xff8e8e8e, 0xff8d8d8d, 0xff8a8a8a, 0xfe8b8b8b, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xfe8b8b8b, 0xff888888, 0xff878787, 0xff848484, 0xff686868, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff272727, 0xff262626, 0xff262626, 0xff262626, 0xff686868, 0xfe858585, 0xff868686, 0xff888888, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xfe8b8b8b, 0xfe8b8b8b, 0xff8c8c8c, 0xff8d8d8d, 0xff909090, 0xfe949494, 0xff969696, 0xff999999, 0xff9c9c9c, 0xfe9e9e9e, 0xff9f9f9f, 0xffa0a0a0, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xfea1a1a1, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xdf8d8d8d, 0x20878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x209f9f9f, 0xdf9f9f9f, 0xffa0a0a0, 0xfea1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xfea0a0a0, 0xfea1a1a1, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xff9e9e9e, 0xff9d9d9d, 0xff9c9c9c, 0xff9a9a9a, 0xff989898, 0xff959595, 0xff929292, 0xff909090, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff8e8e8e, 0xfe8d8d8d, 0xfe8b8b8b, 0xff898989, 0xff868686, 0xff797979, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff747474, 0xff868686, 0xfe898989, 0xff8a8a8a, 0xff8c8c8c, 0xfe8f8f8f, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff909090, 0xff929292, 0xff949494, 0xff989898, 0xff9a9a9a, 0xfe9d9d9d, 0xff9d9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xfea1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xff9f9f9f, 0xfea1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xfea1a1a1, 0xfea0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xff8a8a8a, 0xfe8b8b8b, 0xee8b8b8b, 0x20878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x10afafaf, 0xdfa0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xfe9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xff9d9e9e, 0xff9d9d9d, 0xfe9c9c9c, 0xff9a9a9a, 0xff979797, 0xff959595, 0xff939393, 0xff929292, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff929292, 0xff929292, 0xff929292, 0xff939393, 0xff929292, 0xff929292, 0xff919191, 0xff8f8f8f, 0xff8d8d8d, 0xff8b8b8b, 0xff888888, 0xfe808080, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff858585, 0xff888888, 0xff8a8a8a, 0xff8c8c8c, 0xff8e8e8e, 0xff919191, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xfe929292, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff929292, 0xff939393, 0xfe969696, 0xff979797, 0xff9a9a9a, 0xff9b9b9b, 0xff9d9d9d, 0xff9d9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xffa0a0a0, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff898989, 0xff898989, 0x308a8a8a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xaf9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xfe9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9d9d, 0xfe9c9c9c, 0xff9a9a9a, 0xfe999999, 0xfe989898, 0xfe979797, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe969696, 0xff959595, 0xff969696, 0xff969696, 0xfe969696, 0xfe949494, 0xff929292, 0xff909090, 0xfe8d8d8d, 0xff8a8a8a, 0xff868686, 0xff323232, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff252525, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff323232, 0xfe878787, 0xff8a8a8a, 0xff8c8c8c, 0xfe909090, 0xfe939393, 0xff949494, 0xff969696, 0xff969696, 0xfe979797, 0xfe979797, 0xff969696, 0xff959595, 0xfe959595, 0xff949494, 0xfe949494, 0xff949494, 0xfe959595, 0xff959595, 0xff969696, 0xff989898, 0xff9a9a9a, 0xfe9c9c9c, 0xff9d9d9d, 0xff9d9e9e, 0xff9e9e9e, 0xfea0a0a0, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xfe9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xfe9f9f9f, 0xff9e9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xfe9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xfe888888, 0x5f898989, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x7f9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xfe9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9a9a9a, 0xff989898, 0xff989898, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xfe989898, 0xff989898, 0xff989898, 0xfe9a9a9a, 0xff989898, 0xff969696, 0xff949494, 0xff919191, 0xff8e8e8e, 0xff8b8b8b, 0xfe898989, 0xff3f3f3f, 0xff252525, 0xff232323, 0xff232323, 0xff252525, 0xff252525, 0xff252525, 0xff232323, 0xff232323, 0xff252525, 0xff252525, 0xff232323, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff404040, 0xff888888, 0xff8b8b8b, 0xff8e8e8e, 0xff919191, 0xff949494, 0xff969696, 0xff979797, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xff989898, 0xff979797, 0xff979797, 0xff969696, 0xff969696, 0xff979797, 0xff989898, 0xff989898, 0xff9a9a9a, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xfe9f9f9f, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9f9f9f, 0xfe9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0x80878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xef9e9e9e, 0xfe9d9e9d, 0xfe9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xff9b9b9b, 0xfe9c9c9c, 0xff9a9a9a, 0xff999999, 0xff999999, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff989898, 0xfe979797, 0xfe949494, 0xff909090, 0xff8d8d8d, 0xff898989, 0xff757575, 0xff313131, 0xff252525, 0xff232323, 0xff232323, 0xff252525, 0xff232323, 0xff252525, 0xff252525, 0xff232323, 0xff252525, 0xff232323, 0xff252525, 0xff232323, 0xff232323, 0xff232323, 0xff2a2a2a, 0xff747474, 0xff898989, 0xff8c8c8c, 0xff909090, 0xfe949494, 0xff959595, 0xff979797, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xfe9a9a9a, 0xff989898, 0xfe999999, 0xff989898, 0xff999999, 0xff9a9a9a, 0xff9b9b9b, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xfe9d9e9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9a9a9a, 0xff999999, 0xff969696, 0xfe959595, 0xff919191, 0xff8e8e8e, 0xfe8b8b8b, 0xff868686, 0xfe848484, 0xff7f7f7f, 0xff7d7d7d, 0xff7c7c7c, 0xfe7b7b7b, 0xff7a7a7a, 0xff797979, 0xfe797979, 0xff797979, 0xff797979, 0xfe7a7a7a, 0xff7b7b7b, 0xfe7c7c7c, 0xff7e7e7e, 0xff808080, 0xff828282, 0xfe878787, 0xfe8b8b8b, 0xff8e8e8e, 0xff919191, 0xff949494, 0xff969696, 0xff999999, 0xfe9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9e9e, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xfe9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff999999, 0xfe989898, 0xff959595, 0xff919191, 0xff8e8e8e, 0xfe8b8b8b, 0xff878787, 0xff838383, 0xfe818181, 0xff7e7e7e, 0xff7c7c7c, 0xfe7b7b7b, 0xfe7a7a7a, 0xff797979, 0xff7a7a7a, 0xff7a7a7a, 0xff7a7a7a, 0xff7a7a7a, 0xff7b7b7b, 0xff7c7c7c, 0xfe7e7e7e, 0xff818181, 0xff838383, 0xff878787, 0xff8b8b8b, 0xff8e8e8e, 0xfe939393, 0xff959595, 0xfe989898, 0xff999999, 0xff9b9b9b, 0xfe9c9c9c, 0xfe9c9c9c, 0xfe9d9d9d, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xfe9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff989898, 0xff959595, 0xff929292, 0xff909090, 0xff8b8b8b, 0xff878787, 0xff848484, 0xff818181, 0xff7f7f7f, 0xfe7d7d7d, 0xff7c7c7c, 0xff7b7b7b, 0xfe7a7a7a, 0xff7a7a7a, 0xff7b7b7b, 0xfe7a7a7a, 0xfe7b7b7b, 0xff7b7b7b, 0xff7d7d7d, 0xff7f7f7f, 0xff818181, 0xff858585, 0xff888888, 0xfe8c8c8c, 0xff8f8f8f, 0xfe939393, 0xff959595, 0xff989898, 0xff999999, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xfe9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9a9a9a, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xfe9b9b9b, 0xff9b9b9b, 0xff999999, 0xff989898, 0xff969696, 0xfe939393, 0xff909090, 0xff8c8c8c, 0xff898989, 0xfe868686, 0xff828282, 0xfe818181, 0xfe7e7e7e, 0xff7d7d7d, 0xff7c7c7c, 0xfe7b7b7b, 0xfe7c7c7c, 0xff7b7b7b, 0xff7b7b7b, 0xff7c7c7c, 0xff7c7c7c, 0xff7e7e7e, 0xff818181, 0xff828282, 0xff858585, 0xff898989, 0xfe8d8d8d, 0xff909090, 0xff939393, 0xff959595, 0xff979797, 0xff999999, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xfe9b9b9b, 0xfe9c9c9c, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xfe9b9b9b, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xfe9a9a9a, 0xff999999, 0xff979797, 0xff959595, 0xff939393, 0xff909090, 0xff8d8d8d, 0xff8a8a8a, 0xff868686, 0xff848484, 0xff818181, 0xfe818181, 0xfe7e7e7e, 0xff7d7d7d, 0xff7d7d7d, 0xff7d7d7d, 0xff7d7d7d, 0xfe7d7d7d, 0xfe7d7d7d, 0xff7e7e7e, 0xff7f7f7f, 0xff818181, 0xff848484, 0xff878787, 0xff8a8a8a, 0xff8d8d8d, 0xff909090, 0xff949494, 0xff959595, 0xff979797, 0xfe9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xfe9b9b9b, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xfe9a9a9a, 0xff989898, 0xff979797, 0xfe979797, 0xff939393, 0xfe929292, 0xfe8f8f8f, 0xff8b8b8b, 0xff888888, 0xff868686, 0xff838383, 0xff828282, 0xff818181, 0xff7f7f7f, 0xff808080, 0xff7f7f7f, 0xff7f7f7f, 0xfe808080, 0xff808080, 0xff808080, 0xff828282, 0xff838383, 0xff858585, 0xff888888, 0xff8b8b8b, 0xff8e8e8e, 0xfe929292, 0xfe959595, 0xff969696, 0xfe989898, 0xff989898, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xff9a9a9a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe999999, 0xfe999999, 0xff999999, 0xfe9a9a9a, 0xfe999999, 0xfe999999, 0xff989898, 0xfe999999, 0xfe999999, 0xfe999999, 0xff989898, 0xff989898, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xfe999999, 0xfe999999, 0xff999999, 0xff999999, 0xfe999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xfe999999, 0xff999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff989898, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff979797, 0xff959595, 0xfe959595, 0xff929292, 0xff909090, 0xff8d8d8d, 0xff8a8a8a, 0xff888888, 0xfe878787, 0xff848484, 0xff838383, 0xff838383, 0xff828282, 0xfe838383, 0xff828282, 0xff838383, 0xfe838383, 0xff838383, 0xff848484, 0xff858585, 0xff888888, 0xff8a8a8a, 0xff8c8c8c, 0xff8f8f8f, 0xff929292, 0xfe959595, 0xff959595, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff999999, 0xff989898, 0xfe999999, 0xff999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe999999, 0xfe9a9a9a, 0xff999999, 0xfe999999, 0xff989898, 0xfe9a9a9a, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xfe9a9a9a, 0xff989898, 0xfe999999, 0xfe9a9a9a, 0xfe999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff979797, 0xff979797, 0xff959595, 0xfe959595, 0xff939393, 0xff909090, 0xff8e8e8e, 0xff8c8c8c, 0xff8a8a8a, 0xfe898989, 0xff888888, 0xff868686, 0xfe878787, 0xff868686, 0xff858585, 0xff858585, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff888888, 0xff8a8a8a, 0xff8c8c8c, 0xff8e8e8e, 0xff909090, 0xff939393, 0xff949494, 0xfe969696, 0xff969696, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xfe989898, 0xfe999999, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff979797, 0xfe989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff989898, 0xfe989898, 0xff989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xfe989898, 0xff989898, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff989898, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff969696, 0xfe979797, 0xfe959595, 0xff939393, 0xff929292, 0xff909090, 0xff8e8e8e, 0xff8d8d8d, 0xff8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff898989, 0xfe8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8d8d8d, 0xff8e8e8e, 0xfe919191, 0xff929292, 0xff939393, 0xff959595, 0xff959595, 0xfe979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff989898, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe979797, 0xff969696, 0xfe979797, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff979797, 0xff969696, 0xfe979797, 0xff969696, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff979797, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xff969696, 0xfe989898, 0xff969696, 0xff979797, 0xff979797, 0xfe979797, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xfe979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff969696, 0xff969696, 0xff979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff959595, 0xff959595, 0xff949494, 0xff929292, 0xff929292, 0xff909090, 0xff8f8f8f, 0xff8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff909090, 0xff929292, 0xff939393, 0xfe959595, 0xff959595, 0xff959595, 0xff969696, 0xff979797, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xff979797, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe969696, 0xfe979797, 0xff969696, 0xfe969696, 0xff959595, 0xff969696, 0xff969696, 0xff959595, 0xfe979797, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xff959595, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff959595, 0xff969696, 0xfe969696, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff959595, 0xfe979797, 0xff969696, 0xfe979797, 0xfe969696, 0xff949494, 0xfe949494, 0xfe949494, 0xff929292, 0xff919191, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe909090, 0xff8f8f8f, 0xff909090, 0xff919191, 0xff919191, 0xff929292, 0xff939393, 0xff949494, 0xfe959595, 0xfe969696, 0xff969696, 0xfe979797, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xfe969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff959595, 0xff959595, 0xff969696, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff959595, 0xff969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe959595, 0xff959595, 0xfe969696, 0xfe969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe959595, 0xff949494, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xfe969696, 0xff959595, 0xfe959595, 0xff959595, 0xff959595, 0xfe959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xff959595, 0xfe959595, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff969696, 0xff959595, 0xff949494, 0xfe959595, 0xff959595, 0xff959595, 0xff959595, 0xff969696, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xff939393, 0xfe939393, 0xff919191, 0xff919191, 0xfe929292, 0xfe919191, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xff929292, 0xff929292, 0xff939393, 0xff949494, 0xff949494, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff949494, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe959595, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xff959595, 0xfe959595, 0xff959595, 0xff959595, 0xff969696, 0xfe959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xfe959595, 0xff959595, 0xfe959595, 0xfe959595, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xff969696, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xfe959595, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff959595, 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff959595, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xff949494, 0xff939393, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xfe949494, 0xfe949494, 0xff949494, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xff939393, 0xff949494, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xfe949494, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xff949494, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xfe949494, 0xff939393, 0xfe949494, 0xff929292, 0xff939393, 0xff939393, 0xfe949494, 0xff929292, 0xff929292, 0xfe949494, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xff949494, 0xfe949494, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xff939393, 0xff949494, 0xfe949494, 0xff939393, 0xff949494, 0xfe949494, 0xfe949494, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xfe949494, 0xff949494, 0xff949494, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xef939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff929292, 0xff929292, 0xff939393, 0xfe939393, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff929292, 0xff939393, 0xfe939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff929292, 0xfe939393, 0xff929292, 0xff939393, 0xff939393, 0xfe939393, 0xfe939393, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xfe949494, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xfe949494, 0xff929292, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xef929292, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xdf929292, 0xff929292, 0xfe939393, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xfe929292, 0xff929292, 0xff929292, 0xcf939393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xaf929292, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xfe929292, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff929292, 0xfe929292, 0xff929292, 0xff929292, 0xff919191, 0xfe929292, 0xff929292, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff929292, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xfe919191, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xfe929292, 0xfe929292, 0xff929292, 0xff929292, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff929292, 0xfe919191, 0xfe929292, 0xfe929292, 0xff929292, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xff929292, 0xfe929292, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xfe929292, 0xff919191, 0xff929292, 0xff919191, 0xb0929292, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x70929292, 0xff919191, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff919191, 0xfe919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xfe919191, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xfe919191, 0xff909090, 0xfe919191, 0xfe919191, 0xff919191, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xfe919191, 0xff919191, 0xff909090, 0xff919191, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xff919191, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xff919191, 0xff919191, 0xfe919191, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xfe919191, 0xff919191, 0xfe919191, 0xfe919191, 0xff919191, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xfe919191, 0xfe919191, 0xfe919191, 0xff909090, 0xff919191, 0xff919191, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xff909090, 0xfe919191, 0xff909090, 0xff919191, 0xff919191, 0xff919191, 0xfe919191, 0xfe919191, 0xff909090, 0xfe929292, 0xff909090, 0xff909090, 0xff919191, 0xfe919191, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff919191, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0x80919191, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x408f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xfe909090, 0xfe919191, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xfe919191, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xfe909090, 0xff909090, 0xff909090, 0x408f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xee909090, 0xfe909090, 0xfe8f8f8f, 0xff909090, 0xfe909090, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff909090, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xff909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff909090, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xfe909090, 0xfe8f8f8f, 0xfe909090, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xdf909090, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x808f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0x9f909090, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x108f8f8f, 0xff8e8e8e, 0xfe8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0x208f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x8f8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0x9f8f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x108f8f8f, 0xef8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8c8c8c, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xdf8d8d8d, 0x20878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x708b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0x5f8c8c8c, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x908a8a8a, 0xfe8b8b8b, 0xfe8c8c8c, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0x908a8a8a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xbf8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xfe8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xfe8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xcf8a8a8a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x108f8f8f, 0xcf898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xbf8a8a8a, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x90888888, 0xfe898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff888888, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff888888, 0xfe898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xfe898989, 0xff898989, 0xff888888, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xfe898989, 0xfe898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xfe898989, 0xff898989, 0xfe8a8a8a, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff888888, 0xff888888, 0xff888888, 0xff898989, 0xff888888, 0xfe898989, 0xff888888, 0xfe898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff888888, 0xff898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0x90878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x60878787, 0xdf888888, 0xff888888, 0xff888888, 0xfe888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xfe888888, 0xff888888, 0xff878787, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff878787, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff878787, 0xff888888, 0xff888888, 0xfe898989, 0xfe888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff898989, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff878787, 0xff878787, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xfe898989, 0xff888888, 0xfe898989, 0xff888888, 0xef898989, 0x70868686, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20878787, 0xa0878787, 0xfe878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff888888, 0xff888888, 0xff878787, 0xff878787, 0xff878787, 0xff888888, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff888888, 0xff878787, 0xff888888, 0xff878787, 0xfe878787, 0xff878787, 0xfe888888, 0xfe878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff888888, 0xff878787, 0xfe888888, 0xfe888888, 0xff878787, 0xfe878787, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xfe888888, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xfe878787, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xfe878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0x90878787, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20808080, 0x9f878787, 0xdf878787, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xfe878787, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff868686, 0xfe878787, 0xff868686, 0xfe878787, 0xff878787, 0xfe878787, 0xff878787, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff868686, 0xfe878787, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xfe878787, 0xfe878787, 0xfe878787, 0xff868686, 0xff878787, 0xfe878787, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xfe878787, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xfe878787, 0xff878787, 0xff878787, 0xfe878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xfe878787, 0xfe878787, 0xff878787, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xfe878787, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xef888888, 0x80878787, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x40878787, 0x80858585, 0xaf888888, 0xcf868686, 0xef868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff858585, 0xfe868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xff858585, 0xff868686, 0xfe868686, 0xff858585, 0xff868686, 0xfe868686, 0xfe868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xfe868686, 0xfe878787, 0xff868686, 0xfe868686, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff858585, 0xff858585, 0xfe868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xfe868686, 0xfe868686, 0xff858585, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xfe868686, 0xfe878787, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xfe868686, 0xff868686, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xfe878787, 0xff858585, 0xff868686, 0xff858585, 0xff858585, 0xfe868686, 0xff858585, 0xff858585, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xff868686, 0xfe868686, 0xff858585, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff858585, 0xff868686, 0xff868686, 0xff858585, 0xff868686, 0xef888888, 0xdf878787, 0xaf868686, 0x70868686, 0x40878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }; diff --git a/Private/NewBoot/Source/CDROM/.NEWDEV b/Private/NewBoot/Source/CDROM/.NEWDEV deleted file mode 100644 index d5d2badf..00000000 --- a/Private/NewBoot/Source/CDROM/.NEWDEV +++ /dev/null @@ -1,2 +0,0 @@ -[POWER_MANAGEMENT] -ENFORCE_ACPI=YES \ No newline at end of file diff --git a/Private/NewBoot/Source/CDROM/.gitkeep b/Private/NewBoot/Source/CDROM/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Private/NewBoot/Source/CDROM/EFI/BOOT/.gitkeep b/Private/NewBoot/Source/CDROM/EFI/BOOT/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx index e0d5d8c9..21b1505a 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx @@ -59,7 +59,7 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, .Write(L"\r\n"); BootDeviceATA ataDev; - Boolean isEpmFound = No; + Boolean isGptFound = No; UInt32 MapKey = 0; UInt32* SizePtr = nullptr; @@ -121,7 +121,7 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, ToolboxInitRsrc(); - ToolboxDrawZone(RGB(20, 20, 20), handoverHdrPtr->f_GOP.f_Height, handoverHdrPtr->f_GOP.f_Width, 0, 0); + ToolboxDrawZone(RGB(FF, FF, FF), handoverHdrPtr->f_GOP.f_Height, handoverHdrPtr->f_GOP.f_Width, 0, 0); ToolboxClearRsrc(); diff --git a/Private/NewBoot/Source/HEL/POWER/.gitkeep b/Private/NewBoot/Source/HEL/POWER/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S b/Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S new file mode 100644 index 00000000..c611467d --- /dev/null +++ b/Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S @@ -0,0 +1,34 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +.section .boot_hdr +.align 4 + +/* NewBoot boot header begin */ + +boot_hdr_mag: + .ascii "LX" +boot_hdr_name: + // it has to match ten bytes. + .asciz "NewBoot\0\0\0" +boot_hdr_ver: + .word 0x104 +boot_hdr_proc: + .long bootloader_start + +/* NewOS boot header end */ + +.extern bootloader_main +.extern bootloader_stack + +.globl bootloader_start +bootloader_start: + mflr 4 /* real address of .Laddr */ + lwz 0,(bootloader_stack-bootloader_start)(4) /* stack address location */ + mr 1,0 /* use user defined stack */ + + bl bootloader_main + blr diff --git a/Private/NewBoot/Source/HEL/POWER/BootEPM.cxx b/Private/NewBoot/Source/HEL/POWER/BootEPM.cxx new file mode 100644 index 00000000..72276ef9 --- /dev/null +++ b/Private/NewBoot/Source/HEL/POWER/BootEPM.cxx @@ -0,0 +1,118 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include +#include + +#define kEPMSectorSize (1024U) +#define kEPMSwapSize MIB(16) + +// {310E1FC7-2060-425D-BE7B-75A37CC679BC} +STATIC const BlockGUID kEPMGuid = { + 0x310e1fc7, + 0x2060, + 0x425d, + {0xbe, 0x7b, 0x75, 0xa3, 0x7c, 0xc6, 0x79, 0xbc}}; + +/// @brief Write epm partition to disk. +/// @param namePart partition name +/// @param namePartLength length of name +/// @param bootDev disk interface. +/// @return +EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLength, + BootDevice* bootDev) { + if (namePartLength > kEPMNameLength || !namePart) return No; + if (!bootDev) return No; + + bootDev->Leak().mBase = kEPMStartPartitionBlk; + bootDev->Leak().mSize = kEPMSectorSize; + + Char buf[kEPMSectorSize] = {0}; + + bootDev->Read(buf, 1); + + BTextWriter writer; + + writer.Write(L"NewBoot: Checking for an EPM partition...\r\n"); + + for (SizeT index = 0; index < kEPMMagicLength; ++index) { + if (buf[index] != kEPMMagic[index]) { + writer.Write(L"NewBoot: Writing an EPM partition...\r\n"); + + BootBlockType* bootBlock = (BootBlockType*)buf; + + bootBlock->Version = kEPMRevision; + bootBlock->NumBlocks = 2; + + for (SizeT i = 0; i < kEPMNameLength; ++i) { + bootBlock->Magic[i] = kEPMMagic[i]; + } + + for (SizeT i = 0; i < namePartLength; ++i) { + bootBlock->Name[i] = namePart[i]; + } + + bootBlock->LbaStart = + sizeof(BootBlockType) + (sizeof(PartitionBlockType) * kEPMMaxBlks); + + bootBlock->SectorSz = kEPMSectorSize; + + bootBlock->Uuid = kEPMGuid; + + PartitionBlock* partBlock = (PartitionBlock*)(buf + sizeof(BootBlock)); + + char* fsName = "NewFS"; + int fsNameLength = 6; + + for (SizeT i = 0; i < fsNameLength; ++i) { + partBlock->Fs[i] = fsName[i]; + } + + partBlock->Version = kEPMNewOS; + + char* partName = "System HD"; + int partNameLength = 10; + + for (SizeT i = 0; i < partNameLength; ++i) { + partBlock->Name[i] = partName[i]; + } + + partBlock->SectorSz = kEPMSectorSize; + partBlock->LbaStart = kEPMStartPartitionBlk + kEPMSwapSize; + partBlock->Version = kNewFSVersionInteger; + partBlock->Kind = kNewFSPartitionTypeStandard; + partBlock->LbaEnd = 0UL; ///! grows on the disk. + + PartitionBlock* swapBlock = (PartitionBlock*)(buf + sizeof(BootBlock) + sizeof(PartitionBlock)); + + for (SizeT i = 0; i < fsNameLength; ++i) { + swapBlock->Fs[i] = fsName[i]; + } + + swapBlock->Version = kEPMNewOS; + + partName = "Swap HD"; + partNameLength = 8; + + for (SizeT i = 0; i < partNameLength; ++i) { + swapBlock->Name[i] = partName[i]; + } + + swapBlock->SectorSz = kEPMSectorSize; + swapBlock->LbaStart = kEPMStartPartitionBlk; + swapBlock->Version = kNewFSVersionInteger; + swapBlock->Kind = kNewFSPartitionTypePage; + swapBlock->LbaEnd = kEPMSwapSize; /// 4 MIB swap partition. + + bootDev->Write(buf, 1); + + return No; + } + } + + writer.Write(L"NewBoot: Partition found, everything's OK.\r\n"); + return Yes; +} diff --git a/Private/NewBoot/Source/HEL/PowerPC/.gitkeep b/Private/NewBoot/Source/HEL/PowerPC/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx b/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx deleted file mode 100644 index 72276ef9..00000000 --- a/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx +++ /dev/null @@ -1,118 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include -#include - -#define kEPMSectorSize (1024U) -#define kEPMSwapSize MIB(16) - -// {310E1FC7-2060-425D-BE7B-75A37CC679BC} -STATIC const BlockGUID kEPMGuid = { - 0x310e1fc7, - 0x2060, - 0x425d, - {0xbe, 0x7b, 0x75, 0xa3, 0x7c, 0xc6, 0x79, 0xbc}}; - -/// @brief Write epm partition to disk. -/// @param namePart partition name -/// @param namePartLength length of name -/// @param bootDev disk interface. -/// @return -EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLength, - BootDevice* bootDev) { - if (namePartLength > kEPMNameLength || !namePart) return No; - if (!bootDev) return No; - - bootDev->Leak().mBase = kEPMStartPartitionBlk; - bootDev->Leak().mSize = kEPMSectorSize; - - Char buf[kEPMSectorSize] = {0}; - - bootDev->Read(buf, 1); - - BTextWriter writer; - - writer.Write(L"NewBoot: Checking for an EPM partition...\r\n"); - - for (SizeT index = 0; index < kEPMMagicLength; ++index) { - if (buf[index] != kEPMMagic[index]) { - writer.Write(L"NewBoot: Writing an EPM partition...\r\n"); - - BootBlockType* bootBlock = (BootBlockType*)buf; - - bootBlock->Version = kEPMRevision; - bootBlock->NumBlocks = 2; - - for (SizeT i = 0; i < kEPMNameLength; ++i) { - bootBlock->Magic[i] = kEPMMagic[i]; - } - - for (SizeT i = 0; i < namePartLength; ++i) { - bootBlock->Name[i] = namePart[i]; - } - - bootBlock->LbaStart = - sizeof(BootBlockType) + (sizeof(PartitionBlockType) * kEPMMaxBlks); - - bootBlock->SectorSz = kEPMSectorSize; - - bootBlock->Uuid = kEPMGuid; - - PartitionBlock* partBlock = (PartitionBlock*)(buf + sizeof(BootBlock)); - - char* fsName = "NewFS"; - int fsNameLength = 6; - - for (SizeT i = 0; i < fsNameLength; ++i) { - partBlock->Fs[i] = fsName[i]; - } - - partBlock->Version = kEPMNewOS; - - char* partName = "System HD"; - int partNameLength = 10; - - for (SizeT i = 0; i < partNameLength; ++i) { - partBlock->Name[i] = partName[i]; - } - - partBlock->SectorSz = kEPMSectorSize; - partBlock->LbaStart = kEPMStartPartitionBlk + kEPMSwapSize; - partBlock->Version = kNewFSVersionInteger; - partBlock->Kind = kNewFSPartitionTypeStandard; - partBlock->LbaEnd = 0UL; ///! grows on the disk. - - PartitionBlock* swapBlock = (PartitionBlock*)(buf + sizeof(BootBlock) + sizeof(PartitionBlock)); - - for (SizeT i = 0; i < fsNameLength; ++i) { - swapBlock->Fs[i] = fsName[i]; - } - - swapBlock->Version = kEPMNewOS; - - partName = "Swap HD"; - partNameLength = 8; - - for (SizeT i = 0; i < partNameLength; ++i) { - swapBlock->Name[i] = partName[i]; - } - - swapBlock->SectorSz = kEPMSectorSize; - swapBlock->LbaStart = kEPMStartPartitionBlk; - swapBlock->Version = kNewFSVersionInteger; - swapBlock->Kind = kNewFSPartitionTypePage; - swapBlock->LbaEnd = kEPMSwapSize; /// 4 MIB swap partition. - - bootDev->Write(buf, 1); - - return No; - } - } - - writer.Write(L"NewBoot: Partition found, everything's OK.\r\n"); - return Yes; -} diff --git a/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S b/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S deleted file mode 100644 index 53d9d4f2..00000000 --- a/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S +++ /dev/null @@ -1,34 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -.section .init -.align 4 - -/* NewOS kernel header begin */ - -boot_hdr_mag: - .ascii "LX" -boot_hdr_name: - // it has to match ten bytes. - .asciz "NewBoot\0\0\0" -boot_hdr_ver: - .word 0x104 -boot_hdr_proc: - .long bootloader_start - -/* NewOS kernel header end */ - -.extern bootloader_main -.extern bootloader_stack - -.globl bootloader_start -bootloader_start: - mflr 4 /* real address of .Laddr */ - lwz 0,(bootloader_stack-bootloader_start)(4) /* stack address location */ - mr 1,0 /* use user defined stack */ - - bl bootloader_main - blr diff --git a/Private/NewBoot/Source/makefile b/Private/NewBoot/Source/makefile index 25eb04c0..530abea8 100644 --- a/Private/NewBoot/Source/makefile +++ b/Private/NewBoot/Source/makefile @@ -38,6 +38,7 @@ invalid-recipe: .PHONY: all all: compile-amd64 + mkdir -p CDROM/EFI/BOOT $(LD_GNU) $(OBJ) $(LD_FLAGS) -o NewBoot.exe $(COPY) NewBoot.exe CDROM/EFI/BOOT/BOOTX64.EFI $(COPY) NewBoot.exe CDROM/EFI/BOOT/NEWBOOT.EFI @@ -72,7 +73,8 @@ clean: .PHONY: help help: @echo "=== HELP ===" - @echo "epm-img: Format a disk using the Explicit Partition Map/GPT." + @echo "epm-img: Format a disk using the Explicit Partition Map." + @echo "gpt-img: Format a disk using the Explicit Partition Map." @echo "clean: clean bootloader." @echo "bootloader-amd64: Build bootloader. (PC AMD64)" @echo "run-efi-amd64: Run bootloader. (PC AMD64)" diff --git a/Public/Developer/SystemLib/POWER/CoreAssembly.s b/Public/Developer/SystemLib/POWER/CoreAssembly.s new file mode 100644 index 00000000..99605870 --- /dev/null +++ b/Public/Developer/SystemLib/POWER/CoreAssembly.s @@ -0,0 +1,23 @@ +; /* ------------------------------------------- +; +; Copyright Mahrouss Logic +; +; Purpose: POWER low level I/O +; +; ------------------------------------------- */ + +/* @brief Application getter */ +/* @throws: ApptError: appartement error. */ +export .code64 RtGetAppPointer: + mflr r3 + stw 0x10, 0(r3) /* sysGetProcessObject */ + sc + + blr + +export .code64 RtAssertTriggerInterrupt: + mflr r3 + stw 0x11, 0(r3) /* sysTerminateCurrentProcess */ + sc + + blr diff --git a/Public/Developer/SystemLib/PowerPC/CoreAssembly.s b/Public/Developer/SystemLib/PowerPC/CoreAssembly.s deleted file mode 100644 index 60656bdf..00000000 --- a/Public/Developer/SystemLib/PowerPC/CoreAssembly.s +++ /dev/null @@ -1,21 +0,0 @@ -; /* ------------------------------------------- -; -; Copyright Mahrouss Logic -; -; Purpose: POWER low level I/O -; -; ------------------------------------------- */ - -/* @brief Application getter */ -/* @throws: ApptError: appartement error. */ -export .code64 RtGetAppPointer: - stw 0x10, 0(r3) /* sysGetProcessObject */ - sc - - blr - -export .code64 RtAssertTriggerInterrupt: - stw 0x11, 0(r3) /* sysTerminateCurrentProcess */ - sc - - blr -- cgit v1.2.3 From 76c0c6b21532aee82df5bd62cd886bc63d933899 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 22 Apr 2024 09:57:35 +0200 Subject: MHR-5: Fix BootFileReader on EFI platforms (AMD64), also added CoreBoot directory for CoreBoot API (NeWS) Signed-off-by: Amlal El Mahrouss --- Private/FirmwareKit/CoreBoot/.gitkeep | 0 Private/FirmwareKit/EFI/API.hxx | 4 +- Private/HALKit/AMD64/HalKernelMain.cxx | 1 - Private/NewBoot/BootKit/BootKit.hxx | 2 +- Private/NewBoot/Source/CDROM/SplashScreen.fmt | 6 +++ .../NewBoot/Source/HEL/AMD64/BootFileReader.cxx | 26 +++++++--- Private/NewBoot/Source/HEL/AMD64/BootMain.cxx | 40 +++++++++++++-- Private/NewBoot/Source/makefile | 20 ++++++-- Private/Source/AppMain.cxx | 1 - Private/makefile | 9 +++- Public/Developer/SystemLib/Headers/Dialog.h | 4 +- Public/Developer/SystemLib/Headers/Wm.h | 59 +++++++++++----------- 12 files changed, 120 insertions(+), 52 deletions(-) create mode 100644 Private/FirmwareKit/CoreBoot/.gitkeep create mode 100644 Private/NewBoot/Source/CDROM/SplashScreen.fmt diff --git a/Private/FirmwareKit/CoreBoot/.gitkeep b/Private/FirmwareKit/CoreBoot/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Private/FirmwareKit/EFI/API.hxx b/Private/FirmwareKit/EFI/API.hxx index cfb3f425..138d6b42 100644 --- a/Private/FirmwareKit/EFI/API.hxx +++ b/Private/FirmwareKit/EFI/API.hxx @@ -19,7 +19,7 @@ EXTERN_C void rt_hlt(); namespace EFI { /// @brief Halt and clear interrupts. -/// @return +/// @return inline Void Stop() noexcept { while (1) { rt_hlt(); @@ -51,7 +51,7 @@ inline UInt32 Platform() noexcept { return kPEMachineAMD64; } */ inline void RaiseHardError(const EfiCharType *ErrorCode, const EfiCharType *Reason) noexcept { - ST->ConOut->OutputString(ST->ConOut, L"*** STOP ***\r\n"); + ST->ConOut->OutputString(ST->ConOut, L"\r\n*** STOP ***\r\n"); ST->ConOut->OutputString(ST->ConOut, L"*** Error: "); ST->ConOut->OutputString(ST->ConOut, ErrorCode); diff --git a/Private/HALKit/AMD64/HalKernelMain.cxx b/Private/HALKit/AMD64/HalKernelMain.cxx index 13d040b5..57c37778 100644 --- a/Private/HALKit/AMD64/HalKernelMain.cxx +++ b/Private/HALKit/AMD64/HalKernelMain.cxx @@ -5,7 +5,6 @@ ------------------------------------------- */ #include -#include #include #include #include diff --git a/Private/NewBoot/BootKit/BootKit.hxx b/Private/NewBoot/BootKit/BootKit.hxx index 3793e481..117e32df 100644 --- a/Private/NewBoot/BootKit/BootKit.hxx +++ b/Private/NewBoot/BootKit/BootKit.hxx @@ -103,7 +103,7 @@ class BFileReader final { ~BFileReader(); public: - Void ReadAll(); + Void ReadAll(SizeT until, SizeT chunk = 4096); enum { kOperationOkay, diff --git a/Private/NewBoot/Source/CDROM/SplashScreen.fmt b/Private/NewBoot/Source/CDROM/SplashScreen.fmt new file mode 100644 index 00000000..e47a66a6 --- /dev/null +++ b/Private/NewBoot/Source/CDROM/SplashScreen.fmt @@ -0,0 +1,6 @@ +Welcome to NeWS + +Brought to you by: +* MicroKernel, Bootloader: Amlal EL Mahrouss. + +Copyright Mahrouss-Logic, all rights reserved. diff --git a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx index 0046698c..3a445d61 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx @@ -96,13 +96,11 @@ BFileReader::~BFileReader() { /** @brief this reads all of the buffer. - @param ImageHandle used internally. + @param until read until size is reached. */ -Void BFileReader::ReadAll() { - if (this->mErrorCode != kOperationOkay) return; - +Void BFileReader::ReadAll(SizeT until, SizeT chunk) { if (mBlob == nullptr) { - if (auto err = BS->AllocatePool(EfiLoaderCode, mSizeFile, + if (auto err = BS->AllocatePool(EfiLoaderCode, until, (VoidPtr*)&mBlob) != kEfiOk) { mWriter.Write(L"*** EFI-Code: ").Write(err).Write(L" ***\r\n"); EFI::RaiseHardError(L"NewBoot_PageError", L"Allocation error."); @@ -111,9 +109,23 @@ Void BFileReader::ReadAll() { mErrorCode = kNotSupported; - if (mFile->Read(mFile, &mSizeFile, (VoidPtr)((UIntPtr)mBlob)) != kEfiOk) - return; + UInt64 bufSize = chunk; + UInt64 szCnt = 0; + UInt64 curSz = 0; + + while (curSz < until) { + if (mFile->Read(mFile, &bufSize, (VoidPtr)((UIntPtr)mBlob + curSz)) != kEfiOk) { + break; + } + + szCnt += bufSize; + curSz += bufSize; + + if (bufSize == 0) + break; + } + mSizeFile = curSz; mErrorCode = kOperationOkay; } diff --git a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx index 21b1505a..638fe37a 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx @@ -121,11 +121,14 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, ToolboxInitRsrc(); - ToolboxDrawZone(RGB(FF, FF, FF), handoverHdrPtr->f_GOP.f_Height, handoverHdrPtr->f_GOP.f_Width, 0, 0); + ToolboxDrawZone(RGB(FF, FF, FF), handoverHdrPtr->f_GOP.f_Height, + handoverHdrPtr->f_GOP.f_Width, 0, 0); ToolboxClearRsrc(); - ToolboxDrawRsrc(Driver, DRIVER_HEIGHT, DRIVER_WIDTH, (handoverHdrPtr->f_GOP.f_Width - DRIVER_HEIGHT) / 2, (handoverHdrPtr->f_GOP.f_Height - DRIVER_HEIGHT) / 2); + ToolboxDrawRsrc(Driver, DRIVER_HEIGHT, DRIVER_WIDTH, + (handoverHdrPtr->f_GOP.f_Width - DRIVER_HEIGHT) / 2, + (handoverHdrPtr->f_GOP.f_Height - DRIVER_HEIGHT) / 2); ToolboxClearRsrc(); @@ -147,9 +150,40 @@ EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); + BFileReader reader(L"SplashScreen.fmt", ImageHandle); + reader.ReadAll(512, 16); + + Char* buf = (Char*)reader.Blob(); + + for (SizeT i = 0; i < reader.Size(); ++i) { + if (buf[i] != '\n' && buf[i] != '\r') { + if (buf[i] == '*') { + writer.WriteCharacter('\t'); + } else { + writer.WriteCharacter(buf[i]); + } + } else + writer.Write(L"\r\n"); + } + + BFileReader kernelFile(L"NewKernel.exe", ImageHandle); + kernelFile.ReadAll(KIB(512), 4096); + + ExecOptionalHeaderPtr headerKind = (ExecOptionalHeaderPtr)rt_find_exec_header((DosHeaderPtr)kernelFile.Blob()); + + if (!headerKind) { + EFI::RaiseHardError(L"Bad-Exec", L"New Boot can't recognize this executable."); + } + + BootMainKind main = (BootMainKind)nullptr; + + if (!main) { + EFI::RaiseHardError(L"Bad-Exec", L"New Boot can't recognize this executable."); + } + EFI::ExitBootServices(MapKey, ImageHandle); - /// TODO: Read catalog and read NewKernel.exe + main(handoverHdrPtr); EFI::Stop(); diff --git a/Private/NewBoot/Source/makefile b/Private/NewBoot/Source/makefile index 530abea8..197eb91b 100644 --- a/Private/NewBoot/Source/makefile +++ b/Private/NewBoot/Source/makefile @@ -20,7 +20,7 @@ endif IMG=epm.img IMG_2=epm-slave.img -EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img +EMU_FLAGS=-net none -smp 4 -m 8G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img LD_FLAGS=-e Main --subsystem=10 @@ -36,13 +36,23 @@ FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KE invalid-recipe: @echo "invalid-recipe: Use make bootloader- instead." +KERNEL_OBJ=kernel.bin +DD=dd +IMG_CREATE=qemu-img +MAX_KERNEL_SIZE=1024K +BOOT_LOADER=NewBoot.exe +KERNEL=NewKernel.exe + .PHONY: all all: compile-amd64 mkdir -p CDROM/EFI/BOOT - $(LD_GNU) $(OBJ) $(LD_FLAGS) -o NewBoot.exe - $(COPY) NewBoot.exe CDROM/EFI/BOOT/BOOTX64.EFI - $(COPY) NewBoot.exe CDROM/EFI/BOOT/NEWBOOT.EFI - $(COPY) NewBoot.exe ../../Root/Boot/NewBoot.exe + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o $(KERNEL_OBJ) + $(IMG_CREATE) create -f raw $(BOOT_LOADER) $(MAX_KERNEL_SIZE) + $(DD) if=$(KERNEL_OBJ) of=$(BOOT_LOADER) bs=1 seek=0 conv=notrunc + $(COPY) $(BOOT_LOADER) CDROM/EFI/BOOT/BOOTX64.EFI + $(COPY) $(BOOT_LOADER) CDROM/EFI/BOOT/NEWBOOT.EFI + $(COPY) $(BOOT_LOADER) ../../Root/Boot/$(BOOT_LOADER) + $(COPY) ../../$(KERNEL) CDROM/$(KERNEL) ifneq ($(DEBUG_SUPPORT), ) DEBUG = -D__DEBUG__ diff --git a/Private/Source/AppMain.cxx b/Private/Source/AppMain.cxx index ba5d822f..87705393 100644 --- a/Private/Source/AppMain.cxx +++ b/Private/Source/AppMain.cxx @@ -5,7 +5,6 @@ ------------------------------------------- */ #include -#include #include #include #include diff --git a/Private/makefile b/Private/makefile index 4d871c82..128ccc55 100644 --- a/Private/makefile +++ b/Private/makefile @@ -56,9 +56,16 @@ newos-amd64-epm: clean OBJCOPY=x86_64-w64-mingw32-objcopy +KERNEL_OBJ=kernel.bin +DD=dd +IMG_CREATE=qemu-img +MAX_KERNEL_SIZE=1024K + .PHONY: link-amd64-epm link-amd64-epm: - $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL) + $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL_OBJ) + $(IMG_CREATE) create -f raw $(KERNEL) $(MAX_KERNEL_SIZE) + $(DD) if=$(KERNEL_OBJ) of=$(KERNEL) bs=1 seek=0 conv=notrunc $(COPY) $(KERNEL) Root/Boot .PHONY: all diff --git a/Public/Developer/SystemLib/Headers/Dialog.h b/Public/Developer/SystemLib/Headers/Dialog.h index 800f56db..823b3366 100644 --- a/Public/Developer/SystemLib/Headers/Dialog.h +++ b/Public/Developer/SystemLib/Headers/Dialog.h @@ -27,13 +27,13 @@ typedef struct _DialogPort { DialogPoint dlgPosition; WmDialogFn dlgProc; struct _WmGFX* dlgGfx; - struct _WindowPort* parentPort; + struct _WmWindowPort* parentPort; } DialogPort; /// @brief Creates a new dialog from a rsrc fork id. /// @param rsrcId the resource id. /// @return the dialog port. -CA_EXTERN_C DialogPort* DlgCreateFromRsrc(QWordType rsrcId); +CA_EXTERN_C DialogPort* DlgCreateFromRsrc(QWordType rsrcId); /// @brief Shows an message box according to format. /// @param title the message box title diff --git a/Public/Developer/SystemLib/Headers/Wm.h b/Public/Developer/SystemLib/Headers/Wm.h index 66ed96a3..f6484c29 100644 --- a/Public/Developer/SystemLib/Headers/Wm.h +++ b/Public/Developer/SystemLib/Headers/Wm.h @@ -7,21 +7,22 @@ #pragma once #include +#include "Headers/Dialog.h" /************************************************************* - * - * File: Wm.h + * + * File: Wm.h * Purpose: Window Manager API for NewOS. * Date: 3/26/24 - * + * * Copyright Mahrouss Logic, all rights reserved. - * + * *************************************************************/ struct _WmPoint; -struct _WindowPort; - -struct _ControlPort; +struct _WmWindowPort; +struct _WmGFX; +struct _WmControlPort; struct _WmPoint; /// @brief Window Graphics type. @@ -33,7 +34,7 @@ typedef struct _WmGFX { } WmGFX, *WmGFXRef; /// @brief Window procedure type. -typedef VoidType(*WmWindowFn)(struct _WindowPort* port, UInt32Type msg, UIntPtrType pParam, UIntPtrType iParam); +typedef VoidType(*WmWindowFn)(struct _WmWindowPort* port, UInt32Type msg, UIntPtrType pParam, UIntPtrType iParam); /// @brief A point, can represent the size, position of a window. typedef struct _WmPoint { @@ -42,7 +43,7 @@ typedef struct _WmPoint { /// @brief Window port type, can be used to control the window. -typedef struct _WindowPort { +typedef struct _WmWindowPort { WordType windowPort; WordType windowKind; BooleanType windowVisible : 1; @@ -56,12 +57,12 @@ typedef struct _WindowPort { WmPoint windowSize; WmGFXRef windowGfx; WmWindowFn windowProc; - struct _WindowPort* windowMenuPort; ///! Attached menu to it. - struct _WindowPort* windowParentPort; + struct _WmWindowPort* windowMenuPort; ///! Attached menu to it. + struct _WmWindowPort* windowParentPort; } WindowPort; /// @brief Control port type. -typedef struct _ControlPort { +typedef struct _WmControlPort { WordType controlPort; WordType controlKind; BooleanType controlVisible : 1; @@ -70,7 +71,7 @@ typedef struct _ControlPort { WmWindowFn controlProc; WmGFXRef controlGfx; WindowPort* parentPort; -} ControlPort; +} WmControlPort; enum { kWmErrIncompatible = 0x74, @@ -111,31 +112,31 @@ CA_EXTERN_C const ColorRef kRgbWhite; /// @brief Creates a new control /// @param id the control rsrc fork. -/// @return -CA_EXTERN_C ControlPort* WmCreateControl(DWordType id); +/// @return +CA_EXTERN_C WmControlPort* WmCreateControl(DWordType id); /// @brief Releases the control /// @param ctrlPort the control ref. -/// @return -CA_EXTERN_C VoidType WmReleaseControl(ControlPort* ctrlPort); +/// @return +CA_EXTERN_C VoidType WmReleaseControl(WmControlPort* ctrlPort); -/// @brief Moves a control inside a ControlPort. +/// @brief Moves a control inside a WmControlPort. /// @param ctrlPort the control ref. /// @param where where to move at. -/// @return -CA_EXTERN_C Int32Type WmSetControlPosition(ControlPort* ctrlPort, WmPoint where); +/// @return +CA_EXTERN_C Int32Type WmSetControlPosition(WmControlPort* ctrlPort, WmPoint where); /// @brief Enable control. -/// @param ctrlPort -/// @param enabled -/// @return -CA_EXTERN_C Int32Type WmSetControlEnabled(ControlPort* ctrlPort, BooleanType enabled); +/// @param ctrlPort +/// @param enabled +/// @return +CA_EXTERN_C Int32Type WmSetControlEnabled(WmControlPort* ctrlPort, BooleanType enabled); /// @brief Make control visible. -/// @param ctrlPort -/// @param visible -/// @return -CA_EXTERN_C Int32Type WmSetControlVisible(ControlPort* ctrlPort, BooleanType visible); +/// @param ctrlPort +/// @param visible +/// @return +CA_EXTERN_C Int32Type WmSetControlVisible(WmControlPort* ctrlPort, BooleanType visible); /// @brief Creates a new window. /// @param name the window name @@ -172,4 +173,4 @@ CA_EXTERN_C WindowPort* WmGetOSDlg(void); /// @brief Draws a blur effect on the window. /// @param wndPort the window port. -CA_EXTERN_C VoidType WmBlur(WindowPort* wndPort); \ No newline at end of file +CA_EXTERN_C VoidType WmBlur(WindowPort* wndPort); -- cgit v1.2.3