diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index b94fefa0..435dae31 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -190,10 +190,18 @@ void PackLinuxElf::addStubEntrySections(Filter const *) { addLoader("ELFMAINX", NULL); + //addLoader(getDecompressorSections(), NULL); + addLoader( + ( M_IS_NRV2E(ph.method) ? "NRV_HEAD,NRV2E,NRV_TAIL" + : M_IS_NRV2D(ph.method) ? "NRV_HEAD,NRV2D,NRV_TAIL" + : M_IS_NRV2B(ph.method) ? "NRV_HEAD,NRV2B,NRV_TAIL" + : M_IS_LZMA(ph.method) ? "LZMA_ELF00,LZMA_DEC20,LZMA_DEC30" + : NULL), NULL); + addLoader("ELFMAINY,IDENTSTR,+40,ELFMAINZ,FOLDEXEC", NULL); } -void -PackLinuxElf::addLinkerSymbols(Filter const *) + +void PackLinuxElf::addLinkerSymbols(Filter const *) { // empty } @@ -224,19 +232,6 @@ Linker* PackLinuxElf64amd::newLinker() const return new ElfLinkerAMD64; } -void PackLinuxElf64amd::addStubEntrySections(Filter const *) -{ - addLoader("ELFMAINX", NULL); - //addLoader(getDecompressorSections(), NULL); - addLoader( - ( M_IS_NRV2E(ph.method) ? "NRV_COMMON,NRV2E" - : M_IS_NRV2D(ph.method) ? "NRV_COMMON,NRV2D" - : M_IS_NRV2B(ph.method) ? "NRV_COMMON,NRV2B" - : M_IS_LZMA(ph.method) ? "LZMA_ELF00,LZMA_DEC20,LZMA_DEC30" - : NULL), NULL); - addLoader("ELFMAINY,IDENTSTR,ELFMAINZ,FOLDEXEC", NULL); -} - int const * PackLinuxElf::getCompressionMethods(int method, int level) const { @@ -244,22 +239,6 @@ PackLinuxElf::getCompressionMethods(int method, int level) const return Packer::getDefaultCompressionMethods_le32(method, level); } -int const * -PackLinuxElf32armLe::getCompressionMethods(int /*method*/, int /*level*/) const -{ - static const int m_nrv2e[] = { M_NRV2E_8, -1 }; - - return m_nrv2e; -} - -int const * -PackLinuxElf32armBe::getCompressionMethods(int /*method*/, int /*level*/) const -{ - static const int m_nrv2e[] = { M_NRV2E_8, -1 }; - - return m_nrv2e; -} - int const * PackLinuxElf32ppc::getFilters() const { @@ -779,26 +758,6 @@ PackLinuxElf32ppc::buildLoader(const Filter *ft) linux_elfppc32_fold, sizeof(linux_elfppc32_fold), ft ); } -void -PackLinuxElf32ppc::addStubEntrySections(Filter const *) -{ - addLoader("ELFMAINX", NULL); - //addLoader(getDecompressorSections(), NULL); - addLoader( - ( M_IS_NRV2E(ph.method) ? "NRV_HEAD,NRV2E,NRV_TAIL" - : M_IS_NRV2D(ph.method) ? "NRV_HEAD,NRV2D,NRV_TAIL" - : M_IS_NRV2B(ph.method) ? "NRV_HEAD,NRV2B,NRV_TAIL" - : M_IS_LZMA(ph.method) ? "LZMA_ELF00,LZMA_DEC20,LZMA_DEC30" - : NULL), NULL); - addLoader("ELFMAINY,IDENTSTR,+40,ELFMAINZ,FOLDEXEC", NULL); -} - -void -PackLinuxElf32ppc::addLinkerSymbols(Filter const *) -{ - // empty -} - static const #include "stub/amd64-linux.elf-entry.h" static const @@ -1557,19 +1516,15 @@ PackLinuxElf32::ARM_buildLoader(const Filter *ft, bool const isBE) } } -void PackLinuxElf32::ARM_pack3(OutputFile *fo, Filter &ft, bool isBE) +void PackLinuxElf32::ARM_addLinkerSymbols(Filter const * /*ft*/) { unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info); - unsigned const len0 = fo->getBytesWritten(); + unsigned const len0 = sz_pack2; unsigned len = len0; - unsigned const zero = 0; - fo->write(&zero, 3& -len); // align to 0 mod 4 - len += (3& -len); #define PAGE_MASK (~0u<<12) #define PAGE_SIZE (-PAGE_MASK) - upx_byte *const p = getLoader(); - lsize = getLoaderSize(); + lsize = /*getLoaderSize()*/ 4 * 1024; // upper bound; avoid circularity unsigned const lo_va_user = 0x8000; // XXX unsigned lo_va_stub = get_native32(&elfout.phdr[0].p_vaddr); unsigned adrc; @@ -1602,49 +1557,26 @@ void PackLinuxElf32::ARM_pack3(OutputFile *fo, Filter &ft, bool isBE) adrm = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary adrc = PAGE_MASK & (~PAGE_MASK + adrc); // round up to page boundary - // Patch in order of descending address. - // - // Because Packer::patch_be32 is overloaded, it is impossible - // to choose the right one to initialize a pointer to function. - // Therefore, write either patch_be32 or patch_le32 literally. - // - // ::ARM_buildLoader() put the stub into native order. - // util.c::find() uses host order. - int const swap = (HostPolicy::isBE ^ isBE); - if (isBE) { - patch_be32(p,lsize, 4*swap + "ADRXXRDA", adrx); // compressed input for eXpansion - patch_be32(p,lsize, 4*swap + "LENXXNEL", len0 - hlen); + linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion + linker->defineSymbol("LENX", len0 - hlen); - patch_be32(p,lsize, 4*swap + "CNTCCTNC", cntc); // count for copy - patch_be32(p,lsize, 4*swap + "ADRCCRDA", adrc); // addr for copy + linker->defineSymbol("CNTC", cntc); // count for copy + linker->defineSymbol("ADRC", adrc); // addr for copy - patch_be32(p,lsize, 4*swap + "LENMMNEL", lenm); // len for map - patch_be32(p,lsize, 4*swap + "ADRMMRDA", adrm); // addr for map - } - else { - patch_le32(p,lsize, 4*swap + "ADRXXRDA", adrx); // compressed input for eXpansion - patch_le32(p,lsize, 4*swap + "LENXXNEL", len0 - hlen); - - patch_le32(p,lsize, 4*swap + "CNTCCTNC", cntc); // count for copy - patch_le32(p,lsize, 4*swap + "ADRCCRDA", adrc); // addr for copy - - patch_le32(p,lsize, 4*swap + "LENMMNEL", lenm); // len for map - patch_le32(p,lsize, 4*swap + "ADRMMRDA", adrm); // addr for map - } + linker->defineSymbol("LENM", lenm); // len for map + linker->defineSymbol("ADRM", adrm); // addr for map #undef PAGE_SIZE #undef PAGE_MASK - - super::pack3(fo, ft); } -void PackLinuxElf32armLe::pack3(OutputFile *fo, Filter &ft) +void PackLinuxElf32armLe::addLinkerSymbols(Filter const *ft) { - ARM_pack3(fo, ft, false); + ARM_addLinkerSymbols(ft); } -void PackLinuxElf32armBe::pack3(OutputFile *fo, Filter &ft) +void PackLinuxElf32armBe::addLinkerSymbols(Filter const *ft) { - ARM_pack3(fo, ft, true); + ARM_addLinkerSymbols(ft); } void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft) diff --git a/src/p_lx_elf.h b/src/p_lx_elf.h index dc781c9f..ebf3b160 100644 --- a/src/p_lx_elf.h +++ b/src/p_lx_elf.h @@ -91,7 +91,7 @@ protected: // These ARM routines are essentially common to big/little endian, // but the class hierarchy splits after this class. virtual int ARM_buildLoader(Filter const *ft, bool isBE); - virtual void ARM_pack3(OutputFile *, Filter &, bool isBE); + virtual void ARM_addLinkerSymbols(Filter const *ft); virtual void ARM_pack1(OutputFile *, bool isBE); virtual void pack1(OutputFile *, Filter &); // generate executable header @@ -288,7 +288,6 @@ protected: virtual void pack1(OutputFile *, Filter &); // generate executable header //virtual void pack3(OutputFile *, Filter &); // append loader virtual int buildLoader(const Filter *); - virtual void addStubEntrySections(Filter const *); virtual Linker* newLinker() const; virtual void addLinkerSymbols(Filter const *); }; @@ -309,9 +308,7 @@ public: protected: virtual void pack1(OutputFile *, Filter &); // generate executable header virtual int buildLoader(const Filter *); - virtual void addStubEntrySections(Filter const *); virtual Linker* newLinker() const; - virtual void addLinkerSymbols(Filter const *); }; /************************************************************************* @@ -399,12 +396,11 @@ public: virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMLE; } virtual const char *getName() const { return "linux/armLE"; } virtual const int *getFilters() const; - virtual int const *getCompressionMethods(int method, int level) const; protected: virtual void pack1(OutputFile *, Filter &); // generate executable header - virtual void pack3(OutputFile *, Filter &); // append loader virtual int buildLoader(const Filter *); + virtual void addLinkerSymbols(Filter const *); }; class PackLinuxElf32armBe : public PackLinuxElf32Be @@ -416,12 +412,11 @@ public: virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMBE; } virtual const char *getName() const { return "linux/armBE"; } virtual const int *getFilters() const; - virtual int const *getCompressionMethods(int method, int level) const; protected: virtual void pack1(OutputFile *, Filter &); // generate executable header - virtual void pack3(OutputFile *, Filter &); // append loader virtual int buildLoader(const Filter *); + virtual void addLinkerSymbols(Filter const *); }; #endif /*} already included */ diff --git a/src/stub/Makefile b/src/stub/Makefile index b2ab166a..77d1671f 100644 --- a/src/stub/Makefile +++ b/src/stub/Makefile @@ -223,8 +223,10 @@ tc.arm-linux.elf.objdump = $(call tc,m-objdump) tc.arm-linux.elf.objstrip = $(call tc,objcopy) -R .comment -R .note arm-linux.elf-entry.h : $(srcdir)/src/$$T.S - $(call tc,gcc) -nostdlib $< -o tmp/$T.out - $(call tc,objcopy) --only-section .text -O binary tmp/$T.out tmp/$T.bin + $(call tc,gcc) -march=armv4 -c $< -o tmp/$T.bin + $(call tc,m-objcopy) -R .text -R .data -R .bss tmp/$T.bin + $(call tc,m-objcopy) -R .note -R .comment tmp/$T.bin + $(call tc,m-objdump) -trwh tmp/$T.bin >> tmp/$T.bin $(call tc,bin2h) --ident=linux_elf32arm_loader tmp/$T.bin $@ arm-linux.elf-fold.h : tmp/$$T.o tmp/arm-linux.elf-main.o $(srcdir)/src/$$T.lds diff --git a/src/stub/arm-linux.elf-entry.h b/src/stub/arm-linux.elf-entry.h index 0f7de9d8..855c6704 100644 --- a/src/stub/arm-linux.elf-entry.h +++ b/src/stub/arm-linux.elf-entry.h @@ -1,4 +1,4 @@ -/* arm-linux.elf-entry.h -- created from arm-linux.elf-entry.bin, 584 (0x248) bytes +/* arm-linux.elf-entry.h -- created from arm-linux.elf-entry.bin, 16234 (0x3f6a) bytes This file is part of the UPX executable compressor. @@ -27,46 +27,1024 @@ */ -#define LINUX_ELF32ARM_LOADER_SIZE 584 -#define LINUX_ELF32ARM_LOADER_ADLER32 0xeb17f976 -#define LINUX_ELF32ARM_LOADER_CRC32 0xe6d5a92e +#define LINUX_ELF32ARM_LOADER_SIZE 16234 +#define LINUX_ELF32ARM_LOADER_ADLER32 0x9810c25f +#define LINUX_ELF32ARM_LOADER_CRC32 0x6cdaae3f -unsigned char linux_elf32arm_loader[584] = { -112,192,143,226, 3, 5,188,232, 7, 0, 45,233, 7, 32,160,227, /* 0x 0 */ - 50, 48,160,227, 0, 64,224,227,192, 0,144,239, 1, 10,112,227, /* 0x 10 */ -101, 0, 0, 42, 0,144,160,225,255, 0,184,232, 1,160, 90,226, /* 0x 20 */ -255, 0,169,232,251,255,255, 26, 9,224,160,225, 8,176, 73,224, /* 0x 30 */ - 0, 6,188,232, 11, 80,140,224, 5, 0,160,225, 90, 31,143,226, /* 0x 40 */ - 12, 16, 65,224, 0, 16,129,224, 0, 32,160,227, 2, 0,159,239, /* 0x 50 */ -232, 65,223,229, 8, 48,141,226, 14, 32,160,225,216, 17,159,229, /* 0x 60 */ -119, 15,143,226, 5,240,160,225, 65, 68, 82, 77, 76, 69, 78, 77, /* 0x 70 */ - 65, 68, 82, 67, 67, 78, 84, 67, 76, 69, 78, 88, 65, 68, 82, 88, /* 0x 80 */ -252, 64, 45,233, 0,112,129,224, 0, 80,224,227, 2, 65,160,227, /* 0x 90 */ - 16, 0, 0,234, 24, 0,189,232, 7, 0, 64,224, 3, 32, 66,224, /* 0x a0 */ - 0, 32,132,229, 0, 64,160,225, 3, 0,160,225, 2, 16,131,224, /* 0x b0 */ - 0, 32,160,227, 2, 0,159,239, 4, 0,160,225,240,128,189,232, /* 0x c0 */ - 1, 64,208,228, 4, 64,164,224, 4, 76,176,225, 14,240,160,225, /* 0x d0 */ - 1, 48,208,228, 1, 48,194,228, 4, 64,148,224,247,255,255, 11, /* 0x e0 */ -250,255,255, 42, 1, 16,160,227, 3, 0, 0,234, 1, 16, 65,226, /* 0x f0 */ - 4, 64,148,224,241,255,255, 11, 1, 16,161,224, 4, 64,148,224, /* 0x 100 */ -238,255,255, 11, 1, 16,161,224, 4, 64,148,224,235,255,255, 11, /* 0x 110 */ -245,255,255, 58, 3, 48, 81,226, 0, 16,160,227, 6, 0, 0, 58, /* 0x 120 */ - 1, 80,208,228, 3, 84,133,225, 5, 80,240,225,216,255,255, 10, /* 0x 130 */ -197, 80,176,225, 15, 0, 0, 42, 2, 0, 0,234, 4, 64,148,224, /* 0x 140 */ -222,255,255, 11, 11, 0, 0, 42, 1, 16,160,227, 4, 64,148,224, /* 0x 150 */ -218,255,255, 11, 7, 0, 0, 42, 4, 64,148,224,215,255,255, 11, /* 0x 160 */ - 1, 16,161,224, 4, 64,148,224,212,255,255, 11,249,255,255, 58, /* 0x 170 */ - 4, 16,129,226, 3, 0, 0,234, 4, 64,148,224,207,255,255, 11, /* 0x 180 */ - 1, 16,161,224, 2, 16,129,226, 5, 12,117,227, 0, 0, 0, 42, /* 0x 190 */ - 1, 16,129,226, 0, 48,210,229, 5, 48,210,231, 1, 48,194,228, /* 0x 1a0 */ - 1, 16, 81,226,251,255,255, 26,202,255,255,234, 30, 32,160,227, /* 0x 1b0 */ - 96, 16,143,226, 2, 0,160,227, 4, 0,144,239,127, 0,160,227, /* 0x 1c0 */ - 1, 0,144,239,252,255,255,234, 10, 36, 73,100, 58, 32, 85, 80, /* 0x 1d0 */ - 88, 32, 40, 67, 41, 32, 49, 57, 57, 54, 45, 50, 48, 48, 54, 32, /* 0x 1e0 */ -116,104,101, 32, 85, 80, 88, 32, 84,101, 97,109, 46, 32, 65,108, /* 0x 1f0 */ -108, 32, 82,105,103,104,116,115, 32, 82,101,115,101,114,118,101, /* 0x 200 */ -100, 46, 32,104,116,116,112, 58, 47, 47,117,112,120, 46,115,102, /* 0x 210 */ - 46,110,101,116, 32, 36, 10, 0, 80, 82, 79, 84, 95, 69, 88, 69, /* 0x 220 */ - 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105, /* 0x 230 */ -108,101,100, 46, 10, 0, 0, 0 /* 0x 240 */ +unsigned char linux_elf32arm_loader[16234] = { +127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ + 1, 0, 40, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ +160, 24, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */ + 17, 0, 14, 0,104,192,143,226, 3, 5,188,232, 7, 0, 45,233, /* 0x 30 */ + 7, 32,160,227, 50, 48,160,227, 0, 64,224,227,192, 0,144,239, /* 0x 40 */ + 1, 10,112,227,254,255,255, 42, 0,144,160,225,255, 0,184,232, /* 0x 50 */ + 1,160, 90,226,255, 0,169,232, 8, 0, 0, 26, 9,224,160,225, /* 0x 60 */ + 8,176, 73,224, 18, 6,188,232, 11, 80,140,224, 5, 0,160,225, /* 0x 70 */ + 0, 16,129,224, 0, 32,160,227, 2, 0,159,239, 12, 0,132,226, /* 0x 80 */ + 4, 16,148,229, 14, 32,160,225, 8, 48,141,226, 8, 64,212,229, /* 0x 90 */ + 5,240,160,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b0 */ + 0, 0, 0, 0,252, 64, 45,233, 0,112,129,224, 0, 80,224,227, /* 0x c0 */ + 2, 65,160,227, 20, 0, 0,234, 24, 0,189,232, 7, 0, 64,224, /* 0x d0 */ + 3, 32, 66,224, 0, 32,132,229, 0, 64,160,225, 3, 0,160,225, /* 0x e0 */ + 2, 16,131,224, 0, 32,160,227, 2, 0,159,239, 4, 0,160,225, /* 0x f0 */ +240,128,189,232, 1, 64,208,228, 4, 64,164,224, 4, 76,176,225, /* 0x 100 */ + 14,240,160,225, 1, 48,208,228, 1, 48,194,228, 4, 64,148,224, /* 0x 110 */ + 14, 0, 0, 11, 18, 0, 0, 42, 1, 16,160,227, 29, 0, 0,234, /* 0x 120 */ + 1, 16, 65,226, 4, 64,148,224, 14, 0, 0, 11, 1, 16,161,224, /* 0x 130 */ + 4, 64,148,224, 14, 0, 0, 11, 1, 16,161,224, 4, 64,148,224, /* 0x 140 */ + 14, 0, 0, 11, 25, 0, 0, 58, 3, 48, 81,226, 0, 16,160,227, /* 0x 150 */ + 45, 0, 0, 58, 1, 80,208,228, 3, 84,133,225, 5, 80,240,225, /* 0x 160 */ + 3, 0, 0, 10,197, 80,176,225, 60, 0, 0, 42, 48, 0, 0,234, /* 0x 170 */ + 4, 64,148,224, 14, 0, 0, 11, 60, 0, 0, 42, 1, 16,160,227, /* 0x 180 */ + 4, 64,148,224, 14, 0, 0, 11, 60, 0, 0, 42, 4, 64,148,224, /* 0x 190 */ + 14, 0, 0, 11, 1, 16,161,224, 4, 64,148,224, 14, 0, 0, 11, /* 0x 1a0 */ + 52, 0, 0, 58, 4, 16,129,226, 64, 0, 0,234, 4, 64,148,224, /* 0x 1b0 */ + 14, 0, 0, 11, 1, 16,161,224, 2, 16,129,226, 5, 12,117,227, /* 0x 1c0 */ + 1, 16,129, 50, 0, 48,210,229, 5, 48,210,231, 1, 48,194,228, /* 0x 1d0 */ + 1, 16, 81,226, 67, 0, 0, 26, 20, 0, 0,234,252, 64, 45,233, /* 0x 1e0 */ + 0,112,129,224, 0, 80,224,227, 2, 65,160,227, 20, 0, 0,234, /* 0x 1f0 */ + 24, 0,189,232, 7, 0, 64,224, 3, 32, 66,224, 0, 32,132,229, /* 0x 200 */ + 0, 64,160,225, 3, 0,160,225, 2, 16,131,224, 0, 32,160,227, /* 0x 210 */ + 2, 0,159,239, 4, 0,160,225,240,128,189,232, 1, 64,208,228, /* 0x 220 */ + 4, 64,164,224, 4, 76,176,225, 14,240,160,225, 1, 48,208,228, /* 0x 230 */ + 1, 48,194,228, 4, 64,148,224, 14, 0, 0, 11, 18, 0, 0, 42, /* 0x 240 */ + 1, 16,160,227, 29, 0, 0,234, 1, 16, 65,226, 4, 64,148,224, /* 0x 250 */ + 14, 0, 0, 11, 1, 16,177,224, 4, 64,148,224, 14, 0, 0, 11, /* 0x 260 */ + 1, 16,177,224, 4, 64,148,224, 14, 0, 0, 11, 25, 0, 0, 58, /* 0x 270 */ + 3, 48, 81,226, 0, 16,160,227, 44, 0, 0, 58, 1, 80,208,228, /* 0x 280 */ + 3, 84,133,225, 5, 80,240,225, 3, 0, 0, 10,197, 80,176,225, /* 0x 290 */ + 46, 0, 0,234, 4, 64,148,224, 14, 0, 0, 11, 1, 16,177,224, /* 0x 2a0 */ + 4, 64,148,224, 14, 0, 0, 11, 1, 16,177,224, 59, 0, 0, 26, /* 0x 2b0 */ + 1, 16,160,227, 4, 64,148,224, 14, 0, 0, 11, 1, 16,177,224, /* 0x 2c0 */ + 4, 64,148,224, 14, 0, 0, 11, 52, 0, 0, 58, 2, 16,129,226, /* 0x 2d0 */ + 1, 16,129,226, 5, 12,117,227, 1, 16,129, 50, 0, 48,210,229, /* 0x 2e0 */ + 5, 48,210,231, 1, 48,194,228, 1, 16, 81,226, 63, 0, 0, 26, /* 0x 2f0 */ + 20, 0, 0,234, 0,192,221,229, 14, 0, 92,227, 0, 0, 0, 26, /* 0x 300 */ + 0, 72, 45,233, 13,176,160,225, 0,176,208,229, 6,204,160,227, /* 0x 310 */ +171,177,160,225, 28,203,160,225, 13,176,160,225, 14,204,140,226, /* 0x 320 */ +124,192,140,226, 12,208, 77,224, 0,192,147,229, 8, 48,141,229, /* 0x 330 */ + 4,192,141,229, 0, 32,141,229, 12, 48,141,226, 0,192,160,227, /* 0x 340 */ + 4,192,131,228, 11, 0, 83,225, 17, 0, 0, 26, 12, 48,141,226, /* 0x 350 */ + 2, 32, 65,226, 0, 16,160,225, 1,192,209,228, 7,192, 12,226, /* 0x 360 */ + 18,192,205,229, 1,192,209,228, 44, 2,160,225, 17, 0,205,229, /* 0x 370 */ + 15,192, 12,226, 16,192,205,229, 16, 0,141,226,240, 75, 45,233, /* 0x 380 */ + 64,208, 77,226, 56, 48,141,229, 0, 48,160,227, 48, 48,141,229, /* 0x 390 */ + 0,192,208,229, 1, 64,208,229, 2,224,208,229, 36,192,141,229, /* 0x 3a0 */ + 56,192,157,229, 0, 48,140,229,104,192,157,229, 0, 48,140,229, /* 0x 3b0 */ + 36, 48,157,229, 1,192,208,229, 12,192,131,224, 3, 60,160,227, /* 0x 3c0 */ + 19, 60,160,225,115,206,131,226, 1, 48,160,227, 19,238,160,225, /* 0x 3d0 */ + 1,224, 78,226, 28, 48,141,229, 19, 52,160,225, 44,224,141,229, /* 0x 3e0 */ + 0, 64,160,227, 1,224,160,227, 1, 48, 67,226, 4, 0,128,226, /* 0x 3f0 */ + 6,192,140,226, 40, 48,141,229, 52, 0,141,229, 32, 64,141,229, /* 0x 400 */ + 24,224,141,229, 20,224,141,229, 16,224,141,229, 60, 16,141,229, /* 0x 410 */ + 12, 0, 84,225, 4, 16,160,225, 45, 0, 0, 42,129, 48,160,225, /* 0x 420 */ + 52, 0,157,229, 1, 16,129,226, 1,235,160,227, 12, 0, 81,225, /* 0x 430 */ +176,224,131,225, 37, 0, 0,234, 60, 0,157,229, 0,128,160,227, /* 0x 440 */ + 2, 32,128,224, 12, 32,141,229, 0,112,160,225, 0,224,224,227, /* 0x 450 */ + 8, 32,160,225, 12, 16,157,229, 1, 0, 87,225, 1, 32,130,226, /* 0x 460 */ +125, 2, 0, 10, 1, 48,215,228, 4, 0, 82,227, 8,132,131,225, /* 0x 470 */ + 52, 0, 0,218, 48, 32,157,229,100, 48,157,229, 3, 0, 82,225, /* 0x 480 */ +119, 2, 0, 42, 44, 0,141,226, 1, 16,144,232, 32, 16,157,229, /* 0x 490 */ + 0,176, 12,224,255,148,224,227, 1, 50,139,224, 9, 0, 94,225, /* 0x 4a0 */ +131, 80,160,225, 79, 0, 0,138, 12, 32,157,229, 2, 0, 87,225, /* 0x 4b0 */ +125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, 8,132,131,225, /* 0x 4c0 */ + 52, 48,157,229,179, 16,149,225, 1, 40,160,225,174, 53,160,225, /* 0x 4d0 */ + 34, 8,160,225,144, 3, 12,224, 12, 0, 88,225,202, 0, 0, 42, /* 0x 4e0 */ + 36,224,157,229, 8, 48,110,226, 84, 51,160,225, 40,224,157,229, /* 0x 4f0 */ + 48, 64,157,229, 14, 32, 4,224, 36, 64,157,229, 52,224,157,229, /* 0x 500 */ + 18, 52,131,224,131, 48,131,224, 2, 43, 96,226, 32, 0,157,229, /* 0x 510 */ +131, 52,142,224,194, 34,129,224,230, 78,131,226, 6, 0, 80,227, /* 0x 520 */ +190, 32,133,225, 12, 64,132,226, 12,224,160,225, 1,176,160,227, /* 0x 530 */ +157, 0, 0,218, 48, 16,157,229, 28, 32,157,229, 96,192,157,229, /* 0x 540 */ + 1, 48, 98,224, 3, 48,220,231, 8, 48,141,229, 8, 0,157,229, /* 0x 550 */ +128, 0,160,225, 1,108, 0,226,139,144,160,225,134, 48,132,224, /* 0x 560 */ + 9, 48,131,224, 1, 4, 94,227, 8, 0,141,229, 2, 92,131,226, /* 0x 570 */ +130, 0, 0, 42, 12, 16,157,229, 1, 0, 87,225, 14,228,160,225, /* 0x 580 */ +125, 2, 0, 10, 1, 48,215,228, 8,132,131,225,176, 32,213,225, /* 0x 590 */ + 2, 24,160,225, 33, 56,160,225,174, 5,160,225,147, 0, 12,224, /* 0x 5a0 */ + 2, 59, 99,226, 12, 0, 88,225,195, 50,130,224, 9,176,160,225, /* 0x 5b0 */ +161, 42, 66,224,146, 0, 0, 42, 0, 0, 86,227,176, 48,197,225, /* 0x 5c0 */ + 12,224,160,225,152, 0, 0, 10,155, 0, 0,234, 0, 0, 86,227, /* 0x 5d0 */ +176, 32,197,225, 8,128,108,224, 1,176,137,226, 14,224,108,224, /* 0x 5e0 */ +155, 0, 0, 10,255, 0, 91,227,114, 0, 0,218,183, 0, 0,234, /* 0x 5f0 */ +255, 0, 91,227,183, 0, 0,202,139, 80,160,225, 1, 4, 94,227, /* 0x 600 */ + 5,176,160,225,167, 0, 0, 42, 12, 32,157,229, 2, 0, 87,225, /* 0x 610 */ + 14,228,160,225,125, 2, 0, 10, 1, 48,215,228, 8,132,131,225, /* 0x 620 */ +181, 32,148,225, 2, 8,160,225,174, 21,160,225, 32, 56,160,225, /* 0x 630 */ +147, 1, 12,224, 2, 59, 99,226, 12, 0, 88,225,195, 50,130,224, /* 0x 640 */ + 14,224,108,224,160, 42, 66,224, 12,224,160, 49, 8,128,108, 32, /* 0x 650 */ + 1,176,133, 34,181, 48,132, 49,181, 32,132, 33,155, 0, 0,234, /* 0x 660 */ + 32, 48,157,229, 48,192,157,229, 96, 0,157,229, 3, 0, 83,227, /* 0x 670 */ +255, 64, 11,226, 0, 64,204,231, 0, 16,160,211, 1,192,140,226, /* 0x 680 */ + 48,192,141,229, 32, 16,141,213,115, 2, 0,218, 32, 32,157,229, /* 0x 690 */ + 9, 0, 82,227, 32, 48,157,197, 3, 32, 66,210, 6, 48, 67,194, /* 0x 6a0 */ + 32, 32,141,213, 32, 48,141,197,115, 2, 0,234, 52, 64,157,229, /* 0x 6b0 */ + 32, 0,157,229, 14,224,108,224,162, 58, 65,224,128, 96,132,224, /* 0x 6c0 */ + 9, 0, 94,225,180, 48,133,225, 8,128,108,224, 6, 77,134,226, /* 0x 6d0 */ +218, 0, 0,138, 12, 16,157,229, 1, 0, 87,225,125, 2, 0, 10, /* 0x 6e0 */ + 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 32,212,225, /* 0x 6f0 */ + 2, 8,160,225,174, 53,160,225, 32, 24,160,225,145, 3, 12,224, /* 0x 700 */ + 12, 0, 88,225,244, 0, 0, 42, 2, 59, 97,226,195, 50,130,224, /* 0x 710 */ +176, 48,196,225, 52, 32,157,229, 32, 48,157,229, 20,224,157,229, /* 0x 720 */ + 6, 0, 83,227, 24, 0,157,229,102, 78,130,226, 28, 16,157,229, /* 0x 730 */ + 3, 48,160,195, 0, 48,160,211, 16,224,141,229, 4, 64,132,226, /* 0x 740 */ + 12,224,160,225, 32, 48,141,229, 20, 0,141,229, 24, 16,141,229, /* 0x 750 */ +128, 1, 0,234, 14,224,108,224,160, 58, 66,224, 9, 0, 94,225, /* 0x 760 */ +176, 48,196,225, 8,128,108,224,102, 79,134,226, 1, 1, 0,138, /* 0x 770 */ + 12, 32,157,229, 2, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, /* 0x 780 */ + 14,228,160,225, 8,132,131,225,176, 16,212,225, 1, 8,160,225, /* 0x 790 */ +174, 53,160,225, 32, 40,160,225,146, 3, 12,224, 12, 0, 88,225, /* 0x 7a0 */ + 56, 1, 0, 42, 12,224,160,225, 32, 0,157,229, 52,192,157,229, /* 0x 7b0 */ + 2, 59, 98,226,128, 34,140,224,195, 50,129,224,139, 32,130,224, /* 0x 7c0 */ + 9, 0, 94,225,176, 48,196,225, 30, 78,130,226, 25, 1, 0,138, /* 0x 7d0 */ + 12, 16,157,229, 1, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, /* 0x 7e0 */ + 14,228,160,225, 8,132,131,225,176, 32,212,225, 2, 8,160,225, /* 0x 7f0 */ +174, 53,160,225, 32, 24,160,225,145, 3, 12,224, 12, 0, 88,225, /* 0x 800 */ +160, 58, 66, 32, 8,128,108, 32, 14,224,108, 32,176, 48,196, 33, /* 0x 810 */ +120, 1, 0, 42, 2, 59, 97,226,195, 50,130,224, 48, 32,157,229, /* 0x 820 */ + 0, 0, 82,227,176, 48,196,225, 12,224,160,225,125, 2, 0, 10, /* 0x 830 */ + 28, 64,157,229, 32, 0,157,229, 96,192,157,229, 2, 48,100,224, /* 0x 840 */ + 3, 64,220,231, 6, 0, 80,227, 11, 0,160,195, 9, 0,160,211, /* 0x 850 */ + 32, 0,141,229, 12, 64,194,231, 1, 32,130,226, 48, 32,141,229, /* 0x 860 */ +115, 2, 0,234, 14,224,108,224,160, 58, 65,224, 9, 0, 94,225, /* 0x 870 */ +176, 48,196,225, 8,128,108,224, 27, 78,134,226, 69, 1, 0,138, /* 0x 880 */ + 12, 16,157,229, 1, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, /* 0x 890 */ + 14,228,160,225, 8,132,131,225,176, 32,212,225, 2, 8,160,225, /* 0x 8a0 */ +174, 53,160,225, 32, 24,160,225,145, 3, 12,224, 12, 0, 88,225, /* 0x 8b0 */ + 82, 1, 0, 42, 2, 59, 97,226,195, 50,130,224, 24, 32,157,229, /* 0x 8c0 */ + 12,224,160,225,176, 48,196,225,117, 1, 0,234, 14,224,108,224, /* 0x 8d0 */ +160, 58, 66,224, 9, 0, 94,225,176, 48,196,225, 8,128,108,224, /* 0x 8e0 */ +114, 79,134,226, 95, 1, 0,138, 12, 32,157,229, 2, 0, 87,225, /* 0x 8f0 */ +125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, 8,132,131,225, /* 0x 900 */ +176, 32,212,225, 2, 8,160,225,174, 53,160,225, 32, 24,160,225, /* 0x 910 */ +145, 3, 12,224, 12, 0, 88,225,108, 1, 0, 42, 2, 59, 97,226, /* 0x 920 */ +195, 50,130,224, 20, 32,157,229, 12,224,160,225,176, 48,196,225, /* 0x 930 */ +115, 1, 0,234,160, 58, 66,224,176, 48,196,225, 16, 32,141,226, /* 0x 940 */ + 12, 0,146,232, 16, 48,141,229, 8,128,108,224, 14,224,108,224, /* 0x 950 */ + 24, 64,157,229, 20, 64,141,229, 28,192,157,229, 28, 32,141,229, /* 0x 960 */ + 24,192,141,229, 32, 16,157,229, 52, 0,157,229, 6, 0, 81,227, /* 0x 970 */ + 11, 16,160,195, 8, 16,160,211,166, 78,128,226, 32, 16,141,229, /* 0x 980 */ + 8, 64,132,226,255, 84,224,227, 5, 0, 94,225,137, 1, 0,138, /* 0x 990 */ + 12, 32,157,229, 2, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, /* 0x 9a0 */ + 14,228,160,225, 8,132,131,225,176, 16,212,225, 1, 40,160,225, /* 0x 9b0 */ +174, 53,160,225, 34, 8,160,225,144, 3, 12,224, 12, 0, 88,225, /* 0x 9c0 */ +154, 1, 0, 42, 11, 34,132,224, 2, 59, 96,226,195, 50,129,224, /* 0x 9d0 */ + 12,224,160,225, 4, 80,130,226, 3,192,160,227, 0,144,160,227, /* 0x 9e0 */ + 4,192,141,229,176, 48,196,225,191, 1, 0,234, 14,224,108,224, /* 0x 9f0 */ +162, 58, 65,224, 5, 0, 94,225, 8,128,108,224,176, 48,196,225, /* 0x a00 */ +166, 1, 0,138, 12, 0,157,229, 0, 0, 87,225,125, 2, 0, 10, /* 0x a10 */ + 1, 48,215,228, 14,228,160,225, 8,132,131,225,178, 16,212,225, /* 0x a20 */ + 1, 40,160,225,174, 53,160,225, 34, 8,160,225,144, 3, 12,224, /* 0x a30 */ + 12, 0, 88,225,183, 1, 0, 42, 11, 34,132,224, 2, 59, 96,226, /* 0x a40 */ +195, 50,129,224, 12,224,160,225, 3, 16,160,227, 65, 95,130,226, /* 0x a50 */ + 8,144,160,227, 4, 16,141,229,178, 48,196,225,191, 1, 0,234, /* 0x a60 */ +162, 58, 65,224, 8, 32,160,227,178, 48,196,225, 4, 32,141,229, /* 0x a70 */ + 8,128,108,224, 14,224,108,224,129, 95,132,226, 16,144,160,227, /* 0x a80 */ + 4, 96,157,229, 1,176,160,227,139, 64,160,225, 1, 4, 94,227, /* 0x a90 */ + 4,176,160,225,203, 1, 0, 42, 12, 48,157,229, 3, 0, 87,225, /* 0x aa0 */ + 14,228,160,225,125, 2, 0, 10, 1, 48,215,228, 8,132,131,225, /* 0x ab0 */ +180, 32,149,225, 2, 8,160,225,174, 21,160,225, 32, 56,160,225, /* 0x ac0 */ +147, 1, 12,224, 2, 59, 99,226, 12, 0, 88,225,195, 50,130,224, /* 0x ad0 */ +160, 42, 66,224, 14,224,108,224,180, 48,133, 49, 12,224,160, 49, /* 0x ae0 */ + 8,128,108, 32, 1,176,132, 34,180, 32,133, 33, 1, 96, 86,226, /* 0x af0 */ +193, 1, 0, 26, 4, 64,157,229, 32,192,157,229, 1, 32,160,227, /* 0x b00 */ + 18,180, 75,224, 3, 0, 92,227, 9,176,139,224, 92, 2, 0,202, /* 0x b10 */ + 52, 0,157,229, 3, 0, 91,227, 11, 48,160,177, 3, 48,160,163, /* 0x b20 */ + 7,192,140,226,131, 51,128,224, 32,192,141,229, 54, 78,131,226, /* 0x b30 */ + 2, 96,160,225, 6,144,160,227,134, 80,160,225, 1, 4, 94,227, /* 0x b40 */ + 5, 96,160,225,247, 1, 0, 42, 12, 16,157,229, 1, 0, 87,225, /* 0x b50 */ + 14,228,160,225,125, 2, 0, 10, 1, 48,215,228, 8,132,131,225, /* 0x b60 */ +181, 32,148,225, 2, 8,160,225,174, 21,160,225, 32, 56,160,225, /* 0x b70 */ +147, 1, 12,224, 2, 59, 99,226, 12, 0, 88,225,195, 50,130,224, /* 0x b80 */ +160, 42, 66,224, 14,224,108,224,181, 48,132, 49, 12,224,160, 49, /* 0x b90 */ + 8,128,108, 32, 1, 96,133, 34,181, 32,132, 33, 1,144, 89,226, /* 0x ba0 */ +237, 1, 0, 26, 64, 96, 70,226, 3, 0, 86,227, 28, 96,141,213, /* 0x bb0 */ + 88, 2, 0,218, 1, 48, 6,226,198, 32,160,225, 13, 0, 86,227, /* 0x bc0 */ + 2, 48,131,227, 1, 80, 66,226, 28, 48,141,229, 5, 80, 66,194, /* 0x bd0 */ + 28, 2, 0,202, 52, 32,157,229, 19, 53,160,225, 28, 48,141,229, /* 0x be0 */ +131, 48,130,224,134, 48, 67,224, 85, 78,131,226, 14, 64,132,226, /* 0x bf0 */ + 53, 2, 0,234, 1, 4, 94,227, 36, 2, 0, 42, 12, 48,157,229, /* 0x c00 */ + 3, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, /* 0x c10 */ + 8,132,131,225, 28, 64,157,229,174,224,160,225, 14, 0, 88,225, /* 0x c20 */ +132, 64,160,225, 28, 64,141,229, 1, 64,132, 35, 8,128,110, 32, /* 0x c30 */ + 28, 64,141, 37, 1, 80, 85,226, 28, 2, 0, 26, 28, 0,157,229, /* 0x c40 */ + 52,192,157,229, 0, 2,160,225, 25, 77,140,226, 28, 0,141,229, /* 0x c50 */ + 4, 64,132,226, 4, 80,160,227, 1,144,160,227, 0,144,141,229, /* 0x c60 */ + 0, 16,157,229, 1, 4, 94,227,129, 96,160,225, 0, 96,141,229, /* 0x c70 */ + 66, 2, 0, 42, 12, 32,157,229, 2, 0, 87,225, 14,228,160,225, /* 0x c80 */ +125, 2, 0, 10, 1, 48,215,228, 8,132,131,225,182, 32,148,225, /* 0x c90 */ + 2, 8,160,225,174, 21,160,225, 32, 56,160,225,147, 1, 12,224, /* 0x ca0 */ + 12, 0, 88,225, 14,224,108,224, 8,128,108, 32, 28,192,157, 37, /* 0x cb0 */ + 2, 59, 99,226,195, 50,130,224, 9,192,140, 33, 1, 48,134, 34, /* 0x cc0 */ +160, 42, 66,224, 12,224,160, 49,182, 48,132, 49, 0, 48,141, 37, /* 0x cd0 */ +182, 32,132, 33, 28,192,141, 37, 1, 80, 85,226,137,144,160,225, /* 0x ce0 */ + 55, 2, 0, 26, 28, 0,157,229, 1, 0,144,226, 28, 0,141,229, /* 0x cf0 */ +119, 2, 0, 10, 28, 16,157,229, 48, 32,157,229, 2, 0, 81,225, /* 0x d00 */ + 2,176,139,226,125, 2, 0,138, 48, 64,157,229, 28,192,157,229, /* 0x d10 */ + 96, 0,157,229, 4, 48,108,224, 3, 64,208,231, 48, 16,157,229, /* 0x d20 */ + 0, 64,193,231, 1,176, 91,226,100, 32,157,229, 0, 48,160, 3, /* 0x d30 */ + 1, 48,160, 19, 1, 16,129,226, 2, 0, 81,225, 0, 48,160, 35, /* 0x d40 */ + 1, 48, 3, 50, 0, 0, 83,227, 48, 16,141,229, 97, 2, 0, 26, /* 0x d50 */ + 48, 48,157,229,100,192,157,229, 12, 0, 83,225, 63, 0, 0,234, /* 0x d60 */ + 1, 4, 94,227,127, 2, 0, 42, 12,224,157,229, 14, 0, 87,225, /* 0x d70 */ + 1,112,135, 18,127, 2, 0, 26, 1, 0,160,227,135, 2, 0,234, /* 0x d80 */ + 60, 0,157,229, 56, 16,157,229, 7, 48, 96,224, 0, 48,129,229, /* 0x d90 */ +104, 32,157,229, 48, 48,157,229, 0, 48,130,229, 0, 0,160,227, /* 0x da0 */ + 64,208,141,226,240,139,189,232,240, 75, 45,233, 64,208, 77,226, /* 0x db0 */ + 56, 48,141,229, 0, 48,160,227, 48, 48,141,229, 0,192,208,229, /* 0x dc0 */ + 1, 64,208,229, 2,224,208,229, 36,192,141,229, 56,192,157,229, /* 0x dd0 */ + 0, 48,140,229,104,192,157,229, 0, 48,140,229, 36, 48,157,229, /* 0x de0 */ + 1,192,208,229, 12,192,131,224, 3, 60,160,227, 19, 60,160,225, /* 0x df0 */ +115,206,131,226, 1, 48,160,227, 19,238,160,225, 1,224, 78,226, /* 0x e00 */ + 28, 48,141,229, 19, 52,160,225, 44,224,141,229, 0, 64,160,227, /* 0x e10 */ + 1,224,160,227, 1, 48, 67,226, 4, 0,128,226, 6,192,140,226, /* 0x e20 */ + 40, 48,141,229, 52, 0,141,229, 32, 64,141,229, 24,224,141,229, /* 0x e30 */ + 20,224,141,229, 16,224,141,229, 60, 16,141,229, 12, 0, 84,225, /* 0x e40 */ + 4, 16,160,225, 45, 0, 0, 42,129, 48,160,225, 52, 0,157,229, /* 0x e50 */ + 1, 16,129,226, 1,235,160,227, 12, 0, 81,225,176,224,131,225, /* 0x e60 */ + 37, 0, 0,234, 60, 0,157,229, 0,128,160,227, 2, 32,128,224, /* 0x e70 */ + 12, 32,141,229, 0,112,160,225, 0,224,224,227, 8, 32,160,225, /* 0x e80 */ + 12, 16,157,229, 1, 0, 87,225, 1, 32,130,226,125, 2, 0, 10, /* 0x e90 */ + 1, 48,215,228, 4, 0, 82,227, 8,132,131,225, 52, 0, 0,218, /* 0x ea0 */ + 48, 32,157,229,100, 48,157,229, 3, 0, 82,225,119, 2, 0, 42, /* 0x eb0 */ + 44, 0,141,226, 1, 16,144,232, 32, 16,157,229, 0,176, 12,224, /* 0x ec0 */ +255,148,224,227, 1, 50,139,224, 9, 0, 94,225,131, 80,160,225, /* 0x ed0 */ + 79, 0, 0,138, 12, 32,157,229, 2, 0, 87,225,125, 2, 0, 10, /* 0x ee0 */ + 1, 48,215,228, 14,228,160,225, 8,132,131,225, 52, 48,157,229, /* 0x ef0 */ +179, 16,149,225, 1, 40,160,225,174, 53,160,225, 34, 8,160,225, /* 0x f00 */ +144, 3, 12,224, 12, 0, 88,225,202, 0, 0, 42, 36,224,157,229, /* 0x f10 */ + 8, 48,110,226, 84, 51,160,225, 40,224,157,229, 48, 64,157,229, /* 0x f20 */ + 14, 32, 4,224, 36, 64,157,229, 52,224,157,229, 18, 52,131,224, /* 0x f30 */ +131, 48,131,224, 2, 43, 96,226, 32, 0,157,229,131, 52,142,224, /* 0x f40 */ +194, 34,129,224,230, 78,131,226, 6, 0, 80,227,190, 32,133,225, /* 0x f50 */ + 12, 64,132,226, 12,224,160,225, 1,176,160,227,157, 0, 0,218, /* 0x f60 */ + 48, 16,157,229, 28, 32,157,229, 96,192,157,229, 1, 48, 98,224, /* 0x f70 */ + 3, 48,220,231, 8, 48,141,229, 8, 0,157,229,128, 0,160,225, /* 0x f80 */ + 1,108, 0,226,139,144,160,225,134, 48,132,224, 9, 48,131,224, /* 0x f90 */ + 1, 4, 94,227, 8, 0,141,229, 2, 92,131,226,130, 0, 0, 42, /* 0x fa0 */ + 12, 16,157,229, 1, 0, 87,225, 14,228,160,225,125, 2, 0, 10, /* 0x fb0 */ + 1, 48,215,228, 8,132,131,225,176, 32,213,225, 2, 24,160,225, /* 0x fc0 */ + 33, 56,160,225,174, 5,160,225,147, 0, 12,224, 2, 59, 99,226, /* 0x fd0 */ + 12, 0, 88,225,195, 50,130,224, 9,176,160,225,161, 42, 66,224, /* 0x fe0 */ +146, 0, 0, 42, 0, 0, 86,227,176, 48,197,225, 12,224,160,225, /* 0x ff0 */ +152, 0, 0, 10,155, 0, 0,234, 0, 0, 86,227,176, 32,197,225, /* 0x1000 */ + 8,128,108,224, 1,176,137,226, 14,224,108,224,155, 0, 0, 10, /* 0x1010 */ +255, 0, 91,227,114, 0, 0,218,183, 0, 0,234,255, 0, 91,227, /* 0x1020 */ +183, 0, 0,202,139, 80,160,225, 1, 4, 94,227, 5,176,160,225, /* 0x1030 */ +167, 0, 0, 42, 12, 32,157,229, 2, 0, 87,225, 14,228,160,225, /* 0x1040 */ +125, 2, 0, 10, 1, 48,215,228, 8,132,131,225,181, 32,148,225, /* 0x1050 */ + 2, 8,160,225,174, 21,160,225, 32, 56,160,225,147, 1, 12,224, /* 0x1060 */ + 2, 59, 99,226, 12, 0, 88,225,195, 50,130,224, 14,224,108,224, /* 0x1070 */ +160, 42, 66,224, 12,224,160, 49, 8,128,108, 32, 1,176,133, 34, /* 0x1080 */ +181, 48,132, 49,181, 32,132, 33,155, 0, 0,234, 32, 48,157,229, /* 0x1090 */ + 48,192,157,229, 96, 0,157,229, 3, 0, 83,227,255, 64, 11,226, /* 0x10a0 */ + 0, 64,204,231, 0, 16,160,211, 1,192,140,226, 48,192,141,229, /* 0x10b0 */ + 32, 16,141,213,115, 2, 0,218, 32, 32,157,229, 9, 0, 82,227, /* 0x10c0 */ + 32, 48,157,197, 3, 32, 66,210, 6, 48, 67,194, 32, 32,141,213, /* 0x10d0 */ + 32, 48,141,197,115, 2, 0,234, 52, 64,157,229, 32, 0,157,229, /* 0x10e0 */ + 14,224,108,224,162, 58, 65,224,128, 96,132,224, 9, 0, 94,225, /* 0x10f0 */ +180, 48,133,225, 8,128,108,224, 6, 77,134,226,218, 0, 0,138, /* 0x1100 */ + 12, 16,157,229, 1, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, /* 0x1110 */ + 14,228,160,225, 8,132,131,225,176, 32,212,225, 2, 8,160,225, /* 0x1120 */ +174, 53,160,225, 32, 24,160,225,145, 3, 12,224, 12, 0, 88,225, /* 0x1130 */ +244, 0, 0, 42, 2, 59, 97,226,195, 50,130,224,176, 48,196,225, /* 0x1140 */ + 52, 32,157,229, 32, 48,157,229, 20,224,157,229, 6, 0, 83,227, /* 0x1150 */ + 24, 0,157,229,102, 78,130,226, 28, 16,157,229, 3, 48,160,195, /* 0x1160 */ + 0, 48,160,211, 16,224,141,229, 4, 64,132,226, 12,224,160,225, /* 0x1170 */ + 32, 48,141,229, 20, 0,141,229, 24, 16,141,229,128, 1, 0,234, /* 0x1180 */ + 14,224,108,224,160, 58, 66,224, 9, 0, 94,225,176, 48,196,225, /* 0x1190 */ + 8,128,108,224,102, 79,134,226, 1, 1, 0,138, 12, 32,157,229, /* 0x11a0 */ + 2, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, /* 0x11b0 */ + 8,132,131,225,176, 16,212,225, 1, 8,160,225,174, 53,160,225, /* 0x11c0 */ + 32, 40,160,225,146, 3, 12,224, 12, 0, 88,225, 56, 1, 0, 42, /* 0x11d0 */ + 12,224,160,225, 32, 0,157,229, 52,192,157,229, 2, 59, 98,226, /* 0x11e0 */ +128, 34,140,224,195, 50,129,224,139, 32,130,224, 9, 0, 94,225, /* 0x11f0 */ +176, 48,196,225, 30, 78,130,226, 25, 1, 0,138, 12, 16,157,229, /* 0x1200 */ + 1, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, /* 0x1210 */ + 8,132,131,225,176, 32,212,225, 2, 8,160,225,174, 53,160,225, /* 0x1220 */ + 32, 24,160,225,145, 3, 12,224, 12, 0, 88,225,160, 58, 66, 32, /* 0x1230 */ + 8,128,108, 32, 14,224,108, 32,176, 48,196, 33,120, 1, 0, 42, /* 0x1240 */ + 2, 59, 97,226,195, 50,130,224, 48, 32,157,229, 0, 0, 82,227, /* 0x1250 */ +176, 48,196,225, 12,224,160,225,125, 2, 0, 10, 28, 64,157,229, /* 0x1260 */ + 32, 0,157,229, 96,192,157,229, 2, 48,100,224, 3, 64,220,231, /* 0x1270 */ + 6, 0, 80,227, 11, 0,160,195, 9, 0,160,211, 32, 0,141,229, /* 0x1280 */ + 12, 64,194,231, 1, 32,130,226, 48, 32,141,229,115, 2, 0,234, /* 0x1290 */ + 14,224,108,224,160, 58, 65,224, 9, 0, 94,225,176, 48,196,225, /* 0x12a0 */ + 8,128,108,224, 27, 78,134,226, 69, 1, 0,138, 12, 16,157,229, /* 0x12b0 */ + 1, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, /* 0x12c0 */ + 8,132,131,225,176, 32,212,225, 2, 8,160,225,174, 53,160,225, /* 0x12d0 */ + 32, 24,160,225,145, 3, 12,224, 12, 0, 88,225, 82, 1, 0, 42, /* 0x12e0 */ + 2, 59, 97,226,195, 50,130,224, 24, 32,157,229, 12,224,160,225, /* 0x12f0 */ +176, 48,196,225,117, 1, 0,234, 14,224,108,224,160, 58, 66,224, /* 0x1300 */ + 9, 0, 94,225,176, 48,196,225, 8,128,108,224,114, 79,134,226, /* 0x1310 */ + 95, 1, 0,138, 12, 32,157,229, 2, 0, 87,225,125, 2, 0, 10, /* 0x1320 */ + 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 32,212,225, /* 0x1330 */ + 2, 8,160,225,174, 53,160,225, 32, 24,160,225,145, 3, 12,224, /* 0x1340 */ + 12, 0, 88,225,108, 1, 0, 42, 2, 59, 97,226,195, 50,130,224, /* 0x1350 */ + 20, 32,157,229, 12,224,160,225,176, 48,196,225,115, 1, 0,234, /* 0x1360 */ +160, 58, 66,224,176, 48,196,225, 16, 32,141,226, 12, 0,146,232, /* 0x1370 */ + 16, 48,141,229, 8,128,108,224, 14,224,108,224, 24, 64,157,229, /* 0x1380 */ + 20, 64,141,229, 28,192,157,229, 28, 32,141,229, 24,192,141,229, /* 0x1390 */ + 32, 16,157,229, 52, 0,157,229, 6, 0, 81,227, 11, 16,160,195, /* 0x13a0 */ + 8, 16,160,211,166, 78,128,226, 32, 16,141,229, 8, 64,132,226, /* 0x13b0 */ +255, 84,224,227, 5, 0, 94,225,137, 1, 0,138, 12, 32,157,229, /* 0x13c0 */ + 2, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, /* 0x13d0 */ + 8,132,131,225,176, 16,212,225, 1, 40,160,225,174, 53,160,225, /* 0x13e0 */ + 34, 8,160,225,144, 3, 12,224, 12, 0, 88,225,154, 1, 0, 42, /* 0x13f0 */ + 11, 34,132,224, 2, 59, 96,226,195, 50,129,224, 12,224,160,225, /* 0x1400 */ + 4, 80,130,226, 3,192,160,227, 0,144,160,227, 4,192,141,229, /* 0x1410 */ +176, 48,196,225,191, 1, 0,234, 14,224,108,224,162, 58, 65,224, /* 0x1420 */ + 5, 0, 94,225, 8,128,108,224,176, 48,196,225,166, 1, 0,138, /* 0x1430 */ + 12, 0,157,229, 0, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, /* 0x1440 */ + 14,228,160,225, 8,132,131,225,178, 16,212,225, 1, 40,160,225, /* 0x1450 */ +174, 53,160,225, 34, 8,160,225,144, 3, 12,224, 12, 0, 88,225, /* 0x1460 */ +183, 1, 0, 42, 11, 34,132,224, 2, 59, 96,226,195, 50,129,224, /* 0x1470 */ + 12,224,160,225, 3, 16,160,227, 65, 95,130,226, 8,144,160,227, /* 0x1480 */ + 4, 16,141,229,178, 48,196,225,191, 1, 0,234,162, 58, 65,224, /* 0x1490 */ + 8, 32,160,227,178, 48,196,225, 4, 32,141,229, 8,128,108,224, /* 0x14a0 */ + 14,224,108,224,129, 95,132,226, 16,144,160,227, 4, 96,157,229, /* 0x14b0 */ + 1,176,160,227,139, 64,160,225, 1, 4, 94,227, 4,176,160,225, /* 0x14c0 */ +203, 1, 0, 42, 12, 48,157,229, 3, 0, 87,225, 14,228,160,225, /* 0x14d0 */ +125, 2, 0, 10, 1, 48,215,228, 8,132,131,225,180, 32,149,225, /* 0x14e0 */ + 2, 8,160,225,174, 21,160,225, 32, 56,160,225,147, 1, 12,224, /* 0x14f0 */ + 2, 59, 99,226, 12, 0, 88,225,195, 50,130,224,160, 42, 66,224, /* 0x1500 */ + 14,224,108,224,180, 48,133, 49, 12,224,160, 49, 8,128,108, 32, /* 0x1510 */ + 1,176,132, 34,180, 32,133, 33, 1, 96, 86,226,193, 1, 0, 26, /* 0x1520 */ + 4, 64,157,229, 32,192,157,229, 1, 32,160,227, 18,180, 75,224, /* 0x1530 */ + 3, 0, 92,227, 9,176,139,224, 92, 2, 0,202, 52, 0,157,229, /* 0x1540 */ + 3, 0, 91,227, 11, 48,160,177, 3, 48,160,163, 7,192,140,226, /* 0x1550 */ +131, 51,128,224, 32,192,141,229, 54, 78,131,226, 2, 96,160,225, /* 0x1560 */ + 6,144,160,227,134, 80,160,225, 1, 4, 94,227, 5, 96,160,225, /* 0x1570 */ +247, 1, 0, 42, 12, 16,157,229, 1, 0, 87,225, 14,228,160,225, /* 0x1580 */ +125, 2, 0, 10, 1, 48,215,228, 8,132,131,225,181, 32,148,225, /* 0x1590 */ + 2, 8,160,225,174, 21,160,225, 32, 56,160,225,147, 1, 12,224, /* 0x15a0 */ + 2, 59, 99,226, 12, 0, 88,225,195, 50,130,224,160, 42, 66,224, /* 0x15b0 */ + 14,224,108,224,181, 48,132, 49, 12,224,160, 49, 8,128,108, 32, /* 0x15c0 */ + 1, 96,133, 34,181, 32,132, 33, 1,144, 89,226,237, 1, 0, 26, /* 0x15d0 */ + 64, 96, 70,226, 3, 0, 86,227, 28, 96,141,213, 88, 2, 0,218, /* 0x15e0 */ + 1, 48, 6,226,198, 32,160,225, 13, 0, 86,227, 2, 48,131,227, /* 0x15f0 */ + 1, 80, 66,226, 28, 48,141,229, 5, 80, 66,194, 28, 2, 0,202, /* 0x1600 */ + 52, 32,157,229, 19, 53,160,225, 28, 48,141,229,131, 48,130,224, /* 0x1610 */ +134, 48, 67,224, 85, 78,131,226, 14, 64,132,226, 53, 2, 0,234, /* 0x1620 */ + 1, 4, 94,227, 36, 2, 0, 42, 12, 48,157,229, 3, 0, 87,225, /* 0x1630 */ +125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, 8,132,131,225, /* 0x1640 */ + 28, 64,157,229,174,224,160,225, 14, 0, 88,225,132, 64,160,225, /* 0x1650 */ + 28, 64,141,229, 1, 64,132, 35, 8,128,110, 32, 28, 64,141, 37, /* 0x1660 */ + 1, 80, 85,226, 28, 2, 0, 26, 28, 0,157,229, 52,192,157,229, /* 0x1670 */ + 0, 2,160,225, 25, 77,140,226, 28, 0,141,229, 4, 64,132,226, /* 0x1680 */ + 4, 80,160,227, 1,144,160,227, 0,144,141,229, 0, 16,157,229, /* 0x1690 */ + 1, 4, 94,227,129, 96,160,225, 0, 96,141,229, 66, 2, 0, 42, /* 0x16a0 */ + 12, 32,157,229, 2, 0, 87,225, 14,228,160,225,125, 2, 0, 10, /* 0x16b0 */ + 1, 48,215,228, 8,132,131,225,182, 32,148,225, 2, 8,160,225, /* 0x16c0 */ +174, 21,160,225, 32, 56,160,225,147, 1, 12,224, 12, 0, 88,225, /* 0x16d0 */ + 14,224,108,224, 8,128,108, 32, 28,192,157, 37, 2, 59, 99,226, /* 0x16e0 */ +195, 50,130,224, 9,192,140, 33, 1, 48,134, 34,160, 42, 66,224, /* 0x16f0 */ + 12,224,160, 49,182, 48,132, 49, 0, 48,141, 37,182, 32,132, 33, /* 0x1700 */ + 28,192,141, 37, 1, 80, 85,226,137,144,160,225, 55, 2, 0, 26, /* 0x1710 */ + 28, 0,157,229, 1, 0,144,226, 28, 0,141,229,119, 2, 0, 10, /* 0x1720 */ + 28, 16,157,229, 48, 32,157,229, 2, 0, 81,225, 2,176,139,226, /* 0x1730 */ +125, 2, 0,138, 48, 64,157,229, 28,192,157,229, 96, 0,157,229, /* 0x1740 */ + 4, 48,108,224, 3, 64,208,231, 48, 16,157,229, 0, 64,193,231, /* 0x1750 */ + 1,176, 91,226,100, 32,157,229, 0, 48,160, 3, 1, 48,160, 19, /* 0x1760 */ + 1, 16,129,226, 2, 0, 81,225, 0, 48,160, 35, 1, 48, 3, 50, /* 0x1770 */ + 0, 0, 83,227, 48, 16,141,229, 97, 2, 0, 26, 48, 48,157,229, /* 0x1780 */ +100,192,157,229, 12, 0, 83,225, 63, 0, 0,234, 1, 4, 94,227, /* 0x1790 */ +127, 2, 0, 42, 12,224,157,229, 14, 0, 87,225, 1,112,135, 18, /* 0x17a0 */ +127, 2, 0, 26, 1, 0,160,227,135, 2, 0,234, 60, 0,157,229, /* 0x17b0 */ + 56, 16,157,229, 7, 48, 96,224, 0, 48,129,229,104, 32,157,229, /* 0x17c0 */ + 48, 48,157,229, 0, 48,130,229, 0, 0,160,227, 64,208,141,226, /* 0x17d0 */ +240,139,189,232, 11,208,160,225, 0,136,189,232, 30, 32,160,227, /* 0x17e0 */ + 12, 16,143,226, 2, 0,160,227, 4, 0,144,239,127, 0,160,227, /* 0x17f0 */ + 1, 0,144,239, 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, /* 0x1800 */ + 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, /* 0x1810 */ + 10, 0, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,114,116, /* 0x1820 */ + 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,114,101, /* 0x1830 */ +108, 69, 76, 70, 77, 65, 73, 78, 88, 0, 46,114,101,108, 78, 82, /* 0x1840 */ + 86, 50, 69, 0, 46,114,101,108, 78, 82, 86, 50, 68, 0, 46,114, /* 0x1850 */ +101,108, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 0, 76, 90, 77, /* 0x1860 */ + 65, 95, 68, 69, 67, 49, 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1870 */ + 50, 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 0, 69, 76, /* 0x1880 */ + 70, 77, 65, 73, 78, 89, 0, 69, 76, 70, 77, 65, 73, 78, 90, 0, /* 0x1890 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18a0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18b0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, /* 0x18c0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,144, 0, 0, 0, /* 0x18d0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x18e0 */ + 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18f0 */ +156, 35, 0, 0, 80, 0, 0, 0, 15, 0, 0, 0, 1, 0, 0, 0, /* 0x1900 */ + 4, 0, 0, 0, 8, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, /* 0x1910 */ + 0, 0, 0, 0, 0, 0, 0, 0,196, 0, 0, 0, 40, 1, 0, 0, /* 0x1920 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1930 */ + 40, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1940 */ +236, 35, 0, 0,184, 0, 0, 0, 15, 0, 0, 0, 3, 0, 0, 0, /* 0x1950 */ + 4, 0, 0, 0, 8, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, /* 0x1960 */ + 0, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 24, 1, 0, 0, /* 0x1970 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1980 */ + 50, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1990 */ +164, 36, 0, 0,152, 0, 0, 0, 15, 0, 0, 0, 5, 0, 0, 0, /* 0x19a0 */ + 4, 0, 0, 0, 8, 0, 0, 0, 64, 0, 0, 0, 1, 0, 0, 0, /* 0x19b0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 0, 0,136, 0, 0, 0, /* 0x19c0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x19d0 */ + 60, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19e0 */ + 60, 37, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 7, 0, 0, 0, /* 0x19f0 */ + 4, 0, 0, 0, 8, 0, 0, 0, 75, 0, 0, 0, 1, 0, 0, 0, /* 0x1a00 */ + 0, 0, 0, 0, 0, 0, 0, 0,140, 3, 0, 0, 44, 10, 0, 0, /* 0x1a10 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1a20 */ + 86, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a30 */ +184, 13, 0, 0, 44, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a40 */ + 1, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 1, 0, 0, 0, /* 0x1a50 */ + 0, 0, 0, 0, 0, 0, 0, 0,228, 23, 0, 0, 8, 0, 0, 0, /* 0x1a60 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1a70 */ +108, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a80 */ +236, 23, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a90 */ + 1, 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 1, 0, 0, 0, /* 0x1aa0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 34, 24, 0, 0, 0, 0, 0, 0, /* 0x1ab0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1ac0 */ + 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ad0 */ + 34, 24, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ae0 */ + 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, /* 0x1af0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 72, 27, 0, 0, 96, 5, 0, 0, /* 0x1b00 */ + 16, 0, 0, 0, 76, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, /* 0x1b10 */ + 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b20 */ +168, 32, 0, 0,242, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b30 */ + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b40 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1b50 */ + 0, 0, 0, 0, 4, 0,241,255, 27, 0, 0, 0, 0, 0, 0, 0, /* 0x1b60 */ + 0, 0, 0, 0, 4, 0,241,255, 53, 0, 0, 0, 0, 0, 0, 0, /* 0x1b70 */ + 0, 0, 0, 0, 4, 0,241,255, 27, 0, 0, 0, 0, 0, 0, 0, /* 0x1b80 */ + 0, 0, 0, 0, 4, 0,241,255, 82, 0, 0, 0, 0, 0, 0, 0, /* 0x1b90 */ + 0, 0, 0, 0, 4, 0,241,255, 27, 0, 0, 0, 0, 0, 0, 0, /* 0x1ba0 */ + 0, 0, 0, 0, 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1bb0 */ + 0, 0, 0, 0, 4, 0,241,255,111, 0, 0, 0, 0, 0, 0, 0, /* 0x1bc0 */ + 0, 0, 0, 0, 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1bd0 */ + 0, 0, 0, 0, 4, 0,241,255,139, 0, 0, 0, 0, 0, 0, 0, /* 0x1be0 */ + 0, 0, 0, 0, 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1bf0 */ + 0, 0, 0, 0, 4, 0,241,255,167, 0, 0, 0, 0, 0, 0, 0, /* 0x1c00 */ + 0, 0, 0, 0, 4, 0,241,255,182, 0, 0, 0, 0, 0, 0, 0, /* 0x1c10 */ + 0, 0, 0, 0, 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1c20 */ + 0, 0, 0, 0, 4, 0,241,255,193, 0, 0, 0, 52, 0, 0, 0, /* 0x1c30 */ + 0, 0, 0, 0, 0, 0,241,255,207, 0, 0, 0, 32, 0, 0, 0, /* 0x1c40 */ + 0, 0, 0, 0, 0, 0,241,255,221, 0, 0, 0, 12, 0, 0, 0, /* 0x1c50 */ + 0, 0, 0, 0, 0, 0,241,255,231, 0, 0, 0, 0, 0, 0, 0, /* 0x1c60 */ + 0, 0, 0, 0, 0, 0,241,255,238, 0, 0, 0, 4, 0, 0, 0, /* 0x1c70 */ + 0, 0, 0, 0, 0, 0,241,255,245, 0, 0, 0, 8, 0, 0, 0, /* 0x1c80 */ + 0, 0, 0, 0, 0, 0,241,255,254, 0, 0, 0, 1, 0, 0, 0, /* 0x1c90 */ + 0, 0, 0, 0, 0, 0,241,255, 8, 1, 0, 0, 2, 0, 0, 0, /* 0x1ca0 */ + 0, 0, 0, 0, 0, 0,241,255, 19, 1, 0, 0, 4, 0, 0, 0, /* 0x1cb0 */ + 0, 0, 0, 0, 0, 0,241,255, 29, 1, 0, 0, 2, 0, 0, 0, /* 0x1cc0 */ + 0, 0, 0, 0, 0, 0,241,255, 41, 1, 0, 0, 16, 0, 0, 0, /* 0x1cd0 */ + 0, 0, 0, 0, 0, 0,241,255, 51, 1, 0, 0, 32, 0, 0, 0, /* 0x1ce0 */ + 0, 0, 0, 0, 0, 0,241,255, 65, 1, 0, 0, 12, 0, 0, 0, /* 0x1cf0 */ + 0, 0, 0, 0, 0, 0,241,255, 76, 1, 0, 0, 0, 16, 0, 0, /* 0x1d00 */ + 0, 0, 0, 0, 0, 0,241,255, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d10 */ + 0, 0, 0, 0, 3, 0, 1, 0, 86, 1, 0, 0, 0, 0, 0, 0, /* 0x1d20 */ + 0, 0, 0, 0, 2, 0, 1, 0, 89, 1, 0, 0,112, 0, 0, 0, /* 0x1d30 */ + 0, 0, 0, 0, 0, 0, 1, 0,102, 1, 0, 0, 0, 0, 0, 0, /* 0x1d40 */ + 0, 0, 0, 0, 0, 0, 12, 0,114, 1, 0, 0, 40, 0, 0, 0, /* 0x1d50 */ + 0, 0, 0, 0, 0, 0, 1, 0,119, 1, 0, 0,112, 0, 0, 0, /* 0x1d60 */ + 0, 0, 0, 0, 1, 0, 1, 0,122, 1, 0, 0, 0, 0, 0, 0, /* 0x1d70 */ + 0, 0, 0, 0, 0, 0, 13, 0,127, 1, 0, 0,144, 0, 0, 0, /* 0x1d80 */ + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d90 */ + 0, 0, 0, 0, 3, 0, 3, 0, 86, 1, 0, 0, 0, 0, 0, 0, /* 0x1da0 */ + 0, 0, 0, 0, 2, 0, 3, 0,140, 1, 0, 0, 88, 0, 0, 0, /* 0x1db0 */ + 0, 0, 0, 0, 0, 0, 3, 0,148, 1, 0, 0, 20, 0, 0, 0, /* 0x1dc0 */ + 0, 0, 0, 0, 0, 0, 3, 0,156, 1, 0, 0, 64, 0, 0, 0, /* 0x1dd0 */ + 0, 0, 0, 0, 0, 0, 3, 0,165, 1, 0, 0, 80, 0, 0, 0, /* 0x1de0 */ + 0, 0, 0, 0, 0, 0, 3, 0,173, 1, 0, 0,124, 0, 0, 0, /* 0x1df0 */ + 0, 0, 0, 0, 0, 0, 3, 0,184, 1, 0, 0,108, 0, 0, 0, /* 0x1e00 */ + 0, 0, 0, 0, 0, 0, 3, 0,192, 1, 0, 0,188, 0, 0, 0, /* 0x1e10 */ + 0, 0, 0, 0, 0, 0, 3, 0,204, 1, 0, 0,248, 0, 0, 0, /* 0x1e20 */ + 0, 0, 0, 0, 0, 0, 3, 0,216, 1, 0, 0,200, 0, 0, 0, /* 0x1e30 */ + 0, 0, 0, 0, 0, 0, 3, 0,228, 1, 0, 0,216, 0, 0, 0, /* 0x1e40 */ + 0, 0, 0, 0, 0, 0, 3, 0,236, 1, 0, 0, 8, 1, 0, 0, /* 0x1e50 */ + 0, 0, 0, 0, 0, 0, 3, 0,247, 1, 0, 0, 16, 1, 0, 0, /* 0x1e60 */ + 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 20, 1, 0, 0, /* 0x1e70 */ + 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e80 */ + 0, 0, 0, 0, 3, 0, 5, 0, 9, 2, 0, 0, 88, 0, 0, 0, /* 0x1e90 */ + 0, 0, 0, 0, 0, 0, 5, 0, 17, 2, 0, 0, 20, 0, 0, 0, /* 0x1ea0 */ + 0, 0, 0, 0, 0, 0, 5, 0, 25, 2, 0, 0, 64, 0, 0, 0, /* 0x1eb0 */ + 0, 0, 0, 0, 0, 0, 5, 0, 34, 2, 0, 0, 80, 0, 0, 0, /* 0x1ec0 */ + 0, 0, 0, 0, 0, 0, 5, 0, 42, 2, 0, 0,124, 0, 0, 0, /* 0x1ed0 */ + 0, 0, 0, 0, 0, 0, 5, 0, 53, 2, 0, 0,108, 0, 0, 0, /* 0x1ee0 */ + 0, 0, 0, 0, 0, 0, 5, 0, 61, 2, 0, 0,184, 0, 0, 0, /* 0x1ef0 */ + 0, 0, 0, 0, 0, 0, 5, 0, 73, 2, 0, 0,196, 0, 0, 0, /* 0x1f00 */ + 0, 0, 0, 0, 0, 0, 5, 0, 81, 2, 0, 0,244, 0, 0, 0, /* 0x1f10 */ + 0, 0, 0, 0, 0, 0, 5, 0, 92, 2, 0, 0,216, 0, 0, 0, /* 0x1f20 */ + 0, 0, 0, 0, 0, 0, 5, 0,104, 2, 0, 0, 4, 1, 0, 0, /* 0x1f30 */ + 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f40 */ + 0, 0, 0, 0, 3, 0, 7, 0,113, 2, 0, 0, 8, 0, 0, 0, /* 0x1f50 */ + 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f60 */ + 0, 0, 0, 0, 3, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f70 */ + 0, 0, 0, 0, 3, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f80 */ + 0, 0, 0, 0, 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1f90 */ + 0, 0, 0, 0, 3, 0, 12, 0,122, 2, 0, 0, 0, 0, 0, 0, /* 0x1fa0 */ + 0, 0, 0, 0, 0, 0, 12, 0,137, 2, 0, 0, 54, 0, 0, 0, /* 0x1fb0 */ + 0, 0, 0, 0, 0, 0, 12, 0,141, 2, 0, 0, 24, 0, 0, 0, /* 0x1fc0 */ + 0, 0, 0, 0, 0, 0, 12, 0,145, 2, 0, 0, 16, 0, 0, 0, /* 0x1fd0 */ + 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fe0 */ + 0, 0, 0, 0, 3, 0, 13, 0,149, 2, 0, 0, 0, 0, 0, 0, /* 0x1ff0 */ + 0, 0, 0, 0, 0, 0, 13, 0,153, 2, 0, 0, 0, 0, 0, 0, /* 0x2000 */ + 0, 0, 0, 0, 16, 0, 1, 0,160, 2, 0, 0, 0, 0, 0, 0, /* 0x2010 */ + 0, 0, 0, 0, 16, 0, 0, 0,165, 2, 0, 0, 0, 0, 0, 0, /* 0x2020 */ + 0, 0, 0, 0, 16, 0, 0, 0,170, 2, 0, 0, 0, 0, 0, 0, /* 0x2030 */ + 0, 0, 0, 0, 16, 0, 0, 0,175, 2, 0, 0, 0, 0, 0, 0, /* 0x2040 */ + 0, 0, 0, 0, 16, 0, 0, 0,180, 2, 0, 0, 0, 0, 0, 0, /* 0x2050 */ + 0, 0, 0, 0, 16, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, /* 0x2060 */ + 0, 0, 0, 0, 16, 0, 0, 0,191, 2, 0, 0, 0, 0, 0, 0, /* 0x2070 */ + 0, 0, 0, 0, 16, 0, 0, 0,196, 2, 0, 0, 0, 0, 0, 0, /* 0x2080 */ + 40, 1, 0, 0, 18, 0, 3, 0,219, 2, 0, 0, 0, 0, 0, 0, /* 0x2090 */ + 24, 1, 0, 0, 18, 0, 5, 0, 0,115,114, 99, 47, 97,114,109, /* 0x20a0 */ + 45,108,105,110,117,120, 46,101,108,102, 45,101,110,116,114,121, /* 0x20b0 */ + 46, 83, 0,115,114, 99, 47, 97,114, 99,104, 47, 97,114,109, 47, /* 0x20c0 */ +118, 52, 97, 47,108,122,109, 97, 95,100, 46, 83, 0,115,114, 99, /* 0x20d0 */ + 47, 97,114, 99,104, 47, 97,114,109, 47,118, 52, 97, 47,108,122, /* 0x20e0 */ +109, 97, 95,100, 95, 99,102, 46, 83, 0,115,114, 99, 47, 97,114, /* 0x20f0 */ + 99,104, 47, 97,114,109, 47,118, 52, 97, 47,108,122,109, 97, 95, /* 0x2100 */ +100, 95, 99,115, 46, 83, 0,115,114, 99, 47, 97,114, 99,104, 47, /* 0x2110 */ + 97,114,109, 47,118, 52, 97, 47,110,114,118, 50,100, 95,100, 56, /* 0x2120 */ + 46, 83, 0,115,114, 99, 47, 97,114, 99,104, 47, 97,114,109, 47, /* 0x2130 */ +118, 52, 97, 47,110,114,118, 50,101, 95,100, 56, 46, 83, 0, 60, /* 0x2140 */ + 99,111,109,109, 97,110,100, 32,108,105,110,101, 62, 0, 60, 98, /* 0x2150 */ +117,105,108,116, 45,105,110, 62, 0,115,122, 95, 69,108,102, 51, /* 0x2160 */ + 50, 95, 69,104,100,114, 0,115,122, 95, 69,108,102, 51, 50, 95, /* 0x2170 */ + 80,104,100,114, 0,115,122, 95, 98, 95,105,110,102,111, 0,115, /* 0x2180 */ +122, 95,117,110, 99, 0,115,122, 95, 99,112,114, 0, 98, 95,109, /* 0x2190 */ +101,116,104,111,100, 0, 80, 82, 79, 84, 95, 82, 69, 65, 68, 0, /* 0x21a0 */ + 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 0, 80, 82, 79, 84, 95, /* 0x21b0 */ + 69, 88, 69, 67, 0, 77, 65, 80, 95, 80, 82, 73, 86, 65, 84, 69, /* 0x21c0 */ + 0, 77, 65, 80, 95, 70, 73, 88, 69, 68, 0, 77, 65, 80, 95, 65, /* 0x21d0 */ + 78, 79, 78, 89, 77, 79, 85, 83, 0, 80, 65, 71, 69, 95, 83, 72, /* 0x21e0 */ + 73, 70, 84, 0, 80, 65, 71, 69, 95, 83, 73, 90, 69, 0, 36, 97, /* 0x21f0 */ + 0,115,116, 97,114,116, 95,112, 97,114, 97,109,115, 0,109,115, /* 0x2200 */ +103, 95, 83, 69, 76,105,110,117,120, 0, 99,111,112,121, 0, 36, /* 0x2210 */ +100, 0, 99,112,114, 48, 0,102, 95,100,101, 99,111,109,112,114, /* 0x2220 */ +101,115,115, 0,116,111,112, 95,110, 50,101, 0,101,111,102, 95, /* 0x2230 */ +110, 50,101, 0,103,101,116, 56, 95,110, 50,101, 0,108,105,116, /* 0x2240 */ + 95,110, 50,101, 0,103,101,116,111,102,102, 95,110, 50,101, 0, /* 0x2250 */ +111,102,102, 95,110, 50,101, 0,111,102,102,112,114,101,118, 95, /* 0x2260 */ +110, 50,101, 0,108,101,110,108, 97,115,116, 95,110, 50,101, 0, /* 0x2270 */ +108,101,110,109,111,114,101, 95,110, 50,101, 0,108,101,110, 95, /* 0x2280 */ +110, 50,101, 0,103,111,116,108,101,110, 95,110, 50,101, 0,110, /* 0x2290 */ +101, 97,114, 95,110, 50,101, 0, 99,111,112,121, 95,110, 50,101, /* 0x22a0 */ + 0,116,111,112, 95,110, 50,100, 0,101,111,102, 95,110, 50,100, /* 0x22b0 */ + 0,103,101,116, 56, 95,110, 50,100, 0,108,105,116, 95,110, 50, /* 0x22c0 */ +100, 0,103,101,116,111,102,102, 95,110, 50,100, 0,111,102,102, /* 0x22d0 */ + 95,110, 50,100, 0,111,102,102,112,114,101,118, 95,110, 50,100, /* 0x22e0 */ + 0,108,101,110, 95,110, 50,100, 0,103,111,116,108,101,110, 95, /* 0x22f0 */ +110, 50,100, 0,108,101,110,109,111,114,101, 95,110, 50,100, 0, /* 0x2300 */ + 99,111,112,121, 95,110, 50,100, 0,110,111,116, 95,108,122,109, /* 0x2310 */ + 97, 0,101,110,100, 95,100,101, 99,111,109,112,114,101,115,115, /* 0x2320 */ + 0, 76, 55, 49, 0, 76, 55, 48, 0,100,105,101, 0,101,111,102, /* 0x2330 */ + 0, 95,115,116, 97,114,116, 0, 65, 68, 82, 77, 0, 76, 69, 78, /* 0x2340 */ + 77, 0, 65, 68, 82, 67, 0, 67, 78, 84, 67, 0,108,101,110, 95, /* 0x2350 */ +102, 0, 76, 69, 78, 88, 0, 65, 68, 82, 88, 0,117, 99,108, 95, /* 0x2360 */ +110,114,118, 50,101, 95,100,101, 99,111,109,112,114,101,115,115, /* 0x2370 */ + 95, 56, 0,117, 99,108, 95,110,114,118, 50,100, 95,100,101, 99, /* 0x2380 */ +111,109,112,114,101,115,115, 95, 56, 0, 0, 0, 32, 0, 0, 0, /* 0x2390 */ + 1, 69, 0, 0, 52, 0, 0, 0, 1, 29, 0, 0,112, 0, 0, 0, /* 0x23a0 */ + 2, 77, 0, 0,116, 0, 0, 0, 2, 78, 0, 0,120, 0, 0, 0, /* 0x23b0 */ + 2, 79, 0, 0,124, 0, 0, 0, 2, 80, 0, 0,128, 0, 0, 0, /* 0x23c0 */ + 2, 81, 0, 0,132, 0, 0, 0, 2, 74, 0, 0,136, 0, 0, 0, /* 0x23d0 */ + 2, 82, 0, 0,140, 0, 0, 0, 2, 83, 0, 0, 16, 0, 0, 0, /* 0x23e0 */ + 1, 37, 0, 0, 92, 0, 0, 0, 1, 37, 0, 0, 96, 0, 0, 0, /* 0x23f0 */ + 1, 37, 0, 0,104, 0, 0, 0, 1, 37, 0, 0,116, 0, 0, 0, /* 0x2400 */ + 1, 37, 0, 0,128, 0, 0, 0, 1, 37, 0, 0,140, 0, 0, 0, /* 0x2410 */ + 1, 37, 0, 0,144, 0, 0, 0, 1, 37, 0, 0,156, 0, 0, 0, /* 0x2420 */ + 1, 37, 0, 0,172, 0, 0, 0, 1, 37, 0, 0,180, 0, 0, 0, /* 0x2430 */ + 1, 37, 0, 0,184, 0, 0, 0, 1, 37, 0, 0,192, 0, 0, 0, /* 0x2440 */ + 1, 37, 0, 0,196, 0, 0, 0, 1, 37, 0, 0,208, 0, 0, 0, /* 0x2450 */ + 1, 37, 0, 0,212, 0, 0, 0, 1, 37, 0, 0,220, 0, 0, 0, /* 0x2460 */ + 1, 37, 0, 0,232, 0, 0, 0, 1, 37, 0, 0,236, 0, 0, 0, /* 0x2470 */ + 1, 37, 0, 0,244, 0, 0, 0, 1, 37, 0, 0,252, 0, 0, 0, /* 0x2480 */ + 1, 37, 0, 0, 32, 1, 0, 0, 1, 37, 0, 0, 36, 1, 0, 0, /* 0x2490 */ + 1, 37, 0, 0, 16, 0, 0, 0, 1, 52, 0, 0, 92, 0, 0, 0, /* 0x24a0 */ + 1, 52, 0, 0, 96, 0, 0, 0, 1, 52, 0, 0,104, 0, 0, 0, /* 0x24b0 */ + 1, 52, 0, 0,116, 0, 0, 0, 1, 52, 0, 0,128, 0, 0, 0, /* 0x24c0 */ + 1, 52, 0, 0,140, 0, 0, 0, 1, 52, 0, 0,144, 0, 0, 0, /* 0x24d0 */ + 1, 52, 0, 0,156, 0, 0, 0, 1, 52, 0, 0,172, 0, 0, 0, /* 0x24e0 */ + 1, 52, 0, 0,180, 0, 0, 0, 1, 52, 0, 0,188, 0, 0, 0, /* 0x24f0 */ + 1, 52, 0, 0,200, 0, 0, 0, 1, 52, 0, 0,208, 0, 0, 0, /* 0x2500 */ + 1, 52, 0, 0,220, 0, 0, 0, 1, 52, 0, 0,232, 0, 0, 0, /* 0x2510 */ + 1, 52, 0, 0,236, 0, 0, 0, 1, 52, 0, 0, 16, 1, 0, 0, /* 0x2520 */ + 1, 52, 0, 0, 20, 1, 0, 0, 1, 52, 0, 0, 8, 0, 0, 0, /* 0x2530 */ + 1, 68, 0, 0, 84, 0, 0, 0, 1, 64, 0, 0, 10,116,109,112, /* 0x2540 */ + 47, 97,114,109, 45,108,105,110,117,120, 46,101,108,102, 45,101, /* 0x2550 */ +110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32,102,105, /* 0x2560 */ +108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, 50, 45, /* 0x2570 */ +108,105,116,116,108,101, 97,114,109, 10, 10, 83,101, 99,116,105, /* 0x2580 */ +111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, /* 0x2590 */ + 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, /* 0x25a0 */ + 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, /* 0x25b0 */ + 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65, /* 0x25c0 */ +108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, /* 0x25d0 */ + 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x25e0 */ + 48, 48, 48, 57, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x25f0 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x2600 */ + 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x2610 */ + 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x2620 */ + 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 50, 69, 32, 32, /* 0x2630 */ + 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 56, 32, /* 0x2640 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x2650 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 99, 52, 32, 32, 50, /* 0x2660 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x2670 */ + 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2680 */ + 32, 50, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2690 */ + 32, 48, 48, 48, 48, 48, 49, 49, 56, 32, 32, 48, 48, 48, 48, 48, /* 0x26a0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x26b0 */ + 48, 48, 48, 48, 49,101, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x26c0 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x26d0 */ + 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 76, 90, 77, /* 0x26e0 */ + 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x26f0 */ + 48, 56, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2700 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 48, /* 0x2710 */ + 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x2720 */ + 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x2730 */ + 76, 89, 10, 32, 32, 52, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x2740 */ + 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 97, 50, 99, 32, 32, 48, /* 0x2750 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2760 */ + 48, 32, 32, 48, 48, 48, 48, 48, 51, 56, 99, 32, 32, 50, 42, 42, /* 0x2770 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x2780 */ + 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 68, /* 0x2790 */ + 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 97, 50, 99, /* 0x27a0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x27b0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,100, 98, 56, 32, 32, /* 0x27c0 */ + 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x27d0 */ + 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, /* 0x27e0 */ + 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x27f0 */ + 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2800 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55,101, /* 0x2810 */ + 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x2820 */ + 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, /* 0x2830 */ + 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x2840 */ + 48, 48, 48, 48, 51, 54, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2850 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x2860 */ + 49, 55,101, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x2870 */ + 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2880 */ + 32, 56, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, /* 0x2890 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x28a0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x28b0 */ + 48, 48, 48, 49, 56, 50, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x28c0 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x28d0 */ + 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, /* 0x28e0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, /* 0x28f0 */ + 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2900 */ +115,114, 99, 47, 97,114,109, 45,108,105,110,117,120, 46,101,108, /* 0x2910 */ +102, 45,101,110,116,114,121, 46, 83, 10, 48, 48, 48, 48, 48, 48, /* 0x2920 */ + 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, /* 0x2930 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47, 97,114, /* 0x2940 */ + 99,104, 47, 97,114,109, 47,118, 52, 97, 47,108,122,109, 97, 95, /* 0x2950 */ +100, 46, 83, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2960 */ + 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, /* 0x2970 */ + 48, 48, 48, 32,115,114, 99, 47, 97,114, 99,104, 47, 97,114,109, /* 0x2980 */ + 47,118, 52, 97, 47,108,122,109, 97, 95,100, 95, 99,102, 46, 83, /* 0x2990 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x29a0 */ +102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x29b0 */ + 32,115,114, 99, 47, 97,114, 99,104, 47, 97,114,109, 47,118, 52, /* 0x29c0 */ + 97, 47,108,122,109, 97, 95,100, 46, 83, 10, 48, 48, 48, 48, 48, /* 0x29d0 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, /* 0x29e0 */ + 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47, 97, /* 0x29f0 */ +114, 99,104, 47, 97,114,109, 47,118, 52, 97, 47,108,122,109, 97, /* 0x2a00 */ + 95,100, 95, 99,115, 46, 83, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a10 */ + 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, /* 0x2a20 */ + 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47, 97,114, 99,104, /* 0x2a30 */ + 47, 97,114,109, 47,118, 52, 97, 47,108,122,109, 97, 95,100, 46, /* 0x2a40 */ + 83, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2a50 */ +100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2a60 */ + 48, 32,115,114, 99, 47, 97,114,109, 45,108,105,110,117,120, 46, /* 0x2a70 */ +101,108,102, 45,101,110,116,114,121, 46, 83, 10, 48, 48, 48, 48, /* 0x2a80 */ + 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, /* 0x2a90 */ + 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47, /* 0x2aa0 */ + 97,114, 99,104, 47, 97,114,109, 47,118, 52, 97, 47,110,114,118, /* 0x2ab0 */ + 50,100, 95,100, 56, 46, 83, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2ac0 */ + 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, /* 0x2ad0 */ + 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47, 97,114,109, 45, /* 0x2ae0 */ +108,105,110,117,120, 46,101,108,102, 45,101,110,116,114,121, 46, /* 0x2af0 */ + 83, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2b00 */ +100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2b10 */ + 48, 32,115,114, 99, 47, 97,114, 99,104, 47, 97,114,109, 47,118, /* 0x2b20 */ + 52, 97, 47,110,114,118, 50,101, 95,100, 56, 46, 83, 10, 48, 48, /* 0x2b30 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, /* 0x2b40 */ + 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, /* 0x2b50 */ + 99, 47, 97,114,109, 45,108,105,110,117,120, 46,101,108,102, 45, /* 0x2b60 */ +101,110,116,114,121, 46, 83, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b70 */ + 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, /* 0x2b80 */ + 48, 48, 48, 48, 48, 48, 48, 32, 60, 99,111,109,109, 97,110,100, /* 0x2b90 */ + 32,108,105,110,101, 62, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2ba0 */ +108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, /* 0x2bb0 */ + 48, 48, 48, 48, 48, 48, 32, 60, 98,117,105,108,116, 45,105,110, /* 0x2bc0 */ + 62, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2bd0 */ +100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2be0 */ + 48, 32,115,114, 99, 47, 97,114,109, 45,108,105,110,117,120, 46, /* 0x2bf0 */ +101,108,102, 45,101,110,116,114,121, 46, 83, 10, 48, 48, 48, 48, /* 0x2c00 */ + 48, 48, 51, 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 42, 65, 66, /* 0x2c10 */ + 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,122, 95, 69, /* 0x2c20 */ +108,102, 51, 50, 95, 69,104,100,114, 10, 48, 48, 48, 48, 48, 48, /* 0x2c30 */ + 50, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 42, 65, 66, 83, 42, /* 0x2c40 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,122, 95, 69,108,102, /* 0x2c50 */ + 51, 50, 95, 80,104,100,114, 10, 48, 48, 48, 48, 48, 48, 48, 99, /* 0x2c60 */ + 32,108, 32, 32, 32, 32, 32, 32, 32, 42, 65, 66, 83, 42, 9, 48, /* 0x2c70 */ + 48, 48, 48, 48, 48, 48, 48, 32,115,122, 95, 98, 95,105,110,102, /* 0x2c80 */ +111, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2c90 */ + 32, 32, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2ca0 */ + 48, 32,115,122, 95,117,110, 99, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2cb0 */ + 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 42, 65, 66, 83, 42, 9, /* 0x2cc0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32,115,122, 95, 99,112,114, 10, /* 0x2cd0 */ + 48, 48, 48, 48, 48, 48, 48, 56, 32,108, 32, 32, 32, 32, 32, 32, /* 0x2ce0 */ + 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2cf0 */ + 98, 95,109,101,116,104,111,100, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2d00 */ + 49, 32,108, 32, 32, 32, 32, 32, 32, 32, 42, 65, 66, 83, 42, 9, /* 0x2d10 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 80, 82, 79, 84, 95, 82, 69, /* 0x2d20 */ + 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32,108, 32, 32, 32, /* 0x2d30 */ + 32, 32, 32, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, /* 0x2d40 */ + 48, 48, 32, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 10, 48, 48, /* 0x2d50 */ + 48, 48, 48, 48, 48, 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x2d60 */ + 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 80, 82, /* 0x2d70 */ + 79, 84, 95, 69, 88, 69, 67, 10, 48, 48, 48, 48, 48, 48, 48, 50, /* 0x2d80 */ + 32,108, 32, 32, 32, 32, 32, 32, 32, 42, 65, 66, 83, 42, 9, 48, /* 0x2d90 */ + 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 80, 95, 80, 82, 73, 86, /* 0x2da0 */ + 65, 84, 69, 10, 48, 48, 48, 48, 48, 48, 49, 48, 32,108, 32, 32, /* 0x2db0 */ + 32, 32, 32, 32, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, /* 0x2dc0 */ + 48, 48, 48, 32, 77, 65, 80, 95, 70, 73, 88, 69, 68, 10, 48, 48, /* 0x2dd0 */ + 48, 48, 48, 48, 50, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x2de0 */ + 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, /* 0x2df0 */ + 80, 95, 65, 78, 79, 78, 89, 77, 79, 85, 83, 10, 48, 48, 48, 48, /* 0x2e00 */ + 48, 48, 48, 99, 32,108, 32, 32, 32, 32, 32, 32, 32, 42, 65, 66, /* 0x2e10 */ + 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 80, 65, 71, 69, /* 0x2e20 */ + 95, 83, 72, 73, 70, 84, 10, 48, 48, 48, 48, 49, 48, 48, 48, 32, /* 0x2e30 */ +108, 32, 32, 32, 32, 32, 32, 32, 42, 65, 66, 83, 42, 9, 48, 48, /* 0x2e40 */ + 48, 48, 48, 48, 48, 48, 32, 80, 65, 71, 69, 95, 83, 73, 90, 69, /* 0x2e50 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2e60 */ + 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, /* 0x2e70 */ + 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, /* 0x2e80 */ + 48, 48, 48, 55, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 69, 76, /* 0x2e90 */ + 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2ea0 */ +115,116, 97,114,116, 95,112, 97,114, 97,109,115, 10, 48, 48, 48, /* 0x2eb0 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 69, 76, /* 0x2ec0 */ + 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2ed0 */ +109,115,103, 95, 83, 69, 76,105,110,117,120, 10, 48, 48, 48, 48, /* 0x2ee0 */ + 48, 48, 50, 56, 32,108, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, /* 0x2ef0 */ + 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99, /* 0x2f00 */ +111,112,121, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2f10 */ + 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, /* 0x2f20 */ + 48, 48, 48, 48, 48, 48, 32, 99,112,114, 48, 10, 48, 48, 48, 48, /* 0x2f30 */ + 48, 48, 57, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, /* 0x2f40 */ + 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,102, /* 0x2f50 */ + 95,100,101, 99,111,109,112,114,101,115,115, 10, 48, 48, 48, 48, /* 0x2f60 */ + 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x2f70 */ + 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, /* 0x2f80 */ + 69, 10, 48, 48, 48, 48, 48, 48, 53, 56, 32,108, 32, 32, 32, 32, /* 0x2f90 */ + 32, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2fa0 */ + 48, 32,116,111,112, 95,110, 50,101, 10, 48, 48, 48, 48, 48, 48, /* 0x2fb0 */ + 49, 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, /* 0x2fc0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,101,111,102, 95,110, 50, /* 0x2fd0 */ +101, 10, 48, 48, 48, 48, 48, 48, 52, 48, 32,108, 32, 32, 32, 32, /* 0x2fe0 */ + 32, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2ff0 */ + 48, 32,103,101,116, 56, 95,110, 50,101, 10, 48, 48, 48, 48, 48, /* 0x3000 */ + 48, 53, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, /* 0x3010 */ + 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,105,116, 95,110, /* 0x3020 */ + 50,101, 10, 48, 48, 48, 48, 48, 48, 55, 99, 32,108, 32, 32, 32, /* 0x3030 */ + 32, 32, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, /* 0x3040 */ + 48, 48, 32,103,101,116,111,102,102, 95,110, 50,101, 10, 48, 48, /* 0x3050 */ + 48, 48, 48, 48, 54, 99, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x3060 */ + 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,111,102, /* 0x3070 */ +102, 95,110, 50,101, 10, 48, 48, 48, 48, 48, 48, 98, 99, 32,108, /* 0x3080 */ + 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, /* 0x3090 */ + 48, 48, 48, 48, 48, 32,111,102,102,112,114,101,118, 95,110, 50, /* 0x30a0 */ +101, 10, 48, 48, 48, 48, 48, 48,102, 56, 32,108, 32, 32, 32, 32, /* 0x30b0 */ + 32, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x30c0 */ + 48, 32,108,101,110,108, 97,115,116, 95,110, 50,101, 10, 48, 48, /* 0x30d0 */ + 48, 48, 48, 48, 99, 56, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x30e0 */ + 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,101, /* 0x30f0 */ +110,109,111,114,101, 95,110, 50,101, 10, 48, 48, 48, 48, 48, 48, /* 0x3100 */ +100, 56, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, /* 0x3110 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,101,110, 95,110, 50, /* 0x3120 */ +101, 10, 48, 48, 48, 48, 48, 49, 48, 56, 32,108, 32, 32, 32, 32, /* 0x3130 */ + 32, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x3140 */ + 48, 32,103,111,116,108,101,110, 95,110, 50,101, 10, 48, 48, 48, /* 0x3150 */ + 48, 48, 49, 49, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x3160 */ + 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,110,101, 97, /* 0x3170 */ +114, 95,110, 50,101, 10, 48, 48, 48, 48, 48, 49, 49, 52, 32,108, /* 0x3180 */ + 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, /* 0x3190 */ + 48, 48, 48, 48, 48, 32, 99,111,112,121, 95,110, 50,101, 10, 48, /* 0x31a0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x31b0 */ + 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, /* 0x31c0 */ + 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 53, 56, 32,108, 32, /* 0x31d0 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, /* 0x31e0 */ + 48, 48, 48, 48, 32,116,111,112, 95,110, 50,100, 10, 48, 48, 48, /* 0x31f0 */ + 48, 48, 48, 49, 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x3200 */ + 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,101,111,102, /* 0x3210 */ + 95,110, 50,100, 10, 48, 48, 48, 48, 48, 48, 52, 48, 32,108, 32, /* 0x3220 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, /* 0x3230 */ + 48, 48, 48, 48, 32,103,101,116, 56, 95,110, 50,100, 10, 48, 48, /* 0x3240 */ + 48, 48, 48, 48, 53, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x3250 */ + 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,105, /* 0x3260 */ +116, 95,110, 50,100, 10, 48, 48, 48, 48, 48, 48, 55, 99, 32,108, /* 0x3270 */ + 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, /* 0x3280 */ + 48, 48, 48, 48, 48, 32,103,101,116,111,102,102, 95,110, 50,100, /* 0x3290 */ + 10, 48, 48, 48, 48, 48, 48, 54, 99, 32,108, 32, 32, 32, 32, 32, /* 0x32a0 */ + 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x32b0 */ + 32,111,102,102, 95,110, 50,100, 10, 48, 48, 48, 48, 48, 48, 98, /* 0x32c0 */ + 56, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 9, /* 0x32d0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32,111,102,102,112,114,101,118, /* 0x32e0 */ + 95,110, 50,100, 10, 48, 48, 48, 48, 48, 48, 99, 52, 32,108, 32, /* 0x32f0 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, /* 0x3300 */ + 48, 48, 48, 48, 32,108,101,110, 95,110, 50,100, 10, 48, 48, 48, /* 0x3310 */ + 48, 48, 48,102, 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x3320 */ + 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,103,111,116, /* 0x3330 */ +108,101,110, 95,110, 50,100, 10, 48, 48, 48, 48, 48, 48,100, 56, /* 0x3340 */ + 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 9, 48, /* 0x3350 */ + 48, 48, 48, 48, 48, 48, 48, 32,108,101,110,109,111,114,101, 95, /* 0x3360 */ +110, 50,100, 10, 48, 48, 48, 48, 48, 49, 48, 52, 32,108, 32, 32, /* 0x3370 */ + 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, /* 0x3380 */ + 48, 48, 48, 32, 99,111,112,121, 95,110, 50,100, 10, 48, 48, 48, /* 0x3390 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x33a0 */ + 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x33b0 */ + 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, /* 0x33c0 */ + 48, 48, 48, 48, 56, 32,108, 32, 32, 32, 32, 32, 32, 32, 76, 90, /* 0x33d0 */ + 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x33e0 */ + 48, 32,110,111,116, 95,108,122,109, 97, 10, 48, 48, 48, 48, 48, /* 0x33f0 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x3400 */ + 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x3410 */ + 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, /* 0x3420 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x3430 */ + 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x3440 */ + 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, /* 0x3450 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x3460 */ + 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x3470 */ + 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, /* 0x3480 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, /* 0x3490 */ + 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, /* 0x34a0 */ + 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x34b0 */ +108, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x34c0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,101,110,100, 95,100,101, /* 0x34d0 */ + 99,111,109,112,114,101,115,115, 10, 48, 48, 48, 48, 48, 48, 51, /* 0x34e0 */ + 54, 32,108, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, /* 0x34f0 */ + 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 55, 49, 10, /* 0x3500 */ + 48, 48, 48, 48, 48, 48, 49, 56, 32,108, 32, 32, 32, 32, 32, 32, /* 0x3510 */ + 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, /* 0x3520 */ + 48, 48, 32, 76, 55, 48, 10, 48, 48, 48, 48, 48, 48, 49, 48, 32, /* 0x3530 */ +108, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x3540 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,100,105,101, 10, 48, 48, /* 0x3550 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, /* 0x3560 */ + 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x3570 */ + 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, /* 0x3580 */ + 48, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, /* 0x3590 */ + 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,101,111,102, /* 0x35a0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, /* 0x35b0 */ + 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, /* 0x35c0 */ + 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, /* 0x35d0 */ + 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x35e0 */ + 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 77, 10, /* 0x35f0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3600 */ + 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x3610 */ + 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x3620 */ + 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x3630 */ + 48, 48, 48, 48, 32, 65, 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, /* 0x3640 */ + 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x3650 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 78, 84, 67, 10, 48, /* 0x3660 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3670 */ + 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x3680 */ +101,110, 95,102, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x3690 */ + 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x36a0 */ + 48, 48, 48, 48, 32, 76, 69, 78, 88, 10, 48, 48, 48, 48, 48, 48, /* 0x36b0 */ + 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x36c0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 48, /* 0x36d0 */ + 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, /* 0x36e0 */ + 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 49, 50, 56, 32,117, /* 0x36f0 */ + 99,108, 95,110,114,118, 50,101, 95,100,101, 99,111,109,112,114, /* 0x3700 */ +101,115,115, 95, 56, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, /* 0x3710 */ + 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, /* 0x3720 */ + 48, 48, 49, 49, 56, 32,117, 99,108, 95,110,114,118, 50,100, 95, /* 0x3730 */ +100,101, 99,111,109,112,114,101,115,115, 95, 56, 10, 10, 10, 82, /* 0x3740 */ + 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x3750 */ + 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, /* 0x3760 */ + 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x3770 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x3780 */ + 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 50, 48, 32, 82, 95, 65, /* 0x3790 */ + 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 69, /* 0x37a0 */ + 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 51, 52, /* 0x37b0 */ + 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, /* 0x37c0 */ + 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, /* 0x37d0 */ + 48, 48, 55, 48, 32, 82, 95, 65, 82, 77, 95, 65, 66, 83, 51, 50, /* 0x37e0 */ + 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, /* 0x37f0 */ + 48, 48, 55, 52, 32, 82, 95, 65, 82, 77, 95, 65, 66, 83, 51, 50, /* 0x3800 */ + 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, /* 0x3810 */ + 48, 48, 55, 56, 32, 82, 95, 65, 82, 77, 95, 65, 66, 83, 51, 50, /* 0x3820 */ + 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 67, 10, 48, 48, 48, 48, /* 0x3830 */ + 48, 48, 55, 99, 32, 82, 95, 65, 82, 77, 95, 65, 66, 83, 51, 50, /* 0x3840 */ + 32, 32, 32, 32, 32, 32, 32, 67, 78, 84, 67, 10, 48, 48, 48, 48, /* 0x3850 */ + 48, 48, 56, 48, 32, 82, 95, 65, 82, 77, 95, 65, 66, 83, 51, 50, /* 0x3860 */ + 32, 32, 32, 32, 32, 32, 32,108,101,110, 95,102, 10, 48, 48, 48, /* 0x3870 */ + 48, 48, 48, 56, 52, 32, 82, 95, 65, 82, 77, 95, 65, 66, 83, 51, /* 0x3880 */ + 50, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x3890 */ + 10, 48, 48, 48, 48, 48, 48, 56, 56, 32, 82, 95, 65, 82, 77, 95, /* 0x38a0 */ + 65, 66, 83, 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 88, /* 0x38b0 */ + 10, 48, 48, 48, 48, 48, 48, 56, 99, 32, 82, 95, 65, 82, 77, 95, /* 0x38c0 */ + 65, 66, 83, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 88, /* 0x38d0 */ + 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x38e0 */ + 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, /* 0x38f0 */ + 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x3900 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x3910 */ + 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 49, 48, 32, 82, 95, /* 0x3920 */ + 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3930 */ + 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 53, 99, 32, 82, /* 0x3940 */ + 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, /* 0x3950 */ + 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 54, 48, 32, /* 0x3960 */ + 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, /* 0x3970 */ + 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 54, 56, /* 0x3980 */ + 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, /* 0x3990 */ + 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 55, /* 0x39a0 */ + 52, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, /* 0x39b0 */ + 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x39c0 */ + 56, 48, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, /* 0x39d0 */ + 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, /* 0x39e0 */ + 48, 56, 99, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, /* 0x39f0 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, /* 0x3a00 */ + 48, 48, 57, 48, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, /* 0x3a10 */ + 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, /* 0x3a20 */ + 48, 48, 48, 57, 99, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, /* 0x3a30 */ + 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, /* 0x3a40 */ + 48, 48, 48, 48, 97, 99, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, /* 0x3a50 */ + 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, /* 0x3a60 */ + 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 65, 82, 77, 95, 80, 67, /* 0x3a70 */ + 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, /* 0x3a80 */ + 48, 48, 48, 48, 48, 48, 98, 56, 32, 82, 95, 65, 82, 77, 95, 80, /* 0x3a90 */ + 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, /* 0x3aa0 */ + 10, 48, 48, 48, 48, 48, 48, 99, 48, 32, 82, 95, 65, 82, 77, 95, /* 0x3ab0 */ + 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, /* 0x3ac0 */ + 69, 10, 48, 48, 48, 48, 48, 48, 99, 52, 32, 82, 95, 65, 82, 77, /* 0x3ad0 */ + 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, /* 0x3ae0 */ + 50, 69, 10, 48, 48, 48, 48, 48, 48,100, 48, 32, 82, 95, 65, 82, /* 0x3af0 */ + 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x3b00 */ + 86, 50, 69, 10, 48, 48, 48, 48, 48, 48,100, 52, 32, 82, 95, 65, /* 0x3b10 */ + 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x3b20 */ + 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48,100, 99, 32, 82, 95, /* 0x3b30 */ + 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3b40 */ + 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48,101, 56, 32, 82, /* 0x3b50 */ + 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, /* 0x3b60 */ + 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48,101, 99, 32, /* 0x3b70 */ + 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, /* 0x3b80 */ + 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48,102, 52, /* 0x3b90 */ + 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, /* 0x3ba0 */ + 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48,102, /* 0x3bb0 */ + 99, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, /* 0x3bc0 */ + 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 49, /* 0x3bd0 */ + 50, 48, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, /* 0x3be0 */ + 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, /* 0x3bf0 */ + 49, 50, 52, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, /* 0x3c00 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 69, 10, 10, 10, 82, 69, /* 0x3c10 */ + 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x3c20 */ + 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, /* 0x3c30 */ + 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x3c40 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, /* 0x3c50 */ + 48, 48, 48, 48, 48, 48, 49, 48, 32, 82, 95, 65, 82, 77, 95, 80, /* 0x3c60 */ + 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, /* 0x3c70 */ + 10, 48, 48, 48, 48, 48, 48, 53, 99, 32, 82, 95, 65, 82, 77, 95, /* 0x3c80 */ + 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, /* 0x3c90 */ + 68, 10, 48, 48, 48, 48, 48, 48, 54, 48, 32, 82, 95, 65, 82, 77, /* 0x3ca0 */ + 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, /* 0x3cb0 */ + 50, 68, 10, 48, 48, 48, 48, 48, 48, 54, 56, 32, 82, 95, 65, 82, /* 0x3cc0 */ + 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x3cd0 */ + 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 55, 52, 32, 82, 95, 65, /* 0x3ce0 */ + 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x3cf0 */ + 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 56, 48, 32, 82, 95, /* 0x3d00 */ + 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3d10 */ + 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 56, 99, 32, 82, /* 0x3d20 */ + 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, /* 0x3d30 */ + 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, /* 0x3d40 */ + 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, /* 0x3d50 */ + 32, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 57, 99, /* 0x3d60 */ + 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, /* 0x3d70 */ + 32, 32, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 97, /* 0x3d80 */ + 99, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, /* 0x3d90 */ + 32, 32, 32, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, /* 0x3da0 */ + 98, 52, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, /* 0x3db0 */ + 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, /* 0x3dc0 */ + 48, 98, 99, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, 32, /* 0x3dd0 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, /* 0x3de0 */ + 48, 48, 99, 56, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, /* 0x3df0 */ + 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, /* 0x3e00 */ + 48, 48, 48,100, 48, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, /* 0x3e10 */ + 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 10, 48, 48, /* 0x3e20 */ + 48, 48, 48, 48,100, 99, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, /* 0x3e30 */ + 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 10, 48, /* 0x3e40 */ + 48, 48, 48, 48, 48,101, 56, 32, 82, 95, 65, 82, 77, 95, 80, 67, /* 0x3e50 */ + 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, 10, /* 0x3e60 */ + 48, 48, 48, 48, 48, 48,101, 99, 32, 82, 95, 65, 82, 77, 95, 80, /* 0x3e70 */ + 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 68, /* 0x3e80 */ + 10, 48, 48, 48, 48, 48, 49, 49, 48, 32, 82, 95, 65, 82, 77, 95, /* 0x3e90 */ + 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, /* 0x3ea0 */ + 68, 10, 48, 48, 48, 48, 48, 49, 49, 52, 32, 82, 95, 65, 82, 77, /* 0x3eb0 */ + 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, /* 0x3ec0 */ + 50, 68, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x3ed0 */ + 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, /* 0x3ee0 */ + 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x3ef0 */ + 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3f00 */ + 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, /* 0x3f10 */ + 48, 48, 48, 56, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, /* 0x3f20 */ + 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, /* 0x3f30 */ + 48, 10, 48, 48, 48, 48, 48, 48, 53, 52, 32, 82, 95, 65, 82, 77, /* 0x3f40 */ + 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, /* 0x3f50 */ + 65, 95, 69, 76, 70, 48, 48, 10, 10, 10 /* 0x3f60 */ }; diff --git a/src/stub/src/arch/arm/v4a/lzma_d.S b/src/stub/src/arch/arm/v4a/lzma_d.S new file mode 100644 index 00000000..39712259 --- /dev/null +++ b/src/stub/src/arch/arm/v4a/lzma_d.S @@ -0,0 +1,118 @@ +/* lzma_d.S -- ARM decompressor for LZMA + + This file is part of the UPX executable compressor. + + Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996-2006 Laszlo Molnar + Copyright (C) 2000-2006 John F. Reiser + All Rights Reserved. + + UPX and the UCL library are free software; you can redistribute them + and/or modify them under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + If not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Markus F.X.J. Oberhumer Laszlo Molnar + + + John F. Reiser + +*/ + +#define section .section + + section LZMA_ELF00 +//decompress: // (uchar const *src, size_t lsrc, uchar *dst, u32 &ldst, uint method) +/* Arguments according to calling convention */ +#define src r0 +#define lsrc r1 +#define dst r2 +#define ldst r3 /* Out: actually a reference: &len_dst */ +#define meth [sp,#0] + + // bkpt // debugging + +#define M_LZMA 14 + ldrb ip,meth; cmp ip,#M_LZMA; bne not_lzma + + PUSH {fp,lr} + mov fp,sp + +#define a0 r0 +#define a1 r1 +#define a2 r2 +#define a3 r3 +#define a4 [sp,#0*4] /* outp */ +#define a5 [sp,#1*4] /* outSize */ +#define a6 [sp,#2*4] /* &outSizeProcessed */ +#define inSzP 3*4 /* inSizeprocessed */ +#define State 4*4 /* CLzmaDecoderState */ + +//LzmaDecode( // from lzmaSDK/C/7zip/Compress/LZMA_C/LzmaDecode.h +// a0= &CLzmaDecoderState, +// a1= inp, a2= inSize, a3= &inSizeProcessed, +// a4= outp, a5= outSize, a6= &outSizeProcessed +//) +#define LZMA_BASE_SIZE 1846 +#define LZMA_LIT_SIZE 768 + + ldrb fp,[src,#0] // first byte, replaces LzmaDecodeProperties() + mov ip,#2*LZMA_LIT_SIZE + mov fp,fp,LSR #3 // lit_context_bits + lit_pos_bits + mov ip,ip,LSL fp // 2*LZMA_LIT_SIZE << (lit_context_bits + lit_pos_bits) + mov fp,sp + add ip,ip,# ((4*4 + 2*LZMA_BASE_SIZE)>>8)<<8 + add ip,ip,#0xff & (4*4 + 2*LZMA_BASE_SIZE) + sub sp,sp,ip + + ldr ip,[ldst] + str ldst,a6 // &outSizeProcessed + str ip, a5 // outSize + str dst, a4 // outp + + add r3,sp,#inSzP + mov ip,#0 +1: // clear inSizeProcessed and CLzmaDecoderState + str ip,[r3],#4 + cmp r3,fp + bne 1b + + add a3,sp,#inSzP // &inSizeProcessed + sub a2,lsrc,#2 // inSize + mov a1, src // inp + + ldrb ip,[a1],#1 // first byte, replaces LzmaDecodeProperties() + and ip,ip,#7 // posBits + strb ip,[sp,#2 + State] + ldrb ip,[a1],#1 // second byte, replaces LzmaDecodeProperties() + mov a0,ip,LSR #4 // lit_pos_bits + strb a0,[sp,#1 + State] + and ip,ip,#0xf // lib_context_bits + strb ip,[sp,#0 + State] + + add a0,sp,#State + + section LZMA_DEC10 +#include "lzma_d_cs.S" + + section LZMA_DEC20 +#include "lzma_d_cf.S" + + section LZMA_DEC30 + mov sp,fp + POP {fp,pc} + +not_lzma: + +// vi:ts=8:et + diff --git a/src/stub/src/arch/arm/v4a/nrv2d_d8.S b/src/stub/src/arch/arm/v4a/nrv2d_d8.S new file mode 100644 index 00000000..0c60a958 --- /dev/null +++ b/src/stub/src/arch/arm/v4a/nrv2d_d8.S @@ -0,0 +1,192 @@ +/* nrv2d_d8.S -- ARM decompressor for NRV2D + + This file is part of the UPX executable compressor. + + Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996-2006 Laszlo Molnar + Copyright (C) 2000-2006 John F. Reiser + All Rights Reserved. + + UPX and the UCL library are free software; you can redistribute them + and/or modify them under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + If not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Markus F.X.J. Oberhumer Laszlo Molnar + + + John F. Reiser + +*/ +#define SAFE 0 /* 1 for src+dst bounds checking: cost 76 bytes */ + +#define src r0 +#define len r1 /* overlaps 'cnt' */ +#define dst r2 +#define tmp r3 +#define bits r4 +#define off r5 +/* r6 UNUSED in ARM code unless DEBUG mode */ +#define srclim r7 +#if 1==SAFE /*{*/ +#define dstlim r12 +#endif /*}*/ + +#define cnt r1 /* overlaps 'len' while reading an offset */ + +/* macros reduce "noise" when comparing this ARM code to corresponding THUMB code */ +#define PUSH stmdb sp!, +#define POP ldmia sp!, +#define ADD2( dst,src) add dst,dst,src +#define ADD2S(dst,src) adds dst,dst,src +#define ADC2( dst,src) adc dst,dst,src +#define ADC2S(dst,src) adcs dst,dst,src +#define SUB2( dst,src) sub dst,dst,src +#define SUB2S(dst,src) subs dst,dst,src +#define LDRB3(reg,psrc,incr) ldrb reg,psrc,incr +#define STRB3(reg,pdst,incr) strb reg,pdst,incr + +#if 1==SAFE /*{*/ +#define CHECK_SRC cmp srclim,src; bls bad_src_n2d /* Out: 1==Carry for get8_n2d */ +#define CHECK_DST cmp dst,dstlim; bhs bad_dst_n2d +#else /*}{*/ +#define CHECK_SRC /*empty*/ +#define CHECK_DST /*empty*/ +#endif /*}*/ + +#if 0 /*{ DEBUG only: check newly-decompressed against original dst */ +#define CHECK_BYTE \ + ldrb r6,[dst]; \ + cmp r6,tmp; beq 0f; bkpt; 0: +#else /*}{*/ +#define CHECK_BYTE /*empty*/ +#endif /*}*/ + +#undef GETBIT +#define GETBIT ADD2S(bits,bits); bleq get8_n2d + +#undef getnextb +#define getnextb(reg) GETBIT; ADC2S(reg,reg) /* Out: condition code changed */ +#define jnextb0 GETBIT; bcc +#define jnextb1 GETBIT; bcs + +ucl_nrv2d_decompress_8: .globl ucl_nrv2d_decompress_8 // ARM mode + .type ucl_nrv2d_decompress_8, %function +/* error = (*)(char const *src, int len_src, char *dst, int *plen_dst) + Actual decompressed length is stored through plen_dst. + For SAFE mode: at call, *plen_dst must be allowed length of output buffer. +*/ + PUSH {r2,r3, r4,r5,r6,r7, lr} +#define sp_DST0 0 /* stack offset of original dst */ + add srclim,len,src // srclim= eof_src; +#if 1==SAFE /*{*/ + ldr tmp,[r3] // len_dst + add dstlim,tmp,dst +#endif /*}*/ + mvn off,#~-1 // off= -1 initial condition + mov bits,#1<<31 // refill next time + b top_n2d + +#if 1==SAFE /*{*/ +bad_dst_n2d: # return value will be 2 +bkpt + add src,srclim,#1 +bad_src_n2d: # return value will be 1 + ADD2(src,#1) +#endif /*}*/ +eof_n2d: + POP {r3,r4} // r3= orig_dst; r4= plen_dst + SUB2(src,srclim) // 0 if actual src length equals expected length + SUB2(dst,r3) // actual dst length + str dst,[r4] + +#if defined(LINUX_ARM_CACHEFLUSH) /*{*/ +/* linux/include/asm-arm/unistd.h */ +#define __NR_SYSCALL_BASE 0x900000 +#define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000) +#define __ARM_NR_cacheflush (__ARM_NR_BASE+2) + mov r4,r0 // save result value + mov r0,r3 // orig_dst + add r1,r3,dst // orig_dst + dst_len + mov r2,#0 + swi __ARM_NR_cacheflush // decompressed region + mov r0,r4 // result value +#endif /*}*/ + + POP {r4,r5,r6,r7 ,pc} + +get8_n2d: // In: Carry set [from adding 0x80000000 (1<<31) to itself] + CHECK_SRC; LDRB3(bits,[src],#1) // zero-extend next byte + adc bits,bits,bits // double and insert CarryIn as low bit + movs bits,bits,lsl #24 // move to top byte, and set CarryOut from old bit 8 + mov pc,lr + +lit_n2d: + CHECK_SRC; LDRB3(tmp,[src],#1) + CHECK_BYTE + CHECK_DST; STRB3(tmp,[dst],#1) +top_n2d: + jnextb1 lit_n2d + mov cnt,#1; b getoff_n2d + +off_n2d: + SUB2(cnt,#1) + getnextb(cnt) +getoff_n2d: + getnextb(cnt) + jnextb0 off_n2d + + subs tmp,cnt,#3 // set Carry + mov len,#0 // Carry unaffected + blo offprev_n2d // cnt was 2; tests Carry only + CHECK_SRC; LDRB3(off,[src],#1) // low 7+1 bits + orr off,off,tmp,lsl #8 + mvns off,off; beq eof_n2d // off= ~off + movs off,off,asr #1 + b len_n2d -4 // CHEAT [getnextb ends in ADC2(reg,reg)] + +offprev_n2d: + getnextb(len) +len_n2d: + getnextb(len); bne gotlen_n2d // 1..3 getnextb() must set Condition Code + mov len,#1 // begin ss11 +lenmore_n2d: + getnextb(len) + jnextb0 lenmore_n2d + ADD2(len,#2) // 2.. ==> 4.. +gotlen_n2d: // 'cmn': add the inputs, set condition codes, discard the sum + ADD2(len,#1) // 1..3 ==> 2..4; 4.. ==> 5.. + cmn off,#5<<8 // displ<=M2_MAX_OFFSET ==> no increment + addcc len,len,#1 // too far away, so minimum match length is 3 +#if 1==SAFE /*{*/ + ldr tmp,[sp,#sp_DST0] + SUB2( tmp,dst) + SUB2S(tmp,off); bhi bad_dst_n2d // reaching back too far + + add tmp,dst,cnt + cmp tmp,dstlim; bhi bad_dst_n2d // too much output +#endif /*}*/ + ldrb tmp,[dst] // force cacheline allocate +copy_n2d: + ldrb tmp,[dst,off] + CHECK_BYTE + STRB3(tmp,[dst],#1) + SUB2S(len,#1); bne copy_n2d + b top_n2d + + .size ucl_nrv2d_decompress_8, .-ucl_nrv2d_decompress_8 + +/* +vi:ts=8:et:nowrap + */ + diff --git a/src/stub/src/arch/arm/v4a/nrv2e_d8.S b/src/stub/src/arch/arm/v4a/nrv2e_d8.S index ad2bb9ed..b3c03714 100644 --- a/src/stub/src/arch/arm/v4a/nrv2e_d8.S +++ b/src/stub/src/arch/arm/v4a/nrv2e_d8.S @@ -78,7 +78,7 @@ #define jnextb0 GETBIT; bcc #define jnextb1 GETBIT; bcs -ucl_nrv2e_decompress_8: .globl ucl_nrv2e_decompress_8 @ ARM mode +ucl_nrv2e_decompress_8: .globl ucl_nrv2e_decompress_8 // ARM mode .type ucl_nrv2e_decompress_8, %function /* error = (*)(char const *src, int len_src, char *dst, int *plen_dst) Actual decompressed length is stored through plen_dst. @@ -86,13 +86,13 @@ ucl_nrv2e_decompress_8: .globl ucl_nrv2e_decompress_8 @ ARM mode */ PUSH {r2,r3, r4,r5,r6,r7, lr} #define sp_DST0 0 /* stack offset of original dst */ - add srclim,len,src @ srclim= eof_src; + add srclim,len,src // srclim= eof_src; #if 1==SAFE /*{*/ - ldr tmp,[r3] @ len_dst + ldr tmp,[r3] // len_dst add dstlim,tmp,dst #endif /*}*/ - mvn off,#~-1 @ off= -1 initial condition - mov bits,#1<<31 @ refill next time + mvn off,#~-1 // off= -1 initial condition + mov bits,#1<<31 // refill next time b top_n2e #if 1==SAFE /*{*/ @@ -103,9 +103,9 @@ bad_src_n2e: # return value will be 1 ADD2(src,#1) #endif /*}*/ eof_n2e: - POP {r3,r4} @ r3= orig_dst; r4= plen_dst - SUB2(src,srclim) @ 0 if actual src length equals expected length - SUB2(dst,r3) @ actual dst length + POP {r3,r4} // r3= orig_dst; r4= plen_dst + SUB2(src,srclim) // 0 if actual src length equals expected length + SUB2(dst,r3) // actual dst length str dst,[r4] #if defined(LINUX_ARM_CACHEFLUSH) /*{*/ @@ -113,20 +113,20 @@ eof_n2e: #define __NR_SYSCALL_BASE 0x900000 #define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000) #define __ARM_NR_cacheflush (__ARM_NR_BASE+2) - mov r4,r0 @ save result value - mov r0,r3 @ orig_dst - add r1,r3,dst @ orig_dst + dst_len + mov r4,r0 // save result value + mov r0,r3 // orig_dst + add r1,r3,dst // orig_dst + dst_len mov r2,#0 - swi __ARM_NR_cacheflush @ decompressed region - mov r0,r4 @ result value + swi __ARM_NR_cacheflush // decompressed region + mov r0,r4 // result value #endif /*}*/ POP {r4,r5,r6,r7 ,pc} -get8_n2e: @ In: Carry set [from adding 0x80000000 (1<<31) to itself] - CHECK_SRC; LDRB3(bits,[src],#1) @ zero-extend next byte - adc bits,bits,bits @ double and insert CarryIn as low bit - movs bits,bits,lsl #24 @ move to top byte, and set CarryOut from old bit 8 +get8_n2e: // In: Carry set [from adding 0x80000000 (1<<31) to itself] + CHECK_SRC; LDRB3(bits,[src],#1) // zero-extend next byte + adc bits,bits,bits // double and insert CarryIn as low bit + movs bits,bits,lsl #24 // move to top byte, and set CarryOut from old bit 8 mov pc,lr lit_n2e: @@ -144,12 +144,12 @@ getoff_n2e: getnextb(cnt) jnextb0 off_n2e - subs tmp,cnt,#3 @ set Carry - mov len,#0 @ Carry unaffected - blo offprev_n2e @ cnt was 2; tests Carry only - CHECK_SRC; LDRB3(off,[src],#1) @ low 7+1 bits + subs tmp,cnt,#3 // set Carry + mov len,#0 // Carry unaffected + blo offprev_n2e // cnt was 2; tests Carry only + CHECK_SRC; LDRB3(off,[src],#1) // low 7+1 bits orr off,off,tmp,lsl #8 - mvns off,off; beq eof_n2e @ off= ~off + mvns off,off; beq eof_n2e // off= ~off movs off,off,asr #1; bcs lenlast_n2e b lenmore_n2e @@ -165,21 +165,21 @@ len_n2e: b gotlen_n2e lenlast_n2e: - getnextb(len) @ 0,1,2,3 + getnextb(len) // 0,1,2,3 ADD2(len,#2) -gotlen_n2e: @ 'cmn': add the inputs, set condition codes, discard the sum - cmn off,#5<<8; bcs near_n2e @ within M2_MAX_OFFSET - ADD2(len,#1) @ too far away, so minimum match length is 3 +gotlen_n2e: // 'cmn': add the inputs, set condition codes, discard the sum + cmn off,#5<<8 // within M2_MAX_OFFSET + addcc len,len,#1 // too far away, so minimum match length is 3 near_n2e: #if 1==SAFE /*{*/ ldr tmp,[sp,#sp_DST0] SUB2( tmp,dst) - SUB2S(tmp,off); bhi bad_dst_n2e @ reaching back too far + SUB2S(tmp,off); bhi bad_dst_n2e // reaching back too far add tmp,dst,cnt - cmp tmp,dstlim; bhi bad_dst_n2e @ too much output + cmp tmp,dstlim; bhi bad_dst_n2e // too much output #endif /*}*/ - ldrb tmp,[dst] @ force cacheline allocate + ldrb tmp,[dst] // force cacheline allocate copy_n2e: ldrb tmp,[dst,off] CHECK_BYTE diff --git a/src/stub/src/arch/powerpc/32/nrv2d_d.S b/src/stub/src/arch/powerpc/32/nrv2d_d.S index 1cb3be45..9b48b092 100644 --- a/src/stub/src/arch/powerpc/32/nrv2d_d.S +++ b/src/stub/src/arch/powerpc/32/nrv2d_d.S @@ -92,7 +92,7 @@ lit_n2d: #undef tmp top_n2d: jnextb1y lit_n2d - li off,1 + li off,1 // start ss12 b getoff_n2d off_n2d: @@ -115,11 +115,11 @@ offprev_n2d: getnextb(len) len_n2d: getnextb(len); bne gotlen_n2d // need getnextb() to set Condition Register - addi len,len,1 + li len,1 // begin ss11 lenmore_n2d: getnextb(len) jnextb0n lenmore_n2d - addi len,len,2 + addi len,len,2 // 2.. ==> 4.. gotlen_n2d: #define tmp off diff --git a/src/stub/src/arm-linux.elf-entry.S b/src/stub/src/arm-linux.elf-entry.S index 8fcb4619..7c4d19e6 100644 --- a/src/stub/src/arm-linux.elf-entry.S +++ b/src/stub/src/arm-linux.elf-entry.S @@ -28,6 +28,7 @@ * John F. Reiser * */ +#define section .section sz_Elf32_Ehdr = 13*4 sz_Elf32_Phdr = 8*4 @@ -48,14 +49,7 @@ MAP_ANONYMOUS= 0x20 PAGE_SHIFT= 12 PAGE_SIZE = -(~0<