From 771ab5ea9a7ea30d754318368dd109a9b5fab996 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 00:11:06 +0200 Subject: [PATCH 01/14] Added notes about binutils-multiarch-2.17. --- README.SRC | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.SRC b/README.SRC index 23b3f2f8..47efa57e 100644 --- a/README.SRC +++ b/README.SRC @@ -75,7 +75,8 @@ Tools needed to build/modify the UPX sources To compile the packer sources ----------------------------- - set the environment variable UPX_UCLDIR to point to your UCL installation, e.g. + set the environment variable UPX_UCLDIR to point to your + UCL installation, e.g. set UPX_UCLDIR=c:\src\ucl-1.03 (DOS / Windows) export UPX_UCLDIR=$HOME/local/src/ucl-1.03 (Unix) @@ -99,6 +100,15 @@ If you want to modify the stub sources you'll also need - ASM5900 - a MIPS R3000 assembler http://upx.sourceforge.net/download/tools/ + - binutils-multiarch-2.17 + http://ftp.gnu.org/gnu/binutils/binutils-2.17.tar.bz2 + + You have to configure binutils with something like: + --enable-64-bit-bfd --enable-targets=all --disable-nls \ + --disable-shared \ + --program-prefix=multiarch- --program-suffix=-2.17 \ + --prefix=/home/local/packages/binutils-multiarch-2.17-upx + - djasm - an assembler for the djgpp stub http://upx.sourceforge.net/download/tools/ @@ -135,6 +145,24 @@ If you want to modify the stub sources you'll also need bin-upx/i386-linux-ld-2.16.1 bin-upx/i386-linux-objcopy-2.16.1 bin-upx/i386-linux-objdump + bin-upx/multiarch-addr2line-2.17 + bin-upx/multiarch-ar-2.17 + bin-upx/multiarch-as-2.17 + bin-upx/multiarch-c++filt-2.17 + bin-upx/multiarch-coffdump-2.17 + bin-upx/multiarch-gprof-2.17 + bin-upx/multiarch-ld-2.17 + bin-upx/multiarch-nlmconv-2.17 + bin-upx/multiarch-nm-2.17 + bin-upx/multiarch-objcopy-2.17 + bin-upx/multiarch-objdump-2.17 + bin-upx/multiarch-ranlib-2.17 + bin-upx/multiarch-readelf-2.17 + bin-upx/multiarch-size-2.17 + bin-upx/multiarch-srconv-2.17 + bin-upx/multiarch-strings-2.17 + bin-upx/multiarch-strip-2.17 + bin-upx/multiarch-sysdump-2.17 bin-upx/nasm bin-upx/powerpc-750-linux-gnu-gcc-3.4.4 bin-upx/powerpc-750-linux-gnu-ld From b13b169149abb5ddd4122131a583e931b9c3244b Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 00:38:12 +0200 Subject: [PATCH 02/14] Fixed assembly for binutils-2.16.91. --- src/stub/src/arch/i086/nrv2b_d16.ash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stub/src/arch/i086/nrv2b_d16.ash b/src/stub/src/arch/i086/nrv2b_d16.ash index 1974391c..9df45af8 100644 --- a/src/stub/src/arch/i086/nrv2b_d16.ash +++ b/src/stub/src/arch/i086/nrv2b_d16.ash @@ -77,7 +77,7 @@ section NRVGTD00 cmp bp, -0xd00 adc cx, 1 section NRVDECO2 - lea ax, [di+bp] + lea ax, [bp+di] xchg ax, si rep movsb From 7b74b73b08f2c3da052bb60ef7f33014be8c08cf Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 01:52:05 +0200 Subject: [PATCH 03/14] Start using binutils-multiarch-2.17. --- README.SRC | 13 - src/stub/Makefile | 80 +- src/stub/amd64-linux.elf-fold.h | 10 +- src/stub/arm-linux.elf-fold.h | 8 +- src/stub/i086-dos16.com.h | 1156 +++++++++++----------- src/stub/i086-dos16.sys.h | 1304 +++++++++++++------------ src/stub/i386-linux.elf-fold.h | 8 +- src/stub/i386-linux.elf.interp-fold.h | 8 +- src/stub/powerpc-linux.elf-fold.h | 8 +- src/stub/src/arch/i386/Makefile.extra | 4 +- 10 files changed, 1348 insertions(+), 1251 deletions(-) diff --git a/README.SRC b/README.SRC index 47efa57e..44732574 100644 --- a/README.SRC +++ b/README.SRC @@ -118,7 +118,6 @@ If you want to modify the stub sources you'll also need - Certain versions of some i386-linux tools: - gcc-2.95.3 - gcc-3.4.6 - - binutils-2.16.1 - Other cross compilers targeted at the following architectures. - arm-9tdmi-linux-gnu @@ -135,16 +134,10 @@ If you want to modify the stub sources you'll also need bin-upx/a68k bin-upx/arm-9tdmi-linux-gnu-gcc-3.4.5 - bin-upx/arm-9tdmi-linux-gnu-ld - bin-upx/arm-9tdmi-linux-gnu-objcopy - bin-upx/arm-9tdmi-linux-gnu-objdump bin-upx/asm5900 bin-upx/djasm bin-upx/i386-linux-gcc-2.95.3 bin-upx/i386-linux-gcc-3.4.6 - bin-upx/i386-linux-ld-2.16.1 - bin-upx/i386-linux-objcopy-2.16.1 - bin-upx/i386-linux-objdump bin-upx/multiarch-addr2line-2.17 bin-upx/multiarch-ar-2.17 bin-upx/multiarch-as-2.17 @@ -165,14 +158,8 @@ If you want to modify the stub sources you'll also need bin-upx/multiarch-sysdump-2.17 bin-upx/nasm bin-upx/powerpc-750-linux-gnu-gcc-3.4.4 - bin-upx/powerpc-750-linux-gnu-ld - bin-upx/powerpc-750-linux-gnu-objcopy - bin-upx/powerpc-750-linux-gnu-objdump bin-upx/sstrip [ from src/stub/util ] bin-upx/x86_64-unknown-linux-gnu-gcc-3.4.4 - bin-upx/x86_64-unknown-linux-gnu-ld - bin-upx/x86_64-unknown-linux-gnu-objcopy - bin-upx/x86_64-unknown-linux-gnu-objdump Misc. notes diff --git a/src/stub/Makefile b/src/stub/Makefile index 52cc0280..145f2d0c 100644 --- a/src/stub/Makefile +++ b/src/stub/Makefile @@ -121,19 +121,25 @@ tc.default.bin2h = python $(srcdir)/scripts/bin2h.py tc.default.brandelf = perl -w $(srcdir)/scripts/brandelf.pl tc.default.djasm = djasm tc.default.gpp_inc = python $(srcdir)/scripts/gpp_inc.py -tc.default.o2bin = perl $(srcdir)/scripts/o2bin.pl +tc.default.m-objcopy = multiarch-objcopy-2.17 +tc.default.m-objdump = multiarch-objdump-2.17 +tc.default.m-ld = multiarch-ld-2.17 +tc.default.m-nm = multiarch-nm-2.17 +tc.default.m-readelf = multiarch-readelf-2.17 tc.default.nasm = nasm tc.default.nasm += -I$(srcdir)/ -I$(srcdir)/src/ tc.default.nasm += -O99 -w+macro-params -w+macro-selfref -w+number-overflow -w+orphan-labels tc.default.nasm += -Dstub_$(subst .,_,$(subst -,_,$(basename $(notdir $@))))=1 +tc.default.o2bin = perl $(srcdir)/scripts/o2bin.pl tc.default.pp-asm = i386-linux-gcc-2.95.3 -E -nostdinc -x assembler-with-cpp -Wall -Wp,-P,-C,-traditional tc.default.pp-nasm = $(tc.default.gpp_inc) --mode=nasm -I$(srcdir)/ -I$(srcdir)/src/ -tc.default.readelf = readelf tc.default.sstrip = sstrip # some common settings for $(tc_list) -tc.i086.app-nasm = perl -w $(srcdir)/src/arch/i086/app-nasm.pl -tc.i386.app-nasm = perl -w $(srcdir)/src/arch/i386/app-nasm.pl +tc.arch-i086.app-nasm = perl -w $(srcdir)/src/arch/i086/app-nasm.pl +tc.arch-i086.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD +tc.arch-i386.app-nasm = perl -w $(srcdir)/src/arch/i386/app-nasm.pl +tc.arch-i386.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD # slightly tricky make stuff follows @@ -143,7 +149,7 @@ __tc_varlist = tc.$(basename $(notdir $@)).$1 $(foreach v,$(tc_list),tc.$v.$1) # return the name of the first variable that is not empty __tc_varsearch = $(firstword $(foreach v,$1,$(if $($v),$v,))) # error sentinel for missing commands -__tc_FALSE = false tc_FALSE: '$1' '$@' '$<' +__tc_FALSE = false tc_FALSE: '$1' '$@' '$<' '$(tc_list)' # expand the first variable that is not empty tc = $($(call __tc_varsearch,$(call __tc_varlist,$1) __tc_FALSE)) @@ -166,9 +172,12 @@ amd64-linux.elf% : tc_list = amd64-linux.elf default tc.amd64-linux.elf.gcc = x86_64-unknown-linux-gnu-gcc-3.4.4 -m64 -nostdinc -MMD tc.amd64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.amd64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror -tc.amd64-linux.elf.ld = x86_64-unknown-linux-gnu-ld -m elf_x86_64 -tc.amd64-linux.elf.objcopy = x86_64-unknown-linux-gnu-objcopy -tc.amd64-linux.elf.objdump = x86_64-unknown-linux-gnu-objdump +##tc.amd64-linux.elf.ld = x86_64-unknown-linux-gnu-ld -m elf_x86_64 +##tc.amd64-linux.elf.objcopy = x86_64-unknown-linux-gnu-objcopy +##tc.amd64-linux.elf.objdump = x86_64-unknown-linux-gnu-objdump +tc.amd64-linux.elf.ld = $(call tc,m-ld) -b elf64-x86-64 +tc.amd64-linux.elf.objcopy = $(call tc,m-objcopy) -I elf64-x86-64 +tc.amd64-linux.elf.objdump = $(call tc,m-objdump) -b elf64-x86-64 tc.amd64-linux.elf.objstrip = $(call tc,objcopy) -R .comment -R .note amd64-linux.elf-entry.h : $(srcdir)/src/$$T.S @@ -200,9 +209,12 @@ arm-linux.elf% : tc_list = arm-linux.elf default tc.arm-linux.elf.gcc = arm-9tdmi-linux-gnu-gcc-3.4.5 -march=armv4 -nostdinc -MMD tc.arm-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.arm-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror -tc.arm-linux.elf.ld = arm-9tdmi-linux-gnu-ld -tc.arm-linux.elf.objcopy = arm-9tdmi-linux-gnu-objcopy -tc.arm-linux.elf.objdump = arm-9tdmi-linux-gnu-objdump +##tc.arm-linux.elf.ld = arm-9tdmi-linux-gnu-ld +##tc.arm-linux.elf.objcopy = arm-9tdmi-linux-gnu-objcopy +##tc.arm-linux.elf.objdump = arm-9tdmi-linux-gnu-objdump +tc.arm-linux.elf.ld = $(call tc,m-ld) -b elf32-littlearm +tc.arm-linux.elf.objcopy = $(call tc,m-objcopy) -I elf32-littlearm +tc.arm-linux.elf.objdump = $(call tc,m-objdump) -b elf32-littlearm tc.arm-linux.elf.objstrip = $(call tc,objcopy) -R .comment -R .note arm-linux.elf-entry.h : $(srcdir)/src/$$T.S @@ -248,11 +260,11 @@ arm.v4t-wince.pe.h : $(srcdir)/src/$$T.S # // i086-dos16.com # ************************************************************************/ -i086-dos16.com% : tc_list = i086 default +i086-dos16.com% : tc_list = arch-i086 default i086-dos16.com.h : $(srcdir)/src/$$T.asm - gcc -c -x assembler-with-cpp $< -o tmp/$T.bin - objdump -trwh tmp/$T.bin >> tmp/$T.bin + $(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin + $(call tc,m-objdump) -trwh tmp/$T.bin >> tmp/$T.bin $(call tc,bin2h) --ident=nrv2b_loader tmp/$T.bin $@ @@ -260,7 +272,7 @@ i086-dos16.com.h : $(srcdir)/src/$$T.asm # // i086-dos16.exe # ************************************************************************/ -i086-dos16.exe% : tc_list = i086 default +i086-dos16.exe% : tc_list = arch-i086 default i086-dos16.exe.h : $(srcdir)/src/$$T.asm $(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1 @@ -273,11 +285,11 @@ i086-dos16.exe.h : $(srcdir)/src/$$T.asm # // i086-dos16.sys # ************************************************************************/ -i086-dos16.sys% : tc_list = i086 default +i086-dos16.sys% : tc_list = arch-i086 default i086-dos16.sys.h : $(srcdir)/src/$$T.asm - gcc -c -x assembler-with-cpp $< -o tmp/$T.bin - objdump -trwh tmp/$T.bin >> tmp/$T.bin + $(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin + $(call tc,m-objdump) -trwh tmp/$T.bin >> tmp/$T.bin $(call tc,bin2h) --ident=nrv2b_loader tmp/$T.bin $@ @@ -285,7 +297,7 @@ i086-dos16.sys.h : $(srcdir)/src/$$T.asm # // i386-dos32.djgpp2 # ************************************************************************/ -i386-dos32.djgpp2% : tc_list = i386 default +i386-dos32.djgpp2% : tc_list = arch-i386 default i386-dos32.djgpp2.h : $(srcdir)/src/$$T.asm $(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1 @@ -302,7 +314,7 @@ i386-dos32.djgpp2-stubify.h : $(srcdir)/src/$$T.asm # // i386-dos32.tmt # ************************************************************************/ -i386-dos32.tmt% : tc_list = i386 default +i386-dos32.tmt% : tc_list = arch-i386 default i386-dos32.tmt.h : $(srcdir)/src/$$T.asm $(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1 @@ -315,7 +327,7 @@ i386-dos32.tmt.h : $(srcdir)/src/$$T.asm # // i386-dos32.watcom.le # ************************************************************************/ -i386-dos32.watcom.le% : tc_list = i386 default +i386-dos32.watcom.le% : tc_list = arch-i386 default i386-dos32.watcom.le.h : $(srcdir)/src/$$T.asm $(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1 @@ -328,9 +340,9 @@ i386-dos32.watcom.le.h : $(srcdir)/src/$$T.asm # // i386-linux.elf # ************************************************************************/ -i386-linux.elf% : tc_list = i386-linux.elf i386 default +i386-linux.elf% : tc_list = i386-linux.elf arch-i386 default -tc.i386-linux.elf.gcc = i386-linux-gcc-3.4.6 -m32 -nostdinc -MMD +tc.i386-linux.elf.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD tc.i386-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.i386-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror tc.i386-linux.elf.gcc += -march=i386 -mtune=k6 @@ -339,9 +351,12 @@ tc.i386-linux.elf.gcc += -momit-leaf-frame-pointer tc.i386-linux.elf.gcc += -fno-align-functions -fno-align-jumps -fno-align-labels -fno-align-loops tc.i386-linux.elf.gcc += -mpreferred-stack-boundary=2 tc.i386-linux.elf.gcc += -fweb -tc.i386-linux.elf.ld = i386-linux-ld-2.16.1 -tc.i386-linux.elf.objcopy = i386-linux-objcopy-2.16.1 -tc.i386-linux.elf.objdump = i386-linux-objdump +##tc.i386-linux.elf.ld = i386-linux-ld-2.16.1 +##tc.i386-linux.elf.objcopy = i386-linux-objcopy-2.16.1 +##tc.i386-linux.elf.objdump = i386-linux-objdump +tc.i386-linux.elf.ld = $(call tc,m-ld) -b elf32-i386 +tc.i386-linux.elf.objcopy = $(call tc,m-objcopy) -I elf32-i386 +tc.i386-linux.elf.objdump = $(call tc,m-objdump) -b elf32-i386 tc.i386-linux.elf.objstrip = $(call tc,objcopy) -R .comment -R .note i386-linux.elf-entry.h : $(srcdir)/src/$$T.asm @@ -459,7 +474,7 @@ tmp/i386-linux.elf.shell-main.o : $(srcdir)/src/$$T.c # // i386-linux.kernel.vmlinuz # ************************************************************************/ -i386-linux.kernel.vmlin% : tc_list = i386 default +i386-linux.kernel.vmlin% : tc_list = arch-i386 default i386-linux.kernel%.h : $(srcdir)/src/$$T.asm $(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1 @@ -472,7 +487,7 @@ i386-linux.kernel%.h : $(srcdir)/src/$$T.asm # // i386-win32.pe # ************************************************************************/ -i386-win32.pe% : tc_list = i386 default +i386-win32.pe% : tc_list = arch-i386 default i386-win32.pe.h : $(srcdir)/src/$$T.asm $(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1 @@ -540,9 +555,12 @@ powerpc-linux.elf% : tc_list = powerpc-linux.elf default tc.powerpc-linux.elf.gcc = powerpc-750-linux-gnu-gcc-3.4.4 -mcpu=405 -nostdinc -MMD tc.powerpc-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.powerpc-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror -tc.powerpc-linux.elf.ld = powerpc-750-linux-gnu-ld -tc.powerpc-linux.elf.objcopy = powerpc-750-linux-gnu-objcopy -tc.powerpc-linux.elf.objdump = powerpc-750-linux-gnu-objdump +##tc.powerpc-linux.elf.ld = powerpc-750-linux-gnu-ld +##tc.powerpc-linux.elf.objcopy = powerpc-750-linux-gnu-objcopy +##tc.powerpc-linux.elf.objdump = powerpc-750-linux-gnu-objdump +tc.powerpc-linux.elf.ld = $(call tc,m-ld) -b elf32-powerpc +tc.powerpc-linux.elf.objcopy = $(call tc,m-objcopy) -I elf32-powerpc +tc.powerpc-linux.elf.objdump = $(call tc,m-objdump) -b elf32-powerpc tc.powerpc-linux.elf.objstrip = $(call tc,objcopy) -R .comment -R .note powerpc-linux.elf-entry.h : $(srcdir)/src/$$T.S diff --git a/src/stub/amd64-linux.elf-fold.h b/src/stub/amd64-linux.elf-fold.h index f55e4b90..8b3214b1 100644 --- a/src/stub/amd64-linux.elf-fold.h +++ b/src/stub/amd64-linux.elf-fold.h @@ -28,8 +28,8 @@ #define LINUX_ELF64AMD_FOLD_SIZE 1699 -#define LINUX_ELF64AMD_FOLD_ADLER32 0x85c88c53 -#define LINUX_ELF64AMD_FOLD_CRC32 0xb486db08 +#define LINUX_ELF64AMD_FOLD_ADLER32 0x87378ad9 +#define LINUX_ELF64AMD_FOLD_CRC32 0x774d6ce1 unsigned char linux_elf64amd_fold[1699] = { 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ @@ -39,9 +39,9 @@ unsigned char linux_elf64amd_fold[1699] = { 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 40 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, /* 0x 50 */ 163, 6, 0, 0, 0, 0, 0, 0,164, 6, 0, 0, 0, 0, 0, 0, /* 0x 60 */ - 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, /* 0x 70 */ -163, 6, 0, 0, 0, 0, 0, 0,164, 6, 16, 0, 0, 0, 0, 0, /* 0x 80 */ -164, 6, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 90 */ + 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ +163, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 80 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 90 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, /* 0x a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 80, 0, 0, /* 0x b0 */ 0,131,249, 73,117, 74, 72,137,241, 72,137,254,235, 44,138, 7, /* 0x c0 */ diff --git a/src/stub/arm-linux.elf-fold.h b/src/stub/arm-linux.elf-fold.h index 9f2697cf..c2f4a0f5 100644 --- a/src/stub/arm-linux.elf-fold.h +++ b/src/stub/arm-linux.elf-fold.h @@ -28,8 +28,8 @@ #define LINUX_ELF32ARM_FOLD_SIZE 2084 -#define LINUX_ELF32ARM_FOLD_ADLER32 0x0ec054f2 -#define LINUX_ELF32ARM_FOLD_CRC32 0x981e01bb +#define LINUX_ELF32ARM_FOLD_ADLER32 0x6ecb5394 +#define LINUX_ELF32ARM_FOLD_CRC32 0x1f581fa7 unsigned char linux_elf32arm_fold[2084] = { 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ @@ -37,8 +37,8 @@ unsigned char linux_elf32arm_fold[2084] = { 0, 0, 0, 0, 2, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, /* 0x 30 */ 0,128, 0, 0, 36, 8, 0, 0, 36, 8, 0, 0, 5, 0, 0, 0, /* 0x 40 */ - 0,128, 0, 0, 1, 0, 0, 0, 36, 8, 0, 0, 36,136, 0, 0, /* 0x 50 */ - 36,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */ + 0,128, 0, 0, 1, 0, 0, 0, 36, 8, 0, 0, 0, 0, 0, 0, /* 0x 50 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */ 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 12, 48,157,229, 3, 49,141,224, 20, 48,131,226, 4, 0,147,228, /* 0x 80 */ 0, 0, 80,227,252,255,255, 26, 3, 32,160,225, 8, 0,146,228, /* 0x 90 */ diff --git a/src/stub/i086-dos16.com.h b/src/stub/i086-dos16.com.h index 30afd3c9..c3248d69 100644 --- a/src/stub/i086-dos16.com.h +++ b/src/stub/i086-dos16.com.h @@ -1,4 +1,4 @@ -/* i086-dos16.com.h -- created from i086-dos16.com.bin, 11210 (0x2bca) bytes +/* i086-dos16.com.h -- created from i086-dos16.com.bin, 11937 (0x2ea1) bytes This file is part of the UPX executable compressor. @@ -27,11 +27,11 @@ */ -#define NRV2B_LOADER_SIZE 11210 -#define NRV2B_LOADER_ADLER32 0x9d478123 -#define NRV2B_LOADER_CRC32 0xe55ca2e3 +#define NRV2B_LOADER_SIZE 11937 +#define NRV2B_LOADER_ADLER32 0x2e212f1e +#define NRV2B_LOADER_CRC32 0x9362af7b -unsigned char nrv2b_loader[11210] = { +unsigned char nrv2b_loader[11937] = { 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ 124, 2, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */ @@ -44,7 +44,7 @@ unsigned char nrv2b_loader[11210] = { 117, 8, 65,232, 6, 0,115,251, 65, 65, 65,129,253, 0,243,131, /* 0x 90 */ 209, 1,141, 3,150,243,164,150,235, 0,232, 2, 0, 17,201, 1, /* 0x a0 */ 219,117, 4,173, 17,192,147,195, 94,185, 0, 0,172, 44,232, 60, /* 0x b0 */ - 1,119,249,193, 5, 8, 41, 52,139, 28,134,251, 41,243,137, 28, /* 0x c0 */ + 1,119,249,193, 4, 8, 41, 52,139, 28,134,251, 41,243,137, 28, /* 0x c0 */ 173,226, 3,176,232,176,233, 95,185, 0, 0,242,174,117, 20,117, /* 0x d0 */ 2,193, 5, 8, 41, 61,139, 29,134,251, 41,251,137, 29,175,235, /* 0x e0 */ 3,195, 6, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,105, 56, /* 0x f0 */ @@ -85,7 +85,7 @@ unsigned char nrv2b_loader[11210] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, /* 0x 320 */ 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* 0x 330 */ 0, 0, 0, 0, 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, /* 0x 340 */ - 0, 0, 0, 0, 4, 15, 0, 0, 40, 0, 0, 0, 49, 0, 0, 0, /* 0x 350 */ + 0, 0, 0, 0,248, 15, 0, 0, 40, 0, 0, 0, 49, 0, 0, 0, /* 0x 350 */ 4, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 57, 0, 0, 0, /* 0x 360 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, /* 0x 370 */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* 0x 380 */ @@ -97,7 +97,7 @@ unsigned char nrv2b_loader[11210] = { 0, 0, 0, 0, 88, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 3e0 */ 0, 0, 0, 0, 85, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, /* 0x 3f0 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, /* 0x 400 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 15, 0, 0, /* 0x 410 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 16, 0, 0, /* 0x 410 */ 8, 0, 0, 0, 49, 0, 0, 0, 9, 0, 0, 0, 4, 0, 0, 0, /* 0x 420 */ 8, 0, 0, 0, 97, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 430 */ 0, 0, 0, 0, 88, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, /* 0x 440 */ @@ -107,22 +107,22 @@ unsigned char nrv2b_loader[11210] = { 0, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 480 */ 0, 0, 0, 0,110, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, /* 0x 490 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,115, 0, 0, 0, /* 0x 4a0 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 15, 0, 0, /* 0x 4b0 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 16, 0, 0, /* 0x 4b0 */ 16, 0, 0, 0, 49, 0, 0, 0, 13, 0, 0, 0, 4, 0, 0, 0, /* 0x 4c0 */ 8, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 4d0 */ 0, 0, 0, 0,120, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x 4e0 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, /* 0x 4f0 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 15, 0, 0, /* 0x 500 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 16, 0, 0, /* 0x 500 */ 8, 0, 0, 0, 49, 0, 0, 0, 15, 0, 0, 0, 4, 0, 0, 0, /* 0x 510 */ 8, 0, 0, 0,145, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 520 */ 0, 0, 0, 0,122, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x 530 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,141, 0, 0, 0, /* 0x 540 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 15, 0, 0, /* 0x 550 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 16, 0, 0, /* 0x 550 */ 8, 0, 0, 0, 49, 0, 0, 0, 17, 0, 0, 0, 4, 0, 0, 0, /* 0x 560 */ 8, 0, 0, 0,158, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 570 */ 0, 0, 0, 0,124, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, /* 0x 580 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,154, 0, 0, 0, /* 0x 590 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 15, 0, 0, /* 0x 5a0 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 16, 0, 0, /* 0x 5a0 */ 24, 0, 0, 0, 49, 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, /* 0x 5b0 */ 8, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 5c0 */ 0, 0, 0, 0,154, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 5d0 */ @@ -132,7 +132,7 @@ unsigned char nrv2b_loader[11210] = { 0, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 610 */ 0, 0, 0, 0,162, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, /* 0x 620 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,185, 0, 0, 0, /* 0x 630 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 15, 0, 0, /* 0x 640 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 16, 0, 0, /* 0x 640 */ 8, 0, 0, 0, 49, 0, 0, 0, 23, 0, 0, 0, 4, 0, 0, 0, /* 0x 650 */ 8, 0, 0, 0,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 660 */ 0, 0, 0, 0,184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 670 */ @@ -140,7 +140,7 @@ unsigned char nrv2b_loader[11210] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 0, 0, 0, /* 0x 690 */ 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* 0x 6a0 */ 0, 0, 0, 0,207, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, /* 0x 6b0 */ - 0, 0, 0, 0,116, 15, 0, 0, 8, 0, 0, 0, 49, 0, 0, 0, /* 0x 6c0 */ + 0, 0, 0, 0,104, 16, 0, 0, 8, 0, 0, 0, 49, 0, 0, 0, /* 0x 6c0 */ 26, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0,220, 0, 0, 0, /* 0x 6d0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 0, 0, /* 0x 6e0 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* 0x 6f0 */ @@ -152,7 +152,7 @@ unsigned char nrv2b_loader[11210] = { 0, 0, 0, 0,251, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 750 */ 0, 0, 0, 0,208, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, /* 0x 760 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,247, 0, 0, 0, /* 0x 770 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 15, 0, 0, /* 0x 780 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 16, 0, 0, /* 0x 780 */ 8, 0, 0, 0, 49, 0, 0, 0, 31, 0, 0, 0, 4, 0, 0, 0, /* 0x 790 */ 8, 0, 0, 0, 4, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 7a0 */ 0, 0, 0, 0,211, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x 7b0 */ @@ -162,17 +162,17 @@ unsigned char nrv2b_loader[11210] = { 0, 0, 0, 0, 26, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 7f0 */ 0, 0, 0, 0,215, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, /* 0x 800 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 22, 1, 0, 0, /* 0x 810 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 15, 0, 0, /* 0x 820 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 16, 0, 0, /* 0x 820 */ 8, 0, 0, 0, 49, 0, 0, 0, 35, 0, 0, 0, 4, 0, 0, 0, /* 0x 830 */ 8, 0, 0, 0, 39, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 840 */ 0, 0, 0, 0,221, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x 850 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 35, 1, 0, 0, /* 0x 860 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 15, 0, 0, /* 0x 870 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 16, 0, 0, /* 0x 870 */ 8, 0, 0, 0, 49, 0, 0, 0, 37, 0, 0, 0, 4, 0, 0, 0, /* 0x 880 */ 8, 0, 0, 0, 52, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 890 */ 0, 0, 0, 0,223, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x 8a0 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48, 1, 0, 0, /* 0x 8b0 */ - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148, 15, 0, 0, /* 0x 8c0 */ + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 16, 0, 0, /* 0x 8c0 */ 8, 0, 0, 0, 49, 0, 0, 0, 39, 0, 0, 0, 4, 0, 0, 0, /* 0x 8d0 */ 8, 0, 0, 0, 61, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 8e0 */ 0, 0, 0, 0,225, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, /* 0x 8f0 */ @@ -185,7 +185,7 @@ unsigned char nrv2b_loader[11210] = { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 0, 0, 0, /* 0x 960 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* 0x 970 */ 0, 0, 0, 0, 88, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, /* 0x 980 */ - 0, 0, 0, 0,156, 15, 0, 0, 8, 0, 0, 0, 49, 0, 0, 0, /* 0x 990 */ + 0, 0, 0, 0,144, 16, 0, 0, 8, 0, 0, 0, 49, 0, 0, 0, /* 0x 990 */ 44, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0,101, 1, 0, 0, /* 0x 9a0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241, 0, 0, 0, /* 0x 9b0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* 0x 9c0 */ @@ -195,542 +195,588 @@ unsigned char nrv2b_loader[11210] = { 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, /* 0x a00 */ 116, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* 0x a10 */ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x a20 */ - 0, 0, 0, 0,116, 10, 0, 0,128, 3, 0, 0, 50, 0, 0, 0, /* 0x a30 */ - 50, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, /* 0x a40 */ - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 13, 0, 0, /* 0x a50 */ - 13, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* 0x a60 */ + 0, 0, 0, 0,116, 10, 0, 0, 16, 4, 0, 0, 50, 0, 0, 0, /* 0x a30 */ + 59, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, /* 0x a40 */ + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 14, 0, 0, /* 0x a50 */ +116, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, /* 0x a60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a70 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a80 */ - 4, 0,241,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a90 */ - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x aa0 */ - 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ab0 */ - 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ac0 */ - 3, 0, 4, 0, 24, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x ad0 */ - 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ae0 */ - 3, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x af0 */ - 3, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b00 */ - 3, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b10 */ - 3, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b20 */ - 3, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b30 */ - 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b40 */ - 3, 0, 13, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b50 */ - 0, 0, 13, 0, 43, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x b60 */ - 0, 0, 13, 0, 60, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, /* 0x b70 */ - 0, 0, 23, 0, 71, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, /* 0x b80 */ - 0, 0, 13, 0, 81, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x b90 */ - 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ba0 */ - 3, 0, 15, 0, 95, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, /* 0x bb0 */ - 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bc0 */ - 3, 0, 17, 0,111, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, /* 0x bd0 */ - 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x be0 */ - 3, 0, 19, 0,126, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, /* 0x bf0 */ - 0, 0, 19, 0,135, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, /* 0x c00 */ - 0, 0, 19, 0,150, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, /* 0x c10 */ - 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c20 */ - 3, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c30 */ - 3, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c40 */ - 3, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c50 */ - 3, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c60 */ - 3, 0, 26, 0,160, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, /* 0x c70 */ - 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c80 */ - 3, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c90 */ - 3, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ca0 */ - 3, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cb0 */ - 3, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cc0 */ - 3, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cd0 */ - 3, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ce0 */ - 3, 0, 35, 0,169, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, /* 0x cf0 */ - 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d00 */ - 3, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d10 */ - 3, 0, 39, 0,179, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, /* 0x d20 */ - 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d30 */ - 3, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d40 */ - 3, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d50 */ - 3, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d60 */ - 3, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d70 */ - 3, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d80 */ - 3, 0, 47, 0,188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d90 */ - 16, 0, 0, 0,197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x da0 */ - 16, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x db0 */ - 16, 0, 0, 0,223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x dc0 */ - 16, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x dd0 */ - 16, 0, 0, 0,253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x de0 */ - 16, 0, 0, 0, 0,115,114, 99, 47,105, 48, 56, 54, 45,100,111, /* 0x df0 */ -115, 49, 54, 46, 99,111,109, 46, 97,115,109, 0,109,101,109, 95, /* 0x e00 */ -111,107, 0,108,105,116,101,114, 97,108, 95,110, 50, 98, 0,100, /* 0x e10 */ -101, 99,111,109,112, 95,115,116, 97,114,116, 95,110, 50, 98, 0, /* 0x e20 */ -103,101,116, 98,105,116, 95,110, 50, 98, 0,108,111,111,112, 49, /* 0x e30 */ - 95,110, 50, 98, 0,103,101,116, 98,105,116, 95, 99,120, 95,110, /* 0x e40 */ - 50, 98, 0,100,101, 99,111,109,112, 95,100,111,110,101, 95,110, /* 0x e50 */ - 50, 98, 0,100,101, 99,111,109,112, 95,114,101,116, 95,110, 50, /* 0x e60 */ - 98, 0, 97,120, 98,112, 95,110, 50, 98, 0, 99,111,112,121, 95, /* 0x e70 */ -109, 97,116, 99,104, 95,110, 50, 98, 0,108,111,111,112, 50, 95, /* 0x e80 */ -110, 50, 98, 0, 99,106,116, 49, 54, 95, 76, 49, 0, 99,106,116, /* 0x e90 */ - 49, 54, 95, 76, 49, 49, 0, 99,106,116, 49, 54, 95, 76, 50, 0, /* 0x ea0 */ -115,112, 95,108,105,109,105,116, 0, 98,121,116,101,115, 95,116, /* 0x eb0 */ -111, 95, 99,111,112,121, 0, 99,111,112,121, 95,115,111,117,114, /* 0x ec0 */ - 99,101, 0, 99,111,112,121, 95,100,101,115,116,105,110, 97,116, /* 0x ed0 */ -105,111,110, 0,100,101, 99,111,109,112,114,101,115,115,111,114, /* 0x ee0 */ - 0, 99, 97,108,108,116,114,105, 99,107, 95, 99, 97,108,108,115, /* 0x ef0 */ - 0, 0, 0, 0, 2, 0, 0, 0, 20, 50, 0, 0, 9, 0, 0, 0, /* 0x f00 */ - 20, 51, 0, 0, 12, 0, 0, 0, 20, 52, 0, 0, 15, 0, 0, 0, /* 0x f10 */ - 20, 53, 0, 0, 28, 0, 0, 0, 22, 7, 0, 0, 1, 0, 0, 0, /* 0x f20 */ - 20, 54, 0, 0, 2, 0, 0, 0, 21, 29, 0, 0, 8, 0, 0, 0, /* 0x f30 */ - 21, 29, 0, 0, 1, 0, 0, 0, 23, 29, 0, 0, 1, 0, 0, 0, /* 0x f40 */ - 23, 29, 0, 0, 16, 0, 0, 0, 21, 29, 0, 0, 24, 0, 0, 0, /* 0x f50 */ - 21, 29, 0, 0, 1, 0, 0, 0, 23, 13, 0, 0, 7, 0, 0, 0, /* 0x f60 */ - 23, 13, 0, 0, 2, 0, 0, 0, 20, 55, 0, 0, 2, 0, 0, 0, /* 0x f70 */ - 23, 31, 0, 0, 2, 0, 0, 0, 20, 55, 0, 0, 1, 0, 0, 0, /* 0x f80 */ - 23, 29, 0, 0, 1, 0, 0, 0, 23, 47, 0, 0, 2, 0, 0, 0, /* 0x f90 */ - 23, 39, 0, 0, 10,116,109,112, 47,105, 48, 56, 54, 45,100,111, /* 0x fa0 */ -115, 49, 54, 46, 99,111,109, 46, 98,105,110, 58, 32, 32, 32, 32, /* 0x fb0 */ - 32,102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, /* 0x fc0 */ - 51, 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,105,111,110, /* 0x fd0 */ -115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, /* 0x fe0 */ - 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, /* 0x ff0 */ - 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, /* 0x1000 */ - 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103, /* 0x1010 */ -110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 46,116,101, /* 0x1020 */ -120,116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1030 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1040 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, /* 0x1050 */ - 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1060 */ - 83, 44, 32, 65, 76, 76, 79, 67, 44, 32, 76, 79, 65, 68, 44, 32, /* 0x1070 */ - 82, 69, 65, 68, 79, 78, 76, 89, 44, 32, 67, 79, 68, 69, 10, 32, /* 0x1080 */ - 32, 49, 32, 46,100, 97,116, 97, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1090 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x10a0 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x10b0 */ - 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, /* 0x10c0 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 65, 76, 76, 79, 67, 44, 32, /* 0x10d0 */ - 76, 79, 65, 68, 44, 32, 68, 65, 84, 65, 10, 32, 32, 50, 32, 46, /* 0x10e0 */ - 98,115,115, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x10f0 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1100 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1110 */ - 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 65, 76, 76, 79, 67, /* 0x1120 */ - 10, 32, 32, 51, 32, 67, 79, 77, 77, 65, 73, 78, 49, 32, 32, 32, /* 0x1130 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48, 49,100, 32, 32, 48, 48, 48, /* 0x1140 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1150 */ - 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, /* 0x1160 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1170 */ - 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 67, /* 0x1180 */ - 79, 77, 83, 66, 66, 66, 80, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1190 */ - 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x11a0 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x11b0 */ - 48, 53, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x11c0 */ - 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x11d0 */ - 53, 32, 67, 79, 77, 80, 83, 72, 68, 73, 32, 32, 32, 32, 32, 32, /* 0x11e0 */ - 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x11f0 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1200 */ - 48, 48, 48, 48, 53, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1210 */ - 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1220 */ - 10, 32, 32, 54, 32, 67, 79, 77, 67, 65, 76, 76, 84, 32, 32, 32, /* 0x1230 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, /* 0x1240 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1250 */ - 32, 48, 48, 48, 48, 48, 48, 53, 52, 32, 32, 50, 42, 42, 48, 32, /* 0x1260 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x1270 */ - 78, 76, 89, 10, 32, 32, 55, 32, 67, 79, 77, 77, 65, 73, 78, 50, /* 0x1280 */ - 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, 32, /* 0x1290 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x12a0 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 53, 53, 32, 32, 50, 42, /* 0x12b0 */ - 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x12c0 */ - 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x12d0 */ - 56, 32, 85, 80, 88, 49, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, /* 0x12e0 */ - 48, 48, 48, 48, 48, 48, 49, 54, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x12f0 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1300 */ - 48, 48, 48, 48, 53, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1310 */ - 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1320 */ - 10, 32, 32, 57, 32, 67, 79, 77, 67, 85, 84, 80, 79, 32, 32, 32, /* 0x1330 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1340 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1350 */ - 32, 48, 48, 48, 48, 48, 48, 54,101, 32, 32, 50, 42, 42, 48, 32, /* 0x1360 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x1370 */ - 78, 76, 89, 10, 32, 49, 48, 32, 78, 82, 86, 50, 66, 49, 54, 48, /* 0x1380 */ - 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 97, 32, 32, /* 0x1390 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x13a0 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 54,101, 32, 32, 50, 42, /* 0x13b0 */ - 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x13c0 */ - 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, /* 0x13d0 */ - 49, 32, 78, 82, 86, 68, 68, 79, 78, 69, 32, 32, 32, 32, 32, 32, /* 0x13e0 */ - 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x13f0 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1400 */ - 48, 48, 48, 48, 55, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1410 */ - 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x1420 */ - 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, 78, 82, 86, 68, /* 0x1430 */ - 82, 69, 84, 85, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1440 */ - 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1450 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 55, 97, /* 0x1460 */ - 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1470 */ - 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1480 */ - 89, 10, 32, 49, 51, 32, 78, 82, 86, 68, 69, 67, 79, 49, 32, 32, /* 0x1490 */ - 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49,101, 32, 32, 48, 48, /* 0x14a0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x14b0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 55, 99, 32, 32, 50, 42, 42, 48, /* 0x14c0 */ - 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x14d0 */ - 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 52, 32, /* 0x14e0 */ - 78, 82, 86, 76, 69, 68, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x14f0 */ - 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1500 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1510 */ - 48, 48, 57, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1520 */ - 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1530 */ - 49, 53, 32, 78, 82, 86, 71, 84, 68, 48, 48, 32, 32, 32, 32, 32, /* 0x1540 */ - 32, 48, 48, 48, 48, 48, 48, 48, 55, 32, 32, 48, 48, 48, 48, 48, /* 0x1550 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1560 */ - 48, 48, 48, 48, 48, 57, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1570 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1580 */ - 89, 10, 32, 49, 54, 32, 78, 82, 86, 68, 69, 67, 79, 50, 32, 32, /* 0x1590 */ - 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 54, 32, 32, 48, 48, /* 0x15a0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x15b0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 97, 50, 32, 32, 50, 42, 42, 48, /* 0x15c0 */ - 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x15d0 */ - 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 55, 32, /* 0x15e0 */ - 78, 82, 86, 50, 66, 49, 54, 57, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x15f0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1600 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1610 */ - 48, 48, 98, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1620 */ - 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1630 */ - 49, 56, 32, 67, 65, 76, 76, 84, 82, 49, 54, 32, 32, 32, 32, 32, /* 0x1640 */ - 32, 48, 48, 48, 48, 48, 48, 48, 98, 32, 32, 48, 48, 48, 48, 48, /* 0x1650 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1660 */ - 48, 48, 48, 48, 48, 98, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1670 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1680 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 57, 32, 67, 84, 49, /* 0x1690 */ - 54, 73, 50, 56, 54, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x16a0 */ - 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x16b0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 99, /* 0x16c0 */ - 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x16d0 */ - 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 48, 32, /* 0x16e0 */ - 67, 84, 49, 54, 83, 85, 66, 48, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x16f0 */ - 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1700 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1710 */ - 48, 48, 99, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1720 */ - 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1730 */ - 50, 49, 32, 67, 84, 49, 54, 73, 48, 56, 54, 32, 32, 32, 32, 32, /* 0x1740 */ - 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, /* 0x1750 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1760 */ - 48, 48, 48, 48, 48, 99, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1770 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1780 */ - 89, 10, 32, 50, 50, 32, 67, 65, 76, 76, 84, 82, 73, 50, 32, 32, /* 0x1790 */ - 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, 48, /* 0x17a0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x17b0 */ - 32, 32, 48, 48, 48, 48, 48, 48,100, 48, 32, 32, 50, 42, 42, 48, /* 0x17c0 */ - 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x17d0 */ - 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 51, 32, /* 0x17e0 */ - 67, 84, 49, 54, 69, 56, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x17f0 */ - 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1800 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1810 */ - 48, 48,100, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1820 */ - 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1830 */ - 50, 52, 32, 67, 84, 49, 54, 69, 57, 48, 48, 32, 32, 32, 32, 32, /* 0x1840 */ - 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, /* 0x1850 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1860 */ - 48, 48, 48, 48, 48,100, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1870 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1880 */ - 89, 10, 32, 50, 53, 32, 67, 65, 76, 76, 84, 82, 73, 53, 32, 32, /* 0x1890 */ - 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 54, 32, 32, 48, 48, /* 0x18a0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18b0 */ - 32, 32, 48, 48, 48, 48, 48, 48,100, 55, 32, 32, 50, 42, 42, 48, /* 0x18c0 */ - 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x18d0 */ - 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 54, 32, /* 0x18e0 */ - 67, 84, 49, 54, 74, 69, 78, 68, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x18f0 */ - 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1900 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1910 */ - 48, 48,100,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1920 */ - 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1930 */ - 68, 79, 78, 76, 89, 10, 32, 50, 55, 32, 67, 84, 49, 54, 74, 85, /* 0x1940 */ - 76, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, /* 0x1950 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1960 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,100,102, 32, 32, /* 0x1970 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1980 */ - 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1990 */ - 32, 50, 56, 32, 67, 84, 49, 54, 73, 50, 56, 55, 32, 32, 32, 32, /* 0x19a0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, 48, 48, 48, /* 0x19b0 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x19c0 */ - 48, 48, 48, 48, 48, 48,101, 49, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x19d0 */ - 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x19e0 */ - 76, 89, 10, 32, 50, 57, 32, 67, 84, 49, 54, 83, 85, 66, 49, 32, /* 0x19f0 */ - 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, /* 0x1a00 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1a10 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48,101, 52, 32, 32, 50, 42, 42, /* 0x1a20 */ - 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1a30 */ - 68, 79, 78, 76, 89, 10, 32, 51, 48, 32, 67, 84, 49, 54, 73, 48, /* 0x1a40 */ - 56, 55, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, /* 0x1a50 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1a60 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,101, 54, 32, 32, /* 0x1a70 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1a80 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 49, 32, 67, 65, 76, /* 0x1a90 */ - 76, 84, 82, 73, 54, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1aa0 */ - 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1ab0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,101, /* 0x1ac0 */ -101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1ad0 */ - 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1ae0 */ - 76, 89, 10, 32, 51, 50, 32, 67, 79, 82, 69, 84, 85, 82, 78, 32, /* 0x1af0 */ - 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, /* 0x1b00 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1b10 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48,102, 49, 32, 32, 50, 42, 42, /* 0x1b20 */ - 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1b30 */ - 68, 79, 78, 76, 89, 10, 32, 51, 51, 32, 46,110,111,116,101, 32, /* 0x1b40 */ - 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 52, /* 0x1b50 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1b60 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,102, 50, 32, 32, /* 0x1b70 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1b80 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, /* 0x1b90 */ - 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ba0 */ -108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, /* 0x1bb0 */ - 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47,105, 48, 56, 54, 45, /* 0x1bc0 */ -100,111,115, 49, 54, 46, 99,111,109, 46, 97,115,109, 10, 48, 48, /* 0x1bd0 */ - 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 46, /* 0x1be0 */ -116,101,120,116, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 46,116, /* 0x1bf0 */ -101,120,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1c00 */ - 32, 32,100, 32, 32, 46,100, 97,116, 97, 9, 48, 48, 48, 48, 48, /* 0x1c10 */ - 48, 48, 48, 32, 46,100, 97,116, 97, 10, 48, 48, 48, 48, 48, 48, /* 0x1c20 */ - 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 46, 98,115,115, 9, /* 0x1c30 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 46, 98,115,115, 10, 48, 48, /* 0x1c40 */ - 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, /* 0x1c50 */ - 79, 77, 77, 65, 73, 78, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1c60 */ - 32, 67, 79, 77, 77, 65, 73, 78, 49, 10, 48, 48, 48, 48, 48, 48, /* 0x1c70 */ - 48, 56, 32,108, 32, 32, 32, 32, 32, 32, 32, 67, 79, 77, 77, 65, /* 0x1c80 */ - 73, 78, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,109,101,109, /* 0x1c90 */ - 95,111,107, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1ca0 */ - 32, 32,100, 32, 32, 67, 79, 77, 67, 85, 84, 80, 79, 9, 48, 48, /* 0x1cb0 */ - 48, 48, 48, 48, 48, 48, 32, 67, 79, 77, 67, 85, 84, 80, 79, 10, /* 0x1cc0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1cd0 */ - 32, 67, 79, 77, 83, 66, 66, 66, 80, 9, 48, 48, 48, 48, 48, 48, /* 0x1ce0 */ - 48, 48, 32, 67, 79, 77, 83, 66, 66, 66, 80, 10, 48, 48, 48, 48, /* 0x1cf0 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 79, 77, /* 0x1d00 */ - 80, 83, 72, 68, 73, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, /* 0x1d10 */ - 79, 77, 80, 83, 72, 68, 73, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d20 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 67, 79, 77, 67, 65, 76, 76, /* 0x1d30 */ - 84, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 79, 77, 67, 65, /* 0x1d40 */ - 76, 76, 84, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d50 */ - 32, 32,100, 32, 32, 67, 79, 77, 77, 65, 73, 78, 50, 9, 48, 48, /* 0x1d60 */ - 48, 48, 48, 48, 48, 48, 32, 67, 79, 77, 77, 65, 73, 78, 50, 10, /* 0x1d70 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1d80 */ - 32, 85, 80, 88, 49, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, /* 0x1d90 */ - 48, 48, 32, 85, 80, 88, 49, 72, 69, 65, 68, 10, 48, 48, 48, 48, /* 0x1da0 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x1db0 */ - 50, 66, 49, 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, /* 0x1dc0 */ - 82, 86, 50, 66, 49, 54, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1dd0 */ - 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 66, 49, 54, /* 0x1de0 */ - 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,105,116,101,114, /* 0x1df0 */ - 97,108, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, /* 0x1e00 */ -108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 66, 49, 54, 48, /* 0x1e10 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,100,101, 99,111,109,112, /* 0x1e20 */ - 95,115,116, 97,114,116, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, /* 0x1e30 */ - 48, 48,100, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, /* 0x1e40 */ - 69, 67, 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,103,101, /* 0x1e50 */ -116, 98,105,116, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1e60 */ - 55, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 66, 49, /* 0x1e70 */ - 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,111,111,112, /* 0x1e80 */ - 49, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 56, 32,108, /* 0x1e90 */ - 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, /* 0x1ea0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,103,101,116, 98,105,116, 95, /* 0x1eb0 */ - 99,120, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ec0 */ -108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 68, 68, 79, 78, 69, /* 0x1ed0 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 68, 68, 79, /* 0x1ee0 */ - 78, 69, 10, 48, 48, 48, 48, 48, 48, 49, 54, 32,108, 32, 32, 32, /* 0x1ef0 */ - 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, /* 0x1f00 */ - 48, 48, 48, 48, 48, 32,100,101, 99,111,109,112, 95,100,111,110, /* 0x1f10 */ -101, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1f20 */ - 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 68, 82, 69, 84, 85, 9, /* 0x1f30 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 68, 82, 69, 84, /* 0x1f40 */ - 85, 10, 48, 48, 48, 48, 48, 48, 49, 53, 32,108, 32, 32, 32, 32, /* 0x1f50 */ - 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, 48, /* 0x1f60 */ - 48, 48, 48, 48, 32,100,101, 99,111,109,112, 95,114,101,116, 95, /* 0x1f70 */ -110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1f80 */ - 32, 32,100, 32, 32, 78, 82, 86, 68, 69, 67, 79, 49, 9, 48, 48, /* 0x1f90 */ - 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 68, 69, 67, 79, 49, 10, /* 0x1fa0 */ - 48, 48, 48, 48, 48, 48, 48,100, 32,108, 32, 32, 32, 32, 32, 32, /* 0x1fb0 */ - 32, 78, 82, 86, 68, 69, 67, 79, 49, 9, 48, 48, 48, 48, 48, 48, /* 0x1fc0 */ - 48, 48, 32, 97,120, 98,112, 95,110, 50, 98, 10, 48, 48, 48, 48, /* 0x1fd0 */ - 48, 48, 49,101, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, /* 0x1fe0 */ - 68, 69, 67, 79, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99, /* 0x1ff0 */ -111,112,121, 95,109, 97,116, 99,104, 95,110, 50, 98, 10, 48, 48, /* 0x2000 */ - 48, 48, 48, 48, 49, 55, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x2010 */ - 82, 86, 68, 69, 67, 79, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2020 */ - 32,108,111,111,112, 50, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, /* 0x2030 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 76, /* 0x2040 */ - 69, 68, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, /* 0x2050 */ - 86, 76, 69, 68, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2060 */ -108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 71, 84, 68, 48, 48, /* 0x2070 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 71, 84, 68, /* 0x2080 */ - 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2090 */ - 32,100, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, /* 0x20a0 */ - 48, 48, 48, 48, 48, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 48, /* 0x20b0 */ - 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x20c0 */ - 78, 82, 86, 50, 66, 49, 54, 57, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x20d0 */ - 48, 32, 78, 82, 86, 50, 66, 49, 54, 57, 10, 48, 48, 48, 48, 48, /* 0x20e0 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, /* 0x20f0 */ - 84, 82, 49, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, /* 0x2100 */ - 76, 76, 84, 82, 49, 54, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, /* 0x2110 */ -108, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 49, 54, /* 0x2120 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99,106,116, 49, 54, 95, /* 0x2130 */ - 76, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2140 */ - 32,100, 32, 32, 67, 84, 49, 54, 73, 50, 56, 54, 9, 48, 48, 48, /* 0x2150 */ - 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 73, 50, 56, 54, 10, 48, /* 0x2160 */ - 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2170 */ - 67, 84, 49, 54, 83, 85, 66, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2180 */ - 48, 32, 67, 84, 49, 54, 83, 85, 66, 48, 10, 48, 48, 48, 48, 48, /* 0x2190 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, /* 0x21a0 */ - 73, 48, 56, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, /* 0x21b0 */ - 49, 54, 73, 48, 56, 54, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x21c0 */ -108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 73, 50, /* 0x21d0 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, /* 0x21e0 */ - 73, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x21f0 */ - 32,100, 32, 32, 67, 84, 49, 54, 69, 56, 48, 48, 9, 48, 48, 48, /* 0x2200 */ - 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 69, 56, 48, 48, 10, 48, /* 0x2210 */ - 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2220 */ - 67, 84, 49, 54, 69, 57, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2230 */ - 48, 32, 67, 84, 49, 54, 69, 57, 48, 48, 10, 48, 48, 48, 48, 48, /* 0x2240 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, /* 0x2250 */ - 84, 82, 73, 53, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, /* 0x2260 */ - 76, 76, 84, 82, 73, 53, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, /* 0x2270 */ -108, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 73, 53, /* 0x2280 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99,106,116, 49, 54, 95, /* 0x2290 */ - 76, 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x22a0 */ - 32, 32,100, 32, 32, 67, 84, 49, 54, 74, 69, 78, 68, 9, 48, 48, /* 0x22b0 */ - 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 74, 69, 78, 68, 10, /* 0x22c0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x22d0 */ - 32, 67, 84, 49, 54, 74, 85, 76, 50, 9, 48, 48, 48, 48, 48, 48, /* 0x22e0 */ - 48, 48, 32, 67, 84, 49, 54, 74, 85, 76, 50, 10, 48, 48, 48, 48, /* 0x22f0 */ - 48, 48, 48, 51, 32,108, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, /* 0x2300 */ - 76, 84, 82, 73, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99, /* 0x2310 */ -106,116, 49, 54, 95, 76, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2320 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 73, 50, 56, /* 0x2330 */ - 55, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 73, /* 0x2340 */ - 50, 56, 55, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2350 */ - 32, 32,100, 32, 32, 67, 84, 49, 54, 83, 85, 66, 49, 9, 48, 48, /* 0x2360 */ - 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 83, 85, 66, 49, 10, /* 0x2370 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x2380 */ - 32, 67, 84, 49, 54, 73, 48, 56, 55, 9, 48, 48, 48, 48, 48, 48, /* 0x2390 */ - 48, 48, 32, 67, 84, 49, 54, 73, 48, 56, 55, 10, 48, 48, 48, 48, /* 0x23a0 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, /* 0x23b0 */ - 76, 84, 82, 73, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, /* 0x23c0 */ - 65, 76, 76, 84, 82, 73, 54, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x23d0 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 67, 79, 82, 69, 84, 85, 82, /* 0x23e0 */ - 78, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 79, 82, 69, 84, /* 0x23f0 */ - 85, 82, 78, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2400 */ - 32, 32,100, 32, 32, 46,110,111,116,101, 9, 48, 48, 48, 48, 48, /* 0x2410 */ - 48, 48, 48, 32, 46,110,111,116,101, 10, 48, 48, 48, 48, 48, 48, /* 0x2420 */ - 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x2430 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,112, 95,108,105,109, /* 0x2440 */ -105,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, /* 0x2450 */ - 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, /* 0x2460 */ - 48, 48, 32, 98,121,116,101,115, 95,116,111, 95, 99,111,112,121, /* 0x2470 */ - 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2480 */ - 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2490 */ - 32, 99,111,112,121, 95,115,111,117,114, 99,101, 10, 48, 48, 48, /* 0x24a0 */ - 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, /* 0x24b0 */ - 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99,111,112, /* 0x24c0 */ -121, 95,100,101,115,116,105,110, 97,116,105,111,110, 10, 48, 48, /* 0x24d0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x24e0 */ - 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,100,101, /* 0x24f0 */ - 99,111,109,112,114,101,115,115,111,114, 10, 48, 48, 48, 48, 48, /* 0x2500 */ - 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x2510 */ - 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99, 97,108,108,116, /* 0x2520 */ -114,105, 99,107, 95, 99, 97,108,108,115, 10, 10, 10, 82, 69, 76, /* 0x2530 */ - 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2540 */ - 70, 79, 82, 32, 91, 67, 79, 77, 77, 65, 73, 78, 49, 93, 58, 10, /* 0x2550 */ - 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2560 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2570 */ - 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, /* 0x2580 */ - 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,112, 95, /* 0x2590 */ -108,105,109,105,116, 10, 48, 48, 48, 48, 48, 48, 48, 57, 32, 82, /* 0x25a0 */ - 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x25b0 */ - 32, 98,121,116,101,115, 95,116,111, 95, 99,111,112,121, 10, 48, /* 0x25c0 */ - 48, 48, 48, 48, 48, 48, 99, 32, 82, 95, 51, 56, 54, 95, 49, 54, /* 0x25d0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,112,121, 95,115, /* 0x25e0 */ -111,117,114, 99,101, 10, 48, 48, 48, 48, 48, 48, 48,102, 32, 82, /* 0x25f0 */ - 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2600 */ - 32, 99,111,112,121, 95,100,101,115,116,105,110, 97,116,105,111, /* 0x2610 */ -110, 10, 48, 48, 48, 48, 48, 48, 49, 99, 32, 82, 95, 51, 56, 54, /* 0x2620 */ - 95, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 79, 77, /* 0x2630 */ - 67, 85, 84, 80, 79, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x2640 */ - 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x2650 */ - 67, 79, 77, 77, 65, 73, 78, 50, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x2660 */ - 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2670 */ - 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, /* 0x2680 */ - 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, /* 0x2690 */ - 32, 32, 32, 32, 32, 32, 32, 32,100,101, 99,111,109,112,114,101, /* 0x26a0 */ -115,115,111,114, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x26b0 */ - 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, /* 0x26c0 */ - 82, 86, 50, 66, 49, 54, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x26d0 */ - 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x26e0 */ - 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, /* 0x26f0 */ - 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 49, 54, 32, /* 0x2700 */ - 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, /* 0x2710 */ - 48, 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 51, 56, 54, 95, 80, /* 0x2720 */ - 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, /* 0x2730 */ - 67, 79, 50, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2740 */ - 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x2750 */ - 86, 68, 68, 79, 78, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x2760 */ - 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2770 */ - 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, /* 0x2780 */ - 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, /* 0x2790 */ - 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 10, /* 0x27a0 */ - 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x27b0 */ - 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 68, 82, 69, 84, /* 0x27c0 */ - 85, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x27d0 */ - 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x27e0 */ - 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, /* 0x27f0 */ - 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2800 */ - 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 10, 10, 82, 69, 76, 79, /* 0x2810 */ - 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x2820 */ - 79, 82, 32, 91, 78, 82, 86, 68, 69, 67, 79, 49, 93, 58, 10, 79, /* 0x2830 */ - 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x2840 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, /* 0x2850 */ - 10, 48, 48, 48, 48, 48, 48, 49, 48, 32, 82, 95, 51, 56, 54, 95, /* 0x2860 */ - 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, /* 0x2870 */ - 69, 67, 79, 50, 10, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, /* 0x2880 */ - 51, 56, 54, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2890 */ - 78, 82, 86, 68, 69, 67, 79, 50, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x28a0 */ - 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, /* 0x28b0 */ - 32, 32, 32, 32, 78, 82, 86, 50, 66, 49, 54, 48, 10, 10, 10, 82, /* 0x28c0 */ - 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x28d0 */ - 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 68, 69, 67, 79, 50, 93, /* 0x28e0 */ - 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x28f0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2900 */ - 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 55, 32, 82, 95, 51, /* 0x2910 */ - 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x2920 */ - 82, 86, 50, 66, 49, 54, 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x2930 */ - 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x2940 */ - 32, 91, 67, 65, 76, 76, 84, 82, 49, 54, 93, 58, 10, 79, 70, 70, /* 0x2950 */ - 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2960 */ - 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, /* 0x2970 */ - 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 49, 54, /* 0x2980 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 97,108,108,116,114, /* 0x2990 */ -105, 99,107, 95, 99, 97,108,108,115, 10, 10, 10, 82, 69, 76, 79, /* 0x29a0 */ - 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x29b0 */ - 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 73, 50, 93, 58, 10, 79, /* 0x29c0 */ - 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x29d0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, /* 0x29e0 */ - 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, /* 0x29f0 */ - 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, /* 0x2a00 */ - 84, 82, 49, 54, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x2a10 */ - 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, /* 0x2a20 */ - 65, 76, 76, 84, 82, 73, 53, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x2a30 */ - 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2a40 */ - 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, /* 0x2a50 */ - 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, /* 0x2a60 */ - 32, 32, 32, 32, 32, 32, 32, 99, 97,108,108,116,114,105, 99,107, /* 0x2a70 */ - 95, 99, 97,108,108,115, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2a80 */ - 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2a90 */ - 91, 67, 84, 49, 54, 74, 69, 78, 68, 93, 58, 10, 79, 70, 70, 83, /* 0x2aa0 */ - 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2ab0 */ - 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, /* 0x2ac0 */ - 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, /* 0x2ad0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, /* 0x2ae0 */ - 50, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2af0 */ - 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 84, 49, 54, /* 0x2b00 */ - 74, 85, 76, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2b10 */ - 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2b20 */ - 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2b30 */ - 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, /* 0x2b40 */ - 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 73, 54, 10, 10, 10, 82, /* 0x2b50 */ - 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2b60 */ - 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 73, 54, 93, /* 0x2b70 */ - 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2b80 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2b90 */ - 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, /* 0x2ba0 */ - 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, /* 0x2bb0 */ - 65, 76, 76, 84, 82, 73, 53, 10, 10, 10 /* 0x2bc0 */ + 4, 0,241,255, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a90 */ + 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x aa0 */ + 4, 0,241,255, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ab0 */ + 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ac0 */ + 4, 0,241,255, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ad0 */ + 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ae0 */ + 4, 0,241,255,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x af0 */ + 4, 0,241,255,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b00 */ + 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b10 */ + 4, 0,241,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b20 */ + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b30 */ + 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b40 */ + 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b50 */ + 3, 0, 4, 0,127, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x b60 */ + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b70 */ + 3, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b80 */ + 3, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b90 */ + 3, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ba0 */ + 3, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bb0 */ + 3, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bc0 */ + 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bd0 */ + 3, 0, 13, 0,134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x be0 */ + 0, 0, 13, 0,146, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x bf0 */ + 0, 0, 13, 0,163, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, /* 0x c00 */ + 0, 0, 23, 0,174, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, /* 0x c10 */ + 0, 0, 13, 0,184, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x c20 */ + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c30 */ + 3, 0, 15, 0,198, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, /* 0x c40 */ + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c50 */ + 3, 0, 17, 0,214, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, /* 0x c60 */ + 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c70 */ + 3, 0, 19, 0,229, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, /* 0x c80 */ + 0, 0, 19, 0,238, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, /* 0x c90 */ + 0, 0, 19, 0,253, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, /* 0x ca0 */ + 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cb0 */ + 3, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cc0 */ + 3, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cd0 */ + 3, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ce0 */ + 3, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cf0 */ + 3, 0, 26, 0, 7, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, /* 0x d00 */ + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d10 */ + 3, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d20 */ + 3, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d30 */ + 3, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d40 */ + 3, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d50 */ + 3, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d60 */ + 3, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d70 */ + 3, 0, 35, 0, 16, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, /* 0x d80 */ + 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d90 */ + 3, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x da0 */ + 3, 0, 39, 0, 26, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, /* 0x db0 */ + 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x dc0 */ + 3, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x dd0 */ + 3, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x de0 */ + 3, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x df0 */ + 3, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e00 */ + 3, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e10 */ + 3, 0, 47, 0, 35, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e20 */ + 16, 0, 0, 0, 44, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e30 */ + 16, 0, 0, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e40 */ + 16, 0, 0, 0, 70, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e50 */ + 16, 0, 0, 0, 87, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e60 */ + 16, 0, 0, 0,100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e70 */ + 16, 0, 0, 0, 0,115,114, 99, 47,105, 48, 56, 54, 45,100,111, /* 0x e80 */ +115, 49, 54, 46, 99,111,109, 46, 97,115,109, 0,115,114, 99, 47, /* 0x e90 */ + 97,114, 99,104, 47,105, 48, 56, 54, 47,110,114,118, 50, 98, 95, /* 0x ea0 */ +100, 49, 54, 46, 97,115,104, 0,115,114, 99, 47,105,110, 99,108, /* 0x eb0 */ +117,100,101, 47,104,101, 97,100,101,114, 50, 46, 97,115,104, 0, /* 0x ec0 */ +115,114, 99, 47, 97,114, 99,104, 47,105, 48, 56, 54, 47,109, 97, /* 0x ed0 */ + 99,114,111,115, 46, 97,115,104, 0, 60, 99,111,109,109, 97,110, /* 0x ee0 */ +100, 32,108,105,110,101, 62, 0, 60, 98,117,105,108,116, 45,105, /* 0x ef0 */ +110, 62, 0,109,101,109, 95,111,107, 0,108,105,116,101,114, 97, /* 0x f00 */ +108, 95,110, 50, 98, 0,100,101, 99,111,109,112, 95,115,116, 97, /* 0x f10 */ +114,116, 95,110, 50, 98, 0,103,101,116, 98,105,116, 95,110, 50, /* 0x f20 */ + 98, 0,108,111,111,112, 49, 95,110, 50, 98, 0,103,101,116, 98, /* 0x f30 */ +105,116, 95, 99,120, 95,110, 50, 98, 0,100,101, 99,111,109,112, /* 0x f40 */ + 95,100,111,110,101, 95,110, 50, 98, 0,100,101, 99,111,109,112, /* 0x f50 */ + 95,114,101,116, 95,110, 50, 98, 0, 97,120, 98,112, 95,110, 50, /* 0x f60 */ + 98, 0, 99,111,112,121, 95,109, 97,116, 99,104, 95,110, 50, 98, /* 0x f70 */ + 0,108,111,111,112, 50, 95,110, 50, 98, 0, 99,106,116, 49, 54, /* 0x f80 */ + 95, 76, 49, 0, 99,106,116, 49, 54, 95, 76, 49, 49, 0, 99,106, /* 0x f90 */ +116, 49, 54, 95, 76, 50, 0,115,112, 95,108,105,109,105,116, 0, /* 0x fa0 */ + 98,121,116,101,115, 95,116,111, 95, 99,111,112,121, 0, 99,111, /* 0x fb0 */ +112,121, 95,115,111,117,114, 99,101, 0, 99,111,112,121, 95,100, /* 0x fc0 */ +101,115,116,105,110, 97,116,105,111,110, 0,100,101, 99,111,109, /* 0x fd0 */ +112,114,101,115,115,111,114, 0, 99, 97,108,108,116,114,105, 99, /* 0x fe0 */ +107, 95, 99, 97,108,108,115, 0, 2, 0, 0, 0, 20, 59, 0, 0, /* 0x ff0 */ + 9, 0, 0, 0, 20, 60, 0, 0, 12, 0, 0, 0, 20, 61, 0, 0, /* 0x1000 */ + 15, 0, 0, 0, 20, 62, 0, 0, 28, 0, 0, 0, 22, 16, 0, 0, /* 0x1010 */ + 1, 0, 0, 0, 20, 63, 0, 0, 2, 0, 0, 0, 21, 38, 0, 0, /* 0x1020 */ + 8, 0, 0, 0, 21, 38, 0, 0, 1, 0, 0, 0, 23, 38, 0, 0, /* 0x1030 */ + 1, 0, 0, 0, 23, 38, 0, 0, 16, 0, 0, 0, 21, 38, 0, 0, /* 0x1040 */ + 24, 0, 0, 0, 21, 38, 0, 0, 1, 0, 0, 0, 23, 22, 0, 0, /* 0x1050 */ + 7, 0, 0, 0, 23, 22, 0, 0, 2, 0, 0, 0, 20, 64, 0, 0, /* 0x1060 */ + 2, 0, 0, 0, 23, 40, 0, 0, 2, 0, 0, 0, 20, 64, 0, 0, /* 0x1070 */ + 1, 0, 0, 0, 23, 38, 0, 0, 1, 0, 0, 0, 23, 56, 0, 0, /* 0x1080 */ + 2, 0, 0, 0, 23, 48, 0, 0, 10,116,109,112, 47,105, 48, 56, /* 0x1090 */ + 54, 45,100,111,115, 49, 54, 46, 99,111,109, 46, 98,105,110, 58, /* 0x10a0 */ + 32, 32, 32, 32, 32,102,105,108,101, 32,102,111,114,109, 97,116, /* 0x10b0 */ + 32,101,108,102, 51, 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99, /* 0x10c0 */ +116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, /* 0x10d0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, /* 0x10e0 */ + 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, /* 0x10f0 */ + 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, /* 0x1100 */ + 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, /* 0x1110 */ + 32, 46,116,101,120,116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, /* 0x1120 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1130 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1140 */ + 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, /* 0x1150 */ + 84, 69, 78, 84, 83, 44, 32, 65, 76, 76, 79, 67, 44, 32, 76, 79, /* 0x1160 */ + 65, 68, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 44, 32, 67, 79, /* 0x1170 */ + 68, 69, 10, 32, 32, 49, 32, 46,100, 97,116, 97, 32, 32, 32, 32, /* 0x1180 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1190 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x11a0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, /* 0x11b0 */ + 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 65, 76, 76, /* 0x11c0 */ + 79, 67, 44, 32, 76, 79, 65, 68, 44, 32, 68, 65, 84, 65, 10, 32, /* 0x11d0 */ + 32, 50, 32, 46, 98,115,115, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x11e0 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x11f0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1200 */ + 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 65, /* 0x1210 */ + 76, 76, 79, 67, 10, 32, 32, 51, 32, 67, 79, 77, 77, 65, 73, 78, /* 0x1220 */ + 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49,100, 32, /* 0x1230 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1240 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, /* 0x1250 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1260 */ + 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1270 */ + 32, 52, 32, 67, 79, 77, 83, 66, 66, 66, 80, 32, 32, 32, 32, 32, /* 0x1280 */ + 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, /* 0x1290 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x12a0 */ + 48, 48, 48, 48, 48, 53, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x12b0 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x12c0 */ + 89, 10, 32, 32, 53, 32, 67, 79, 77, 80, 83, 72, 68, 73, 32, 32, /* 0x12d0 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, /* 0x12e0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x12f0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 53, 51, 32, 32, 50, 42, 42, 48, /* 0x1300 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1310 */ + 79, 78, 76, 89, 10, 32, 32, 54, 32, 67, 79, 77, 67, 65, 76, 76, /* 0x1320 */ + 84, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, /* 0x1330 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1340 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 53, 52, 32, 32, 50, /* 0x1350 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1360 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 67, 79, 77, 77, /* 0x1370 */ + 65, 73, 78, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1380 */ + 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1390 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 53, 53, /* 0x13a0 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x13b0 */ + 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x13c0 */ + 89, 10, 32, 32, 56, 32, 85, 80, 88, 49, 72, 69, 65, 68, 32, 32, /* 0x13d0 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 54, 32, 32, 48, 48, /* 0x13e0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x13f0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 53, 56, 32, 32, 50, 42, 42, 48, /* 0x1400 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1410 */ + 79, 78, 76, 89, 10, 32, 32, 57, 32, 67, 79, 77, 67, 85, 84, 80, /* 0x1420 */ + 79, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1430 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1440 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 54,101, 32, 32, 50, /* 0x1450 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1460 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 78, 82, 86, 50, /* 0x1470 */ + 66, 49, 54, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1480 */ + 48, 97, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1490 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 54,101, /* 0x14a0 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x14b0 */ + 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x14c0 */ + 89, 10, 32, 49, 49, 32, 78, 82, 86, 68, 68, 79, 78, 69, 32, 32, /* 0x14d0 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, /* 0x14e0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x14f0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 55, 56, 32, 32, 50, 42, 42, 48, /* 0x1500 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x1510 */ + 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, /* 0x1520 */ + 78, 82, 86, 68, 82, 69, 84, 85, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1530 */ + 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1540 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1550 */ + 48, 48, 55, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1560 */ + 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1570 */ + 68, 79, 78, 76, 89, 10, 32, 49, 51, 32, 78, 82, 86, 68, 69, 67, /* 0x1580 */ + 79, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49,101, /* 0x1590 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x15a0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 55, 99, 32, 32, /* 0x15b0 */ + 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x15c0 */ + 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x15d0 */ + 32, 49, 52, 32, 78, 82, 86, 76, 69, 68, 48, 48, 32, 32, 32, 32, /* 0x15e0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, 48, /* 0x15f0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1600 */ + 48, 48, 48, 48, 48, 48, 57, 97, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1610 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1620 */ + 76, 89, 10, 32, 49, 53, 32, 78, 82, 86, 71, 84, 68, 48, 48, 32, /* 0x1630 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 55, 32, 32, 48, /* 0x1640 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1650 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 57, 98, 32, 32, 50, 42, 42, /* 0x1660 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1670 */ + 68, 79, 78, 76, 89, 10, 32, 49, 54, 32, 78, 82, 86, 68, 69, 67, /* 0x1680 */ + 79, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 54, /* 0x1690 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x16a0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 97, 50, 32, 32, /* 0x16b0 */ + 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x16c0 */ + 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x16d0 */ + 32, 49, 55, 32, 78, 82, 86, 50, 66, 49, 54, 57, 32, 32, 32, 32, /* 0x16e0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x16f0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1700 */ + 48, 48, 48, 48, 48, 48, 98, 56, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1710 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1720 */ + 76, 89, 10, 32, 49, 56, 32, 67, 65, 76, 76, 84, 82, 49, 54, 32, /* 0x1730 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 98, 32, 32, 48, /* 0x1740 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1750 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 98, 56, 32, 32, 50, 42, 42, /* 0x1760 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1770 */ + 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 57, /* 0x1780 */ + 32, 67, 84, 49, 54, 73, 50, 56, 54, 32, 32, 32, 32, 32, 32, 48, /* 0x1790 */ + 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x17a0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x17b0 */ + 48, 48, 48, 99, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x17c0 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x17d0 */ + 32, 50, 48, 32, 67, 84, 49, 54, 83, 85, 66, 48, 32, 32, 32, 32, /* 0x17e0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, /* 0x17f0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1800 */ + 48, 48, 48, 48, 48, 48, 99, 54, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1810 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1820 */ + 76, 89, 10, 32, 50, 49, 32, 67, 84, 49, 54, 73, 48, 56, 54, 32, /* 0x1830 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, /* 0x1840 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1850 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 99, 56, 32, 32, 50, 42, 42, /* 0x1860 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1870 */ + 68, 79, 78, 76, 89, 10, 32, 50, 50, 32, 67, 65, 76, 76, 84, 82, /* 0x1880 */ + 73, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, /* 0x1890 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x18a0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,100, 48, 32, 32, /* 0x18b0 */ + 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x18c0 */ + 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x18d0 */ + 32, 50, 51, 32, 67, 84, 49, 54, 69, 56, 48, 48, 32, 32, 32, 32, /* 0x18e0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, /* 0x18f0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1900 */ + 48, 48, 48, 48, 48, 48,100, 51, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1910 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1920 */ + 76, 89, 10, 32, 50, 52, 32, 67, 84, 49, 54, 69, 57, 48, 48, 32, /* 0x1930 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, /* 0x1940 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1950 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48,100, 53, 32, 32, 50, 42, 42, /* 0x1960 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1970 */ + 68, 79, 78, 76, 89, 10, 32, 50, 53, 32, 67, 65, 76, 76, 84, 82, /* 0x1980 */ + 73, 53, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 54, /* 0x1990 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x19a0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,100, 55, 32, 32, /* 0x19b0 */ + 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x19c0 */ + 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x19d0 */ + 32, 50, 54, 32, 67, 84, 49, 54, 74, 69, 78, 68, 32, 32, 32, 32, /* 0x19e0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, /* 0x19f0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1a00 */ + 48, 48, 48, 48, 48, 48,100,100, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1a10 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x1a20 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 55, 32, 67, 84, /* 0x1a30 */ + 49, 54, 74, 85, 76, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1a40 */ + 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1a50 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1a60 */ +100,102, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1a70 */ + 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x1a80 */ + 78, 76, 89, 10, 32, 50, 56, 32, 67, 84, 49, 54, 73, 50, 56, 55, /* 0x1a90 */ + 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, 32, /* 0x1aa0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1ab0 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,101, 49, 32, 32, 50, 42, /* 0x1ac0 */ + 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1ad0 */ + 65, 68, 79, 78, 76, 89, 10, 32, 50, 57, 32, 67, 84, 49, 54, 83, /* 0x1ae0 */ + 85, 66, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1af0 */ + 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1b00 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,101, 52, 32, /* 0x1b10 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1b20 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 48, 32, 67, 84, /* 0x1b30 */ + 49, 54, 73, 48, 56, 55, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1b40 */ + 48, 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1b50 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1b60 */ +101, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1b70 */ + 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 49, /* 0x1b80 */ + 32, 67, 65, 76, 76, 84, 82, 73, 54, 32, 32, 32, 32, 32, 32, 48, /* 0x1b90 */ + 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1ba0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1bb0 */ + 48, 48, 48,101,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1bc0 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x1bd0 */ + 65, 68, 79, 78, 76, 89, 10, 32, 51, 50, 32, 67, 79, 82, 69, 84, /* 0x1be0 */ + 85, 82, 78, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1bf0 */ + 49, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1c00 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,102, 49, 32, /* 0x1c10 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1c20 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 51, 32, 46,110, /* 0x1c30 */ +111,116,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1c40 */ + 48, 48, 49, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1c50 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1c60 */ +102, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1c70 */ + 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, /* 0x1c80 */ + 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, /* 0x1c90 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, /* 0x1ca0 */ + 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47,105, /* 0x1cb0 */ + 48, 56, 54, 45,100,111,115, 49, 54, 46, 99,111,109, 46, 97,115, /* 0x1cc0 */ +109, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1cd0 */ +100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x1ce0 */ + 48, 32,115,114, 99, 47, 97,114, 99,104, 47,105, 48, 56, 54, 47, /* 0x1cf0 */ +110,114,118, 50, 98, 95,100, 49, 54, 46, 97,115,104, 10, 48, 48, /* 0x1d00 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, /* 0x1d10 */ + 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, /* 0x1d20 */ + 99, 47,105, 48, 56, 54, 45,100,111,115, 49, 54, 46, 99,111,109, /* 0x1d30 */ + 46, 97,115,109, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1d40 */ + 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, /* 0x1d50 */ + 48, 48, 48, 48, 32,115,114, 99, 47,105,110, 99,108,117,100,101, /* 0x1d60 */ + 47,104,101, 97,100,101,114, 50, 46, 97,115,104, 10, 48, 48, 48, /* 0x1d70 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, /* 0x1d80 */ + 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, /* 0x1d90 */ + 47,105, 48, 56, 54, 45,100,111,115, 49, 54, 46, 99,111,109, 46, /* 0x1da0 */ + 97,115,109, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1db0 */ + 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, /* 0x1dc0 */ + 48, 48, 48, 32,115,114, 99, 47, 97,114, 99,104, 47,105, 48, 56, /* 0x1dd0 */ + 54, 47,109, 97, 99,114,111,115, 46, 97,115,104, 10, 48, 48, 48, /* 0x1de0 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, /* 0x1df0 */ + 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, /* 0x1e00 */ + 47,105, 48, 56, 54, 45,100,111,115, 49, 54, 46, 99,111,109, 46, /* 0x1e10 */ + 97,115,109, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1e20 */ + 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, /* 0x1e30 */ + 48, 48, 48, 32, 60, 99,111,109,109, 97,110,100, 32,108,105,110, /* 0x1e40 */ +101, 62, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x1e50 */ + 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, /* 0x1e60 */ + 48, 48, 32, 60, 98,117,105,108,116, 45,105,110, 62, 10, 48, 48, /* 0x1e70 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, /* 0x1e80 */ + 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, /* 0x1e90 */ + 99, 47,105, 48, 56, 54, 45,100,111,115, 49, 54, 46, 99,111,109, /* 0x1ea0 */ + 46, 97,115,109, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1eb0 */ + 32, 32, 32,100, 32, 32, 46,116,101,120,116, 9, 48, 48, 48, 48, /* 0x1ec0 */ + 48, 48, 48, 48, 32, 46,116,101,120,116, 10, 48, 48, 48, 48, 48, /* 0x1ed0 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 46,100, 97,116, /* 0x1ee0 */ + 97, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 46,100, 97,116, 97, /* 0x1ef0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1f00 */ + 32, 32, 46, 98,115,115, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1f10 */ + 46, 98,115,115, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1f20 */ + 32, 32, 32,100, 32, 32, 67, 79, 77, 77, 65, 73, 78, 49, 9, 48, /* 0x1f30 */ + 48, 48, 48, 48, 48, 48, 48, 32, 67, 79, 77, 77, 65, 73, 78, 49, /* 0x1f40 */ + 10, 48, 48, 48, 48, 48, 48, 48, 56, 32,108, 32, 32, 32, 32, 32, /* 0x1f50 */ + 32, 32, 67, 79, 77, 77, 65, 73, 78, 49, 9, 48, 48, 48, 48, 48, /* 0x1f60 */ + 48, 48, 48, 32,109,101,109, 95,111,107, 10, 48, 48, 48, 48, 48, /* 0x1f70 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 79, 77, 67, /* 0x1f80 */ + 85, 84, 80, 79, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 79, /* 0x1f90 */ + 77, 67, 85, 84, 80, 79, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1fa0 */ +108, 32, 32, 32, 32,100, 32, 32, 67, 79, 77, 83, 66, 66, 66, 80, /* 0x1fb0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 79, 77, 83, 66, 66, /* 0x1fc0 */ + 66, 80, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x1fd0 */ + 32,100, 32, 32, 67, 79, 77, 80, 83, 72, 68, 73, 9, 48, 48, 48, /* 0x1fe0 */ + 48, 48, 48, 48, 48, 32, 67, 79, 77, 80, 83, 72, 68, 73, 10, 48, /* 0x1ff0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2000 */ + 67, 79, 77, 67, 65, 76, 76, 84, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2010 */ + 48, 32, 67, 79, 77, 67, 65, 76, 76, 84, 10, 48, 48, 48, 48, 48, /* 0x2020 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 79, 77, 77, /* 0x2030 */ + 65, 73, 78, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 79, /* 0x2040 */ + 77, 77, 65, 73, 78, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2050 */ +108, 32, 32, 32, 32,100, 32, 32, 85, 80, 88, 49, 72, 69, 65, 68, /* 0x2060 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 85, 80, 88, 49, 72, 69, /* 0x2070 */ + 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2080 */ + 32,100, 32, 32, 78, 82, 86, 50, 66, 49, 54, 48, 9, 48, 48, 48, /* 0x2090 */ + 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 49, 54, 48, 10, 48, /* 0x20a0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, /* 0x20b0 */ + 78, 82, 86, 50, 66, 49, 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x20c0 */ + 48, 32,108,105,116,101,114, 97,108, 95,110, 50, 98, 10, 48, 48, /* 0x20d0 */ + 48, 48, 48, 48, 48, 49, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x20e0 */ + 82, 86, 50, 66, 49, 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20f0 */ + 32,100,101, 99,111,109,112, 95,115,116, 97,114,116, 95,110, 50, /* 0x2100 */ + 98, 10, 48, 48, 48, 48, 48, 48, 48,100, 32,108, 32, 32, 32, 32, /* 0x2110 */ + 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, 48, /* 0x2120 */ + 48, 48, 48, 48, 32,103,101,116, 98,105,116, 95,110, 50, 98, 10, /* 0x2130 */ + 48, 48, 48, 48, 48, 48, 48, 55, 32,108, 32, 32, 32, 32, 32, 32, /* 0x2140 */ + 32, 78, 82, 86, 50, 66, 49, 54, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x2150 */ + 48, 48, 32,108,111,111,112, 49, 95,110, 50, 98, 10, 48, 48, 48, /* 0x2160 */ + 48, 48, 48, 48, 56, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x2170 */ + 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2180 */ +103,101,116, 98,105,116, 95, 99,120, 95,110, 50, 98, 10, 48, 48, /* 0x2190 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, /* 0x21a0 */ + 82, 86, 68, 68, 79, 78, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x21b0 */ + 32, 78, 82, 86, 68, 68, 79, 78, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x21c0 */ + 49, 54, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, /* 0x21d0 */ + 67, 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,100,101, 99, /* 0x21e0 */ +111,109,112, 95,100,111,110,101, 95,110, 50, 98, 10, 48, 48, 48, /* 0x21f0 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x2200 */ + 86, 68, 82, 69, 84, 85, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2210 */ + 78, 82, 86, 68, 82, 69, 84, 85, 10, 48, 48, 48, 48, 48, 48, 49, /* 0x2220 */ + 53, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, /* 0x2230 */ + 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,100,101, 99,111, /* 0x2240 */ +109,112, 95,114,101,116, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, /* 0x2250 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 68, /* 0x2260 */ + 69, 67, 79, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, /* 0x2270 */ + 86, 68, 69, 67, 79, 49, 10, 48, 48, 48, 48, 48, 48, 48,100, 32, /* 0x2280 */ +108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 49, /* 0x2290 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 97,120, 98,112, 95,110, /* 0x22a0 */ + 50, 98, 10, 48, 48, 48, 48, 48, 48, 49,101, 32,108, 32, 32, 32, /* 0x22b0 */ + 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 49, 9, 48, 48, 48, /* 0x22c0 */ + 48, 48, 48, 48, 48, 32, 99,111,112,121, 95,109, 97,116, 99,104, /* 0x22d0 */ + 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 49, 55, 32,108, 32, /* 0x22e0 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 49, 9, 48, /* 0x22f0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108,111,111,112, 50, 95,110, 50, /* 0x2300 */ + 98, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2310 */ +100, 32, 32, 78, 82, 86, 76, 69, 68, 48, 48, 9, 48, 48, 48, 48, /* 0x2320 */ + 48, 48, 48, 48, 32, 78, 82, 86, 76, 69, 68, 48, 48, 10, 48, 48, /* 0x2330 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, /* 0x2340 */ + 82, 86, 71, 84, 68, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2350 */ + 32, 78, 82, 86, 71, 84, 68, 48, 48, 10, 48, 48, 48, 48, 48, 48, /* 0x2360 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 68, 69, /* 0x2370 */ + 67, 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, /* 0x2380 */ + 68, 69, 67, 79, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x2390 */ + 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 49, 54, 57, 9, /* 0x23a0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 49, 54, /* 0x23b0 */ + 57, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x23c0 */ +100, 32, 32, 67, 65, 76, 76, 84, 82, 49, 54, 9, 48, 48, 48, 48, /* 0x23d0 */ + 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 49, 54, 10, 48, 48, /* 0x23e0 */ + 48, 48, 48, 48, 48, 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 67, /* 0x23f0 */ + 65, 76, 76, 84, 82, 49, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2400 */ + 32, 99,106,116, 49, 54, 95, 76, 49, 10, 48, 48, 48, 48, 48, 48, /* 0x2410 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 73, /* 0x2420 */ + 50, 56, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, /* 0x2430 */ + 54, 73, 50, 56, 54, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x2440 */ + 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 83, 85, 66, 48, 9, /* 0x2450 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 83, 85, 66, /* 0x2460 */ + 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2470 */ +100, 32, 32, 67, 84, 49, 54, 73, 48, 56, 54, 9, 48, 48, 48, 48, /* 0x2480 */ + 48, 48, 48, 48, 32, 67, 84, 49, 54, 73, 48, 56, 54, 10, 48, 48, /* 0x2490 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, /* 0x24a0 */ + 65, 76, 76, 84, 82, 73, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x24b0 */ + 32, 67, 65, 76, 76, 84, 82, 73, 50, 10, 48, 48, 48, 48, 48, 48, /* 0x24c0 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 69, /* 0x24d0 */ + 56, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, /* 0x24e0 */ + 54, 69, 56, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x24f0 */ + 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 69, 57, 48, 48, 9, /* 0x2500 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 69, 57, 48, /* 0x2510 */ + 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2520 */ +100, 32, 32, 67, 65, 76, 76, 84, 82, 73, 53, 9, 48, 48, 48, 48, /* 0x2530 */ + 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 73, 53, 10, 48, 48, /* 0x2540 */ + 48, 48, 48, 48, 48, 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 67, /* 0x2550 */ + 65, 76, 76, 84, 82, 73, 53, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2560 */ + 32, 99,106,116, 49, 54, 95, 76, 49, 49, 10, 48, 48, 48, 48, 48, /* 0x2570 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, /* 0x2580 */ + 74, 69, 78, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, /* 0x2590 */ + 49, 54, 74, 69, 78, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x25a0 */ +108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 74, 85, 76, 50, /* 0x25b0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 74, 85, /* 0x25c0 */ + 76, 50, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32,108, 32, 32, 32, /* 0x25d0 */ + 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 73, 54, 9, 48, 48, 48, /* 0x25e0 */ + 48, 48, 48, 48, 48, 32, 99,106,116, 49, 54, 95, 76, 50, 10, 48, /* 0x25f0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2600 */ + 67, 84, 49, 54, 73, 50, 56, 55, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2610 */ + 48, 32, 67, 84, 49, 54, 73, 50, 56, 55, 10, 48, 48, 48, 48, 48, /* 0x2620 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, /* 0x2630 */ + 83, 85, 66, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, /* 0x2640 */ + 49, 54, 83, 85, 66, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2650 */ +108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 73, 48, 56, 55, /* 0x2660 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 73, 48, /* 0x2670 */ + 56, 55, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2680 */ + 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 73, 54, 9, 48, 48, 48, /* 0x2690 */ + 48, 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 73, 54, 10, 48, /* 0x26a0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x26b0 */ + 67, 79, 82, 69, 84, 85, 82, 78, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x26c0 */ + 48, 32, 67, 79, 82, 69, 84, 85, 82, 78, 10, 48, 48, 48, 48, 48, /* 0x26d0 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 46,110,111,116, /* 0x26e0 */ +101, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 46,110,111,116,101, /* 0x26f0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2700 */ + 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2710 */ + 32,115,112, 95,108,105,109,105,116, 10, 48, 48, 48, 48, 48, 48, /* 0x2720 */ + 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x2730 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 98,121,116,101,115, 95, /* 0x2740 */ +116,111, 95, 99,111,112,121, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2750 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, /* 0x2760 */ + 48, 48, 48, 48, 48, 48, 48, 32, 99,111,112,121, 95,115,111,117, /* 0x2770 */ +114, 99,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, /* 0x2780 */ + 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, /* 0x2790 */ + 48, 48, 48, 32, 99,111,112,121, 95,100,101,115,116,105,110, 97, /* 0x27a0 */ +116,105,111,110, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x27b0 */ + 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x27c0 */ + 48, 48, 48, 48, 32,100,101, 99,111,109,112,114,101,115,115,111, /* 0x27d0 */ +114, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, /* 0x27e0 */ + 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x27f0 */ + 48, 32, 99, 97,108,108,116,114,105, 99,107, 95, 99, 97,108,108, /* 0x2800 */ +115, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2810 */ + 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 79, 77, 77, /* 0x2820 */ + 65, 73, 78, 49, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2830 */ + 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2840 */ + 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2850 */ + 50, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, /* 0x2860 */ + 32, 32, 32, 32,115,112, 95,108,105,109,105,116, 10, 48, 48, 48, /* 0x2870 */ + 48, 48, 48, 48, 57, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, /* 0x2880 */ + 32, 32, 32, 32, 32, 32, 32, 32, 98,121,116,101,115, 95,116,111, /* 0x2890 */ + 95, 99,111,112,121, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, 82, /* 0x28a0 */ + 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x28b0 */ + 32, 99,111,112,121, 95,115,111,117,114, 99,101, 10, 48, 48, 48, /* 0x28c0 */ + 48, 48, 48, 48,102, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, /* 0x28d0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 99,111,112,121, 95,100,101,115, /* 0x28e0 */ +116,105,110, 97,116,105,111,110, 10, 48, 48, 48, 48, 48, 48, 49, /* 0x28f0 */ + 99, 32, 82, 95, 51, 56, 54, 95, 56, 32, 32, 32, 32, 32, 32, 32, /* 0x2900 */ + 32, 32, 32, 32, 67, 79, 77, 67, 85, 84, 80, 79, 10, 10, 10, 82, /* 0x2910 */ + 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2920 */ + 83, 32, 70, 79, 82, 32, 91, 67, 79, 77, 77, 65, 73, 78, 50, 93, /* 0x2930 */ + 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2940 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2950 */ + 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, /* 0x2960 */ + 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,100, /* 0x2970 */ +101, 99,111,109,112,114,101,115,115,111,114, 10, 10, 10, 82, 69, /* 0x2980 */ + 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x2990 */ + 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 49, 54, 48, 93, 58, /* 0x29a0 */ + 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x29b0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x29c0 */ + 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, /* 0x29d0 */ + 54, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x29e0 */ + 86, 68, 69, 67, 79, 50, 10, 48, 48, 48, 48, 48, 48, 48, 56, 32, /* 0x29f0 */ + 82, 95, 51, 56, 54, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, /* 0x2a00 */ + 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 10, 10, 82, 69, 76, /* 0x2a10 */ + 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2a20 */ + 70, 79, 82, 32, 91, 78, 82, 86, 68, 68, 79, 78, 69, 93, 58, 10, /* 0x2a30 */ + 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2a40 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2a50 */ + 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, /* 0x2a60 */ + 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, /* 0x2a70 */ + 68, 69, 67, 79, 50, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x2a80 */ + 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x2a90 */ + 78, 82, 86, 68, 82, 69, 84, 85, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x2aa0 */ + 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2ab0 */ + 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, /* 0x2ac0 */ + 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, /* 0x2ad0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, /* 0x2ae0 */ + 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x2af0 */ + 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 68, 69, /* 0x2b00 */ + 67, 79, 49, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x2b10 */ + 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2b20 */ + 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 49, 48, /* 0x2b30 */ + 32, 82, 95, 51, 56, 54, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, /* 0x2b40 */ + 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 48, 48, 48, 48, /* 0x2b50 */ + 48, 48, 49, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 49, 54, 32, /* 0x2b60 */ + 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, /* 0x2b70 */ + 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, /* 0x2b80 */ + 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 66, /* 0x2b90 */ + 49, 54, 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2ba0 */ + 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x2bb0 */ + 86, 68, 69, 67, 79, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x2bc0 */ + 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2bd0 */ + 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, /* 0x2be0 */ + 48, 48, 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, /* 0x2bf0 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 66, 49, 54, 48, 10, 10, /* 0x2c00 */ + 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x2c10 */ + 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 49, /* 0x2c20 */ + 54, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x2c30 */ + 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x2c40 */ + 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, /* 0x2c50 */ + 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2c60 */ + 32, 99, 97,108,108,116,114,105, 99,107, 95, 99, 97,108,108,115, /* 0x2c70 */ + 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x2c80 */ + 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, /* 0x2c90 */ + 82, 73, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x2ca0 */ + 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2cb0 */ + 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, /* 0x2cc0 */ + 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, /* 0x2cd0 */ + 32, 32, 32, 67, 65, 76, 76, 84, 82, 49, 54, 10, 10, 10, 82, 69, /* 0x2ce0 */ + 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x2cf0 */ + 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 73, 53, 93, 58, /* 0x2d00 */ + 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2d10 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2d20 */ + 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, /* 0x2d30 */ + 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 97, /* 0x2d40 */ +108,108,116,114,105, 99,107, 95, 99, 97,108,108,115, 10, 10, 10, /* 0x2d50 */ + 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2d60 */ + 68, 83, 32, 70, 79, 82, 32, 91, 67, 84, 49, 54, 74, 69, 78, 68, /* 0x2d70 */ + 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x2d80 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2d90 */ + 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, /* 0x2da0 */ + 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2db0 */ + 78, 82, 86, 68, 69, 67, 79, 50, 10, 10, 10, 82, 69, 76, 79, 67, /* 0x2dc0 */ + 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x2dd0 */ + 82, 32, 91, 67, 84, 49, 54, 74, 85, 76, 50, 93, 58, 10, 79, 70, /* 0x2de0 */ + 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x2df0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, /* 0x2e00 */ + 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, /* 0x2e10 */ + 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, /* 0x2e20 */ + 82, 73, 54, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2e30 */ + 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, /* 0x2e40 */ + 76, 76, 84, 82, 73, 54, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x2e50 */ + 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2e60 */ + 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, /* 0x2e70 */ + 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, /* 0x2e80 */ + 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 73, 53, 10, 10, /* 0x2e90 */ + 10 /* 0x2ea0 */ }; diff --git a/src/stub/i086-dos16.sys.h b/src/stub/i086-dos16.sys.h index 6df2759a..af69ee4a 100644 --- a/src/stub/i086-dos16.sys.h +++ b/src/stub/i086-dos16.sys.h @@ -1,4 +1,4 @@ -/* i086-dos16.sys.h -- created from i086-dos16.sys.bin, 12750 (0x31ce) bytes +/* i086-dos16.sys.h -- created from i086-dos16.sys.bin, 13477 (0x34a5) bytes This file is part of the UPX executable compressor. @@ -27,11 +27,11 @@ */ -#define NRV2B_LOADER_SIZE 12750 -#define NRV2B_LOADER_ADLER32 0xd1a38445 -#define NRV2B_LOADER_CRC32 0xfc3ae143 +#define NRV2B_LOADER_SIZE 13477 +#define NRV2B_LOADER_ADLER32 0x499332fc +#define NRV2B_LOADER_CRC32 0x0fb0cafa -unsigned char nrv2b_loader[12750] = { +unsigned char nrv2b_loader[13477] = { 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ 200, 2, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */ @@ -90,7 +90,7 @@ unsigned char nrv2b_loader[12750] = { 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 10, 0, 0, 0, /* 0x 370 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 380 */ 44, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 390 */ -252, 16, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 4, 0, 0, 0, /* 0x 3a0 */ +240, 17, 0, 0, 32, 0, 0, 0, 56, 0, 0, 0, 4, 0, 0, 0, /* 0x 3a0 */ 4, 0, 0, 0, 8, 0, 0, 0, 57, 0, 0, 0, 1, 0, 0, 0, /* 0x 3b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 1, 0, 0, 0, /* 0x 3c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 3d0 */ @@ -100,7 +100,7 @@ unsigned char nrv2b_loader[12750] = { 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 23, 0, 0, 0, /* 0x 410 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 420 */ 75, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 430 */ - 28, 17, 0, 0, 24, 0, 0, 0, 56, 0, 0, 0, 8, 0, 0, 0, /* 0x 440 */ + 16, 18, 0, 0, 24, 0, 0, 0, 56, 0, 0, 0, 8, 0, 0, 0, /* 0x 440 */ 4, 0, 0, 0, 8, 0, 0, 0, 88, 0, 0, 0, 1, 0, 0, 0, /* 0x 450 */ 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 2, 0, 0, 0, /* 0x 460 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 470 */ @@ -110,7 +110,7 @@ unsigned char nrv2b_loader[12750] = { 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 3, 0, 0, 0, /* 0x 4b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 4c0 */ 106, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4d0 */ - 52, 17, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 12, 0, 0, 0, /* 0x 4e0 */ + 40, 18, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 12, 0, 0, 0, /* 0x 4e0 */ 4, 0, 0, 0, 8, 0, 0, 0,119, 0, 0, 0, 1, 0, 0, 0, /* 0x 4f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 22, 0, 0, 0, /* 0x 500 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 510 */ @@ -120,22 +120,22 @@ unsigned char nrv2b_loader[12750] = { 0, 0, 0, 0, 0, 0, 0, 0,121, 0, 0, 0, 10, 0, 0, 0, /* 0x 550 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 560 */ 137, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 570 */ - 60, 17, 0, 0, 16, 0, 0, 0, 56, 0, 0, 0, 16, 0, 0, 0, /* 0x 580 */ + 48, 18, 0, 0, 16, 0, 0, 0, 56, 0, 0, 0, 16, 0, 0, 0, /* 0x 580 */ 4, 0, 0, 0, 8, 0, 0, 0,154, 0, 0, 0, 1, 0, 0, 0, /* 0x 590 */ 0, 0, 0, 0, 0, 0, 0, 0,131, 0, 0, 0, 2, 0, 0, 0, /* 0x 5a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 5b0 */ 150, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 5c0 */ - 76, 17, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 18, 0, 0, 0, /* 0x 5d0 */ + 64, 18, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 18, 0, 0, 0, /* 0x 5d0 */ 4, 0, 0, 0, 8, 0, 0, 0,167, 0, 0, 0, 1, 0, 0, 0, /* 0x 5e0 */ 0, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0, 2, 0, 0, 0, /* 0x 5f0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 600 */ 163, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 610 */ - 84, 17, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 20, 0, 0, 0, /* 0x 620 */ + 72, 18, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 20, 0, 0, 0, /* 0x 620 */ 4, 0, 0, 0, 8, 0, 0, 0,180, 0, 0, 0, 1, 0, 0, 0, /* 0x 630 */ 0, 0, 0, 0, 0, 0, 0, 0,135, 0, 0, 0, 30, 0, 0, 0, /* 0x 640 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 650 */ 176, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 660 */ - 92, 17, 0, 0, 24, 0, 0, 0, 56, 0, 0, 0, 22, 0, 0, 0, /* 0x 670 */ + 80, 18, 0, 0, 24, 0, 0, 0, 56, 0, 0, 0, 22, 0, 0, 0, /* 0x 670 */ 4, 0, 0, 0, 8, 0, 0, 0,189, 0, 0, 0, 1, 0, 0, 0, /* 0x 680 */ 0, 0, 0, 0, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, /* 0x 690 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 6a0 */ @@ -145,14 +145,14 @@ unsigned char nrv2b_loader[12750] = { 0, 0, 0, 0, 0, 0, 0, 0,173, 0, 0, 0, 22, 0, 0, 0, /* 0x 6e0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 6f0 */ 207, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 700 */ -116, 17, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 26, 0, 0, 0, /* 0x 710 */ +104, 18, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 26, 0, 0, 0, /* 0x 710 */ 4, 0, 0, 0, 8, 0, 0, 0,220, 0, 0, 0, 1, 0, 0, 0, /* 0x 720 */ 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 0, 0, 0, 0, 0, 0, /* 0x 730 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 740 */ 233, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 750 */ 195, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 760 */ 1, 0, 0, 0, 0, 0, 0, 0,229, 0, 0, 0, 9, 0, 0, 0, /* 0x 770 */ - 0, 0, 0, 0, 0, 0, 0, 0,124, 17, 0, 0, 8, 0, 0, 0, /* 0x 780 */ + 0, 0, 0, 0, 0, 0, 0, 0,112, 18, 0, 0, 8, 0, 0, 0, /* 0x 780 */ 56, 0, 0, 0, 29, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x 790 */ 242, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 7a0 */ 206, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 7b0 */ @@ -165,7 +165,7 @@ unsigned char nrv2b_loader[12750] = { 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 3, 0, 0, 0, /* 0x 820 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 830 */ 13, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 840 */ -132, 17, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, /* 0x 850 */ +120, 18, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 34, 0, 0, 0, /* 0x 850 */ 4, 0, 0, 0, 8, 0, 0, 0, 26, 1, 0, 0, 1, 0, 0, 0, /* 0x 860 */ 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 0, 0, 2, 0, 0, 0, /* 0x 870 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 880 */ @@ -175,17 +175,17 @@ unsigned char nrv2b_loader[12750] = { 0, 0, 0, 0, 0, 0, 0, 0,226, 0, 0, 0, 6, 0, 0, 0, /* 0x 8c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 8d0 */ 44, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 8e0 */ -140, 17, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 38, 0, 0, 0, /* 0x 8f0 */ +128, 18, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 38, 0, 0, 0, /* 0x 8f0 */ 4, 0, 0, 0, 8, 0, 0, 0, 61, 1, 0, 0, 1, 0, 0, 0, /* 0x 900 */ 0, 0, 0, 0, 0, 0, 0, 0,232, 0, 0, 0, 2, 0, 0, 0, /* 0x 910 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 920 */ 57, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 930 */ -148, 17, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 40, 0, 0, 0, /* 0x 940 */ +136, 18, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 40, 0, 0, 0, /* 0x 940 */ 4, 0, 0, 0, 8, 0, 0, 0, 74, 1, 0, 0, 1, 0, 0, 0, /* 0x 950 */ 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 0, 0, 2, 0, 0, 0, /* 0x 960 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 970 */ 70, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 980 */ -156, 17, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 42, 0, 0, 0, /* 0x 990 */ +144, 18, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 42, 0, 0, 0, /* 0x 990 */ 4, 0, 0, 0, 8, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, /* 0x 9a0 */ 0, 0, 0, 0, 0, 0, 0, 0,236, 0, 0, 0, 3, 0, 0, 0, /* 0x 9b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 9c0 */ @@ -197,7 +197,7 @@ unsigned char nrv2b_loader[12750] = { 114, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a20 */ 249, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a30 */ 1, 0, 0, 0, 0, 0, 0, 0,110, 1, 0, 0, 9, 0, 0, 0, /* 0x a40 */ - 0, 0, 0, 0, 0, 0, 0, 0,164, 17, 0, 0, 8, 0, 0, 0, /* 0x a50 */ + 0, 0, 0, 0, 0, 0, 0, 0,152, 18, 0, 0, 8, 0, 0, 0, /* 0x a50 */ 56, 0, 0, 0, 47, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x a60 */ 123, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a70 */ 252, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a80 */ @@ -210,623 +210,669 @@ unsigned char nrv2b_loader[12750] = { 0, 0, 0, 0, 0, 0, 0, 0, 5, 1, 0, 0, 3, 0, 0, 0, /* 0x af0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x b00 */ 150, 1, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b10 */ -172, 17, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, /* 0x b20 */ +160, 18, 0, 0, 8, 0, 0, 0, 56, 0, 0, 0, 52, 0, 0, 0, /* 0x b20 */ 4, 0, 0, 0, 8, 0, 0, 0,163, 1, 0, 0, 7, 0, 0, 0, /* 0x b30 */ 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 0, 0, 20, 0, 0, 0, /* 0x b40 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x b50 */ 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b60 */ 28, 1, 0, 0,169, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b70 */ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, /* 0x b80 */ - 0, 0, 0, 0, 0, 0, 0, 0,216, 11, 0, 0, 0, 4, 0, 0, /* 0x b90 */ - 57, 0, 0, 0, 56, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, /* 0x ba0 */ + 0, 0, 0, 0, 0, 0, 0, 0,216, 11, 0, 0,144, 4, 0, 0, /* 0x b90 */ + 57, 0, 0, 0, 65, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, /* 0x ba0 */ 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bb0 */ -216, 15, 0, 0, 33, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bc0 */ +104, 16, 0, 0,136, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bc0 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bd0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x be0 */ - 0, 0, 0, 0, 4, 0,241,255, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x bf0 */ - 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c00 */ - 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c10 */ - 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c20 */ - 0, 0, 0, 0, 3, 0, 4, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x c30 */ - 0, 0, 0, 0, 0, 0, 4, 0, 30, 0, 0, 0, 10, 0, 0, 0, /* 0x c40 */ - 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c50 */ - 0, 0, 0, 0, 3, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c60 */ - 0, 0, 0, 0, 3, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c70 */ - 0, 0, 0, 0, 3, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c80 */ - 0, 0, 0, 0, 3, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c90 */ - 0, 0, 0, 0, 3, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ca0 */ - 0, 0, 0, 0, 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cb0 */ - 0, 0, 0, 0, 3, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cc0 */ - 0, 0, 0, 0, 3, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cd0 */ - 0, 0, 0, 0, 3, 0, 16, 0, 39, 0, 0, 0, 0, 0, 0, 0, /* 0x ce0 */ - 0, 0, 0, 0, 0, 0, 16, 0, 51, 0, 0, 0, 1, 0, 0, 0, /* 0x cf0 */ - 0, 0, 0, 0, 0, 0, 16, 0, 68, 0, 0, 0, 13, 0, 0, 0, /* 0x d00 */ - 0, 0, 0, 0, 0, 0, 26, 0, 79, 0, 0, 0, 7, 0, 0, 0, /* 0x d10 */ - 0, 0, 0, 0, 0, 0, 16, 0, 89, 0, 0, 0, 8, 0, 0, 0, /* 0x d20 */ - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d30 */ - 0, 0, 0, 0, 3, 0, 18, 0,103, 0, 0, 0, 22, 0, 0, 0, /* 0x d40 */ - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d50 */ - 0, 0, 0, 0, 3, 0, 20, 0,119, 0, 0, 0, 21, 0, 0, 0, /* 0x d60 */ - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d70 */ - 0, 0, 0, 0, 3, 0, 22, 0,134, 0, 0, 0, 13, 0, 0, 0, /* 0x d80 */ - 0, 0, 0, 0, 0, 0, 22, 0,143, 0, 0, 0, 30, 0, 0, 0, /* 0x d90 */ - 0, 0, 0, 0, 0, 0, 22, 0,158, 0, 0, 0, 23, 0, 0, 0, /* 0x da0 */ - 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x db0 */ - 0, 0, 0, 0, 3, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x dc0 */ - 0, 0, 0, 0, 3, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x dd0 */ - 0, 0, 0, 0, 3, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x de0 */ - 0, 0, 0, 0, 3, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x df0 */ - 0, 0, 0, 0, 3, 0, 29, 0,168, 0, 0, 0, 4, 0, 0, 0, /* 0x e00 */ - 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e10 */ - 0, 0, 0, 0, 3, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e20 */ - 0, 0, 0, 0, 3, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e30 */ - 0, 0, 0, 0, 3, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e40 */ - 0, 0, 0, 0, 3, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e50 */ - 0, 0, 0, 0, 3, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e60 */ - 0, 0, 0, 0, 3, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e70 */ - 0, 0, 0, 0, 3, 0, 38, 0,177, 0, 0, 0, 4, 0, 0, 0, /* 0x e80 */ - 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e90 */ - 0, 0, 0, 0, 3, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ea0 */ - 0, 0, 0, 0, 3, 0, 42, 0,187, 0, 0, 0, 3, 0, 0, 0, /* 0x eb0 */ - 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ec0 */ - 0, 0, 0, 0, 3, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ed0 */ - 0, 0, 0, 0, 3, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ee0 */ - 0, 0, 0, 0, 3, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ef0 */ - 0, 0, 0, 0, 3, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f00 */ - 0, 0, 0, 0, 3, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f10 */ - 0, 0, 0, 0, 3, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f20 */ - 0, 0, 0, 0, 3, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f30 */ - 0, 0, 0, 0, 3, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f40 */ - 0, 0, 0, 0, 3, 0, 54, 0,196, 0, 0, 0, 0, 0, 0, 0, /* 0x f50 */ - 0, 0, 0, 0, 16, 0, 0, 0,201, 0, 0, 0, 0, 0, 0, 0, /* 0x f60 */ - 0, 0, 0, 0, 16, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, /* 0x f70 */ - 0, 0, 0, 0, 16, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, /* 0x f80 */ - 0, 0, 0, 0, 16, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, /* 0x f90 */ - 0, 0, 0, 0, 16, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, /* 0x fa0 */ - 0, 0, 0, 0, 16, 0, 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, /* 0x fb0 */ - 0, 0, 0, 0, 16, 0, 0, 0, 23, 1, 0, 0, 0, 0, 0, 0, /* 0x fc0 */ - 0, 0, 0, 0, 16, 0, 0, 0, 0,115,114, 99, 47,105, 48, 56, /* 0x fd0 */ - 54, 45,100,111,115, 49, 54, 46,115,121,115, 46, 97,115,109, 0, /* 0x fe0 */ -115,116, 97,114,116, 0,115,116,114, 97,116,101,103,121, 0,108, /* 0x ff0 */ -105,116,101,114, 97,108, 95,110, 50, 98, 0,100,101, 99,111,109, /* 0x1000 */ -112, 95,115,116, 97,114,116, 95,110, 50, 98, 0,103,101,116, 98, /* 0x1010 */ -105,116, 95,110, 50, 98, 0,108,111,111,112, 49, 95,110, 50, 98, /* 0x1020 */ - 0,103,101,116, 98,105,116, 95, 99,120, 95,110, 50, 98, 0,100, /* 0x1030 */ -101, 99,111,109,112, 95,100,111,110,101, 95,110, 50, 98, 0,100, /* 0x1040 */ -101, 99,111,109,112, 95,114,101,116, 95,110, 50, 98, 0, 97,120, /* 0x1050 */ - 98,112, 95,110, 50, 98, 0, 99,111,112,121, 95,109, 97,116, 99, /* 0x1060 */ -104, 95,110, 50, 98, 0,108,111,111,112, 50, 95,110, 50, 98, 0, /* 0x1070 */ - 99,106,116, 49, 54, 95, 76, 49, 0, 99,106,116, 49, 54, 95, 76, /* 0x1080 */ - 49, 49, 0, 99,106,116, 49, 54, 95, 76, 50, 0,110,101,120,116, /* 0x1090 */ - 0, 97,116,116,114,105, 98,117,116,101, 0,105,110,116,101,114, /* 0x10a0 */ -114,117,112,116, 0, 99,111,112,121, 95,115,111,117,114, 99,101, /* 0x10b0 */ - 0, 99,111,112,121, 95,100,101,115,116,105,110, 97,116,105,111, /* 0x10c0 */ -110, 0,100,101, 99,111,109,112,114,101,115,115,111,114, 0, 99, /* 0x10d0 */ - 97,108,108,116,114,105, 99,107, 95, 99, 97,108,108,115, 0,115, /* 0x10e0 */ -121,115, 95,101,110,116,114,121, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10f0 */ - 1, 56, 0, 0, 4, 0, 0, 0, 20, 57, 0, 0, 6, 0, 0, 0, /* 0x1100 */ - 20, 5, 0, 0, 8, 0, 0, 0, 20, 58, 0, 0, 1, 0, 0, 0, /* 0x1110 */ - 20, 59, 0, 0, 4, 0, 0, 0, 20, 60, 0, 0, 22, 0, 0, 0, /* 0x1120 */ - 22, 11, 0, 0, 1, 0, 0, 0, 21, 61, 0, 0, 2, 0, 0, 0, /* 0x1130 */ - 21, 32, 0, 0, 8, 0, 0, 0, 21, 32, 0, 0, 1, 0, 0, 0, /* 0x1140 */ - 23, 32, 0, 0, 1, 0, 0, 0, 23, 32, 0, 0, 16, 0, 0, 0, /* 0x1150 */ - 21, 32, 0, 0, 24, 0, 0, 0, 21, 32, 0, 0, 1, 0, 0, 0, /* 0x1160 */ - 23, 16, 0, 0, 7, 0, 0, 0, 23, 16, 0, 0, 2, 0, 0, 0, /* 0x1170 */ - 20, 62, 0, 0, 2, 0, 0, 0, 23, 34, 0, 0, 2, 0, 0, 0, /* 0x1180 */ - 20, 62, 0, 0, 1, 0, 0, 0, 23, 32, 0, 0, 1, 0, 0, 0, /* 0x1190 */ - 23, 50, 0, 0, 2, 0, 0, 0, 23, 42, 0, 0, 1, 0, 0, 0, /* 0x11a0 */ - 20, 63, 0, 0, 10,116,109,112, 47,105, 48, 56, 54, 45,100,111, /* 0x11b0 */ -115, 49, 54, 46,115,121,115, 46, 98,105,110, 58, 32, 32, 32, 32, /* 0x11c0 */ - 32,102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, /* 0x11d0 */ - 51, 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99,116,105,111,110, /* 0x11e0 */ -115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, /* 0x11f0 */ - 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, /* 0x1200 */ - 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, /* 0x1210 */ - 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103, /* 0x1220 */ -110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 46,116,101, /* 0x1230 */ -120,116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1240 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1250 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, /* 0x1260 */ - 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1270 */ - 83, 44, 32, 65, 76, 76, 79, 67, 44, 32, 76, 79, 65, 68, 44, 32, /* 0x1280 */ - 82, 69, 65, 68, 79, 78, 76, 89, 44, 32, 67, 79, 68, 69, 10, 32, /* 0x1290 */ - 32, 49, 32, 46,100, 97,116, 97, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x12a0 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x12b0 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x12c0 */ - 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, /* 0x12d0 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 65, 76, 76, 79, 67, 44, 32, /* 0x12e0 */ - 76, 79, 65, 68, 44, 32, 68, 65, 84, 65, 10, 32, 32, 50, 32, 46, /* 0x12f0 */ - 98,115,115, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1300 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1310 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1320 */ - 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 65, 76, 76, 79, 67, /* 0x1330 */ - 10, 32, 32, 51, 32, 83, 89, 83, 77, 65, 73, 78, 49, 32, 32, 32, /* 0x1340 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 97, 32, 32, 48, 48, 48, /* 0x1350 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1360 */ - 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, /* 0x1370 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1380 */ - 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 83, /* 0x1390 */ - 89, 83, 73, 50, 56, 54, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x13a0 */ - 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x13b0 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x13c0 */ - 48, 51,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x13d0 */ - 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x13e0 */ - 53, 32, 83, 89, 83, 73, 48, 56, 54, 49, 32, 32, 32, 32, 32, 32, /* 0x13f0 */ - 48, 48, 48, 48, 48, 48, 48, 55, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1400 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1410 */ - 48, 48, 48, 48, 51,102, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1420 */ - 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1430 */ - 10, 32, 32, 54, 32, 83, 89, 83, 77, 65, 73, 78, 50, 32, 32, 32, /* 0x1440 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 55, 32, 32, 48, 48, 48, /* 0x1450 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1460 */ - 32, 48, 48, 48, 48, 48, 48, 52, 54, 32, 32, 50, 42, 42, 48, 32, /* 0x1470 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1480 */ - 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 83, /* 0x1490 */ - 89, 83, 83, 66, 66, 66, 80, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x14a0 */ - 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x14b0 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x14c0 */ - 48, 53,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x14d0 */ - 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x14e0 */ - 56, 32, 83, 89, 83, 67, 65, 76, 76, 84, 32, 32, 32, 32, 32, 32, /* 0x14f0 */ - 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1500 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1510 */ - 48, 48, 48, 48, 53,102, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1520 */ - 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1530 */ - 10, 32, 32, 57, 32, 83, 89, 83, 77, 65, 73, 78, 51, 32, 32, 32, /* 0x1540 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, 48, 48, /* 0x1550 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1560 */ - 32, 48, 48, 48, 48, 48, 48, 54, 48, 32, 32, 50, 42, 42, 48, 32, /* 0x1570 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1580 */ - 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 85, /* 0x1590 */ - 80, 88, 49, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x15a0 */ - 48, 48, 48, 49, 54, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x15b0 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x15c0 */ - 48, 54, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x15d0 */ - 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, /* 0x15e0 */ - 49, 32, 83, 89, 83, 67, 85, 84, 80, 79, 32, 32, 32, 32, 32, 32, /* 0x15f0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1600 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1610 */ - 48, 48, 48, 48, 55, 57, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1620 */ - 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1630 */ - 10, 32, 49, 50, 32, 78, 82, 86, 50, 66, 49, 54, 48, 32, 32, 32, /* 0x1640 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 97, 32, 32, 48, 48, 48, /* 0x1650 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1660 */ - 32, 48, 48, 48, 48, 48, 48, 55, 57, 32, 32, 50, 42, 42, 48, 32, /* 0x1670 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1680 */ - 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 51, 32, 78, /* 0x1690 */ - 82, 86, 68, 68, 79, 78, 69, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x16a0 */ - 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x16b0 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x16c0 */ - 48, 56, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x16d0 */ - 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x16e0 */ - 79, 78, 76, 89, 10, 32, 49, 52, 32, 78, 82, 86, 68, 82, 69, 84, /* 0x16f0 */ - 85, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, /* 0x1700 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1710 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 56, 53, 32, 32, 50, /* 0x1720 */ - 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1730 */ - 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1740 */ - 49, 53, 32, 78, 82, 86, 68, 69, 67, 79, 49, 32, 32, 32, 32, 32, /* 0x1750 */ - 32, 48, 48, 48, 48, 48, 48, 49,101, 32, 32, 48, 48, 48, 48, 48, /* 0x1760 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1770 */ - 48, 48, 48, 48, 48, 56, 55, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1780 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1790 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 54, 32, 78, 82, 86, /* 0x17a0 */ - 76, 69, 68, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x17b0 */ - 48, 48, 49, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x17c0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 97, /* 0x17d0 */ - 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x17e0 */ - 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 55, 32, /* 0x17f0 */ - 78, 82, 86, 71, 84, 68, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1800 */ - 48, 48, 48, 48, 48, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1810 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1820 */ - 48, 48, 97, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1830 */ - 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1840 */ - 49, 56, 32, 78, 82, 86, 68, 69, 67, 79, 50, 32, 32, 32, 32, 32, /* 0x1850 */ - 32, 48, 48, 48, 48, 48, 48, 49, 54, 32, 32, 48, 48, 48, 48, 48, /* 0x1860 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1870 */ - 48, 48, 48, 48, 48, 97,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1880 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1890 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 57, 32, 78, 82, 86, /* 0x18a0 */ - 50, 66, 49, 54, 57, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x18b0 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x18c0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 99, /* 0x18d0 */ - 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x18e0 */ - 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 48, 32, /* 0x18f0 */ - 67, 65, 76, 76, 84, 82, 49, 54, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1900 */ - 48, 48, 48, 48, 48, 98, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1910 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1920 */ - 48, 48, 99, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1930 */ - 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1940 */ - 68, 79, 78, 76, 89, 10, 32, 50, 49, 32, 67, 84, 49, 54, 73, 50, /* 0x1950 */ - 56, 54, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, /* 0x1960 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1970 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 99,101, 32, 32, /* 0x1980 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1990 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 50, 32, 67, 84, 49, /* 0x19a0 */ - 54, 83, 85, 66, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x19b0 */ - 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x19c0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,100, /* 0x19d0 */ - 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x19e0 */ - 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 51, 32, /* 0x19f0 */ - 67, 84, 49, 54, 73, 48, 56, 54, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1a00 */ - 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a10 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1a20 */ - 48, 48,100, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1a30 */ - 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1a40 */ - 50, 52, 32, 67, 65, 76, 76, 84, 82, 73, 50, 32, 32, 32, 32, 32, /* 0x1a50 */ - 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, /* 0x1a60 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1a70 */ - 48, 48, 48, 48, 48,100, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1a80 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1a90 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 53, 32, 67, 84, 49, /* 0x1aa0 */ - 54, 69, 56, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1ab0 */ - 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1ac0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,100, /* 0x1ad0 */ -101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1ae0 */ - 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 54, 32, /* 0x1af0 */ - 67, 84, 49, 54, 69, 57, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1b00 */ - 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b10 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1b20 */ - 48, 48,101, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1b30 */ - 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1b40 */ - 50, 55, 32, 67, 65, 76, 76, 84, 82, 73, 53, 32, 32, 32, 32, 32, /* 0x1b50 */ - 32, 48, 48, 48, 48, 48, 48, 48, 54, 32, 32, 48, 48, 48, 48, 48, /* 0x1b60 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1b70 */ - 48, 48, 48, 48, 48,101, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1b80 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1b90 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 56, 32, 67, 84, 49, /* 0x1ba0 */ - 54, 74, 69, 78, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1bb0 */ - 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1bc0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,101, /* 0x1bd0 */ - 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1be0 */ - 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1bf0 */ - 76, 89, 10, 32, 50, 57, 32, 67, 84, 49, 54, 74, 85, 76, 50, 32, /* 0x1c00 */ - 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, /* 0x1c10 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1c20 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48,101, 97, 32, 32, 50, 42, 42, /* 0x1c30 */ - 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1c40 */ - 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 48, /* 0x1c50 */ - 32, 67, 84, 49, 54, 73, 50, 56, 55, 32, 32, 32, 32, 32, 32, 48, /* 0x1c60 */ - 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1c70 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1c80 */ - 48, 48, 48,101, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1c90 */ - 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1ca0 */ - 32, 51, 49, 32, 67, 84, 49, 54, 83, 85, 66, 49, 32, 32, 32, 32, /* 0x1cb0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, /* 0x1cc0 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1cd0 */ - 48, 48, 48, 48, 48, 48,101,102, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1ce0 */ - 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1cf0 */ - 76, 89, 10, 32, 51, 50, 32, 67, 84, 49, 54, 73, 48, 56, 55, 32, /* 0x1d00 */ - 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, /* 0x1d10 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1d20 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48,102, 49, 32, 32, 50, 42, 42, /* 0x1d30 */ - 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1d40 */ - 68, 79, 78, 76, 89, 10, 32, 51, 51, 32, 67, 65, 76, 76, 84, 82, /* 0x1d50 */ - 73, 54, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, /* 0x1d60 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1d70 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,102, 57, 32, 32, /* 0x1d80 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1d90 */ - 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1da0 */ - 32, 51, 52, 32, 83, 89, 83, 77, 65, 73, 78, 53, 32, 32, 32, 32, /* 0x1db0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, 48, /* 0x1dc0 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1dd0 */ - 48, 48, 48, 48, 48, 48,102, 99, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1de0 */ - 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1df0 */ - 76, 89, 10, 32, 51, 53, 32, 83, 89, 83, 73, 50, 56, 54, 50, 32, /* 0x1e00 */ - 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, /* 0x1e10 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1e20 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48,102,100, 32, 32, 50, 42, 42, /* 0x1e30 */ - 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1e40 */ - 68, 79, 78, 76, 89, 10, 32, 51, 54, 32, 83, 89, 83, 73, 48, 56, /* 0x1e50 */ - 54, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 55, /* 0x1e60 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1e70 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,102,101, 32, 32, /* 0x1e80 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1e90 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 55, 32, 83, 89, 83, /* 0x1ea0 */ - 74, 85, 77, 80, 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1eb0 */ - 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1ec0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 48, /* 0x1ed0 */ - 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1ee0 */ - 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1ef0 */ - 76, 89, 10, 32, 51, 56, 32, 46,110,111,116,101, 32, 32, 32, 32, /* 0x1f00 */ - 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 52, 32, 32, 48, /* 0x1f10 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1f20 */ - 48, 32, 32, 48, 48, 48, 48, 48, 49, 48, 56, 32, 32, 50, 42, 42, /* 0x1f30 */ - 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1f40 */ - 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, /* 0x1f50 */ - 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1f60 */ - 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, /* 0x1f70 */ - 48, 48, 48, 32,115,114, 99, 47,105, 48, 56, 54, 45,100,111,115, /* 0x1f80 */ - 49, 54, 46,115,121,115, 46, 97,115,109, 10, 48, 48, 48, 48, 48, /* 0x1f90 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 46,116,101,120, /* 0x1fa0 */ -116, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 46,116,101,120,116, /* 0x1fb0 */ - 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1fc0 */ - 32, 32, 46,100, 97,116, 97, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1fd0 */ - 32, 46,100, 97,116, 97, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1fe0 */ -108, 32, 32, 32, 32,100, 32, 32, 46, 98,115,115, 9, 48, 48, 48, /* 0x1ff0 */ - 48, 48, 48, 48, 48, 32, 46, 98,115,115, 10, 48, 48, 48, 48, 48, /* 0x2000 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 77, /* 0x2010 */ - 65, 73, 78, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, 89, /* 0x2020 */ - 83, 77, 65, 73, 78, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2030 */ -108, 32, 32, 32, 32, 32, 32, 32, 83, 89, 83, 77, 65, 73, 78, 49, /* 0x2040 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,116, 97,114,116, 10, /* 0x2050 */ - 48, 48, 48, 48, 48, 48, 48, 97, 32,108, 32, 32, 32, 32, 32, 32, /* 0x2060 */ - 32, 83, 89, 83, 77, 65, 73, 78, 49, 9, 48, 48, 48, 48, 48, 48, /* 0x2070 */ - 48, 48, 32,115,116,114, 97,116,101,103,121, 10, 48, 48, 48, 48, /* 0x2080 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, /* 0x2090 */ - 73, 50, 56, 54, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, /* 0x20a0 */ - 89, 83, 73, 50, 56, 54, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20b0 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 73, 48, 56, 54, /* 0x20c0 */ - 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, 89, 83, 73, 48, /* 0x20d0 */ - 56, 54, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x20e0 */ - 32, 32,100, 32, 32, 83, 89, 83, 77, 65, 73, 78, 50, 9, 48, 48, /* 0x20f0 */ - 48, 48, 48, 48, 48, 48, 32, 83, 89, 83, 77, 65, 73, 78, 50, 10, /* 0x2100 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x2110 */ - 32, 83, 89, 83, 67, 85, 84, 80, 79, 9, 48, 48, 48, 48, 48, 48, /* 0x2120 */ - 48, 48, 32, 83, 89, 83, 67, 85, 84, 80, 79, 10, 48, 48, 48, 48, /* 0x2130 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, /* 0x2140 */ - 83, 66, 66, 66, 80, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, /* 0x2150 */ - 89, 83, 83, 66, 66, 66, 80, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2160 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 67, 65, 76, 76, /* 0x2170 */ - 84, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, 89, 83, 67, 65, /* 0x2180 */ - 76, 76, 84, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2190 */ - 32, 32,100, 32, 32, 83, 89, 83, 77, 65, 73, 78, 51, 9, 48, 48, /* 0x21a0 */ - 48, 48, 48, 48, 48, 48, 32, 83, 89, 83, 77, 65, 73, 78, 51, 10, /* 0x21b0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x21c0 */ - 32, 85, 80, 88, 49, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, /* 0x21d0 */ - 48, 48, 32, 85, 80, 88, 49, 72, 69, 65, 68, 10, 48, 48, 48, 48, /* 0x21e0 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x21f0 */ - 50, 66, 49, 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, /* 0x2200 */ - 82, 86, 50, 66, 49, 54, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2210 */ - 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 66, 49, 54, /* 0x2220 */ - 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,105,116,101,114, /* 0x2230 */ - 97,108, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, /* 0x2240 */ -108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 66, 49, 54, 48, /* 0x2250 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,100,101, 99,111,109,112, /* 0x2260 */ - 95,115,116, 97,114,116, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, /* 0x2270 */ - 48, 48,100, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, /* 0x2280 */ - 69, 67, 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,103,101, /* 0x2290 */ -116, 98,105,116, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x22a0 */ - 55, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 66, 49, /* 0x22b0 */ - 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,111,111,112, /* 0x22c0 */ - 49, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 56, 32,108, /* 0x22d0 */ - 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, /* 0x22e0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,103,101,116, 98,105,116, 95, /* 0x22f0 */ - 99,120, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2300 */ -108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 68, 68, 79, 78, 69, /* 0x2310 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 68, 68, 79, /* 0x2320 */ - 78, 69, 10, 48, 48, 48, 48, 48, 48, 49, 54, 32,108, 32, 32, 32, /* 0x2330 */ - 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, /* 0x2340 */ - 48, 48, 48, 48, 48, 32,100,101, 99,111,109,112, 95,100,111,110, /* 0x2350 */ -101, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x2360 */ - 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 68, 82, 69, 84, 85, 9, /* 0x2370 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 68, 82, 69, 84, /* 0x2380 */ - 85, 10, 48, 48, 48, 48, 48, 48, 49, 53, 32,108, 32, 32, 32, 32, /* 0x2390 */ - 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, 48, /* 0x23a0 */ - 48, 48, 48, 48, 32,100,101, 99,111,109,112, 95,114,101,116, 95, /* 0x23b0 */ -110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x23c0 */ - 32, 32,100, 32, 32, 78, 82, 86, 68, 69, 67, 79, 49, 9, 48, 48, /* 0x23d0 */ - 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 68, 69, 67, 79, 49, 10, /* 0x23e0 */ - 48, 48, 48, 48, 48, 48, 48,100, 32,108, 32, 32, 32, 32, 32, 32, /* 0x23f0 */ - 32, 78, 82, 86, 68, 69, 67, 79, 49, 9, 48, 48, 48, 48, 48, 48, /* 0x2400 */ - 48, 48, 32, 97,120, 98,112, 95,110, 50, 98, 10, 48, 48, 48, 48, /* 0x2410 */ - 48, 48, 49,101, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, /* 0x2420 */ - 68, 69, 67, 79, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99, /* 0x2430 */ -111,112,121, 95,109, 97,116, 99,104, 95,110, 50, 98, 10, 48, 48, /* 0x2440 */ - 48, 48, 48, 48, 49, 55, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x2450 */ - 82, 86, 68, 69, 67, 79, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2460 */ - 32,108,111,111,112, 50, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, /* 0x2470 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 76, /* 0x2480 */ - 69, 68, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, /* 0x2490 */ - 86, 76, 69, 68, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x24a0 */ -108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 71, 84, 68, 48, 48, /* 0x24b0 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 71, 84, 68, /* 0x24c0 */ - 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x24d0 */ - 32,100, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, /* 0x24e0 */ - 48, 48, 48, 48, 48, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 48, /* 0x24f0 */ - 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2500 */ - 78, 82, 86, 50, 66, 49, 54, 57, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2510 */ - 48, 32, 78, 82, 86, 50, 66, 49, 54, 57, 10, 48, 48, 48, 48, 48, /* 0x2520 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, /* 0x2530 */ - 84, 82, 49, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, /* 0x2540 */ - 76, 76, 84, 82, 49, 54, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, /* 0x2550 */ -108, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 49, 54, /* 0x2560 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99,106,116, 49, 54, 95, /* 0x2570 */ - 76, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2580 */ - 32,100, 32, 32, 67, 84, 49, 54, 73, 50, 56, 54, 9, 48, 48, 48, /* 0x2590 */ - 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 73, 50, 56, 54, 10, 48, /* 0x25a0 */ - 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x25b0 */ - 67, 84, 49, 54, 83, 85, 66, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x25c0 */ - 48, 32, 67, 84, 49, 54, 83, 85, 66, 48, 10, 48, 48, 48, 48, 48, /* 0x25d0 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, /* 0x25e0 */ - 73, 48, 56, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, /* 0x25f0 */ - 49, 54, 73, 48, 56, 54, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2600 */ -108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 73, 50, /* 0x2610 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, /* 0x2620 */ - 73, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2630 */ - 32,100, 32, 32, 67, 84, 49, 54, 69, 56, 48, 48, 9, 48, 48, 48, /* 0x2640 */ - 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 69, 56, 48, 48, 10, 48, /* 0x2650 */ - 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2660 */ - 67, 84, 49, 54, 69, 57, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2670 */ - 48, 32, 67, 84, 49, 54, 69, 57, 48, 48, 10, 48, 48, 48, 48, 48, /* 0x2680 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, 76, /* 0x2690 */ - 84, 82, 73, 53, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 65, /* 0x26a0 */ - 76, 76, 84, 82, 73, 53, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, /* 0x26b0 */ -108, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 73, 53, /* 0x26c0 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99,106,116, 49, 54, 95, /* 0x26d0 */ - 76, 49, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x26e0 */ - 32, 32,100, 32, 32, 67, 84, 49, 54, 74, 69, 78, 68, 9, 48, 48, /* 0x26f0 */ - 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 74, 69, 78, 68, 10, /* 0x2700 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x2710 */ - 32, 67, 84, 49, 54, 74, 85, 76, 50, 9, 48, 48, 48, 48, 48, 48, /* 0x2720 */ - 48, 48, 32, 67, 84, 49, 54, 74, 85, 76, 50, 10, 48, 48, 48, 48, /* 0x2730 */ - 48, 48, 48, 51, 32,108, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, /* 0x2740 */ - 76, 84, 82, 73, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99, /* 0x2750 */ -106,116, 49, 54, 95, 76, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2760 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 73, 50, 56, /* 0x2770 */ - 55, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 73, /* 0x2780 */ - 50, 56, 55, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2790 */ - 32, 32,100, 32, 32, 67, 84, 49, 54, 83, 85, 66, 49, 9, 48, 48, /* 0x27a0 */ - 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 83, 85, 66, 49, 10, /* 0x27b0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x27c0 */ - 32, 67, 84, 49, 54, 73, 48, 56, 55, 9, 48, 48, 48, 48, 48, 48, /* 0x27d0 */ - 48, 48, 32, 67, 84, 49, 54, 73, 48, 56, 55, 10, 48, 48, 48, 48, /* 0x27e0 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 65, 76, /* 0x27f0 */ - 76, 84, 82, 73, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, /* 0x2800 */ - 65, 76, 76, 84, 82, 73, 54, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2810 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 77, 65, 73, 78, /* 0x2820 */ - 53, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, 89, 83, 77, 65, /* 0x2830 */ - 73, 78, 53, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2840 */ - 32, 32,100, 32, 32, 83, 89, 83, 73, 50, 56, 54, 50, 9, 48, 48, /* 0x2850 */ - 48, 48, 48, 48, 48, 48, 32, 83, 89, 83, 73, 50, 56, 54, 50, 10, /* 0x2860 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x2870 */ - 32, 83, 89, 83, 73, 48, 56, 54, 50, 9, 48, 48, 48, 48, 48, 48, /* 0x2880 */ - 48, 48, 32, 83, 89, 83, 73, 48, 56, 54, 50, 10, 48, 48, 48, 48, /* 0x2890 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, /* 0x28a0 */ - 74, 85, 77, 80, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, /* 0x28b0 */ - 89, 83, 74, 85, 77, 80, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x28c0 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 46,110,111,116,101, 9, 48, /* 0x28d0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 46,110,111,116,101, 10, 48, 48, /* 0x28e0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x28f0 */ - 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,110,101, /* 0x2900 */ -120,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, /* 0x2910 */ - 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, /* 0x2920 */ - 48, 48, 32, 97,116,116,114,105, 98,117,116,101, 10, 48, 48, 48, /* 0x2930 */ - 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, /* 0x2940 */ - 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,105,110,116, /* 0x2950 */ -101,114,114,117,112,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2960 */ - 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, /* 0x2970 */ - 48, 48, 48, 48, 48, 48, 32, 99,111,112,121, 95,115,111,117,114, /* 0x2980 */ - 99,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, /* 0x2990 */ - 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, /* 0x29a0 */ - 48, 48, 32, 99,111,112,121, 95,100,101,115,116,105,110, 97,116, /* 0x29b0 */ -105,111,110, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, /* 0x29c0 */ - 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, /* 0x29d0 */ - 48, 48, 48, 32,100,101, 99,111,109,112,114,101,115,115,111,114, /* 0x29e0 */ - 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x29f0 */ - 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a00 */ - 32, 99, 97,108,108,116,114,105, 99,107, 95, 99, 97,108,108,115, /* 0x2a10 */ - 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2a20 */ - 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a30 */ - 32,115,121,115, 95,101,110,116,114,121, 10, 10, 10, 82, 69, 76, /* 0x2a40 */ - 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2a50 */ - 70, 79, 82, 32, 91, 83, 89, 83, 77, 65, 73, 78, 49, 93, 58, 10, /* 0x2a60 */ - 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2a70 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2a80 */ - 32, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 51, 56, 54, /* 0x2a90 */ - 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,110,101,120, /* 0x2aa0 */ -116, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 51, 56, 54, /* 0x2ab0 */ - 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97,116,116, /* 0x2ac0 */ -114,105, 98,117,116,101, 10, 48, 48, 48, 48, 48, 48, 48, 54, 32, /* 0x2ad0 */ - 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2ae0 */ - 32, 32, 83, 89, 83, 77, 65, 73, 78, 49, 10, 48, 48, 48, 48, 48, /* 0x2af0 */ - 48, 48, 56, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, /* 0x2b00 */ - 32, 32, 32, 32, 32, 32,105,110,116,101,114,114,117,112,116, 10, /* 0x2b10 */ - 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x2b20 */ - 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 83, 89, 83, 77, 65, 73, /* 0x2b30 */ - 78, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x2b40 */ - 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2b50 */ - 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, /* 0x2b60 */ - 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2b70 */ - 32, 32, 99,111,112,121, 95,115,111,117,114, 99,101, 10, 48, 48, /* 0x2b80 */ - 48, 48, 48, 48, 48, 52, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, /* 0x2b90 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,112,121, 95,100,101, /* 0x2ba0 */ -115,116,105,110, 97,116,105,111,110, 10, 48, 48, 48, 48, 48, 48, /* 0x2bb0 */ - 49, 54, 32, 82, 95, 51, 56, 54, 95, 56, 32, 32, 32, 32, 32, 32, /* 0x2bc0 */ - 32, 32, 32, 32, 32, 83, 89, 83, 67, 85, 84, 80, 79, 10, 10, 10, /* 0x2bd0 */ - 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2be0 */ - 68, 83, 32, 70, 79, 82, 32, 91, 83, 89, 83, 77, 65, 73, 78, 51, /* 0x2bf0 */ - 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x2c00 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2c10 */ - 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, /* 0x2c20 */ - 51, 56, 54, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2c30 */ -100,101, 99,111,109,112,114,101,115,115,111,114, 10, 10, 10, 82, /* 0x2c40 */ - 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2c50 */ - 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 49, 54, 48, 93, /* 0x2c60 */ - 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2c70 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2c80 */ - 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, /* 0x2c90 */ - 56, 54, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x2ca0 */ - 82, 86, 68, 69, 67, 79, 50, 10, 48, 48, 48, 48, 48, 48, 48, 56, /* 0x2cb0 */ - 32, 82, 95, 51, 56, 54, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, /* 0x2cc0 */ - 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 10, 10, 82, 69, /* 0x2cd0 */ - 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x2ce0 */ - 32, 70, 79, 82, 32, 91, 78, 82, 86, 68, 68, 79, 78, 69, 93, 58, /* 0x2cf0 */ - 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2d00 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2d10 */ - 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, /* 0x2d20 */ - 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x2d30 */ - 86, 68, 69, 67, 79, 50, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2d40 */ - 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2d50 */ - 91, 78, 82, 86, 68, 82, 69, 84, 85, 93, 58, 10, 79, 70, 70, 83, /* 0x2d60 */ - 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2d70 */ - 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, /* 0x2d80 */ - 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, /* 0x2d90 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, /* 0x2da0 */ - 50, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2db0 */ - 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 68, /* 0x2dc0 */ - 69, 67, 79, 49, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2dd0 */ - 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2de0 */ - 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 49, /* 0x2df0 */ - 48, 32, 82, 95, 51, 56, 54, 95, 80, 67, 49, 54, 32, 32, 32, 32, /* 0x2e00 */ - 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 48, 48, 48, /* 0x2e10 */ - 48, 48, 48, 49, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, 49, 54, /* 0x2e20 */ - 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, /* 0x2e30 */ - 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, /* 0x2e40 */ - 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, /* 0x2e50 */ - 66, 49, 54, 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x2e60 */ - 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, /* 0x2e70 */ - 82, 86, 68, 69, 67, 79, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x2e80 */ - 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2e90 */ - 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, /* 0x2ea0 */ - 48, 48, 48, 55, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, /* 0x2eb0 */ - 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 50, 66, 49, 54, 48, 10, /* 0x2ec0 */ - 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x2ed0 */ - 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, /* 0x2ee0 */ - 49, 54, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x2ef0 */ - 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2f00 */ - 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, /* 0x2f10 */ - 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2f20 */ - 32, 32, 99, 97,108,108,116,114,105, 99,107, 95, 99, 97,108,108, /* 0x2f30 */ -115, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2f40 */ - 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, /* 0x2f50 */ - 84, 82, 73, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2f60 */ - 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2f70 */ - 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2f80 */ - 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, /* 0x2f90 */ - 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 49, 54, 10, 10, 10, 82, /* 0x2fa0 */ - 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2fb0 */ - 83, 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 73, 53, 93, /* 0x2fc0 */ - 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2fd0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2fe0 */ - 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, /* 0x2ff0 */ - 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, /* 0x3000 */ - 97,108,108,116,114,105, 99,107, 95, 99, 97,108,108,115, 10, 10, /* 0x3010 */ - 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x3020 */ - 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 84, 49, 54, 74, 69, 78, /* 0x3030 */ - 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x3040 */ - 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x3050 */ - 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, /* 0x3060 */ - 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3070 */ - 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 10, 10, 82, 69, 76, 79, /* 0x3080 */ - 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x3090 */ - 79, 82, 32, 91, 67, 84, 49, 54, 74, 85, 76, 50, 93, 58, 10, 79, /* 0x30a0 */ - 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x30b0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, /* 0x30c0 */ - 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, /* 0x30d0 */ - 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, /* 0x30e0 */ - 84, 82, 73, 54, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x30f0 */ - 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, /* 0x3100 */ - 65, 76, 76, 84, 82, 73, 54, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x3110 */ - 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3120 */ - 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, /* 0x3130 */ - 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, /* 0x3140 */ - 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 73, 53, 10, /* 0x3150 */ - 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x3160 */ - 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 83, 89, 83, 74, 85, 77, /* 0x3170 */ - 80, 49, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x3180 */ - 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3190 */ - 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, /* 0x31a0 */ - 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x31b0 */ - 32, 32,115,121,115, 95,101,110,116,114,121, 10, 10, 10 /* 0x31c0 */ + 0, 0, 0, 0, 4, 0,241,255, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x bf0 */ + 0, 0, 0, 0, 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x c00 */ + 0, 0, 0, 0, 4, 0,241,255, 52, 0, 0, 0, 0, 0, 0, 0, /* 0x c10 */ + 0, 0, 0, 0, 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x c20 */ + 0, 0, 0, 0, 4, 0,241,255, 76, 0, 0, 0, 0, 0, 0, 0, /* 0x c30 */ + 0, 0, 0, 0, 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x c40 */ + 0, 0, 0, 0, 4, 0,241,255,101, 0, 0, 0, 0, 0, 0, 0, /* 0x c50 */ + 0, 0, 0, 0, 4, 0,241,255,116, 0, 0, 0, 0, 0, 0, 0, /* 0x c60 */ + 0, 0, 0, 0, 4, 0,241,255, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x c70 */ + 0, 0, 0, 0, 4, 0,241,255, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c80 */ + 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c90 */ + 0, 0, 0, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ca0 */ + 0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cb0 */ + 0, 0, 0, 0, 3, 0, 4, 0,127, 0, 0, 0, 0, 0, 0, 0, /* 0x cc0 */ + 0, 0, 0, 0, 0, 0, 4, 0,133, 0, 0, 0, 10, 0, 0, 0, /* 0x cd0 */ + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ce0 */ + 0, 0, 0, 0, 3, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x cf0 */ + 0, 0, 0, 0, 3, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d00 */ + 0, 0, 0, 0, 3, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d10 */ + 0, 0, 0, 0, 3, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d20 */ + 0, 0, 0, 0, 3, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d30 */ + 0, 0, 0, 0, 3, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d40 */ + 0, 0, 0, 0, 3, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d50 */ + 0, 0, 0, 0, 3, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d60 */ + 0, 0, 0, 0, 3, 0, 16, 0,142, 0, 0, 0, 0, 0, 0, 0, /* 0x d70 */ + 0, 0, 0, 0, 0, 0, 16, 0,154, 0, 0, 0, 1, 0, 0, 0, /* 0x d80 */ + 0, 0, 0, 0, 0, 0, 16, 0,171, 0, 0, 0, 13, 0, 0, 0, /* 0x d90 */ + 0, 0, 0, 0, 0, 0, 26, 0,182, 0, 0, 0, 7, 0, 0, 0, /* 0x da0 */ + 0, 0, 0, 0, 0, 0, 16, 0,192, 0, 0, 0, 8, 0, 0, 0, /* 0x db0 */ + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x dc0 */ + 0, 0, 0, 0, 3, 0, 18, 0,206, 0, 0, 0, 22, 0, 0, 0, /* 0x dd0 */ + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x de0 */ + 0, 0, 0, 0, 3, 0, 20, 0,222, 0, 0, 0, 21, 0, 0, 0, /* 0x df0 */ + 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e00 */ + 0, 0, 0, 0, 3, 0, 22, 0,237, 0, 0, 0, 13, 0, 0, 0, /* 0x e10 */ + 0, 0, 0, 0, 0, 0, 22, 0,246, 0, 0, 0, 30, 0, 0, 0, /* 0x e20 */ + 0, 0, 0, 0, 0, 0, 22, 0, 5, 1, 0, 0, 23, 0, 0, 0, /* 0x e30 */ + 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e40 */ + 0, 0, 0, 0, 3, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e50 */ + 0, 0, 0, 0, 3, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e60 */ + 0, 0, 0, 0, 3, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e70 */ + 0, 0, 0, 0, 3, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x e80 */ + 0, 0, 0, 0, 3, 0, 29, 0, 15, 1, 0, 0, 4, 0, 0, 0, /* 0x e90 */ + 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ea0 */ + 0, 0, 0, 0, 3, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x eb0 */ + 0, 0, 0, 0, 3, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ec0 */ + 0, 0, 0, 0, 3, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ed0 */ + 0, 0, 0, 0, 3, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ee0 */ + 0, 0, 0, 0, 3, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ef0 */ + 0, 0, 0, 0, 3, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f00 */ + 0, 0, 0, 0, 3, 0, 38, 0, 24, 1, 0, 0, 4, 0, 0, 0, /* 0x f10 */ + 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f20 */ + 0, 0, 0, 0, 3, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f30 */ + 0, 0, 0, 0, 3, 0, 42, 0, 34, 1, 0, 0, 3, 0, 0, 0, /* 0x f40 */ + 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f50 */ + 0, 0, 0, 0, 3, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f60 */ + 0, 0, 0, 0, 3, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f70 */ + 0, 0, 0, 0, 3, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f80 */ + 0, 0, 0, 0, 3, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x f90 */ + 0, 0, 0, 0, 3, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x fa0 */ + 0, 0, 0, 0, 3, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x fb0 */ + 0, 0, 0, 0, 3, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x fc0 */ + 0, 0, 0, 0, 3, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x fd0 */ + 0, 0, 0, 0, 3, 0, 54, 0, 43, 1, 0, 0, 0, 0, 0, 0, /* 0x fe0 */ + 0, 0, 0, 0, 16, 0, 0, 0, 48, 1, 0, 0, 0, 0, 0, 0, /* 0x ff0 */ + 0, 0, 0, 0, 16, 0, 0, 0, 58, 1, 0, 0, 0, 0, 0, 0, /* 0x1000 */ + 0, 0, 0, 0, 16, 0, 0, 0, 68, 1, 0, 0, 0, 0, 0, 0, /* 0x1010 */ + 0, 0, 0, 0, 16, 0, 0, 0, 80, 1, 0, 0, 0, 0, 0, 0, /* 0x1020 */ + 0, 0, 0, 0, 16, 0, 0, 0, 97, 1, 0, 0, 0, 0, 0, 0, /* 0x1030 */ + 0, 0, 0, 0, 16, 0, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, /* 0x1040 */ + 0, 0, 0, 0, 16, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, /* 0x1050 */ + 0, 0, 0, 0, 16, 0, 0, 0, 0,115,114, 99, 47,105, 48, 56, /* 0x1060 */ + 54, 45,100,111,115, 49, 54, 46,115,121,115, 46, 97,115,109, 0, /* 0x1070 */ +115,114, 99, 47, 97,114, 99,104, 47,105, 48, 56, 54, 47,110,114, /* 0x1080 */ +118, 50, 98, 95,100, 49, 54, 46, 97,115,104, 0,115,114, 99, 47, /* 0x1090 */ +105,110, 99,108,117,100,101, 47,104,101, 97,100,101,114, 50, 46, /* 0x10a0 */ + 97,115,104, 0,115,114, 99, 47, 97,114, 99,104, 47,105, 48, 56, /* 0x10b0 */ + 54, 47,109, 97, 99,114,111,115, 46, 97,115,104, 0, 60, 99,111, /* 0x10c0 */ +109,109, 97,110,100, 32,108,105,110,101, 62, 0, 60, 98,117,105, /* 0x10d0 */ +108,116, 45,105,110, 62, 0,115,116, 97,114,116, 0,115,116,114, /* 0x10e0 */ + 97,116,101,103,121, 0,108,105,116,101,114, 97,108, 95,110, 50, /* 0x10f0 */ + 98, 0,100,101, 99,111,109,112, 95,115,116, 97,114,116, 95,110, /* 0x1100 */ + 50, 98, 0,103,101,116, 98,105,116, 95,110, 50, 98, 0,108,111, /* 0x1110 */ +111,112, 49, 95,110, 50, 98, 0,103,101,116, 98,105,116, 95, 99, /* 0x1120 */ +120, 95,110, 50, 98, 0,100,101, 99,111,109,112, 95,100,111,110, /* 0x1130 */ +101, 95,110, 50, 98, 0,100,101, 99,111,109,112, 95,114,101,116, /* 0x1140 */ + 95,110, 50, 98, 0, 97,120, 98,112, 95,110, 50, 98, 0, 99,111, /* 0x1150 */ +112,121, 95,109, 97,116, 99,104, 95,110, 50, 98, 0,108,111,111, /* 0x1160 */ +112, 50, 95,110, 50, 98, 0, 99,106,116, 49, 54, 95, 76, 49, 0, /* 0x1170 */ + 99,106,116, 49, 54, 95, 76, 49, 49, 0, 99,106,116, 49, 54, 95, /* 0x1180 */ + 76, 50, 0,110,101,120,116, 0, 97,116,116,114,105, 98,117,116, /* 0x1190 */ +101, 0,105,110,116,101,114,114,117,112,116, 0, 99,111,112,121, /* 0x11a0 */ + 95,115,111,117,114, 99,101, 0, 99,111,112,121, 95,100,101,115, /* 0x11b0 */ +116,105,110, 97,116,105,111,110, 0,100,101, 99,111,109,112,114, /* 0x11c0 */ +101,115,115,111,114, 0, 99, 97,108,108,116,114,105, 99,107, 95, /* 0x11d0 */ + 99, 97,108,108,115, 0,115,121,115, 95,101,110,116,114,121, 0, /* 0x11e0 */ + 0, 0, 0, 0, 1, 65, 0, 0, 4, 0, 0, 0, 20, 66, 0, 0, /* 0x11f0 */ + 6, 0, 0, 0, 20, 14, 0, 0, 8, 0, 0, 0, 20, 67, 0, 0, /* 0x1200 */ + 1, 0, 0, 0, 20, 68, 0, 0, 4, 0, 0, 0, 20, 69, 0, 0, /* 0x1210 */ + 22, 0, 0, 0, 22, 20, 0, 0, 1, 0, 0, 0, 21, 70, 0, 0, /* 0x1220 */ + 2, 0, 0, 0, 21, 41, 0, 0, 8, 0, 0, 0, 21, 41, 0, 0, /* 0x1230 */ + 1, 0, 0, 0, 23, 41, 0, 0, 1, 0, 0, 0, 23, 41, 0, 0, /* 0x1240 */ + 16, 0, 0, 0, 21, 41, 0, 0, 24, 0, 0, 0, 21, 41, 0, 0, /* 0x1250 */ + 1, 0, 0, 0, 23, 25, 0, 0, 7, 0, 0, 0, 23, 25, 0, 0, /* 0x1260 */ + 2, 0, 0, 0, 20, 71, 0, 0, 2, 0, 0, 0, 23, 43, 0, 0, /* 0x1270 */ + 2, 0, 0, 0, 20, 71, 0, 0, 1, 0, 0, 0, 23, 41, 0, 0, /* 0x1280 */ + 1, 0, 0, 0, 23, 59, 0, 0, 2, 0, 0, 0, 23, 51, 0, 0, /* 0x1290 */ + 1, 0, 0, 0, 20, 72, 0, 0, 10,116,109,112, 47,105, 48, 56, /* 0x12a0 */ + 54, 45,100,111,115, 49, 54, 46,115,121,115, 46, 98,105,110, 58, /* 0x12b0 */ + 32, 32, 32, 32, 32,102,105,108,101, 32,102,111,114,109, 97,116, /* 0x12c0 */ + 32,101,108,102, 51, 50, 45,105, 51, 56, 54, 10, 10, 83,101, 99, /* 0x12d0 */ +116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, /* 0x12e0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, /* 0x12f0 */ + 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, /* 0x1300 */ + 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, /* 0x1310 */ + 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, /* 0x1320 */ + 32, 46,116,101,120,116, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, /* 0x1330 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1340 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1350 */ + 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, /* 0x1360 */ + 84, 69, 78, 84, 83, 44, 32, 65, 76, 76, 79, 67, 44, 32, 76, 79, /* 0x1370 */ + 65, 68, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 44, 32, 67, 79, /* 0x1380 */ + 68, 69, 10, 32, 32, 49, 32, 46,100, 97,116, 97, 32, 32, 32, 32, /* 0x1390 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x13a0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x13b0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, /* 0x13c0 */ + 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 65, 76, 76, /* 0x13d0 */ + 79, 67, 44, 32, 76, 79, 65, 68, 44, 32, 68, 65, 84, 65, 10, 32, /* 0x13e0 */ + 32, 50, 32, 46, 98,115,115, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x13f0 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1400 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1410 */ + 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 65, /* 0x1420 */ + 76, 76, 79, 67, 10, 32, 32, 51, 32, 83, 89, 83, 77, 65, 73, 78, /* 0x1430 */ + 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 97, 32, /* 0x1440 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1450 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, /* 0x1460 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1470 */ + 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1480 */ + 32, 52, 32, 83, 89, 83, 73, 50, 56, 54, 49, 32, 32, 32, 32, 32, /* 0x1490 */ + 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, 48, 48, /* 0x14a0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x14b0 */ + 48, 48, 48, 48, 48, 51,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x14c0 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x14d0 */ + 89, 10, 32, 32, 53, 32, 83, 89, 83, 73, 48, 56, 54, 49, 32, 32, /* 0x14e0 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 55, 32, 32, 48, 48, /* 0x14f0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1500 */ + 32, 32, 48, 48, 48, 48, 48, 48, 51,102, 32, 32, 50, 42, 42, 48, /* 0x1510 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1520 */ + 79, 78, 76, 89, 10, 32, 32, 54, 32, 83, 89, 83, 77, 65, 73, 78, /* 0x1530 */ + 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 55, 32, /* 0x1540 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1550 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 54, 32, 32, 50, /* 0x1560 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1570 */ + 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1580 */ + 32, 55, 32, 83, 89, 83, 83, 66, 66, 66, 80, 32, 32, 32, 32, 32, /* 0x1590 */ + 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, /* 0x15a0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x15b0 */ + 48, 48, 48, 48, 48, 53,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x15c0 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x15d0 */ + 89, 10, 32, 32, 56, 32, 83, 89, 83, 67, 65, 76, 76, 84, 32, 32, /* 0x15e0 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, /* 0x15f0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1600 */ + 32, 32, 48, 48, 48, 48, 48, 48, 53,102, 32, 32, 50, 42, 42, 48, /* 0x1610 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1620 */ + 79, 78, 76, 89, 10, 32, 32, 57, 32, 83, 89, 83, 77, 65, 73, 78, /* 0x1630 */ + 51, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, /* 0x1640 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1650 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 54, 48, 32, 32, 50, /* 0x1660 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1670 */ + 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1680 */ + 49, 48, 32, 85, 80, 88, 49, 72, 69, 65, 68, 32, 32, 32, 32, 32, /* 0x1690 */ + 32, 48, 48, 48, 48, 48, 48, 49, 54, 32, 32, 48, 48, 48, 48, 48, /* 0x16a0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x16b0 */ + 48, 48, 48, 48, 48, 54, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x16c0 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x16d0 */ + 89, 10, 32, 49, 49, 32, 83, 89, 83, 67, 85, 84, 80, 79, 32, 32, /* 0x16e0 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x16f0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1700 */ + 32, 32, 48, 48, 48, 48, 48, 48, 55, 57, 32, 32, 50, 42, 42, 48, /* 0x1710 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1720 */ + 79, 78, 76, 89, 10, 32, 49, 50, 32, 78, 82, 86, 50, 66, 49, 54, /* 0x1730 */ + 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 97, 32, /* 0x1740 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1750 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 55, 57, 32, 32, 50, /* 0x1760 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1770 */ + 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1780 */ + 49, 51, 32, 78, 82, 86, 68, 68, 79, 78, 69, 32, 32, 32, 32, 32, /* 0x1790 */ + 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, /* 0x17a0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x17b0 */ + 48, 48, 48, 48, 48, 56, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x17c0 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x17d0 */ + 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 52, 32, 78, 82, 86, /* 0x17e0 */ + 68, 82, 69, 84, 85, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x17f0 */ + 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1800 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 56, /* 0x1810 */ + 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1820 */ + 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1830 */ + 76, 89, 10, 32, 49, 53, 32, 78, 82, 86, 68, 69, 67, 79, 49, 32, /* 0x1840 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49,101, 32, 32, 48, /* 0x1850 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1860 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 56, 55, 32, 32, 50, 42, 42, /* 0x1870 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1880 */ + 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 54, /* 0x1890 */ + 32, 78, 82, 86, 76, 69, 68, 48, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x18a0 */ + 48, 48, 48, 48, 48, 48, 49, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x18b0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x18c0 */ + 48, 48, 48, 97, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x18d0 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x18e0 */ + 32, 49, 55, 32, 78, 82, 86, 71, 84, 68, 48, 48, 32, 32, 32, 32, /* 0x18f0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 55, 32, 32, 48, 48, 48, 48, /* 0x1900 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1910 */ + 48, 48, 48, 48, 48, 48, 97, 54, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1920 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1930 */ + 76, 89, 10, 32, 49, 56, 32, 78, 82, 86, 68, 69, 67, 79, 50, 32, /* 0x1940 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 54, 32, 32, 48, /* 0x1950 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1960 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 97,100, 32, 32, 50, 42, 42, /* 0x1970 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1980 */ + 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 57, /* 0x1990 */ + 32, 78, 82, 86, 50, 66, 49, 54, 57, 32, 32, 32, 32, 32, 32, 48, /* 0x19a0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x19b0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x19c0 */ + 48, 48, 48, 99, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x19d0 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x19e0 */ + 32, 50, 48, 32, 67, 65, 76, 76, 84, 82, 49, 54, 32, 32, 32, 32, /* 0x19f0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 98, 32, 32, 48, 48, 48, 48, /* 0x1a00 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1a10 */ + 48, 48, 48, 48, 48, 48, 99, 51, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1a20 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x1a30 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 49, 32, 67, 84, /* 0x1a40 */ + 49, 54, 73, 50, 56, 54, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1a50 */ + 48, 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1a60 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1a70 */ + 99,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1a80 */ + 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 50, /* 0x1a90 */ + 32, 67, 84, 49, 54, 83, 85, 66, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x1aa0 */ + 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1ab0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1ac0 */ + 48, 48, 48,100, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1ad0 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1ae0 */ + 32, 50, 51, 32, 67, 84, 49, 54, 73, 48, 56, 54, 32, 32, 32, 32, /* 0x1af0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, 48, 48, /* 0x1b00 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1b10 */ + 48, 48, 48, 48, 48, 48,100, 51, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1b20 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1b30 */ + 76, 89, 10, 32, 50, 52, 32, 67, 65, 76, 76, 84, 82, 73, 50, 32, /* 0x1b40 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, /* 0x1b50 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1b60 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48,100, 98, 32, 32, 50, 42, 42, /* 0x1b70 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1b80 */ + 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 53, /* 0x1b90 */ + 32, 67, 84, 49, 54, 69, 56, 48, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x1ba0 */ + 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1bb0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1bc0 */ + 48, 48, 48,100,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1bd0 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1be0 */ + 32, 50, 54, 32, 67, 84, 49, 54, 69, 57, 48, 48, 32, 32, 32, 32, /* 0x1bf0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, /* 0x1c00 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1c10 */ + 48, 48, 48, 48, 48, 48,101, 48, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1c20 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1c30 */ + 76, 89, 10, 32, 50, 55, 32, 67, 65, 76, 76, 84, 82, 73, 53, 32, /* 0x1c40 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 54, 32, 32, 48, /* 0x1c50 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1c60 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48,101, 50, 32, 32, 50, 42, 42, /* 0x1c70 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1c80 */ + 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 50, 56, /* 0x1c90 */ + 32, 67, 84, 49, 54, 74, 69, 78, 68, 32, 32, 32, 32, 32, 32, 48, /* 0x1ca0 */ + 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1cb0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1cc0 */ + 48, 48, 48,101, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1cd0 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x1ce0 */ + 65, 68, 79, 78, 76, 89, 10, 32, 50, 57, 32, 67, 84, 49, 54, 74, /* 0x1cf0 */ + 85, 76, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1d00 */ + 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1d10 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,101, 97, 32, /* 0x1d20 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1d30 */ + 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1d40 */ + 10, 32, 51, 48, 32, 67, 84, 49, 54, 73, 50, 56, 55, 32, 32, 32, /* 0x1d50 */ + 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, 48, 48, /* 0x1d60 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1d70 */ + 32, 48, 48, 48, 48, 48, 48,101, 99, 32, 32, 50, 42, 42, 48, 32, /* 0x1d80 */ + 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x1d90 */ + 78, 76, 89, 10, 32, 51, 49, 32, 67, 84, 49, 54, 83, 85, 66, 49, /* 0x1da0 */ + 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, /* 0x1db0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1dc0 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,101,102, 32, 32, 50, 42, /* 0x1dd0 */ + 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1de0 */ + 65, 68, 79, 78, 76, 89, 10, 32, 51, 50, 32, 67, 84, 49, 54, 73, /* 0x1df0 */ + 48, 56, 55, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1e00 */ + 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1e10 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,102, 49, 32, /* 0x1e20 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1e30 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 51, 32, 67, 65, /* 0x1e40 */ + 76, 76, 84, 82, 73, 54, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1e50 */ + 48, 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1e60 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1e70 */ +102, 57, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1e80 */ + 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x1e90 */ + 78, 76, 89, 10, 32, 51, 52, 32, 83, 89, 83, 77, 65, 73, 78, 53, /* 0x1ea0 */ + 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 49, 32, 32, /* 0x1eb0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1ec0 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,102, 99, 32, 32, 50, 42, /* 0x1ed0 */ + 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1ee0 */ + 65, 68, 79, 78, 76, 89, 10, 32, 51, 53, 32, 83, 89, 83, 73, 50, /* 0x1ef0 */ + 56, 54, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1f00 */ + 49, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1f10 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,102,100, 32, /* 0x1f20 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1f30 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 54, 32, 83, 89, /* 0x1f40 */ + 83, 73, 48, 56, 54, 50, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1f50 */ + 48, 48, 48, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1f60 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1f70 */ +102,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1f80 */ + 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 51, 55, /* 0x1f90 */ + 32, 83, 89, 83, 74, 85, 77, 80, 49, 32, 32, 32, 32, 32, 32, 48, /* 0x1fa0 */ + 48, 48, 48, 48, 48, 48, 51, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1fb0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1fc0 */ + 48, 48, 49, 48, 53, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1fd0 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x1fe0 */ + 65, 68, 79, 78, 76, 89, 10, 32, 51, 56, 32, 46,110,111,116,101, /* 0x1ff0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, /* 0x2000 */ + 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2010 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 48, 56, 32, /* 0x2020 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x2030 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, /* 0x2040 */ + 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2050 */ + 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, 9, 48, /* 0x2060 */ + 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47,105, 48, 56, 54, /* 0x2070 */ + 45,100,111,115, 49, 54, 46,115,121,115, 46, 97,115,109, 10, 48, /* 0x2080 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, /* 0x2090 */ + 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115, /* 0x20a0 */ +114, 99, 47, 97,114, 99,104, 47,105, 48, 56, 54, 47,110,114,118, /* 0x20b0 */ + 50, 98, 95,100, 49, 54, 46, 97,115,104, 10, 48, 48, 48, 48, 48, /* 0x20c0 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, /* 0x20d0 */ + 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47,105, /* 0x20e0 */ + 48, 56, 54, 45,100,111,115, 49, 54, 46,115,121,115, 46, 97,115, /* 0x20f0 */ +109, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2100 */ +100,102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2110 */ + 48, 32,115,114, 99, 47,105,110, 99,108,117,100,101, 47,104,101, /* 0x2120 */ + 97,100,101,114, 50, 46, 97,115,104, 10, 48, 48, 48, 48, 48, 48, /* 0x2130 */ + 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, /* 0x2140 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47,105, 48, /* 0x2150 */ + 56, 54, 45,100,111,115, 49, 54, 46,115,121,115, 46, 97,115,109, /* 0x2160 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2170 */ +102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2180 */ + 32,115,114, 99, 47, 97,114, 99,104, 47,105, 48, 56, 54, 47,109, /* 0x2190 */ + 97, 99,114,111,115, 46, 97,115,104, 10, 48, 48, 48, 48, 48, 48, /* 0x21a0 */ + 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, 42, /* 0x21b0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47,105, 48, /* 0x21c0 */ + 56, 54, 45,100,111,115, 49, 54, 46,115,121,115, 46, 97,115,109, /* 0x21d0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x21e0 */ +102, 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x21f0 */ + 32, 60, 99,111,109,109, 97,110,100, 32,108,105,110,101, 62, 10, /* 0x2200 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, /* 0x2210 */ + 32, 42, 65, 66, 83, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2220 */ + 60, 98,117,105,108,116, 45,105,110, 62, 10, 48, 48, 48, 48, 48, /* 0x2230 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100,102, 32, 42, 65, 66, 83, /* 0x2240 */ + 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,114, 99, 47,105, /* 0x2250 */ + 48, 56, 54, 45,100,111,115, 49, 54, 46,115,121,115, 46, 97,115, /* 0x2260 */ +109, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2270 */ +100, 32, 32, 46,116,101,120,116, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2280 */ + 48, 32, 46,116,101,120,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2290 */ + 32,108, 32, 32, 32, 32,100, 32, 32, 46,100, 97,116, 97, 9, 48, /* 0x22a0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 46,100, 97,116, 97, 10, 48, 48, /* 0x22b0 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 46, /* 0x22c0 */ + 98,115,115, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 46, 98,115, /* 0x22d0 */ +115, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x22e0 */ +100, 32, 32, 83, 89, 83, 77, 65, 73, 78, 49, 9, 48, 48, 48, 48, /* 0x22f0 */ + 48, 48, 48, 48, 32, 83, 89, 83, 77, 65, 73, 78, 49, 10, 48, 48, /* 0x2300 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, 83, /* 0x2310 */ + 89, 83, 77, 65, 73, 78, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2320 */ + 32,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 97, 32, /* 0x2330 */ +108, 32, 32, 32, 32, 32, 32, 32, 83, 89, 83, 77, 65, 73, 78, 49, /* 0x2340 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,115,116,114, 97,116,101, /* 0x2350 */ +103,121, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2360 */ + 32,100, 32, 32, 83, 89, 83, 73, 50, 56, 54, 49, 9, 48, 48, 48, /* 0x2370 */ + 48, 48, 48, 48, 48, 32, 83, 89, 83, 73, 50, 56, 54, 49, 10, 48, /* 0x2380 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2390 */ + 83, 89, 83, 73, 48, 56, 54, 49, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x23a0 */ + 48, 32, 83, 89, 83, 73, 48, 56, 54, 49, 10, 48, 48, 48, 48, 48, /* 0x23b0 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 77, /* 0x23c0 */ + 65, 73, 78, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, 89, /* 0x23d0 */ + 83, 77, 65, 73, 78, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x23e0 */ +108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 67, 85, 84, 80, 79, /* 0x23f0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, 89, 83, 67, 85, 84, /* 0x2400 */ + 80, 79, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2410 */ + 32,100, 32, 32, 83, 89, 83, 83, 66, 66, 66, 80, 9, 48, 48, 48, /* 0x2420 */ + 48, 48, 48, 48, 48, 32, 83, 89, 83, 83, 66, 66, 66, 80, 10, 48, /* 0x2430 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2440 */ + 83, 89, 83, 67, 65, 76, 76, 84, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2450 */ + 48, 32, 83, 89, 83, 67, 65, 76, 76, 84, 10, 48, 48, 48, 48, 48, /* 0x2460 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 77, /* 0x2470 */ + 65, 73, 78, 51, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, 89, /* 0x2480 */ + 83, 77, 65, 73, 78, 51, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2490 */ +108, 32, 32, 32, 32,100, 32, 32, 85, 80, 88, 49, 72, 69, 65, 68, /* 0x24a0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 85, 80, 88, 49, 72, 69, /* 0x24b0 */ + 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x24c0 */ + 32,100, 32, 32, 78, 82, 86, 50, 66, 49, 54, 48, 9, 48, 48, 48, /* 0x24d0 */ + 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 49, 54, 48, 10, 48, /* 0x24e0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, 32, 32, 32, /* 0x24f0 */ + 78, 82, 86, 50, 66, 49, 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2500 */ + 48, 32,108,105,116,101,114, 97,108, 95,110, 50, 98, 10, 48, 48, /* 0x2510 */ + 48, 48, 48, 48, 48, 49, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x2520 */ + 82, 86, 50, 66, 49, 54, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2530 */ + 32,100,101, 99,111,109,112, 95,115,116, 97,114,116, 95,110, 50, /* 0x2540 */ + 98, 10, 48, 48, 48, 48, 48, 48, 48,100, 32,108, 32, 32, 32, 32, /* 0x2550 */ + 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, 48, /* 0x2560 */ + 48, 48, 48, 48, 32,103,101,116, 98,105,116, 95,110, 50, 98, 10, /* 0x2570 */ + 48, 48, 48, 48, 48, 48, 48, 55, 32,108, 32, 32, 32, 32, 32, 32, /* 0x2580 */ + 32, 78, 82, 86, 50, 66, 49, 54, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x2590 */ + 48, 48, 32,108,111,111,112, 49, 95,110, 50, 98, 10, 48, 48, 48, /* 0x25a0 */ + 48, 48, 48, 48, 56, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x25b0 */ + 86, 68, 69, 67, 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x25c0 */ +103,101,116, 98,105,116, 95, 99,120, 95,110, 50, 98, 10, 48, 48, /* 0x25d0 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, /* 0x25e0 */ + 82, 86, 68, 68, 79, 78, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x25f0 */ + 32, 78, 82, 86, 68, 68, 79, 78, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x2600 */ + 49, 54, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, /* 0x2610 */ + 67, 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,100,101, 99, /* 0x2620 */ +111,109,112, 95,100,111,110,101, 95,110, 50, 98, 10, 48, 48, 48, /* 0x2630 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x2640 */ + 86, 68, 82, 69, 84, 85, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2650 */ + 78, 82, 86, 68, 82, 69, 84, 85, 10, 48, 48, 48, 48, 48, 48, 49, /* 0x2660 */ + 53, 32,108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, /* 0x2670 */ + 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,100,101, 99,111, /* 0x2680 */ +109,112, 95,114,101,116, 95,110, 50, 98, 10, 48, 48, 48, 48, 48, /* 0x2690 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 68, /* 0x26a0 */ + 69, 67, 79, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, /* 0x26b0 */ + 86, 68, 69, 67, 79, 49, 10, 48, 48, 48, 48, 48, 48, 48,100, 32, /* 0x26c0 */ +108, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 49, /* 0x26d0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 97,120, 98,112, 95,110, /* 0x26e0 */ + 50, 98, 10, 48, 48, 48, 48, 48, 48, 49,101, 32,108, 32, 32, 32, /* 0x26f0 */ + 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 49, 9, 48, 48, 48, /* 0x2700 */ + 48, 48, 48, 48, 48, 32, 99,111,112,121, 95,109, 97,116, 99,104, /* 0x2710 */ + 95,110, 50, 98, 10, 48, 48, 48, 48, 48, 48, 49, 55, 32,108, 32, /* 0x2720 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 49, 9, 48, /* 0x2730 */ + 48, 48, 48, 48, 48, 48, 48, 32,108,111,111,112, 50, 95,110, 50, /* 0x2740 */ + 98, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2750 */ +100, 32, 32, 78, 82, 86, 76, 69, 68, 48, 48, 9, 48, 48, 48, 48, /* 0x2760 */ + 48, 48, 48, 48, 32, 78, 82, 86, 76, 69, 68, 48, 48, 10, 48, 48, /* 0x2770 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, /* 0x2780 */ + 82, 86, 71, 84, 68, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2790 */ + 32, 78, 82, 86, 71, 84, 68, 48, 48, 10, 48, 48, 48, 48, 48, 48, /* 0x27a0 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 68, 69, /* 0x27b0 */ + 67, 79, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, /* 0x27c0 */ + 68, 69, 67, 79, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x27d0 */ + 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 49, 54, 57, 9, /* 0x27e0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 49, 54, /* 0x27f0 */ + 57, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2800 */ +100, 32, 32, 67, 65, 76, 76, 84, 82, 49, 54, 9, 48, 48, 48, 48, /* 0x2810 */ + 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 49, 54, 10, 48, 48, /* 0x2820 */ + 48, 48, 48, 48, 48, 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 67, /* 0x2830 */ + 65, 76, 76, 84, 82, 49, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2840 */ + 32, 99,106,116, 49, 54, 95, 76, 49, 10, 48, 48, 48, 48, 48, 48, /* 0x2850 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 73, /* 0x2860 */ + 50, 56, 54, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, /* 0x2870 */ + 54, 73, 50, 56, 54, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x2880 */ + 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 83, 85, 66, 48, 9, /* 0x2890 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 83, 85, 66, /* 0x28a0 */ + 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x28b0 */ +100, 32, 32, 67, 84, 49, 54, 73, 48, 56, 54, 9, 48, 48, 48, 48, /* 0x28c0 */ + 48, 48, 48, 48, 32, 67, 84, 49, 54, 73, 48, 56, 54, 10, 48, 48, /* 0x28d0 */ + 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, /* 0x28e0 */ + 65, 76, 76, 84, 82, 73, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x28f0 */ + 32, 67, 65, 76, 76, 84, 82, 73, 50, 10, 48, 48, 48, 48, 48, 48, /* 0x2900 */ + 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 69, /* 0x2910 */ + 56, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, /* 0x2920 */ + 54, 69, 56, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x2930 */ + 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 69, 57, 48, 48, 9, /* 0x2940 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 69, 57, 48, /* 0x2950 */ + 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x2960 */ +100, 32, 32, 67, 65, 76, 76, 84, 82, 73, 53, 9, 48, 48, 48, 48, /* 0x2970 */ + 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 73, 53, 10, 48, 48, /* 0x2980 */ + 48, 48, 48, 48, 48, 52, 32,108, 32, 32, 32, 32, 32, 32, 32, 67, /* 0x2990 */ + 65, 76, 76, 84, 82, 73, 53, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x29a0 */ + 32, 99,106,116, 49, 54, 95, 76, 49, 49, 10, 48, 48, 48, 48, 48, /* 0x29b0 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, /* 0x29c0 */ + 74, 69, 78, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, /* 0x29d0 */ + 49, 54, 74, 69, 78, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x29e0 */ +108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 74, 85, 76, 50, /* 0x29f0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 74, 85, /* 0x2a00 */ + 76, 50, 10, 48, 48, 48, 48, 48, 48, 48, 51, 32,108, 32, 32, 32, /* 0x2a10 */ + 32, 32, 32, 32, 67, 65, 76, 76, 84, 82, 73, 54, 9, 48, 48, 48, /* 0x2a20 */ + 48, 48, 48, 48, 48, 32, 99,106,116, 49, 54, 95, 76, 50, 10, 48, /* 0x2a30 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2a40 */ + 67, 84, 49, 54, 73, 50, 56, 55, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2a50 */ + 48, 32, 67, 84, 49, 54, 73, 50, 56, 55, 10, 48, 48, 48, 48, 48, /* 0x2a60 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, /* 0x2a70 */ + 83, 85, 66, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, /* 0x2a80 */ + 49, 54, 83, 85, 66, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2a90 */ +108, 32, 32, 32, 32,100, 32, 32, 67, 84, 49, 54, 73, 48, 56, 55, /* 0x2aa0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 84, 49, 54, 73, 48, /* 0x2ab0 */ + 56, 55, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2ac0 */ + 32,100, 32, 32, 67, 65, 76, 76, 84, 82, 73, 54, 9, 48, 48, 48, /* 0x2ad0 */ + 48, 48, 48, 48, 48, 32, 67, 65, 76, 76, 84, 82, 73, 54, 10, 48, /* 0x2ae0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2af0 */ + 83, 89, 83, 77, 65, 73, 78, 53, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2b00 */ + 48, 32, 83, 89, 83, 77, 65, 73, 78, 53, 10, 48, 48, 48, 48, 48, /* 0x2b10 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 73, /* 0x2b20 */ + 50, 56, 54, 50, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, 89, /* 0x2b30 */ + 83, 73, 50, 56, 54, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2b40 */ +108, 32, 32, 32, 32,100, 32, 32, 83, 89, 83, 73, 48, 56, 54, 50, /* 0x2b50 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 83, 89, 83, 73, 48, 56, /* 0x2b60 */ + 54, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2b70 */ + 32,100, 32, 32, 83, 89, 83, 74, 85, 77, 80, 49, 9, 48, 48, 48, /* 0x2b80 */ + 48, 48, 48, 48, 48, 32, 83, 89, 83, 74, 85, 77, 80, 49, 10, 48, /* 0x2b90 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2ba0 */ + 46,110,111,116,101, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 46, /* 0x2bb0 */ +110,111,116,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x2bc0 */ + 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x2bd0 */ + 48, 48, 48, 48, 32,110,101,120,116, 10, 48, 48, 48, 48, 48, 48, /* 0x2be0 */ + 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x2bf0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 97,116,116,114,105, 98, /* 0x2c00 */ +117,116,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, /* 0x2c10 */ + 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, /* 0x2c20 */ + 48, 48, 48, 32,105,110,116,101,114,114,117,112,116, 10, 48, 48, /* 0x2c30 */ + 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x2c40 */ + 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99,111, /* 0x2c50 */ +112,121, 95,115,111,117,114, 99,101, 10, 48, 48, 48, 48, 48, 48, /* 0x2c60 */ + 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x2c70 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 99,111,112,121, 95,100, /* 0x2c80 */ +101,115,116,105,110, 97,116,105,111,110, 10, 48, 48, 48, 48, 48, /* 0x2c90 */ + 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x2ca0 */ + 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,100,101, 99,111,109, /* 0x2cb0 */ +112,114,101,115,115,111,114, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2cc0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, /* 0x2cd0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 99, 97,108,108,116,114,105, 99, /* 0x2ce0 */ +107, 95, 99, 97,108,108,115, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2cf0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, /* 0x2d00 */ + 48, 48, 48, 48, 48, 48, 48, 32,115,121,115, 95,101,110,116,114, /* 0x2d10 */ +121, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2d20 */ + 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 83, 89, 83, 77, /* 0x2d30 */ + 65, 73, 78, 49, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2d40 */ + 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2d50 */ + 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2d60 */ + 48, 32, 82, 95, 51, 56, 54, 95, 51, 50, 32, 32, 32, 32, 32, 32, /* 0x2d70 */ + 32, 32, 32, 32,110,101,120,116, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2d80 */ + 52, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, /* 0x2d90 */ + 32, 32, 32, 32, 97,116,116,114,105, 98,117,116,101, 10, 48, 48, /* 0x2da0 */ + 48, 48, 48, 48, 48, 54, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, /* 0x2db0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 83, 89, 83, 77, 65, 73, 78, /* 0x2dc0 */ + 49, 10, 48, 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 51, 56, 54, /* 0x2dd0 */ + 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,110,116, /* 0x2de0 */ +101,114,114,117,112,116, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2df0 */ + 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2e00 */ + 91, 83, 89, 83, 77, 65, 73, 78, 50, 93, 58, 10, 79, 70, 70, 83, /* 0x2e10 */ + 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2e20 */ + 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, /* 0x2e30 */ + 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, /* 0x2e40 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,112,121, 95,115,111, /* 0x2e50 */ +117,114, 99,101, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, /* 0x2e60 */ + 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2e70 */ + 99,111,112,121, 95,100,101,115,116,105,110, 97,116,105,111,110, /* 0x2e80 */ + 10, 48, 48, 48, 48, 48, 48, 49, 54, 32, 82, 95, 51, 56, 54, 95, /* 0x2e90 */ + 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83, 89, 83, 67, /* 0x2ea0 */ + 85, 84, 80, 79, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x2eb0 */ + 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 83, /* 0x2ec0 */ + 89, 83, 77, 65, 73, 78, 51, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x2ed0 */ + 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2ee0 */ + 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, /* 0x2ef0 */ + 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 49, 54, 32, /* 0x2f00 */ + 32, 32, 32, 32, 32, 32, 32,100,101, 99,111,109,112,114,101,115, /* 0x2f10 */ +115,111,114, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2f20 */ + 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x2f30 */ + 86, 50, 66, 49, 54, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x2f40 */ + 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2f50 */ + 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, /* 0x2f60 */ + 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, 67, 49, 54, 32, 32, /* 0x2f70 */ + 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 48, /* 0x2f80 */ + 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 51, 56, 54, 95, 80, 67, /* 0x2f90 */ + 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, /* 0x2fa0 */ + 79, 50, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x2fb0 */ + 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, /* 0x2fc0 */ + 68, 68, 79, 78, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x2fd0 */ + 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2fe0 */ + 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, /* 0x2ff0 */ + 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, /* 0x3000 */ + 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, 10, 10, 10, /* 0x3010 */ + 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x3020 */ + 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 68, 82, 69, 84, 85, /* 0x3030 */ + 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x3040 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x3050 */ + 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, /* 0x3060 */ + 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3070 */ + 78, 82, 86, 68, 69, 67, 79, 50, 10, 10, 10, 82, 69, 76, 79, 67, /* 0x3080 */ + 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x3090 */ + 82, 32, 91, 78, 82, 86, 68, 69, 67, 79, 49, 93, 58, 10, 79, 70, /* 0x30a0 */ + 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x30b0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, /* 0x30c0 */ + 48, 48, 48, 48, 48, 48, 49, 48, 32, 82, 95, 51, 56, 54, 95, 80, /* 0x30d0 */ + 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, /* 0x30e0 */ + 67, 79, 50, 10, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, 51, /* 0x30f0 */ + 56, 54, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x3100 */ + 82, 86, 68, 69, 67, 79, 50, 10, 48, 48, 48, 48, 48, 48, 48, 49, /* 0x3110 */ + 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, /* 0x3120 */ + 32, 32, 32, 78, 82, 86, 50, 66, 49, 54, 48, 10, 10, 10, 82, 69, /* 0x3130 */ + 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x3140 */ + 32, 70, 79, 82, 32, 91, 78, 82, 86, 68, 69, 67, 79, 50, 93, 58, /* 0x3150 */ + 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x3160 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x3170 */ + 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 55, 32, 82, 95, 51, 56, /* 0x3180 */ + 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x3190 */ + 86, 50, 66, 49, 54, 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x31a0 */ + 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x31b0 */ + 91, 67, 65, 76, 76, 84, 82, 49, 54, 93, 58, 10, 79, 70, 70, 83, /* 0x31c0 */ + 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x31d0 */ + 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, /* 0x31e0 */ + 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, /* 0x31f0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 97,108,108,116,114,105, /* 0x3200 */ + 99,107, 95, 99, 97,108,108,115, 10, 10, 10, 82, 69, 76, 79, 67, /* 0x3210 */ + 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x3220 */ + 82, 32, 91, 67, 65, 76, 76, 84, 82, 73, 50, 93, 58, 10, 79, 70, /* 0x3230 */ + 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x3240 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, /* 0x3250 */ + 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 80, /* 0x3260 */ + 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, 76, 76, 84, /* 0x3270 */ + 82, 49, 54, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x3280 */ + 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 65, /* 0x3290 */ + 76, 76, 84, 82, 73, 53, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x32a0 */ + 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x32b0 */ + 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, /* 0x32c0 */ + 48, 48, 50, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, 32, 32, 32, /* 0x32d0 */ + 32, 32, 32, 32, 32, 32, 99, 97,108,108,116,114,105, 99,107, 95, /* 0x32e0 */ + 99, 97,108,108,115, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x32f0 */ + 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x3300 */ + 67, 84, 49, 54, 74, 69, 78, 68, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x3310 */ + 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3320 */ + 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, /* 0x3330 */ + 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, /* 0x3340 */ + 32, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 68, 69, 67, 79, 50, /* 0x3350 */ + 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x3360 */ + 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 67, 84, 49, 54, 74, /* 0x3370 */ + 85, 76, 50, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x3380 */ + 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x3390 */ + 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 49, /* 0x33a0 */ + 32, 82, 95, 51, 56, 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, /* 0x33b0 */ + 32, 32, 32, 67, 65, 76, 76, 84, 82, 73, 54, 10, 10, 10, 82, 69, /* 0x33c0 */ + 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x33d0 */ + 32, 70, 79, 82, 32, 91, 67, 65, 76, 76, 84, 82, 73, 54, 93, 58, /* 0x33e0 */ + 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x33f0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x3400 */ + 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 50, 32, 82, 95, 51, 56, /* 0x3410 */ + 54, 95, 80, 67, 56, 32, 32, 32, 32, 32, 32, 32, 32, 32, 67, 65, /* 0x3420 */ + 76, 76, 84, 82, 73, 53, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x3430 */ + 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x3440 */ + 91, 83, 89, 83, 74, 85, 77, 80, 49, 93, 58, 10, 79, 70, 70, 83, /* 0x3450 */ + 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x3460 */ + 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, /* 0x3470 */ + 48, 48, 48, 48, 48, 49, 32, 82, 95, 51, 56, 54, 95, 49, 54, 32, /* 0x3480 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32,115,121,115, 95,101,110,116, /* 0x3490 */ +114,121, 10, 10, 10 /* 0x34a0 */ }; diff --git a/src/stub/i386-linux.elf-fold.h b/src/stub/i386-linux.elf-fold.h index 9abdaec2..7d6a1956 100644 --- a/src/stub/i386-linux.elf-fold.h +++ b/src/stub/i386-linux.elf-fold.h @@ -28,8 +28,8 @@ #define LINUX_I386ELF_FOLD_SIZE 1623 -#define LINUX_I386ELF_FOLD_ADLER32 0xaec8bf31 -#define LINUX_I386ELF_FOLD_CRC32 0x20b6d044 +#define LINUX_I386ELF_FOLD_ADLER32 0x7624bccf +#define LINUX_I386ELF_FOLD_CRC32 0x41216340 unsigned char linux_i386elf_fold[1623] = { 127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */ @@ -37,8 +37,8 @@ unsigned char linux_i386elf_fold[1623] = { 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0, /* 0x 30 */ 0, 16,192, 0, 87, 6, 0, 0, 88, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */ - 0, 16, 0, 0, 1, 0, 0, 0, 87, 6, 0, 0, 88, 22,192, 0, /* 0x 50 */ - 88, 22,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */ + 0, 16, 0, 0, 1, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, /* 0x 50 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 41,201,186,120, 2, 0, 0,137,230,137,231,232,121, 0, 0, 0, /* 0x 80 */ 137,230,209,234, 25,192, 41,193,141, 36,196,133,210,117,243,137, /* 0x 90 */ diff --git a/src/stub/i386-linux.elf.interp-fold.h b/src/stub/i386-linux.elf.interp-fold.h index 0f65a2e1..35c7f610 100644 --- a/src/stub/i386-linux.elf.interp-fold.h +++ b/src/stub/i386-linux.elf.interp-fold.h @@ -28,8 +28,8 @@ #define LINUX_I386PTI_FOLD_SIZE 1531 -#define LINUX_I386PTI_FOLD_ADLER32 0xc7639b18 -#define LINUX_I386PTI_FOLD_CRC32 0x45f45f94 +#define LINUX_I386PTI_FOLD_ADLER32 0x54fe990e +#define LINUX_I386PTI_FOLD_CRC32 0xa290f522 unsigned char linux_i386pti_fold[1531] = { 127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */ @@ -37,8 +37,8 @@ unsigned char linux_i386pti_fold[1531] = { 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x 30 */ 0, 0, 1, 0,251, 5, 0, 0,252, 5, 0, 0, 5, 0, 0, 0, /* 0x 40 */ - 0, 16, 0, 0, 1, 0, 0, 0,251, 5, 0, 0,252, 5, 1, 0, /* 0x 50 */ -252, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */ + 0, 16, 0, 0, 1, 0, 0, 0,251, 5, 0, 0, 0, 0, 0, 0, /* 0x 50 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 93, 89, 88,141,124,132, 4, 80, 41,192,175,117,253,175,137,254, /* 0x 80 */ 139, 6,131,248, 3,116, 8,131,198, 8,131,248, 0,117,241,139, /* 0x 90 */ diff --git a/src/stub/powerpc-linux.elf-fold.h b/src/stub/powerpc-linux.elf-fold.h index 3e4424ca..42d9feb8 100644 --- a/src/stub/powerpc-linux.elf-fold.h +++ b/src/stub/powerpc-linux.elf-fold.h @@ -28,8 +28,8 @@ #define LINUX_ELFPPC32_FOLD_SIZE 1936 -#define LINUX_ELFPPC32_FOLD_ADLER32 0xa51c716b -#define LINUX_ELFPPC32_FOLD_CRC32 0xaa049b2f +#define LINUX_ELFPPC32_FOLD_ADLER32 0x1a2f7017 +#define LINUX_ELFPPC32_FOLD_CRC32 0xf69d4404 unsigned char linux_elfppc32_fold[1936] = { 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ @@ -37,8 +37,8 @@ unsigned char linux_elfppc32_fold[1936] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x 30 */ 0, 16, 0, 0, 0, 0, 7,144, 0, 0, 7,144, 0, 0, 0, 5, /* 0x 40 */ - 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,144, 0, 16, 7,144, /* 0x 50 */ - 0, 16, 7,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, /* 0x 60 */ + 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,144, 0, 0, 0, 0, /* 0x 50 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 80 */ 77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8, /* 0x 90 */ diff --git a/src/stub/src/arch/i386/Makefile.extra b/src/stub/src/arch/i386/Makefile.extra index 33722b0f..eaab8ac2 100644 --- a/src/stub/src/arch/i386/Makefile.extra +++ b/src/stub/src/arch/i386/Makefile.extra @@ -16,8 +16,8 @@ include $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))../../../Makefi # // i386-lzma # ************************************************************************/ -lzma_d_cf.ash : tc_list = i386-lzma i386-linux.elf i386 default -lzma_d_cs.ash : tc_list = i386-lzma i386-linux.elf i386 default +lzma_d_cf.ash : tc_list = i386-lzma i386-linux.elf arch-i386 default +lzma_d_cs.ash : tc_list = i386-lzma i386-linux.elf arch-i386 default tc.i386-lzma.gcc = $(tc.i386-linux.elf.gcc) tc.i386-lzma.gcc += -ffunction-sections From c360806f47ef7b188ebc0d95878da32435e06d71 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 04:16:58 +0200 Subject: [PATCH 04/14] Small Makefile updates. --- src/stub/Makefile | 11 +++++--- src/stub/src/arch/amd64/Makefile.extra | 29 ++++++++++++--------- src/stub/src/arch/amd64/lzma_d_c.c | 2 +- src/stub/src/arch/arm/v4a/Makefile.extra | 27 +++++++++++-------- src/stub/src/arch/arm/v4a/lzma_d_c.c | 2 +- src/stub/src/arch/arm/v4t/Makefile.extra | 27 +++++++++++-------- src/stub/src/arch/arm/v4t/lzma_d_c.c | 2 +- src/stub/src/arch/i386/Makefile.extra | 27 +++++++++++-------- src/stub/src/arch/i386/lzma_d_c.c | 2 +- src/stub/src/arch/powerpc/32/Makefile.extra | 27 +++++++++++-------- src/stub/src/arch/powerpc/32/lzma_d_c.c | 2 +- 11 files changed, 93 insertions(+), 65 deletions(-) diff --git a/src/stub/Makefile b/src/stub/Makefile index 145f2d0c..caa05b83 100644 --- a/src/stub/Makefile +++ b/src/stub/Makefile @@ -11,6 +11,7 @@ MAKEFLAGS += -rR .SUFFIXES: .SECONDEXPANSION: export SHELL = /bin/sh +export LC_ALL = C ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.79 3.79.1 3.80),) $(error GNU make 3.81 or better is required) @@ -77,20 +78,20 @@ endif ifndef default.targets ifeq ($(wildcard .all-stamp),) default.targets = -default: $(default.targets) +default: $$(default.targets) @echo "UPX info: type 'make all' if you have all the required build tools." else default.targets = all -default: $(default.targets) +default: $$(default.targets) endif endif all.targets ?= tmp/.tmp-stamp .all-stamp -all: $(all.targets) +all: $$(all.targets) tmp/.tmp-stamp: @mkdir -p $(dir $@) @echo "timestamp" > $@ -.all-stamp: $(STUBS) +.all-stamp: $$(STUBS) @echo "timestamp" > $@ ifeq ($(wildcard .all-stamp),) @@ -613,9 +614,11 @@ tmp/powerpc-darwin.macho-main.o : $(srcdir)/src/$$T.c # // dependencies # ************************************************************************/ +ifneq ($(STUBS),) # FIXME: we want a dependency-only-prerequisite here ##$(STUBS): | tmp/.tmp-stamp ##$(STUBS): $(MAKEFILE_LIST) +endif -include tmp/*.d diff --git a/src/stub/src/arch/amd64/Makefile.extra b/src/stub/src/arch/amd64/Makefile.extra index 2556cffe..1d51d22c 100644 --- a/src/stub/src/arch/amd64/Makefile.extra +++ b/src/stub/src/arch/amd64/Makefile.extra @@ -1,28 +1,36 @@ MAKEFLAGS += -rR .SUFFIXES: .SECONDEXPANSION: -export SHELL = /bin/sh -ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) - -STUBS += lzma_d_cf.S lzma_d_cs.S +ifndef top_srcdir +__dir_list = . .. ../.. ../../.. ../../../.. ../../../../.. +__dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../.. +__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) +top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) +endif default.targets = all -all.targets = tmp/.tmp-stamp $(STUBS) -include $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))../../../Makefile +STUBS = NO_STUBS +include $(top_srcdir)/src/stub/Makefile +STUBS = # /*********************************************************************** # // amd64-lzma # ************************************************************************/ +ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) + +STUBS += lzma_d_cf.S lzma_d_cs.S + lzma_d_cf.S : tc_list = amd64-lzma amd64-linux.elf default lzma_d_cs.S : tc_list = amd64-lzma amd64-linux.elf default tc.amd64-lzma.gcc = $(tc.amd64-linux.elf.gcc) -tc.amd64-lzma.gcc += -ffunction-sections tc.amd64-lzma.gcc += -Os +tc.amd64-lzma.gcc += -ffunction-sections tc.amd64-lzma.gcc += -I$(UPX_LZMADIR) +tc.amd64-lzma.gcc += -I$(top_srcdir)/src lzma_d_c%.S : lzma_d_c.c $(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o @@ -32,10 +40,7 @@ lzma_d_c%.S : lzma_d_c.c $(call tc,objdump) -b binary -m i386:x86-64 -D tmp/$T.out > tmp/$T.out.lst $(call tc,bin2h) --mode=gas tmp/$T.out $@ -lzma_d_cf.S : PP_FLAGS = -DFAST -lzma_d_cs.S : PP_FLAGS = -DSMALL - -lzma_d_cf.S : $(MAKEFILE_LIST) -lzma_d_cs.S : $(MAKEFILE_LIST) +lzma_d_cf.% : PP_FLAGS = -DFAST +lzma_d_cs.% : PP_FLAGS = -DSMALL endif diff --git a/src/stub/src/arch/amd64/lzma_d_c.c b/src/stub/src/arch/amd64/lzma_d_c.c index cbe8cb08..9d2c2c96 100644 --- a/src/stub/src/arch/amd64/lzma_d_c.c +++ b/src/stub/src/arch/amd64/lzma_d_c.c @@ -31,7 +31,7 @@ #define ACC_LIBC_NAKED #define ACC_OS_FREESTANDING -#include "../../../../miniacc.h" +#include "miniacc.h" #undef _LZMA_IN_CB #undef _LZMA_OUT_READ diff --git a/src/stub/src/arch/arm/v4a/Makefile.extra b/src/stub/src/arch/arm/v4a/Makefile.extra index 59e20911..fe446a38 100644 --- a/src/stub/src/arch/arm/v4a/Makefile.extra +++ b/src/stub/src/arch/arm/v4a/Makefile.extra @@ -1,21 +1,28 @@ MAKEFLAGS += -rR .SUFFIXES: .SECONDEXPANSION: -export SHELL = /bin/sh -ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) - -STUBS += lzma_d_cf.S lzma_d_cs.S +ifndef top_srcdir +__dir_list = . .. ../.. ../../.. ../../../.. ../../../../.. +__dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../.. +__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) +top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) +endif default.targets = all -all.targets = tmp/.tmp-stamp $(STUBS) -include $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))../../../../Makefile +STUBS = NO_STUBS +include $(top_srcdir)/src/stub/Makefile +STUBS = # /*********************************************************************** # // arm-lzma # ************************************************************************/ +ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) + +STUBS += lzma_d_cf.S lzma_d_cs.S + lzma_d_cf.S : tc_list = arm-lzma arm-linux.elf default lzma_d_cs.S : tc_list = arm-lzma arm-linux.elf default @@ -24,6 +31,7 @@ tc.arm-lzma.gcc += -march=armv4 -fPIC tc.arm-lzma.gcc += -Os tc.arm-lzma.gcc += -ffunction-sections tc.arm-lzma.gcc += -I$(UPX_LZMADIR) +tc.arm-lzma.gcc += -I$(top_srcdir)/src lzma_d_c%.S : lzma_d_c.c $(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o @@ -33,10 +41,7 @@ lzma_d_c%.S : lzma_d_c.c $(call tc,objdump) -b binary -m armv4 -D tmp/$T.out > tmp/$T.out.lst $(call tc,bin2h) --mode=gas tmp/$T.out $@ -lzma_d_cf.S : PP_FLAGS = -DFAST -lzma_d_cs.S : PP_FLAGS = -DSMALL - -lzma_d_cf.S : $(MAKEFILE_LIST) -lzma_d_cs.S : $(MAKEFILE_LIST) +lzma_d_cf.% : PP_FLAGS = -DFAST +lzma_d_cs.% : PP_FLAGS = -DSMALL endif diff --git a/src/stub/src/arch/arm/v4a/lzma_d_c.c b/src/stub/src/arch/arm/v4a/lzma_d_c.c index 7b342011..9d2c2c96 100644 --- a/src/stub/src/arch/arm/v4a/lzma_d_c.c +++ b/src/stub/src/arch/arm/v4a/lzma_d_c.c @@ -31,7 +31,7 @@ #define ACC_LIBC_NAKED #define ACC_OS_FREESTANDING -#include "../../../../../miniacc.h" +#include "miniacc.h" #undef _LZMA_IN_CB #undef _LZMA_OUT_READ diff --git a/src/stub/src/arch/arm/v4t/Makefile.extra b/src/stub/src/arch/arm/v4t/Makefile.extra index 34c0f8d2..ea86bc64 100644 --- a/src/stub/src/arch/arm/v4t/Makefile.extra +++ b/src/stub/src/arch/arm/v4t/Makefile.extra @@ -1,21 +1,28 @@ MAKEFLAGS += -rR .SUFFIXES: .SECONDEXPANSION: -export SHELL = /bin/sh -ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) - -STUBS += lzma_d_cf.S lzma_d_cs.S +ifndef top_srcdir +__dir_list = . .. ../.. ../../.. ../../../.. ../../../../.. +__dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../.. +__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) +top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) +endif default.targets = all -all.targets = tmp/.tmp-stamp $(STUBS) -include $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))../../../../Makefile +STUBS = NO_STUBS +include $(top_srcdir)/src/stub/Makefile +STUBS = # /*********************************************************************** # // arm-lzma # ************************************************************************/ +ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) + +STUBS += lzma_d_cf.S lzma_d_cs.S + lzma_d_cf.S : tc_list = arm-lzma arm-linux.elf default lzma_d_cs.S : tc_list = arm-lzma arm-linux.elf default @@ -24,6 +31,7 @@ tc.arm-lzma.gcc += -march=armv4t -mthumb -fPIC tc.arm-lzma.gcc += -Os tc.arm-lzma.gcc += -ffunction-sections tc.arm-lzma.gcc += -I$(UPX_LZMADIR) +tc.arm-lzma.gcc += -I$(top_srcdir)/src lzma_d_c%.S : lzma_d_c.c $(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o @@ -33,10 +41,7 @@ lzma_d_c%.S : lzma_d_c.c $(call tc,objdump) -b binary -m armv4t -M force-thumb -D tmp/$T.out > tmp/$T.out.lst $(call tc,bin2h) --mode=gas tmp/$T.out $@ -lzma_d_cf.S : PP_FLAGS = -DFAST -lzma_d_cs.S : PP_FLAGS = -DSMALL - -lzma_d_cf.S : $(MAKEFILE_LIST) -lzma_d_cs.S : $(MAKEFILE_LIST) +lzma_d_cf.% : PP_FLAGS = -DFAST +lzma_d_cs.% : PP_FLAGS = -DSMALL endif diff --git a/src/stub/src/arch/arm/v4t/lzma_d_c.c b/src/stub/src/arch/arm/v4t/lzma_d_c.c index 7b342011..9d2c2c96 100644 --- a/src/stub/src/arch/arm/v4t/lzma_d_c.c +++ b/src/stub/src/arch/arm/v4t/lzma_d_c.c @@ -31,7 +31,7 @@ #define ACC_LIBC_NAKED #define ACC_OS_FREESTANDING -#include "../../../../../miniacc.h" +#include "miniacc.h" #undef _LZMA_IN_CB #undef _LZMA_OUT_READ diff --git a/src/stub/src/arch/i386/Makefile.extra b/src/stub/src/arch/i386/Makefile.extra index eaab8ac2..198a51db 100644 --- a/src/stub/src/arch/i386/Makefile.extra +++ b/src/stub/src/arch/i386/Makefile.extra @@ -1,27 +1,35 @@ MAKEFLAGS += -rR .SUFFIXES: .SECONDEXPANSION: -export SHELL = /bin/sh -ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) - -STUBS += lzma_d_cf.ash lzma_d_cs.ash +ifndef top_srcdir +__dir_list = . .. ../.. ../../.. ../../../.. ../../../../.. +__dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../.. +__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) +top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) +endif default.targets = all -all.targets = tmp/.tmp-stamp $(STUBS) -include $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))../../../Makefile +STUBS = NO_STUBS +include $(top_srcdir)/src/stub/Makefile +STUBS = # /*********************************************************************** # // i386-lzma # ************************************************************************/ +ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) + +STUBS += lzma_d_cf.ash lzma_d_cs.ash + lzma_d_cf.ash : tc_list = i386-lzma i386-linux.elf arch-i386 default lzma_d_cs.ash : tc_list = i386-lzma i386-linux.elf arch-i386 default tc.i386-lzma.gcc = $(tc.i386-linux.elf.gcc) tc.i386-lzma.gcc += -ffunction-sections tc.i386-lzma.gcc += -I$(UPX_LZMADIR) +tc.i386-lzma.gcc += -I$(top_srcdir)/src lzma_d_c%.ash : lzma_d_c.c $(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o @@ -31,10 +39,7 @@ lzma_d_c%.ash : lzma_d_c.c $(call tc,objdump) -b binary -m i386 -D tmp/$T.out > tmp/$T.out.lst $(call tc,bin2h) --mode=nasm tmp/$T.out $@ -lzma_d_cf.ash : PP_FLAGS = -DFAST -lzma_d_cs.ash : PP_FLAGS = -DSMALL - -lzma_d_cf.ash : $(MAKEFILE_LIST) -lzma_d_cs.ash : $(MAKEFILE_LIST) +lzma_d_cf.% : PP_FLAGS = -DFAST +lzma_d_cs.% : PP_FLAGS = -DSMALL endif diff --git a/src/stub/src/arch/i386/lzma_d_c.c b/src/stub/src/arch/i386/lzma_d_c.c index cbe8cb08..9d2c2c96 100644 --- a/src/stub/src/arch/i386/lzma_d_c.c +++ b/src/stub/src/arch/i386/lzma_d_c.c @@ -31,7 +31,7 @@ #define ACC_LIBC_NAKED #define ACC_OS_FREESTANDING -#include "../../../../miniacc.h" +#include "miniacc.h" #undef _LZMA_IN_CB #undef _LZMA_OUT_READ diff --git a/src/stub/src/arch/powerpc/32/Makefile.extra b/src/stub/src/arch/powerpc/32/Makefile.extra index 184daaf4..97e06b21 100644 --- a/src/stub/src/arch/powerpc/32/Makefile.extra +++ b/src/stub/src/arch/powerpc/32/Makefile.extra @@ -1,21 +1,28 @@ MAKEFLAGS += -rR .SUFFIXES: .SECONDEXPANSION: -export SHELL = /bin/sh -ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) - -STUBS += lzma_d_cf.S lzma_d_cs.S +ifndef top_srcdir +__dir_list = . .. ../.. ../../.. ../../../.. ../../../../.. +__dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../.. +__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) +top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) +endif default.targets = all -all.targets = tmp/.tmp-stamp $(STUBS) -include $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))../../../../Makefile +STUBS = NO_STUBS +include $(top_srcdir)/src/stub/Makefile +STUBS = # /*********************************************************************** # // powerpc-lzma # ************************************************************************/ +ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) + +STUBS += lzma_d_cf.S lzma_d_cs.S + lzma_d_cf.S : tc_list = powerpc-lzma powerpc-linux.elf default lzma_d_cs.S : tc_list = powerpc-lzma powerpc-linux.elf default @@ -24,6 +31,7 @@ tc.powerpc-lzma.gcc += -mcpu=405 -fPIC tc.powerpc-lzma.gcc += -Os tc.powerpc-lzma.gcc += -ffunction-sections tc.powerpc-lzma.gcc += -I$(UPX_LZMADIR) +tc.powerpc-lzma.gcc += -I$(top_srcdir)/src lzma_d_c%.S : lzma_d_c.c $(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o @@ -33,10 +41,7 @@ lzma_d_c%.S : lzma_d_c.c $(call tc,objdump) -b binary -m powerpc -D tmp/$T.out > tmp/$T.out.lst $(call tc,bin2h) --mode=gas tmp/$T.out $@ -lzma_d_cf.S : PP_FLAGS = -DFAST -lzma_d_cs.S : PP_FLAGS = -DSMALL - -lzma_d_cf.S : $(MAKEFILE_LIST) -lzma_d_cs.S : $(MAKEFILE_LIST) +lzma_d_cf.% : PP_FLAGS = -DFAST +lzma_d_cs.% : PP_FLAGS = -DSMALL endif diff --git a/src/stub/src/arch/powerpc/32/lzma_d_c.c b/src/stub/src/arch/powerpc/32/lzma_d_c.c index 7b342011..9d2c2c96 100644 --- a/src/stub/src/arch/powerpc/32/lzma_d_c.c +++ b/src/stub/src/arch/powerpc/32/lzma_d_c.c @@ -31,7 +31,7 @@ #define ACC_LIBC_NAKED #define ACC_OS_FREESTANDING -#include "../../../../../miniacc.h" +#include "miniacc.h" #undef _LZMA_IN_CB #undef _LZMA_OUT_READ From 67e09fb342c80057583594d2b83aa001b7ba4769 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Wed, 28 Jun 2006 19:44:02 -0700 Subject: [PATCH 05/14] kernel Makefile; fix cross-platform endian trouble --- src/p_vmlinx.cpp | 2 ++ src/p_vmlinx.h | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/p_vmlinx.cpp b/src/p_vmlinx.cpp index b9894f4a..71e19852 100644 --- a/src/p_vmlinx.cpp +++ b/src/p_vmlinx.cpp @@ -486,6 +486,7 @@ void PackVmlinuxI386::unpack(OutputFile *fo) //$(obj)/upx-piggy.o: vmlinux FORCE // rm -f $@ // upx --best -o $@ $< +// touch $@ //----- // //----- arch/i386/boot/compressed/upx-head.S @@ -560,6 +561,7 @@ void PackVmlinuxI386::unpack(OutputFile *fo) //upx-piggy.o: $(SYSTEM) // $(RM) -f $@ // upx --best -o $@ $< +// touch $@ // //clean: // rm -f vmlinux bvmlinux _tmp_* diff --git a/src/p_vmlinx.h b/src/p_vmlinx.h index 9974ca1c..75050a4a 100644 --- a/src/p_vmlinx.h +++ b/src/p_vmlinx.h @@ -60,12 +60,12 @@ protected: int n_ptload; unsigned sz_ptload; - Elf32_Phdr *phdri; // from input file - Elf32_Shdr *shdri; // from input file - Elf32_Shdr *p_text; - Elf32_Shdr *p_note0; - Elf32_Shdr *p_note1; - Elf32_Ehdr ehdri; // from input file + Elf_LE32_Phdr *phdri; // from input file + Elf_LE32_Shdr *shdri; // from input file + Elf_LE32_Shdr *p_text; + Elf_LE32_Shdr *p_note0; + Elf_LE32_Shdr *p_note1; + Elf_LE32_Ehdr ehdri; // from input file }; From 0bc361adebe400d44c7c84ff6e09f639fca41264 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 05:12:01 +0200 Subject: [PATCH 06/14] Introduced conf_lzma.max_num_probs to limit stack size for decompression. --- src/compress_lzma.cpp | 40 +++++++++++++++++++++++++++++++++++----- src/conf.h | 10 +--------- 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/src/compress_lzma.cpp b/src/compress_lzma.cpp index c11bca16..ade4c3ca 100644 --- a/src/compress_lzma.cpp +++ b/src/compress_lzma.cpp @@ -160,7 +160,6 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len, { assert(method == M_LZMA); assert(level > 0); assert(result != NULL); - UNUSED(conf_parm); int r = UPX_E_ERROR; HRESULT rh; @@ -189,13 +188,20 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len, pr[4].vt = pr[5].vt = pr[6].vt = VT_UI4; // setup defaults - pr[0].uintVal = 2; - pr[1].uintVal = 0; - pr[2].uintVal = 3; + pr[0].uintVal = 2; // 0..4 + pr[1].uintVal = 0; // 0..4 + pr[2].uintVal = 3; // 0..8 pr[3].uintVal = 1024 * 1024; pr[4].uintVal = 2; - pr[5].uintVal = 64; + pr[5].uintVal = 64; // 5.. pr[6].uintVal = 0; +#if 1 + // DEBUG - set sizes so that we use a maxmimum amount of stack + // these settings cause res->num_probs == 3147574, i.e. we will + // need about 6 MB of stack + pr[1].uintVal = 4; + pr[2].uintVal = 8; +#endif // FIXME: tune these settings according to level switch (level) @@ -228,9 +234,33 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len, goto error; } + // limit dictionary size if (pr[3].uintVal > src_len) pr[3].uintVal = src_len; + // limit num_probs + if (conf_parm && conf_parm->conf_lzma.max_num_probs) + { + for (;;) + { + unsigned n = 1846 + (768 << (pr[2].uintVal + pr[1].uintVal)); + if (n <= conf_parm->conf_lzma.max_num_probs) + break; + if (pr[1].uintVal > pr[2].uintVal) + { + if (pr[1].uintVal == 0) + goto error; + pr[1].uintVal -= 1; + } + else + { + if (pr[2].uintVal == 0) + goto error; + pr[2].uintVal -= 1; + } + } + } + res->pos_bits = pr[0].uintVal; res->lit_pos_bits = pr[1].uintVal; res->lit_context_bits = pr[2].uintVal; diff --git a/src/conf.h b/src/conf.h index e91a8f24..75b23161 100644 --- a/src/conf.h +++ b/src/conf.h @@ -210,15 +210,7 @@ struct upx_callback_t struct lzma_compress_config_t { -#if 0 - unsigned pos_bits; // pb - unsigned lit_pos_bits; // lp - unsigned lit_context_bits; // lc - unsigned dict_size; - unsigned mf_passes; -#else - int dummy; -#endif + unsigned max_num_probs; void reset() { memset(this, 0, sizeof(*this)); } }; From c7bf0b6dddb61e7ffeb58d0d59dbf9f3483ab07b Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 05:12:39 +0200 Subject: [PATCH 07/14] Removed trailing whitespace. --- src/stub/src/arch/i386/lzma_d.ash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stub/src/arch/i386/lzma_d.ash b/src/stub/src/arch/i386/lzma_d.ash index 865e52e9..72de8604 100644 --- a/src/stub/src/arch/i386/lzma_d.ash +++ b/src/stub/src/arch/i386/lzma_d.ash @@ -127,7 +127,7 @@ LZMA_LIT_SIZE equ 768 mov [ ebx],al ; store lit_context_bits shr cl,4 mov [1+ ebx],cl ; store lit_pos_bits - + push edx ; inSize -2 push esi ; in push ebx ; &CLzmaDecoderState From 66df7389d262bf3f83a90d948cbb65d6a3a93f44 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 06:15:28 +0200 Subject: [PATCH 08/14] Refactoring: pass upx_compress_config_t to Packer::compressWithFilters() so that formats can set conf_lzma.max_num_probs. Also renamed compression parameters to use cconf & cresult. --- src/compress.cpp | 54 +++++++++++++++++++++---------------------- src/compress.h | 24 +++++++++---------- src/compress_lzma.cpp | 38 +++++++++++++++--------------- src/compress_ucl.cpp | 46 ++++++++++++++++++------------------ src/conf.h | 8 +++---- src/p_armpe.cpp | 2 +- src/p_djgpp2.cpp | 7 +++++- src/p_exe.cpp | 6 +++-- src/p_ps1.cpp | 4 +++- src/p_tos.cpp | 4 +++- src/p_unix.cpp | 2 +- src/p_w32pe.cpp | 2 +- src/packer.cpp | 39 +++++++++++++++---------------- src/packer.h | 4 ++-- 14 files changed, 125 insertions(+), 115 deletions(-) diff --git a/src/compress.cpp b/src/compress.cpp index 750762d0..bf16a2a1 100644 --- a/src/compress.cpp +++ b/src/compress.cpp @@ -76,11 +76,11 @@ int upx_compress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, upx_callback_p cb, int method, int level, - const struct upx_compress_config_t *conf, - struct upx_compress_result_t *result ) + const upx_compress_config_t *cconf, + upx_compress_result_t *cresult ) { int r = UPX_E_ERROR; - upx_compress_result_t result_buffer; + upx_compress_result_t cresult_buffer; assert(method > 0); assert(level > 0); @@ -95,18 +95,18 @@ int upx_compress ( const upx_bytep src, unsigned src_len, // for UPX, we always require a reasonably sized outbut buffer assert(*dst_len >= MemBuffer::getSizeForCompression(src_len)); - if (!result) - result = &result_buffer; - memset(result, 0, sizeof(*result)); + if (!cresult) + cresult = &cresult_buffer; + memset(cresult, 0, sizeof(*cresult)); #if 1 // debug - result->method = method; - result->level = level; - result->u_len = src_len; - result->c_len = 0; + cresult->method = method; + cresult->level = level; + cresult->u_len = src_len; + cresult->c_len = 0; #endif // assume no info available - fill in worst case results - ucl_uint *res = result->result_ucl.result; + ucl_uint *res = cresult->result_ucl.result; //res[0] = 1; // min_offset_found - NOT USED res[1] = src_len - 1; // max_offset_found //res[2] = 2; // min_match_found - NOT USED @@ -121,17 +121,17 @@ int upx_compress ( const upx_bytep src, unsigned src_len, #if defined(WITH_LZMA) else if (M_IS_LZMA(method)) r = upx_lzma_compress(src, src_len, dst, dst_len, - cb, method, level, conf, result); + cb, method, level, cconf, cresult); #endif #if defined(WITH_NRV) else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method)) r = upx_nrv_compress(src, src_len, dst, dst_len, - cb, method, level, conf, result); + cb, method, level, cconf, cresult); #endif #if defined(WITH_UCL) else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method)) r = upx_ucl_compress(src, src_len, dst, dst_len, - cb, method, level, conf, result); + cb, method, level, cconf, cresult); #endif else { throwInternalError("unknown compression method"); @@ -139,7 +139,7 @@ int upx_compress ( const upx_bytep src, unsigned src_len, #if 1 // debug - result->c_len = *dst_len; + cresult->c_len = *dst_len; #endif return r; } @@ -152,29 +152,29 @@ int upx_compress ( const upx_bytep src, unsigned src_len, int upx_decompress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ) + const upx_compress_result_t *cresult ) { int r = UPX_E_ERROR; assert(*dst_len > 0); assert(src_len < *dst_len); // must be compressed - if (result && result->method == 0) - result = NULL; + if (cresult && cresult->method == 0) + cresult = NULL; if (method < 0) { } #if defined(WITH_LZMA) else if (M_IS_LZMA(method)) - r = upx_lzma_decompress(src, src_len, dst, dst_len, method, result); + r = upx_lzma_decompress(src, src_len, dst, dst_len, method, cresult); #endif #if defined(WITH_NRV) else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method)) - r = upx_nrv_decompress(src, src_len, dst, dst_len, method, result); + r = upx_nrv_decompress(src, src_len, dst, dst_len, method, cresult); #endif #if defined(WITH_UCL) else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method)) - r = upx_ucl_decompress(src, src_len, dst, dst_len, method, result); + r = upx_ucl_decompress(src, src_len, dst, dst_len, method, cresult); #endif else { throwInternalError("unknown decompression method"); @@ -191,12 +191,12 @@ int upx_decompress ( const upx_bytep src, unsigned src_len, int upx_test_overlap ( const upx_bytep buf, unsigned src_off, unsigned src_len, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ) + const upx_compress_result_t *cresult ) { int r = UPX_E_ERROR; - if (result && result->method == 0) - result = NULL; + if (cresult && cresult->method == 0) + cresult = NULL; assert(*dst_len > 0); assert(src_len < *dst_len); // must be compressed @@ -207,15 +207,15 @@ int upx_test_overlap ( const upx_bytep buf, unsigned src_off, } #if defined(WITH_LZMA) else if (M_IS_LZMA(method)) - r = upx_lzma_test_overlap(buf, src_off, src_len, dst_len, method, result); + r = upx_lzma_test_overlap(buf, src_off, src_len, dst_len, method, cresult); #endif #if defined(WITH_NRV) else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method)) - r = upx_nrv_test_overlap(buf, src_off, src_len, dst_len, method, result); + r = upx_nrv_test_overlap(buf, src_off, src_len, dst_len, method, cresult); #endif #if defined(WITH_UCL) else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method)) - r = upx_ucl_test_overlap(buf, src_off, src_len, dst_len, method, result); + r = upx_ucl_test_overlap(buf, src_off, src_len, dst_len, method, cresult); #endif else { throwInternalError("unknown decompression method"); diff --git a/src/compress.h b/src/compress.h index 82ab9d30..305bcab1 100644 --- a/src/compress.h +++ b/src/compress.h @@ -39,16 +39,16 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, upx_callback_p cb, int method, int level, - const struct upx_compress_config_t *conf, - struct upx_compress_result_t *result ); + const upx_compress_config_t *cconf, + upx_compress_result_t *cresult ); int upx_lzma_decompress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ); + const upx_compress_result_t *cresult ); int upx_lzma_test_overlap ( const upx_bytep buf, unsigned src_off, unsigned src_len, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ); + const upx_compress_result_t *cresult ); #endif @@ -57,16 +57,16 @@ int upx_nrv_compress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, upx_callback_p cb, int method, int level, - const struct upx_compress_config_t *conf, - struct upx_compress_result_t *result ); + const upx_compress_config_t *cconf, + upx_compress_result_t *cresult ); int upx_nrv_decompress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ); + const upx_compress_result_t *cresult ); int upx_nrv_test_overlap ( const upx_bytep buf, unsigned src_off, unsigned src_len, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ); + const upx_compress_result_t *cresult ); #endif @@ -75,16 +75,16 @@ int upx_ucl_compress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, upx_callback_p cb, int method, int level, - const struct upx_compress_config_t *conf, - struct upx_compress_result_t *result ); + const upx_compress_config_t *cconf, + upx_compress_result_t *cresult ); int upx_ucl_decompress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ); + const upx_compress_result_t *cresult ); int upx_ucl_test_overlap ( const upx_bytep buf, unsigned src_off, unsigned src_len, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ); + const upx_compress_result_t *cresult ); #endif diff --git a/src/compress_lzma.cpp b/src/compress_lzma.cpp index ade4c3ca..11dbf8c2 100644 --- a/src/compress_lzma.cpp +++ b/src/compress_lzma.cpp @@ -155,15 +155,15 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, upx_callback_p cb, int method, int level, - const struct upx_compress_config_t *conf_parm, - struct upx_compress_result_t *result ) + const upx_compress_config_t *cconf_parm, + upx_compress_result_t *cresult ) { assert(method == M_LZMA); - assert(level > 0); assert(result != NULL); + assert(level > 0); assert(cresult != NULL); int r = UPX_E_ERROR; HRESULT rh; - lzma_compress_result_t *res = &result->result_lzma; + lzma_compress_result_t *res = &cresult->result_lzma; MyLzma::InStreamRam is; is.AddRef(); MyLzma::OutStreamRam os; os.AddRef(); @@ -196,9 +196,9 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len, pr[5].uintVal = 64; // 5.. pr[6].uintVal = 0; #if 1 - // DEBUG - set sizes so that we use a maxmimum amount of stack - // these settings cause res->num_probs == 3147574, i.e. we will - // need about 6 MB of stack + // DEBUG - set sizes so that we use a maxmimum amount of stack. + // These settings cause res->num_probs == 3147574, i.e. we will + // need about 6 MB of stack during runtime decompression. pr[1].uintVal = 4; pr[2].uintVal = 8; #endif @@ -239,12 +239,12 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len, pr[3].uintVal = src_len; // limit num_probs - if (conf_parm && conf_parm->conf_lzma.max_num_probs) + if (cconf_parm && cconf_parm->conf_lzma.max_num_probs) { for (;;) { unsigned n = 1846 + (768 << (pr[2].uintVal + pr[1].uintVal)); - if (n <= conf_parm->conf_lzma.max_num_probs) + if (n <= cconf_parm->conf_lzma.max_num_probs) break; if (pr[1].uintVal > pr[2].uintVal) { @@ -350,7 +350,7 @@ error: int upx_lzma_decompress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ) + const upx_compress_result_t *cresult ) { assert(method == M_LZMA); // see res->num_probs above @@ -384,13 +384,13 @@ int upx_lzma_decompress ( const upx_bytep src, unsigned src_len, src += 2; src_len -= 2; #endif - if (result) + if (cresult) { - assert(result->method == method); - assert(result->result_lzma.pos_bits == (unsigned) s.Properties.pb); - assert(result->result_lzma.lit_pos_bits == (unsigned) s.Properties.lp); - assert(result->result_lzma.lit_context_bits == (unsigned) s.Properties.lc); - assert(result->result_lzma.num_probs == (unsigned) LzmaGetNumProbs(&s.Properties)); + assert(cresult->method == method); + assert(cresult->result_lzma.pos_bits == (unsigned) s.Properties.pb); + assert(cresult->result_lzma.lit_pos_bits == (unsigned) s.Properties.lp); + assert(cresult->result_lzma.lit_context_bits == (unsigned) s.Properties.lc); + assert(cresult->result_lzma.num_probs == (unsigned) LzmaGetNumProbs(&s.Properties)); } s.Probs = (CProb *) malloc(sizeof(CProb) * LzmaGetNumProbs(&s.Properties)); if (!s.Probs) @@ -412,7 +412,7 @@ error: *dst_len = dst_out; free(s.Probs); - UNUSED(result); + UNUSED(cresult); return r; } @@ -424,7 +424,7 @@ error: int upx_lzma_test_overlap ( const upx_bytep buf, unsigned src_off, unsigned src_len, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ) + const upx_compress_result_t *cresult ) { assert(method == M_LZMA); @@ -438,7 +438,7 @@ int upx_lzma_test_overlap ( const upx_bytep buf, unsigned src_off, if ((int)overlap_overhead >= 256) return UPX_E_OK; - UNUSED(result); + UNUSED(cresult); return UPX_E_ERROR; } diff --git a/src/compress_ucl.cpp b/src/compress_ucl.cpp index 87f0e866..db685570 100644 --- a/src/compress_ucl.cpp +++ b/src/compress_ucl.cpp @@ -101,11 +101,11 @@ int upx_ucl_compress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, upx_callback_p cb_parm, int method, int level, - const struct upx_compress_config_t *conf_parm, - struct upx_compress_result_t *result ) + const upx_compress_config_t *cconf_parm, + upx_compress_result_t *cresult ) { int r; - assert(level > 0); assert(result != NULL); + assert(level > 0); assert(cresult != NULL); ucl_progress_callback_t cb; cb.callback = 0; @@ -115,20 +115,20 @@ int upx_ucl_compress ( const upx_bytep src, unsigned src_len, cb.user = cb_parm; } - ucl_compress_config_t conf; - memset(&conf, 0xff, sizeof(conf)); - if (conf_parm) - conf = conf_parm->conf_ucl; // struct copy + ucl_compress_config_t cconf; + memset(&cconf, 0xff, sizeof(cconf)); + if (cconf_parm) + cconf = cconf_parm->conf_ucl; // struct copy - ucl_uint *res = result->result_ucl.result; + ucl_uint *res = cresult->result_ucl.result; // prepare bit-buffer settings - conf.bb_endian = 0; - conf.bb_size = 0; + cconf.bb_endian = 0; + cconf.bb_size = 0; if (method >= M_NRV2B_LE32 && method <= M_CL1B_LE16) { - static const unsigned char sizes[3]={32,8,16}; - conf.bb_size = sizes[(method - M_NRV2B_LE32) % 3]; + static const unsigned char sizes[3] = {32, 8, 16}; + cconf.bb_size = sizes[(method - M_NRV2B_LE32) % 3]; } else { throwInternalError("unknown compression method"); @@ -136,20 +136,20 @@ int upx_ucl_compress ( const upx_bytep src, unsigned src_len, } // optimize compression parms - if (level <= 3 && conf.max_offset == UCL_UINT_MAX) - conf.max_offset = 8*1024-1; - else if (level == 4 && conf.max_offset == UCL_UINT_MAX) - conf.max_offset = 32*1024-1; + if (level <= 3 && cconf.max_offset == UCL_UINT_MAX) + cconf.max_offset = 8*1024-1; + else if (level == 4 && cconf.max_offset == UCL_UINT_MAX) + cconf.max_offset = 32*1024-1; if M_IS_NRV2B(method) r = ucl_nrv2b_99_compress(src, src_len, dst, dst_len, - &cb, level, &conf, res); + &cb, level, &cconf, res); else if M_IS_NRV2D(method) r = ucl_nrv2d_99_compress(src, src_len, dst, dst_len, - &cb, level, &conf, res); + &cb, level, &cconf, res); else if M_IS_NRV2E(method) r = ucl_nrv2e_99_compress(src, src_len, dst, dst_len, - &cb, level, &conf, res); + &cb, level, &cconf, res); else { throwInternalError("unknown compression method"); return UPX_E_ERROR; @@ -166,7 +166,7 @@ int upx_ucl_compress ( const upx_bytep src, unsigned src_len, int upx_ucl_decompress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ) + const upx_compress_result_t *cresult ) { int r; @@ -204,7 +204,7 @@ int upx_ucl_decompress ( const upx_bytep src, unsigned src_len, return UPX_E_ERROR; } - UNUSED(result); + UNUSED(cresult); return convert_errno_from_ucl(r); } @@ -216,7 +216,7 @@ int upx_ucl_decompress ( const upx_bytep src, unsigned src_len, int upx_ucl_test_overlap ( const upx_bytep buf, unsigned src_off, unsigned src_len, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ) + const upx_compress_result_t *cresult ) { int r; @@ -254,7 +254,7 @@ int upx_ucl_test_overlap ( const upx_bytep buf, unsigned src_off, return UPX_E_ERROR; } - UNUSED(result); + UNUSED(cresult); return convert_errno_from_ucl(r); } diff --git a/src/conf.h b/src/conf.h index 75b23161..f2424ec1 100644 --- a/src/conf.h +++ b/src/conf.h @@ -626,16 +626,16 @@ int upx_compress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, upx_callback_p cb, int method, int level, - const struct upx_compress_config_t *conf, - struct upx_compress_result_t *result ); + const upx_compress_config_t *cconf, + upx_compress_result_t *cresult ); int upx_decompress ( const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ); + const upx_compress_result_t *cresult ); int upx_test_overlap ( const upx_bytep buf, unsigned src_off, unsigned src_len, unsigned* dst_len, int method, - const struct upx_compress_result_t *result ); + const upx_compress_result_t *cresult ); #endif /* __cplusplus */ diff --git a/src/p_armpe.cpp b/src/p_armpe.cpp index 8e20f8a6..c0ab79a6 100644 --- a/src/p_armpe.cpp +++ b/src/p_armpe.cpp @@ -1904,7 +1904,7 @@ void PackArmPe::pack(OutputFile *fo) } compressWithFilters(&ft, 2048, strategy, - NULL, 0, 0, ih.codebase, rvamin); + NULL, NULL, ih.codebase, rvamin); // info: see buildLoader() newvsize = (ph.u_len + rvamin + ph.overlap_overhead + oam1) &~ oam1; if (tlsindex && ((newvsize - ph.c_len - 1024 + oam1) &~ oam1) > tlsindex + 4) diff --git a/src/p_djgpp2.cpp b/src/p_djgpp2.cpp index 7bec0ad8..17258ef1 100644 --- a/src/p_djgpp2.cpp +++ b/src/p_djgpp2.cpp @@ -293,7 +293,12 @@ void PackDjgpp2::pack(OutputFile *fo) ft.buf_len = usize - data->size; ft.addvalue = text->vaddr - hdrsize; // compress - compressWithFilters(&ft, 512); + upx_compress_config_t cconf; cconf.reset(); +#if 1 + // limit stack size needed for runtime decompression + cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ~28 kB stack +#endif + compressWithFilters(&ft, 512, 0, NULL, &cconf); // patch coff header #2 const unsigned lsize = getLoaderSize(); diff --git a/src/p_exe.cpp b/src/p_exe.cpp index 9bee665e..0ae390fe 100644 --- a/src/p_exe.cpp +++ b/src/p_exe.cpp @@ -412,8 +412,10 @@ void PackExe::pack(OutputFile *fo) ph.u_len = ih_imagesize + relocsize; // prepare filter Filter ft(ph.level); - // compress - compressWithFilters(&ft, 32, 0, NULL, 0, MAXMATCH); + // compress (max_match = 8192) + upx_compress_config_t cconf; cconf.reset(); + cconf.conf_ucl.max_match = MAXMATCH; + compressWithFilters(&ft, 32, 0, NULL, &cconf); if (ph.max_run_found + ph.max_match_found > 0x8000) throwCantPack("decompressor limit exceeded, send a bugreport"); diff --git a/src/p_ps1.cpp b/src/p_ps1.cpp index fdf4f8d0..bb4a5bab 100644 --- a/src/p_ps1.cpp +++ b/src/p_ps1.cpp @@ -302,7 +302,9 @@ void PackPs1::pack(OutputFile *fo) Filter ft(ph.level); // compress (max_match = 65535) - compressWithFilters(&ft, 512, 0, NULL, 0, 65535); + upx_compress_config_t cconf; cconf.reset(); + cconf.conf_ucl.max_match = 65535; + compressWithFilters(&ft, 512, 0, NULL, &cconf); if (ph.overlap_overhead > sa_cnt) { diff --git a/src/p_tos.cpp b/src/p_tos.cpp index 6c26144e..e77e1d4d 100644 --- a/src/p_tos.cpp +++ b/src/p_tos.cpp @@ -489,7 +489,9 @@ void PackTos::pack(OutputFile *fo) // prepare filter Filter ft(ph.level); // compress (max_match = 65535) - compressWithFilters(&ft, 512, 0, NULL, 0, 65535); + upx_compress_config_t cconf; cconf.reset(); + cconf.conf_ucl.max_match = 65535; + compressWithFilters(&ft, 512, 0, NULL, &cconf); // get loader const unsigned lsize = getLoaderSize(); diff --git a/src/p_unix.cpp b/src/p_unix.cpp index 9e5fa839..ebb2d3b4 100644 --- a/src/p_unix.cpp +++ b/src/p_unix.cpp @@ -348,7 +348,7 @@ void PackUnix::packExtent( ft->cto = 0; compressWithFilters(ft, OVERHEAD, strategy, - NULL, 0, 0, 0, 0, // those 5 args are the defaults + NULL, NULL, 0, 0, // those 4 args are the defaults hdr_ibuf, hdr_u_len); } else { diff --git a/src/p_w32pe.cpp b/src/p_w32pe.cpp index 9e791f75..68651376 100644 --- a/src/p_w32pe.cpp +++ b/src/p_w32pe.cpp @@ -1924,7 +1924,7 @@ void PackW32Pe::pack(OutputFile *fo) } compressWithFilters(&ft, 2048, strategy, - NULL, 0, 0, ih.codebase, rvamin); + NULL, NULL, ih.codebase, rvamin); // info: see buildLoader() newvsize = (ph.u_len + rvamin + ph.overlap_overhead + oam1) &~ oam1; if (tlsindex && ((newvsize - ph.c_len - 1024 + oam1) &~ oam1) > tlsindex + 4) diff --git a/src/packer.cpp b/src/packer.cpp index a9f66a7d..9e9064be 100644 --- a/src/packer.cpp +++ b/src/packer.cpp @@ -158,7 +158,7 @@ bool Packer::skipVerify() const **************************************************************************/ bool Packer::compress(upx_bytep in, upx_bytep out, - unsigned max_offset, unsigned max_match) + const upx_compress_config_t *cconf_parm) { ph.c_len = 0; assert(ph.level >= 1); assert(ph.level <= 10); @@ -170,24 +170,20 @@ bool Packer::compress(upx_bytep in, upx_bytep out, ph.u_adler = upx_adler32(in, ph.u_len, ph.u_adler); // set compression paramters - upx_compress_config_t conf; - conf.reset(); - // arguments - if (max_offset != 0) - conf.conf_ucl.max_offset = max_offset; - if (max_match != 0) - conf.conf_ucl.max_match = max_match; + upx_compress_config_t cconf; cconf.reset(); + if (cconf_parm) + cconf = *cconf_parm; // options if (opt->crp.crp_ucl.c_flags != -1) - conf.conf_ucl.c_flags = opt->crp.crp_ucl.c_flags; + cconf.conf_ucl.c_flags = opt->crp.crp_ucl.c_flags; if (opt->crp.crp_ucl.p_level != -1) - conf.conf_ucl.p_level = opt->crp.crp_ucl.p_level; + cconf.conf_ucl.p_level = opt->crp.crp_ucl.p_level; if (opt->crp.crp_ucl.h_level != -1) - conf.conf_ucl.h_level = opt->crp.crp_ucl.h_level; - if (opt->crp.crp_ucl.max_offset != UINT_MAX && opt->crp.crp_ucl.max_offset < conf.conf_ucl.max_offset) - conf.conf_ucl.max_offset = opt->crp.crp_ucl.max_offset; - if (opt->crp.crp_ucl.max_match != UINT_MAX && opt->crp.crp_ucl.max_match < conf.conf_ucl.max_match) - conf.conf_ucl.max_match = opt->crp.crp_ucl.max_match; + cconf.conf_ucl.h_level = opt->crp.crp_ucl.h_level; + if (opt->crp.crp_ucl.max_offset != UINT_MAX && opt->crp.crp_ucl.max_offset < cconf.conf_ucl.max_offset) + cconf.conf_ucl.max_offset = opt->crp.crp_ucl.max_offset; + if (opt->crp.crp_ucl.max_match != UINT_MAX && opt->crp.crp_ucl.max_match < cconf.conf_ucl.max_match) + cconf.conf_ucl.max_match = opt->crp.crp_ucl.max_match; // Avoid too many progress bar updates. 64 is s->bar_len in ui.cpp. unsigned step = (ph.u_len < 64*1024) ? 0 : ph.u_len / 64; @@ -205,7 +201,7 @@ bool Packer::compress(upx_bytep in, upx_bytep out, // compress int r = upx_compress(in, ph.u_len, out, &ph.c_len, uip->getCallback(), - ph.method, ph.level, &conf, &ph.compress_result); + ph.method, ph.level, &cconf, &ph.compress_result); //uip->finalCallback(ph.u_len, ph.c_len); uip->endCallback(); @@ -224,8 +220,11 @@ bool Packer::compress(upx_bytep in, upx_bytep out, ph.max_run_found = res[5]; ph.first_offset_found = res[6]; //ph.same_match_offsets_found = res[7]; - assert(max_offset == 0 || max_offset >= ph.max_offset_found); - assert(max_match == 0 || max_match >= ph.max_match_found); + if (cconf_parm) + { + assert(cconf.conf_ucl.max_offset == 0 || cconf.conf_ucl.max_offset >= ph.max_offset_found); + assert(cconf.conf_ucl.max_match == 0 || cconf.conf_ucl.max_match >= ph.max_match_found); + } //printf("\nPacker::compress: %d/%d: %7d -> %7d\n", ph.method, ph.level, ph.u_len, ph.c_len); if (!checkCompressionRatio(ph.u_len, ph.c_len)) @@ -1140,7 +1139,7 @@ int Packer::getLoaderSectionStart(const char *name, int *slen) const void Packer::compressWithFilters(Filter *parm_ft, const unsigned overlap_range, int strategy, const int *parm_filters, - unsigned max_offset, unsigned max_match, + const upx_compress_config_t *cconf, unsigned filter_off, unsigned compress_buf_off, unsigned char *hdr_buf, unsigned hdr_u_len) @@ -1323,7 +1322,7 @@ void Packer::compressWithFilters(Filter *parm_ft, ph.filter_cto = ft.cto; ph.n_mru = ft.n_mru; // compress - if (compress(ibuf + compress_buf_off, *otemp, max_offset, max_match)) + if (compress(ibuf + compress_buf_off, *otemp, cconf)) { unsigned lsize = 0; if (ph.c_len + lsize + hdr_c_len <= best_ph.c_len + best_ph_lsize + best_hdr_c_len) diff --git a/src/packer.h b/src/packer.h index 0be2250a..45cdc42b 100644 --- a/src/packer.h +++ b/src/packer.h @@ -165,7 +165,7 @@ public: protected: // main compression drivers virtual bool compress(upx_bytep in, upx_bytep out, - unsigned max_offset = 0, unsigned max_match = 0); + const upx_compress_config_t *cconf = NULL); virtual void decompress(const upx_bytep in, upx_bytep out, bool verify_checksum = true, Filter *ft = NULL); virtual bool checkCompressionRatio(unsigned u_len, unsigned c_len) const; @@ -176,7 +176,7 @@ protected: const unsigned overlap_range, int strategy = 0, const int *filters = NULL, - unsigned max_offset = 0, unsigned max_match = 0, + const upx_compress_config_t *cconf = NULL, unsigned filter_buf_off = 0, unsigned compress_buf_off = 0, unsigned char *header_buffer = 0, From 930f07d15eeb81d73f4448c58936599cd952b406 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 06:24:24 +0200 Subject: [PATCH 09/14] Move upx_compress_result_t handling into right place. --- src/compress.cpp | 10 ------- src/compress_ucl.cpp | 9 +++++++ src/packer.cpp | 64 ++++++++++++++++++++++++-------------------- 3 files changed, 44 insertions(+), 39 deletions(-) diff --git a/src/compress.cpp b/src/compress.cpp index bf16a2a1..c6260523 100644 --- a/src/compress.cpp +++ b/src/compress.cpp @@ -105,16 +105,6 @@ int upx_compress ( const upx_bytep src, unsigned src_len, cresult->u_len = src_len; cresult->c_len = 0; #endif - // assume no info available - fill in worst case results - ucl_uint *res = cresult->result_ucl.result; - //res[0] = 1; // min_offset_found - NOT USED - res[1] = src_len - 1; // max_offset_found - //res[2] = 2; // min_match_found - NOT USED - res[3] = src_len - 1; // max_match_found - //res[4] = 1; // min_run_found - NOT USED - res[5] = src_len; // max_run_found - res[6] = 1; // first_offset_found - //res[7] = 999999; // same_match_offsets_found - NOT USED if (method < 0) { } diff --git a/src/compress_ucl.cpp b/src/compress_ucl.cpp index db685570..705e558b 100644 --- a/src/compress_ucl.cpp +++ b/src/compress_ucl.cpp @@ -121,6 +121,15 @@ int upx_ucl_compress ( const upx_bytep src, unsigned src_len, cconf = cconf_parm->conf_ucl; // struct copy ucl_uint *res = cresult->result_ucl.result; + // assume no info available - fill in worst case results + //res[0] = 1; // min_offset_found - NOT USED + res[1] = src_len - 1; // max_offset_found + //res[2] = 2; // min_match_found - NOT USED + res[3] = src_len - 1; // max_match_found + //res[4] = 1; // min_run_found - NOT USED + res[5] = src_len; // max_run_found + res[6] = 1; // first_offset_found + //res[7] = 999999; // same_match_offsets_found - NOT USED // prepare bit-buffer settings cconf.bb_endian = 0; diff --git a/src/packer.cpp b/src/packer.cpp index 9e9064be..ef96c87c 100644 --- a/src/packer.cpp +++ b/src/packer.cpp @@ -154,7 +154,7 @@ bool Packer::skipVerify() const /************************************************************************* -// compress +// compress - wrap call to low-level upx_compress() **************************************************************************/ bool Packer::compress(upx_bytep in, upx_bytep out, @@ -163,6 +163,9 @@ bool Packer::compress(upx_bytep in, upx_bytep out, ph.c_len = 0; assert(ph.level >= 1); assert(ph.level <= 10); + // Avoid too many progress bar updates. 64 is s->bar_len in ui.cpp. + unsigned step = (ph.u_len < 64*1024) ? 0 : ph.u_len / 64; + // save current checksums ph.saved_u_adler = ph.u_adler; ph.saved_c_adler = ph.c_adler; @@ -173,24 +176,24 @@ bool Packer::compress(upx_bytep in, upx_bytep out, upx_compress_config_t cconf; cconf.reset(); if (cconf_parm) cconf = *cconf_parm; - // options - if (opt->crp.crp_ucl.c_flags != -1) - cconf.conf_ucl.c_flags = opt->crp.crp_ucl.c_flags; - if (opt->crp.crp_ucl.p_level != -1) - cconf.conf_ucl.p_level = opt->crp.crp_ucl.p_level; - if (opt->crp.crp_ucl.h_level != -1) - cconf.conf_ucl.h_level = opt->crp.crp_ucl.h_level; - if (opt->crp.crp_ucl.max_offset != UINT_MAX && opt->crp.crp_ucl.max_offset < cconf.conf_ucl.max_offset) - cconf.conf_ucl.max_offset = opt->crp.crp_ucl.max_offset; - if (opt->crp.crp_ucl.max_match != UINT_MAX && opt->crp.crp_ucl.max_match < cconf.conf_ucl.max_match) - cconf.conf_ucl.max_match = opt->crp.crp_ucl.max_match; - - // Avoid too many progress bar updates. 64 is s->bar_len in ui.cpp. - unsigned step = (ph.u_len < 64*1024) ? 0 : ph.u_len / 64; + // cconf options + if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method)) + { + if (opt->crp.crp_ucl.c_flags != -1) + cconf.conf_ucl.c_flags = opt->crp.crp_ucl.c_flags; + if (opt->crp.crp_ucl.p_level != -1) + cconf.conf_ucl.p_level = opt->crp.crp_ucl.p_level; + if (opt->crp.crp_ucl.h_level != -1) + cconf.conf_ucl.h_level = opt->crp.crp_ucl.h_level; + if (opt->crp.crp_ucl.max_offset != UINT_MAX && opt->crp.crp_ucl.max_offset < cconf.conf_ucl.max_offset) + cconf.conf_ucl.max_offset = opt->crp.crp_ucl.max_offset; + if (opt->crp.crp_ucl.max_match != UINT_MAX && opt->crp.crp_ucl.max_match < cconf.conf_ucl.max_match) + cconf.conf_ucl.max_match = opt->crp.crp_ucl.max_match; #if defined(WITH_NRV) - if (ph.level >= 7 || (ph.level >= 4 && ph.u_len >= 512*1024)) - step = 0; + if (ph.level >= 7 || (ph.level >= 4 && ph.u_len >= 512*1024)) + step = 0; #endif + } if (ui_pass >= 0) ui_pass++; uip->startCallback(ph.u_len, step, ui_pass, ui_total_passes); @@ -211,19 +214,22 @@ bool Packer::compress(upx_bytep in, upx_bytep out, if (r != UPX_E_OK) throwInternalError("compression failed"); - ucl_uint *res = ph.compress_result.result_ucl.result; - //ph.min_offset_found = res[0]; - ph.max_offset_found = res[1]; - //ph.min_match_found = res[2]; - ph.max_match_found = res[3]; - //ph.min_run_found = res[4]; - ph.max_run_found = res[5]; - ph.first_offset_found = res[6]; - //ph.same_match_offsets_found = res[7]; - if (cconf_parm) + if (M_IS_NRV2B(ph.method) || M_IS_NRV2D(ph.method) || M_IS_NRV2E(ph.method)) { - assert(cconf.conf_ucl.max_offset == 0 || cconf.conf_ucl.max_offset >= ph.max_offset_found); - assert(cconf.conf_ucl.max_match == 0 || cconf.conf_ucl.max_match >= ph.max_match_found); + ucl_uint *res = ph.compress_result.result_ucl.result; + //ph.min_offset_found = res[0]; + ph.max_offset_found = res[1]; + //ph.min_match_found = res[2]; + ph.max_match_found = res[3]; + //ph.min_run_found = res[4]; + ph.max_run_found = res[5]; + ph.first_offset_found = res[6]; + //ph.same_match_offsets_found = res[7]; + if (cconf_parm) + { + assert(cconf.conf_ucl.max_offset == 0 || cconf.conf_ucl.max_offset >= ph.max_offset_found); + assert(cconf.conf_ucl.max_match == 0 || cconf.conf_ucl.max_match >= ph.max_match_found); + } } //printf("\nPacker::compress: %d/%d: %7d -> %7d\n", ph.method, ph.level, ph.u_len, ph.c_len); From 0d80173efd5bc1ffe2cbcce19d3672db41fc7c40 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 06:42:17 +0200 Subject: [PATCH 10/14] Update some structs for future features. --- src/conf.h | 11 +++++++++++ src/options.h | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/src/conf.h b/src/conf.h index f2424ec1..7fc18dd4 100644 --- a/src/conf.h +++ b/src/conf.h @@ -199,18 +199,29 @@ typedef void (__acc_cdecl *upx_progress_func_t) struct upx_callback_t { +#if 0 upx_alloc_func_t nalloc; upx_free_func_t nfree; +#endif upx_progress_func_t nprogress; void * user1; +#if 0 unsigned user2; unsigned user3; +#endif }; struct lzma_compress_config_t { unsigned max_num_probs; +#if 0 + unsigned pos_bits; // pb + unsigned lit_pos_bits; // lp + unsigned lit_context_bits; // lc + unsigned dict_size; + unsigned mf_passes; +#endif void reset() { memset(this, 0, sizeof(*this)); } }; diff --git a/src/options.h b/src/options.h index 0511fde0..5b7d5c00 100644 --- a/src/options.h +++ b/src/options.h @@ -86,6 +86,13 @@ struct options_t { // compression runtime parameters - see struct ucl_compress_config_t struct crp_lzma_t { int dummy; +#if 0 + unsigned pos_bits; // pb + unsigned lit_pos_bits; // lp + unsigned lit_context_bits; // lc + unsigned dict_size; + unsigned mf_passes; +#endif void reset() { memset(this, 0, sizeof(*this)); } }; struct crp_ucl_t { From d7261b7a78816cba96fef6b2ebbf164f6edd9ffc Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Thu, 29 Jun 2006 07:00:06 +0200 Subject: [PATCH 11/14] Remove debugging code. --- src/compress_lzma.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compress_lzma.cpp b/src/compress_lzma.cpp index 11dbf8c2..7df885db 100644 --- a/src/compress_lzma.cpp +++ b/src/compress_lzma.cpp @@ -195,7 +195,7 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len, pr[4].uintVal = 2; pr[5].uintVal = 64; // 5.. pr[6].uintVal = 0; -#if 1 +#if 0 // DEBUG - set sizes so that we use a maxmimum amount of stack. // These settings cause res->num_probs == 3147574, i.e. we will // need about 6 MB of stack during runtime decompression. From ba19ccac43c677f33c2a13478973f0e35185a5a6 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Wed, 28 Jun 2006 22:18:48 -0700 Subject: [PATCH 12/14] tabify the commented Makefile --- src/p_vmlinx.cpp | 60 ++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/p_vmlinx.cpp b/src/p_vmlinx.cpp index 71e19852..8f2d40de 100644 --- a/src/p_vmlinx.cpp +++ b/src/p_vmlinx.cpp @@ -480,47 +480,47 @@ void PackVmlinuxI386::unpack(OutputFile *fo) //LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup_32 // //$(obj)/vmlinux: $(obj)/upx-head.o $(obj)/upx-piggy.o FORCE -// $(call if_changed,ld) -// @: +// $(call if_changed,ld) +// @: // //$(obj)/upx-piggy.o: vmlinux FORCE -// rm -f $@ -// upx --best -o $@ $< -// touch $@ +// rm -f $@ +// upx --best -o $@ $< +// touch $@ //----- // //----- arch/i386/boot/compressed/upx-head.S -// .text +// .text //startup_32: .globl startup_32 # In: %esi=0x90000 setup data "real_mode pointer" -// #cli # this must be true already +// #cli # this must be true already // -// /* The only facts about segments here, that are true for all kernels: -// * %cs is a valid "flat" code segment; no other segment reg is valid; -// * the next segment after %cs is a valid "flat" data segment, but -// * no segment register designates it yet. -// */ -// movl %cs,%eax; addl $1<<3,%eax # the next segment after %cs -// movl %eax,%ds -// movl %eax,%es -// leal 0x9000(%esi),%ecx # 0x99000 typical -// movl %ecx,-8(%ecx) # 32-bit offset for stack pointer -// movl %eax,-4(%ecx) # segment for stack pointer -// lss -8(%ecx),%esp # %ss:%esp= %ds:0x99000 -// /* Linux Documentation/i386/boot.txt "SAMPLE BOOT CONFIGURATION" says -// 0x8000-0x8FFF Stack and heap [inside the "real mode segment", -// just below the command line at offset 0x9000]. +// /* The only facts about segments here, that are true for all kernels: +// * %cs is a valid "flat" code segment; no other segment reg is valid; +// * the next segment after %cs is a valid "flat" data segment, but +// * no segment register designates it yet. +// */ +// movl %cs,%eax; addl $1<<3,%eax # the next segment after %cs +// movl %eax,%ds +// movl %eax,%es +// leal 0x9000(%esi),%ecx # 0x99000 typical +// movl %ecx,-8(%ecx) # 32-bit offset for stack pointer +// movl %eax,-4(%ecx) # segment for stack pointer +// lss -8(%ecx),%esp # %ss:%esp= %ds:0x99000 +// /* Linux Documentation/i386/boot.txt "SAMPLE BOOT CONFIGURATION" says +// 0x8000-0x8FFF Stack and heap [inside the "real mode segment", +// just below the command line at offset 0x9000]. // -// arch/i386/boot/compressed/head.S "Do the decompression ..." says -// %esi contains the "real mode pointer" [as a 32-bit addr]. +// arch/i386/boot/compressed/head.S "Do the decompression ..." says +// %esi contains the "real mode pointer" [as a 32-bit addr]. // -// In any case, avoid EBDA (Extended BIOS Data Area) below 0xA0000. -// boot.txt says 0x9A000 is the limit. LILO goes up to 0x9B000. -// */ +// In any case, avoid EBDA (Extended BIOS Data Area) below 0xA0000. +// boot.txt says 0x9A000 is the limit. LILO goes up to 0x9B000. +// */ // -// pushl $0; popf # subsumes "cli; cld"; also clears NT for buggy BIOS +// pushl $0; popf # subsumes "cli; cld"; also clears NT for buggy BIOS // -// movl $ 0x100000,%eax # destination of uncompression (and entry point) -// push %cs +// movl $ 0x100000,%eax # destination of uncompression (and entry point) +// push %cs /* Fall into .text of upx-compressed vmlinux. */ //----- From 193e085cf0b388b4d072bbb97bbf6f04e1340db1 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Wed, 28 Jun 2006 22:30:05 -0700 Subject: [PATCH 13/14] limit stack to ~28KB for decompressing kernel --- src/p_vmlinx.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/p_vmlinx.cpp b/src/p_vmlinx.cpp index 8f2d40de..19d2562c 100644 --- a/src/p_vmlinx.cpp +++ b/src/p_vmlinx.cpp @@ -220,7 +220,12 @@ void PackVmlinuxI386::pack(OutputFile *fo) ft.buf_len = ph.u_len; ft.addvalue = 0; // we are independent of actual runtime address; see ckt32 - compressWithFilters(&ft, 1 << 20); + upx_compress_config_t cconf; cconf.reset(); +#if 1 //{ + // limit stack size needed for runtime decompression + cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack +#endif //} + compressWithFilters(&ft, 512, 0, NULL, &cconf); const unsigned lsize = getLoaderSize(); MemBuffer loader(lsize); From 362e98b43d5389b6780adf44bc3f6b457b2ade7a Mon Sep 17 00:00:00 2001 From: John Reiser Date: Wed, 28 Jun 2006 22:34:12 -0700 Subject: [PATCH 14/14] lzma: limit stack to ~28KB for decompressing kernel --- src/p_vmlinz.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/p_vmlinz.cpp b/src/p_vmlinz.cpp index fce7da69..6ffb87e9 100644 --- a/src/p_vmlinz.cpp +++ b/src/p_vmlinz.cpp @@ -276,8 +276,14 @@ void PackVmlinuzI386::pack(OutputFile *fo) Filter ft(ph.level); ft.buf_len = ph.u_len; ft.addvalue = kernel_entry; // saves 4 bytes in unfilter code + // compress - compressWithFilters(&ft, 1 << 20); + upx_compress_config_t cconf; cconf.reset(); +#if 1 //{ + // limit stack size needed for runtime decompression + cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack +#endif //} + compressWithFilters(&ft, 512, 0, NULL, &cconf); const unsigned lsize = getLoaderSize(); MemBuffer loader(lsize); @@ -352,8 +358,13 @@ void PackBvmlinuzI386::pack(OutputFile *fo) Filter ft(ph.level); ft.buf_len = ph.u_len; ft.addvalue = kernel_entry; // saves 4 bytes in unfilter code - // compress - compressWithFilters(&ft, 512); + + upx_compress_config_t cconf; cconf.reset(); +#if 1 //{ + // limit stack size needed for runtime decompression + cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack +#endif //} + compressWithFilters(&ft, 512, 0, NULL, &cconf); // align everything to dword boundary - it is easier to handle unsigned c_len = ph.c_len;